aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/xsm
diff options
context:
space:
mode:
authorDaniel De Graaf <dgdegra@tycho.nsa.gov>2011-12-18 14:34:42 +0000
committerDaniel De Graaf <dgdegra@tycho.nsa.gov>2011-12-18 14:34:42 +0000
commit32103e04bed97da5c42a12d2d40cbdfff61e8cdb (patch)
tree4bf75215cdf821c41f61f0950ba9887f334a19d7 /xen/include/xsm
parentf2271ccd4576e36a975a5648cee436b12e1d857a (diff)
downloadxen-32103e04bed97da5c42a12d2d40cbdfff61e8cdb.tar.gz
xen-32103e04bed97da5c42a12d2d40cbdfff61e8cdb.tar.bz2
xen-32103e04bed97da5c42a12d2d40cbdfff61e8cdb.zip
xsm: add checks on PCI configuration access
PCI configuration access is allowed to any privileged domain regardless of I/O port access restrictions; add XSM hooks for these accesses. Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Diffstat (limited to 'xen/include/xsm')
-rw-r--r--xen/include/xsm/xsm.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 0c7f24871e..df6cec22f3 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -113,6 +113,7 @@ struct xsm_operations {
int (*schedop_shutdown) (struct domain *d1, struct domain *d2);
int (*irq_permission) (struct domain *d, int pirq, uint8_t allow);
int (*iomem_permission) (struct domain *d, uint64_t s, uint64_t e, uint8_t allow);
+ int (*pci_config_permission) (struct domain *d, uint32_t machine_bdf, uint16_t start, uint16_t end, uint8_t access);
int (*get_device_group) (uint32_t machine_bdf);
int (*test_assign_device) (uint32_t machine_bdf);
@@ -473,6 +474,11 @@ static inline int xsm_iomem_permission (struct domain *d, uint64_t s, uint64_t e
return xsm_call(iomem_permission(d, s, e, allow));
}
+static inline int xsm_pci_config_permission (struct domain *d, uint32_t machine_bdf, uint16_t start, uint16_t end, uint8_t access)
+{
+ return xsm_call(pci_config_permission(d, machine_bdf, start, end, access));
+}
+
static inline int xsm_get_device_group(uint32_t machine_bdf)
{
return xsm_call(get_device_group(machine_bdf));