forked from Minki/linux
bc0d0d093b
If there are no persistent memory ranges present then don't bother creating the platform device. Otherwise, it loads the full libnvdimm sub-system only to discover no resources present. Reported-by: Andy Lutomirski <luto@amacapital.net> Acked-by: Andy Lutomirski <luto@amacapital.net> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
32 lines
715 B
C
32 lines
715 B
C
/*
|
|
* Copyright (c) 2015, Christoph Hellwig.
|
|
* Copyright (c) 2015, Intel Corporation.
|
|
*/
|
|
#include <linux/platform_device.h>
|
|
#include <linux/module.h>
|
|
#include <linux/ioport.h>
|
|
|
|
static int found(u64 start, u64 end, void *data)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
static __init int register_e820_pmem(void)
|
|
{
|
|
char *pmem = "Persistent Memory (legacy)";
|
|
struct platform_device *pdev;
|
|
int rc;
|
|
|
|
rc = walk_iomem_res(pmem, IORESOURCE_MEM, 0, -1, NULL, found);
|
|
if (rc <= 0)
|
|
return 0;
|
|
|
|
/*
|
|
* See drivers/nvdimm/e820.c for the implementation, this is
|
|
* simply here to trigger the module to load on demand.
|
|
*/
|
|
pdev = platform_device_alloc("e820_pmem", -1);
|
|
return platform_device_add(pdev);
|
|
}
|
|
device_initcall(register_e820_pmem);
|