mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
Merge tag 'android14-6.1-2023-06_r1' of https://android.googlesource.com/kernel/common
android14-6.1 June 2023 release 1 Artifacts: https://ci.android.com/builds/submitted/10351523/kernel_aarch64/latest * tag 'android14-6.1-2023-06_r1': (596 commits) ANDROID: GKI: Include kheaders in gki_system_dlkm_modules ANDROID: 6/16/2023 KMI update ANDROID: sched: Add parameter to android_rvh_schedule. ANDROID: GKI: provide more padding for struct usb_phy ANDROID: GKI enable CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y FROMGIT: arm64: set __exception_irq_entry with __irq_entry as a default ANDROID: GKI: update symbol list file for xiaomi ANDROID: Remove all but top-level OWNERS ANDROID: Enable GKI Dr. No Enforcement ANDROID: 6/16/2023 KMI update ANDROID: virt: gunyah: Sync with latest platform ops FROMGIT: usb: gadget: udc: core: Prevent soft_connect_store() race FROMGIT: usb: gadget: udc: core: Offload usb_udc_vbus_handler processing UPSTREAM: Bluetooth: fix debugfs registration UPSTREAM: Bluetooth: hci_sync: add lock to protect HCI_UNREGISTER UPSTREAM: net/ipv6: fix bool/int mismatch for skip_notify_on_dev_down UPSTREAM: neighbour: fix unaligned access to pneigh_entry UPSTREAM: tcp: deny tcp_disconnect() when threads are waiting ANDROID: sound: usb: Add vendor's hooking interface ANDROID: GKI: USB: XHCI: add Android ABI padding to struct xhci_driver_overrides ... Conflicts: arch/arm/boot/dts/rk3288.dtsi drivers/dma-buf/dma-buf.c drivers/gpu/drm/rockchip/rockchip_drm_vop2.c drivers/mmc/core/mmc.c drivers/pwm/pwm-rockchip.c drivers/usb/gadget/udc/core.c fs/erofs/data.c include/linux/dma-buf.h kernel/sched/cpufreq_schedutil.c According to commit5dd0547a3e("UPSTREAM: mm: replace vma->vm_flags direct modifications with modifier calls"). Fixes: drivers/gpu/arm/bifrost/mali_kbase_mem_linux.c drivers/gpu/arm/mali400/mali/linux/mali_memory.c drivers/gpu/arm/mali400/mali/linux/mali_memory_cow.c drivers/gpu/arm/midgard/mali_kbase_mem_linux.c drivers/misc/rockchip/pcie-rkep.c drivers/pci/controller/dwc/pcie-dw-ep-rockchip.c drivers/rknpu/rknpu_gem.c drivers/spi/spi-rockchip.c Backport commit44ee9eef21("ANDROID: usb: xhci-plat: Fix double-free in xhci_plat_remove"). Fixes: drivers/usb/host/xhci-plat.c Signed-off-by: Tao Huang <huangtao@rock-chips.com> Change-Id: I90f59fb8f35d2a0bd2102a2b1a4119115a614f9d
This commit is contained in:
40
BUILD.bazel
40
BUILD.bazel
@@ -12,6 +12,25 @@ package(
|
||||
],
|
||||
)
|
||||
|
||||
_GKI_AARCH64_MAKE_GOALS = [
|
||||
"Image",
|
||||
"Image.lz4",
|
||||
"Image.gz",
|
||||
"modules",
|
||||
]
|
||||
|
||||
_GKI_RISCV64_MAKE_GOALS = [
|
||||
"Image",
|
||||
"Image.lz4",
|
||||
"Image.gz",
|
||||
"modules",
|
||||
]
|
||||
|
||||
_GKI_X86_64_MAKE_GOALS = [
|
||||
"bzImage",
|
||||
"modules",
|
||||
]
|
||||
|
||||
filegroup(
|
||||
name = "aarch64_additional_kmi_symbol_lists",
|
||||
srcs = [
|
||||
@@ -19,11 +38,13 @@ filegroup(
|
||||
"android/abi_gki_aarch64_db845c",
|
||||
"android/abi_gki_aarch64_exynos",
|
||||
"android/abi_gki_aarch64_galaxy",
|
||||
"android/abi_gki_aarch64_honor",
|
||||
"android/abi_gki_aarch64_imx",
|
||||
"android/abi_gki_aarch64_mtk",
|
||||
"android/abi_gki_aarch64_oplus",
|
||||
"android/abi_gki_aarch64_pixel",
|
||||
"android/abi_gki_aarch64_qcom",
|
||||
"android/abi_gki_aarch64_unisoc",
|
||||
"android/abi_gki_aarch64_virtual_device",
|
||||
"android/abi_gki_aarch64_vivo",
|
||||
"android/abi_gki_aarch64_xiaomi",
|
||||
@@ -39,10 +60,12 @@ define_common_kernels(target_configs = {
|
||||
"additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"],
|
||||
"protected_exports_list": "android/abi_gki_protected_exports_aarch64",
|
||||
"protected_modules_list": "android/gki_aarch64_protected_modules",
|
||||
"make_goals": _GKI_AARCH64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_aarch64_16k": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
"module_implicit_outs": COMMON_GKI_MODULES_LIST,
|
||||
"make_goals": _GKI_AARCH64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_aarch64_debug": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
@@ -51,22 +74,26 @@ define_common_kernels(target_configs = {
|
||||
"additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"],
|
||||
"protected_exports_list": "android/abi_gki_protected_exports_aarch64",
|
||||
"protected_modules_list": "android/gki_aarch64_protected_modules",
|
||||
"make_goals": _GKI_AARCH64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_riscv64": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
"module_implicit_outs": COMMON_GKI_MODULES_LIST,
|
||||
"make_goals": _GKI_RISCV64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_x86_64": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
"module_implicit_outs": COMMON_GKI_MODULES_LIST,
|
||||
"protected_exports_list": "android/abi_gki_protected_exports_x86_64",
|
||||
"protected_modules_list": "android/gki_x86_64_protected_modules",
|
||||
"make_goals": _GKI_X86_64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_x86_64_debug": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
"module_implicit_outs": COMMON_GKI_MODULES_LIST,
|
||||
"protected_exports_list": "android/abi_gki_protected_exports_x86_64",
|
||||
"protected_modules_list": "android/gki_x86_64_protected_modules",
|
||||
"make_goals": _GKI_X86_64_MAKE_GOALS,
|
||||
},
|
||||
})
|
||||
|
||||
@@ -79,6 +106,12 @@ define_db845c(
|
||||
],
|
||||
define_abi_targets = True,
|
||||
kmi_symbol_list = "//common:android/abi_gki_aarch64_db845c",
|
||||
make_goals = [
|
||||
"modules",
|
||||
"qcom/sdm845-db845c.dtb",
|
||||
"qcom/qrb5165-rb5.dtb",
|
||||
"qcom/sm8450-qrd.dtb",
|
||||
],
|
||||
module_outs = [
|
||||
# keep sorted
|
||||
"crypto/michael_mic.ko",
|
||||
@@ -229,10 +262,12 @@ define_db845c(
|
||||
"drivers/usb/typec/qcom-pmic-typec.ko",
|
||||
"drivers/watchdog/pm8916_wdt.ko",
|
||||
"drivers/watchdog/qcom-wdt.ko",
|
||||
"net/mac80211/mac80211.ko",
|
||||
"net/qrtr/qrtr.ko",
|
||||
"net/qrtr/qrtr-mhi.ko",
|
||||
"net/qrtr/qrtr-smd.ko",
|
||||
"net/qrtr/qrtr-tun.ko",
|
||||
"net/wireless/cfg80211.ko",
|
||||
"sound/soc/codecs/snd-soc-dmic.ko",
|
||||
"sound/soc/codecs/snd-soc-hdmi-codec.ko",
|
||||
"sound/soc/codecs/snd-soc-lpass-macro-common.ko",
|
||||
@@ -280,6 +315,11 @@ kernel_build(
|
||||
],
|
||||
build_config = "build.config.rockpi4",
|
||||
dtstree = "//common-modules/virtual-device:rockpi4_dts",
|
||||
make_goals = [
|
||||
"Image",
|
||||
"modules",
|
||||
"rk3399-rock-pi-4b.dtb",
|
||||
],
|
||||
module_outs = COMMON_GKI_MODULES_LIST + [
|
||||
# keep sorted
|
||||
"drivers/block/virtio_blk.ko",
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
per-file sysfs-fs-f2fs=file:/fs/f2fs/OWNERS
|
||||
@@ -264,6 +264,16 @@ Description:
|
||||
attached to the port will not be detected, initialized,
|
||||
or enumerated.
|
||||
|
||||
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/state
|
||||
Date: June 2023
|
||||
Contact: Roy Luo <royluo@google.com>
|
||||
Description:
|
||||
Indicates current state of the USB device attached to the port.
|
||||
Valid states are: 'not-attached', 'attached', 'powered',
|
||||
'reconnecting', 'unauthenticated', 'default', 'addressed',
|
||||
'configured', and 'suspended'. This file supports poll() to
|
||||
monitor the state change from user space.
|
||||
|
||||
What: /sys/bus/usb/devices/.../power/usb2_lpm_l1_timeout
|
||||
Date: May 2013
|
||||
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
per-file f2fs**=file:/fs/f2fs/OWNERS
|
||||
@@ -136,7 +136,7 @@ Code Seq# Include File Comments
|
||||
'F' DD video/sstfb.h conflict!
|
||||
'G' 00-3F drivers/misc/sgi-gru/grulib.h conflict!
|
||||
'G' 00-0F xen/gntalloc.h, xen/gntdev.h conflict!
|
||||
'G' 00-0f linux/gunyah.h conflict!
|
||||
'G' 00-0F linux/gunyah.h conflict!
|
||||
'H' 00-7F linux/hiddev.h conflict!
|
||||
'H' 00-0F linux/hidraw.h conflict!
|
||||
'H' 01 linux/mei.h conflict!
|
||||
|
||||
@@ -273,7 +273,9 @@ of the luma plane.
|
||||
.. _V4L2-PIX-FMT-NV12-16L16:
|
||||
.. _V4L2-PIX-FMT-NV12-32L32:
|
||||
.. _V4L2-PIX-FMT-NV12M-8L128:
|
||||
.. _V4L2-PIX-FMT-NV12-8L128:
|
||||
.. _V4L2-PIX-FMT-NV12M-10BE-8L128:
|
||||
.. _V4L2-PIX-FMT-NV12-10BE-8L128:
|
||||
.. _V4L2-PIX-FMT-MM21:
|
||||
|
||||
Tiled NV12
|
||||
@@ -319,6 +321,9 @@ pixels in 2D 8x128 tiles, and stores tiles linearly in memory.
|
||||
The image height must be aligned to a multiple of 128.
|
||||
The layouts of the luma and chroma planes are identical.
|
||||
|
||||
``V4L2_PIX_FMT_NV12_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_8L128`` but stores
|
||||
two planes in one memory.
|
||||
|
||||
``V4L2_PIX_FMT_NV12M_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
|
||||
10 bits pixels in 2D 8x128 tiles, and stores tiles linearly in memory.
|
||||
the data is arranged in big endian order.
|
||||
@@ -334,6 +339,9 @@ byte 2: Y1(bits 3-0) Y2(bits 9-6)
|
||||
byte 3: Y2(bits 5-0) Y3(bits 9-8)
|
||||
byte 4: Y3(bits 7-0)
|
||||
|
||||
``V4L2_PIX_FMT_NV12_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_10BE_8L128`` but stores
|
||||
two planes in one memory.
|
||||
|
||||
``V4L2_PIX_FMT_MM21`` store luma pixel in 16x32 tiles, and chroma pixels
|
||||
in 16x16 tiles. The line stride must be aligned to a multiple of 16 and the
|
||||
image height must be aligned to a multiple of 32. The number of luma and chroma
|
||||
|
||||
@@ -7,14 +7,12 @@ Virtual Machine Manager
|
||||
The Gunyah Virtual Machine Manager is a Linux driver to support launching
|
||||
virtual machines using Gunyah.
|
||||
|
||||
Except for some basic information about the location of initial binaries,
|
||||
most of the configuration about a Gunyah virtual machine is described in the
|
||||
VM's devicetree. The devicetree is generated by userspace. Interacting with the
|
||||
virtual machine is still done via the kernel and VM configuration requires some
|
||||
of the corresponding functionality to be set up in the kernel. For instance,
|
||||
sharing userspace memory with a VM is done via the GH_VM_SET_USER_MEM_REGION
|
||||
ioctl. The VM itself is configured to use the memory region via the
|
||||
devicetree.
|
||||
Configuration of a Gunyah virtual machine is done via a devicetree. When the VM
|
||||
is launched, memory is provided by the host VM which contains the devictree.
|
||||
Gunyah reads the devicetree to configure the memory map and create resources
|
||||
such as vCPUs for the VM. Memory can be shared with the VM with
|
||||
`GH_VM_SET_USER_MEM_REGION`_. Userspace can interact with the resources in Linux
|
||||
by adding "functions" to the VM.
|
||||
|
||||
Gunyah Functions
|
||||
================
|
||||
@@ -22,13 +20,13 @@ Gunyah Functions
|
||||
Components of a Gunyah VM's configuration that need kernel configuration are
|
||||
called "functions" and are built on top of a framework. Functions are identified
|
||||
by a string and have some argument(s) to configure them. They are typically
|
||||
created by the `GH_VM_ADD_FUNCTION` ioctl.
|
||||
created by the `GH_VM_ADD_FUNCTION`_ ioctl.
|
||||
|
||||
Functions typically will always do at least one of these operations:
|
||||
|
||||
1. Create resource ticket(s). Resource tickets allow a function to register
|
||||
itself as the client for a Gunyah resource (e.g. doorbell or vCPU) and
|
||||
the function is given the pointer to the `struct gh_resource` when the
|
||||
the function is given the pointer to the &struct gh_resource when the
|
||||
VM is starting.
|
||||
|
||||
2. Register IO handler(s). IO handlers allow a function to handle stage-2 faults
|
||||
@@ -46,7 +44,7 @@ IOCTLs and userspace VMM flows
|
||||
|
||||
The kernel exposes a char device interface at /dev/gunyah.
|
||||
|
||||
To create a VM, use the GH_CREATE_VM ioctl. A successful call will return a
|
||||
To create a VM, use the `GH_CREATE_VM`_ ioctl. A successful call will return a
|
||||
"Gunyah VM" file descriptor.
|
||||
|
||||
/dev/gunyah API Descriptions
|
||||
@@ -56,6 +54,9 @@ GH_CREATE_VM
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Creates a Gunyah VM. The argument is reserved for future use and must be 0.
|
||||
A successful call will return a Gunyah VM file descriptor. See
|
||||
`Gunyah VM API Descriptions`_ for list of IOCTLs that can be made on this file
|
||||
file descriptor.
|
||||
|
||||
Gunyah VM API Descriptions
|
||||
--------------------------
|
||||
@@ -70,33 +71,24 @@ unique per virtual machine.
|
||||
|
||||
While VMM is guest-agnostic and allows runtime addition of memory regions,
|
||||
Linux guest virtual machines do not support accepting memory regions at runtime.
|
||||
Thus, memory regions should be provided before starting the VM and the VM must
|
||||
be configured to accept these at boot-up.
|
||||
Thus, for Linux guests, memory regions should be provided before starting the VM
|
||||
and the VM must be configured via the devicetree to accept these at boot-up.
|
||||
|
||||
The guest physical address is used by Linux kernel to check that the requested
|
||||
user regions do not overlap and to help find the corresponding memory region
|
||||
for calls like GH_VM_SET_DTB_CONFIG. It must be page aligned.
|
||||
for calls like `GH_VM_SET_DTB_CONFIG`_. It must be page aligned.
|
||||
|
||||
memory_size and userspace_addr must be page-aligned.
|
||||
|
||||
The flags field of gh_userspace_memory_region accepts the following bits. All
|
||||
other bits must be 0 and are reserved for future use. The ioctl will return
|
||||
-EINVAL if an unsupported bit is detected.
|
||||
|
||||
- GH_MEM_ALLOW_READ/GH_MEM_ALLOW_WRITE/GH_MEM_ALLOW_EXEC sets read/write/exec
|
||||
permissions for the guest, respectively.
|
||||
|
||||
To add a memory region, call GH_VM_SET_USER_MEM_REGION with fields set as
|
||||
To add a memory region, call `GH_VM_SET_USER_MEM_REGION`_ with fields set as
|
||||
described above.
|
||||
|
||||
.. kernel-doc:: include/uapi/linux/gunyah.h
|
||||
:identifiers: gh_userspace_memory_region
|
||||
:identifiers: gh_userspace_memory_region gh_mem_flags
|
||||
|
||||
GH_VM_SET_DTB_CONFIG
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This ioctl sets the location of the VM's devicetree blob and is used by Gunyah
|
||||
Resource Manager to allocate resources. The guest physical memory should be part
|
||||
Resource Manager to allocate resources. The guest physical memory must be part
|
||||
of the primary memory parcel provided to the VM prior to GH_VM_START.
|
||||
|
||||
.. kernel-doc:: include/uapi/linux/gunyah.h
|
||||
@@ -111,20 +103,20 @@ GH_VM_ADD_FUNCTION
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This ioctl registers a Gunyah VM function with the VM manager. The VM function
|
||||
is described with a `type` string and some arguments for that type. Typically,
|
||||
the function is added before the VM starts, but the function doesn't "operate"
|
||||
until the VM starts with GH_VM_START: e.g. vCPU ioclts will all return an error
|
||||
until the VM starts because the vCPUs don't exist until the VM is started. This
|
||||
allows the VMM to set up all the kernel functionality needed for the VM *before*
|
||||
the VM starts.
|
||||
is described with a &struct gh_fn_desc.type and some arguments for that type.
|
||||
Typically, the function is added before the VM starts, but the function doesn't
|
||||
"operate" until the VM starts with `GH_VM_START`_. For example, vCPU ioctls will
|
||||
all return an error until the VM starts because the vCPUs don't exist until the
|
||||
VM is started. This allows the VMM to set up all the kernel functions needed for
|
||||
the VM *before* the VM starts.
|
||||
|
||||
.. kernel-doc:: include/uapi/linux/gunyah.h
|
||||
:identifiers: gh_fn_desc
|
||||
:identifiers: gh_fn_desc gh_fn_type
|
||||
|
||||
The possible types are documented below:
|
||||
The argument types are documented below:
|
||||
|
||||
.. kernel-doc:: include/uapi/linux/gunyah.h
|
||||
:identifiers: GH_FN_VCPU gh_fn_vcpu_arg GH_FN_IRQFD gh_fn_irqfd_arg GH_FN_IOEVENTFD gh_fn_ioeventfd_arg
|
||||
:identifiers: gh_fn_vcpu_arg gh_fn_irqfd_arg gh_irqfd_flags gh_fn_ioeventfd_arg gh_ioeventfd_flags
|
||||
|
||||
Gunyah VCPU API Descriptions
|
||||
----------------------------
|
||||
@@ -137,15 +129,15 @@ GH_VCPU_RUN
|
||||
This ioctl is used to run a guest virtual cpu. While there are no
|
||||
explicit parameters, there is an implicit parameter block that can be
|
||||
obtained by mmap()ing the vcpu fd at offset 0, with the size given by
|
||||
GH_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct
|
||||
`GH_VCPU_MMAP_SIZE`_. The parameter block is formatted as a 'struct
|
||||
gh_vcpu_run' (see below).
|
||||
|
||||
GH_VCPU_MMAP_SIZE
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
The GH_VCPU_RUN ioctl communicates with userspace via a shared
|
||||
The `GH_VCPU_RUN`_ ioctl communicates with userspace via a shared
|
||||
memory region. This ioctl returns the size of that region. See the
|
||||
GH_VCPU_RUN documentation for details.
|
||||
`GH_VCPU_RUN`_ documentation for details.
|
||||
|
||||
.. kernel-doc:: include/uapi/linux/gunyah.h
|
||||
:identifiers: gh_vcpu_run gh_vm_exit_info
|
||||
:identifiers: gh_vcpu_exit gh_vcpu_run gh_vm_status gh_vm_exit_info
|
||||
|
||||
2
Makefile
2
Makefile
@@ -1001,8 +1001,10 @@ LDFLAGS_vmlinux += --gc-sections
|
||||
endif
|
||||
|
||||
ifdef CONFIG_SHADOW_CALL_STACK
|
||||
ifndef CONFIG_DYNAMIC_SCS
|
||||
CC_FLAGS_SCS := -fsanitize=shadow-call-stack
|
||||
KBUILD_CFLAGS += $(CC_FLAGS_SCS)
|
||||
endif
|
||||
export CC_FLAGS_SCS
|
||||
endif
|
||||
|
||||
|
||||
23
OWNERS
23
OWNERS
@@ -1,13 +1,12 @@
|
||||
# The full list of approvers is defined in
|
||||
# https://android.googlesource.com/kernel/common/+/refs/meta/config/OWNERS
|
||||
set noparent
|
||||
|
||||
# The following OWNERS are defined at the top level to improve the OWNERS
|
||||
# suggestions through any user interface. Consider those people the ones that
|
||||
# can help with finding the best person to review.
|
||||
adelva@google.com
|
||||
gregkh@google.com
|
||||
maennich@google.com
|
||||
saravanak@google.com
|
||||
smuckle@google.com
|
||||
surenb@google.com
|
||||
tkjos@google.com
|
||||
# GKI Dr. No Enforcement is active on this branch. Approval of one of the Dr.
|
||||
# No reviewers is required following a regular CodeReview+2 vote of a code
|
||||
# reviewer.
|
||||
#
|
||||
# See the GKI release documentation (go/gki-dr-no) for further details.
|
||||
#
|
||||
# The expanded list of reviewers can be found at:
|
||||
# https://android.googlesource.com/kernel/common/+/android-mainline/OWNERS_DrNo
|
||||
|
||||
include kernel/common:android-mainline:/OWNERS_DrNo
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# If we ever add another OWNERS above this directory, it's likely to be
|
||||
# more permissive, so don't inherit from it
|
||||
set noparent
|
||||
include kernel/common:android-mainline:/OWNERS_DrNo
|
||||
|
||||
# Downstream boards maintained directly in this manifest branch
|
||||
per-file abi_gki_aarch64_cuttlefish = adelva@google.com, rammuthiah@google.com
|
||||
per-file abi_gki_aarch64_goldfish = rkir@google.com
|
||||
|
||||
# per-file for review purposes
|
||||
per-file gki_system_dlkm_modules = ramjiyani@google.com
|
||||
per-file abi_gki_protected_exports = ramjiyani@google.com
|
||||
per-file gki_protected_modules = ramjiyani@google.com
|
||||
119790
android/abi_gki_aarch64.stg
119790
android/abi_gki_aarch64.stg
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,7 @@
|
||||
# commonly used symbols
|
||||
add_uevent_var
|
||||
alloc_io_pgtable_ops
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
alt_cb_patch_nops
|
||||
__arch_copy_from_user
|
||||
@@ -19,8 +20,11 @@
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
bpf_trace_run5
|
||||
bpf_trace_run6
|
||||
bpf_trace_run8
|
||||
bus_register
|
||||
bus_unregister
|
||||
call_rcu
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
cancel_work_sync
|
||||
@@ -28,15 +32,9 @@
|
||||
cdev_device_add
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_find_vendor_elem
|
||||
cfg80211_get_bss
|
||||
cfg80211_put_bss
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_vendor_cmd_reply
|
||||
__check_object_size
|
||||
__class_register
|
||||
class_unregister
|
||||
clk_bulk_disable
|
||||
clk_bulk_enable
|
||||
clk_bulk_prepare
|
||||
@@ -66,6 +64,14 @@
|
||||
cpu_hwcaps
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
__cpu_possible_mask
|
||||
crc32_le
|
||||
crypto_alloc_shash
|
||||
crypto_destroy_tfm
|
||||
crypto_shash_setkey
|
||||
crypto_shash_update
|
||||
csum_partial
|
||||
_ctype
|
||||
debugfs_create_dir
|
||||
debugfs_create_file
|
||||
debugfs_create_u32
|
||||
@@ -73,14 +79,18 @@
|
||||
debugfs_remove
|
||||
default_llseek
|
||||
delayed_work_timer_fn
|
||||
del_timer
|
||||
del_timer_sync
|
||||
destroy_workqueue
|
||||
dev_close
|
||||
dev_coredumpv
|
||||
dev_driver_string
|
||||
_dev_err
|
||||
dev_err_probe
|
||||
dev_fwnode
|
||||
dev_get_regmap
|
||||
device_add
|
||||
device_del
|
||||
device_for_each_child
|
||||
device_get_mac_address
|
||||
device_get_match_data
|
||||
@@ -174,6 +184,7 @@
|
||||
dev_pm_opp_set_opp
|
||||
dev_pm_opp_set_rate
|
||||
dev_pm_set_wake_irq
|
||||
_dev_printk
|
||||
dev_set_name
|
||||
dev_set_threaded
|
||||
_dev_warn
|
||||
@@ -244,13 +255,16 @@
|
||||
drm_mode_vrefresh
|
||||
drm_printf
|
||||
enable_irq
|
||||
eth_type_trans
|
||||
_find_first_bit
|
||||
_find_first_zero_bit
|
||||
_find_next_bit
|
||||
_find_next_zero_bit
|
||||
finish_wait
|
||||
firmware_request_nowarn
|
||||
flush_delayed_work
|
||||
flush_work
|
||||
__flush_workqueue
|
||||
fortify_panic
|
||||
free_io_pgtable_ops
|
||||
free_irq
|
||||
@@ -258,6 +272,7 @@
|
||||
fwnode_property_present
|
||||
fwnode_property_read_string
|
||||
fwnode_property_read_u32_array
|
||||
gcd
|
||||
generic_handle_domain_irq
|
||||
generic_handle_irq
|
||||
geni_icc_disable
|
||||
@@ -324,44 +339,12 @@
|
||||
idr_for_each
|
||||
idr_get_next
|
||||
idr_remove
|
||||
ieee80211_alloc_hw_nm
|
||||
ieee80211_beacon_cntdwn_is_complete
|
||||
ieee80211_beacon_get_template
|
||||
ieee80211_beacon_loss
|
||||
ieee80211_beacon_update_cntdwn
|
||||
ieee80211_bss_get_elem
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_connection_loss
|
||||
ieee80211_csa_finish
|
||||
ieee80211_find_sta
|
||||
ieee80211_find_sta_by_ifaddr
|
||||
ieee80211_free_hw
|
||||
ieee80211_free_txskb
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_hdrlen
|
||||
ieee80211_iterate_active_interfaces_atomic
|
||||
ieee80211_iterate_stations_atomic
|
||||
ieee80211_iter_chan_contexts_atomic
|
||||
ieee80211_queue_delayed_work
|
||||
ieee80211_queue_work
|
||||
ieee80211_radar_detected
|
||||
ieee80211_ready_on_channel
|
||||
ieee80211_register_hw
|
||||
ieee80211_remain_on_channel_expired
|
||||
ieee80211_report_low_ack
|
||||
ieee80211_restart_hw
|
||||
ieee80211_rx_napi
|
||||
ieee80211_scan_completed
|
||||
ieee80211_stop_queues
|
||||
ieee80211_tx_status_ext
|
||||
ieee80211_tx_status_irqsafe
|
||||
ieee80211_unregister_hw
|
||||
ieee80211_wake_queues
|
||||
iio_read_channel_processed
|
||||
init_dummy_netdev
|
||||
init_net
|
||||
__init_swait_queue_head
|
||||
init_timer_key
|
||||
init_uts_ns
|
||||
init_wait_entry
|
||||
__init_waitqueue_head
|
||||
iomem_resource
|
||||
@@ -413,6 +396,7 @@
|
||||
kernel_sendmsg
|
||||
kfree
|
||||
kfree_const
|
||||
kfree_sensitive
|
||||
kfree_skb_reason
|
||||
kimage_voffset
|
||||
__kmalloc
|
||||
@@ -433,6 +417,9 @@
|
||||
ktime_get_mono_fast_ns
|
||||
ktime_get_real_ts64
|
||||
ktime_get_with_offset
|
||||
kvfree
|
||||
kvfree_call_rcu
|
||||
kvmalloc_node
|
||||
__list_add_valid
|
||||
__list_del_entry_valid
|
||||
__local_bh_enable_ip
|
||||
@@ -470,8 +457,13 @@
|
||||
__napi_schedule
|
||||
napi_schedule_prep
|
||||
__netdev_alloc_skb
|
||||
netdev_err
|
||||
netdev_info
|
||||
netif_napi_add_weight
|
||||
__netif_napi_del
|
||||
netif_rx
|
||||
netif_tx_wake_queue
|
||||
net_ratelimit
|
||||
__nla_parse
|
||||
nla_put
|
||||
nr_cpu_ids
|
||||
@@ -522,8 +514,10 @@
|
||||
of_property_read_u32_index
|
||||
of_property_read_variable_u32_array
|
||||
of_property_read_variable_u8_array
|
||||
of_prop_next_u32
|
||||
of_reserved_mem_lookup
|
||||
param_ops_bool
|
||||
param_ops_charp
|
||||
param_ops_int
|
||||
param_ops_uint
|
||||
pci_clear_master
|
||||
@@ -607,6 +601,7 @@
|
||||
_raw_write_lock_irq
|
||||
_raw_write_unlock_bh
|
||||
_raw_write_unlock_irq
|
||||
rcu_barrier
|
||||
__rcu_read_lock
|
||||
__rcu_read_unlock
|
||||
rdev_get_drvdata
|
||||
@@ -614,6 +609,7 @@
|
||||
regcache_cache_only
|
||||
regcache_mark_dirty
|
||||
regcache_sync
|
||||
register_netdevice_notifier
|
||||
register_reboot_notifier
|
||||
__register_rpmsg_driver
|
||||
regmap_bulk_read
|
||||
@@ -653,6 +649,11 @@
|
||||
__reset_control_get
|
||||
reset_control_put
|
||||
reset_control_reset
|
||||
rhashtable_insert_slow
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
round_jiffies_up
|
||||
rpmsg_register_device
|
||||
rpmsg_register_device_override
|
||||
rpmsg_send
|
||||
@@ -665,6 +666,9 @@
|
||||
rproc_del
|
||||
rproc_free
|
||||
rproc_remove_subdev
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
sched_set_fifo_low
|
||||
schedule
|
||||
schedule_timeout
|
||||
@@ -681,10 +685,15 @@
|
||||
simple_read_from_buffer
|
||||
single_open
|
||||
single_release
|
||||
skb_clone
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
skb_dequeue
|
||||
__skb_get_hash
|
||||
skb_pull
|
||||
skb_push
|
||||
skb_put
|
||||
skb_queue_head
|
||||
skb_queue_purge
|
||||
skb_queue_tail
|
||||
skb_trim
|
||||
@@ -759,11 +768,13 @@
|
||||
sysfs_create_link
|
||||
sysfs_emit
|
||||
sysfs_remove_link
|
||||
system_power_efficient_wq
|
||||
system_wq
|
||||
tasklet_init
|
||||
tasklet_kill
|
||||
__tasklet_schedule
|
||||
tasklet_setup
|
||||
tasklet_unlock_wait
|
||||
thermal_cooling_device_register
|
||||
thermal_cooling_device_unregister
|
||||
thermal_zone_device_update
|
||||
@@ -777,9 +788,12 @@
|
||||
__trace_trigger_soft_disabled
|
||||
__udelay
|
||||
unregister_chrdev_region
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_reboot_notifier
|
||||
unregister_rpmsg_driver
|
||||
usb_disabled
|
||||
__usecs_to_jiffies
|
||||
usleep_range_state
|
||||
v4l2_ctrl_handler_free
|
||||
v4l2_ctrl_handler_init_class
|
||||
@@ -833,7 +847,6 @@
|
||||
wake_up_process
|
||||
__warn_printk
|
||||
watchdog_init_timeout
|
||||
wiphy_to_ieee80211_hw
|
||||
__xa_alloc
|
||||
xa_erase
|
||||
xa_find
|
||||
@@ -863,44 +876,15 @@
|
||||
platform_irq_count
|
||||
report_iommu_fault
|
||||
|
||||
# required by ath.ko
|
||||
freq_reg_info
|
||||
reg_initiator_name
|
||||
wiphy_apply_custom_regulatory
|
||||
|
||||
# required by ath10k_core.ko
|
||||
cfg80211_calculate_bitrate
|
||||
cpu_latency_qos_add_request
|
||||
cpu_latency_qos_remove_request
|
||||
crc32_le
|
||||
guid_gen
|
||||
ieee80211_beacon_get_tim
|
||||
ieee80211_hw_restart_disconnect
|
||||
ieee80211_manage_rx_ba_offl
|
||||
ieee80211_next_txq
|
||||
ieee80211_proberesp_get
|
||||
__ieee80211_schedule_txq
|
||||
ieee80211_sta_register_airtime
|
||||
ieee80211_stop_queue
|
||||
ieee80211_tdls_oper_request
|
||||
ieee80211_tx_dequeue
|
||||
ieee80211_txq_get_depth
|
||||
ieee80211_txq_may_transmit
|
||||
ieee80211_txq_schedule_start
|
||||
ieee80211_tx_rate_update
|
||||
ieee80211_wake_queue
|
||||
init_uts_ns
|
||||
__kfifo_alloc
|
||||
__kfifo_free
|
||||
param_ops_ulong
|
||||
regulatory_hint
|
||||
rfc1042_header
|
||||
skb_copy
|
||||
skb_dequeue_tail
|
||||
skb_queue_head
|
||||
skb_realloc_headroom
|
||||
wiphy_read_of_freq_limits
|
||||
wiphy_rfkill_set_hw_state_reason
|
||||
|
||||
# required by ath10k_pci.ko
|
||||
pci_disable_msi
|
||||
@@ -908,29 +892,11 @@
|
||||
pci_write_config_dword
|
||||
|
||||
# required by ath11k.ko
|
||||
crypto_alloc_shash
|
||||
crypto_destroy_tfm
|
||||
crypto_shash_final
|
||||
crypto_shash_setkey
|
||||
crypto_shash_update
|
||||
ieee80211_color_change_finish
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_get_fils_discovery_tmpl
|
||||
ieee80211_get_hdrlen_from_skb
|
||||
ieee80211_get_unsol_bcast_probe_resp_tmpl
|
||||
ieee80211_gtk_rekey_notify
|
||||
ieee80211_tx_status
|
||||
ieeee80211_obss_color_collision_notify
|
||||
__ipv6_addr_type
|
||||
memcpy_and_pad
|
||||
regulatory_set_wiphy_regd
|
||||
rhashtable_destroy
|
||||
rhashtable_init
|
||||
rhashtable_insert_slow
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
__skb_get_hash
|
||||
|
||||
# required by ath11k_ahb.ko
|
||||
dma_map_resource
|
||||
@@ -956,6 +922,57 @@
|
||||
pm_runtime_irq_safe
|
||||
vchan_find_desc
|
||||
|
||||
# required by cfg80211.ko
|
||||
bpf_trace_run10
|
||||
bpf_trace_run7
|
||||
debugfs_rename
|
||||
__dev_change_net_namespace
|
||||
__dev_get_by_index
|
||||
dev_get_by_index
|
||||
device_rename
|
||||
do_trace_netlink_extack
|
||||
genlmsg_multicast_allns
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
get_net_ns_by_fd
|
||||
get_net_ns_by_pid
|
||||
inet_csk_get_port
|
||||
key_create_or_update
|
||||
key_put
|
||||
keyring_alloc
|
||||
ktime_get_coarse_with_offset
|
||||
memcmp
|
||||
netlink_broadcast
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_ns_type_operations
|
||||
nla_find
|
||||
nla_memcpy
|
||||
nla_put_64bit
|
||||
nla_reserve
|
||||
__nla_validate
|
||||
__put_net
|
||||
rb_erase
|
||||
rb_insert_color
|
||||
register_netdevice
|
||||
register_pernet_device
|
||||
request_firmware_nowait
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
rfkill_register
|
||||
rfkill_resume_polling
|
||||
rfkill_set_hw_state_reason
|
||||
rfkill_unregister
|
||||
skb_add_rx_frag
|
||||
__sock_create
|
||||
trace_print_array_seq
|
||||
unregister_pernet_device
|
||||
verify_pkcs7_signature
|
||||
wireless_nlevent_flush
|
||||
|
||||
# required by clk-qcom.ko
|
||||
__clk_determine_rate
|
||||
clk_fixed_factor_ops
|
||||
@@ -969,7 +986,6 @@
|
||||
__clk_mux_determine_rate_closest
|
||||
divider_ro_round_rate_parent
|
||||
of_find_node_opts_by_path
|
||||
of_prop_next_u32
|
||||
pm_genpd_remove_subdomain
|
||||
|
||||
# required by clk-rpmh.ko
|
||||
@@ -1003,7 +1019,6 @@
|
||||
|
||||
# required by drm_display_helper.ko
|
||||
devm_backlight_device_register
|
||||
_dev_printk
|
||||
drm_atomic_get_connector_state
|
||||
drm_atomic_get_crtc_state
|
||||
drm_atomic_get_new_private_obj_state
|
||||
@@ -1031,7 +1046,6 @@
|
||||
devm_extcon_dev_register
|
||||
extcon_set_state_sync
|
||||
gpiod_set_debounce
|
||||
system_power_efficient_wq
|
||||
|
||||
# required by fastrpc.ko
|
||||
dma_buf_attach
|
||||
@@ -1043,6 +1057,7 @@
|
||||
dma_buf_unmap_attachment
|
||||
dma_get_sgtable_attrs
|
||||
down_read
|
||||
down_write
|
||||
find_vma
|
||||
__mmap_lock_do_trace_acquire_returned
|
||||
__mmap_lock_do_trace_released
|
||||
@@ -1054,6 +1069,7 @@
|
||||
__tracepoint_mmap_lock_released
|
||||
__tracepoint_mmap_lock_start_locking
|
||||
up_read
|
||||
up_write
|
||||
|
||||
# required by gpi.ko
|
||||
krealloc
|
||||
@@ -1066,7 +1082,6 @@
|
||||
gpiod_get_optional
|
||||
|
||||
# required by gpu-sched.ko
|
||||
call_rcu
|
||||
dma_fence_add_callback
|
||||
dma_fence_remove_callback
|
||||
dma_resv_iter_first
|
||||
@@ -1077,7 +1092,6 @@
|
||||
kmem_cache_free
|
||||
kthread_parkme
|
||||
kthread_should_park
|
||||
rcu_barrier
|
||||
wait_for_completion
|
||||
xa_destroy
|
||||
xa_store
|
||||
@@ -1123,9 +1137,6 @@
|
||||
i2c_get_dma_safe_msg_buf
|
||||
i2c_put_dma_safe_msg_buf
|
||||
|
||||
# required by i2c-qup.ko
|
||||
__usecs_to_jiffies
|
||||
|
||||
# required by i2c-rk3x.ko
|
||||
clk_notifier_register
|
||||
clk_notifier_unregister
|
||||
@@ -1163,6 +1174,71 @@
|
||||
pm_clk_resume
|
||||
pm_clk_suspend
|
||||
|
||||
# required by mac80211.ko
|
||||
alloc_netdev_mqs
|
||||
__alloc_percpu_gfp
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
bitmap_free
|
||||
bitmap_zalloc
|
||||
crc32_be
|
||||
crypto_aead_decrypt
|
||||
crypto_aead_encrypt
|
||||
crypto_aead_setauthsize
|
||||
crypto_aead_setkey
|
||||
crypto_alloc_aead
|
||||
crypto_alloc_skcipher
|
||||
__crypto_memneq
|
||||
crypto_shash_digest
|
||||
crypto_shash_finup
|
||||
crypto_skcipher_decrypt
|
||||
crypto_skcipher_encrypt
|
||||
crypto_skcipher_setkey
|
||||
__crypto_xor
|
||||
dev_addr_mod
|
||||
dev_alloc_name
|
||||
dev_fetch_sw_netstats
|
||||
__dev_queue_xmit
|
||||
ether_setup
|
||||
eth_mac_addr
|
||||
ethtool_op_get_link
|
||||
free_netdev
|
||||
free_percpu
|
||||
get_random_u16
|
||||
__hw_addr_init
|
||||
__hw_addr_sync
|
||||
__hw_addr_unsync
|
||||
kernel_param_lock
|
||||
kernel_param_unlock
|
||||
kfree_skb_list_reason
|
||||
ktime_get_seconds
|
||||
napi_gro_receive
|
||||
netdev_set_default_ethtool_ops
|
||||
netif_carrier_off
|
||||
netif_carrier_on
|
||||
netif_receive_skb
|
||||
netif_receive_skb_list
|
||||
netif_tx_stop_all_queues
|
||||
__per_cpu_offset
|
||||
___pskb_trim
|
||||
register_inet6addr_notifier
|
||||
register_inetaddr_notifier
|
||||
rhashtable_free_and_destroy
|
||||
rhltable_init
|
||||
round_jiffies
|
||||
round_jiffies_relative
|
||||
sg_init_one
|
||||
skb_checksum_help
|
||||
skb_clone_sk
|
||||
skb_complete_wifi_ack
|
||||
skb_copy_expand
|
||||
skb_ensure_writable
|
||||
__skb_gso_segment
|
||||
system_freezable_wq
|
||||
unregister_inet6addr_notifier
|
||||
unregister_inetaddr_notifier
|
||||
unregister_netdevice_many
|
||||
|
||||
# required by mcp251xfd.ko
|
||||
alloc_candev_mqs
|
||||
alloc_can_err_skb
|
||||
@@ -1189,14 +1265,10 @@
|
||||
dql_completed
|
||||
dql_reset
|
||||
free_candev
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_notice
|
||||
netdev_printk
|
||||
netdev_warn
|
||||
netif_schedule_queue
|
||||
netif_tx_wake_queue
|
||||
net_ratelimit
|
||||
open_candev
|
||||
register_candev
|
||||
regmap_get_val_bytes
|
||||
@@ -1214,8 +1286,6 @@
|
||||
__vmalloc
|
||||
|
||||
# required by mhi.ko
|
||||
device_add
|
||||
device_del
|
||||
get_random_u32
|
||||
pm_wakeup_dev_event
|
||||
_raw_read_lock_irq
|
||||
@@ -1230,8 +1300,6 @@
|
||||
|
||||
# required by msm.ko
|
||||
__bitmap_andnot
|
||||
bpf_trace_run6
|
||||
bpf_trace_run8
|
||||
clk_get_parent
|
||||
component_add
|
||||
component_bind_all
|
||||
@@ -1240,14 +1308,12 @@
|
||||
component_master_add_with_match
|
||||
component_master_del
|
||||
component_unbind_all
|
||||
_ctype
|
||||
debugfs_attr_read
|
||||
debugfs_attr_write
|
||||
debugfs_create_bool
|
||||
debugfs_create_file_unsafe
|
||||
debugfs_create_u64
|
||||
debugfs_create_x64
|
||||
del_timer
|
||||
dev_coredumpm
|
||||
devfreq_cooling_unregister
|
||||
devfreq_recommended_opp
|
||||
@@ -1430,7 +1496,6 @@
|
||||
drm_writeback_queue_job
|
||||
drm_writeback_signal_completion
|
||||
fd_install
|
||||
__flush_workqueue
|
||||
get_pid_task
|
||||
get_unused_fd_flags
|
||||
gpiod_get_value
|
||||
@@ -1448,8 +1513,6 @@
|
||||
kthread_create_worker
|
||||
kthread_destroy_worker
|
||||
kthread_queue_work
|
||||
kvfree
|
||||
kvmalloc_node
|
||||
memdup_user_nul
|
||||
memparse
|
||||
mipi_dsi_create_packet
|
||||
@@ -1467,7 +1530,6 @@
|
||||
of_graph_get_next_endpoint
|
||||
of_graph_get_remote_port_parent
|
||||
of_icc_get
|
||||
param_ops_charp
|
||||
param_ops_ullong
|
||||
phy_calibrate
|
||||
phy_configure
|
||||
@@ -1479,7 +1541,6 @@
|
||||
register_shrinker
|
||||
register_vmap_purge_notifier
|
||||
reservation_ww_class
|
||||
round_jiffies_up
|
||||
sched_set_fifo
|
||||
schedule_timeout_interruptible
|
||||
__sg_page_iter_dma_next
|
||||
@@ -1632,7 +1693,6 @@
|
||||
cpufreq_get_driver_data
|
||||
cpufreq_register_driver
|
||||
cpufreq_unregister_driver
|
||||
__cpu_possible_mask
|
||||
dev_pm_opp_adjust_voltage
|
||||
dev_pm_opp_disable
|
||||
dev_pm_opp_enable
|
||||
@@ -1762,7 +1822,6 @@
|
||||
_copy_to_iter
|
||||
|
||||
# required by qrtr.ko
|
||||
__alloc_skb
|
||||
autoremove_wake_function
|
||||
datagram_poll
|
||||
do_wait_intr_irq
|
||||
@@ -1781,8 +1840,6 @@
|
||||
refcount_dec_and_mutex_lock
|
||||
release_sock
|
||||
sk_alloc
|
||||
skb_clone
|
||||
skb_copy_bits
|
||||
skb_copy_datagram_iter
|
||||
skb_free_datagram
|
||||
__skb_pad
|
||||
@@ -1812,8 +1869,6 @@
|
||||
|
||||
# required by rmtfs_mem.ko
|
||||
alloc_chrdev_region
|
||||
__class_register
|
||||
class_unregister
|
||||
|
||||
# required by rpmsg_ns.ko
|
||||
rpmsg_create_channel
|
||||
@@ -1896,9 +1951,6 @@
|
||||
snd_soc_of_parse_card_name
|
||||
snd_soc_of_parse_pin_switches
|
||||
|
||||
# required by snd-soc-rl6231.ko
|
||||
gcd
|
||||
|
||||
# required by snd-soc-rt5663.ko
|
||||
regcache_cache_bypass
|
||||
snd_soc_dapm_disable_pin
|
||||
@@ -1951,7 +2003,6 @@
|
||||
spi_delay_exec
|
||||
spi_finalize_current_message
|
||||
spi_get_next_queued_message
|
||||
tasklet_unlock_wait
|
||||
|
||||
# required by spi-qcom-qspi.ko
|
||||
icc_disable
|
||||
@@ -1994,7 +2045,7 @@
|
||||
ufshcd_init_pwr_dev_param
|
||||
ufshcd_mcq_config_esi
|
||||
ufshcd_mcq_enable_esi
|
||||
ufshcd_mcq_poll_cqe_nolock
|
||||
ufshcd_mcq_poll_cqe_lock
|
||||
ufshcd_mcq_write_cqis
|
||||
ufshcd_pltfrm_init
|
||||
ufshcd_pltfrm_shutdown
|
||||
@@ -2052,3 +2103,4 @@
|
||||
fwnode_get_name
|
||||
icc_provider_add
|
||||
icc_provider_del
|
||||
ufshcd_mcq_poll_cqe_nolock
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
bpf_trace_run5
|
||||
bpf_trace_run6
|
||||
bpf_trace_run7
|
||||
bpf_trace_run8
|
||||
bpf_trace_run9
|
||||
bus_register
|
||||
bus_unregister
|
||||
@@ -86,6 +87,7 @@
|
||||
config_group_init_type_name
|
||||
console_suspend_enabled
|
||||
__const_udelay
|
||||
consume_skb
|
||||
__copy_overflow
|
||||
__cpu_active_mask
|
||||
cpu_bit_bitmap
|
||||
@@ -244,7 +246,6 @@
|
||||
dma_unmap_resource
|
||||
dma_unmap_sg_attrs
|
||||
do_wait_intr
|
||||
down_read
|
||||
down_write
|
||||
d_path
|
||||
driver_unregister
|
||||
@@ -268,6 +269,7 @@
|
||||
drm_crtc_add_crc_entry
|
||||
__drm_crtc_commit_free
|
||||
drm_crtc_send_vblank_event
|
||||
drm_crtc_vblank_count
|
||||
drm_crtc_vblank_off
|
||||
drm_crtc_vblank_on
|
||||
drm_crtc_vblank_put
|
||||
@@ -318,6 +320,7 @@
|
||||
drm_vblank_init
|
||||
dump_stack
|
||||
enable_irq
|
||||
eth_type_trans
|
||||
fd_install
|
||||
_find_first_bit
|
||||
_find_last_bit
|
||||
@@ -337,8 +340,13 @@
|
||||
__free_pages
|
||||
free_pages
|
||||
freq_qos_update_request
|
||||
gcd
|
||||
generic_file_llseek
|
||||
generic_handle_irq
|
||||
genlmsg_multicast_allns
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
gen_pool_add_owner
|
||||
gen_pool_alloc_algo_owner
|
||||
gen_pool_avail
|
||||
@@ -399,6 +407,7 @@
|
||||
idr_alloc
|
||||
idr_remove
|
||||
init_dummy_netdev
|
||||
init_net
|
||||
__init_rwsem
|
||||
__init_swait_queue_head
|
||||
init_task
|
||||
@@ -503,6 +512,7 @@
|
||||
log_write_mmio
|
||||
loops_per_jiffy
|
||||
memchr
|
||||
memcmp
|
||||
memcpy
|
||||
__memcpy_fromio
|
||||
__memcpy_toio
|
||||
@@ -516,7 +526,6 @@
|
||||
mipi_dsi_dcs_set_display_brightness
|
||||
misc_deregister
|
||||
misc_register
|
||||
mmput
|
||||
mod_delayed_work_on
|
||||
mod_timer
|
||||
module_layout
|
||||
@@ -529,6 +538,7 @@
|
||||
mutex_lock_interruptible
|
||||
mutex_trylock
|
||||
mutex_unlock
|
||||
names_cachep
|
||||
napi_complete_done
|
||||
napi_enable
|
||||
napi_gro_receive
|
||||
@@ -537,8 +547,11 @@
|
||||
__netdev_alloc_skb
|
||||
netif_napi_add_weight
|
||||
netif_receive_skb
|
||||
netif_rx
|
||||
netif_tx_wake_queue
|
||||
nla_memcpy
|
||||
nla_put
|
||||
nla_reserve
|
||||
noop_llseek
|
||||
nr_cpu_ids
|
||||
nsecs_to_jiffies
|
||||
@@ -604,6 +617,7 @@
|
||||
param_set_ulong
|
||||
pci_alloc_irq_vectors_affinity
|
||||
pci_clear_master
|
||||
pcie_get_mps
|
||||
pci_free_irq_vectors
|
||||
pci_irq_vector
|
||||
pci_load_saved_state
|
||||
@@ -681,10 +695,12 @@
|
||||
_raw_read_lock
|
||||
_raw_read_unlock
|
||||
_raw_spin_lock
|
||||
_raw_spin_lock_bh
|
||||
_raw_spin_lock_irq
|
||||
_raw_spin_lock_irqsave
|
||||
_raw_spin_trylock
|
||||
_raw_spin_unlock
|
||||
_raw_spin_unlock_bh
|
||||
_raw_spin_unlock_irq
|
||||
_raw_spin_unlock_irqrestore
|
||||
_raw_write_lock_irqsave
|
||||
@@ -704,6 +720,7 @@
|
||||
__register_chrdev
|
||||
register_chrdev_region
|
||||
register_die_notifier
|
||||
register_netdevice
|
||||
register_pm_notifier
|
||||
register_reboot_notifier
|
||||
register_restart_handler
|
||||
@@ -731,6 +748,7 @@
|
||||
remove_proc_entry
|
||||
request_firmware
|
||||
request_firmware_direct
|
||||
request_firmware_nowait
|
||||
__request_region
|
||||
request_threaded_irq
|
||||
rps_needed
|
||||
@@ -738,6 +756,9 @@
|
||||
rtc_class_open
|
||||
rtc_read_time
|
||||
rtc_time64_to_tm
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
runqueues
|
||||
sched_clock
|
||||
sched_setscheduler_nocheck
|
||||
@@ -766,6 +787,7 @@
|
||||
simple_write_to_buffer
|
||||
single_open
|
||||
single_release
|
||||
skb_copy_bits
|
||||
skb_copy_expand
|
||||
skb_dequeue
|
||||
skb_dequeue_tail
|
||||
@@ -839,7 +861,9 @@
|
||||
subsys_system_register
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
__sw_hweight8
|
||||
sync_file_create
|
||||
synchronize_net
|
||||
synchronize_rcu
|
||||
syscon_regmap_lookup_by_phandle
|
||||
sysfs_add_file_to_group
|
||||
@@ -853,6 +877,7 @@
|
||||
sysfs_notify
|
||||
sysfs_remove_file_ns
|
||||
sysfs_remove_group
|
||||
sysfs_remove_link
|
||||
system_highpri_wq
|
||||
system_long_wq
|
||||
system_state
|
||||
@@ -879,6 +904,7 @@
|
||||
__traceiter_android_vh_cpu_idle_exit
|
||||
__traceiter_android_vh_cpuidle_psci_enter
|
||||
__traceiter_android_vh_cpuidle_psci_exit
|
||||
__traceiter_android_vh_show_mem
|
||||
__traceiter_device_pm_callback_end
|
||||
__traceiter_device_pm_callback_start
|
||||
__traceiter_suspend_resume
|
||||
@@ -886,6 +912,7 @@
|
||||
__tracepoint_android_vh_cpu_idle_exit
|
||||
__tracepoint_android_vh_cpuidle_psci_enter
|
||||
__tracepoint_android_vh_cpuidle_psci_exit
|
||||
__tracepoint_android_vh_show_mem
|
||||
__tracepoint_device_pm_callback_end
|
||||
__tracepoint_device_pm_callback_start
|
||||
tracepoint_probe_register
|
||||
@@ -894,10 +921,12 @@
|
||||
trace_print_array_seq
|
||||
trace_raw_output_prep
|
||||
__trace_trigger_soft_disabled
|
||||
ttm_bo_mmap_obj
|
||||
__udelay
|
||||
unpin_user_page
|
||||
__unregister_chrdev
|
||||
unregister_chrdev_region
|
||||
unregister_netdevice_queue
|
||||
unregister_pm_notifier
|
||||
unregister_reboot_notifier
|
||||
up
|
||||
@@ -935,6 +964,7 @@
|
||||
v4l2_m2m_get_vq
|
||||
v4l2_m2m_init
|
||||
v4l2_m2m_job_finish
|
||||
v4l2_m2m_mmap
|
||||
v4l2_m2m_next_buf
|
||||
v4l2_m2m_poll
|
||||
v4l2_m2m_qbuf
|
||||
@@ -983,6 +1013,58 @@
|
||||
ww_mutex_lock
|
||||
ww_mutex_unlock
|
||||
|
||||
# required by cfg80211.ko
|
||||
bpf_trace_run10
|
||||
csum_partial
|
||||
debugfs_rename
|
||||
__dev_change_net_namespace
|
||||
dev_close
|
||||
__dev_get_by_index
|
||||
dev_get_by_index
|
||||
device_add
|
||||
device_del
|
||||
device_rename
|
||||
do_trace_netlink_extack
|
||||
get_net_ns_by_fd
|
||||
get_net_ns_by_pid
|
||||
inet_csk_get_port
|
||||
init_uts_ns
|
||||
key_create_or_update
|
||||
key_put
|
||||
keyring_alloc
|
||||
kfree_sensitive
|
||||
ktime_get_coarse_with_offset
|
||||
netdev_err
|
||||
netlink_broadcast
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_ns_type_operations
|
||||
nla_find
|
||||
__nla_parse
|
||||
nla_put_64bit
|
||||
__nla_validate
|
||||
__pskb_pull_tail
|
||||
__put_net
|
||||
register_netdevice_notifier
|
||||
register_pernet_device
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
rfkill_register
|
||||
rfkill_resume_polling
|
||||
rfkill_set_hw_state_reason
|
||||
rfkill_unregister
|
||||
skb_add_rx_frag
|
||||
__sock_create
|
||||
sock_release
|
||||
__sw_hweight16
|
||||
system_power_efficient_wq
|
||||
unregister_netdevice_notifier
|
||||
unregister_pernet_device
|
||||
verify_pkcs7_signature
|
||||
wireless_nlevent_flush
|
||||
|
||||
# required by clk_exynos.ko
|
||||
clk_hw_get_parent
|
||||
clk_register
|
||||
@@ -999,8 +1081,8 @@
|
||||
csum_ipv6_magic
|
||||
csum_tcpudp_nofold
|
||||
dev_get_by_name
|
||||
init_net
|
||||
__napi_alloc_skb
|
||||
napi_build_skb
|
||||
register_netdev
|
||||
unregister_netdev
|
||||
|
||||
@@ -1024,7 +1106,11 @@
|
||||
__drm_printfn_debug
|
||||
hdmi_drm_infoframe_init
|
||||
memchr_inv
|
||||
__sw_hweight8
|
||||
|
||||
# required by drm_ttm_helper.ko
|
||||
drm_print_bits
|
||||
ttm_bo_vmap
|
||||
ttm_bo_vunmap
|
||||
|
||||
# required by dss.ko
|
||||
copy_from_kernel_nofault
|
||||
@@ -1082,7 +1168,6 @@
|
||||
balance_push_callback
|
||||
__bitmap_complement
|
||||
bpf_trace_run11
|
||||
bpf_trace_run8
|
||||
check_preempt_curr
|
||||
cpufreq_add_update_util_hook
|
||||
cpufreq_disable_fast_switch
|
||||
@@ -1200,6 +1285,10 @@
|
||||
# required by exynos-coresight.ko
|
||||
cpu_pm_register_notifier
|
||||
|
||||
# required by exynos-cpu-profiler.ko
|
||||
__traceiter_android_rvh_cpufreq_transition
|
||||
__tracepoint_android_rvh_cpufreq_transition
|
||||
|
||||
# required by exynos-cpufreq.ko
|
||||
cpufreq_freq_transition_begin
|
||||
cpufreq_freq_transition_end
|
||||
@@ -1222,6 +1311,7 @@
|
||||
__tracepoint_ipi_entry
|
||||
__tracepoint_ipi_exit
|
||||
__tracepoint_ipi_raise
|
||||
|
||||
# required by exynos-drm.ko
|
||||
class_create_file_ns
|
||||
component_add
|
||||
@@ -1231,14 +1321,22 @@
|
||||
component_master_del
|
||||
component_match_add_release
|
||||
component_unbind_all
|
||||
console_trylock
|
||||
console_unlock
|
||||
devm_drm_panel_bridge_add_typed
|
||||
__do_once_done
|
||||
__do_once_start
|
||||
drm_atomic_add_affected_connectors
|
||||
drm_atomic_add_affected_planes
|
||||
drm_atomic_bridge_chain_disable
|
||||
drm_atomic_bridge_chain_enable
|
||||
drm_atomic_bridge_chain_post_disable
|
||||
drm_atomic_bridge_chain_pre_enable
|
||||
drm_atomic_commit
|
||||
drm_atomic_get_plane_state
|
||||
__drm_atomic_helper_bridge_duplicate_state
|
||||
__drm_atomic_helper_bridge_reset
|
||||
drm_atomic_helper_calc_timestamping_constants
|
||||
drm_atomic_helper_check_modeset
|
||||
drm_atomic_helper_check_planes
|
||||
drm_atomic_helper_check_plane_state
|
||||
@@ -1279,15 +1377,20 @@
|
||||
drm_crtc_enable_color_mgmt
|
||||
drm_crtc_handle_vblank
|
||||
drm_crtc_vblank_get
|
||||
drm_dev_has_vblank
|
||||
drm_display_mode_to_videomode
|
||||
drm_edid_to_sad
|
||||
drm_format_info
|
||||
drm_gem_create_mmap_offset
|
||||
drm_gem_fb_begin_cpu_access
|
||||
drm_gem_prime_import_dev
|
||||
drm_gem_vm_close
|
||||
drm_gem_vm_open
|
||||
drm_get_format_info
|
||||
__drmm_add_action_or_reset
|
||||
drm_match_cea_mode
|
||||
__drmm_crtc_alloc_with_planes
|
||||
__drmm_encoder_alloc
|
||||
drmm_kmalloc
|
||||
drm_mode_config_reset
|
||||
drm_mode_copy
|
||||
@@ -1319,9 +1422,11 @@
|
||||
drm_self_refresh_helper_alter_state
|
||||
drm_send_event_locked
|
||||
drm_wait_one_vblank
|
||||
drm_writeback_cleanup_job
|
||||
drm_writeback_connector_init
|
||||
drm_writeback_queue_job
|
||||
get_options
|
||||
hdmi_drm_infoframe_pack_only
|
||||
mipi_dsi_create_packet
|
||||
mipi_dsi_dcs_set_column_address
|
||||
mipi_dsi_dcs_set_page_address
|
||||
@@ -1335,6 +1440,7 @@
|
||||
platform_find_device_by_driver
|
||||
seq_release
|
||||
strnchr
|
||||
v4l2_match_dv_timings
|
||||
|
||||
# required by exynos-dsufreq.ko
|
||||
nsec_to_clock_t
|
||||
@@ -1360,6 +1466,9 @@
|
||||
# required by exynos-reboot.ko
|
||||
pm_power_off
|
||||
|
||||
# required by exynos-s2i.ko
|
||||
smp_call_function_many
|
||||
|
||||
# required by exynos-ssld.ko
|
||||
driver_register
|
||||
|
||||
@@ -1417,14 +1526,32 @@
|
||||
hex_dump_to_buffer
|
||||
|
||||
# required by exynos_mpam_policy.ko
|
||||
current_time
|
||||
d_add
|
||||
d_alloc_name
|
||||
d_make_root
|
||||
dput
|
||||
find_task_by_vpid
|
||||
fs_kobj
|
||||
get_next_ino
|
||||
get_tree_single
|
||||
init_user_ns
|
||||
kernfs_path_from_node
|
||||
kill_litter_super
|
||||
new_inode
|
||||
register_filesystem
|
||||
simple_dir_inode_operations
|
||||
simple_dir_operations
|
||||
simple_statfs
|
||||
sysfs_create_mount_point
|
||||
sysfs_remove_mount_point
|
||||
__traceiter_android_rvh_sched_fork
|
||||
__traceiter_android_vh_cgroup_attach
|
||||
__traceiter_android_vh_is_fpsimd_save
|
||||
__tracepoint_android_rvh_sched_fork
|
||||
__tracepoint_android_vh_cgroup_attach
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
unregister_filesystem
|
||||
|
||||
# required by exynos_thermal_v2.ko
|
||||
dev_pm_opp_find_freq_exact
|
||||
@@ -1466,11 +1593,13 @@
|
||||
# required by fimc-is.ko
|
||||
clk_hw_get_rate
|
||||
devm_phy_put
|
||||
__devm_release_region
|
||||
down_interruptible
|
||||
i3c_device_do_priv_xfers
|
||||
kthread_create_worker
|
||||
kthread_destroy_worker
|
||||
kthread_flush_worker
|
||||
of_alias_get_highest_id
|
||||
of_find_node_by_phandle
|
||||
param_set_uint
|
||||
phy_configure
|
||||
@@ -1482,6 +1611,7 @@
|
||||
regulator_get_voltage
|
||||
regulator_set_voltage
|
||||
v4l2_device_register_subdev
|
||||
v4l2_device_set_name
|
||||
v4l2_device_unregister_subdev
|
||||
v4l2_subdev_call_wrappers
|
||||
vb2_mmap
|
||||
@@ -1591,11 +1721,13 @@
|
||||
# required by mcDrvModule.ko
|
||||
crypto_shash_final
|
||||
crypto_shash_update
|
||||
down_read
|
||||
freezer_active
|
||||
freezing_slow_path
|
||||
get_zeroed_page
|
||||
kstrtol_from_user
|
||||
ktime_get_raw_ts64
|
||||
mmput
|
||||
pin_user_pages
|
||||
__refrigerator
|
||||
release_pages
|
||||
@@ -1610,7 +1742,6 @@
|
||||
|
||||
# required by mpam_arch.ko
|
||||
bitmap_alloc
|
||||
__cpu_present_mask
|
||||
kobj_sysfs_ops
|
||||
kstrtou16
|
||||
on_each_cpu_cond_mask
|
||||
@@ -1619,12 +1750,15 @@
|
||||
arch_timer_read_counter
|
||||
class_find_device
|
||||
clocks_calc_mult_shift
|
||||
iio_device_alloc
|
||||
iio_device_free
|
||||
__iio_device_register
|
||||
iio_device_unregister
|
||||
nonseekable_open
|
||||
rtc_set_time
|
||||
rtc_tm_to_time64
|
||||
sched_setscheduler
|
||||
sysfs_remove_link
|
||||
__wake_up_locked_key
|
||||
__wake_up_sync
|
||||
|
||||
# required by npu.ko
|
||||
@@ -1651,7 +1785,6 @@
|
||||
|
||||
# required by pablo-self-tests.ko
|
||||
debugfs_create_blob
|
||||
memcmp
|
||||
|
||||
# required by panel-samsung-command-ctrl.ko
|
||||
mipi_dsi_compression_mode
|
||||
@@ -1684,12 +1817,16 @@
|
||||
# required by pcie-exynos-rc-core.ko
|
||||
dw_handle_msi_irq
|
||||
dw_pcie_host_init
|
||||
dw_pcie_own_conf_map_bus
|
||||
dw_pcie_read
|
||||
dw_pcie_setup_rc
|
||||
dw_pcie_write
|
||||
pci_assign_resource
|
||||
pcie_set_mps
|
||||
pci_find_bus
|
||||
pci_find_ext_capability
|
||||
pci_generic_config_read
|
||||
pci_generic_config_write
|
||||
pci_get_device
|
||||
pci_rescan_bus
|
||||
platform_get_irq_byname_optional
|
||||
@@ -1709,23 +1846,6 @@
|
||||
pin_get_name
|
||||
platform_get_irq_optional
|
||||
|
||||
# required by pl330.ko
|
||||
amba_driver_register
|
||||
amba_driver_unregister
|
||||
cpu_all_bits
|
||||
dev_err_probe
|
||||
__devm_reset_control_get
|
||||
dma_async_device_register
|
||||
dma_async_device_unregister
|
||||
dma_async_tx_descriptor_init
|
||||
dmaengine_unmap_put
|
||||
dma_get_slave_channel
|
||||
of_dma_controller_free
|
||||
of_dma_controller_register
|
||||
pm_runtime_irq_safe
|
||||
reset_control_assert
|
||||
reset_control_deassert
|
||||
|
||||
# required by pwm-samsung.ko
|
||||
of_pwm_xlate_with_flags
|
||||
pwmchip_add
|
||||
@@ -1781,6 +1901,23 @@
|
||||
iommu_group_alloc
|
||||
iommu_group_set_name
|
||||
|
||||
# required by samsung-pdma.ko
|
||||
amba_driver_register
|
||||
amba_driver_unregister
|
||||
cpu_all_bits
|
||||
dev_err_probe
|
||||
__devm_reset_control_get
|
||||
dma_async_device_register
|
||||
dma_async_device_unregister
|
||||
dma_async_tx_descriptor_init
|
||||
dmaengine_unmap_put
|
||||
dma_get_slave_channel
|
||||
of_dma_controller_free
|
||||
of_dma_controller_register
|
||||
pm_runtime_irq_safe
|
||||
reset_control_assert
|
||||
reset_control_deassert
|
||||
|
||||
# required by samsung-secure-iova.ko
|
||||
gen_pool_first_fit_align
|
||||
|
||||
@@ -1818,6 +1955,7 @@
|
||||
|
||||
# required by scaler.ko
|
||||
dma_fence_default_wait
|
||||
sg_nents_for_len
|
||||
sync_file_get_fence
|
||||
v4l2_ctrl_handler_setup
|
||||
v4l2_m2m_try_schedule
|
||||
@@ -1827,19 +1965,22 @@
|
||||
crc_ccitt
|
||||
param_ops_ullong
|
||||
skb_split
|
||||
tty_dev_name_to_number
|
||||
tty_kclose
|
||||
tty_kopen_exclusive
|
||||
tty_lock
|
||||
tty_mode_ioctl
|
||||
tty_register_ldisc
|
||||
tty_set_ldisc
|
||||
tty_set_termios
|
||||
tty_unlock
|
||||
tty_unregister_ldisc
|
||||
|
||||
# required by scsc_logring.ko
|
||||
dev_vprintk_emit
|
||||
vprintk_emit
|
||||
|
||||
# required by scsc_mx.ko
|
||||
genlmsg_multicast_allns
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
kobject_get
|
||||
kobject_uevent
|
||||
|
||||
@@ -1859,70 +2000,34 @@
|
||||
_raw_read_unlock_irqrestore
|
||||
|
||||
# required by scsc_wlan.ko
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_chandef_create
|
||||
cfg80211_chandef_valid
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_connect_done
|
||||
cfg80211_conn_failed
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_external_auth_request
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_find_vendor_elem
|
||||
cfg80211_get_bss
|
||||
cfg80211_inform_bss_frame_data
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_new_sta
|
||||
cfg80211_put_bss
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_ref_bss
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_update_owe_info_event
|
||||
cfg80211_vendor_cmd_reply
|
||||
consume_skb
|
||||
arp_tbl
|
||||
dev_addr_mod
|
||||
dev_alloc_name
|
||||
__dev_queue_xmit
|
||||
down_trylock
|
||||
dql_completed
|
||||
dql_reset
|
||||
dst_release
|
||||
ether_setup
|
||||
eth_type_trans
|
||||
for_each_kernel_tracepoint
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_get_channel_khz
|
||||
in4_pton
|
||||
in6_pton
|
||||
ip_route_output_flow
|
||||
ip_send_check
|
||||
linkwatch_fire_event
|
||||
__local_bh_enable_ip
|
||||
napi_disable
|
||||
napi_gro_flush
|
||||
neigh_destroy
|
||||
neigh_lookup
|
||||
netif_carrier_off
|
||||
netif_carrier_on
|
||||
__netif_napi_del
|
||||
netif_rx
|
||||
netif_schedule_queue
|
||||
netif_tx_stop_all_queues
|
||||
nla_memcpy
|
||||
nla_put_nohdr
|
||||
nla_reserve
|
||||
_raw_read_lock_bh
|
||||
_raw_read_unlock_bh
|
||||
_raw_spin_lock_bh
|
||||
_raw_spin_unlock_bh
|
||||
_raw_write_lock
|
||||
_raw_write_lock_bh
|
||||
_raw_write_unlock
|
||||
@@ -1930,24 +2035,12 @@
|
||||
register_inet6addr_notifier
|
||||
register_inetaddr_notifier
|
||||
register_kretprobe
|
||||
register_netdevice
|
||||
regulatory_set_wiphy_regd
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
skb_clone
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
skb_realloc_headroom
|
||||
synchronize_net
|
||||
unregister_inet6addr_notifier
|
||||
unregister_inetaddr_notifier
|
||||
unregister_kretprobe
|
||||
unregister_netdevice_queue
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_register
|
||||
wiphy_unregister
|
||||
|
||||
# required by scsi_srpmb.ko
|
||||
pfn_is_map_memory
|
||||
@@ -1982,10 +2075,19 @@
|
||||
devfreq_update_interval
|
||||
devm_devfreq_unregister_notifier
|
||||
devm_platform_ioremap_resource_byname
|
||||
dma_buf_dynamic_attach
|
||||
dma_buf_move_notify
|
||||
dma_buf_pin
|
||||
dma_buf_unpin
|
||||
dma_fence_array_create
|
||||
dma_fence_chain_ops
|
||||
dma_fence_chain_walk
|
||||
dma_fence_get_status
|
||||
dma_fence_get_stub
|
||||
dma_fence_wait_any_timeout
|
||||
dma_get_required_mask
|
||||
dma_resv_add_fence
|
||||
dma_resv_get_fences
|
||||
dma_resv_get_singleton
|
||||
dma_resv_iter_first_unlocked
|
||||
dma_resv_iter_next_unlocked
|
||||
@@ -1995,8 +2097,12 @@
|
||||
down_read_killable
|
||||
down_read_trylock
|
||||
drain_workqueue
|
||||
drm_connector_attach_dp_subconnector_property
|
||||
drm_connector_init_with_ddc
|
||||
drm_crtc_cleanup
|
||||
drm_crtc_helper_set_config
|
||||
drm_crtc_helper_set_mode
|
||||
drm_crtc_init
|
||||
drm_crtc_vblank_helper_get_vblank_timestamp
|
||||
drm_cvt_mode
|
||||
drm_debugfs_create_files
|
||||
@@ -2004,6 +2110,7 @@
|
||||
drm_dev_enter
|
||||
drm_dev_exit
|
||||
drm_dev_put
|
||||
drm_edid_header_is_valid
|
||||
drm_edid_is_valid
|
||||
drm_encoder_cleanup
|
||||
drm_encoder_init
|
||||
@@ -2013,10 +2120,15 @@
|
||||
drm_gem_dmabuf_release
|
||||
drm_gem_dmabuf_vmap
|
||||
drm_gem_dmabuf_vunmap
|
||||
drm_gem_prime_export
|
||||
drm_gem_prime_mmap
|
||||
drm_handle_vblank
|
||||
drm_helper_connector_dpms
|
||||
drm_helper_disable_unused_functions
|
||||
drm_helper_force_disable_all
|
||||
drm_helper_hpd_irq_event
|
||||
drm_is_current_master
|
||||
drm_kms_helper_is_poll_worker
|
||||
drm_kms_helper_poll_disable
|
||||
drm_kms_helper_poll_enable
|
||||
drm_mm_init
|
||||
@@ -2025,22 +2137,27 @@
|
||||
drm_mm_remove_node
|
||||
drm_mm_takedown
|
||||
drm_mode_config_cleanup
|
||||
drm_mode_create_scaling_mode_property
|
||||
drm_mode_crtc_set_gamma_size
|
||||
drm_mode_set_crtcinfo
|
||||
drm_mode_set_name
|
||||
drm_prime_pages_to_sg
|
||||
drm_prime_sg_to_dma_addr_array
|
||||
drm_syncobj_add_point
|
||||
drm_syncobj_create
|
||||
drm_syncobj_find
|
||||
drm_syncobj_find_fence
|
||||
drm_syncobj_free
|
||||
drm_syncobj_get_fd
|
||||
drm_syncobj_get_handle
|
||||
drm_syncobj_replace_fence
|
||||
__fdget
|
||||
_find_first_zero_bit
|
||||
__folio_put
|
||||
gcd
|
||||
get_random_u32
|
||||
__get_task_comm
|
||||
handle_simple_irq
|
||||
i2c_bit_add_bus
|
||||
ida_destroy
|
||||
idr_destroy
|
||||
idr_find
|
||||
@@ -2050,14 +2167,24 @@
|
||||
jiffies64_to_msecs
|
||||
memremap
|
||||
memunmap
|
||||
__mmap_lock_do_trace_acquire_returned
|
||||
__mmap_lock_do_trace_released
|
||||
__mmap_lock_do_trace_start_locking
|
||||
mtree_load
|
||||
mmu_notifier_synchronize
|
||||
page_pinner_inited
|
||||
__page_pinner_put_page
|
||||
param_ops_hexint
|
||||
pci_assign_unassigned_bus_resources
|
||||
pci_bus_resource_n
|
||||
pcie_bandwidth_available
|
||||
pcie_get_speed_cap
|
||||
pci_enable_atomic_ops_to_root
|
||||
pci_enable_pcie_error_reporting
|
||||
pci_get_domain_bus_and_slot
|
||||
pci_iomap
|
||||
pci_iounmap
|
||||
pci_map_rom
|
||||
pci_msix_vec_count
|
||||
pci_release_resource
|
||||
pci_resize_resource
|
||||
pci_unmap_rom
|
||||
pci_write_config_word
|
||||
perf_pmu_unregister
|
||||
pid_task
|
||||
@@ -2076,13 +2203,48 @@
|
||||
si_meminfo
|
||||
sysfs_remove_files
|
||||
__traceiter_gpu_mem_total
|
||||
__traceiter_mmap_lock_acquire_returned
|
||||
__traceiter_mmap_lock_released
|
||||
__traceiter_mmap_lock_start_locking
|
||||
__tracepoint_gpu_mem_total
|
||||
__tracepoint_mmap_lock_acquire_returned
|
||||
__tracepoint_mmap_lock_released
|
||||
__tracepoint_mmap_lock_start_locking
|
||||
ttm_bo_eviction_valuable
|
||||
ttm_bo_init_reserved
|
||||
ttm_bo_kmap
|
||||
ttm_bo_kunmap
|
||||
ttm_bo_lock_delayed_workqueue
|
||||
ttm_bo_mem_space
|
||||
ttm_bo_move_accel_cleanup
|
||||
ttm_bo_move_memcpy
|
||||
ttm_bo_move_to_lru_tail
|
||||
ttm_bo_pin
|
||||
ttm_bo_put
|
||||
ttm_bo_set_bulk_move
|
||||
ttm_bo_unlock_delayed_workqueue
|
||||
ttm_bo_unpin
|
||||
ttm_bo_validate
|
||||
ttm_bo_vm_access
|
||||
ttm_bo_vm_close
|
||||
ttm_bo_vm_dummy_page
|
||||
ttm_bo_vm_fault_reserved
|
||||
ttm_bo_vm_open
|
||||
ttm_bo_vm_reserve
|
||||
ttm_device_fini
|
||||
ttm_device_init
|
||||
ttm_eu_backoff_reservation
|
||||
ttm_eu_reserve_buffers
|
||||
ttm_glob
|
||||
ttm_lru_bulk_move_tail
|
||||
ttm_pool_alloc
|
||||
ttm_pool_debugfs
|
||||
ttm_pool_free
|
||||
ttm_range_man_fini_nocheck
|
||||
ttm_range_man_init_nocheck
|
||||
ttm_resource_fini
|
||||
ttm_resource_free
|
||||
ttm_resource_init
|
||||
ttm_resource_manager_evict_all
|
||||
ttm_resource_manager_init
|
||||
ttm_resource_manager_usage
|
||||
ttm_sg_tt_init
|
||||
ttm_tt_fini
|
||||
vm_get_page_prot
|
||||
__wake_up_locked
|
||||
ww_mutex_lock_interruptible
|
||||
ww_mutex_trylock
|
||||
@@ -2140,7 +2302,6 @@
|
||||
pm_runtime_get_if_active
|
||||
pm_wakeup_dev_event
|
||||
proc_symlink
|
||||
request_firmware_nowait
|
||||
snd_device_free
|
||||
snd_dma_alloc_dir_pages
|
||||
snd_dma_free_pages
|
||||
@@ -2219,8 +2380,12 @@
|
||||
scsi_done
|
||||
__traceiter_android_vh_ufs_check_int_errors
|
||||
__traceiter_android_vh_ufs_compl_command
|
||||
__traceiter_android_vh_ufs_mcq_abort
|
||||
__traceiter_android_vh_ufs_use_mcq_hooks
|
||||
__tracepoint_android_vh_ufs_check_int_errors
|
||||
__tracepoint_android_vh_ufs_compl_command
|
||||
__tracepoint_android_vh_ufs_mcq_abort
|
||||
__tracepoint_android_vh_ufs_use_mcq_hooks
|
||||
trace_print_symbols_seq
|
||||
ufshcd_auto_hibern8_update
|
||||
ufshcd_dme_configure_adapt
|
||||
|
||||
@@ -11,10 +11,23 @@
|
||||
atomic_notifier_chain_unregister
|
||||
__bitmap_weight
|
||||
bitmap_zalloc
|
||||
blkcg_activate_policy
|
||||
blkcg_deactivate_policy
|
||||
blkcg_policy_register
|
||||
blkcg_policy_unregister
|
||||
blkcg_root
|
||||
blkdev_get_by_dev
|
||||
blkdev_get_by_path
|
||||
blkdev_issue_flush
|
||||
blkdev_put
|
||||
blk_mq_sched_mark_restart_hctx
|
||||
blk_mq_sched_try_insert_merge
|
||||
blk_mq_sched_try_merge
|
||||
blk_queue_rq_timeout
|
||||
blk_req_needs_zone_write_lock
|
||||
__blk_req_zone_write_lock
|
||||
__blk_req_zone_write_unlock
|
||||
blk_stat_enable_accounting
|
||||
cache_line_size
|
||||
cancel_delayed_work_sync
|
||||
__check_object_size
|
||||
@@ -34,11 +47,13 @@
|
||||
crypto_comp_compress
|
||||
crypto_comp_decompress
|
||||
crypto_destroy_tfm
|
||||
css_next_descendant_pre
|
||||
_ctype
|
||||
debugfs_create_file
|
||||
debugfs_remove
|
||||
delayed_work_timer_fn
|
||||
del_timer
|
||||
_dev_alert
|
||||
_dev_err
|
||||
device_create
|
||||
device_destroy
|
||||
@@ -62,6 +77,17 @@
|
||||
dma_alloc_attrs
|
||||
dma_free_attrs
|
||||
down_write
|
||||
elevator_alloc
|
||||
elv_bio_merge_ok
|
||||
elv_rb_add
|
||||
elv_rb_del
|
||||
elv_rb_find
|
||||
elv_rb_former_request
|
||||
elv_rb_latter_request
|
||||
elv_register
|
||||
elv_rqhash_add
|
||||
elv_rqhash_del
|
||||
elv_unregister
|
||||
emergency_restart
|
||||
file_ra_state_init
|
||||
file_write_and_wait_range
|
||||
@@ -120,6 +146,7 @@
|
||||
kernel_cpustat
|
||||
kernfs_find_and_get_ns
|
||||
kfree
|
||||
__kfree_skb
|
||||
kimage_vaddr
|
||||
kimage_voffset
|
||||
__kmalloc
|
||||
@@ -160,9 +187,11 @@
|
||||
mutex_lock
|
||||
mutex_unlock
|
||||
name_to_dev_t
|
||||
netlink_ack
|
||||
nr_cpu_ids
|
||||
nsec_to_clock_t
|
||||
of_address_to_resource
|
||||
of_css
|
||||
of_find_compatible_node
|
||||
of_find_node_opts_by_path
|
||||
of_find_property
|
||||
@@ -225,6 +254,7 @@
|
||||
rtc_time64_to_tm
|
||||
rtc_tm_to_time64
|
||||
runqueues
|
||||
sbitmap_queue_min_shallow_depth
|
||||
sched_clock
|
||||
sched_show_task
|
||||
scnprintf
|
||||
@@ -237,6 +267,8 @@
|
||||
simple_strtol
|
||||
single_open
|
||||
single_release
|
||||
skb_copy_ubufs
|
||||
snd_soc_find_dai
|
||||
snd_soc_info_volsw_sx
|
||||
snd_soc_put_volsw_sx
|
||||
snprintf
|
||||
@@ -277,23 +309,34 @@
|
||||
__traceiter_android_rvh_report_bug
|
||||
__traceiter_android_vh_ipi_stop
|
||||
__traceiter_android_vh_is_fpsimd_save
|
||||
__traceiter_android_vh_madvise_pageout_swap_entry
|
||||
__traceiter_android_vh_madvise_swapin_walk_pmd_entry
|
||||
__traceiter_android_vh_mutex_wait_finish
|
||||
__traceiter_android_vh_mutex_wait_start
|
||||
__traceiter_android_vh_ptype_head
|
||||
__traceiter_android_vh_rtmutex_wait_finish
|
||||
__traceiter_android_vh_rtmutex_wait_start
|
||||
__traceiter_android_vh_rwsem_read_wait_finish
|
||||
__traceiter_android_vh_rwsem_read_wait_start
|
||||
__traceiter_android_vh_rwsem_write_wait_finish
|
||||
__traceiter_android_vh_rwsem_write_wait_start
|
||||
__traceiter_android_vh_process_madvise_end
|
||||
__traceiter_android_vh_sched_show_task
|
||||
__traceiter_android_vh_show_smap
|
||||
__traceiter_android_vh_smaps_pte_entry
|
||||
__traceiter_android_vh_try_to_freeze_todo
|
||||
__traceiter_android_vh_try_to_freeze_todo_unfrozen
|
||||
__traceiter_android_vh_watchdog_timer_softlockup
|
||||
__traceiter_android_vh_meminfo_cache_adjust
|
||||
__traceiter_android_vh_si_mem_available_adjust
|
||||
__traceiter_android_vh_si_meminfo_adjust
|
||||
__traceiter_block_rq_insert
|
||||
__traceiter_console
|
||||
__traceiter_hrtimer_expire_entry
|
||||
__traceiter_hrtimer_expire_exit
|
||||
__traceiter_irq_handler_entry
|
||||
__traceiter_irq_handler_exit
|
||||
__traceiter_kfree_skb
|
||||
__traceiter_sched_switch
|
||||
__traceiter_workqueue_execute_start
|
||||
__tracepoint_android_rvh_arm64_serror_panic
|
||||
@@ -307,23 +350,34 @@
|
||||
__tracepoint_android_rvh_report_bug
|
||||
__tracepoint_android_vh_ipi_stop
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
__tracepoint_android_vh_madvise_pageout_swap_entry
|
||||
__tracepoint_android_vh_madvise_swapin_walk_pmd_entry
|
||||
__tracepoint_android_vh_mutex_wait_finish
|
||||
__tracepoint_android_vh_mutex_wait_start
|
||||
__tracepoint_android_vh_ptype_head
|
||||
__tracepoint_android_vh_rtmutex_wait_finish
|
||||
__tracepoint_android_vh_rtmutex_wait_start
|
||||
__tracepoint_android_vh_rwsem_read_wait_finish
|
||||
__tracepoint_android_vh_rwsem_read_wait_start
|
||||
__tracepoint_android_vh_rwsem_write_wait_finish
|
||||
__tracepoint_android_vh_rwsem_write_wait_start
|
||||
__tracepoint_android_vh_process_madvise_end
|
||||
__tracepoint_android_vh_sched_show_task
|
||||
__tracepoint_android_vh_show_smap
|
||||
__tracepoint_android_vh_smaps_pte_entry
|
||||
__tracepoint_android_vh_try_to_freeze_todo
|
||||
__tracepoint_android_vh_try_to_freeze_todo_unfrozen
|
||||
__tracepoint_android_vh_watchdog_timer_softlockup
|
||||
__tracepoint_android_vh_meminfo_cache_adjust
|
||||
__tracepoint_android_vh_si_mem_available_adjust
|
||||
__tracepoint_android_vh_si_meminfo_adjust
|
||||
__tracepoint_block_rq_insert
|
||||
__tracepoint_console
|
||||
__tracepoint_hrtimer_expire_entry
|
||||
__tracepoint_hrtimer_expire_exit
|
||||
__tracepoint_irq_handler_entry
|
||||
__tracepoint_irq_handler_exit
|
||||
__tracepoint_kfree_skb
|
||||
tracepoint_probe_register
|
||||
tracepoint_probe_unregister
|
||||
__tracepoint_sched_switch
|
||||
@@ -334,6 +388,7 @@
|
||||
unregister_restart_handler
|
||||
unregister_syscore_ops
|
||||
up_write
|
||||
usb_alloc_dev
|
||||
usb_gstrings_attach
|
||||
usbnet_get_endpoints
|
||||
usbnet_link_change
|
||||
|
||||
17
android/abi_gki_aarch64_honor
Normal file
17
android/abi_gki_aarch64_honor
Normal file
@@ -0,0 +1,17 @@
|
||||
[abi_symbol_list]
|
||||
__tracepoint_android_vh_get_page_wmark
|
||||
__tracepoint_android_vh_page_add_new_anon_rmap
|
||||
__tracepoint_android_vh_do_shrink_slab
|
||||
__tracepoint_android_vh_shrink_slab_bypass
|
||||
__tracepoint_android_vh_mutex_init
|
||||
__tracepoint_android_vh_file_is_tiny_bypass
|
||||
__tracepoint_android_vh_modify_scan_control
|
||||
__tracepoint_android_vh_should_continue_reclaim
|
||||
__traceiter_android_vh_get_page_wmark
|
||||
__traceiter_android_vh_page_add_new_anon_rmap
|
||||
__traceiter_android_vh_do_shrink_slab
|
||||
__traceiter_android_vh_shrink_slab_bypass
|
||||
__traceiter_android_vh_mutex_init
|
||||
__traceiter_android_vh_file_is_tiny_bypass
|
||||
__traceiter_android_vh_modify_scan_control
|
||||
__traceiter_android_vh_should_continue_reclaim
|
||||
@@ -13,10 +13,13 @@
|
||||
__alloc_pages
|
||||
alloc_pages_exact
|
||||
__alloc_percpu
|
||||
__alloc_percpu_gfp
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
alt_cb_patch_nops
|
||||
anon_inode_getfd
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
__arch_copy_from_user
|
||||
__arch_copy_to_user
|
||||
arm64_use_ng_mappings
|
||||
@@ -54,10 +57,14 @@
|
||||
bpf_prog_put
|
||||
bpf_stats_enabled_key
|
||||
bpf_trace_run1
|
||||
bpf_trace_run10
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
bpf_trace_run5
|
||||
bpf_trace_run6
|
||||
bpf_trace_run7
|
||||
bpf_trace_run8
|
||||
bpf_warn_invalid_xdp_action
|
||||
bsearch
|
||||
build_skb
|
||||
@@ -108,42 +115,6 @@
|
||||
cec_transmit_attempt_done_ts
|
||||
cec_transmit_done_ts
|
||||
cec_unregister_adapter
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_auth_timeout
|
||||
cfg80211_cac_event
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_classify8021d
|
||||
cfg80211_connect_done
|
||||
cfg80211_cqm_rssi_notify
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_ft_event
|
||||
cfg80211_get_bss
|
||||
cfg80211_inform_bss_data
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_new_sta
|
||||
cfg80211_pmksa_candidate_notify
|
||||
cfg80211_put_bss
|
||||
__cfg80211_radar_event
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_report_wowlan_wakeup
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_assoc_resp
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_rx_mlme_mgmt
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_tdls_oper_request
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_vendor_cmd_reply
|
||||
__check_object_size
|
||||
__class_create
|
||||
class_destroy
|
||||
@@ -197,10 +168,13 @@
|
||||
clk_unprepare
|
||||
clk_unregister
|
||||
clockevents_config_and_register
|
||||
clocksource_mmio_init
|
||||
clocksource_mmio_readl_up
|
||||
close_candev
|
||||
cma_alloc
|
||||
cma_get_name
|
||||
cma_release
|
||||
compat_ptr_ioctl
|
||||
complete
|
||||
complete_all
|
||||
completion_done
|
||||
@@ -213,6 +187,14 @@
|
||||
component_master_del
|
||||
component_match_add_release
|
||||
component_unbind_all
|
||||
configfs_register_default_group
|
||||
configfs_register_subsystem
|
||||
configfs_unregister_default_group
|
||||
configfs_unregister_subsystem
|
||||
config_group_init
|
||||
config_group_init_type_name
|
||||
config_item_put
|
||||
config_item_set_name
|
||||
console_lock
|
||||
console_suspend_enabled
|
||||
console_unlock
|
||||
@@ -242,7 +224,26 @@
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
__cpu_possible_mask
|
||||
crc32_be
|
||||
crc32_le
|
||||
crypto_aead_decrypt
|
||||
crypto_aead_encrypt
|
||||
crypto_aead_setauthsize
|
||||
crypto_aead_setkey
|
||||
crypto_alloc_aead
|
||||
crypto_alloc_shash
|
||||
crypto_alloc_skcipher
|
||||
crypto_destroy_tfm
|
||||
__crypto_memneq
|
||||
crypto_shash_digest
|
||||
crypto_shash_finup
|
||||
crypto_shash_setkey
|
||||
crypto_shash_update
|
||||
crypto_skcipher_decrypt
|
||||
crypto_skcipher_encrypt
|
||||
crypto_skcipher_setkey
|
||||
__crypto_xor
|
||||
csum_partial
|
||||
_ctype
|
||||
deactivate_locked_super
|
||||
debugfs_create_blob
|
||||
@@ -252,6 +253,7 @@
|
||||
debugfs_lookup
|
||||
debugfs_lookup_and_remove
|
||||
debugfs_remove
|
||||
debugfs_rename
|
||||
default_llseek
|
||||
default_wake_function
|
||||
delayed_work_timer_fn
|
||||
@@ -260,12 +262,17 @@
|
||||
destroy_workqueue
|
||||
dev_addr_mod
|
||||
dev_alloc_name
|
||||
__dev_change_net_namespace
|
||||
dev_close
|
||||
dev_coredumpv
|
||||
_dev_crit
|
||||
dev_driver_string
|
||||
_dev_err
|
||||
dev_err_probe
|
||||
dev_fetch_sw_netstats
|
||||
dev_fwnode
|
||||
__dev_get_by_index
|
||||
dev_get_by_index
|
||||
dev_get_regmap
|
||||
device_add
|
||||
device_create
|
||||
@@ -290,6 +297,7 @@
|
||||
device_property_read_u32_array
|
||||
device_register
|
||||
device_remove_file
|
||||
device_rename
|
||||
__device_reset
|
||||
device_set_of_node_from_dev
|
||||
device_set_wakeup_capable
|
||||
@@ -370,6 +378,7 @@
|
||||
devm_platform_get_and_ioremap_resource
|
||||
devm_platform_ioremap_resource
|
||||
devm_platform_ioremap_resource_byname
|
||||
devm_power_supply_register
|
||||
devm_pwmchip_add
|
||||
devm_pwm_get
|
||||
devm_rc_allocate_device
|
||||
@@ -427,6 +436,7 @@
|
||||
dev_pm_opp_set_sharing_cpus
|
||||
dev_pm_set_wake_irq
|
||||
_dev_printk
|
||||
__dev_queue_xmit
|
||||
devres_add
|
||||
__devres_alloc_node
|
||||
devres_free
|
||||
@@ -458,6 +468,7 @@
|
||||
dmabuf_page_pool_create
|
||||
dmabuf_page_pool_destroy
|
||||
dmabuf_page_pool_free
|
||||
dmabuf_page_pool_get_size
|
||||
dma_buf_put
|
||||
dma_buf_unmap_attachment
|
||||
dma_buf_vmap
|
||||
@@ -516,6 +527,7 @@
|
||||
dma_unmap_resource
|
||||
dma_unmap_sg_attrs
|
||||
do_SAK
|
||||
do_trace_netlink_extack
|
||||
down
|
||||
down_interruptible
|
||||
down_killable
|
||||
@@ -783,6 +795,7 @@
|
||||
enable_irq
|
||||
enable_percpu_irq
|
||||
ether_setup
|
||||
eth_mac_addr
|
||||
ethnl_cable_test_fault_length
|
||||
ethnl_cable_test_result
|
||||
ethtool_op_get_link
|
||||
@@ -806,6 +819,7 @@
|
||||
finish_wait
|
||||
firmware_kobj
|
||||
fixed_size_llseek
|
||||
flush_delayed_work
|
||||
flush_work
|
||||
__flush_workqueue
|
||||
fortify_panic
|
||||
@@ -838,6 +852,10 @@
|
||||
generic_handle_domain_irq
|
||||
generic_handle_irq
|
||||
generic_shutdown_super
|
||||
genlmsg_multicast_allns
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
genphy_c37_config_aneg
|
||||
genphy_c37_read_status
|
||||
genphy_c45_fast_retrain
|
||||
@@ -864,7 +882,10 @@
|
||||
gen_pool_virt_to_phys
|
||||
get_cpu_device
|
||||
get_device
|
||||
get_net_ns_by_fd
|
||||
get_net_ns_by_pid
|
||||
get_random_bytes
|
||||
get_random_u16
|
||||
get_random_u32
|
||||
get_random_u8
|
||||
get_unused_fd_flags
|
||||
@@ -918,10 +939,14 @@
|
||||
hdmi_vendor_infoframe_pack
|
||||
hex_dump_to_buffer
|
||||
hrtimer_cancel
|
||||
hrtimer_forward
|
||||
hrtimer_init
|
||||
hrtimer_resolution
|
||||
hrtimer_start_range_ns
|
||||
hrtimer_try_to_cancel
|
||||
__hw_addr_init
|
||||
__hw_addr_sync
|
||||
__hw_addr_unsync
|
||||
i2c_adapter_type
|
||||
i2c_add_adapter
|
||||
i2c_add_numbered_adapter
|
||||
@@ -964,16 +989,12 @@
|
||||
idr_get_next
|
||||
idr_preload
|
||||
idr_remove
|
||||
ieee80211_bss_get_elem
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_hdrlen
|
||||
ignore_console_lock_warning
|
||||
iio_alloc_pollfunc
|
||||
iio_buffer_enabled
|
||||
iio_buffer_init
|
||||
iio_buffer_put
|
||||
iio_bus_type
|
||||
iio_dealloc_pollfunc
|
||||
iio_device_attach_buffer
|
||||
iio_device_claim_direct_mode
|
||||
@@ -981,20 +1002,29 @@
|
||||
__iio_device_register
|
||||
iio_device_release_direct_mode
|
||||
iio_device_unregister
|
||||
iio_format_value
|
||||
iio_get_time_ns
|
||||
iio_push_event
|
||||
iio_push_to_buffers
|
||||
iio_read_const_attr
|
||||
iio_read_mount_matrix
|
||||
iio_show_mount_matrix
|
||||
iio_str_to_fixpoint
|
||||
__iio_trigger_alloc
|
||||
iio_trigger_free
|
||||
iio_trigger_notify_done
|
||||
iio_trigger_poll
|
||||
iio_trigger_poll_chained
|
||||
iio_trigger_register
|
||||
iio_trigger_unregister
|
||||
import_iovec
|
||||
in4_pton
|
||||
inet_csk_get_port
|
||||
init_dummy_netdev
|
||||
init_net
|
||||
__init_swait_queue_head
|
||||
init_timer_key
|
||||
init_uts_ns
|
||||
init_wait_entry
|
||||
__init_waitqueue_head
|
||||
input_alloc_absinfo
|
||||
@@ -1056,6 +1086,8 @@
|
||||
__irq_set_handler
|
||||
irq_set_irq_wake
|
||||
irq_to_desc
|
||||
irq_work_queue
|
||||
irq_work_sync
|
||||
ir_raw_event_store_edge
|
||||
is_console_locked
|
||||
is_vmalloc_addr
|
||||
@@ -1071,6 +1103,11 @@
|
||||
jiffies_to_usecs
|
||||
kasan_flag_enabled
|
||||
kasprintf
|
||||
kernel_param_lock
|
||||
kernel_param_unlock
|
||||
key_create_or_update
|
||||
key_put
|
||||
keyring_alloc
|
||||
__kfifo_alloc
|
||||
__kfifo_free
|
||||
__kfifo_from_user
|
||||
@@ -1079,6 +1116,8 @@
|
||||
__kfifo_out
|
||||
__kfifo_to_user
|
||||
kfree
|
||||
kfree_sensitive
|
||||
kfree_skb_list_reason
|
||||
kfree_skb_reason
|
||||
kimage_voffset
|
||||
__kmalloc
|
||||
@@ -1111,9 +1150,11 @@
|
||||
kthread_stop
|
||||
kthread_unpark
|
||||
ktime_get
|
||||
ktime_get_coarse_with_offset
|
||||
ktime_get_mono_fast_ns
|
||||
ktime_get_raw_ts64
|
||||
ktime_get_real_ts64
|
||||
ktime_get_seconds
|
||||
ktime_get_ts64
|
||||
ktime_get_with_offset
|
||||
kvfree
|
||||
@@ -1174,8 +1215,8 @@
|
||||
memparse
|
||||
memremap
|
||||
mem_section
|
||||
memset32
|
||||
memset
|
||||
memset32
|
||||
__memset_io
|
||||
memstart_addr
|
||||
memunmap
|
||||
@@ -1244,6 +1285,7 @@
|
||||
netdev_info
|
||||
netdev_pick_tx
|
||||
netdev_printk
|
||||
netdev_set_default_ethtool_ops
|
||||
netdev_warn
|
||||
netif_carrier_off
|
||||
netif_carrier_on
|
||||
@@ -1252,6 +1294,7 @@
|
||||
netif_napi_add_weight
|
||||
__netif_napi_del
|
||||
netif_receive_skb
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_set_tso_max_segs
|
||||
netif_tx_lock
|
||||
@@ -1261,12 +1304,21 @@
|
||||
netlink_broadcast
|
||||
__netlink_kernel_create
|
||||
netlink_kernel_release
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_ns_type_operations
|
||||
net_ratelimit
|
||||
net_selftest
|
||||
net_selftest_get_count
|
||||
net_selftest_get_strings
|
||||
nla_find
|
||||
nla_memcpy
|
||||
__nla_parse
|
||||
nla_put
|
||||
nla_put_64bit
|
||||
nla_reserve
|
||||
__nla_validate
|
||||
noop_llseek
|
||||
nr_cpu_ids
|
||||
nsecs_to_jiffies
|
||||
@@ -1375,6 +1427,7 @@
|
||||
of_property_read_variable_u32_array
|
||||
of_property_read_variable_u8_array
|
||||
of_prop_next_string
|
||||
of_prop_next_u32
|
||||
of_pwm_xlate_with_flags
|
||||
of_regulator_match
|
||||
of_reserved_mem_device_init_by_idx
|
||||
@@ -1557,7 +1610,10 @@
|
||||
pm_wakeup_dev_event
|
||||
pm_wakeup_ws_event
|
||||
policy_has_boost_freq
|
||||
power_supply_am_i_supplied
|
||||
power_supply_changed
|
||||
power_supply_get_by_phandle
|
||||
power_supply_get_drvdata
|
||||
power_supply_get_property
|
||||
power_supply_put
|
||||
power_supply_register
|
||||
@@ -1576,6 +1632,8 @@
|
||||
proc_mkdir
|
||||
proc_remove
|
||||
pskb_expand_head
|
||||
__pskb_pull_tail
|
||||
___pskb_trim
|
||||
ptp_classify_raw
|
||||
ptp_clock_event
|
||||
ptp_clock_index
|
||||
@@ -1583,6 +1641,7 @@
|
||||
ptp_clock_unregister
|
||||
ptp_parse_header
|
||||
put_device
|
||||
__put_net
|
||||
__put_task_struct
|
||||
put_unused_fd
|
||||
pwm_apply_state
|
||||
@@ -1625,6 +1684,8 @@
|
||||
register_inetaddr_notifier
|
||||
register_netdev
|
||||
register_netdevice
|
||||
register_netdevice_notifier
|
||||
register_pernet_device
|
||||
register_pm_notifier
|
||||
register_reboot_notifier
|
||||
__register_rpmsg_driver
|
||||
@@ -1669,8 +1730,6 @@
|
||||
regulator_set_voltage
|
||||
regulator_set_voltage_sel_regmap
|
||||
regulator_set_voltage_time_sel
|
||||
regulatory_hint
|
||||
regulatory_set_wiphy_regd_sync
|
||||
release_firmware
|
||||
__release_region
|
||||
remap_pfn_range
|
||||
@@ -1692,6 +1751,22 @@
|
||||
reset_controller_unregister
|
||||
reset_control_put
|
||||
reset_control_reset
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
rfkill_register
|
||||
rfkill_resume_polling
|
||||
rfkill_set_hw_state_reason
|
||||
rfkill_unregister
|
||||
rhashtable_free_and_destroy
|
||||
rhashtable_insert_slow
|
||||
rhltable_init
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
round_jiffies
|
||||
round_jiffies_relative
|
||||
round_jiffies_up
|
||||
rpmsg_create_channel
|
||||
rpmsg_create_ept
|
||||
rpmsg_find_device
|
||||
@@ -1705,6 +1780,7 @@
|
||||
rproc_add_carveout
|
||||
rproc_alloc
|
||||
rproc_coredump_add_segment
|
||||
rproc_da_to_va
|
||||
rproc_del
|
||||
rproc_elf_find_loaded_rsc_table
|
||||
rproc_elf_get_boot_addr
|
||||
@@ -1793,12 +1869,25 @@
|
||||
simple_write_to_buffer
|
||||
single_open
|
||||
single_release
|
||||
skb_add_rx_frag
|
||||
skb_checksum_help
|
||||
skb_clone
|
||||
skb_clone_sk
|
||||
skb_complete_tx_timestamp
|
||||
skb_complete_wifi_ack
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
skb_copy_expand
|
||||
skb_dequeue
|
||||
skb_ensure_writable
|
||||
__skb_get_hash
|
||||
__skb_gso_segment
|
||||
skb_pull
|
||||
skb_push
|
||||
skb_put
|
||||
skb_queue_head
|
||||
skb_queue_purge
|
||||
skb_queue_tail
|
||||
skb_realloc_headroom
|
||||
skb_trim
|
||||
skb_tstamp_tx
|
||||
@@ -1926,6 +2015,8 @@
|
||||
snprintf
|
||||
soc_device_match
|
||||
soc_device_register
|
||||
__sock_create
|
||||
sock_release
|
||||
sort
|
||||
__spi_alloc_controller
|
||||
spi_finalize_current_transfer
|
||||
@@ -1960,6 +2051,7 @@
|
||||
strlcat
|
||||
strlen
|
||||
strncasecmp
|
||||
strncat
|
||||
strncmp
|
||||
strncpy
|
||||
strncpy_from_user
|
||||
@@ -1969,6 +2061,7 @@
|
||||
strscpy
|
||||
strsep
|
||||
strstr
|
||||
__sw_hweight16
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
__sw_hweight8
|
||||
@@ -1976,6 +2069,7 @@
|
||||
sync_file_get_fence
|
||||
synchronize_irq
|
||||
synchronize_net
|
||||
synchronize_rcu
|
||||
syscon_node_to_regmap
|
||||
syscon_regmap_lookup_by_compatible
|
||||
syscon_regmap_lookup_by_phandle
|
||||
@@ -1984,12 +2078,14 @@
|
||||
sysfs_create_files
|
||||
sysfs_create_group
|
||||
sysfs_create_groups
|
||||
sysfs_create_link
|
||||
sysfs_emit
|
||||
__sysfs_match_string
|
||||
sysfs_notify
|
||||
sysfs_remove_file_ns
|
||||
sysfs_remove_files
|
||||
sysfs_remove_group
|
||||
sysfs_remove_link
|
||||
sysrq_mask
|
||||
system_freezable_wq
|
||||
system_long_wq
|
||||
@@ -2000,6 +2096,7 @@
|
||||
tasklet_kill
|
||||
__tasklet_schedule
|
||||
tasklet_setup
|
||||
tasklet_unlock_wait
|
||||
thermal_cooling_device_unregister
|
||||
thermal_of_cooling_device_register
|
||||
thermal_of_zone_unregister
|
||||
@@ -2008,6 +2105,7 @@
|
||||
timecounter_cyc2time
|
||||
timecounter_init
|
||||
timecounter_read
|
||||
timer_of_init
|
||||
timespec64_to_jiffies
|
||||
_totalram_pages
|
||||
touchscreen_parse_properties
|
||||
@@ -2069,7 +2167,10 @@
|
||||
unregister_inet6addr_notifier
|
||||
unregister_inetaddr_notifier
|
||||
unregister_netdev
|
||||
unregister_netdevice_many
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_pernet_device
|
||||
unregister_reboot_notifier
|
||||
unregister_rpmsg_driver
|
||||
unregister_virtio_device
|
||||
@@ -2123,6 +2224,7 @@
|
||||
usb_role_switch_unregister
|
||||
usb_speed_string
|
||||
usb_udc_vbus_handler
|
||||
__usecs_to_jiffies
|
||||
usleep_range_state
|
||||
v4l2_ctrl_auto_cluster
|
||||
v4l2_ctrl_handler_free
|
||||
@@ -2241,6 +2343,7 @@
|
||||
vchan_init
|
||||
vchan_tx_desc_free
|
||||
vchan_tx_submit
|
||||
verify_pkcs7_signature
|
||||
vfree
|
||||
video_devdata
|
||||
video_device_alloc
|
||||
@@ -2294,11 +2397,7 @@
|
||||
__warn_printk
|
||||
watchdog_init_timeout
|
||||
watchdog_set_restart_priority
|
||||
wiphy_apply_custom_regulatory
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_register
|
||||
wiphy_unregister
|
||||
wireless_nlevent_flush
|
||||
wireless_send_event
|
||||
woken_wake_function
|
||||
ww_mutex_lock
|
||||
@@ -2314,6 +2413,7 @@
|
||||
xdp_do_flush
|
||||
xdp_do_redirect
|
||||
xdp_master_redirect
|
||||
xdp_return_frame
|
||||
xdp_rxq_info_is_reg
|
||||
__xdp_rxq_info_reg
|
||||
xdp_rxq_info_reg_mem_model
|
||||
|
||||
@@ -186,6 +186,8 @@
|
||||
clk_unprepare
|
||||
clockevents_config_and_register
|
||||
clocks_calc_mult_shift
|
||||
clocksource_mmio_init
|
||||
clocksource_mmio_readl_up
|
||||
close_fd
|
||||
cma_alloc
|
||||
cma_release
|
||||
@@ -246,7 +248,9 @@
|
||||
cpu_hwcaps
|
||||
cpuidle_driver_state_disabled
|
||||
cpuidle_get_driver
|
||||
cpuidle_governor_latency_req
|
||||
cpuidle_pause_and_lock
|
||||
cpuidle_register_governor
|
||||
cpuidle_resume_and_unlock
|
||||
cpu_latency_qos_add_request
|
||||
cpu_latency_qos_remove_request
|
||||
@@ -302,6 +306,7 @@
|
||||
crypto_skcipher_setkey
|
||||
__crypto_xor
|
||||
css_next_child
|
||||
csum_ipv6_magic
|
||||
csum_partial
|
||||
ct_idle_enter
|
||||
ct_idle_exit
|
||||
@@ -378,6 +383,7 @@
|
||||
dev_get_flags
|
||||
dev_get_regmap
|
||||
dev_get_stats
|
||||
dev_get_tstats64
|
||||
device_add
|
||||
device_add_disk
|
||||
device_attach
|
||||
@@ -413,6 +419,7 @@
|
||||
__device_reset
|
||||
device_set_of_node_from_dev
|
||||
device_set_wakeup_capable
|
||||
device_set_wakeup_enable
|
||||
device_show_bool
|
||||
device_store_bool
|
||||
device_unregister
|
||||
@@ -545,6 +552,8 @@
|
||||
dev_pm_opp_put_opp_table
|
||||
dev_pm_opp_remove_all_dynamic
|
||||
dev_pm_opp_set_config
|
||||
dev_pm_qos_add_notifier
|
||||
dev_pm_qos_remove_notifier
|
||||
dev_pm_qos_update_request
|
||||
dev_pm_set_dedicated_wake_irq_reverse
|
||||
_dev_printk
|
||||
@@ -583,6 +592,10 @@
|
||||
dma_buf_get_each
|
||||
dma_buf_map_attachment
|
||||
dma_buf_mmap
|
||||
dmabuf_page_pool_alloc
|
||||
dmabuf_page_pool_create
|
||||
dmabuf_page_pool_destroy
|
||||
dmabuf_page_pool_free
|
||||
dma_buf_put
|
||||
dma_buf_unmap_attachment
|
||||
dma_buf_vmap
|
||||
@@ -760,6 +773,7 @@
|
||||
drm_gem_prime_fd_to_handle
|
||||
drm_gem_prime_handle_to_fd
|
||||
drm_gem_prime_import
|
||||
drm_gem_prime_import_dev
|
||||
drm_gem_private_object_init
|
||||
drm_gem_vm_close
|
||||
drm_gem_vm_open
|
||||
@@ -836,6 +850,9 @@
|
||||
eth_header_cache_update
|
||||
eth_header_parse
|
||||
eth_mac_addr
|
||||
eth_platform_get_mac_address
|
||||
ethtool_convert_legacy_u32_to_link_mode
|
||||
ethtool_convert_link_mode_to_legacy_u32
|
||||
__ethtool_get_link_ksettings
|
||||
ethtool_op_get_link
|
||||
ethtool_op_get_ts_info
|
||||
@@ -855,6 +872,7 @@
|
||||
fget
|
||||
file_path
|
||||
filp_close
|
||||
filp_open_block
|
||||
_find_first_bit
|
||||
_find_first_zero_bit
|
||||
find_get_pid
|
||||
@@ -933,6 +951,7 @@
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
genphy_resume
|
||||
gen_pool_add_owner
|
||||
gen_pool_alloc_algo_owner
|
||||
gen_pool_avail
|
||||
@@ -1012,6 +1031,7 @@
|
||||
handle_simple_irq
|
||||
handle_sysrq
|
||||
have_governor_per_policy
|
||||
hex2bin
|
||||
hex_asc
|
||||
hex_asc_upper
|
||||
hex_dump_to_buffer
|
||||
@@ -1029,6 +1049,7 @@
|
||||
hrtimer_active
|
||||
hrtimer_cancel
|
||||
hrtimer_forward
|
||||
__hrtimer_get_remaining
|
||||
hrtimer_init
|
||||
hrtimer_start_range_ns
|
||||
hrtimer_try_to_cancel
|
||||
@@ -1136,8 +1157,10 @@
|
||||
input_unregister_device
|
||||
input_unregister_handle
|
||||
input_unregister_handler
|
||||
int_sqrt
|
||||
iomem_resource
|
||||
iommu_alloc_resv_region
|
||||
iommu_dev_disable_feature
|
||||
iommu_device_register
|
||||
iommu_device_sysfs_add
|
||||
iommu_device_sysfs_remove
|
||||
@@ -1208,6 +1231,7 @@
|
||||
irq_work_queue_on
|
||||
irq_work_run
|
||||
irq_work_sync
|
||||
is_dma_buf_file
|
||||
is_vmalloc_addr
|
||||
iterate_dir
|
||||
iterate_fd
|
||||
@@ -1256,6 +1280,7 @@
|
||||
__kmalloc
|
||||
kmalloc_caches
|
||||
kmalloc_large
|
||||
kmalloc_large_node
|
||||
__kmalloc_node
|
||||
kmalloc_node_trace
|
||||
__kmalloc_node_track_caller
|
||||
@@ -1366,6 +1391,11 @@
|
||||
mbox_free_channel
|
||||
mbox_request_channel
|
||||
mbox_send_message
|
||||
mdiobus_alloc_size
|
||||
mdiobus_free
|
||||
mdiobus_get_phy
|
||||
__mdiobus_register
|
||||
mdiobus_unregister
|
||||
media_create_ancillary_link
|
||||
media_create_intf_link
|
||||
media_create_pad_link
|
||||
@@ -1471,6 +1501,7 @@
|
||||
mutex_lock_killable
|
||||
mutex_trylock
|
||||
mutex_unlock
|
||||
__napi_alloc_skb
|
||||
napi_complete_done
|
||||
napi_disable
|
||||
napi_enable
|
||||
@@ -1488,6 +1519,7 @@
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_name_in_use
|
||||
netdev_notice
|
||||
netdev_printk
|
||||
netdev_set_default_ethtool_ops
|
||||
netdev_update_features
|
||||
@@ -1504,8 +1536,11 @@
|
||||
netif_receive_skb
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_set_tso_max_size
|
||||
netif_stacked_transfer_operstate
|
||||
netif_tx_lock
|
||||
netif_tx_stop_all_queues
|
||||
netif_tx_unlock
|
||||
netif_tx_wake_queue
|
||||
netlink_broadcast
|
||||
netlink_capable
|
||||
@@ -1519,6 +1554,9 @@
|
||||
net_namespace_list
|
||||
net_ns_type_operations
|
||||
net_ratelimit
|
||||
net_selftest
|
||||
net_selftest_get_count
|
||||
net_selftest_get_strings
|
||||
nf_conntrack_destroy
|
||||
nf_register_net_hooks
|
||||
nf_unregister_net_hooks
|
||||
@@ -1617,6 +1655,7 @@
|
||||
of_n_addr_cells
|
||||
of_n_size_cells
|
||||
__of_parse_phandle_with_args
|
||||
of_pci_get_max_link_speed
|
||||
of_phandle_iterator_init
|
||||
of_phandle_iterator_next
|
||||
of_phy_simple_xlate
|
||||
@@ -1726,13 +1765,35 @@
|
||||
perf_trace_buf_alloc
|
||||
perf_trace_run_bpf_submit
|
||||
pfn_is_map_memory
|
||||
phy_attached_info
|
||||
phy_connect
|
||||
phy_disconnect
|
||||
phy_do_ioctl_running
|
||||
phy_ethtool_get_link_ksettings
|
||||
phy_ethtool_nway_reset
|
||||
phy_ethtool_set_link_ksettings
|
||||
phy_exit
|
||||
phy_get
|
||||
phy_init
|
||||
phylink_connect_phy
|
||||
phylink_create
|
||||
phylink_destroy
|
||||
phylink_disconnect_phy
|
||||
phylink_ethtool_get_pauseparam
|
||||
phylink_ethtool_set_pauseparam
|
||||
phylink_generic_validate
|
||||
phylink_resume
|
||||
phylink_start
|
||||
phylink_stop
|
||||
phylink_suspend
|
||||
phy_power_off
|
||||
phy_power_on
|
||||
phy_print_status
|
||||
phy_put
|
||||
phy_set_mode_ext
|
||||
phy_start
|
||||
phy_stop
|
||||
phy_suspend
|
||||
pick_migrate_task
|
||||
pid_task
|
||||
pinconf_generic_parse_dt_config
|
||||
@@ -1823,6 +1884,7 @@
|
||||
print_hex_dump
|
||||
_printk
|
||||
_printk_deferred
|
||||
__printk_ratelimit
|
||||
proc_create
|
||||
proc_create_data
|
||||
proc_create_net_data
|
||||
@@ -2062,6 +2124,7 @@
|
||||
rtnl_unregister_all
|
||||
runqueues
|
||||
sched_clock
|
||||
sched_clock_register
|
||||
sched_feat_keys
|
||||
sched_setattr
|
||||
sched_setattr_nocheck
|
||||
@@ -2335,6 +2398,7 @@
|
||||
spi_controller_suspend
|
||||
spi_delay_to_ns
|
||||
spi_finalize_current_transfer
|
||||
spi_mem_default_supports_op
|
||||
__spi_register_driver
|
||||
spi_setup
|
||||
spi_sync
|
||||
@@ -2444,12 +2508,15 @@
|
||||
thermal_zone_get_temp
|
||||
thermal_zone_get_zone_by_name
|
||||
thread_group_cputime_adjusted
|
||||
tick_nohz_get_sleep_length
|
||||
timecounter_init
|
||||
timecounter_read
|
||||
timer_of_init
|
||||
timer_unstable_counter_workaround
|
||||
topology_clear_scale_freq_source
|
||||
topology_update_thermal_pressure
|
||||
_totalram_pages
|
||||
_trace_android_vh_record_pcpu_rwsem_starttime
|
||||
__trace_bprintk
|
||||
trace_event_buffer_commit
|
||||
trace_event_buffer_reserve
|
||||
@@ -2524,6 +2591,8 @@
|
||||
__traceiter_android_vh_check_file_open
|
||||
__traceiter_android_vh_check_mmap_file
|
||||
__traceiter_android_vh_cpufreq_fast_switch
|
||||
__traceiter_android_vh_cpu_idle_enter
|
||||
__traceiter_android_vh_cpu_idle_exit
|
||||
__traceiter_android_vh_iommu_iovad_alloc_iova
|
||||
__traceiter_android_vh_iommu_iovad_free_iova
|
||||
__traceiter_android_vh_is_fpsimd_save
|
||||
@@ -2539,6 +2608,8 @@
|
||||
__traceiter_android_vh_ufs_clock_scaling
|
||||
__traceiter_cpu_frequency
|
||||
__traceiter_gpu_mem_total
|
||||
__traceiter_ipi_entry
|
||||
__traceiter_ipi_raise
|
||||
__traceiter_mmap_lock_acquire_returned
|
||||
__traceiter_mmap_lock_released
|
||||
__traceiter_mmap_lock_start_locking
|
||||
@@ -2614,6 +2685,8 @@
|
||||
__tracepoint_android_vh_check_file_open
|
||||
__tracepoint_android_vh_check_mmap_file
|
||||
__tracepoint_android_vh_cpufreq_fast_switch
|
||||
__tracepoint_android_vh_cpu_idle_enter
|
||||
__tracepoint_android_vh_cpu_idle_exit
|
||||
__tracepoint_android_vh_iommu_iovad_alloc_iova
|
||||
__tracepoint_android_vh_iommu_iovad_free_iova
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
@@ -2629,12 +2702,15 @@
|
||||
__tracepoint_android_vh_ufs_clock_scaling
|
||||
__tracepoint_cpu_frequency
|
||||
__tracepoint_gpu_mem_total
|
||||
__tracepoint_ipi_entry
|
||||
__tracepoint_ipi_raise
|
||||
__tracepoint_mmap_lock_acquire_returned
|
||||
__tracepoint_mmap_lock_released
|
||||
__tracepoint_mmap_lock_start_locking
|
||||
__tracepoint_pelt_rt_tp
|
||||
__tracepoint_pelt_se_tp
|
||||
tracepoint_probe_register
|
||||
tracepoint_probe_register_prio
|
||||
tracepoint_probe_unregister
|
||||
__tracepoint_sched_update_nr_running_tp
|
||||
tracepoint_srcu
|
||||
@@ -2791,6 +2867,7 @@
|
||||
usb_add_hcd
|
||||
usb_alloc_coherent
|
||||
usb_alloc_urb
|
||||
usb_altnum_to_altsetting
|
||||
usb_anchor_urb
|
||||
usb_assign_descriptors
|
||||
usb_autopm_get_interface
|
||||
@@ -2803,6 +2880,7 @@
|
||||
usb_composite_unregister
|
||||
usb_control_msg
|
||||
usb_control_msg_recv
|
||||
usb_control_msg_send
|
||||
usb_copy_descriptors
|
||||
usb_create_hcd
|
||||
usb_create_shared_hcd
|
||||
@@ -2812,6 +2890,8 @@
|
||||
usb_disabled
|
||||
usb_driver_claim_interface
|
||||
usb_driver_release_interface
|
||||
usb_driver_set_configuration
|
||||
usb_enable_lpm
|
||||
usb_ep_alloc_request
|
||||
usb_ep_autoconfig
|
||||
usb_ep_dequeue
|
||||
@@ -2844,6 +2924,7 @@
|
||||
usb_get_intf
|
||||
usb_get_maximum_speed
|
||||
usb_get_role_switch_default_mode
|
||||
usb_get_urb
|
||||
usb_gstrings_attach
|
||||
usb_hcd_check_unlink_urb
|
||||
usb_hcd_end_port_resume
|
||||
@@ -2871,9 +2952,12 @@
|
||||
usb_put_function_instance
|
||||
usb_put_hcd
|
||||
usb_put_intf
|
||||
usb_queue_reset_device
|
||||
usb_register_driver
|
||||
usb_remove_function
|
||||
usb_remove_hcd
|
||||
usb_reset_configuration
|
||||
usb_reset_device
|
||||
usb_role_string
|
||||
usb_role_switch_get
|
||||
usb_role_switch_get_drvdata
|
||||
@@ -2881,11 +2965,14 @@
|
||||
usb_role_switch_set_role
|
||||
usb_role_switch_unregister
|
||||
usb_root_hub_lost_power
|
||||
usb_set_interface
|
||||
usb_show_dynids
|
||||
usb_speed_string
|
||||
usb_store_new_id
|
||||
usb_string
|
||||
usb_string_id
|
||||
usb_submit_urb
|
||||
usb_unlink_urb
|
||||
usb_unpoison_urb
|
||||
usb_wakeup_notification
|
||||
__usecs_to_jiffies
|
||||
@@ -3053,6 +3140,7 @@
|
||||
wait_woken
|
||||
__wake_up
|
||||
wake_up_bit
|
||||
wake_up_if_idle
|
||||
__wake_up_locked
|
||||
wake_up_process
|
||||
wakeup_source_add
|
||||
@@ -3060,6 +3148,10 @@
|
||||
wakeup_source_destroy
|
||||
wakeup_source_register
|
||||
wakeup_source_remove
|
||||
wakeup_sources_read_lock
|
||||
wakeup_sources_read_unlock
|
||||
wakeup_sources_walk_next
|
||||
wakeup_sources_walk_start
|
||||
wakeup_source_unregister
|
||||
__wake_up_sync_key
|
||||
__warn_printk
|
||||
|
||||
@@ -1,20 +1,28 @@
|
||||
[abi_symbol_list]
|
||||
address_space_init_once
|
||||
bio_add_page
|
||||
bio_associate_blkg
|
||||
bio_put
|
||||
__blkdev_issue_discard
|
||||
blk_finish_plug
|
||||
blk_rq_map_user
|
||||
blk_rq_map_user_iov
|
||||
blk_start_plug
|
||||
cgroup_add_legacy_cftypes
|
||||
console_printk
|
||||
cpufreq_frequency_table_get_index
|
||||
cpufreq_policy_transition_delay_us
|
||||
cpufreq_update_util_data
|
||||
device_create_bin_file
|
||||
device_remove_bin_file
|
||||
devres_destroy
|
||||
down_read_trylock
|
||||
drm_crtc_vblank_waitqueue
|
||||
filp_close
|
||||
for_each_kernel_tracepoint
|
||||
freq_qos_add_notifier
|
||||
freq_qos_remove_notifier
|
||||
get_wchan
|
||||
gov_attr_set_get
|
||||
gpiod_to_chip
|
||||
have_governor_per_policy
|
||||
@@ -27,10 +35,12 @@
|
||||
ip6_route_me_harder
|
||||
ip_route_me_harder
|
||||
ipv6_find_hdr
|
||||
is_ashmem_file
|
||||
jiffies_64_to_clock_t
|
||||
ktime_get_coarse_real_ts64
|
||||
memory_cgrp_subsys
|
||||
memory_cgrp_subsys_enabled_key
|
||||
mem_cgroup_from_id
|
||||
mipi_dsi_generic_write
|
||||
mmc_wait_for_cmd
|
||||
nf_ct_attach
|
||||
@@ -38,10 +48,15 @@
|
||||
nf_register_net_hooks
|
||||
nf_unregister_net_hooks
|
||||
of_css
|
||||
__page_file_index
|
||||
__page_mapcount
|
||||
pm_get_active_wakeup_sources
|
||||
__printk_ratelimit
|
||||
prepare_to_wait_exclusive
|
||||
proc_symlink
|
||||
public_key_verify_signature
|
||||
radix_tree_lookup_slot
|
||||
radix_tree_replace_slot
|
||||
_raw_write_trylock
|
||||
reciprocal_value
|
||||
register_tcf_proto_ops
|
||||
@@ -69,7 +84,140 @@
|
||||
tcf_exts_dump_stats
|
||||
tcf_exts_validate
|
||||
tcf_queue_work
|
||||
__traceiter_android_rvh_post_init_entity_util_avg
|
||||
__traceiter_android_vh_account_process_tick_gran
|
||||
__traceiter_android_vh_account_task_time
|
||||
__traceiter_android_vh_do_futex
|
||||
__traceiter_android_vh_futex_sleep_start
|
||||
__traceiter_android_vh_futex_wait_end
|
||||
__traceiter_android_vh_futex_wait_start
|
||||
__traceiter_android_vh_futex_wake_this
|
||||
__traceiter_android_vh_futex_wake_traverse_plist
|
||||
__traceiter_android_vh_futex_wake_up_q_finish
|
||||
__traceiter_android_vh_record_mutex_lock_starttime
|
||||
__traceiter_android_vh_record_pcpu_rwsem_starttime
|
||||
__traceiter_android_vh_record_rtmutex_lock_starttime
|
||||
__traceiter_android_vh_record_rwsem_lock_starttime
|
||||
__tracepoint_android_vh_record_mutex_lock_starttime
|
||||
__tracepoint_android_vh_record_pcpu_rwsem_starttime
|
||||
__tracepoint_android_vh_record_rtmutex_lock_starttime
|
||||
__tracepoint_android_vh_record_rwsem_lock_starttime
|
||||
__trace_puts
|
||||
__traceiter_android_vh_alter_mutex_list_add
|
||||
__traceiter_android_vh_binder_free_proc
|
||||
__traceiter_android_vh_binder_has_work_ilocked
|
||||
__traceiter_android_vh_binder_looper_state_registered
|
||||
__traceiter_android_vh_binder_new_ref
|
||||
__traceiter_android_vh_binder_del_ref
|
||||
__traceiter_android_vh_binder_proc_transaction
|
||||
__traceiter_android_vh_binder_preset
|
||||
__traceiter_android_vh_binder_priority_skip
|
||||
__traceiter_android_vh_binder_proc_transaction_entry
|
||||
__traceiter_android_vh_binder_proc_transaction_finish
|
||||
__traceiter_android_vh_binder_read_done
|
||||
__traceiter_android_vh_binder_select_worklist_ilocked
|
||||
__traceiter_android_vh_binder_thread_read
|
||||
__traceiter_android_vh_binder_thread_release
|
||||
__traceiter_android_vh_binder_wait_for_work
|
||||
__traceiter_android_vh_cgroup_set_task
|
||||
__traceiter_android_vh_dup_task_struct
|
||||
__traceiter_android_vh_exit_signal
|
||||
__traceiter_android_vh_mem_cgroup_id_remove
|
||||
__traceiter_android_vh_mem_cgroup_css_offline
|
||||
__traceiter_android_vh_mem_cgroup_css_online
|
||||
__traceiter_android_vh_mem_cgroup_free
|
||||
__traceiter_android_vh_mem_cgroup_alloc
|
||||
__traceiter_android_vh_irqtime_account_process_tick
|
||||
__traceiter_android_vh_mutex_can_spin_on_owner
|
||||
__traceiter_android_vh_mutex_opt_spin_finish
|
||||
__traceiter_android_vh_mutex_opt_spin_start
|
||||
__traceiter_android_vh_cpufreq_acct_update_power
|
||||
__traceiter_android_vh_cleanup_old_buffers_bypass
|
||||
__traceiter_android_vh_dm_bufio_shrink_scan_bypass
|
||||
__traceiter_android_vh_mutex_unlock_slowpath
|
||||
__traceiter_android_vh_rwsem_can_spin_on_owner
|
||||
__traceiter_android_vh_rwsem_opt_spin_finish
|
||||
__traceiter_android_vh_rwsem_opt_spin_start
|
||||
__traceiter_android_vh_rwsem_wake_finish
|
||||
__traceiter_android_vh_sched_stat_runtime_rt
|
||||
__traceiter_android_vh_shrink_node_memcgs
|
||||
__traceiter_android_vh_sync_txn_recvd
|
||||
__traceiter_block_bio_queue
|
||||
__traceiter_block_getrq
|
||||
__traceiter_block_rq_complete
|
||||
__traceiter_block_rq_issue
|
||||
__traceiter_block_rq_merge
|
||||
__traceiter_block_rq_requeue
|
||||
__traceiter_sched_stat_blocked
|
||||
__traceiter_sched_stat_iowait
|
||||
__traceiter_sched_stat_runtime
|
||||
__traceiter_sched_stat_sleep
|
||||
__traceiter_sched_stat_wait
|
||||
__traceiter_sched_waking
|
||||
__traceiter_task_rename
|
||||
__tracepoint_android_rvh_post_init_entity_util_avg
|
||||
__tracepoint_android_vh_account_process_tick_gran
|
||||
__tracepoint_android_vh_account_task_time
|
||||
__tracepoint_android_vh_alter_mutex_list_add
|
||||
__tracepoint_android_vh_binder_free_proc
|
||||
__tracepoint_android_vh_binder_has_work_ilocked
|
||||
__tracepoint_android_vh_binder_looper_state_registered
|
||||
__tracepoint_android_vh_binder_new_ref
|
||||
__tracepoint_android_vh_binder_del_ref
|
||||
__tracepoint_android_vh_binder_proc_transaction
|
||||
__tracepoint_android_vh_binder_preset
|
||||
__tracepoint_android_vh_binder_priority_skip
|
||||
__tracepoint_android_vh_binder_proc_transaction_entry
|
||||
__tracepoint_android_vh_binder_proc_transaction_finish
|
||||
__tracepoint_android_vh_binder_read_done
|
||||
__tracepoint_android_vh_binder_select_worklist_ilocked
|
||||
__tracepoint_android_vh_binder_thread_read
|
||||
__tracepoint_android_vh_binder_thread_release
|
||||
__tracepoint_android_vh_binder_wait_for_work
|
||||
__tracepoint_android_vh_cgroup_set_task
|
||||
__tracepoint_android_vh_do_futex
|
||||
__tracepoint_android_vh_dup_task_struct
|
||||
__tracepoint_android_vh_exit_signal
|
||||
__tracepoint_android_vh_mem_cgroup_id_remove
|
||||
__tracepoint_android_vh_mem_cgroup_css_offline
|
||||
__tracepoint_android_vh_mem_cgroup_css_online
|
||||
__tracepoint_android_vh_mem_cgroup_free
|
||||
__tracepoint_android_vh_mem_cgroup_alloc
|
||||
__tracepoint_android_vh_futex_sleep_start
|
||||
__tracepoint_android_vh_futex_wait_end
|
||||
__tracepoint_android_vh_futex_wait_start
|
||||
__tracepoint_android_vh_futex_wake_this
|
||||
__tracepoint_android_vh_futex_wake_traverse_plist
|
||||
__tracepoint_android_vh_futex_wake_up_q_finish
|
||||
__tracepoint_android_vh_irqtime_account_process_tick
|
||||
__tracepoint_android_vh_mutex_can_spin_on_owner
|
||||
__tracepoint_android_vh_mutex_opt_spin_finish
|
||||
__tracepoint_android_vh_mutex_opt_spin_start
|
||||
__tracepoint_android_vh_cpufreq_acct_update_power
|
||||
__tracepoint_android_vh_cleanup_old_buffers_bypass
|
||||
__tracepoint_android_vh_dm_bufio_shrink_scan_bypass
|
||||
__tracepoint_android_vh_mutex_unlock_slowpath
|
||||
__tracepoint_android_vh_rwsem_can_spin_on_owner
|
||||
__tracepoint_android_vh_rwsem_opt_spin_finish
|
||||
__tracepoint_android_vh_rwsem_opt_spin_start
|
||||
__tracepoint_android_vh_rwsem_wake_finish
|
||||
__tracepoint_android_vh_sched_stat_runtime_rt
|
||||
__tracepoint_android_vh_shrink_node_memcgs
|
||||
__tracepoint_android_vh_sync_txn_recvd
|
||||
__tracepoint_block_bio_queue
|
||||
__tracepoint_block_getrq
|
||||
__tracepoint_block_rq_complete
|
||||
__tracepoint_block_rq_issue
|
||||
__tracepoint_block_rq_merge
|
||||
__tracepoint_block_rq_requeue
|
||||
__tracepoint_sched_stat_blocked
|
||||
__tracepoint_sched_stat_iowait
|
||||
__tracepoint_sched_stat_runtime
|
||||
__tracepoint_sched_stat_sleep
|
||||
__tracepoint_sched_stat_wait
|
||||
__tracepoint_sched_waking
|
||||
__tracepoint_task_rename
|
||||
try_to_free_mem_cgroup_pages
|
||||
typec_mux_get_drvdata
|
||||
unregister_memory_notifier
|
||||
unregister_tcf_proto_ops
|
||||
@@ -77,3 +225,4 @@
|
||||
wait_for_completion_io_timeout
|
||||
wait_for_completion_killable_timeout
|
||||
wakeup_source_remove
|
||||
wq_worker_comm
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
__alloc_pages
|
||||
alloc_pages_exact
|
||||
__alloc_percpu
|
||||
__alloc_percpu_gfp
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
alt_cb_patch_nops
|
||||
@@ -23,6 +24,8 @@
|
||||
amba_driver_unregister
|
||||
android_rvh_probe_register
|
||||
anon_inode_getfd
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
__arch_clear_user
|
||||
__arch_copy_from_user
|
||||
__arch_copy_to_user
|
||||
@@ -108,8 +111,8 @@
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
bpf_trace_run10
|
||||
bpf_trace_run1
|
||||
bpf_trace_run10
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
@@ -127,6 +130,7 @@
|
||||
bus_unregister
|
||||
bus_unregister_notifier
|
||||
cache_line_size
|
||||
call_rcu
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
cancel_work_sync
|
||||
@@ -137,35 +141,6 @@
|
||||
cdev_device_add
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_chandef_create
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_connect_done
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_external_auth_request
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_get_bss
|
||||
cfg80211_ibss_joined
|
||||
cfg80211_inform_bss_frame_data
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_new_sta
|
||||
cfg80211_port_authorized
|
||||
cfg80211_put_bss
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_vendor_cmd_reply
|
||||
__check_object_size
|
||||
__class_create
|
||||
class_destroy
|
||||
@@ -260,9 +235,12 @@
|
||||
cpu_pm_unregister_notifier
|
||||
__cpu_possible_mask
|
||||
__cpu_present_mask
|
||||
cpu_scale
|
||||
cpus_read_lock
|
||||
cpus_read_unlock
|
||||
cpu_subsys
|
||||
crc32_be
|
||||
crc32_le
|
||||
crc8
|
||||
crc8_populate_msb
|
||||
crypto_aead_decrypt
|
||||
@@ -278,6 +256,7 @@
|
||||
crypto_comp_decompress
|
||||
crypto_destroy_tfm
|
||||
crypto_has_alg
|
||||
__crypto_memneq
|
||||
crypto_register_notifier
|
||||
crypto_register_shash
|
||||
crypto_req_done
|
||||
@@ -290,7 +269,9 @@
|
||||
crypto_skcipher_setkey
|
||||
crypto_unregister_notifier
|
||||
crypto_unregister_shash
|
||||
__crypto_xor
|
||||
csum_ipv6_magic
|
||||
csum_partial
|
||||
csum_tcpudp_nofold
|
||||
_ctype
|
||||
debugfs_attr_read
|
||||
@@ -309,6 +290,7 @@
|
||||
debugfs_create_x32
|
||||
debugfs_lookup
|
||||
debugfs_remove
|
||||
debugfs_rename
|
||||
dec_zone_page_state
|
||||
default_llseek
|
||||
deferred_free
|
||||
@@ -319,12 +301,15 @@
|
||||
desc_to_gpio
|
||||
destroy_workqueue
|
||||
dev_addr_mod
|
||||
dev_alloc_name
|
||||
__dev_change_net_namespace
|
||||
dev_close
|
||||
_dev_crit
|
||||
dev_driver_string
|
||||
_dev_emerg
|
||||
_dev_err
|
||||
dev_err_probe
|
||||
dev_fetch_sw_netstats
|
||||
devfreq_add_device
|
||||
devfreq_add_governor
|
||||
devfreq_monitor_resume
|
||||
@@ -337,13 +322,17 @@
|
||||
devfreq_unregister_opp_notifier
|
||||
devfreq_update_interval
|
||||
dev_fwnode
|
||||
__dev_get_by_index
|
||||
dev_get_by_index
|
||||
dev_get_by_name
|
||||
device_add
|
||||
device_add_disk
|
||||
device_add_groups
|
||||
device_create
|
||||
device_create_file
|
||||
device_create_managed_software_node
|
||||
device_create_with_groups
|
||||
device_del
|
||||
device_destroy
|
||||
device_find_child
|
||||
device_for_each_child
|
||||
@@ -362,6 +351,7 @@
|
||||
device_register
|
||||
device_remove_file
|
||||
device_remove_groups
|
||||
device_rename
|
||||
device_set_wakeup_capable
|
||||
device_set_wakeup_enable
|
||||
device_unregister
|
||||
@@ -738,6 +728,9 @@
|
||||
enable_irq
|
||||
enable_percpu_irq
|
||||
errno_to_blk_status
|
||||
ether_setup
|
||||
eth_mac_addr
|
||||
ethtool_op_get_link
|
||||
eth_type_trans
|
||||
eventfd_ctx_fdget
|
||||
eventfd_ctx_put
|
||||
@@ -800,6 +793,7 @@
|
||||
gcd
|
||||
generic_file_llseek
|
||||
generic_handle_domain_irq
|
||||
genlmsg_multicast_allns
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
@@ -818,6 +812,8 @@
|
||||
get_cpu_iowait_time_us
|
||||
get_device
|
||||
__get_free_pages
|
||||
get_net_ns_by_fd
|
||||
get_net_ns_by_pid
|
||||
get_pid_task
|
||||
get_random_bytes
|
||||
get_random_u16
|
||||
@@ -875,6 +871,9 @@
|
||||
hrtimer_sleeper_start_expires
|
||||
hrtimer_start_range_ns
|
||||
hrtimer_try_to_cancel
|
||||
__hw_addr_init
|
||||
__hw_addr_sync
|
||||
__hw_addr_unsync
|
||||
hwrng_register
|
||||
hwrng_unregister
|
||||
i2c_adapter_type
|
||||
@@ -904,11 +903,9 @@
|
||||
idr_destroy
|
||||
idr_find
|
||||
idr_for_each
|
||||
idr_get_next
|
||||
idr_preload
|
||||
idr_remove
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_get_channel_khz
|
||||
ieee802154_alloc_hw
|
||||
ieee802154_free_hw
|
||||
ieee802154_register_hw
|
||||
@@ -922,6 +919,7 @@
|
||||
in6_pton
|
||||
in_aton
|
||||
inc_zone_page_state
|
||||
inet_csk_get_port
|
||||
init_dummy_netdev
|
||||
init_net
|
||||
init_pid_ns
|
||||
@@ -929,6 +927,7 @@
|
||||
__init_swait_queue_head
|
||||
init_task
|
||||
init_timer_key
|
||||
init_uts_ns
|
||||
init_wait_entry
|
||||
__init_waitqueue_head
|
||||
input_alloc_absinfo
|
||||
@@ -958,7 +957,9 @@
|
||||
int_to_scsilun
|
||||
iomem_resource
|
||||
iommu_alloc_resv_region
|
||||
iommu_attach_device_pasid
|
||||
iommu_attach_group
|
||||
iommu_detach_device_pasid
|
||||
iommu_device_register
|
||||
iommu_device_sysfs_add
|
||||
iommu_device_sysfs_remove
|
||||
@@ -969,6 +970,7 @@
|
||||
iommu_fwspec_add_ids
|
||||
iommu_fwspec_free
|
||||
iommu_get_domain_for_dev
|
||||
iommu_get_domain_for_dev_pasid
|
||||
iommu_group_alloc
|
||||
iommu_group_for_each_dev
|
||||
iommu_group_get
|
||||
@@ -1011,15 +1013,20 @@
|
||||
irq_set_irq_wake
|
||||
irq_to_desc
|
||||
is_vmalloc_addr
|
||||
jiffies64_to_msecs
|
||||
jiffies
|
||||
jiffies64_to_msecs
|
||||
jiffies_to_msecs
|
||||
jiffies_to_usecs
|
||||
kasan_flag_enabled
|
||||
kasprintf
|
||||
kernel_cpustat
|
||||
kernel_kobj
|
||||
kernel_param_lock
|
||||
kernel_param_unlock
|
||||
kernel_restart
|
||||
key_create_or_update
|
||||
key_put
|
||||
keyring_alloc
|
||||
__kfifo_alloc
|
||||
__kfifo_free
|
||||
__kfifo_in
|
||||
@@ -1028,6 +1035,7 @@
|
||||
__kfifo_out_peek
|
||||
kfree
|
||||
kfree_sensitive
|
||||
kfree_skb_list_reason
|
||||
kfree_skb_reason
|
||||
kill_fasync
|
||||
kimage_voffset
|
||||
@@ -1091,11 +1099,13 @@
|
||||
kthread_unpark
|
||||
kthread_worker_fn
|
||||
ktime_get
|
||||
ktime_get_coarse_with_offset
|
||||
ktime_get_mono_fast_ns
|
||||
ktime_get_raw
|
||||
ktime_get_raw_ts64
|
||||
ktime_get_real_seconds
|
||||
ktime_get_real_ts64
|
||||
ktime_get_seconds
|
||||
ktime_get_snapshot
|
||||
ktime_get_ts64
|
||||
ktime_get_with_offset
|
||||
@@ -1138,8 +1148,8 @@
|
||||
memparse
|
||||
memremap
|
||||
mem_section
|
||||
memset64
|
||||
memset
|
||||
memset64
|
||||
__memset_io
|
||||
memstart_addr
|
||||
memunmap
|
||||
@@ -1190,22 +1200,37 @@
|
||||
__napi_schedule
|
||||
napi_schedule_prep
|
||||
__netdev_alloc_skb
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_set_default_ethtool_ops
|
||||
netdev_state_change
|
||||
netdev_update_features
|
||||
netif_carrier_off
|
||||
netif_carrier_on
|
||||
netif_napi_add_weight
|
||||
__netif_napi_del
|
||||
netif_receive_skb
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_tx_stop_all_queues
|
||||
netif_tx_wake_queue
|
||||
netlink_broadcast
|
||||
__netlink_kernel_create
|
||||
netlink_kernel_release
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_ns_type_operations
|
||||
net_ratelimit
|
||||
nla_find
|
||||
nla_memcpy
|
||||
__nla_parse
|
||||
nla_put
|
||||
nla_put_64bit
|
||||
nla_put_nohdr
|
||||
nla_reserve
|
||||
nla_strscpy
|
||||
__nla_validate
|
||||
__nlmsg_put
|
||||
nonseekable_open
|
||||
noop_llseek
|
||||
@@ -1302,6 +1327,8 @@
|
||||
page_frag_alloc_align
|
||||
__page_frag_cache_drain
|
||||
page_frag_free
|
||||
page_pinner_inited
|
||||
__page_pinner_put_page
|
||||
panic
|
||||
panic_notifier_list
|
||||
param_array_ops
|
||||
@@ -1461,8 +1488,11 @@
|
||||
proc_mkdir_data
|
||||
proc_remove
|
||||
pskb_expand_head
|
||||
__pskb_pull_tail
|
||||
___pskb_trim
|
||||
put_device
|
||||
put_disk
|
||||
__put_net
|
||||
put_pid
|
||||
put_sg_io_hdr
|
||||
__put_task_struct
|
||||
@@ -1506,6 +1536,7 @@
|
||||
rb_next
|
||||
rb_prev
|
||||
rb_replace_node
|
||||
rcu_barrier
|
||||
__rcu_read_lock
|
||||
__rcu_read_unlock
|
||||
rdev_get_drvdata
|
||||
@@ -1529,6 +1560,7 @@
|
||||
register_netdevice
|
||||
register_netdevice_notifier
|
||||
register_oom_notifier
|
||||
register_pernet_device
|
||||
register_pernet_subsys
|
||||
register_pm_notifier
|
||||
register_reboot_notifier
|
||||
@@ -1571,9 +1603,6 @@
|
||||
regulator_set_voltage
|
||||
regulator_set_voltage_sel_regmap
|
||||
regulator_unregister
|
||||
regulatory_hint
|
||||
regulatory_set_wiphy_regd
|
||||
regulatory_set_wiphy_regd_sync
|
||||
release_firmware
|
||||
__release_region
|
||||
remap_pfn_range
|
||||
@@ -1588,12 +1617,24 @@
|
||||
request_threaded_irq
|
||||
return_address
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
rfkill_init_sw_state
|
||||
rfkill_register
|
||||
rfkill_resume_polling
|
||||
rfkill_set_hw_state_reason
|
||||
rfkill_unregister
|
||||
rhashtable_free_and_destroy
|
||||
rhashtable_insert_slow
|
||||
rhltable_init
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
__root_device_register
|
||||
root_device_unregister
|
||||
round_jiffies
|
||||
round_jiffies_relative
|
||||
round_jiffies_up
|
||||
rps_needed
|
||||
rtc_class_close
|
||||
rtc_class_open
|
||||
@@ -1693,11 +1734,20 @@
|
||||
single_open
|
||||
single_open_size
|
||||
single_release
|
||||
skb_add_rx_frag
|
||||
skb_checksum
|
||||
skb_checksum_help
|
||||
skb_clone
|
||||
skb_clone_sk
|
||||
skb_complete_wifi_ack
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
skb_copy_expand
|
||||
skb_dequeue
|
||||
skb_dequeue_tail
|
||||
skb_ensure_writable
|
||||
__skb_get_hash
|
||||
__skb_gso_segment
|
||||
skb_pull
|
||||
skb_push
|
||||
skb_put
|
||||
@@ -1780,6 +1830,8 @@
|
||||
snd_soc_unregister_component
|
||||
snprintf
|
||||
soc_device_register
|
||||
__sock_create
|
||||
sock_release
|
||||
sock_wfree
|
||||
softnet_data
|
||||
sort
|
||||
@@ -1835,8 +1887,10 @@
|
||||
strstr
|
||||
subsys_system_register
|
||||
suspend_set_ops
|
||||
__sw_hweight16
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
__sw_hweight8
|
||||
sync_blockdev
|
||||
sync_file_create
|
||||
sync_file_get_fence
|
||||
@@ -1864,8 +1918,10 @@
|
||||
sysfs_streq
|
||||
sysfs_update_group
|
||||
sysrq_mask
|
||||
system_freezable_wq
|
||||
system_highpri_wq
|
||||
system_long_wq
|
||||
system_power_efficient_wq
|
||||
system_state
|
||||
system_unbound_wq
|
||||
system_wq
|
||||
@@ -1874,6 +1930,7 @@
|
||||
tasklet_init
|
||||
tasklet_kill
|
||||
__tasklet_schedule
|
||||
tasklet_setup
|
||||
tasklet_unlock_wait
|
||||
__task_pid_nr_ns
|
||||
tcpci_get_tcpm_port
|
||||
@@ -2021,9 +2078,11 @@
|
||||
unregister_inet6addr_notifier
|
||||
unregister_inetaddr_notifier
|
||||
unregister_netdev
|
||||
unregister_netdevice_many
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_oom_notifier
|
||||
unregister_pernet_device
|
||||
unregister_pernet_subsys
|
||||
unregister_pm_notifier
|
||||
unregister_reboot_notifier
|
||||
@@ -2129,6 +2188,7 @@
|
||||
vb2_streamon
|
||||
vb2_vmalloc_memops
|
||||
vb2_wait_for_all_buffers
|
||||
verify_pkcs7_signature
|
||||
vfree
|
||||
video_devdata
|
||||
video_device_alloc
|
||||
@@ -2178,10 +2238,7 @@
|
||||
watchdog_register_device
|
||||
watchdog_set_restart_priority
|
||||
watchdog_unregister_device
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_register
|
||||
wiphy_unregister
|
||||
wireless_nlevent_flush
|
||||
woken_wake_function
|
||||
work_busy
|
||||
__xa_alloc
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
__alloc_percpu_gfp
|
||||
__alloc_skb
|
||||
alloc_skb_with_frags
|
||||
alloc_swapdev_block
|
||||
alloc_workqueue
|
||||
alt_cb_patch_nops
|
||||
amba_bustype
|
||||
@@ -141,10 +142,10 @@
|
||||
bpf_prog_put
|
||||
bpf_prog_sub
|
||||
bpf_stats_enabled_key
|
||||
bpf_trace_run1
|
||||
bpf_trace_run10
|
||||
bpf_trace_run11
|
||||
bpf_trace_run12
|
||||
bpf_trace_run1
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
@@ -154,7 +155,6 @@
|
||||
bpf_trace_run8
|
||||
bpf_trace_run9
|
||||
bpf_warn_invalid_xdp_action
|
||||
bridge_tunnel_header
|
||||
bt_accept_dequeue
|
||||
bt_accept_enqueue
|
||||
bt_accept_unlink
|
||||
@@ -243,104 +243,6 @@
|
||||
cdev_device_add
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_any_usable_channels
|
||||
cfg80211_assoc_comeback
|
||||
cfg80211_assoc_failure
|
||||
cfg80211_auth_timeout
|
||||
cfg80211_background_cac_abort
|
||||
cfg80211_bss_color_notify
|
||||
cfg80211_bss_flush
|
||||
cfg80211_bss_iter
|
||||
cfg80211_cac_event
|
||||
cfg80211_calculate_bitrate
|
||||
cfg80211_chandef_compatible
|
||||
cfg80211_chandef_create
|
||||
cfg80211_chandef_dfs_required
|
||||
cfg80211_chandef_usable
|
||||
cfg80211_chandef_valid
|
||||
cfg80211_check_combinations
|
||||
cfg80211_check_station_change
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_ch_switch_started_notify
|
||||
cfg80211_classify8021d
|
||||
cfg80211_connect_done
|
||||
cfg80211_conn_failed
|
||||
cfg80211_control_port_tx_status
|
||||
cfg80211_cqm_beacon_loss_notify
|
||||
cfg80211_cqm_pktloss_notify
|
||||
cfg80211_cqm_rssi_notify
|
||||
cfg80211_cqm_txe_notify
|
||||
cfg80211_crit_proto_stopped
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_external_auth_request
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_find_vendor_elem
|
||||
cfg80211_free_nan_func
|
||||
cfg80211_ft_event
|
||||
cfg80211_get_bss
|
||||
cfg80211_get_drvinfo
|
||||
cfg80211_get_ies_channel_number
|
||||
cfg80211_get_iftype_ext_capa
|
||||
cfg80211_get_p2p_attr
|
||||
cfg80211_get_station
|
||||
cfg80211_gtk_rekey_notify
|
||||
cfg80211_ibss_joined
|
||||
cfg80211_iftype_allowed
|
||||
cfg80211_inform_bss_data
|
||||
cfg80211_inform_bss_frame_data
|
||||
cfg80211_is_element_inherited
|
||||
cfg80211_iter_combinations
|
||||
cfg80211_merge_profile
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_nan_func_terminated
|
||||
cfg80211_nan_match
|
||||
cfg80211_new_sta
|
||||
cfg80211_notify_new_peer_candidate
|
||||
cfg80211_pmksa_candidate_notify
|
||||
cfg80211_pmsr_complete
|
||||
cfg80211_pmsr_report
|
||||
cfg80211_port_authorized
|
||||
cfg80211_probe_status
|
||||
cfg80211_put_bss
|
||||
__cfg80211_radar_event
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_ref_bss
|
||||
cfg80211_reg_can_beacon
|
||||
cfg80211_reg_can_beacon_relax
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_report_obss_beacon_khz
|
||||
cfg80211_report_wowlan_wakeup
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_assoc_resp
|
||||
cfg80211_rx_control_port
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_rx_mlme_mgmt
|
||||
cfg80211_rx_spurious_frame
|
||||
cfg80211_rx_unexpected_4addr_frame
|
||||
cfg80211_rx_unprot_mlme_mgmt
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
cfg80211_sched_scan_stopped_locked
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_send_layer2_update
|
||||
cfg80211_shutdown_all_interfaces
|
||||
cfg80211_sinfo_alloc_tid_stats
|
||||
cfg80211_sta_opmode_change_notify
|
||||
cfg80211_stop_iface
|
||||
cfg80211_tdls_oper_request
|
||||
cfg80211_tx_mgmt_expired
|
||||
cfg80211_tx_mlme_mgmt
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_update_owe_info_event
|
||||
cfg80211_vendor_cmd_get_sender
|
||||
cfg80211_vendor_cmd_reply
|
||||
cgroup_path_ns
|
||||
cgroup_taskset_first
|
||||
cgroup_taskset_next
|
||||
@@ -398,6 +300,7 @@
|
||||
clk_register
|
||||
clk_restore_context
|
||||
clk_round_rate
|
||||
clk_save_context
|
||||
clk_set_parent
|
||||
clk_set_rate
|
||||
clk_sync_state
|
||||
@@ -626,6 +529,7 @@
|
||||
dev_get_flags
|
||||
dev_get_regmap
|
||||
dev_get_stats
|
||||
dev_get_tstats64
|
||||
device_add
|
||||
device_add_disk
|
||||
device_add_groups
|
||||
@@ -792,6 +696,7 @@
|
||||
dev_pm_opp_of_register_em
|
||||
dev_pm_opp_of_remove_table
|
||||
dev_pm_opp_put
|
||||
dev_pm_opp_remove
|
||||
dev_pm_opp_remove_all_dynamic
|
||||
dev_pm_opp_set_config
|
||||
dev_pm_opp_set_opp
|
||||
@@ -829,6 +734,7 @@
|
||||
divider_ro_round_rate_parent
|
||||
divider_round_rate_parent
|
||||
dma_alloc_attrs
|
||||
dma_alloc_noncontiguous
|
||||
dma_alloc_pages
|
||||
dma_async_device_register
|
||||
dma_async_device_unregister
|
||||
@@ -867,6 +773,7 @@
|
||||
dma_fence_signal_timestamp_locked
|
||||
dma_fence_wait_timeout
|
||||
dma_free_attrs
|
||||
dma_free_noncontiguous
|
||||
dma_free_pages
|
||||
dma_get_sgtable_attrs
|
||||
dma_get_slave_channel
|
||||
@@ -901,6 +808,8 @@
|
||||
dma_unmap_page_attrs
|
||||
dma_unmap_resource
|
||||
dma_unmap_sg_attrs
|
||||
dma_vmap_noncontiguous
|
||||
dma_vunmap_noncontiguous
|
||||
do_trace_netlink_extack
|
||||
do_trace_rcu_torture_read
|
||||
double_rq_lock
|
||||
@@ -1157,6 +1066,7 @@
|
||||
eth_mac_addr
|
||||
ethnl_cable_test_fault_length
|
||||
ethnl_cable_test_result
|
||||
eth_platform_get_mac_address
|
||||
eth_prepare_mac_addr_change
|
||||
ethtool_convert_legacy_u32_to_link_mode
|
||||
ethtool_convert_link_mode_to_legacy_u32
|
||||
@@ -1231,7 +1141,6 @@
|
||||
freq_qos_add_request
|
||||
freq_qos_remove_request
|
||||
freq_qos_update_request
|
||||
freq_reg_info
|
||||
fsync_bdev
|
||||
ftrace_dump
|
||||
fwnode_find_reference
|
||||
@@ -1319,11 +1228,15 @@
|
||||
get_unused_fd_flags
|
||||
get_user_ifreq
|
||||
get_user_pages
|
||||
get_wiphy_regdom
|
||||
get_zeroed_page
|
||||
gh_rm_call
|
||||
gh_rm_notifier_register
|
||||
gh_rm_notifier_unregister
|
||||
gh_rm_register_platform_ops
|
||||
gh_rm_unregister_platform_ops
|
||||
gic_v3_cpu_init
|
||||
gic_v3_dist_init
|
||||
gic_v3_dist_wait_for_rwp
|
||||
gic_nonsecure_priorities
|
||||
gov_attr_set_init
|
||||
gov_attr_set_put
|
||||
@@ -1500,6 +1413,9 @@
|
||||
icc_nodes_remove
|
||||
icc_provider_add
|
||||
icc_provider_del
|
||||
icc_provider_deregister
|
||||
icc_provider_init
|
||||
icc_provider_register
|
||||
icc_put
|
||||
icc_set_bw
|
||||
icc_set_tag
|
||||
@@ -1517,152 +1433,6 @@
|
||||
idr_preload
|
||||
idr_remove
|
||||
idr_replace
|
||||
ieee80211_alloc_hw_nm
|
||||
ieee80211_amsdu_to_8023s
|
||||
ieee80211_ap_probereq_get
|
||||
ieee80211_ave_rssi
|
||||
ieee80211_beacon_cntdwn_is_complete
|
||||
ieee80211_beacon_get_template
|
||||
ieee80211_beacon_get_tim
|
||||
ieee80211_beacon_loss
|
||||
ieee80211_beacon_set_cntdwn
|
||||
ieee80211_beacon_update_cntdwn
|
||||
ieee80211_bss_get_elem
|
||||
ieee80211_calc_rx_airtime
|
||||
ieee80211_calc_tx_airtime
|
||||
ieee80211_chandef_to_operating_class
|
||||
ieee80211_channel_switch_disconnect
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_chswitch_done
|
||||
ieee80211_color_change_finish
|
||||
ieee80211_connection_loss
|
||||
ieee80211_cqm_beacon_loss_notify
|
||||
ieee80211_cqm_rssi_notify
|
||||
ieee80211_csa_finish
|
||||
ieee80211_ctstoself_duration
|
||||
ieee80211_ctstoself_get
|
||||
ieee80211_data_to_8023_exthdr
|
||||
ieee80211_disable_rssi_reports
|
||||
ieee80211_disconnect
|
||||
ieee80211_enable_rssi_reports
|
||||
ieee80211_find_sta
|
||||
ieee80211_find_sta_by_ifaddr
|
||||
ieee80211_find_sta_by_link_addrs
|
||||
ieee80211_free_hw
|
||||
ieee80211_free_txskb
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_generic_frame_duration
|
||||
ieee80211_get_bssid
|
||||
ieee80211_get_buffered_bc
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_get_fils_discovery_tmpl
|
||||
ieee80211_get_hdrlen_from_skb
|
||||
ieee80211_get_key_rx_seq
|
||||
ieee80211_get_mesh_hdrlen
|
||||
ieee80211_get_num_supported_channels
|
||||
ieee80211_get_response_rate
|
||||
ieee80211_get_tkip_p1k_iv
|
||||
ieee80211_get_tkip_p2k
|
||||
ieee80211_get_tkip_rx_p1k
|
||||
ieee80211_get_tx_rates
|
||||
ieee80211_get_unsol_bcast_probe_resp_tmpl
|
||||
ieee80211_get_vht_max_nss
|
||||
ieee80211_gtk_rekey_add
|
||||
ieee80211_gtk_rekey_notify
|
||||
ieee80211_hdrlen
|
||||
ieee80211_hw_restart_disconnect
|
||||
ieee80211_ie_split_ric
|
||||
ieee80211_iterate_active_interfaces_atomic
|
||||
ieee80211_iterate_active_interfaces_mtx
|
||||
ieee80211_iterate_interfaces
|
||||
ieee80211_iterate_stations
|
||||
ieee80211_iterate_stations_atomic
|
||||
ieee80211_iter_chan_contexts_atomic
|
||||
ieee80211_iter_keys
|
||||
ieee80211_iter_keys_rcu
|
||||
ieee80211_key_mic_failure
|
||||
ieee80211_key_replay
|
||||
ieee80211_manage_rx_ba_offl
|
||||
ieee80211_mandatory_rates
|
||||
ieee80211_mark_rx_ba_filtered_frames
|
||||
ieee80211_nan_func_match
|
||||
ieee80211_nan_func_terminated
|
||||
ieee80211_next_txq
|
||||
ieee80211_nullfunc_get
|
||||
ieee80211_operating_class_to_band
|
||||
ieee80211_parse_p2p_noa
|
||||
ieee80211_probereq_get
|
||||
ieee80211_proberesp_get
|
||||
ieee80211_pspoll_get
|
||||
ieee80211_queue_delayed_work
|
||||
ieee80211_queue_stopped
|
||||
ieee80211_queue_work
|
||||
ieee80211_radar_detected
|
||||
ieee80211_radiotap_iterator_init
|
||||
ieee80211_radiotap_iterator_next
|
||||
ieee80211_rate_control_register
|
||||
ieee80211_rate_control_unregister
|
||||
ieee80211_ready_on_channel
|
||||
ieee80211_register_hw
|
||||
ieee80211_remain_on_channel_expired
|
||||
ieee80211_remove_key
|
||||
ieee80211_report_low_ack
|
||||
ieee80211_report_wowlan_wakeup
|
||||
ieee80211_request_smps
|
||||
ieee80211_reserve_tid
|
||||
ieee80211_restart_hw
|
||||
ieee80211_resume_disconnect
|
||||
ieee80211_rts_duration
|
||||
ieee80211_rts_get
|
||||
ieee80211_rx_ba_timer_expired
|
||||
ieee80211_rx_irqsafe
|
||||
ieee80211_rx_list
|
||||
ieee80211_rx_napi
|
||||
ieee80211_s1g_channel_width
|
||||
ieee80211_scan_completed
|
||||
ieee80211_sched_scan_results
|
||||
ieee80211_sched_scan_stopped
|
||||
__ieee80211_schedule_txq
|
||||
ieee80211_send_bar
|
||||
ieee80211_send_eosp_nullfunc
|
||||
ieee80211_set_active_links
|
||||
ieee80211_set_active_links_async
|
||||
ieee80211_set_key_rx_seq
|
||||
ieee80211_sta_block_awake
|
||||
ieee80211_sta_eosp
|
||||
ieee80211_sta_pspoll
|
||||
ieee80211_sta_ps_transition
|
||||
ieee80211_sta_recalc_aggregates
|
||||
ieee80211_sta_register_airtime
|
||||
ieee80211_start_tx_ba_cb_irqsafe
|
||||
ieee80211_start_tx_ba_session
|
||||
ieee80211_sta_set_buffered
|
||||
ieee80211_sta_uapsd_trigger
|
||||
ieee80211_stop_queue
|
||||
ieee80211_stop_queues
|
||||
ieee80211_stop_rx_ba_session
|
||||
ieee80211_stop_tx_ba_cb_irqsafe
|
||||
ieee80211_stop_tx_ba_session
|
||||
ieee80211_tdls_oper_request
|
||||
ieee80211_tkip_add_iv
|
||||
ieee80211_tx_dequeue
|
||||
ieee80211_tx_prepare_skb
|
||||
ieee80211_txq_airtime_check
|
||||
ieee80211_txq_get_depth
|
||||
ieee80211_txq_may_transmit
|
||||
ieee80211_txq_schedule_start
|
||||
ieee80211_tx_rate_update
|
||||
ieee80211_tx_status_8023
|
||||
ieee80211_tx_status
|
||||
ieee80211_tx_status_ext
|
||||
ieee80211_tx_status_irqsafe
|
||||
ieee80211_unregister_hw
|
||||
ieee80211_unreserve_tid
|
||||
ieee80211_update_mu_groups
|
||||
ieee80211_update_p2p_noa
|
||||
ieee80211_vif_to_wdev
|
||||
ieee80211_wake_queue
|
||||
ieee80211_wake_queues
|
||||
ieee802154_alloc_hw
|
||||
ieee802154_configure_durations
|
||||
ieee802154_free_hw
|
||||
@@ -1679,7 +1449,6 @@
|
||||
ieee802154_xmit_complete
|
||||
ieee802154_xmit_error
|
||||
ieee802154_xmit_hw_error
|
||||
ieeee80211_obss_color_collision_notify
|
||||
iio_buffer_init
|
||||
iio_buffer_put
|
||||
iio_device_attach_buffer
|
||||
@@ -1910,6 +1679,7 @@
|
||||
__kmalloc
|
||||
kmalloc_caches
|
||||
kmalloc_large
|
||||
kmalloc_large_node
|
||||
kmalloc_node_trace
|
||||
__kmalloc_node_track_caller
|
||||
kmalloc_trace
|
||||
@@ -2077,6 +1847,7 @@
|
||||
mdiobus_modify_changed
|
||||
__mdiobus_read
|
||||
mdiobus_read
|
||||
__mdiobus_register
|
||||
mdiobus_unregister
|
||||
__mdiobus_write
|
||||
mdiobus_write
|
||||
@@ -2112,8 +1883,8 @@
|
||||
memremap_pages
|
||||
memscan
|
||||
mem_section
|
||||
memset64
|
||||
memset
|
||||
memset64
|
||||
__memset_io
|
||||
memstart_addr
|
||||
memunmap
|
||||
@@ -2131,12 +1902,37 @@
|
||||
__mmap_lock_do_trace_acquire_returned
|
||||
__mmap_lock_do_trace_released
|
||||
__mmap_lock_do_trace_start_locking
|
||||
__mmc_claim_host
|
||||
mmc_cqe_request_done
|
||||
mmc_execute_tuning
|
||||
mmc_get_card
|
||||
mmc_get_ext_csd
|
||||
mmc_hs200_tuning
|
||||
mmc_issue_type
|
||||
mmc_of_parse
|
||||
__mmc_poll_for_busy
|
||||
mmc_prepare_busy_cmd
|
||||
mmc_put_card
|
||||
mmc_regulator_get_supply
|
||||
mmc_regulator_set_ocr
|
||||
mmc_regulator_set_vqmmc
|
||||
mmc_release_host
|
||||
mmc_retune_hold
|
||||
mmc_retune_release
|
||||
mmc_select_bus_width
|
||||
mmc_select_card
|
||||
mmc_select_hs
|
||||
mmc_select_hs400
|
||||
mmc_select_hs_ddr
|
||||
mmc_select_timing
|
||||
mmc_send_status
|
||||
mmc_send_tuning
|
||||
mmc_set_bus_mode
|
||||
mmc_set_bus_width
|
||||
mmc_set_clock
|
||||
mmc_set_initial_state
|
||||
mmc_set_timing
|
||||
mmc_wait_for_cmd
|
||||
mmput
|
||||
mod_delayed_work_on
|
||||
mod_node_page_state
|
||||
@@ -2208,6 +2004,7 @@
|
||||
netif_schedule_queue
|
||||
netif_set_real_num_rx_queues
|
||||
netif_set_real_num_tx_queues
|
||||
netif_set_tso_max_size
|
||||
__netif_set_xps_queue
|
||||
netif_stacked_transfer_operstate
|
||||
netif_tx_lock
|
||||
@@ -2255,10 +2052,10 @@
|
||||
nla_find
|
||||
nla_memcpy
|
||||
__nla_parse
|
||||
nla_put_64bit
|
||||
nla_put
|
||||
nla_reserve_64bit
|
||||
nla_put_64bit
|
||||
nla_reserve
|
||||
nla_reserve_64bit
|
||||
nla_strscpy
|
||||
__nla_validate
|
||||
__nlmsg_put
|
||||
@@ -2352,6 +2149,7 @@
|
||||
of_machine_is_compatible
|
||||
of_match_device
|
||||
of_match_node
|
||||
__of_mdiobus_register
|
||||
of_modalias_node
|
||||
of_n_addr_cells
|
||||
of_node_name_eq
|
||||
@@ -2396,6 +2194,8 @@
|
||||
page_ext_put
|
||||
page_is_ram
|
||||
page_mapping
|
||||
page_pinner_inited
|
||||
__page_pinner_put_page
|
||||
page_pool_alloc_pages
|
||||
page_pool_create
|
||||
page_pool_destroy
|
||||
@@ -2488,6 +2288,7 @@
|
||||
perf_trace_run_bpf_submit
|
||||
phy_attached_info
|
||||
phy_calibrate
|
||||
phy_do_ioctl_running
|
||||
phy_drivers_register
|
||||
phy_drivers_unregister
|
||||
phy_error
|
||||
@@ -2532,6 +2333,7 @@
|
||||
phy_power_on
|
||||
phy_read_mmd
|
||||
phy_set_mode_ext
|
||||
phy_suspend
|
||||
phy_trigger_machine
|
||||
phy_write_mmd
|
||||
pick_highest_pushable_task
|
||||
@@ -2701,7 +2503,6 @@
|
||||
radix_tree_lookup
|
||||
radix_tree_next_chunk
|
||||
radix_tree_tagged
|
||||
rate_control_set_rates
|
||||
___ratelimit
|
||||
rational_best_approximation
|
||||
raw_notifier_call_chain
|
||||
@@ -2786,7 +2587,6 @@
|
||||
regcache_mark_dirty
|
||||
regcache_sync
|
||||
regcache_sync_region
|
||||
reg_initiator_name
|
||||
__register_blkdev
|
||||
register_candev
|
||||
__register_chrdev
|
||||
@@ -2831,7 +2631,6 @@
|
||||
regmap_read
|
||||
regmap_update_bits_base
|
||||
regmap_write
|
||||
reg_query_regdb_wmm
|
||||
regulator_allow_bypass
|
||||
regulator_bulk_disable
|
||||
regulator_bulk_enable
|
||||
@@ -2864,10 +2663,6 @@
|
||||
regulator_set_voltage
|
||||
regulator_set_voltage_sel_regmap
|
||||
regulator_unregister_notifier
|
||||
regulatory_hint
|
||||
regulatory_pre_cac_allowed
|
||||
regulatory_set_wiphy_regd
|
||||
regulatory_set_wiphy_regd_sync
|
||||
release_firmware
|
||||
__release_region
|
||||
release_sock
|
||||
@@ -2894,7 +2689,6 @@
|
||||
reset_control_release
|
||||
reset_control_reset
|
||||
return_address
|
||||
rfc1042_header
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
@@ -3015,6 +2809,7 @@
|
||||
sdhci_cqe_disable
|
||||
sdhci_cqe_enable
|
||||
sdhci_cqe_irq
|
||||
sdhci_dumpregs
|
||||
sdhci_enable_clk
|
||||
sdhci_get_property
|
||||
sdhci_pltfm_free
|
||||
@@ -3175,6 +2970,7 @@
|
||||
smp_call_function
|
||||
smp_call_function_single
|
||||
smp_call_function_single_async
|
||||
snapshot_get_image_size
|
||||
snd_ctl_remove
|
||||
snd_hwdep_new
|
||||
snd_info_create_card_entry
|
||||
@@ -3236,6 +3032,7 @@
|
||||
snd_usb_endpoint_close
|
||||
snd_usb_endpoint_open
|
||||
snd_usb_endpoint_prepare
|
||||
snd_usb_power_domain_set
|
||||
snprintf
|
||||
soc_device_register
|
||||
soc_device_unregister
|
||||
@@ -3397,6 +3194,7 @@
|
||||
sysfs_remove_link
|
||||
sysfs_remove_link_from_group
|
||||
sysfs_streq
|
||||
sysfs_update_group
|
||||
sysrq_mask
|
||||
system_32bit_el0_cpumask
|
||||
system_freezable_power_efficient_wq
|
||||
@@ -3443,6 +3241,7 @@
|
||||
topology_update_done
|
||||
topology_update_thermal_pressure
|
||||
_totalram_pages
|
||||
_trace_android_vh_record_pcpu_rwsem_starttime
|
||||
trace_array_put
|
||||
__trace_bprintk
|
||||
trace_clock_local
|
||||
@@ -3487,6 +3286,8 @@
|
||||
__traceiter_android_rvh_iommu_setup_dma_ops
|
||||
__traceiter_android_rvh_is_cpu_allowed
|
||||
__traceiter_android_rvh_migrate_queued_task
|
||||
__traceiter_android_rvh_mmc_resume
|
||||
__traceiter_android_rvh_mmc_suspend
|
||||
__traceiter_android_rvh_new_task_stats
|
||||
__traceiter_android_rvh_pick_next_entity
|
||||
__traceiter_android_rvh_place_entity
|
||||
@@ -3539,6 +3340,7 @@
|
||||
__traceiter_android_vh_cpufreq_fast_switch
|
||||
__traceiter_android_vh_cpufreq_resolve_freq
|
||||
__traceiter_android_vh_cpufreq_target
|
||||
__traceiter_android_vh_check_hibernation_swap
|
||||
__traceiter_android_vh_cpu_idle_enter
|
||||
__traceiter_android_vh_cpu_idle_exit
|
||||
__traceiter_android_vh_cpuidle_psci_enter
|
||||
@@ -3547,22 +3349,30 @@
|
||||
__traceiter_android_vh_do_wake_up_sync
|
||||
__traceiter_android_vh_dump_throttled_rt_tasks
|
||||
__traceiter_android_vh_free_task
|
||||
__traceiter_android_vh_encrypt_page
|
||||
__traceiter_android_vh_ftrace_dump_buffer
|
||||
__traceiter_android_vh_ftrace_format_check
|
||||
__traceiter_android_vh_ftrace_oops_enter
|
||||
__traceiter_android_vh_ftrace_oops_exit
|
||||
__traceiter_android_vh_ftrace_size_check
|
||||
__traceiter_android_vh_ignore_dmabuf_vmap_bounds
|
||||
__traceiter_android_vh_gic_v3_suspend
|
||||
__traceiter_android_vh_ipi_stop
|
||||
__traceiter_android_vh_jiffies_update
|
||||
__traceiter_android_vh_kswapd_per_node
|
||||
__traceiter_android_vh_mpam_set
|
||||
__traceiter_android_vh_init_aes_encrypt
|
||||
__traceiter_android_vh_post_image_save
|
||||
__traceiter_android_vh_printk_hotplug
|
||||
__traceiter_android_vh_rproc_recovery
|
||||
__traceiter_android_vh_rproc_recovery_set
|
||||
__traceiter_android_vh_save_cpu_resume
|
||||
__traceiter_android_vh_save_hib_resume_bdev
|
||||
__traceiter_android_vh_scheduler_tick
|
||||
__traceiter_android_vh_setscheduler_uclamp
|
||||
__traceiter_android_vh_show_resume_epoch_val
|
||||
__traceiter_android_vh_show_suspend_epoch_val
|
||||
__traceiter_android_vh_skip_swap_map_write
|
||||
__traceiter_android_vh_timer_calc_index
|
||||
__traceiter_android_vh_ufs_check_int_errors
|
||||
__traceiter_android_vh_ufs_compl_command
|
||||
@@ -3619,6 +3429,8 @@
|
||||
__tracepoint_android_rvh_iommu_setup_dma_ops
|
||||
__tracepoint_android_rvh_is_cpu_allowed
|
||||
__tracepoint_android_rvh_migrate_queued_task
|
||||
__tracepoint_android_rvh_mmc_resume
|
||||
__tracepoint_android_rvh_mmc_suspend
|
||||
__tracepoint_android_rvh_new_task_stats
|
||||
__tracepoint_android_rvh_pick_next_entity
|
||||
__tracepoint_android_rvh_place_entity
|
||||
@@ -3671,6 +3483,7 @@
|
||||
__tracepoint_android_vh_cpufreq_fast_switch
|
||||
__tracepoint_android_vh_cpufreq_resolve_freq
|
||||
__tracepoint_android_vh_cpufreq_target
|
||||
__tracepoint_android_vh_check_hibernation_swap
|
||||
__tracepoint_android_vh_cpu_idle_enter
|
||||
__tracepoint_android_vh_cpu_idle_exit
|
||||
__tracepoint_android_vh_cpuidle_psci_enter
|
||||
@@ -3679,22 +3492,30 @@
|
||||
__tracepoint_android_vh_do_wake_up_sync
|
||||
__tracepoint_android_vh_dump_throttled_rt_tasks
|
||||
__tracepoint_android_vh_free_task
|
||||
__tracepoint_android_vh_encrypt_page
|
||||
__tracepoint_android_vh_ftrace_dump_buffer
|
||||
__tracepoint_android_vh_ftrace_format_check
|
||||
__tracepoint_android_vh_ftrace_oops_enter
|
||||
__tracepoint_android_vh_ftrace_oops_exit
|
||||
__tracepoint_android_vh_ftrace_size_check
|
||||
__tracepoint_android_vh_ignore_dmabuf_vmap_bounds
|
||||
__tracepoint_android_vh_gic_v3_suspend
|
||||
__tracepoint_android_vh_ipi_stop
|
||||
__tracepoint_android_vh_jiffies_update
|
||||
__tracepoint_android_vh_kswapd_per_node
|
||||
__tracepoint_android_vh_mpam_set
|
||||
__tracepoint_android_vh_init_aes_encrypt
|
||||
__tracepoint_android_vh_post_image_save
|
||||
__tracepoint_android_vh_printk_hotplug
|
||||
__tracepoint_android_vh_rproc_recovery
|
||||
__tracepoint_android_vh_rproc_recovery_set
|
||||
__tracepoint_android_vh_save_cpu_resume
|
||||
__tracepoint_android_vh_save_hib_resume_bdev
|
||||
__tracepoint_android_vh_scheduler_tick
|
||||
__tracepoint_android_vh_setscheduler_uclamp
|
||||
__tracepoint_android_vh_show_resume_epoch_val
|
||||
__tracepoint_android_vh_show_suspend_epoch_val
|
||||
__tracepoint_android_vh_skip_swap_map_write
|
||||
__tracepoint_android_vh_timer_calc_index
|
||||
__tracepoint_android_vh_ufs_check_int_errors
|
||||
__tracepoint_android_vh_ufs_compl_command
|
||||
@@ -3878,6 +3699,7 @@
|
||||
usb_add_phy_dev
|
||||
usb_alloc_coherent
|
||||
usb_alloc_urb
|
||||
usb_altnum_to_altsetting
|
||||
usb_anchor_urb
|
||||
usb_assign_descriptors
|
||||
usb_autopm_get_interface
|
||||
@@ -3899,6 +3721,8 @@
|
||||
usb_disabled
|
||||
usb_driver_claim_interface
|
||||
usb_driver_release_interface
|
||||
usb_driver_set_configuration
|
||||
usb_enable_lpm
|
||||
usb_ep_alloc_request
|
||||
usb_ep_autoconfig
|
||||
usb_ep_dequeue
|
||||
@@ -3917,6 +3741,7 @@
|
||||
usb_get_dev
|
||||
usb_get_from_anchor
|
||||
usb_get_intf
|
||||
usb_get_urb
|
||||
usb_ifnum_to_if
|
||||
usb_interface_id
|
||||
usb_kill_urb
|
||||
@@ -3930,6 +3755,7 @@
|
||||
usb_register_driver
|
||||
usb_register_notify
|
||||
usb_remove_phy
|
||||
usb_reset_configuration
|
||||
usb_role_switch_find_by_fwnode
|
||||
usb_role_switch_get_drvdata
|
||||
usb_role_switch_register
|
||||
@@ -3960,8 +3786,10 @@
|
||||
usb_show_dynids
|
||||
usb_speed_string
|
||||
usb_store_new_id
|
||||
usb_string
|
||||
usb_string_id
|
||||
usb_submit_urb
|
||||
usb_unlink_urb
|
||||
usb_unpoison_urb
|
||||
usb_unregister_notify
|
||||
__usecs_to_jiffies
|
||||
@@ -4138,17 +3966,6 @@
|
||||
wakeup_source_unregister
|
||||
__wake_up_sync_key
|
||||
__warn_printk
|
||||
wdev_chandef
|
||||
wdev_to_ieee80211_vif
|
||||
wiphy_apply_custom_regulatory
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_read_of_freq_limits
|
||||
wiphy_register
|
||||
wiphy_rfkill_set_hw_state_reason
|
||||
wiphy_rfkill_start_polling
|
||||
wiphy_to_ieee80211_hw
|
||||
wiphy_unregister
|
||||
wireless_nlevent_flush
|
||||
wireless_send_event
|
||||
woken_wake_function
|
||||
|
||||
1945
android/abi_gki_aarch64_unisoc
Normal file
1945
android/abi_gki_aarch64_unisoc
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,7 @@
|
||||
[abi_symbol_list]
|
||||
# commonly used symbols
|
||||
alloc_etherdev_mqs
|
||||
alloc_netdev_mqs
|
||||
__alloc_pages
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
@@ -11,15 +12,19 @@
|
||||
__arch_copy_to_user
|
||||
arm64_use_ng_mappings
|
||||
bcmp
|
||||
bpf_trace_run1
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
bpf_trace_run5
|
||||
bpf_trace_run6
|
||||
bt_err
|
||||
bt_info
|
||||
bt_warn
|
||||
build_skb
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
cancel_work_sync
|
||||
cfg80211_chandef_valid
|
||||
__check_object_size
|
||||
__class_create
|
||||
class_destroy
|
||||
@@ -35,6 +40,8 @@
|
||||
cpu_hwcaps
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
crc32_le
|
||||
csum_partial
|
||||
debugfs_attr_read
|
||||
debugfs_attr_write
|
||||
debugfs_create_devm_seqfile
|
||||
@@ -46,9 +53,13 @@
|
||||
default_llseek
|
||||
delayed_work_timer_fn
|
||||
del_timer
|
||||
del_timer_sync
|
||||
destroy_workqueue
|
||||
dev_addr_mod
|
||||
dev_alloc_name
|
||||
dev_close
|
||||
_dev_err
|
||||
__dev_get_by_index
|
||||
device_create
|
||||
device_create_file
|
||||
device_remove_file
|
||||
@@ -65,6 +76,7 @@
|
||||
devm_kmalloc
|
||||
devm_request_threaded_irq
|
||||
_dev_notice
|
||||
_dev_printk
|
||||
__dev_queue_xmit
|
||||
_dev_warn
|
||||
dma_alloc_attrs
|
||||
@@ -138,13 +150,18 @@
|
||||
drm_simple_encoder_init
|
||||
drm_vblank_init
|
||||
ether_setup
|
||||
eth_mac_addr
|
||||
ethtool_op_get_link
|
||||
ethtool_op_get_ts_info
|
||||
eth_type_trans
|
||||
eth_validate_addr
|
||||
fd_install
|
||||
_find_first_bit
|
||||
finish_wait
|
||||
firmware_request_nowarn
|
||||
flush_delayed_work
|
||||
flush_work
|
||||
__flush_workqueue
|
||||
__folio_put
|
||||
fortify_panic
|
||||
fput
|
||||
@@ -152,6 +169,9 @@
|
||||
free_netdev
|
||||
__free_pages
|
||||
free_pages
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
get_device
|
||||
__get_free_pages
|
||||
get_random_bytes
|
||||
@@ -171,28 +191,11 @@
|
||||
hrtimer_start_range_ns
|
||||
ida_alloc_range
|
||||
ida_free
|
||||
idr_alloc
|
||||
idr_destroy
|
||||
idr_get_next
|
||||
idr_remove
|
||||
ieee80211_alloc_hw_nm
|
||||
ieee80211_beacon_cntdwn_is_complete
|
||||
ieee80211_beacon_get_tim
|
||||
ieee80211_csa_finish
|
||||
ieee80211_free_hw
|
||||
ieee80211_free_txskb
|
||||
ieee80211_get_buffered_bc
|
||||
ieee80211_get_hdrlen_from_skb
|
||||
ieee80211_get_tx_rates
|
||||
ieee80211_iterate_active_interfaces_atomic
|
||||
ieee80211_queue_delayed_work
|
||||
ieee80211_radar_detected
|
||||
ieee80211_register_hw
|
||||
ieee80211_send_bar
|
||||
ieee80211_sta_register_airtime
|
||||
ieee80211_stop_queues
|
||||
ieee80211_stop_tx_ba_cb_irqsafe
|
||||
ieee80211_tx_status_ext
|
||||
ieee80211_unregister_hw
|
||||
ieee80211_wake_queues
|
||||
init_net
|
||||
__init_swait_queue_head
|
||||
init_timer_key
|
||||
init_wait_entry
|
||||
@@ -210,8 +213,10 @@
|
||||
irq_set_irq_wake
|
||||
is_vmalloc_addr
|
||||
jiffies
|
||||
jiffies_to_msecs
|
||||
kasan_flag_enabled
|
||||
kfree
|
||||
kfree_sensitive
|
||||
kfree_skb_reason
|
||||
kimage_voffset
|
||||
__kmalloc
|
||||
@@ -228,6 +233,7 @@
|
||||
ktime_get
|
||||
ktime_get_with_offset
|
||||
kvfree
|
||||
kvfree_call_rcu
|
||||
kvmalloc_node
|
||||
__list_add_valid
|
||||
__list_del_entry_valid
|
||||
@@ -242,6 +248,7 @@
|
||||
memstart_addr
|
||||
misc_deregister
|
||||
misc_register
|
||||
mod_delayed_work_on
|
||||
mod_timer
|
||||
module_layout
|
||||
__msecs_to_jiffies
|
||||
@@ -256,6 +263,7 @@
|
||||
napi_gro_receive
|
||||
__napi_schedule
|
||||
napi_schedule_prep
|
||||
__netdev_alloc_skb
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_printk
|
||||
@@ -268,13 +276,20 @@
|
||||
netif_device_detach
|
||||
netif_napi_add_weight
|
||||
__netif_napi_del
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_tx_stop_all_queues
|
||||
netif_tx_wake_queue
|
||||
netlink_broadcast
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_ratelimit
|
||||
nf_conntrack_destroy
|
||||
nla_memcpy
|
||||
__nla_parse
|
||||
nla_put_64bit
|
||||
nla_put
|
||||
nla_put_64bit
|
||||
nonseekable_open
|
||||
noop_llseek
|
||||
nr_cpu_ids
|
||||
@@ -284,7 +299,10 @@
|
||||
page_frag_alloc_align
|
||||
__page_frag_cache_drain
|
||||
page_frag_free
|
||||
page_pinner_inited
|
||||
__page_pinner_put_page
|
||||
param_ops_bool
|
||||
param_ops_charp
|
||||
param_ops_int
|
||||
param_ops_uint
|
||||
passthru_features_check
|
||||
@@ -318,6 +336,8 @@
|
||||
preempt_schedule_notrace
|
||||
prepare_to_wait_event
|
||||
_printk
|
||||
__pskb_pull_tail
|
||||
___pskb_trim
|
||||
put_device
|
||||
__put_task_struct
|
||||
put_unused_fd
|
||||
@@ -338,6 +358,7 @@
|
||||
refcount_warn_saturate
|
||||
register_netdevice
|
||||
register_netdevice_notifier
|
||||
register_pernet_device
|
||||
register_virtio_device
|
||||
register_virtio_driver
|
||||
__regmap_init
|
||||
@@ -346,11 +367,17 @@
|
||||
remap_pfn_range
|
||||
request_firmware
|
||||
request_threaded_irq
|
||||
rhashtable_insert_slow
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
sched_set_fifo_low
|
||||
schedule
|
||||
schedule_timeout
|
||||
scnprintf
|
||||
seq_lseek
|
||||
seq_printf
|
||||
seq_puts
|
||||
@@ -377,30 +404,44 @@
|
||||
single_open
|
||||
single_release
|
||||
skb_add_rx_frag
|
||||
skb_clone
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
skb_copy_expand
|
||||
skb_dequeue
|
||||
skb_pull
|
||||
skb_push
|
||||
skb_put
|
||||
skb_queue_head
|
||||
skb_queue_purge
|
||||
skb_queue_tail
|
||||
skb_to_sgvec
|
||||
skb_trim
|
||||
snprintf
|
||||
sprintf
|
||||
sscanf
|
||||
__stack_chk_fail
|
||||
strcasecmp
|
||||
strcmp
|
||||
strcpy
|
||||
strlen
|
||||
strncpy
|
||||
strnlen
|
||||
strscpy
|
||||
__sw_hweight16
|
||||
__sw_hweight32
|
||||
__sw_hweight8
|
||||
sync_file_create
|
||||
synchronize_irq
|
||||
synchronize_net
|
||||
synchronize_rcu
|
||||
sysfs_create_group
|
||||
sysfs_remove_group
|
||||
sysfs_remove_link
|
||||
system_freezable_wq
|
||||
system_wq
|
||||
__tasklet_schedule
|
||||
tasklet_setup
|
||||
tasklet_unlock_wait
|
||||
trace_event_buffer_commit
|
||||
trace_event_buffer_reserve
|
||||
@@ -411,8 +452,10 @@
|
||||
trace_raw_output_prep
|
||||
__trace_trigger_soft_disabled
|
||||
unregister_netdev
|
||||
unregister_netdevice_many
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_pernet_device
|
||||
unregister_virtio_device
|
||||
unregister_virtio_driver
|
||||
usb_add_hcd
|
||||
@@ -537,7 +580,6 @@
|
||||
btbcm_set_bdaddr
|
||||
btbcm_setup_apple
|
||||
btbcm_setup_patchram
|
||||
cancel_delayed_work
|
||||
device_wakeup_disable
|
||||
__dev_kfree_skb_irq
|
||||
disable_irq
|
||||
@@ -568,6 +610,56 @@
|
||||
usb_scuttle_anchored_urbs
|
||||
usb_set_interface
|
||||
|
||||
# required by cfg80211.ko
|
||||
bpf_trace_run10
|
||||
bpf_trace_run7
|
||||
bpf_trace_run8
|
||||
__class_register
|
||||
class_unregister
|
||||
_ctype
|
||||
debugfs_rename
|
||||
__dev_change_net_namespace
|
||||
dev_get_by_index
|
||||
device_add
|
||||
device_del
|
||||
device_initialize
|
||||
device_rename
|
||||
dev_set_name
|
||||
gcd
|
||||
genlmsg_multicast_allns
|
||||
get_net_ns_by_fd
|
||||
get_net_ns_by_pid
|
||||
inet_csk_get_port
|
||||
init_uts_ns
|
||||
key_create_or_update
|
||||
key_put
|
||||
keyring_alloc
|
||||
ktime_get_coarse_with_offset
|
||||
memcmp
|
||||
net_ns_type_operations
|
||||
nla_find
|
||||
nla_reserve
|
||||
__nla_validate
|
||||
of_prop_next_u32
|
||||
__put_net
|
||||
rb_erase
|
||||
rb_insert_color
|
||||
request_firmware_nowait
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
rfkill_register
|
||||
rfkill_resume_polling
|
||||
rfkill_set_hw_state_reason
|
||||
rfkill_unregister
|
||||
__sock_create
|
||||
sock_release
|
||||
sysfs_create_link
|
||||
system_power_efficient_wq
|
||||
trace_print_array_seq
|
||||
verify_pkcs7_signature
|
||||
wireless_nlevent_flush
|
||||
|
||||
# required by clk-vexpress-osc.ko
|
||||
clk_hw_set_rate_range
|
||||
devm_of_clk_add_hw_provider
|
||||
@@ -601,7 +693,6 @@
|
||||
|
||||
# required by dummy_hcd.ko
|
||||
ktime_get_ts64
|
||||
scnprintf
|
||||
strstr
|
||||
usb_add_gadget_udc
|
||||
usb_del_gadget_udc
|
||||
@@ -611,7 +702,6 @@
|
||||
|
||||
# required by failover.ko
|
||||
netdev_master_upper_dev_link
|
||||
rtnl_is_locked
|
||||
|
||||
# required by goldfish_address_space.ko
|
||||
memremap
|
||||
@@ -661,59 +751,80 @@
|
||||
hci_resume_dev
|
||||
hci_suspend_dev
|
||||
iov_iter_revert
|
||||
skb_queue_head
|
||||
|
||||
# required by mac80211.ko
|
||||
__alloc_percpu_gfp
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
bitmap_free
|
||||
bitmap_zalloc
|
||||
call_rcu
|
||||
__cpu_possible_mask
|
||||
crc32_be
|
||||
crypto_aead_decrypt
|
||||
crypto_aead_encrypt
|
||||
crypto_aead_setauthsize
|
||||
crypto_aead_setkey
|
||||
crypto_alloc_aead
|
||||
crypto_alloc_shash
|
||||
crypto_alloc_skcipher
|
||||
crypto_destroy_tfm
|
||||
__crypto_memneq
|
||||
crypto_shash_digest
|
||||
crypto_shash_finup
|
||||
crypto_shash_setkey
|
||||
crypto_shash_update
|
||||
crypto_skcipher_decrypt
|
||||
crypto_skcipher_encrypt
|
||||
crypto_skcipher_setkey
|
||||
__crypto_xor
|
||||
dev_fetch_sw_netstats
|
||||
_find_next_bit
|
||||
free_percpu
|
||||
get_random_u16
|
||||
__hw_addr_init
|
||||
__hw_addr_sync
|
||||
__hw_addr_unsync
|
||||
idr_find
|
||||
idr_for_each
|
||||
kernel_param_lock
|
||||
kernel_param_unlock
|
||||
kfree_skb_list_reason
|
||||
kmalloc_large
|
||||
ktime_get_seconds
|
||||
netdev_set_default_ethtool_ops
|
||||
netif_receive_skb
|
||||
__per_cpu_offset
|
||||
pskb_expand_head
|
||||
rcu_barrier
|
||||
register_inet6addr_notifier
|
||||
register_inetaddr_notifier
|
||||
rhashtable_free_and_destroy
|
||||
rhltable_init
|
||||
round_jiffies
|
||||
round_jiffies_relative
|
||||
round_jiffies_up
|
||||
skb_checksum_help
|
||||
skb_clone_sk
|
||||
skb_complete_wifi_ack
|
||||
skb_ensure_writable
|
||||
__skb_get_hash
|
||||
__skb_gso_segment
|
||||
__sw_hweight64
|
||||
tasklet_kill
|
||||
unregister_inet6addr_notifier
|
||||
unregister_inetaddr_notifier
|
||||
|
||||
# required by mac80211_hwsim.ko
|
||||
alloc_netdev_mqs
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_vendor_cmd_reply
|
||||
dev_alloc_name
|
||||
device_bind_driver
|
||||
device_release_driver
|
||||
dst_release
|
||||
eth_mac_addr
|
||||
genlmsg_put
|
||||
genl_notify
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
ieee80211_find_sta_by_link_addrs
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_nullfunc_get
|
||||
ieee80211_probereq_get
|
||||
ieee80211_ready_on_channel
|
||||
ieee80211_remain_on_channel_expired
|
||||
ieee80211_rx_irqsafe
|
||||
ieee80211_scan_completed
|
||||
ieee80211_set_active_links_async
|
||||
ieee80211_tx_prepare_skb
|
||||
ieee80211_tx_status_irqsafe
|
||||
init_net
|
||||
jiffies_to_msecs
|
||||
__netdev_alloc_skb
|
||||
netlink_broadcast
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_namespace_list
|
||||
nla_memcpy
|
||||
register_pernet_device
|
||||
regulatory_hint
|
||||
rhashtable_destroy
|
||||
rhashtable_init
|
||||
rhashtable_insert_slow
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
schedule_timeout_interruptible
|
||||
skb_copy
|
||||
skb_copy_expand
|
||||
__skb_ext_put
|
||||
skb_trim
|
||||
__sw_hweight16
|
||||
unregister_pernet_device
|
||||
wiphy_apply_custom_regulatory
|
||||
|
||||
# required by mt76-usb.ko
|
||||
usb_init_urb
|
||||
@@ -722,7 +833,6 @@
|
||||
usb_unpoison_urb
|
||||
|
||||
# required by mt76.ko
|
||||
cfg80211_reg_can_beacon
|
||||
debugfs_create_blob
|
||||
debugfs_create_file_unsafe
|
||||
dev_driver_string
|
||||
@@ -731,30 +841,13 @@
|
||||
dma_map_page_attrs
|
||||
dma_sync_single_for_cpu
|
||||
dma_unmap_page_attrs
|
||||
idr_alloc
|
||||
idr_get_next
|
||||
ieee80211_calc_rx_airtime
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_find_sta_by_ifaddr
|
||||
ieee80211_get_key_rx_seq
|
||||
ieee80211_next_txq
|
||||
ieee80211_rx_list
|
||||
__ieee80211_schedule_txq
|
||||
ieee80211_sta_eosp
|
||||
ieee80211_sta_pspoll
|
||||
ieee80211_sta_ps_transition
|
||||
ieee80211_sta_uapsd_trigger
|
||||
ieee80211_tx_dequeue
|
||||
ieee80211_txq_schedule_start
|
||||
init_dummy_netdev
|
||||
__ioread32_copy
|
||||
__iowrite32_copy
|
||||
kthread_parkme
|
||||
kthread_should_park
|
||||
kvfree_call_rcu
|
||||
led_classdev_register_ext
|
||||
led_classdev_unregister
|
||||
netif_receive_skb_list
|
||||
of_get_child_by_name
|
||||
of_get_mac_address
|
||||
of_get_next_child
|
||||
@@ -763,26 +856,14 @@
|
||||
pcie_capability_clear_and_set_word
|
||||
pcie_capability_read_word
|
||||
radix_tree_tagged
|
||||
rfc1042_header
|
||||
__skb_pad
|
||||
wiphy_read_of_freq_limits
|
||||
|
||||
# required by mt76x02-lib.ko
|
||||
bpf_trace_run1
|
||||
debugfs_create_bool
|
||||
ieee80211_calc_tx_airtime
|
||||
ieee80211_hdrlen
|
||||
ieee80211_iter_keys_rcu
|
||||
ieee80211_restart_hw
|
||||
__kfifo_init
|
||||
___pskb_trim
|
||||
__tasklet_schedule
|
||||
tasklet_setup
|
||||
wiphy_to_ieee80211_hw
|
||||
|
||||
# required by mt76x02-usb.ko
|
||||
hrtimer_active
|
||||
ieee80211_iterate_interfaces
|
||||
system_highpri_wq
|
||||
|
||||
# required by nd_virtio.ko
|
||||
@@ -794,7 +875,6 @@
|
||||
|
||||
# required by net_failover.ko
|
||||
call_netdevice_notifiers
|
||||
dev_close
|
||||
dev_get_stats
|
||||
dev_mc_sync_multiple
|
||||
dev_mc_unsync
|
||||
@@ -839,12 +919,10 @@
|
||||
# required by psmouse.ko
|
||||
bus_register_notifier
|
||||
bus_unregister_notifier
|
||||
del_timer_sync
|
||||
device_add_groups
|
||||
device_link_add
|
||||
device_link_remove
|
||||
device_remove_groups
|
||||
__flush_workqueue
|
||||
i2c_adapter_type
|
||||
i2c_bus_type
|
||||
i2c_client_type
|
||||
@@ -946,29 +1024,15 @@
|
||||
platform_bus
|
||||
sockfd_lookup
|
||||
strchr
|
||||
sysfs_remove_link
|
||||
usb_speed_string
|
||||
|
||||
# required by virt_wifi.ko
|
||||
cfg80211_connect_done
|
||||
cfg80211_disconnected
|
||||
cfg80211_inform_bss_data
|
||||
cfg80211_put_bss
|
||||
cfg80211_scan_done
|
||||
__dev_get_by_index
|
||||
_dev_printk
|
||||
__module_get
|
||||
module_put
|
||||
netdev_upper_dev_link
|
||||
netif_stacked_transfer_operstate
|
||||
rtnl_link_register
|
||||
rtnl_link_unregister
|
||||
skb_clone
|
||||
unregister_netdevice_many
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_register
|
||||
wiphy_unregister
|
||||
|
||||
# required by virtio-gpu.ko
|
||||
__devm_request_region
|
||||
@@ -1082,7 +1146,6 @@
|
||||
__SetPageMovable
|
||||
si_mem_available
|
||||
si_meminfo
|
||||
system_freezable_wq
|
||||
unregister_oom_notifier
|
||||
unregister_shrinker
|
||||
virtqueue_disable_dma_api_for_buffers
|
||||
@@ -1184,8 +1247,6 @@
|
||||
eth_prepare_mac_addr_change
|
||||
ethtool_sprintf
|
||||
ethtool_virtdev_set_link_ksettings
|
||||
eth_type_trans
|
||||
_find_first_bit
|
||||
flow_keys_basic_dissector
|
||||
jiffies_to_usecs
|
||||
__napi_alloc_skb
|
||||
@@ -1198,9 +1259,7 @@
|
||||
__netif_set_xps_queue
|
||||
netif_tx_lock
|
||||
netif_tx_unlock
|
||||
net_ratelimit
|
||||
__num_online_cpus
|
||||
__pskb_pull_tail
|
||||
sched_clock
|
||||
skb_coalesce_rx_frag
|
||||
__skb_flow_dissect
|
||||
@@ -1270,7 +1329,6 @@
|
||||
wait_for_completion_interruptible_timeout
|
||||
|
||||
# required by vkms.ko
|
||||
crc32_le
|
||||
__devm_drm_dev_alloc
|
||||
devres_open_group
|
||||
devres_release_group
|
||||
@@ -1308,7 +1366,6 @@
|
||||
|
||||
# required by vmw_vsock_virtio_transport.ko
|
||||
sk_error_report
|
||||
synchronize_rcu
|
||||
virtio_transport_connect
|
||||
virtio_transport_deliver_tap_pkt
|
||||
virtio_transport_destruct
|
||||
@@ -1359,26 +1416,18 @@
|
||||
can_bus_off
|
||||
can_change_state
|
||||
capable
|
||||
__class_register
|
||||
class_unregister
|
||||
contig_page_data
|
||||
__cpu_possible_mask
|
||||
crypto_alloc_base
|
||||
crypto_comp_compress
|
||||
crypto_comp_decompress
|
||||
crypto_destroy_tfm
|
||||
crypto_has_alg
|
||||
dec_zone_page_state
|
||||
down_read
|
||||
down_write
|
||||
_find_next_bit
|
||||
flush_dcache_page
|
||||
folio_wait_bit
|
||||
free_percpu
|
||||
hex_asc_upper
|
||||
hex_to_bin
|
||||
idr_find
|
||||
idr_for_each
|
||||
inc_zone_page_state
|
||||
__init_rwsem
|
||||
kstrdup
|
||||
@@ -1387,7 +1436,6 @@
|
||||
memset64
|
||||
mutex_is_locked
|
||||
page_endio
|
||||
__per_cpu_offset
|
||||
_raw_read_lock
|
||||
_raw_read_unlock
|
||||
_raw_write_lock
|
||||
|
||||
@@ -31,10 +31,6 @@
|
||||
__blk_mq_alloc_disk
|
||||
__blk_mq_end_request
|
||||
__blk_rq_map_sg
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
__cfg80211_radar_event
|
||||
__cfg80211_send_event_skb
|
||||
__check_object_size
|
||||
__class_create
|
||||
__class_register
|
||||
@@ -139,7 +135,6 @@
|
||||
__hwspin_unlock
|
||||
__i2c_smbus_xfer
|
||||
__i2c_transfer
|
||||
__ieee80211_schedule_txq
|
||||
__inet6_lookup_established
|
||||
__inet_lookup_established
|
||||
__init_rwsem
|
||||
@@ -400,6 +395,7 @@
|
||||
__traceiter_android_vh_ipi_stop
|
||||
__traceiter_android_vh_is_fpsimd_save
|
||||
__traceiter_android_vh_jiffies_update
|
||||
__traceiter_android_vh_mmap_region
|
||||
__traceiter_android_vh_mutex_wait_finish
|
||||
__traceiter_android_vh_mutex_wait_start
|
||||
__traceiter_android_vh_printk_hotplug
|
||||
@@ -420,6 +416,7 @@
|
||||
__traceiter_android_vh_timer_calc_index
|
||||
__traceiter_android_vh_try_to_freeze_todo
|
||||
__traceiter_android_vh_try_to_freeze_todo_unfrozen
|
||||
__traceiter_android_vh_try_to_unmap_one
|
||||
__traceiter_android_vh_ufs_check_int_errors
|
||||
__traceiter_android_vh_ufs_clock_scaling
|
||||
__traceiter_android_vh_ufs_compl_command
|
||||
@@ -566,6 +563,7 @@
|
||||
__tracepoint_android_vh_ipi_stop
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
__tracepoint_android_vh_jiffies_update
|
||||
__tracepoint_android_vh_mmap_region
|
||||
__tracepoint_android_vh_mutex_wait_finish
|
||||
__tracepoint_android_vh_mutex_wait_start
|
||||
__tracepoint_android_vh_printk_hotplug
|
||||
@@ -584,6 +582,7 @@
|
||||
__tracepoint_android_vh_show_suspend_epoch_val
|
||||
__tracepoint_android_vh_sysrq_crash
|
||||
__tracepoint_android_vh_timer_calc_index
|
||||
__tracepoint_android_vh_try_to_unmap_one
|
||||
__tracepoint_android_vh_try_to_freeze_todo
|
||||
__tracepoint_android_vh_try_to_freeze_todo_unfrozen
|
||||
__tracepoint_android_vh_ufs_check_int_errors
|
||||
@@ -872,7 +871,6 @@
|
||||
bpf_trace_run8
|
||||
bpf_trace_run9
|
||||
bpf_warn_invalid_xdp_action
|
||||
bridge_tunnel_header
|
||||
bsg_job_done
|
||||
bsg_remove_queue
|
||||
bsg_setup_queue
|
||||
@@ -974,100 +972,6 @@
|
||||
cec_s_phys_addr
|
||||
cec_transmit_attempt_done_ts
|
||||
cec_unregister_adapter
|
||||
cfg80211_any_usable_channels
|
||||
cfg80211_assoc_comeback
|
||||
cfg80211_assoc_failure
|
||||
cfg80211_auth_timeout
|
||||
cfg80211_background_cac_abort
|
||||
cfg80211_bss_color_notify
|
||||
cfg80211_bss_flush
|
||||
cfg80211_bss_iter
|
||||
cfg80211_cac_event
|
||||
cfg80211_calculate_bitrate
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_ch_switch_started_notify
|
||||
cfg80211_chandef_compatible
|
||||
cfg80211_chandef_create
|
||||
cfg80211_chandef_dfs_required
|
||||
cfg80211_chandef_usable
|
||||
cfg80211_chandef_valid
|
||||
cfg80211_check_combinations
|
||||
cfg80211_check_station_change
|
||||
cfg80211_classify8021d
|
||||
cfg80211_conn_failed
|
||||
cfg80211_connect_done
|
||||
cfg80211_control_port_tx_status
|
||||
cfg80211_cqm_beacon_loss_notify
|
||||
cfg80211_cqm_pktloss_notify
|
||||
cfg80211_cqm_rssi_notify
|
||||
cfg80211_cqm_txe_notify
|
||||
cfg80211_crit_proto_stopped
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_external_auth_request
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_find_vendor_elem
|
||||
cfg80211_free_nan_func
|
||||
cfg80211_ft_event
|
||||
cfg80211_get_bss
|
||||
cfg80211_get_drvinfo
|
||||
cfg80211_get_ies_channel_number
|
||||
cfg80211_get_iftype_ext_capa
|
||||
cfg80211_get_p2p_attr
|
||||
cfg80211_get_station
|
||||
cfg80211_gtk_rekey_notify
|
||||
cfg80211_ibss_joined
|
||||
cfg80211_iftype_allowed
|
||||
cfg80211_inform_bss_data
|
||||
cfg80211_inform_bss_frame_data
|
||||
cfg80211_is_element_inherited
|
||||
cfg80211_iter_combinations
|
||||
cfg80211_merge_profile
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_nan_func_terminated
|
||||
cfg80211_nan_match
|
||||
cfg80211_new_sta
|
||||
cfg80211_notify_new_peer_candidate
|
||||
cfg80211_pmksa_candidate_notify
|
||||
cfg80211_pmsr_complete
|
||||
cfg80211_pmsr_report
|
||||
cfg80211_port_authorized
|
||||
cfg80211_probe_status
|
||||
cfg80211_put_bss
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_ref_bss
|
||||
cfg80211_reg_can_beacon
|
||||
cfg80211_reg_can_beacon_relax
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_report_obss_beacon_khz
|
||||
cfg80211_report_wowlan_wakeup
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_assoc_resp
|
||||
cfg80211_rx_control_port
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_rx_mlme_mgmt
|
||||
cfg80211_rx_spurious_frame
|
||||
cfg80211_rx_unexpected_4addr_frame
|
||||
cfg80211_rx_unprot_mlme_mgmt
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
cfg80211_sched_scan_stopped_locked
|
||||
cfg80211_send_layer2_update
|
||||
cfg80211_shutdown_all_interfaces
|
||||
cfg80211_sinfo_alloc_tid_stats
|
||||
cfg80211_sta_opmode_change_notify
|
||||
cfg80211_stop_iface
|
||||
cfg80211_tdls_oper_request
|
||||
cfg80211_tx_mgmt_expired
|
||||
cfg80211_tx_mlme_mgmt
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_update_owe_info_event
|
||||
cfg80211_vendor_cmd_get_sender
|
||||
cfg80211_vendor_cmd_reply
|
||||
cgroup_path_ns
|
||||
cgroup_taskset_first
|
||||
cgroup_taskset_next
|
||||
@@ -2169,7 +2073,6 @@
|
||||
freq_qos_remove_notifier
|
||||
freq_qos_remove_request
|
||||
freq_qos_update_request
|
||||
freq_reg_info
|
||||
fs_bio_set
|
||||
fsync_bdev
|
||||
ftrace_dump
|
||||
@@ -2275,7 +2178,6 @@
|
||||
get_user_pages
|
||||
get_user_pages_fast
|
||||
get_vaddr_frames
|
||||
get_wiphy_regdom
|
||||
get_zeroed_page
|
||||
getboottime64
|
||||
gh_rm_call
|
||||
@@ -2502,151 +2404,6 @@
|
||||
idr_preload
|
||||
idr_remove
|
||||
idr_replace
|
||||
ieee80211_alloc_hw_nm
|
||||
ieee80211_amsdu_to_8023s
|
||||
ieee80211_ap_probereq_get
|
||||
ieee80211_ave_rssi
|
||||
ieee80211_beacon_cntdwn_is_complete
|
||||
ieee80211_beacon_get_template
|
||||
ieee80211_beacon_get_tim
|
||||
ieee80211_beacon_loss
|
||||
ieee80211_beacon_set_cntdwn
|
||||
ieee80211_beacon_update_cntdwn
|
||||
ieee80211_bss_get_elem
|
||||
ieee80211_calc_rx_airtime
|
||||
ieee80211_calc_tx_airtime
|
||||
ieee80211_chandef_to_operating_class
|
||||
ieee80211_channel_switch_disconnect
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_chswitch_done
|
||||
ieee80211_color_change_finish
|
||||
ieee80211_connection_loss
|
||||
ieee80211_cqm_beacon_loss_notify
|
||||
ieee80211_cqm_rssi_notify
|
||||
ieee80211_csa_finish
|
||||
ieee80211_ctstoself_duration
|
||||
ieee80211_ctstoself_get
|
||||
ieee80211_data_to_8023_exthdr
|
||||
ieee80211_disable_rssi_reports
|
||||
ieee80211_disconnect
|
||||
ieee80211_enable_rssi_reports
|
||||
ieee80211_find_sta
|
||||
ieee80211_find_sta_by_ifaddr
|
||||
ieee80211_find_sta_by_link_addrs
|
||||
ieee80211_free_hw
|
||||
ieee80211_free_txskb
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_generic_frame_duration
|
||||
ieee80211_get_bssid
|
||||
ieee80211_get_buffered_bc
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_get_fils_discovery_tmpl
|
||||
ieee80211_get_hdrlen_from_skb
|
||||
ieee80211_get_key_rx_seq
|
||||
ieee80211_get_mesh_hdrlen
|
||||
ieee80211_get_num_supported_channels
|
||||
ieee80211_get_response_rate
|
||||
ieee80211_get_tkip_p1k_iv
|
||||
ieee80211_get_tkip_p2k
|
||||
ieee80211_get_tkip_rx_p1k
|
||||
ieee80211_get_tx_rates
|
||||
ieee80211_get_unsol_bcast_probe_resp_tmpl
|
||||
ieee80211_get_vht_max_nss
|
||||
ieee80211_gtk_rekey_add
|
||||
ieee80211_gtk_rekey_notify
|
||||
ieee80211_hdrlen
|
||||
ieee80211_hw_restart_disconnect
|
||||
ieee80211_ie_split_ric
|
||||
ieee80211_iter_chan_contexts_atomic
|
||||
ieee80211_iter_keys
|
||||
ieee80211_iter_keys_rcu
|
||||
ieee80211_iterate_active_interfaces_atomic
|
||||
ieee80211_iterate_active_interfaces_mtx
|
||||
ieee80211_iterate_interfaces
|
||||
ieee80211_iterate_stations
|
||||
ieee80211_iterate_stations_atomic
|
||||
ieee80211_key_mic_failure
|
||||
ieee80211_key_replay
|
||||
ieee80211_manage_rx_ba_offl
|
||||
ieee80211_mandatory_rates
|
||||
ieee80211_mark_rx_ba_filtered_frames
|
||||
ieee80211_nan_func_match
|
||||
ieee80211_nan_func_terminated
|
||||
ieee80211_next_txq
|
||||
ieee80211_nullfunc_get
|
||||
ieee80211_operating_class_to_band
|
||||
ieee80211_parse_p2p_noa
|
||||
ieee80211_probereq_get
|
||||
ieee80211_proberesp_get
|
||||
ieee80211_pspoll_get
|
||||
ieee80211_queue_delayed_work
|
||||
ieee80211_queue_stopped
|
||||
ieee80211_queue_work
|
||||
ieee80211_radar_detected
|
||||
ieee80211_radiotap_iterator_init
|
||||
ieee80211_radiotap_iterator_next
|
||||
ieee80211_rate_control_register
|
||||
ieee80211_rate_control_unregister
|
||||
ieee80211_ready_on_channel
|
||||
ieee80211_register_hw
|
||||
ieee80211_remain_on_channel_expired
|
||||
ieee80211_remove_key
|
||||
ieee80211_report_low_ack
|
||||
ieee80211_report_wowlan_wakeup
|
||||
ieee80211_request_smps
|
||||
ieee80211_reserve_tid
|
||||
ieee80211_restart_hw
|
||||
ieee80211_resume_disconnect
|
||||
ieee80211_rts_duration
|
||||
ieee80211_rts_get
|
||||
ieee80211_rx_ba_timer_expired
|
||||
ieee80211_rx_irqsafe
|
||||
ieee80211_rx_list
|
||||
ieee80211_rx_napi
|
||||
ieee80211_s1g_channel_width
|
||||
ieee80211_scan_completed
|
||||
ieee80211_sched_scan_results
|
||||
ieee80211_sched_scan_stopped
|
||||
ieee80211_send_bar
|
||||
ieee80211_send_eosp_nullfunc
|
||||
ieee80211_set_active_links
|
||||
ieee80211_set_active_links_async
|
||||
ieee80211_set_key_rx_seq
|
||||
ieee80211_sta_block_awake
|
||||
ieee80211_sta_eosp
|
||||
ieee80211_sta_ps_transition
|
||||
ieee80211_sta_pspoll
|
||||
ieee80211_sta_recalc_aggregates
|
||||
ieee80211_sta_register_airtime
|
||||
ieee80211_sta_set_buffered
|
||||
ieee80211_sta_uapsd_trigger
|
||||
ieee80211_start_tx_ba_cb_irqsafe
|
||||
ieee80211_start_tx_ba_session
|
||||
ieee80211_stop_queue
|
||||
ieee80211_stop_queues
|
||||
ieee80211_stop_rx_ba_session
|
||||
ieee80211_stop_tx_ba_cb_irqsafe
|
||||
ieee80211_stop_tx_ba_session
|
||||
ieee80211_tdls_oper_request
|
||||
ieee80211_tkip_add_iv
|
||||
ieee80211_tx_dequeue
|
||||
ieee80211_tx_prepare_skb
|
||||
ieee80211_tx_rate_update
|
||||
ieee80211_tx_status
|
||||
ieee80211_tx_status_8023
|
||||
ieee80211_tx_status_ext
|
||||
ieee80211_tx_status_irqsafe
|
||||
ieee80211_txq_airtime_check
|
||||
ieee80211_txq_get_depth
|
||||
ieee80211_txq_may_transmit
|
||||
ieee80211_txq_schedule_start
|
||||
ieee80211_unregister_hw
|
||||
ieee80211_unreserve_tid
|
||||
ieee80211_update_mu_groups
|
||||
ieee80211_update_p2p_noa
|
||||
ieee80211_vif_to_wdev
|
||||
ieee80211_wake_queue
|
||||
ieee80211_wake_queues
|
||||
ieee802154_alloc_hw
|
||||
ieee802154_configure_durations
|
||||
ieee802154_free_hw
|
||||
@@ -2663,7 +2420,6 @@
|
||||
ieee802154_xmit_complete
|
||||
ieee802154_xmit_error
|
||||
ieee802154_xmit_hw_error
|
||||
ieeee80211_obss_color_collision_notify
|
||||
iio_buffer_enabled
|
||||
iio_buffer_init
|
||||
iio_buffer_put
|
||||
@@ -3807,7 +3563,6 @@
|
||||
radix_tree_lookup
|
||||
radix_tree_next_chunk
|
||||
radix_tree_tagged
|
||||
rate_control_set_rates
|
||||
rational_best_approximation
|
||||
raw_notifier_call_chain
|
||||
raw_notifier_chain_register
|
||||
@@ -3861,8 +3616,6 @@
|
||||
refcount_dec_if_one
|
||||
refcount_dec_not_one
|
||||
refcount_warn_saturate
|
||||
reg_initiator_name
|
||||
reg_query_regdb_wmm
|
||||
regcache_cache_bypass
|
||||
regcache_cache_only
|
||||
regcache_drop_region
|
||||
@@ -3937,6 +3690,7 @@
|
||||
regulator_force_disable
|
||||
regulator_get
|
||||
regulator_get_current_limit_regmap
|
||||
regulator_get_drvdata
|
||||
regulator_get_linear_step
|
||||
regulator_get_mode
|
||||
regulator_get_optional
|
||||
@@ -3963,10 +3717,6 @@
|
||||
regulator_set_voltage_sel_regmap
|
||||
regulator_unregister
|
||||
regulator_unregister_notifier
|
||||
regulatory_hint
|
||||
regulatory_pre_cac_allowed
|
||||
regulatory_set_wiphy_regd
|
||||
regulatory_set_wiphy_regd_sync
|
||||
release_firmware
|
||||
release_sock
|
||||
remap_pfn_range
|
||||
@@ -3995,7 +3745,6 @@
|
||||
reset_control_release
|
||||
reset_control_reset
|
||||
return_address
|
||||
rfc1042_header
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
@@ -4780,6 +4529,7 @@
|
||||
ucsi_destroy
|
||||
ucsi_get_drvdata
|
||||
ucsi_register
|
||||
ucsi_send_command
|
||||
ucsi_set_drvdata
|
||||
ucsi_unregister
|
||||
udp4_hwcsum
|
||||
@@ -5287,17 +5037,6 @@
|
||||
watchdog_register_device
|
||||
watchdog_set_restart_priority
|
||||
watchdog_unregister_device
|
||||
wdev_chandef
|
||||
wdev_to_ieee80211_vif
|
||||
wiphy_apply_custom_regulatory
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_read_of_freq_limits
|
||||
wiphy_register
|
||||
wiphy_rfkill_set_hw_state_reason
|
||||
wiphy_rfkill_start_polling
|
||||
wiphy_to_ieee80211_hw
|
||||
wiphy_unregister
|
||||
wireless_nlevent_flush
|
||||
wireless_send_event
|
||||
woken_wake_function
|
||||
|
||||
@@ -133,3 +133,125 @@
|
||||
__tracepoint_android_rvh_after_enqueue_task
|
||||
__tracepoint_android_rvh_after_dequeue_task
|
||||
__tracepoint_android_vh_map_util_freq
|
||||
|
||||
#required by ufs-qcom.ko
|
||||
blk_crypto_reprogram_all_keys
|
||||
blk_crypto_register
|
||||
blk_crypto_keyslot_index
|
||||
blk_mq_destroy_queue
|
||||
blk_put_queue
|
||||
blk_pm_runtime_init
|
||||
sbitmap_weight
|
||||
scsi_done
|
||||
scsi_remove_device
|
||||
|
||||
#required by mi_sched.ko
|
||||
__traceiter_android_vh_scheduler_tick
|
||||
__traceiter_android_vh_free_user
|
||||
__traceiter_android_vh_alloc_uid
|
||||
__tracepoint_android_vh_scheduler_tick
|
||||
__tracepoint_android_vh_free_user
|
||||
__tracepoint_android_vh_alloc_uid
|
||||
free_uid
|
||||
find_user
|
||||
|
||||
#required by mi_freqwdg.ko
|
||||
__traceiter_android_vh_freq_qos_remove_request
|
||||
__traceiter_android_vh_freq_qos_update_request
|
||||
__traceiter_android_vh_freq_qos_add_request
|
||||
__traceiter_android_rvh_entity_tick
|
||||
__traceiter_android_rvh_dequeue_task_fair
|
||||
__tracepoint_android_vh_freq_qos_remove_request
|
||||
__tracepoint_android_vh_freq_qos_update_request
|
||||
__tracepoint_android_vh_freq_qos_add_request
|
||||
__tracepoint_android_rvh_dequeue_task_fair
|
||||
__tracepoint_android_rvh_entity_tick
|
||||
|
||||
#required by millet.ko
|
||||
__traceiter_android_rvh_refrigerator
|
||||
__tracepoint_android_rvh_refrigerator
|
||||
freezer_cgrp_subsys
|
||||
|
||||
#required by bfq module
|
||||
__blkg_prfill_rwstat
|
||||
blkg_rwstat_recursive_sum
|
||||
blkg_prfill_rwstat
|
||||
blkg_conf_finish
|
||||
blkg_conf_prep
|
||||
__blkg_prfill_u64
|
||||
blkcg_print_blkgs
|
||||
blkg_rwstat_exit
|
||||
blkg_rwstat_init
|
||||
percpu_counter_add_batch
|
||||
io_cgrp_subsys_on_dfl_key
|
||||
ioc_lookup_icq
|
||||
bdi_dev_name
|
||||
|
||||
#required by metis.ko module
|
||||
__traceiter_android_vh_rwsem_read_wait_start
|
||||
__traceiter_android_vh_rwsem_write_wait_start
|
||||
__traceiter_android_vh_mutex_wait_start
|
||||
__traceiter_android_vh_alter_mutex_list_add
|
||||
__traceiter_android_rvh_cpuset_fork
|
||||
__traceiter_android_vh_sched_setaffinity_early
|
||||
__traceiter_android_rvh_set_cpus_allowed_comm
|
||||
__traceiter_android_rvh_dequeue_task
|
||||
__tracepoint_android_vh_rwsem_read_wait_start
|
||||
__tracepoint_android_vh_rwsem_write_wait_start
|
||||
__tracepoint_android_vh_mutex_wait_start
|
||||
__tracepoint_android_vh_alter_mutex_list_add
|
||||
__tracepoint_android_rvh_cpuset_fork
|
||||
__tracepoint_android_vh_sched_setaffinity_early
|
||||
__tracepoint_android_rvh_set_cpus_allowed_comm
|
||||
__tracepoint_android_rvh_dequeue_task
|
||||
cpuset_cpus_allowed
|
||||
|
||||
#required by millet.ko
|
||||
__traceiter_android_vh_binder_wait_for_work
|
||||
__traceiter_android_vh_do_send_sig_info
|
||||
__traceiter_android_vh_binder_preset
|
||||
__traceiter_android_vh_binder_trans
|
||||
__traceiter_android_vh_binder_reply
|
||||
__traceiter_android_vh_binder_alloc_new_buf_locked
|
||||
__tracepoint_android_vh_binder_wait_for_work
|
||||
__tracepoint_android_vh_do_send_sig_info
|
||||
__tracepoint_android_vh_binder_preset
|
||||
__tracepoint_android_vh_binder_trans
|
||||
__tracepoint_android_vh_binder_reply
|
||||
__tracepoint_android_vh_binder_alloc_new_buf_locked
|
||||
|
||||
#required by io_limit.ko
|
||||
__traceiter_android_vh_psi_event
|
||||
__traceiter_android_vh_psi_group
|
||||
__traceiter_android_rvh_ctl_dirty_rate
|
||||
__tracepoint_android_vh_psi_event
|
||||
__tracepoint_android_vh_psi_group
|
||||
__tracepoint_android_rvh_ctl_dirty_rate
|
||||
|
||||
#required by touch module
|
||||
power_supply_is_system_supplied
|
||||
|
||||
#required by mi_mempool.ko
|
||||
__traceiter_android_vh_alloc_pages_reclaim_bypass
|
||||
__traceiter_android_vh_alloc_pages_failure_bypass
|
||||
__tracepoint_android_vh_alloc_pages_reclaim_bypass
|
||||
__tracepoint_android_vh_alloc_pages_failure_bypass
|
||||
|
||||
#required by mi_mempool.ko
|
||||
__traceiter_android_vh_mmput
|
||||
__tracepoint_android_vh_mmput
|
||||
|
||||
#required by mi_mempool.ko
|
||||
__traceiter_android_vh_madvise_cold_pageout_skip
|
||||
__tracepoint_android_vh_madvise_cold_pageout_skip
|
||||
|
||||
#required by n_gsm.ko
|
||||
tty_write_room
|
||||
tty_port_tty_set
|
||||
tty_register_device
|
||||
tty_hung_up_p
|
||||
tty_name
|
||||
tty_port_block_til_ready
|
||||
tty_port_close_start
|
||||
tty_port_lower_dtr_rts
|
||||
tty_port_close_end
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
__cfg80211_radar_event
|
||||
__cfg80211_send_event_skb
|
||||
__hci_cmd_send
|
||||
__hci_cmd_sync
|
||||
__hci_cmd_sync_ev
|
||||
__hci_cmd_sync_sk
|
||||
__hci_cmd_sync_status
|
||||
__hci_cmd_sync_status_sk
|
||||
__ieee80211_schedule_txq
|
||||
__nfc_alloc_vendor_cmd_reply_skb
|
||||
alloc_can_err_skb
|
||||
alloc_can_skb
|
||||
@@ -18,7 +13,6 @@ alloc_canxl_skb
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
baswap
|
||||
bridge_tunnel_header
|
||||
bt_accept_dequeue
|
||||
bt_accept_enqueue
|
||||
bt_accept_unlink
|
||||
@@ -94,106 +88,9 @@ cdc_ncm_rx_verify_nth32
|
||||
cdc_ncm_select_altsetting
|
||||
cdc_ncm_tx_fixup
|
||||
cdc_ncm_unbind
|
||||
cfg80211_any_usable_channels
|
||||
cfg80211_assoc_comeback
|
||||
cfg80211_assoc_failure
|
||||
cfg80211_auth_timeout
|
||||
cfg80211_background_cac_abort
|
||||
cfg80211_bss_color_notify
|
||||
cfg80211_bss_flush
|
||||
cfg80211_bss_iter
|
||||
cfg80211_cac_event
|
||||
cfg80211_calculate_bitrate
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_ch_switch_started_notify
|
||||
cfg80211_chandef_compatible
|
||||
cfg80211_chandef_create
|
||||
cfg80211_chandef_dfs_required
|
||||
cfg80211_chandef_usable
|
||||
cfg80211_chandef_valid
|
||||
cfg80211_check_combinations
|
||||
cfg80211_check_station_change
|
||||
cfg80211_classify8021d
|
||||
cfg80211_conn_failed
|
||||
cfg80211_connect_done
|
||||
cfg80211_control_port_tx_status
|
||||
cfg80211_cqm_beacon_loss_notify
|
||||
cfg80211_cqm_pktloss_notify
|
||||
cfg80211_cqm_rssi_notify
|
||||
cfg80211_cqm_txe_notify
|
||||
cfg80211_crit_proto_stopped
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_external_auth_request
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_find_vendor_elem
|
||||
cfg80211_free_nan_func
|
||||
cfg80211_ft_event
|
||||
cfg80211_get_bss
|
||||
cfg80211_get_drvinfo
|
||||
cfg80211_get_ies_channel_number
|
||||
cfg80211_get_iftype_ext_capa
|
||||
cfg80211_get_p2p_attr
|
||||
cfg80211_get_station
|
||||
cfg80211_gtk_rekey_notify
|
||||
cfg80211_ibss_joined
|
||||
cfg80211_iftype_allowed
|
||||
cfg80211_inform_bss_data
|
||||
cfg80211_inform_bss_frame_data
|
||||
cfg80211_is_element_inherited
|
||||
cfg80211_iter_combinations
|
||||
cfg80211_merge_profile
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_nan_func_terminated
|
||||
cfg80211_nan_match
|
||||
cfg80211_new_sta
|
||||
cfg80211_notify_new_peer_candidate
|
||||
cfg80211_pmksa_candidate_notify
|
||||
cfg80211_pmsr_complete
|
||||
cfg80211_pmsr_report
|
||||
cfg80211_port_authorized
|
||||
cfg80211_probe_status
|
||||
cfg80211_put_bss
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_ref_bss
|
||||
cfg80211_reg_can_beacon
|
||||
cfg80211_reg_can_beacon_relax
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_report_obss_beacon_khz
|
||||
cfg80211_report_wowlan_wakeup
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_assoc_resp
|
||||
cfg80211_rx_control_port
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_rx_mlme_mgmt
|
||||
cfg80211_rx_spurious_frame
|
||||
cfg80211_rx_unexpected_4addr_frame
|
||||
cfg80211_rx_unprot_mlme_mgmt
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
cfg80211_sched_scan_stopped_locked
|
||||
cfg80211_send_layer2_update
|
||||
cfg80211_shutdown_all_interfaces
|
||||
cfg80211_sinfo_alloc_tid_stats
|
||||
cfg80211_sta_opmode_change_notify
|
||||
cfg80211_stop_iface
|
||||
cfg80211_tdls_oper_request
|
||||
cfg80211_tx_mgmt_expired
|
||||
cfg80211_tx_mlme_mgmt
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_update_owe_info_event
|
||||
cfg80211_valid_disable_subchannel_bitmap
|
||||
cfg80211_vendor_cmd_get_sender
|
||||
cfg80211_vendor_cmd_reply
|
||||
close_candev
|
||||
free_candev
|
||||
freq_reg_info
|
||||
generic_mii_ioctl
|
||||
get_wiphy_regdom
|
||||
h4_recv_buf
|
||||
hci_alloc_dev_priv
|
||||
hci_cmd_sync
|
||||
@@ -222,151 +119,6 @@ hci_uart_unregister_device
|
||||
hci_unregister_cb
|
||||
hci_unregister_dev
|
||||
hidp_hid_driver
|
||||
ieee80211_alloc_hw_nm
|
||||
ieee80211_amsdu_to_8023s
|
||||
ieee80211_ap_probereq_get
|
||||
ieee80211_ave_rssi
|
||||
ieee80211_beacon_cntdwn_is_complete
|
||||
ieee80211_beacon_get_template
|
||||
ieee80211_beacon_get_tim
|
||||
ieee80211_beacon_loss
|
||||
ieee80211_beacon_set_cntdwn
|
||||
ieee80211_beacon_update_cntdwn
|
||||
ieee80211_bss_get_elem
|
||||
ieee80211_calc_rx_airtime
|
||||
ieee80211_calc_tx_airtime
|
||||
ieee80211_chandef_to_operating_class
|
||||
ieee80211_channel_switch_disconnect
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_chswitch_done
|
||||
ieee80211_color_change_finish
|
||||
ieee80211_connection_loss
|
||||
ieee80211_cqm_beacon_loss_notify
|
||||
ieee80211_cqm_rssi_notify
|
||||
ieee80211_csa_finish
|
||||
ieee80211_ctstoself_duration
|
||||
ieee80211_ctstoself_get
|
||||
ieee80211_data_to_8023_exthdr
|
||||
ieee80211_disable_rssi_reports
|
||||
ieee80211_disconnect
|
||||
ieee80211_enable_rssi_reports
|
||||
ieee80211_find_sta
|
||||
ieee80211_find_sta_by_ifaddr
|
||||
ieee80211_find_sta_by_link_addrs
|
||||
ieee80211_free_hw
|
||||
ieee80211_free_txskb
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_generic_frame_duration
|
||||
ieee80211_get_bssid
|
||||
ieee80211_get_buffered_bc
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_get_fils_discovery_tmpl
|
||||
ieee80211_get_hdrlen_from_skb
|
||||
ieee80211_get_key_rx_seq
|
||||
ieee80211_get_mesh_hdrlen
|
||||
ieee80211_get_num_supported_channels
|
||||
ieee80211_get_response_rate
|
||||
ieee80211_get_tkip_p1k_iv
|
||||
ieee80211_get_tkip_p2k
|
||||
ieee80211_get_tkip_rx_p1k
|
||||
ieee80211_get_tx_rates
|
||||
ieee80211_get_unsol_bcast_probe_resp_tmpl
|
||||
ieee80211_get_vht_max_nss
|
||||
ieee80211_gtk_rekey_add
|
||||
ieee80211_gtk_rekey_notify
|
||||
ieee80211_hdrlen
|
||||
ieee80211_hw_restart_disconnect
|
||||
ieee80211_ie_split_ric
|
||||
ieee80211_iter_chan_contexts_atomic
|
||||
ieee80211_iter_keys
|
||||
ieee80211_iter_keys_rcu
|
||||
ieee80211_iterate_active_interfaces_atomic
|
||||
ieee80211_iterate_active_interfaces_mtx
|
||||
ieee80211_iterate_interfaces
|
||||
ieee80211_iterate_stations
|
||||
ieee80211_iterate_stations_atomic
|
||||
ieee80211_key_mic_failure
|
||||
ieee80211_key_replay
|
||||
ieee80211_manage_rx_ba_offl
|
||||
ieee80211_mandatory_rates
|
||||
ieee80211_mark_rx_ba_filtered_frames
|
||||
ieee80211_nan_func_match
|
||||
ieee80211_nan_func_terminated
|
||||
ieee80211_next_txq
|
||||
ieee80211_nullfunc_get
|
||||
ieee80211_operating_class_to_band
|
||||
ieee80211_parse_p2p_noa
|
||||
ieee80211_probereq_get
|
||||
ieee80211_proberesp_get
|
||||
ieee80211_pspoll_get
|
||||
ieee80211_queue_delayed_work
|
||||
ieee80211_queue_stopped
|
||||
ieee80211_queue_work
|
||||
ieee80211_radar_detected
|
||||
ieee80211_radiotap_iterator_init
|
||||
ieee80211_radiotap_iterator_next
|
||||
ieee80211_rate_control_register
|
||||
ieee80211_rate_control_unregister
|
||||
ieee80211_ready_on_channel
|
||||
ieee80211_register_hw
|
||||
ieee80211_remain_on_channel_expired
|
||||
ieee80211_remove_key
|
||||
ieee80211_report_low_ack
|
||||
ieee80211_report_wowlan_wakeup
|
||||
ieee80211_request_smps
|
||||
ieee80211_reserve_tid
|
||||
ieee80211_restart_hw
|
||||
ieee80211_resume_disconnect
|
||||
ieee80211_rts_duration
|
||||
ieee80211_rts_get
|
||||
ieee80211_rx_ba_timer_expired
|
||||
ieee80211_rx_irqsafe
|
||||
ieee80211_rx_list
|
||||
ieee80211_rx_napi
|
||||
ieee80211_s1g_channel_width
|
||||
ieee80211_scan_completed
|
||||
ieee80211_sched_scan_results
|
||||
ieee80211_sched_scan_stopped
|
||||
ieee80211_send_bar
|
||||
ieee80211_send_eosp_nullfunc
|
||||
ieee80211_set_active_links
|
||||
ieee80211_set_active_links_async
|
||||
ieee80211_set_key_rx_seq
|
||||
ieee80211_sta_block_awake
|
||||
ieee80211_sta_eosp
|
||||
ieee80211_sta_ps_transition
|
||||
ieee80211_sta_pspoll
|
||||
ieee80211_sta_recalc_aggregates
|
||||
ieee80211_sta_register_airtime
|
||||
ieee80211_sta_set_buffered
|
||||
ieee80211_sta_uapsd_trigger
|
||||
ieee80211_start_tx_ba_cb_irqsafe
|
||||
ieee80211_start_tx_ba_session
|
||||
ieee80211_stop_queue
|
||||
ieee80211_stop_queues
|
||||
ieee80211_stop_rx_ba_session
|
||||
ieee80211_stop_tx_ba_cb_irqsafe
|
||||
ieee80211_stop_tx_ba_session
|
||||
ieee80211_tdls_oper_request
|
||||
ieee80211_tkip_add_iv
|
||||
ieee80211_tx_dequeue
|
||||
ieee80211_tx_prepare_skb
|
||||
ieee80211_tx_rate_update
|
||||
ieee80211_tx_status
|
||||
ieee80211_tx_status_8023
|
||||
ieee80211_tx_status_ext
|
||||
ieee80211_tx_status_irqsafe
|
||||
ieee80211_txq_airtime_check
|
||||
ieee80211_txq_get_depth
|
||||
ieee80211_txq_may_transmit
|
||||
ieee80211_txq_schedule_start
|
||||
ieee80211_unregister_hw
|
||||
ieee80211_unreserve_tid
|
||||
ieee80211_update_mu_groups
|
||||
ieee80211_update_p2p_noa
|
||||
ieee80211_vif_to_wdev
|
||||
ieee80211_wake_queue
|
||||
ieee80211_wake_queues
|
||||
ieee802154_alloc_hw
|
||||
ieee802154_configure_durations
|
||||
ieee802154_free_hw
|
||||
@@ -383,7 +135,6 @@ ieee802154_wake_queue
|
||||
ieee802154_xmit_complete
|
||||
ieee802154_xmit_error
|
||||
ieee802154_xmit_hw_error
|
||||
ieeee80211_obss_color_collision_notify
|
||||
l2cap_add_psm
|
||||
l2cap_chan_close
|
||||
l2cap_chan_connect
|
||||
@@ -481,16 +232,8 @@ qca_send_pre_shutdown_cmd
|
||||
qca_set_bdaddr
|
||||
qca_set_bdaddr_rome
|
||||
qca_uart_setup
|
||||
rate_control_set_rates
|
||||
reg_initiator_name
|
||||
reg_query_regdb_wmm
|
||||
register_candev
|
||||
register_pppox_proto
|
||||
regulatory_hint
|
||||
regulatory_pre_cac_allowed
|
||||
regulatory_set_wiphy_regd
|
||||
regulatory_set_wiphy_regd_sync
|
||||
rfc1042_header
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
@@ -586,17 +329,6 @@ usbnet_update_max_qlen
|
||||
usbnet_write_cmd
|
||||
usbnet_write_cmd_async
|
||||
usbnet_write_cmd_nopm
|
||||
wdev_chandef
|
||||
wdev_to_ieee80211_vif
|
||||
wiphy_apply_custom_regulatory
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_read_of_freq_limits
|
||||
wiphy_register
|
||||
wiphy_rfkill_set_hw_state_reason
|
||||
wiphy_rfkill_start_polling
|
||||
wiphy_to_ieee80211_hw
|
||||
wiphy_unregister
|
||||
wpan_phy_find
|
||||
wpan_phy_for_each
|
||||
wpan_phy_free
|
||||
|
||||
@@ -27,6 +27,7 @@ drivers/net/usb/usbnet.ko
|
||||
drivers/usb/class/cdc-acm.ko
|
||||
drivers/usb/serial/ftdi_sio.ko
|
||||
drivers/usb/serial/usbserial.ko
|
||||
kernel/kheaders.ko
|
||||
lib/crypto/libarc4.ko
|
||||
mm/zsmalloc.ko
|
||||
net/6lowpan/6lowpan.ko
|
||||
@@ -50,11 +51,9 @@ net/ieee802154/ieee802154.ko
|
||||
net/ieee802154/ieee802154_socket.ko
|
||||
net/l2tp/l2tp_core.ko
|
||||
net/l2tp/l2tp_ppp.ko
|
||||
net/mac80211/mac80211.ko
|
||||
net/mac802154/mac802154.ko
|
||||
net/nfc/nfc.ko
|
||||
net/rfkill/rfkill.ko
|
||||
net/tipc/diag.ko
|
||||
net/tipc/tipc.ko
|
||||
net/wireless/cfg80211.ko
|
||||
|
||||
|
||||
@@ -48,11 +48,9 @@ net/ieee802154/ieee802154.ko
|
||||
net/ieee802154/ieee802154_socket.ko
|
||||
net/l2tp/l2tp_core.ko
|
||||
net/l2tp/l2tp_ppp.ko
|
||||
net/mac80211/mac80211.ko
|
||||
net/mac802154/mac802154.ko
|
||||
net/nfc/nfc.ko
|
||||
net/rfkill/rfkill.ko
|
||||
net/tipc/diag.ko
|
||||
net/tipc/tipc.ko
|
||||
net/wireless/cfg80211.ko
|
||||
|
||||
|
||||
@@ -651,6 +651,13 @@ config SHADOW_CALL_STACK
|
||||
reading and writing arbitrary memory may be able to locate them
|
||||
and hijack control flow by modifying the stacks.
|
||||
|
||||
config DYNAMIC_SCS
|
||||
bool
|
||||
help
|
||||
Set by the arch code if it relies on code patching to insert the
|
||||
shadow call stack push and pop instructions rather than on the
|
||||
compiler.
|
||||
|
||||
config LTO
|
||||
bool
|
||||
help
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
include ../arm64/OWNERS
|
||||
@@ -318,7 +318,7 @@ static int __init gate_vma_init(void)
|
||||
gate_vma.vm_page_prot = PAGE_READONLY_EXEC;
|
||||
gate_vma.vm_start = 0xffff0000;
|
||||
gate_vma.vm_end = 0xffff0000 + PAGE_SIZE;
|
||||
gate_vma.vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC;
|
||||
vm_flags_init(&gate_vma, VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC);
|
||||
return 0;
|
||||
}
|
||||
arch_initcall(gate_vma_init);
|
||||
|
||||
@@ -96,6 +96,7 @@ config ARM64
|
||||
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
|
||||
select ARCH_SUPPORTS_NUMA_BALANCING
|
||||
select ARCH_SUPPORTS_PAGE_TABLE_CHECK
|
||||
select ARCH_SUPPORTS_PER_VMA_LOCK
|
||||
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT
|
||||
select ARCH_WANT_DEFAULT_BPF_JIT
|
||||
select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
|
||||
@@ -373,6 +374,9 @@ config KASAN_SHADOW_OFFSET
|
||||
default 0xeffffff800000000 if ARM64_VA_BITS_36 && KASAN_SW_TAGS
|
||||
default 0xffffffffffffffff
|
||||
|
||||
config UNWIND_TABLES
|
||||
bool
|
||||
|
||||
source "arch/arm64/Kconfig.platforms"
|
||||
|
||||
menu "Kernel Features"
|
||||
@@ -2176,6 +2180,15 @@ config ARCH_NR_GPIO
|
||||
|
||||
If unsure, leave the default value.
|
||||
|
||||
config UNWIND_PATCH_PAC_INTO_SCS
|
||||
bool "Enable shadow call stack dynamically using code patching"
|
||||
# needs Clang with https://reviews.llvm.org/D111780 incorporated
|
||||
depends on CC_IS_CLANG && CLANG_VERSION >= 150000
|
||||
depends on ARM64_PTR_AUTH_KERNEL && CC_HAS_BRANCH_PROT_PAC_RET
|
||||
depends on SHADOW_CALL_STACK
|
||||
select UNWIND_TABLES
|
||||
select DYNAMIC_SCS
|
||||
|
||||
endmenu # "Kernel Features"
|
||||
|
||||
menu "Boot options"
|
||||
|
||||
@@ -45,8 +45,13 @@ KBUILD_CFLAGS += $(call cc-option,-mabi=lp64)
|
||||
KBUILD_AFLAGS += $(call cc-option,-mabi=lp64)
|
||||
|
||||
# Avoid generating .eh_frame* sections.
|
||||
ifneq ($(CONFIG_UNWIND_TABLES),y)
|
||||
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
|
||||
KBUILD_AFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
|
||||
else
|
||||
KBUILD_CFLAGS += -fasynchronous-unwind-tables
|
||||
KBUILD_AFLAGS += -fasynchronous-unwind-tables
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_STACKPROTECTOR_PER_TASK),y)
|
||||
prepare: stack_protector_prepare
|
||||
@@ -72,10 +77,16 @@ branch-prot-flags-$(CONFIG_CC_HAS_SIGN_RETURN_ADDRESS) := -msign-return-address=
|
||||
# We enable additional protection for leaf functions as there is some
|
||||
# narrow potential for ROP protection benefits and no substantial
|
||||
# performance impact has been observed.
|
||||
PACRET-y := pac-ret+leaf
|
||||
|
||||
# Using a shadow call stack in leaf functions is too costly, so avoid PAC there
|
||||
# as well when we may be patching PAC into SCS
|
||||
PACRET-$(CONFIG_UNWIND_PATCH_PAC_INTO_SCS) := pac-ret
|
||||
|
||||
ifeq ($(CONFIG_ARM64_BTI_KERNEL),y)
|
||||
branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI) := -mbranch-protection=pac-ret+leaf+bti
|
||||
branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI) := -mbranch-protection=$(PACRET-y)+bti
|
||||
else
|
||||
branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET) := -mbranch-protection=pac-ret+leaf
|
||||
branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET) := -mbranch-protection=$(PACRET-y)
|
||||
endif
|
||||
# -march=armv8.3-a enables the non-nops instructions for PAC, to avoid the
|
||||
# compiler to generate them and consequently to break the single image contract
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
per-file crypto/**=file:/crypto/OWNERS
|
||||
per-file {include,kernel,kvm,lib}/**=mzyngier@google.com,willdeacon@google.com
|
||||
per-file mm/**=file:/mm/OWNERS
|
||||
per-file net/**=file:/net/OWNERS
|
||||
@@ -1571,10 +1571,9 @@
|
||||
|
||||
dmc: bus@38000 {
|
||||
compatible = "simple-bus";
|
||||
reg = <0x0 0x38000 0x0 0x400>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0x0 0x0 0x0 0x38000 0x0 0x400>;
|
||||
ranges = <0x0 0x0 0x0 0x38000 0x0 0x2000>;
|
||||
|
||||
canvas: video-lut@48 {
|
||||
compatible = "amlogic,canvas";
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
rohm,reset-snvs-powered;
|
||||
|
||||
#clock-cells = <0>;
|
||||
clocks = <&osc_32k 0>;
|
||||
clocks = <&osc_32k>;
|
||||
clock-output-names = "clk-32k-out";
|
||||
|
||||
regulators {
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio2 20 GPIO_ACTIVE_HIGH>; /* PMIC_EN_ETH */
|
||||
off-on-delay = <500000>;
|
||||
off-on-delay-us = <500000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_reg_eth>;
|
||||
regulator-always-on;
|
||||
@@ -135,7 +135,7 @@
|
||||
enable-active-high;
|
||||
/* Verdin SD_1_PWR_EN (SODIMM 76) */
|
||||
gpio = <&gpio3 5 GPIO_ACTIVE_HIGH>;
|
||||
off-on-delay = <100000>;
|
||||
off-on-delay-us = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc2_pwr_en>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio_expander_21 4 GPIO_ACTIVE_HIGH>; /* ETH_PWR_EN */
|
||||
off-on-delay = <500000>;
|
||||
off-on-delay-us = <500000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-name = "+V3.3_ETH";
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
compatible = "regulator-fixed";
|
||||
enable-active-high;
|
||||
gpio = <&gpio2 20 GPIO_ACTIVE_HIGH>; /* PMIC_EN_ETH */
|
||||
off-on-delay = <500000>;
|
||||
off-on-delay-us = <500000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_reg_eth>;
|
||||
regulator-always-on;
|
||||
@@ -127,7 +127,7 @@
|
||||
enable-active-high;
|
||||
/* Verdin SD_1_PWR_EN (SODIMM 76) */
|
||||
gpio = <&gpio4 22 GPIO_ACTIVE_HIGH>;
|
||||
off-on-delay = <100000>;
|
||||
off-on-delay-us = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc2_pwr_en>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
@@ -59,11 +59,11 @@
|
||||
perst-gpios = <&tlmm 58 0x1>;
|
||||
};
|
||||
|
||||
&pcie_phy0 {
|
||||
&pcie_qmp0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_phy1 {
|
||||
&pcie_qmp1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
};
|
||||
|
||||
&blsp1_spi1 {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
#address-cells = <1>;
|
||||
@@ -34,33 +34,33 @@
|
||||
};
|
||||
|
||||
&blsp1_uart5 {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
perst-gpios = <&tlmm 58 0x1>;
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
perst-gpios = <&tlmm 61 0x1>;
|
||||
};
|
||||
|
||||
&pcie_phy0 {
|
||||
status = "ok";
|
||||
&pcie_qmp0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_phy1 {
|
||||
status = "ok";
|
||||
&pcie_qmp1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&qpic_bam {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&qpic_nand {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
|
||||
nand@0 {
|
||||
reg = <0>;
|
||||
|
||||
@@ -15,8 +15,9 @@
|
||||
#size-cells = <0>;
|
||||
|
||||
pmk8280_pon: pon@1300 {
|
||||
compatible = "qcom,pm8998-pon";
|
||||
reg = <0x1300>;
|
||||
compatible = "qcom,pmk8350-pon";
|
||||
reg = <0x1300>, <0x800>;
|
||||
reg-names = "hlos", "pbs";
|
||||
|
||||
pmk8280_pon_pwrkey: pwrkey {
|
||||
compatible = "qcom,pmk8350-pwrkey";
|
||||
|
||||
@@ -540,7 +540,7 @@
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>;
|
||||
sd-uhs-sdr104;
|
||||
sd-uhs-sdr50;
|
||||
vmmc-supply = <&vcc3v3_sys>;
|
||||
vqmmc-supply = <&vcc_1v8>;
|
||||
status = "okay";
|
||||
|
||||
@@ -308,3 +308,9 @@ CONFIG_QCOM_SPM=m
|
||||
CONFIG_PINCTRL_SM8450=m
|
||||
CONFIG_SM_GCC_8450=m
|
||||
CONFIG_INTERCONNECT_QCOM_SM8450=m
|
||||
# CFG80211 & MAC80211 as modules
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
CONFIG_MAC80211=m
|
||||
|
||||
@@ -17,7 +17,7 @@ CONFIG_RCU_BOOST=y
|
||||
CONFIG_RCU_NOCB_CPU=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_IKHEADERS=y
|
||||
CONFIG_IKHEADERS=m
|
||||
CONFIG_UCLAMP_TASK=y
|
||||
CONFIG_UCLAMP_BUCKETS_COUNT=20
|
||||
CONFIG_CGROUPS=y
|
||||
@@ -55,11 +55,14 @@ CONFIG_ARMV8_DEPRECATED=y
|
||||
CONFIG_SWP_EMULATION=y
|
||||
CONFIG_CP15_BARRIER_EMULATION=y
|
||||
CONFIG_SETEND_EMULATION=y
|
||||
# CONFIG_ARM64_BTI_KERNEL is not set
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
# CONFIG_RANDOMIZE_MODULE_REGION_FULL is not set
|
||||
CONFIG_UNWIND_PATCH_PAC_INTO_SCS=y
|
||||
CONFIG_CMDLINE="console=ttynull stack_depot_disable=on cgroup_disable=pressure kasan.page_alloc.sample=10 kasan.stacktrace=off kvm-arm.mode=protected bootconfig ioremap_guard"
|
||||
CONFIG_CMDLINE_EXTEND=y
|
||||
# CONFIG_DMI is not set
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_PM_WAKELOCKS=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
@@ -91,6 +94,7 @@ CONFIG_MODULE_SIG_PROTECT=y
|
||||
CONFIG_MODPROBE_PATH="/system/bin/modprobe"
|
||||
CONFIG_BLK_DEV_ZONED=y
|
||||
CONFIG_BLK_DEV_THROTTLING=y
|
||||
CONFIG_BLK_CGROUP_IOCOST=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
@@ -179,6 +183,7 @@ CONFIG_NETFILTER_XT_TARGET_SECMARK=y
|
||||
CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
|
||||
CONFIG_NETFILTER_XT_MATCH_BPF=y
|
||||
CONFIG_NETFILTER_XT_MATCH_COMMENT=y
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
|
||||
@@ -276,11 +281,6 @@ CONFIG_BT_HCIUART=m
|
||||
CONFIG_BT_HCIUART_LL=y
|
||||
CONFIG_BT_HCIUART_BCM=y
|
||||
CONFIG_BT_HCIUART_QCA=y
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
CONFIG_MAC80211=m
|
||||
CONFIG_RFKILL=m
|
||||
CONFIG_NFC=m
|
||||
CONFIG_PCI=y
|
||||
@@ -309,6 +309,7 @@ CONFIG_BLK_DEV_LOOP_MIN_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_BLK_DEV_UBLK=y
|
||||
CONFIG_BLK_DEV_NVME=y
|
||||
CONFIG_SRAM=y
|
||||
CONFIG_UID_SYS_STATS=y
|
||||
CONFIG_SCSI=y
|
||||
@@ -329,6 +330,7 @@ CONFIG_IFB=y
|
||||
CONFIG_MACSEC=y
|
||||
CONFIG_TUN=y
|
||||
CONFIG_VETH=y
|
||||
CONFIG_LED_TRIGGER_PHY=y
|
||||
CONFIG_AX88796B_PHY=y
|
||||
CONFIG_CAN_VCAN=m
|
||||
CONFIG_CAN_SLCAN=m
|
||||
@@ -543,6 +545,7 @@ CONFIG_DMABUF_HEAPS_PAGE_POOL=y
|
||||
CONFIG_UIO=y
|
||||
CONFIG_VIRT_DRIVERS=y
|
||||
CONFIG_GUNYAH=y
|
||||
# CONFIG_GUNYAH_QCOM_PLATFORM is not set
|
||||
CONFIG_GUNYAH_VCPU=y
|
||||
CONFIG_GUNYAH_IRQFD=y
|
||||
CONFIG_GUNYAH_IOEVENTFD=y
|
||||
@@ -692,7 +695,7 @@ CONFIG_DMA_CMA=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_PRINTK_CALLER=y
|
||||
CONFIG_DYNAMIC_DEBUG_CORE=y
|
||||
CONFIG_DEBUG_INFO_DWARF5=y
|
||||
CONFIG_DEBUG_INFO_DWARF4=y
|
||||
CONFIG_DEBUG_INFO_BTF=y
|
||||
CONFIG_MODULE_ALLOW_BTF_MISMATCH=y
|
||||
CONFIG_HEADERS_INSTALL=y
|
||||
@@ -705,6 +708,8 @@ CONFIG_UBSAN_LOCAL_BOUNDS=y
|
||||
# CONFIG_UBSAN_BOOL is not set
|
||||
# CONFIG_UBSAN_ENUM is not set
|
||||
CONFIG_PAGE_OWNER=y
|
||||
CONFIG_PAGE_PINNER=y
|
||||
CONFIG_PER_VMA_LOCK_STATS=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
CONFIG_KASAN=y
|
||||
|
||||
@@ -8,31 +8,25 @@
|
||||
#include <linux/gunyah.h>
|
||||
#include <linux/uuid.h>
|
||||
|
||||
static const uuid_t gh_known_uuids[] = {
|
||||
/* Qualcomm's version of Gunyah {19bd54bd-0b37-571b-946f-609b54539de6} */
|
||||
UUID_INIT(0x19bd54bd, 0x0b37, 0x571b, 0x94, 0x6f, 0x60, 0x9b, 0x54, 0x53, 0x9d, 0xe6),
|
||||
/* Standard version of Gunyah {c1d58fcd-a453-5fdb-9265-ce36673d5f14} */
|
||||
UUID_INIT(0xc1d58fcd, 0xa453, 0x5fdb, 0x92, 0x65, 0xce, 0x36, 0x67, 0x3d, 0x5f, 0x14),
|
||||
};
|
||||
/* {c1d58fcd-a453-5fdb-9265-ce36673d5f14} */
|
||||
static const uuid_t GUNYAH_UUID =
|
||||
UUID_INIT(0xc1d58fcd, 0xa453, 0x5fdb, 0x92, 0x65, 0xce, 0x36, 0x67, 0x3d, 0x5f, 0x14);
|
||||
|
||||
bool arch_is_gh_guest(void)
|
||||
{
|
||||
struct arm_smccc_res res;
|
||||
uuid_t uuid;
|
||||
int i;
|
||||
u32 *up;
|
||||
|
||||
arm_smccc_1_1_hvc(ARM_SMCCC_VENDOR_HYP_CALL_UID_FUNC_ID, &res);
|
||||
|
||||
((u32 *)&uuid.b[0])[0] = lower_32_bits(res.a0);
|
||||
((u32 *)&uuid.b[0])[1] = lower_32_bits(res.a1);
|
||||
((u32 *)&uuid.b[0])[2] = lower_32_bits(res.a2);
|
||||
((u32 *)&uuid.b[0])[3] = lower_32_bits(res.a3);
|
||||
up = (u32 *)&uuid.b[0];
|
||||
up[0] = lower_32_bits(res.a0);
|
||||
up[1] = lower_32_bits(res.a1);
|
||||
up[2] = lower_32_bits(res.a2);
|
||||
up[3] = lower_32_bits(res.a3);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(gh_known_uuids); i++)
|
||||
if (uuid_equal(&uuid, &gh_known_uuids[i]))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
return uuid_equal(&uuid, &GUNYAH_UUID);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(arch_is_gh_guest);
|
||||
|
||||
@@ -71,7 +65,7 @@ enum gh_error gh_hypercall_bell_send(u64 capid, u64 new_flags, u64 *old_flags)
|
||||
|
||||
arm_smccc_1_1_hvc(GH_HYPERCALL_BELL_SEND, capid, new_flags, 0, &res);
|
||||
|
||||
if (res.a0 == GH_ERROR_OK)
|
||||
if (res.a0 == GH_ERROR_OK && old_flags)
|
||||
*old_flags = res.a1;
|
||||
|
||||
return res.a0;
|
||||
@@ -88,7 +82,7 @@ enum gh_error gh_hypercall_bell_set_mask(u64 capid, u64 enable_mask, u64 ack_mas
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(gh_hypercall_bell_set_mask);
|
||||
|
||||
enum gh_error gh_hypercall_msgq_send(u64 capid, size_t size, void *buff, int tx_flags, bool *ready)
|
||||
enum gh_error gh_hypercall_msgq_send(u64 capid, size_t size, void *buff, u64 tx_flags, bool *ready)
|
||||
{
|
||||
struct arm_smccc_res res;
|
||||
|
||||
@@ -134,7 +128,7 @@ enum gh_error gh_hypercall_vcpu_run(u64 capid, u64 *resume_data,
|
||||
arm_smccc_1_2_hvc(&args, &res);
|
||||
|
||||
if (res.a0 == GH_ERROR_OK) {
|
||||
resp->state = res.a1;
|
||||
resp->sized_state = res.a1;
|
||||
resp->state_data[0] = res.a2;
|
||||
resp->state_data[1] = res.a3;
|
||||
resp->state_data[2] = res.a4;
|
||||
|
||||
@@ -921,4 +921,19 @@ alternative_cb ARM64_ALWAYS_SYSTEM, spectre_bhb_patch_clearbhb
|
||||
alternative_cb_end
|
||||
#endif /* CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY */
|
||||
.endm
|
||||
|
||||
#if defined(__KVM_NVHE_HYPERVISOR__)
|
||||
/*
|
||||
* pKVM uses the module_ops struct to expose services to modules but
|
||||
* doesn't allow fine-grained definition of the license for each export,
|
||||
* and doesn't have a way to check the license of the loaded module.
|
||||
* Given that said module may be proprietary, let's seek GPL compliance
|
||||
* by preventing the accidental export of GPL symbols to hyp modules via
|
||||
* pKVM's module_ops struct.
|
||||
*/
|
||||
#ifdef EXPORT_SYMBOL_GPL
|
||||
#undef EXPORT_SYMBOL_GPL
|
||||
#endif
|
||||
#define EXPORT_SYMBOL_GPL(sym) ASM_BUILD_BUG()
|
||||
#endif
|
||||
#endif /* __ASM_ASSEMBLER_H */
|
||||
|
||||
@@ -8,16 +8,11 @@
|
||||
#define __ASM_EXCEPTION_H
|
||||
|
||||
#include <asm/esr.h>
|
||||
#include <asm/kprobes.h>
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
#define __exception_irq_entry __irq_entry
|
||||
#else
|
||||
#define __exception_irq_entry __kprobes
|
||||
#endif
|
||||
|
||||
static inline unsigned long disr_to_esr(u64 disr)
|
||||
{
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
#ifndef __ASM_GUNYAH_H_
|
||||
#define __ASM_GUNYAH_H_
|
||||
#ifndef _ASM_GUNYAH_H
|
||||
#define _ASM_GUNYAH_H
|
||||
|
||||
#include <linux/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
static inline int arch_gh_fill_irq_fwspec_params(u32 virq, struct irq_fwspec *fwspec)
|
||||
{
|
||||
if (virq < 32 || virq > 1019)
|
||||
/* Assume that Gunyah gave us an SPI; defensively check it */
|
||||
if (WARN_ON(virq < 32 || virq > 1019))
|
||||
return -EINVAL;
|
||||
|
||||
fwspec->param_count = 3;
|
||||
|
||||
@@ -19,4 +19,14 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KFENCE
|
||||
extern bool kfence_early_init;
|
||||
static inline bool arm64_kfence_can_set_direct_map(void)
|
||||
{
|
||||
return !kfence_early_init;
|
||||
}
|
||||
#else /* CONFIG_KFENCE */
|
||||
static inline bool arm64_kfence_can_set_direct_map(void) { return false; }
|
||||
#endif /* CONFIG_KFENCE */
|
||||
|
||||
#endif /* __ASM_KFENCE_H */
|
||||
|
||||
@@ -63,17 +63,11 @@ enum __kvm_host_smccc_func {
|
||||
__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa,
|
||||
__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid,
|
||||
__KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context,
|
||||
|
||||
/*
|
||||
* __pkvm_alloc_module_va may temporarily serve as the privileged hcall
|
||||
* limit when module loading is enabled, see early_pkvm_enable_modules().
|
||||
*/
|
||||
__KVM_HOST_SMCCC_FUNC___pkvm_alloc_module_va,
|
||||
__KVM_HOST_SMCCC_FUNC___pkvm_map_module_page,
|
||||
__KVM_HOST_SMCCC_FUNC___pkvm_unmap_module_page,
|
||||
__KVM_HOST_SMCCC_FUNC___pkvm_init_module,
|
||||
__KVM_HOST_SMCCC_FUNC___pkvm_register_hcall,
|
||||
__KVM_HOST_SMCCC_FUNC___pkvm_close_module_registration,
|
||||
__KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize,
|
||||
|
||||
/* Hypercalls available after pKVM finalisation */
|
||||
@@ -159,6 +153,19 @@ extern void *__nvhe_undefined_symbol;
|
||||
#define this_cpu_ptr_hyp_sym(sym) (&__nvhe_undefined_symbol)
|
||||
#define per_cpu_ptr_hyp_sym(sym, cpu) (&__nvhe_undefined_symbol)
|
||||
|
||||
/*
|
||||
* pKVM uses the module_ops struct to expose services to modules but
|
||||
* doesn't allow fine-grained definition of the license for each export,
|
||||
* and doesn't have a way to check the license of the loaded module.
|
||||
* Given that said module may be proprietary, let's seek GPL compliance
|
||||
* by preventing the accidental export of GPL symbols to hyp modules via
|
||||
* pKVM's module_ops struct.
|
||||
*/
|
||||
#ifdef EXPORT_SYMBOL_GPL
|
||||
#undef EXPORT_SYMBOL_GPL
|
||||
#endif
|
||||
#define EXPORT_SYMBOL_GPL(sym) BUILD_BUG()
|
||||
|
||||
#elif defined(__KVM_VHE_HYPERVISOR__)
|
||||
|
||||
#define CHOOSE_VHE_SYM(sym) sym
|
||||
@@ -208,6 +215,7 @@ struct kvm_nvhe_init_params {
|
||||
unsigned long stack_pa;
|
||||
phys_addr_t pgd_pa;
|
||||
unsigned long hcr_el2;
|
||||
unsigned long hfgwtr_el2;
|
||||
unsigned long vttbr;
|
||||
unsigned long vtcr;
|
||||
};
|
||||
|
||||
@@ -406,6 +406,8 @@ int pkvm_iommu_resume(struct device *dev);
|
||||
*/
|
||||
int pkvm_iommu_finalize(int err);
|
||||
|
||||
bool pkvm_iommu_finalized(void);
|
||||
|
||||
struct vcpu_reset_state {
|
||||
unsigned long pc;
|
||||
unsigned long r0;
|
||||
|
||||
@@ -72,7 +72,10 @@ typedef u64 kvm_pte_t;
|
||||
|
||||
#define KVM_PTE_LEAF_ATTR_HI_S1_XN BIT(54)
|
||||
|
||||
#define KVM_PTE_LEAF_ATTR_HI_S2_XN BIT(54)
|
||||
#define KVM_PTE_LEAF_ATTR_HI_S2_XN_PXN 1
|
||||
#define KVM_PTE_LEAF_ATTR_HI_S2_XN_UXN 3
|
||||
#define KVM_PTE_LEAF_ATTR_HI_S2_XN_XN 2
|
||||
#define KVM_PTE_LEAF_ATTR_HI_S2_XN GENMASK(54, 53)
|
||||
|
||||
static inline bool kvm_pte_valid(kvm_pte_t pte)
|
||||
{
|
||||
@@ -167,6 +170,11 @@ struct kvm_pgtable_mm_ops {
|
||||
void (*icache_inval_pou)(void *addr, size_t size);
|
||||
};
|
||||
|
||||
static inline kvm_pte_t *kvm_pte_follow(kvm_pte_t pte, struct kvm_pgtable_mm_ops *mm_ops)
|
||||
{
|
||||
return mm_ops->phys_to_virt(kvm_pte_to_phys(pte));
|
||||
}
|
||||
|
||||
/**
|
||||
* enum kvm_pgtable_stage2_flags - Stage-2 page-table flags.
|
||||
* @KVM_PGTABLE_S2_NOFWB: Don't enforce Normal-WB even if the CPUs have
|
||||
@@ -184,7 +192,9 @@ enum kvm_pgtable_stage2_flags {
|
||||
* @KVM_PGTABLE_PROT_W: Write permission.
|
||||
* @KVM_PGTABLE_PROT_R: Read permission.
|
||||
* @KVM_PGTABLE_PROT_DEVICE: Device attributes.
|
||||
* @KVM_PGTABLE_PROT_NC: Normal non-cacheable attributes.
|
||||
* @KVM_PGTABLE_PROT_NC: Normal non-cacheable attributes.
|
||||
* @KVM_PGTABLE_PROT_PXN: Privileged execute-never.
|
||||
* @KVM_PGTABLE_PROT_UXN: Unprivileged execute-never.
|
||||
* @KVM_PGTABLE_PROT_SW0: Software bit 0.
|
||||
* @KVM_PGTABLE_PROT_SW1: Software bit 1.
|
||||
* @KVM_PGTABLE_PROT_SW2: Software bit 2.
|
||||
@@ -197,6 +207,8 @@ enum kvm_pgtable_prot {
|
||||
|
||||
KVM_PGTABLE_PROT_DEVICE = BIT(3),
|
||||
KVM_PGTABLE_PROT_NC = BIT(4),
|
||||
KVM_PGTABLE_PROT_PXN = BIT(5),
|
||||
KVM_PGTABLE_PROT_UXN = BIT(6),
|
||||
|
||||
KVM_PGTABLE_PROT_SW0 = BIT(55),
|
||||
KVM_PGTABLE_PROT_SW1 = BIT(56),
|
||||
@@ -490,6 +502,21 @@ int kvm_pgtable_stage2_annotate(struct kvm_pgtable *pgt, u64 addr, u64 size,
|
||||
*/
|
||||
int kvm_pgtable_stage2_unmap(struct kvm_pgtable *pgt, u64 addr, u64 size);
|
||||
|
||||
/**
|
||||
* kvm_pgtable_stage2_reclaim_leaves() - Attempt to reclaim leaf page-table
|
||||
* pages by coalescing table entries into
|
||||
* block mappings.
|
||||
* @pgt: Page-table structure initialised by kvm_pgtable_stage2_init*().
|
||||
* @addr: Intermediate physical address from which to reclaim leaves.
|
||||
* @size: Size of the range.
|
||||
*
|
||||
* The offset of @addr within a page is ignored and @size is rounded-up to
|
||||
* the next page boundary.
|
||||
*
|
||||
* Return: 0 on success, negative error code on failure.
|
||||
*/
|
||||
int kvm_pgtable_stage2_reclaim_leaves(struct kvm_pgtable *pgt, u64 addr, u64 size);
|
||||
|
||||
/**
|
||||
* kvm_pgtable_stage2_wrprotect() - Write-protect guest stage-2 address range
|
||||
* without TLB invalidation.
|
||||
|
||||
@@ -30,6 +30,8 @@ struct pkvm_module_ops {
|
||||
void *(*linear_map_early)(phys_addr_t phys, size_t size, enum kvm_pgtable_prot prot);
|
||||
void (*linear_unmap_early)(void *addr, size_t size);
|
||||
void (*flush_dcache_to_poc)(void *addr, size_t size);
|
||||
void (*update_hcr_el2)(unsigned long set_mask, unsigned long clear_mask);
|
||||
void (*update_hfgwtr_el2)(unsigned long set_mask, unsigned long clear_mask);
|
||||
int (*register_host_perm_fault_handler)(int (*cb)(struct kvm_cpu_context *ctxt, u64 esr, u64 addr));
|
||||
int (*host_stage2_mod_prot)(u64 pfn, enum kvm_pgtable_prot prot);
|
||||
int (*host_stage2_get_leaf)(phys_addr_t phys, kvm_pte_t *ptep, u32 *level);
|
||||
|
||||
@@ -40,4 +40,12 @@ SECTIONS {
|
||||
}
|
||||
.hyp.reloc : ALIGN(4) { *(.hyp.reloc) }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_UNWIND_TABLES
|
||||
/*
|
||||
* Currently, we only use unwind info at module load time, so we can
|
||||
* put it into the .init allocation.
|
||||
*/
|
||||
.init.eh_frame : { *(.eh_frame) }
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ unsigned long mte_copy_tags_to_user(void __user *to, void *from,
|
||||
unsigned long n);
|
||||
int mte_save_tags(struct page *page);
|
||||
void mte_save_page_tags(const void *page_addr, void *tag_storage);
|
||||
bool mte_restore_tags(swp_entry_t entry, struct page *page);
|
||||
void mte_restore_tags(swp_entry_t entry, struct page *page);
|
||||
void mte_restore_page_tags(void *page_addr, const void *tag_storage);
|
||||
void mte_invalidate_tags(int type, pgoff_t offset);
|
||||
void mte_invalidate_tags_area(int type);
|
||||
@@ -61,7 +61,7 @@ static inline bool page_mte_tagged(struct page *page)
|
||||
}
|
||||
|
||||
void mte_zero_clear_page_tags(void *addr);
|
||||
void mte_sync_tags(pte_t old_pte, pte_t pte);
|
||||
void mte_sync_tags(pte_t pte);
|
||||
void mte_copy_page_tags(void *kto, const void *kfrom);
|
||||
void mte_thread_init_user(void);
|
||||
void mte_thread_switch(struct task_struct *next);
|
||||
@@ -89,7 +89,7 @@ static inline bool page_mte_tagged(struct page *page)
|
||||
static inline void mte_zero_clear_page_tags(void *addr)
|
||||
{
|
||||
}
|
||||
static inline void mte_sync_tags(pte_t old_pte, pte_t pte)
|
||||
static inline void mte_sync_tags(pte_t pte)
|
||||
{
|
||||
}
|
||||
static inline void mte_copy_page_tags(void *kto, const void *kfrom)
|
||||
|
||||
@@ -335,18 +335,8 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
|
||||
* don't expose tags (instruction fetches don't check tags).
|
||||
*/
|
||||
if (system_supports_mte() && pte_access_permitted(pte, false) &&
|
||||
!pte_special(pte)) {
|
||||
pte_t old_pte = READ_ONCE(*ptep);
|
||||
/*
|
||||
* We only need to synchronise if the new PTE has tags enabled
|
||||
* or if swapping in (in which case another mapping may have
|
||||
* set tags in the past even if this PTE isn't tagged).
|
||||
* (!pte_none() && !pte_present()) is an open coded version of
|
||||
* is_swap_pte()
|
||||
*/
|
||||
if (pte_tagged(pte) || (!pte_none(old_pte) && !pte_present(old_pte)))
|
||||
mte_sync_tags(old_pte, pte);
|
||||
}
|
||||
!pte_special(pte) && pte_tagged(pte))
|
||||
mte_sync_tags(pte);
|
||||
|
||||
__check_racy_pte_update(mm, ptep, pte);
|
||||
|
||||
@@ -1066,8 +1056,8 @@ static inline void arch_swap_invalidate_area(int type)
|
||||
#define __HAVE_ARCH_SWAP_RESTORE
|
||||
static inline void arch_swap_restore(swp_entry_t entry, struct folio *folio)
|
||||
{
|
||||
if (system_supports_mte() && mte_restore_tags(entry, &folio->page))
|
||||
set_page_mte_tagged(&folio->page);
|
||||
if (system_supports_mte())
|
||||
mte_restore_tags(entry, &folio->page);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_ARM64_MTE */
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifdef __ASSEMBLY__
|
||||
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/sysreg.h>
|
||||
|
||||
#ifdef CONFIG_SHADOW_CALL_STACK
|
||||
scs_sp .req x18
|
||||
@@ -24,6 +25,54 @@
|
||||
.endm
|
||||
#endif /* CONFIG_SHADOW_CALL_STACK */
|
||||
|
||||
|
||||
#else
|
||||
|
||||
#include <linux/scs.h>
|
||||
#include <asm/cpufeature.h>
|
||||
|
||||
#ifdef CONFIG_UNWIND_PATCH_PAC_INTO_SCS
|
||||
static inline bool should_patch_pac_into_scs(void)
|
||||
{
|
||||
u64 reg;
|
||||
|
||||
/*
|
||||
* We only enable the shadow call stack dynamically if we are running
|
||||
* on a system that does not implement PAC or BTI. PAC and SCS provide
|
||||
* roughly the same level of protection, and BTI relies on the PACIASP
|
||||
* instructions serving as landing pads, preventing us from patching
|
||||
* those instructions into something else.
|
||||
*/
|
||||
reg = read_sysreg_s(SYS_ID_AA64ISAR1_EL1);
|
||||
if (SYS_FIELD_GET(ID_AA64ISAR1_EL1, APA, reg) |
|
||||
SYS_FIELD_GET(ID_AA64ISAR1_EL1, API, reg))
|
||||
return false;
|
||||
|
||||
reg = read_sysreg_s(SYS_ID_AA64ISAR2_EL1);
|
||||
if (SYS_FIELD_GET(ID_AA64ISAR2_EL1, APA3, reg))
|
||||
return false;
|
||||
|
||||
if (IS_ENABLED(CONFIG_ARM64_BTI_KERNEL)) {
|
||||
reg = read_sysreg_s(SYS_ID_AA64PFR1_EL1);
|
||||
if (reg & (0xf << ID_AA64PFR1_EL1_BT_SHIFT))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline void dynamic_scs_init(void)
|
||||
{
|
||||
if (should_patch_pac_into_scs()) {
|
||||
pr_info("Enabling dynamic shadow call stack\n");
|
||||
static_branch_enable(&dynamic_scs_enabled);
|
||||
}
|
||||
}
|
||||
#else
|
||||
static inline void dynamic_scs_init(void) {}
|
||||
#endif
|
||||
|
||||
int scs_patch(const u8 eh_frame[], int size);
|
||||
|
||||
#endif /* __ASSEMBLY __ */
|
||||
|
||||
#endif /* _ASM_SCS_H */
|
||||
|
||||
@@ -80,6 +80,8 @@ obj-$(CONFIG_ARM64_PTR_AUTH) += pointer_auth.o
|
||||
obj-$(CONFIG_ARM64_MTE) += mte.o
|
||||
obj-y += vdso-wrap.o
|
||||
obj-$(CONFIG_COMPAT_VDSO) += vdso32-wrap.o
|
||||
obj-$(CONFIG_UNWIND_PATCH_PAC_INTO_SCS) += patch-scs.o
|
||||
CFLAGS_patch-scs.o += -mbranch-protection=none
|
||||
|
||||
# Force dependency (vdso*-wrap.S includes vdso.so through incbin)
|
||||
$(obj)/vdso-wrap.o: $(obj)/vdso/vdso.so
|
||||
|
||||
@@ -128,6 +128,7 @@ int main(void)
|
||||
DEFINE(NVHE_INIT_STACK_HYP_VA, offsetof(struct kvm_nvhe_init_params, stack_hyp_va));
|
||||
DEFINE(NVHE_INIT_PGD_PA, offsetof(struct kvm_nvhe_init_params, pgd_pa));
|
||||
DEFINE(NVHE_INIT_HCR_EL2, offsetof(struct kvm_nvhe_init_params, hcr_el2));
|
||||
DEFINE(NVHE_INIT_HFGWTR_EL2, offsetof(struct kvm_nvhe_init_params, hfgwtr_el2));
|
||||
DEFINE(NVHE_INIT_VTTBR, offsetof(struct kvm_nvhe_init_params, vttbr));
|
||||
DEFINE(NVHE_INIT_VTCR, offsetof(struct kvm_nvhe_init_params, vtcr));
|
||||
#endif
|
||||
|
||||
@@ -462,6 +462,9 @@ SYM_FUNC_START_LOCAL(__primary_switched)
|
||||
bl early_fdt_map // Try mapping the FDT early
|
||||
mov x0, x20 // pass the full boot status
|
||||
bl init_feature_override // Parse cpu feature overrides
|
||||
#ifdef CONFIG_UNWIND_PATCH_PAC_INTO_SCS
|
||||
bl scs_patch_vmlinux
|
||||
#endif
|
||||
mov x0, x20
|
||||
bl finalise_el2 // Prefer VHE if possible
|
||||
ldp x29, x30, [sp], #16
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <asm/sysreg.h>
|
||||
#include <asm/trans_pgd.h>
|
||||
#include <asm/virt.h>
|
||||
#include <trace/hooks/bl_hib.h>
|
||||
|
||||
/*
|
||||
* Hibernate core relies on this value being 0 on resume, and marks it
|
||||
@@ -80,6 +81,8 @@ static struct arch_hibernate_hdr {
|
||||
phys_addr_t __hyp_stub_vectors;
|
||||
|
||||
u64 sleep_cpu_mpidr;
|
||||
|
||||
ANDROID_VENDOR_DATA(1);
|
||||
} resume_hdr;
|
||||
|
||||
static inline void arch_hdr_invariants(struct arch_hibernate_hdr_invariants *i)
|
||||
@@ -117,6 +120,9 @@ int arch_hibernation_header_save(void *addr, unsigned int max_size)
|
||||
hdr->ttbr1_el1 = __pa_symbol(swapper_pg_dir);
|
||||
hdr->reenter_kernel = _cpu_resume;
|
||||
|
||||
trace_android_vh_save_cpu_resume(&hdr->android_vendor_data1,
|
||||
__pa(cpu_resume));
|
||||
|
||||
/* We can't use __hyp_get_vectors() because kvm may still be loaded */
|
||||
if (el2_reset_needed())
|
||||
hdr->__hyp_stub_vectors = __pa_symbol(__hyp_stub_vectors);
|
||||
|
||||
@@ -41,7 +41,7 @@ static void init_irq_scs(void)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_SHADOW_CALL_STACK))
|
||||
if (!scs_is_enabled())
|
||||
return;
|
||||
|
||||
for_each_possible_cpu(cpu)
|
||||
|
||||
@@ -15,9 +15,11 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/moduleloader.h>
|
||||
#include <linux/scs.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <asm/alternative.h>
|
||||
#include <asm/insn.h>
|
||||
#include <asm/scs.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
void *module_alloc(unsigned long size)
|
||||
@@ -569,6 +571,12 @@ int module_finalize(const Elf_Ehdr *hdr,
|
||||
if (s)
|
||||
apply_alternatives_module((void *)s->sh_addr, s->sh_size);
|
||||
|
||||
if (scs_is_dynamic()) {
|
||||
s = find_section(hdr, sechdrs, ".init.eh_frame");
|
||||
if (s)
|
||||
scs_patch((void *)s->sh_addr, s->sh_size);
|
||||
}
|
||||
|
||||
err = module_init_ftrace_plt(hdr, sechdrs, me);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -35,47 +35,18 @@ DEFINE_STATIC_KEY_FALSE(mte_async_or_asymm_mode);
|
||||
EXPORT_SYMBOL_GPL(mte_async_or_asymm_mode);
|
||||
#endif
|
||||
|
||||
static void mte_sync_page_tags(struct page *page, pte_t old_pte,
|
||||
bool check_swap, bool pte_is_tagged)
|
||||
{
|
||||
if (check_swap && is_swap_pte(old_pte)) {
|
||||
swp_entry_t entry = pte_to_swp_entry(old_pte);
|
||||
|
||||
if (!non_swap_entry(entry) && mte_restore_tags(entry, page)) {
|
||||
set_page_mte_tagged(page);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!pte_is_tagged)
|
||||
return;
|
||||
|
||||
/*
|
||||
* Test PG_mte_tagged again in case it was racing with another
|
||||
* set_pte_at().
|
||||
*/
|
||||
if (!page_mte_tagged(page)) {
|
||||
mte_clear_page_tags(page_address(page));
|
||||
set_page_mte_tagged(page);
|
||||
}
|
||||
}
|
||||
|
||||
void mte_sync_tags(pte_t old_pte, pte_t pte)
|
||||
void mte_sync_tags(pte_t pte)
|
||||
{
|
||||
struct page *page = pte_page(pte);
|
||||
long i, nr_pages = compound_nr(page);
|
||||
bool check_swap = nr_pages == 1;
|
||||
bool pte_is_tagged = pte_tagged(pte);
|
||||
|
||||
/* Early out if there's nothing to do */
|
||||
if (!check_swap && !pte_is_tagged)
|
||||
return;
|
||||
|
||||
/* if PG_mte_tagged is set, tags have already been initialised */
|
||||
for (i = 0; i < nr_pages; i++, page++)
|
||||
if (!page_mte_tagged(page))
|
||||
mte_sync_page_tags(page, old_pte, check_swap,
|
||||
pte_is_tagged);
|
||||
for (i = 0; i < nr_pages; i++, page++) {
|
||||
if (!page_mte_tagged(page)) {
|
||||
mte_clear_page_tags(page_address(page));
|
||||
set_page_mte_tagged(page);
|
||||
}
|
||||
}
|
||||
|
||||
/* ensure the tags are visible before the PTE is set */
|
||||
smp_wmb();
|
||||
|
||||
257
arch/arm64/kernel/patch-scs.c
Normal file
257
arch/arm64/kernel/patch-scs.c
Normal file
@@ -0,0 +1,257 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2022 - Google LLC
|
||||
* Author: Ard Biesheuvel <ardb@google.com>
|
||||
*/
|
||||
|
||||
#include <linux/bug.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/printk.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/scs.h>
|
||||
|
||||
//
|
||||
// This minimal DWARF CFI parser is partially based on the code in
|
||||
// arch/arc/kernel/unwind.c, and on the document below:
|
||||
// https://refspecs.linuxbase.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
|
||||
//
|
||||
|
||||
#define DW_CFA_nop 0x00
|
||||
#define DW_CFA_set_loc 0x01
|
||||
#define DW_CFA_advance_loc1 0x02
|
||||
#define DW_CFA_advance_loc2 0x03
|
||||
#define DW_CFA_advance_loc4 0x04
|
||||
#define DW_CFA_offset_extended 0x05
|
||||
#define DW_CFA_restore_extended 0x06
|
||||
#define DW_CFA_undefined 0x07
|
||||
#define DW_CFA_same_value 0x08
|
||||
#define DW_CFA_register 0x09
|
||||
#define DW_CFA_remember_state 0x0a
|
||||
#define DW_CFA_restore_state 0x0b
|
||||
#define DW_CFA_def_cfa 0x0c
|
||||
#define DW_CFA_def_cfa_register 0x0d
|
||||
#define DW_CFA_def_cfa_offset 0x0e
|
||||
#define DW_CFA_def_cfa_expression 0x0f
|
||||
#define DW_CFA_expression 0x10
|
||||
#define DW_CFA_offset_extended_sf 0x11
|
||||
#define DW_CFA_def_cfa_sf 0x12
|
||||
#define DW_CFA_def_cfa_offset_sf 0x13
|
||||
#define DW_CFA_val_offset 0x14
|
||||
#define DW_CFA_val_offset_sf 0x15
|
||||
#define DW_CFA_val_expression 0x16
|
||||
#define DW_CFA_lo_user 0x1c
|
||||
#define DW_CFA_negate_ra_state 0x2d
|
||||
#define DW_CFA_GNU_args_size 0x2e
|
||||
#define DW_CFA_GNU_negative_offset_extended 0x2f
|
||||
#define DW_CFA_hi_user 0x3f
|
||||
|
||||
extern const u8 __eh_frame_start[], __eh_frame_end[];
|
||||
|
||||
enum {
|
||||
PACIASP = 0xd503233f,
|
||||
AUTIASP = 0xd50323bf,
|
||||
SCS_PUSH = 0xf800865e,
|
||||
SCS_POP = 0xf85f8e5e,
|
||||
};
|
||||
|
||||
static void __always_inline scs_patch_loc(u64 loc)
|
||||
{
|
||||
u32 insn = le32_to_cpup((void *)loc);
|
||||
|
||||
switch (insn) {
|
||||
case PACIASP:
|
||||
*(u32 *)loc = cpu_to_le32(SCS_PUSH);
|
||||
break;
|
||||
case AUTIASP:
|
||||
*(u32 *)loc = cpu_to_le32(SCS_POP);
|
||||
break;
|
||||
default:
|
||||
/*
|
||||
* While the DW_CFA_negate_ra_state directive is guaranteed to
|
||||
* appear right after a PACIASP/AUTIASP instruction, it may
|
||||
* also appear after a DW_CFA_restore_state directive that
|
||||
* restores a state that is only partially accurate, and is
|
||||
* followed by DW_CFA_negate_ra_state directive to toggle the
|
||||
* PAC bit again. So we permit other instructions here, and ignore
|
||||
* them.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
dcache_clean_pou(loc, loc + sizeof(u32));
|
||||
}
|
||||
|
||||
/*
|
||||
* Skip one uleb128/sleb128 encoded quantity from the opcode stream. All bytes
|
||||
* except the last one have bit #7 set.
|
||||
*/
|
||||
static int __always_inline skip_xleb128(const u8 **opcode, int size)
|
||||
{
|
||||
u8 c;
|
||||
|
||||
do {
|
||||
c = *(*opcode)++;
|
||||
size--;
|
||||
} while (c & BIT(7));
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
struct eh_frame {
|
||||
/*
|
||||
* The size of this frame if 0 < size < U32_MAX, 0 terminates the list.
|
||||
*/
|
||||
u32 size;
|
||||
|
||||
/*
|
||||
* The first frame is a Common Information Entry (CIE) frame, followed
|
||||
* by one or more Frame Description Entry (FDE) frames. In the former
|
||||
* case, this field is 0, otherwise it is the negated offset relative
|
||||
* to the associated CIE frame.
|
||||
*/
|
||||
u32 cie_id_or_pointer;
|
||||
|
||||
union {
|
||||
struct { // CIE
|
||||
u8 version;
|
||||
u8 augmentation_string[];
|
||||
};
|
||||
|
||||
struct { // FDE
|
||||
s32 initial_loc;
|
||||
s32 range;
|
||||
u8 opcodes[];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
static int noinstr scs_handle_fde_frame(const struct eh_frame *frame,
|
||||
bool fde_has_augmentation_data,
|
||||
int code_alignment_factor)
|
||||
{
|
||||
int size = frame->size - offsetof(struct eh_frame, opcodes) + 4;
|
||||
u64 loc = (u64)offset_to_ptr(&frame->initial_loc);
|
||||
const u8 *opcode = frame->opcodes;
|
||||
|
||||
if (fde_has_augmentation_data) {
|
||||
int l;
|
||||
|
||||
// assume single byte uleb128_t
|
||||
if (WARN_ON(*opcode & BIT(7)))
|
||||
return -ENOEXEC;
|
||||
|
||||
l = *opcode++;
|
||||
opcode += l;
|
||||
size -= l + 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Starting from 'loc', apply the CFA opcodes that advance the location
|
||||
* pointer, and identify the locations of the PAC instructions.
|
||||
*/
|
||||
while (size-- > 0) {
|
||||
switch (*opcode++) {
|
||||
case DW_CFA_nop:
|
||||
case DW_CFA_remember_state:
|
||||
case DW_CFA_restore_state:
|
||||
break;
|
||||
|
||||
case DW_CFA_advance_loc1:
|
||||
loc += *opcode++ * code_alignment_factor;
|
||||
size--;
|
||||
break;
|
||||
|
||||
case DW_CFA_advance_loc2:
|
||||
loc += *opcode++ * code_alignment_factor;
|
||||
loc += (*opcode++ << 8) * code_alignment_factor;
|
||||
size -= 2;
|
||||
break;
|
||||
|
||||
case DW_CFA_def_cfa:
|
||||
case DW_CFA_offset_extended:
|
||||
size = skip_xleb128(&opcode, size);
|
||||
fallthrough;
|
||||
case DW_CFA_def_cfa_offset:
|
||||
case DW_CFA_def_cfa_offset_sf:
|
||||
case DW_CFA_def_cfa_register:
|
||||
case DW_CFA_same_value:
|
||||
case DW_CFA_restore_extended:
|
||||
case 0x80 ... 0xbf:
|
||||
size = skip_xleb128(&opcode, size);
|
||||
break;
|
||||
|
||||
case DW_CFA_negate_ra_state:
|
||||
scs_patch_loc(loc - 4);
|
||||
break;
|
||||
|
||||
case 0x40 ... 0x7f:
|
||||
// advance loc
|
||||
loc += (opcode[-1] & 0x3f) * code_alignment_factor;
|
||||
break;
|
||||
|
||||
case 0xc0 ... 0xff:
|
||||
break;
|
||||
|
||||
default:
|
||||
pr_err("unhandled opcode: %02x in FDE frame %lx\n", opcode[-1], (uintptr_t)frame);
|
||||
return -ENOEXEC;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int noinstr scs_patch(const u8 eh_frame[], int size)
|
||||
{
|
||||
const u8 *p = eh_frame;
|
||||
|
||||
while (size > 4) {
|
||||
const struct eh_frame *frame = (const void *)p;
|
||||
bool fde_has_augmentation_data = true;
|
||||
int code_alignment_factor = 1;
|
||||
int ret;
|
||||
|
||||
if (frame->size == 0 ||
|
||||
frame->size == U32_MAX ||
|
||||
frame->size > size)
|
||||
break;
|
||||
|
||||
if (frame->cie_id_or_pointer == 0) {
|
||||
const u8 *p = frame->augmentation_string;
|
||||
|
||||
/* a 'z' in the augmentation string must come first */
|
||||
fde_has_augmentation_data = *p == 'z';
|
||||
|
||||
/*
|
||||
* The code alignment factor is a uleb128 encoded field
|
||||
* but given that the only sensible values are 1 or 4,
|
||||
* there is no point in decoding the whole thing.
|
||||
*/
|
||||
p += strlen(p) + 1;
|
||||
if (!WARN_ON(*p & BIT(7)))
|
||||
code_alignment_factor = *p;
|
||||
} else {
|
||||
ret = scs_handle_fde_frame(frame,
|
||||
fde_has_augmentation_data,
|
||||
code_alignment_factor);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
p += sizeof(frame->size) + frame->size;
|
||||
size -= sizeof(frame->size) + frame->size;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage void __init scs_patch_vmlinux(void)
|
||||
{
|
||||
if (!should_patch_pac_into_scs())
|
||||
return;
|
||||
|
||||
WARN_ON(scs_patch(__eh_frame_start, __eh_frame_end - __eh_frame_start));
|
||||
icache_inval_all_pou();
|
||||
isb();
|
||||
}
|
||||
@@ -7,6 +7,7 @@ KBUILD_CFLAGS := $(subst $(CC_FLAGS_FTRACE),,$(KBUILD_CFLAGS)) -fpie \
|
||||
-I$(srctree)/scripts/dtc/libfdt -fno-stack-protector \
|
||||
-include $(srctree)/include/linux/hidden.h \
|
||||
-D__DISABLE_EXPORTS -ffreestanding -D__NO_FORTIFY \
|
||||
-fno-asynchronous-unwind-tables -fno-unwind-tables \
|
||||
$(call cc-option,-fno-addrsig)
|
||||
|
||||
# remove SCS flags from all objects in this directory
|
||||
|
||||
@@ -667,6 +667,7 @@ unsigned long __get_wchan(struct task_struct *p)
|
||||
|
||||
return wchan_info.pc;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(get_wchan);
|
||||
|
||||
unsigned long arch_align_stack(unsigned long sp)
|
||||
{
|
||||
|
||||
@@ -144,7 +144,7 @@ static int init_sdei_scs(void)
|
||||
int cpu;
|
||||
int err = 0;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_SHADOW_CALL_STACK))
|
||||
if (!scs_is_enabled())
|
||||
return 0;
|
||||
|
||||
for_each_possible_cpu(cpu) {
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <linux/efi.h>
|
||||
#include <linux/psci.h>
|
||||
#include <linux/sched/task.h>
|
||||
#include <linux/scs.h>
|
||||
#include <linux/mm.h>
|
||||
|
||||
#include <asm/acpi.h>
|
||||
@@ -43,6 +44,7 @@
|
||||
#include <asm/hypervisor.h>
|
||||
#include <asm/kasan.h>
|
||||
#include <asm/numa.h>
|
||||
#include <asm/scs.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/smp_plat.h>
|
||||
@@ -314,6 +316,8 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)
|
||||
jump_label_init();
|
||||
parse_early_param();
|
||||
|
||||
dynamic_scs_init();
|
||||
|
||||
/*
|
||||
* Unmask asynchronous aborts and fiq after bringing up possible
|
||||
* earlycon. (Report possible System Errors once we can report this
|
||||
|
||||
@@ -143,6 +143,17 @@ jiffies = jiffies_64;
|
||||
#define TRAMP_TEXT
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_UNWIND_TABLES
|
||||
#define UNWIND_DATA_SECTIONS \
|
||||
.eh_frame : { \
|
||||
__eh_frame_start = .; \
|
||||
*(.eh_frame) \
|
||||
__eh_frame_end = .; \
|
||||
}
|
||||
#else
|
||||
#define UNWIND_DATA_SECTIONS
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The size of the PE/COFF section that covers the kernel image, which
|
||||
* runs from _stext to _edata, must be a round multiple of the PE/COFF
|
||||
@@ -261,6 +272,8 @@ SECTIONS
|
||||
__alt_instructions_end = .;
|
||||
}
|
||||
|
||||
UNWIND_DATA_SECTIONS
|
||||
|
||||
. = ALIGN(SEGMENT_ALIGN);
|
||||
__inittext_end = .;
|
||||
__initdata_begin = .;
|
||||
|
||||
@@ -1687,6 +1687,7 @@ static void cpu_prepare_hyp_mode(int cpu)
|
||||
else
|
||||
params->hcr_el2 = HCR_HOST_NVHE_FLAGS;
|
||||
params->vttbr = params->vtcr = 0;
|
||||
params->hfgwtr_el2 = HFGxTR_EL2_nSMPRI_EL1_MASK | HFGxTR_EL2_nTPIDR2_EL0_MASK;
|
||||
|
||||
/*
|
||||
* Flush the init params from the data cache because the struct will
|
||||
|
||||
@@ -93,8 +93,6 @@ int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
|
||||
int __pkvm_iommu_pm_notify(unsigned long dev_id,
|
||||
enum pkvm_iommu_pm_event event);
|
||||
int __pkvm_iommu_finalize(int err);
|
||||
int pkvm_iommu_host_stage2_adjust_range(phys_addr_t addr, phys_addr_t *start,
|
||||
phys_addr_t *end);
|
||||
bool pkvm_iommu_host_dabt_handler(struct kvm_cpu_context *host_ctxt, u32 esr,
|
||||
phys_addr_t fault_pa);
|
||||
void pkvm_iommu_host_stage2_idmap(phys_addr_t start, phys_addr_t end,
|
||||
|
||||
@@ -72,6 +72,8 @@ int __pkvm_host_share_hyp(u64 pfn);
|
||||
int __pkvm_host_unshare_hyp(u64 pfn);
|
||||
int __pkvm_host_reclaim_page(struct pkvm_hyp_vm *vm, u64 pfn, u64 ipa);
|
||||
int __pkvm_host_donate_hyp(u64 pfn, u64 nr_pages);
|
||||
int ___pkvm_host_donate_hyp(u64 pfn, u64 nr_pages, bool accept_mmio);
|
||||
int __pkvm_host_donate_hyp_locked(u64 pfn, u64 nr_pages);
|
||||
int __pkvm_hyp_donate_host(u64 pfn, u64 nr_pages);
|
||||
int __pkvm_host_share_guest(u64 pfn, u64 gfn, struct pkvm_hyp_vcpu *vcpu);
|
||||
int __pkvm_host_donate_guest(u64 pfn, u64 gfn, struct pkvm_hyp_vcpu *vcpu);
|
||||
@@ -89,7 +91,6 @@ bool addr_is_memory(phys_addr_t phys);
|
||||
int host_stage2_idmap_locked(phys_addr_t addr, u64 size, enum kvm_pgtable_prot prot,
|
||||
bool update_iommu);
|
||||
int host_stage2_set_owner_locked(phys_addr_t addr, u64 size, enum pkvm_component_id owner_id);
|
||||
int host_stage2_protect_pages_locked(phys_addr_t addr, u64 size);
|
||||
int host_stage2_unmap_reg_locked(phys_addr_t start, u64 size);
|
||||
int kvm_host_prepare_stage2(void *pgt_pool_base);
|
||||
int kvm_guest_prepare_stage2(struct pkvm_hyp_vm *vm, void *pgd);
|
||||
|
||||
@@ -11,13 +11,10 @@ int __pkvm_register_hyp_panic_notifier(void (*cb)(struct kvm_cpu_context *));
|
||||
enum pkvm_psci_notification;
|
||||
int __pkvm_register_psci_notifier(void (*cb)(enum pkvm_psci_notification, struct kvm_cpu_context *));
|
||||
|
||||
int reset_pkvm_priv_hcall_limit(void);
|
||||
|
||||
#ifdef CONFIG_MODULES
|
||||
int __pkvm_init_module(void *module_init);
|
||||
int __pkvm_register_hcall(unsigned long hfn_hyp_va);
|
||||
int handle_host_dynamic_hcall(struct kvm_cpu_context *host_ctxt);
|
||||
int __pkvm_close_late_module_registration(void);
|
||||
void __pkvm_close_module_registration(void);
|
||||
#else
|
||||
static inline int __pkvm_init_module(void *module_init) { return -EOPNOTSUPP; }
|
||||
@@ -27,6 +24,5 @@ static inline int handle_host_dynamic_hcall(struct kvm_cpu_context *host_ctxt)
|
||||
{
|
||||
return HCALL_UNHANDLED;
|
||||
}
|
||||
static inline int __pkvm_close_late_module_registration(void) { return -EOPNOTSUPP; }
|
||||
static inline void __pkvm_close_module_registration(void) { }
|
||||
#endif
|
||||
|
||||
@@ -162,9 +162,4 @@ int pkvm_load_pvmfw_pages(struct pkvm_hyp_vm *vm, u64 ipa, phys_addr_t phys,
|
||||
u64 size);
|
||||
void pkvm_poison_pvmfw_pages(void);
|
||||
|
||||
/*
|
||||
* Notify pKVM about events that can undermine pKVM security.
|
||||
*/
|
||||
void pkvm_handle_system_misconfiguration(enum pkvm_system_misconfiguration event);
|
||||
|
||||
#endif /* __ARM64_KVM_NVHE_PKVM_H__ */
|
||||
|
||||
@@ -79,6 +79,7 @@ KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) $(CC_FLAGS_CFI)
|
||||
# when profile optimization is applied. gen-hyprel does not support SHT_REL and
|
||||
# causes a build failure. Remove profile optimization flags.
|
||||
KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%, $(KBUILD_CFLAGS))
|
||||
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
|
||||
|
||||
# KVM nVHE code is run at a different exception code with a different map, so
|
||||
# compiler instrumentation that inserts callbacks or checks into the code may
|
||||
|
||||
@@ -95,6 +95,13 @@ SYM_CODE_START_LOCAL(___kvm_hyp_init)
|
||||
ldr x1, [x0, #NVHE_INIT_HCR_EL2]
|
||||
msr hcr_el2, x1
|
||||
|
||||
mrs x1, ID_AA64MMFR0_EL1
|
||||
and x1, x1, #(0xf << ID_AA64MMFR0_EL1_FGT_SHIFT)
|
||||
cbz x1, 1f
|
||||
ldr x1, [x0, #NVHE_INIT_HFGWTR_EL2]
|
||||
msr_s SYS_HFGWTR_EL2, x1
|
||||
|
||||
1:
|
||||
ldr x1, [x0, #NVHE_INIT_VTTBR]
|
||||
msr vttbr_el2, x1
|
||||
|
||||
|
||||
@@ -1212,12 +1212,6 @@ static void handle___pkvm_register_hcall(struct kvm_cpu_context *host_ctxt)
|
||||
cpu_reg(host_ctxt, 1) = __pkvm_register_hcall(hfn_hyp_va);
|
||||
}
|
||||
|
||||
static void
|
||||
handle___pkvm_close_module_registration(struct kvm_cpu_context *host_ctxt)
|
||||
{
|
||||
cpu_reg(host_ctxt, 1) = __pkvm_close_late_module_registration();
|
||||
}
|
||||
|
||||
static void handle___pkvm_load_tracing(struct kvm_cpu_context *host_ctxt)
|
||||
{
|
||||
DECLARE_REG(unsigned long, pack_hva, host_ctxt, 1);
|
||||
@@ -1290,13 +1284,11 @@ static const hcall_t host_hcall[] = {
|
||||
HANDLE_FUNC(__kvm_tlb_flush_vmid_ipa),
|
||||
HANDLE_FUNC(__kvm_tlb_flush_vmid),
|
||||
HANDLE_FUNC(__kvm_flush_cpu_context),
|
||||
|
||||
HANDLE_FUNC(__pkvm_alloc_module_va),
|
||||
HANDLE_FUNC(__pkvm_map_module_page),
|
||||
HANDLE_FUNC(__pkvm_unmap_module_page),
|
||||
HANDLE_FUNC(__pkvm_init_module),
|
||||
HANDLE_FUNC(__pkvm_register_hcall),
|
||||
HANDLE_FUNC(__pkvm_close_module_registration),
|
||||
HANDLE_FUNC(__pkvm_prot_finalize),
|
||||
|
||||
HANDLE_FUNC(__pkvm_host_share_hyp),
|
||||
@@ -1330,22 +1322,6 @@ static const hcall_t host_hcall[] = {
|
||||
#endif
|
||||
};
|
||||
|
||||
unsigned long pkvm_priv_hcall_limit __ro_after_init = __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize;
|
||||
|
||||
int reset_pkvm_priv_hcall_limit(void)
|
||||
{
|
||||
unsigned long *addr;
|
||||
|
||||
if (pkvm_priv_hcall_limit == __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize)
|
||||
return -EACCES;
|
||||
|
||||
addr = hyp_fixmap_map(__hyp_pa(&pkvm_priv_hcall_limit));
|
||||
*addr = __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize;
|
||||
hyp_fixmap_unmap();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void handle_host_hcall(struct kvm_cpu_context *host_ctxt)
|
||||
{
|
||||
DECLARE_REG(unsigned long, id, host_ctxt, 0);
|
||||
@@ -1365,7 +1341,7 @@ static void handle_host_hcall(struct kvm_cpu_context *host_ctxt)
|
||||
* returns -EPERM after the first call for a given CPU.
|
||||
*/
|
||||
if (static_branch_unlikely(&kvm_protected_mode_initialized))
|
||||
hcall_min = pkvm_priv_hcall_limit;
|
||||
hcall_min = __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize;
|
||||
|
||||
id -= KVM_HOST_SMCCC_ID(0);
|
||||
|
||||
|
||||
@@ -392,6 +392,7 @@ int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
|
||||
.id = dev_id,
|
||||
.ops = drv->ops,
|
||||
.pa = dev_pa,
|
||||
.va = hyp_phys_to_virt(dev_pa),
|
||||
.size = dev_size,
|
||||
.flags = flags,
|
||||
};
|
||||
@@ -421,22 +422,11 @@ int __pkvm_iommu_register(unsigned long dev_id, unsigned long drv_id,
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
/*
|
||||
* Unmap the device's MMIO range from host stage-2. If registration
|
||||
* is successful, future attempts to re-map will be blocked by
|
||||
* pkvm_iommu_host_stage2_adjust_range.
|
||||
*/
|
||||
ret = host_stage2_unmap_reg_locked(dev_pa, dev_size);
|
||||
ret = __pkvm_host_donate_hyp_locked(hyp_phys_to_pfn(dev_pa),
|
||||
PAGE_ALIGN(dev_size) >> PAGE_SHIFT);
|
||||
if (ret)
|
||||
goto out_free;
|
||||
|
||||
/* Create EL2 mapping for the device. */
|
||||
ret = __pkvm_create_private_mapping(dev_pa, dev_size,
|
||||
PAGE_HYP_DEVICE, (unsigned long *)(&dev->va));
|
||||
if (ret){
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
/* Register device and prevent host from mapping the MMIO range. */
|
||||
list_add_tail(&dev->list, &iommu_list);
|
||||
if (dev->parent)
|
||||
@@ -456,6 +446,9 @@ int __pkvm_iommu_finalize(int err)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
/* Err is not currently used in EL2.*/
|
||||
WARN_ON(err);
|
||||
|
||||
hyp_spin_lock(&iommu_registration_lock);
|
||||
if (!iommu_finalized)
|
||||
iommu_finalized = true;
|
||||
@@ -463,15 +456,6 @@ int __pkvm_iommu_finalize(int err)
|
||||
ret = -EPERM;
|
||||
hyp_spin_unlock(&iommu_registration_lock);
|
||||
|
||||
/*
|
||||
* If finalize failed in EL1 driver for any reason, this means we can't trust the DMA
|
||||
* isolation. So we have to inform pKVM to properly protect itself.
|
||||
*/
|
||||
if (!ret && err)
|
||||
pkvm_handle_system_misconfiguration(NO_DMA_ISOLATION);
|
||||
|
||||
__pkvm_close_late_module_registration();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -501,39 +485,6 @@ int __pkvm_iommu_pm_notify(unsigned long dev_id, enum pkvm_iommu_pm_event event)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check host memory access against IOMMUs' MMIO regions.
|
||||
* Returns -EPERM if the address is within the bounds of a registered device.
|
||||
* Otherwise returns zero and adjusts boundaries of the new mapping to avoid
|
||||
* MMIO regions of registered IOMMUs.
|
||||
*/
|
||||
int pkvm_iommu_host_stage2_adjust_range(phys_addr_t addr, phys_addr_t *start,
|
||||
phys_addr_t *end)
|
||||
{
|
||||
struct pkvm_iommu *dev;
|
||||
phys_addr_t new_start = *start;
|
||||
phys_addr_t new_end = *end;
|
||||
phys_addr_t dev_start, dev_end;
|
||||
|
||||
assert_host_component_locked();
|
||||
|
||||
list_for_each_entry(dev, &iommu_list, list) {
|
||||
dev_start = dev->pa;
|
||||
dev_end = dev_start + dev->size;
|
||||
|
||||
if (addr < dev_start)
|
||||
new_end = min(new_end, dev_start);
|
||||
else if (addr >= dev_end)
|
||||
new_start = max(new_start, dev_end);
|
||||
else
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
*start = new_start;
|
||||
*end = new_end;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool pkvm_iommu_host_dabt_handler(struct kvm_cpu_context *host_ctxt, u32 esr,
|
||||
phys_addr_t pa)
|
||||
{
|
||||
|
||||
@@ -79,10 +79,35 @@ static void hyp_unlock_component(void)
|
||||
hyp_spin_unlock(&pkvm_pgd_lock);
|
||||
}
|
||||
|
||||
static void assert_host_can_alloc(void)
|
||||
{
|
||||
/* We can always get back to the host from guest context */
|
||||
if (read_sysreg(vttbr_el2) != kvm_get_vttbr(&host_mmu.arch.mmu))
|
||||
return;
|
||||
|
||||
/*
|
||||
* An error code must be returned to EL1 to handle memory allocation
|
||||
* failures cleanly. That's doable for explicit calls into higher
|
||||
* ELs, but not so much for other EL2 entry reasons such as mem aborts.
|
||||
* Thankfully we don't need memory allocation in these cases by
|
||||
* construction, so let's enforce the invariant.
|
||||
*/
|
||||
switch (ESR_ELx_EC(read_sysreg(esr_el2))) {
|
||||
case ESR_ELx_EC_HVC64:
|
||||
case ESR_ELx_EC_SMC64:
|
||||
break;
|
||||
default:
|
||||
WARN_ON(1);
|
||||
}
|
||||
}
|
||||
|
||||
static void *host_s2_zalloc_pages_exact(size_t size)
|
||||
{
|
||||
void *addr = hyp_alloc_pages(&host_s2_pool, get_order(size));
|
||||
void *addr;
|
||||
|
||||
assert_host_can_alloc();
|
||||
|
||||
addr = hyp_alloc_pages(&host_s2_pool, get_order(size));
|
||||
hyp_split_page(hyp_virt_to_page(addr));
|
||||
|
||||
/*
|
||||
@@ -97,6 +122,8 @@ static void *host_s2_zalloc_pages_exact(size_t size)
|
||||
|
||||
static void *host_s2_zalloc_page(void *pool)
|
||||
{
|
||||
assert_host_can_alloc();
|
||||
|
||||
return hyp_alloc_pages(pool, 0);
|
||||
}
|
||||
|
||||
@@ -146,6 +173,27 @@ static void prepare_host_vtcr(void)
|
||||
id_aa64mmfr1_el1_sys_val, phys_shift);
|
||||
}
|
||||
|
||||
static int prepopulate_host_stage2(void)
|
||||
{
|
||||
struct memblock_region *reg;
|
||||
u64 addr = 0;
|
||||
int i, ret;
|
||||
|
||||
for (i = 0; i < hyp_memblock_nr; i++) {
|
||||
reg = &hyp_memory[i];
|
||||
ret = host_stage2_idmap_locked(addr, reg->base - addr, PKVM_HOST_MMIO_PROT, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = host_stage2_idmap_locked(reg->base, reg->size, PKVM_HOST_MEM_PROT, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
addr = reg->base + reg->size;
|
||||
}
|
||||
|
||||
return host_stage2_idmap_locked(addr, BIT(host_mmu.pgt.ia_bits) - addr, PKVM_HOST_MMIO_PROT,
|
||||
false);
|
||||
}
|
||||
|
||||
int kvm_host_prepare_stage2(void *pgt_pool_base)
|
||||
{
|
||||
struct kvm_s2_mmu *mmu = &host_mmu.arch.mmu;
|
||||
@@ -172,7 +220,7 @@ int kvm_host_prepare_stage2(void *pgt_pool_base)
|
||||
mmu->pgt = &host_mmu.pgt;
|
||||
atomic64_set(&mmu->vmid.id, 0);
|
||||
|
||||
return 0;
|
||||
return prepopulate_host_stage2();
|
||||
}
|
||||
|
||||
static bool guest_stage2_force_pte_cb(u64 addr, u64 end,
|
||||
@@ -398,7 +446,7 @@ int host_stage2_unmap_reg_locked(phys_addr_t start, u64 size)
|
||||
|
||||
hyp_assert_lock_held(&host_mmu.lock);
|
||||
|
||||
ret = kvm_pgtable_stage2_unmap(&host_mmu.pgt, start, size);
|
||||
ret = kvm_pgtable_stage2_reclaim_leaves(&host_mmu.pgt, start, size);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -466,6 +514,11 @@ static enum kvm_pgtable_prot default_host_prot(bool is_memory)
|
||||
return is_memory ? PKVM_HOST_MEM_PROT : PKVM_HOST_MMIO_PROT;
|
||||
}
|
||||
|
||||
static enum kvm_pgtable_prot default_hyp_prot(phys_addr_t phys)
|
||||
{
|
||||
return addr_is_memory(phys) ? PAGE_HYP : PAGE_HYP_DEVICE;
|
||||
}
|
||||
|
||||
bool addr_is_memory(phys_addr_t phys)
|
||||
{
|
||||
struct kvm_mem_range range;
|
||||
@@ -763,22 +816,15 @@ static int host_stage2_idmap(struct kvm_vcpu_fault_info *fault, u64 addr)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Adjust against IOMMU devices first. host_stage2_adjust_range() should
|
||||
* be called last for proper alignment.
|
||||
*/
|
||||
if (!is_memory) {
|
||||
ret = pkvm_iommu_host_stage2_adjust_range(addr, &range.start,
|
||||
&range.end);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = host_stage2_adjust_range(addr, &range, level);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return host_stage2_idmap_locked(range.start, range.end - range.start, prot, false);
|
||||
/*
|
||||
* We're guaranteed not to require memory allocation by construction,
|
||||
* no need to bother even trying to recycle pages.
|
||||
*/
|
||||
return __host_stage2_idmap(range.start, range.end, prot, false);
|
||||
}
|
||||
|
||||
static void (*illegal_abt_notifier)(struct kvm_cpu_context *host_ctxt);
|
||||
@@ -972,7 +1018,7 @@ static enum pkvm_page_state host_get_page_state(kvm_pte_t pte, u64 addr)
|
||||
if (is_memory && hyp_phys_to_page(addr)->flags & MODULE_OWNED_PAGE)
|
||||
return PKVM_MODULE_DONT_TOUCH;
|
||||
|
||||
if (!addr_is_allowed_memory(addr))
|
||||
if (is_memory && !addr_is_allowed_memory(addr))
|
||||
return PKVM_NOPAGE;
|
||||
|
||||
if (!kvm_pte_valid(pte) && pte)
|
||||
@@ -1186,8 +1232,10 @@ static int hyp_ack_share(u64 addr, const struct pkvm_mem_transition *tx,
|
||||
enum kvm_pgtable_prot perms)
|
||||
{
|
||||
u64 size = tx->nr_pages * PAGE_SIZE;
|
||||
phys_addr_t phys = hyp_virt_to_phys((void *)addr);
|
||||
enum kvm_pgtable_prot prot = default_hyp_prot(phys);
|
||||
|
||||
if (perms != PAGE_HYP)
|
||||
if (!addr_is_memory(phys) || perms != prot)
|
||||
return -EPERM;
|
||||
|
||||
if (__hyp_ack_skip_pgtable_check(tx))
|
||||
@@ -1242,8 +1290,10 @@ static int hyp_complete_donation(u64 addr,
|
||||
const struct pkvm_mem_transition *tx)
|
||||
{
|
||||
void *start = (void *)addr, *end = start + (tx->nr_pages * PAGE_SIZE);
|
||||
enum kvm_pgtable_prot prot = pkvm_mkstate(PAGE_HYP, PKVM_PAGE_OWNED);
|
||||
phys_addr_t phys = hyp_virt_to_phys(start);
|
||||
enum kvm_pgtable_prot prot = default_hyp_prot(phys);
|
||||
|
||||
prot = pkvm_mkstate(prot, PKVM_PAGE_OWNED);
|
||||
return pkvm_create_mappings_locked(start, end, prot);
|
||||
}
|
||||
|
||||
@@ -1280,7 +1330,7 @@ static int guest_ack_share(u64 addr, const struct pkvm_mem_transition *tx,
|
||||
{
|
||||
u64 size = tx->nr_pages * PAGE_SIZE;
|
||||
|
||||
if (perms != KVM_PGTABLE_PROT_RWX)
|
||||
if (!addr_is_memory(tx->completer.guest.phys) || perms != KVM_PGTABLE_PROT_RWX)
|
||||
return -EPERM;
|
||||
|
||||
return __guest_check_page_state_range(tx->completer.guest.hyp_vcpu,
|
||||
@@ -1291,6 +1341,9 @@ static int guest_ack_donation(u64 addr, const struct pkvm_mem_transition *tx)
|
||||
{
|
||||
u64 size = tx->nr_pages * PAGE_SIZE;
|
||||
|
||||
if (!addr_is_memory(tx->completer.guest.phys))
|
||||
return -EPERM;
|
||||
|
||||
return __guest_check_page_state_range(tx->completer.guest.hyp_vcpu,
|
||||
addr, size, PKVM_NOPAGE);
|
||||
}
|
||||
@@ -1776,7 +1829,7 @@ int __pkvm_host_share_hyp(u64 pfn)
|
||||
.id = PKVM_ID_HYP,
|
||||
},
|
||||
},
|
||||
.completer_prot = PAGE_HYP,
|
||||
.completer_prot = default_hyp_prot(host_addr),
|
||||
};
|
||||
|
||||
host_lock_component();
|
||||
@@ -1873,7 +1926,7 @@ int __pkvm_host_unshare_hyp(u64 pfn)
|
||||
.id = PKVM_ID_HYP,
|
||||
},
|
||||
},
|
||||
.completer_prot = PAGE_HYP,
|
||||
.completer_prot = default_hyp_prot(host_addr),
|
||||
};
|
||||
|
||||
host_lock_component();
|
||||
@@ -1888,6 +1941,27 @@ int __pkvm_host_unshare_hyp(u64 pfn)
|
||||
}
|
||||
|
||||
int __pkvm_host_donate_hyp(u64 pfn, u64 nr_pages)
|
||||
{
|
||||
return ___pkvm_host_donate_hyp(pfn, nr_pages, false);
|
||||
}
|
||||
|
||||
int ___pkvm_host_donate_hyp(u64 pfn, u64 nr_pages, bool accept_mmio)
|
||||
{
|
||||
phys_addr_t start = hyp_pfn_to_phys(pfn);
|
||||
phys_addr_t end = start + (nr_pages << PAGE_SHIFT);
|
||||
int ret;
|
||||
|
||||
if (!accept_mmio && !range_is_memory(start, end))
|
||||
return -EPERM;
|
||||
|
||||
host_lock_component();
|
||||
ret = __pkvm_host_donate_hyp_locked(pfn, nr_pages);
|
||||
host_unlock_component();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int __pkvm_host_donate_hyp_locked(u64 pfn, u64 nr_pages)
|
||||
{
|
||||
int ret;
|
||||
u64 host_addr = hyp_pfn_to_phys(pfn);
|
||||
@@ -1908,13 +1982,12 @@ int __pkvm_host_donate_hyp(u64 pfn, u64 nr_pages)
|
||||
},
|
||||
};
|
||||
|
||||
host_lock_component();
|
||||
hyp_assert_lock_held(&host_mmu.lock);
|
||||
hyp_lock_component();
|
||||
|
||||
ret = do_donate(&donation);
|
||||
|
||||
hyp_unlock_component();
|
||||
host_unlock_component();
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1964,15 +2037,19 @@ static int restrict_host_page_perms(u64 addr, kvm_pte_t pte, u32 level, enum kvm
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define MODULE_PROT_ALLOWLIST (KVM_PGTABLE_PROT_RWX | \
|
||||
KVM_PGTABLE_PROT_NC | \
|
||||
KVM_PGTABLE_PROT_PXN | \
|
||||
KVM_PGTABLE_PROT_UXN)
|
||||
int module_change_host_page_prot(u64 pfn, enum kvm_pgtable_prot prot)
|
||||
{
|
||||
u64 addr = hyp_pfn_to_phys(pfn);
|
||||
struct hyp_page *page;
|
||||
struct hyp_page *page = NULL;
|
||||
kvm_pte_t pte;
|
||||
u32 level;
|
||||
int ret;
|
||||
|
||||
if ((prot & KVM_PGTABLE_PROT_RWX) != prot || !addr_is_memory(addr))
|
||||
if ((prot & MODULE_PROT_ALLOWLIST) != prot)
|
||||
return -EINVAL;
|
||||
|
||||
host_lock_component();
|
||||
@@ -1980,6 +2057,14 @@ int module_change_host_page_prot(u64 pfn, enum kvm_pgtable_prot prot)
|
||||
if (ret)
|
||||
goto unlock;
|
||||
|
||||
/*
|
||||
* There is no hyp_vmemmap covering MMIO regions, which makes tracking
|
||||
* of module-owned MMIO regions hard, so we trust the modules not to
|
||||
* mess things up.
|
||||
*/
|
||||
if (!addr_is_memory(addr))
|
||||
goto update;
|
||||
|
||||
ret = -EPERM;
|
||||
page = hyp_phys_to_page(addr);
|
||||
|
||||
@@ -1994,14 +2079,15 @@ int module_change_host_page_prot(u64 pfn, enum kvm_pgtable_prot prot)
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
if (prot == KVM_PGTABLE_PROT_RWX)
|
||||
update:
|
||||
if (prot == default_host_prot(!!page))
|
||||
ret = host_stage2_set_owner_locked(addr, PAGE_SIZE, PKVM_ID_HOST);
|
||||
else if (!prot)
|
||||
ret = host_stage2_set_owner_locked(addr, PAGE_SIZE, PKVM_ID_PROTECTED);
|
||||
else
|
||||
ret = restrict_host_page_perms(addr, pte, level, prot);
|
||||
|
||||
if (ret)
|
||||
if (ret || !page)
|
||||
goto unlock;
|
||||
|
||||
if (prot != KVM_PGTABLE_PROT_RWX)
|
||||
@@ -2366,19 +2452,6 @@ bool __pkvm_check_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int host_stage2_protect_pages_locked(phys_addr_t addr, u64 size)
|
||||
{
|
||||
int ret;
|
||||
|
||||
hyp_assert_lock_held(&host_mmu.lock);
|
||||
|
||||
ret = __host_check_page_state_range(addr, size, PKVM_PAGE_OWNED);
|
||||
if (!ret)
|
||||
ret = host_stage2_set_owner_locked(addr, size, PKVM_ID_PROTECTED);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int host_stage2_get_leaf(phys_addr_t phys, kvm_pte_t *ptep, u32 *level)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -17,6 +17,26 @@ static void __kvm_flush_dcache_to_poc(void *addr, size_t size)
|
||||
kvm_flush_dcache_to_poc((unsigned long)addr, (unsigned long)size);
|
||||
}
|
||||
|
||||
static void __update_hcr_el2(unsigned long set_mask, unsigned long clear_mask)
|
||||
{
|
||||
struct kvm_nvhe_init_params *params = this_cpu_ptr(&kvm_init_params);
|
||||
|
||||
params->hcr_el2 |= set_mask;
|
||||
params->hcr_el2 &= ~clear_mask;
|
||||
__kvm_flush_dcache_to_poc(params, sizeof(*params));
|
||||
write_sysreg(params->hcr_el2, hcr_el2);
|
||||
}
|
||||
|
||||
static void __update_hfgwtr_el2(unsigned long set_mask, unsigned long clear_mask)
|
||||
{
|
||||
struct kvm_nvhe_init_params *params = this_cpu_ptr(&kvm_init_params);
|
||||
|
||||
params->hfgwtr_el2 |= set_mask;
|
||||
params->hfgwtr_el2 &= ~clear_mask;
|
||||
__kvm_flush_dcache_to_poc(params, sizeof(*params));
|
||||
write_sysreg_s(params->hfgwtr_el2, SYS_HFGWTR_EL2);
|
||||
}
|
||||
|
||||
static atomic_t early_lm_pages;
|
||||
static void *__pkvm_linear_map_early(phys_addr_t phys, size_t size, enum kvm_pgtable_prot prot)
|
||||
{
|
||||
@@ -57,13 +77,9 @@ void __pkvm_close_module_registration(void)
|
||||
*/
|
||||
}
|
||||
|
||||
int __pkvm_close_late_module_registration(void)
|
||||
static int __pkvm_module_host_donate_hyp(u64 pfn, u64 nr_pages)
|
||||
{
|
||||
__pkvm_close_module_registration();
|
||||
|
||||
return reset_pkvm_priv_hcall_limit();
|
||||
|
||||
/* The fuse is blown! No way back until reset */
|
||||
return ___pkvm_host_donate_hyp(pfn, nr_pages, true);
|
||||
}
|
||||
|
||||
const struct pkvm_module_ops module_ops = {
|
||||
@@ -78,6 +94,8 @@ const struct pkvm_module_ops module_ops = {
|
||||
.linear_map_early = __pkvm_linear_map_early,
|
||||
.linear_unmap_early = __pkvm_linear_unmap_early,
|
||||
.flush_dcache_to_poc = __kvm_flush_dcache_to_poc,
|
||||
.update_hcr_el2 = __update_hcr_el2,
|
||||
.update_hfgwtr_el2 = __update_hfgwtr_el2,
|
||||
.register_host_perm_fault_handler = hyp_register_host_perm_fault_handler,
|
||||
.host_stage2_mod_prot = module_change_host_page_prot,
|
||||
.host_stage2_get_leaf = host_stage2_get_leaf,
|
||||
@@ -86,7 +104,7 @@ const struct pkvm_module_ops module_ops = {
|
||||
.register_illegal_abt_notifier = __pkvm_register_illegal_abt_notifier,
|
||||
.register_psci_notifier = __pkvm_register_psci_notifier,
|
||||
.register_hyp_panic_notifier = __pkvm_register_hyp_panic_notifier,
|
||||
.host_donate_hyp = __pkvm_host_donate_hyp,
|
||||
.host_donate_hyp = __pkvm_module_host_donate_hyp,
|
||||
.hyp_donate_host = __pkvm_hyp_donate_host,
|
||||
.host_share_hyp = __pkvm_host_share_hyp,
|
||||
.host_unshare_hyp = __pkvm_host_unshare_hyp,
|
||||
|
||||
@@ -1570,14 +1570,3 @@ bool kvm_hyp_handle_hvc64(struct kvm_vcpu *vcpu, u64 *exit_code)
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Notify pKVM about events that can undermine pKVM security.
|
||||
*/
|
||||
void pkvm_handle_system_misconfiguration(enum pkvm_system_misconfiguration event)
|
||||
{
|
||||
if (event == NO_DMA_ISOLATION)
|
||||
pkvm_poison_pvmfw_pages();
|
||||
else
|
||||
BUG();
|
||||
}
|
||||
|
||||
@@ -277,6 +277,29 @@ static int fix_hyp_pgtable_refcnt_walker(u64 addr, u64 end, u32 level,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int pin_table_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
|
||||
enum kvm_pgtable_walk_flags flag, void * const arg)
|
||||
{
|
||||
struct kvm_pgtable_mm_ops *mm_ops = arg;
|
||||
kvm_pte_t pte = *ptep;
|
||||
|
||||
if (kvm_pte_valid(pte))
|
||||
mm_ops->get_page(kvm_pte_follow(pte, mm_ops));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int pin_host_tables(void)
|
||||
{
|
||||
struct kvm_pgtable_walker walker = {
|
||||
.cb = pin_table_walker,
|
||||
.flags = KVM_PGTABLE_WALK_TABLE_POST,
|
||||
.arg = &host_mmu.mm_ops,
|
||||
};
|
||||
|
||||
return kvm_pgtable_walk(&host_mmu.pgt, 0, BIT(host_mmu.pgt.ia_bits), &walker);
|
||||
}
|
||||
|
||||
static int fix_host_ownership(void)
|
||||
{
|
||||
struct kvm_pgtable_walker walker = {
|
||||
@@ -318,7 +341,9 @@ static int unmap_protected_regions(void)
|
||||
reg = &pkvm_moveable_regs[i];
|
||||
if (reg->type != PKVM_MREG_PROTECTED_RANGE)
|
||||
continue;
|
||||
ret = host_stage2_protect_pages_locked(reg->start, reg->size);
|
||||
|
||||
ret = host_stage2_set_owner_locked(reg->start, reg->size,
|
||||
PKVM_ID_PROTECTED);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
@@ -355,10 +380,6 @@ void __noreturn __pkvm_init_finalise(void)
|
||||
};
|
||||
pkvm_pgtable.mm_ops = &pkvm_pgtable_mm_ops;
|
||||
|
||||
ret = fix_host_ownership();
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = fix_hyp_pgtable_refcnt();
|
||||
if (ret)
|
||||
goto out;
|
||||
@@ -367,10 +388,18 @@ void __noreturn __pkvm_init_finalise(void)
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = fix_host_ownership();
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = unmap_protected_regions();
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = pin_host_tables();
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = hyp_ffa_init(ffa_proxy_pages);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
@@ -76,11 +76,6 @@ static u32 kvm_pgd_pages(u32 ia_bits, u32 start_level)
|
||||
return __kvm_pgd_page_idx(&pgt, -1ULL) + 1;
|
||||
}
|
||||
|
||||
static kvm_pte_t *kvm_pte_follow(kvm_pte_t pte, struct kvm_pgtable_mm_ops *mm_ops)
|
||||
{
|
||||
return mm_ops->phys_to_virt(kvm_pte_to_phys(pte));
|
||||
}
|
||||
|
||||
static void kvm_clear_pte(kvm_pte_t *ptep)
|
||||
{
|
||||
WRITE_ONCE(*ptep, 0);
|
||||
@@ -281,7 +276,8 @@ static int hyp_set_prot_attr(enum kvm_pgtable_prot prot, kvm_pte_t *ptep)
|
||||
kvm_pte_t attr;
|
||||
u32 mtype;
|
||||
|
||||
if (!(prot & KVM_PGTABLE_PROT_R) || (device && nc))
|
||||
if (!(prot & KVM_PGTABLE_PROT_R) || (device && nc) ||
|
||||
(prot & (KVM_PGTABLE_PROT_PXN | KVM_PGTABLE_PROT_UXN)))
|
||||
return -EINVAL;
|
||||
|
||||
if (device)
|
||||
@@ -570,16 +566,15 @@ static bool stage2_has_fwb(struct kvm_pgtable *pgt)
|
||||
#define KVM_S2_MEMATTR(pgt, attr) PAGE_S2_MEMATTR(attr, stage2_has_fwb(pgt))
|
||||
|
||||
static int stage2_set_prot_attr(struct kvm_pgtable *pgt, enum kvm_pgtable_prot prot,
|
||||
kvm_pte_t *ptep)
|
||||
kvm_pte_t *ptep)
|
||||
{
|
||||
u64 exec_type = KVM_PTE_LEAF_ATTR_HI_S2_XN_XN;
|
||||
bool device = prot & KVM_PGTABLE_PROT_DEVICE;
|
||||
u32 sh = KVM_PTE_LEAF_ATTR_LO_S2_SH_IS;
|
||||
bool nc = prot & KVM_PGTABLE_PROT_NC;
|
||||
enum kvm_pgtable_prot exec_prot;
|
||||
kvm_pte_t attr;
|
||||
|
||||
if (device && nc)
|
||||
return -EINVAL;
|
||||
|
||||
if (device)
|
||||
attr = KVM_S2_MEMATTR(pgt, DEVICE_nGnRE);
|
||||
else if (nc)
|
||||
@@ -587,11 +582,23 @@ static int stage2_set_prot_attr(struct kvm_pgtable *pgt, enum kvm_pgtable_prot p
|
||||
else
|
||||
attr = KVM_S2_MEMATTR(pgt, NORMAL);
|
||||
|
||||
if (!(prot & KVM_PGTABLE_PROT_X))
|
||||
attr |= KVM_PTE_LEAF_ATTR_HI_S2_XN;
|
||||
else if (device)
|
||||
return -EINVAL;
|
||||
exec_prot = prot & (KVM_PGTABLE_PROT_X | KVM_PGTABLE_PROT_PXN | KVM_PGTABLE_PROT_UXN);
|
||||
switch(exec_prot) {
|
||||
case KVM_PGTABLE_PROT_X:
|
||||
goto set_ap;
|
||||
case KVM_PGTABLE_PROT_PXN:
|
||||
exec_type = KVM_PTE_LEAF_ATTR_HI_S2_XN_PXN;
|
||||
break;
|
||||
case KVM_PGTABLE_PROT_UXN:
|
||||
exec_type = KVM_PTE_LEAF_ATTR_HI_S2_XN_UXN;
|
||||
break;
|
||||
default:
|
||||
if (exec_prot)
|
||||
return -EINVAL;
|
||||
}
|
||||
attr |= FIELD_PREP(KVM_PTE_LEAF_ATTR_HI_S2_XN, exec_type);
|
||||
|
||||
set_ap:
|
||||
if (prot & KVM_PGTABLE_PROT_R)
|
||||
attr |= KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R;
|
||||
|
||||
@@ -617,8 +624,21 @@ enum kvm_pgtable_prot kvm_pgtable_stage2_pte_prot(kvm_pte_t pte)
|
||||
prot |= KVM_PGTABLE_PROT_R;
|
||||
if (pte & KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W)
|
||||
prot |= KVM_PGTABLE_PROT_W;
|
||||
if (!(pte & KVM_PTE_LEAF_ATTR_HI_S2_XN))
|
||||
switch(FIELD_GET(KVM_PTE_LEAF_ATTR_HI_S2_XN, pte)) {
|
||||
case 0:
|
||||
prot |= KVM_PGTABLE_PROT_X;
|
||||
break;
|
||||
case KVM_PTE_LEAF_ATTR_HI_S2_XN_PXN:
|
||||
prot |= KVM_PGTABLE_PROT_PXN;
|
||||
break;
|
||||
case KVM_PTE_LEAF_ATTR_HI_S2_XN_UXN:
|
||||
prot |= KVM_PGTABLE_PROT_UXN;
|
||||
break;
|
||||
case KVM_PTE_LEAF_ATTR_HI_S2_XN_XN:
|
||||
break;
|
||||
default:
|
||||
WARN_ON(1);
|
||||
}
|
||||
|
||||
return prot;
|
||||
}
|
||||
@@ -660,7 +680,9 @@ static bool stage2_pte_cacheable(struct kvm_pgtable *pgt, kvm_pte_t pte)
|
||||
|
||||
static bool stage2_pte_executable(kvm_pte_t pte)
|
||||
{
|
||||
return kvm_pte_valid(pte) && !(pte & KVM_PTE_LEAF_ATTR_HI_S2_XN);
|
||||
kvm_pte_t xn = FIELD_GET(KVM_PTE_LEAF_ATTR_HI_S2_XN, pte);
|
||||
|
||||
return kvm_pte_valid(pte) && xn != KVM_PTE_LEAF_ATTR_HI_S2_XN_XN;
|
||||
}
|
||||
|
||||
static bool stage2_leaf_mapping_allowed(u64 addr, u64 end, u32 level,
|
||||
@@ -1017,6 +1039,30 @@ int kvm_pgtable_stage2_unmap(struct kvm_pgtable *pgt, u64 addr, u64 size)
|
||||
return kvm_pgtable_walk(pgt, addr, size, &walker);
|
||||
}
|
||||
|
||||
static int stage2_reclaim_leaf_walker(u64 addr, u64 end, u32 level, kvm_pte_t *ptep,
|
||||
enum kvm_pgtable_walk_flags flag, void * const arg)
|
||||
{
|
||||
stage2_coalesce_walk_table_post(addr, end, level, ptep, arg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int kvm_pgtable_stage2_reclaim_leaves(struct kvm_pgtable *pgt, u64 addr, u64 size)
|
||||
{
|
||||
struct stage2_map_data map_data = {
|
||||
.phys = KVM_PHYS_INVALID,
|
||||
.mmu = pgt->mmu,
|
||||
.mm_ops = pgt->mm_ops,
|
||||
};
|
||||
struct kvm_pgtable_walker walker = {
|
||||
.cb = stage2_reclaim_leaf_walker,
|
||||
.arg = &map_data,
|
||||
.flags = KVM_PGTABLE_WALK_TABLE_POST,
|
||||
};
|
||||
|
||||
return kvm_pgtable_walk(pgt, addr, size, &walker);
|
||||
}
|
||||
|
||||
struct stage2_attr_data {
|
||||
kvm_pte_t attr_set;
|
||||
kvm_pte_t attr_clr;
|
||||
@@ -1135,7 +1181,7 @@ int kvm_pgtable_stage2_relax_perms(struct kvm_pgtable *pgt, u64 addr,
|
||||
u32 level;
|
||||
kvm_pte_t set = 0, clr = 0;
|
||||
|
||||
if (prot & KVM_PTE_LEAF_ATTR_HI_SW)
|
||||
if (prot & !KVM_PGTABLE_PROT_RWX)
|
||||
return -EINVAL;
|
||||
|
||||
if (prot & KVM_PGTABLE_PROT_R)
|
||||
|
||||
@@ -429,6 +429,8 @@ int kvm_arm_set_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
|
||||
u64 val;
|
||||
int wa_level;
|
||||
|
||||
if (KVM_REG_SIZE(reg->id) != sizeof(val))
|
||||
return -ENOENT;
|
||||
if (copy_from_user(&val, uaddr, KVM_REG_SIZE(reg->id)))
|
||||
return -EFAULT;
|
||||
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
|
||||
#include <linux/kvm_host.h>
|
||||
|
||||
/* Did all IOMMUs register as expected. */
|
||||
static bool finalised;
|
||||
|
||||
static unsigned long dev_to_id(struct device *dev)
|
||||
{
|
||||
/* Use the struct device pointer as a unique identifier. */
|
||||
@@ -16,7 +19,7 @@ int pkvm_iommu_driver_init(u64 drv, void *data, size_t size)
|
||||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_iommu_driver_init, drv, data, size);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_driver_init);
|
||||
EXPORT_SYMBOL(pkvm_iommu_driver_init);
|
||||
|
||||
int pkvm_iommu_register(struct device *dev, u64 drv, phys_addr_t pa,
|
||||
size_t size, struct device *parent, u8 flags)
|
||||
@@ -41,24 +44,30 @@ int pkvm_iommu_register(struct device *dev, u64 drv, phys_addr_t pa,
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_register);
|
||||
EXPORT_SYMBOL(pkvm_iommu_register);
|
||||
|
||||
int pkvm_iommu_suspend(struct device *dev)
|
||||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_iommu_pm_notify, dev_to_id(dev),
|
||||
PKVM_IOMMU_PM_SUSPEND);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_suspend);
|
||||
EXPORT_SYMBOL(pkvm_iommu_suspend);
|
||||
|
||||
int pkvm_iommu_resume(struct device *dev)
|
||||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_iommu_pm_notify, dev_to_id(dev),
|
||||
PKVM_IOMMU_PM_RESUME);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_resume);
|
||||
EXPORT_SYMBOL(pkvm_iommu_resume);
|
||||
|
||||
int pkvm_iommu_finalize(int err)
|
||||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_iommu_finalize, err);
|
||||
finalised = !err;
|
||||
return kvm_call_hyp_nvhe(__pkvm_iommu_finalize, 0);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_finalize);
|
||||
|
||||
bool pkvm_iommu_finalized(void)
|
||||
{
|
||||
return finalised;
|
||||
}
|
||||
|
||||
@@ -448,6 +448,9 @@ static int __init pkvm_firmware_rmem_clear(void)
|
||||
return -EINVAL;
|
||||
|
||||
memset(addr, 0, size);
|
||||
/* Clear so user space doesn't get stale info via IOCTL. */
|
||||
pkvm_firmware_mem = NULL;
|
||||
|
||||
dcache_clean_poc((unsigned long)addr, (unsigned long)addr + size);
|
||||
memunmap(addr);
|
||||
return 0;
|
||||
@@ -501,6 +504,10 @@ static int __init finalize_pkvm(void)
|
||||
if (pkvm_load_early_modules())
|
||||
pkvm_firmware_rmem_clear();
|
||||
|
||||
/* If no DMA protection. */
|
||||
if (!pkvm_iommu_finalized())
|
||||
pkvm_firmware_rmem_clear();
|
||||
|
||||
/*
|
||||
* Exclude HYP sections from kmemleak so that they don't get peeked
|
||||
* at, which would end badly once inaccessible.
|
||||
@@ -578,26 +585,14 @@ int pkvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap)
|
||||
#ifdef CONFIG_MODULES
|
||||
static char early_pkvm_modules[COMMAND_LINE_SIZE] __initdata;
|
||||
|
||||
static int __init pkvm_enable_module_late_loading(void)
|
||||
{
|
||||
extern unsigned long kvm_nvhe_sym(pkvm_priv_hcall_limit);
|
||||
|
||||
WARN(1, "Loading pKVM modules with kvm-arm.protected_modules is deprecated\n"
|
||||
"Use kvm-arm.protected_modules=<module1>,<module2>");
|
||||
|
||||
/*
|
||||
* Move the limit to allow module loading HVCs. It will be moved back to
|
||||
* its original position in __pkvm_close_module_registration().
|
||||
*/
|
||||
kvm_nvhe_sym(pkvm_priv_hcall_limit) = __KVM_HOST_SMCCC_FUNC___pkvm_alloc_module_va;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init early_pkvm_modules_cfg(char *arg)
|
||||
{
|
||||
/*
|
||||
* Loading pKVM modules with kvm-arm.protected_modules is deprecated
|
||||
* Use kvm-arm.protected_modules=<module1>,<module2>
|
||||
*/
|
||||
if (!arg)
|
||||
return pkvm_enable_module_late_loading();
|
||||
return -EINVAL;
|
||||
|
||||
strscpy(early_pkvm_modules, arg, COMMAND_LINE_SIZE);
|
||||
|
||||
@@ -800,7 +795,8 @@ int __pkvm_load_el2_module(struct module *this, unsigned long *token)
|
||||
int ret, i, secs_first;
|
||||
size_t offset, size;
|
||||
|
||||
if (!is_protected_kvm_enabled())
|
||||
/* The pKVM hyp only allows loading before it is fully initialized */
|
||||
if (!is_protected_kvm_enabled() || is_pkvm_initialized())
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(secs_map); i++) {
|
||||
@@ -870,11 +866,11 @@ int __pkvm_load_el2_module(struct module *this, unsigned long *token)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__pkvm_load_el2_module);
|
||||
EXPORT_SYMBOL(__pkvm_load_el2_module);
|
||||
|
||||
int __pkvm_register_el2_call(unsigned long hfn_hyp_va)
|
||||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_register_hcall, hfn_hyp_va);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__pkvm_register_el2_call);
|
||||
EXPORT_SYMBOL(__pkvm_register_el2_call);
|
||||
#endif /* CONFIG_MODULES */
|
||||
|
||||
@@ -15,16 +15,14 @@
|
||||
#include <kvm/arm_pmu.h>
|
||||
#include <kvm/arm_vgic.h>
|
||||
|
||||
#define PERF_ATTR_CFG1_COUNTER_64BIT BIT(0)
|
||||
|
||||
DEFINE_STATIC_KEY_FALSE(kvm_arm_pmu_available);
|
||||
|
||||
static LIST_HEAD(arm_pmus);
|
||||
static DEFINE_MUTEX(arm_pmus_lock);
|
||||
|
||||
static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx);
|
||||
static void kvm_pmu_update_pmc_chained(struct kvm_vcpu *vcpu, u64 select_idx);
|
||||
static void kvm_pmu_stop_counter(struct kvm_vcpu *vcpu, struct kvm_pmc *pmc);
|
||||
|
||||
#define PERF_ATTR_CFG1_KVM_PMU_CHAINED 0x1
|
||||
|
||||
static u32 kvm_pmu_event_mask(struct kvm *kvm)
|
||||
{
|
||||
@@ -52,11 +50,22 @@ static u32 kvm_pmu_event_mask(struct kvm *kvm)
|
||||
* @select_idx: The counter index
|
||||
*/
|
||||
static bool kvm_pmu_idx_is_64bit(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
return (select_idx == ARMV8_PMU_CYCLE_IDX);
|
||||
}
|
||||
|
||||
static bool kvm_pmu_idx_has_64bit_overflow(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
return (select_idx == ARMV8_PMU_CYCLE_IDX &&
|
||||
__vcpu_sys_reg(vcpu, PMCR_EL0) & ARMV8_PMU_PMCR_LC);
|
||||
}
|
||||
|
||||
static bool kvm_pmu_counter_can_chain(struct kvm_vcpu *vcpu, u64 idx)
|
||||
{
|
||||
return (!(idx & 1) && (idx + 1) < ARMV8_PMU_CYCLE_IDX &&
|
||||
!kvm_pmu_idx_has_64bit_overflow(vcpu, idx));
|
||||
}
|
||||
|
||||
static struct kvm_vcpu *kvm_pmc_to_vcpu(struct kvm_pmc *pmc)
|
||||
{
|
||||
struct kvm_pmu *pmu;
|
||||
@@ -69,91 +78,22 @@ static struct kvm_vcpu *kvm_pmc_to_vcpu(struct kvm_pmc *pmc)
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_pmc_is_chained - determine if the pmc is chained
|
||||
* @pmc: The PMU counter pointer
|
||||
*/
|
||||
static bool kvm_pmu_pmc_is_chained(struct kvm_pmc *pmc)
|
||||
{
|
||||
struct kvm_vcpu *vcpu = kvm_pmc_to_vcpu(pmc);
|
||||
|
||||
return test_bit(pmc->idx >> 1, vcpu->arch.pmu.chained);
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_idx_is_high_counter - determine if select_idx is a high/low counter
|
||||
* @select_idx: The counter index
|
||||
*/
|
||||
static bool kvm_pmu_idx_is_high_counter(u64 select_idx)
|
||||
{
|
||||
return select_idx & 0x1;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_get_canonical_pmc - obtain the canonical pmc
|
||||
* @pmc: The PMU counter pointer
|
||||
*
|
||||
* When a pair of PMCs are chained together we use the low counter (canonical)
|
||||
* to hold the underlying perf event.
|
||||
*/
|
||||
static struct kvm_pmc *kvm_pmu_get_canonical_pmc(struct kvm_pmc *pmc)
|
||||
{
|
||||
if (kvm_pmu_pmc_is_chained(pmc) &&
|
||||
kvm_pmu_idx_is_high_counter(pmc->idx))
|
||||
return pmc - 1;
|
||||
|
||||
return pmc;
|
||||
}
|
||||
static struct kvm_pmc *kvm_pmu_get_alternate_pmc(struct kvm_pmc *pmc)
|
||||
{
|
||||
if (kvm_pmu_idx_is_high_counter(pmc->idx))
|
||||
return pmc - 1;
|
||||
else
|
||||
return pmc + 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_idx_has_chain_evtype - determine if the event type is chain
|
||||
* kvm_pmu_get_counter_value - get PMU counter value
|
||||
* @vcpu: The vcpu pointer
|
||||
* @select_idx: The counter index
|
||||
*/
|
||||
static bool kvm_pmu_idx_has_chain_evtype(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
u64 kvm_pmu_get_counter_value(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
u64 eventsel, reg;
|
||||
u64 counter, reg, enabled, running;
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
struct kvm_pmc *pmc = &pmu->pmc[select_idx];
|
||||
|
||||
select_idx |= 0x1;
|
||||
if (!kvm_vcpu_has_pmu(vcpu))
|
||||
return 0;
|
||||
|
||||
if (select_idx == ARMV8_PMU_CYCLE_IDX)
|
||||
return false;
|
||||
|
||||
reg = PMEVTYPER0_EL0 + select_idx;
|
||||
eventsel = __vcpu_sys_reg(vcpu, reg) & kvm_pmu_event_mask(vcpu->kvm);
|
||||
|
||||
return eventsel == ARMV8_PMUV3_PERFCTR_CHAIN;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_get_pair_counter_value - get PMU counter value
|
||||
* @vcpu: The vcpu pointer
|
||||
* @pmc: The PMU counter pointer
|
||||
*/
|
||||
static u64 kvm_pmu_get_pair_counter_value(struct kvm_vcpu *vcpu,
|
||||
struct kvm_pmc *pmc)
|
||||
{
|
||||
u64 counter, counter_high, reg, enabled, running;
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(pmc)) {
|
||||
pmc = kvm_pmu_get_canonical_pmc(pmc);
|
||||
reg = PMEVCNTR0_EL0 + pmc->idx;
|
||||
|
||||
counter = __vcpu_sys_reg(vcpu, reg);
|
||||
counter_high = __vcpu_sys_reg(vcpu, reg + 1);
|
||||
|
||||
counter = lower_32_bits(counter) | (counter_high << 32);
|
||||
} else {
|
||||
reg = (pmc->idx == ARMV8_PMU_CYCLE_IDX)
|
||||
? PMCCNTR_EL0 : PMEVCNTR0_EL0 + pmc->idx;
|
||||
counter = __vcpu_sys_reg(vcpu, reg);
|
||||
}
|
||||
reg = (pmc->idx == ARMV8_PMU_CYCLE_IDX)
|
||||
? PMCCNTR_EL0 : PMEVCNTR0_EL0 + pmc->idx;
|
||||
counter = __vcpu_sys_reg(vcpu, reg);
|
||||
|
||||
/*
|
||||
* The real counter value is equal to the value of counter register plus
|
||||
@@ -163,29 +103,7 @@ static u64 kvm_pmu_get_pair_counter_value(struct kvm_vcpu *vcpu,
|
||||
counter += perf_event_read_value(pmc->perf_event, &enabled,
|
||||
&running);
|
||||
|
||||
return counter;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_get_counter_value - get PMU counter value
|
||||
* @vcpu: The vcpu pointer
|
||||
* @select_idx: The counter index
|
||||
*/
|
||||
u64 kvm_pmu_get_counter_value(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
u64 counter;
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
struct kvm_pmc *pmc = &pmu->pmc[select_idx];
|
||||
|
||||
if (!kvm_vcpu_has_pmu(vcpu))
|
||||
return 0;
|
||||
|
||||
counter = kvm_pmu_get_pair_counter_value(vcpu, pmc);
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(pmc) &&
|
||||
kvm_pmu_idx_is_high_counter(select_idx))
|
||||
counter = upper_32_bits(counter);
|
||||
else if (select_idx != ARMV8_PMU_CYCLE_IDX)
|
||||
if (!kvm_pmu_idx_is_64bit(vcpu, select_idx))
|
||||
counter = lower_32_bits(counter);
|
||||
|
||||
return counter;
|
||||
@@ -218,7 +136,6 @@ void kvm_pmu_set_counter_value(struct kvm_vcpu *vcpu, u64 select_idx, u64 val)
|
||||
*/
|
||||
static void kvm_pmu_release_perf_event(struct kvm_pmc *pmc)
|
||||
{
|
||||
pmc = kvm_pmu_get_canonical_pmc(pmc);
|
||||
if (pmc->perf_event) {
|
||||
perf_event_disable(pmc->perf_event);
|
||||
perf_event_release_kernel(pmc->perf_event);
|
||||
@@ -236,11 +153,10 @@ static void kvm_pmu_stop_counter(struct kvm_vcpu *vcpu, struct kvm_pmc *pmc)
|
||||
{
|
||||
u64 counter, reg, val;
|
||||
|
||||
pmc = kvm_pmu_get_canonical_pmc(pmc);
|
||||
if (!pmc->perf_event)
|
||||
return;
|
||||
|
||||
counter = kvm_pmu_get_pair_counter_value(vcpu, pmc);
|
||||
counter = kvm_pmu_get_counter_value(vcpu, pmc->idx);
|
||||
|
||||
if (pmc->idx == ARMV8_PMU_CYCLE_IDX) {
|
||||
reg = PMCCNTR_EL0;
|
||||
@@ -252,9 +168,6 @@ static void kvm_pmu_stop_counter(struct kvm_vcpu *vcpu, struct kvm_pmc *pmc)
|
||||
|
||||
__vcpu_sys_reg(vcpu, reg) = val;
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(pmc))
|
||||
__vcpu_sys_reg(vcpu, reg + 1) = upper_32_bits(counter);
|
||||
|
||||
kvm_pmu_release_perf_event(pmc);
|
||||
}
|
||||
|
||||
@@ -285,8 +198,6 @@ void kvm_pmu_vcpu_reset(struct kvm_vcpu *vcpu)
|
||||
|
||||
for_each_set_bit(i, &mask, 32)
|
||||
kvm_pmu_stop_counter(vcpu, &pmu->pmc[i]);
|
||||
|
||||
bitmap_zero(vcpu->arch.pmu.chained, ARMV8_PMU_MAX_COUNTER_PAIRS);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -340,12 +251,9 @@ void kvm_pmu_enable_counter_mask(struct kvm_vcpu *vcpu, u64 val)
|
||||
|
||||
pmc = &pmu->pmc[i];
|
||||
|
||||
/* A change in the enable state may affect the chain state */
|
||||
kvm_pmu_update_pmc_chained(vcpu, i);
|
||||
kvm_pmu_create_perf_event(vcpu, i);
|
||||
|
||||
/* At this point, pmc must be the canonical */
|
||||
if (pmc->perf_event) {
|
||||
if (!pmc->perf_event) {
|
||||
kvm_pmu_create_perf_event(vcpu, i);
|
||||
} else {
|
||||
perf_event_enable(pmc->perf_event);
|
||||
if (pmc->perf_event->state != PERF_EVENT_STATE_ACTIVE)
|
||||
kvm_debug("fail to enable perf event\n");
|
||||
@@ -375,11 +283,6 @@ void kvm_pmu_disable_counter_mask(struct kvm_vcpu *vcpu, u64 val)
|
||||
|
||||
pmc = &pmu->pmc[i];
|
||||
|
||||
/* A change in the enable state may affect the chain state */
|
||||
kvm_pmu_update_pmc_chained(vcpu, i);
|
||||
kvm_pmu_create_perf_event(vcpu, i);
|
||||
|
||||
/* At this point, pmc must be the canonical */
|
||||
if (pmc->perf_event)
|
||||
perf_event_disable(pmc->perf_event);
|
||||
}
|
||||
@@ -484,6 +387,65 @@ static void kvm_pmu_perf_overflow_notify_vcpu(struct irq_work *work)
|
||||
kvm_vcpu_kick(vcpu);
|
||||
}
|
||||
|
||||
/*
|
||||
* Perform an increment on any of the counters described in @mask,
|
||||
* generating the overflow if required, and propagate it as a chained
|
||||
* event if possible.
|
||||
*/
|
||||
static void kvm_pmu_counter_increment(struct kvm_vcpu *vcpu,
|
||||
unsigned long mask, u32 event)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!(__vcpu_sys_reg(vcpu, PMCR_EL0) & ARMV8_PMU_PMCR_E))
|
||||
return;
|
||||
|
||||
/* Weed out disabled counters */
|
||||
mask &= __vcpu_sys_reg(vcpu, PMCNTENSET_EL0);
|
||||
|
||||
for_each_set_bit(i, &mask, ARMV8_PMU_CYCLE_IDX) {
|
||||
u64 type, reg;
|
||||
|
||||
/* Filter on event type */
|
||||
type = __vcpu_sys_reg(vcpu, PMEVTYPER0_EL0 + i);
|
||||
type &= kvm_pmu_event_mask(vcpu->kvm);
|
||||
if (type != event)
|
||||
continue;
|
||||
|
||||
/* Increment this counter */
|
||||
reg = __vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) + 1;
|
||||
reg = lower_32_bits(reg);
|
||||
__vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) = reg;
|
||||
|
||||
if (reg) /* No overflow? move on */
|
||||
continue;
|
||||
|
||||
/* Mark overflow */
|
||||
__vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(i);
|
||||
|
||||
if (kvm_pmu_counter_can_chain(vcpu, i))
|
||||
kvm_pmu_counter_increment(vcpu, BIT(i + 1),
|
||||
ARMV8_PMUV3_PERFCTR_CHAIN);
|
||||
}
|
||||
}
|
||||
|
||||
/* Compute the sample period for a given counter value */
|
||||
static u64 compute_period(struct kvm_vcpu *vcpu, u64 select_idx, u64 counter)
|
||||
{
|
||||
u64 val;
|
||||
|
||||
if (kvm_pmu_idx_is_64bit(vcpu, select_idx)) {
|
||||
if (!kvm_pmu_idx_has_64bit_overflow(vcpu, select_idx))
|
||||
val = -(counter & GENMASK(31, 0));
|
||||
else
|
||||
val = (-counter) & GENMASK(63, 0);
|
||||
} else {
|
||||
val = (-counter) & GENMASK(31, 0);
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* When the perf event overflows, set the overflow status and inform the vcpu.
|
||||
*/
|
||||
@@ -503,10 +465,7 @@ static void kvm_pmu_perf_overflow(struct perf_event *perf_event,
|
||||
* Reset the sample period to the architectural limit,
|
||||
* i.e. the point where the counter overflows.
|
||||
*/
|
||||
period = -(local64_read(&perf_event->count));
|
||||
|
||||
if (!kvm_pmu_idx_is_64bit(vcpu, pmc->idx))
|
||||
period &= GENMASK(31, 0);
|
||||
period = compute_period(vcpu, idx, local64_read(&perf_event->count));
|
||||
|
||||
local64_set(&perf_event->hw.period_left, 0);
|
||||
perf_event->attr.sample_period = period;
|
||||
@@ -514,6 +473,10 @@ static void kvm_pmu_perf_overflow(struct perf_event *perf_event,
|
||||
|
||||
__vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(idx);
|
||||
|
||||
if (kvm_pmu_counter_can_chain(vcpu, idx))
|
||||
kvm_pmu_counter_increment(vcpu, BIT(idx + 1),
|
||||
ARMV8_PMUV3_PERFCTR_CHAIN);
|
||||
|
||||
if (kvm_pmu_overflow_status(vcpu)) {
|
||||
kvm_make_request(KVM_REQ_IRQ_PENDING, vcpu);
|
||||
|
||||
@@ -533,50 +496,7 @@ static void kvm_pmu_perf_overflow(struct perf_event *perf_event,
|
||||
*/
|
||||
void kvm_pmu_software_increment(struct kvm_vcpu *vcpu, u64 val)
|
||||
{
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
int i;
|
||||
|
||||
if (!kvm_vcpu_has_pmu(vcpu))
|
||||
return;
|
||||
|
||||
if (!(__vcpu_sys_reg(vcpu, PMCR_EL0) & ARMV8_PMU_PMCR_E))
|
||||
return;
|
||||
|
||||
/* Weed out disabled counters */
|
||||
val &= __vcpu_sys_reg(vcpu, PMCNTENSET_EL0);
|
||||
|
||||
for (i = 0; i < ARMV8_PMU_CYCLE_IDX; i++) {
|
||||
u64 type, reg;
|
||||
|
||||
if (!(val & BIT(i)))
|
||||
continue;
|
||||
|
||||
/* PMSWINC only applies to ... SW_INC! */
|
||||
type = __vcpu_sys_reg(vcpu, PMEVTYPER0_EL0 + i);
|
||||
type &= kvm_pmu_event_mask(vcpu->kvm);
|
||||
if (type != ARMV8_PMUV3_PERFCTR_SW_INCR)
|
||||
continue;
|
||||
|
||||
/* increment this even SW_INC counter */
|
||||
reg = __vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) + 1;
|
||||
reg = lower_32_bits(reg);
|
||||
__vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) = reg;
|
||||
|
||||
if (reg) /* no overflow on the low part */
|
||||
continue;
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(&pmu->pmc[i])) {
|
||||
/* increment the high counter */
|
||||
reg = __vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i + 1) + 1;
|
||||
reg = lower_32_bits(reg);
|
||||
__vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i + 1) = reg;
|
||||
if (!reg) /* mark overflow on the high counter */
|
||||
__vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(i + 1);
|
||||
} else {
|
||||
/* mark overflow on low counter */
|
||||
__vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(i);
|
||||
}
|
||||
}
|
||||
kvm_pmu_counter_increment(vcpu, val, ARMV8_PMUV3_PERFCTR_SW_INCR);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -591,6 +511,9 @@ void kvm_pmu_handle_pmcr(struct kvm_vcpu *vcpu, u64 val)
|
||||
if (!kvm_vcpu_has_pmu(vcpu))
|
||||
return;
|
||||
|
||||
/* The reset bits don't indicate any state, and shouldn't be saved. */
|
||||
__vcpu_sys_reg(vcpu, PMCR_EL0) = val & ~(ARMV8_PMU_PMCR_C | ARMV8_PMU_PMCR_P);
|
||||
|
||||
if (val & ARMV8_PMU_PMCR_E) {
|
||||
kvm_pmu_enable_counter_mask(vcpu,
|
||||
__vcpu_sys_reg(vcpu, PMCNTENSET_EL0));
|
||||
@@ -626,18 +549,11 @@ static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
struct arm_pmu *arm_pmu = vcpu->kvm->arch.arm_pmu;
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
struct kvm_pmc *pmc;
|
||||
struct kvm_pmc *pmc = &pmu->pmc[select_idx];
|
||||
struct perf_event *event;
|
||||
struct perf_event_attr attr;
|
||||
u64 eventsel, counter, reg, data;
|
||||
|
||||
/*
|
||||
* For chained counters the event type and filtering attributes are
|
||||
* obtained from the low/even counter. We also use this counter to
|
||||
* determine if the event is enabled/disabled.
|
||||
*/
|
||||
pmc = kvm_pmu_get_canonical_pmc(&pmu->pmc[select_idx]);
|
||||
|
||||
reg = (pmc->idx == ARMV8_PMU_CYCLE_IDX)
|
||||
? PMCCFILTR_EL0 : PMEVTYPER0_EL0 + pmc->idx;
|
||||
data = __vcpu_sys_reg(vcpu, reg);
|
||||
@@ -648,8 +564,12 @@ static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
else
|
||||
eventsel = data & kvm_pmu_event_mask(vcpu->kvm);
|
||||
|
||||
/* Software increment event doesn't need to be backed by a perf event */
|
||||
if (eventsel == ARMV8_PMUV3_PERFCTR_SW_INCR)
|
||||
/*
|
||||
* Neither SW increment nor chained events need to be backed
|
||||
* by a perf event.
|
||||
*/
|
||||
if (eventsel == ARMV8_PMUV3_PERFCTR_SW_INCR ||
|
||||
eventsel == ARMV8_PMUV3_PERFCTR_CHAIN)
|
||||
return;
|
||||
|
||||
/*
|
||||
@@ -671,30 +591,20 @@ static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
attr.exclude_host = 1; /* Don't count host events */
|
||||
attr.config = eventsel;
|
||||
|
||||
counter = kvm_pmu_get_pair_counter_value(vcpu, pmc);
|
||||
counter = kvm_pmu_get_counter_value(vcpu, select_idx);
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(pmc)) {
|
||||
/**
|
||||
* The initial sample period (overflow count) of an event. For
|
||||
* chained counters we only support overflow interrupts on the
|
||||
* high counter.
|
||||
*/
|
||||
attr.sample_period = (-counter) & GENMASK(63, 0);
|
||||
attr.config1 |= PERF_ATTR_CFG1_KVM_PMU_CHAINED;
|
||||
/*
|
||||
* If counting with a 64bit counter, advertise it to the perf
|
||||
* code, carefully dealing with the initial sample period
|
||||
* which also depends on the overflow.
|
||||
*/
|
||||
if (kvm_pmu_idx_is_64bit(vcpu, select_idx))
|
||||
attr.config1 |= PERF_ATTR_CFG1_COUNTER_64BIT;
|
||||
|
||||
event = perf_event_create_kernel_counter(&attr, -1, current,
|
||||
kvm_pmu_perf_overflow,
|
||||
pmc + 1);
|
||||
} else {
|
||||
/* The initial sample period (overflow count) of an event. */
|
||||
if (kvm_pmu_idx_is_64bit(vcpu, pmc->idx))
|
||||
attr.sample_period = (-counter) & GENMASK(63, 0);
|
||||
else
|
||||
attr.sample_period = (-counter) & GENMASK(31, 0);
|
||||
attr.sample_period = compute_period(vcpu, select_idx, counter);
|
||||
|
||||
event = perf_event_create_kernel_counter(&attr, -1, current,
|
||||
event = perf_event_create_kernel_counter(&attr, -1, current,
|
||||
kvm_pmu_perf_overflow, pmc);
|
||||
}
|
||||
|
||||
if (IS_ERR(event)) {
|
||||
pr_err_once("kvm: pmu event creation failed %ld\n",
|
||||
@@ -705,41 +615,6 @@ static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
pmc->perf_event = event;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_update_pmc_chained - update chained bitmap
|
||||
* @vcpu: The vcpu pointer
|
||||
* @select_idx: The number of selected counter
|
||||
*
|
||||
* Update the chained bitmap based on the event type written in the
|
||||
* typer register and the enable state of the odd register.
|
||||
*/
|
||||
static void kvm_pmu_update_pmc_chained(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
struct kvm_pmc *pmc = &pmu->pmc[select_idx], *canonical_pmc;
|
||||
bool new_state, old_state;
|
||||
|
||||
old_state = kvm_pmu_pmc_is_chained(pmc);
|
||||
new_state = kvm_pmu_idx_has_chain_evtype(vcpu, pmc->idx) &&
|
||||
kvm_pmu_counter_is_enabled(vcpu, pmc->idx | 0x1);
|
||||
|
||||
if (old_state == new_state)
|
||||
return;
|
||||
|
||||
canonical_pmc = kvm_pmu_get_canonical_pmc(pmc);
|
||||
kvm_pmu_stop_counter(vcpu, canonical_pmc);
|
||||
if (new_state) {
|
||||
/*
|
||||
* During promotion from !chained to chained we must ensure
|
||||
* the adjacent counter is stopped and its event destroyed
|
||||
*/
|
||||
kvm_pmu_stop_counter(vcpu, kvm_pmu_get_alternate_pmc(pmc));
|
||||
set_bit(pmc->idx >> 1, vcpu->arch.pmu.chained);
|
||||
return;
|
||||
}
|
||||
clear_bit(pmc->idx >> 1, vcpu->arch.pmu.chained);
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_set_counter_event_type - set selected counter to monitor some event
|
||||
* @vcpu: The vcpu pointer
|
||||
@@ -767,7 +642,6 @@ void kvm_pmu_set_counter_event_type(struct kvm_vcpu *vcpu, u64 data,
|
||||
|
||||
__vcpu_sys_reg(vcpu, reg) = data & mask;
|
||||
|
||||
kvm_pmu_update_pmc_chained(vcpu, select_idx);
|
||||
kvm_pmu_create_perf_event(vcpu, select_idx);
|
||||
}
|
||||
|
||||
|
||||
@@ -665,13 +665,15 @@ static bool access_pmcr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
|
||||
return false;
|
||||
|
||||
if (p->is_write) {
|
||||
/* Only update writeable bits of PMCR */
|
||||
/*
|
||||
* Only update writeable bits of PMCR (continuing into
|
||||
* kvm_pmu_handle_pmcr() as well)
|
||||
*/
|
||||
val = __vcpu_sys_reg(vcpu, PMCR_EL0);
|
||||
val &= ~ARMV8_PMU_PMCR_MASK;
|
||||
val |= p->regval & ARMV8_PMU_PMCR_MASK;
|
||||
if (!kvm_supports_32bit_el0())
|
||||
val |= ARMV8_PMU_PMCR_LC;
|
||||
__vcpu_sys_reg(vcpu, PMCR_EL0) = val;
|
||||
kvm_pmu_handle_pmcr(vcpu, val);
|
||||
} else {
|
||||
/* PMCR.P & PMCR.C are RAZ */
|
||||
|
||||
@@ -554,6 +554,9 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr,
|
||||
unsigned long vm_flags;
|
||||
unsigned int mm_flags = FAULT_FLAG_DEFAULT;
|
||||
unsigned long addr = untagged_addr(far);
|
||||
#ifdef CONFIG_PER_VMA_LOCK
|
||||
struct vm_area_struct *vma;
|
||||
#endif
|
||||
|
||||
if (kprobe_page_fault(regs, esr))
|
||||
return 0;
|
||||
@@ -611,6 +614,36 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr,
|
||||
|
||||
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr);
|
||||
|
||||
#ifdef CONFIG_PER_VMA_LOCK
|
||||
if (!(mm_flags & FAULT_FLAG_USER))
|
||||
goto lock_mmap;
|
||||
|
||||
vma = lock_vma_under_rcu(mm, addr);
|
||||
if (!vma)
|
||||
goto lock_mmap;
|
||||
|
||||
if (!(vma->vm_flags & vm_flags)) {
|
||||
vma_end_read(vma);
|
||||
goto lock_mmap;
|
||||
}
|
||||
fault = handle_mm_fault(vma, addr & PAGE_MASK,
|
||||
mm_flags | FAULT_FLAG_VMA_LOCK, regs);
|
||||
vma_end_read(vma);
|
||||
|
||||
if (!(fault & VM_FAULT_RETRY)) {
|
||||
count_vm_vma_lock_event(VMA_LOCK_SUCCESS);
|
||||
goto done;
|
||||
}
|
||||
count_vm_vma_lock_event(VMA_LOCK_RETRY);
|
||||
|
||||
/* Quick path to respond to signals */
|
||||
if (fault_signal_pending(fault, regs)) {
|
||||
if (!user_mode(regs))
|
||||
goto no_context;
|
||||
return 0;
|
||||
}
|
||||
lock_mmap:
|
||||
#endif /* CONFIG_PER_VMA_LOCK */
|
||||
/*
|
||||
* As per x86, we may deadlock here. However, since the kernel only
|
||||
* validly references user space from well defined areas of the code,
|
||||
@@ -654,6 +687,9 @@ retry:
|
||||
}
|
||||
mmap_read_unlock(mm);
|
||||
|
||||
#ifdef CONFIG_PER_VMA_LOCK
|
||||
done:
|
||||
#endif
|
||||
/*
|
||||
* Handle the "normal" (no error) case first.
|
||||
*/
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/set_memory.h>
|
||||
#include <linux/kfence.h>
|
||||
|
||||
#include <asm/barrier.h>
|
||||
#include <asm/cputype.h>
|
||||
@@ -38,6 +39,7 @@
|
||||
#include <asm/ptdump.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/pgalloc.h>
|
||||
#include <asm/kfence.h>
|
||||
|
||||
#define NO_BLOCK_MAPPINGS BIT(0)
|
||||
#define NO_CONT_MAPPINGS BIT(1)
|
||||
@@ -521,12 +523,67 @@ static int __init enable_crash_mem_map(char *arg)
|
||||
}
|
||||
early_param("crashkernel", enable_crash_mem_map);
|
||||
|
||||
#ifdef CONFIG_KFENCE
|
||||
|
||||
bool __ro_after_init kfence_early_init = !!CONFIG_KFENCE_SAMPLE_INTERVAL;
|
||||
|
||||
/* early_param() will be parsed before map_mem() below. */
|
||||
static int __init parse_kfence_early_init(char *arg)
|
||||
{
|
||||
int val;
|
||||
|
||||
if (get_option(&arg, &val))
|
||||
kfence_early_init = !!val;
|
||||
return 0;
|
||||
}
|
||||
early_param("kfence.sample_interval", parse_kfence_early_init);
|
||||
|
||||
static phys_addr_t __init arm64_kfence_alloc_pool(void)
|
||||
{
|
||||
phys_addr_t kfence_pool;
|
||||
|
||||
if (!kfence_early_init)
|
||||
return 0;
|
||||
|
||||
kfence_pool = memblock_phys_alloc(KFENCE_POOL_SIZE, PAGE_SIZE);
|
||||
if (!kfence_pool) {
|
||||
pr_err("failed to allocate kfence pool\n");
|
||||
kfence_early_init = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Temporarily mark as NOMAP. */
|
||||
memblock_mark_nomap(kfence_pool, KFENCE_POOL_SIZE);
|
||||
|
||||
return kfence_pool;
|
||||
}
|
||||
|
||||
static void __init arm64_kfence_map_pool(phys_addr_t kfence_pool, pgd_t *pgdp)
|
||||
{
|
||||
if (!kfence_pool)
|
||||
return;
|
||||
|
||||
/* KFENCE pool needs page-level mapping. */
|
||||
__map_memblock(pgdp, kfence_pool, kfence_pool + KFENCE_POOL_SIZE,
|
||||
pgprot_tagged(PAGE_KERNEL),
|
||||
NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS);
|
||||
memblock_clear_nomap(kfence_pool, KFENCE_POOL_SIZE);
|
||||
__kfence_pool = phys_to_virt(kfence_pool);
|
||||
}
|
||||
#else /* CONFIG_KFENCE */
|
||||
|
||||
static inline phys_addr_t arm64_kfence_alloc_pool(void) { return 0; }
|
||||
static inline void arm64_kfence_map_pool(phys_addr_t kfence_pool, pgd_t *pgdp) { }
|
||||
|
||||
#endif /* CONFIG_KFENCE */
|
||||
|
||||
static void __init map_mem(pgd_t *pgdp)
|
||||
{
|
||||
static const u64 direct_map_end = _PAGE_END(VA_BITS_MIN);
|
||||
phys_addr_t kernel_start = __pa_symbol(_stext);
|
||||
phys_addr_t kernel_end = __pa_symbol(__init_begin);
|
||||
phys_addr_t start, end;
|
||||
phys_addr_t early_kfence_pool;
|
||||
int flags = NO_EXEC_MAPPINGS;
|
||||
u64 i;
|
||||
|
||||
@@ -539,6 +596,8 @@ static void __init map_mem(pgd_t *pgdp)
|
||||
*/
|
||||
BUILD_BUG_ON(pgd_index(direct_map_end - 1) == pgd_index(direct_map_end));
|
||||
|
||||
early_kfence_pool = arm64_kfence_alloc_pool();
|
||||
|
||||
if (can_set_direct_map())
|
||||
flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
|
||||
|
||||
@@ -604,6 +663,8 @@ static void __init map_mem(pgd_t *pgdp)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
arm64_kfence_map_pool(early_kfence_pool, pgdp);
|
||||
}
|
||||
|
||||
void mark_rodata_ro(void)
|
||||
|
||||
@@ -46,21 +46,19 @@ int mte_save_tags(struct page *page)
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool mte_restore_tags(swp_entry_t entry, struct page *page)
|
||||
void mte_restore_tags(swp_entry_t entry, struct page *page)
|
||||
{
|
||||
void *tags = xa_load(&mte_pages, entry.val);
|
||||
|
||||
if (!tags)
|
||||
return false;
|
||||
return;
|
||||
|
||||
/*
|
||||
* Test PG_mte_tagged again in case it was racing with another
|
||||
* set_pte_at().
|
||||
* Test PG_mte_tagged in case the tags were restored before
|
||||
* (e.g. CoW pages).
|
||||
*/
|
||||
if (!test_and_set_bit(PG_mte_tagged, &page->flags))
|
||||
mte_restore_page_tags(page_address(page), tags);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void mte_invalidate_tags(int type, pgoff_t offset)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/set_memory.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/kfence.h>
|
||||
|
||||
struct page_change_data {
|
||||
pgprot_t set_mask;
|
||||
@@ -22,12 +23,14 @@ bool rodata_full __ro_after_init = IS_ENABLED(CONFIG_RODATA_FULL_DEFAULT_ENABLED
|
||||
bool can_set_direct_map(void)
|
||||
{
|
||||
/*
|
||||
* rodata_full, DEBUG_PAGEALLOC and KFENCE require linear map to be
|
||||
* rodata_full and DEBUG_PAGEALLOC require linear map to be
|
||||
* mapped at page granularity, so that it is possible to
|
||||
* protect/unprotect single pages.
|
||||
*
|
||||
* KFENCE pool requires page-granular mapping if initialized late.
|
||||
*/
|
||||
return (rodata_enabled && rodata_full) || debug_pagealloc_enabled() ||
|
||||
IS_ENABLED(CONFIG_KFENCE);
|
||||
arm64_kfence_can_set_direct_map();
|
||||
}
|
||||
|
||||
static int change_page_range(pte_t *ptep, unsigned long addr, void *data)
|
||||
|
||||
@@ -82,6 +82,27 @@ WORKAROUND_CAVIUM_TX2_219_TVM
|
||||
WORKAROUND_CLEAN_CACHE
|
||||
WORKAROUND_DEVICE_LOAD_ACQUIRE
|
||||
WORKAROUND_NVIDIA_CARMEL_CNP
|
||||
WORKAROUND_NXP_ERR050104
|
||||
WORKAROUND_QCOM_FALKOR_E1003
|
||||
WORKAROUND_REPEAT_TLBI
|
||||
WORKAROUND_SPECULATIVE_AT
|
||||
ANDROID_KABI_RESERVE_01
|
||||
ANDROID_KABI_RESERVE_02
|
||||
ANDROID_KABI_RESERVE_03
|
||||
ANDROID_KABI_RESERVE_04
|
||||
ANDROID_KABI_RESERVE_05
|
||||
ANDROID_KABI_RESERVE_06
|
||||
ANDROID_KABI_RESERVE_07
|
||||
ANDROID_KABI_RESERVE_08
|
||||
ANDROID_KABI_RESERVE_09
|
||||
ANDROID_KABI_RESERVE_10
|
||||
ANDROID_KABI_RESERVE_11
|
||||
ANDROID_KABI_RESERVE_12
|
||||
ANDROID_KABI_RESERVE_13
|
||||
ANDROID_KABI_RESERVE_14
|
||||
ANDROID_KABI_RESERVE_15
|
||||
ANDROID_KABI_RESERVE_16
|
||||
ANDROID_KABI_RESERVE_17
|
||||
ANDROID_KABI_RESERVE_18
|
||||
ANDROID_KABI_RESERVE_19
|
||||
ANDROID_KABI_RESERVE_20
|
||||
|
||||
@@ -109,7 +109,7 @@ ia64_init_addr_space (void)
|
||||
vma_set_anonymous(vma);
|
||||
vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
|
||||
vma->vm_end = vma->vm_start + PAGE_SIZE;
|
||||
vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT;
|
||||
vm_flags_init(vma, VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT);
|
||||
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
||||
mmap_write_lock(current->mm);
|
||||
if (insert_vm_struct(current->mm, vma)) {
|
||||
@@ -127,8 +127,8 @@ ia64_init_addr_space (void)
|
||||
vma_set_anonymous(vma);
|
||||
vma->vm_end = PAGE_SIZE;
|
||||
vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT);
|
||||
vma->vm_flags = VM_READ | VM_MAYREAD | VM_IO |
|
||||
VM_DONTEXPAND | VM_DONTDUMP;
|
||||
vm_flags_init(vma, VM_READ | VM_MAYREAD | VM_IO |
|
||||
VM_DONTEXPAND | VM_DONTDUMP);
|
||||
mmap_write_lock(current->mm);
|
||||
if (insert_vm_struct(current->mm, vma)) {
|
||||
mmap_write_unlock(current->mm);
|
||||
@@ -272,7 +272,7 @@ static int __init gate_vma_init(void)
|
||||
vma_init(&gate_vma, NULL);
|
||||
gate_vma.vm_start = FIXADDR_USER_START;
|
||||
gate_vma.vm_end = FIXADDR_USER_END;
|
||||
gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
|
||||
vm_flags_init(&gate_vma, VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC);
|
||||
gate_vma.vm_page_prot = __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#define cpu_has_fpu cpu_opt(LOONGARCH_CPU_FPU)
|
||||
#define cpu_has_lsx cpu_opt(LOONGARCH_CPU_LSX)
|
||||
#define cpu_has_lasx cpu_opt(LOONGARCH_CPU_LASX)
|
||||
#define cpu_has_crc32 cpu_opt(LOONGARCH_CPU_CRC32)
|
||||
#define cpu_has_complex cpu_opt(LOONGARCH_CPU_COMPLEX)
|
||||
#define cpu_has_crypto cpu_opt(LOONGARCH_CPU_CRYPTO)
|
||||
#define cpu_has_lvz cpu_opt(LOONGARCH_CPU_LVZ)
|
||||
|
||||
@@ -78,25 +78,26 @@ enum cpu_type_enum {
|
||||
#define CPU_FEATURE_FPU 3 /* CPU has FPU */
|
||||
#define CPU_FEATURE_LSX 4 /* CPU has LSX (128-bit SIMD) */
|
||||
#define CPU_FEATURE_LASX 5 /* CPU has LASX (256-bit SIMD) */
|
||||
#define CPU_FEATURE_COMPLEX 6 /* CPU has Complex instructions */
|
||||
#define CPU_FEATURE_CRYPTO 7 /* CPU has Crypto instructions */
|
||||
#define CPU_FEATURE_LVZ 8 /* CPU has Virtualization extension */
|
||||
#define CPU_FEATURE_LBT_X86 9 /* CPU has X86 Binary Translation */
|
||||
#define CPU_FEATURE_LBT_ARM 10 /* CPU has ARM Binary Translation */
|
||||
#define CPU_FEATURE_LBT_MIPS 11 /* CPU has MIPS Binary Translation */
|
||||
#define CPU_FEATURE_TLB 12 /* CPU has TLB */
|
||||
#define CPU_FEATURE_CSR 13 /* CPU has CSR */
|
||||
#define CPU_FEATURE_WATCH 14 /* CPU has watchpoint registers */
|
||||
#define CPU_FEATURE_VINT 15 /* CPU has vectored interrupts */
|
||||
#define CPU_FEATURE_CSRIPI 16 /* CPU has CSR-IPI */
|
||||
#define CPU_FEATURE_EXTIOI 17 /* CPU has EXT-IOI */
|
||||
#define CPU_FEATURE_PREFETCH 18 /* CPU has prefetch instructions */
|
||||
#define CPU_FEATURE_PMP 19 /* CPU has perfermance counter */
|
||||
#define CPU_FEATURE_SCALEFREQ 20 /* CPU supports cpufreq scaling */
|
||||
#define CPU_FEATURE_FLATMODE 21 /* CPU has flat mode */
|
||||
#define CPU_FEATURE_EIODECODE 22 /* CPU has EXTIOI interrupt pin decode mode */
|
||||
#define CPU_FEATURE_GUESTID 23 /* CPU has GuestID feature */
|
||||
#define CPU_FEATURE_HYPERVISOR 24 /* CPU has hypervisor (running in VM) */
|
||||
#define CPU_FEATURE_CRC32 6 /* CPU has CRC32 instructions */
|
||||
#define CPU_FEATURE_COMPLEX 7 /* CPU has Complex instructions */
|
||||
#define CPU_FEATURE_CRYPTO 8 /* CPU has Crypto instructions */
|
||||
#define CPU_FEATURE_LVZ 9 /* CPU has Virtualization extension */
|
||||
#define CPU_FEATURE_LBT_X86 10 /* CPU has X86 Binary Translation */
|
||||
#define CPU_FEATURE_LBT_ARM 11 /* CPU has ARM Binary Translation */
|
||||
#define CPU_FEATURE_LBT_MIPS 12 /* CPU has MIPS Binary Translation */
|
||||
#define CPU_FEATURE_TLB 13 /* CPU has TLB */
|
||||
#define CPU_FEATURE_CSR 14 /* CPU has CSR */
|
||||
#define CPU_FEATURE_WATCH 15 /* CPU has watchpoint registers */
|
||||
#define CPU_FEATURE_VINT 16 /* CPU has vectored interrupts */
|
||||
#define CPU_FEATURE_CSRIPI 17 /* CPU has CSR-IPI */
|
||||
#define CPU_FEATURE_EXTIOI 18 /* CPU has EXT-IOI */
|
||||
#define CPU_FEATURE_PREFETCH 19 /* CPU has prefetch instructions */
|
||||
#define CPU_FEATURE_PMP 20 /* CPU has perfermance counter */
|
||||
#define CPU_FEATURE_SCALEFREQ 21 /* CPU supports cpufreq scaling */
|
||||
#define CPU_FEATURE_FLATMODE 22 /* CPU has flat mode */
|
||||
#define CPU_FEATURE_EIODECODE 23 /* CPU has EXTIOI interrupt pin decode mode */
|
||||
#define CPU_FEATURE_GUESTID 24 /* CPU has GuestID feature */
|
||||
#define CPU_FEATURE_HYPERVISOR 25 /* CPU has hypervisor (running in VM) */
|
||||
|
||||
#define LOONGARCH_CPU_CPUCFG BIT_ULL(CPU_FEATURE_CPUCFG)
|
||||
#define LOONGARCH_CPU_LAM BIT_ULL(CPU_FEATURE_LAM)
|
||||
@@ -104,6 +105,7 @@ enum cpu_type_enum {
|
||||
#define LOONGARCH_CPU_FPU BIT_ULL(CPU_FEATURE_FPU)
|
||||
#define LOONGARCH_CPU_LSX BIT_ULL(CPU_FEATURE_LSX)
|
||||
#define LOONGARCH_CPU_LASX BIT_ULL(CPU_FEATURE_LASX)
|
||||
#define LOONGARCH_CPU_CRC32 BIT_ULL(CPU_FEATURE_CRC32)
|
||||
#define LOONGARCH_CPU_COMPLEX BIT_ULL(CPU_FEATURE_COMPLEX)
|
||||
#define LOONGARCH_CPU_CRYPTO BIT_ULL(CPU_FEATURE_CRYPTO)
|
||||
#define LOONGARCH_CPU_LVZ BIT_ULL(CPU_FEATURE_LVZ)
|
||||
|
||||
@@ -117,7 +117,7 @@ static inline u32 read_cpucfg(u32 reg)
|
||||
#define CPUCFG1_EP BIT(22)
|
||||
#define CPUCFG1_RPLV BIT(23)
|
||||
#define CPUCFG1_HUGEPG BIT(24)
|
||||
#define CPUCFG1_IOCSRBRD BIT(25)
|
||||
#define CPUCFG1_CRC32 BIT(25)
|
||||
#define CPUCFG1_MSGINT BIT(26)
|
||||
|
||||
#define LOONGARCH_CPUCFG2 0x2
|
||||
|
||||
@@ -149,7 +149,7 @@ static inline void tlb_flush(struct mmu_gather *tlb)
|
||||
struct vm_area_struct vma;
|
||||
|
||||
vma.vm_mm = tlb->mm;
|
||||
vma.vm_flags = 0;
|
||||
vm_flags_init(&vma, 0);
|
||||
if (tlb->fullmm) {
|
||||
flush_tlb_mm(tlb->mm);
|
||||
return;
|
||||
|
||||
@@ -60,7 +60,7 @@ static inline void set_elf_platform(int cpu, const char *plat)
|
||||
|
||||
/* MAP BASE */
|
||||
unsigned long vm_map_base;
|
||||
EXPORT_SYMBOL_GPL(vm_map_base);
|
||||
EXPORT_SYMBOL(vm_map_base);
|
||||
|
||||
static void cpu_probe_addrbits(struct cpuinfo_loongarch *c)
|
||||
{
|
||||
@@ -94,13 +94,18 @@ static void cpu_probe_common(struct cpuinfo_loongarch *c)
|
||||
c->options = LOONGARCH_CPU_CPUCFG | LOONGARCH_CPU_CSR |
|
||||
LOONGARCH_CPU_TLB | LOONGARCH_CPU_VINT | LOONGARCH_CPU_WATCH;
|
||||
|
||||
elf_hwcap = HWCAP_LOONGARCH_CPUCFG | HWCAP_LOONGARCH_CRC32;
|
||||
elf_hwcap = HWCAP_LOONGARCH_CPUCFG;
|
||||
|
||||
config = read_cpucfg(LOONGARCH_CPUCFG1);
|
||||
if (config & CPUCFG1_UAL) {
|
||||
c->options |= LOONGARCH_CPU_UAL;
|
||||
elf_hwcap |= HWCAP_LOONGARCH_UAL;
|
||||
}
|
||||
if (config & CPUCFG1_CRC32) {
|
||||
c->options |= LOONGARCH_CPU_CRC32;
|
||||
elf_hwcap |= HWCAP_LOONGARCH_CRC32;
|
||||
}
|
||||
|
||||
|
||||
config = read_cpucfg(LOONGARCH_CPUCFG2);
|
||||
if (config & CPUCFG2_LAM) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user