• Yasuaki Ishimatsu's avatar
    memory-hotplug: remove /sys/firmware/memmap/X sysfs · 46c66c4b
    Yasuaki Ishimatsu authored
    When (hot)adding memory into system, /sys/firmware/memmap/X/{end, start,
    type} sysfs files are created.  But there is no code to remove these
    files.  This patch implements the function to remove them.
    
    We cannot free firmware_map_entry which is allocated by bootmem because
    there is no way to do so when the system is up.  But we can at least
    remember the address of that memory and reuse the storage when the
    memory is added next time.
    
    This patch also introduces a new list map_entries_bootmem to link the
    map entries allocated by bootmem when they are removed, and a lock to
    protect it.  And these entries will be reused when the memory is
    hot-added again.
    
    The idea is suggestted by Andrew Morton.
    
    NOTE: It is unsafe to return an entry pointer and release the
          map_entries_lock.  So we should not hold the map_entries_lock
          separately in firmware_map_find_entry() and
          firmware_map_remove_entry().  Hold the map_entries_lock across find
          and remove /sys/firmware/memmap/X operation.
    
           And also, users of these two functions need to be careful to
          hold the lock when using these two functions.
    
    [tangchen@cn.fujitsu.com: Hold spinlock across find|remove /sys operation]
    [tangchen@cn.fujitsu.com: fix the wrong comments of map_entries]
    [tangchen@cn.fujitsu.com: reuse the storage of /sys/firmware/memmap/X/ allocated by bootmem]
    [tangchen@cn.fujitsu.com: fix section mismatch problem]
    [tangchen@cn.fujitsu.com: fix the doc format in drivers/firmware/memmap.c]
    Signed-off-by: default avatarWen Congyang <wency@cn.fujitsu.com>
    Signed-off-by: default avatarYasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Signed-off-by: default avatarTang Chen <tangchen@cn.fujitsu.com>
    Reviewed-by: default avatarKamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Jiang Liu <jiang.liu@huawei.com>
    Cc: Jianguo Wu <wujianguo@huawei.com>
    Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
    Cc: Tang Chen <tangchen@cn.fujitsu.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Julian Calaby <julian.calaby@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    46c66c4b
firmware-map.h 1.32 KB