Commit Graph

1148666 Commits

Author SHA1 Message Date
Elliot Berman
fb09c80f7c FROMGIT: soc: qcom: geni-se: Move qcom-geni-se.h to linux/soc/qcom/geni-se.h
Move include/linux/qcom-geni-se.h to include/linux/soc/qcom/geni-se.h.
This removes 1 of a few remaining Qualcomm-specific headers into a more
approciate subdirectory under include/.

Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
Acked-by: Bjorn Andersson <andersson@kernel.org>
Acked-by: Wolfram Sang <wsa@kernel.org> # for I2C
Reviewed-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
Link: https://lore.kernel.org/r/20230203210133.3552796-1-quic_eberman@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 491581f40e
 https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git for-next)

Bug: 267697978
Change-Id: I4170dbbfc428d815b4341828d9b29ad059bd241e
Signed-off-by: Visweswara Tanuku <quic_vtanuku@quicinc.com>
2023-04-13 14:26:27 +00:00
Vincent Donnefort
56e6f8a2c8 ANDROID: CONFIG_PKVM_MODULE_PATH to /lib/modules/
Android places by default the modules into /lib/modules/ instead of using
the default path /lib/modules/<uname>.

Bug: 254835242
Change-Id: I49ed4be25c29302fc9b99a9f2ef5f1c84df3adc9
Signed-off-by: Vincent Donnefort <vdonnefort@google.com>
2023-04-13 08:32:05 +00:00
Vincent Donnefort
ba57835693 ANDROID: KVM: arm64: Add a fallback for pKVM module loading
Fallback to the default module path (/lib/modules/<uname>) if module
loading failed for the selected path in CONFIG_PKVM_MODULE_PATH. This
intends to follow the same mechanism as Android init.

Bug: 254835242
Change-Id: Ia7764d57fe71521e4a1fe6d2c85ba057790069a8
Signed-off-by: Vincent Donnefort <vdonnefort@google.com>
2023-04-13 08:32:05 +00:00
Vincent Donnefort
c8e53ed372 ANDROID: KVM: arm64: Add a custom module path for pKVM module loading
Currently, no module path will be given to modprobe when loading a pKVM
module, the module must then be found in /lib/modules/<uname>. Add
CONFIG_PKVM_MODULE_PATH to allow setting a different path from the
kernel config.

Bug: 254835242
Change-Id: I4f355518628b44ac03de2cee3d7a90e1ad5bf1e2
Signed-off-by: Vincent Donnefort <vdonnefort@google.com>
2023-04-13 08:32:05 +00:00
Will McVicker
39db5c7241 ANDROID: update the pixel symbol list
Add the symbols:
  kthread_create_on_cpu
  pm_runtime_get_if_active
  usb_udc_vbus_handler

Bug: 277396090
Change-Id: I29fc958d50cd28901333755d11001789215d1c57
Signed-off-by: Will McVicker <willmcvicker@google.com>
2023-04-12 21:01:15 +00:00
蔡宗軒
74975d13f3 ANDROID: Add ufs symbol for mtk
Add android_vh_ufs_clock_scaling to MTK symbol list

Bug: 277668337

Change-Id: Ieda17e4daff8ce5ee699fbfbf5d4238303b81ef2
Signed-off-by: Ed Tsai <ed.tsai@mediatek.com>
2023-04-12 18:38:23 +00:00
Sachin Gupta
e29773ec20 ANDROID: scsi: ufs: Add hook to influence the UFS clock scaling policy
Add a vendor hook in ufshcd_devfreq_target() to allow vendor modules to
influence the UFS clock scaling policy.

Bug: 277668337

Change-Id: I64b9b77661fffc6cc96fa610985483e6cfc6542b
Signed-off-by: Nitin Rawat <quic_nitirawa@quicinc.com>
Signed-off-by: Sachin Gupta <quic_sachgupt@quicinc.com>
Signed-off-by: Ed Tsai <ed.tsai@mediatek.com>
(cherry picked from commit c8ed7439af)
2023-04-12 18:38:23 +00:00
T.J. Alumbaugh
451d7c42ea UPSTREAM: mm: multi-gen LRU: simplify lru_gen_look_around()
Update the folio generation in place with or without
current->reclaim_state->mm_walk.  The LRU lock is held for longer, if
mm_walk is NULL and the number of folios to update is more than
PAGEVEC_SIZE.

This causes a measurable regression from the LRU lock contention during a
microbencmark.  But a tiny regression is not worth the complexity.

Link: https://lkml.kernel.org/r/20230118001827.1040870-8-talumbau@google.com
Change-Id: I9ce18b4f4062e6c1c13c98ece9422478eb8e1846
Signed-off-by: T.J. Alumbaugh <talumbau@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit abf086721a)
Bug: 274865848
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-12 16:02:15 +00:00
T.J. Alumbaugh
fae7f9ea58 UPSTREAM: mm: multi-gen LRU: improve walk_pmd_range()
Improve readability of walk_pmd_range() and walk_pmd_range_locked().

Link: https://lkml.kernel.org/r/20230118001827.1040870-7-talumbau@google.com
Change-Id: Ia084fbf53fe989673b7804ca8ca520af12d7d52a
Signed-off-by: T.J. Alumbaugh <talumbau@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit b5ff413361)
Bug: 274865848
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-12 16:02:15 +00:00
T.J. Alumbaugh
24307a538b UPSTREAM: mm: multi-gen LRU: improve lru_gen_exit_memcg()
Add warnings and poison ->next.

Link: https://lkml.kernel.org/r/20230118001827.1040870-6-talumbau@google.com
Change-Id: I53de9e04c1ae941e122b33cd45d2bbb5f34aae0c
Signed-off-by: T.J. Alumbaugh <talumbau@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 37cc99979d)
Bug: 274865848
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-12 16:02:15 +00:00
T.J. Alumbaugh
e1cf082319 UPSTREAM: mm: multi-gen LRU: section for memcg LRU
Move memcg LRU code into a dedicated section.  Improve the design doc to
outline its architecture.

Link: https://lkml.kernel.org/r/20230118001827.1040870-5-talumbau@google.com
Change-Id: Id252e420cff7a858acb098cf2b3642da5c40f602
Signed-off-by: T.J. Alumbaugh <talumbau@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 36c7b4db7c)
Bug: 274865848
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-12 16:02:15 +00:00
T.J. Alumbaugh
282363eb6f UPSTREAM: mm: multi-gen LRU: section for Bloom filters
Move Bloom filters code into a dedicated section.  Improve the design doc
to explain Bloom filter usage and connection between aging and eviction in
their use.

