On Wednesday 22 April 2009 6:03:04 pm Ceri Davies wrote: > On Wed, Apr 22, 2009 at 05:59:04PM -0400, John Baldwin wrote: > > On Wednesday 22 April 2009 5:40:37 pm John Baldwin wrote: > > > Author: jhb > > > Date: Wed Apr 22 21:40:37 2009 > > > New Revision: 191405 > > > URL: http://svn.freebsd.org/changeset/base/191405 > > > > > > Log: > > > Adjust the way we number CPUs on x86 so that we attempt to "group" all > > > logical CPUs in a package. We do this by numbering the non-boot CPUs > > > by starting with the first CPU whose APIC ID is after the boot CPU and > > > wrapping back around to APIC ID 0 if needed rather than always starting > > > at APIC ID 0. While here, adjust the cpu_mp_announce() routine to list > > > CPUs based on the mapping established by assign_cpu_ids() rather than > > > making assumptions about the algorithm assign_cpu_ids() uses. > > > > An example is probably in order for this to make sense. Suppose you have a > > system with two quad-core CPUs. Package 0 has CPUs numbered 0, 1, 2, and > > 3. > > Package 1 has CPUs numbered 4, 5, 6, and 7. With the old code, if package > > 0 > > won the election to be the boot processor, then CPU 0 would be the BSP and > > the logical IDs would match the APIC IDs. However, if package 1 won the > > election during POST, then CPU 0 would be APIC ID 4 on package 0 followed > > by > > CPU 1 being APIC ID 0, CPU 2 being APIC ID 1, etc. Thus, when CPU 0 was > > the > > boot CPU you had a nice grouping where CPUs 0-3 were a single package and > > CPUs 4-7 were another package. However, when CPU 4 was the boot CPU, CPUs > > 0 > > and 5-7 where one package, and CPUs 1-4 where the second package. The > > effect > > of this patch is to change the case when CPU 4 is the boot CPU such that > > CPUs > > 0-3 are now all from CPU 4's package (APIC IDs 4-7), and CPUs 4-7 are from > > the other package (APIC IDs 0-3). What this means, in turn, is that in > > both > > cases you now always have CPUs 0-3 as one package and CPUs 4-7 as another > > package regardless of which CPU wins the boot-time election. > > What if I have HT turned on? Do they bunch up with the "real" CPU IDs > or all together at the end?
They will be bunched up as they were previously when CPU 0 was the BSP. For Intel at least (and I think AMD is the same), a given package consumes one contiguous range of physical APIC IDs. -- John Baldwin _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"