Hello,
For PCI passthrough, I have to handle MessageHostOp::OP_ATTACH_MSI (amongst others). This requires modifications to the Irq_connection / Irq_session. My current plan is to pass the bdf value through to the Irq_proxy_component, where I can use it to get the pci config space.
I would advise to obtain the pci config space information (physical address respectively a dataspace to it) directly in Seoul/Vancouver via the pci_session.
Then you can pass this information as parameter (so, either the physical address or better the dataspace capability) to the Irq::connection request and Core can establish a valid memory mapping for issuing later on the assign_gsi syscall.
This is what I tried at first, but just passing the physical address to the system call does not work because the assign_gsi syscall expects the address to be mapped. Passing the dataspace capability should work, but I cannot do so in the constructor of Irq_connection since the latter passes all arguments in a string to Irq_session.
I could of course add a function to set the dataspace capability for the pci config space and wait until it has been called before assigning the gsi, but I have hoped for a cleaner solution.
Regards,
Ole Intel GmbH Dornacher Strasse 1 85622 Feldkirchen/Muenchen, Deutschland Sitz der Gesellschaft: Feldkirchen bei Muenchen Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk Registergericht: Muenchen HRB 47456 Ust.-IdNr./VAT Registration No.: DE129385895 Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052