static const struct dmi_system_id bigsmp_dmi_table[] = { { hp_ht_bigsmp, "HP ProLiant DL760 G2", { DMI_MATCH(DMI_BIOS_VENDOR, "HP"), DMI_MATCH(DMI_BIOS_VERSION, "P44-"),} }, { hp_ht_bigsmp, "HP ProLiant DL740", { DMI_MATCH(DMI_BIOS_VENDOR, "HP"), DMI_MATCH(DMI_BIOS_VERSION, "P47-"),} }, { } }; static void vector_allocation_domain(int cpu, cpumask_t *retmask) { cpus_clear(*retmask); cpu_set(cpu, *retmask); } static int probe_bigsmp(void) { if (def_to_bigsmp) dmi_bigsmp = 1; else dmi_check_system(bigsmp_dmi_table); return dmi_bigsmp; } struct genapic apic_bigsmp = APIC_INIT("bigsmp", probe_bigsmp);
if ( !cpumask_test_cpu(cpu, ipimask) ) continue; msr_content |= per_cpu(cpu_2_logical_apicid, cpu); } BUG_ON(!msr_content); msr_content = (msr_content << 32) | APIC_DM_FIXED | APIC_DEST_LOGICAL | vector; apic_wrmsr(APIC_ICR, msr_content); } local_irq_restore(flags); } static const struct genapic apic_x2apic_phys = { APIC_INIT("x2apic_phys", NULL), .int_delivery_mode = dest_Fixed, .int_dest_mode = 0 /* physical delivery */, .init_apic_ldr = init_apic_ldr_x2apic_phys, .clustered_apic_check = clustered_apic_check_x2apic, .target_cpus = target_cpus_all, .vector_allocation_cpumask = vector_allocation_cpumask_phys, .cpu_mask_to_apicid = cpu_mask_to_apicid_phys, .send_IPI_mask = send_IPI_mask_x2apic_phys, .send_IPI_self = send_IPI_self_x2apic }; static const struct genapic apic_x2apic_cluster = { APIC_INIT("x2apic_cluster", NULL), .int_delivery_mode = dest_LowestPrio, .int_dest_mode = 1 /* logical delivery */,
/* * APIC driver for the IBM "Summit" chipset. */ #define APIC_DEFINITION 1 #include <linux/threads.h> #include <linux/cpumask.h> #include <asm/mpspec.h> #include <asm/genapic.h> #include <asm/fixmap.h> #include <asm/apicdef.h> #include <linux/kernel.h> #include <linux/string.h> #include <linux/smp.h> #include <linux/init.h> #include <asm/mach-summit/mach_apic.h> #include <asm/mach-summit/mach_apicdef.h> #include <asm/mach-summit/mach_ipi.h> #include <asm/mach-summit/mach_mpparse.h> static int probe_summit(void) { /* probed later in mptable/ACPI hooks */ return 0; } struct genapic apic_summit = APIC_INIT("summit", probe_summit);
DMI_MATCH(DMI_BIOS_VERSION, "P47-"), } }, { force_bigsmp, "UNISYS ES7000-ONE", { DMI_MATCH(DMI_PRODUCT_NAME, "ES7000-ONE") } }, { } }; static __init int probe_bigsmp(void) { /* * We don't implement cluster mode, so force use of * physical mode in both cases. */ if (acpi_gbl_FADT.flags & (ACPI_FADT_APIC_CLUSTER | ACPI_FADT_APIC_PHYSICAL)) def_to_bigsmp = 1; else if (!def_to_bigsmp) dmi_check_system(bigsmp_dmi_table); return def_to_bigsmp; } const struct genapic apic_bigsmp = { APIC_INIT("bigsmp", probe_bigsmp), GENAPIC_PHYS };
* Place - Suite 330, Boston, MA 02111-1307 USA. */ #include <xen/cpumask.h> #include <asm/apicdef.h> #include <asm/genapic.h> #include <xen/smp.h> #include <asm/mach-default/mach_mpparse.h> __init int probe_x2apic(void) { return x2apic_is_available(); } struct genapic apic_x2apic= { APIC_INIT("x2apic", probe_x2apic), GENAPIC_X2APIC }; void init_apic_ldr_x2apic(void) { /* We only use physical delivery mode. */ return; } void clustered_apic_check_x2apic(void) { /* We only use physical delivery mode. */ return; }
/* * APIC driver for the Unisys ES7000 chipset. */ #define APIC_DEFINITION 1 #include <linux/threads.h> #include <linux/cpumask.h> #include <asm/mpspec.h> #include <asm/genapic.h> #include <asm/fixmap.h> #include <asm/apicdef.h> #include <linux/kernel.h> #include <linux/string.h> #include <linux/smp.h> #include <linux/init.h> #include <asm/mach-es7000/mach_apicdef.h> #include <asm/mach-es7000/mach_apic.h> #include <asm/mach-es7000/mach_ipi.h> #include <asm/mach-es7000/mach_mpparse.h> #include <asm/mach-es7000/mach_wakecpu.h> static __init int probe_es7000(void) { /* probed later in mptable/ACPI hooks */ return 0; } struct genapic apic_es7000 = APIC_INIT("es7000", probe_es7000);
/* * APIC driver for the IBM "Summit" chipset. */ #include <xen/config.h> #include <xen/cpumask.h> #include <asm/current.h> #include <asm/mpspec.h> #include <asm/genapic.h> #include <asm/fixmap.h> #include <asm/apicdef.h> #include <xen/kernel.h> #include <xen/string.h> #include <xen/smp.h> #include <xen/init.h> #include <asm/mach-summit/mach_mpparse.h> static __init int probe_summit(void) { /* probed later in mptable/ACPI hooks */ return 0; } struct genapic apic_summit = { APIC_INIT("summit", probe_summit), GENAPIC_PHYS };