Link: https://lkml.kernel.org/r/20230118001827.1040870-4-talumbau@google.com
Change-Id: I73e866f687c1ed9f5c8538086aa39408b79897db
Signed-off-by: T.J. Alumbaugh <talumbau@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit ccbbbb8594)
Bug: 274865848
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-12 16:02:15 +00:00
T.J. Alumbaugh
4d8cf6f6f0 UPSTREAM: mm: multi-gen LRU: section for rmap/PT walk feedback
Add a section for lru_gen_look_around() in the code and the design doc.

Link: https://lkml.kernel.org/r/20230118001827.1040870-3-talumbau@google.com
Change-Id: I5097af63f61b3b69ec2abee6cdbdc33c296df213
Signed-off-by: T.J. Alumbaugh <talumbau@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit db19a43d9b)
Bug: 274865848
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-12 16:02:15 +00:00
T.J. Alumbaugh
014c372cc3 UPSTREAM: mm: multi-gen LRU: section for working set protection
Patch series "mm: multi-gen LRU: improve".

This patch series improves a few MGLRU functions, collects related
functions, and adds additional documentation.

This patch (of 7):

Add a section for working set protection in the code and the design doc.
The admin doc already contains its usage.

Link: https://lkml.kernel.org/r/20230118001827.1040870-1-talumbau@google.com
Link: https://lkml.kernel.org/r/20230118001827.1040870-2-talumbau@google.com
Change-Id: I65599075fd42951db7739a2ab7cee78516e157b3
Signed-off-by: T.J. Alumbaugh <talumbau@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 7b8144e63d)
Bug: 274865848
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-12 16:02:15 +00:00
Yu Zhao
8666944cf9 UPSTREAM: mm: support POSIX_FADV_NOREUSE
This patch adds POSIX_FADV_NOREUSE to vma_has_recency() so that the LRU
algorithm can ignore access to mapped files marked by this flag.

The advantages of POSIX_FADV_NOREUSE are:
1. Unlike MADV_SEQUENTIAL and MADV_RANDOM, it does not alter the
   default readahead behavior.
2. Unlike MADV_SEQUENTIAL and MADV_RANDOM, it does not split VMAs and
   therefore does not take mmap_lock.
3. Unlike MADV_COLD, setting it has a negligible cost, regardless of
   how many pages it affects.

Its limitations are:
1. Like POSIX_FADV_RANDOM and POSIX_FADV_SEQUENTIAL, it currently does
   not support range. IOW, its scope is the entire file.
2. It currently does not ignore access through file descriptors.
   Specifically, for the active/inactive LRU, given a file page shared
   by two users and one of them having set POSIX_FADV_NOREUSE on the
   file, this page will be activated upon the second user accessing
   it. This corner case can be covered by checking POSIX_FADV_NOREUSE
   before calling folio_mark_accessed() on the read path. But it is
   considered not worth the effort.

There have been a few attempts to support POSIX_FADV_NOREUSE, e.g., [1].
This time the goal is to fill a niche: a few desktop applications, e.g.,
large file transferring and video encoding/decoding, want fast file
streaming with mmap() rather than direct IO.  Among those applications, an
SVT-AV1 regression was reported when running with MGLRU [2].  The
following test can reproduce that regression.

  kb=$(awk '/MemTotal/ { print $2 }' /proc/meminfo)
  kb=$((kb - 8*1024*1024))

  modprobe brd rd_nr=1 rd_size=$kb
  dd if=/dev/zero of=/dev/ram0 bs=1M

  mkfs.ext4 /dev/ram0
  mount /dev/ram0 /mnt/
  swapoff -a

  fallocate -l 8G /mnt/swapfile
  mkswap /mnt/swapfile
  swapon /mnt/swapfile

  wget http://ultravideo.cs.tut.fi/video/Bosphorus_3840x2160_120fps_420_8bit_YUV_Y4M.7z
  7z e -o/mnt/ Bosphorus_3840x2160_120fps_420_8bit_YUV_Y4M.7z
  SvtAv1EncApp --preset 12 -w 3840 -h 2160 \
               -i /mnt/Bosphorus_3840x2160.y4m

For MGLRU, the following change showed a [9-11]% increase in FPS,
which makes it on par with the active/inactive LRU.

  patch Source/App/EncApp/EbAppMain.c <<EOF
  31a32
  > #include <fcntl.h>
  35d35
  < #include <fcntl.h> /* _O_BINARY */
  117a118
  >             posix_fadvise(config->mmap.fd, 0, 0, POSIX_FADV_NOREUSE);
  EOF

[1] https://lore.kernel.org/r/1308923350-7932-1-git-send-email-andrea@betterlinux.com/
[2] https://openbenchmarking.org/result/2209259-PTS-MGLRU8GB57

Link: https://lkml.kernel.org/r/20221230215252.2628425-2-yuzhao@google.com
Change-Id: I0b7f5f971d78014ea1ba44cee6a8ec902a4330d0
Signed-off-by: Yu Zhao <yuzhao@google.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Andrea Righi <andrea.righi@canonical.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michael Larabel <Michael@MichaelLarabel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 17e810229c)
Bug: 274865848
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-12 16:02:15 +00:00
Yu Zhao
6ddfdb3d53 UPSTREAM: mm: add vma_has_recency()
Add vma_has_recency() to indicate whether a VMA may exhibit temporal
locality that the LRU algorithm relies on.

This function returns false for VMAs marked by VM_SEQ_READ or
VM_RAND_READ.  While the former flag indicates linear access, i.e., a
special case of spatial locality, both flags indicate a lack of temporal
locality, i.e., the reuse of an area within a relatively small duration.

"Recency" is chosen over "locality" to avoid confusion between temporal
and spatial localities.

Before this patch, the active/inactive LRU only ignored the accessed bit
from VMAs marked by VM_SEQ_READ.  After this patch, the active/inactive
LRU and MGLRU share the same logic: they both ignore the accessed bit if
vma_has_recency() returns false.

