|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] VT-d: section placement and type adjustments
commit 245a0cc2ba7559942424b8b4fcc16bfbcf83a964
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Tue Oct 13 17:17:16 2015 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Oct 13 17:17:16 2015 +0200
VT-d: section placement and type adjustments
With x2APIC requiring iommu_supports_eim() to return true, we can
adjust a few conditonals such that both it and
platform_supports_x2apic() can be marked __init. For the latter as
well as for platform_supports_intremap() also change the return types
to bool_t.
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Acked-by: Yang Zhang <yang.z.zhang@xxxxxxxxx>
---
xen/drivers/passthrough/vtd/dmar.c | 9 +++++----
xen/drivers/passthrough/vtd/extern.h | 4 ++--
xen/drivers/passthrough/vtd/intremap.c | 18 ++++++++++++------
3 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/xen/drivers/passthrough/vtd/dmar.c
b/xen/drivers/passthrough/vtd/dmar.c
index 34ec4c7..7cad593 100644
--- a/xen/drivers/passthrough/vtd/dmar.c
+++ b/xen/drivers/passthrough/vtd/dmar.c
@@ -901,16 +901,17 @@ void acpi_dmar_zap(void)
write_atomic((uint32_t*)&dmar_table->signature[0], sig);
}
-int platform_supports_intremap(void)
+bool_t platform_supports_intremap(void)
{
- unsigned int mask = ACPI_DMAR_INTR_REMAP;
+ const unsigned int mask = ACPI_DMAR_INTR_REMAP;
return (dmar_flags & mask) == ACPI_DMAR_INTR_REMAP;
}
-int platform_supports_x2apic(void)
+bool_t __init platform_supports_x2apic(void)
{
- unsigned int mask = ACPI_DMAR_INTR_REMAP | ACPI_DMAR_X2APIC_OPT_OUT;
+ const unsigned int mask = ACPI_DMAR_INTR_REMAP | ACPI_DMAR_X2APIC_OPT_OUT;
+
return cpu_has_x2apic && ((dmar_flags & mask) == ACPI_DMAR_INTR_REMAP);
}
diff --git a/xen/drivers/passthrough/vtd/extern.h
b/xen/drivers/passthrough/vtd/extern.h
index fbfd9a6..cbe0286 100644
--- a/xen/drivers/passthrough/vtd/extern.h
+++ b/xen/drivers/passthrough/vtd/extern.h
@@ -93,8 +93,8 @@ void vtd_ops_preamble_quirk(struct iommu* iommu);
void vtd_ops_postamble_quirk(struct iommu* iommu);
void me_wifi_quirk(struct domain *domain, u8 bus, u8 devfn, int map);
void pci_vtd_quirk(const struct pci_dev *);
-int platform_supports_intremap(void);
-int platform_supports_x2apic(void);
+bool_t platform_supports_intremap(void);
+bool_t platform_supports_x2apic(void);
void vtd_set_hwdom_mapping(struct domain *d);
diff --git a/xen/drivers/passthrough/vtd/intremap.c
b/xen/drivers/passthrough/vtd/intremap.c
index f9ba0ce..776ec54 100644
--- a/xen/drivers/passthrough/vtd/intremap.c
+++ b/xen/drivers/passthrough/vtd/intremap.c
@@ -143,7 +143,7 @@ static void set_hpet_source_id(unsigned int id, struct
iremap_entry *ire)
set_ire_sid(ire, SVT_VERIFY_SID_SQ, SQ_13_IGNORE_3, hpetid_to_bdf(id));
}
-bool_t iommu_supports_eim(void)
+bool_t __init iommu_supports_eim(void)
{
struct acpi_drhd_unit *drhd;
unsigned int apic;
@@ -832,11 +832,16 @@ int iommu_enable_x2apic_IR(void)
struct acpi_drhd_unit *drhd;
struct iommu *iommu;
- if ( !iommu_supports_eim() )
- return -EOPNOTSUPP;
+ if ( system_state < SYS_STATE_active )
+ {
+ if ( !iommu_supports_eim() )
+ return -EOPNOTSUPP;
- if ( !platform_supports_x2apic() )
- return -ENXIO;
+ if ( !platform_supports_x2apic() )
+ return -ENXIO;
+ }
+ else if ( !x2apic_enabled )
+ return -EOPNOTSUPP;
for_each_drhd_unit ( drhd )
{
@@ -888,7 +893,8 @@ void iommu_disable_x2apic_IR(void)
{
struct acpi_drhd_unit *drhd;
- if ( !iommu_supports_eim() )
+ /* x2apic_enabled implies iommu_supports_eim(). */
+ if ( !x2apic_enabled )
return;
for_each_drhd_unit ( drhd )
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |