Currently we use a percentage property value to determine the amount of
offlinable memory in the system.
However a percentage property doesn't support accurately configuring the
offlinable region sizes on targets with different amounts of DDR.
For example it is not possible to configure the system such that 4GB
targets won't have any offlinable region, 6GB targets will have a 1GB
offlinable region and 8GB targets having a 3GB offlinable region without
creating a separate DT files for each target.
Many customers want to be able to support different DDR sizes without
creating separate DT files for each target.
Replace the mem-percent property with an offline-sizes property which
contains an array of offlinable memory region sizes to apply to targets
based on their DDR size.
Change-Id: I93210beec153ca0179c0087ce98afd4dfc22ea02
Signed-off-by: Liam Mark <lmark@codeaurora.org>
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Update the physical end address of available RAM in calculation
used for randomizing the memory base address base.
Change-Id: Id32260d5c15ec4363ab62755238a10cc4dfaabe8
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
The system RAM region would not be ideally contiguous from
start to end of DRAM. Detect any offset/holes present in the
DDR region and update the memory limit being set, so that the
DRAM end address is aligned to the memory block size. This is
a requirement for mem-offline framework to work properly.
Change-Id: I97cb0cce70e7c414ae2d200a4a3f714d145c0e64
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Add a new sysfs node called allocated_bytes to each memory block which
reports the amount of memory currently allocated from that block.
Userspace can then use the allocated_byes node to better evaluate the
potential cost of offlining an individual block since all the allocated
memory in the block will need to be migrated when the block is offlined.
Change-Id: I520de2dd56e4562a65c48e38edb1236a8cbce5fd
Signed-off-by: Liam Mark <lmark@codeaurora.org>
Signed-off-by: Swathi Sridhar <swatsrid@codeaurora.org>
[isaacm@codeaurora.org: resolve merge conflicts]
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
remove_pagetable() should only be called when CONFIG_MEMORY_HOTPLUG
is enabled to clean up the page table entries created when memory
was hot-added.
Change-Id: I38cf42673a7637dac62d13a3083b0963c8a435b3
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Before killing a process first try to see if there are any offlined
memory blocks, if there are try to online one of them.
Change-Id: Ie97c8b69f0ba173c202a891a38a5c914869ddaae
Signed-off-by: Liam Mark <lmark@codeaurora.org>
[isaacm@codeaurora.org: Update walk_memory_range to walk_memory_blocks]
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Currently On arm64, memory section size is hard-coded to 1G.
Make this configurable if memory-hotplug is enabled, to support
more finer granularity for hotplug-able memory.
Change-Id: Id889f93537df8ae7e72094b552cff735d31048e6
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
[swatsrid@codeaurora.org: Fix merge conflicts]
Signed-off-by: Swathi Sridhar <swatsrid@codeaurora.org>
[isaacm@codeaurora.org: Remove unnecessary config dependency]
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
When onlining memory blocks, this option helps to add the target
memory block to ZONE_MOVABLE zone type. For successful offlining,
these memory blocks should belong to 'ZONE_MOVABLE' since it carries
only movable pages. When this option is not set, the default zone
policy is to add the blocks to 'ZONE_NORMAL' which may pin pages.
Change-Id: I7f38a07d3c6817141ec8cce3a910fa7d7d91712d
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
[isaacm@codeaurora.org: Use IS_ENABLED() for checking configs]
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
To guarantee successful hot-plugging of memory blocks, these blocks
should belong to ZONE_MOVABLE which has migratable pages. Linux kernel
during boot initializes all the available memory blocks to ZONE_DMA and
ZONE_NORMAL. Hence, boot the system with less memory whose percentage
is given by mem-offline DT property 'mem-percent' and override any memory
limit imposed by kernel boot params and let mem-offline driver initialize
the remaining with ZONE_MOVABLE. The memory blocks in this zone are
applicable for memory offlining.
Change-Id: Ia7b804522fe9425101ee83d1ee354ed09483df13
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
[swatsrid@codeaurora.org: Fix merge conflicts]
Signed-off-by: Swathi Sridhar <swatsrid@codeaurora.org>
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
This is a snapshot of the mem-offline driver as of msm-4.19
commit ef9b421ba16b ("sched: walt: Improve the scheduler").
Change-Id: I81be12ce85033d5d5ab6be8b10aa76a2685d5720
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Add configuration changes in lahaina to support tsens driver.
Change-Id: Ib6f6a1684bb62355741e826419e179b159cb3d31
Signed-off-by: Ajay Prathi <aprathi@codeaurora.org>
Add new slave driver to support NFC over I3C interface.
I2C driver is a refactored driver. The base for this is
'commit dea45e3d54b5 ("NFC: Add support for eSE cold reset")'.
Change-Id: I58eaee72bd2bc07e855acd294b9659038e2357f3
Signed-off-by: Karthik Poosa <kpoosa2@codeaurora.org>
Enable CPUFREQ-HW for enabling cpu frequency scaling.
Change-Id: Ieb299b5e253070b6c5ff18c65547f9ead429cb37
Signed-off-by: Naveen Yadav <naveenky@codeaurora.org>