This is a second and improved version of the patch previously released
in [3].
It builds on the work by Scott Branden [2] and, henceforth,
it needs to be applied on top of Scott's patches [2].
Comments are very welcome.
Changes from the original patchset and known issues:
- Compared to Scott's original patchset, this work adds the mapping of
the new hotplugged pages into the kernel page tables. This is done by
copying the old swapper_pg_dir over a new page, adding the new mappings,
and then switching to the newly built pg_dir (see `hotplug_paging` in
arch/arm64/mmu.c). There might be better ways to to this: suggestions
are more than welcome.
- The stub function for `arch_remove_memory` has been removed for now; we
are working in parallel on memory hot remove, and we plan to contribute
it as a separate patch.
- Corresponding Kconfig flags have been added;
- Note that this patch does not work when NUMA is enabled; in fact,
the function `memory_add_physaddr_to_nid` does not have an
implementation when the NUMA flag is on: this function is supposed to
return the nid the hotplugged memory should be associated with. However
it is not really clear to us yet what the semantics of this function
in the context of a NUMA system should be. A quick and dirty fix would
be to always attach to the first available NUMA node.
- In arch/arm64/mm/init.c `arch_add_memory`, we are doing a hack with the
nomap memory block flags to satisfy preconditions and postconditions of
`__add_pages` and postconditions of `arch_add_memory`. Compared to
memory hotplug implementation for other architectures, the "issue"
seems to be in the implemenation of `pfn_valid`. Suggestions on how
to cleanly avoid this hack are welcome.
This patchset can be tested by starting the kernel with the `mem=X` flag, where
X is less than the total available physical memory and has to be multiple of
MIN_MEMORY_BLOCK_SIZE. We also tested it on a customised version of QEMU
capable to emulate physical hotplug on arm64 platform.
To enable the feature the CONFIG_MEMORY_HOTPLUG compilation flag
needs to be set to true. Then, after memory is physically hotplugged,
the standard two steps to make it available (as also documented in
Documentation/memory-hotplug.txt) are:
(1) Notify memory hot-add
echo '0xYY000000' > /sys/devices/system/memory/probe
where 0xYY000000 is the first physical address of the new memory section.
(2) Online new memory block(s)
echo online > /sys/devices/system/memory/memoryXXX/state
-- or --
echo online_movable > /sys/devices/system/memory/memoryXXX/state
where XXX corresponds to the ids of newly added blocks.
Onlining can optionally be automatic at hot-add notification by enabling
the global flag:
echo online > /sys/devices/system/memory/auto_online_blocks
or by setting the corresponding config flag in the kernel build.
Again, any comment is highly appreciated.
[1] https://lkml.org/lkml/2016/11/17/49
[2] https://lkml.org/lkml/2016/12/1/811
[3] https://lkml.org/lkml/2016/12/14/188
Change-Id: I545807e3121c159aaa2f917ea914ee98f38fb296
Signed-off-by: Maciej Bielski <m.bielski@virtualopensystems.com>
Signed-off-by: Andrea Reale <ar@linux.vnet.ibm.com>
Patch-mainline: linux-kernel @ 11 Apr 2017, 18:25
Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
[arunks@codeaurora.org: fix to pass checker test]
Signed-off-by: Arun KS <arunks@codeaurora.org>
Add memory-hotplug support for ARM64 platform.
This requires addition of
ARCH_ENABLE_MEMORY_HOTPLUG and ARCH_ENABLE_MEMORY_HOTREMOVE config options.
MEMORY_PROBE config option is added to support
/sys/devices/system/memory/probe functionality.
In addition architecture specific arch_add_memory and
arch_remove memory management functions are added.
Change-Id: I1fc4e8c93cfe1b9722b2fc8d811390e6cdfa7995
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Patch-mainline: linux-kernel @ 11 Apr 2017, 18:24
Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
Check the credit update flag has enabled for the pipe
before setting the flag for credit report update request
on the wcn3990 WLAN module.
CRs-Fixed: 2141924
Change-Id: Ic628fa49934c110b7abccefb45a2a354dc462791
Signed-off-by: Sarada Prasanna Garnayak <sgarna@codeaurora.org>
(from https://patchwork.kernel.org/patch/10058587/)
proc->files cleanup is initiated by binder_vma_close. Therefore
a reference on the binder_proc is not enough to prevent the
files_struct from being released while the binder_proc still has
a reference. This can lead to an attempt to dereference the
stale pointer obtained from proc->files prior to proc->files
cleanup. This has been seen once in task_get_unused_fd_flags()
when __alloc_fd() is called with a stale "files".
The fix is to always use get_files_struct() to obtain struct_files
so that the refcount on the files_struct is used to prevent
a premature free. proc->files is removed since we get it every
time.
Bug: 69164715
Change-Id: I6431027d3d569e76913935c21885201505627982
Signed-off-by: Todd Kjos <tkjos@google.com>
Git-commit: 1d6b43334b45144beb0dc8236f9eb3b6cf3b2995
Git-repo: https://android.googlesource.com/kernel/common
Signed-off-by: Kyle Yan <kyan@codeaurora.org>
When doing WLAN SSR tests on Rome PCIe platform, system hang
is observed. After debugging, setting D3hot to PCIe link when
suspending leads to the hang.
Setting D3hot is a new change, which is added for Napier platform.
But this code path shares with legacy Rome platform. In previous
implementations for Rome PCIe platforms, setting D3hot to link
is not needed.
Fix is to set D3hot for Napier specific platforms.
Change-Id: Ia6bcb1b898204c0a8fd63355dd1f0808021182c4
CRs-Fixed: 2145090
Signed-off-by: Jia Ding <jiad@codeaurora.org>
Fix the divider programming of DisplayPort PLL with the correct
value. Without this, display doesn't up fine with certain
resolutions on some sinks when link rate is 5.4 GHz.
Change-Id: I7c5a452a9df757240a1c6c3d371bd46a16f98efd
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
msm8953 uses a new version of csid. Adding new
configuration file and making necessary driver changes.
Change-Id: I5c0ce7f43a4ccd55bd18461bc910e4dcb0c23bb0
Signed-off-by: Shankar Ravi <rshankar@codeaurora.org>
If return is inside the if condition, rc value is returned
only for that case. Hence shifting the return rc statement
outside the if loop, to return the value of rc for all cases.
Change-Id: I2f96cd0d301f580c0e7019746bade4e125661a36
CRs-Fixed: 1076948
Signed-off-by: Samyukta Mogily <smogily@codeaurora.org>
The minium value of u32 is zero instead of -1. -1 will become the
largest value in u32.
Change-Id: I20fcab7d5912d6da7c4afe1ec7a86333767b0bf1
Signed-off-by: Camus Wong <camusw@codeaurora.org>
Parameter mdss_mdp_plane_sizes must be cleared to 0 before returning
under an error condition, otherwise caller function will use the
uninitialized mdss_mdp_plane_sizes values and caused incorrect
operation.
Change-Id: I856b17ce9e917cc450040463ec34b7309d34b9b5
Signed-off-by: Benjamin Chan <bkchan@codeaurora.org>
Add device tree files needed to support MSM8996 based
mizar platform.
Change-Id: Ife6c6659b981b37c6b9d9cbb0a0c106488f1e07f
Signed-off-by: Bharathraj Nagaraju <snbraj@codeaurora.org>
Some userspace modules expect USB driver to send event to userspace, when
usb device enumeration failure with device descriptor read errors.
Add USB_DEVICE_ERROR uevent in the USB driver to explicitly send the ERROR
uevent for such case.
Change-Id: I7128869ff0700ab90d4c949de24cd03c5c90e22e
Signed-off-by: Chandana Kishori Chiluveru <cchiluve@codeaurora.org>
Current path to query field info: SOF ISR -> tasklet -> query thread
with high priority -> ba driver -> adv7481.
Pass field type to user space if they are valid after verification.
Change-Id: Id9926236389200446092dc9abb688ee1f83ab0c3
Signed-off-by: Andy Sun <bins@codeaurora.org>
During reset isp HW, don't set stripe_rd reload bit, otherwise
it might cause iommu page fault, which actually is a fasle alarm.
CRs-Fixed: 2135311
Change-Id: I9be0400640edbf687ecfe08edcfdc1c7f7de25b6
Signed-off-by: Gaoxiang Chen <gaochen@codeaurora.org>
Take the bind lock when we dump information about sparse memory
allocations through the debugfs node.
Change-Id: I955d64d06a259a2bbe4d85a33d68887ee01aad07
Signed-off-by: Lynus Vaz <lvaz@codeaurora.org>
Currently, Rconn is configured once in fg_hw_init() if it is not
configured already. However, if the driver loads the profile
later, it will overwrite the Rconn value configured during
fg_hw_init. To fix this problem, configure Rconn after handling
battery profile loading.
Usually the Rconn configuration is setup differently from what
the profile has for it. We check if the profile in SRAM is bit
to bit matching with the profile in device tree. We may come
across a mismatch for Rconn configuration and conclude that the
profile isn't matching. Fix this by initializing the Rconn
configuration in the profile read from device tree to the value
read from SRAM.
CRs-Fixed: 2142441
Change-Id: I2b7ac8cd6efe811527c29bc5cd0fa43b77da7b15
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
Add mutex unlock in function audio_effects_shared_ioctl
at appropriate place to prevent use after free.
CRs-Fixed: 2123291
Change-Id: Ie0d321dc8cc20a295d102a44faea7e5710834932
Signed-off-by: Tanya Dixit <tdixit@codeaurora.org>
qmi_send_req_wait expects timeout argument to be passed in ms and not
in jiffies. Update the call in service-locator to pass in the correct
argument.
Change-Id: Ib2f8deedf2fb2a561c30b0c8511bb1edd5a37361
Signed-off-by: Kyle Yan <kyan@codeaurora.org>
ENOMSG is not a real failure return code for qmi_recv_msg. Instead ENOMSG
signifies that we have finished reading the entirety of the message buffer.
Update the error condition to print errors only when any error message
other than ENOMSG is returned.
Change-Id: Id6b42df182cb02f2cbffaae9698363b7dafce4e4
Signed-off-by: Kyle Yan <kyan@codeaurora.org>
Fix the programming of DisplayPort SDP registers primarily related
to Audio enable sequence. This would fix potential issues caused by
read/append/write operations on SDP registers which might corrupt
the parity/data bytes. This would lead to audio issues since the DP
controller would treat the corrupt SDP information as invalid data.
Change-Id: I55db6a70be0fdf94a60fd7cc8bf0d30702febef8
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>