mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
vpci: introduce basic handlers to trap accesses to the PCI config space
This functionality is going to reside in vpci.c (and the corresponding vpci.h header), and should be arch-agnostic. The handlers introduced in this patch setup the basic functionality required in order to trap accesses to the PCI config space, and allow decoding the address and finding the corresponding handler that should handle the access (although no handlers are implemented). Note that the traps to the PCI IO ports registers (0xcf8/0xcfc) are setup inside of a x86 HVM file, since that's not shared with other arches. A new XEN_X86_EMU_VPCI x86 domain flag is added in order to signal Xen whether a domain should use the newly introduced vPCI handlers, this is only enabled for PVH Dom0 at the moment. A very simple user-space test is also provided, so that the basic functionality of the vPCI traps can be asserted. This has been proven quite helpful during development, since the logic to handle partial accesses or accesses that expand across multiple registers is not trivial. The handlers for the registers are added to a linked list that's keep sorted at all times. Both the read and write handlers support accesses that expand across multiple emulated registers and contain gaps not emulated. Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> [IO parts] Reviewed-by: Paul Durrant <paul.durrant@citrix.com> [ARM] Acked-by: Julien Grall <julien.grall@arm.com> [Tools] Acked-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
1 parent
e633b13a18
commit
e90580f25b
24 files changed
+1169
-7
No files matched your search
@@ -254,6 +254,9 @@ tools/tests/regression/build/*
|
||||
tools/tests/regression/downloads/*
|
||||
tools/tests/mem-sharing/memshrtool
|
||||
tools/tests/mce-test/tools/xen-mceinj
|
||||
tools/tests/vpci/list.h
|
||||
tools/tests/vpci/vpci.[hc]
|
||||
tools/tests/vpci/test_vpci
|
||||
tools/xcutils/lsevtchn
|
||||
tools/xcutils/readnotes
|
||||
tools/xenbackendd/_paths.h
|
||||
|
||||