Subject: Re: CVS commit: src/sys/arch/i386/i386
To: Julio M. Merino Vidal <jmmv84@gmail.com>
From: Juan RP <juan@xtrarom.org>
List: source-changes
Date: 07/25/2007 16:17:48
On Wed, 25 Jul 2007 16:04:27 +0200
"Julio M. Merino Vidal" <jmmv84@gmail.com> wrote:
> Are you sure that is correct? The original code was only calling
> est_init when the cpu_vendor was one of CPUVENDOR_INTEL or
> CPUVENDOR_IDT. Now it calls est_init with any vendor. According to
> the est_init code, I see:
>
> if (CPUID2FAMILY(curcpu()->ci_signature) == 15)
> bus_clock = p4_get_bus_clock(curcpu());
> else if (CPUID2FAMILY(curcpu()->ci_signature) == 6) {
> if (vendor == CPUVENDOR_IDT)
> bus_clock = via_get_bus_clock(curcpu());
> else
> bus_clock = p3_get_bus_clock(curcpu());
> }
>
> So when cpu_vendor != CPUVENDOR_IDT, it calls p3_get_bus_clock. And
> that function only seems to recognize Intel CPUs. So with your
> change, this function will get called with any kind of CPU and return
> invalid values.
Family 15 is amd64 with EM64T and family 3 is i386.
cpu_vendor will always be CPUVENDOR_INTEL or CPUVENDOR_IDT, and CPUID2_EST
is only available in those CPUs anyway.
What do you see wrong here? I don't understand you.
--
Juan Romero Pardines - The NetBSD Project
http://plog.xtrarom.org - NetBSD/pkgsrc news in Spanish