Commit Graph

979688 Commits

Author SHA1 Message Date
Greg Kroah-Hartman
e722f1d83b Merge 5.10.49 into android12-5.10-lts
Changes in 5.10.49
	KVM: PPC: Book3S HV: Save and restore FSCR in the P9 path
	media: uvcvideo: Support devices that report an OT as an entity source
	Hexagon: fix build errors
	Hexagon: add target builtins to kernel
	Hexagon: change jumps to must-extend in futex_atomic_*
	xen/events: reset active flag for lateeoi events later
	Linux 5.10.49

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ieb1bda402419f08614fbb1b0208a83c6df0abf2d
2021-07-11 21:43:53 +02:00
Greg Kroah-Hartman
9c4e6d448c Merge 5.10.48 into android12-5.10-lts
Changes in 5.10.48
	scsi: sr: Return appropriate error code when disk is ejected
	gpio: mxc: Fix disabled interrupt wake-up support
	drm/nouveau: fix dma_address check for CPU/GPU sync
	gpio: AMD8111 and TQMX86 require HAS_IOPORT_MAP
	RDMA/mlx5: Block FDB rules when not in switchdev mode
	Revert "KVM: x86/mmu: Drop kvm_mmu_extended_role.cr4_la57 hack"
	Linux 5.10.48

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ie66f49fdd4e28b369b134dfb99aab7c0f0e3bd18
2021-07-11 21:42:51 +02:00
Greg Kroah-Hartman
904ad453ba Linux 5.10.49
Link: https://lore.kernel.org/r/20210709131537.035851348@linuxfoundation.org
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Fox Chen <foxhlchen@gmail.com>
Tested-by: Shuah Khan <skhan@linuxfoundation.org>
Tested-by: Hulk Robot <hulkrobot@huawei.com>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Pavel Machek (CIP) <pavel@denx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-11 12:53:32 +02:00
Juergen Gross
064b57a8da xen/events: reset active flag for lateeoi events later
commit 3de218ff39 upstream.

In order to avoid a race condition for user events when changing
cpu affinity reset the active flag only when EOI-ing the event.

This is working fine as all user events are lateeoi events. Note that
lateeoi_ack_mask_dynirq() is not modified as there is no explicit call
to xen_irq_lateeoi() expected later.

Cc: stable@vger.kernel.org
Reported-by: Julien Grall <julien@xen.org>
Fixes: b6622798bc ("xen/events: avoid handling the same event on two cpus at the same time")
Tested-by: Julien Grall <julien@xen.org>
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrvsky@oracle.com>
Link: https://lore.kernel.org/r/20210623130913.9405-1-jgross@suse.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-11 12:53:31 +02:00
Sid Manning
a245f6842d Hexagon: change jumps to must-extend in futex_atomic_*
commit 6fff7410f6 upstream.

Cross-section jumps from .fixup section must be extended.

Signed-off-by: Sid Manning <sidneym@codeaurora.org>
Signed-off-by: Brian Cain <bcain@codeaurora.org>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-11 12:53:31 +02:00
Sid Manning
a7f51048c5 Hexagon: add target builtins to kernel
commit f1f99adf05 upstream.

Add the compiler-rt builtins like memcpy to the hexagon kernel.

Signed-off-by: Sid Manning <sidneym@codeaurora.org>
Add SYM_FUNC_START/END, ksyms exports
Signed-off-by: Brian Cain <bcain@codeaurora.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-11 12:53:31 +02:00
Sid Manning
243f325ecc Hexagon: fix build errors
commit 788dcee030 upstream.

Fix type-o in ptrace.c.
Add missing include: asm/hexagon_vm.h
Remove superfluous cast.
Replace 'p3_0' with 'preds'.

Signed-off-by: Sid Manning <sidneym@codeaurora.org>
Add -mlong-calls to build flags.
Signed-off-by: Brian Cain <bcain@codeaurora.org>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-11 12:53:30 +02:00
Laurent Pinchart
8148665cb7 media: uvcvideo: Support devices that report an OT as an entity source
commit 4ca052b4ea upstream.

Some devices reference an output terminal as the source of extension
units. This is incorrect, as output terminals only have an input pin,
and thus can't be connected to any entity in the forward direction. The
resulting topology would cause issues when registering the media
controller graph. To avoid this problem, connect the extension unit to
the source of the output terminal instead.

While at it, and while no device has been reported to be affected by
this issue, also handle forward scans where two output terminals would
be connected together, and skip the terminals found through such an
invalid connection.

Reported-and-tested-by: John Nealy <jnealy3@yahoo.com>

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-11 12:53:30 +02:00
Fabiano Rosas
d5737410d2 KVM: PPC: Book3S HV: Save and restore FSCR in the P9 path
commit 25edcc50d7 upstream.

The Facility Status and Control Register is a privileged SPR that
defines the availability of some features in problem state. Since it
can be written by the guest, we must restore it to the previous host
value after guest exit.

This restoration is currently done by taking the value from
current->thread.fscr, which in the P9 path is not enough anymore
because the guest could context switch the QEMU thread, causing the
guest-current value to be saved into the thread struct.

The above situation manifested when running a QEMU linked against a
libc with System Call Vectored support, which causes scv
instructions to be run by QEMU early during the guest boot (during
SLOF), at which point the FSCR is 0 due to guest entry. After a few
scv calls (1 to a couple hundred), the context switching happens and
the QEMU thread runs with the guest value, resulting in a Facility
Unavailable interrupt.

This patch saves and restores the host value of FSCR in the inner
guest entry loop in a way independent of current->thread.fscr. The old
way of doing it is still kept in place because it works for the old
entry path.

Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Cc: Georgy Yakovlev <gyakovlev@gentoo.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-11 12:53:30 +02:00
Sasha Levin
a09a522772 Linux 5.10.48
Tested-by: Fox Chen <foxhlchen@gmail.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Shuah Khan <skhan@linuxfoundation.org>
Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
Tested-by: Pavel Machek (CIP) <pavel@denx.de>
Tested-by: Hulk Robot <hulkrobot@huawei.com>
Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-07-07 08:27:50 -04:00
Sean Christopherson
4dc9680428 Revert "KVM: x86/mmu: Drop kvm_mmu_extended_role.cr4_la57 hack"
commit f71a53d118 upstream.

Restore CR4.LA57 to the mmu_role to fix an amusing edge case with nested
virtualization.  When KVM (L0) is using TDP, CR4.LA57 is not reflected in
mmu_role.base.level because that tracks the shadow root level, i.e. TDP
level.  Normally, this is not an issue because LA57 can't be toggled
while long mode is active, i.e. the guest has to first disable paging,
then toggle LA57, then re-enable paging, thus ensuring an MMU
reinitialization.

