[PATCH] mtd/powernv_flash: Enable partition support

Timothy Pearson tpearson at raptorengineering.com
Thu Mar 29 14:43:55 PDT 2018


Will resend with Signed-off-by.

Before this patch, the driver was not picking up the OF-provided
partition list.  It seemed specifically designed to register only one
large partition covering the entire PNOR; mtd_device_register() does not
run parsing of any type AFAIK.

Example DT:

flash at 0 {
	compatible = "ibm,opal-flash";
	ibm,flash-block-size = <0x10000>;
	ibm,opal-id = <0x0>;
	no-erase;
	#address-cells = <0x1>;
	#size-cells = <0x1>;
	phandle = <0x161>;
	reg = <0x0 0x4000000>;

	partitions {
		compatible = "fixed-partitions";
		#address-cells = <0x1>;
		#size-cells = <0x1>;
		phandle = <0x162>;

		partition at 0 {
			label = "PNOR";
			phandle = <0x168>;
			reg = <0x0 0x4000000>;
		};

		partition at 3389000 {
			read-only;
			label = "IMA_CATALOG";
			phandle = <0x165>;
			reg = <0x3389000 0x40000>;
		};

		partition at 1a21000 {
			read-only;
			label = "BOOTKERNEL";
			phandle = <0x163>;
			reg = <0x1a21000 0x1800000>;
		};

		partition at 3388000 {
			read-only;
			label = "VERSION";
			phandle = <0x166>;
			reg = <0x3388000 0x1000>;
		};

		partition at 3710000 {
			label = "BOOTKERNFW";
			phandle = <0x167>;
			reg = <0x3710000 0x600000>;
		};

		partition at 3344000 {
			read-only;
			label = "CAPP";
			phandle = <0x164>;
			reg = <0x3344000 0x24000>;
		};
	};
};

On 03/29/2018 12:29 AM, Rafał Miłecki wrote:
> Hi Tomthy,
> 
> On 25 March 2018 at 22:05, Timothy Pearson
> <tpearson at raptorengineering.com> wrote:
>> On certain systems, such as the Talos II, skiboot emits a partition
>> table for the main PNOR MTD device in the generated device tree.
>>
>> Allow this partition table to be parsed and the partitions to be
>> exposed via MTD device partition nodes.
> 
> Your commit is missing a Signed-off-by
> 
> 
>> ---
>>  drivers/mtd/devices/powernv_flash.c | 12 ++++++++++--
>>  1 file changed, 10 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/mtd/devices/powernv_flash.c b/drivers/mtd/devices/powernv_flash.c
>> index 26f9feaa5d17..f76045f78221 100644
>> --- a/drivers/mtd/devices/powernv_flash.c
>> +++ b/drivers/mtd/devices/powernv_flash.c
>> @@ -2,6 +2,7 @@
>>   * OPAL PNOR flash MTD abstraction
>>   *
>>   * Copyright IBM 2015
>> + * Copyright Raptor Engineering, LLC 2018
>>   *
>>   * This program is free software; you can redistribute it and/or modify
>>   * it under the terms of the GNU General Public License as published by
>> @@ -47,6 +48,8 @@ enum flash_op {
>>         FLASH_OP_ERASE,
>>  };
>>
>> +static char const * const part_probes[] = { "ofpart", NULL };
>> +
>>  /*
>>   * Don't return -ERESTARTSYS if we can't get a token, the MTD core
>>   * might have split up the call from userspace and called into the
>> @@ -267,9 +270,14 @@ static int powernv_flash_probe(struct platform_device *pdev)
>>         /*
>>          * The current flash that skiboot exposes is one contiguous flash chip
>>          * with an ffs partition at the start, it should prove easier for users
>> -        * to deal with partitions or not as they see fit
>> +        * to deal with partitions or not as they see fit.  skitboot places this
>> +        * on the first MTD partition.
>> +        *
>> +        * Certain partitions may also be exposed to the host, such as the boot
>> +        * kernel firmware partition.
>>          */
>> -       return mtd_device_register(&data->mtd, NULL, 0);
>> +       mtd_set_of_node(&data->mtd, dev->of_node);
>> +       return mtd_device_parse_register(&data->mtd, part_probes, NULL, NULL, 0);
> 
> It seems the only change introduced by this patch is passing a list of
> parsers. That way you override a default list of parsers:
> "cmdlinepart", "ofpart", NULL
> with a custom one:
> "ofpart", NULL
> 
> I don't see how it really changes anything/much. Can you explain it
> please? It seems that the only purpose of your change is to don't
> probe "cmdlinepart" parser which reads "mtdparts=" from the cmd line.
> 
> Which parser exactly is supposed to detect partitions on your device?
> "fixed-partitions"? "ofoldpart"? Does your DTB contains "compatible"
> property for flash node? Please paste the relevant part of your DTB if
> applicable.
> 
> 
>>  }
>>
>>  /**
> 


-- 
Timothy Pearson
Raptor Engineering
+1 (415) 727-8645 (direct line)
+1 (512) 690-0200 (switchboard)
https://www.raptorengineering.com



More information about the linux-mtd mailing list