mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 09:59:32 +00:00
x86: clean up apic->acpi_madt_oem_check methods
Impact: refactor code x86 subarchitectures each defined a "acpi_madt_oem_check()" method, which could be an inline function, or an extern, or a static function, and which was also the name of a genapic field. Untangle this namespace spaghetti by setting ->acpi_madt_oem_check() to NULL on those subarchitectures that have no detection quirks, and rename the other ones (summit, es7000) that do. Also change default_acpi_madt_oem_check() to handle NULL entries, and clean its control flow up as well. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
9a6801da55
commit
306db03b0d
13 changed files with 29 additions and 30 deletions
|
@ -9,7 +9,7 @@ extern void unmap_unisys_acpi_oem_table(unsigned long oem_addr);
|
||||||
extern void setup_unisys(void);
|
extern void setup_unisys(void);
|
||||||
|
|
||||||
#ifndef CONFIG_X86_GENERICARCH
|
#ifndef CONFIG_X86_GENERICARCH
|
||||||
extern int acpi_madt_oem_check(char *oem_id, char *oem_table_id);
|
extern int default_acpi_madt_oem_check(char *oem_id, char *oem_table_id);
|
||||||
extern int mps_oem_check(struct mpc_table *mpc, char *oem, char *productid);
|
extern int mps_oem_check(struct mpc_table *mpc, char *oem, char *productid);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,7 @@ extern struct genapic apic_flat;
|
||||||
extern struct genapic apic_physflat;
|
extern struct genapic apic_physflat;
|
||||||
extern struct genapic apic_x2apic_cluster;
|
extern struct genapic apic_x2apic_cluster;
|
||||||
extern struct genapic apic_x2apic_phys;
|
extern struct genapic apic_x2apic_phys;
|
||||||
extern int acpi_madt_oem_check(char *, char *);
|
extern int default_acpi_madt_oem_check(char *, char *);
|
||||||
|
|
||||||
extern void apic_send_IPI_self(int vector);
|
extern void apic_send_IPI_self(int vector);
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ mps_oem_check(struct mpc_table *mpc, char *oem, char *productid)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hook from generic ACPI tables.c */
|
/* Hook from generic ACPI tables.c */
|
||||||
static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
static inline int default_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,6 @@
|
||||||
|
|
||||||
extern int mps_oem_check(struct mpc_table *, char *, char *);
|
extern int mps_oem_check(struct mpc_table *, char *, char *);
|
||||||
|
|
||||||
extern int acpi_madt_oem_check(char *, char *);
|
extern int default_acpi_madt_oem_check(char *, char *);
|
||||||
|
|
||||||
#endif /* _ASM_X86_MACH_GENERIC_MACH_MPPARSE_H */
|
#endif /* _ASM_X86_MACH_GENERIC_MACH_MPPARSE_H */
|
||||||
|
|
|
@ -27,7 +27,7 @@ static inline int mps_oem_check(struct mpc_table *mpc, char *oem,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hook from generic ACPI tables.c */
|
/* Hook from generic ACPI tables.c */
|
||||||
static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
static inline int summit_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
||||||
{
|
{
|
||||||
if (!strncmp(oem_id, "IBM", 3) &&
|
if (!strncmp(oem_id, "IBM", 3) &&
|
||||||
(!strncmp(oem_table_id, "SERVIGIL", 8)
|
(!strncmp(oem_table_id, "SERVIGIL", 8)
|
||||||
|
|
|
@ -239,7 +239,8 @@ static int __init acpi_parse_madt(struct acpi_table_header *table)
|
||||||
madt->address);
|
madt->address);
|
||||||
}
|
}
|
||||||
|
|
||||||
acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id);
|
default_acpi_madt_oem_check(madt->header.oem_id,
|
||||||
|
madt->header.oem_table_id);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ void apic_send_IPI_self(int vector)
|
||||||
__send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL);
|
__send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ struct genapic apic_bigsmp = {
|
||||||
|
|
||||||
.name = "bigsmp",
|
.name = "bigsmp",
|
||||||
.probe = probe_bigsmp,
|
.probe = probe_bigsmp,
|
||||||
.acpi_madt_oem_check = acpi_madt_oem_check,
|
.acpi_madt_oem_check = NULL,
|
||||||
.apic_id_registered = apic_id_registered,
|
.apic_id_registered = apic_id_registered,
|
||||||
|
|
||||||
.int_delivery_mode = INT_DELIVERY_MODE,
|
.int_delivery_mode = INT_DELIVERY_MODE,
|
||||||
|
|
|
@ -28,7 +28,7 @@ struct genapic apic_default = {
|
||||||
|
|
||||||
.name = "default",
|
.name = "default",
|
||||||
.probe = probe_default,
|
.probe = probe_default,
|
||||||
.acpi_madt_oem_check = acpi_madt_oem_check,
|
.acpi_madt_oem_check = NULL,
|
||||||
.apic_id_registered = apic_id_registered,
|
.apic_id_registered = apic_id_registered,
|
||||||
|
|
||||||
.int_delivery_mode = INT_DELIVERY_MODE,
|
.int_delivery_mode = INT_DELIVERY_MODE,
|
||||||
|
|
|
@ -57,7 +57,7 @@ mps_oem_check(struct mpc_table *mpc, char *oem, char *productid)
|
||||||
|
|
||||||
#ifdef CONFIG_ACPI
|
#ifdef CONFIG_ACPI
|
||||||
/* Hook from generic ACPI tables.c */
|
/* Hook from generic ACPI tables.c */
|
||||||
static int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
static int __init es7000_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
||||||
{
|
{
|
||||||
unsigned long oem_addr = 0;
|
unsigned long oem_addr = 0;
|
||||||
int check_dsdt;
|
int check_dsdt;
|
||||||
|
@ -81,7 +81,7 @@ static int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
static int __init es7000_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -104,7 +104,7 @@ struct genapic apic_es7000 = {
|
||||||
|
|
||||||
.name = "es7000",
|
.name = "es7000",
|
||||||
.probe = probe_es7000,
|
.probe = probe_es7000,
|
||||||
.acpi_madt_oem_check = acpi_madt_oem_check,
|
.acpi_madt_oem_check = es7000_acpi_madt_oem_check,
|
||||||
.apic_id_registered = apic_id_registered,
|
.apic_id_registered = apic_id_registered,
|
||||||
|
|
||||||
.int_delivery_mode = INT_DELIVERY_MODE,
|
.int_delivery_mode = INT_DELIVERY_MODE,
|
||||||
|
|
|
@ -31,12 +31,6 @@ static int probe_numaq(void)
|
||||||
return found_numaq;
|
return found_numaq;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hook from generic ACPI tables.c */
|
|
||||||
static int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void vector_allocation_domain(int cpu, cpumask_t *retmask)
|
static void vector_allocation_domain(int cpu, cpumask_t *retmask)
|
||||||
{
|
{
|
||||||
/* Careful. Some cpus do not strictly honor the set of cpus
|
/* Careful. Some cpus do not strictly honor the set of cpus
|
||||||
|
@ -54,7 +48,7 @@ struct genapic apic_numaq = {
|
||||||
|
|
||||||
.name = "NUMAQ",
|
.name = "NUMAQ",
|
||||||
.probe = probe_numaq,
|
.probe = probe_numaq,
|
||||||
.acpi_madt_oem_check = acpi_madt_oem_check,
|
.acpi_madt_oem_check = NULL,
|
||||||
.apic_id_registered = apic_id_registered,
|
.apic_id_registered = apic_id_registered,
|
||||||
|
|
||||||
.int_delivery_mode = INT_DELIVERY_MODE,
|
.int_delivery_mode = INT_DELIVERY_MODE,
|
||||||
|
|
|
@ -128,11 +128,16 @@ int __init mps_oem_check(struct mpc_table *mpc, char *oem, char *productid)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; apic_probe[i]; ++i) {
|
for (i = 0; apic_probe[i]; ++i) {
|
||||||
if (apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id)) {
|
if (!apic_probe[i]->acpi_madt_oem_check)
|
||||||
|
continue;
|
||||||
|
if (!apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!cmdline_apic) {
|
if (!cmdline_apic) {
|
||||||
apic = apic_probe[i];
|
apic = apic_probe[i];
|
||||||
if (x86_quirks->update_genapic)
|
if (x86_quirks->update_genapic)
|
||||||
|
@ -142,7 +147,6 @@ int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ struct genapic apic_summit = {
|
||||||
|
|
||||||
.name = "summit",
|
.name = "summit",
|
||||||
.probe = probe_summit,
|
.probe = probe_summit,
|
||||||
.acpi_madt_oem_check = acpi_madt_oem_check,
|
.acpi_madt_oem_check = summit_acpi_madt_oem_check,
|
||||||
.apic_id_registered = apic_id_registered,
|
.apic_id_registered = apic_id_registered,
|
||||||
|
|
||||||
.int_delivery_mode = INT_DELIVERY_MODE,
|
.int_delivery_mode = INT_DELIVERY_MODE,
|
||||||
|
|
Loading…
Reference in a new issue