Commit 31bad924 authored by Bernhard Walle's avatar Bernhard Walle Committed by Linus Torvalds

firmware/memmap: cleanup

Various cleanup the drivers/firmware/memmap (after review by AKPM):

    - fix kdoc to conform to the standard
    - move kdoc from header to implementation files
    - remove superfluous WARN_ON() after kmalloc()
    - WARN_ON(x); if (!x) -> if(!WARN_ON(x))
    - improve some comments
Signed-off-by: default avatarBernhard Walle <bwalle@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent bdd87354
...@@ -84,20 +84,23 @@ static struct kobj_type memmap_ktype = { ...@@ -84,20 +84,23 @@ static struct kobj_type memmap_ktype = {
*/ */
/* /*
* Firmware memory map entries * Firmware memory map entries. No locking is needed because the
* firmware_map_add() and firmware_map_add_early() functions are called
* in firmware initialisation code in one single thread of execution.
*/ */
static LIST_HEAD(map_entries); static LIST_HEAD(map_entries);
/** /**
* Common implementation of firmware_map_add() and firmware_map_add_early() * firmware_map_add_entry() - Does the real work to add a firmware memmap entry.
* which expects a pre-allocated struct firmware_map_entry.
*
* @start: Start of the memory range. * @start: Start of the memory range.
* @end: End of the memory range (inclusive). * @end: End of the memory range (inclusive).
* @type: Type of the memory range. * @type: Type of the memory range.
* @entry: Pre-allocated (either kmalloc() or bootmem allocator), uninitialised * @entry: Pre-allocated (either kmalloc() or bootmem allocator), uninitialised
* entry. * entry.
*/ *
* Common implementation of firmware_map_add() and firmware_map_add_early()
* which expects a pre-allocated struct firmware_map_entry.
**/
static int firmware_map_add_entry(resource_size_t start, resource_size_t end, static int firmware_map_add_entry(resource_size_t start, resource_size_t end,
const char *type, const char *type,
struct firmware_map_entry *entry) struct firmware_map_entry *entry)
...@@ -115,33 +118,52 @@ static int firmware_map_add_entry(resource_size_t start, resource_size_t end, ...@@ -115,33 +118,52 @@ static int firmware_map_add_entry(resource_size_t start, resource_size_t end,
return 0; return 0;
} }
/* /**
* See <linux/firmware-map.h> for documentation. * firmware_map_add() - Adds a firmware mapping entry.
*/ * @start: Start of the memory range.
* @end: End of the memory range (inclusive).
* @type: Type of the memory range.
*
* This function uses kmalloc() for memory
* allocation. Use firmware_map_add_early() if you want to use the bootmem
* allocator.
*
* That function must be called before late_initcall.
*
* Returns 0 on success, or -ENOMEM if no memory could be allocated.
**/
int firmware_map_add(resource_size_t start, resource_size_t end, int firmware_map_add(resource_size_t start, resource_size_t end,
const char *type) const char *type)
{ {
struct firmware_map_entry *entry; struct firmware_map_entry *entry;
entry = kmalloc(sizeof(struct firmware_map_entry), GFP_ATOMIC); entry = kmalloc(sizeof(struct firmware_map_entry), GFP_ATOMIC);
WARN_ON(!entry);
if (!entry) if (!entry)
return -ENOMEM; return -ENOMEM;
return firmware_map_add_entry(start, end, type, entry); return firmware_map_add_entry(start, end, type, entry);
} }
/* /**
* See <linux/firmware-map.h> for documentation. * firmware_map_add_early() - Adds a firmware mapping entry.
*/ * @start: Start of the memory range.
* @end: End of the memory range (inclusive).
* @type: Type of the memory range.
*
* Adds a firmware mapping entry. This function uses the bootmem allocator
* for memory allocation. Use firmware_map_add() if you want to use kmalloc().
*
* That function must be called before late_initcall.
*
* Returns 0 on success, or -ENOMEM if no memory could be allocated.
**/
int __init firmware_map_add_early(resource_size_t start, resource_size_t end, int __init firmware_map_add_early(resource_size_t start, resource_size_t end,
const char *type) const char *type)
{ {
struct firmware_map_entry *entry; struct firmware_map_entry *entry;
entry = alloc_bootmem_low(sizeof(struct firmware_map_entry)); entry = alloc_bootmem_low(sizeof(struct firmware_map_entry));
WARN_ON(!entry); if (WARN_ON(!entry))
if (!entry)
return -ENOMEM; return -ENOMEM;
return firmware_map_add_entry(start, end, type, entry); return firmware_map_add_entry(start, end, type, entry);
...@@ -183,7 +205,10 @@ static ssize_t memmap_attr_show(struct kobject *kobj, ...@@ -183,7 +205,10 @@ static ssize_t memmap_attr_show(struct kobject *kobj,
/* /*
* Initialises stuff and adds the entries in the map_entries list to * Initialises stuff and adds the entries in the map_entries list to
* sysfs. Important is that firmware_map_add() and firmware_map_add_early() * sysfs. Important is that firmware_map_add() and firmware_map_add_early()
* must be called before late_initcall. * must be called before late_initcall. That's just because that function
* is called as late_initcall() function, which means that if you call
* firmware_map_add() or firmware_map_add_early() afterwards, the entries
* are not added to sysfs.
*/ */
static int __init memmap_init(void) static int __init memmap_init(void)
{ {
...@@ -192,13 +217,13 @@ static int __init memmap_init(void) ...@@ -192,13 +217,13 @@ static int __init memmap_init(void)
struct kset *memmap_kset; struct kset *memmap_kset;
memmap_kset = kset_create_and_add("memmap", NULL, firmware_kobj); memmap_kset = kset_create_and_add("memmap", NULL, firmware_kobj);
WARN_ON(!memmap_kset); if (WARN_ON(!memmap_kset))
if (!memmap_kset)
return -ENOMEM; return -ENOMEM;
list_for_each_entry(entry, &map_entries, list) { list_for_each_entry(entry, &map_entries, list) {
entry->kobj.kset = memmap_kset; entry->kobj.kset = memmap_kset;
kobject_add(&entry->kobj, NULL, "%d", i++); if (kobject_add(&entry->kobj, NULL, "%d", i++))
kobject_put(&entry->kobj);
} }
return 0; return 0;
......
...@@ -24,34 +24,8 @@ ...@@ -24,34 +24,8 @@
*/ */
#ifdef CONFIG_FIRMWARE_MEMMAP #ifdef CONFIG_FIRMWARE_MEMMAP
/**
* Adds a firmware mapping entry. This function uses kmalloc() for memory
* allocation. Use firmware_map_add_early() if you want to use the bootmem
* allocator.
*
* That function must be called before late_initcall.
*
* @start: Start of the memory range.
* @end: End of the memory range (inclusive).
* @type: Type of the memory range.
*
* Returns 0 on success, or -ENOMEM if no memory could be allocated.
*/
int firmware_map_add(resource_size_t start, resource_size_t end, int firmware_map_add(resource_size_t start, resource_size_t end,
const char *type); const char *type);
/**
* Adds a firmware mapping entry. This function uses the bootmem allocator
* for memory allocation. Use firmware_map_add() if you want to use kmalloc().
*
* That function must be called before late_initcall.
*
* @start: Start of the memory range.
* @end: End of the memory range (inclusive).
* @type: Type of the memory range.
*
* Returns 0 on success, or -ENOMEM if no memory could be allocated.
*/
int firmware_map_add_early(resource_size_t start, resource_size_t end, int firmware_map_add_early(resource_size_t start, resource_size_t end,
const char *type); const char *type);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment