* Re: [PATCH 2/3] mtd: maps: remove uclinux map driver
[not found] ` <20260526103227.3152003-2-arnd@kernel.org>
@ 2026-06-25 12:07 ` Greg Ungerer
2026-06-25 14:10 ` Arnd Bergmann
0 siblings, 1 reply; 5+ messages in thread
From: Greg Ungerer @ 2026-06-25 12:07 UTC (permalink / raw)
To: Arnd Bergmann, Miquel Raynal, Richard Weinberger,
Vignesh Raghavendra
Cc: Arnd Bergmann, Randy Dunlap, Andy Shevchenko, linux-kernel,
linux-mtd, linux-m68k, Pengpeng Hou
Hi Arnd,
On 26/5/26 20:32, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> Rather than using platform data or DT properties, the configuration
> for this mtd map driver used to be passed through the global
> uclinux_ram_map structure, but the last instance was removed in
> commit 4ba66a976072 ("arch: remove blackfin port") in 2018.
>
> After commit 251f26c9e828 ("mtd: maps: Make uclinux_ram_map static"),
> it became impossible to configure it at all, even with out-of-tree
> platform code.
>
> Clearly nobody is using it, so remove it.
It is used on some ColdFire platforms, and was working all the way up
to being removed in the current merge window.
The ColdFire platform startup code (arch/m68k/coldfire/head.S) has a
somewhat unusual setup that can copy an attached filesystem blob to
_bss_stop, and this is one of the places the uclinux.c map driver can
use as the filesystem memory address. From uclinux.c
static int __init uclinux_mtd_init(void)
{
struct mtd_info *mtd;
struct map_info *mapp;
mapp = &uclinux_ram_map;
if (physaddr == -1)
mapp->phys = (resource_size_t)__bss_stop;
else
mapp->phys = physaddr;
No out of tree code is required. Most of the ColdFire defconfigs have
CONFIG_MTD_UCLINUX enabled, since it is commonly used.
Can we get this reverted?
Regards
Greg
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> drivers/mtd/maps/Kconfig | 6 --
> drivers/mtd/maps/Makefile | 1 -
> drivers/mtd/maps/uclinux.c | 118 -------------------------------------
> 3 files changed, 125 deletions(-)
> delete mode 100644 drivers/mtd/maps/uclinux.c
>
> diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
> index 784dba14e908..1e8f2b518ddd 100644
> --- a/drivers/mtd/maps/Kconfig
> +++ b/drivers/mtd/maps/Kconfig
> @@ -284,12 +284,6 @@ config MTD_PCMCIA_ANONYMOUS
>
> If unsure, say N.
>
> -config MTD_UCLINUX
> - bool "Generic uClinux RAM/ROM filesystem support"
> - depends on (MTD_RAM=y || MTD_ROM=y) && (!MMU || COLDFIRE)
> - help
> - Map driver to support image based filesystems for uClinux.
> -
> config MTD_PLATRAM
> tristate "Map driver for platform device RAM (mtd-ram)"
> select MTD_RAM
> diff --git a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile
> index 157f911f86d8..eff28fc0b60e 100644
> --- a/drivers/mtd/maps/Makefile
> +++ b/drivers/mtd/maps/Makefile
> @@ -31,7 +31,6 @@ obj-$(CONFIG_MTD_SCx200_DOCFLASH)+= scx200_docflash.o
> obj-$(CONFIG_MTD_SOLUTIONENGINE)+= solutionengine.o
> obj-$(CONFIG_MTD_PCI) += pci.o
> obj-$(CONFIG_MTD_IMPA7) += impa7.o
> -obj-$(CONFIG_MTD_UCLINUX) += uclinux.o
> obj-$(CONFIG_MTD_SCB2_FLASH) += scb2_flash.o
> obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o
> obj-$(CONFIG_MTD_VMU) += vmu-flash.o
> diff --git a/drivers/mtd/maps/uclinux.c b/drivers/mtd/maps/uclinux.c
> deleted file mode 100644
> index de4c46318abb..000000000000
> --- a/drivers/mtd/maps/uclinux.c
> +++ /dev/null
> @@ -1,118 +0,0 @@
> -/****************************************************************************/
> -
> -/*
> - * uclinux.c -- generic memory mapped MTD driver for uclinux
> - *
> - * (C) Copyright 2002, Greg Ungerer (gerg@snapgear.com)
> - *
> - * License: GPL
> - */
> -
> -/****************************************************************************/
> -
> -#include <linux/moduleparam.h>
> -#include <linux/types.h>
> -#include <linux/init.h>
> -#include <linux/kernel.h>
> -#include <linux/fs.h>
> -#include <linux/mm.h>
> -#include <linux/major.h>
> -#include <linux/mtd/mtd.h>
> -#include <linux/mtd/map.h>
> -#include <linux/mtd/partitions.h>
> -#include <asm/io.h>
> -#include <asm/sections.h>
> -
> -/****************************************************************************/
> -
> -#ifdef CONFIG_MTD_ROM
> -#define MAP_NAME "rom"
> -#else
> -#define MAP_NAME "ram"
> -#endif
> -
> -static struct map_info uclinux_ram_map = {
> - .name = MAP_NAME,
> - .size = 0,
> -};
> -
> -static unsigned long physaddr = -1;
> -module_param(physaddr, ulong, S_IRUGO);
> -
> -static struct mtd_info *uclinux_ram_mtdinfo;
> -
> -/****************************************************************************/
> -
> -static const struct mtd_partition uclinux_romfs[] = {
> - { .name = "ROMfs" }
> -};
> -
> -#define NUM_PARTITIONS ARRAY_SIZE(uclinux_romfs)
> -
> -/****************************************************************************/
> -
> -static int uclinux_point(struct mtd_info *mtd, loff_t from, size_t len,
> - size_t *retlen, void **virt, resource_size_t *phys)
> -{
> - struct map_info *map = mtd->priv;
> - *virt = map->virt + from;
> - if (phys)
> - *phys = map->phys + from;
> - *retlen = len;
> - return(0);
> -}
> -
> -/****************************************************************************/
> -
> -static int __init uclinux_mtd_init(void)
> -{
> - struct mtd_info *mtd;
> - struct map_info *mapp;
> -
> - mapp = &uclinux_ram_map;
> -
> - if (physaddr == -1)
> - mapp->phys = (resource_size_t)__bss_stop;
> - else
> - mapp->phys = physaddr;
> -
> - if (!mapp->size)
> - mapp->size = PAGE_ALIGN(ntohl(*((unsigned long *)(mapp->phys + 8))));
> - mapp->bankwidth = 4;
> -
> - printk("uclinux[mtd]: probe address=0x%x size=0x%x\n",
> - (int) mapp->phys, (int) mapp->size);
> -
> - /*
> - * The filesystem is guaranteed to be in direct mapped memory. It is
> - * directly following the kernels own bss region. Following the same
> - * mechanism used by architectures setting up traditional initrds we
> - * use phys_to_virt to get the virtual address of its start.
> - */
> - mapp->virt = phys_to_virt(mapp->phys);
> -
> - if (mapp->virt == 0) {
> - printk("uclinux[mtd]: no virtual mapping?\n");
> - return(-EIO);
> - }
> -
> - simple_map_init(mapp);
> -
> - mtd = do_map_probe("map_" MAP_NAME, mapp);
> - if (!mtd) {
> - printk("uclinux[mtd]: failed to find a mapping?\n");
> - return(-ENXIO);
> - }
> -
> - mtd->owner = THIS_MODULE;
> - mtd->_point = uclinux_point;
> - mtd->priv = mapp;
> -
> - uclinux_ram_mtdinfo = mtd;
> - mtd_device_register(mtd, uclinux_romfs, NUM_PARTITIONS);
> -
> - return(0);
> -}
> -device_initcall(uclinux_mtd_init);
> -
> -/****************************************************************************/
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/3] mtd: maps: remove uclinux map driver
2026-06-25 12:07 ` [PATCH 2/3] mtd: maps: remove uclinux map driver Greg Ungerer
@ 2026-06-25 14:10 ` Arnd Bergmann
2026-06-25 22:15 ` Greg Ungerer
2026-06-26 14:21 ` Miquel Raynal
0 siblings, 2 replies; 5+ messages in thread
From: Arnd Bergmann @ 2026-06-25 14:10 UTC (permalink / raw)
To: Greg Ungerer, Arnd Bergmann, Miquel Raynal, Richard Weinberger,
Vignesh Raghavendra
Cc: Randy Dunlap, Andy Shevchenko, linux-kernel, linux-mtd,
linux-m68k, Pengpeng Hou
On Thu, Jun 25, 2026, at 14:07, Greg Ungerer wrote:
> On 26/5/26 20:32, Arnd Bergmann wrote:
>
> It is used on some ColdFire platforms, and was working all the way up
> to being removed in the current merge window.
>
> The ColdFire platform startup code (arch/m68k/coldfire/head.S) has a
> somewhat unusual setup that can copy an attached filesystem blob to
> _bss_stop, and this is one of the places the uclinux.c map driver can
> use as the filesystem memory address. From uclinux.c
>
> static int __init uclinux_mtd_init(void)
> {
> struct mtd_info *mtd;
> struct map_info *mapp;
>
> mapp = &uclinux_ram_map;
>
> if (physaddr == -1)
> mapp->phys = (resource_size_t)__bss_stop;
> else
> mapp->phys = physaddr;
>
> No out of tree code is required. Most of the ColdFire defconfigs have
> CONFIG_MTD_UCLINUX enabled, since it is commonly used.
I see, this is surprising from reading the source and
git history, but I can see exactly how it got there.
So this is not actually a device but rather a replacement
for CONFIG_BLK_DEV_INITRD that does can work with CONFIG_BLOCK=y,
right?
> Can we get this reverted?
Yes, of course. Miquel/Richard/Vignesh, should I send a revert or
can you just apply one with Greg's explanation and my Ack?
Arnd
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/3] mtd: maps: remove uclinux map driver
2026-06-25 14:10 ` Arnd Bergmann
@ 2026-06-25 22:15 ` Greg Ungerer
2026-06-26 12:18 ` Andy Shevchenko
2026-06-26 14:21 ` Miquel Raynal
1 sibling, 1 reply; 5+ messages in thread
From: Greg Ungerer @ 2026-06-25 22:15 UTC (permalink / raw)
To: Arnd Bergmann, Arnd Bergmann, Miquel Raynal, Richard Weinberger,
Vignesh Raghavendra
Cc: Randy Dunlap, Andy Shevchenko, linux-kernel, linux-mtd,
linux-m68k, Pengpeng Hou
Hi Arnd,
On 26/6/26 00:10, Arnd Bergmann wrote:
> On Thu, Jun 25, 2026, at 14:07, Greg Ungerer wrote:
>> On 26/5/26 20:32, Arnd Bergmann wrote:
>>
>> It is used on some ColdFire platforms, and was working all the way up
>> to being removed in the current merge window.
>>
>> The ColdFire platform startup code (arch/m68k/coldfire/head.S) has a
>> somewhat unusual setup that can copy an attached filesystem blob to
>> _bss_stop, and this is one of the places the uclinux.c map driver can
>> use as the filesystem memory address. From uclinux.c
>>
>> static int __init uclinux_mtd_init(void)
>> {
>> struct mtd_info *mtd;
>> struct map_info *mapp;
>>
>> mapp = &uclinux_ram_map;
>>
>> if (physaddr == -1)
>> mapp->phys = (resource_size_t)__bss_stop;
>> else
>> mapp->phys = physaddr;
>>
>> No out of tree code is required. Most of the ColdFire defconfigs have
>> CONFIG_MTD_UCLINUX enabled, since it is commonly used.
>
> I see, this is surprising from reading the source and
> git history, but I can see exactly how it got there.
The early, and probably more interesting history, predates git.
It has always "just worked" on ColdFire platforms, so it really hasn't
needed alot of change over the years for this use case.
> So this is not actually a device but rather a replacement
> for CONFIG_BLK_DEV_INITRD that does can work with CONFIG_BLOCK=y,
> right?
Yes, that is true. Typical use means adding "root=/dev/mtdblock0" to
kernel boot arguments.
>> Can we get this reverted?
>
> Yes, of course. Miquel/Richard/Vignesh, should I send a revert or
> can you just apply one with Greg's explanation and my Ack?
Thanks
Greg
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/3] mtd: maps: remove uclinux map driver
2026-06-25 22:15 ` Greg Ungerer
@ 2026-06-26 12:18 ` Andy Shevchenko
0 siblings, 0 replies; 5+ messages in thread
From: Andy Shevchenko @ 2026-06-26 12:18 UTC (permalink / raw)
To: Greg Ungerer
Cc: Arnd Bergmann, Arnd Bergmann, Miquel Raynal, Richard Weinberger,
Vignesh Raghavendra, Randy Dunlap, linux-kernel, linux-mtd,
linux-m68k, Pengpeng Hou
On Fri, Jun 26, 2026 at 08:15:42AM +1000, Greg Ungerer wrote:
> On 26/6/26 00:10, Arnd Bergmann wrote:
> > On Thu, Jun 25, 2026, at 14:07, Greg Ungerer wrote:
> > > On 26/5/26 20:32, Arnd Bergmann wrote:
...
> > > No out of tree code is required. Most of the ColdFire defconfigs have
> > > CONFIG_MTD_UCLINUX enabled, since it is commonly used.
> >
> > I see, this is surprising from reading the source and
> > git history, but I can see exactly how it got there.
>
> The early, and probably more interesting history, predates git.
> It has always "just worked" on ColdFire platforms, so it really hasn't
> needed alot of change over the years for this use case.
If connect history.git and use `git replace`, one can get a history till
to the very begin of Linux kernel (yeah, some as tags and patch bombs, but...).
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/3] mtd: maps: remove uclinux map driver
2026-06-25 14:10 ` Arnd Bergmann
2026-06-25 22:15 ` Greg Ungerer
@ 2026-06-26 14:21 ` Miquel Raynal
1 sibling, 0 replies; 5+ messages in thread
From: Miquel Raynal @ 2026-06-26 14:21 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Greg Ungerer, Arnd Bergmann, Richard Weinberger,
Vignesh Raghavendra, Randy Dunlap, Andy Shevchenko, linux-kernel,
linux-mtd, linux-m68k, Pengpeng Hou
Hello Arnd,
>> No out of tree code is required. Most of the ColdFire defconfigs have
>> CONFIG_MTD_UCLINUX enabled, since it is commonly used.
>
> I see, this is surprising from reading the source and
> git history, but I can see exactly how it got there.
>
> So this is not actually a device but rather a replacement
> for CONFIG_BLK_DEV_INITRD that does can work with CONFIG_BLOCK=y,
> right?
>
>> Can we get this reverted?
>
> Yes, of course. Miquel/Richard/Vignesh, should I send a revert or
> can you just apply one with Greg's explanation and my Ack?
I'll try to come up with something next week :-)
Thanks,
Miquèl
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-06-26 14:21 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260526103227.3152003-1-arnd@kernel.org>
[not found] ` <20260526103227.3152003-2-arnd@kernel.org>
2026-06-25 12:07 ` [PATCH 2/3] mtd: maps: remove uclinux map driver Greg Ungerer
2026-06-25 14:10 ` Arnd Bergmann
2026-06-25 22:15 ` Greg Ungerer
2026-06-26 12:18 ` Andy Shevchenko
2026-06-26 14:21 ` Miquel Raynal
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox