diff options
Diffstat (limited to 'arch/x86/platform/sfi/sfi.c')
| -rw-r--r-- | arch/x86/platform/sfi/sfi.c | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/x86/platform/sfi/sfi.c b/arch/x86/platform/sfi/sfi.c index bcd1a703e3e6..2a8a74f3bd76 100644 --- a/arch/x86/platform/sfi/sfi.c +++ b/arch/x86/platform/sfi/sfi.c @@ -25,6 +25,7 @@  #include <linux/init.h>  #include <linux/sfi.h>  #include <linux/io.h> +#include <linux/irqdomain.h>  #include <asm/io_apic.h>  #include <asm/mpspec.h> @@ -70,19 +71,26 @@ static int __init sfi_parse_cpus(struct sfi_table_header *table)  #endif /* CONFIG_X86_LOCAL_APIC */  #ifdef CONFIG_X86_IO_APIC +static struct irq_domain_ops sfi_ioapic_irqdomain_ops = { +	.map = mp_irqdomain_map, +};  static int __init sfi_parse_ioapic(struct sfi_table_header *table)  {  	struct sfi_table_simple *sb;  	struct sfi_apic_table_entry *pentry;  	int i, num; +	struct ioapic_domain_cfg cfg = { +		.type = IOAPIC_DOMAIN_STRICT, +		.ops = &sfi_ioapic_irqdomain_ops, +	};  	sb = (struct sfi_table_simple *)table;  	num = SFI_GET_NUM_ENTRIES(sb, struct sfi_apic_table_entry);  	pentry = (struct sfi_apic_table_entry *)sb->pentry;  	for (i = 0; i < num; i++) { -		mp_register_ioapic(i, pentry->phys_addr, gsi_top); +		mp_register_ioapic(i, pentry->phys_addr, gsi_top, &cfg);  		pentry++;  	}  | 
