Re: [PATCH v2] i386: Fix __get_cpuid() and __get_cpuid_count() for Centaur/Zhaoxin CPUID range

"H.J. Lu" <[email protected]> Thu, 6 Aug 2026 13:35:10 +0800
Newsgroups gmane.comp.gcc.patches
Message-ID <CAMe9rOoQwDA0CKHdT=zbk7XF=OWysUc8co+D-EE=NUDuDHeJbA@mail.gmail.com>
On Thu, Aug 6, 2026 at 10:52 AM Ewan Hai-oc <[email protected]> wrote:
>
> On Tue, Mar 17, 2026 at 09:27:13AM +0100, Uros Bizjak wrote:
> > On Tue, Mar 17, 2026 at 9:12 AM Ewanhaioc <[email protected]> wrote:
> > >
> > > From: Ewan <[email protected]>
> > >
> > > The __get_cpuid() and __get_cpuid_count() functions use
> > > "__leaf & 0x80000000" to determine the CPUID range base, which only
> > > distinguishes between Basic (0x0) and Extended (0x80000000) ranges.
> > > This causes queries to the Centaur/Zhaoxin range (0xC0000000) to be
> > > incorrectly mapped to the Extended range, and always return 0 (failure)
> > > on Centaur/Zhaoxin processors that support CPUID 0xC000xxxx
> > > leaves (e.g. PadLock feature detection via leaf 0xC0000001).
> > >
> > > Replace the bitmask with explicit range checks that correctly identify
> > > all four CPUID ranges: Basic (0x0), Hypervisor (0x40000000), Extended
> > > (0x80000000), and Centaur/Zhaoxin (0xC0000000).
> > >
> > > Additionally, the Hypervisor range (0x40000000) is also handled as an
> > > extra improvement, since the original bitmask incorrectly mapped it to
> > > the Basic range (0x0).
> > >
> > > Also update the __get_cpuid_max() comment to document the newly
> > > supported range base values.
> > >
> > > gcc/ChangeLog:
> > >
> > >         * config/i386/cpuid.h (__get_cpuid_max): Update comment to
> > >         document 0x40000000 and 0xC0000000 as valid ext values.
> > >         (__get_cpuid): Replace "__leaf & 0x80000000" with explicit
> > >         range checks for Basic, Hypervisor, Extended, and
> > >         Centaur/Zhaoxin CPUID ranges.
> > >         (__get_cpuid_count): Likewise.
> >
> > OK.
> >
> > Thanks,
> > Uros.
> >
>
> Ping. This patch was approved on March 17, but it does not appear to have reached master yet.
> It still applies cleanly to current master. Could someone please commit it?
>
>

I pushed it in for you.

-- 
H.J.