But if L1 is crafty, it can load a new CR4 on VM-Exit and toggle LA57
without having to bounce through an unpaged section.  L1 can also load a
new CR3 on exit, i.e. it doesn't even need to play crazy paging games, a
single entry PML5 is sufficient.  Such shenanigans are only problematic
if L0 and L1 use TDP, otherwise L1 and L2 share an MMU that gets
reinitialized on nested VM-Enter/VM-Exit due to mmu_role.base.guest_mode.

Note, in the L2 case with nested TDP, even though L1 can switch between
L2s with different LA57 settings, thus bypassing the paging requirement,
in that case KVM's nested_mmu will track LA57 in base.level.

This reverts commit 8053f924ca.

Fixes: 8053f924ca ("KVM: x86/mmu: Drop kvm_mmu_extended_role.cr4_la57 hack")
Cc: stable@vger.kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20210622175739.3610207-6-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-07 08:22:47 -04:00
Mark Bloch
4ab869e028 RDMA/mlx5: Block FDB rules when not in switchdev mode
commit edc0b0bccc upstream.

Allow creating FDB steering rules only when in switchdev mode.

The only software model where a userspace application can manipulate
FDB entries is when it manages the eswitch. This is only possible in
switchdev mode where we expose a single RDMA device with representors
for all the vports that are connected to the eswitch.

Fixes: 52438be441 ("RDMA/mlx5: Allow inserting a steering rule to the FDB")
Link: https://lore.kernel.org/r/e928ae7c58d07f104716a2a8d730963d1bd01204.1623052923.git.leonro@nvidia.com
Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
[sudip: use old mlx5_eswitch_mode]
Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-07 08:22:47 -04:00
Johannes Berg
348143a380 gpio: AMD8111 and TQMX86 require HAS_IOPORT_MAP
[ Upstream commit c6414e1a2b ]

Both of these drivers use ioport_map(), so they need to
depend on HAS_IOPORT_MAP. Otherwise, they cannot be built
even with COMPILE_TEST on architectures without an ioport
implementation, such as ARCH=um.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-07-07 08:22:46 -04:00
Christian König
45ca6df5df drm/nouveau: fix dma_address check for CPU/GPU sync
[ Upstream commit d330099115 ]

AGP for example doesn't have a dma_address array.

Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210614110517.1624-1-christian.koenig@amd.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-07-07 08:22:46 -04:00
Loic Poulain
d191c3d6ad gpio: mxc: Fix disabled interrupt wake-up support
[ Upstream commit 3093e6cca3 ]

A disabled/masked interrupt marked as wakeup source must be re-enable
and unmasked in order to be able to wake-up the host. That can be done
by flaging the irqchip with IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND.

Note: It 'sometimes' works without that change, but only thanks to the
lazy generic interrupt disabling (keeping interrupt unmasked).

Reported-by: Michal Koziel <michal.koziel@emlogic.no>
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-07-07 08:22:46 -04:00
ManYi Li
f77f972384 scsi: sr: Return appropriate error code when disk is ejected
[ Upstream commit 7dd753ca59 ]

Handle a reported media event code of 3. This indicates that the media has
been removed from the drive and user intervention is required to proceed.
Return DISK_EVENT_EJECT_REQUEST in that case.

Link: https://lore.kernel.org/r/20210611094402.23884-1-limanyi@uniontech.com
Signed-off-by: ManYi Li <limanyi@uniontech.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-07-07 08:22:46 -04:00
Greg Kroah-Hartman
c37b834212 Merge branch 'android12-5.10' into android12-5.10-lts
Sync up with android12-5.10 for the following commits:

