2013-03-20 20:42:30

by Shawn Starr

[permalink] [raw]
Subject: [Intel][RNG] PCI IDs commented out for 82801I (ICH9 Mobile and non-mobile)?

Hello folks,

I was looking at why I can't load the Intel RNG driver (or why it doesn't load automatically) and
it just so happens I have both the mobile and non-mobile ICH9 chipset. Looking at the driver I noticed:

/* BAM, CAM, DBM, FBM, GxM
{ PCI_DEVICE(0x8086, 0x2448) }, */

/* BA, CA, DB, Ex, 6300, Fx, 631x/632x, Gx
{ PCI_DEVICE(0x8086, 0x244e) }, */

IDs from both machines:

00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448] (rev 93)
00:1e.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev 92)

I saw a thread from 2006 explaining the 50% chance there's no RNG (but these days all modern chipsets should have an RNG) and I know
this chipset I have does have an RNG so I'd like to use the HW random generator vs software.

Do we need to revisit this? Even if I try to force it to load it still fails:

# modprobe intel_rng no_fwh_detect=-1 or =1
modprobe: ERROR: could not insert 'intel_rng': No such device

Thanks,
Shawn


2013-03-20 20:52:51

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [Intel][RNG] PCI IDs commented out for 82801I (ICH9 Mobile and non-mobile)?

On 03/20/2013 01:42 PM, Shawn Starr wrote:
> Hello folks,
>
> I was looking at why I can't load the Intel RNG driver (or why it doesn't load automatically) and
> it just so happens I have both the mobile and non-mobile ICH9 chipset. Looking at the driver I noticed:
>
> /* BAM, CAM, DBM, FBM, GxM
> { PCI_DEVICE(0x8086, 0x2448) }, */
>
> /* BA, CA, DB, Ex, 6300, Fx, 631x/632x, Gx
> { PCI_DEVICE(0x8086, 0x244e) }, */
>
> IDs from both machines:
>
> 00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448] (rev 93)
> 00:1e.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev 92)
>
> I saw a thread from 2006 explaining the 50% chance there's no RNG (but these days all modern chipsets should have an RNG) and I know
> this chipset I have does have an RNG so I'd like to use the HW random generator vs software.
>

Do you know that for sure?

> Do we need to revisit this? Even if I try to force it to load it still fails:
>
> # modprobe intel_rng no_fwh_detect=-1 or =1
> modprobe: ERROR: could not insert 'intel_rng': No such device
>

The Intel RNG of that era lived in the Firmware Hub (a.k.a. BIOS flash)
rather than in the chipset proper... so even with the right chipset you
might or might not actually have the the RNG. The code really detects
the presence of a chipset which could support a FWH flash part.

Jan, in c24c95a085c6b52c11c2f5afecc38b0ca143cdae you comment out a
number of PCI IDs. Was that intentional?

-hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.

2013-03-20 21:03:53

by Bjørn Mork

[permalink] [raw]
Subject: Re: [Intel][RNG] PCI IDs commented out for 82801I (ICH9 Mobile and non-mobile)?

Shawn Starr <[email protected]> writes:

> Hello folks,
>
> I was looking at why I can't load the Intel RNG driver (or why it doesn't load automatically) and
> it just so happens I have both the mobile and non-mobile ICH9 chipset. Looking at the driver I noticed:
>
> /* BAM, CAM, DBM, FBM, GxM
> { PCI_DEVICE(0x8086, 0x2448) }, */
>
> /* BA, CA, DB, Ex, 6300, Fx, 631x/632x, Gx
> { PCI_DEVICE(0x8086, 0x244e) }, */
>
> IDs from both machines:
>
> 00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge [8086:2448] (rev 93)
> 00:1e.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev 92)
>
> I saw a thread from 2006 explaining the 50% chance there's no RNG (but these days all modern chipsets should have an RNG) and I know
> this chipset I have does have an RNG so I'd like to use the HW random generator vs software.
>
> Do we need to revisit this? Even if I try to force it to load it still fails:
>
> # modprobe intel_rng no_fwh_detect=-1 or =1
> modprobe: ERROR: could not insert 'intel_rng': No such device

The module verifies that you have one of the PCI devices in that table,
so you need to modify it to get the driver to load:

static int __init mod_init(void)
{
int err = -ENODEV;
int i;
struct pci_dev *dev = NULL;
void __iomem *mem = mem;
u8 hw_status;
struct intel_rng_hw *intel_rng_hw;

for (i = 0; !dev && pci_tbl[i].vendor; ++i)
dev = pci_get_device(pci_tbl[i].vendor, pci_tbl[i].device,
NULL);

if (!dev)
goto out; /* Device not found. */



Bjørn

2013-03-21 08:00:36

by Jan Beulich

[permalink] [raw]
Subject: Re: [Intel][RNG] PCI IDs commented out for 82801I (ICH9 Mobile and non-mobile)?

>>> On 20.03.13 at 21:52, "H. Peter Anvin" <[email protected]> wrote:
> On 03/20/2013 01:42 PM, Shawn Starr wrote:
>> Hello folks,
>>
>> I was looking at why I can't load the Intel RNG driver (or why it doesn't
> load automatically) and
>> it just so happens I have both the mobile and non-mobile ICH9 chipset.
> Looking at the driver I noticed:
>>
>> /* BAM, CAM, DBM, FBM, GxM
>> { PCI_DEVICE(0x8086, 0x2448) }, */
>>
>> /* BA, CA, DB, Ex, 6300, Fx, 631x/632x, Gx
>> { PCI_DEVICE(0x8086, 0x244e) }, */
>>
>> IDs from both machines:
>>
>> 00:1e.0 PCI bridge [0604]: Intel Corporation 82801 Mobile PCI Bridge
> [8086:2448] (rev 93)
>> 00:1e.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e]
> (rev 92)
>>
>> I saw a thread from 2006 explaining the 50% chance there's no RNG (but these
> days all modern chipsets should have an RNG) and I know
>> this chipset I have does have an RNG so I'd like to use the HW random
> generator vs software.
>>
>
> Do you know that for sure?

I haven't seen _any_ half way recent system having this old style
FWH.

>> Do we need to revisit this? Even if I try to force it to load it still fails:
>>
>> # modprobe intel_rng no_fwh_detect=-1 or =1
>> modprobe: ERROR: could not insert 'intel_rng': No such device
>>
>
> The Intel RNG of that era lived in the Firmware Hub (a.k.a. BIOS flash)
> rather than in the chipset proper... so even with the right chipset you
> might or might not actually have the the RNG. The code really detects
> the presence of a chipset which could support a FWH flash part.
>
> Jan, in c24c95a085c6b52c11c2f5afecc38b0ca143cdae you comment out a
> number of PCI IDs. Was that intentional?

Yes, as explained in the description (albeit, reading it now, 6.5
years later, again, I admit it could have been written in better
ways): Before that change, the selection of which particular
device from a chipset was chose was more or less random. But
with the new code now actually accessing the device, it has to be
the LPC one. And the list of devices stops at ICH7 - that was,
afaict now, the newest one in existence back then. Therefore, if
there really are newer chipsets with FWH, the code would need
auditing for correctness when intending to add further PCI IDs.

Jan