For the active/inactive LRU, the following fio test showed a [6, 8]%
increase in IOPS when randomly accessing mapped files under memory
pressure.

  kb=$(awk '/MemTotal/ { print $2 }' /proc/meminfo)
  kb=$((kb - 8*1024*1024))

  modprobe brd rd_nr=1 rd_size=$kb
  dd if=/dev/zero of=/dev/ram0 bs=1M

  mkfs.ext4 /dev/ram0
  mount /dev/ram0 /mnt/
  swapoff -a

  fio --name=test --directory=/mnt/ --ioengine=mmap --numjobs=8 \
      --size=8G --rw=randrw --time_based --runtime=10m \
      --group_reporting

The discussion that led to this patch is here [1].  Additional test
results are available in that thread.

[1] https://lore.kernel.org/r/Y31s%2FK8T85jh05wH@google.com/

Link: https://lkml.kernel.org/r/20221230215252.2628425-1-yuzhao@google.com
Change-Id: I291dcb795197659e40e46539cd32b857677c34ad
Signed-off-by: Yu Zhao <yuzhao@google.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Andrea Righi <andrea.righi@canonical.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michael Larabel <Michael@MichaelLarabel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 8788f67814)
Bug: 274865848
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-12 16:02:15 +00:00
Todd Kjos
9cd2f3498d ANDROID: 4/12/2023 KMI update
Set KMI_GENERATION=4 for 4/12 KMI update

1 function symbol(s) removed
  'int of_mdiobus_register(struct mii_bus*, struct device_node*)'

2 function symbol(s) added
  'void* memremap_pages(struct dev_pagemap*, int)'
  'void memunmap_pages(struct dev_pagemap*)'

function symbol changed from 'bool cfg80211_rx_control_port(struct net_device*, struct sk_buff*, bool)' to 'bool cfg80211_rx_control_port(struct net_device*, struct sk_buff*, bool, int)'
  CRC changed from 0x19c30d56 to 0x70d8333f
  type changed from 'bool(struct net_device*, struct sk_buff*, bool)' to 'bool(struct net_device*, struct sk_buff*, bool, int)'
    parameter 4 of type 'int' was added

function symbol 'struct block_device* I_BDEV(struct inode*)' changed
  CRC changed from 0xc79e45c3 to 0xbf847796

function symbol 'void __ClearPageMovable(struct page*)' changed
  CRC changed from 0x4cf602fa to 0xd312e35b

function symbol 'void __SetPageMovable(struct page*, const struct movable_operations*)' changed
  CRC changed from 0x60f5778b to 0x9c92af65

... 3672 omitted; 3675 symbols have only CRC changes

type 'struct pglist_data' changed
  byte size changed from 7168 to 9088
  member changed from 'struct zone node_zones[3]' to 'struct zone node_zones[4]'
    type changed from 'struct zone[3]' to 'struct zone[4]'
      number of elements changed from 3 to 4
  member 'struct zonelist node_zonelists[1]' changed
    offset changed by 12800
  22 members ('int nr_zones' .. 'unsigned long totalreserve_pages') changed
    offset changed by 12928
  3 members ('struct cacheline_padding _pad1_' .. 'struct lruvec __lruvec') changed
    offset changed by 13312
  2 members ('unsigned long flags' .. 'struct lru_gen_mm_walk mm_walk') changed
    offset changed by 14848
  member 'struct lru_gen_memcg memcg_lru' changed
    offset changed by 15104
  3 members ('struct cacheline_padding _pad2_' .. 'atomic_long_t vm_stat[42]') changed
    offset changed by 15360

type 'struct iommu_group' changed
  byte size changed from 208 to 224
  member 'struct xarray pasid_array' was added
  11 members ('struct mutex mutex' .. 'void* owner') changed
    offset changed by 128

type 'struct iommu_domain' changed
  byte size changed from 72 to 88
  member 'iommu_fault_handler_t handler' was removed
  member 'void* handler_token' was removed
  2 members ('struct iommu_domain_geometry geometry' .. 'struct iommu_dma_cookie* iova_cookie') changed
    offset changed by -128
  member 'enum iommu_page_response_code(* iopf_handler)(struct iommu_fault*, void*)' was added
  member 'void* fault_data' was added
  member 'union { struct { iommu_fault_handler_t handler; void* handler_token; }; struct { struct mm_struct* mm; int users; }; }' was added

type 'struct iommu_device' changed
  byte size changed from 40 to 48
  member 'u32 max_pasids' was added

type 'struct iommu_ops' changed
  byte size changed from 152 to 136
  member 'struct iommu_sva*(* sva_bind)(struct device*, struct mm_struct*, void*)' was removed
  member 'void(* sva_unbind)(struct iommu_sva*)' was removed
  member 'u32(* sva_get_pasid)(struct iommu_sva*)' was removed
  2 members ('int(* page_response)(struct device*, struct iommu_fault_event*, struct iommu_page_response*)' .. 'int(* def_domain_type)(struct device*)') changed
    offset changed by -192
  member 'void(* remove_dev_pasid)(struct device*, ioasid_t)' was added
  3 members ('const struct iommu_domain_ops* default_domain_ops' .. 'struct module* owner') changed
    offset changed by -128

type 'struct vm_event_state' changed
  byte size changed from 728 to 752
  member changed from 'unsigned long event[91]' to 'unsigned long event[94]'
    type changed from 'unsigned long[91]' to 'unsigned long[94]'
      number of elements changed from 91 to 94

type 'struct dev_iommu' changed
  byte size changed from 72 to 80
  member 'u32 max_pasids' was added

type 'struct io_uring_cmd' changed
  member changed from 'union { void(* task_work_cb)(struct io_uring_cmd*); void* cookie; }' to 'union { void(* task_work_cb)(struct io_uring_cmd*, unsigned int); void* cookie; }'
    type changed from 'union { void(* task_work_cb)(struct io_uring_cmd*); void* cookie; }' to 'union { void(* task_work_cb)(struct io_uring_cmd*, unsigned int); void* cookie; }'
      member changed from 'void(* task_work_cb)(struct io_uring_cmd*)' to 'void(* task_work_cb)(struct io_uring_cmd*, unsigned int)'
        type changed from 'void(*)(struct io_uring_cmd*)' to 'void(*)(struct io_uring_cmd*, unsigned int)'
          pointed-to type changed from 'void(struct io_uring_cmd*)' to 'void(struct io_uring_cmd*, unsigned int)'
            parameter 2 of type 'unsigned int' was added

