mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* short entropy delay causes RNG hardware error
@ 2024-08-05 16:01 Stefano Manni
  2024-08-05 16:56 ` Ahmad Fatoum
  0 siblings, 1 reply; 4+ messages in thread
From: Stefano Manni @ 2024-08-05 16:01 UTC (permalink / raw)
  To: barebox

Hello,

on a custom board based on imx6ul once linux starts I see lot of errors
like this:

  caam_jr 2141000.jr: 2000005b: CCB: desc idx 0: RNG: Hardware error

approximately every 10 seconds. And if I try to read from device the
same error occurs:

  ~# dd if=/dev/hwrng of=/dev/null bs=1 count=1
  caam_jr 2141000.jr: 2000005b: CCB: desc idx 0: RNG: Hardware error
  dd: /dev/hwrng: Invalid argument

No errors are fired in barebox where the RNG self-test is run
succesfully:

  rng_self_test: RNG software self-test passed
  caam 2140000.crypto@2140000.of: Instantiated RNG4 SH0
  caam 2140000.crypto@2140000.of: Instantiated RNG4 SH1
  caam 2140000.crypto@2140000.of: registering rng-caam

Here [1] I found that enlarging the entroy delay may help so I tried to
do the same in barebox by changing RTSDCTL_ENT_DLY_MIN from 3200 to
4800 and it succeded, I no longer see those errors in linux and trying
to read from the device works perfectly.

The strange thing is that on another board based on imx6sx I never see
those errors.

Is it something new to you? 
May we change the delay? On linux-imx 6.6.3 3200 is still used.

Best,
Stefano

[1] 
https://lore.kernel.org/all/CAOMZO5D0m1xCfgFifKz1H+oYQSfxsfuZp4U39rPMACmzv1fvjQ@mail.gmail.com/#t





^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: short entropy delay causes RNG hardware error
  2024-08-05 16:01 short entropy delay causes RNG hardware error Stefano Manni
@ 2024-08-05 16:56 ` Ahmad Fatoum
  2024-08-06  8:33   ` Stefano Manni
  0 siblings, 1 reply; 4+ messages in thread
From: Ahmad Fatoum @ 2024-08-05 16:56 UTC (permalink / raw)
  To: Stefano Manni, barebox

Hi Stefano,

On 05.08.24 18:01, Stefano Manni wrote:
> Hello,
> 
> on a custom board based on imx6ul once linux starts I see lot of errors
> like this:
> 
>   caam_jr 2141000.jr: 2000005b: CCB: desc idx 0: RNG: Hardware error
> 
> approximately every 10 seconds.

Do you have rngd enabled? You don't need this anymore with a recent
enough Linux (>= v6.1 or perhaps earlier).

This doesn't fix the underlying issue of course, but it will save you
some CPU time.

> And if I try to read from device the
> same error occurs:
> 
>   ~# dd if=/dev/hwrng of=/dev/null bs=1 count=1
>   caam_jr 2141000.jr: 2000005b: CCB: desc idx 0: RNG: Hardware error
>   dd: /dev/hwrng: Invalid argument
> 
> No errors are fired in barebox where the RNG self-test is run
> succesfully:
> 
>   rng_self_test: RNG software self-test passed
>   caam 2140000.crypto@2140000.of: Instantiated RNG4 SH0
>   caam 2140000.crypto@2140000.of: Instantiated RNG4 SH1
>   caam 2140000.crypto@2140000.of: registering rng-caam
> 
> Here [1] I found that enlarging the entroy delay may help so I tried to
> do the same in barebox by changing RTSDCTL_ENT_DLY_MIN from 3200 to
> 4800 and it succeded, I no longer see those errors in linux and trying
> to read from the device works perfectly.

That's the correct resolution, yes.

> The strange thing is that on another board based on imx6sx I never see
> those errors.

There can be quite some variance in the time needed to collect enough
entropy, even for SoCs cut from the same wafer, so this is not unusual.

> Is it something new to you? 

This issue has been there for a long time. Optimally, NXP would
store a suitable delay value into the OTP in the factory or at least
public suitable initial delay values for their SoCs, but unfortunately
they don't.

> May we change the delay? On linux-imx 6.6.3 3200 is still used.

The driver starts at 3200 and increases the delay in steps of 40 until
it reaches a suitable value. There's a maximum (12800), but it's not
used as that would slow down the RNG. Thus the search at probe time for
the lowest possible delay value that still allows instantiating the RNG.

Unfortunately, a successful instantiated RNG doesn't necessarily mean that
actual runtime usage of the CAAM won't trigger errors.

Increasing RTSDCTL_ENT_DLY_MIN to a value appropriate for your board is
thus the way to go. I think it would be appropriate to add a device tree
property, so the minimum delay value can be set on a per-board basis.

Cheers,
Ahmad


> 
> Best,
> Stefano
> 
> [1] 
> https://lore.kernel.org/all/CAOMZO5D0m1xCfgFifKz1H+oYQSfxsfuZp4U39rPMACmzv1fvjQ@mail.gmail.com/#t
> 
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: short entropy delay causes RNG hardware error
  2024-08-05 16:56 ` Ahmad Fatoum