4e90d52c82 ANDROID: GKI: 7/2/2021 KMI update
6ae626fd8e ANDROID: ABI: hikey960_gki.fragment: Add cfg80211 and mac80211 as modules
7d8c327a64 ANDROID: ABI: gki_defconfig: Make cfg80211 and mac80211 modules
ee12781f0c Revert "ANDROID: GKI: Enable some necessary CFG80211 configs for WIFI"
25c500f2dc Revert "ANDROID: dmabuf: Add mmap_count to struct dmabuf"
32f0fa685c Revert "ANDROID: dma-buf: Don't change vm_ops if vm_file changes"
f45304d091 ANDROID: GKI: mmc: add Android ABI padding to some structures
00d9f57a69 ANDROID: GKI: Add rproc coredump APIs to symbol list
3136de9b19 ANDROID: GKI: Add remoteproc vendor hook symbols
019990276b ANDROID: rproc: Add vendor hook for recovery
df80ec7469 ANDROID: sched: Add vendor data in struct cfs_rq
3ad47a04c9 ANDROID: Add oem data array for async binder transaction
4b7c035626 UPSTREAM: mm: relocate 'write_protect_seq' in struct mm_struct
f9fcdaeab7 ANDROID: sched: remove regular vendor hooks for 32bit execve
19316b4889 ANDROID: GKI: enable CONFIG_BLK_CGROUP_IOCOST
1f23e139ad ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_tags
5b388812e8 ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_ctx
3a0675c6ca ANDROID: GKI: Add ANDROID_OEM_DATA in struct request_queue
cebb002b99 ANDROID: ABI: update virtual device symbols for CAN
b971e8ab32 ANDROID: Add CONFIG_CAN=y to gki_defconfig
d6a486a194 FROMLIST: scsi: ufs: Make HCM parameter configurable
fbf68bf104 FROMLIST: scsi: ufs: Add support for HCM
dd41ce5581 FROMLIST: scsi: ufs: Do not send umap_all in host control mode
5e463110fb FROMLIST: scsi: ufs: Limit the number of inflight rb
76aa39a9f2 FROMLIST: scsi: ufs: Add "Cold" regions timer
992cbc0e10 FROMLIST: scsi: ufs: Add hpb dev reset response
dbf4aa202c FROMLIST: scsi: ufs: Region inactivation in HCM
d5b978446c FROMLIST: scsi: ufs: Eviction in HCM
a782d4350f FROMLIST: scsi: ufs: Add region's reads counter
ac898f51d1 FROMLIST: scsi: ufs: Transform set_dirty to iterate_rgn
a210fd6f26 FROMLIST: scsi: ufs: Add HCM support to rsp_upiu
bce9649c9f FROMLIST: scsi: ufs: Cache HPB Control mode on init
756ecd96f6 FROMLIST: scsi: ufs: Add HPB 2.0 support
7be6123e72 FROMLIST: scsi: ufs: Prepare HPB read for cached sub-region
466f620a31 FROMLIST: scsi: ufs: L2P map management for HPB read
791e1c6968 FROMLIST: scsi: ufs: Introduce HPB feature
e35b90b784 FROMGIT: block/mq-deadline: Prioritize high-priority requests
855265c76e FROMGIT: block/mq-deadline: Add cgroup support
6981c53a67 FROMGIT: block/mq-deadline: Track I/O statistics
e3880a66fa FROMGIT: block/mq-deadline: Add I/O priority support
63544e140b FROMGIT: block/mq-deadline: Micro-optimize the batching algorithm
179aecb2b2 FROMGIT: block/mq-deadline: Reserve 25% of scheduler tags for synchronous requests
f3daa8d50a FROMGIT: block/mq-deadline: Improve the sysfs show and store macros
af7003062c FROMGIT: block/mq-deadline: Improve compile-time argument checking
d3cebf1cf0 FROMGIT: block/mq-deadline: Rename dd_init_queue() and dd_exit_queue()
4c5a1f31b3 FROMGIT: block/mq-deadline: Remove two local variables
d0d50fe4b4 FROMGIT: block/mq-deadline: Add two lockdep_assert_held() statements
dfc5e14a36 FROMGIT: block/mq-deadline: Add several comments
46d6ae07a7 FROMGIT: block: Introduce the ioprio rq-qos policy
16b9fe8a3a FROMGIT: block/blk-rq-qos: Move a function from a header file into a C file
87d38ebe74 FROMGIT: block/blk-cgroup: Swap the blk_throtl_init() and blk_iolatency_init() calls
3271c9261a FROMGIT: block/Kconfig: Make the BLK_WBT and BLK_WBT_MQ entries consecutive
a749efa728 FROMGIT: bfq/mq-deadline: remove redundant check for passthrough request
d7d0098f24 FROMGIT: blk-mq: Improve performance of non-mq IO schedulers with multiple HW queues
7445a59eed FROMGIT: Revert "blk-mq, elevator: Count requests per hctx to improve performance"
72fa98b514 FROMLIST: scsi: ufs: add missing host_lock in setup_xfer_req
e0288fd779 Revert "Revert "FROMGIT: scsi: ufs: Utilize Transfer Request List Completion Notification Register""
9c0d749a4b Revert "Revert "BACKPORT: FROMGIT: scsi: ufs: Optimize host lock on transfer requests send/compl paths""
3b3bec8866 Revert "Revert "KMI: BACKPORT: FROMGIT: scsi: ufs: Optimize host lock on transfer requests send/compl paths""
8d2e1c8a3e ANDROID: Update the ABI representation
aebdd1ae36 ANDROID: GKI: Update abi_gki_aarch64_qcom for oom_check_panic symbol
22a57c542b ANDROID: sched: Add trace for __setscheduler_uclamp
5eb3930a32 ANDROID: usb: export built-in tracepoint functions
7d216e2512 ANDROID: Fix lost track action type in save_track_hash
06d75deb06 ANDROID: ABI: update for new qcom symbols
1eda1085fe ANDROID: abi_gki_aarch64_qcom: Update ufs symbol list
a97617ccb4 ANDROID: GKI: Update abi_gki_aarch64_qcom for logbuf_pr_cont tracepoint
872e0b9f75 ANDROID: Update symbol list for mtk
f32369e83f ANDROID: dma-buf: heaps: export defer-free list size
e0a9556041 ANDROID: media: v4l2-core: extend the v4l2 subdev ioctl to support request

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I60c85d06348e03c8d8c1c739e8eed3418441c920
2021-07-02 10:15:20 +02:00
Todd Kjos
4e90d52c82 ANDROID: GKI: 7/2/2021 KMI update
Set KMI_GENERATION=8 for 7/2 KMI update

Leaf changes summary: 3604 artifacts changed (2 filtered out)
Changed leaf types summary: 18 (2 filtered out) leaf types changed
Removed/Changed/Added functions summary: 121 Removed, 3342 Changed, 55 Added functions
Removed/Changed/Added variables summary: 3 Removed, 62 Changed, 3 Added variables

