x86: clean up esr_disable() methods
Impact: cleanup Most subarchitectures want to disable the APIC ESR (Error Status Register), because they generally have hardware hacks that wrap standard CPUs into a bigger system and hence the APIC bus is quite non-standard and weirdnesses (lockups) have been seen with ESR reporting. Remove the esr_disable macros and put the desired flag into each subarchitecture's genapic template directly. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -2,7 +2,6 @@
|
|||||||
#define __ASM_MACH_APIC_H
|
#define __ASM_MACH_APIC_H
|
||||||
|
|
||||||
#define xapic_phys_to_log_apicid(cpu) (per_cpu(x86_bios_cpu_apicid, cpu))
|
#define xapic_phys_to_log_apicid(cpu) (per_cpu(x86_bios_cpu_apicid, cpu))
|
||||||
#define esr_disable (1)
|
|
||||||
|
|
||||||
static inline int bigsmp_apic_id_registered(void)
|
static inline int bigsmp_apic_id_registered(void)
|
||||||
{
|
{
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
#include <linux/gfp.h>
|
#include <linux/gfp.h>
|
||||||
|
|
||||||
#define xapic_phys_to_log_apicid(cpu) per_cpu(x86_bios_cpu_apicid, cpu)
|
#define xapic_phys_to_log_apicid(cpu) per_cpu(x86_bios_cpu_apicid, cpu)
|
||||||
#define esr_disable (1)
|
|
||||||
|
|
||||||
static inline int es7000_apic_id_registered(void)
|
static inline int es7000_apic_id_registered(void)
|
||||||
{
|
{
|
||||||
|
@@ -18,7 +18,6 @@ static inline const struct cpumask *default_target_cpus(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define NO_BALANCE_IRQ (0)
|
#define NO_BALANCE_IRQ (0)
|
||||||
#define esr_disable (0)
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
#include <asm/genapic.h>
|
#include <asm/genapic.h>
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#include <asm/genapic.h>
|
#include <asm/genapic.h>
|
||||||
|
|
||||||
#define esr_disable (apic->ESR_DISABLE)
|
|
||||||
#define NO_BALANCE_IRQ (apic->no_balance_irq)
|
#define NO_BALANCE_IRQ (apic->no_balance_irq)
|
||||||
#undef APIC_DEST_LOGICAL
|
#undef APIC_DEST_LOGICAL
|
||||||
#define APIC_DEST_LOGICAL (apic->apic_destination_logical)
|
#define APIC_DEST_LOGICAL (apic->apic_destination_logical)
|
||||||
|
@@ -13,7 +13,6 @@ static inline const cpumask_t *numaq_target_cpus(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define NO_BALANCE_IRQ (1)
|
#define NO_BALANCE_IRQ (1)
|
||||||
#define esr_disable (1)
|
|
||||||
|
|
||||||
static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
|
static inline unsigned long check_apicid_used(physid_mask_t bitmap, int apicid)
|
||||||
{
|
{
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
#include <asm/smp.h>
|
#include <asm/smp.h>
|
||||||
#include <linux/gfp.h>
|
#include <linux/gfp.h>
|
||||||
|
|
||||||
#define esr_disable (1)
|
|
||||||
#define NO_BALANCE_IRQ (0)
|
#define NO_BALANCE_IRQ (0)
|
||||||
|
|
||||||
/* In clustered mode, the high nibble of APIC ID is a cluster number.
|
/* In clustered mode, the high nibble of APIC ID is a cluster number.
|
||||||
|
@@ -1107,7 +1107,7 @@ static void __cpuinit lapic_setup_esr(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (esr_disable) {
|
if (apic->ESR_DISABLE) {
|
||||||
/*
|
/*
|
||||||
* Something untraceable is creating bad interrupts on
|
* Something untraceable is creating bad interrupts on
|
||||||
* secondary quads ... for the moment, just leave the
|
* secondary quads ... for the moment, just leave the
|
||||||
@@ -1157,7 +1157,7 @@ void __cpuinit setup_local_APIC(void)
|
|||||||
|
|
||||||
#ifdef CONFIG_X86_32
|
#ifdef CONFIG_X86_32
|
||||||
/* Pound the ESR really hard over the head with a big hammer - mbligh */
|
/* Pound the ESR really hard over the head with a big hammer - mbligh */
|
||||||
if (lapic_is_integrated() && esr_disable) {
|
if (lapic_is_integrated() && apic->ESR_DISABLE) {
|
||||||
apic_write(APIC_ESR, 0);
|
apic_write(APIC_ESR, 0);
|
||||||
apic_write(APIC_ESR, 0);
|
apic_write(APIC_ESR, 0);
|
||||||
apic_write(APIC_ESR, 0);
|
apic_write(APIC_ESR, 0);
|
||||||
|
@@ -69,7 +69,7 @@ struct genapic apic_bigsmp = {
|
|||||||
.irq_dest_mode = 0,
|
.irq_dest_mode = 0,
|
||||||
|
|
||||||
.target_cpus = bigsmp_target_cpus,
|
.target_cpus = bigsmp_target_cpus,
|
||||||
.ESR_DISABLE = esr_disable,
|
.ESR_DISABLE = 1,
|
||||||
.apic_destination_logical = APIC_DEST_LOGICAL,
|
.apic_destination_logical = APIC_DEST_LOGICAL,
|
||||||
.check_apicid_used = check_apicid_used,
|
.check_apicid_used = check_apicid_used,
|
||||||
.check_apicid_present = check_apicid_present,
|
.check_apicid_present = check_apicid_present,
|
||||||
|
@@ -36,7 +36,7 @@ struct genapic apic_default = {
|
|||||||
.irq_dest_mode = 1,
|
.irq_dest_mode = 1,
|
||||||
|
|
||||||
.target_cpus = default_target_cpus,
|
.target_cpus = default_target_cpus,
|
||||||
.ESR_DISABLE = esr_disable,
|
.ESR_DISABLE = 0,
|
||||||
.apic_destination_logical = APIC_DEST_LOGICAL,
|
.apic_destination_logical = APIC_DEST_LOGICAL,
|
||||||
.check_apicid_used = check_apicid_used,
|
.check_apicid_used = check_apicid_used,
|
||||||
.check_apicid_present = check_apicid_present,
|
.check_apicid_present = check_apicid_present,
|
||||||
|
@@ -112,7 +112,7 @@ struct genapic apic_es7000 = {
|
|||||||
.irq_dest_mode = 0,
|
.irq_dest_mode = 0,
|
||||||
|
|
||||||
.target_cpus = es7000_target_cpus,
|
.target_cpus = es7000_target_cpus,
|
||||||
.ESR_DISABLE = esr_disable,
|
.ESR_DISABLE = 1,
|
||||||
.apic_destination_logical = APIC_DEST_LOGICAL,
|
.apic_destination_logical = APIC_DEST_LOGICAL,
|
||||||
.check_apicid_used = check_apicid_used,
|
.check_apicid_used = check_apicid_used,
|
||||||
.check_apicid_present = check_apicid_present,
|
.check_apicid_present = check_apicid_present,
|
||||||
|
@@ -56,7 +56,7 @@ struct genapic apic_numaq = {
|
|||||||
.irq_dest_mode = 0,
|
.irq_dest_mode = 0,
|
||||||
|
|
||||||
.target_cpus = numaq_target_cpus,
|
.target_cpus = numaq_target_cpus,
|
||||||
.ESR_DISABLE = esr_disable,
|
.ESR_DISABLE = 1,
|
||||||
.apic_destination_logical = APIC_DEST_LOGICAL,
|
.apic_destination_logical = APIC_DEST_LOGICAL,
|
||||||
.check_apicid_used = check_apicid_used,
|
.check_apicid_used = check_apicid_used,
|
||||||
.check_apicid_present = check_apicid_present,
|
.check_apicid_present = check_apicid_present,
|
||||||
|
@@ -49,7 +49,7 @@ struct genapic apic_summit = {
|
|||||||
.irq_dest_mode = 1,
|
.irq_dest_mode = 1,
|
||||||
|
|
||||||
.target_cpus = summit_target_cpus,
|
.target_cpus = summit_target_cpus,
|
||||||
.ESR_DISABLE = esr_disable,
|
.ESR_DISABLE = 1,
|
||||||
.apic_destination_logical = APIC_DEST_LOGICAL,
|
.apic_destination_logical = APIC_DEST_LOGICAL,
|
||||||
.check_apicid_used = check_apicid_used,
|
.check_apicid_used = check_apicid_used,
|
||||||
.check_apicid_present = check_apicid_present,
|
.check_apicid_present = check_apicid_present,
|
||||||
|
Reference in New Issue
Block a user