diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/pstore/ram.c | 15 | ||||
-rw-r--r-- | fs/pstore/ram_core.c | 8 |
2 files changed, 19 insertions, 4 deletions
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index d46612fbff..714755bd66 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c @@ -334,8 +334,16 @@ static int ramoops_init_przs(const char *name, goto fail; for (i = 0; i < *cnt; i++) { + char *label; + + if (*cnt == 1) + label = basprintf("ramoops:%s", name); + else + label = basprintf("ramoops:%s(%d/%d)", + name, i, *cnt - 1); prz_ar[i] = persistent_ram_new(*paddr, zone_sz, sig, - &cxt->ecc_info, cxt->memtype); + &cxt->ecc_info, + cxt->memtype, label); if (IS_ERR(prz_ar[i])) { err = PTR_ERR(prz_ar[i]); pr_err("failed to request %s mem region (0x%zx@0x%llx): %d\n", @@ -365,6 +373,8 @@ static int ramoops_init_prz(const char *name, struct persistent_ram_zone **prz, phys_addr_t *paddr, size_t sz, u32 sig) { + char *label; + if (!sz) return 0; @@ -375,8 +385,9 @@ static int ramoops_init_prz(const char *name, return -ENOMEM; } + label = basprintf("ramoops:%s", name); *prz = persistent_ram_new(*paddr, sz, sig, &cxt->ecc_info, - cxt->memtype); + cxt->memtype, label); if (IS_ERR(*prz)) { int err = PTR_ERR(*prz); diff --git a/fs/pstore/ram_core.c b/fs/pstore/ram_core.c index ed48dcddd5..0f7003f937 100644 --- a/fs/pstore/ram_core.c +++ b/fs/pstore/ram_core.c @@ -346,7 +346,7 @@ void persistent_ram_zap(struct persistent_ram_zone *prz) static int persistent_ram_buffer_map(phys_addr_t start, phys_addr_t size, struct persistent_ram_zone *prz, int memtype) { - prz->res = request_sdram_region("persistent ram", start, size); + prz->res = request_sdram_region(prz->label ?: "ramoops", start, size); if (!prz->res) return -ENOMEM; @@ -409,12 +409,13 @@ void persistent_ram_free(struct persistent_ram_zone *prz) prz->ecc_info.par = NULL; persistent_ram_free_old(prz); + kfree(prz->label); kfree(prz); } struct persistent_ram_zone *persistent_ram_new(phys_addr_t start, size_t size, u32 sig, struct persistent_ram_ecc_info *ecc_info, - unsigned int memtype) + unsigned int memtype, char *label) { struct persistent_ram_zone *prz; int ret = -ENOMEM; @@ -425,6 +426,9 @@ struct persistent_ram_zone *persistent_ram_new(phys_addr_t start, size_t size, goto err; } + /* Initialize general buffer state. */ + prz->label = label; + ret = persistent_ram_buffer_map(start, size, prz, memtype); if (ret) goto err; |