type 'struct dentry_operations' changed
  member changed from 'void(* d_canonical_path)(const struct path*, struct path*)' to 'int(* d_canonical_path)(const struct path*, struct path*)'
    type changed from 'void(*)(const struct path*, struct path*)' to 'int(*)(const struct path*, struct path*)'
      pointed-to type changed from 'void(const struct path*, struct path*)' to 'int(const struct path*, struct path*)'
        return type changed from 'void' to 'int'

type 'struct fscrypt_operations' changed
  byte size changed from 72 to 104
  member 'u64 android_kabi_reserved1' was added
  member 'u64 android_kabi_reserved2' was added
  member 'u64 android_kabi_reserved3' was added
  member 'u64 android_kabi_reserved4' was added

type 'struct zone' changed
  member changed from 'long lowmem_reserve[3]' to 'long lowmem_reserve[4]'
    type changed from 'long[3]' to 'long[4]'
      number of elements changed from 3 to 4
  15 members ('struct pglist_data* zone_pgdat' .. 'int initialized') changed
    offset changed by 64

type 'struct zonelist' changed
  byte size changed from 64 to 80
  member changed from 'struct zoneref _zonerefs[4]' to 'struct zoneref _zonerefs[5]'
    type changed from 'struct zoneref[4]' to 'struct zoneref[5]'
      number of elements changed from 4 to 5

type 'enum zone_type' changed
  enumerator 'ZONE_DEVICE' (3) was added
  enumerator '__MAX_NR_ZONES' value changed from 3 to 4

type 'struct lruvec' changed
  byte size changed from 1224 to 1416
  2 members ('struct lru_gen_mm_state mm_state' .. 'struct pglist_data* pgdat') changed
    offset changed by 1536

type 'struct lru_gen_mm_walk' changed
  byte size changed from 152 to 184
  member changed from 'int nr_pages[4][2][3]' to 'int nr_pages[4][2][4]'
    type changed from 'int[4][2][3]' to 'int[4][2][4]'
      element type changed from 'int[2][3]' to 'int[2][4]'
        element type changed from 'int[3]' to 'int[4]'
          number of elements changed from 3 to 4
  4 members ('int mm_stats[6]' .. 'bool force_scan') changed
    offset changed by 256

type 'struct iommu_domain_ops' changed
  byte size changed from 112 to 120
  member 'int(* set_dev_pasid)(struct iommu_domain*, struct device*, ioasid_t)' was added
  12 members ('int(* map)(struct iommu_domain*, unsigned long, phys_addr_t, size_t, int, gfp_t)' .. 'void(* free)(struct iommu_domain*)') changed
    offset changed by 64

type 'struct mem_cgroup_per_node' changed
  byte size changed from 2096 to 2328
  2 members ('struct lruvec_stats_percpu* lruvec_stats_percpu' .. 'struct lruvec_stats lruvec_stats') changed
    offset changed by 1536
  member changed from 'unsigned long lru_zone_size[3][5]' to 'unsigned long lru_zone_size[4][5]'
    offset changed from 15232 to 16768
    type changed from 'unsigned long[3][5]' to 'unsigned long[4][5]'
      number of elements changed from 3 to 4
  6 members ('struct mem_cgroup_reclaim_iter iter' .. 'struct mem_cgroup* memcg') changed
    offset changed by 1856

type 'struct lru_gen_folio' changed
  byte size changed from 960 to 1152
  member changed from 'struct list_head folios[4][2][3]' to 'struct list_head folios[4][2][4]'
    type changed from 'struct list_head[4][2][3]' to 'struct list_head[4][2][4]'
      element type changed from 'struct list_head[2][3]' to 'struct list_head[2][4]'
        element type changed from 'struct list_head[3]' to 'struct list_head[4]'
          number of elements changed from 3 to 4
  member changed from 'long nr_pages[4][2][3]' to 'long nr_pages[4][2][4]'
    offset changed from 3520 to 4544
    type changed from 'long[4][2][3]' to 'long[4][2][4]'
      element type changed from 'long[2][3]' to 'long[2][4]'
        element type changed from 'long[3]' to 'long[4]'
          number of elements changed from 3 to 4
  9 members ('unsigned long avg_refaulted[2][4]' .. 'struct hlist_nulls_node list') changed
    offset changed by 1536