@ 2024-08-06  8:33   ` Stefano Manni
  2024-08-06 17:00     ` Ahmad Fatoum
  0 siblings, 1 reply; 4+ messages in thread
From: Stefano Manni @ 2024-08-06  8:33 UTC (permalink / raw)
  To: Ahmad Fatoum, barebox

Hello Ahmad,

On Mon, 2024-08-05 at 18:56 +0200, Ahmad Fatoum wrote:
> 
> Do you have rngd enabled? You don't need this anymore with a recent
> enough Linux (>= v6.1 or perhaps earlier).
> 
> This doesn't fix the underlying issue of course, but it will save you
> some CPU time.

Your speculation that rngd is running comes from the error pops every
10seconds? I cannot see any systemd service related to rng running on
my machine. How can I disable it?

> 
> > And if I try to read from device the
> > same error occurs:
> > 
> >   ~# dd if=/dev/hwrng of=/dev/null bs=1 count=1
> >   caam_jr 2141000.jr: 2000005b: CCB: desc idx 0: RNG: Hardware
> > error
> >   dd: /dev/hwrng: Invalid argument
> > 
> > No errors are fired in barebox where the RNG self-test is run
> > succesfully:
> > 
> >   rng_self_test: RNG software self-test passed
> >   caam 2140000.crypto@2140000.of: Instantiated RNG4 SH0
> >   caam 2140000.crypto@2140000.of: Instantiated RNG4 SH1
> >   caam 2140000.crypto@2140000.of: registering rng-caam
> > 
> > Here [1] I found that enlarging the entroy delay may help so I
> > tried to
> > do the same in barebox by changing RTSDCTL_ENT_DLY_MIN from 3200 to
> > 4800 and it succeded, I no longer see those errors in linux and
> > trying
> > to read from the device works perfectly.
> 
> That's the correct resolution, yes.
> 
> > The strange thing is that on another board based on imx6sx I never
> > see
> > those errors.
> 
> There can be quite some variance in the time needed to collect enough
> entropy, even for SoCs cut from the same wafer, so this is not
> unusual.
> 
> > Is it something new to you? 
> 
> This issue has been there for a long time. Optimally, NXP would
> store a suitable delay value into the OTP in the factory or at least
> public suitable initial delay values for their SoCs, but
> unfortunately
> they don't.
> 
> > May we change the delay? On linux-imx 6.6.3 3200 is still used.
> 
> The driver starts at 3200 and increases the delay in steps of 40
> until
> it reaches a suitable value. There's a maximum (12800), but it's not
> used as that would slow down the RNG. Thus the search at probe time
> for
> the lowest possible delay value that still allows instantiating the
> RNG.
> 
> Unfortunately, a successful instantiated RNG doesn't necessarily mean
> that
> actual runtime usage of the CAAM won't trigger errors.
> 
> Increasing RTSDCTL_ENT_DLY_MIN to a value appropriate for your board
> is
> thus the way to go. I think it would be appropriate to add a device
> tree
> property, so the minimum delay value can be set on a per-board basis.
> 

Got it.

Thank you




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: short entropy delay causes RNG hardware error
  2024-08-06  8:33   ` Stefano Manni
@ 2024-08-06 17:00     ` Ahmad Fatoum
  0 siblings, 0 replies; 4+ messages in thread
From: Ahmad Fatoum @ 2024-08-06 17:00 UTC (permalink / raw)
  To: Stefano Manni, barebox

Hello Stefano,

On 06.08.24 10:33, Stefano Manni wrote:
> Hello Ahmad,
> 
> On Mon, 2024-08-05 at 18:56 +0200, Ahmad Fatoum wrote:
>>
>> Do you have rngd enabled? You don't need this anymore with a recent
>> enough Linux (>= v6.1 or perhaps earlier).
>>
>> This doesn't fix the underlying issue of course, but it will save you
>> some CPU time.
> 
> Your speculation that rngd is running comes from the error pops every
> 10seconds? I cannot see any systemd service related to rng running on
> my machine. How can I disable it?

Maybe you have haveged running? You could use inotify to see who
is opening the HWRNG's device file.

>> Increasing RTSDCTL_ENT_DLY_MIN to a value appropriate for your board
>> is
>> thus the way to go. I think it would be appropriate to add a device
>> tree
>> property, so the minimum delay value can be set on a per-board basis.
>>
> 
> Got it.

The property would also be appropriate to have in the upstream device
tree bindings, but it's ok to add it to barebox only for now. In that case
use a barebox, prefix though.

Cheers,
Ahmad


> 
> Thank you
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-08-06 17:01 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-05 16:01 short entropy delay causes RNG hardware error Stefano Manni
2024-08-05 16:56 ` Ahmad Fatoum
2024-08-06  8:33   ` Stefano Manni
2024-08-06 17:00     ` Ahmad Fatoum

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox