Commit Graph

1055830 Commits

Author SHA1 Message Date
SeongJae Park fd5ed35b71 UPSTREAM: mm/damon/dbgfs: support DAMON-based Operation Schemes
This makes 'damon-dbgfs' to support the data access monitoring oriented
memory management schemes.  Users can read and update the schemes using
``<debugfs>/damon/schemes`` file.  The format is::

    <min/max size> <min/max access frequency> <min/max age> <action>

Link: https://lkml.kernel.org/r/20211001125604.29660-5-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Amit Shah <amit@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: David Hildenbrand <david@redhat.com>
Cc: David Rienjes <rientjes@google.com>
Cc: David Woodhouse <dwmw@amazon.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Leonard Foerster <foersleo@amazon.de>
Cc: Marco Elver <elver@google.com>
Cc: Markus Boehme <markubo@amazon.de>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit af122dd8f3c0099349bc98ff69f0d90efd8b149f)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: I0ef1d7cc491f93ae6baaefbf9dc47ee342807069
2022-06-01 15:26:03 -07:00
SeongJae Park 573fab31a5 UPSTREAM: mm/damon/vaddr: support DAMON-based Operation Schemes
This makes DAMON's default primitives for virtual address spaces to
support DAMON-based Operation Schemes (DAMOS) by implementing actions
application functions and registering it to the monitoring context.  The
implementation simply links 'madvise()' for related DAMOS actions.  That
is, 'madvise(MADV_WILLNEED)' is called for 'WILLNEED' DAMOS action and
similar for other actions ('COLD', 'PAGEOUT', 'HUGEPAGE', 'NOHUGEPAGE').

So, the kernel space DAMON users can now use the DAMON-based
optimizations with only small amount of code.

Link: https://lkml.kernel.org/r/20211001125604.29660-4-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Amit Shah <amit@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: David Hildenbrand <david@redhat.com>
Cc: David Rienjes <rientjes@google.com>
Cc: David Woodhouse <dwmw@amazon.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Leonard Foerster <foersleo@amazon.de>
Cc: Marco Elver <elver@google.com>
Cc: Markus Boehme <markubo@amazon.de>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit 6dea8add4d2875b80843e4a4c8acd334a4db8c8f)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: I791dacf0f965deaed4a9fca155aa376764927b46
2022-06-01 15:26:03 -07:00
SeongJae Park b35e82062a UPSTREAM: mm/damon/core: implement DAMON-based Operation Schemes (DAMOS)
In many cases, users might use DAMON for simple data access aware memory
management optimizations such as applying an operation scheme to a
memory region of a specific size having a specific access frequency for
a specific time.  For example, "page out a memory region larger than 100
MiB but having a low access frequency more than 10 minutes", or "Use THP
for a memory region larger than 2 MiB having a high access frequency for
more than 2 seconds".

Most simple form of the solution would be doing offline data access
pattern profiling using DAMON and modifying the application source code
or system configuration based on the profiling results.  Or, developing
a daemon constructed with two modules (one for access monitoring and the
other for applying memory management actions via mlock(), madvise(),
sysctl, etc) is imaginable.

To avoid users spending their time for implementation of such simple
data access monitoring-based operation schemes, this makes DAMON to
handle such schemes directly.  With this change, users can simply
specify their desired schemes to DAMON.  Then, DAMON will automatically
apply the schemes to the user-specified target processes.

Each of the schemes is composed with conditions for filtering of the
target memory regions and desired memory management action for the
target.  Specifically, the format is::

    <min/max size> <min/max access frequency> <min/max age> <action>

The filtering conditions are size of memory region, number of accesses
to the region monitored by DAMON, and the age of the region.  The age of
region is incremented periodically but reset when its addresses or
access frequency has significantly changed or the action of a scheme was
applied.  For the action, current implementation supports a few of
madvise()-like hints, ``WILLNEED``, ``COLD``, ``PAGEOUT``, ``HUGEPAGE``,
and ``NOHUGEPAGE``.

Because DAMON supports various address spaces and application of the
actions to a monitoring target region is dependent to the type of the
target address space, the application code should be implemented by each
primitives and registered to the framework.  Note that this only
implements the framework part.  Following commit will implement the
action applications for virtual address spaces primitives.

Link: https://lkml.kernel.org/r/20211001125604.29660-3-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Amit Shah <amit@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: David Hildenbrand <david@redhat.com>
Cc: David Rienjes <rientjes@google.com>
Cc: David Woodhouse <dwmw@amazon.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Leonard Foerster <foersleo@amazon.de>
Cc: Marco Elver <elver@google.com>
Cc: Markus Boehme <markubo@amazon.de>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit 1f366e421c8f69583ed37b56d86e3747331869c3)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: Iae8c0d0ade588de0720140fcf6f97a1873f896a0
2022-06-01 15:26:03 -07:00
SeongJae Park 41e99990b8 UPSTREAM: mm/damon/core: account age of target regions
Patch series "Implement Data Access Monitoring-based Memory Operation Schemes".

Introduction
============

DAMON[1] can be used as a primitive for data access aware memory
management optimizations.  For that, users who want such optimizations
should run DAMON, read the monitoring results, analyze it, plan a new
memory management scheme, and apply the new scheme by themselves.  Such
efforts will be inevitable for some complicated optimizations.

However, in many other cases, the users would simply want the system to
apply a memory management action to a memory region of a specific size
having a specific access frequency for a specific time.  For example,
"page out a memory region larger than 100 MiB keeping only rare accesses
more than 2 minutes", or "Do not use THP for a memory region larger than
2 MiB rarely accessed for more than 1 seconds".

To make the works easier and non-redundant, this patchset implements a
new feature of DAMON, which is called Data Access Monitoring-based
Operation Schemes (DAMOS).  Using the feature, users can describe the
normal schemes in a simple way and ask DAMON to execute those on its
own.

[1] https://damonitor.github.io

Evaluations
===========

DAMOS is accurate and useful for memory management optimizations.  An
experimental DAMON-based operation scheme for THP, 'ethp', removes
76.15% of THP memory overheads while preserving 51.25% of THP speedup.
Another experimental DAMON-based 'proactive reclamation' implementation,
'prcl', reduces 93.38% of residential sets and 23.63% of system memory
footprint while incurring only 1.22% runtime overhead in the best case
(parsec3/freqmine).

NOTE that the experimental THP optimization and proactive reclamation
are not for production but only for proof of concepts.

Please refer to the showcase web site's evaluation document[1] for
detailed evaluation setup and results.

[1] https://damonitor.github.io/doc/html/v34/vm/damon/eval.html

Long-term Support Trees
-----------------------

For people who want to test DAMON but using LTS kernels, there are
another couple of trees based on two latest LTS kernels respectively and
containing the 'damon/master' backports.

- For v5.4.y: https://git.kernel.org/sj/h/damon/for-v5.4.y
- For v5.10.y: https://git.kernel.org/sj/h/damon/for-v5.10.y

Sequence Of Patches
===================

The 1st patch accounts age of each region.  The 2nd patch implements the
core of the DAMON-based operation schemes feature.  The 3rd patch makes
the default monitoring primitives for virtual address spaces to support
the schemes.  From this point, the kernel space users can use DAMOS.
The 4th patch exports the feature to the user space via the debugfs
interface.  The 5th patch implements schemes statistics feature for
easier tuning of the schemes and runtime access pattern analysis, and
the 6th patch adds selftests for these changes.  Finally, the 7th patch
documents this new feature.

This patch (of 7):

DAMON can be used for data access pattern aware memory management
optimizations.  For that, users should run DAMON, read the monitoring
results, analyze it, plan a new memory management scheme, and apply the
new scheme by themselves.  It would not be too hard, but still require
some level of effort.  For complicated cases, this effort is inevitable.

That said, in many cases, users would simply want to apply an actions to
a memory region of a specific size having a specific access frequency
for a specific time.  For example, "page out a memory region larger than
100 MiB but having a low access frequency more than 10 minutes", or "Use
THP for a memory region larger than 2 MiB having a high access frequency
for more than 2 seconds".

For such optimizations, users will need to first account the age of each
region themselves.  To reduce such efforts, this implements a simple age
account of each region in DAMON.  For each aggregation step, DAMON
compares the access frequency with that from last aggregation and reset
the age of the region if the change is significant.  Else, the age is
incremented.  Also, in case of the merge of regions, the region
size-weighted average of the ages is set as the age of merged new
region.

