From: Daan De Meyer Date: Wed, 20 Dec 2023 10:33:24 +0000 (+0100) Subject: Use virtio nic model on s390x X-Git-Tag: v20~47^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eaf274ea8ad805844476dbbde3ebde8bae4b445c;p=thirdparty%2Fmkosi.git Use virtio nic model on s390x Also refactor things a bit to move more into the Architecture enum. Also make sure the default network interface on s390x is configured properly. We also fail earlier now if an architecture is specified for which we haven't defined a machine yet. --- diff --git a/mkosi/config.py b/mkosi/config.py index 00becd38f..dbf41b837 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -308,7 +308,6 @@ class Architecture(StrEnum): Architecture.loongarch64 : "loongarch64", }.get(self) - def to_qemu(self) -> str: a = { Architecture.alpha : "alpha", @@ -353,6 +352,30 @@ class Architecture(StrEnum): def supports_fw_cfg(self) -> bool: return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64) + def default_qemu_machine(self) -> str: + m = { + Architecture.x86 : "q35", + Architecture.x86_64 : "q35", + Architecture.arm : "virt", + Architecture.arm64 : "virt", + Architecture.s390 : "s390-ccw-virtio", + Architecture.s390x : "s390-ccw-virtio", + Architecture.ppc : "pseries", + Architecture.ppc64 : "pseries", + Architecture.ppc64_le : "pseries", + } + + if self not in m: + die(f"No qemu machine defined for architecture {self}") + + return m[self] + + def default_qemu_nic_model(self) -> str: + return { + Architecture.s390 : "virtio", + Architecture.s390x : "virtio", + }.get(self, "virtio-net-pci") + def is_native(self) -> bool: return self == self.native() @@ -3028,7 +3051,7 @@ def load_kernel_command_line_extra(args: argparse.Namespace) -> list[str]: ] if not any(s.startswith("ip=") for s in args.kernel_command_line_extra): - cmdline += ["ip=enp0s1:any", "ip=enp0s2:any", "ip=host0:any", "ip=none"] + cmdline += ["ip=enc0:any", "ip=enp0s1:any", "ip=enp0s2:any", "ip=host0:any", "ip=none"] if not any(s.startswith("loglevel=") for s in args.kernel_command_line_extra): cmdline += ["loglevel=4"] diff --git a/mkosi/qemu.py b/mkosi/qemu.py index aba76f629..dfbeff34e 100644 --- a/mkosi/qemu.py +++ b/mkosi/qemu.py @@ -529,15 +529,9 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, qemu_device_fds: Mapping[Qemu if config.runtime_trees or config.output_format == OutputFormat.directory: shm = ["-object", f"memory-backend-memfd,id=mem,size={config.qemu_mem},share=on"] - if config.architecture == Architecture.arm64: - machine = "type=virt" - elif config.architecture == Architecture.s390x: - machine = "type=s390-ccw-virtio" - elif config.architecture == Architecture.ppc64_le: - machine = "type=pseries" - else: - machine = f"type=q35,smm={'on' if ovmf_supports_sb else 'off'}" - + machine = f"type={config.architecture.default_qemu_machine()}" + if firmware == QemuFirmware.uefi: + machine += f",smm={'on' if ovmf_supports_sb else 'off'}" if shm: machine += ",memory-backend=mem" @@ -551,8 +545,7 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, qemu_device_fds: Mapping[Qemu *shm, ] - if config.architecture not in (Architecture.s390, Architecture.s390x): - cmdline += ["-nic", "user,model=virtio-net-pci"] + cmdline += ["-nic", f"user,model={config.architecture.default_qemu_nic_model()}"] if config.qemu_kvm != ConfigFeature.disabled and have_kvm and config.architecture.is_native(): accel = "kvm"