Hi everyone, I'm new to this mailing list. I'm trying to develop a custom qemu pci drivers using the edu drivers (hw/misc/edu.c) as a base.
I've done this before on x86_64 architecture without problem. I have try to do the same on an arm VM running with virt machine. the virt machine description: https://www.qemu.org/docs/master/system/arm/virt.html says that it support pci/pcie devices. So I code a dummy pci device, usind edu drivers as a template. I added the -device edu, to the command line of qemu-system-arm and launched my vm. the device appears with I do lspci: # lspci -n 00:01.0 Class 0200: 1af4:1000 00:00.0 Class 0600: 1b36:0008 00:02.0 Class 00ff: 1234:11e8 <--- it's the edu drivers it's memory seems mapped: cat /sys/devices/platform/4010000000.pcie/pci0000:00/0000:00:02.0/resource <http://4010000000.pcie/pci0000:00/0000:00:02.0/resource> 0x0000000010000000 0x00000000100fffff 0x0000000000040200 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 so I try to put a breakpoint in edu_mmio_read & edu_mmio_write function, and map this zone , and write to it, as I did before on x86_64 vm. But the breakpoint is never hit..???? I try to put breakpoint on other places in qemu, it works perfectly.. If I read to the mmio mapped memory with some generic tool like pcimem, it returns 0xffffff ?? normally the address at offset 0 in mmio mapped memory of edu drivers should return 0x10000edu. as the drivers source code shows: switch (addr) { case 0x00: val = 0x010000edu; break; When I do the same on x86_64, it works perfectly, and the 0x10000edu value is returned as exepected... I try everything possible, but impossible to communicate with the edu drivers via mmio mapped memory on arm architecture on virt machine...????!!!! So my question is: is the edu pci drivers usable on arm virt machine? or does it need some specific qemu or kernel architecture... I'm out of ideas... If someone can help me :) best regards