virtio-fs allow sharing a directory between the host and the guest.
It require virtiofsd daemon running before starting Qemu.
The wiki [1] recommand to enable the following kernel options:
CONFIG_VIRTIO
CONFIG_VIRTIO_FS
CONFIG_DAX
CONFIG_FS_DAX
CONFIG_DAX_DRIVER
CONFIG_ZONE_DEVICE
But virtio-fs works fine with only VIRTIO_FS.
Note: ZONE_DEVICE can only be enabled on aarch64 since kernel >= 5.7.
ARCH_ENABLE_MEMORY_HOTREMOVE support is missing for previous kernel [2].
[1] https://virtio-fs.gitlab.io/howto-qemu.html
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=bbd6ec605c0fc286c3f8ce60b4ed44635361d58b
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
>From [1]:
This kernel option allow exporting of the QEMU firmware configuration (fw_cfg)
file entries via sysfs. Entries are found under /sys/firmware/fw_cfg when this
option is enabled and loaded.
Enable the suboption to allow the qemu_fw_cfg device to be initialized via the
kernel command line or using a module parameter.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/firmware/Kconfig?h=v5.4.42#n187
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This driver is intended to be used by mesa virgl Gallium on the guest.
virtio-gpu is enabled by adding "-device virtio-gpu-pci" on the qemu
command line.
It's detected by lspci and dmesg log:
$ lspci
00:01.0 Display controller: Red Hat, Inc. Virtio GPU (rev 01)
$ dmesg
virtio-pci 0000:00:01.0: enabling device (0000 -> 0002)
[drm] pci: virtio-gpu-pci detected at 0000:00:01.0
[drm] virgl 3d acceleration not supported by host
[drm] EDID support available.
[TTM] Zone kernel: Available graphics memory: 51876 KiB
[TTM] Initializing pool allocator
[TTM] Initializing DMA pool allocator
[drm] number of scanouts: 1
[drm] number of cap sets: 0
[drm] Initialized virtio_gpu 0.1.0 0 for virtio2 on minor 0
The framebuffer interface fb0 is now present in /dev
$ ls /dev/fb*
/dev/fb0
See:
https://www.kraxel.org/blog/2019/09/display-devices-in-qemu/https://at.projects.genivi.org/wiki/display/WIK4/GENIVI+Technical+Summit+Session+Content+2018?preview=%2F28412356%2F28412481%2F2018-10-11_GeniviBangalorTechSummit_Virtio_GPU.pdf
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Add the CONFIG_PCI symbol due a change in kernel 5.0 [1].
The option was previously enabled by default (default y).
"PCI: consolidate PCI config entry in drivers/pci
There is no good reason to duplicate the PCI menu in every architecture.
Instead provide a selectable HAVE_PCI symbol that indicates availability
of PCI support, and a FORCE_PCI symbol to for PCI on and the handle the
rest in drivers/pci."
Qemu aarch64 provide a PCIe Host bridge but it require CONFIG_PCI_HOST_GENERIC
enabled in the kernel.
With CONFIG_PCI_HOST_GENERIC enabled PCIe host bridge is detected:
$ dmesg
pci-host-generic 4010000000.pcie: host bridge /pcie@10000000 ranges:
pci-host-generic 4010000000.pcie: IO 0x3eff0000..0x3effffff -> 0x00000000
pci-host-generic 4010000000.pcie: MEM 0x10000000..0x3efeffff -> 0x10000000
pci-host-generic 4010000000.pcie: MEM 0x8000000000..0xffffffffff -> 0x8000000000
pci-host-generic 4010000000.pcie: ECAM at [mem 0x4010000000-0x401fffffff] for [bus 00-ff]
pci-host-generic 4010000000.pcie: PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [bus 00-ff]
pci_bus 0000:00: root bus resource [io 0x0000-0xffff]
pci_bus 0000:00: root bus resource [mem 0x10000000-0x3efeffff]
pci_bus 0000:00: root bus resource [mem 0x8000000000-0xffffffffff]
pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000
$ lspci
00:00.0 Host bridge: Red Hat, Inc. QEMU PCIe Host bridge
[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=eb01d42a77785ff96b6e66a2a2e7027fc6d78e4a
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Qemu for the aarch64 virt emulate an RTC PL031 device.
Enable the kernel support to allow setting the system time.
"date" now return the current time:
Sun Jul 5 20:38:50 UTC 2020
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
All linux configs are renamed to a version neutral filename
to avoid further renaming on kernel bumps.
Defconfig Kernel Qemu Network Status
--------------------------------------------------------------
aarch64_virt 4.16.7 2.12.0 YES OK
arm_versatile 4.16.7 2.12.0 YES OK
arm_versatile_nommu 4.16.7 2.12.0 YES OK (3)
arm_vexpress 4.16.7 2.12.0 YES OK
m68k_mcf5208 4.16.7 2.12.0 YES OK
m68k_q800 4.16.7 q800-v2.11.0 NO (2) OK
microblazebe 4.16.7 2.12.0 YES OK
microblazeel 4.16.7 2.12.0 YES OK
mips32r2el_malta 4.16.7 2.12.0 YES OK
mips32r2_malta 4.16.7 2.12.0 YES OK
mips32r6el_malta 4.16.7 2.12.0 YES OK
mips32r6_malta 4.16.7 2.12.0 YES OK
mips64el_malta 4.16.7 2.12.0 YES OK
mips64_malta 4.16.7 2.12.0 YES OK
mips64r6el_malta 4.16.7 2.12.0 YES OK
mips64r6_malta 4.16.7 2.12.0 YES OK
nios2-10m50 4.16.7 2.12.0 NO OK
or1k 4.16.7 2.12.0 NO OK
ppc_g3beige 4.16.7 2.12.0 YES OK
ppc_mpc8544ds 4.16.7 2.12.0 YES OK
ppc_virtex_ml507 4.16.7 2.12.0 NO OK
ppc64_pseries 4.16.7 2.12.0 YES OK
ppc64le_pseries 4.16.7 2.12.0 YES OK
ppc64_e5500 4.16.7 2.12.0 YES OK
sh4 4.16.7 2.12.0 YES OK
sh4eb 4.16.7 2.12.0 NO (1) OK
sparc_ss10 4.16.7 2.12.0 YES OK
sparc64_sun4u 4.16.7 2.12.0 YES OK
x86 4.16.7 2.12.0 YES OK
x86_64 4.16.7 2.12.0 YES OK
xtensa_lx60 4.16.7 2.12.0 YES OK
xtensa_lx60_nommu 4.16.7 2.12.0 YES OK
(1) - Probably an endian issue with 8139 emulation/driver
(2) - There's a network interface, but enabling it in qemu fails
(3) - Kernel patch required, switched to devicetree usage
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>