Detect broken RDRAND during initialization.
Some CPUs advertise RDRAND in CPUID, but return
0xFFFFFFFF unconditionally. To avoid locking up
later, test RDRAND during initialization, and if
it returns 0xFFFFFFFF, mark it as nonexistent.
Also fix a possible segmentation fault in CPUID check.
This commit is a squashed backport of the following
commits on the master branch:
*
0e5bbcaa162ac7850eb4fcd8f91391837d0efb50
*
4d36b0287d3ab0912ba8a4790340ca099960b2b0
*
80863140263be5f2dc630938ed8f0066f8a1ab43