Bug: 277759776
Change-Id: I31065f7aa7589d55cf402ed8e00da061cffe1246
Signed-off-by: Todd Kjos <tkjos@google.com>
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2023-04-12 03:00:45 +00:00
Carlos Llamas
6937d457bb ANDROID: ABI: remove stale symbol
The following symbol was removed by commit c2b6e1a440 ("net: mdio: fix
owner field for mdio buses registered using device-tree"). It also needs
to be removed from this symbol list to reflect this update.

- of_mdiobus_register

Bug: 277759776
Change-Id: I4ab79a86f13404c2d0b2e423154aaa8b512bc1c4
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2023-04-12 03:00:45 +00:00
Paul Lawrence
fc80823b24 ANDROID: fuse: Support errors from fuse daemon in canonical path
Previously errors from the daemon in FUSE_CANONICAL_PATH were simply
ignored. In order to block inotifys, it is useful to be able to return
errors from this opcode.

Bug: 238619640
Test: inotify no longer works on /storage/emulated/0/Android/media but
      does on child folders
Signed-off-by: Paul Lawrence <paullawrence@google.com>
Change-Id: Icb15c090c6286c174338471a787712f8388de316
2023-04-12 02:08:29 +00:00
Chris Goldsworthy
e92cb4aa7f ANDROID: abi_gki_aarch64_qcom: Add memremap_pages and memunmap_pages
2 function symbol(s) added
  'void* memremap_pages(struct dev_pagemap*, int)'
  'void memunmap_pages(struct dev_pagemap*)'

Add the memremap_pages() and memunmap_pages() functions exposed by
CONFIG_ZONE_DEVICE, in order to allow drivers to map device memory in
the logical mapping using memremap_pages().

Bug: 274657829
Change-Id: I4dfcbdbb1d2493f4137c356ba1d1a9679156cfed
Signed-off-by: Chris Goldsworthy <quic_cgoldswo@quicinc.com>
2023-04-12 02:08:29 +00:00
Chris Goldsworthy
1a232af233 ANDROID: Enable CONFIG_ZONE_DEVICE
Enable CONFIG_ZONE_DEVICE to allow drivers to map device memory in the
logical mapping using memremap_pages().

Bug: 274657829
Change-Id: Ie4ac78b7667ddb5ea20c7f4ed2b0df127012008a
Signed-off-by: Chris Goldsworthy <quic_cgoldswo@quicinc.com>
2023-04-12 02:08:29 +00:00
Greg Kroah-Hartman
82d7430336 Revert "Revert "block/io_uring: pass in issue_flags for uring_cmd task_work handling""
This reverts commit d608563925.

It was perserving the ABI, but that is not needed anymore at this point
in time.

Change-Id: I4198b98bd5c4012501237c4498de164e65f1a1c3
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-12 02:08:28 +00:00
Greg Kroah-Hartman
b5a0500018 Revert "Revert "net: mdio: fix owner field for mdio buses registered using device-tree""
This reverts commit d9f36cae1c.

It was perserving the ABI, but that is not needed anymore at this point
in time.

Change-Id: I9f883317631792227d5cc365cfd84fb5e745c434
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-12 02:08:28 +00:00
Johannes Berg
694bd10c65 FROMGIT: wifi: cfg80211/mac80211: report link ID on control port RX
For control port RX, report the link ID for MLO.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230301115906.fe06dfc3791b.Iddcab94789cafe336417be406072ce8a6312fc2d@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Bug: 276829568
Change-Id: I87689a284e64df2471f3cff284f7067926e9d535
(cherry picked from commit 4c532321bf
https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main)
Signed-off-by: Shivani Baranwal <quic_shivbara@quicinc.com>
2023-04-12 02:08:28 +00:00
Lu Baolu
358fda2fd9 UPSTREAM: iommu: Rename iommu-sva-lib.{c,h}
Rename iommu-sva-lib.c[h] to iommu-sva.c[h] as it contains all code
for SVA implementation in iommu core.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-14-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 757636ed26)
Bug: 271394577
Change-Id: Ie6030ca74f7f8c1c3901736004bb3be48fa88d09
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:28 +00:00
Lu Baolu
45db9aa175 UPSTREAM: iommu: Per-domain I/O page fault handling
Tweak the I/O page fault handling framework to route the page faults to
the domain and call the page fault handler retrieved from the domain.
This makes the I/O page fault handling framework possible to serve more
usage scenarios as long as they have an IOMMU domain and install a page
fault handler in it. Some unused functions are also removed to avoid
dead code.

The iommu_get_domain_for_dev_pasid() which retrieves attached domain
for a {device, PASID} pair is used. It will be used by the page fault
handling framework which knows {device, PASID} reported from the iommu
driver. We have a guarantee that the SVA domain doesn't go away during
IOPF handling, because unbind() won't free the domain until all the
pending page requests have been flushed from the pipeline. The drivers
either call iopf_queue_flush_dev() explicitly, or in stall case, the
device driver is required to flush all DMAs including stalled
transactions before calling unbind().

This also renames iopf_handle_group() to iopf_handler() to avoid
confusing.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-13-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 4bb4211e48)
Bug: 271394577
Change-Id: I5f8762d04f43b64fd76cdbbbcddb9740c7449746
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:28 +00:00
Lu Baolu
4fffcc165c UPSTREAM: iommu: Prepare IOMMU domain for IOPF
This adds some mechanisms around the iommu_domain so that the I/O page
fault handling framework could route a page fault to the domain and
call the fault handler from it.

Add pointers to the page fault handler and its private data in struct
iommu_domain. The fault handler will be called with the private data
as a parameter once a page fault is routed to the domain. Any kernel
component which owns an iommu domain could install handler and its
private parameter so that the page fault could be further routed and
handled.

This also prepares the SVA implementation to be the first consumer of
the per-domain page fault handling model. The I/O page fault handler
for SVA is copied to the SVA file with mmget_not_zero() added before
mmap_read_lock().

Suggested-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-12-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 8cc93159f9)
Bug: 271394577
Change-Id: Ibf0c080875760a2ad789770885eb6c8db7170cbe
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:28 +00:00
Lu Baolu
e9cca501c0 UPSTREAM: iommu: Remove SVA related callbacks from iommu ops
These ops'es have been deprecated. There's no need for them anymore.
Remove them to avoid dead code.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-11-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 1c263576f4)
Bug: 271394577
Change-Id: I1aabfaa1ec5bb671bc7c6e476a6c011e34efeca9
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:28 +00:00
Lu Baolu
840b255c54 UPSTREAM: iommu/sva: Refactoring iommu_sva_bind/unbind_device()
The existing iommu SVA interfaces are implemented by calling the SVA
specific iommu ops provided by the IOMMU drivers. There's no need for
any SVA specific ops in iommu_ops vector anymore as we can achieve
this through the generic attach/detach_dev_pasid domain ops.

This refactors the IOMMU SVA interfaces implementation by using the
iommu_attach/detach_device_pasid interfaces and align them with the
concept of the SVA iommu domain. Put the new SVA code in the SVA
related file in order to make it self-contained.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-10-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit be51b1d6bb)
Bug: 271394577
Change-Id: I4f17688c8659a6ed2e0433ab5afd95f6f7860d3b
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:27 +00:00
Lu Baolu
6fc9f366de UPSTREAM: arm-smmu-v3/sva: Add SVA domain support
Add support for SVA domain allocation and provide an SVA-specific
iommu_domain_ops. This implementation is based on the existing SVA
code. Possible cleanup and refactoring are left for incremental
changes later.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Link: https://lore.kernel.org/r/20221031005917.45690-9-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 386fa64fd5)
Bug: 271394577
Change-Id: Ieecb6e5467640b773eff82e1c1ca6860a5d2abaf
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:27 +00:00
Lu Baolu
1b14567e71 UPSTREAM: iommu/vt-d: Add SVA domain support
Add support for SVA domain allocation and provide an SVA-specific
iommu_domain_ops. This implementation is based on the existing SVA
code. Possible cleanup and refactoring are left for incremental
changes later.

