This patch series enables support for the HWRNG included on the Raspberry
Pi 4. It is simply a rebase of Stefan's branch [1]. I went ahead and
tested this out on a Pi 4. Prior to this patch series, attempting to use
the hwrng gives:
$ head -c 2 /dev/hwrng
head: /dev/hwrng: Input/output error
After this series, the same command gives two random bytes.
Changes in v3:
- drop interrupts from bcm2711 rng node
- move bcm283x rng into bcm2835-common.dtsi
- add reviewed-by tag
- separated out patch 3 into two parts
Changes in v2:
- specify the correct size for the region in the dts, refactor bcm283x rng
---
Stefan Wahren (2):
dt-bindings: rng: add BCM2711 RNG compatible
hwrng: iproc-rng200: Add support for BCM2711
Stephen Brennan (2):
ARM: dts: bcm2835: Move rng definition to common location
ARM: dts: bcm2711: Enable HWRNG support
.../devicetree/bindings/rng/brcm,iproc-rng200.txt | 1 +
arch/arm/boot/dts/bcm2711.dtsi | 7 +++----
arch/arm/boot/dts/bcm2835-common.dtsi | 6 ++++++
arch/arm/boot/dts/bcm283x.dtsi | 6 ------
drivers/char/hw_random/Kconfig | 2 +-
drivers/char/hw_random/iproc-rng200.c | 1 +
6 files changed, 12 insertions(+), 11 deletions(-)
--
2.24.0
From: Stefan Wahren <[email protected]>
The BCM2711 has a RNG200 block, so document its compatible string.
Signed-off-by: Stefan Wahren <[email protected]>
Signed-off-by: Stephen Brennan <[email protected]>
---
Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt b/Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt
index c223e54452da..802523196ee5 100644
--- a/Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt
+++ b/Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt
@@ -2,6 +2,7 @@ HWRNG support for the iproc-rng200 driver
Required properties:
- compatible : Must be one of:
+ "brcm,bcm2711-rng200"
"brcm,bcm7211-rng200"
"brcm,bcm7278-rng200"
"brcm,iproc-rng200"
--
2.24.0
From: Stefan Wahren <[email protected]>
BCM2711 features a RNG200 hardware random number generator block.
So make the driver available.
Signed-off-by: Stefan Wahren <[email protected]>
Signed-off-by: Stephen Brennan <[email protected]>
Reviewed-by: Matthias Brugger <[email protected]>
---
drivers/char/hw_random/Kconfig | 2 +-
drivers/char/hw_random/iproc-rng200.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index 7c7fecfa2fb2..77e848fca531 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -90,7 +90,7 @@ config HW_RANDOM_BCM2835
config HW_RANDOM_IPROC_RNG200
tristate "Broadcom iProc/STB RNG200 support"
- depends on ARCH_BCM_IPROC || ARCH_BRCMSTB
+ depends on ARCH_BCM_IPROC || ARCH_BCM2835 || ARCH_BRCMSTB
default HW_RANDOM
---help---
This driver provides kernel-side support for the RNG200
diff --git a/drivers/char/hw_random/iproc-rng200.c b/drivers/char/hw_random/iproc-rng200.c
index 899ff25f4f28..32d9fe61a225 100644
--- a/drivers/char/hw_random/iproc-rng200.c
+++ b/drivers/char/hw_random/iproc-rng200.c
@@ -213,6 +213,7 @@ static int iproc_rng200_probe(struct platform_device *pdev)
}
static const struct of_device_id iproc_rng200_of_match[] = {
+ { .compatible = "brcm,bcm2711-rng200", },
{ .compatible = "brcm,bcm7211-rng200", },
{ .compatible = "brcm,bcm7278-rng200", },
{ .compatible = "brcm,iproc-rng200", },
--
2.24.0
BCM2711 inherits from BCM283X, but has an incompatible HWRNG. Move this
node to bcm2835-common.dtsi, so that BCM2711 can define its own.
Signed-off-by: Stephen Brennan <[email protected]>
---
Changes in v3:
- moved the bcm2835 rng into bcm2835-common.dtsi rather than a new file
- split out enabling rng on bcm2711 into its own patch
arch/arm/boot/dts/bcm2835-common.dtsi | 6 ++++++
arch/arm/boot/dts/bcm283x.dtsi | 6 ------
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/arm/boot/dts/bcm2835-common.dtsi b/arch/arm/boot/dts/bcm2835-common.dtsi
index fe1ab40c7f22..2b1d9d4c0cde 100644
--- a/arch/arm/boot/dts/bcm2835-common.dtsi
+++ b/arch/arm/boot/dts/bcm2835-common.dtsi
@@ -70,6 +70,12 @@ pm: watchdog@7e100000 {
system-power-controller;
};
+ rng@7e104000 {
+ compatible = "brcm,bcm2835-rng";
+ reg = <0x7e104000 0x10>;
+ interrupts = <2 29>;
+ };
+
pixelvalve@7e206000 {
compatible = "brcm,bcm2835-pixelvalve0";
reg = <0x7e206000 0x100>;
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index 3caaa57eb6c8..5219339fc27c 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -84,12 +84,6 @@ clocks: cprman@7e101000 {
<&dsi1 0>, <&dsi1 1>, <&dsi1 2>;
};
- rng@7e104000 {
- compatible = "brcm,bcm2835-rng";
- reg = <0x7e104000 0x10>;
- interrupts = <2 29>;
- };
-
mailbox: mailbox@7e00b880 {
compatible = "brcm,bcm2835-mbox";
reg = <0x7e00b880 0x40>;
--
2.24.0
This enables hardware random number generator support for the BCM2711
on the Raspberry Pi 4 board.
Signed-off-by: Stephen Brennan <[email protected]>
---
arch/arm/boot/dts/bcm2711.dtsi | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
index ac83dac2e6ba..ed0877d5a1e9 100644
--- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -92,10 +92,9 @@ pm: watchdog@7e100000 {
};
rng@7e104000 {
- interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
-
- /* RNG is incompatible with brcm,bcm2835-rng */
- status = "disabled";
+ compatible = "brcm,bcm2711-rng200";
+ reg = <0x7e104000 0x28>;
+ status = "okay";
};
uart2: serial@7e201400 {
--
2.24.0
Hi Baruch,
On Wed Nov 20, 2019 at 6:50 AM, Baruch Siach wrote:
> Hi Stephen, Stefan,
>
>
> On Wed, Nov 20 2019, Stephen Brennan wrote:
>
>
> > From: Stefan Wahren <[email protected]>
> >
> > The BCM2711 has a RNG200 block, so document its compatible string.
> >
> > Signed-off-by: Stefan Wahren <[email protected]>
> > Signed-off-by: Stephen Brennan <[email protected]>
>
>
> Isn't that duplicate of Florian's commit 6223949a1531?
>
>
> > ---
> > Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt b/Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt
> > index c223e54452da..802523196ee5 100644
> > --- a/Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt
> > +++ b/Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt
> > @@ -2,6 +2,7 @@ HWRNG support for the iproc-rng200 driver
> >
> > Required properties:
> > - compatible : Must be one of:
> > + "brcm,bcm2711-rng200"
> > "brcm,bcm7211-rng200"
>
>
> Isn't this clear text duplication? Am I missing something obvious?
>
I understand the confusion, but they're different, we're looking at the
difference between:
bcm2711
bcm7211
^^
These are apparently separate but related chips, leading to confusion in
other places [1] as well. I double checked the commit 6223949a1531 you
pointed out, as well as 1fa6d053b2a5 from your other email, to verify that
this is the case. No duplication (as far as I can tell) is in the series.
[1]: https://github.com/raspberrypi/linux/issues/3163
Regards,
Stephen
>
> I was looking at versions of this patch series wondering why no one
> noticed that.
>
>
> baruch
>
>
> > "brcm,bcm7278-rng200"
> > "brcm,iproc-rng200"
>
>
> --
> http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
> =}------------------------------------------------ooO--U--Ooo------------{=
> - [email protected] - tel: +972.52.368.4656, http://www.tkos.co.il -
>
>
>
>
Am 20.11.19 um 04:16 schrieb Stephen Brennan:
> BCM2711 inherits from BCM283X, but has an incompatible HWRNG. Move this
> node to bcm2835-common.dtsi, so that BCM2711 can define its own.
>
> Signed-off-by: Stephen Brennan <[email protected]>
Acked-by: Stefan Wahren <[email protected]>
Hi Stephen,
Am 20.11.19 um 04:16 schrieb Stephen Brennan:
> This patch series enables support for the HWRNG included on the Raspberry
> Pi 4. It is simply a rebase of Stefan's branch [1]. I went ahead and
> tested this out on a Pi 4. Prior to this patch series, attempting to use
> the hwrng gives:
>
> $ head -c 2 /dev/hwrng
> head: /dev/hwrng: Input/output error
>
> After this series, the same command gives two random bytes.
just a note: a more expressive test would be running rngtest (package
rng-tools) on this device.
Regards
Stefan
Am 20.11.19 um 04:16 schrieb Stephen Brennan:
> This enables hardware random number generator support for the BCM2711
> on the Raspberry Pi 4 board.
>
> Signed-off-by: Stephen Brennan <[email protected]>
Acked-by: Stefan Wahren <[email protected]>
Thanks
On Tue, 2019-11-19 at 19:16 -0800, Stephen Brennan wrote:
> This enables hardware random number generator support for the BCM2711
> on the Raspberry Pi 4 board.
>
> Signed-off-by: Stephen Brennan <[email protected]>
> ---
> arch/arm/boot/dts/bcm2711.dtsi | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
> index ac83dac2e6ba..ed0877d5a1e9 100644
> --- a/arch/arm/boot/dts/bcm2711.dtsi
> +++ b/arch/arm/boot/dts/bcm2711.dtsi
> @@ -92,10 +92,9 @@ pm: watchdog@7e100000 {
> };
>
> rng@7e104000 {
> - interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> -
> - /* RNG is incompatible with brcm,bcm2835-rng */
> - status = "disabled";
> + compatible = "brcm,bcm2711-rng200";
> + reg = <0x7e104000 0x28>;
> + status = "okay";
Small nitpick, the 'okay' status is set by default, so no need for this. But
it's something we can edit out once we pick the patch.
Regards,
Nicolas
On Wed, 2019-11-20 at 17:16 +0100, Stefan Wahren wrote:
> Hi Stephen,
>
> Am 20.11.19 um 04:16 schrieb Stephen Brennan:
> > This patch series enables support for the HWRNG included on the Raspberry
> > Pi 4. It is simply a rebase of Stefan's branch [1]. I went ahead and
> > tested this out on a Pi 4. Prior to this patch series, attempting to use
> > the hwrng gives:
> >
> > $ head -c 2 /dev/hwrng
> > head: /dev/hwrng: Input/output error
> >
> > After this series, the same command gives two random bytes.
>
> just a note: a more expressive test would be running rngtest (package
> rng-tools) on this device.
Just had a go at it,
root@rpi4:~# rngtest -c 1000 < /dev/hwrng
rngtest 2-unofficial-mt.14
Copyright (c) 2004 by Henrique de Moraes Holschuh
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
rngtest: starting FIPS tests...
rngtest: bits received from input: 20000032
rngtest: FIPS 140-2 successes: 998
rngtest: FIPS 140-2 failures: 2
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 1
rngtest: FIPS 140-2(2001-10-10) Runs: 0
rngtest: FIPS 140-2(2001-10-10) Long run: 1
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=1.284; avg=113.786; max=126.213)Kibits/s
rngtest: FIPS tests speed: (min=17.122; avg=28.268; max=28.812)Mibits/s
rngtest: Program run time: 172323761 microseconds
AFAIR (Arch wiki) some small failures are acceptable.
Regards,
Nicolas
On 11/19/19 7:16 PM, Stephen Brennan wrote:
> From: Stefan Wahren <[email protected]>
>
> The BCM2711 has a RNG200 block, so document its compatible string.
>
> Signed-off-by: Stefan Wahren <[email protected]>
> Signed-off-by: Stephen Brennan <[email protected]>
Reviewed-by: Florian Fainelli <[email protected]>
--
Florian
On 11/19/19 7:16 PM, Stephen Brennan wrote:
> From: Stefan Wahren <[email protected]>
>
> BCM2711 features a RNG200 hardware random number generator block.
> So make the driver available.
>
> Signed-off-by: Stefan Wahren <[email protected]>
> Signed-off-by: Stephen Brennan <[email protected]>
> Reviewed-by: Matthias Brugger <[email protected]>
Reviewed-by: Florian Fainelli <[email protected]>
--
Florian
Hi Herbert,
On 11/19/2019 7:16 PM, Stephen Brennan wrote:
> This patch series enables support for the HWRNG included on the Raspberry
> Pi 4. It is simply a rebase of Stefan's branch [1]. I went ahead and
> tested this out on a Pi 4. Prior to this patch series, attempting to use
> the hwrng gives:
>
> $ head -c 2 /dev/hwrng
> head: /dev/hwrng: Input/output error
>
> After this series, the same command gives two random bytes.
When we get a review from Rob, you can take patches 1-2 through your
tree and Stefan/Nicholas can queue patches 3-4 through the BCM2835 tree
where the DTS files already exist. Does that work for you?
>
> Changes in v3:
> - drop interrupts from bcm2711 rng node
> - move bcm283x rng into bcm2835-common.dtsi
> - add reviewed-by tag
> - separated out patch 3 into two parts
>
> Changes in v2:
> - specify the correct size for the region in the dts, refactor bcm283x rng
>
> ---
>
> Stefan Wahren (2):
> dt-bindings: rng: add BCM2711 RNG compatible
> hwrng: iproc-rng200: Add support for BCM2711
>
> Stephen Brennan (2):
> ARM: dts: bcm2835: Move rng definition to common location
> ARM: dts: bcm2711: Enable HWRNG support
>
> .../devicetree/bindings/rng/brcm,iproc-rng200.txt | 1 +
> arch/arm/boot/dts/bcm2711.dtsi | 7 +++----
> arch/arm/boot/dts/bcm2835-common.dtsi | 6 ++++++
> arch/arm/boot/dts/bcm283x.dtsi | 6 ------
> drivers/char/hw_random/Kconfig | 2 +-
> drivers/char/hw_random/iproc-rng200.c | 1 +
> 6 files changed, 12 insertions(+), 11 deletions(-)
>
--
Florian
Hi,
Am 20.11.19 um 20:50 schrieb Nicolas Saenz Julienne:
> On Wed, 2019-11-20 at 17:16 +0100, Stefan Wahren wrote:
>> Hi Stephen,
>>
>> Am 20.11.19 um 04:16 schrieb Stephen Brennan:
>>> This patch series enables support for the HWRNG included on the Raspberry
>>> Pi 4. It is simply a rebase of Stefan's branch [1]. I went ahead and
>>> tested this out on a Pi 4. Prior to this patch series, attempting to use
>>> the hwrng gives:
>>>
>>> $ head -c 2 /dev/hwrng
>>> head: /dev/hwrng: Input/output error
>>>
>>> After this series, the same command gives two random bytes.
>> just a note: a more expressive test would be running rngtest (package
>> rng-tools) on this device.
> Just had a go at it,
>
> root@rpi4:~# rngtest -c 1000 < /dev/hwrng
> rngtest 2-unofficial-mt.14
> Copyright (c) 2004 by Henrique de Moraes Holschuh
> This is free software; see the source for copying conditions. There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> rngtest: starting FIPS tests...
> rngtest: bits received from input: 20000032
> rngtest: FIPS 140-2 successes: 998
> rngtest: FIPS 140-2 failures: 2
> rngtest: FIPS 140-2(2001-10-10) Monobit: 0
> rngtest: FIPS 140-2(2001-10-10) Poker: 1
> rngtest: FIPS 140-2(2001-10-10) Runs: 0
> rngtest: FIPS 140-2(2001-10-10) Long run: 1
> rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
> rngtest: input channel speed: (min=1.284; avg=113.786; max=126.213)Kibits/s
> rngtest: FIPS tests speed: (min=17.122; avg=28.268; max=28.812)Mibits/s
> rngtest: Program run time: 172323761 microseconds
>
> AFAIR (Arch wiki) some small failures are acceptable.
>
> Regards,
> Nicolas
>
thanks for the results. AFAIR the downstream implementation [1] has a
significant higher input speed. So there is possibly some room for
optimizations later.
Regards
Stefan
[1] -
https://github.com/raspberrypi/linux/commit/5e74aadfd1e0e6c00994521863ba044ce25b40de
On Tue, 19 Nov 2019 19:16:19 -0800, Stephen Brennan wrote:
> From: Stefan Wahren <[email protected]>
>
> The BCM2711 has a RNG200 block, so document its compatible string.
>
> Signed-off-by: Stefan Wahren <[email protected]>
> Signed-off-by: Stephen Brennan <[email protected]>
> ---
> Documentation/devicetree/bindings/rng/brcm,iproc-rng200.txt | 1 +
> 1 file changed, 1 insertion(+)
>
Acked-by: Rob Herring <[email protected]>
On 11/20/2019 9:30 PM, Herbert Xu wrote:
> On Wed, Nov 20, 2019 at 08:09:57PM -0800, Florian Fainelli wrote:
>> Hi Herbert,
>>
>> On 11/19/2019 7:16 PM, Stephen Brennan wrote:
>>> This patch series enables support for the HWRNG included on the Raspberry
>>> Pi 4. It is simply a rebase of Stefan's branch [1]. I went ahead and
>>> tested this out on a Pi 4. Prior to this patch series, attempting to use
>>> the hwrng gives:
>>>
>>> $ head -c 2 /dev/hwrng
>>> head: /dev/hwrng: Input/output error
>>>
>>> After this series, the same command gives two random bytes.
>>
>> When we get a review from Rob, you can take patches 1-2 through your
>> tree and Stefan/Nicholas can queue patches 3-4 through the BCM2835 tree
>> where the DTS files already exist. Does that work for you?
>
> Yes sure.
Rob has provided his Acked-by for the binding patch, are you targeting
these changes for 5.5 or 5.6 at this point?
--
Florian
On Tue, Dec 03, 2019 at 08:55:04PM -0800, Florian Fainelli wrote:
>
> Rob has provided his Acked-by for the binding patch, are you targeting
> these changes for 5.5 or 5.6 at this point?
They are too late for 5.5 so it's going to be 5.6.
Cheers,
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt