mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
mtd: spi-nor: debugfs: Add a locked sectors map
In order to get a very clear view of the sectors being locked, besides the `params` output giving the ranges, we may want to see a proper map of the sectors and for each of them, their status. Depending on the use case, this map may be easier to parse by humans and gives a more acurate feeling of the situation. At least myself, for the few locking-related developments I recently went through, I found it very useful to get a clearer mental model of what was locked/unlocked. Here is an example of output: $ cat /sys/kernel/debug/spi-nor/spi0.0/locked-sectors-map Locked sectors map (x: locked, .: unlocked, unit: 64kiB) 0x00000000 (# 0): ................ ................ ................ ................ 0x00400000 (# 64): ................ ................ ................ ................ 0x00800000 (# 128): ................ ................ ................ ................ 0x00c00000 (# 192): ................ ................ ................ ................ 0x01000000 (# 256): ................ ................ ................ ................ 0x01400000 (# 320): ................ ................ ................ ................ 0x01800000 (# 384): ................ ................ ................ ................ 0x01c00000 (# 448): ................ ................ ................ ................ 0x02000000 (# 512): ................ ................ ................ ................ 0x02400000 (# 576): ................ ................ ................ ................ 0x02800000 (# 640): ................ ................ ................ ................ 0x02c00000 (# 704): ................ ................ ................ ................ 0x03000000 (# 768): ................ ................ ................ ................ 0x03400000 (# 832): ................ ................ ................ ................ 0x03800000 (# 896): ................ ................ ................ ................ 0x03c00000 (# 960): ................ ................ ................ ..............xx The output is wrapped at 64 sectors, spaces every 16 sectors are improving the readability, every line starts by the first sector offset (hex) and number (decimal). Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> [pratyush@kernel.org: split the debugfs_create_file() into two lines] Signed-off-by: Pratyush Yadav <pratyush@kernel.org>
This commit is contained in:
parent
47eb01f46e
commit
f05f0d62c5
|
|
@ -191,6 +191,41 @@ static int spi_nor_params_show(struct seq_file *s, void *data)
|
|||
}
|
||||
DEFINE_SHOW_ATTRIBUTE(spi_nor_params);
|
||||
|
||||
static int spi_nor_locked_sectors_map_show(struct seq_file *s, void *data)
|
||||
{
|
||||
struct spi_nor *nor = s->private;
|
||||
struct spi_nor_flash_parameter *params = nor->params;
|
||||
u64 min_prot_len = spi_nor_get_min_prot_length_sr(nor);
|
||||
unsigned int sector = 0;
|
||||
u64 offset = 0;
|
||||
bool locked;
|
||||
int i;
|
||||
|
||||
seq_printf(s, "Locked sectors map (x: locked, .: unlocked, unit: %lldkiB)\n",
|
||||
min_prot_len / 1024);
|
||||
while (offset < params->size) {
|
||||
seq_printf(s, " 0x%08llx (#%5d): ", offset, sector);
|
||||
for (i = 0; i < 64 && offset < params->size; i++) {
|
||||
locked = spi_nor_is_locked_sr(nor, offset, min_prot_len,
|
||||
nor->dfs_sr_cache);
|
||||
if (locked)
|
||||
seq_puts(s, "x");
|
||||
else
|
||||
seq_puts(s, ".");
|
||||
|
||||
if (((i + 1) % 16) == 0)
|
||||
seq_puts(s, " ");
|
||||
|
||||
offset += min_prot_len;
|
||||
sector++;
|
||||
}
|
||||
seq_puts(s, "\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
DEFINE_SHOW_ATTRIBUTE(spi_nor_locked_sectors_map);
|
||||
|
||||
static void spi_nor_print_read_cmd(struct seq_file *s, u32 cap,
|
||||
struct spi_nor_read_command *cmd)
|
||||
{
|
||||
|
|
@ -276,6 +311,9 @@ void spi_nor_debugfs_register(struct spi_nor *nor)
|
|||
debugfs_create_file("params", 0444, d, nor, &spi_nor_params_fops);
|
||||
debugfs_create_file("capabilities", 0444, d, nor,
|
||||
&spi_nor_capabilities_fops);
|
||||
if (spi_nor_has_default_locking_ops(nor))
|
||||
debugfs_create_file("locked-sectors-map", 0444, d, nor,
|
||||
&spi_nor_locked_sectors_map_fops);
|
||||
}
|
||||
|
||||
void spi_nor_debugfs_shutdown(void)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user