forked from openwrt/openwrt
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
generic: 6.6: update block nvmem patchset
While discussions are still ongoing, update the block NVMEM provider patchset to the level submitted upstream to allow testing and validation. Link: https://patchwork.kernel.org/project/linux-block/list/?series=875202 Signed-off-by: Daniel Golle <[email protected]>
- Loading branch information
Showing
4 changed files
with
151 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,42 @@ | ||
From 7f4c9c534aabe1315669e076d3fe0af0fd374cda Mon Sep 17 00:00:00 2001 | ||
From patchwork Tue Jul 30 19:25:59 2024 | ||
Content-Type: text/plain; charset="utf-8" | ||
MIME-Version: 1.0 | ||
Content-Transfer-Encoding: 7bit | ||
X-Patchwork-Submitter: Daniel Golle <[email protected]> | ||
X-Patchwork-Id: 13747816 | ||
Date: Tue, 30 Jul 2024 20:25:59 +0100 | ||
From: Daniel Golle <[email protected]> | ||
Date: Thu, 30 May 2024 03:13:19 +0100 | ||
Subject: [PATCH 2/9] block: partitions: populate fwnode | ||
To: Rob Herring <[email protected]>, Krzysztof Kozlowski <[email protected]>, | ||
Conor Dooley <[email protected]>, Jens Axboe <[email protected]>, | ||
Daniel Golle <[email protected]>, Christian Brauner <[email protected]>, | ||
Al Viro <[email protected]>, Li Lingfeng <[email protected]>, | ||
Ming Lei <[email protected]>, Christian Heusel <[email protected]>, | ||
=?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= <[email protected]>, | ||
Felix Fietkau <[email protected]>, John Crispin <[email protected]>, | ||
Chad Monroe <[email protected]>, Yangyu Chen <[email protected]>, | ||
Tianling Shen <[email protected]>, Chuanhong Guo <[email protected]>, | ||
Chen Minqiang <[email protected]>, [email protected], | ||
[email protected], [email protected] | ||
Subject: [PATCH v5 2/4] block: partitions: populate fwnode | ||
Message-ID: | ||
<3051ac090ad3b3e2f5adb6b67c923261ead729a5.1722365899.git.daniel@makrotopia.org> | ||
References: <[email protected]> | ||
Precedence: bulk | ||
X-Mailing-List: [email protected] | ||
List-Id: <linux-block.vger.kernel.org> | ||
List-Subscribe: <mailto:[email protected]> | ||
List-Unsubscribe: <mailto:[email protected]> | ||
MIME-Version: 1.0 | ||
Content-Disposition: inline | ||
In-Reply-To: <[email protected]> | ||
|
||
Let block partitions to be represented by a firmware node and hence | ||
allow them to being referenced e.g. for use with blk-nvmem. | ||
Assign matching firmware nodes to block partitions in order to allow | ||
them to be referenced e.g. as NVMEM providers. | ||
|
||
Signed-off-by: Daniel Golle <[email protected]> | ||
--- | ||
block/partitions/core.c | 41 +++++++++++++++++++++++++++++++++++++++++ | ||
1 file changed, 41 insertions(+) | ||
block/partitions/core.c | 72 +++++++++++++++++++++++++++++++++++++++++ | ||
1 file changed, 72 insertions(+) | ||
|
||
--- a/block/partitions/core.c | ||
+++ b/block/partitions/core.c | ||
|
@@ -22,36 +49,70 @@ Signed-off-by: Daniel Golle <[email protected]> | |
#include "check.h" | ||
|
||
static int (*const check_part[])(struct parsed_partitions *) = { | ||
@@ -292,6 +294,40 @@ static ssize_t whole_disk_show(struct de | ||
@@ -292,6 +294,74 @@ static ssize_t whole_disk_show(struct de | ||
} | ||
static const DEVICE_ATTR(whole_disk, 0444, whole_disk_show, NULL); | ||
|
||
+static bool part_meta_match(const char *attr, const char *member, size_t length) | ||
+{ | ||
+ /* check if length of attr exceeds specified maximum length */ | ||
+ if (strnlen(attr, length) == length) | ||
+ return false; | ||
+ | ||
+ /* return true if strings match */ | ||
+ return !strncmp(attr, member, length); | ||
+} | ||
+ | ||
+static struct fwnode_handle *find_partition_fwnode(struct block_device *bdev) | ||
+{ | ||
+ struct fwnode_handle *fw_parts, *fw_part; | ||
+ struct device *ddev = disk_to_dev(bdev->bd_disk); | ||
+ const char *partname, *uuid; | ||
+ u32 partno; | ||
+ bool got_uuid, got_partname, got_partno; | ||
+ | ||
+ fw_parts = device_get_named_child_node(ddev, "partitions"); | ||
+ if (!fw_parts) | ||
+ return NULL; | ||
+ | ||
+ fwnode_for_each_child_node(fw_parts, fw_part) { | ||
+ if (!fwnode_property_read_string(fw_part, "uuid", &uuid) && | ||
+ (!bdev->bd_meta_info || strncmp(uuid, | ||
+ bdev->bd_meta_info->uuid, | ||
+ PARTITION_META_INFO_UUIDLTH))) | ||
+ got_uuid = false; | ||
+ got_partname = false; | ||
+ got_partno = false; | ||
+ /* | ||
+ * In case 'uuid' is defined in the partitions firmware node | ||
+ * require partition meta info being present and the specified | ||
+ * uuid to match. | ||
+ */ | ||
+ got_uuid = !fwnode_property_read_string(fw_part, "uuid", &uuid); | ||
+ if (got_uuid && (!bdev->bd_meta_info || | ||
+ !part_meta_match(uuid, bdev->bd_meta_info->uuid, | ||
+ PARTITION_META_INFO_UUIDLTH))) | ||
+ continue; | ||
+ | ||
+ /* | ||
+ * In case 'partname' is defined in the partitions firmware node | ||
+ * require partition meta info being present and the specified | ||
+ * volname to match. | ||
+ */ | ||
+ got_partname = !fwnode_property_read_string(fw_part, "partname", | ||
+ &partname); | ||
+ if (got_partname && (!bdev->bd_meta_info || | ||
+ !part_meta_match(partname, | ||
+ bdev->bd_meta_info->volname, | ||
+ PARTITION_META_INFO_VOLNAMELTH))) | ||
+ continue; | ||
+ | ||
+ if (!fwnode_property_read_string(fw_part, "partname", &partname) && | ||
+ (!bdev->bd_meta_info || strncmp(partname, | ||
+ bdev->bd_meta_info->volname, | ||
+ PARTITION_META_INFO_VOLNAMELTH))) | ||
+ /* | ||
+ * In case 'partno' is defined in the partitions firmware node | ||
+ * the specified partno needs to match. | ||
+ */ | ||
+ got_partno = !fwnode_property_read_u32(fw_part, "partno", &partno); | ||
+ if (got_partno && bdev->bd_partno != partno) | ||
+ continue; | ||
+ | ||
+ if (!fwnode_property_read_u32(fw_part, "partno", &partno) && | ||
+ bdev->bd_partno != partno) | ||
+ /* Skip if no matching criteria is present in firmware node */ | ||
+ if (!got_uuid && !got_partname && !got_partno) | ||
+ continue; | ||
+ | ||
+ return fw_part; | ||
|
@@ -63,7 +124,7 @@ Signed-off-by: Daniel Golle <[email protected]> | |
/* | ||
* Must be called either with open_mutex held, before a disk can be opened or | ||
* after all disk users are gone. | ||
@@ -374,6 +410,8 @@ static struct block_device *add_partitio | ||
@@ -374,6 +444,8 @@ static struct block_device *add_partitio | ||
goto out_put; | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,34 @@ | ||
From e07ace307ce598847074a096f408bec0e3a392ed Mon Sep 17 00:00:00 2001 | ||
From patchwork Tue Jul 30 19:26:42 2024 | ||
Content-Type: text/plain; charset="utf-8" | ||
MIME-Version: 1.0 | ||
Content-Transfer-Encoding: 7bit | ||
X-Patchwork-Submitter: Daniel Golle <[email protected]> | ||
X-Patchwork-Id: 13747817 | ||
Date: Tue, 30 Jul 2024 20:26:42 +0100 | ||
From: Daniel Golle <[email protected]> | ||
Date: Thu, 30 May 2024 03:14:34 +0100 | ||
Subject: [PATCH 3/9] block: add support for notifications | ||
To: Rob Herring <[email protected]>, Krzysztof Kozlowski <[email protected]>, | ||
Conor Dooley <[email protected]>, Jens Axboe <[email protected]>, | ||
Daniel Golle <[email protected]>, Christian Brauner <[email protected]>, | ||
Al Viro <[email protected]>, Li Lingfeng <[email protected]>, | ||
Ming Lei <[email protected]>, Christian Heusel <[email protected]>, | ||
=?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= <[email protected]>, | ||
Felix Fietkau <[email protected]>, John Crispin <[email protected]>, | ||
Chad Monroe <[email protected]>, Yangyu Chen <[email protected]>, | ||
Tianling Shen <[email protected]>, Chuanhong Guo <[email protected]>, | ||
Chen Minqiang <[email protected]>, [email protected], | ||
[email protected], [email protected] | ||
Subject: [PATCH v5 3/4] block: add support for notifications | ||
Message-ID: | ||
<ca0022886e8f211a323a716653a1396a3bc91653.1722365899.git.daniel@makrotopia.org> | ||
References: <[email protected]> | ||
Precedence: bulk | ||
X-Mailing-List: [email protected] | ||
List-Id: <linux-block.vger.kernel.org> | ||
List-Subscribe: <mailto:[email protected]> | ||
List-Unsubscribe: <mailto:[email protected]> | ||
MIME-Version: 1.0 | ||
Content-Disposition: inline | ||
In-Reply-To: <[email protected]> | ||
|
||
Add notifier block to notify other subsystems about the addition or | ||
removal of block devices. | ||
|
@@ -10,9 +37,9 @@ Signed-off-by: Daniel Golle <[email protected]> | |
--- | ||
block/Kconfig | 6 +++ | ||
block/Makefile | 1 + | ||
block/blk-notify.c | 88 ++++++++++++++++++++++++++++++++++++++++++ | ||
include/linux/blkdev.h | 8 ++++ | ||
4 files changed, 103 insertions(+) | ||
block/blk-notify.c | 87 ++++++++++++++++++++++++++++++++++++++++++ | ||
include/linux/blkdev.h | 11 ++++++ | ||
4 files changed, 105 insertions(+) | ||
create mode 100644 block/blk-notify.c | ||
|
||
--- a/block/Kconfig | ||
|
@@ -39,7 +66,7 @@ Signed-off-by: Daniel Golle <[email protected]> | |
+obj-$(CONFIG_BLOCK_NOTIFIERS) += blk-notify.o | ||
--- /dev/null | ||
+++ b/block/blk-notify.c | ||
@@ -0,0 +1,88 @@ | ||
@@ -0,0 +1,87 @@ | ||
+// SPDX-License-Identifier: GPL-2.0-or-later | ||
+/* | ||
+ * Notifiers for addition and removal of block devices | ||
|
@@ -97,7 +124,6 @@ Signed-off-by: Daniel Golle <[email protected]> | |
+ list_add_tail(&new_blkdev->list, &blk_devices); | ||
+ raw_notifier_call_chain(&blk_notifier_list, BLK_DEVICE_ADD, dev); | ||
+ mutex_unlock(&blk_notifier_lock); | ||
+ | ||
+ return 0; | ||
+} | ||
+ | ||
|
@@ -130,16 +156,19 @@ Signed-off-by: Daniel Golle <[email protected]> | |
+device_initcall(blk_notifications_init); | ||
--- a/include/linux/blkdev.h | ||
+++ b/include/linux/blkdev.h | ||
@@ -1564,4 +1564,12 @@ struct io_comp_batch { | ||
@@ -1564,4 +1564,15 @@ struct io_comp_batch { | ||
|
||
#define DEFINE_IO_COMP_BATCH(name) struct io_comp_batch name = { } | ||
|
||
+ | ||
+#ifdef CONFIG_BLOCK_NOTIFIERS | ||
+#define BLK_DEVICE_ADD 1 | ||
+#define BLK_DEVICE_REMOVE 2 | ||
+#if defined(CONFIG_BLOCK_NOTIFIERS) | ||
+void blk_register_notify(struct notifier_block *nb); | ||
+void blk_unregister_notify(struct notifier_block *nb); | ||
+#else | ||
+static inline void blk_register_notify(struct notifier_block *nb) { }; | ||
+static inline void blk_unregister_notify(struct notifier_block *nb) { }; | ||
+#endif | ||
+ | ||
#endif /* _LINUX_BLKDEV_H */ |
33 changes: 30 additions & 3 deletions
33
target/linux/generic/pending-6.6/453-block-add-new-genhd-flag-GENHD_FL_NVMEM.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,34 @@ | ||
From f4487fa1cb7e55b3c17a33f41b9c9d66f4f853b7 Mon Sep 17 00:00:00 2001 | ||
From patchwork Tue Jul 30 19:27:07 2024 | ||
Content-Type: text/plain; charset="utf-8" | ||
MIME-Version: 1.0 | ||
Content-Transfer-Encoding: 7bit | ||
X-Patchwork-Submitter: Daniel Golle <[email protected]> | ||
X-Patchwork-Id: 13747818 | ||
Date: Tue, 30 Jul 2024 20:27:07 +0100 | ||
From: Daniel Golle <[email protected]> | ||
Date: Thu, 30 May 2024 03:14:49 +0100 | ||
Subject: [PATCH 4/9] block: add new genhd flag GENHD_FL_NVMEM | ||
To: Rob Herring <[email protected]>, Krzysztof Kozlowski <[email protected]>, | ||
Conor Dooley <[email protected]>, Jens Axboe <[email protected]>, | ||
Daniel Golle <[email protected]>, Christian Brauner <[email protected]>, | ||
Al Viro <[email protected]>, Li Lingfeng <[email protected]>, | ||
Ming Lei <[email protected]>, Christian Heusel <[email protected]>, | ||
=?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= <[email protected]>, | ||
Felix Fietkau <[email protected]>, John Crispin <[email protected]>, | ||
Chad Monroe <[email protected]>, Yangyu Chen <[email protected]>, | ||
Tianling Shen <[email protected]>, Chuanhong Guo <[email protected]>, | ||
Chen Minqiang <[email protected]>, [email protected], | ||
[email protected], [email protected] | ||
Subject: [PATCH v5 4/4] block: add new genhd flag GENHD_FL_NVMEM | ||
Message-ID: | ||
<311ea569c23ce14e2896cd3b069dc494c58c49c2.1722365899.git.daniel@makrotopia.org> | ||
References: <[email protected]> | ||
Precedence: bulk | ||
X-Mailing-List: [email protected] | ||
List-Id: <linux-block.vger.kernel.org> | ||
List-Subscribe: <mailto:[email protected]> | ||
List-Unsubscribe: <mailto:[email protected]> | ||
MIME-Version: 1.0 | ||
Content-Disposition: inline | ||
In-Reply-To: <[email protected]> | ||
|
||
Add new flag to destinguish block devices which may act as an NVMEM | ||
provider. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters