Browse Source

virtio: rework, add support for x86_64

Waldemar Brodkorb 2 weeks ago
parent
commit
7baf5a0f7a

+ 1 - 1
package/grub/files/grub-pc-serial.cfg

@@ -10,5 +10,5 @@ menuentry "OpenADK" {
   insmod ext2
   set root='hd0,1'
   echo "Loading OpenADK"
-  linux /boot/kernel root=/dev/sda1 rootfstype=ext4 rootwait panic=10
+  linux /boot/kernel rootfstype=ext4 rootwait panic=10
 }

+ 1 - 1
package/grub/files/grub-pc-vga.cfg

@@ -6,5 +6,5 @@ menuentry "OpenADK" {
   insmod ext2
   set root='hd0,1'
   echo "Loading OpenADK"
-  linux /boot/kernel console=tty0 root=/dev/sda1 rootfstype=ext4 rootwait panic=10
+  linux /boot/kernel console=tty0 rootfstype=ext4 rootwait panic=10
 }

+ 2 - 2
scripts/create.sh

@@ -2,7 +2,7 @@
 #-
 # Copyright © 2010, 2011, 2012
 #	Thorsten Glaser <tg@mirbsd.org>
-# Copyright © 2010-2024
+# Copyright © 2010-2025
 #	Waldemar Brodkorb <wbx@openadk.org>
 #
 # Provided that these terms and disclaimer and all copyright notices
@@ -152,7 +152,7 @@ else
 fi
 
 if (( usegrub )); then
-	tar -xOJf "$src" boot/grub/core.img >"$T/core.img"
+	tar -xOzf "$src" boot/grub/core.img >"$T/core.img"
 	integer coreimgsz=$($statcmd "$T/core.img")
 	if (( coreimgsz < 1024 )); then
 		print -u2 core.img is probably too small: $coreimgsz

+ 0 - 12
target/config/Config.in.qemuopts

@@ -95,20 +95,8 @@ endchoice
 choice
 prompt "Qemu Emulation using VirtIO drivers"
 depends on ADK_TARGET_SYSTEM_QEMU_SPARC64 || \
-		ADK_TARGET_SYSTEM_QEMU_AARCH64 || \
-		ADK_TARGET_SYSTEM_QEMU_ARC || \
-		ADK_TARGET_SYSTEM_QEMU_CSKY || \
-		ADK_TARGET_SYSTEM_QEMU_M68K_VIRT || \
-		ADK_TARGET_SYSTEM_QEMU_RISCV32 || \
-		ADK_TARGET_SYSTEM_QEMU_RISCV64 || \
 		ADK_TARGET_SYSTEM_QEMU_X86 || \
 		ADK_TARGET_SYSTEM_QEMU_X86_64
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_AARCH64
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_ARC
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_CSKY
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV32
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV64
-default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
 
 config ADK_TARGET_QEMU_WITHOUT_VIRTIO
 	bool "disabled"

+ 27 - 3
target/linux/config/Config.in.virtio

@@ -10,9 +10,6 @@ config ADK_LINUX_KERNEL_VIRTIO_MENU
 config ADK_LINUX_KERNEL_VIRTIO
 	bool
 
-config ADK_LINUX_KERNEL_VIRTIO_CONSOLE
-	bool
-
 config ADK_LINUX_KERNEL_VIRTIO_PCI_LEGACY
 	bool
 
@@ -22,6 +19,20 @@ config ADK_LINUX_KERNEL_VIRTIO_PCI
 config ADK_LINUX_KERNEL_VIRTIO_MMIO
 	bool
 
