cvs commit: src/sys/amd64/amd64 identcpu.c src/sys/i386/i386 identcpu.c

John Baldwin jhb at freebsd.org
Mon Oct 17 12:53:45 PDT 2005


On Monday 17 October 2005 03:08 pm, Eric Anholt wrote:
> On Mon, 2005-10-17 at 11:31 -0700, David O'Brien wrote:
> > On Mon, Oct 17, 2005 at 02:17:33PM -0400, Jung-uk Kim wrote:
> > > On Monday 17 October 2005 01:28 pm, David O'Brien wrote:
> > > > On Mon, Oct 17, 2005 at 12:00:47PM -0400, Jung-uk Kim wrote:
> > > > > On Sunday 16 October 2005 04:58 am, David E. O'Brien wrote:
> > > > > > obrien      2005-10-16 08:58:27 UTC
> > > > > >
> > > > > >   FreeBSD src repository
> > > > > >
> > > > > >   Modified files:
> > > > > >     sys/amd64/amd64      identcpu.c
> > > > > >     sys/i386/i386        identcpu.c
> > > > > >   Log:
> > > > > >   For AMD processors, nullify CPUID.HTT.  FreeBSD has no need
> > > > > > for the information it conveys, and it is only confusing
> > > > > > people. This fixes incorrect output in the previous commit.
> > > > > >
> > > > > >   Revision  Changes    Path
> > > > > >   1.138     +9 -0      src/sys/amd64/amd64/identcpu.c
> > > > > >   1.147     +9 -0      src/sys/i386/i386/identcpu.c
> > > > >
> > > > > Have you verified you are not breaking `logical_cpus' in
> > > > > mp_machdep.c by doing this?
> > > > >
> > > > > Show me the 'incorrect' output or please back it out.
> > > >
> > > >     CPU: Dual Core AMD Opteron(tm) Processor 280 (2392.35-MHz
> > > > K8-class CPU) ..
> > > >     Physical/Logical cores: 2/2
> > > >     ..
> > > >     FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
> > > >      cpu0 (BSP): APIC ID:  0
> > > >      cpu1 (AP): APIC ID:  1
> > > >      cpu2 (AP): APIC ID:  2
> > > >      cpu3 (AP): APIC ID:  3
> > > >
> > > > I sure as hell have 4 physical cores and no logical cores.
> > >
> > > The information is per-CPU.  You have two CPUs with dual cores, which
> > > means the given information is correct.  Please back it out.
> >
> > No, this given information is wrong.  AMD does not have HyperThreading.
> > You are treating it as if it does.  The rest of the kernel also should
> > not be trying to treat AMD dual-core as HyperThreading.
> >
> > The only thing that should care in the freebsd kernel right now about AMD
> > dual-core is PowerNow! support.  It probably needs to know what cores
> > match physical cores so it can proper work in a multi-socket system.
> >
> > Please point to what part of `logical_cpus' in mp_machdep.c you feel is
> > broken by this change.
> >
> > > > I do not think you fully understand what AMD dual-core CPU's.
> > >
> > > Oh, please...
> >
> > The code you committed suggest this...
>
> Apparently David interpeted the "Physical/Logical cores: 2/2" as two
> physical cores plus two additional logical cores.  I didn't, but I could
> see how (since this per-cpu information printed isn't actually printed
> per cpu) it could be interpreted this way on a dual-cpu system.
>
> I think that this would be useful information to be printing in general
> (not just on really-HTT systems), since it would clarify what seeing
> "cpu[0-3]: APIC ID..." printed out actually means when you're just
> taking a look at some system and wondering how many cores it has.
>
> How hard would it be to do the cpuid per-cpu?  Would it be sane to
> assume that the cpuid output of the other CPUs will be the same (pretty
> sure that's not the case), or at least that the multicore and HTT info
> will be the same?  And would there be a better wording to prevent
> confusion?

Doing it for each CPU would really bloat the output, and in practice I don't 
think would buy us anything.  Note that the code assumes the package topology 
is uniform as well, not just the printfs. :)  

Probably the messages could be made less ambiguous by splitting it into two 
lines that say something like:
 Cores per package: 2
 Logical CPUs per core: 1

Except that each line would only print if it's value was greater than 1.  
Thus, on David's box you would get:
 Cores per package: 2

On a PIV with HTT would get:
 Logical CPUs per core: 2

And on the super-spiffy Zueeglecorp CPU, you would get:
 Cores per package: 4
 Logical CPUs per core: 4

-- 
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 cvs-src mailing list