2020-10-26 13:59:34

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: BCM5301X: Linksys EA9500 add fixed partitions



On 10/26/2020 6:13 AM, Vivek Unune wrote:
> This router has dual paritions to store trx firmware image and
> dual partitions for nvram. The second one in each of these cases acts
> as a backup store.
>
> When tested with OpenWrt, the default partition parser causes two issues:
>
> 1. It labels both nvram partitions as nvram. In factory, second one is
> labeled devinfo.
> 2. It parses second trx image and tries to create second 'linux' partition
> and fails with - cannot create duplicate 'linux' partition. I've set this
> partition to read-only for now
>
> The following patch works around both of these issues.
>
> Signed-off-by: Vivek Unune <[email protected]>
> ---
> .../boot/dts/bcm47094-linksys-panamera.dts | 41 +++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
> diff --git a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
> index 5d5930edfb9d..13da16c5de68 100644
> --- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
> +++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
> @@ -292,3 +292,44 @@ fixed-link {
> &usb3_phy {
> status = "okay";
> };
> +
> +&nandcs {
> + partitions {
> + compatible = "fixed-partitions";
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + partition@0 {
> + label = "boot";
> + reg = <0x0000000 0x0080000>;
> + read-only;
> + };
> +
> + partition@80000 {
> + label = "nvram";
> + reg = <0x080000 0x0100000>;
> + };
> +
> + partition@180000{
> + label = "devinfo";
> + reg = <0x0180000 0x080000>;
> + };
> +
> + partition@200000 {
> + label = "firmware";
> + reg = <0x0200000 0x01D00000>;
> + compatible = "brcm,trx";
> + };
> +
> + partition@1F00000 {
> + label = "failsafe";
> + reg = <0x01F00000 0x01D00000>;
> + read-only;
> + };
> +
> + partition@0x5200000 {

You would need to remove the 0x from the hex number here.

> + label = "brcmnand";

Not sure how useful naming this partition brcmnand is, can we find a
better name for it?
--
Florian


2020-10-26 19:16:51

by Vivek Unune

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: BCM5301X: Linksys EA9500 add fixed partitions

On Mon, Oct 26, 2020 at 06:30:53AM -0700, Florian Fainelli wrote:
>
>
> On 10/26/2020 6:13 AM, Vivek Unune wrote:
> > This router has dual paritions to store trx firmware image and
> > dual partitions for nvram. The second one in each of these cases acts
> > as a backup store.
> >
> > When tested with OpenWrt, the default partition parser causes two issues:
> >
> > 1. It labels both nvram partitions as nvram. In factory, second one is
> > labeled devinfo.
> > 2. It parses second trx image and tries to create second 'linux' partition
> > and fails with - cannot create duplicate 'linux' partition. I've set this
> > partition to read-only for now
> >
> > The following patch works around both of these issues.
> >
> > Signed-off-by: Vivek Unune <[email protected]>
> > ---
> > .../boot/dts/bcm47094-linksys-panamera.dts | 41 +++++++++++++++++++
> > 1 file changed, 41 insertions(+)
> >
> > diff --git a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
> > index 5d5930edfb9d..13da16c5de68 100644
> > --- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
> > +++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
> > @@ -292,3 +292,44 @@ fixed-link {
> > &usb3_phy {
> > status = "okay";
> > };
> > +
> > +&nandcs {
> > + partitions {
> > + compatible = "fixed-partitions";
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > +
> > + partition@0 {
> > + label = "boot";
> > + reg = <0x0000000 0x0080000>;
> > + read-only;
> > + };
> > +
> > + partition@80000 {
> > + label = "nvram";
> > + reg = <0x080000 0x0100000>;
> > + };
> > +
> > + partition@180000{
> > + label = "devinfo";
> > + reg = <0x0180000 0x080000>;
> > + };
> > +
> > + partition@200000 {
> > + label = "firmware";
> > + reg = <0x0200000 0x01D00000>;
> > + compatible = "brcm,trx";
> > + };
> > +
> > + partition@1F00000 {
> > + label = "failsafe";
> > + reg = <0x01F00000 0x01D00000>;
> > + read-only;
> > + };
> > +
> > + partition@0x5200000 {
>
> You would need to remove the 0x from the hex number here.

Sure, I'll fix this in next version

>
> > + label = "brcmnand";
>
> Not sure how useful naming this partition brcmnand is, can we find a better
> name for it?

I'll be more than happy to rename this that makes sense. Factory uses this
name as well. This is used as a general persistent storage for system cofigs.
Could we name it System?

Thanks,

Vivek

2020-11-01 20:10:33

by Vivek Unune

[permalink] [raw]
Subject: [PATCH v2] ARM: dts: BCM5301X: Linksys EA9500 add fixed partitions

This router has dual paritions to store trx firmware image and
dual partitions for nvram. The second one in each of these cases acts
as a backup store.

When tested with OpenWrt, the default partition parser causes two issues:

1. It labels both nvram partitions as nvram. In factory, second one is
labeled devinfo.
2. It parses second trx image and tries to create second 'linux' partition
and fails with - cannot create duplicate 'linux' partition

The following patch works around both of these issues.

Signed-off-by: Vivek Unune <[email protected]>
---
V2:
- Removed 0x before partition offset
- Renamed brcmnand to system
---
.../boot/dts/bcm47094-linksys-panamera.dts | 41 +++++++++++++++++++
1 file changed, 41 insertions(+)

diff --git a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
index 5d5930edfb9d..13da16c5de68 100644
--- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
+++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
@@ -292,3 +292,44 @@ fixed-link {
&usb3_phy {
status = "okay";
};
+
+&nandcs {
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "boot";
+ reg = <0x0000000 0x0080000>;
+ read-only;
+ };
+
+ partition@80000 {
+ label = "nvram";
+ reg = <0x080000 0x0100000>;
+ };
+
+ partition@180000{
+ label = "devinfo";
+ reg = <0x0180000 0x080000>;
+ };
+
+ partition@200000 {
+ label = "firmware";
+ reg = <0x0200000 0x01D00000>;
+ compatible = "brcm,trx";
+ };
+
+ partition@1F00000 {
+ label = "failsafe";
+ reg = <0x01F00000 0x01D00000>;
+ read-only;
+ };
+
+ partition@5200000 {
+ label = "system";
+ reg = <0x05200000 0x02E00000>;
+ };
+ };
+};
--
2.25.1

2020-11-04 03:46:18

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH v2] ARM: dts: BCM5301X: Linksys EA9500 add fixed partitions

On Sun, 1 Nov 2020 15:08:03 -0500, Vivek Unune <[email protected]> wrote:
> This router has dual paritions to store trx firmware image and
> dual partitions for nvram. The second one in each of these cases acts
> as a backup store.
>
> When tested with OpenWrt, the default partition parser causes two issues:
>
> 1. It labels both nvram partitions as nvram. In factory, second one is
> labeled devinfo.
> 2. It parses second trx image and tries to create second 'linux' partition
> and fails with - cannot create duplicate 'linux' partition
>
> The following patch works around both of these issues.
>
> Signed-off-by: Vivek Unune <[email protected]>
> ---

Applied to devicetree/next, thanks!
--
Florian

2020-11-04 12:57:21

by Vivek Unune

[permalink] [raw]
Subject: Re: [PATCH v2] ARM: dts: BCM5301X: Linksys EA9500 add fixed partitions

On Tue, Nov 03, 2020 at 07:41:59PM -0800, Florian Fainelli wrote:
> On Sun, 1 Nov 2020 15:08:03 -0500, Vivek Unune <[email protected]> wrote:
> > This router has dual paritions to store trx firmware image and
> > dual partitions for nvram. The second one in each of these cases acts
> > as a backup store.
> >
> > When tested with OpenWrt, the default partition parser causes two issues:
> >
> > 1. It labels both nvram partitions as nvram. In factory, second one is
> > labeled devinfo.
> > 2. It parses second trx image and tries to create second 'linux' partition
> > and fails with - cannot create duplicate 'linux' partition
> >
> > The following patch works around both of these issues.
> >
> > Signed-off-by: Vivek Unune <[email protected]>
> > ---
>
> Applied to devicetree/next, thanks!
> --
> Florian

Thanks Florian

2020-11-09 17:31:16

by Rafał Miłecki

[permalink] [raw]
Subject: Re: [PATCH v2] ARM: dts: BCM5301X: Linksys EA9500 add fixed partitions

On 01.11.2020 21:08, Vivek Unune wrote:
> This router has dual paritions to store trx firmware image and
> dual partitions for nvram. The second one in each of these cases acts
> as a backup store.

I'm quite sure CFE is supposed to flash new firmware to the backup
partition and then mark it as main one. The old firmware partition becomes a
new backup then.

That means you need to check which partition bootloader used to handle
partitioning properly.


> + partition@200000 {
> + label = "firmware";
> + reg = <0x0200000 0x01D00000>;
> + compatible = "brcm,trx";
> + };
> +
> + partition@1F00000 {
> + label = "failsafe";
> + reg = <0x01F00000 0x01D00000>;
> + read-only;
> + };

Here you assume CFE always boots from the first firmware partition.

Unless EA9500 CFE does sth stupid it seems like a 50% - 50% guess.

2020-11-09 18:00:24

by Vivek Unune

[permalink] [raw]
Subject: Re: [PATCH v2] ARM: dts: BCM5301X: Linksys EA9500 add fixed partitions

On Mon, Nov 09, 2020 at 06:28:38PM +0100, Rafał Miłecki wrote:
> On 01.11.2020 21:08, Vivek Unune wrote:
> > This router has dual paritions to store trx firmware image and
> > dual partitions for nvram. The second one in each of these cases acts
> > as a backup store.
>
> I'm quite sure CFE is supposed to flash new firmware to the backup
> partition and then mark it as main one. The old firmware partition becomes a
> new backup then.
>
> That means you need to check which partition bootloader used to handle
> partitioning properly.
>
>
> > + partition@200000 {
> > + label = "firmware";
> > + reg = <0x0200000 0x01D00000>;
> > + compatible = "brcm,trx";
> > + };
> > +
> > + partition@1F00000 {
> > + label = "failsafe";
> > + reg = <0x01F00000 0x01D00000>;
> > + read-only;
> > + };
>
> Here you assume CFE always boots from the first firmware partition.
>
> Unless EA9500 CFE does sth stupid it seems like a 50% - 50% guess.

Hi Rafał,

Indeed, my assumption is to only boot using first partition.

If we ever want to support true dual partitions in future, we need to:

1. Read the boot flag 'bootpartition' and skip the backup partition parsing
2. Updagrading firmware will write to backup partition and flip the bootpartition


Thanks,

Vivek