diff --git a/target/linux/generic/patches-2.6.34/015-devtmpfs_ramfs.patch b/target/linux/generic/patches-2.6.34/015-devtmpfs_ramfs.patch new file mode 100644 index 0000000000..8cea56d3f8 --- /dev/null +++ b/target/linux/generic/patches-2.6.34/015-devtmpfs_ramfs.patch @@ -0,0 +1,76 @@ +From: Peter Korsgaard + +Make devtmpfs available on (embedded) configurations without SHMEM/TMPFS, +using ramfs instead. + +Saves ~15KB. + +Signed-off-by: Peter Korsgaard +Acked-by: Kay Sievers +Signed-off-by: Greg Kroah-Hartman +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -18,9 +18,9 @@ config UEVENT_HELPER_PATH + + config DEVTMPFS + bool "Maintain a devtmpfs filesystem to mount at /dev" +- depends on HOTPLUG && SHMEM && TMPFS ++ depends on HOTPLUG + help +- This creates a tmpfs filesystem instance early at bootup. ++ This creates a tmpfs/ramfs filesystem instance early at bootup. + In this filesystem, the kernel driver core maintains device + nodes with their default names and permissions for all + registered devices with an assigned major/minor number. +@@ -33,6 +33,9 @@ config DEVTMPFS + functional /dev without any further help. It also allows simple + rescue systems, and reliably handles dynamic major/minor numbers. + ++ Notice: if CONFIG_TMPFS isn't enabled, the simpler ramfs ++ file system will be used instead. ++ + config DEVTMPFS_MOUNT + bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs" + depends on DEVTMPFS +--- a/drivers/base/devtmpfs.c ++++ b/drivers/base/devtmpfs.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -45,7 +46,11 @@ __setup("devtmpfs.mount=", mount_param); + static int dev_get_sb(struct file_system_type *fs_type, int flags, + const char *dev_name, void *data, struct vfsmount *mnt) + { ++#ifdef CONFIG_TMPFS + return get_sb_single(fs_type, flags, data, shmem_fill_super, mnt); ++#else ++ return get_sb_single(fs_type, flags, data, ramfs_fill_super, mnt); ++#endif + } + + static struct file_system_type dev_fs_type = { +--- a/fs/ramfs/inode.c ++++ b/fs/ramfs/inode.c +@@ -214,7 +214,7 @@ static int ramfs_parse_options(char *data, struct ramfs_mount_opts *opts) + return 0; + } + +-static int ramfs_fill_super(struct super_block * sb, void * data, int silent) ++int ramfs_fill_super(struct super_block *sb, void *data, int silent) + { + struct ramfs_fs_info *fsi; + struct inode *inode = NULL; +--- a/include/linux/ramfs.h ++++ b/include/linux/ramfs.h +@@ -20,4 +20,6 @@ extern const struct file_operations ramfs_file_operations; + extern const struct vm_operations_struct generic_file_vm_ops; + extern int __init init_rootfs(void); + ++int ramfs_fill_super(struct super_block *sb, void *data, int silent); ++ + #endif