[systemd-devel] rdrand generated with march=winchip-c6 in systemd-241

Mike Gilbert floppym at gentoo.org
Mon May 13 20:49:00 UTC 2019

On Sat, May 11, 2019 at 1:19 PM tedheadster <tedheadster at gmail.com> wrote:
> On Sat, May 11, 2019 at 12:30 PM Florian Weimer <fw at deneb.enyo.de> wrote:
> > Can you capture register contents at the point of the crash?
> >
> > Does this reproduce in a chroot?  Maybe you can trace the whole thing
> > with a debugger.  Does the crash reproduce if you single-step through
> > the whole function?
> Florian,
>   I figured out the problem, I just haven't written code to fix it.
> The documentation I can find is silent about what is returned in %ecx
> and %ebx when calling cpuid function 0x00000001 on IDT Winchip-C6 and
> Winchip2.
> I think %ecx  should properly contain 0x00000000, but it instead puts
> the 'auls' characters from cpuid function 0x00000000 (vendor string
> 'CentaurHauls') in %ecx:

Just a guess: I wonder if that 'auls' value is left over from the
previous CPUID result. If that's the case, a simple solution might be
to zero-out ebx, ecx, and edx in __cpuid().

More information about the systemd-devel mailing list