Section mapping is good for TLB. But sometimes, when
system is low on physically continuous memory, this can
cause memory allocation failures. Add a fallback option to
allocate vmemmap pages from discontinuous pages.
Change-Id: Ide921c36c1e8980a8af047e2c991310405804858
Signed-off-by: Arun KS <arunks@codeaurora.org>
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
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: resolve build errors due to API changes]
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Add arm64 to the list of architectures which supports
memory hotplug.
Change-Id: Iefeb8294bf06eaebb17a3b3aa8b33bb3b7133099
Signed-off-by: Arun KS <arunks@codeaurora.org>
Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Introduce a variable to save bootloader enforced memory limits and
restricts adding beyond this boundary during a memory hotplug. Also,
export this symbol so that other kernel module have access to it.
Change-Id: I28c100644b7287ec4625c4c018b5fffc865e2e72
Signed-off-by: Arun KS <arunks@codeaurora.org>
[sudaraja@codeaurora.org: check limit with physical address of page]
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: Fix merge conflicts/use generic page onlining]
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Allows to remove sections of memory that have been previously offlined
from userspace.
This is symmetric to the "memory probe" interface, as described in
Documentation/memory-hotplug.txt. It can be used to manually notify the
OS that one memory section has been removed.
Please, remind that a memory section can only be removed after it has
been logically off-lined; trying to remove a section which has not been
previously off-lined is not supported and will have undefined (but most
likely very bad) behaviour.
To offline a section one can:
To use the remove interface to remove the section:
where 0xYYYYYY is the physical address of the memory section to remove.
Change-Id: I1ab2fafe17b2697a5c667feae25c4ac0655f394e
Signed-off-by: Andrea Reale <ar@linux.vnet.ibm.com>
Signed-off-by: Maciej Bielski <m.bielski@virtualopensystems.com>
Patch-mainline: linux-kernel @ 11 Apr 2017, 18:25
Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
[isaacm@codeaurora.org: resolved merge conflicts due to API changes]
Signed-off-by: Isaac J. Manjarres <isaacm@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>
[sudaraja@codeaurora.org: remove explicit zone calculation]
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
[isaacm@codeaurora.org: remove duplicate hotplug/hot remove code in init.c]
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
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>
[sudaraja@codeaurora.org: fixed merge conflicts]
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 now unnecessary workarounds due to MHP changes]
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
Add uC debug stats support for AQC/loadable modules.
Change-Id: I21cd3807c8e8973065b79f4ec43a0da382595653
Signed-off-by: Bojun Pan <bojunp@codeaurora.org>
Add Vorbis and amrwb_plus to supported offload formats,
update alac and ape snd_codec_options names to match with
userspace and send media format block for both formats
through compress driver.
Change-Id: Ibec74c4d3f44a4676b49fa03133fd5d31dd5182d
Signed-off-by: Meng Wang <mengw@codeaurora.org>
MHI Host Interface is a communication protocol to be used by the
host to control and communicate with external soc over a high speed
peripheral bus.
Change-Id: Ia948274b3d298df417628b8cc87d972945a55e47
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Add snapshot for MHI driver stack from msm-4.19 commit
6cc10bff8d4a ("Bluetooth: Re-initialize regulator to NULL on error").
Additional changes are made to pass check_patch errors.
Change-Id: I4dbe727e25d01967dd9cbe60125af47d3bab3f20
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Add meta key to query presentation position from DSP
in system time domain.
Change-Id: I1b17bdc2c94b4d694f7d968cd513812e4136e209
Signed-off-by: Surendar Karka <skarka@codeaurora.org>
Add delay_blk() to pcm, platform and DAI ops.
The pcm delay_blk() op collects the audio DSP path
delay from the low-level drivers and sets the
runtime->delay field to their aggregate.
Change-Id: Ib7e10f44ab8ccb46dc2f5825081d0afef662d827
Signed-off-by: Kenneth Westfield <kwestfie@codeaurora.org>
Signed-off-by: Meng Wang <mwang@codeaurora.org>
This is a snapshot of wcd-spi.h and wcd-dsp-mgr.h for wcd spi and
dsp manager as of msm-4.14 commit <af1e41>(Add header files for
wcd spi and dsp manager).
Change-Id: Iaffcecb946ac5e60ab99c7b7a7d5c06259ab7344
Signed-off-by: Meng Wang <mwang@codeaurora.org>
ALSA jack framework currently supports reporting only
one single microphone. Add support to report presence of
the second microphone to userspace.
Change-Id: I72d16892f2fa563c026bf90d847d9365dcf2233a
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
Signed-off-by: Banajit Goswami <bgoswami@codeaurora.org>
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Meng Wang <mwang@codeaurora.org>
Add metadata to configure latency mode for DSP transcode
loopback to set legacy or low latency path. Userspace API
introduced to configure the same.
Change-Id: I914c68a9e9d8647530b72c42548e571b7508c423
Signed-off-by: Siddartha Shaik <sshaik@codeaurora.org>
Signed-off-by: Surendar Karka <skarka@codeaurora.org>
Support for clock recovery in compress driver.
Userspace app can issue clock recovery command with a positive value
to advance the clock or a negative value to delay the clock.
CRs-Fixed: 2036899
Change-Id: Iacfc18afe6723edea84ed3382ac62810fcadb31a
Signed-off-by: Manish Dewangan <manish@codeaurora.org>
Signed-off-by: Meng Wang <mwang@codeaurora.org>
This is a snapshot of the audio codec port types in new header
required by soundwire interface as of commit<I2325b> (Add new
file of audio port types for soundwire).
Change-Id: I2325b3a8d04aaa5e204ab7e51041329700156154
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Add TrueHD audio format for compressed HDMI pass-through.
Change-Id: Id8a0b8c3a01c881ae284f13c2c0a36959c2413ac
Signed-off-by: Ben Romberger <bromberg@codeaurora.org>
Signed-off-by: Meng Wang <mwang@codeaurora.org>
This is a snapshot of the external clock header file as of
msm-4.19 commit <Ib9cca> (add audio external clock header
file for Kona).
Change-Id: Ib9ccac4d28bb21e197cd3ea1563dce2601a0699e
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Update compress driver to support session start delay.
Userspace can use this param to delay start of
playback session.
CRs-Fixed: 1112258
Change-Id: I0b31a4bae12f9f2b1f8a3e003909741529458772
Signed-off-by: Manish Dewangan <manish@codeaurora.org>
Signed-off-by: Meng Wang <mwang@codeaurora.org>
Update compress driver to support configuration of DSP render
window. Render window is used by DSP to take rendering decision.
i.e whether input frame should be rendered, dropped or repeated.
CRs-Fixed: 1112258
Change-Id: Ib1b9100ab87878d2e2da93e2b86ca68fb9dd97a9
Signed-off-by: Manish Dewangan <manish@codeaurora.org>
Signed-off-by: Meng Wang <mwang@codeaurora.org>
Update compress driver to support configuration of DSP clock
recovery mode. Supported modes are auto and none. In auto mode
DSP does clock recovery based on avtimer and device drift otherwise
it ignores drift.
CRs-Fixed: 1112258
Change-Id: I4b6b37c08be422e38b7f0bf625712d5e2b0dc0f3
Signed-off-by: Manish Dewangan <manish@codeaurora.org>
Signed-off-by: Meng Wang <mwang@codeaurora.org>
This patch parallelizes FE (front end) and BE (back end) when
playback/capture path is set up. FE's and BE's which can be
parallelized should be indicated in corresponding machine file.
All the operations can be started asynchronously provided the usecase
supports asynchronous operation.
Parallelizing reduces the startup latency as both FE and BE operations
run in parallel.
Change-Id: I17e7e1c3d406713cc728ec262cfe388f7251f7de
Signed-off-by: Walter Yang <yandongy@codeaurora.org>
Signed-off-by: Fred Oh <fred@codeaurora.org>
Signed-off-by: Banajit Goswami <bgoswami@codeaurora.org>
Signed-off-by: Meng Wang <mwang@codeaurora.org>
Call pcm_new when creating a new PCM to settup coherent dma mask.
Change-Id: Ic3e906df4b9acbe0497241352e710442086b27d9
Signed-off-by: Meng Wang <mwang@codeaurora.org>
snd_soc_platform is obsoleted in new kernel.
Update it to snd_soc_component.
Change-Id: I6de172cfe786fb77c0809664c0539ecb9219ee1d
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Vmalloc does not zero memory by default. In this instance,
CONFIG_PAGE_POISONING was enabled, so the pages were initialized
to 0xAA.
kasan_report+0x28c/0x2f8
check_memory_region+0x1dc/0x1e8
memset+0x2c/0x50
kernel_poison_pages+0x234/0x398
__free_pages_ok+0x380/0xd50
__free_pages+0x4c/0xd0
online_pages_range+0x174/0x1c8
walk_system_ram_range+0x130/0x170
online_pages+0x298/0x458
memory_block_change_state+0x160/0x210
memory_subsys_online+0x68/0x90
device_online+0x9c/0xc8
add_memory_resource+0x18c/0x228
add_memory+0x118/0x180
Memory state around the buggy address:
ffffffc17fffff00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffffffc17fffff80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffffffc180000000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
^
ffffffc180000080: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
ffffffc180000100: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
Change-Id: Id487a53d3cbe14a4ba73d43e151a51fd3162b1e0
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
[isaacm@codeaurora.org: resolve merge conflicts]
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>