Bug 106821

Summary: "modprobe intel-rng" fails for Intel i7-4770
Product: Drivers Reporter: Kenneth Newwood (kenneth)
Component: OtherAssignee: drivers_other
Status: NEW ---    
Severity: normal    
Priority: P1    
Hardware: Intel   
OS: Linux   
Kernel Version: 3.2.0 Subsystem:
Regression: No Bisected commit-id:

Description Kenneth Newwood 2015-10-28 21:19:55 UTC
According to Intel, the i7-4770 support the Secure Key feature (RDRAND):

>
> http://ark.intel.com/de/products/75122/Intel-Core-i7-4770-Processor-8M-Cache-up-to-3_90-GHz

This can be confirmed when looking at /proc/cpuinfo:

> flags         : [...] rdrand [...]

I even double-checked with "cpuid" as described here:

> https://en.wikipedia.org/wiki/RdRand#Overview

The returned value of "cpuid" is shown below:

>  eax in    eax      ebx      ecx      edx
> 00000000 0000000d 756e6547 6c65746e 49656e69
> 00000001 000306c3 04100800 7ffafbff bfebfbff
> [...]

So for eax == 0x01 bit 30 of ecx is definitely set to 0x01 (thus RDRAND should be available).

However, "modprobe intel-rng" fails with:

> ERROR: could not insert 'intel_rng': No such device

When looking at the PCI device IDs of the system via "lspci -vnn" it turns out that there is a device "8086:244e":

> 00:1c.3 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e]
> (rev d5) (prog-if 01 [Subtractive decode])
>       Flags: bus master, fast devsel, latency 0
>       Bus: primary=00, secondary=03, subordinate=04, sec-latency=0
>       Capabilities: <access denied>

This exact PCI device ID is commented out in "intel-rng.c":

>
> https://github.com/torvalds/linux/blob/master/drivers/char/hw_random/intel-rng.c#L118

So, even though there is a CPU that supposedly supports RDRAND (according to its manufacturer), its hardware RNG cannot be used.