+config ADK_LINUX_KERNEL_VIRTIO_CONSOLE
+	bool "Virtio console driver"
+	select ADK_LINUX_KERNEL_VIRTIO
+	default y if ADK_TARGET_SYSTEM_QEMU_AARCH64
+	default y if ADK_TARGET_SYSTEM_QEMU_ARC
+	default y if ADK_TARGET_SYSTEM_QEMU_CSKY
+	default y if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
+	default y if ADK_TARGET_SYSTEM_QEMU_RISCV32
+	default y if ADK_TARGET_SYSTEM_QEMU_RISCV64
+	default y if ADK_TARGET_SYSTEM_QEMU_S390
+	default n
+	help
+	  Enables support for Virtio console driver.
+
 config ADK_LINUX_KERNEL_VIRTIO_NET
 	tristate "Virtio net driver"
 	select ADK_LINUX_KERNEL_VIRTIO
@@ -29,6 +40,12 @@ config ADK_LINUX_KERNEL_VIRTIO_NET
 	select ADK_LINUX_KERNEL_VIRTIO_MMIO
 	select ADK_LINUX_KERNEL_VIRTIO_PCI
 	select ADK_LINUX_KERNEL_VIRTIO_PCI_LEGACY
+	default y if ADK_TARGET_SYSTEM_QEMU_AARCH64
+	default y if ADK_TARGET_SYSTEM_QEMU_ARC
+	default y if ADK_TARGET_SYSTEM_QEMU_CSKY
+	default y if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
+	default y if ADK_TARGET_SYSTEM_QEMU_RISCV32
+	default y if ADK_TARGET_SYSTEM_QEMU_RISCV64
 	default y if ADK_TARGET_SYSTEM_QEMU_S390
 	default n
 	help
@@ -42,6 +59,13 @@ config ADK_LINUX_KERNEL_VIRTIO_BLK
 	select ADK_LINUX_KERNEL_VIRTIO_PCI_LEGACY
 	select ADK_LINUX_KERNEL_VIRTIO_MMIO
 	select ADK_LINUX_KERNEL_BLK_DEV
+	default y if ADK_TARGET_SYSTEM_QEMU_AARCH64
+	default y if ADK_TARGET_SYSTEM_QEMU_ARC
+	default y if ADK_TARGET_SYSTEM_QEMU_CSKY
+	default y if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
+	default y if ADK_TARGET_SYSTEM_QEMU_RISCV32
+	default y if ADK_TARGET_SYSTEM_QEMU_RISCV64
+	default y if ADK_TARGET_SYSTEM_QEMU_S390
 	default n
 	help
 	  Enables support for Virtio Block driver.

+ 13 - 1
target/x86_64/Makefile

@@ -10,11 +10,19 @@ KERNEL:=$(LINUX_DIR)/arch/x86/boot/bzImage
 QEMU_ARCH:=x86_64
 
 QEMU_ARGS:=-M pc -m 256
+QEMU_ARGS+=${ADK_QEMU_ARGS}
+
 ifeq ($(ADK_PACKAGE_GRUB_EFI_X86_64),y)
 QEMU_ARGS+=-L . -bios bios-x86_64.bin
 endif
-QEMU_ARGS+=${ADK_QEMU_ARGS}
+
+ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)
+QEMU_ARGS+=-net nic,model=virtio -net user
+QEMU_ARGS+=-drive file=qemu-${ADK_TARGET_CPU_ARCH}.img,if=virtio
+else
 QEMU_ARGS+=-net user -net nic,model=e1000
+endif
+
 ifeq ($(ADK_TARGET_QEMU_WITH_AUDIO),y)
 QEMU_ARGS+=-device AC97
 endif
@@ -39,7 +47,11 @@ ifeq ($(ADK_TARGET_QEMU),y)
 	@echo "$(CREATE) qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)"
 	@echo "Start qemu with following options:"
 ifeq ($(ADK_TARGET_QEMU_WITH_BOOTLOADER),y)
+ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)
+	@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS}'
+else
 	@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} qemu-${ADK_TARGET_CPU_ARCH}.img'
+endif
 else
 	@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'
 endif

+ 1 - 0
target/x86_64/kernel/qemu-x86_64

@@ -11,3 +11,4 @@ CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
 CONFIG_AMD_NB=y
 CONFIG_IA32_EMULATION=y
 CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE_OVERRIDE=y