Bug in the VirtIO GPU driver since the RC7 of kernel 6.0

Christian Zigotzky chzigotzky at xenosoft.de
Thu Sep 29 14:58:54 AEST 2022


Hi All,

I have found the issue. I cross compiled this kernel with GCC 11.2.0 on Ubuntu 22.04.1.

I cross compiled the same kernel with GCC 9.4.0 again. This time on Ubuntu 20.04.5.

KVM with the VirtIO GPU works with the GCC 9.4.0 compiled kernel.

— Christian

I wrote:

Hello,

Xorg doesn't start anymore in a virtual e5500 QEMU KVM HV machine with 
the VirtIO GPU [1] since the RC7 of kernel 6.0. [2]

Please find attached the kernel config.

Thanks,
Christian

[1] qemu-system-ppc64 -M ppce500 -cpu e5500 -m 1024 -kernel uImage-6.0 
-drive format=raw,file=void-live-powerpc-20220129.img,index=0,if=virtio 
-netdev user,id=mynet0 -device virtio-net,netdev=mynet0 -append "rw 
root=/dev/vda2" -device virtio-gpu -device virtio-mouse-pci -device 
virtio-keyboard-pci -device pci-ohci,id=newusb -audiodev 
id=sndbe,driver=pa,server=/run/user/1000/pulse/native -device 
usb-audio,bus=newusb.0 -enable-kvm -smp 4 -fsdev 
local,security_model=passthrough,id=fsdev0,path=/home/amigaone/Music 
-device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=hostshare

[2] Error messages in a virtual Void PPC machine:
[drm] pci: virtio-gpu-pci detected at 0000:00:02.0
[drm] features: -virgl +edid -resource_blob -host_visible
[drm] features: -context_init
[drm] number of scanouts: 1
[drm] number of cap sets: 0
[drm] Initialized virtio_gpu 0.1.0 0 for virtio1 on minor 0
BUG: Kernel NULL pointer dereference on read at 0x00000000
Faulting instruction address: 0xc0000000000c9934
Oops: Kernel access of bad area, sig: 11 [#1]
BE PAGE_SIZE=4K SMP NR_CPUS=4 QEMU e500
Modules linked in:
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.0.0-rc7_A-EON_X5000 #1
NIP:  c0000000000c9934 LR: c0000000000c9f58 CTR: 0000000000000000
REGS: c00000000208ab20 TRAP: 0300   Not tainted (6.0.0-rc7_A-EON_X5000)
MSR:  0000000090029002 <CE,EE,ME>  CR: 84008242  XER: 00000000
DEAR: 0000000000000000 ESR: 0000000000000000 IRQMASK: 0
GPR00: c0000000006f0060 c00000000208adc0 c000000001ac3500 c0000000025f0010
GPR04: 0000000000000000 0000000000000000 0000000000000000 c0000000019908b0
GPR08: 0000000000000105 0000000000000000 0000000000000000 0000000000000180
GPR12: 0000000024008242 c00000003fff9500 c000000000001384 0000000000000000
GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR20: 0000000000000000 0000000000000000 c00000000169021f c00000000208b088
GPR24: 0000000000000000 c000000002336800 0000000000000000 0000000000000000
GPR28: c000000002a48000 c000000002336800 0000000000000000 c0000000025f0010
NIP [c0000000000c9934] .dma_map_direct+0x8/0x10
LR [c0000000000c9f58] .dma_max_mapping_size+0x24/0x78
Call Trace:
[c00000000208adc0] [c00000000208ae80] 0xc00000000208ae80 (unreliable)
[c00000000208ae40] [c0000000006f0060] .drm_prime_pages_to_sg+0xa0/0xb8
[c00000000208aed0] [c00000000070f96c] .drm_gem_shmem_get_sg_table+0x28/0x3c
[c00000000208af40] [c000000000808c8c] .virtio_gpu_object_create+0x134/0x3a8
[c00000000208b010] [c000000000804c34] 
.virtio_gpu_mode_dumb_create+0xe4/0x15c
[c00000000208b110] [c0000000006ff7f4] .drm_mode_create_dumb+0xcc/0xec
[c00000000208b180] [c000000000707748] 
.drm_client_framebuffer_create+0x98/0x1f0
[c00000000208b260] [c00000000071fb6c] 
.drm_fb_helper_generic_probe+0x78/0x1a0
[c00000000208b320] [c00000000071ef08] 
.__drm_fb_helper_initial_config_and_unlock+0x428/0x54c
[c00000000208b410] [c00000000071f9dc] .drm_fbdev_client_hotplug+0xec/0x128
[c00000000208b4a0] [c00000000071fdec] .drm_fbdev_generic_setup+0x158/0x198
[c00000000208b530] [c000000000803dc4] .virtio_gpu_probe+0x1ac/0x1e0
[c00000000208b5f0] [c00000000069e11c] .virtio_dev_probe+0x2d0/0x3d4
[c00000000208b690] [c000000000815f34] .really_probe+0x1a0/0x344
[c00000000208b720] [c0000000008161c8] .__driver_probe_device+0xf0/0x100
[c00000000208b7b0] [c00000000081620c] .driver_probe_device+0x34/0xac
[c00000000208b840] [c000000000816774] .__driver_attach+0x124/0x134
[c00000000208b8d0] [c000000000813974] .bus_for_each_dev+0x8c/0xd0
[c00000000208b980] [c0000000008154a4] .driver_attach+0x24/0x38
[c00000000208b9f0] [c000000000814dd4] .bus_add_driver+0xd8/0x210
[c00000000208baa0] [c000000000816fd4] .driver_register+0xe0/0x134
[c00000000208bb20] [c00000000069d8a8] .register_virtio_driver+0x40/0x54
hrtimer: interrupt took 4631040 ns
[c00000000208bb90] [c000000001954444] .virtio_gpu_driver_init+0x18/0x2c
[c00000000208bc00] [c000000000001044] .do_one_initcall+0x7c/0x1c0
[c00000000208bce0] [c000000001925710] .kernel_init_freeable+0x23c/0x240
[c00000000208bd90] [c0000000000013ac] .kernel_init+0x28/0x14c
[c00000000208be10] [c0000000000005a0] .ret_from_kernel_thread+0x58/0x60
Instruction dump:
39200001 7c23f840 38210080 7d20485e 792307e0 48d551d8 7c9f2378 4bffffdc
792307e0 4e800020 e92301f8 7c852378 <e8890000> 4bffff7c 7c0802a6 28060003
---[ end trace 0000000000000000 ]---

Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
Rebooting in 180 seconds..


More information about the Linuxppc-dev mailing list