Browse Source

use virtio drivers for sparc64

Waldemar Brodkorb 10 years ago
parent
commit
5867aad78c

+ 11 - 0
mk/modules.mk

@@ -1736,3 +1736,14 @@ $(eval $(call KMOD_template,SCx200_ACB,scx200-acb,\
 	$(MODULES_DIR)/kernel/drivers/i2c/busses/scx200_acb \
 ,25))
 
+#
+# VirtIO
+#
+$(eval $(call KMOD_template,VIRTIO_BLK,virtio-block,\
+	$(MODULES_DIR)/kernel/drivers/net/virtio_blk \
+,20))
+
+$(eval $(call KMOD_template,VIRTIO_NET,virtio-net,\
+	$(MODULES_DIR)/kernel/drivers/net/virtio_net \
+,40))
+

+ 3 - 0
mk/rootfs.mk

@@ -13,6 +13,9 @@ MTDDEV:=	root=/dev/mtdblock0
 ifeq ($(ADK_TARGET_ROOTFS_ARCHIVE),y)
 ROOTFS:=	root=/dev/sda1
 endif
+ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)
+ROOTFS:=	root=/dev/vda1
+endif
 endif
 
 ifeq ($(ADK_TARGET_SYSTEM_MIKROTIK_RB532),y)

+ 17 - 0
target/config/Config.in

@@ -171,6 +171,23 @@ config ADK_TARGET_KERNEL_MINICONFIG
 	default "qemu-i686" if ADK_TARGET_SYSTEM_QEMU_I686
 	default "raspberry-pi" if ADK_TARGET_SYSTEM_RASPBERRY_PI
 
+choice
+prompt "Qemu Emulation using VirtIO drivers"
+depends on ADK_TARGET_SYSTEM_QEMU_SPARC64
+
+config ADK_TARGET_QEMU_WITH_VIRTIO
+	boolean "enabled"
+	select ADK_KERNEL_BLK_DEV
+	select ADK_KERNEL_VIRTIO
+	select ADK_KERNEL_VIRTIO_PCI
+	select ADK_KERNEL_VIRTIO_NET
+	select ADK_KERNEL_VIRTIO_BLK
+
+config ADK_TARGET_QEMU_WITHOUT_VIRTIO
+	boolean "disabled"
+
+endchoice
+
 choice
 prompt "Qemu MICROBLAZE Emulation"
 depends on ADK_TARGET_SYSTEM_QEMU_MICROBLAZE || ADK_TARGET_SYSTEM_QEMU_MICROBLAZEEL

+ 1 - 0
target/linux/Config.in

@@ -25,3 +25,4 @@ source target/linux/config/Config.in.serial
 source target/linux/config/Config.in.spi
 source target/linux/config/Config.in.kvm
 source target/linux/config/Config.in.debug
+source target/linux/config/Config.in.virtio

+ 37 - 0
target/linux/config/Config.in.virtio

@@ -0,0 +1,37 @@
+config ADK_KERNEL_VIRTIO
+	boolean
+
+config ADK_KERNEL_VIRTIO_PCI
+	boolean
+
+config ADK_KERNEL_VIRTIO_NET
+	boolean
+
+config ADK_KERNEL_VIRTIO_BLK
+	boolean
+
+menu "Virtio driver support"
+depends on !ADK_TARGET_QEMU_WITH_VIRTIO
+
+config ADK_KPACKAGE_KMOD_VIRTIO_NET
+	prompt "kmod-virtio-net.................... Virtio net driver"
+	tristate
+	select ADK_KERNEL_VIRTIO
+	select ADK_KERNEL_VIRTIO_PCI
+	depends on !ADK_KERNEL_VIRTIO_NET
+	default n
+	help
+	  Enables support for Virtio Net driver.
+
+config ADK_KPACKAGE_KMOD_VIRTIO_BLK
+	prompt "kmod-virtio-block.................. Virtio block driver"
+	tristate
+	select ADK_KERNEL_VIRTIO
+	select ADK_KERNEL_VIRTIO_PCI
+	select ADK_KERNEL_BLK_DEV
+	depends on !ADK_KERNEL_VIRTIO_BLK
+	default n
+	help
+	  Enables support for Virtio Block driver.
+
+endmenu

+ 6 - 1
target/sparc64/Makefile

@@ -18,7 +18,12 @@ ifeq ($(ADK_TARGET_SYSTEM_QEMU_SPARC64),y)
 	@echo "Use following command to create a QEMU Image:"
 	@echo "./scripts/create.sh +g qemu-${CPU_ARCH}.img $(BIN_DIR)/$(ROOTFSTARBALL)"
 	@echo "Start qemu with following command line:"
-	@echo 'qemu-system-sparc64 -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) qemu-${CPU_ARCH}.img -append "root=/dev/sda1"'
+ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)
+	@echo 'qemu-system-sparc64 -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) -drive file=qemu-${CPU_ARCH}.img,if=virtio,index=0 \
+		-net nic,model=virtio -net user'
+else
+	@echo 'qemu-system-sparc64 -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) qemu-${CPU_ARCH}.img'
+endif
 endif
 endif
 ifeq ($(ADK_TARGET_FS),initramfs)

+ 0 - 4
target/sparc64/kernel/qemu-sparc64

@@ -16,10 +16,6 @@ CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
 CONFIG_BLK_DEV_SD=y
 CONFIG_SCSI_LOWLEVEL=y
-CONFIG_ATA=y
-CONFIG_ATA_SFF=y
-CONFIG_ATA_BMDMA=y
-CONFIG_PATA_CMD64X=y
 CONFIG_NETDEVICES=y
 CONFIG_NET_CORE=y
 CONFIG_ETHERNET=y