The VT-d driver will also need to support setting a DMA domain to a
PASID of device. Current SVA implementation uses different data
structures to track the domain and device PASID relationship. That's
the reason why we need to check the domain type in remove_dev_pasid
callback. Eventually we'll consolidate the data structures and remove
the need of domain type check.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-8-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit eaca8889a1)
Bug: 271394577
Change-Id: I09fcc5817810f3f351dd5fa6e22e3b5f304005ce
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:27 +00:00
Lu Baolu
33991390ac UPSTREAM: iommu: Add IOMMU SVA domain support
The SVA iommu_domain represents a hardware pagetable that the IOMMU
hardware could use for SVA translation. This adds some infrastructures
to support SVA domain in the iommu core. It includes:

- Extend the iommu_domain to support a new IOMMU_DOMAIN_SVA domain
  type. The IOMMU drivers that support allocation of the SVA domain
  should provide its own SVA domain specific iommu_domain_ops.
- Add a helper to allocate an SVA domain. The iommu_domain_free()
  is still used to free an SVA domain.

The report_iommu_fault() should be replaced by the new
iommu_report_device_fault(). Leave the existing fault handler with the
existing users and the newly added SVA members excludes it.

Suggested-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-7-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 136467962e)
Bug: 271394577
Change-Id: I0c6ce7f05f76d7cdcaab5ecd3ad0cf72bbff7d03
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:27 +00:00
Lu Baolu
119fbcf43c UPSTREAM: iommu: Add attach/detach_dev_pasid iommu interfaces
Attaching an IOMMU domain to a PASID of a device is a generic operation
for modern IOMMU drivers which support PASID-granular DMA address
translation. Currently visible usage scenarios include (but not limited):

 - SVA (Shared Virtual Address)
 - kernel DMA with PASID
 - hardware-assist mediated device

This adds the set_dev_pasid domain ops for setting the domain onto a
PASID of a device and remove_dev_pasid iommu ops for removing any setup
on a PASID of device. This also adds interfaces for device drivers to
attach/detach/retrieve a domain for a PASID of a device.

If multiple devices share a single group, it's fine as long the fabric
always routes every TLP marked with a PASID to the host bridge and only
the host bridge. For example, ACS achieves this universally and has been
checked when pci_enable_pasid() is called. As we can't reliably tell the
source apart in a group, all the devices in a group have to be considered
as the same source, and mapped to the same PASID table.

The DMA ownership is about the whole device (more precisely, iommu group),
including the RID and PASIDs. When the ownership is converted, the pasid
array must be empty. This also adds necessary checks in the DMA ownership
interfaces.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-6-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 1660370455)
Bug: 271394577
Change-Id: I8057b72c3db7b83cd26c1b0ceeb81eeeff97c6f3
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:27 +00:00
Lu Baolu
db8a6a29f4 UPSTREAM: PCI: Enable PASID only when ACS RR & UF enabled on upstream path
The Requester ID/Process Address Space ID (PASID) combination
identifies an address space distinct from the PCI bus address space,
e.g., an address space defined by an IOMMU.

But the PCIe fabric routes Memory Requests based on the TLP address,
ignoring any PASID (PCIe r6.0, sec 2.2.10.4), so a TLP with PASID that
SHOULD go upstream to the IOMMU may instead be routed as a P2P
Request if its address falls in a bridge window.

To ensure that all Memory Requests with PASID are routed upstream,
only enable PASID if ACS P2P Request Redirect and Upstream Forwarding
are enabled for the path leading to the device.

Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
Suggested-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-5-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 201007ef70)
Bug: 271394577
Change-Id: I302e3c26cd5d3a0122f4ef52a0191959aef574c0
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:27 +00:00
Lu Baolu
36db10b1ad UPSTREAM: iommu: Remove SVM_FLAG_SUPERVISOR_MODE support
The current kernel DMA with PASID support is based on the SVA with a flag
SVM_FLAG_SUPERVISOR_MODE. The IOMMU driver binds the kernel memory address
space to a PASID of the device. The device driver programs the device with
kernel virtual address (KVA) for DMA access. There have been security and
functional issues with this approach:

- The lack of IOTLB synchronization upon kernel page table updates.
  (vmalloc, module/BPF loading, CONFIG_DEBUG_PAGEALLOC etc.)
- Other than slight more protection, using kernel virtual address (KVA)
  has little advantage over physical address. There are also no use
  cases yet where DMA engines need kernel virtual addresses for in-kernel
  DMA.

This removes SVM_FLAG_SUPERVISOR_MODE support from the IOMMU interface.
The device drivers are suggested to handle kernel DMA with PASID through
the kernel DMA APIs.

The drvdata parameter in iommu_sva_bind_device() and all callbacks is not
needed anymore. Cleanup them as well.

Link: https://lore.kernel.org/linux-iommu/20210511194726.GP1002214@nvidia.com/
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Fenghua Yu <fenghua.yu@intel.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-4-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 942fd5435d)
Bug: 271394577
Change-Id: I568663921ccb4af3898806d576e3d7b605157d32
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:27 +00:00
Lu Baolu
102cc9b4ac UPSTREAM: iommu: Add max_pasids field in struct dev_iommu
Use this field to save the number of PASIDs that a device is able to
consume. It is a generic attribute of a device and lifting it into the
per-device dev_iommu struct could help to avoid the boilerplate code
in various IOMMU drivers.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-3-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 22d2c7afb3)
Bug: 271394577
Change-Id: I92e21b945fd09563ac6bfe99165ce72d952b4b45
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:27 +00:00
Lu Baolu
a789a7ef1a UPSTREAM: iommu: Add max_pasids field in struct iommu_device
Use this field to keep the number of supported PASIDs that an IOMMU
hardware is able to support. This is a generic attribute of an IOMMU
and lifting it into the per-IOMMU device structure makes it possible
to allocate a PASID for device without calls into the IOMMU drivers.
Any iommu driver that supports PASID related features should set this
field before enabling them on the devices.

In the Intel IOMMU driver, intel_iommu_sm is moved to CONFIG_INTEL_IOMMU
enclave so that the pasid_supported() helper could be used in dmar.c
without compilation errors.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
Link: https://lore.kernel.org/r/20221031005917.45690-2-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>

(cherry picked from commit 1adf3cc20d)
Bug: 271394577
Change-Id: I64f01079ffca23d28eb1d8c8d4e72afcbf197430
Signed-off-by: Michael Shavit <mshavit@google.com>
2023-04-12 02:08:26 +00:00
Eric Biggers
1bc680b30b ANDROID: GKI: fscrypt: add ABI padding to struct fscrypt_operations
'struct fscrypt_operations' shouldn't really be part of the KMI, as
there's no reason for loadable modules to use it.  However, due to the
way MODVERSIONS calculates symbol CRCs by recursively dereferencing
structures, changes to 'struct fscrypt_operations' affect the CRCs of
KMI functions exported from certain core kernel files such as
fs/dcache.c.  That brings it in-scope for the KMI freeze.

