Date: Tue, 11 Nov 2003 12:04:57 -0800 (PST) From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 42021 for review Message-ID: <200311112004.hABK4vI5082179@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=42021 Change 42021 by peter@peter_daintree on 2003/11/11 12:04:48 integrate -I -b smp_hammer Affected files ... .. //depot/projects/hammer/sys/amd64/acpica/madt.c#15 integrate .. //depot/projects/hammer/sys/amd64/amd64/mp_machdep.c#26 integrate .. //depot/projects/hammer/sys/amd64/amd64/mptable.c#10 integrate Differences ... ==== //depot/projects/hammer/sys/amd64/acpica/madt.c#15 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/i386/acpica/madt.c,v 1.4 2003/11/06 14:47:53 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/acpica/madt.c,v 1.6 2003/11/11 18:20:10 jhb Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -55,8 +55,8 @@ #define bootverbose 1 /* XXX debugging */ -#define NIOAPICS 16 /* Max number of I/O APICs */ -#define NLAPICS 16 /* Max number of local APICs */ +#define NIOAPICS 32 /* Max number of I/O APICs */ +#define NLAPICS 32 /* Max number of local APICs */ typedef void madt_entry_handler(APIC_HEADER *entry, void *arg); @@ -540,7 +540,12 @@ } if (intr->Source != intr->GlobalSystemInterrupt) { - ioapic_remap_vector(new_ioapic, new_pin, intr->Source); + /* XXX: This assumes that the SCI uses IRQ 9. */ + if (intr->GlobalSystemInterrupt > 15 && intr->Source == 9) + acpi_OverrideInterruptLevel( + intr->GlobalSystemInterrupt); + else + ioapic_remap_vector(new_ioapic, new_pin, intr->Source); if (madt_find_interrupt(intr->Source, &old_ioapic, &old_pin) != 0) printf("MADT: Could not find APIC for source IRQ %d\n", ==== //depot/projects/hammer/sys/amd64/amd64/mp_machdep.c#26 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.221 2003/11/06 01:24:25 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.223 2003/11/11 17:16:15 jhb Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -137,7 +137,7 @@ static void release_aps(void *dummy); static int hlt_cpus_mask; -static int hlt_logical_cpus = 1; +static int hlt_logical_cpus; static struct sysctl_ctx_list logical_cpu_clist; static u_int bootMP_size; @@ -149,7 +149,7 @@ { bootMP_size = mptramp_end - mptramp_start; - boot_address = basemem & ~PAGE_MASK; /* round down to 4k boundary */ + boot_address = trunc_page(basemem); /* round down to 4k boundary */ if ((basemem - boot_address) < bootMP_size) boot_address -= PAGE_SIZE; /* not enough, lower by 4k */ /* 3 levels of page table pages */ @@ -451,7 +451,7 @@ * start each AP in our list */ static int -start_all_aps() +start_all_aps(void) { u_char mpbiosreason; u_int32_t mpbioswarmvec; ==== //depot/projects/hammer/sys/amd64/amd64/mptable.c#10 (text+ko) ==== @@ -25,8 +25,9 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/i386/i386/mptable.c,v 1.222 2003/11/05 23:15:52 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/mptable.c,v 1.224 2003/11/11 17:14:26 jhb Exp $"); +#include "opt_mptable_force_htt.h" #include <sys/param.h> #include <sys/systm.h> #include <sys/bus.h> @@ -54,7 +55,7 @@ /* string defined by the Intel MP Spec as identifying the MP table */ #define MP_SIG 0x5f504d5f /* _MP_ */ -#define NAPICID 16 /* Max number of I/O APIC's */ +#define NAPICID 32 /* Max number of I/O APIC's */ #define BIOS_BASE (0xf0000) #define BIOS_SIZE (0x10000) @@ -154,7 +155,9 @@ static int lookup_bus_type(char *name); static void mptable_count_items(void); static void mptable_count_items_handler(u_char *entry, void *arg); +#ifdef MPTABLE_FORCE_HTT static void mptable_hyperthread_fixup(u_int id_mask); +#endif static void mptable_parse_apics_and_busses(void); static void mptable_parse_apics_and_busses_handler(u_char *entry, void *arg); @@ -292,7 +295,9 @@ } else { cpu_mask = 0; mptable_walk_table(mptable_probe_cpus_handler, &cpu_mask); +#ifdef MPTABLE_FORCE_HTT mptable_hyperthread_fixup(cpu_mask); +#endif } return (0); } @@ -776,6 +781,7 @@ mptable_walk_table(mptable_parse_ints_handler, NULL); } +#ifdef MPTABLE_FORCE_HTT /* * Perform a hyperthreading "fix-up" to enumerate any logical CPU's * that aren't already listed in the table. @@ -832,6 +838,7 @@ id_mask &= ~(1 << id); } } +#endif /* MPTABLE_FORCE_HTT */ /* * Support code for routing PCI interrupts using the MP Table.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200311112004.hABK4vI5082179>