[PATCH] allow use of mtd and jffs2 on uml
Jason Lunz
lunz at falooley.org
Tue Oct 23 21:17:14 EDT 2007
In gmane.linux.uml.user, you wrote:
> I need to do some experiments with JFFS2 on a recent Linux kernel (2.6.22.6)
> and was hoping to use UML, with block2mtd or nandsim as my MTD, but either
> MTD configuration and consequently JFFS2 configuration isn't available in
> "make ARCH=um menuconfig", or I just can't find it.
>
> I've searched Google and the list archive and it looks like JFFS2 worked
> with UML in the past, but maybe something has changed.
>
> Is it possible to configure a UML kernel to support JFFS2? If so, how?
The patch below makes it work. It's crude and I make no excuses for it,
but it does let jffs2-on-block2mtd work on uml without problems.
I think the addition of CONFIG_MTD_CHIPREG is an ugly hack in
particular, and improperly done at that (it stays off for !UML, I
think).
But it should get you going. Maybe this could serve as a basis for
something mergable. It applies to 2.6.23; with some wiggling it works on
earlier versions too.
Signed-off-by: Jason Lunz <lunz at falooley.org>
---
arch/um/Kconfig | 4 +---
drivers/mtd/Kconfig | 12 +++++++-----
drivers/mtd/chips/Kconfig | 11 ++++++++---
drivers/mtd/devices/Kconfig | 7 +++++++
4 files changed, 23 insertions(+), 11 deletions(-)
Index: linux-2.6.23.1-uml/arch/um/Kconfig
===================================================================
--- linux-2.6.23.1-uml.orig/arch/um/Kconfig
+++ linux-2.6.23.1-uml/arch/um/Kconfig
@@ -326,9 +326,7 @@
source "drivers/md/Kconfig"
-if BROKEN
- source "drivers/mtd/Kconfig"
-endif
+source "drivers/mtd/Kconfig"
#This is just to shut up some Kconfig warnings, so no prompt.
config INPUT
Index: linux-2.6.23.1-uml/drivers/mtd/devices/Kconfig
===================================================================
--- linux-2.6.23.1-uml.orig/drivers/mtd/devices/Kconfig
+++ linux-2.6.23.1-uml/drivers/mtd/devices/Kconfig
@@ -78,6 +78,7 @@
config MTD_SLRAM
tristate "Uncached system RAM"
+ depends on !UML
help
If your CPU cannot cache all of the physical memory in your machine,
you can still use it for storage or swap by using this driver to
@@ -85,6 +86,7 @@
config MTD_PHRAM
tristate "Physical system RAM"
+ depends on !UML
help
This is a re-implementation of the slram driver above.
@@ -151,10 +153,13 @@
Testing MTD users (eg JFFS2) on large media and media that might
be removed during a write (using the floppy drive).
+if !UML
comment "Disk-On-Chip Device Drivers"
+endif
config MTD_DOC2000
tristate "M-Systems Disk-On-Chip 2000 and Millennium (DEPRECATED)"
+ depends on !UML
select MTD_DOCPROBE
select MTD_NAND_IDS
---help---
@@ -177,6 +182,7 @@
config MTD_DOC2001
tristate "M-Systems Disk-On-Chip Millennium-only alternative driver (DEPRECATED)"
+ depends on !UML
select MTD_DOCPROBE
select MTD_NAND_IDS
---help---
@@ -198,6 +204,7 @@
config MTD_DOC2001PLUS
tristate "M-Systems Disk-On-Chip Millennium Plus"
+ depends on !UML
select MTD_DOCPROBE
select MTD_NAND_IDS
---help---
Index: linux-2.6.23.1-uml/drivers/mtd/Kconfig
===================================================================
--- linux-2.6.23.1-uml.orig/drivers/mtd/Kconfig
+++ linux-2.6.23.1-uml/drivers/mtd/Kconfig
@@ -2,7 +2,6 @@
menuconfig MTD
tristate "Memory Technology Device (MTD) support"
- depends on HAS_IOMEM
help
Memory Technology Devices are flash, RAM and similar chips, often
used for solid state file systems on embedded devices. This option
@@ -280,13 +279,16 @@
source "drivers/mtd/chips/Kconfig"
-source "drivers/mtd/maps/Kconfig"
+if !UML
+ source "drivers/mtd/maps/Kconfig"
+endif
source "drivers/mtd/devices/Kconfig"
-source "drivers/mtd/nand/Kconfig"
-
-source "drivers/mtd/onenand/Kconfig"
+if !UML
+ source "drivers/mtd/nand/Kconfig"
+ source "drivers/mtd/onenand/Kconfig"
+endif
source "drivers/mtd/ubi/Kconfig"
Index: linux-2.6.23.1-uml/drivers/mtd/chips/Kconfig
===================================================================
--- linux-2.6.23.1-uml.orig/drivers/mtd/chips/Kconfig
+++ linux-2.6.23.1-uml/drivers/mtd/chips/Kconfig
@@ -3,8 +3,13 @@
menu "RAM/ROM/Flash chip drivers"
depends on MTD!=n
+config MTD_CHIPREG
+ bool
+ depends on !UML
+
config MTD_CFI
tristate "Detect flash chips by Common Flash Interface (CFI) probe"
+ depends on !UML
select MTD_GEN_PROBE
help
The Common Flash Interface specification was developed by Intel,
@@ -16,6 +21,7 @@
config MTD_JEDECPROBE
tristate "Detect non-CFI AMD/JEDEC-compatible flash chips"
+ depends on !UML
select MTD_GEN_PROBE
help
This option enables JEDEC-style probing of flash chips which are not
@@ -178,7 +184,7 @@
config MTD_CFI_INTELEXT
tristate "Support for Intel/Sharp flash chips"
- depends on MTD_GEN_PROBE
+ depends on MTD_GEN_PROBE && !UML
select MTD_CFI_UTIL
help
The Common Flash Interface defines a number of different command
@@ -188,7 +194,7 @@
config MTD_CFI_AMDSTD
tristate "Support for AMD/Fujitsu flash chips"
- depends on MTD_GEN_PROBE
+ depends on MTD_GEN_PROBE && !UML
select MTD_CFI_UTIL
help
The Common Flash Interface defines a number of different command
@@ -198,7 +204,7 @@
config MTD_CFI_STAA
tristate "Support for ST (Advanced Architecture) flash chips"
- depends on MTD_GEN_PROBE
+ depends on MTD_GEN_PROBE && !UML
select MTD_CFI_UTIL
help
The Common Flash Interface defines a number of different command
@@ -210,18 +216,21 @@
config MTD_RAM
tristate "Support for RAM chips in bus mapping"
+ depends on !UML
help
This option enables basic support for RAM chips accessed through
a bus mapping driver.
config MTD_ROM
tristate "Support for ROM chips in bus mapping"
+ depends on !UML
help
This option enables basic support for ROM chips accessed through
a bus mapping driver.
config MTD_ABSENT
tristate "Support for absent chips in bus mapping"
+ depends on !UML
help
This option enables support for a dummy probing driver used to
allocated placeholder MTD devices on systems that have socketed
Index: linux-2.6.23.1-uml/drivers/mtd/chips/Makefile
===================================================================
--- linux-2.6.23.1-uml.orig/drivers/mtd/chips/Makefile
+++ linux-2.6.23.1-uml/drivers/mtd/chips/Makefile
@@ -2,7 +2,7 @@
# linux/drivers/chips/Makefile
#
-obj-$(CONFIG_MTD) += chipreg.o
+obj-$(CONFIG_MTD_CHIPREG) += chipreg.o
obj-$(CONFIG_MTD_CFI) += cfi_probe.o
obj-$(CONFIG_MTD_CFI_UTIL) += cfi_util.o
obj-$(CONFIG_MTD_CFI_STAA) += cfi_cmdset_0020.o
More information about the linux-mtd
mailing list