Therefore, add some reserved fields to this struct for LTS updates.

Bug: 151154716
Change-Id: Ic3bf66c93a9be167a0a5b257bd55e2719d99a1b4
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jung Jinwoo <j7093.jung@samsung.com>
2023-04-12 02:07:44 +00:00
Subash Abhinov Kasiviswanathan
3e4bbbe103 ANDROID: abi_gki_aarch64_qcom: Add sock_gen_put
Add the symbol sock_gen_put which is needed by rmnet modules.

Symbols added:
   sock_gen_put

Bug: 277377865
Change-Id: Ie98c2269ae7f1f4022dcf84973d9d00d5fa927c5
Signed-off-by: Subash Abhinov Kasiviswanathan <quic_subashab@quicinc.com>
2023-04-11 19:24:11 +00:00
Will Deacon
d56ad70977 ANDROID: arm64: Implement hypervisor workaround for SoCs with DMA beyond the PoC
SoCs featuring peripherals that can issue non-coherent DMA traffic
beyond the point of coherency (PoC) present multiple challenges for the
DMA-API implementation in Linux. Many of these challenges can be
overcome by suitable configuration of the interconnect, however the
presence of a cacheable alias for non-cacheable buffers can still lead
to coherence issues arising when stale clean lines are back-snooped from
the cache hierarchy to satisfy a non-cacheable transaction at the PoC.

Removing all cacheable aliases on a case-by-cases basis is both
error-prone and expensive. Instead, leverage the stage-2 identity
mapping installed by pKVM to enforce consistent cacheability for all
stage-1 aliases.

Bug: 240786634
Change-Id: I78b0aa51fe3e23811bbd25481173086aa957c4bf
Signed-off-by: Will Deacon <willdeacon@google.com>
2023-04-11 18:14:02 +00:00
fengqi
732a9ff82f ANDROID: GKI: add symbol list file for xiaomi
add abi_gki_aarch64_xiaomi

INFO: 59 function symbol(s) added
  'void __blk_mq_end_request(struct request*, blk_status_t)'
  'struct scsi_device* __scsi_add_device(struct Scsi_Host*, uint, uint, u64, void*)'
  'int __traceiter_android_vh_binder_transaction_init(void*, struct binder_transaction*)'
  'int __traceiter_android_vh_binder_wait_for_work(void*, bool, struct binder_thread*, struct binder_proc*)'
  'void balance_dirty_pages_ratelimited(struct address_space*)'
  'struct backing_dev_info* bdi_alloc(int)'
  'void bdi_put(struct backing_dev_info*)'
  'int bdi_register(struct backing_dev_info*, const char*, ...)'
  'void blk_mq_freeze_queue(struct request_queue*)'
  'struct request_queue* blk_mq_init_queue(struct blk_mq_tag_set*)'
  'void blk_mq_tagset_busy_iter(struct blk_mq_tag_set*, busy_tag_iter_fn*, void*)'
  'void blk_mq_unfreeze_queue(struct request_queue*)'
  'void blk_queue_update_dma_alignment(struct request_queue*, int)'
  'void blk_queue_update_dma_pad(struct request_queue*, unsigned int)'
  'bool blk_update_request(struct request*, blk_status_t, unsigned int)'
  'void bsg_job_done(struct bsg_job*, int, unsigned int)'
  'void bsg_remove_queue(struct request_queue*)'
  'struct request_queue* bsg_setup_queue(struct device*, const char*, bsg_job_fn*, bsg_timeout_fn*, int)'
  'void deactivate_locked_super(struct super_block*)'
  'void dev_pm_opp_remove(struct device*, unsigned long)'
  'const char* drm_get_connector_type_name(unsigned int)'
  'void generic_shutdown_super(struct super_block*)'
  'int gpio_request_array(const struct gpio*, size_t)'
  'void lockref_get(struct lockref*)'
  'void logfc(struct fc_log*, const char*, char, const char*, ...)'
  'int lookup_bdev(const char*, dev_t*)'
  'void* mempool_alloc_pages(gfp_t, void*)'
  'void mempool_free_pages(void*, void*)'
  'int mempool_resize(mempool_t*, int)'
  'struct nvmem_device* nvmem_register(const struct nvmem_config*)'
  'void nvmem_unregister(struct nvmem_device*)'
  'struct page* read_cache_page(struct address_space*, unsigned long, filler_t*, struct file*)'
  'int scsi_add_host_with_dma(struct Scsi_Host*, struct device*, struct device*)'
  'int scsi_change_queue_depth(struct scsi_device*, int)'
  'struct scsi_device* scsi_device_lookup(struct Scsi_Host*, uint, uint, u64)'
  'int scsi_dma_map(struct scsi_cmnd*)'
  'void scsi_dma_unmap(struct scsi_cmnd*)'
  'struct Scsi_Host* scsi_host_alloc(struct scsi_host_template*, int)'
  'struct Scsi_Host* scsi_host_lookup(unsigned short)'
  'void scsi_host_put(struct Scsi_Host*)'
  'int scsi_is_host_device(const struct device*)'
  'void scsi_print_command(struct scsi_cmnd*)'
  'void scsi_remove_host(struct Scsi_Host*)'
  'void scsi_report_bus_reset(struct Scsi_Host*, int)'
  'void scsi_scan_host(struct Scsi_Host*)'
  'struct super_block* sget_fc(struct fs_context*, int(*)(struct super_block*, struct fs_context*), int(*)(struct super_block*, struct fs_context*))'
  'int ufshcd_alloc_host(struct device*, struct ufs_hba**)'
  'int ufshcd_config_pwr_mode(struct ufs_hba*, struct ufs_pa_layer_attr*)'
  'void ufshcd_dealloc_host(struct ufs_hba*)'
  'int ufshcd_hba_enable(struct ufs_hba*)'
  'int ufshcd_make_hba_operational(struct ufs_hba*)'
  'void ufshcd_update_evt_hist(struct ufs_hba*, u32, u32)'
  'int utf16s_to_utf8s(const wchar_t*, int, enum utf16_endian, u8*, int)'
  'void wait_for_device_probe()'
  'int wakeup_sources_read_lock()'
  'void wakeup_sources_read_unlock(int)'
  'struct wakeup_source* wakeup_sources_walk_next(struct wakeup_source*)'
  'struct wakeup_source* wakeup_sources_walk_start()'
  'int blk_mq_alloc_sq_tag_set(struct blk_mq_tag_set*, const struct blk_mq_ops*, unsigned int, unsigned int)'

