[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH][RFC] Support more Capability Structures and Device Specific
I am submitting the patch which supports more Capability Structures and Device Specific Registers for passthrough device. In Xen 3.3 unstable, qemu-dm supports Configuration Header, MSI Capability Structure, and MSI-X Capability Structure. But qemu-dm does not support PCI Express Capability Structure, Device Specific Registers, etc (writing them is ignored). To support various I/O devices, I implemented following Capability Structures and Device Specific Registers. * Configuration Header Type 0 -> emulation. "emulation" does not mean no accessing real I/O device. Access real I/O device, but guest value and real value might be different. * PCI Express Capability Structure -> emulation. * PCI Power Management Capability Structure -> emulation. * Vital Product Data Capability Structure -> emulation (almost passthrough). * Vendor Specific Capability Structure -> emulation (almost passthrough). * Device Specific Register (exclude capability structures) -> passthrough. The device drivers in guest domain are allowed to access Device Specific Register. So various I/O device will work. Currently MSI Capability Structure and MSI-X Capability Structure is not implemented, and they are hidden from guest software. I disabled MSI and MSI-X in qemu-dm temporary. I am implementing MSI Capability Structure and merging current MSI routines. I will release the patch if you agree with me. MSI-X will be after MSI. I will be very happy if anyone can help me. Other Capability Structures are hidden from guest software. To do this, I change Next Capability Pointer's value to point only the Capability Structure that need to be exported to guest software (see emulate capabilities above). And some Capability Structures are 0 hardwired, and others are passthrough. This patch removes "switch" statements for emulation, and introduces table based emulation derived from pciback driver. You can implement new Capability Structure by adding new table. The other advantage of using this table is that you can easily change the emulation policy of each field/bit by just simply modifying the "emu_mask" value provided in each register table. And for only special emulation or interacting with other components (like hypervisor), you have to implement function corresponding to the register. Signed-off-by: Yuji Shimada <shimada-yxb@xxxxxxxxxxxxxxx> -- Yuji Shimada Attachment:
pci_config_passthrough.patch _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |