Re: [PATCH] pstore/ram: Clarify resource reservation labels

From: Kees Cook
Date: Thu Oct 18 2018 - 03:14:56 EST


On Wed, Oct 17, 2018 at 5:49 PM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote:
> On Wed, Oct 17, 2018 at 5:29 PM Kees Cook <keescook@xxxxxxxxxxxx> wrote:
>>
>> When ramoops reserved a memory region in the kernel, it had an unhelpful
>> label of "persistent_memory". When reading /proc/iomem, it would be
>> repeated many times, did not hint that it was ramoops in particular,
>> and didn't clarify very much about what each was used for:
>>
>> 400000000-407ffffff : Persistent Memory (legacy)
>> 400000000-400000fff : persistent_memory
>> 400001000-400001fff : persistent_memory
>> ...
>> 4000ff000-4000fffff : persistent_memory
>>
>> Instead, this adds meaningful labels for how the various regions are
>> being used:
>>
>> 400000000-407ffffff : Persistent Memory (legacy)
>> 400000000-400000fff : ramoops:dump(0/252)
>> 400001000-400001fff : ramoops:dump(1/252)
>> ...
>> 4000fc000-4000fcfff : ramoops:dump(252/252)
>> 4000fd000-4000fdfff : ramoops:console
>> 4000fe000-4000fe3ff : ramoops:ftrace(0/3)
>> 4000fe400-4000fe7ff : ramoops:ftrace(1/3)
>> 4000fe800-4000febff : ramoops:ftrace(2/3)
>> 4000fec00-4000fefff : ramoops:ftrace(3/3)
>> 4000ff000-4000fffff : ramoops:pmsg
>
> Hopefully ramoops is doing request_region() before trying to do
> anything with its ranges, because it's going to collide with the pmem
> driver doing a request_region(). If we want to have pstore use pmem as
> a backing store that's a new drivers/nvdimm/ namespace personality
> driver to turn around and register a persistent memory range with
> pstore rather than the pmem block-device driver.

Yup: it's using request_mem_region() (that's where the labels above
are assigned).

As for nvdimm specifically, yes, I'd love to get pstore hooked up
correctly to nvdimm. How do the namespaces work? Right now pstore
depends one of platform driver data, device tree specification, or
manual module parameters.

-Kees

--
Kees Cook
Pixel Security