3 variable symbol(s) added
  'struct tracepoint __tracepoint_android_vh_binder_transaction_init'
  'struct tracepoint __tracepoint_android_vh_binder_wait_for_work'
  'u64 jiffies_64'

Bug: 276850920

Change-Id: Ibc65a0bfb3332072be7bea17e0aea48277043510
Signed-off-by: fengqi <fengqi@xiaomi.com>
2023-04-11 15:57:31 +00:00
Zhipeng Wang
710a5d9ce1 ANDROID: Add initial symbols list for imx
Initial symbol list for imx that adds it to the build and does not add
any new symbols at this point in time.

Bug: 277651618
Change-Id: I19d4463295bc2f2a22fa5983765a20838d8615ce
Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-11 15:53:23 +00:00
Chun-Hung Wu
24c39824c8 ANDROID: Add initial symbol list for mtk
Add initial MTK symbol list and add to the build system.

Bug: 277305001
Change-Id: I3944eb4517c5040dac4fb8769907800af3b5495e
Signed-off-by: Chun-Hung Wu <chun-hung.wu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-11 15:53:23 +00:00
Elliot Berman
a4d96d91da ANDROID: virt: gunyah: Move arch_is_gh_guest under RM probe
Some Qualcomm firmwares may crash on the "Call UID" query to hypervisor.
This call is made to check which hypervisor implmenetation Linux may be
a guest under. Move this check under the Gunyah RM driver probe so that
it is only made when Gunyah is definitely present.

This patch is destined for version 12 of the Gunyah patches posted to
kernel.org.

https://lore.kernel.org/all/20230304010632.2127470-1-quic_eberman@quicinc.com/

Bug: 268234781
Reported-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: I17499344b3b3f992cf93d99da9a0b9d16434602c
Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
2023-04-11 15:26:03 +00:00
Neill Kapron
a8277bfc87 ANDROID: GKI: Enable CONFIG_USB_CONFIGFS_F_UAC2
Enable UAC2 function driver in x86 gki_defconfig for feature parity with
arm64 gki_defconfig.

Bug: 277271545
Change-Id: I4c602a2e791ecc03dc7d63c131dbe0982f1998c8
Signed-off-by: Neill Kapron <nkapron@google.com>
(cherry picked from commit a6ef8539c18177fbd541cc577ddd6562c9c343a1)
2023-04-10 22:43:58 +00:00
Will McVicker
cdecdc14f5 ANDROID: Update the pixel symbol list
Add suspend_set_ops and vprintk_emit.

Bug: 277396090
Change-Id: I25cdc4a5c45530fefc5f7ca31aa098285f6bc5d1
Signed-off-by: Will McVicker <willmcvicker@google.com>
2023-04-10 19:52:12 +00:00
Adrien Thierry
702d62d943 BACKPORT: FROMLIST: Revert "scsi: ufs: core: Initialize devfreq synchronously"
This reverts commit 7dafc3e007.

This patch introduced a regression [1] where hba->pwr_info is used
before being initialized, which could create issues in
ufshcd_scale_gear(). Revert it until a better solution is found.

[1] https://lore.kernel.org/all/CAGaU9a_PMZhqv+YJ0r3w-hJMsR922oxW6Kg59vw+oen-NZ6Otw@mail.gmail.com

Fixes: 7dafc3e007 ("scsi: ufs: core: Initialize devfreq synchronously")
Change-Id: I83fcf15852f51ca24aa14700ea3d5a9c1bd721ec
Signed-off-by: Adrien Thierry <athierry@redhat.com>
[ bvanassche: left out the struct ufs_hba changes because of the GKI ]
Link: https://lore.kernel.org/linux-scsi/20230329205426.46393-1-athierry@redhat.com/
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-04-10 16:25:29 +00:00
Stephen Dickey
0bcb2dc28c ANDROID: abi_gki_aarch64_qcom: update abi
Update the qcom symbol list for task_rq_lock

Symbols added:
   task_rq_lock

Bug: 277199661
Change-Id: I53163927610bbe110af1e02b8f91fa5af3a1f742
Signed-off-by: Stephen Dickey <quic_dickey@quicinc.com>
2023-04-07 18:47:38 -07:00
Guru Das Srinagesh
86136fdb8d ANDROID: abi_gki_aarch64_qcom: Further update symbol list
Add the following symbols to sync device list with ACK.

Symbols added:
   drm_atomic_get_old_private_obj_state
   insert_resource
   msi_first_desc
   msi_next_desc
   remove_resource
   ufshcd_mcq_config_esi
   ufshcd_mcq_enable_esi
   ufshcd_mcq_poll_cqe_nolock
   ufshcd_mcq_write_cqis
   ufshcd_system_freeze
   ufshcd_system_restore
   ufshcd_system_thaw

Some symbols have merely been sorted correctly:
   blkdev_get_by_dev
   power_supply_reg_notifier
   power_supply_unreg_notifier
   si_swapinfo
   __traceiter_android_rvh_shmem_get_folio
   __tracepoint_android_rvh_shmem_get_folio

Some symbols were added in duplicate. Remove them:
   sync_file_create
   sync_file_get_fence
   drm_mode_prune_invalid
   drm_connector_list_update

Bug: 277087114
Change-Id: Iddf4ea6e9a7f7d9fdd36099bd00d3b36ad6593b0
Signed-off-by: Guru Das Srinagesh <quic_gurus@quicinc.com>
2023-04-07 17:50:23 +00:00
Ramji Jiyani
f65b52f60d ANDROID: GKI: Convert 80211 modules as unprotected
Convert cfg80211 & mac80211 GKI modules as unprotected.
This allows vendors to override these modules with
unsigned vendor versions.

Bug: 274416891
Test: TH
Change-Id: I2d064c968f304b62d3b704611aaa11de1eb2762b
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2023-04-07 17:25:45 +00:00