kernel: copy kernel 4.19 code to 5.4
No changes were done to the patches while coping them. Currently they do not apply on top of kernel 5.4. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
		 Hauke Mehrtens
					Hauke Mehrtens
				
			
				
					committed by
					
						 Koen Vandeputte
						Koen Vandeputte
					
				
			
			
				
	
			
			
			 Koen Vandeputte
						Koen Vandeputte
					
				
			
						parent
						
							955634b473
						
					
				
				
					commit
					c16517d26d
				
			| @@ -0,0 +1,107 @@ | ||||
| From: Felix Fietkau <nbd@nbd.name> | ||||
| Subject: make rootfs split/detection more generic - patch can be moved to generic-2.6 after testing on other platforms | ||||
|  | ||||
| lede-commit: 328e660b31f0937d52c5ae3d6e7029409918a9df | ||||
| Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
| --- | ||||
|  drivers/mtd/Kconfig            | 17 +++++++++++++++++ | ||||
|  drivers/mtd/mtdpart.c          | 35 +++++++++++++++++++++++++++++++++++ | ||||
|  include/linux/mtd/partitions.h |  2 ++ | ||||
|  3 files changed, 54 insertions(+) | ||||
|  | ||||
| --- a/drivers/mtd/Kconfig | ||||
| +++ b/drivers/mtd/Kconfig | ||||
| @@ -11,6 +11,23 @@ menuconfig MTD | ||||
|   | ||||
|  if MTD | ||||
|   | ||||
| +menu "OpenWrt specific MTD options" | ||||
| + | ||||
| +config MTD_ROOTFS_ROOT_DEV | ||||
| +	bool "Automatically set 'rootfs' partition to be root filesystem" | ||||
| +	default y | ||||
| + | ||||
| +config MTD_SPLIT_FIRMWARE | ||||
| +	bool "Automatically split firmware partition for kernel+rootfs" | ||||
| +	default y | ||||
| + | ||||
| +config MTD_SPLIT_FIRMWARE_NAME | ||||
| +	string "Firmware partition name" | ||||
| +	depends on MTD_SPLIT_FIRMWARE | ||||
| +	default "firmware" | ||||
| + | ||||
| +endmenu | ||||
| + | ||||
|  config MTD_TESTS | ||||
|  	tristate "MTD tests support (DANGEROUS)" | ||||
|  	depends on m | ||||
| --- a/drivers/mtd/mtdpart.c | ||||
| +++ b/drivers/mtd/mtdpart.c | ||||
| @@ -29,10 +29,12 @@ | ||||
|  #include <linux/kmod.h> | ||||
|  #include <linux/mtd/mtd.h> | ||||
|  #include <linux/mtd/partitions.h> | ||||
| +#include <linux/magic.h> | ||||
|  #include <linux/err.h> | ||||
|  #include <linux/of.h> | ||||
|   | ||||
|  #include "mtdcore.h" | ||||
| +#include "mtdsplit/mtdsplit.h" | ||||
|   | ||||
|  /* Our partition linked list */ | ||||
|  static LIST_HEAD(mtd_partitions); | ||||
| @@ -52,6 +54,8 @@ struct mtd_part { | ||||
|  	struct list_head list; | ||||
|  }; | ||||
|   | ||||
| +static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part); | ||||
| + | ||||
|  /* | ||||
|   * Given a pointer to the MTD object in the mtd_part structure, we can retrieve | ||||
|   * the pointer to that structure. | ||||
| @@ -626,6 +630,7 @@ int mtd_add_partition(struct mtd_info *p | ||||
|  	if (ret) | ||||
|  		goto err_remove_part; | ||||
|   | ||||
| +	mtd_partition_split(parent, new); | ||||
|  	mtd_add_partition_attrs(new); | ||||
|   | ||||
|  	return 0; | ||||
| @@ -712,6 +717,29 @@ int mtd_del_partition(struct mtd_info *m | ||||
|  } | ||||
|  EXPORT_SYMBOL_GPL(mtd_del_partition); | ||||
|   | ||||
| +#ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME | ||||
| +#define SPLIT_FIRMWARE_NAME	CONFIG_MTD_SPLIT_FIRMWARE_NAME | ||||
| +#else | ||||
| +#define SPLIT_FIRMWARE_NAME	"unused" | ||||
| +#endif | ||||
| + | ||||
| +static void split_firmware(struct mtd_info *master, struct mtd_part *part) | ||||
| +{ | ||||
| +} | ||||
| + | ||||
| +static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part) | ||||
| +{ | ||||
| +	static int rootfs_found = 0; | ||||
| + | ||||
| +	if (rootfs_found) | ||||
| +		return; | ||||
| + | ||||
| +	if (IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE) && | ||||
| +	    !strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) && | ||||
| +	    !of_find_property(mtd_get_of_node(&part->mtd), "compatible", NULL)) | ||||
| +		split_firmware(master, part); | ||||
| +} | ||||
| + | ||||
|  /* | ||||
|   * This function, given a master MTD object and a partition table, creates | ||||
|   * and registers slave MTD objects which are bound to the master according to | ||||
| @@ -752,6 +780,7 @@ int add_mtd_partitions(struct mtd_info * | ||||
|  			goto err_del_partitions; | ||||
|  		} | ||||
|   | ||||
| +		mtd_partition_split(master, slave); | ||||
|  		mtd_add_partition_attrs(slave); | ||||
|  		/* Look for subpartitions */ | ||||
|  		parse_mtd_partitions(&slave->mtd, parts[i].types, NULL); | ||||
		Reference in New Issue
	
	Block a user