--- //depot/vendor/freebsd/src/sys/amd64/amd64/local_apic.c 2007/05/08 22:07:24 +++ //depot/user/attilio/attilio_schedlock/amd64/amd64/local_apic.c 2007/07/27 10:00:07 @@ -1065,7 +1065,7 @@ mp_topology(); #endif } -SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_FIRST, apic_setup_local, NULL) +SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_SECOND, apic_setup_local, NULL) /* * Setup the I/O APICs. --- //depot/vendor/freebsd/src/sys/amd64/amd64/mp_machdep.c 2007/06/05 00:03:37 +++ //depot/user/attilio/attilio_schedlock/amd64/amd64/mp_machdep.c 2007/07/27 10:00:07 @@ -194,7 +194,8 @@ /* Build the smp_topology map. */ /* Nothing to do if there is no HTT support. */ - if ((cpu_feature & CPUID_HTT) == 0) + if ((cpu_feature & CPUID_HTT) == 0 || + (cpu_feature2 & CPUID2_CNXTID) == 0) return; logical_cpus = (cpu_procinfo & CPUID_HTT_CORES) >> 16; if (logical_cpus <= 1) @@ -374,7 +375,7 @@ /* Setup the initial logical CPUs info. */ logical_cpus = logical_cpus_mask = 0; - if (cpu_feature & CPUID_HTT) + if ((cpu_feature & CPUID_HTT) && (cpu_feature2 & CPUID2_CNXTID)) logical_cpus = (cpu_procinfo & CPUID_HTT_CORES) >> 16; /* @@ -392,7 +393,7 @@ * First determine if this is an Intel processor which claims * to have hyperthreading support. */ - if ((cpu_feature & CPUID_HTT) && + if ((cpu_feature & CPUID_HTT) && (cpu_feature2 & CPUID2_CNXTID) && (strcmp(cpu_vendor, "GenuineIntel") == 0)) { /* * If the "deterministic cache parameters" cpuid calls --- //depot/vendor/freebsd/src/sys/i386/i386/local_apic.c 2007/05/08 22:03:14 +++ //depot/user/attilio/attilio_schedlock/i386/i386/local_apic.c 2007/07/27 10:00:07 @@ -1069,7 +1069,7 @@ mp_topology(); #endif } -SYSINIT(apic_init, SI_SUB_CPU, SI_ORDER_FIRST, apic_init, NULL) +SYSINIT(apic_init, SI_SUB_CPU, SI_ORDER_SECOND, apic_init, NULL) /* * Setup the I/O APICs. --- //depot/vendor/freebsd/src/sys/i386/i386/mp_machdep.c 2007/06/04 23:58:07 +++ //depot/user/attilio/attilio_schedlock/i386/i386/mp_machdep.c 2007/07/27 10:00:07 @@ -249,7 +249,8 @@ /* Build the smp_topology map. */ /* Nothing to do if there is no HTT support. */ - if ((cpu_feature & CPUID_HTT) == 0) + if ((cpu_feature & CPUID_HTT) == 0 || + (cpu_feature2 & CPUID2_CNXTID) == 0) return; logical_cpus = (cpu_procinfo & CPUID_HTT_CORES) >> 16; if (logical_cpus <= 1) @@ -423,7 +424,7 @@ /* Setup the initial logical CPUs info. */ logical_cpus = logical_cpus_mask = 0; - if (cpu_feature & CPUID_HTT) + if ((cpu_feature & CPUID_HTT) && (cpu_feature2 & CPUID2_CNXTID)) logical_cpus = (cpu_procinfo & CPUID_HTT_CORES) >> 16; /* @@ -441,7 +442,7 @@ * First determine if this is an Intel processor which claims * to have hyperthreading support. */ - if ((cpu_feature & CPUID_HTT) && + if ((cpu_feature & CPUID_HTT) && (cpu_feature2 & CPUID2_CNXTID) && (strcmp(cpu_vendor, "GenuineIntel") == 0)) { /* * If the "deterministic cache parameters" cpuid calls --- //depot/vendor/freebsd/src/sys/kern/subr_smp.c 2007/07/03 18:44:26 +++ //depot/user/attilio/attilio_schedlock/kern/subr_smp.c 2007/07/27 10:00:07 @@ -148,7 +148,7 @@ mp_ncpus); cpu_mp_announce(); } -SYSINIT(cpu_mp, SI_SUB_CPU, SI_ORDER_SECOND, mp_start, NULL) +SYSINIT(cpu_mp, SI_SUB_CPU, SI_ORDER_THIRD, mp_start, NULL) void forward_signal(struct thread *td)