121 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_send_event_skb(sk_buff*, gfp_t)'
  [D] 'function void __ieee80211_schedule_txq(ieee80211_hw*, ieee80211_txq*, bool)'
  [D] 'function int __traceiter_android_vh_force_compatible_post(void*, void*)'
  [D] 'function int __traceiter_android_vh_force_compatible_pre(void*, void*)'
  [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_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_radar_event(wiphy*, cfg80211_chan_def*, gfp_t)'
  [D] 'function void cfg80211_ready_on_channel(wireless_dev*, u64, ieee80211_channel*, unsigned int, gfp_t)'
  [D] 'function void cfg80211_remain_on_channel_expired(wireless_dev*, u64, ieee80211_channel*, gfp_t)'
  [D] 'function void cfg80211_roamed(net_device*, cfg80211_roam_info*, gfp_t)'
  [D] 'function bool cfg80211_rx_mgmt_khz(wireless_dev*, int, int, const u8*, size_t, u32)'
  [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_sched_scan_stopped_rtnl(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_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 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 sk_buff* ieee80211_ap_probereq_get(ieee80211_hw*, ieee80211_vif*)'
  [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_chswitch_done(ieee80211_vif*, bool)'
  [D] 'function void ieee80211_connection_loss(ieee80211_vif*)'
  [D] 'function void ieee80211_cqm_beacon_loss_notify(ieee80211_vif*, gfp_t)'
  [D] 'function void ieee80211_cqm_rssi_notify(ieee80211_vif*, nl80211_cqm_rssi_threshold_event, s32, gfp_t)'
  [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 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 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_interfaces(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 sk_buff* ieee80211_nullfunc_get(ieee80211_hw*, ieee80211_vif*, bool)'
  [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 sk_buff* ieee80211_pspoll_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_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_sched_scan_results(ieee80211_hw*)'
  [D] 'function void ieee80211_sched_scan_stopped(ieee80211_hw*)'
  [D] 'function int ieee80211_sta_ps_transition(ieee80211_sta*, bool)'
  [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_rx_ba_session(ieee80211_vif*, u16, const u8*)'
  [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 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 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(wiphy*, bool)'
  [D] 'function ieee80211_hw* wiphy_to_ieee80211_hw(wiphy*)'
  [D] 'function void wiphy_unregister(wiphy*)'

55 Added functions:

  [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 void __put_net(net*)'
  [A] 'function int __sock_create(net*, int, int, int, socket**, int)'
  [A] 'function int __traceiter_android_vh_rproc_recovery(void*, rproc*)'
  [A] 'function sk_buff* alloc_can_err_skb(net_device*, can_frame**)'
  [A] 'function sk_buff* alloc_can_skb(net_device*, can_frame**)'
  [A] 'function net_device* alloc_candev_mqs(int, unsigned int, unsigned int, unsigned int)'
  [A] 'function void arc4_crypt(arc4_ctx*, u8*, const u8*, unsigned int)'
  [A] 'function int arc4_setkey(arc4_ctx*, const u8*, unsigned int)'
  [A] 'function int can_change_mtu(net_device*, int)'
  [A] 'function void can_free_echo_skb(net_device*, unsigned int)'
  [A] 'function unsigned int can_get_echo_skb(net_device*, unsigned int)'
  [A] 'function int can_put_echo_skb(sk_buff*, net_device*, unsigned int)'
  [A] 'function void close_candev(net_device*)'
  [A] 'function u32 crc32_be(u32, const unsigned char*, size_t)'
  [A] 'function dentry* debugfs_rename(dentry*, dentry*, dentry*, const char*)'
  [A] 'function int dev_change_net_namespace(net_device*, net*, const char*)'
  [A] 'function void dev_fetch_sw_netstats(rtnl_link_stats64*, const pcpu_sw_netstats*)'
  [A] 'function void free_candev(net_device*)'
  [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 void key_put(key*)'
  [A] 'function key* keyring_alloc(const char*, kuid_t, kgid_t, const cred*, key_perm_t, unsigned long int, key_restriction*, key*)'
  [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 int open_candev(net_device*)'
  [A] 'function int register_candev(net_device*)'
  [A] 'function bool rfkill_blocked(rfkill*)'
  [A] 'function void rfkill_pause_polling(rfkill*)'
  [A] 'function void rfkill_resume_polling(rfkill*)'
  [A] 'function bool rfkill_set_hw_state(rfkill*, bool)'
  [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 void rproc_coredump(rproc*)'
  [A] 'function void rproc_coredump_cleanup(rproc*)'
  [A] 'function int skb_checksum_help(sk_buff*)'
  [A] 'function sk_buff* skb_clone_sk(sk_buff*)'
  [A] 'function void skb_complete_wifi_ack(sk_buff*, bool)'
  [A] 'function void sock_efree(sk_buff*)'
  [A] 'function void tty_hangup(tty_struct*)'
  [A] 'function int tty_mode_ioctl(tty_struct*, file*, unsigned int, unsigned long int)'
  [A] 'function void unregister_candev(net_device*)'
  [A] 'function void usb_anchor_urb(urb*, usb_anchor*)'
  [A] 'function void usb_kill_anchored_urbs(usb_anchor*)'
  [A] 'function void usb_unanchor_urb(urb*)'
  [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()'

3342 functions with some sub-type change:

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

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

  [C] 'function void __SetPageMovable(page*, address_space*)' at compaction.c:130:1 has some sub-type changes:
    CRC (modversions) changed from 0xd7b7b883 to 0x7389406a

  ... 3339 omitted; 3342 symbols have only CRC changes

3 Removed variables:

  [D] 'tracepoint __tracepoint_android_vh_force_compatible_post'
  [D] 'tracepoint __tracepoint_android_vh_force_compatible_pre'
  [D] 'const unsigned char rfc1042_header[6]'

3 Added variables:

  [A] 'tracepoint __tracepoint_android_vh_rproc_recovery'
  [A] 'const char hex_asc_upper[17]'
  [A] 'const kobj_ns_type_operations net_ns_type_operations'

62 Changed variables:

  [C] 'net init_net' was changed at net_namespace.c:47:1:
    size of symbol changed from 4416 to 4544
    CRC (modversions) changed from 0x144cd521 to 0x661d880a
    type of variable changed:
      type size changed from 35328 to 36352 (in bits)
      1 data member insertion:
        'netns_can can', at offset 34368 (in bits) at net_namespace.h:183:1
      there are data member changes:
        2 ('netns_xdp xdp' .. 'sock* diag_nlsk') offsets changed (by +1408 bits)
      3735 impacted interfaces

  [C] 'rq runqueues' was changed at core.c:56:1:
    size of symbol changed from 4544 to 4672
    CRC (modversions) changed from 0x3e534b4f to 0x27777ba4
    type of variable changed:
      type size changed from 36352 to 37376 (in bits)
      there are data member changes:
        type 'struct cfs_rq' of 'rq::cfs' changed:
          type size changed from 3072 to 4096 (in bits)
          1 data member insertion:
            'u64 android_vendor_data1[16]', at offset 2752 (in bits) at sched.h:617:1
          3735 impacted interfaces
        61 ('rt_rq rt' .. 'u64 android_kabi_reserved4') offsets changed (by +1024 bits)
      3735 impacted interfaces

  [C] 'bus_type amba_bustype' was changed at bus.c:215:1:
    CRC (modversions) changed from 0x13c06cac to 0x1f5d98ee

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

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

  ... 57 omitted; 60 symbols have only CRC changes

'enum attr_idn at ufs.h:128:1' changed:
  type size hasn't changed
  1 enumerator deletion:
    'attr_idn::QUERY_ATTR_IDN_RESERVED' value '1'
  1 enumerator insertion:
    'attr_idn::QUERY_ATTR_IDN_MAX_HPB_SINGLE_CMD' value '1'
  2 impacted interfaces
'struct binder_transaction at binder_internal.h:547:1' changed:
  type size changed from 1280 to 1408 (in bits)
  1 data member insertion:
    'u64 android_oem_data1[2]', at offset 1280 (in bits) at binder_internal.h:575:1
  4 impacted interfaces

'struct bio at blk_types.h:205:1' changed:
  type size changed from 1152 to 1216 (in bits)
  1 data member insertion:
    'u64 bi_iocost_cost', at offset 704 (in bits) at blk_types.h:234:1
  there are data member changes:
    2 ('bio_crypt_ctx* bi_crypt_context' .. 'bool bi_skip_dm_default_key') offsets changed (by +64 bits)
    anonymous data member 'union {}' offset changed from 776 to 840 (in bits) (by +64 bits)
    8 ('unsigned short int bi_vcnt' .. 'bio_vec bi_inline_vecs[]') offsets changed (by +64 bits)
  3735 impacted interfaces

'struct blk_mq_ctx at blk-mq.h:18:1' changed:
  type size changed from 2048 to 2560 (in bits)
  1 data member insertion:
    'u64 android_oem_data1[2]', at offset 2048 (in bits) at blk-mq.h:39:1
  3735 impacted interfaces

'struct blk_mq_hw_ctx at blk-mq.h:16:1' changed:
  type size hasn't changed
  1 data member deletion:
    'atomic_t elevator_queued', at offset 3424 (in bits) at blk-mq.h:145:1
  3735 impacted interfaces

'struct blk_mq_tags at blk-mq-tag.h:8:1' changed:
  type size changed from 1600 to 1664 (in bits)
  1 data member insertion:
    'u64 android_oem_data1', at offset 1600 (in bits) at blk-mq-tag.h:30:1
  3735 impacted interfaces

'struct cfs_rq at sched.h:530:1' changed:
  details were reported earlier

'struct dma_buf at dma-buf.h:397:1' changed:
  type size changed from 3520 to 2240 (in bits)
  3 data member deletions:
    'int mmap_count', at offset 2240 (in bits) at dma-buf.h:430:1
    'const vm_operations_struct* exp_vm_ops', at offset 2304 (in bits) at dma-buf.h:431:1
    'vm_operations_struct vm_ops', at offset 2368 (in bits) at dma-buf.h:432:1
  456 impacted interfaces

'struct mm_struct at mm_types.h:407:1' changed:
  type size changed from 7424 to 7360 (in bits)
  there are data member changes:
    anonymous data member at offset 0 (in bits) changed from:
      struct {vm_area_struct* mmap; rb_root mm_rb; u64 vmacache_seqnum; rwlock_t mm_rb_lock; unsigned long int (file*, unsigned long int, unsigned long int, unsigned long int, unsigned long int)* get_unmapped_area; unsigned long int mmap_base; unsigned long int mmap_legacy_base; unsigned long int task_size; unsigned long int highest_vm_end; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_t has_pinned; seqcount_t write_protect_seq; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; rw_semaphore mmap_lock; list_head mmlist; unsigned long int hiwater_rss; unsigned long int hiwater_vm; unsigned long int total_vm; unsigned long int locked_vm; atomic64_t pinned_vm; unsigned long int data_vm; unsigned long int exec_vm; unsigned long int stack_vm; unsigned long int def_flags; spinlock_t arg_lock; unsigned long int start_code; unsigned long int end_code; unsigned long int start_data; unsigned long int end_data; unsigned long int start_brk; unsigned long int brk; unsigned long int start_stack; unsigned long int arg_start; unsigned long int arg_end; unsigned long int env_start; unsigned long int env_end; unsigned long int saved_auxv[46]; mm_rss_stat rss_stat; linux_binfmt* binfmt; mm_context_t context; unsigned long int flags; core_state* core_state; spinlock_t ioctx_lock; kioctx_table* ioctx_table; user_namespace* user_ns; file* exe_file; mmu_notifier_subscriptions* notifier_subscriptions; atomic_t tlb_flush_pending; uprobes_state uprobes_state; work_struct async_put_work; u32 pasid;}
    to:
      struct {vm_area_struct* mmap; rb_root mm_rb; u64 vmacache_seqnum; rwlock_t mm_rb_lock; unsigned long int (file*, unsigned long int, unsigned long int, unsigned long int, unsigned long int)* get_unmapped_area; unsigned long int mmap_base; unsigned long int mmap_legacy_base; unsigned long int task_size; unsigned long int highest_vm_end; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_t has_pinned; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; rw_semaphore mmap_lock; list_head mmlist; unsigned long int hiwater_rss; unsigned long int hiwater_vm; unsigned long int total_vm; unsigned long int locked_vm; atomic64_t pinned_vm; unsigned long int data_vm; unsigned long int exec_vm; unsigned long int stack_vm; unsigned long int def_flags; seqcount_t write_protect_seq; spinlock_t arg_lock; unsigned long int start_code; unsigned long int end_code; unsigned long int start_data; unsigned long int end_data; unsigned long int start_brk; unsigned long int brk; unsigned long int start_stack; unsigned long int arg_start; unsigned long int arg_end; unsigned long int env_start; unsigned long int env_end; unsigned long int saved_auxv[46]; mm_rss_stat rss_stat; linux_binfmt* binfmt; mm_context_t context; unsigned long int flags; core_state* core_state; spinlock_t ioctx_lock; kioctx_table* ioctx_table; user_namespace* user_ns; file* exe_file; mmu_notifier_subscriptions* notifier_subscriptions; atomic_t tlb_flush_pending; uprobes_state uprobes_state; work_struct async_put_work; u32 pasid;}
    and size changed from 7424 to 7360 (in bits) (by -64 bits)
    'unsigned long int cpu_bitmap[]' offset changed (by -64 bits)
  3735 impacted interfaces

'struct mmc_bus_ops at core.h:20:1' changed:
  type size changed from 768 to 896 (in bits)
  1 data member insertion:
    'u64 android_vendor_data1[2]', at offset 768 (in bits) at core.h:34:1
  89 impacted interfaces

'struct mmc_card at card.h:244:1' changed:
  type size changed from 13504 to 13568 (in bits)
  1 data member insertion:
    'u64 android_vendor_data1', at offset 13504 (in bits) at card.h:317:1
  89 impacted interfaces

'struct mmc_host at host.h:279:1' changed:
  type size hasn't changed
  1 data member insertion:
    'u64 android_vendor_data1', at offset 13440 (in bits) at host.h:488:1
  there are data member changes:
    'u64 android_oem_data1' offset changed (by +64 bits)
  89 impacted interfaces

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

'struct request at blkdev.h:127:1' changed:
  type size changed from 2304 to 2368 (in bits)
  1 data member insertion:
    'u64 alloc_time_ns', at offset 1408 (in bits) at blkdev.h:194:1
  there are data member changes:
    12 ('u64 start_time_ns' .. 'unsigned long int deadline') offsets changed (by +64 bits)
    anonymous data member 'union {__call_single_data csd; u64 fifo_time;}' offset changed from 1920 to 1984 (in bits) (by +64 bits)
    2 ('rq_end_io_fn* end_io' .. 'void* end_io_data') offsets changed (by +64 bits)
  3735 impacted interfaces

'struct request_queue at blkdev.h:396:1' changed:
  type size changed from 15616 to 15680 (in bits)
  1 data member insertion:
    'u64 android_oem_data1', at offset 15616 (in bits) at blkdev.h:592:1
  3735 impacted interfaces

'struct rq at sched.h:914:1' changed (indirectly):
  details were reported earlier

'struct ufs_dev_info at ufs.h:529:1' changed:
  type size hasn't changed
  1 data member insertion:
    'bool hpb_enabled', at offset 304 (in bits) at ufs.h:596:1
  38 impacted interfaces

'struct ufs_hba at ufshcd.h:737:1' changed (indirectly):
  type size hasn't changed
  there are data member changes:
    type 'struct ufs_dev_info' of 'ufs_hba::dev_info' changed, as reported earlier
  38 impacted interfaces

Bug: 192107071
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Ib0c3e59b2e33922b00a374801a8aa5d544047848
2021-07-01 22:51:06 -07:00
Todd Kjos
3213549c5d ANDROID: ABI: update android12-5.10-lts ABI for 7/2 KMI update
Need to update ABI for -lts branch since modules are changing
and virtual-device modules are shared with android12-5.10.

Leaf changes summary: 155 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 119 Removed, 0 Changed, 34 Added functions
Removed/Changed/Added variables summary: 1 Removed, 0 Changed, 1 Added variable

119 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_send_event_skb(sk_buff*, gfp_t)'
  [D] 'function void __ieee80211_schedule_txq(ieee80211_hw*, ieee80211_txq*, bool)'
  [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_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_radar_event(wiphy*, cfg80211_chan_def*, gfp_t)'
  [D] 'function void cfg80211_ready_on_channel(wireless_dev*, u64, ieee80211_channel*, unsigned int, gfp_t)'
  [D] 'function void cfg80211_remain_on_channel_expired(wireless_dev*, u64, ieee80211_channel*, gfp_t)'
  [D] 'function void cfg80211_roamed(net_device*, cfg80211_roam_info*, gfp_t)'
  [D] 'function bool cfg80211_rx_mgmt_khz(wireless_dev*, int, int, const u8*, size_t, u32)'
  [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_sched_scan_stopped_rtnl(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_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 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 sk_buff* ieee80211_ap_probereq_get(ieee80211_hw*, ieee80211_vif*)'
  [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_chswitch_done(ieee80211_vif*, bool)'
  [D] 'function void ieee80211_connection_loss(ieee80211_vif*)'
  [D] 'function void ieee80211_cqm_beacon_loss_notify(ieee80211_vif*, gfp_t)'
  [D] 'function void ieee80211_cqm_rssi_notify(ieee80211_vif*, nl80211_cqm_rssi_threshold_event, s32, gfp_t)'
  [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 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 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_interfaces(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 sk_buff* ieee80211_nullfunc_get(ieee80211_hw*, ieee80211_vif*, bool)'
  [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 sk_buff* ieee80211_pspoll_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_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_sched_scan_results(ieee80211_hw*)'
  [D] 'function void ieee80211_sched_scan_stopped(ieee80211_hw*)'
  [D] 'function int ieee80211_sta_ps_transition(ieee80211_sta*, bool)'
  [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_rx_ba_session(ieee80211_vif*, u16, const u8*)'
  [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 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 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(wiphy*, bool)'
  [D] 'function ieee80211_hw* wiphy_to_ieee80211_hw(wiphy*)'
  [D] 'function void wiphy_unregister(wiphy*)'

34 Added functions:

  [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 void __put_net(net*)'
  [A] 'function int __sock_create(net*, int, int, int, socket**, int)'
  [A] 'function void arc4_crypt(arc4_ctx*, u8*, const u8*, unsigned int)'
  [A] 'function int arc4_setkey(arc4_ctx*, const u8*, unsigned int)'
  [A] 'function u32 crc32_be(u32, const unsigned char*, size_t)'
  [A] 'function dentry* debugfs_rename(dentry*, dentry*, dentry*, const char*)'
  [A] 'function int dev_change_net_namespace(net_device*, net*, const char*)'
  [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 void key_put(key*)'
  [A] 'function key* keyring_alloc(const char*, kuid_t, kgid_t, const cred*, key_perm_t, unsigned long int, key_restriction*, key*)'
  [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_pause_polling(rfkill*)'
  [A] 'function void rfkill_resume_polling(rfkill*)'
  [A] 'function bool rfkill_set_hw_state(rfkill*, bool)'
  [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 int skb_checksum_help(sk_buff*)'
  [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()'

1 Removed variable:

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

1 Added variable:

  [A] 'const kobj_ns_type_operations net_ns_type_operations'

Bug: 192107071
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I2ded209ed15026a5d1320b9ec3a59395af596f67
2021-07-01 22:46:33 -07:00
John Stultz
6ae626fd8e ANDROID: ABI: hikey960_gki.fragment: Add cfg80211 and mac80211 as modules
In change Iab3971cd0d78d669536b8eb0505c60caa3aafeee the
cfg80211 and mac80211 drivers were switched to modules, so we
need to add them as such to the hikey960_gki.fragment.

With this change, hikey960 boots and wifi comes up.

Bug: 189918667
Fixes: Iab3971cd0d78d669536b8eb0505c60caa3aafeee
Signed-off-by: John Stultz <john.stultz@linaro.org>
Change-Id: I8cd3dd3dc76852e270b7b4ba518323af92ff6dda
2021-07-01 22:32:07 -07:00
Todd Kjos
7d8c327a64 ANDROID: ABI: gki_defconfig: Make cfg80211 and mac80211 modules
Remove CONFIG_CFG80211 and CONFIG_MAC80211 from gki_defconfig
to allow vendors to incorporate features that have landed upstream.

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

Bug: 189918667
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Iab3971cd0d78d669536b8eb0505c60caa3aafeee
2021-07-01 22:32:06 -07:00
Todd Kjos
ee12781f0c Revert "ANDROID: GKI: Enable some necessary CFG80211 configs for WIFI"
This reverts commit bba0d8a87e.

CFG80211 changing to a module so these configs go into device-specific
defconfig fragments.

Bug: 189918667
Change-Id: Ie4b70407369da3c865541e4857c3ba18fec24587
2021-07-01 22:32:06 -07:00
Kalesh Singh
25c500f2dc Revert "ANDROID: dmabuf: Add mmap_count to struct dmabuf"
This reverts commit 9132fbe545.

Reason for revert: mmap_count is no longer used for reporting dma-bufs
and introduces subtle bugs related to changing the vm_ops

Bug: 192459295
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Change-Id: Id07802e5a3e18918c5c46e31b73be4a594f7dc26
2021-07-01 22:32:05 -07:00
Kalesh Singh
32f0fa685c Revert "ANDROID: dma-buf: Don't change vm_ops if vm_file changes"
This reverts commit fca37c251a.

Reason for revert: mmap_count is no longer used for reporting dma-bufs and introduces subtle bugs related to changing the vm_ops

Bug: 192459295
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Change-Id: I52fb55e1048a151fae7641c9646a231d59b3224d
2021-07-01 22:32:05 -07:00
Sahitya Tummala
f45304d091 ANDROID: GKI: mmc: add Android ABI padding to some structures
Add ABI padding to some of the data structures to accommodate
new eMMC features enablement later.

Bug: 192337957
Change-Id: Ica3f96ea004fb89e4b46ef9734864c655cdcd277
Signed-off-by: Sahitya Tummala <quic_stummala@quicinc.com>
2021-07-01 22:32:05 -07:00
Siddharth Gupta
00d9f57a69 ANDROID: GKI: Add rproc coredump APIs to symbol list
This change adds the rproc_coredump() and rproc_coredump_cleanup()
APIs to the qcom symbol list.

Bug: 188764827
Change-Id: I32a56f5d3caabc61ed94f6de0d7daa29becb490d
Signed-off-by: Siddharth Gupta <quic_sidgup@quicinc.com>
2021-07-01 22:32:05 -07:00
Siddharth Gupta
3136de9b19 ANDROID: GKI: Add remoteproc vendor hook symbols
Add the the symbols exported by the remoteproc vendor hook to the
qcom symbol list.

Change-Id: Iffd58aa5d367141de1c065488519b29fb802fd86
Signed-off-by: Siddharth Gupta <quic_sidgup@quicinc.com>
2021-07-01 22:32:04 -07:00
Siddharth Gupta
019990276b ANDROID: rproc: Add vendor hook for recovery
Add vendor hook for rproc recovery to allow vendor enhancements.

Bug: 188764827
Change-Id: If6f0846c141a4ad40748d552002f65b94d9c52d5
Signed-off-by: Siddharth Gupta <quic_sidgup@quicinc.com>
2021-07-01 22:32:04 -07:00
Rick Yiu
df80ec7469 ANDROID: sched: Add vendor data in struct cfs_rq
For vendor specific data in struct cfs_rq.

Bug: 188947181
Signed-off-by: Rick Yiu <rickyiu@google.com>
Change-Id: I7c322c6812829c19014426b5721cd1fb0c37a53f
2021-07-01 22:32:03 -07:00
zhang chuang
3ad47a04c9 ANDROID: Add oem data array for async binder transaction
We need to obtain the pid and tid information of the caller in the async binder transaction.
So we need to add the pid and tid information in the async binder transaction.

Bug: 190413570
Signed-off-by: zhang chuang <zhangchuang3@xiaomi.com>
Change-Id: If67c972aa53196d626ccfeb46b6b61e43ddc57ae
2021-07-01 22:32:03 -07:00
Feng Tang
4b7c035626 UPSTREAM: mm: relocate 'write_protect_seq' in struct mm_struct
0day robot reported a 9.2% regression for will-it-scale mmap1 test
case[1], caused by commit 57efa1fe59 ("mm/gup: prevent gup_fast from
racing with COW during fork").

Further debug shows the regression is due to that commit changes the
offset of hot fields 'mmap_lock' inside structure 'mm_struct', thus some
cache alignment changes.

From the perf data, the contention for 'mmap_lock' is very severe and
takes around 95% cpu cycles, and it is a rw_semaphore

        struct rw_semaphore {
                atomic_long_t count;	/* 8 bytes */
                atomic_long_t owner;	/* 8 bytes */
                struct optimistic_spin_queue osq; /* spinner MCS lock */
                ...

Before commit 57efa1fe59 adds the 'write_protect_seq', it happens to
have a very optimal cache alignment layout, as Linus explained:

 "and before the addition of the 'write_protect_seq' field, the
  mmap_sem was at offset 120 in 'struct mm_struct'.

  Which meant that count and owner were in two different cachelines,
  and then when you have contention and spend time in
  rwsem_down_write_slowpath(), this is probably *exactly* the kind
  of layout you want.

  Because first the rwsem_write_trylock() will do a cmpxchg on the
  first cacheline (for the optimistic fast-path), and then in the
  case of contention, rwsem_down_write_slowpath() will just access
  the second cacheline.

  Which is probably just optimal for a load that spends a lot of
  time contended - new waiters touch that first cacheline, and then
  they queue themselves up on the second cacheline."

After the commit, the rw_semaphore is at offset 128, which means the
'count' and 'owner' fields are now in the same cacheline, and causes
more cache bouncing.

Currently there are 3 "#ifdef CONFIG_XXX" before 'mmap_lock' which will
affect its offset:

  CONFIG_MMU
  CONFIG_MEMBARRIER
  CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES

The layout above is on 64 bits system with 0day's default kernel config
(similar to RHEL-8.3's config), in which all these 3 options are 'y'.
And the layout can vary with different kernel configs.

Relayouting a structure is usually a double-edged sword, as sometimes it
can helps one case, but hurt other cases.  For this case, one solution
is, as the newly added 'write_protect_seq' is a 4 bytes long seqcount_t
(when CONFIG_DEBUG_LOCK_ALLOC=n), placing it into an existing 4 bytes
hole in 'mm_struct' will not change other fields' alignment, while
restoring the regression.

Link: https://lore.kernel.org/lkml/20210525031636.GB7744@xsang-OptiPlex-9020/ [1]
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Feng Tang <feng.tang@intel.com>
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Cc: Peter Xu <peterx@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Bug: 161946584
(cherry picked from commit 2e3025434a)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I9142789c5d57d167e5bb1f450d914bf2111894a2
2021-07-01 22:32:03 -07:00
Shaleen Agrawal
f9fcdaeab7 ANDROID: sched: remove regular vendor hooks for 32bit execve
As restricted hooks have been introduced, regular vendor hooks are no
longer necessary.

Bug: 187917024
Change-Id: Ia70e9dd1bd7373e19bdc82e90a2384201076bc0b
Signed-off-by: Shaleen Agrawal <shalagra@codeaurora.org>
2021-07-01 22:32:03 -07:00
Yang Yang
19316b4889 ANDROID: GKI: enable CONFIG_BLK_CGROUP_IOCOST
Enable CONFIG_BLK_CGROUP_IOCOST to help control IO resources.

Bug: 188749221
Change-Id: I611b3ff5929d0a998fa6241967887803636b7588
Signed-off-by: Yang Yang <yang.yang@vivo.com>
2021-07-01 22:32:02 -07:00
Yang Yang
1f23e139ad ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_tags
Add ANDROID_OEM_DATA for implement of oem gki

Bug: 188749221
Change-Id: I1feba2334aa34e3bc46eb9d0217118485405beb4
Signed-off-by: Yang Yang <yang.yang@vivo.com>
2021-07-01 22:32:02 -07:00
Yang Yang
5b388812e8 ANDROID: GKI: Add ANDROID_OEM_DATA in struct blk_mq_ctx
Add ANDROID_OEM_DATA for implement of oem gki

Bug: 188749221
Change-Id: Ide8378a898de01a34d8ca3c34472844cd4ffa71c
Signed-off-by: Yang Yang <yang.yang@vivo.com>
2021-07-01 22:32:01 -07:00
Yang Yang
3a0675c6ca ANDROID: GKI: Add ANDROID_OEM_DATA in struct request_queue
Add ANDROID_OEM_DATA for implement of oem gki

Bug: 188749221
Change-Id: I96b1c690fda172d0c490e944557a674a37620742
Signed-off-by: Yang Yang <yang.yang@vivo.com>
2021-07-01 22:32:01 -07:00
Todd Kjos
cebb002b99 ANDROID: ABI: update virtual device symbols for CAN
Need symbols for newly added CAN drivers

Bug: 190375772
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Ibaa1c0963e2e5efb0cf77e6661a683cb00f095d9
2021-07-01 22:32:01 -07:00
Roman Kiryanov
b971e8ab32 ANDROID: Add CONFIG_CAN=y to gki_defconfig
required for Android Auto.

Bug: 190375772
Signed-off-by: Roman Kiryanov <rkir@google.com>
Change-Id: I34ec0d68ce3ea1463738a16158adf854eebbb5af
2021-07-01 22:32:01 -07:00
Avri Altman
d6a486a194 FROMLIST: scsi: ufs: Make HCM parameter configurable
We can make use of this commit, to elaborate some more of the host
control mode logic, explaining what role play each and every variable.

While at it, allow those parameters to be configurable.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-13-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: Ib05c6643c69504b8d9442b0024cfe1b0b687a4ce
2021-07-01 22:32:00 -07:00
Avri Altman
fbf68bf104 FROMLIST: scsi: ufs: Add support for HCM
Support devices that report they are using host control mode.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-12-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: I7cb80024255626feacfe4c344bbcc17727291a26
2021-07-01 22:32:00 -07:00
Avri Altman
dd41ce5581 FROMLIST: scsi: ufs: Do not send umap_all in host control mode
HPB-WRITE-BUFFER with buffer-id = 0x3h is supported in device control
mode only.

Bug: 183467926
Bug: 170940265
Bug: 183454255

link: https://lore.kernel.org/lkml/20210607061401.58884-11-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: I719f8bb876270d960aa92ddc53f29c9fc863fda6
2021-07-01 22:32:00 -07:00
Avri Altman
5e463110fb FROMLIST: scsi: ufs: Limit the number of inflight rb
in host control mode the host is the originator of map requests. To not
flood the device with map requests, use a simple throttling mechanism
that limits the number of inflight map requests.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-10-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: I75a5ced3be60569adcd75befa17d8a6340c147fd
2021-07-01 22:31:59 -07:00
Avri Altman
76aa39a9f2 FROMLIST: scsi: ufs: Add "Cold" regions timer
In order not to hang on to “cold” regions, we shall inactivate a
region that has no READ access for a predefined amount of time -
READ_TO_MS. For that purpose we shall monitor the active regions list,
polling it on every POLLING_INTERVAL_MS. On timeout expiry we shall add
the region to the "to-be-inactivated" list, unless it is clean and did
not exhaust its READ_TO_EXPIRIES - another parameter.

All this does not apply to pinned regions.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-9-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: I2d2efbbc612ccec6ef7036cc1e1d31bd8bfd4174
2021-07-01 22:31:59 -07:00
Avri Altman
992cbc0e10 FROMLIST: scsi: ufs: Add hpb dev reset response
The spec does not define what is the host's recommended response when
the device send hpb dev reset response (oper 0x2).

We will update all active hpb regions: mark them and do that on the next
read.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-8-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: Ibe87969a4130b4e77f5d163771648679bc5ac7e8
2021-07-01 22:31:59 -07:00
Avri Altman
dbf4aa202c FROMLIST: scsi: ufs: Region inactivation in HCM
In host mode, the host is expected to send HPB-WRITE-BUFFER with
buffer-id = 0x1 when it inactivates a region.

Use the map-requests pool as there is no point in assigning a
designated cache for umap-requests.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-7-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: I1a6696b38d4abfb4d9fbe44e84016a6238825125
2021-07-01 22:31:58 -07:00
Avri Altman
d5b978446c FROMLIST: scsi: ufs: Eviction in HCM
In host mode, eviction is considered an extreme measure.
verify that the entering region has enough reads, and the exiting
region has much less reads.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-6-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: Ia08e3af69302c4f0474efa7c616832dde48df4e0
2021-07-01 22:31:58 -07:00
Avri Altman
a782d4350f FROMLIST: scsi: ufs: Add region's reads counter
In host control mode, reads are the major source of activation trials.
Keep track of those reads counters, for both active as well inactive
regions.

We reset the read counter upon write - we are only interested in "clean"
reads.

Keep those counters normalized, as we are using those reads as a
comparative score, to make various decisions.
If during consecutive normalizations an active region has exhaust its
reads - inactivate it.

while at it, protect the {active,inactive}_count stats by adding them
into the applicable handler.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-5-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: I0541c39e3dd7656ca1816cac3599ab73eb8697a8
2021-07-01 22:31:58 -07:00
Avri Altman
ac898f51d1 FROMLIST: scsi: ufs: Transform set_dirty to iterate_rgn
Given a transfer length, set_dirty meticulously runs over all the
entries, across subregions and regions if needed. Currently its only use
is to mark dirty blocks, but soon HCM may profit from it as well, when
managing its read counters.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-4-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Daejun Park <daejun7.park@samsung.com>
Change-Id: I916f4bf80490e31e5ef797d67647a41a07cefa02
2021-07-01 22:31:57 -07:00
Avri Altman
a210fd6f26 FROMLIST: scsi: ufs: Add HCM support to rsp_upiu
In device control mode, the device may recommend the host to either
activate or inactivate a region, and the host should follow. Meaning
those are not actually recommendations, but more of instructions.

On the contrary, in host control mode, the recommendation protocol is
slightly changed:
a) The device may only recommend the host to update a subregion of an
   already-active region. And,
b) The device may *not* recommend to inactivate a region.

Furthermore, in host control mode, the host may choose not to follow any
of the device's recommendations. However, in case of a recommendation to
update an active and clean subregion, it is better to follow those
recommendation because otherwise the host has no other way to know that
some internal relocation took place.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-3-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: I02cb053ae4e7fdadd663f9190c95e5f5a79c0e4b
2021-07-01 22:31:57 -07:00
Avri Altman
bce9649c9f FROMLIST: scsi: ufs: Cache HPB Control mode on init
We will use it later, when we'll need to differentiate between device
and host control modes.

Bug: 183467926
Bug: 170940265
Bug: 183454255

Link: https://lore.kernel.org/lkml/20210607061401.58884-2-avri.altman@wdc.com/
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Change-Id: Id1eb0408814fd9fda6815c6b19faf4ade106ba05
2021-07-01 22:31:57 -07:00