Commit 0c2c99b1 authored by Nathan Fontenot's avatar Nathan Fontenot Committed by Greg Kroah-Hartman

memory hotplug: Allow memory blocks to span multiple memory sections

Update the memory sysfs code such that each sysfs memory directory is now
considered a memory block that can span multiple memory sections per
memory block.  The default size of each memory block is SECTION_SIZE_BITS
to maintain the current behavior of having a single memory section per
memory block (i.e. one sysfs directory per memory section).

For architectures that want to have memory blocks span multiple
memory sections they need only define their own memory_block_size_bytes()
routine.

Update the memory hotplug documentation to reflect the new behaviors of
memory blocks reflected in sysfs.
Signed-off-by: default avatarNathan Fontenot <nfont@austin.ibm.com>
Reviewed-by: default avatarRobin Holt <holt@sgi.com>
Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent e8d9792a
...@@ -126,36 +126,51 @@ config options. ...@@ -126,36 +126,51 @@ config options.
-------------------------------- --------------------------------
4 sysfs files for memory hotplug 4 sysfs files for memory hotplug
-------------------------------- --------------------------------
All sections have their device information under /sys/devices/system/memory as All sections have their device information in sysfs. Each section is part of
a memory block under /sys/devices/system/memory as
/sys/devices/system/memory/memoryXXX /sys/devices/system/memory/memoryXXX
(XXX is section id.) (XXX is the section id.)
Now, XXX is defined as start_address_of_section / section_size. Now, XXX is defined as (start_address_of_section / section_size) of the first
section contained in the memory block. The files 'phys_index' and
'end_phys_index' under each directory report the beginning and end section id's
for the memory block covered by the sysfs directory. It is expected that all
memory sections in this range are present and no memory holes exist in the
range. Currently there is no way to determine if there is a memory hole, but
the existence of one should not affect the hotplug capabilities of the memory
block.
For example, assume 1GiB section size. A device for a memory starting at For example, assume 1GiB section size. A device for a memory starting at
0x100000000 is /sys/device/system/memory/memory4 0x100000000 is /sys/device/system/memory/memory4
(0x100000000 / 1Gib = 4) (0x100000000 / 1Gib = 4)
This device covers address range [0x100000000 ... 0x140000000) This device covers address range [0x100000000 ... 0x140000000)
Under each section, you can see 4 files. Under each section, you can see 4 or 5 files, the end_phys_index file being
a recent addition and not present on older kernels.
/sys/devices/system/memory/memoryXXX/phys_index /sys/devices/system/memory/memoryXXX/start_phys_index
/sys/devices/system/memory/memoryXXX/end_phys_index
/sys/devices/system/memory/memoryXXX/phys_device /sys/devices/system/memory/memoryXXX/phys_device
/sys/devices/system/memory/memoryXXX/state /sys/devices/system/memory/memoryXXX/state
/sys/devices/system/memory/memoryXXX/removable /sys/devices/system/memory/memoryXXX/removable
'phys_index' : read-only and contains section id, same as XXX. 'phys_index' : read-only and contains section id of the first section
'state' : read-write in the memory block, same as XXX.
at read: contains online/offline state of memory. 'end_phys_index' : read-only and contains section id of the last section
at write: user can specify "online", "offline" command in the memory block.
'phys_device': read-only: designed to show the name of physical memory device. 'state' : read-write
This is not well implemented now. at read: contains online/offline state of memory.
'removable' : read-only: contains an integer value indicating at write: user can specify "online", "offline" command
whether the memory section is removable or not which will be performed on al sections in the block.
removable. A value of 1 indicates that the memory 'phys_device' : read-only: designed to show the name of physical memory
section is removable and a value of 0 indicates that device. This is not well implemented now.
it is not removable. 'removable' : read-only: contains an integer value indicating
whether the memory block is removable or not
removable. A value of 1 indicates that the memory
block is removable and a value of 0 indicates that
it is not removable. A memory block is removable only if
every section in the block is removable.
NOTE: NOTE:
These directories/files appear after physical memory hotplug phase. These directories/files appear after physical memory hotplug phase.
......
This diff is collapsed.
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