Hello,
Sorry for the late reply. Thanks for highlighting this!
The issues you've identified have recently been fixed. If you update your checkouts of the 'camkes-arm-vm' and 'seL4_project_libs' repositories you should get the fixes that allow for multiple virtio PCI devices. If you want to just apply the changes directly, see the following changes:
camkes-arm-vm:https://github.com/SEL4PROJ/camkes-arm-vm/commit/b24769db73ea7696056763b0d75... and https://github.com/SEL4PROJ/camkes-arm-vm/commit/855b9028f91c718cb64d4b30ea0...
seL4_project_libs: https://github.com/SEL4PROJ/seL4_projects_libs/commit/cb2b459c09b3a942e42d11... , https://github.com/SEL4PROJ/seL4_projects_libs/commit/8ff01fd5e8deda3009cd02... and https://github.com/SEL4PROJ/seL4_projects_libs/commit/ad4d8b3414d0c9297f136e...
These changes make the ioport allocations more dynamic so you don't have to worry about overlapping regions. In addition it fixes this issue with 'install_virtio_vpci_device' being called multiple times.
Hope this helps. Let me know if you require any further help.
Alison.
________________________________
From: Devel on behalf of yadong.li
Sent: Friday, February 21, 2020 9:34 PM
To: devel@sel4.systems
Subject: [seL4] two questions when I add virtio net with virtio_console meanwhile in arm-vm project
hi,
I had make virtio_console work OK on my environment(armv8),
But I meet two question when I add virtio net with virtio_console meanwhile.
Question1:
"add_io_port_range@io.c:111 Requested ioport range 0x6200-0x6600" for VIRTIO CON overlaps with existing range 0x6200-0x6600 for VIRTIO PCI NET
According to the print above:
common_make_virtio_con(virtio_emul_vm, vm->pci, vm->io_port, VIRTIO_IOPORT_START, VIRTIO_IOPORT_SIZE,
VIRTIO_INTERRUPT_PIN, VIRTIO_CON_PLAT_INTERRUPT_LINE, backend);
common_make_virtio_net(virtio_emul_vm, vm->pci, vm->io_port, VIRTIO_IOPORT_START + 0x1000, VIRTIO_IOPORT_SIZE,
VIRTIO_INTERRUPT_PIN, VIRTIO_NET_PLAT_INTERRUPT_LINE, backend);
a、above two function,I found they use the same VIRTIO_IOPORT_START, I modify VIRTIO_IOPORT_START of common_make_virtio_net to (VIRTIO_IOPORT_START + 0x1000), is it OK?
b、I also found(VIRTIO_CON_PLAT_INTERRUPT_LINE == VIRTIO_NET_PLAT_INTERRUPT_LINE),is that OK? Whether it should be make interrupt line different ?
Question2:
"_utspace_split_alloc@split.c:272 Failed to find any untyped capable of creating an object at address 0xc0001000
Failed to find device cap for 0xc0001000"
According to the print above:
a、my PCI region define as below:
#define PCI_CFG_REGION_ADDR 0xC1000000
#define PCI_IO_REGION_ADDR 0xC0000000
#define PCI_CFG_REGION_SIZE 0x1000000
#define PCI_IO_REGION_SIZE 0x1000
#define PCI_CFG_BAR_MASK 0xFFFFFFFF
I found 'virtio_net_init' and 'virtio_console_init' will call the same function 'install_virtio_vpci_device',
net and console will have the same PCI_IO_REGION_ADDR ? is it OK?
b、If I want to support two or muti virtio device, which should I add a new macro define for virtio_net in a? for example add PCI_IO_REGION_ADDR for net or add PCI_CFG_REGION_ADDR ?
c、Can you give me some list file to change for support for support net and console meanwhile?
Thank you very much.
_______________________________________________
Devel mailing list
Devel@sel4.systems
https://sel4.systems/lists/listinfo/devel