Link: https://lkml.kernel.org/r/20211001125604.29660-1-sj@kernel.org
Link: https://lkml.kernel.org/r/20211001125604.29660-2-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Amit Shah <amit@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: David Hildenbrand <david@redhat.com>
Cc: David Woodhouse <dwmw@amazon.com>
Cc: Marco Elver <elver@google.com>
Cc: Leonard Foerster <foersleo@amazon.de>
Cc: Greg Thelen <gthelen@google.com>
Cc: Markus Boehme <markubo@amazon.de>
Cc: David Rienjes <rientjes@google.com>
Cc: Shakeel Butt <shakeelb@google.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit fda504fade7f124858d7022341dc46ff35b45274)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: Ia5ddb3b5ce9c0d14e098a0af55dabf4b6a609aaa
2022-06-01 15:26:03 -07:00
Colin Ian King aaa3878862 UPSTREAM: mm/damon/core: nullify pointer ctx->kdamond with a NULL
Currently a plain integer is being used to nullify the pointer
ctx->kdamond.  Use NULL instead.  Cleans up sparse warning:

  mm/damon/core.c:317:40: warning: Using plain integer as NULL pointer

Link: https://lkml.kernel.org/r/20210925215908.181226-1-colin.king@canonical.com
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit 7ec1992b891e59dba0f04e0327980786e8f61b13)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: Id5f9786633a785fd45bb6b25f0765671a21d3458
2022-06-01 15:26:03 -07:00
Changbin Du 340c92bec2 UPSTREAM: mm/damon: needn't hold kdamond_lock to print pid of kdamond
Just get the pid by 'current->pid'.  Meanwhile, to be symmetrical make
the 'starts' and 'finishes' logs both use debug level.

Link: https://lkml.kernel.org/r/20210927232432.17750-1-changbin.du@gmail.com
Signed-off-by: Changbin Du <changbin.du@gmail.com>
Reviewed-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit 42e4cef5fe48333e0db6e98b019edf5f2c2f11fd)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: I6ea6f697795a43663f7c20e87c07cddae891a231
2022-06-01 15:26:02 -07:00
Changbin Du 2df0d2dbd1 UPSTREAM: mm/damon: remove unnecessary do_exit() from kdamond
Just return from the kthread function.

Link: https://lkml.kernel.org/r/20210927232421.17694-1-changbin.du@gmail.com
Signed-off-by: Changbin Du <changbin.du@gmail.com>
Cc: SeongJae Park <sjpark@amazon.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit 5f7fe2b9b827662cf349ab45406d6cbf0cc6251f)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: I3915c829f26c2d6e0e983156bf0229d067b03f4f
2022-06-01 15:26:02 -07:00
SeongJae Park ec9618400e UPSTREAM: mm/damon/core: print kdamond start log in debug mode only
Logging of kdamond startup is using 'pr_info()' unnecessarily.  This
makes it to use 'pr_debug()' instead.

Link: https://lkml.kernel.org/r/20210917123958.3819-6-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: SeongJae Park <sjpark@amazon.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit 704571f997424ecd64b10b37ca6097e65690240a)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: Idf59dd43a8cecfbbe2846bfa81a8c79744ce08c9
2022-06-01 15:26:02 -07:00
SeongJae Park 4680f26136 UPSTREAM: include/linux/damon.h: fix kernel-doc comments for 'damon_callback'
A few Kernel-doc comments in 'damon.h' are broken.  This fixes them.

Link: https://lkml.kernel.org/r/20210917123958.3819-5-sj@kernel.org
Signed-off-by: SeongJae Park <sjpark@amazon.de>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit d2f272b35a84ace2ef04334a9822fd726a7f061b)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: Ic57dd7ca6528303cc07f2dca16487820ac100650
2022-06-01 15:26:02 -07:00
Geert Uytterhoeven f840a4de99 UPSTREAM: mm/damon: grammar s/works/work/
Correct a singular versus plural grammar mistake in the help text for
the DAMON_VADDR config symbol.

Link: https://lkml.kernel.org/r/20210914073451.3883834-1-geert@linux-m68k.org
Fixes: 3f49584b26 ("mm/damon: implement primitives for the virtual memory address spaces")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: SeongJae Park <sjpark@amazon.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

(cherry picked from commit f24b0626076783d56ef41c6459fedf70ab6dcbd0)

Bug: 228223814
Signed-off-by: zhijun wan <wanzhijun@oppo.com>
Change-Id: I194d0315cb93c2923d066092432e7dc997abe4e0
2022-06-01 15:26:02 -07:00
Yang Yang a41c70ee0b ANDROID: vendor_hooks: add vendor hook in blk_mq_rq_ctx_init()
This vendor hook let us initialize payload of the request.

Bug: 188749221
Change-Id: I51d6a3010ac0ab36066dbe1368158592832112b7
Signed-off-by: Yang Yang <yang.yang@vivo.com>
(cherry picked from commit 2faed7779206367f40c9687e029b5bd168a646da)
2022-06-01 22:17:28 +00:00
Yang Yang 1c6391dd7a ANDROID: vendor_hooks: add vendor hook in blk_mq_alloc_rqs()
This vendor hook let us attach oem data as payload to the request.
The payload is used by oem driver for debugging purpose.

Bug: 188749221
Change-Id: Iac598bd9cce836dac0efe9198a3e7752928f351a
Signed-off-by: Yang Yang <yang.yang@vivo.com>
(cherry picked from commit eecc725a8e0b7c10f3b37f7c80531dc859c7dc99)
2022-06-01 22:17:20 +00:00
Peifeng Li c249ab0433 ANDROID: vendor_hooks: Add hooks to for free_unref_page_commit
Provide a vendor hook to skip cma-pages to add in pcplist when
free_unref_page_commit.

The patch is revelant to skip drain_all_pages in alloc_contig_range,
the revelant hooks is android_vh_cma_drain_all_pages_bypass
which is to avoid to delay in drain pcppages when drain_all_pages.

In most case, pcp->high is small so that free-pages with other mt_types
can also fill with pcplist full.

Bug: 224732340
Bug: 234405962
Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
Change-Id: Ifdeeed9f8934d87671ec3fa6787a02675b993082
2022-06-01 20:35:06 +00:00
Suren Baghdasaryan 863fb30224 ANDROID: Fix the drain_all_pages default condition broken by a hook
The condition introduced by a patch adding a vendor hook to skip
drain_all_pages is invalid and changes the default behavior for CMA
allocations. Fix the condition to restore default behavior.

Fixes: a2485b8abd57 ("ANDROID: vendor_hooks: Add hooks to for alloc_contig_range")
Bug: 232357688
Bug: 234405962
Reported-by: Yong-Taek Lee <ytk.lee@samsung.com>
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I686ad9dff57f604557f79cf4dc12cde55474e533
2022-06-01 20:35:00 +00:00
Peifeng Li 03e8a086d0 ANDROID: vendor_hooks: Add hooks to for alloc_contig_range
Provide a vendor hook to allow drain_all_pages to be skipped
during alloc_contig_range in some cases to avoid delays caused by
it in cases when the benefits of draining pcp lists are known
to be small.

Bug: 224732340
Bug: 234405962
Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
Change-Id: I0a82f668cf985ad5344d666c0c6372a7e61c3798
2022-06-01 20:34:55 +00:00
Peifeng Li 606b947630 ANDROID: vendor_hooks: export shrink_slab
Export shrink_slab to module for do shrink-memory action.

Bug: 221768451
Bug: 234405962
Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
Change-Id: I5abe9ad419d64999b714d879c228625a243e90d1
2022-06-01 20:34:51 +00:00
Liujie Xie 8148c29ecf ANDROID: vendor_hooks: Add hooks for __alloc_pages_direct_reclaim
Provide a vendor hook to allow drain_all_pages to be skipped
during direct reclaim in some cases to avoid delays caused by
it in cases when the benefits of draining pcp lists are known
to be small.

Bug: 220811627
Bug: 234405962
Signed-off-by: Liujie Xie <xieliujie@oppo.com>
Change-Id: I0805241f81e0a94afcf62c98e97cff125d4061e2
2022-06-01 20:34:46 +00:00
Liujie Xie 8db64c33f1 ANDROID: vendor_hooks: Add hooks for shrink_active_list
Provide a vendor hook to allow page_referenced to be skipped
during shrink_active_list to avoid heavy cpuloading caused by
it.

