"Physflat", nr_ioapics);
}
-static inline int multi_timer_check(int apic, int irq)
-{
- return (0);
-}
-
static inline int apicid_to_node(int logical_apicid)
{
return apicid_2_node[hard_smp_processor_id()];
nr_ioapics, cpus_addr(*es7000_target_cpus())[0]);
}
-static inline int multi_timer_check(int apic, int irq)
-{
- return 0;
-}
-
static inline int apicid_to_node(int logical_apicid)
{
return 0;
return phys_map;
}
-static inline int multi_timer_check(int apic, int irq)
-{
- return 0;
-}
-
/* Mapping from cpu number to logical apicid */
static inline int cpu_to_logical_apicid(int cpu)
{
#include <asm/genapic.h>
-#define multi_timer_check (apic->multi_timer_check)
#define apicid_to_node (apic->apicid_to_node)
#define cpu_to_logical_apicid (apic->cpu_to_logical_apicid)
#define cpu_present_to_apicid (apic->cpu_present_to_apicid)
* Skip adding the timer int on secondary nodes, which causes
* a small but painful rift in the time-space continuum.
*/
-static inline int multi_timer_check(int apic, int irq)
+static inline int numaq_multi_timer_check(int apic, int irq)
{
return apic != 0 && irq == 0;
}
apic_write(APIC_LDR, val);
}
-static inline int multi_timer_check(int apic, int irq)
-{
- return 0;
-}
-
static inline int summit_apic_id_registered(void)
{
return 1;
}
irq = pin_2_irq(idx, apic_id, pin);
-#ifdef CONFIG_X86_32
- if (multi_timer_check(apic_id, irq))
+
+ /*
+ * Skip the timer IRQ if there's a quirk handler
+ * installed and if it returns 1:
+ */
+ if (apic->multi_timer_check &&
+ apic->multi_timer_check(apic_id, irq))
continue;
-#endif
+
desc = irq_to_desc_alloc_cpu(irq, cpu);
if (!desc) {
printk(KERN_INFO "can not get irq_desc for %d\n", irq);
.ioapic_phys_id_map = bigsmp_ioapic_phys_id_map,
.setup_apic_routing = bigsmp_setup_apic_routing,
- .multi_timer_check = multi_timer_check,
+ .multi_timer_check = NULL,
.apicid_to_node = apicid_to_node,
.cpu_to_logical_apicid = cpu_to_logical_apicid,
.cpu_present_to_apicid = cpu_present_to_apicid,
.ioapic_phys_id_map = default_ioapic_phys_id_map,
.setup_apic_routing = default_setup_apic_routing,
- .multi_timer_check = multi_timer_check,
+ .multi_timer_check = NULL,
.apicid_to_node = apicid_to_node,
.cpu_to_logical_apicid = cpu_to_logical_apicid,
.cpu_present_to_apicid = cpu_present_to_apicid,
.ioapic_phys_id_map = es7000_ioapic_phys_id_map,
.setup_apic_routing = es7000_setup_apic_routing,
- .multi_timer_check = multi_timer_check,
+ .multi_timer_check = NULL,
.apicid_to_node = apicid_to_node,
.cpu_to_logical_apicid = cpu_to_logical_apicid,
.cpu_present_to_apicid = cpu_present_to_apicid,
.ioapic_phys_id_map = numaq_ioapic_phys_id_map,
.setup_apic_routing = numaq_setup_apic_routing,
- .multi_timer_check = multi_timer_check,
+ .multi_timer_check = numaq_multi_timer_check,
.apicid_to_node = apicid_to_node,
.cpu_to_logical_apicid = cpu_to_logical_apicid,
.cpu_present_to_apicid = cpu_present_to_apicid,
.ioapic_phys_id_map = summit_ioapic_phys_id_map,
.setup_apic_routing = summit_setup_apic_routing,
- .multi_timer_check = multi_timer_check,
+ .multi_timer_check = NULL,
.apicid_to_node = apicid_to_node,
.cpu_to_logical_apicid = cpu_to_logical_apicid,
.cpu_present_to_apicid = cpu_present_to_apicid,