diff options
Diffstat (limited to 'drivers/iommu/hyperv-iommu.c')
| -rw-r--r-- | drivers/iommu/hyperv-iommu.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/iommu/hyperv-iommu.c b/drivers/iommu/hyperv-iommu.c index e190bb8c225c..8302db7f783e 100644 --- a/drivers/iommu/hyperv-iommu.c +++ b/drivers/iommu/hyperv-iommu.c @@ -122,9 +122,12 @@ static int __init hyperv_prepare_irq_remapping(void)  	const char *name;  	const struct irq_domain_ops *ops; +	/* +	 * For a Hyper-V root partition, ms_hyperv_msi_ext_dest_id() +	 * will always return false. +	 */  	if (!hypervisor_is_type(X86_HYPER_MS_HYPERV) || -	    x86_init.hyper.msi_ext_dest_id() || -	    !x2apic_supported()) +	    x86_init.hyper.msi_ext_dest_id())  		return -ENODEV;  	if (hv_root_partition) { @@ -170,7 +173,9 @@ static int __init hyperv_prepare_irq_remapping(void)  static int __init hyperv_enable_irq_remapping(void)  { -	return IRQ_REMAP_X2APIC_MODE; +	if (x2apic_supported()) +		return IRQ_REMAP_X2APIC_MODE; +	return IRQ_REMAP_XAPIC_MODE;  }  struct irq_remap_ops hyperv_irq_remap_ops = {  |