Bug: 220878851
Bug: 234405962
Signed-off-by: Liujie Xie <xieliujie@oppo.com>
Signed-off-by: Peifeng Li <lipeifeng@oppo.com>
Change-Id: Ie0e369f8f8739fea59a95470af20ab0e976869d1
2022-06-01 20:34:38 +00:00
Srinivasarao Pathipati c28ef0a593 FROMLIST: arm64: perf: Make exporting of pmu events configurable
The PMU export bit (PMCR_EL0.X) is getting reset during pmu reset,
Make is configurable using sysctls to enable/disable at runtime.
It can also be enabled at early bootup with kernel arguments.

Bug: 230559577
Change-Id: I35dcfeed23e64ec9493f9a15dbb43e9966108664
Link: https://lore.kernel.org/lkml/1653306574-20946-1-git-send-email-quic_c_spathi@quicinc.com/
Signed-off-by: Srinivasarao Pathipati <quic_spathi@quicinc.com>
2022-06-01 20:27:15 +00:00
Will Deacon e3e64e396e UPSTREAM: arm64: perf: Don't register user access sysctl handler multiple times
Commit e2012600810c ("arm64: perf: Add userspace counter access disable
switch") introduced a new 'perf_user_access' sysctl file to enable and
disable direct userspace access to the PMU counters. Sadly, Geert
reports that on his big.LITTLE SoC ('Renesas Salvator-XS w/ R-Car H3'),
the file is created for each PMU type probed, resulting in a splat
during boot:

  | hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
  | sysctl duplicate entry: /kernel//perf_user_access
  | CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.16.0-rc3-arm64-renesas-00003-ge2012600810c #1420
  | Hardware name: Renesas Salvator-X 2nd version board based on r8a77951 (DT)
  | Call trace:
  |  dump_backtrace+0x0/0x190
  |  show_stack+0x14/0x20
  |  dump_stack_lvl+0x88/0xb0
  |  dump_stack+0x14/0x2c
  |  __register_sysctl_table+0x384/0x818
  |  register_sysctl+0x20/0x28
  |  armv8_pmu_init.constprop.0+0x118/0x150
  |  armv8_a57_pmu_init+0x1c/0x28
  |  arm_pmu_device_probe+0x1b4/0x558
  |  armv8_pmu_device_probe+0x18/0x20
  |  platform_probe+0x64/0xd0
  |  hw perfevents: enabled with armv8_cortex_a57 PMU driver, 7 counters available

Introduce a state variable to track creation of the sysctl file and
ensure that it is only created once.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Fixes: e2012600810c ("arm64: perf: Add userspace counter access disable switch")
Link: https://lore.kernel.org/r/CAMuHMdVcDxR9sGzc5pcnORiotonERBgc6dsXZXMd6wTvLGA9iw@mail.gmail.com
Signed-off-by: Will Deacon <will@kernel.org>

Bug: 230559577
(cherry picked from commit 3da4390bcdf4dcea5eb7961f1ba05f75c642a39d)
Change-Id: Ib958eb1ca2e992d5120b476a5dcfec5094dbf148
Signed-off-by: Srinivasarao Pathipati <quic_spathi@quicinc.com>
2022-06-01 20:27:03 +00:00
Rob Herring 7ff7e64195 UPSTREAM: arm64: perf: Add userspace counter access disable switch
Like x86, some users may want to disable userspace PMU counter
altogether. Add a sysctl 'perf_user_access' file to control userspace
counter access. The default is '0' which is disabled. Writing '1'
enables access.

Note that x86 supports globally enabling user access by writing '2' to
/sys/bus/event_source/devices/cpu/rdpmc. As there's not existing
userspace support to worry about, this shouldn't be necessary for Arm.
It could be added later if the need arises.

Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: linux-perf-users@vger.kernel.org
Acked-by: Will Deacon <will@kernel.org>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20211208201124.310740-4-robh@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>

Bug: 230559577
(cherry picked from commit e2012600810c9ded81f6f63a8d04781be3c300ad)
Change-Id: Iea14f96122992944e1d97b9f6f6f821d54c1def1
Signed-off-by: Srinivasarao Pathipati <quic_spathi@quicinc.com>
2022-06-01 20:26:54 +00:00
Todd Kjos 04a8e247ec ANDROID: GKI: 6/1/2022 KMI update
Set KMI_GENERATION=6 for 6/1 KMI update

Leaf changes summary: 4422 artifacts changed
Changed leaf types summary: 9 leaf types changed
Removed/Changed/Added functions summary: 123 Removed, 4189 Changed, 27 Added functions
Removed/Changed/Added variables summary: 2 Removed, 70 Changed, 2 Added variables

123 Removed functions:

  [D] 'function sk_buff* __cfg80211_alloc_event_skb(wiphy*, wireless_dev*, nl80211_commands, nl80211_attrs, unsigned int, int, int, gfp_t)'
  [D] 'function sk_buff* __cfg80211_alloc_reply_skb(wiphy*, nl80211_commands, nl80211_attrs, int)'
  [D] 'function void __cfg80211_radar_event(wiphy*, cfg80211_chan_def*, bool, gfp_t)'
  [D] 'function void __cfg80211_send_event_skb(sk_buff*, gfp_t)'
  [D] 'function int __traceiter_android_vh_gic_v3_set_affinity(void*, irq_data*, const cpumask*, u64*, bool, void*)'
  [D] 'function void cfg80211_assoc_timeout(net_device*, cfg80211_bss*)'
  [D] 'function void cfg80211_cac_event(net_device*, const cfg80211_chan_def*, nl80211_radar_event, gfp_t)'
  [D] 'function u32 cfg80211_calculate_bitrate(rate_info*)'
  [D] 'function void cfg80211_ch_switch_notify(net_device*, cfg80211_chan_def*)'
  [D] 'function void cfg80211_chandef_create(cfg80211_chan_def*, ieee80211_channel*, nl80211_channel_type)'
  [D] 'function unsigned int cfg80211_classify8021d(sk_buff*, cfg80211_qos_map*)'
  [D] 'function void cfg80211_connect_done(net_device*, cfg80211_connect_resp_params*, gfp_t)'
  [D] 'function void cfg80211_cqm_rssi_notify(net_device*, nl80211_cqm_rssi_threshold_event, s32, gfp_t)'
  [D] 'function void cfg80211_cqm_txe_notify(net_device*, const u8*, u32, u32, u32, gfp_t)'
  [D] 'function void cfg80211_del_sta_sinfo(net_device*, const u8*, station_info*, gfp_t)'
  [D] 'function void cfg80211_disconnected(net_device*, u16, const u8*, size_t, bool, gfp_t)'
  [D] 'function int cfg80211_external_auth_request(net_device*, cfg80211_external_auth_params*, gfp_t)'
  [D] 'function const element* cfg80211_find_elem_match(u8, const u8*, unsigned int, const u8*, unsigned int, unsigned int)'
  [D] 'function const element* cfg80211_find_vendor_elem(unsigned int, int, const u8*, unsigned int)'
  [D] 'function void cfg80211_ft_event(net_device*, cfg80211_ft_event_params*)'
  [D] 'function cfg80211_bss* cfg80211_get_bss(wiphy*, ieee80211_channel*, const u8*, const u8*, size_t, ieee80211_bss_type, ieee80211_privacy)'
  [D] 'function void cfg80211_gtk_rekey_notify(net_device*, const u8*, const u8*, gfp_t)'
  [D] 'function void cfg80211_ibss_joined(net_device*, const u8*, ieee80211_channel*, gfp_t)'
  [D] 'function cfg80211_bss* cfg80211_inform_bss_data(wiphy*, cfg80211_inform_bss*, cfg80211_bss_frame_type, const u8*, u64, u16, u16, const u8*, size_t, gfp_t)'
  [D] 'function cfg80211_bss* cfg80211_inform_bss_frame_data(wiphy*, cfg80211_inform_bss*, ieee80211_mgmt*, size_t, gfp_t)'
  [D] 'function void cfg80211_mgmt_tx_status(wireless_dev*, u64, const u8*, size_t, bool, gfp_t)'
  [D] 'function void cfg80211_michael_mic_failure(net_device*, const u8*, nl80211_key_type, int, const u8*, gfp_t)'
  [D] 'function void cfg80211_new_sta(net_device*, const u8*, station_info*, gfp_t)'
  [D] 'function void cfg80211_pmksa_candidate_notify(net_device*, int, const u8*, bool, gfp_t)'
  [D] 'function void cfg80211_port_authorized(net_device*, const u8*, gfp_t)'
  [D] 'function void cfg80211_put_bss(wiphy*, cfg80211_bss*)'
  [D] 'function void cfg80211_ready_on_channel(wireless_dev*, u64, ieee80211_channel*, unsigned int, gfp_t)'
  [D] 'function int cfg80211_register_netdevice(net_device*)'
  [D] 'function void cfg80211_remain_on_channel_expired(wireless_dev*, u64, ieee80211_channel*, gfp_t)'
  [D] 'function void cfg80211_report_wowlan_wakeup(wireless_dev*, cfg80211_wowlan_wakeup*, gfp_t)'
  [D] 'function void cfg80211_roamed(net_device*, cfg80211_roam_info*, gfp_t)'
  [D] 'function void cfg80211_rx_assoc_resp(net_device*, cfg80211_bss*, const u8*, size_t, int, const u8*, size_t)'
  [D] 'function bool cfg80211_rx_control_port(net_device*, sk_buff*, bool)'
  [D] 'function bool cfg80211_rx_mgmt_khz(wireless_dev*, int, int, const u8*, size_t, u32)'
  [D] 'function void cfg80211_rx_mlme_mgmt(net_device*, const u8*, size_t)'
  [D] 'function void cfg80211_rx_unprot_mlme_mgmt(net_device*, const u8*, size_t)'
  [D] 'function void cfg80211_scan_done(cfg80211_scan_request*, cfg80211_scan_info*)'
  [D] 'function void cfg80211_sched_scan_results(wiphy*, u64)'
  [D] 'function void cfg80211_sched_scan_stopped(wiphy*, u64)'
  [D] 'function void cfg80211_stop_iface(wiphy*, wireless_dev*, gfp_t)'
  [D] 'function void cfg80211_tdls_oper_request(net_device*, const u8*, nl80211_tdls_operation, u16, gfp_t)'
  [D] 'function void cfg80211_tx_mlme_mgmt(net_device*, const u8*, size_t, bool)'
  [D] 'function void cfg80211_unlink_bss(wiphy*, cfg80211_bss*)'
  [D] 'function void cfg80211_unregister_wdev(wireless_dev*)'
  [D] 'function void cfg80211_update_owe_info_event(net_device*, cfg80211_update_owe_info*, gfp_t)'
  [D] 'function unsigned int cfg80211_vendor_cmd_get_sender(wiphy*)'
  [D] 'function int cfg80211_vendor_cmd_reply(sk_buff*)'
  [D] 'function const ieee80211_reg_rule* freq_reg_info(wiphy*, u32)'
  [D] 'function ieee80211_hw* ieee80211_alloc_hw_nm(size_t, const ieee80211_ops*, const char*)'
  [D] 'function bool ieee80211_beacon_cntdwn_is_complete(ieee80211_vif*)'
  [D] 'function sk_buff* ieee80211_beacon_get_template(ieee80211_hw*, ieee80211_vif*, ieee80211_mutable_offsets*)'
  [D] 'function sk_buff* ieee80211_beacon_get_tim(ieee80211_hw*, ieee80211_vif*, u16*, u16*)'
  [D] 'function void ieee80211_beacon_loss(ieee80211_vif*)'
  [D] 'function u8 ieee80211_beacon_update_cntdwn(ieee80211_vif*)'
  [D] 'function const element* ieee80211_bss_get_elem(cfg80211_bss*, u8)'
  [D] 'function u32 ieee80211_channel_to_freq_khz(int, nl80211_band)'
  [D] 'function void ieee80211_connection_loss(ieee80211_vif*)'
  [D] 'function void ieee80211_csa_finish(ieee80211_vif*)'
  [D] 'function ieee80211_sta* ieee80211_find_sta(ieee80211_vif*, const u8*)'
  [D] 'function ieee80211_sta* ieee80211_find_sta_by_ifaddr(ieee80211_hw*, const u8*, const u8*)'
  [D] 'function void ieee80211_free_hw(ieee80211_hw*)'
  [D] 'function void ieee80211_free_txskb(ieee80211_hw*, sk_buff*)'
  [D] 'function int ieee80211_freq_khz_to_channel(u32)'
  [D] 'function sk_buff* ieee80211_get_buffered_bc(ieee80211_hw*, ieee80211_vif*)'
  [D] 'function ieee80211_channel* ieee80211_get_channel_khz(wiphy*, u32)'
  [D] 'function sk_buff* ieee80211_get_fils_discovery_tmpl(ieee80211_hw*, ieee80211_vif*)'
  [D] 'function unsigned int ieee80211_get_hdrlen_from_skb(const sk_buff*)'
  [D] 'function void ieee80211_get_tx_rates(ieee80211_vif*, ieee80211_sta*, sk_buff*, ieee80211_tx_rate*, int)'
  [D] 'function sk_buff* ieee80211_get_unsol_bcast_probe_resp_tmpl(ieee80211_hw*, ieee80211_vif*)'
  [D] 'function unsigned int ieee80211_hdrlen(__le16)'
  [D] 'function void ieee80211_iter_chan_contexts_atomic(ieee80211_hw*, void (ieee80211_hw*, ieee80211_chanctx_conf*, void*)*, void*)'
  [D] 'function void ieee80211_iterate_active_interfaces_atomic(ieee80211_hw*, u32, void (void*, u8*, ieee80211_vif*)*, void*)'
  [D] 'function void ieee80211_iterate_stations_atomic(ieee80211_hw*, void (void*, ieee80211_sta*)*, void*)'
  [D] 'function void ieee80211_manage_rx_ba_offl(ieee80211_vif*, const u8*, unsigned int)'
  [D] 'function ieee80211_txq* ieee80211_next_txq(ieee80211_hw*, u8)'
  [D] 'function bool ieee80211_operating_class_to_band(u8, nl80211_band*)'
  [D] 'function sk_buff* ieee80211_probereq_get(ieee80211_hw*, const u8*, const u8*, size_t, size_t)'
  [D] 'function sk_buff* ieee80211_proberesp_get(ieee80211_hw*, ieee80211_vif*)'
  [D] 'function void ieee80211_queue_delayed_work(ieee80211_hw*, delayed_work*, unsigned long int)'
  [D] 'function void ieee80211_queue_work(ieee80211_hw*, work_struct*)'
  [D] 'function void ieee80211_radar_detected(ieee80211_hw*)'
  [D] 'function void ieee80211_ready_on_channel(ieee80211_hw*)'
  [D] 'function int ieee80211_register_hw(ieee80211_hw*)'
  [D] 'function void ieee80211_remain_on_channel_expired(ieee80211_hw*)'
  [D] 'function void ieee80211_report_low_ack(ieee80211_sta*, u32)'
  [D] 'function void ieee80211_restart_hw(ieee80211_hw*)'
  [D] 'function void ieee80211_return_txq(ieee80211_hw*, ieee80211_txq*, bool)'
  [D] 'function void ieee80211_rx_irqsafe(ieee80211_hw*, sk_buff*)'
  [D] 'function void ieee80211_rx_napi(ieee80211_hw*, ieee80211_sta*, sk_buff*, napi_struct*)'
  [D] 'function void ieee80211_scan_completed(ieee80211_hw*, cfg80211_scan_info*)'
  [D] 'function void ieee80211_sta_register_airtime(ieee80211_sta*, u8, u32, u32)'
  [D] 'function void ieee80211_stop_queue(ieee80211_hw*, int)'
  [D] 'function void ieee80211_stop_queues(ieee80211_hw*)'
  [D] 'function void ieee80211_stop_tx_ba_cb_irqsafe(ieee80211_vif*, const u8*, u16)'
  [D] 'function void ieee80211_tdls_oper_request(ieee80211_vif*, const u8*, nl80211_tdls_operation, u16, gfp_t)'
  [D] 'function sk_buff* ieee80211_tx_dequeue(ieee80211_hw*, ieee80211_txq*)'
  [D] 'function bool ieee80211_tx_prepare_skb(ieee80211_hw*, ieee80211_vif*, sk_buff*, int, ieee80211_sta**)'
  [D] 'function void ieee80211_tx_rate_update(ieee80211_hw*, ieee80211_sta*, ieee80211_tx_info*)'
  [D] 'function void ieee80211_tx_status(ieee80211_hw*, sk_buff*)'
  [D] 'function void ieee80211_tx_status_irqsafe(ieee80211_hw*, sk_buff*)'
  [D] 'function void ieee80211_txq_get_depth(ieee80211_txq*, unsigned long int*, unsigned long int*)'
  [D] 'function bool ieee80211_txq_may_transmit(ieee80211_hw*, ieee80211_txq*)'
  [D] 'function void ieee80211_txq_schedule_start(ieee80211_hw*, u8)'
  [D] 'function void ieee80211_unregister_hw(ieee80211_hw*)'
  [D] 'function void ieee80211_wake_queue(ieee80211_hw*, int)'
  [D] 'function void ieee80211_wake_queues(ieee80211_hw*)'
  [D] 'function const char* reg_initiator_name(nl80211_reg_initiator)'
  [D] 'function int regulatory_hint(wiphy*, const char*)'
  [D] 'function int regulatory_set_wiphy_regd(wiphy*, ieee80211_regdomain*)'
  [D] 'function int regulatory_set_wiphy_regd_sync(wiphy*, ieee80211_regdomain*)'
  [D] 'function void wiphy_apply_custom_regulatory(wiphy*, const ieee80211_regdomain*)'
  [D] 'function void wiphy_free(wiphy*)'
  [D] 'function wiphy* wiphy_new_nm(const cfg80211_ops*, int, const char*)'
  [D] 'function void wiphy_read_of_freq_limits(wiphy*)'
  [D] 'function int wiphy_register(wiphy*)'
  [D] 'function void wiphy_rfkill_set_hw_state_reason(wiphy*, bool, rfkill_hard_block_reasons)'
  [D] 'function ieee80211_hw* wiphy_to_ieee80211_hw(wiphy*)'
  [D] 'function void wiphy_unregister(wiphy*)'

27 Added functions:

  [A] 'function void* __alloc_percpu_gfp(size_t, size_t, gfp_t)'
  [A] 'function int __dev_change_net_namespace(net_device*, net*, const char*, int)'
  [A] 'function void __hw_addr_init(netdev_hw_addr_list*)'
  [A] 'function int __hw_addr_sync(netdev_hw_addr_list*, netdev_hw_addr_list*, int)'
  [A] 'function void __hw_addr_unsync(netdev_hw_addr_list*, netdev_hw_addr_list*, int)'
  [A] 'function int __sock_create(net*, int, int, int, socket**, int)'
  [A] 'function int __traceiter_android_rvh_gic_v3_set_affinity(void*, irq_data*, const cpumask*, u64*, bool, void*)'
  [A] 'function void dev_fetch_sw_netstats(rtnl_link_stats64*, const pcpu_sw_netstats*)'
  [A] 'function int genlmsg_multicast_allns(const genl_family*, sk_buff*, u32, unsigned int, gfp_t)'
  [A] 'function net* get_net_ns_by_fd(int)'
  [A] 'function net* get_net_ns_by_pid(pid_t)'
  [A] 'function int inet_csk_get_port(sock*, unsigned short int)'
  [A] 'function void kernel_param_lock(module*)'
  [A] 'function void kernel_param_unlock(module*)'
  [A] 'function key_ref_t key_create_or_update(key_ref_t, const char*, const char*, void*, size_t, key_perm_t, unsigned long int)'
  [A] 'function ktime_t ktime_get_coarse_with_offset(tk_offsets)'
  [A] 'function void netdev_set_default_ethtool_ops(net_device*, const ethtool_ops*)'
  [A] 'function bool rfkill_blocked(rfkill*)'
  [A] 'function void rfkill_resume_polling(rfkill*)'
  [A] 'function bool rfkill_set_hw_state_reason(rfkill*, bool, unsigned long int)'
  [A] 'function void rhashtable_free_and_destroy(rhashtable*, void (void*, void*)*, void*)'
  [A] 'function int rhltable_init(rhltable*, const rhashtable_params*)'
  [A] 'function unsigned long int round_jiffies(unsigned long int)'
  [A] 'function sk_buff* skb_clone_sk(sk_buff*)'
  [A] 'function void skb_complete_wifi_ack(sk_buff*, bool)'
  [A] 'function int verify_pkcs7_signature(void*, size_t, void*, size_t, key*, key_being_used_for, int (void*, void*, typedef size_t, typedef size_t)*, void*)'
  [A] 'function void wireless_nlevent_flush()'

4189 functions with some sub-type change:

  [C] 'function block_device* I_BDEV(inode*)' at bdev.c:42:1 has some sub-type changes:
    CRC (modversions) changed from 0xf7fad46b to 0x9f8a3196

  [C] 'function void* PDE_DATA(const inode*)' at generic.c:794:1 has some sub-type changes:
    CRC (modversions) changed from 0x81aa91e0 to 0xec8a2781

  [C] 'function void __ClearPageMovable(page*)' at compaction.c:138:1 has some sub-type changes:
    CRC (modversions) changed from 0xdc002f78 to 0x84c84632

  ... 4186 omitted; 4189 symbols have only CRC changes

2 Removed variables:

  [D] 'tracepoint __tracepoint_android_vh_gic_v3_set_affinity'
  [D] 'const unsigned char rfc1042_header[6]'

2 Added variables:

  [A] 'tracepoint __tracepoint_android_rvh_gic_v3_set_affinity'
  [A] 'const kobj_ns_type_operations net_ns_type_operations'

70 Changed variables:

  [C] 'net init_net' was changed at net_namespace.c:47:1:
    CRC (modversions) changed from 0xd8c32acb to 0x2915d0ff
    type of variable changed:
      type size hasn't changed
      there are data member changes:
        type 'struct netns_ipv6' of 'net::ipv6' changed:
          type size hasn't changed
          there are data member changes:
            type 'unsigned int' of 'netns_ipv6::ip6_rt_gc_expire' changed:
              entity changed from 'unsigned int' to 'typedef atomic_t' at types.h:168:1
              type size hasn't changed
          4684 impacted interfaces
      4684 impacted interfaces

  [C] 'task_struct init_task' was changed at init_task.c:64:1:
    size of symbol changed from 4352 to 4416
    CRC (modversions) changed from 0x5dc6c1c1 to 0x77bbf7a8
    type of variable changed:
      type size changed from 34816 to 35328 (in bits)
      1 data member insertion:
        'timer_list oom_reaper_timer', at offset 21120 (in bits) at sched.h:1449:1
      there are data member changes:
        8 ('vm_struct* stack_vm_area' .. 'llist_head kretprobe_instances') offsets changed (by +320 bits)
        'thread_struct thread' offset changed (by +384 bits)
      4684 impacted interfaces

  [C] 'bus_type amba_bustype' was changed at bus.c:313:1:
    CRC (modversions) changed from 0x83105e26 to 0xe010f6df

  [C] 'neigh_table arp_tbl' was changed at arp.c:152:1:
    CRC (modversions) changed from 0xd408def7 to 0x4679c0bf

  [C] 'const address_space_operations balloon_aops' was changed at balloon_compaction.c:253:1:
    CRC (modversions) changed from 0x30f2c100 to 0x8818681a

  ... 65 omitted; 68 symbols have only CRC changes

'enum android_debug_symbol at android_debug_symbols.h:9:1' changed:
  type size hasn't changed
  1 enumerator insertion:
    'android_debug_symbol::ADS_SHOW_MEM' value '20'
  1 enumerator change:
    'android_debug_symbol::ADS_END' from value '20' to '21' at android_debug_symbols.h:9:1
  one impacted interface
'struct block_device_operations at blkdev.h:1850:1' changed:
  type size changed from 1152 to 1216 (in bits)
  1 data member insertion:
    'u64 android_oem_data1', at offset 1152 (in bits) at blkdev.h:1880:1
  4684 impacted interfaces

'struct net at net_namespace.h:56:1' changed:
  details were reported earlier

'struct netns_ipv6 at ipv6.h:62:1' changed:
  details were reported earlier

'struct nf_conn at nf_conntrack.h:72:1' changed:
  type size hasn't changed
  there are data member changes:
    type 'struct nf_conntrack' of 'nf_conn::ct_general' changed:
      type size hasn't changed
      there are data member changes:
        type 'typedef atomic_t' of 'nf_conntrack::use' changed:
          typedef name changed from atomic_t to refcount_t at refcount.h:113:1
          underlying type 'struct {int counter;}' at types.h:166:1 changed:
            type name changed from '__anonymous_struct__' to 'refcount_struct'
            type size hasn't changed
            there are data member changes:
              type 'int' of '__anonymous_struct__::counter' changed:
                entity changed from 'int' to 'typedef atomic_t' at types.h:168:1
                type size hasn't changed
              and name of '__anonymous_struct__::counter' changed to 'refcount_struct::refs' at refcount.h:112:1
      4685 impacted interfaces
  4684 impacted interfaces

'struct nf_conntrack at nf_conntrack_common.h:27:1' changed:
  details were reported earlier

'struct rate_sample at tcp.h:1020:1' changed:
  type size changed from 448 to 512 (in bits)
  1 data member insertion:
    'u32 last_end_seq', at offset 416 (in bits) at tcp.h:1031:1
  there are data member changes:
    3 ('bool is_app_limited' .. 'bool is_ack_delayed') offsets changed (by +32 bits)
  4684 impacted interfaces

'struct task_struct at sched.h:726:1' changed:
  details were reported earlier

'struct wireless_dev at cfg80211.h:5607:1' changed:
  type size hasn't changed
  2 data member deletions:
    'bool ibss_fixed', at offset 2624 (in bits) at cfg80211.h:5644:1
    'bool ibss_dfs_possible', at offset 2632 (in bits) at cfg80211.h:5645:1
  there are data member changes:
    'bool ps' offset changed (by -16 bits)
  4684 impacted interfaces

Bug: 234477785
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: If59e281740f5122ac6195f26a24a566e6a23fe9d
2022-06-01 09:32:36 -07:00
Abhijeet Dharmapurikar ec0c9b3ae6 ANDROID: sched/core: pass the target cpu in rvh_ttwu_cond hook
Allow the vendor module to know the target cpu for better decisions on
whether to enforce __ttwu_queue_wakelist() based wakeup.

Bug: 234483895
Change-Id: Ic27054a5f6adc040fa3cadbd57d37608bf353c5f
Signed-off-by: Abhijeet Dharmapurikar <quic_adharmap@quicinc.com>
2022-06-01 09:32:35 -07:00
Johannes Berg 4b494d2bfa UPSTREAM: cfg80211: fix kernel-doc for cfg80211_beacon_data
The kernel-doc comment is formatted badly, resulting
in a warning:

  include/net/cfg80211.h:1188: warning: bad line: [...]

Fix that.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Bug: 233160029
(cherry picked from commit ee0e2f51e2115c2578d40e5a8ac33737984fe477)
Change-Id: I4b8d264913489fb0345ce444200953c8494a77c5
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
2022-06-01 09:32:35 -07:00
Rameshkumar Sundaram f0e3d26c63 UPSTREAM: nl80211: Parse NL80211_ATTR_HE_BSS_COLOR as a part of nl80211_parse_beacon
NL80211_ATTR_HE_BSS_COLOR attribute can be included in both
NL80211_CMD_START_AP and NL80211_CMD_SET_BEACON commands.

Move he_bss_color from cfg80211_ap_settings to cfg80211_beacon_data
and parse NL80211_ATTR_HE_BSS_COLOR as a part of nl80211_parse_beacon()
to have bss color settings parsed for both start ap and set beacon
commands.
Add a new flag he_bss_color_valid to indicate whether
NL80211_ATTR_HE_BSS_COLOR attribute is included.

Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
Link: https://lore.kernel.org/r/1649867295-7204-2-git-send-email-quic_ramess@quicinc.com
[fix build ...]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Bug: 233160029
(cherry picked from commit 3d48cb74816d8468f0235ce9a867a2d7b9832693)
Change-Id: Iceef7d7927fa3bbb49ced1583461a87b151f20e4
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
2022-06-01 09:32:35 -07:00
Muna Sinada 20b85fc84c UPSTREAM: cfg80211: support disabling EHT mode
Allow userspace to disable EHT mode during association.

Signed-off-by: Muna Sinada <quic_msinada@quicinc.com>
Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
Link: https://lore.kernel.org/r/20220323224636.20211-1-quic_alokad@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Bug: 233160029
(cherry picked from commit 36f8423597000bd7d5e48b7b306e1d0958e72359)
Change-Id: I06d3c8895590df47980b4f3fce96a0f8d1292be2
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
2022-06-01 09:32:35 -07:00
Dimitri John Ledkov 7a7dd66fa1 UPSTREAM: cfg80211: declare MODULE_FIRMWARE for regulatory.db
Add MODULE_FIRMWARE declarations for regulatory.db and
regulatory.db.p7s such that userspace tooling can discover and include
these files.

Cc: stable@vger.kernel.org
Signed-off-by: Dimitri John Ledkov <dimitri.ledkov@canonical.com>
Link: https://lore.kernel.org/r/20220414125004.267819-1-dimitri.ledkov@canonical.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Bug: 233160029
(cherry picked from commit 7bc7981eeebe1b8e603ad2ffc5e84f4df76920dd)
Change-Id: I475dab9c2759f3e9add66352acda7aa75a945f52
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
2022-06-01 09:32:35 -07:00
Johannes Berg fea05e64a3 UPSTREAM: nl80211: rework internal_flags usage
Since internal_flags is only 8 bits, we can only have one
more internal flag. However, we can obviously never use all
of possible the combinations, in fact, we only use 14 of
them (including no flags).

Since we want more flags for MLO (multi-link operation) in
the future, refactor the code to use a flags selector, so
wrap all of the .internal_flags assignments in a IFLAGS()
macro which selects the combination according to the pre-
defined list of combinations.

When we need a new combination, we'll have to add it, but
again we will never use all possible combinations.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Link: https://lore.kernel.org/r/20220414140402.70ddf8af3eb0.I2cc38cb6a10bb4c3863ec9ee97edbcc70a07aa4b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Bug: 233160029
(cherry picked from commit 2182db91e0016ca2b451426290c3b368ba9f6fdc)
Change-Id: I6ca31b633ce0af9829d70a377906115d23d1c4ad
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
2022-06-01 09:32:35 -07:00
Johannes Berg d58d5c6aaa UPSTREAM: nl80211: don't hold RTNL in color change request
It's not necessary to hold the RTNL across color change
requests, since all the inner locking needs only the
wiphy mutex which we already hold as well.

Fixes: 0d2ab3aea5 ("nl80211: add support for BSS coloring")
Link: https://lore.kernel.org/r/20220414140402.32e03e8c261b.I5e7dc6bc563a129b938c43298da6bb4e812400a5@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Bug: 233160029
(cherry picked from commit 1b550a0bebfc0b69d6ec08fe6eb58953a8aec48a)
Change-Id: Ic03ef23eb9b1ff97b01a3fb8f227e84004a17d2d
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
2022-06-01 09:32:34 -07:00
Johannes Berg b428445e8d UPSTREAM: cfg80211: remove cfg80211_get_chan_state()
We haven't used this function for years, since commit c781944b71
("cfg80211: Remove unused cfg80211_can_use_iftype_chan()") which
itself removed a function unused since commit 97dc94f1d9
("cfg80211: remove channel_switch combination check"), almost eight
years ago.

Also remove the now unused enum cfg80211_chan_mode and some struct
members that were only used for this function.

Link: https://lore.kernel.org/r/20220412220958.1a191dca19d7.Ide4448f02d0e2f1ca2992971421ffc1933a5370a@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Bug: 233160029
(cherry picked from commit 34c9a0e71cbb316f360919353273b185c2780cd7)
Change-Id: I287a54e33da467c5b3a128a7ed6eaade37f456bf
Signed-off-by: Veerendranath Jakkam <quic_vjakkam@quicinc.com>
2022-06-01 09:32:34 -07:00
Ramji Jiyani b24cd8be89 ANDROID: ABI: gki_defconfig: disable cfg80211 and mac80211
Remove CONFIG_CFG80211 and CONFIG_MAC80211 from gki_defconfig
to allow vendors to incorporate features that lands upstream
after KMI freeze.

Also need to update symbol lists since the related 80211
symbols are no longer exported from the core kernel.

Bug: 227176212
Test: TH
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
Change-Id: Ia680c2b38d5f13263e318f8c5eaa42f591385736
2022-06-01 09:32:34 -07:00
Woody Lin 246e34cdce ANDROID: debug_symbols: Add show_mem
Add show_mem symbol which will be used by the hard-lockup
debugging module to debug_symbols driver.

Bug: 199478662
Signed-off-by: Woody Lin <woodylin@google.com>
Change-Id: I479700e9f1428b4e1192881b4e3b67c9e43afbeb
2022-06-01 09:32:34 -07:00
Neeraj Upadhyay d8b0682620 ANDROID: gic-v3: Change GIC v3 vendor hook to restricted
Some of the irq migration paths call chip set affinity, after
current CPU is marked offline in cpu_online_mask. These
chip set affinity calls do not invoke vendor trace hooks.
So, convert gic_v3_set_affinity() vendor hook to a restricted
hook, to allow trace hook to be called from these irq migration
paths.

Bug: 187161770
Change-Id: I8f45536deb1ba1dc6be861ca4fc2b32306a5c50a
Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
(cherry picked from commit 3bd9ad7eb4a7cdd14a08859a1d1edee72883dd7d)
2022-06-01 09:32:34 -07:00
Jaewon Kim 83a568b771 ANDROID: blkdev: add oem data to block_device_operations
Add ANDROID_OEM_DATA to block_device_operations which allows a new
vendor specific function call.

Bug: 193106408
Signed-off-by: Jaewon Kim <jaewon31.kim@samsung.com>
Change-Id: I472f1cc25698c841841822908c4827545b8593df
2022-06-01 09:32:34 -07:00
Greg Kroah-Hartman ebba1d7eb7 Revert "Revert "oom_kill.c: futex: delay the OOM reaper to allow time for proper futex cleanup""
This reverts commit de109008b3.

It was originally reverted as it broke the abi but can now be safely
brought back.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ifaf9ed92b607bdce2e0da3daea3f90fd5136428c
2022-06-01 09:32:34 -07:00
Greg Kroah-Hartman eda21069fa Revert "Revert "netfilter: nft_ct: fix use after free when attaching zone template""
This reverts commit 6910f0f08b.

It was originally reverted as it broke the abi but can now be safely
brought back.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I18b7c0231c31517e2108febe00b07b0e661617a7
2022-06-01 09:32:33 -07:00
Greg Kroah-Hartman 4b85648b91 Revert "Revert "netfilter: conntrack: avoid useless indirection during conntrack destruction""
This reverts commit 8b226103c9.

It was originally reverted as it broke the abi but can now be safely
brought back.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: If91a2ea72060e1cadc14cdb18e5e8a6bfe54a594
2022-06-01 09:32:33 -07:00
Greg Kroah-Hartman 875f2eb55f Revert "Revert "netfilter: conntrack: convert to refcount_t api""
This reverts commit e80661dff2.

It was originally reverted as it broke the abi but can now be safely
brought back.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I8cd3d50680e6493d7aa4e714e3b6f343bda2dc9d
2022-06-01 09:32:33 -07:00
Greg Kroah-Hartman 9306af3c47 Revert "Revert "tcp: ensure to use the most recently sent skb when filling the rate sample""
This reverts commit 5deab346ca.

It was originally reverted as it broke the abi but can now be safely
brought back.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I1a084a80d2f0c669874468ad897c7d104016f1c6
2022-06-01 09:32:33 -07:00
Greg Kroah-Hartman 3efd03d0af Revert "Revert "ipv6: make ip6_rt_gc_expire an atomic_t""
This reverts commit 02428be2b4.

It was originally reverted as it broke the abi but can now be safely
brought back.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ic084ca493d3e00c9768afd28322fdbfc012db66a
2022-06-01 09:32:33 -07:00
Maciej Żenczykowski 8efe85f936 FROMGIT: xfrm: do not set IPv4 DF flag when encapsulating IPv6 frames <= 1280 bytes.
One may want to have DF set on large packets to support discovering
path mtu and limiting the size of generated packets (hence not
setting the XFRM_STATE_NOPMTUDISC tunnel flag), while still
supporting networks that are incapable of carrying even minimal
sized IPv6 frames (post encapsulation).

Having IPv4 Don't Frag bit set on encapsulated IPv6 frames that
are not larger than the minimum IPv6 mtu of 1280 isn't useful,
because the resulting ICMP Fragmentation Required error isn't
actionable (even assuming you receive it) because IPv6 will not
drop it's path mtu below 1280 anyway.  While the IPv4 stack
could prefrag the packets post encap, this requires the ICMP
error to be successfully delivered and causes a loss of the
original IPv6 frame (thus requiring a retransmit and latency
hit).  Luckily with IPv4 if we simply don't set the DF flag,
we'll just make further fragmenting the packets some other
router's problems.

We'll still learn the correct IPv4 path mtu through encapsulation
of larger IPv6 frames.

I'm still not convinced this patch is entirely sufficient to make
everything happy... but I don't see how it could possibly
make things worse.

See also recent:
  4ff2980b6bd2 'xfrm: fix tunnel model fragmentation behavior'
and friends

Cc: Lorenzo Colitti <lorenzo@google.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Lina Wang <lina.wang@mediatek.com>
Cc: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Maciej Zenczykowski <maze@google.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
(cherry picked from commit 6821ad8770340825f17962cf5ef64ebaffee7fd7 https://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git master)

Bug: 203183943
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ie7701ebc63b1e2a974114538befd278154eb3bc6
2022-06-01 08:52:42 +00:00
Nick Desaulniers 276a5eb83c ANDROID: uapi: icmp: Bionic compat with __unused
Building CONFIG_UAPI_HEADER_TEST=y with a Bionic (Android's libc) based
sysroot produces the following warning:

In file included from <built-in>:1:
./usr/include/linux/icmp.h💯3: warning: declaration does not declare
anything [-Wmissing-declarations]
__be16  __unused;
^~~~~~

This is because Bionic defines __unused to expand to
__attribute__((__unused__)). Bionic pre-processes kernel headers and
redefines __unused to __linux_unused.

Do so here to avoid issues that only appear for Bionic based sysroot
UAPI header tests.

Link: 4ebdeebef7/libc/include/sys/cdefs.h (95)
Link: 4ebdeebef7/libc/kernel/tools/defaults.py (70)
Bug: 190019968
Bug: 234125788
Reported-by: Matthias Männich<maennich@google.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Change-Id: I2341953cbfce8e28b982c34df2df4b3b364d63a6
2022-05-31 21:55:36 +00:00
Gokul krishna Krishnakumar 4fb4137d98 ANDROID: abi_gki_aarch64_qcom: Update qcom abi symbol list
Functions changes summary: 0 Removed, 0 Changed, 1 Added function
Variables changes summary: 0 Removed, 0 Changed, 1 Added variable

1 Added function:

  [A] 'function bool cfg80211_rx_control_port(net_device*, sk_buff*, bool)'

1 Added variable:

  [A] 'tracepoint __tracepoint_android_vh_rproc_recovery_set'

Bug: 231322691
Change-Id: Ia8f3512d8295daebac57e2c34d2073a9402b05d6
Signed-off-by: Gokul krishna Krishnakumar <quic_gokukris@quicinc.com>
2022-05-31 18:43:33 +00:00
Mark-PK Tsai 9986ab51f5 FROMLIST: remoteproc: Fix dma_mem leak after rproc_shutdown
Release dma coherent memory before rvdev is free in
rproc_rvdev_release().

Below is the kmemleak report:
unreferenced object 0xffffff8051c1a980 (size 128):
  comm "sh", pid 4895, jiffies 4295026604 (age 15481.896s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<000000003a0f3ec0>] dma_declare_coherent_memory+0x44/0x11c
    [<00000000ad243164>] rproc_add_virtio_dev+0xb8/0x20c
    [<00000000d219c8e9>] rproc_vdev_do_start+0x18/0x24
    [<00000000e694b468>] rproc_start+0x22c/0x3e0
    [<000000000b938941>] rproc_boot+0x4a4/0x860
    [<000000003c4dc532>] state_store.52856+0x10c/0x1b8
    [<00000000df2297ac>] dev_attr_store+0x34/0x84
    [<0000000083a53bdb>] sysfs_kf_write+0x60/0xbc
    [<000000008ed830df>] kernfs_fop_write+0x198/0x458
    [<0000000072b9ad06>] __vfs_write+0x50/0x210
    [<00000000377d7469>] vfs_write+0xe4/0x1a8
    [<00000000c3fc594e>] ksys_write+0x78/0x144
    [<000000009aef6f4b>] __arm64_sys_write+0x1c/0x28
    [<0000000003496a98>] el0_svc_common+0xc8/0x22c
    [<00000000ea3fe7a3>] el0_svc_compat_handler+0x1c/0x28
    [<00000000d1a85a4e>] el0_svc_compat+0x8/0x24

Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>

Bug: 233721768
Link: https://lore.kernel.org/lkml/20220422062436.14384-3-mark-pk.tsai@mediatek.com/
Change-Id: I77ba09a8cb86d90f6498e6a9e9747aa5c155c7da
Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
2022-05-31 17:49:00 +00:00
Mark-PK Tsai 8959369dd1 FROMLIST: dma-mapping: Add dma_release_coherent_memory to DMA API
Add dma_release_coherent_memory to DMA API to allow dma
user call it to release dev->dma_mem when the device is
removed.

Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>

Bug: 233721768
Link: https://lore.kernel.org/lkml/20220422062436.14384-2-mark-pk.tsai@mediatek.com/
Change-Id: Ief72cf5bbe18a977bae76a1e5799ebc06b46d791
Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
2022-05-31 17:48:53 +00:00
Prakruthi Deepak Heragu 5c61ca4304 UPSTREAM: arm64: paravirt: Use RCU read locks to guard stolen_time
During hotplug, the stolen time data structure is unmapped and memset.
There is a possibility of the timer IRQ being triggered before memset
and stolen time is getting updated as part of this timer IRQ handler. This
causes the below crash in timer handler -

  [ 3457.473139][    C5] Unable to handle kernel paging request at virtual address ffffffc03df05148
  ...
  [ 3458.154398][    C5] Call trace:
  [ 3458.157648][    C5]  para_steal_clock+0x30/0x50
  [ 3458.162319][    C5]  irqtime_account_process_tick+0x30/0x194
  [ 3458.168148][    C5]  account_process_tick+0x3c/0x280
  [ 3458.173274][    C5]  update_process_times+0x5c/0xf4
  [ 3458.178311][    C5]  tick_sched_timer+0x180/0x384
  [ 3458.183164][    C5]  __run_hrtimer+0x160/0x57c
  [ 3458.187744][    C5]  hrtimer_interrupt+0x258/0x684
  [ 3458.192698][    C5]  arch_timer_handler_virt+0x5c/0xa0
  [ 3458.198002][    C5]  handle_percpu_devid_irq+0xdc/0x414
  [ 3458.203385][    C5]  handle_domain_irq+0xa8/0x168
  [ 3458.208241][    C5]  gic_handle_irq.34493+0x54/0x244
  [ 3458.213359][    C5]  call_on_irq_stack+0x40/0x70
  [ 3458.218125][    C5]  do_interrupt_handler+0x60/0x9c
  [ 3458.223156][    C5]  el1_interrupt+0x34/0x64
  [ 3458.227560][    C5]  el1h_64_irq_handler+0x1c/0x2c
  [ 3458.232503][    C5]  el1h_64_irq+0x7c/0x80
  [ 3458.236736][    C5]  free_vmap_area_noflush+0x108/0x39c
  [ 3458.242126][    C5]  remove_vm_area+0xbc/0x118
  [ 3458.246714][    C5]  vm_remove_mappings+0x48/0x2a4
  [ 3458.251656][    C5]  __vunmap+0x154/0x278
  [ 3458.255796][    C5]  stolen_time_cpu_down_prepare+0xc0/0xd8
  [ 3458.261542][    C5]  cpuhp_invoke_callback+0x248/0xc34
  [ 3458.266842][    C5]  cpuhp_thread_fun+0x1c4/0x248
  [ 3458.271696][    C5]  smpboot_thread_fn+0x1b0/0x400
  [ 3458.276638][    C5]  kthread+0x17c/0x1e0
  [ 3458.280691][    C5]  ret_from_fork+0x10/0x20

As a fix, introduce rcu lock to update stolen time structure.

Fixes: 75df529bec ("arm64: paravirt: Initialize steal time when cpu is online")
Cc: stable@vger.kernel.org
Suggested-by: Will Deacon <will@kernel.org>
Signed-off-by: Prakruthi Deepak Heragu <quic_pheragu@quicinc.com>
Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
Reviewed-by: Srivatsa S. Bhat (VMware) <srivatsa@csail.mit.edu>
Link: https://lore.kernel.org/r/20220513174654.362169-1-quic_eberman@quicinc.com
Signed-off-by: Will Deacon <will@kernel.org>

(cherry picked from commit 19bef63f951e47dd4ba54810e6f7c7ff9344a3ef)
Bug: 231271475
Change-Id: Ib39f3b2ce2c472cdd427d26fa33178958e554e8a
Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
Signed-off-by: Will Deacon <willdeacon@google.com>
2022-05-30 18:35:18 +01:00
Elliot Berman a45661e426 Revert "FROMLIST: arm64: paravirt: Use RCU read locks to guard stolen_time"
This reverts commit b3c54971ba.

Reason for revert: switching to latest version merged into Linus's tree.

Bug: 231271475
Change-Id: I27745412e9ffbd4685d54c06e3aa975eb23347fa
Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
Signed-off-by: Will Deacon <willdeacon@google.com>
2022-05-30 18:35:00 +01:00
Will McVicker e43c6c7330 ANDROID: PCI: dwc: revert dwc 32-bit DMA mask for MSI address requirement
This reverts commit 99e629f14b ("PCI: dwc: Fix inverted condition of
DMA mask setup warning") and commit 660c486590 ("PCI: dwc: Set 32-bit
DMA mask for MSI target address allocation") in order to fix DW PCIe
host init issues on devices that support greater than 32-bit MSI target
address allocations. The bug was reported in [1] and the fix is
currently under review [2]. This change should be reverted once the
proper fix has merged upstream.

[1] https://lore.kernel.org/all/Yo0soniFborDl7+C@google.com/
[2] https://lore.kernel.org/all/20220525223316.388490-1-willmcvicker@google.com/

Bug: 232293973
Signed-off-by: Will McVicker <willmcvicker@google.com>
Change-Id: I2820743bbcbc09bfe4e12832b155e86997ef5cae
2022-05-27 15:19:30 -07:00
Vijayanand Jitta fc64dcbb7c ANDROID: abi_gki_aarch64_qcom: Update qcom abi symbol list
Update qcom abi symbol list with functions required for
minidump and msm_sysstats.

Leaf changes summary: 8 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 8 Added
functions
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added
variable

8 Added functions:

  [A] 'function int __nla_validate(const nlattr*, int, int, const nla_policy*, unsigned int, netlink_ext_ack*)'
  [A] 'function int cgroup_path_ns(cgroup*, char*, size_t, cgroup_namespace*)'
  [A] 'function nlattr* nla_find(const nlattr*, int, int)'
  [A] 'function nlattr* nla_reserve(sk_buff*, int, int)'
  [A] 'function nlattr* nla_reserve_64bit(sk_buff*, int, int, int)'
  [A] 'function unsigned long int pcpu_nr_pages()'
  [A] 'function pid_t pid_nr_ns(pid*, pid_namespace*)'
  [A] 'function unsigned long int vmalloc_nr_pages()'

Bug: 233972073
Change-Id: I398046c12e199e210e84921666243a03829c9018
Signed-off-by: Vijayanand Jitta <quic_vjitta@quicinc.com>
2022-05-27 18:37:16 +05:30
Ram Prakash Gupta 5bcf8db770 ANDROID: mmc: core: Export core functions required for clk scaling
Export core function required for clk scaling post design change.
This would help make clk scaling part of vendor module.

Bug: 231673818
Link: https://lore.kernel.org/lkml/1571668177-3766-2-git-send-email-rampraka@codeaurora.org/

Change-Id: I0c5eccb2052197b3a290f7322429cab679c5ade5
Signed-off-by: Nitin Rawat <nitirawa@codeaurora.org>
Signed-off-by: Ram Prakash Gupta <rampraka@codeaurora.org>
2022-05-27 01:14:25 +00:00