[RFC PATCH 0/7] mtd: partitions: add of_match_table support
Michal Suchanek
hramrach at gmail.com
Fri Dec 11 08:18:36 PST 2015
On 11 December 2015 at 17:00, Geert Uytterhoeven <geert at linux-m68k.org> wrote:
> Hi Michal,
>
> On Fri, Dec 11, 2015 at 4:34 PM, Michal Suchanek <hramrach at gmail.com> wrote:
>> On 11 December 2015 at 09:44, Geert Uytterhoeven <geert at linux-m68k.org> wrote:
>>> On Thu, Dec 10, 2015 at 9:54 PM, Brian Norris
>>> <computersforpeace at gmail.com> wrote:
>>>> On Sat, Dec 05, 2015 at 11:15:54AM +0100, Geert Uytterhoeven wrote:
>>>>> On Sat, Dec 5, 2015 at 6:19 AM, Brian Norris
>>>>> <computersforpeace at gmail.com> wrote:
>>>>> > There have been several discussions [1] about adding a device tree binding for
>>>>> > associating flash devices with the partition parser(s) that are used on the
>>>>> > flash. There are a few reasons:
>>>>> >
>>>>> > (1) drivers shouldn't have to be encoding platform knowledge by listing what
>>>>> > parsers might be used on a given system (this is the currently all that's
>>>>> > supported)
>>>>> > (2) we can't just scan for all supported parsers (like the block system does), since
>>>>> > there is a wide diversity of "formats" (no standardization), and it is not
>>>>> > always safe or efficient to attempt to do so, particularly since many of
>>>>> > them allow their data structures to be placed anywhere on the flash, and
>>>>> > so require scanning the entire flash device to find them.
>>>>>
>>>>> I read the second reason, but would it be useful to (partially) merge
>>>>> block/partitions/ and drivers/mtd/partitions/, so I can use e.g. msdos
>>>>> partitions
>>>>> on an mtd device??
>>>>
>>>> I kinda agree with Michal: is there a good use case?
>>>
>>> I don't have an immediate use case.
>>> Just looking at it from a high-level viewpoint.
>>>
>>>> Really, MTD partitioning is not a highly-scalable design. Particularly,
>>>> it's not typically that well-suited to large (read: unreliable) NAND
>>>> flash, where fixing partitions at the raw flash level mostly serves to
>>>> restrict UBI's ability to wear-level across the device. For that sort of
>>>> case, it's best if people are using UBI volumes on a (mostly?)
>>>> unpartitioned MTD, instead of using MTD partitions as the main
>>>> separation mechanism. Also, most partition designs (either MTD or block)
>>>> aren't very robust against bitflips, read disturb, etc.
>>>>
>>>> IOW, I wouldn't expect MBR or GPT to work well on large raw NAND flash,
>>>> and so I don't plan to do that sort of work myself. If you can provide
>>>> some better argument for it, and some nice maintainable code to go with
>>>> it, then of course it could be considered :)
>>>
>>> There's also NOR FLASH (e.g. SPI-NOR), which is what most boards I'm
>>> working on have.
>>>
>>
>> Yes, you can dump the content of a NOR flash to a file, attach a loop
>> device to it, and if block devices had the ability to use flash
>> partitioning access the different partitions.
>>
>> Maybe it would be more useful to use some kind of mtdloop, though.
>> There might even be one already. I never needed it.
>
> That's the inverse, which looks like a solid use case to me ;-)
> E.g. for investigation or virtualization.
>
> You can do this already in userspace with kpartx, though.
>
What kind of partitioning does kpartx support? I do not see that
documented anywhere.
Anyway, it seems there is no mtdblock so in case of non-ecc (or
hidden-ecc) flashes you could use losetup -P and block2mtd on each
partition to look at the dumped flash content or even prepare flash
images. So long as the kernel supports the partitioning scheme used on
the flash.
Thanks
Michal
More information about the linux-mtd
mailing list