When the CONFIG_ENABLE_VMALLOC_SAVING is enabled, even though
the unused lowmem is used as vmalloc space, but __vmalloc_node()
still uses VMALLOC_START as the start point to allocate vm area,
but the range [VMALLOC_START, VMALLOC_END] is limited, this
may cause vmalloc allocation failure. Change the start point
to allocate the vm area from VMALLOC_START to PAGE_OFFSET to make
that allocation can be chosen from [PAGE_OFFSET, VMALLOC_START)
also.
Change-Id: I89c099484846c4bcd9b607c1925f253c165d0dd9
Signed-off-by: Qingqing Zhou <qqzhou@codeaurora.org>
Even though lowmem is accounted for in vmalloc space,
allocation comes only from the region bounded by
VMALLOC_START and VMALLOC_END. The kernel virtual area
can now allocate from any unmapped region starting
from PAGE_OFFSET.
Change-Id: I291b9eb443d3f7445fd979bd7b09e9241ff22ba3
Signed-off-by: Neeti Desai <neetid@codeaurora.org>
Signed-off-by: Susheel Khiani <skhiani@codeaurora.org>
For some targets that have less vmalloc space this can be increased by
enabling config ENABLE_VMALLOC_SAVING. With this config we can reclaim
virtual mappings which remains unused because of non hlos carveout
reservations in lowmem.
Select the default method of reclaiming virtual memory as vmalloc
saving.
Change-Id: I249992871babe8c64c34d52ef43bbc7c81636d47
Signed-off-by: Zhenhua Huang <zhenhuah@codeaurora.org>
Signed-off-by: Qingqing Zhou <qqzhou@codeaurora.org>
is_vmalloc_addr currently assumes that all vmalloc addresses
exist between VMALLOC_START and VMALLOC_END. This may not be
the case when interleaving vmalloc and lowmem. Update the
is_vmalloc_addr to properly check for this.
Correspondingly we need to ensure that VMALLOC_TOTAL accounts
for all the vmalloc regions when CONFIG_ENABLE_VMALLOC_SAVING
is enabled.
Change-Id: I5def3d6ae1a4de59ea36f095b8c73649a37b1f36
Signed-off-by: Susheel Khiani <skhiani@codeaurora.org>
Signed-off-by: Zhenhua Huang <zhenhuah@codeaurora.org>
Signed-off-by: Qingqing Zhou <qqzhou@codeaurora.org>
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
Currently on 32 bit systems, virtual space above
PAGE_OFFSET is reserved for direct mapped lowmem
and part of virtual address space is reserved for
vmalloc. We want to optimize such as to have as
much direct mapped memory as possible since there is
penalty for mapping/unmapping highmem. Now, we may
have an image that is expected to have a lifetime of
the entire system and is reserved in physical region
that would be part of direct mapped lowmem. The
physical memory which is thus reserved is never used
by Linux. This means that even though the system is
not actually accessing the virtual memory
corresponding to the reserved physical memory, we
are still losing that portion of direct mapped lowmem
space.
So by allowing lowmem to be non contiguous we can
give this unused virtual address space of reserved
region back for use in vmalloc.
Change-Id: I980b3dfafac71884dcdcb8cd2e4a6363cde5746a
Signed-off-by: Susheel Khiani <skhiani@codeaurora.org>
Signed-off-by: Qingqing Zhou <qqzhou@codeaurora.org>
Enable the config ENABLE_VMALLOC_SAVING only when QGKI
config is enabled.
Change-Id: Ic688d27bb31702a60be72b22033cfe1eed5efadc
Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org>
Update latest gki version in sync
with LTS tag android11-5.4.61+ (874de1d).
Change-Id: I07e2305756019d7c2a4d2e81b8303e0a5f9d0dd3
Signed-off-by: Yogesh Lal <ylal@codeaurora.org>
The struct coex_antenna_switch_to_mdm_resp_msg_v01_ei is
missing with second element and causing OOB issue with
KASAN.
Change-Id: Iac53f5b4883a620f5179fe2caa7e2169d487c619
CRs-Fixed: 2814572
Signed-off-by: Paul Zhang <paulz@codeaurora.org>
Signed-off-by: Manikandan Mohan <manikand@codeaurora.org>
By default when ep0 gets enable, current code SET XFER resource command
for all USB endpoints excluding USB GSI endpoint. SET XFER resource
command shall fail if all resources are allocated. All allocated transfer
resources are resets in controller when DEPXFERCFG cmd is send with ep0
with value as 2 OR when controller is being peformed power on reset or
being restarted (i.e. device initiated disconnect and reconnect).
Consider case as below:
a. USB enumerated
b. USB bus suspend
c. USB bus reset
d. USB connect done
e. USB set_config() (set_alt())
f. Reenable all USB endpoint and resize tx fifo for it except ep0 and ep1
g. USB GSI endpoint operation (EP_OP_CONFIG) is sending SET XFER RESOURCE
which is failing as all resources are already allocated.
ep0 is disabled while clearing run stop and re-enabled when setting run
stop. For USB device mode we know that ep0 enabling is prerequisite before
setting run stop. Hence let ep0 enabling takes care of reallocating
transfer resources for all endpoint including USB GSI endpoints.
Change-Id: Ic5ab7558fadc636aaf255d62f91abf7842460659
Signed-off-by: Mayank Rana <mrana@codeaurora.org>