You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
* 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/irq: Standardize on CONFIG_SPARSE_IRQ=y x86, ioapic: Clean up ioapic/apic_id usage x86, ioapic: Factor out print_IO_APIC() to only print one io apic x86, ioapic: Print out irte with right ioapic index x86, ioapic: Split up setup_ioapic_entry() x86, ioapic: Pass struct irq_attr * to setup_ioapic_irq() apic, i386/bigsmp: Fix false warnings regarding logical APIC ID mismatches
This commit is contained in:
@@ -64,6 +64,7 @@ config X86
|
||||
select HAVE_TEXT_POKE_SMP
|
||||
select HAVE_GENERIC_HARDIRQS
|
||||
select HAVE_SPARSE_IRQ
|
||||
select SPARSE_IRQ
|
||||
select GENERIC_FIND_FIRST_BIT
|
||||
select GENERIC_IRQ_PROBE
|
||||
select GENERIC_PENDING_IRQ if SMP
|
||||
|
||||
@@ -495,7 +495,7 @@ static inline void default_wait_for_init_deassert(atomic_t *deassert)
|
||||
return;
|
||||
}
|
||||
|
||||
extern struct apic *generic_bigsmp_probe(void);
|
||||
extern void generic_bigsmp_probe(void);
|
||||
|
||||
|
||||
#ifdef CONFIG_X86_LOCAL_APIC
|
||||
|
||||
@@ -160,19 +160,11 @@ static inline int invalid_vm86_irq(int irq)
|
||||
#define IO_APIC_VECTOR_LIMIT ( 32 * MAX_IO_APICS )
|
||||
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
# ifdef CONFIG_SPARSE_IRQ
|
||||
# define CPU_VECTOR_LIMIT (64 * NR_CPUS)
|
||||
# define NR_IRQS \
|
||||
# define CPU_VECTOR_LIMIT (64 * NR_CPUS)
|
||||
# define NR_IRQS \
|
||||
(CPU_VECTOR_LIMIT > IO_APIC_VECTOR_LIMIT ? \
|
||||
(NR_VECTORS + CPU_VECTOR_LIMIT) : \
|
||||
(NR_VECTORS + IO_APIC_VECTOR_LIMIT))
|
||||
# else
|
||||
# define CPU_VECTOR_LIMIT (32 * NR_CPUS)
|
||||
# define NR_IRQS \
|
||||
(CPU_VECTOR_LIMIT < IO_APIC_VECTOR_LIMIT ? \
|
||||
(NR_VECTORS + CPU_VECTOR_LIMIT) : \
|
||||
(NR_VECTORS + IO_APIC_VECTOR_LIMIT))
|
||||
# endif
|
||||
#else /* !CONFIG_X86_IO_APIC: */
|
||||
# define NR_IRQS NR_IRQS_LEGACY
|
||||
#endif
|
||||
|
||||
@@ -255,12 +255,24 @@ static struct apic apic_bigsmp = {
|
||||
.x86_32_early_logical_apicid = bigsmp_early_logical_apicid,
|
||||
};
|
||||
|
||||
struct apic * __init generic_bigsmp_probe(void)
|
||||
void __init generic_bigsmp_probe(void)
|
||||
{
|
||||
if (probe_bigsmp())
|
||||
return &apic_bigsmp;
|
||||
unsigned int cpu;
|
||||
|
||||
return NULL;
|
||||
if (!probe_bigsmp())
|
||||
return;
|
||||
|
||||
apic = &apic_bigsmp;
|
||||
|
||||
for_each_possible_cpu(cpu) {
|
||||
if (early_per_cpu(x86_cpu_to_logical_apicid,
|
||||
cpu) == BAD_APICID)
|
||||
continue;
|
||||
early_per_cpu(x86_cpu_to_logical_apicid, cpu) =
|
||||
bigsmp_early_logical_apicid(cpu);
|
||||
}
|
||||
|
||||
pr_info("Overriding APIC driver with %s\n", apic_bigsmp.name);
|
||||
}
|
||||
|
||||
apic_driver(apic_bigsmp);
|
||||
|
||||
+201
-201
File diff suppressed because it is too large
Load Diff
@@ -200,14 +200,8 @@ void __init default_setup_apic_routing(void)
|
||||
* - we find more than 8 CPUs in acpi LAPIC listing with xAPIC support
|
||||
*/
|
||||
|
||||
if (!cmdline_apic && apic == &apic_default) {
|
||||
struct apic *bigsmp = generic_bigsmp_probe();
|
||||
if (bigsmp) {
|
||||
apic = bigsmp;
|
||||
printk(KERN_INFO "Overriding APIC driver with %s\n",
|
||||
apic->name);
|
||||
}
|
||||
}
|
||||
if (!cmdline_apic && apic == &apic_default)
|
||||
generic_bigsmp_probe();
|
||||
#endif
|
||||
|
||||
if (apic->setup_apic_routing)
|
||||
|
||||
Reference in New Issue
Block a user