PERFORCE change 43467 for review
John Baldwin
jhb at FreeBSD.org
Mon Dec 8 12:54:01 PST 2003
On 05-Dec-2003 Peter Wemm wrote:
> http://perforce.freebsd.org/chv.cgi?CH=43467
>
> Change 43467 by peter at peter_daintree on 2003/12/05 14:22:30
>
> Integ -b i386_hammer -I. This catches up with jhb's changes.
> One change isn't relevant because there is no way to compile out
> the apic code on amd64, so we dont need the apic stubs.
Umm you don't want all this. You want mp_maxid to be right, and if
you change this this is going to break mp_maxid for amd64. :(
> Affected files ...
>
> .. //depot/projects/hammer/sys/amd64/acpica/madt.c#23 integrate
> .. //depot/projects/hammer/sys/amd64/amd64/local_apic.c#26 integrate
> .. //depot/projects/hammer/sys/amd64/amd64/machdep.c#74 integrate
> .. //depot/projects/hammer/sys/amd64/amd64/mptable.c#18 integrate
> .. //depot/projects/hammer/sys/amd64/conf/GENERIC#27 integrate
>
> Differences ...
>
> ==== //depot/projects/hammer/sys/amd64/acpica/madt.c#23 (text+ko) ====
>
> @@ -190,7 +190,7 @@
> XSDT_DESCRIPTOR *xsdt;
> int i, count;
>
> - if (resource_disabled("acpi", 0) || resource_disabled("apic", 0))
> + if (resource_disabled("acpi", 0))
> return (ENXIO);
>
> /*
> @@ -351,8 +351,7 @@
>
> apic_register_enumerator(&madt_enumerator);
> }
> -SYSINIT(madt_register, SI_SUB_TUNABLES - 1, SI_ORDER_FIRST,
> - madt_register, NULL)
> +SYSINIT(madt_register, SI_SUB_CPU - 1, SI_ORDER_FIRST, madt_register, NULL)
>
> /*
> * Call the handler routine for each entry in the MADT table.
> @@ -644,7 +643,7 @@
>
> if (madt == NULL)
> return;
> - for (i = 0; i < MAXCPU; i++) {
> + for (i = 0; i <= mp_maxid; i++) {
> if (CPU_ABSENT(i))
> continue;
> pc = pcpu_find(i);
>
> ==== //depot/projects/hammer/sys/amd64/amd64/local_apic.c#26 (text+ko) ====
>
> @@ -542,9 +542,8 @@
> }
>
> /*
> - * We have to look for CPU's very, very early because certain subsystems
> - * want to know how many CPU's we have extremely early on in the boot
> - * process.
> + * Probe the APIC enumerators, enumerate CPUs, and initialize the
> + * local APIC.
> */
> static void
> apic_init(void *dummy __unused)
> @@ -556,6 +555,10 @@
> if (!(cpu_feature & CPUID_APIC))
> return;
>
> + /* Don't probe if APIC mode is disabled. */
> + if (resource_disabled("apic", 0))
> + return;
> +
> /* First, probe all the enumerators to find the best match. */
> best_enum = NULL;
> best = 0;
> @@ -583,26 +586,14 @@
> if (retval != 0)
> printf("%s: Failed to probe CPUs: returned %d\n",
> best_enum->apic_name, retval);
> -}
> -SYSINIT(apic_init, SI_SUB_TUNABLES - 1, SI_ORDER_SECOND, apic_init, NULL)
>
> -/*
> - * Setup the local APIC. We have to do this prior to starting up the APs
> - * in the SMP case.
> - */
> -static void
> -apic_setup_local(void *dummy __unused)
> -{
> - int retval;
> -
> - if (best_enum == NULL)
> - return;
> + /* Third, initialize the local APIC. */
> retval = best_enum->apic_setup_local();
> if (retval != 0)
> printf("%s: Failed to setup the local APIC: returned %d\n",
> best_enum->apic_name, retval);
> }
> -SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_FIRST, apic_setup_local, NULL)
> +SYSINIT(apic_init, SI_SUB_CPU, SI_ORDER_FIRST, apic_init, NULL)
>
> /*
> * Setup the I/O APICs.
>
> ==== //depot/projects/hammer/sys/amd64/amd64/machdep.c#74 (text+ko) ====
>
>
> ==== //depot/projects/hammer/sys/amd64/amd64/mptable.c#18 (text+ko) ====
>
> @@ -370,8 +370,8 @@
>
> apic_register_enumerator(&mptable_enumerator);
> }
> -SYSINIT(mptable_register, SI_SUB_TUNABLES - 1, SI_ORDER_FIRST,
> - mptable_register, NULL)
> +SYSINIT(mptable_register, SI_SUB_CPU - 1, SI_ORDER_FIRST, mptable_register,
> + NULL)
>
> /*
> * Call the handler routine for each entry in the MP config table.
>
> ==== //depot/projects/hammer/sys/amd64/conf/GENERIC#27 (text+ko) ====
>
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
More information about the p4-projects
mailing list