diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index b002eb2072..1f0ab9d177 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -67,7 +67,7 @@ static int cf_check map_range( return -EPERM; } - rc = xsm_iomem_mapping(XSM_HOOK, map->d, map_mfn, m_end, map->map); + rc = xsm_iomem_mapping_vpci(XSM_HOOK, map->d, map_mfn, m_end, map->map); if ( rc ) { printk(XENLOG_G_WARNING diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h index ad88d2fd91..47d409cf08 100644 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -579,6 +579,13 @@ static XSM_INLINE int cf_check xsm_iomem_mapping( return xsm_default_action(action, current->domain, d); } +static XSM_INLINE int cf_check xsm_iomem_mapping_vpci( + XSM_DEFAULT_ARG struct domain *d, uint64_t s, uint64_t e, uint8_t allow) +{ + XSM_ASSERT_ACTION(XSM_HOOK); + return xsm_default_action(action, current->domain, d); +} + static XSM_INLINE int cf_check xsm_pci_config_permission( XSM_DEFAULT_ARG struct domain *d, uint32_t machine_bdf, uint16_t start, uint16_t end, uint8_t access) diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h index 5867ccceaf..fc30cf822f 100644 --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -117,6 +117,8 @@ struct xsm_ops { uint8_t allow); int (*iomem_mapping)(struct domain *d, uint64_t s, uint64_t e, uint8_t allow); + int (*iomem_mapping_vpci)(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); @@ -504,6 +506,12 @@ static inline int xsm_iomem_mapping( return alternative_call(xsm_ops.iomem_mapping, d, s, e, allow); } +static inline int xsm_iomem_mapping_vpci( + xsm_default_t def, struct domain *d, uint64_t s, uint64_t e, uint8_t allow) +{ + return alternative_call(xsm_ops.iomem_mapping_vpci, d, s, e, allow); +} + static inline int xsm_pci_config_permission( xsm_default_t def, struct domain *d, uint32_t machine_bdf, uint16_t start, uint16_t end, uint8_t access) diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c index e6ffa948f7..44a9e04ae7 100644 --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -72,6 +72,7 @@ static const struct xsm_ops __initconst_cf_clobber dummy_ops = { .irq_permission = xsm_irq_permission, .iomem_permission = xsm_iomem_permission, .iomem_mapping = xsm_iomem_mapping, + .iomem_mapping_vpci = xsm_iomem_mapping_vpci, .pci_config_permission = xsm_pci_config_permission, .get_vnumainfo = xsm_get_vnumainfo, diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index 308ac354aa..6ca850d23e 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -1921,6 +1921,7 @@ static const struct xsm_ops __initconst_cf_clobber flask_ops = { .irq_permission = flask_irq_permission, .iomem_permission = flask_iomem_permission, .iomem_mapping = flask_iomem_mapping, + .iomem_mapping_vpci = flask_iomem_mapping, .pci_config_permission = flask_pci_config_permission, .resource_plug_core = flask_resource_plug_core,