mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-11 20:05:22 +02:00
Merge branch 'android15-6.6' into branch 'android15-6.6-lts'
This catches the -lts branch up with recent abi changes and other symbol additions. Included in here are the following commits: *af0b7d880a
ANDROID: ABI: Update pixel symbol list *d3cf5eb7a4
UPSTREAM: freezer,sched: Clean saved_state when restoring it during thaw *1da401e430
UPSTREAM: freezer,sched: Do not restore saved_state of a thawed task *bb064dd1e0
ANDROID: Improve module loader checks for GKI symbol protection *9acf2adaf5
ANDROID: GKI: update symbol list file for xiaomi *97a274d252
FROMGIT: arm64: mte: Make mte_check_tfsr_*() conditional on KASAN instead of MTE *52a033e898
ANDROID: KVM: arm64: Move init after setting the ops *abd6c25f0d
ANDROID: KVM: arm64: iommu: Add idmap trace point *ce6eb6fa08
ANDROID: KVM: arm64: Fix prot for __pkvm_host_use_dma_page *9c451cdb92
ANDROID: KVM: arm64: iommu: Allow NULL domains in kvm_iommu_host_stage2_idmap *65217ef29f
ANDROID: KVM: arm64: iommu: Allocate IDMAPPED domain from the driver *139e603e6f
ANDROID: drivers/arm-smmu-v3-kvm: Remove smmu from kvm_arm_smmu_topup_memcache *aa2f788d12
ANDROID: ABI: Update symbol for Exynos SoC *8ea15a5640
ANDROID: GKI: init vendor data in __init_rwsem *fa174340be
ANDROID: Define common set of cflags for kselftests *4a43fd065f
ANDROID: Remove obsolete -DKTEST flag from timers selftests *d564ca175a
ANDROID: Build with -D_GNU_SOURCE= to avoid redefinition warnings *cb58ac06ff
ANDROID: Quash macro redefinition warnings for mm/thuge-gen *0e3f933670
ANDROID: Don't build with mlock2.h *cff45068d9
ANDROID: 16K: Only check basename of linker context *e5ee6d1db4
UPSTREAM: scsi: ufs: core: mcq: Fix ufshcd_mcq_sqe_search() *96498cee93
ANDROID: 16K: Ensure stack expansion size is __PAGE_SIZE multiple *2d8f89ca0e
ANDROID: 16K: Only support page size emulation for x86_64 *fece38d63a
ANDROID: abi_gki_aarch64_vivo: Update symbol list *3a8cfce099
ANDROID: vendor_hooks: add hooks to fix priority inversion *f933d260cb
ANDROID: 16K: Avoid and document padding madvise lock warning *b59218bd7b
ANDROID: KVM: arm64: activate FGT trapping for pvms *b578ac0e1b
ANDROID: KVM: arm64: Add fgt trap masks for pKVM but do not activate them yet *e7abba54f7
ANDROID: KVM: arm64: Mark PAuth as a restricted feature for protected VMs *991bca2981
ANDROID: KVM: arm64: speacialize and move __activate_traps_hcrx out of __activate_traps_common *289f66c4ee
ANDROID: KVM: arm64: move __deactivate_traps_hfgxtr out of __deactivate_traps_common *bcbca2e57f
ANDROID: KVM: arm64: move __activate_traps_hfgxtr out of __activate_traps_common *96aa0305c4
ANDROID: KVM: arm64: Allow FEAT_ATS1A for Protected VMs *b04695532d
ANDROID: KVM: arm64: Trap external trace for protected VMs *79358f32ef
ANDROID: KVM: arm64: Fix which features are marked as allowed for protected VMs *10434a6235
ANDROID: GKI: Add symbols to allowed list for galaxy *58ebfa38d3
UPSTREAM: usb: dwc3: core: Add DWC31 version 2.00a controller *7511c3ab9c
ANDROID: arm64: vdso32: support user-supplied flags *446570771e
ANDROID: vendor_hooks: add hook in f2fs_file_open() *35cb2a4017
ANDROID: gki_defconfig: Set CONFIG_DTPM/CONFIG_DTPM_CPU/CONFIG_DTPM_DEVFREQ into y *82df237540
UPSTREAM: block/blk-mq: Don't complete locally if capacities are different *49691a67e2
BACKPORT: sched: Add a new function to compare if two cpus have the same capacity *67848ad205
ANDROID: vendor_hooks: add symbols for lazy preemption *73e65037e4
ANDROID: GKI: update symbol list for honor *86dd89554f
ANDROID: GKI: net: add vendor hooks for link data path *3f6eaa6a3c
ANDROID: vendor_hooks: add two hooks for lazy preemption *858a548331
FROMLIST: time/sched_clock: Export sched_clock_register() *08901ec9f1
ANDROID: Add specific kselftests in the selftests source code directory. *7fb8bc8a4a
ANDROID: Update the ABI symbol list for Pixel *c5d01a3f9b
ANDROID: vendor_hooks: Export direct reclaim trace points *d5e6efdca3
ANDROID: virt: gunyah: Update protype for platform hooks *741c7f2942
ANDROID: block: fix non po2 support of blk-zoned device *392fd3aaab
UPSTREAM: regmap-i2c: Subtract reg size from max_write *2b549fbb94
ANDROID: GKI defconfig: append "-4k" to UTS *fe188b34f7
ANDROID: iommu/arm-smmu-v3-kvm: Implement reserved regions callback *23b6831c7b
ANDROID: Add all green kselftests in TEST_MAPPING in common/ directory *9fbe656e13
ANDROID: GKI: Update oplus symbol list *d3585a6469
FROMLIST: lockdep: fix deadlock issue between lockdep and rcu *69f834b46c
ANDROID: GKI: Update QCOM symbol list *a0af19d49e
Revert "ANDROID: GKI: Disable KUnit built-in testing" *4ca4a2f3e4
UPSTREAM: genirq/irqdesc: Prevent use-after-free in irq_find_at_or_after() *c5ed0f8bce
ANDROID: abi_gki_aarch64_qcom: update abi symbols *bfb3d6d4c8
ANDROID: tracing: Add restricted vendor hooks for preemptirq events *4bdc97645f
ANDROID: 2024/06/05 KMI update *96532f839a
UPSTREAM: mm: optimize CONFIG_PER_VMA_LOCK member placement in vm_area_struct *7789c9e4ab
ANDROID: fs: Add ANDROID OEM DATA ARRAY in struct bdi_writeback *de090207f3
ANDROID: ABI: Update symbol for Exynos SoC *8fc5b8f03f
ANDROID: GKI: Add symbol to symbol list for imx *eb1aa949d5
UPSTREAM: of: Reimplement of_machine_is_compatible() using of_machine_compatible_match() *dcc1709075
UPSTREAM: of: Change of_machine_is_compatible() to return bool *f589c195b4
UPSTREAM: of: Add of_machine_compatible_match() *f9fbf39372
FROMGIT: firmware: arm_scmi: Add basic support for SCMI v3.2 pincontrol protocol *14e0e2ab3b
FROMGIT: dt-bindings: firmware: Support SCMI pinctrl protocol *5ea96c252e
FROMGIT: firmware: arm_scmi: Introduce get_max_msg_size() helper/accessor *ffb70eb8f5
FROMGIT: firmware: arm_scmi: Add protocol versioning checks *69acf8ab7b
FROMGIT: firmware: arm_scmi: Increase the maximum opp count in the perf protocol *9ede54650f
FROMLIST: firmware: arm_scmi: mailbox: support P2A channel completion *99c333ba42
FROMLIST: dt-bindings: firmware: arm,scmi: Support notification completion channel *0b38c5c29b
FROMGIT: firmware: arm_scmi: Implement clock get permissions *839994cdc6
FROMGIT: firmware: arm_scmi: Rework clock domain info lookups *6cbd5597aa
ANDROID: GKI: enable CONFIG_BLK_CGROUP_IOCOST *5b6dc3948a
FROMGIT: hwspinlock: Introduce hwspin_lock_bust() *7fc172b741
ANDROID: abi_gki_aarch64_qcom: Add abi symbols *29460fac71
FROMLIST: mmc: sdhci-msm: Enable force hw reset during cqe recovery *773b49c99f
ANDROID: vendor_hooks: Add hook in wakeup functionality *b7bdc38ae6
FROMLIST: mmc: core: Introduce new flag to force hardware reset *a8fe5ae562
ANDROID: mmc: core: Export core functions required for clk scaling *75892d27bc
ANDROID: mmc: core: Export core functions for kernel modules usage *46fb90cb69
ANDROID: KVM: arm64: Don't always update IOMMUs from module_change_host_page_prot *11b801668f
ANDROID: GKI: remove CONFIG_KEXEC_FILE *b9888dee8f
UPSTREAM: cgroup: Avoid false cacheline sharing of read mostly rstat_cpu *571591d53f
UPSTREAM: cgroup/rstat: Optimize cgroup_rstat_updated_list() *b4958d2b0e
UPSTREAM: cgroup/rstat: Reduce cpu_lock hold time in cgroup_rstat_flush_locked() *9d925addfb
UPSTREAM: mm: memcg: optimize parent iteration in memcg_rstat_updated() *38aad83810
BACKPORT: mm: memcg: restore subtree stats flushing *8bb30a7df5
UPSTREAM: mm: workingset: move the stats flush into workingset_test_recent() *5b61b798f3
UPSTREAM: mm: memcg: make stats flushing threshold per-memcg *84b2003d45
BACKPORT: mm: memcg: move vmstats structs definition above flushing code *01d12c8b2c
UPSTREAM: mm: memcg: change flush_next_time to flush_last_time *a38b207d4f
ANDROID: GKI: set vfs-only exports into their own namespace *ab20fe054e
UPSTREAM: binder: fix max_thread type inconsistency *cfeefa3136
ANDROID: GKI: add wait_for_completion_interruptible_timeout to db845c symbol list *e2b7d39769
UPSTREAM: slimbus: qcom-ngd-ctrl: Add timeout for wait operation *b37bc91be4
UPSTREAM: mtd: limit OTP NVMEM cell parse to non-NAND devices *c7d1588e72
UPSTREAM: nvmem: add explicit config option to read old syntax fixed OF cells *b8f693a7b6
ANDROID: ABI: Update pixel symbol list *77828e5a7d
ANDROID: virt: geniezone: Align the gzvm driver with mainline v11 *f6cbf65f3f
FROMLIST: dt-bindings: hypervisor: Add MediaTek GenieZone hypervisor *9b6ec31196
Revert "FROMLIST: dt-bindings: hypervisor: Add MediaTek GenieZone hypervisor" *ee58017a6c
ANDROID: KVM: arm64: Enforce type check for pkvm_register_el2_call() *12fcfb3d60
Revert "FROMLIST: selftests/vDSO: change elf_hash parameter to signed char" *ccc2b557e6
ANDROID: ABI: Add usb_gadget_connect & usb_gadget_disconnect symbol *94c879bfea
ANDROID: ABI: update Unisoc symbol list for dm-verity ko *9f2773a83f
UPSTREAM: swiotlb: initialise restricted pool list_head when SWIOTLB_DYNAMIC=y *4c747cf7d3
ANDROID: abi_gki_aarch64_qcom: Add iio abi symbol *590c5bb0a3
FROMLIST: selftests/vDSO: change elf_hash parameter to signed char *ff23df5253
ANDROID: abi_gki_aarch64_qcom: Add clk_restore_context and clk_save_context *3f807312a0
ANDROID: GKI: update xiaomi symbol list *e52e165c6d
ANDROID: psi: Add vendor hooks for PSI tracing *1113cfd803
ANDROID: vendor_hooks:vendor hook for madvise_cold_or_pageout_pte_range. *dedfeb0f68
ANDROID: vendor_hooks:vendor hook for mmput *a494753f45
ANDROID: GKI: Update Honor abi symbol list *413bd75728
ANDROID: Allow vendor modules perform more operationson. *4bde1dfde5
UPSTREAM: procfs: make freeing proc_fs_info rcu-delayed *72e9e1d60c
UPSTREAM: procfs: move dropping pde and pid from ->evict_inode() to ->free_inode() *eab28aad52
Revert "FROMLIST: sched: Consolidate cpufreq updates" *ddc5d87954
ANDROID: GKI: Update QCOM symbol list *9a65b2f585
ANDROID: ABI: update symbol list for galaxy *de8582f750
ANDROID: ABI fixup for abi break in struct dst_ops *3521eb1728
BACKPORT: net: fix __dst_negative_advice() race Change-Id: I61ce1d58f076b3dd166f20b8fbe4c0448c272743 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
dc53968049
236
BUILD.bazel
236
BUILD.bazel
|
@ -972,6 +972,15 @@ ddk_headers(
|
||||||
|
|
||||||
_KSELFTEST_DIR = "testcases/selftests"
|
_KSELFTEST_DIR = "testcases/selftests"
|
||||||
|
|
||||||
|
_KSELFTEST_COPTS = [
|
||||||
|
"-O3",
|
||||||
|
"-pthread",
|
||||||
|
"-std=gnu99",
|
||||||
|
] + select({
|
||||||
|
":arm": ["-mcpu=cortex-a8"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})
|
||||||
|
|
||||||
config_setting(
|
config_setting(
|
||||||
name = "x86_64",
|
name = "x86_64",
|
||||||
values = {"platforms": "//build/kernel/kleaf/impl:android_x86_64"},
|
values = {"platforms": "//build/kernel/kleaf/impl:android_x86_64"},
|
||||||
|
@ -999,12 +1008,17 @@ config_setting(
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "kselftest_headers_lib",
|
name = "kselftest_headers_lib",
|
||||||
hdrs = glob(["tools/testing/selftests/*.h"]),
|
hdrs = glob(["tools/testing/selftests/*.h"]),
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
|
defines = [
|
||||||
|
"_GNU_SOURCE=",
|
||||||
|
],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
)
|
)
|
||||||
|
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_binderfs_binderfs_test",
|
name = "kselftest_binderfs_binderfs_test",
|
||||||
srcs = ["tools/testing/selftests/filesystems/binderfs/binderfs_test.c"],
|
srcs = ["tools/testing/selftests/filesystems/binderfs/binderfs_test.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1019,6 +1033,7 @@ cc_binary_with_abi(
|
||||||
":arm64": ["tools/testing/selftests/breakpoints/breakpoint_test_arm64.c"],
|
":arm64": ["tools/testing/selftests/breakpoints/breakpoint_test_arm64.c"],
|
||||||
"//conditions:default": [],
|
"//conditions:default": [],
|
||||||
}),
|
}),
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1028,6 +1043,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_kcmp_kcmp_test",
|
name = "kselftest_kcmp_kcmp_test",
|
||||||
srcs = ["tools/testing/selftests/kcmp/kcmp_test.c"],
|
srcs = ["tools/testing/selftests/kcmp/kcmp_test.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1037,6 +1053,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_ptrace_peeksiginfo",
|
name = "kselftest_ptrace_peeksiginfo",
|
||||||
srcs = ["tools/testing/selftests/ptrace/peeksiginfo.c"],
|
srcs = ["tools/testing/selftests/ptrace/peeksiginfo.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1046,6 +1063,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_rtc_rtctest",
|
name = "kselftest_rtc_rtctest",
|
||||||
srcs = ["tools/testing/selftests/rtc/rtctest.c"],
|
srcs = ["tools/testing/selftests/rtc/rtctest.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1059,12 +1077,14 @@ cc_library(
|
||||||
"tools/testing/selftests/vDSO/parse_vdso.h",
|
"tools/testing/selftests/vDSO/parse_vdso.h",
|
||||||
"tools/testing/selftests/vDSO/vdso_config.h",
|
"tools/testing/selftests/vDSO/vdso_config.h",
|
||||||
],
|
],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
)
|
)
|
||||||
|
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_vdso_vdso_test_abi",
|
name = "kselftest_vdso_vdso_test_abi",
|
||||||
srcs = ["tools/testing/selftests/vDSO/vdso_test_abi.c"],
|
srcs = ["tools/testing/selftests/vDSO/vdso_test_abi.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1077,6 +1097,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_vdso_vdso_test_clock_getres",
|
name = "kselftest_vdso_vdso_test_clock_getres",
|
||||||
srcs = ["tools/testing/selftests/vDSO/vdso_test_clock_getres.c"],
|
srcs = ["tools/testing/selftests/vDSO/vdso_test_clock_getres.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1089,6 +1110,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_vdso_vdso_test_getcpu",
|
name = "kselftest_vdso_vdso_test_getcpu",
|
||||||
srcs = ["tools/testing/selftests/vDSO/vdso_test_getcpu.c"],
|
srcs = ["tools/testing/selftests/vDSO/vdso_test_getcpu.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1101,6 +1123,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_vdso_vdso_test_gettimeofday",
|
name = "kselftest_vdso_vdso_test_gettimeofday",
|
||||||
srcs = ["tools/testing/selftests/vDSO/vdso_test_gettimeofday.c"],
|
srcs = ["tools/testing/selftests/vDSO/vdso_test_gettimeofday.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1113,6 +1136,7 @@ cc_binary_with_abi(
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "kselftest_futex_headers_lib",
|
name = "kselftest_futex_headers_lib",
|
||||||
hdrs = glob(["tools/testing/selftests/futex/include/*.h"]),
|
hdrs = glob(["tools/testing/selftests/futex/include/*.h"]),
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1120,10 +1144,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_futex_futex_requeue_pi_mismatched_ops",
|
name = "kselftest_futex_futex_requeue_pi_mismatched_ops",
|
||||||
srcs = ["tools/testing/selftests/futex/functional/futex_requeue_pi_mismatched_ops.c"],
|
srcs = ["tools/testing/selftests/futex/functional/futex_requeue_pi_mismatched_ops.c"],
|
||||||
out = "futex_requeue_pi_mismatched_ops",
|
out = "futex_requeue_pi_mismatched_ops",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/futex/include",
|
"tools/testing/selftests/futex/include",
|
||||||
|
@ -1141,10 +1162,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_futex_futex_requeue_pi_signal_restart",
|
name = "kselftest_futex_futex_requeue_pi_signal_restart",
|
||||||
srcs = ["tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c"],
|
srcs = ["tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c"],
|
||||||
out = "futex_requeue_pi_signal_restart",
|
out = "futex_requeue_pi_signal_restart",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/futex/include",
|
"tools/testing/selftests/futex/include",
|
||||||
|
@ -1162,10 +1180,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_futex_futex_requeue_pi",
|
name = "kselftest_futex_futex_requeue_pi",
|
||||||
srcs = ["tools/testing/selftests/futex/functional/futex_requeue_pi.c"],
|
srcs = ["tools/testing/selftests/futex/functional/futex_requeue_pi.c"],
|
||||||
out = "futex_requeue_pi",
|
out = "futex_requeue_pi",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/futex/include",
|
"tools/testing/selftests/futex/include",
|
||||||
|
@ -1183,10 +1198,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_futex_futex_requeue",
|
name = "kselftest_futex_futex_requeue",
|
||||||
srcs = ["tools/testing/selftests/futex/functional/futex_requeue.c"],
|
srcs = ["tools/testing/selftests/futex/functional/futex_requeue.c"],
|
||||||
out = "futex_requeue",
|
out = "futex_requeue",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/futex/include",
|
"tools/testing/selftests/futex/include",
|
||||||
|
@ -1204,10 +1216,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_futex_futex_wait_private_mapped_file",
|
name = "kselftest_futex_futex_wait_private_mapped_file",
|
||||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait_private_mapped_file.c"],
|
srcs = ["tools/testing/selftests/futex/functional/futex_wait_private_mapped_file.c"],
|
||||||
out = "futex_wait_private_mapped_file",
|
out = "futex_wait_private_mapped_file",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/futex/include",
|
"tools/testing/selftests/futex/include",
|
||||||
|
@ -1225,10 +1234,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_futex_futex_wait_timeout",
|
name = "kselftest_futex_futex_wait_timeout",
|
||||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait_timeout.c"],
|
srcs = ["tools/testing/selftests/futex/functional/futex_wait_timeout.c"],
|
||||||
out = "futex_wait_timeout",
|
out = "futex_wait_timeout",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/futex/include",
|
"tools/testing/selftests/futex/include",
|
||||||
|
@ -1246,10 +1252,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_futex_futex_wait_uninitialized_heap",
|
name = "kselftest_futex_futex_wait_uninitialized_heap",
|
||||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait_uninitialized_heap.c"],
|
srcs = ["tools/testing/selftests/futex/functional/futex_wait_uninitialized_heap.c"],
|
||||||
out = "futex_wait_uninitialized_heap",
|
out = "futex_wait_uninitialized_heap",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/futex/include",
|
"tools/testing/selftests/futex/include",
|
||||||
|
@ -1267,10 +1270,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_futex_futex_wait_wouldblock",
|
name = "kselftest_futex_futex_wait_wouldblock",
|
||||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait_wouldblock.c"],
|
srcs = ["tools/testing/selftests/futex/functional/futex_wait_wouldblock.c"],
|
||||||
out = "futex_wait_wouldblock",
|
out = "futex_wait_wouldblock",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/futex/include",
|
"tools/testing/selftests/futex/include",
|
||||||
|
@ -1288,10 +1288,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_futex_futex_wait",
|
name = "kselftest_futex_futex_wait",
|
||||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait.c"],
|
srcs = ["tools/testing/selftests/futex/functional/futex_wait.c"],
|
||||||
out = "futex_wait",
|
out = "futex_wait",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/futex/include",
|
"tools/testing/selftests/futex/include",
|
||||||
|
@ -1308,6 +1305,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_mm_compaction_test",
|
name = "kselftest_mm_compaction_test",
|
||||||
srcs = ["tools/testing/selftests/mm/compaction_test.c"],
|
srcs = ["tools/testing/selftests/mm/compaction_test.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1321,6 +1319,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_mm_hugepage_mmap",
|
name = "kselftest_mm_hugepage_mmap",
|
||||||
srcs = ["tools/testing/selftests/mm/hugepage-mmap.c"],
|
srcs = ["tools/testing/selftests/mm/hugepage-mmap.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1334,6 +1333,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_mm_hugepage_shm",
|
name = "kselftest_mm_hugepage_shm",
|
||||||
srcs = ["tools/testing/selftests/mm/hugepage-shm.c"],
|
srcs = ["tools/testing/selftests/mm/hugepage-shm.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1347,6 +1347,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_mm_map_hugetlb",
|
name = "kselftest_mm_map_hugetlb",
|
||||||
srcs = ["tools/testing/selftests/mm/map_hugetlb.c"],
|
srcs = ["tools/testing/selftests/mm/map_hugetlb.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1363,6 +1364,7 @@ cc_binary_with_abi(
|
||||||
"tools/testing/selftests/mm/mlock-random-test.c",
|
"tools/testing/selftests/mm/mlock-random-test.c",
|
||||||
"tools/testing/selftests/mm/mlock2.h",
|
"tools/testing/selftests/mm/mlock2.h",
|
||||||
],
|
],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/mm",
|
"tools/testing/selftests/mm",
|
||||||
|
@ -1382,6 +1384,7 @@ cc_binary_with_abi(
|
||||||
"tools/testing/selftests/mm/mlock2.h",
|
"tools/testing/selftests/mm/mlock2.h",
|
||||||
"tools/testing/selftests/mm/mlock2-tests.c",
|
"tools/testing/selftests/mm/mlock2-tests.c",
|
||||||
],
|
],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/mm",
|
"tools/testing/selftests/mm",
|
||||||
|
@ -1398,6 +1401,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_mm_on_fault_limit",
|
name = "kselftest_mm_on_fault_limit",
|
||||||
srcs = ["tools/testing/selftests/mm/on-fault-limit.c"],
|
srcs = ["tools/testing/selftests/mm/on-fault-limit.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1411,6 +1415,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_mm_mremap_dontunmap",
|
name = "kselftest_mm_mremap_dontunmap",
|
||||||
srcs = ["tools/testing/selftests/mm/mremap_dontunmap.c"],
|
srcs = ["tools/testing/selftests/mm/mremap_dontunmap.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1424,6 +1429,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_mm_mremap_test",
|
name = "kselftest_mm_mremap_test",
|
||||||
srcs = ["tools/testing/selftests/mm/mremap_test.c"],
|
srcs = ["tools/testing/selftests/mm/mremap_test.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1438,9 +1444,7 @@ cc_library(
|
||||||
name = "kselftest_mm_vm_util",
|
name = "kselftest_mm_vm_util",
|
||||||
srcs = ["tools/testing/selftests/mm/vm_util.c"],
|
srcs = ["tools/testing/selftests/mm/vm_util.c"],
|
||||||
hdrs = ["tools/testing/selftests/mm/vm_util.h"],
|
hdrs = ["tools/testing/selftests/mm/vm_util.h"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
],
|
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
deps = [
|
deps = [
|
||||||
":kselftest_headers_lib",
|
":kselftest_headers_lib",
|
||||||
|
@ -1450,11 +1454,10 @@ cc_library(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_mm_thuge_gen",
|
name = "kselftest_mm_thuge_gen",
|
||||||
srcs = [
|
srcs = [
|
||||||
"tools/testing/selftests/mm/mlock2.h",
|
|
||||||
"tools/testing/selftests/mm/thuge-gen.c",
|
"tools/testing/selftests/mm/thuge-gen.c",
|
||||||
],
|
],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS + [
|
||||||
"-D_GNU_SOURCE",
|
"-Wno-macro-redefined",
|
||||||
],
|
],
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
|
@ -1470,12 +1473,9 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_mm_transhuge_stress",
|
name = "kselftest_mm_transhuge_stress",
|
||||||
srcs = [
|
srcs = [
|
||||||
"tools/testing/selftests/mm/mlock2.h",
|
|
||||||
"tools/testing/selftests/mm/transhuge-stress.c",
|
"tools/testing/selftests/mm/transhuge-stress.c",
|
||||||
],
|
],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-D_GNU_SOURCE",
|
|
||||||
],
|
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/mm/",
|
"tools/testing/selftests/mm/",
|
||||||
|
@ -1499,6 +1499,7 @@ cc_library(
|
||||||
"tools/testing/selftests/kselftest.h",
|
"tools/testing/selftests/kselftest.h",
|
||||||
"tools/testing/selftests/mm/uffd-common.h",
|
"tools/testing/selftests/mm/uffd-common.h",
|
||||||
],
|
],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = [
|
includes = [
|
||||||
"include/uapi/",
|
"include/uapi/",
|
||||||
"tools/testing/selftests/mm/",
|
"tools/testing/selftests/mm/",
|
||||||
|
@ -1515,6 +1516,7 @@ cc_binary_with_abi(
|
||||||
srcs = [
|
srcs = [
|
||||||
"tools/testing/selftests/mm/uffd-unit-tests.c",
|
"tools/testing/selftests/mm/uffd-unit-tests.c",
|
||||||
],
|
],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = [
|
includes = [
|
||||||
"tools/testing/selftests",
|
"tools/testing/selftests",
|
||||||
"tools/testing/selftests/mm/",
|
"tools/testing/selftests/mm/",
|
||||||
|
@ -1533,7 +1535,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_size_test_get_size",
|
name = "kselftest_size_test_get_size",
|
||||||
srcs = ["tools/testing/selftests/size/get_size.c"],
|
srcs = ["tools/testing/selftests/size/get_size.c"],
|
||||||
copts = select({
|
copts = _KSELFTEST_COPTS + select({
|
||||||
":x86_64": ["-mstackrealign"],
|
":x86_64": ["-mstackrealign"],
|
||||||
"//conditions:default": [],
|
"//conditions:default": [],
|
||||||
}),
|
}),
|
||||||
|
@ -1550,10 +1552,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_adjtick",
|
name = "kselftest_timers_adjtick",
|
||||||
srcs = ["tools/testing/selftests/timers/adjtick.c"],
|
srcs = ["tools/testing/selftests/timers/adjtick.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1563,10 +1562,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_alarmtimer_suspend",
|
name = "kselftest_timers_alarmtimer_suspend",
|
||||||
srcs = ["tools/testing/selftests/timers/alarmtimer-suspend.c"],
|
srcs = ["tools/testing/selftests/timers/alarmtimer-suspend.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1576,10 +1572,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_change_skew",
|
name = "kselftest_timers_change_skew",
|
||||||
srcs = ["tools/testing/selftests/timers/change_skew.c"],
|
srcs = ["tools/testing/selftests/timers/change_skew.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1594,10 +1587,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_clocksource_switch",
|
name = "kselftest_timers_clocksource_switch",
|
||||||
srcs = ["tools/testing/selftests/timers/clocksource-switch.c"],
|
srcs = ["tools/testing/selftests/timers/clocksource-switch.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1611,10 +1601,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_freq_step",
|
name = "kselftest_timers_freq_step",
|
||||||
srcs = ["tools/testing/selftests/timers/freq-step.c"],
|
srcs = ["tools/testing/selftests/timers/freq-step.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1625,10 +1612,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_timers_inconsistency_check",
|
name = "kselftest_timers_inconsistency_check",
|
||||||
srcs = ["tools/testing/selftests/timers/inconsistency-check.c"],
|
srcs = ["tools/testing/selftests/timers/inconsistency-check.c"],
|
||||||
out = "inconsistency-check",
|
out = "inconsistency-check",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1638,10 +1622,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_leap_a_day",
|
name = "kselftest_timers_leap_a_day",
|
||||||
srcs = ["tools/testing/selftests/timers/leap-a-day.c"],
|
srcs = ["tools/testing/selftests/timers/leap-a-day.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1651,10 +1632,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_leapcrash",
|
name = "kselftest_timers_leapcrash",
|
||||||
srcs = ["tools/testing/selftests/timers/leapcrash.c"],
|
srcs = ["tools/testing/selftests/timers/leapcrash.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1665,10 +1643,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_timers_nanosleep",
|
name = "kselftest_timers_nanosleep",
|
||||||
srcs = ["tools/testing/selftests/timers/nanosleep.c"],
|
srcs = ["tools/testing/selftests/timers/nanosleep.c"],
|
||||||
out = "nanosleep",
|
out = "nanosleep",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1679,10 +1654,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_timers_nsleep_lat",
|
name = "kselftest_timers_nsleep_lat",
|
||||||
srcs = ["tools/testing/selftests/timers/nsleep-lat.c"],
|
srcs = ["tools/testing/selftests/timers/nsleep-lat.c"],
|
||||||
out = "nsleep-lat",
|
out = "nsleep-lat",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1692,10 +1664,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_posix_timers",
|
name = "kselftest_timers_posix_timers",
|
||||||
srcs = ["tools/testing/selftests/timers/posix_timers.c"],
|
srcs = ["tools/testing/selftests/timers/posix_timers.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1706,10 +1675,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_timers_tests_raw_skew",
|
name = "kselftest_timers_tests_raw_skew",
|
||||||
srcs = ["tools/testing/selftests/timers/raw_skew.c"],
|
srcs = ["tools/testing/selftests/timers/raw_skew.c"],
|
||||||
out = "raw_skew",
|
out = "raw_skew",
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1719,10 +1685,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_set_2038",
|
name = "kselftest_timers_set_2038",
|
||||||
srcs = ["tools/testing/selftests/timers/set-2038.c"],
|
srcs = ["tools/testing/selftests/timers/set-2038.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1737,10 +1700,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_set_tai",
|
name = "kselftest_timers_set_tai",
|
||||||
srcs = ["tools/testing/selftests/timers/set-tai.c"],
|
srcs = ["tools/testing/selftests/timers/set-tai.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1750,10 +1710,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_set_timer_lat",
|
name = "kselftest_timers_set_timer_lat",
|
||||||
srcs = ["tools/testing/selftests/timers/set-timer-lat.c"],
|
srcs = ["tools/testing/selftests/timers/set-timer-lat.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1763,10 +1720,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_set_tz",
|
name = "kselftest_timers_set_tz",
|
||||||
srcs = ["tools/testing/selftests/timers/set-tz.c"],
|
srcs = ["tools/testing/selftests/timers/set-tz.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1776,10 +1730,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_skew_consistency",
|
name = "kselftest_timers_skew_consistency",
|
||||||
srcs = ["tools/testing/selftests/timers/skew_consistency.c"],
|
srcs = ["tools/testing/selftests/timers/skew_consistency.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1792,10 +1743,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_threadtest",
|
name = "kselftest_timers_threadtest",
|
||||||
srcs = ["tools/testing/selftests/timers/threadtest.c"],
|
srcs = ["tools/testing/selftests/timers/threadtest.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1805,10 +1753,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_timers_valid_adjtimex",
|
name = "kselftest_timers_valid_adjtimex",
|
||||||
srcs = ["tools/testing/selftests/timers/valid-adjtimex.c"],
|
srcs = ["tools/testing/selftests/timers/valid-adjtimex.c"],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-O3",
|
|
||||||
"-DKTEST",
|
|
||||||
],
|
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1818,7 +1763,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_net_socket",
|
name = "kselftest_net_socket",
|
||||||
srcs = ["tools/testing/selftests/net/socket.c"],
|
srcs = ["tools/testing/selftests/net/socket.c"],
|
||||||
copts = ["-Wno-gnu-variable-sized-type-not-at-end"],
|
copts = _KSELFTEST_COPTS + ["-Wno-gnu-variable-sized-type-not-at-end"],
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1829,6 +1774,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_net_reuseaddr_conflict",
|
name = "kselftest_net_reuseaddr_conflict",
|
||||||
srcs = ["tools/testing/selftests/net/reuseaddr_conflict.c"],
|
srcs = ["tools/testing/selftests/net/reuseaddr_conflict.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1842,7 +1788,7 @@ cc_binary_with_abi(
|
||||||
"tools/testing/selftests/net/psock_lib.h",
|
"tools/testing/selftests/net/psock_lib.h",
|
||||||
"tools/testing/selftests/net/psock_tpacket.c",
|
"tools/testing/selftests/net/psock_tpacket.c",
|
||||||
],
|
],
|
||||||
copts = ["-Wno-gnu-variable-sized-type-not-at-end"],
|
copts = _KSELFTEST_COPTS + ["-Wno-gnu-variable-sized-type-not-at-end"],
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
|
@ -1853,6 +1799,7 @@ cc_binary_with_abi(
|
||||||
cc_binary_with_abi(
|
cc_binary_with_abi(
|
||||||
name = "kselftest_capabilities_test_execve",
|
name = "kselftest_capabilities_test_execve",
|
||||||
srcs = ["tools/testing/selftests/capabilities/test_execve.c"],
|
srcs = ["tools/testing/selftests/capabilities/test_execve.c"],
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1867,6 +1814,7 @@ cc_binary_with_abi(
|
||||||
name = "kselftest_capabilities_validate_cap",
|
name = "kselftest_capabilities_validate_cap",
|
||||||
srcs = ["tools/testing/selftests/capabilities/validate_cap.c"],
|
srcs = ["tools/testing/selftests/capabilities/validate_cap.c"],
|
||||||
out = "validate_cap",
|
out = "validate_cap",
|
||||||
|
copts = _KSELFTEST_COPTS,
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
target_compatible_with = ["@platforms//os:android"],
|
target_compatible_with = ["@platforms//os:android"],
|
||||||
visibility = ["//visibility:private"],
|
visibility = ["//visibility:private"],
|
||||||
|
@ -1882,7 +1830,7 @@ cc_binary_with_abi(
|
||||||
"tools/testing/selftests/clone3/clone3_selftests.h",
|
"tools/testing/selftests/clone3/clone3_selftests.h",
|
||||||
"tools/testing/selftests/seccomp/seccomp_bpf.c",
|
"tools/testing/selftests/seccomp/seccomp_bpf.c",
|
||||||
],
|
],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS + [
|
||||||
"-Wno-unused-function",
|
"-Wno-unused-function",
|
||||||
"-D__GLIBC_PREREQ(a,b)",
|
"-D__GLIBC_PREREQ(a,b)",
|
||||||
],
|
],
|
||||||
|
@ -1906,11 +1854,7 @@ cc_binary_with_abi(
|
||||||
"x86_64",
|
"x86_64",
|
||||||
"x86",
|
"x86",
|
||||||
],
|
],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-std=gnu99",
|
|
||||||
"-O2",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
linkopts = ["-static"],
|
linkopts = ["-static"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
|
@ -1931,11 +1875,7 @@ cc_binary_with_abi(
|
||||||
"x86_64",
|
"x86_64",
|
||||||
"x86",
|
"x86",
|
||||||
],
|
],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-std=gnu99",
|
|
||||||
"-O2",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
linkopts = ["-static"],
|
linkopts = ["-static"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
|
@ -1956,11 +1896,7 @@ cc_binary_with_abi(
|
||||||
"x86_64",
|
"x86_64",
|
||||||
"x86",
|
"x86",
|
||||||
],
|
],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-std=gnu99",
|
|
||||||
"-O2",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
linkopts = ["-static"],
|
linkopts = ["-static"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
|
@ -1981,11 +1917,7 @@ cc_binary_with_abi(
|
||||||
"x86_64",
|
"x86_64",
|
||||||
"x86",
|
"x86",
|
||||||
],
|
],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-std=gnu99",
|
|
||||||
"-O2",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
linkopts = ["-static"],
|
linkopts = ["-static"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
|
@ -2006,11 +1938,7 @@ cc_binary_with_abi(
|
||||||
"x86_64",
|
"x86_64",
|
||||||
"x86",
|
"x86",
|
||||||
],
|
],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-std=gnu99",
|
|
||||||
"-O2",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
linkopts = [
|
linkopts = [
|
||||||
"-static",
|
"-static",
|
||||||
|
@ -2035,11 +1963,7 @@ cc_binary_with_abi(
|
||||||
"x86_64",
|
"x86_64",
|
||||||
"x86",
|
"x86",
|
||||||
],
|
],
|
||||||
copts = [
|
copts = _KSELFTEST_COPTS,
|
||||||
"-std=gnu99",
|
|
||||||
"-O2",
|
|
||||||
"-pthread",
|
|
||||||
],
|
|
||||||
includes = ["tools/testing/selftests"],
|
includes = ["tools/testing/selftests"],
|
||||||
linkopts = ["-static"],
|
linkopts = ["-static"],
|
||||||
path_prefix = _KSELFTEST_DIR,
|
path_prefix = _KSELFTEST_DIR,
|
||||||
|
|
|
@ -69,14 +69,17 @@ properties:
|
||||||
- const: tx
|
- const: tx
|
||||||
- const: tx_reply
|
- const: tx_reply
|
||||||
- const: rx
|
- const: rx
|
||||||
|
- const: rx_reply
|
||||||
minItems: 2
|
minItems: 2
|
||||||
|
|
||||||
mboxes:
|
mboxes:
|
||||||
description:
|
description:
|
||||||
List of phandle and mailbox channel specifiers. It should contain
|
List of phandle and mailbox channel specifiers. It should contain
|
||||||
exactly one, two or three mailboxes; the first one or two for transmitting
|
exactly one, two, three or four mailboxes; the first one or two for
|
||||||
messages ("tx") and another optional ("rx") for receiving notifications
|
transmitting messages ("tx") and another optional ("rx") for receiving
|
||||||
and delayed responses, if supported by the platform.
|
notifications and delayed responses, if supported by the platform.
|
||||||
|
The optional ("rx_reply") is for notifications completion interrupt,
|
||||||
|
if supported by the platform.
|
||||||
The number of mailboxes needed for transmitting messages depends on the
|
The number of mailboxes needed for transmitting messages depends on the
|
||||||
type of channels exposed by the specific underlying mailbox controller;
|
type of channels exposed by the specific underlying mailbox controller;
|
||||||
one single channel descriptor is enough if such channel is bidirectional,
|
one single channel descriptor is enough if such channel is bidirectional,
|
||||||
|
@ -89,9 +92,10 @@ properties:
|
||||||
2 mbox / 2 shmem => SCMI TX and RX over 2 mailbox bidirectional channels
|
2 mbox / 2 shmem => SCMI TX and RX over 2 mailbox bidirectional channels
|
||||||
2 mbox / 1 shmem => SCMI TX over 2 mailbox unidirectional channels
|
2 mbox / 1 shmem => SCMI TX over 2 mailbox unidirectional channels
|
||||||
3 mbox / 2 shmem => SCMI TX and RX over 3 mailbox unidirectional channels
|
3 mbox / 2 shmem => SCMI TX and RX over 3 mailbox unidirectional channels
|
||||||
|
4 mbox / 2 shmem => SCMI TX and RX over 4 mailbox unidirectional channels
|
||||||
Any other combination of mboxes and shmem is invalid.
|
Any other combination of mboxes and shmem is invalid.
|
||||||
minItems: 1
|
minItems: 1
|
||||||
maxItems: 3
|
maxItems: 4
|
||||||
|
|
||||||
shmem:
|
shmem:
|
||||||
description:
|
description:
|
||||||
|
@ -237,6 +241,37 @@ properties:
|
||||||
reg:
|
reg:
|
||||||
const: 0x18
|
const: 0x18
|
||||||
|
|
||||||
|
protocol@19:
|
||||||
|
type: object
|
||||||
|
allOf:
|
||||||
|
- $ref: '#/$defs/protocol-node'
|
||||||
|
- $ref: /schemas/pinctrl/pinctrl.yaml
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
const: 0x19
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
'-pins$':
|
||||||
|
type: object
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/pinctrl/pincfg-node.yaml#
|
||||||
|
- $ref: /schemas/pinctrl/pinmux-node.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
description:
|
||||||
|
A pin multiplexing sub-node describes how to configure a
|
||||||
|
set of pins in some desired function.
|
||||||
|
A single sub-node may define several pin configurations.
|
||||||
|
This sub-node is using the default pinctrl bindings to configure
|
||||||
|
pin multiplexing and using SCMI protocol to apply a specified
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- reg
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
$defs:
|
$defs:
|
||||||
|
@ -390,6 +425,25 @@ examples:
|
||||||
scmi_powercap: protocol@18 {
|
scmi_powercap: protocol@18 {
|
||||||
reg = <0x18>;
|
reg = <0x18>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
scmi_pinctrl: protocol@19 {
|
||||||
|
reg = <0x19>;
|
||||||
|
|
||||||
|
i2c2-pins {
|
||||||
|
groups = "g_i2c2_a", "g_i2c2_b";
|
||||||
|
function = "f_i2c2";
|
||||||
|
};
|
||||||
|
|
||||||
|
mdio-pins {
|
||||||
|
groups = "g_avb_mdio";
|
||||||
|
drive-strength = <24>;
|
||||||
|
};
|
||||||
|
|
||||||
|
keys_pins: keys-pins {
|
||||||
|
pins = "gpio_5_17", "gpio_5_20", "gpio_5_22", "gpio_2_1";
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/firmware/mediatek,geniezone.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: MediaTek GenieZone hypervisor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Yingshiuan Pan <yingshiuan.pan@mediatek.com>
|
||||||
|
|
||||||
|
description:
|
||||||
|
GenieZone is a proprietary type-II hypervisor firmware developed by MediaTek,
|
||||||
|
providing an isolated execution environment for mTEE (MediaTek Trusted
|
||||||
|
Execution Environment) and AVF (Android Virtualization Framework) virtual
|
||||||
|
machines. This binding facilitates the integration of GenieZone into the
|
||||||
|
Android Virtualization Framework (AVF) with Crosvm as the VMM. The driver
|
||||||
|
exposes hypervisor control interfaces to the VMM for managing virtual
|
||||||
|
machine lifecycles and assisting virtual device emulation.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: mediatek,geniezone
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
hypervisor {
|
||||||
|
compatible = "mediatek,geniezone";
|
||||||
|
};
|
|
@ -1,31 +0,0 @@
|
||||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
||||||
%YAML 1.2
|
|
||||||
---
|
|
||||||
$id: http://devicetree.org/schemas/hypervisor/mediatek,geniezone-hyp.yaml#
|
|
||||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
||||||
|
|
||||||
title: MediaTek GenieZone hypervisor
|
|
||||||
|
|
||||||
maintainers:
|
|
||||||
- Yingshiuan Pan <yingshiuan.pan@mediatek.com>
|
|
||||||
|
|
||||||
description:
|
|
||||||
This interface is designed for integrating GenieZone hypervisor into Android
|
|
||||||
Virtualization Framework(AVF) along with Crosvm as a VMM.
|
|
||||||
It acts like a wrapper for every hypercall to GenieZone hypervisor in
|
|
||||||
order to control guest VM lifecycles and virtual interrupt injections.
|
|
||||||
|
|
||||||
properties:
|
|
||||||
compatible:
|
|
||||||
const: mediatek,geniezone-hyp
|
|
||||||
|
|
||||||
required:
|
|
||||||
- compatible
|
|
||||||
|
|
||||||
additionalProperties: false
|
|
||||||
|
|
||||||
examples:
|
|
||||||
- |
|
|
||||||
hypervisor {
|
|
||||||
compatible = "mediatek,geniezone-hyp";
|
|
||||||
};
|
|
|
@ -32,6 +32,11 @@ Additional options to pass when preprocessing. The preprocessing options
|
||||||
will be used in all cases where kbuild does preprocessing including
|
will be used in all cases where kbuild does preprocessing including
|
||||||
building C files and assembler files.
|
building C files and assembler files.
|
||||||
|
|
||||||
|
KCPPFLAGS_COMPAT
|
||||||
|
----------------
|
||||||
|
Additional options to pass to $(CC_COMPAT) when preprocessing C and assembler
|
||||||
|
files.
|
||||||
|
|
||||||
KAFLAGS
|
KAFLAGS
|
||||||
-------
|
-------
|
||||||
Additional options to the assembler (for built-in and modules).
|
Additional options to the assembler (for built-in and modules).
|
||||||
|
|
|
@ -85,6 +85,17 @@ is already free).
|
||||||
|
|
||||||
Should be called from a process context (might sleep).
|
Should be called from a process context (might sleep).
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
int hwspin_lock_bust(struct hwspinlock *hwlock, unsigned int id);
|
||||||
|
|
||||||
|
After verifying the owner of the hwspinlock, release a previously acquired
|
||||||
|
hwspinlock; returns 0 on success, or an appropriate error code on failure
|
||||||
|
(e.g. -EOPNOTSUPP if the bust operation is not defined for the specific
|
||||||
|
hwspinlock).
|
||||||
|
|
||||||
|
Should be called from a process context (might sleep).
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
int hwspin_lock_timeout(struct hwspinlock *hwlock, unsigned int timeout);
|
int hwspin_lock_timeout(struct hwspinlock *hwlock, unsigned int timeout);
|
||||||
|
|
|
@ -8796,8 +8796,8 @@ F: lib/vdso/
|
||||||
GENIEZONE HYPERVISOR DRIVER
|
GENIEZONE HYPERVISOR DRIVER
|
||||||
M: Yingshiuan Pan <yingshiuan.pan@mediatek.com>
|
M: Yingshiuan Pan <yingshiuan.pan@mediatek.com>
|
||||||
M: Ze-Yu Wang <ze-yu.wang@mediatek.com>
|
M: Ze-Yu Wang <ze-yu.wang@mediatek.com>
|
||||||
M: Yi-De Wu <yi-de.wu@mediatek.com>
|
M: Liju Chen <liju-clr.chen@mediatek.com>
|
||||||
F: Documentation/devicetree/bindings/hypervisor/mediatek,geniezone-hyp.yaml
|
F: Documentation/devicetree/bindings/firmware/mediatek,geniezone.yaml
|
||||||
F: Documentation/virt/geniezone/
|
F: Documentation/virt/geniezone/
|
||||||
F: arch/arm64/geniezone/
|
F: arch/arm64/geniezone/
|
||||||
F: drivers/virt/geniezone/
|
F: drivers/virt/geniezone/
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1421,7 +1421,6 @@
|
||||||
of_irq_get
|
of_irq_get
|
||||||
of_irq_get_byname
|
of_irq_get_byname
|
||||||
of_irq_parse_one
|
of_irq_parse_one
|
||||||
of_machine_is_compatible
|
|
||||||
of_match_device
|
of_match_device
|
||||||
of_match_node
|
of_match_node
|
||||||
__of_mdiobus_register
|
__of_mdiobus_register
|
||||||
|
|
|
@ -1562,7 +1562,7 @@
|
||||||
of_graph_get_next_endpoint
|
of_graph_get_next_endpoint
|
||||||
of_graph_get_remote_port_parent
|
of_graph_get_remote_port_parent
|
||||||
of_icc_get
|
of_icc_get
|
||||||
of_machine_is_compatible
|
of_machine_compatible_match
|
||||||
of_property_read_u64_index
|
of_property_read_u64_index
|
||||||
param_ops_ullong
|
param_ops_ullong
|
||||||
phy_calibrate
|
phy_calibrate
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
argv_free
|
argv_free
|
||||||
argv_split
|
argv_split
|
||||||
arm64_use_ng_mappings
|
arm64_use_ng_mappings
|
||||||
|
__arm_smccc_hvc
|
||||||
__arm_smccc_smc
|
__arm_smccc_smc
|
||||||
atomic_notifier_call_chain
|
atomic_notifier_call_chain
|
||||||
atomic_notifier_chain_register
|
atomic_notifier_chain_register
|
||||||
|
@ -23,21 +24,25 @@
|
||||||
autoremove_wake_function
|
autoremove_wake_function
|
||||||
bcmp
|
bcmp
|
||||||
__bitmap_clear
|
__bitmap_clear
|
||||||
|
bitmap_free
|
||||||
bitmap_parse
|
bitmap_parse
|
||||||
bitmap_parselist
|
bitmap_parselist
|
||||||
bitmap_print_to_pagebuf
|
bitmap_print_to_pagebuf
|
||||||
__bitmap_set
|
__bitmap_set
|
||||||
bitmap_to_arr32
|
bitmap_to_arr32
|
||||||
|
bitmap_zalloc
|
||||||
blocking_notifier_call_chain
|
blocking_notifier_call_chain
|
||||||
blocking_notifier_chain_register
|
blocking_notifier_chain_register
|
||||||
blocking_notifier_chain_unregister
|
blocking_notifier_chain_unregister
|
||||||
bpf_trace_run1
|
bpf_trace_run1
|
||||||
|
bpf_trace_run11
|
||||||
bpf_trace_run2
|
bpf_trace_run2
|
||||||
bpf_trace_run3
|
bpf_trace_run3
|
||||||
bpf_trace_run4
|
bpf_trace_run4
|
||||||
bpf_trace_run5
|
bpf_trace_run5
|
||||||
bpf_trace_run6
|
bpf_trace_run6
|
||||||
bpf_trace_run7
|
bpf_trace_run7
|
||||||
|
bpf_trace_run8
|
||||||
bpf_trace_run9
|
bpf_trace_run9
|
||||||
bus_get_dev_root
|
bus_get_dev_root
|
||||||
bus_register
|
bus_register
|
||||||
|
@ -50,9 +55,12 @@
|
||||||
cdev_alloc
|
cdev_alloc
|
||||||
cdev_del
|
cdev_del
|
||||||
cdev_init
|
cdev_init
|
||||||
|
cgroup_taskset_first
|
||||||
|
cgroup_taskset_next
|
||||||
__check_object_size
|
__check_object_size
|
||||||
class_create
|
class_create
|
||||||
class_destroy
|
class_destroy
|
||||||
|
class_register
|
||||||
class_unregister
|
class_unregister
|
||||||
clk_disable
|
clk_disable
|
||||||
clk_enable
|
clk_enable
|
||||||
|
@ -87,6 +95,7 @@
|
||||||
cpufreq_quick_get
|
cpufreq_quick_get
|
||||||
cpufreq_register_notifier
|
cpufreq_register_notifier
|
||||||
cpufreq_unregister_notifier
|
cpufreq_unregister_notifier
|
||||||
|
__cpuhp_remove_state
|
||||||
__cpuhp_setup_state
|
__cpuhp_setup_state
|
||||||
cpu_number
|
cpu_number
|
||||||
__cpu_online_mask
|
__cpu_online_mask
|
||||||
|
@ -123,7 +132,6 @@
|
||||||
device_destroy
|
device_destroy
|
||||||
device_for_each_child
|
device_for_each_child
|
||||||
device_initialize
|
device_initialize
|
||||||
device_property_present
|
|
||||||
device_register
|
device_register
|
||||||
device_remove_file
|
device_remove_file
|
||||||
device_set_wakeup_capable
|
device_set_wakeup_capable
|
||||||
|
@ -216,6 +224,7 @@
|
||||||
dmam_alloc_attrs
|
dmam_alloc_attrs
|
||||||
dma_map_page_attrs
|
dma_map_page_attrs
|
||||||
dma_map_sgtable
|
dma_map_sgtable
|
||||||
|
dmam_free_coherent
|
||||||
dma_mmap_attrs
|
dma_mmap_attrs
|
||||||
dma_release_channel
|
dma_release_channel
|
||||||
dma_request_chan
|
dma_request_chan
|
||||||
|
@ -231,6 +240,7 @@
|
||||||
dma_unmap_page_attrs
|
dma_unmap_page_attrs
|
||||||
dma_unmap_sg_attrs
|
dma_unmap_sg_attrs
|
||||||
do_wait_intr
|
do_wait_intr
|
||||||
|
down_read
|
||||||
down_write
|
down_write
|
||||||
d_path
|
d_path
|
||||||
driver_unregister
|
driver_unregister
|
||||||
|
@ -241,12 +251,14 @@
|
||||||
drm_atomic_private_obj_fini
|
drm_atomic_private_obj_fini
|
||||||
drm_atomic_private_obj_init
|
drm_atomic_private_obj_init
|
||||||
drm_compat_ioctl
|
drm_compat_ioctl
|
||||||
|
drm_connector_attach_encoder
|
||||||
drm_connector_cleanup
|
drm_connector_cleanup
|
||||||
drm_connector_list_iter_begin
|
drm_connector_list_iter_begin
|
||||||
drm_connector_list_iter_end
|
drm_connector_list_iter_end
|
||||||
drm_connector_list_iter_next
|
drm_connector_list_iter_next
|
||||||
drm_connector_register
|
drm_connector_register
|
||||||
drm_connector_unregister
|
drm_connector_unregister
|
||||||
|
drm_connector_update_edid_property
|
||||||
drm_crtc_add_crc_entry
|
drm_crtc_add_crc_entry
|
||||||
__drm_crtc_commit_free
|
__drm_crtc_commit_free
|
||||||
drm_crtc_wait_one_vblank
|
drm_crtc_wait_one_vblank
|
||||||
|
@ -266,6 +278,7 @@
|
||||||
drm_kms_helper_hotplug_event
|
drm_kms_helper_hotplug_event
|
||||||
drmm_mode_config_init
|
drmm_mode_config_init
|
||||||
drm_mode_duplicate
|
drm_mode_duplicate
|
||||||
|
drm_mode_match
|
||||||
drm_mode_probed_add
|
drm_mode_probed_add
|
||||||
drm_modeset_lock
|
drm_modeset_lock
|
||||||
drm_modeset_unlock
|
drm_modeset_unlock
|
||||||
|
@ -303,8 +316,10 @@
|
||||||
free_pages
|
free_pages
|
||||||
free_percpu
|
free_percpu
|
||||||
freq_qos_update_request
|
freq_qos_update_request
|
||||||
|
gcd
|
||||||
generic_file_llseek
|
generic_file_llseek
|
||||||
generic_handle_irq
|
generic_handle_irq
|
||||||
|
genlmsg_multicast_allns
|
||||||
genlmsg_put
|
genlmsg_put
|
||||||
genl_register_family
|
genl_register_family
|
||||||
genl_unregister_family
|
genl_unregister_family
|
||||||
|
@ -358,9 +373,13 @@
|
||||||
i2c_smbus_write_i2c_block_data
|
i2c_smbus_write_i2c_block_data
|
||||||
i2c_transfer
|
i2c_transfer
|
||||||
i2c_transfer_buffer_flags
|
i2c_transfer_buffer_flags
|
||||||
|
i2c_unregister_device
|
||||||
ida_alloc_range
|
ida_alloc_range
|
||||||
ida_free
|
ida_free
|
||||||
idr_alloc
|
idr_alloc
|
||||||
|
idr_destroy
|
||||||
|
idr_find
|
||||||
|
idr_for_each
|
||||||
idr_remove
|
idr_remove
|
||||||
init_dummy_netdev
|
init_dummy_netdev
|
||||||
init_net
|
init_net
|
||||||
|
@ -402,6 +421,7 @@
|
||||||
kasan_flag_enabled
|
kasan_flag_enabled
|
||||||
kasprintf
|
kasprintf
|
||||||
kernel_kobj
|
kernel_kobj
|
||||||
|
kernfs_path_from_node
|
||||||
__kfifo_alloc
|
__kfifo_alloc
|
||||||
__kfifo_free
|
__kfifo_free
|
||||||
__kfifo_in
|
__kfifo_in
|
||||||
|
@ -420,8 +440,10 @@
|
||||||
kmem_cache_destroy
|
kmem_cache_destroy
|
||||||
kmem_cache_free
|
kmem_cache_free
|
||||||
kmemdup
|
kmemdup
|
||||||
|
kobject_add
|
||||||
kobject_create_and_add
|
kobject_create_and_add
|
||||||
kobject_get
|
kobject_get
|
||||||
|
kobject_init
|
||||||
kobject_init_and_add
|
kobject_init_and_add
|
||||||
kobject_put
|
kobject_put
|
||||||
kobject_uevent_env
|
kobject_uevent_env
|
||||||
|
@ -433,6 +455,7 @@
|
||||||
kstrtoint
|
kstrtoint
|
||||||
kstrtoint_from_user
|
kstrtoint_from_user
|
||||||
kstrtoll
|
kstrtoll
|
||||||
|
kstrtou16
|
||||||
kstrtou8
|
kstrtou8
|
||||||
kstrtouint
|
kstrtouint
|
||||||
kstrtouint_from_user
|
kstrtouint_from_user
|
||||||
|
@ -467,7 +490,6 @@
|
||||||
log_read_mmio
|
log_read_mmio
|
||||||
log_write_mmio
|
log_write_mmio
|
||||||
loops_per_jiffy
|
loops_per_jiffy
|
||||||
lzo1x_decompress_safe
|
|
||||||
memchr
|
memchr
|
||||||
memcmp
|
memcmp
|
||||||
memcpy
|
memcpy
|
||||||
|
@ -509,7 +531,10 @@
|
||||||
netif_receive_skb
|
netif_receive_skb
|
||||||
netif_rx
|
netif_rx
|
||||||
netif_tx_wake_queue
|
netif_tx_wake_queue
|
||||||
|
nla_memcpy
|
||||||
nla_put
|
nla_put
|
||||||
|
nla_put_64bit
|
||||||
|
nla_reserve
|
||||||
noop_llseek
|
noop_llseek
|
||||||
nr_cpu_ids
|
nr_cpu_ids
|
||||||
nsecs_to_jiffies
|
nsecs_to_jiffies
|
||||||
|
@ -531,7 +556,6 @@
|
||||||
of_find_node_by_type
|
of_find_node_by_type
|
||||||
of_find_node_opts_by_path
|
of_find_node_opts_by_path
|
||||||
of_find_property
|
of_find_property
|
||||||
of_fwnode_ops
|
|
||||||
of_get_child_by_name
|
of_get_child_by_name
|
||||||
of_get_named_gpio
|
of_get_named_gpio
|
||||||
of_get_next_available_child
|
of_get_next_available_child
|
||||||
|
@ -563,6 +587,7 @@
|
||||||
of_reserved_mem_device_release
|
of_reserved_mem_device_release
|
||||||
of_reserved_mem_lookup
|
of_reserved_mem_lookup
|
||||||
of_root
|
of_root
|
||||||
|
on_each_cpu_cond_mask
|
||||||
panic
|
panic
|
||||||
panic_notifier_list
|
panic_notifier_list
|
||||||
param_array_ops
|
param_array_ops
|
||||||
|
@ -591,9 +616,9 @@
|
||||||
perf_event_release_kernel
|
perf_event_release_kernel
|
||||||
perf_trace_buf_alloc
|
perf_trace_buf_alloc
|
||||||
perf_trace_run_bpf_submit
|
perf_trace_run_bpf_submit
|
||||||
|
pfn_is_map_memory
|
||||||
phy_power_off
|
phy_power_off
|
||||||
phy_power_on
|
phy_power_on
|
||||||
phy_set_mode_ext
|
|
||||||
pinconf_generic_dt_node_to_map
|
pinconf_generic_dt_node_to_map
|
||||||
pinctrl_dev_get_drvdata
|
pinctrl_dev_get_drvdata
|
||||||
pinctrl_lookup_state
|
pinctrl_lookup_state
|
||||||
|
@ -629,7 +654,7 @@
|
||||||
power_supply_changed
|
power_supply_changed
|
||||||
power_supply_get_by_name
|
power_supply_get_by_name
|
||||||
power_supply_get_drvdata
|
power_supply_get_drvdata
|
||||||
power_supply_get_property
|
power_supply_put
|
||||||
power_supply_register
|
power_supply_register
|
||||||
power_supply_set_property
|
power_supply_set_property
|
||||||
power_supply_unregister
|
power_supply_unregister
|
||||||
|
@ -659,13 +684,17 @@
|
||||||
_raw_read_unlock
|
_raw_read_unlock
|
||||||
_raw_read_unlock_irqrestore
|
_raw_read_unlock_irqrestore
|
||||||
_raw_spin_lock
|
_raw_spin_lock
|
||||||
|
_raw_spin_lock_bh
|
||||||
_raw_spin_lock_irq
|
_raw_spin_lock_irq
|
||||||
_raw_spin_lock_irqsave
|
_raw_spin_lock_irqsave
|
||||||
_raw_spin_trylock
|
_raw_spin_trylock
|
||||||
_raw_spin_unlock
|
_raw_spin_unlock
|
||||||
|
_raw_spin_unlock_bh
|
||||||
_raw_spin_unlock_irq
|
_raw_spin_unlock_irq
|
||||||
_raw_spin_unlock_irqrestore
|
_raw_spin_unlock_irqrestore
|
||||||
|
_raw_write_lock
|
||||||
_raw_write_lock_irqsave
|
_raw_write_lock_irqsave
|
||||||
|
_raw_write_unlock
|
||||||
_raw_write_unlock_irqrestore
|
_raw_write_unlock_irqrestore
|
||||||
rb_erase
|
rb_erase
|
||||||
rb_insert_color
|
rb_insert_color
|
||||||
|
@ -684,6 +713,7 @@
|
||||||
register_die_notifier
|
register_die_notifier
|
||||||
register_kretprobe
|
register_kretprobe
|
||||||
register_netdev
|
register_netdev
|
||||||
|
register_netdevice
|
||||||
register_pm_notifier
|
register_pm_notifier
|
||||||
register_reboot_notifier
|
register_reboot_notifier
|
||||||
register_restart_handler
|
register_restart_handler
|
||||||
|
@ -708,13 +738,16 @@
|
||||||
remove_proc_entry
|
remove_proc_entry
|
||||||
request_firmware
|
request_firmware
|
||||||
request_firmware_direct
|
request_firmware_direct
|
||||||
|
request_firmware_nowait
|
||||||
__request_region
|
__request_region
|
||||||
request_threaded_irq
|
request_threaded_irq
|
||||||
|
return_address
|
||||||
rps_needed
|
rps_needed
|
||||||
rtc_class_close
|
rtc_class_close
|
||||||
rtc_class_open
|
rtc_class_open
|
||||||
rtc_read_time
|
rtc_read_time
|
||||||
rtc_time64_to_tm
|
rtc_time64_to_tm
|
||||||
|
rtnl_is_locked
|
||||||
rtnl_lock
|
rtnl_lock
|
||||||
rtnl_unlock
|
rtnl_unlock
|
||||||
runqueues
|
runqueues
|
||||||
|
@ -730,6 +763,7 @@
|
||||||
set_cpus_allowed_ptr
|
set_cpus_allowed_ptr
|
||||||
set_normalized_timespec64
|
set_normalized_timespec64
|
||||||
sg_alloc_table
|
sg_alloc_table
|
||||||
|
sg_alloc_table_from_pages_segment
|
||||||
sg_free_table
|
sg_free_table
|
||||||
sg_init_table
|
sg_init_table
|
||||||
sg_next
|
sg_next
|
||||||
|
@ -745,6 +779,7 @@
|
||||||
single_open
|
single_open
|
||||||
single_release
|
single_release
|
||||||
skb_clone
|
skb_clone
|
||||||
|
skb_copy_bits
|
||||||
skb_copy_expand
|
skb_copy_expand
|
||||||
skb_dequeue
|
skb_dequeue
|
||||||
skb_dequeue_tail
|
skb_dequeue_tail
|
||||||
|
@ -821,7 +856,9 @@
|
||||||
subsys_system_register
|
subsys_system_register
|
||||||
__sw_hweight32
|
__sw_hweight32
|
||||||
__sw_hweight64
|
__sw_hweight64
|
||||||
|
__sw_hweight8
|
||||||
sync_file_create
|
sync_file_create
|
||||||
|
synchronize_net
|
||||||
synchronize_rcu
|
synchronize_rcu
|
||||||
syscon_regmap_lookup_by_phandle
|
syscon_regmap_lookup_by_phandle
|
||||||
sysfs_add_file_to_group
|
sysfs_add_file_to_group
|
||||||
|
@ -834,9 +871,11 @@
|
||||||
sysfs_emit
|
sysfs_emit
|
||||||
sysfs_remove_file_ns
|
sysfs_remove_file_ns
|
||||||
sysfs_remove_group
|
sysfs_remove_group
|
||||||
|
sysfs_remove_link
|
||||||
system_cpucaps
|
system_cpucaps
|
||||||
system_highpri_wq
|
system_highpri_wq
|
||||||
system_long_wq
|
system_long_wq
|
||||||
|
system_power_efficient_wq
|
||||||
system_state
|
system_state
|
||||||
system_unbound_wq
|
system_unbound_wq
|
||||||
system_wq
|
system_wq
|
||||||
|
@ -863,6 +902,7 @@
|
||||||
__traceiter_android_vh_cpu_idle_exit
|
__traceiter_android_vh_cpu_idle_exit
|
||||||
__traceiter_android_vh_cpuidle_psci_enter
|
__traceiter_android_vh_cpuidle_psci_enter
|
||||||
__traceiter_android_vh_cpuidle_psci_exit
|
__traceiter_android_vh_cpuidle_psci_exit
|
||||||
|
__traceiter_android_vh_is_fpsimd_save
|
||||||
__traceiter_clock_set_rate
|
__traceiter_clock_set_rate
|
||||||
__traceiter_device_pm_callback_end
|
__traceiter_device_pm_callback_end
|
||||||
__traceiter_device_pm_callback_start
|
__traceiter_device_pm_callback_start
|
||||||
|
@ -872,6 +912,7 @@
|
||||||
__tracepoint_android_vh_cpu_idle_exit
|
__tracepoint_android_vh_cpu_idle_exit
|
||||||
__tracepoint_android_vh_cpuidle_psci_enter
|
__tracepoint_android_vh_cpuidle_psci_enter
|
||||||
__tracepoint_android_vh_cpuidle_psci_exit
|
__tracepoint_android_vh_cpuidle_psci_exit
|
||||||
|
__tracepoint_android_vh_is_fpsimd_save
|
||||||
__tracepoint_clock_set_rate
|
__tracepoint_clock_set_rate
|
||||||
__tracepoint_device_pm_callback_end
|
__tracepoint_device_pm_callback_end
|
||||||
__tracepoint_device_pm_callback_start
|
__tracepoint_device_pm_callback_start
|
||||||
|
@ -888,6 +929,7 @@
|
||||||
unregister_chrdev_region
|
unregister_chrdev_region
|
||||||
unregister_kretprobe
|
unregister_kretprobe
|
||||||
unregister_netdev
|
unregister_netdev
|
||||||
|
unregister_netdevice_queue
|
||||||
unregister_pm_notifier
|
unregister_pm_notifier
|
||||||
unregister_reboot_notifier
|
unregister_reboot_notifier
|
||||||
up
|
up
|
||||||
|
@ -936,6 +978,7 @@
|
||||||
v4l2_m2m_reqbufs
|
v4l2_m2m_reqbufs
|
||||||
v4l2_m2m_streamoff
|
v4l2_m2m_streamoff
|
||||||
v4l2_m2m_streamon
|
v4l2_m2m_streamon
|
||||||
|
v4l2_subdev_init
|
||||||
v4l_bound_align_image
|
v4l_bound_align_image
|
||||||
vb2_buffer_done
|
vb2_buffer_done
|
||||||
vb2_dma_sg_memops
|
vb2_dma_sg_memops
|
||||||
|
@ -972,6 +1015,57 @@
|
||||||
wakeup_source_register
|
wakeup_source_register
|
||||||
wakeup_source_unregister
|
wakeup_source_unregister
|
||||||
__warn_printk
|
__warn_printk
|
||||||
|
xhci_enable_interrupter
|
||||||
|
xhci_get_endpoint_index
|
||||||
|
|
||||||
|
# required by cfg80211.ko
|
||||||
|
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_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_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
|
||||||
|
unregister_netdevice_notifier
|
||||||
|
unregister_pernet_device
|
||||||
|
verify_pkcs7_signature
|
||||||
|
wireless_nlevent_flush
|
||||||
|
x509_load_certificate_list
|
||||||
|
|
||||||
# required by clk_exynos.ko
|
# required by clk_exynos.ko
|
||||||
clk_hw_get_parent
|
clk_hw_get_parent
|
||||||
|
@ -1015,9 +1109,9 @@
|
||||||
drm_modeset_lock_single_interruptible
|
drm_modeset_lock_single_interruptible
|
||||||
drm_object_property_set_value
|
drm_object_property_set_value
|
||||||
__drm_printfn_debug
|
__drm_printfn_debug
|
||||||
|
hdmi_drm_infoframe_init
|
||||||
i2c_add_adapter
|
i2c_add_adapter
|
||||||
memchr_inv
|
memchr_inv
|
||||||
__sw_hweight8
|
|
||||||
|
|
||||||
# required by drm_ttm_helper.ko
|
# required by drm_ttm_helper.ko
|
||||||
drm_print_bits
|
drm_print_bits
|
||||||
|
@ -1037,7 +1131,6 @@
|
||||||
kstat
|
kstat
|
||||||
nr_irqs
|
nr_irqs
|
||||||
register_console
|
register_console
|
||||||
return_address
|
|
||||||
stack_trace_save_tsk
|
stack_trace_save_tsk
|
||||||
touch_softlockup_watchdog
|
touch_softlockup_watchdog
|
||||||
__traceiter_android_rvh_arm64_serror_panic
|
__traceiter_android_rvh_arm64_serror_panic
|
||||||
|
@ -1045,6 +1138,8 @@
|
||||||
__traceiter_android_rvh_do_el1_undef
|
__traceiter_android_rvh_do_el1_undef
|
||||||
__traceiter_android_rvh_handle_bad_stack
|
__traceiter_android_rvh_handle_bad_stack
|
||||||
__traceiter_android_vh_ipi_stop
|
__traceiter_android_vh_ipi_stop
|
||||||
|
__traceiter_android_vh_logbuf
|
||||||
|
__traceiter_android_vh_logbuf_pr_cont
|
||||||
__traceiter_irq_handler_entry
|
__traceiter_irq_handler_entry
|
||||||
__traceiter_irq_handler_exit
|
__traceiter_irq_handler_exit
|
||||||
__traceiter_rwmmio_post_read
|
__traceiter_rwmmio_post_read
|
||||||
|
@ -1056,6 +1151,8 @@
|
||||||
__tracepoint_android_rvh_do_el1_undef
|
__tracepoint_android_rvh_do_el1_undef
|
||||||
__tracepoint_android_rvh_handle_bad_stack
|
__tracepoint_android_rvh_handle_bad_stack
|
||||||
__tracepoint_android_vh_ipi_stop
|
__tracepoint_android_vh_ipi_stop
|
||||||
|
__tracepoint_android_vh_logbuf
|
||||||
|
__tracepoint_android_vh_logbuf_pr_cont
|
||||||
__tracepoint_irq_handler_entry
|
__tracepoint_irq_handler_entry
|
||||||
__tracepoint_irq_handler_exit
|
__tracepoint_irq_handler_exit
|
||||||
__tracepoint_rwmmio_post_read
|
__tracepoint_rwmmio_post_read
|
||||||
|
@ -1065,12 +1162,15 @@
|
||||||
|
|
||||||
# required by dwc3-exynos-usb.ko
|
# required by dwc3-exynos-usb.ko
|
||||||
device_create_managed_software_node
|
device_create_managed_software_node
|
||||||
|
device_property_present
|
||||||
platform_device_add
|
platform_device_add
|
||||||
platform_device_add_resources
|
platform_device_add_resources
|
||||||
platform_device_alloc
|
platform_device_alloc
|
||||||
platform_device_del
|
platform_device_del
|
||||||
platform_device_put
|
platform_device_put
|
||||||
pm_runtime_allow
|
pm_runtime_allow
|
||||||
|
__traceiter_dwc3_ep_queue
|
||||||
|
__tracepoint_dwc3_ep_queue
|
||||||
usb_gadget_set_state
|
usb_gadget_set_state
|
||||||
usb_otg_state_string
|
usb_otg_state_string
|
||||||
usb_role_switch_set_role
|
usb_role_switch_set_role
|
||||||
|
@ -1083,10 +1183,6 @@
|
||||||
arch_freq_scale
|
arch_freq_scale
|
||||||
available_idle_cpu
|
available_idle_cpu
|
||||||
balance_push_callback
|
balance_push_callback
|
||||||
bpf_trace_run11
|
|
||||||
bpf_trace_run8
|
|
||||||
cgroup_taskset_first
|
|
||||||
cgroup_taskset_next
|
|
||||||
check_preempt_curr
|
check_preempt_curr
|
||||||
cpufreq_add_update_util_hook
|
cpufreq_add_update_util_hook
|
||||||
cpufreq_disable_fast_switch
|
cpufreq_disable_fast_switch
|
||||||
|
@ -1096,7 +1192,6 @@
|
||||||
cpufreq_register_governor
|
cpufreq_register_governor
|
||||||
cpufreq_remove_update_util_hook
|
cpufreq_remove_update_util_hook
|
||||||
cpufreq_this_cpu_can_update
|
cpufreq_this_cpu_can_update
|
||||||
__cpuhp_remove_state
|
|
||||||
cpuidle_governor_latency_req
|
cpuidle_governor_latency_req
|
||||||
cpuidle_register_governor
|
cpuidle_register_governor
|
||||||
cpupri_find_fitness
|
cpupri_find_fitness
|
||||||
|
@ -1113,7 +1208,6 @@
|
||||||
memory_read_from_buffer
|
memory_read_from_buffer
|
||||||
migrate_swap
|
migrate_swap
|
||||||
ns_capable
|
ns_capable
|
||||||
pfn_is_map_memory
|
|
||||||
pick_highest_pushable_task
|
pick_highest_pushable_task
|
||||||
__put_cred
|
__put_cred
|
||||||
raw_spin_rq_lock_nested
|
raw_spin_rq_lock_nested
|
||||||
|
@ -1155,7 +1249,6 @@
|
||||||
__traceiter_android_rvh_select_task_rq_rt
|
__traceiter_android_rvh_select_task_rq_rt
|
||||||
__traceiter_android_rvh_try_to_wake_up
|
__traceiter_android_rvh_try_to_wake_up
|
||||||
__traceiter_android_rvh_uclamp_eff_get
|
__traceiter_android_rvh_uclamp_eff_get
|
||||||
__traceiter_android_rvh_update_cpu_capacity
|
|
||||||
__traceiter_android_rvh_update_misfit_status
|
__traceiter_android_rvh_update_misfit_status
|
||||||
__traceiter_android_rvh_wake_up_new_task
|
__traceiter_android_rvh_wake_up_new_task
|
||||||
__traceiter_android_vh_binder_restore_priority
|
__traceiter_android_vh_binder_restore_priority
|
||||||
|
@ -1164,7 +1257,6 @@
|
||||||
__traceiter_android_vh_scheduler_tick
|
__traceiter_android_vh_scheduler_tick
|
||||||
__traceiter_android_vh_syscall_prctl_finished
|
__traceiter_android_vh_syscall_prctl_finished
|
||||||
__traceiter_binder_transaction_received
|
__traceiter_binder_transaction_received
|
||||||
__traceiter_cpu_frequency_limits
|
|
||||||
__tracepoint_android_rvh_can_migrate_task
|
__tracepoint_android_rvh_can_migrate_task
|
||||||
__tracepoint_android_rvh_check_preempt_wakeup
|
__tracepoint_android_rvh_check_preempt_wakeup
|
||||||
__tracepoint_android_rvh_cpu_cgroup_attach
|
__tracepoint_android_rvh_cpu_cgroup_attach
|
||||||
|
@ -1186,7 +1278,6 @@
|
||||||
__tracepoint_android_rvh_select_task_rq_rt
|
__tracepoint_android_rvh_select_task_rq_rt
|
||||||
__tracepoint_android_rvh_try_to_wake_up
|
__tracepoint_android_rvh_try_to_wake_up
|
||||||
__tracepoint_android_rvh_uclamp_eff_get
|
__tracepoint_android_rvh_uclamp_eff_get
|
||||||
__tracepoint_android_rvh_update_cpu_capacity
|
|
||||||
__tracepoint_android_rvh_update_misfit_status
|
__tracepoint_android_rvh_update_misfit_status
|
||||||
__tracepoint_android_rvh_wake_up_new_task
|
__tracepoint_android_rvh_wake_up_new_task
|
||||||
__tracepoint_android_vh_binder_restore_priority
|
__tracepoint_android_vh_binder_restore_priority
|
||||||
|
@ -1195,7 +1286,6 @@
|
||||||
__tracepoint_android_vh_scheduler_tick
|
__tracepoint_android_vh_scheduler_tick
|
||||||
__tracepoint_android_vh_syscall_prctl_finished
|
__tracepoint_android_vh_syscall_prctl_finished
|
||||||
__tracepoint_binder_transaction_received
|
__tracepoint_binder_transaction_received
|
||||||
__tracepoint_cpu_frequency_limits
|
|
||||||
uclamp_eff_value
|
uclamp_eff_value
|
||||||
update_rq_clock
|
update_rq_clock
|
||||||
wake_up_if_idle
|
wake_up_if_idle
|
||||||
|
@ -1214,7 +1304,6 @@
|
||||||
# required by exynos-coresight-etm.ko
|
# required by exynos-coresight-etm.ko
|
||||||
__cpuhp_setup_state_cpuslocked
|
__cpuhp_setup_state_cpuslocked
|
||||||
|
|
||||||
|
|
||||||
# required by exynos-cpufreq.ko
|
# required by exynos-cpufreq.ko
|
||||||
cpufreq_freq_transition_begin
|
cpufreq_freq_transition_begin
|
||||||
cpufreq_freq_transition_end
|
cpufreq_freq_transition_end
|
||||||
|
@ -1238,6 +1327,7 @@
|
||||||
__tracepoint_ipi_raise
|
__tracepoint_ipi_raise
|
||||||
|
|
||||||
# required by exynos-drm.ko
|
# required by exynos-drm.ko
|
||||||
|
class_create_file_ns
|
||||||
component_add
|
component_add
|
||||||
component_bind_all
|
component_bind_all
|
||||||
component_del
|
component_del
|
||||||
|
@ -1249,6 +1339,7 @@
|
||||||
devm_drm_panel_bridge_add_typed
|
devm_drm_panel_bridge_add_typed
|
||||||
__do_once_done
|
__do_once_done
|
||||||
__do_once_start
|
__do_once_start
|
||||||
|
drm_add_edid_modes
|
||||||
drm_atomic_add_affected_connectors
|
drm_atomic_add_affected_connectors
|
||||||
drm_atomic_add_affected_planes
|
drm_atomic_add_affected_planes
|
||||||
drm_atomic_bridge_chain_disable
|
drm_atomic_bridge_chain_disable
|
||||||
|
@ -1295,6 +1386,8 @@
|
||||||
drm_bridge_add
|
drm_bridge_add
|
||||||
drm_bridge_attach
|
drm_bridge_attach
|
||||||
drm_bridge_chain_mode_set
|
drm_bridge_chain_mode_set
|
||||||
|
drm_connector_atomic_hdr_metadata_equal
|
||||||
|
drm_connector_attach_hdr_output_metadata_property
|
||||||
drm_connector_init
|
drm_connector_init
|
||||||
drm_crtc_enable_color_mgmt
|
drm_crtc_enable_color_mgmt
|
||||||
drm_crtc_handle_vblank
|
drm_crtc_handle_vblank
|
||||||
|
@ -1305,6 +1398,7 @@
|
||||||
drm_crtc_vblank_on
|
drm_crtc_vblank_on
|
||||||
drm_crtc_vblank_put
|
drm_crtc_vblank_put
|
||||||
drm_display_mode_to_videomode
|
drm_display_mode_to_videomode
|
||||||
|
drm_edid_to_sad
|
||||||
drm_format_info
|
drm_format_info
|
||||||
drm_framebuffer_init
|
drm_framebuffer_init
|
||||||
drm_gem_create_mmap_offset
|
drm_gem_create_mmap_offset
|
||||||
|
@ -1320,17 +1414,22 @@
|
||||||
drm_kms_helper_poll_fini
|
drm_kms_helper_poll_fini
|
||||||
drm_kms_helper_poll_init
|
drm_kms_helper_poll_init
|
||||||
__drmm_add_action_or_reset
|
__drmm_add_action_or_reset
|
||||||
|
drm_match_cea_mode
|
||||||
__drmm_crtc_alloc_with_planes
|
__drmm_crtc_alloc_with_planes
|
||||||
__drmm_encoder_alloc
|
__drmm_encoder_alloc
|
||||||
drmm_kmalloc
|
drmm_kmalloc
|
||||||
drm_mode_config_helper_resume
|
drm_mode_config_helper_resume
|
||||||
drm_mode_config_helper_suspend
|
drm_mode_config_helper_suspend
|
||||||
drm_mode_config_reset
|
drm_mode_config_reset
|
||||||
|
drm_mode_copy
|
||||||
|
drm_mode_destroy
|
||||||
|
drm_mode_is_420_only
|
||||||
drm_modeset_acquire_fini
|
drm_modeset_acquire_fini
|
||||||
drm_modeset_acquire_init
|
drm_modeset_acquire_init
|
||||||
drm_modeset_backoff
|
drm_modeset_backoff
|
||||||
drm_modeset_drop_locks
|
drm_modeset_drop_locks
|
||||||
drm_modeset_lock_all_ctx
|
drm_modeset_lock_all_ctx
|
||||||
|
drm_mode_sort
|
||||||
__drmm_universal_plane_alloc
|
__drmm_universal_plane_alloc
|
||||||
drm_plane_create_alpha_property
|
drm_plane_create_alpha_property
|
||||||
drm_plane_create_blend_mode_property
|
drm_plane_create_blend_mode_property
|
||||||
|
@ -1358,6 +1457,9 @@
|
||||||
drm_writeback_cleanup_job
|
drm_writeback_cleanup_job
|
||||||
drm_writeback_connector_init
|
drm_writeback_connector_init
|
||||||
drm_writeback_queue_job
|
drm_writeback_queue_job
|
||||||
|
get_options
|
||||||
|
hdmi_drm_infoframe_pack_only
|
||||||
|
irq_set_irq_type
|
||||||
mipi_dsi_create_packet
|
mipi_dsi_create_packet
|
||||||
mipi_dsi_dcs_set_column_address
|
mipi_dsi_dcs_set_column_address
|
||||||
mipi_dsi_dcs_set_page_address
|
mipi_dsi_dcs_set_page_address
|
||||||
|
@ -1370,6 +1472,8 @@
|
||||||
phy_init
|
phy_init
|
||||||
platform_find_device_by_driver
|
platform_find_device_by_driver
|
||||||
seq_release
|
seq_release
|
||||||
|
strnchr
|
||||||
|
v4l2_match_dv_timings
|
||||||
|
|
||||||
# required by exynos-dsufreq.ko
|
# required by exynos-dsufreq.ko
|
||||||
nsec_to_clock_t
|
nsec_to_clock_t
|
||||||
|
@ -1381,30 +1485,33 @@
|
||||||
# required by exynos-itmon-v2.ko
|
# required by exynos-itmon-v2.ko
|
||||||
int_pow
|
int_pow
|
||||||
|
|
||||||
|
# required by exynos-mpam.ko
|
||||||
|
kobject_move
|
||||||
|
|
||||||
|
# required by exynos-msc-dsu.ko
|
||||||
|
bitmap_alloc
|
||||||
|
|
||||||
# required by exynos-pd.ko
|
# required by exynos-pd.ko
|
||||||
of_genpd_add_provider_simple
|
of_genpd_add_provider_simple
|
||||||
pm_genpd_add_subdomain
|
pm_genpd_add_subdomain
|
||||||
pm_genpd_init
|
pm_genpd_init
|
||||||
|
|
||||||
# required by exynos-pkvm-module.ko
|
# required by exynos-pkvm-module.ko
|
||||||
__arm_smccc_hvc
|
|
||||||
kimage_vaddr
|
kimage_vaddr
|
||||||
on_each_cpu_cond_mask
|
|
||||||
__pkvm_load_el2_module
|
__pkvm_load_el2_module
|
||||||
__pkvm_register_el2_call
|
__pkvm_register_el2_call
|
||||||
|
|
||||||
# required by exynos-pkvm-s2mpu.ko
|
# required by exynos-pkvm-s2mpu.ko
|
||||||
kvm_iommu_register_driver
|
kvm_iommu_register_driver
|
||||||
|
|
||||||
# required by exynos-reboot.ko
|
# required by exynos-reboot.ko
|
||||||
pm_power_off
|
pm_power_off
|
||||||
|
|
||||||
# required by exynos-seh.ko
|
|
||||||
dmam_free_coherent
|
|
||||||
|
|
||||||
# required by exynos-ssld.ko
|
# required by exynos-ssld.ko
|
||||||
driver_register
|
driver_register
|
||||||
|
|
||||||
# required by exynos-usb-audio-offloading.ko
|
# required by exynos-usb-audio-offloading.ko
|
||||||
|
phy_set_mode_ext
|
||||||
snd_ctl_add
|
snd_ctl_add
|
||||||
snd_ctl_new1
|
snd_ctl_new1
|
||||||
snd_usb_autoresume
|
snd_usb_autoresume
|
||||||
|
@ -1413,8 +1520,6 @@
|
||||||
usb_altnum_to_altsetting
|
usb_altnum_to_altsetting
|
||||||
usb_choose_configuration
|
usb_choose_configuration
|
||||||
usb_ifnum_to_if
|
usb_ifnum_to_if
|
||||||
xhci_enable_interrupter
|
|
||||||
xhci_get_endpoint_index
|
|
||||||
xhci_get_ep_ctx
|
xhci_get_ep_ctx
|
||||||
|
|
||||||
# required by exynos9955_sound.ko
|
# required by exynos9955_sound.ko
|
||||||
|
@ -1449,14 +1554,12 @@
|
||||||
bpf_trace_run10
|
bpf_trace_run10
|
||||||
devfreq_add_device
|
devfreq_add_device
|
||||||
devfreq_add_governor
|
devfreq_add_governor
|
||||||
devfreq_monitor_stop
|
|
||||||
devfreq_recommended_opp
|
devfreq_recommended_opp
|
||||||
devfreq_register_opp_notifier
|
devfreq_register_opp_notifier
|
||||||
devfreq_remove_device
|
devfreq_remove_device
|
||||||
devfreq_unregister_opp_notifier
|
devfreq_unregister_opp_notifier
|
||||||
dev_pm_opp_disable
|
dev_pm_opp_disable
|
||||||
dev_pm_opp_get_freq_indexed
|
dev_pm_opp_get_freq_indexed
|
||||||
perf_event_read_value
|
|
||||||
update_devfreq
|
update_devfreq
|
||||||
|
|
||||||
# required by exynos_mct_v3.ko
|
# required by exynos_mct_v3.ko
|
||||||
|
@ -1470,6 +1573,30 @@
|
||||||
hex_dump_to_buffer
|
hex_dump_to_buffer
|
||||||
vb2_poll
|
vb2_poll
|
||||||
|
|
||||||
|
# required by exynos_mpam_policy.ko
|
||||||
|
current_time
|
||||||
|
d_add
|
||||||
|
d_alloc_name
|
||||||
|
d_make_root
|
||||||
|
dput
|
||||||
|
fs_kobj
|
||||||
|
get_next_ino
|
||||||
|
get_tree_single
|
||||||
|
init_user_ns
|
||||||
|
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
|
||||||
|
__tracepoint_android_rvh_sched_fork
|
||||||
|
__tracepoint_android_vh_cgroup_attach
|
||||||
|
unregister_filesystem
|
||||||
|
|
||||||
# required by exynos_thermal_v2.ko
|
# required by exynos_thermal_v2.ko
|
||||||
devm_thermal_of_zone_register
|
devm_thermal_of_zone_register
|
||||||
kthread_flush_work
|
kthread_flush_work
|
||||||
|
@ -1535,7 +1662,6 @@
|
||||||
v4l2_device_set_name
|
v4l2_device_set_name
|
||||||
v4l2_device_unregister_subdev
|
v4l2_device_unregister_subdev
|
||||||
v4l2_subdev_call_wrappers
|
v4l2_subdev_call_wrappers
|
||||||
v4l2_subdev_init
|
|
||||||
vb2_mmap
|
vb2_mmap
|
||||||
|
|
||||||
# required by freq-qos-tracer.ko
|
# required by freq-qos-tracer.ko
|
||||||
|
@ -1568,13 +1694,14 @@
|
||||||
# required by hts.ko
|
# required by hts.ko
|
||||||
devm_devfreq_register_notifier
|
devm_devfreq_register_notifier
|
||||||
kernel_cpustat
|
kernel_cpustat
|
||||||
kernfs_path_from_node
|
|
||||||
__traceiter_android_rvh_cpufreq_transition
|
__traceiter_android_rvh_cpufreq_transition
|
||||||
__traceiter_android_vh_free_task
|
__traceiter_android_vh_free_task
|
||||||
__traceiter_android_vh_is_fpsimd_save
|
|
||||||
__tracepoint_android_rvh_cpufreq_transition
|
__tracepoint_android_rvh_cpufreq_transition
|
||||||
__tracepoint_android_vh_free_task
|
__tracepoint_android_vh_free_task
|
||||||
__tracepoint_android_vh_is_fpsimd_save
|
|
||||||
|
# required by hwdecomp.ko
|
||||||
|
lzo1x_decompress_safe
|
||||||
|
|
||||||
# required by i2c-dev.ko
|
# required by i2c-dev.ko
|
||||||
bus_register_notifier
|
bus_register_notifier
|
||||||
bus_unregister_notifier
|
bus_unregister_notifier
|
||||||
|
@ -1616,13 +1743,19 @@
|
||||||
i3c_driver_register_with_owner
|
i3c_driver_register_with_owner
|
||||||
i3c_driver_unregister
|
i3c_driver_unregister
|
||||||
|
|
||||||
|
# required by lealt-mon.ko
|
||||||
|
perf_event_read_value
|
||||||
|
|
||||||
# required by leds-s2mf301.ko
|
# required by leds-s2mf301.ko
|
||||||
devm_led_classdev_register_ext
|
devm_led_classdev_register_ext
|
||||||
|
|
||||||
|
# required by leds-s2mpb02.ko
|
||||||
|
led_classdev_register_ext
|
||||||
|
led_classdev_unregister
|
||||||
|
|
||||||
# required by mcDrvModule.ko
|
# required by mcDrvModule.ko
|
||||||
crypto_shash_final
|
crypto_shash_final
|
||||||
crypto_shash_update
|
crypto_shash_update
|
||||||
down_read
|
|
||||||
freezer_active
|
freezer_active
|
||||||
freezing_slow_path
|
freezing_slow_path
|
||||||
get_zeroed_page
|
get_zeroed_page
|
||||||
|
@ -1653,17 +1786,15 @@
|
||||||
rtc_set_time
|
rtc_set_time
|
||||||
rtc_tm_to_time64
|
rtc_tm_to_time64
|
||||||
sched_setscheduler
|
sched_setscheduler
|
||||||
sysfs_remove_link
|
|
||||||
__wake_up_locked_key
|
__wake_up_locked_key
|
||||||
__wake_up_sync
|
__wake_up_sync
|
||||||
|
|
||||||
# required by npu.ko
|
# required by npu.ko
|
||||||
class_register
|
cpuidle_pause_and_lock
|
||||||
|
cpuidle_resume_and_unlock
|
||||||
vsprintf
|
vsprintf
|
||||||
|
|
||||||
# required by pablo-libs.ko
|
# required by pablo-libs.ko
|
||||||
bitmap_free
|
|
||||||
bitmap_zalloc
|
|
||||||
bsearch
|
bsearch
|
||||||
device_get_dma_attr
|
device_get_dma_attr
|
||||||
__dynamic_pr_debug
|
__dynamic_pr_debug
|
||||||
|
@ -1687,12 +1818,9 @@
|
||||||
devm_gpiod_get
|
devm_gpiod_get
|
||||||
devm_regulator_get_optional
|
devm_regulator_get_optional
|
||||||
drm_bridge_remove
|
drm_bridge_remove
|
||||||
drm_connector_attach_encoder
|
|
||||||
drm_connector_update_edid_property
|
|
||||||
drm_mode_convert_to_umode
|
drm_mode_convert_to_umode
|
||||||
drm_mode_debug_printmodeline
|
drm_mode_debug_printmodeline
|
||||||
drm_mode_equal
|
drm_mode_equal
|
||||||
drm_mode_match
|
|
||||||
drm_panel_add
|
drm_panel_add
|
||||||
drm_panel_disable
|
drm_panel_disable
|
||||||
drm_panel_enable
|
drm_panel_enable
|
||||||
|
@ -1735,6 +1863,7 @@
|
||||||
gpiochip_unlock_as_irq
|
gpiochip_unlock_as_irq
|
||||||
irq_domain_xlate_twocell
|
irq_domain_xlate_twocell
|
||||||
irq_set_chained_handler_and_data
|
irq_set_chained_handler_and_data
|
||||||
|
of_fwnode_ops
|
||||||
of_node_name_eq
|
of_node_name_eq
|
||||||
pinctrl_add_gpio_range
|
pinctrl_add_gpio_range
|
||||||
pinctrl_force_sleep
|
pinctrl_force_sleep
|
||||||
|
@ -1771,7 +1900,6 @@
|
||||||
# required by s2mf301_mfd.ko
|
# required by s2mf301_mfd.ko
|
||||||
i2c_new_dummy_device
|
i2c_new_dummy_device
|
||||||
i2c_smbus_write_word_data
|
i2c_smbus_write_word_data
|
||||||
i2c_unregister_device
|
|
||||||
__irq_alloc_descs
|
__irq_alloc_descs
|
||||||
|
|
||||||
# required by s2p_rtc.ko
|
# required by s2p_rtc.ko
|
||||||
|
@ -1819,10 +1947,20 @@
|
||||||
|
|
||||||
# required by samsung_dma_heap.ko
|
# required by samsung_dma_heap.ko
|
||||||
anon_inode_getfile
|
anon_inode_getfile
|
||||||
|
contig_page_data
|
||||||
|
deferred_free
|
||||||
|
dmabuf_page_pool_alloc
|
||||||
|
dmabuf_page_pool_create
|
||||||
|
dmabuf_page_pool_destroy
|
||||||
|
dmabuf_page_pool_free
|
||||||
|
dmabuf_page_pool_get_size
|
||||||
dma_heap_add
|
dma_heap_add
|
||||||
dma_heap_get_dev
|
dma_heap_get_dev
|
||||||
dma_heap_get_drvdata
|
dma_heap_get_drvdata
|
||||||
dma_heap_get_name
|
dma_heap_get_name
|
||||||
|
is_dma_buf_file
|
||||||
|
mod_node_page_state
|
||||||
|
register_shrinker
|
||||||
|
|
||||||
# required by samsung_iommu_v9.ko
|
# required by samsung_iommu_v9.ko
|
||||||
device_link_add
|
device_link_add
|
||||||
|
@ -1852,25 +1990,19 @@
|
||||||
|
|
||||||
# required by scsc_bt.ko
|
# required by scsc_bt.ko
|
||||||
crc_ccitt
|
crc_ccitt
|
||||||
|
hci_recv_frame
|
||||||
|
hci_uart_register_device_priv
|
||||||
|
hci_uart_tx_wakeup
|
||||||
|
hci_uart_unregister_device
|
||||||
param_ops_ullong
|
param_ops_ullong
|
||||||
|
__serdev_device_driver_register
|
||||||
skb_split
|
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
|
# required by scsc_logring.ko
|
||||||
dev_vprintk_emit
|
dev_vprintk_emit
|
||||||
vprintk_emit
|
vprintk_emit
|
||||||
|
|
||||||
# required by scsc_mx.ko
|
# required by scsc_mx.ko
|
||||||
genlmsg_multicast_allns
|
|
||||||
__kfifo_from_user
|
__kfifo_from_user
|
||||||
kobject_uevent
|
kobject_uevent
|
||||||
|
|
||||||
|
@ -1879,6 +2011,7 @@
|
||||||
of_property_read_variable_u16_array
|
of_property_read_variable_u16_array
|
||||||
pci_clear_master
|
pci_clear_master
|
||||||
pci_enable_wake
|
pci_enable_wake
|
||||||
|
pci_load_and_free_saved_state
|
||||||
pcim_enable_device
|
pcim_enable_device
|
||||||
pcim_iomap_regions
|
pcim_iomap_regions
|
||||||
pcim_iomap_table
|
pcim_iomap_table
|
||||||
|
@ -1891,6 +2024,7 @@
|
||||||
# required by scsc_wlan.ko
|
# required by scsc_wlan.ko
|
||||||
arp_tbl
|
arp_tbl
|
||||||
dev_alloc_name
|
dev_alloc_name
|
||||||
|
dev_change_flags
|
||||||
__dev_queue_xmit
|
__dev_queue_xmit
|
||||||
dev_set_threaded
|
dev_set_threaded
|
||||||
down_trylock
|
down_trylock
|
||||||
|
@ -1912,29 +2046,29 @@
|
||||||
__netif_napi_del
|
__netif_napi_del
|
||||||
netif_schedule_queue
|
netif_schedule_queue
|
||||||
netif_tx_stop_all_queues
|
netif_tx_stop_all_queues
|
||||||
netlink_broadcast
|
|
||||||
nla_memcpy
|
|
||||||
nla_put_64bit
|
|
||||||
nla_put_nohdr
|
nla_put_nohdr
|
||||||
nla_reserve
|
|
||||||
_raw_read_lock_bh
|
_raw_read_lock_bh
|
||||||
_raw_read_unlock_bh
|
_raw_read_unlock_bh
|
||||||
_raw_spin_lock_bh
|
|
||||||
_raw_spin_unlock_bh
|
|
||||||
_raw_write_lock
|
|
||||||
_raw_write_lock_bh
|
_raw_write_lock_bh
|
||||||
_raw_write_unlock
|
|
||||||
_raw_write_unlock_bh
|
_raw_write_unlock_bh
|
||||||
register_inet6addr_notifier
|
register_inet6addr_notifier
|
||||||
register_inetaddr_notifier
|
register_inetaddr_notifier
|
||||||
register_netdevice
|
|
||||||
rtnl_is_locked
|
|
||||||
skb_copy
|
skb_copy
|
||||||
skb_copy_bits
|
|
||||||
synchronize_net
|
|
||||||
unregister_inet6addr_notifier
|
unregister_inet6addr_notifier
|
||||||
unregister_inetaddr_notifier
|
unregister_inetaddr_notifier
|
||||||
unregister_netdevice_queue
|
|
||||||
|
# required by scsi_srpmb.ko
|
||||||
|
blk_execute_rq
|
||||||
|
blk_mq_alloc_request
|
||||||
|
blk_mq_free_request
|
||||||
|
blk_rq_map_kern
|
||||||
|
scsi_block_when_processing_errors
|
||||||
|
__scsi_device_lookup_by_target
|
||||||
|
scsi_execute_cmd
|
||||||
|
scsi_print_sense_hdr
|
||||||
|
sdev_prefix_printk
|
||||||
|
wakeup_source_add
|
||||||
|
wakeup_source_remove
|
||||||
|
|
||||||
# required by sec_ts.ko
|
# required by sec_ts.ko
|
||||||
input_allocate_device
|
input_allocate_device
|
||||||
|
@ -2007,14 +2141,10 @@
|
||||||
drm_syncobj_replace_fence
|
drm_syncobj_replace_fence
|
||||||
__fdget
|
__fdget
|
||||||
__folio_put
|
__folio_put
|
||||||
gcd
|
|
||||||
get_random_u32
|
get_random_u32
|
||||||
__get_task_comm
|
__get_task_comm
|
||||||
handle_simple_irq
|
handle_simple_irq
|
||||||
ida_destroy
|
ida_destroy
|
||||||
idr_destroy
|
|
||||||
idr_find
|
|
||||||
idr_for_each
|
|
||||||
idr_get_next
|
idr_get_next
|
||||||
idr_replace
|
idr_replace
|
||||||
jiffies64_to_msecs
|
jiffies64_to_msecs
|
||||||
|
@ -2053,7 +2183,6 @@
|
||||||
seq_putc
|
seq_putc
|
||||||
seq_write
|
seq_write
|
||||||
set_page_dirty
|
set_page_dirty
|
||||||
sg_alloc_table_from_pages_segment
|
|
||||||
shmem_file_setup
|
shmem_file_setup
|
||||||
shmem_read_mapping_page_gfp
|
shmem_read_mapping_page_gfp
|
||||||
si_meminfo
|
si_meminfo
|
||||||
|
@ -2163,7 +2292,6 @@
|
||||||
pm_runtime_get_if_active
|
pm_runtime_get_if_active
|
||||||
pm_wakeup_dev_event
|
pm_wakeup_dev_event
|
||||||
proc_symlink
|
proc_symlink
|
||||||
request_firmware_nowait
|
|
||||||
snd_device_free
|
snd_device_free
|
||||||
snd_dma_alloc_dir_pages
|
snd_dma_alloc_dir_pages
|
||||||
snd_dma_free_pages
|
snd_dma_free_pages
|
||||||
|
@ -2233,10 +2361,10 @@
|
||||||
try_module_get
|
try_module_get
|
||||||
|
|
||||||
# required by ufs-exynos-core.ko
|
# required by ufs-exynos-core.ko
|
||||||
|
blk_crypto_reprogram_all_keys
|
||||||
blk_mq_unique_tag
|
blk_mq_unique_tag
|
||||||
blk_queue_update_dma_alignment
|
blk_queue_update_dma_alignment
|
||||||
kobject_add
|
devm_blk_crypto_profile_init
|
||||||
kobject_init
|
|
||||||
of_cpu_node_to_id
|
of_cpu_node_to_id
|
||||||
__traceiter_android_vh_ufs_check_int_errors
|
__traceiter_android_vh_ufs_check_int_errors
|
||||||
__traceiter_android_vh_ufs_compl_command
|
__traceiter_android_vh_ufs_compl_command
|
||||||
|
@ -2286,9 +2414,6 @@
|
||||||
usb_gstrings_attach
|
usb_gstrings_attach
|
||||||
usb_os_desc_prepare_interf_dir
|
usb_os_desc_prepare_interf_dir
|
||||||
|
|
||||||
# required by usb_notifier.ko
|
|
||||||
power_supply_put
|
|
||||||
|
|
||||||
# required by usb_notify_layer.ko
|
# required by usb_notify_layer.ko
|
||||||
kthread_complete_and_exit
|
kthread_complete_and_exit
|
||||||
usb_speed_string
|
usb_speed_string
|
||||||
|
@ -2314,7 +2439,6 @@
|
||||||
del_gendisk
|
del_gendisk
|
||||||
device_add_disk
|
device_add_disk
|
||||||
flush_dcache_page
|
flush_dcache_page
|
||||||
kstrtou16
|
|
||||||
memparse
|
memparse
|
||||||
memset64
|
memset64
|
||||||
put_disk
|
put_disk
|
||||||
|
@ -2335,31 +2459,15 @@
|
||||||
zs_pool_stats
|
zs_pool_stats
|
||||||
zs_unmap_object
|
zs_unmap_object
|
||||||
|
|
||||||
# required by xhci-exynos-audio.ko
|
# required by xhci-sideband.ko
|
||||||
dma_pool_alloc
|
dma_get_sgtable_attrs
|
||||||
dma_pool_free
|
|
||||||
__kmalloc_node
|
|
||||||
kmalloc_node_trace
|
kmalloc_node_trace
|
||||||
xhci_add_endpoint
|
xhci_create_secondary_interrupter
|
||||||
|
xhci_disable_interrupter
|
||||||
xhci_initialize_ring_info
|
xhci_initialize_ring_info
|
||||||
|
xhci_remove_secondary_interrupter
|
||||||
# required by xhci-exynos.ko
|
xhci_set_interrupter_moderation
|
||||||
device_property_read_u32_array
|
xhci_stop_endpoint_sync
|
||||||
device_set_wakeup_enable
|
|
||||||
devm_clk_get_optional
|
|
||||||
devm_usb_get_phy_by_phandle
|
|
||||||
of_usb_host_tpl_support
|
|
||||||
pci_bus_type
|
|
||||||
usb_add_hcd
|
|
||||||
__usb_create_hcd
|
|
||||||
usb_disabled
|
|
||||||
usb_put_hcd
|
|
||||||
usb_remove_hcd
|
|
||||||
xhci_gen_setup
|
|
||||||
xhci_init_driver
|
|
||||||
xhci_resume
|
|
||||||
xhci_run
|
|
||||||
xhci_suspend
|
|
||||||
|
|
||||||
# required by xperf.ko
|
# required by xperf.ko
|
||||||
cpufreq_quick_get_max
|
cpufreq_quick_get_max
|
||||||
|
|
|
@ -1,19 +1,43 @@
|
||||||
[abi_symbol_list]
|
[abi_symbol_list]
|
||||||
|
blkcg_activate_policy
|
||||||
|
blkcg_deactivate_policy
|
||||||
|
blkcg_root
|
||||||
blkdev_get_by_path
|
blkdev_get_by_path
|
||||||
blkdev_issue_flush
|
blkdev_issue_flush
|
||||||
|
blk_mq_sched_mark_restart_hctx
|
||||||
|
blk_mq_sched_try_insert_merge
|
||||||
|
blk_mq_sched_try_merge
|
||||||
blk_queue_rq_timeout
|
blk_queue_rq_timeout
|
||||||
|
blk_req_needs_zone_write_lock
|
||||||
|
__blk_req_zone_write_lock
|
||||||
|
__blk_req_zone_write_unlock
|
||||||
caches_clean_inval_pou
|
caches_clean_inval_pou
|
||||||
cleancache_register_ops
|
cleancache_register_ops
|
||||||
copy_page
|
copy_page
|
||||||
_dev_alert
|
_dev_alert
|
||||||
__devm_alloc_percpu
|
__devm_alloc_percpu
|
||||||
|
elv_bio_merge_ok
|
||||||
|
elv_rb_add
|
||||||
|
elv_rb_del
|
||||||
|
elv_rb_find
|
||||||
|
elv_rb_former_request
|
||||||
|
elv_rb_latter_request
|
||||||
|
elv_rqhash_add
|
||||||
|
elv_rqhash_del
|
||||||
file_ra_state_init
|
file_ra_state_init
|
||||||
file_write_and_wait_range
|
file_write_and_wait_range
|
||||||
generic_perform_write
|
generic_perform_write
|
||||||
getboottime64
|
getboottime64
|
||||||
|
get_options
|
||||||
__get_task_ioprio
|
__get_task_ioprio
|
||||||
gpiochip_find
|
gpiochip_find
|
||||||
|
gs_alloc_req
|
||||||
|
gserial_free_line
|
||||||
|
gserial_resume
|
||||||
|
gserial_suspend
|
||||||
|
gs_free_req
|
||||||
kick_all_cpus_sync
|
kick_all_cpus_sync
|
||||||
|
netlink_ack
|
||||||
param_get_uint
|
param_get_uint
|
||||||
param_set_uint
|
param_set_uint
|
||||||
proc_set_size
|
proc_set_size
|
||||||
|
@ -36,21 +60,22 @@
|
||||||
__traceiter_android_rvh_do_sp_pc_abort
|
__traceiter_android_rvh_do_sp_pc_abort
|
||||||
__traceiter_android_rvh_panic_unhandled
|
__traceiter_android_rvh_panic_unhandled
|
||||||
__traceiter_android_rvh_report_bug
|
__traceiter_android_rvh_report_bug
|
||||||
|
__traceiter_android_vh_cache_show
|
||||||
|
__traceiter_android_vh_exit_mm
|
||||||
__traceiter_android_vh_is_fpsimd_save
|
__traceiter_android_vh_is_fpsimd_save
|
||||||
__traceiter_android_vh_logbuf
|
__traceiter_android_vh_logbuf
|
||||||
__traceiter_android_vh_logbuf_pr_cont
|
__traceiter_android_vh_logbuf_pr_cont
|
||||||
__traceiter_android_vh_madvise_swapin_walk_pmd_entry
|
__traceiter_android_vh_madvise_swapin_walk_pmd_entry
|
||||||
|
__traceiter_android_vh_meminfo_proc_show
|
||||||
|
__traceiter_android_vh_print_slabinfo_header
|
||||||
__traceiter_android_vh_process_madvise
|
__traceiter_android_vh_process_madvise
|
||||||
|
__traceiter_android_vh_ptype_head
|
||||||
|
__traceiter_android_vh_show_mem
|
||||||
__traceiter_android_vh_show_smap
|
__traceiter_android_vh_show_smap
|
||||||
__traceiter_android_vh_smaps_pte_entry
|
__traceiter_android_vh_smaps_pte_entry
|
||||||
__traceiter_android_vh_try_to_freeze_todo
|
__traceiter_android_vh_try_to_freeze_todo
|
||||||
__traceiter_android_vh_try_to_freeze_todo_unfrozen
|
__traceiter_android_vh_try_to_freeze_todo_unfrozen
|
||||||
__traceiter_android_vh_watchdog_timer_softlockup
|
__traceiter_android_vh_watchdog_timer_softlockup
|
||||||
__traceiter_android_vh_meminfo_proc_show
|
|
||||||
__traceiter_android_vh_exit_mm
|
|
||||||
__traceiter_android_vh_show_mem
|
|
||||||
__traceiter_android_vh_print_slabinfo_header
|
|
||||||
__traceiter_android_vh_cache_show
|
|
||||||
__traceiter_console
|
__traceiter_console
|
||||||
__traceiter_workqueue_execute_start
|
__traceiter_workqueue_execute_start
|
||||||
__tracepoint_android_rvh_arm64_serror_panic
|
__tracepoint_android_rvh_arm64_serror_panic
|
||||||
|
@ -62,21 +87,22 @@
|
||||||
__tracepoint_android_rvh_do_sp_pc_abort
|
__tracepoint_android_rvh_do_sp_pc_abort
|
||||||
__tracepoint_android_rvh_panic_unhandled
|
__tracepoint_android_rvh_panic_unhandled
|
||||||
__tracepoint_android_rvh_report_bug
|
__tracepoint_android_rvh_report_bug
|
||||||
|
__tracepoint_android_vh_cache_show
|
||||||
|
__tracepoint_android_vh_exit_mm
|
||||||
__tracepoint_android_vh_is_fpsimd_save
|
__tracepoint_android_vh_is_fpsimd_save
|
||||||
__tracepoint_android_vh_logbuf
|
__tracepoint_android_vh_logbuf
|
||||||
__tracepoint_android_vh_logbuf_pr_cont
|
__tracepoint_android_vh_logbuf_pr_cont
|
||||||
__tracepoint_android_vh_madvise_swapin_walk_pmd_entry
|
__tracepoint_android_vh_madvise_swapin_walk_pmd_entry
|
||||||
|
__tracepoint_android_vh_meminfo_proc_show
|
||||||
|
__tracepoint_android_vh_print_slabinfo_header
|
||||||
__tracepoint_android_vh_process_madvise
|
__tracepoint_android_vh_process_madvise
|
||||||
|
__tracepoint_android_vh_ptype_head
|
||||||
|
__tracepoint_android_vh_show_mem
|
||||||
__tracepoint_android_vh_show_smap
|
__tracepoint_android_vh_show_smap
|
||||||
__tracepoint_android_vh_smaps_pte_entry
|
__tracepoint_android_vh_smaps_pte_entry
|
||||||
__tracepoint_android_vh_try_to_freeze_todo
|
__tracepoint_android_vh_try_to_freeze_todo
|
||||||
__tracepoint_android_vh_try_to_freeze_todo_unfrozen
|
__tracepoint_android_vh_try_to_freeze_todo_unfrozen
|
||||||
__tracepoint_android_vh_watchdog_timer_softlockup
|
__tracepoint_android_vh_watchdog_timer_softlockup
|
||||||
__tracepoint_android_vh_meminfo_proc_show
|
|
||||||
__tracepoint_android_vh_exit_mm
|
|
||||||
__tracepoint_android_vh_show_mem
|
|
||||||
__tracepoint_android_vh_print_slabinfo_header
|
|
||||||
__tracepoint_android_vh_cache_show
|
|
||||||
__tracepoint_console
|
__tracepoint_console
|
||||||
__tracepoint_workqueue_execute_start
|
__tracepoint_workqueue_execute_start
|
||||||
usb_set_device_state
|
usb_set_device_state
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
proc_create_net_single_write
|
proc_create_net_single_write
|
||||||
snmp_fold_field
|
snmp_fold_field
|
||||||
call_usermodehelper
|
call_usermodehelper
|
||||||
|
pm_wakeup_irq
|
||||||
nla_append
|
nla_append
|
||||||
skb_append
|
skb_append
|
||||||
sysctl_max_skb_frags
|
sysctl_max_skb_frags
|
||||||
|
@ -45,6 +46,10 @@
|
||||||
drop_super
|
drop_super
|
||||||
mm_trace_rss_stat
|
mm_trace_rss_stat
|
||||||
__kfifo_len_r
|
__kfifo_len_r
|
||||||
|
__tracepoint_android_vh_dc_send_copy
|
||||||
|
__traceiter_android_vh_dc_send_copy
|
||||||
|
__tracepoint_android_vh_dc_receive
|
||||||
|
__traceiter_android_vh_dc_receive
|
||||||
__tracepoint_android_vh_shrink_slab_bypass
|
__tracepoint_android_vh_shrink_slab_bypass
|
||||||
__traceiter_android_vh_shrink_slab_bypass
|
__traceiter_android_vh_shrink_slab_bypass
|
||||||
__tracepoint_android_vh_do_shrink_slab
|
__tracepoint_android_vh_do_shrink_slab
|
||||||
|
|
|
@ -1528,7 +1528,7 @@
|
||||||
of_irq_find_parent
|
of_irq_find_parent
|
||||||
of_irq_get
|
of_irq_get
|
||||||
of_irq_get_byname
|
of_irq_get_byname
|
||||||
of_machine_is_compatible
|
of_machine_compatible_match
|
||||||
of_match_device
|
of_match_device
|
||||||
of_match_node
|
of_match_node
|
||||||
__of_mdiobus_register
|
__of_mdiobus_register
|
||||||
|
|
|
@ -1714,7 +1714,6 @@
|
||||||
of_irq_get_byname
|
of_irq_get_byname
|
||||||
of_irq_parse_one
|
of_irq_parse_one
|
||||||
of_irq_to_resource_table
|
of_irq_to_resource_table
|
||||||
of_machine_is_compatible
|
|
||||||
of_match_device
|
of_match_device
|
||||||
of_match_node
|
of_match_node
|
||||||
of_n_addr_cells
|
of_n_addr_cells
|
||||||
|
|
|
@ -44,6 +44,9 @@
|
||||||
generic_delete_inode
|
generic_delete_inode
|
||||||
__generic_file_fsync
|
__generic_file_fsync
|
||||||
get_wchan
|
get_wchan
|
||||||
|
gnet_stats_add_queue
|
||||||
|
gnet_stats_copy_basic
|
||||||
|
gnet_stats_copy_queue
|
||||||
gov_attr_set_get
|
gov_attr_set_get
|
||||||
gpiod_to_chip
|
gpiod_to_chip
|
||||||
have_governor_per_policy
|
have_governor_per_policy
|
||||||
|
@ -86,6 +89,7 @@
|
||||||
memcg_kmem_online_key
|
memcg_kmem_online_key
|
||||||
neigh_xmit
|
neigh_xmit
|
||||||
netif_receive_skb_core
|
netif_receive_skb_core
|
||||||
|
__netif_schedule
|
||||||
nf_ct_attach
|
nf_ct_attach
|
||||||
nf_ct_delete
|
nf_ct_delete
|
||||||
nf_register_net_hook
|
nf_register_net_hook
|
||||||
|
@ -99,6 +103,7 @@
|
||||||
nla_put_64bit
|
nla_put_64bit
|
||||||
nla_reserve
|
nla_reserve
|
||||||
nla_reserve_64bit
|
nla_reserve_64bit
|
||||||
|
noop_qdisc
|
||||||
nop_mnt_idmap
|
nop_mnt_idmap
|
||||||
notify_change
|
notify_change
|
||||||
nr_running
|
nr_running
|
||||||
|
@ -108,6 +113,7 @@
|
||||||
override_creds
|
override_creds
|
||||||
__page_file_index
|
__page_file_index
|
||||||
path_get
|
path_get
|
||||||
|
pfifo_qdisc_ops
|
||||||
platform_device_add
|
platform_device_add
|
||||||
platform_device_alloc
|
platform_device_alloc
|
||||||
platform_device_put
|
platform_device_put
|
||||||
|
@ -117,8 +123,18 @@
|
||||||
prepare_to_wait_exclusive
|
prepare_to_wait_exclusive
|
||||||
__printk_ratelimit
|
__printk_ratelimit
|
||||||
proc_symlink
|
proc_symlink
|
||||||
|
psched_ratecfg_precompute
|
||||||
public_key_verify_signature
|
public_key_verify_signature
|
||||||
put_pages_list
|
put_pages_list
|
||||||
|
__qdisc_calculate_pkt_len
|
||||||
|
qdisc_create_dflt
|
||||||
|
qdisc_hash_add
|
||||||
|
qdisc_put
|
||||||
|
qdisc_reset
|
||||||
|
qdisc_tree_reduce_backlog
|
||||||
|
qdisc_watchdog_cancel
|
||||||
|
qdisc_watchdog_init
|
||||||
|
qdisc_watchdog_schedule_range_ns
|
||||||
radix_tree_lookup_slot
|
radix_tree_lookup_slot
|
||||||
radix_tree_replace_slot
|
radix_tree_replace_slot
|
||||||
_raw_write_trylock
|
_raw_write_trylock
|
||||||
|
@ -153,6 +169,9 @@
|
||||||
stack_depot_print
|
stack_depot_print
|
||||||
task_rq_lock
|
task_rq_lock
|
||||||
tcf_action_exec
|
tcf_action_exec
|
||||||
|
tcf_block_get
|
||||||
|
tcf_block_put
|
||||||
|
tcf_classify
|
||||||
tcf_exts_destroy
|
tcf_exts_destroy
|
||||||
tcf_exts_dump
|
tcf_exts_dump
|
||||||
tcf_exts_dump_stats
|
tcf_exts_dump_stats
|
||||||
|
@ -164,6 +183,7 @@
|
||||||
__traceiter_android_rvh_post_init_entity_util_avg
|
__traceiter_android_rvh_post_init_entity_util_avg
|
||||||
__traceiter_android_rvh_rtmutex_force_update
|
__traceiter_android_rvh_rtmutex_force_update
|
||||||
__traceiter_android_rvh_set_cpus_allowed_comm
|
__traceiter_android_rvh_set_cpus_allowed_comm
|
||||||
|
__traceiter_android_vh_set_tsk_need_resched_lazy
|
||||||
__traceiter_android_rvh_set_balance_anon_file_reclaim
|
__traceiter_android_rvh_set_balance_anon_file_reclaim
|
||||||
__traceiter_android_vh_account_process_tick_gran
|
__traceiter_android_vh_account_process_tick_gran
|
||||||
__traceiter_android_vh_add_page_to_lrulist
|
__traceiter_android_vh_add_page_to_lrulist
|
||||||
|
@ -256,6 +276,7 @@
|
||||||
__traceiter_android_vh_record_rtmutex_lock_starttime
|
__traceiter_android_vh_record_rtmutex_lock_starttime
|
||||||
__traceiter_android_vh_record_rwsem_lock_starttime
|
__traceiter_android_vh_record_rwsem_lock_starttime
|
||||||
__traceiter_android_vh_reweight_entity
|
__traceiter_android_vh_reweight_entity
|
||||||
|
__traceiter_android_vh_read_lazy_flag
|
||||||
__traceiter_android_vh_rmqueue_bulk_bypass
|
__traceiter_android_vh_rmqueue_bulk_bypass
|
||||||
__traceiter_android_vh_rt_mutex_steal
|
__traceiter_android_vh_rt_mutex_steal
|
||||||
__traceiter_android_vh_rtmutex_waiter_prio
|
__traceiter_android_vh_rtmutex_waiter_prio
|
||||||
|
@ -408,10 +429,12 @@
|
||||||
__tracepoint_android_vh_rwsem_optimistic_rspin
|
__tracepoint_android_vh_rwsem_optimistic_rspin
|
||||||
__tracepoint_android_vh_rwsem_opt_spin_finish
|
__tracepoint_android_vh_rwsem_opt_spin_finish
|
||||||
__tracepoint_android_vh_rwsem_opt_spin_start
|
__tracepoint_android_vh_rwsem_opt_spin_start
|
||||||
|
__tracepoint_android_vh_read_lazy_flag
|
||||||
__tracepoint_android_vh_save_track_hash
|
__tracepoint_android_vh_save_track_hash
|
||||||
__tracepoint_android_vh_save_vmalloc_stack
|
__tracepoint_android_vh_save_vmalloc_stack
|
||||||
__tracepoint_android_vh_sched_move_task
|
__tracepoint_android_vh_sched_move_task
|
||||||
__tracepoint_android_rvh_sched_setaffinity
|
__tracepoint_android_rvh_sched_setaffinity
|
||||||
|
__tracepoint_android_vh_set_tsk_need_resched_lazy
|
||||||
__tracepoint_android_vh_sched_setaffinity_early
|
__tracepoint_android_vh_sched_setaffinity_early
|
||||||
__tracepoint_android_vh_sched_stat_runtime_rt
|
__tracepoint_android_vh_sched_stat_runtime_rt
|
||||||
__tracepoint_android_vh_should_alloc_pages_retry
|
__tracepoint_android_vh_should_alloc_pages_retry
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -140,12 +140,15 @@
|
||||||
clk_hw_is_prepared
|
clk_hw_is_prepared
|
||||||
clk_hw_register
|
clk_hw_register
|
||||||
clk_hw_round_rate
|
clk_hw_round_rate
|
||||||
|
clk_hw_set_rate_range
|
||||||
clk_hw_unregister
|
clk_hw_unregister
|
||||||
__clk_is_enabled
|
__clk_is_enabled
|
||||||
__clk_mux_determine_rate_closest
|
__clk_mux_determine_rate_closest
|
||||||
clk_prepare
|
clk_prepare
|
||||||
clk_put
|
clk_put
|
||||||
|
clk_restore_context
|
||||||
clk_round_rate
|
clk_round_rate
|
||||||
|
clk_save_context
|
||||||
clk_set_parent
|
clk_set_parent
|
||||||
clk_set_rate
|
clk_set_rate
|
||||||
clk_sync_state
|
clk_sync_state
|
||||||
|
@ -803,6 +806,7 @@
|
||||||
idr_preload
|
idr_preload
|
||||||
idr_remove
|
idr_remove
|
||||||
iio_read_channel_processed
|
iio_read_channel_processed
|
||||||
|
iio_write_channel_raw
|
||||||
in4_pton
|
in4_pton
|
||||||
inc_node_page_state
|
inc_node_page_state
|
||||||
in_egroup_p
|
in_egroup_p
|
||||||
|
@ -1086,11 +1090,26 @@
|
||||||
__mmap_lock_do_trace_released
|
__mmap_lock_do_trace_released
|
||||||
__mmap_lock_do_trace_start_locking
|
__mmap_lock_do_trace_start_locking
|
||||||
mmc_cqe_request_done
|
mmc_cqe_request_done
|
||||||
|
mmc_execute_tuning
|
||||||
|
mmc_hs200_tuning
|
||||||
|
mmc_issue_type
|
||||||
mmc_of_parse
|
mmc_of_parse
|
||||||
mmc_regulator_get_supply
|
mmc_regulator_get_supply
|
||||||
mmc_regulator_set_ocr
|
mmc_regulator_set_ocr
|
||||||
mmc_regulator_set_vqmmc
|
mmc_regulator_set_vqmmc
|
||||||
|
mmc_retune_hold
|
||||||
|
mmc_select_bus_width
|
||||||
|
mmc_select_card
|
||||||
|
mmc_select_hs
|
||||||
|
mmc_select_hs400
|
||||||
|
mmc_select_hs_ddr
|
||||||
|
mmc_select_timing
|
||||||
mmc_send_tuning
|
mmc_send_tuning
|
||||||
|
mmc_set_bus_mode
|
||||||
|
mmc_set_bus_width
|
||||||
|
mmc_set_clock
|
||||||
|
mmc_set_initial_state
|
||||||
|
mmc_set_timing
|
||||||
__mmdrop
|
__mmdrop
|
||||||
mmput
|
mmput
|
||||||
mod_delayed_work_on
|
mod_delayed_work_on
|
||||||
|
@ -1163,6 +1182,7 @@
|
||||||
of_clk_add_provider
|
of_clk_add_provider
|
||||||
of_clk_del_provider
|
of_clk_del_provider
|
||||||
of_clk_get_from_provider
|
of_clk_get_from_provider
|
||||||
|
of_clk_hw_onecell_get
|
||||||
of_clk_hw_simple_get
|
of_clk_hw_simple_get
|
||||||
of_clk_src_simple_get
|
of_clk_src_simple_get
|
||||||
of_count_phandle_with_args
|
of_count_phandle_with_args
|
||||||
|
@ -1392,6 +1412,10 @@
|
||||||
power_supply_reg_notifier
|
power_supply_reg_notifier
|
||||||
power_supply_set_property
|
power_supply_set_property
|
||||||
power_supply_unreg_notifier
|
power_supply_unreg_notifier
|
||||||
|
powercap_register_control_type
|
||||||
|
powercap_register_zone
|
||||||
|
powercap_unregister_control_type
|
||||||
|
powercap_unregister_zone
|
||||||
preempt_schedule
|
preempt_schedule
|
||||||
preempt_schedule_notrace
|
preempt_schedule_notrace
|
||||||
prepare_to_wait_event
|
prepare_to_wait_event
|
||||||
|
@ -1909,8 +1933,12 @@
|
||||||
__traceiter_android_rvh_iommu_iovad_init_alloc_algo
|
__traceiter_android_rvh_iommu_iovad_init_alloc_algo
|
||||||
__traceiter_android_rvh_iommu_limit_align_shift
|
__traceiter_android_rvh_iommu_limit_align_shift
|
||||||
__traceiter_android_rvh_iommu_setup_dma_ops
|
__traceiter_android_rvh_iommu_setup_dma_ops
|
||||||
|
__traceiter_android_rvh_irqs_disable
|
||||||
|
__traceiter_android_rvh_irqs_enable
|
||||||
__traceiter_android_rvh_is_cpu_allowed
|
__traceiter_android_rvh_is_cpu_allowed
|
||||||
__traceiter_android_rvh_new_task_stats
|
__traceiter_android_rvh_new_task_stats
|
||||||
|
__traceiter_android_rvh_preempt_disable
|
||||||
|
__traceiter_android_rvh_preempt_enable
|
||||||
__traceiter_android_rvh_replace_next_task_fair
|
__traceiter_android_rvh_replace_next_task_fair
|
||||||
__traceiter_android_rvh_rto_next_cpu
|
__traceiter_android_rvh_rto_next_cpu
|
||||||
__traceiter_android_rvh_sched_cpu_dying
|
__traceiter_android_rvh_sched_cpu_dying
|
||||||
|
@ -1957,6 +1985,7 @@
|
||||||
__traceiter_android_vh_ipi_stop
|
__traceiter_android_vh_ipi_stop
|
||||||
__traceiter_android_vh_jiffies_update
|
__traceiter_android_vh_jiffies_update
|
||||||
__traceiter_android_vh_mmap_region
|
__traceiter_android_vh_mmap_region
|
||||||
|
__traceiter_android_vh_mmc_sdio_pm_flag_set
|
||||||
__traceiter_android_vh_mpam_set
|
__traceiter_android_vh_mpam_set
|
||||||
__traceiter_android_vh_printk_hotplug
|
__traceiter_android_vh_printk_hotplug
|
||||||
__traceiter_android_vh_rproc_recovery
|
__traceiter_android_vh_rproc_recovery
|
||||||
|
@ -2005,8 +2034,12 @@
|
||||||
__tracepoint_android_rvh_iommu_iovad_init_alloc_algo
|
__tracepoint_android_rvh_iommu_iovad_init_alloc_algo
|
||||||
__tracepoint_android_rvh_iommu_limit_align_shift
|
__tracepoint_android_rvh_iommu_limit_align_shift
|
||||||
__tracepoint_android_rvh_iommu_setup_dma_ops
|
__tracepoint_android_rvh_iommu_setup_dma_ops
|
||||||
|
__tracepoint_android_rvh_irqs_disable
|
||||||
|
__tracepoint_android_rvh_irqs_enable
|
||||||
__tracepoint_android_rvh_is_cpu_allowed
|
__tracepoint_android_rvh_is_cpu_allowed
|
||||||
__tracepoint_android_rvh_new_task_stats
|
__tracepoint_android_rvh_new_task_stats
|
||||||
|
__tracepoint_android_rvh_preempt_disable
|
||||||
|
__tracepoint_android_rvh_preempt_enable
|
||||||
__tracepoint_android_rvh_replace_next_task_fair
|
__tracepoint_android_rvh_replace_next_task_fair
|
||||||
__tracepoint_android_rvh_rto_next_cpu
|
__tracepoint_android_rvh_rto_next_cpu
|
||||||
__tracepoint_android_rvh_sched_cpu_dying
|
__tracepoint_android_rvh_sched_cpu_dying
|
||||||
|
@ -2053,6 +2086,7 @@
|
||||||
__tracepoint_android_vh_ipi_stop
|
__tracepoint_android_vh_ipi_stop
|
||||||
__tracepoint_android_vh_jiffies_update
|
__tracepoint_android_vh_jiffies_update
|
||||||
__tracepoint_android_vh_mmap_region
|
__tracepoint_android_vh_mmap_region
|
||||||
|
__tracepoint_android_vh_mmc_sdio_pm_flag_set
|
||||||
__tracepoint_android_vh_mpam_set
|
__tracepoint_android_vh_mpam_set
|
||||||
__tracepoint_android_vh_printk_hotplug
|
__tracepoint_android_vh_printk_hotplug
|
||||||
__tracepoint_android_vh_rproc_recovery
|
__tracepoint_android_vh_rproc_recovery
|
||||||
|
@ -2191,6 +2225,8 @@
|
||||||
usb_free_coherent
|
usb_free_coherent
|
||||||
usb_function_register
|
usb_function_register
|
||||||
usb_function_unregister
|
usb_function_unregister
|
||||||
|
usb_gadget_connect
|
||||||
|
usb_gadget_disconnect
|
||||||
usb_gadget_wakeup
|
usb_gadget_wakeup
|
||||||
usb_hcd_is_primary_hcd
|
usb_hcd_is_primary_hcd
|
||||||
usb_ifnum_to_if
|
usb_ifnum_to_if
|
||||||
|
|
|
@ -262,6 +262,12 @@
|
||||||
__traceiter_android_rvh_ctl_dirty_rate
|
__traceiter_android_rvh_ctl_dirty_rate
|
||||||
__tracepoint_android_rvh_ctl_dirty_rate
|
__tracepoint_android_rvh_ctl_dirty_rate
|
||||||
|
|
||||||
|
# required by kprobe_dmverity_debug.ko
|
||||||
|
dm_bio_from_per_bio_data
|
||||||
|
dm_bufio_read
|
||||||
|
dm_disk
|
||||||
|
dm_table_get_md
|
||||||
|
|
||||||
# required by ledtrig-pattern.ko
|
# required by ledtrig-pattern.ko
|
||||||
led_get_default_pattern
|
led_get_default_pattern
|
||||||
led_set_brightness
|
led_set_brightness
|
||||||
|
@ -664,7 +670,6 @@
|
||||||
of_clk_get_parent_count
|
of_clk_get_parent_count
|
||||||
of_devfreq_cooling_register_power
|
of_devfreq_cooling_register_power
|
||||||
of_dma_is_coherent
|
of_dma_is_coherent
|
||||||
of_machine_is_compatible
|
|
||||||
of_property_read_variable_u64_array
|
of_property_read_variable_u64_array
|
||||||
of_property_read_variable_u8_array
|
of_property_read_variable_u8_array
|
||||||
param_array_ops
|
param_array_ops
|
||||||
|
|
|
@ -54,11 +54,14 @@
|
||||||
__traceiter_android_vh_do_swap_page
|
__traceiter_android_vh_do_swap_page
|
||||||
__traceiter_android_vh_do_wp_page
|
__traceiter_android_vh_do_wp_page
|
||||||
__traceiter_android_vh_dup_task_struct
|
__traceiter_android_vh_dup_task_struct
|
||||||
|
__traceiter_android_vh_filemap_update_page
|
||||||
__traceiter_android_vh_free_task
|
__traceiter_android_vh_free_task
|
||||||
__traceiter_android_vh_fuse_request_end
|
__traceiter_android_vh_fuse_request_end
|
||||||
__traceiter_android_vh_irqtime_account_process_tick
|
__traceiter_android_vh_irqtime_account_process_tick
|
||||||
__traceiter_android_vh_look_around
|
__traceiter_android_vh_look_around
|
||||||
__traceiter_android_vh_look_around_migrate_folio
|
__traceiter_android_vh_look_around_migrate_folio
|
||||||
|
__traceiter_android_vh_lock_folio_drop_mmap_end
|
||||||
|
__traceiter_android_vh_lock_folio_drop_mmap_start
|
||||||
__traceiter_android_vh_mmap_region
|
__traceiter_android_vh_mmap_region
|
||||||
__traceiter_android_vh_mutex_init
|
__traceiter_android_vh_mutex_init
|
||||||
__traceiter_android_vh_mutex_unlock_slowpath
|
__traceiter_android_vh_mutex_unlock_slowpath
|
||||||
|
@ -141,11 +144,14 @@
|
||||||
__tracepoint_android_vh_do_swap_page
|
__tracepoint_android_vh_do_swap_page
|
||||||
__tracepoint_android_vh_do_wp_page
|
__tracepoint_android_vh_do_wp_page
|
||||||
__tracepoint_android_vh_dup_task_struct
|
__tracepoint_android_vh_dup_task_struct
|
||||||
|
__tracepoint_android_vh_filemap_update_page
|
||||||
__tracepoint_android_vh_free_task
|
__tracepoint_android_vh_free_task
|
||||||
__tracepoint_android_vh_fuse_request_end
|
__tracepoint_android_vh_fuse_request_end
|
||||||
__tracepoint_android_vh_irqtime_account_process_tick
|
__tracepoint_android_vh_irqtime_account_process_tick
|
||||||
__tracepoint_android_vh_look_around
|
__tracepoint_android_vh_look_around
|
||||||
__tracepoint_android_vh_look_around_migrate_folio
|
__tracepoint_android_vh_look_around_migrate_folio
|
||||||
|
__tracepoint_android_vh_lock_folio_drop_mmap_end
|
||||||
|
__tracepoint_android_vh_lock_folio_drop_mmap_start
|
||||||
__tracepoint_android_vh_mmap_region
|
__tracepoint_android_vh_mmap_region
|
||||||
__tracepoint_android_vh_mutex_init
|
__tracepoint_android_vh_mutex_init
|
||||||
__tracepoint_android_vh_mutex_unlock_slowpath
|
__tracepoint_android_vh_mutex_unlock_slowpath
|
||||||
|
|
|
@ -129,85 +129,138 @@
|
||||||
#required by cifs.ko
|
#required by cifs.ko
|
||||||
add_swap_extent
|
add_swap_extent
|
||||||
asn1_ber_decoder
|
asn1_ber_decoder
|
||||||
|
bit_wait
|
||||||
|
clear_nlink
|
||||||
copy_page_from_iter
|
copy_page_from_iter
|
||||||
copy_page_to_iter
|
copy_page_to_iter
|
||||||
clear_nlink
|
copy_splice_read
|
||||||
|
d_add
|
||||||
|
d_alloc_parallel
|
||||||
|
d_drop
|
||||||
|
d_hash_and_lookup
|
||||||
|
d_invalidate
|
||||||
|
d_move
|
||||||
deactivate_super
|
deactivate_super
|
||||||
dentry_path_raw
|
dentry_path_raw
|
||||||
d_drop
|
dup_iter
|
||||||
d_move
|
end_page_writeback
|
||||||
d_hash_and_lookup
|
|
||||||
d_alloc_parallel
|
|
||||||
d_invalidate
|
|
||||||
errseq_check
|
errseq_check
|
||||||
|
extract_iter_to_sg
|
||||||
|
fc_mount
|
||||||
file_modified
|
file_modified
|
||||||
fs_param_is_bool
|
file_write_and_wait_range
|
||||||
fs_param_is_u32
|
filemap_dirty_folio
|
||||||
fs_param_is_u64
|
filemap_fault
|
||||||
fs_param_is_string
|
filemap_get_folios_tag
|
||||||
|
filemap_map_pages
|
||||||
|
filemap_migrate_folio
|
||||||
finish_no_open
|
finish_no_open
|
||||||
finish_open
|
finish_open
|
||||||
filemap_map_pages
|
flush_dcache_folio
|
||||||
folio_wait_private_2
|
|
||||||
folio_clear_dirty_for_io
|
folio_clear_dirty_for_io
|
||||||
|
folio_end_private_2
|
||||||
|
folio_end_writeback
|
||||||
|
folio_mapping
|
||||||
|
folio_wait_private_2
|
||||||
|
folio_wait_private_2_killable
|
||||||
|
folio_wait_writeback
|
||||||
|
fs_context_for_submount
|
||||||
|
fs_param_is_bool
|
||||||
|
fs_param_is_string
|
||||||
|
fs_param_is_u32
|
||||||
|
fs_param_is_u64
|
||||||
generate_random_uuid
|
generate_random_uuid
|
||||||
generic_permission
|
|
||||||
generic_file_write_iter
|
|
||||||
generic_setlease
|
|
||||||
generic_copy_file_range
|
generic_copy_file_range
|
||||||
|
generic_file_write_iter
|
||||||
generic_key_instantiate
|
generic_key_instantiate
|
||||||
iov_iter_discard
|
generic_permission
|
||||||
iov_iter_bvec
|
generic_setlease
|
||||||
iov_iter_get_pages_alloc2
|
|
||||||
iget_failed
|
iget_failed
|
||||||
|
in_group_p
|
||||||
invalidate_inode_pages2
|
invalidate_inode_pages2
|
||||||
|
iov_iter_advance
|
||||||
|
iov_iter_bvec
|
||||||
|
iov_iter_discard
|
||||||
|
iov_iter_get_pages_alloc2
|
||||||
iov_iter_npages
|
iov_iter_npages
|
||||||
kfree_link
|
iov_iter_xarray
|
||||||
key_type_logon
|
iterate_supers_type
|
||||||
|
iunique
|
||||||
key_invalidate
|
key_invalidate
|
||||||
key_revoke
|
key_revoke
|
||||||
|
key_type_logon
|
||||||
key_validate
|
key_validate
|
||||||
|
kfree_link
|
||||||
|
kill_anon_super
|
||||||
|
kvfree_sensitive
|
||||||
lock_two_nondirectories
|
lock_two_nondirectories
|
||||||
lookup_positive_unlocked
|
|
||||||
locks_lock_inode_wait
|
locks_lock_inode_wait
|
||||||
look_up_OID
|
look_up_OID
|
||||||
overflowgid
|
lookup_positive_unlocked
|
||||||
|
mark_mounts_for_expiry
|
||||||
|
match_token
|
||||||
|
mempool_resize
|
||||||
|
mnt_drop_write_file
|
||||||
|
mnt_set_expiry
|
||||||
|
mnt_want_write_file
|
||||||
|
mntget
|
||||||
|
nop_mnt_idmap
|
||||||
|
out_of_line_wait_on_bit
|
||||||
out_of_line_wait_on_bit_lock
|
out_of_line_wait_on_bit_lock
|
||||||
|
overflowgid
|
||||||
override_creds
|
override_creds
|
||||||
posix_lock_file
|
posix_lock_file
|
||||||
posix_test_lock
|
posix_test_lock
|
||||||
prepare_kernel_cred
|
prepare_kernel_cred
|
||||||
|
put_fs_context
|
||||||
|
readahead_expand
|
||||||
|
redirty_page_for_writepage
|
||||||
|
register_key_type
|
||||||
request_key_tag
|
request_key_tag
|
||||||
revert_creds
|
revert_creds
|
||||||
register_key_type
|
|
||||||
sget
|
|
||||||
set_anon_super
|
|
||||||
super_setup_bdi
|
|
||||||
seq_escape_mem
|
|
||||||
setattr_copy
|
|
||||||
sock_sendmsg
|
|
||||||
security_sb_eat_lsm_opts
|
security_sb_eat_lsm_opts
|
||||||
|
seq_escape_mem
|
||||||
|
set_anon_super
|
||||||
|
set_page_writeback
|
||||||
|
setattr_copy
|
||||||
|
sget
|
||||||
|
sigprocmask
|
||||||
|
simple_inode_init_ts
|
||||||
|
sock_sendmsg
|
||||||
sprint_oid
|
sprint_oid
|
||||||
truncate_inode_pages_range
|
super_setup_bdi
|
||||||
tcp_sock_set_nodelay
|
swapcache_mapping
|
||||||
tcp_sock_set_cork
|
tcp_sock_set_cork
|
||||||
|
tcp_sock_set_nodelay
|
||||||
|
timestamp_truncate
|
||||||
|
touch_atime
|
||||||
|
truncate_inode_pages_range
|
||||||
truncate_pagecache_range
|
truncate_pagecache_range
|
||||||
unlock_two_nondirectories
|
unlock_two_nondirectories
|
||||||
utf8s_to_utf16s
|
|
||||||
utf8_to_utf32
|
|
||||||
unregister_key_type
|
unregister_key_type
|
||||||
user_describe
|
user_describe
|
||||||
user_revoke
|
|
||||||
user_destroy
|
user_destroy
|
||||||
user_read
|
user_read
|
||||||
vfs_setpos
|
user_revoke
|
||||||
|
utf8_to_utf32
|
||||||
|
utf8s_to_utf16s
|
||||||
vfs_parse_fs_string
|
vfs_parse_fs_string
|
||||||
|
vfs_setpos
|
||||||
wait_on_page_writeback
|
wait_on_page_writeback
|
||||||
__generic_file_write_iter
|
xa_extract
|
||||||
__folio_lock_killable
|
xa_set_mark
|
||||||
|
xas_find
|
||||||
|
xas_find_marked
|
||||||
|
xas_pause
|
||||||
__break_lease
|
__break_lease
|
||||||
__d_lookup_unhash_wake
|
__d_lookup_unhash_wake
|
||||||
|
__filemap_get_folio
|
||||||
|
__folio_lock_killable
|
||||||
|
__folio_start_writeback
|
||||||
__fs_parse
|
__fs_parse
|
||||||
|
__generic_file_write_iter
|
||||||
|
__module_put_and_kthread_exit
|
||||||
|
__page_file_index
|
||||||
|
|
||||||
# required by tls.ko
|
# required by tls.ko
|
||||||
tcp_rate_check_app_limited
|
tcp_rate_check_app_limited
|
||||||
|
@ -281,3 +334,16 @@
|
||||||
set_capacity
|
set_capacity
|
||||||
blk_queue_flag_clear
|
blk_queue_flag_clear
|
||||||
blk_mq_unfreeze_queue
|
blk_mq_unfreeze_queue
|
||||||
|
|
||||||
|
#required by mi_mempool.ko
|
||||||
|
__traceiter_android_vh_mmput
|
||||||
|
__tracepoint_android_vh_mmput
|
||||||
|
__traceiter_android_vh_madvise_cold_pageout_skip
|
||||||
|
__tracepoint_android_vh_madvise_cold_pageout_skip
|
||||||
|
|
||||||
|
#required by io_limit.ko
|
||||||
|
__traceiter_android_vh_psi_event
|
||||||
|
__traceiter_android_vh_psi_group
|
||||||
|
__tracepoint_android_vh_psi_event
|
||||||
|
__tracepoint_android_vh_psi_group
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
CONFIG_UAPI_HEADER_TEST=y
|
CONFIG_UAPI_HEADER_TEST=y
|
||||||
|
CONFIG_LOCALVERSION="-4k"
|
||||||
CONFIG_AUDIT=y
|
CONFIG_AUDIT=y
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
|
@ -47,7 +48,6 @@ CONFIG_EXPERT=y
|
||||||
CONFIG_KALLSYMS_ALL=y
|
CONFIG_KALLSYMS_ALL=y
|
||||||
# CONFIG_RSEQ is not set
|
# CONFIG_RSEQ is not set
|
||||||
CONFIG_PROFILING=y
|
CONFIG_PROFILING=y
|
||||||
CONFIG_KEXEC_FILE=y
|
|
||||||
CONFIG_ARCH_SUNXI=y
|
CONFIG_ARCH_SUNXI=y
|
||||||
CONFIG_ARCH_HISI=y
|
CONFIG_ARCH_HISI=y
|
||||||
CONFIG_ARCH_QCOM=y
|
CONFIG_ARCH_QCOM=y
|
||||||
|
@ -104,6 +104,7 @@ CONFIG_BLK_DEV_ZONED=y
|
||||||
CONFIG_BLK_DEV_THROTTLING=y
|
CONFIG_BLK_DEV_THROTTLING=y
|
||||||
CONFIG_BLK_WBT=y
|
CONFIG_BLK_WBT=y
|
||||||
# CONFIG_BLK_WBT_MQ is not set
|
# CONFIG_BLK_WBT_MQ is not set
|
||||||
|
CONFIG_BLK_CGROUP_IOCOST=y
|
||||||
CONFIG_BLK_CGROUP_IOPRIO=y
|
CONFIG_BLK_CGROUP_IOPRIO=y
|
||||||
CONFIG_BLK_INLINE_ENCRYPTION=y
|
CONFIG_BLK_INLINE_ENCRYPTION=y
|
||||||
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
||||||
|
@ -597,6 +598,9 @@ CONFIG_IIO_TRIGGER=y
|
||||||
CONFIG_PWM=y
|
CONFIG_PWM=y
|
||||||
CONFIG_POWERCAP=y
|
CONFIG_POWERCAP=y
|
||||||
CONFIG_IDLE_INJECT=y
|
CONFIG_IDLE_INJECT=y
|
||||||
|
CONFIG_DTPM=y
|
||||||
|
CONFIG_DTPM_CPU=y
|
||||||
|
CONFIG_DTPM_DEVFREQ=y
|
||||||
CONFIG_ANDROID_BINDER_IPC=y
|
CONFIG_ANDROID_BINDER_IPC=y
|
||||||
CONFIG_ANDROID_BINDERFS=y
|
CONFIG_ANDROID_BINDERFS=y
|
||||||
CONFIG_ANDROID_DEBUG_SYMBOLS=y
|
CONFIG_ANDROID_DEBUG_SYMBOLS=y
|
||||||
|
|
|
@ -394,31 +394,6 @@ int gzvm_vm_ioctl_arch_enable_cap(struct gzvm *gzvm,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gzvm_hva_to_pa_arch() - converts hva to pa with arch-specific way
|
|
||||||
* @hva: Host virtual address.
|
|
||||||
*
|
|
||||||
* Return: GZVM_PA_ERR_BAD for translation error
|
|
||||||
*/
|
|
||||||
u64 gzvm_hva_to_pa_arch(u64 hva)
|
|
||||||
{
|
|
||||||
unsigned long flags;
|
|
||||||
u64 par;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
asm volatile("at s1e1r, %0" :: "r" (hva));
|
|
||||||
isb();
|
|
||||||
par = read_sysreg_par();
|
|
||||||
local_irq_restore(flags);
|
|
||||||
|
|
||||||
if (par & SYS_PAR_EL1_F)
|
|
||||||
return GZVM_PA_ERR_BAD;
|
|
||||||
par = par & PAR_PA47_MASK;
|
|
||||||
if (!par)
|
|
||||||
return GZVM_PA_ERR_BAD;
|
|
||||||
return par;
|
|
||||||
}
|
|
||||||
|
|
||||||
int gzvm_arch_map_guest(u16 vm_id, int memslot_id, u64 pfn, u64 gfn,
|
int gzvm_arch_map_guest(u16 vm_id, int memslot_id, u64 pfn, u64 gfn,
|
||||||
u64 nr_pages)
|
u64 nr_pages)
|
||||||
{
|
{
|
||||||
|
|
|
@ -129,4 +129,19 @@ HYP_EVENT(psci_mem_protect,
|
||||||
),
|
),
|
||||||
HE_PRINTK("count=%llu was=%llu", __entry->count, __entry->was)
|
HE_PRINTK("count=%llu was=%llu", __entry->count, __entry->was)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
HYP_EVENT(iommu_idmap,
|
||||||
|
HE_PROTO(u64 from, u64 to, int prot),
|
||||||
|
HE_STRUCT(
|
||||||
|
he_field(u64, from)
|
||||||
|
he_field(u64, to)
|
||||||
|
he_field(int, prot)
|
||||||
|
),
|
||||||
|
HE_ASSIGN(
|
||||||
|
__entry->from = from;
|
||||||
|
__entry->to = to;
|
||||||
|
__entry->prot = prot;
|
||||||
|
),
|
||||||
|
HE_PRINTK("from=0x%llx to=0x%llx prot=0x%x", __entry->from, __entry->to, __entry->prot)
|
||||||
|
);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -103,6 +103,8 @@ void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
|
||||||
ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_SSBS) \
|
ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_SSBS) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#define PVM_ID_AA64PFR2_ALLOW (0ULL)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allow for protected VMs:
|
* Allow for protected VMs:
|
||||||
* - Mixed-endian
|
* - Mixed-endian
|
||||||
|
@ -135,6 +137,7 @@ void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
|
||||||
* - Privileged Access Never
|
* - Privileged Access Never
|
||||||
* - SError interrupt exceptions from speculative reads
|
* - SError interrupt exceptions from speculative reads
|
||||||
* - Enhanced Translation Synchronization
|
* - Enhanced Translation Synchronization
|
||||||
|
* - Control for cache maintenance permission
|
||||||
*/
|
*/
|
||||||
#define PVM_ID_AA64MMFR1_ALLOW (\
|
#define PVM_ID_AA64MMFR1_ALLOW (\
|
||||||
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_HAFDBS) | \
|
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_HAFDBS) | \
|
||||||
|
@ -142,7 +145,8 @@ void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
|
||||||
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_HPDS) | \
|
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_HPDS) | \
|
||||||
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_PAN) | \
|
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_PAN) | \
|
||||||
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_SpecSEI) | \
|
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_SpecSEI) | \
|
||||||
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_ETS) \
|
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_ETS) | \
|
||||||
|
ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_CMOW) \
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -167,6 +171,8 @@ void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
|
||||||
ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_E0PD) \
|
ARM64_FEATURE_MASK(ID_AA64MMFR2_EL1_E0PD) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#define PVM_ID_AA64MMFR3_ALLOW (0ULL)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No restrictions for Scalable Vectors (SVE).
|
* No restrictions for Scalable Vectors (SVE).
|
||||||
*/
|
*/
|
||||||
|
@ -220,10 +226,18 @@ void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
|
||||||
ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_RNDR) \
|
ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_RNDR) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/* Restrict pointer authentication to the basic version. */
|
||||||
|
#define PVM_ID_AA64ISAR1_RESTRICT_UNSIGNED (\
|
||||||
|
FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA), ID_AA64ISAR1_EL1_APA_PAuth) | \
|
||||||
|
FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API), ID_AA64ISAR1_EL1_API_PAuth) \
|
||||||
|
)
|
||||||
|
|
||||||
|
#define PVM_ID_AA64ISAR2_RESTRICT_UNSIGNED (\
|
||||||
|
FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_APA3), ID_AA64ISAR2_EL1_APA3_PAuth) \
|
||||||
|
)
|
||||||
|
|
||||||
#define PVM_ID_AA64ISAR1_ALLOW (\
|
#define PVM_ID_AA64ISAR1_ALLOW (\
|
||||||
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_DPB) | \
|
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_DPB) | \
|
||||||
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA) | \
|
|
||||||
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API) | \
|
|
||||||
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_JSCVT) | \
|
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_JSCVT) | \
|
||||||
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_FCMA) | \
|
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_FCMA) | \
|
||||||
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_LRCPC) | \
|
ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_LRCPC) | \
|
||||||
|
@ -238,10 +252,226 @@ void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
|
||||||
)
|
)
|
||||||
|
|
||||||
#define PVM_ID_AA64ISAR2_ALLOW (\
|
#define PVM_ID_AA64ISAR2_ALLOW (\
|
||||||
|
ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_ATS1A) | \
|
||||||
ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_GPA3) | \
|
ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_GPA3) | \
|
||||||
ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_APA3) \
|
ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_MOPS) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
/* All HAFGRTR_EL2 bits are AMU */
|
||||||
|
#define HAFGRTR_AMU __HAFGRTR_EL2_MASK
|
||||||
|
|
||||||
|
#define PVM_HAFGRTR_EL2_SET \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_AMU), PVM_ID_AA64PFR0_ALLOW) ? 0ULL : HAFGRTR_AMU)
|
||||||
|
|
||||||
|
#define PVM_HAFGRTR_EL2_CLR (0ULL)
|
||||||
|
|
||||||
|
/* No support for debug, trace, of PMU for protected VMs */
|
||||||
|
#define PVM_HDFGRTR_EL2_SET __HDFGRTR_EL2_MASK
|
||||||
|
#define PVM_HDFGRTR_EL2_CLR __HDFGRTR_EL2_nMASK
|
||||||
|
|
||||||
|
#define PVM_HDFGWTR_EL2_SET __HDFGWTR_EL2_MASK
|
||||||
|
#define PVM_HDFGWTR_EL2_CLR __HDFGWTR_EL2_nMASK
|
||||||
|
|
||||||
|
#define HFGxTR_RAS_IMP (\
|
||||||
|
HFGxTR_EL2_ERXADDR_EL1 | \
|
||||||
|
HFGxTR_EL2_ERXPFGF_EL1 | \
|
||||||
|
HFGxTR_EL2_ERXMISCn_EL1 | \
|
||||||
|
HFGxTR_EL2_ERXSTATUS_EL1 | \
|
||||||
|
HFGxTR_EL2_ERXCTLR_EL1 | \
|
||||||
|
HFGxTR_EL2_ERXFR_EL1 | \
|
||||||
|
HFGxTR_EL2_ERRSELR_EL1 | \
|
||||||
|
HFGxTR_EL2_ERRIDR_EL1 \
|
||||||
|
)
|
||||||
|
#define HFGxTR_RAS_V1P1 (\
|
||||||
|
HFGxTR_EL2_ERXPFGCDN_EL1 | \
|
||||||
|
HFGxTR_EL2_ERXPFGCTL_EL1 \
|
||||||
|
)
|
||||||
|
#define HFGxTR_GIC HFGxTR_EL2_ICC_IGRPENn_EL1
|
||||||
|
#define HFGxTR_CSV2 (\
|
||||||
|
HFGxTR_EL2_SCXTNUM_EL0 | \
|
||||||
|
HFGxTR_EL2_SCXTNUM_EL1 \
|
||||||
|
)
|
||||||
|
#define HFGxTR_LOR (\
|
||||||
|
HFGxTR_EL2_LORSA_EL1 | \
|
||||||
|
HFGxTR_EL2_LORN_EL1 | \
|
||||||
|
HFGxTR_EL2_LORID_EL1 | \
|
||||||
|
HFGxTR_EL2_LOREA_EL1 | \
|
||||||
|
HFGxTR_EL2_LORC_EL1 \
|
||||||
|
)
|
||||||
|
#define HFGxTR_PAUTH (\
|
||||||
|
HFGxTR_EL2_APIBKey | \
|
||||||
|
HFGxTR_EL2_APIAKey | \
|
||||||
|
HFGxTR_EL2_APGAKey | \
|
||||||
|
HFGxTR_EL2_APDBKey | \
|
||||||
|
HFGxTR_EL2_APDAKey \
|
||||||
|
)
|
||||||
|
#define HFGxTR_nAIE (\
|
||||||
|
HFGxTR_EL2_nAMAIR2_EL1 | \
|
||||||
|
HFGxTR_EL2_nMAIR2_EL1 \
|
||||||
|
)
|
||||||
|
#define HFGxTR_nS2POE HFGxTR_EL2_nS2POR_EL1
|
||||||
|
#define HFGxTR_nS1POE (\
|
||||||
|
HFGxTR_EL2_nPOR_EL1 | \
|
||||||
|
HFGxTR_EL2_nPOR_EL0 \
|
||||||
|
)
|
||||||
|
#define HFGxTR_nS1PIE (\
|
||||||
|
HFGxTR_EL2_nPIR_EL1 | \
|
||||||
|
HFGxTR_EL2_nPIRE0_EL1 \
|
||||||
|
)
|
||||||
|
#define HFGxTR_nTHE HFGxTR_EL2_nRCWMASK_EL1
|
||||||
|
#define HFGxTR_nSME (\
|
||||||
|
HFGxTR_EL2_nTPIDR2_EL0 | \
|
||||||
|
HFGxTR_EL2_nSMPRI_EL1 \
|
||||||
|
)
|
||||||
|
#define HFGxTR_nGCS (\
|
||||||
|
HFGxTR_EL2_nGCS_EL1 | \
|
||||||
|
HFGxTR_EL2_nGCS_EL0 \
|
||||||
|
)
|
||||||
|
#define HFGxTR_nLS64 HFGxTR_EL2_nACCDATA_EL1
|
||||||
|
|
||||||
|
#define PVM_HFGXTR_EL2_SET \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_RAS), PVM_ID_AA64PFR0_RESTRICT_UNSIGNED) >= ID_AA64PFR0_EL1_RAS_IMP ? 0ULL : HFGxTR_RAS_IMP) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_RAS), PVM_ID_AA64PFR0_RESTRICT_UNSIGNED) >= ID_AA64PFR0_EL1_RAS_V1P1 ? 0ULL : HFGxTR_RAS_V1P1) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_GIC), PVM_ID_AA64PFR0_ALLOW) ? 0ULL : HFGxTR_GIC) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_CSV2), PVM_ID_AA64PFR0_ALLOW) ? 0ULL : HFGxTR_CSV2) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_LO), PVM_ID_AA64MMFR1_ALLOW) ? 0ULL : HFGxTR_LOR) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA), PVM_ID_AA64ISAR1_ALLOW) ? 0ULL : HFGxTR_PAUTH) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API), PVM_ID_AA64ISAR1_ALLOW) ? 0ULL : HFGxTR_PAUTH) | \
|
||||||
|
0
|
||||||
|
|
||||||
|
#define PVM_HFGXTR_EL2_CLR \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR3_EL1_AIE), PVM_ID_AA64MMFR3_ALLOW) ? 0ULL : HFGxTR_nAIE) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR3_EL1_S2POE), PVM_ID_AA64MMFR3_ALLOW) ? 0ULL : HFGxTR_nS2POE) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR3_EL1_S1POE), PVM_ID_AA64MMFR3_ALLOW) ? 0ULL : HFGxTR_nS1POE) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR3_EL1_S1PIE), PVM_ID_AA64MMFR3_ALLOW) ? 0ULL : HFGxTR_nS1PIE) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_THE), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HFGxTR_nTHE) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_SME), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HFGxTR_nSME) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_GCS), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HFGxTR_nGCS) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_LS64), PVM_ID_AA64ISAR1_ALLOW) ? 0ULL : HFGxTR_nLS64) | \
|
||||||
|
0
|
||||||
|
|
||||||
|
#define PVM_HFGRTR_EL2_SET PVM_HFGXTR_EL2_SET
|
||||||
|
#define PVM_HFGWTR_EL2_SET PVM_HFGXTR_EL2_SET
|
||||||
|
#define PVM_HFGRTR_EL2_CLR PVM_HFGXTR_EL2_CLR
|
||||||
|
#define PVM_HFGWTR_EL2_CLR PVM_HFGXTR_EL2_CLR
|
||||||
|
|
||||||
|
#define HFGITR_SPECRES (\
|
||||||
|
HFGITR_EL2_CPPRCTX | \
|
||||||
|
HFGITR_EL2_DVPRCTX | \
|
||||||
|
HFGITR_EL2_CFPRCTX \
|
||||||
|
)
|
||||||
|
#define HFGITR_TLBIOS (\
|
||||||
|
HFGITR_EL2_TLBIVAALE1OS | \
|
||||||
|
HFGITR_EL2_TLBIVALE1OS | \
|
||||||
|
HFGITR_EL2_TLBIVAAE1OS | \
|
||||||
|
HFGITR_EL2_TLBIASIDE1OS | \
|
||||||
|
HFGITR_EL2_TLBIVAE1OS | \
|
||||||
|
HFGITR_EL2_TLBIVMALLE1OS \
|
||||||
|
)
|
||||||
|
#define HFGITR_TLBIRANGE \
|
||||||
|
(\
|
||||||
|
HFGITR_TLBIOS | \
|
||||||
|
HFGITR_EL2_TLBIRVAALE1 | \
|
||||||
|
HFGITR_EL2_TLBIRVALE1 | \
|
||||||
|
HFGITR_EL2_TLBIRVAAE1 | \
|
||||||
|
HFGITR_EL2_TLBIRVAE1 | \
|
||||||
|
HFGITR_EL2_TLBIRVAE1 | \
|
||||||
|
HFGITR_EL2_TLBIRVAALE1IS | \
|
||||||
|
HFGITR_EL2_TLBIRVALE1IS | \
|
||||||
|
HFGITR_EL2_TLBIRVAAE1IS | \
|
||||||
|
HFGITR_EL2_TLBIRVAE1IS | \
|
||||||
|
HFGITR_EL2_TLBIVAALE1IS | \
|
||||||
|
HFGITR_EL2_TLBIVALE1IS | \
|
||||||
|
HFGITR_EL2_TLBIVAAE1IS | \
|
||||||
|
HFGITR_EL2_TLBIASIDE1IS | \
|
||||||
|
HFGITR_EL2_TLBIVAE1IS | \
|
||||||
|
HFGITR_EL2_TLBIVMALLE1IS | \
|
||||||
|
HFGITR_EL2_TLBIRVAALE1OS | \
|
||||||
|
HFGITR_EL2_TLBIRVALE1OS | \
|
||||||
|
HFGITR_EL2_TLBIRVAAE1OS | \
|
||||||
|
HFGITR_EL2_TLBIRVAE1OS \
|
||||||
|
)
|
||||||
|
#define HFGITR_TLB HFGITR_TLBIRANGE
|
||||||
|
#define HFGITR_PAN2 (\
|
||||||
|
HFGITR_EL2_ATS1E1WP | \
|
||||||
|
HFGITR_EL2_ATS1E1RP | \
|
||||||
|
HFGITR_EL2_ATS1E0W | \
|
||||||
|
HFGITR_EL2_ATS1E0R | \
|
||||||
|
HFGITR_EL2_ATS1E1W | \
|
||||||
|
HFGITR_EL2_ATS1E1R \
|
||||||
|
)
|
||||||
|
#define HFGITR_PAN HFGITR_PAN2
|
||||||
|
#define HFGITR_DPB2 HFGITR_EL2_DCCVADP
|
||||||
|
#define HFGITR_DPB_IMP HFGITR_EL2_DCCVAP
|
||||||
|
#define HFGITR_DPB (HFGITR_DPB_IMP | HFGITR_DPB2)
|
||||||
|
#define HFGITR_nGCS (\
|
||||||
|
HFGITR_EL2_nGCSEPP | \
|
||||||
|
HFGITR_EL2_nGCSSTR_EL1 | \
|
||||||
|
HFGITR_EL2_nGCSPUSHM_EL1 \
|
||||||
|
)
|
||||||
|
#define HFGITR_nBRBE (\
|
||||||
|
HFGITR_EL2_nBRBIALL | \
|
||||||
|
HFGITR_EL2_nBRBINJ \
|
||||||
|
)
|
||||||
|
|
||||||
|
#define PVM_HFGITR_EL2_SET \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_ATS1A), PVM_ID_AA64ISAR2_ALLOW) ? 0ULL : HFGITR_EL2_ATS1E1A) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_SPECRES), PVM_ID_AA64ISAR1_ALLOW) ? 0ULL : HFGITR_SPECRES) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR0_EL1_TLB), PVM_ID_AA64ISAR0_ALLOW) ? 0ULL : HFGITR_TLB) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_PAN), PVM_ID_AA64MMFR1_ALLOW) ? 0ULL : HFGITR_PAN) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_DPB), PVM_ID_AA64ISAR1_ALLOW) ? 0ULL : HFGITR_DPB) | \
|
||||||
|
0
|
||||||
|
|
||||||
|
#define PVM_HFGITR_EL2_CLR \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_GCS), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HFGITR_nGCS) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_BRBE), PVM_ID_AA64DFR0_ALLOW) ? 0ULL : HFGITR_nBRBE) | \
|
||||||
|
0
|
||||||
|
|
||||||
|
#define HCRX_NMI HCRX_EL2_TALLINT
|
||||||
|
|
||||||
|
#define HCRX_nPAuth_LR HCRX_EL2_PACMEn
|
||||||
|
#define HCRX_nFPMR HCRX_EL2_EnFPM
|
||||||
|
#define HCRX_nGCS HCRX_EL2_GCSEn
|
||||||
|
#define HCRX_nSYSREG128 HCRX_EL2_EnIDCP128
|
||||||
|
#define HCRX_nADERR HCRX_EL2_EnSDERR
|
||||||
|
#define HCRX_nDoubleFault2 HCRX_EL2_TMEA
|
||||||
|
#define HCRX_nANERR HCRX_EL2_EnSNERR
|
||||||
|
#define HCRX_nD128 HCRX_EL2_D128En
|
||||||
|
#define HCRX_nTHE HCRX_EL2_PTTWI
|
||||||
|
#define HCRX_nSCTLR2 HCRX_EL2_SCTLR2En
|
||||||
|
#define HCRX_nTCR2 HCRX_EL2_TCR2En
|
||||||
|
#define HCRX_nMOPS (HCRX_EL2_MSCEn | HCRX_EL2_MCE2)
|
||||||
|
#define HCRX_nCMOW HCRX_EL2_CMOW
|
||||||
|
#define HCRX_nNMI (HCRX_EL2_VFNMI | HCRX_EL2_VINMI)
|
||||||
|
#define HCRX_SME HCRX_EL2_SMPME
|
||||||
|
#define HCRX_nXS (HCRX_EL2_FGTnXS | HCRX_EL2_FnXS)
|
||||||
|
#define HCRX_nLS64 (HCRX_EL2_EnASR| HCRX_EL2_EnALS | HCRX_EL2_EnAS0)
|
||||||
|
|
||||||
|
#define PVM_HCRX_EL2_SET \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_NMI), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HCRX_NMI) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_SME), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HCRX_SME) | \
|
||||||
|
0
|
||||||
|
|
||||||
|
#define PVM_HCRX_EL2_CLR \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA), PVM_ID_AA64ISAR1_RESTRICT_UNSIGNED) < ID_AA64ISAR1_EL1_APA_PAuth_LR ? 0ULL : HCRX_nPAuth_LR) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API), PVM_ID_AA64ISAR1_RESTRICT_UNSIGNED) < ID_AA64ISAR1_EL1_APA_PAuth_LR ? 0ULL : HCRX_nPAuth_LR) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_GCS), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HCRX_nGCS) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_SYSREG_128), PVM_ID_AA64ISAR2_ALLOW) ? 0ULL : HCRX_nSYSREG128) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR3_EL1_ADERR), PVM_ID_AA64MMFR3_ALLOW) ? 0ULL : HCRX_nADERR) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_DF2), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HCRX_nDoubleFault2) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR3_EL1_ANERR), PVM_ID_AA64MMFR3_ALLOW) ? 0ULL : HCRX_nANERR) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR0_EL1_PARANGE), PVM_ID_AA64MMFR0_ALLOW) ? 0ULL : HCRX_nD128) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_THE), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HCRX_nTHE) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR3_EL1_SCTLRX), PVM_ID_AA64MMFR3_ALLOW) ? 0ULL : HCRX_nSCTLR2) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR3_EL1_TCRX), PVM_ID_AA64MMFR3_ALLOW) ? 0ULL : HCRX_nTCR2) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_MOPS), PVM_ID_AA64ISAR2_ALLOW) ? 0ULL : HCRX_nMOPS) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64MMFR1_EL1_CMOW), PVM_ID_AA64MMFR1_ALLOW) ? 0ULL : HCRX_nCMOW) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_NMI), PVM_ID_AA64PFR1_ALLOW) ? 0ULL : HCRX_nNMI) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_XS), PVM_ID_AA64ISAR1_ALLOW) ? 0ULL : HCRX_nXS) | \
|
||||||
|
(FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_LS64), PVM_ID_AA64ISAR1_ALLOW) ? 0ULL : HCRX_nLS64) | \
|
||||||
|
0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the maximum number of breakpoints supported for protected VMs.
|
* Returns the maximum number of breakpoints supported for protected VMs.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -169,7 +169,7 @@ struct pkvm_module_ops {
|
||||||
void (*update_hcr_el2)(unsigned long set_mask, unsigned long clear_mask);
|
void (*update_hcr_el2)(unsigned long set_mask, unsigned long clear_mask);
|
||||||
void (*update_hfgwtr_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 user_pt_regs *regs, u64 esr, u64 addr));
|
int (*register_host_perm_fault_handler)(int (*cb)(struct user_pt_regs *regs, u64 esr, u64 addr));
|
||||||
int (*host_stage2_mod_prot)(u64 pfn, enum kvm_pgtable_prot prot, u64 nr_pages);
|
int (*host_stage2_mod_prot)(u64 pfn, enum kvm_pgtable_prot prot, u64 nr_pages, bool update_iommu);
|
||||||
int (*host_stage2_get_leaf)(phys_addr_t phys, kvm_pte_t *ptep, u32 *level);
|
int (*host_stage2_get_leaf)(phys_addr_t phys, kvm_pte_t *ptep, u32 *level);
|
||||||
int (*register_host_smc_handler)(bool (*cb)(struct user_pt_regs *));
|
int (*register_host_smc_handler)(bool (*cb)(struct user_pt_regs *));
|
||||||
int (*register_default_trap_handler)(bool (*cb)(struct user_pt_regs *));
|
int (*register_default_trap_handler)(bool (*cb)(struct user_pt_regs *));
|
||||||
|
@ -292,10 +292,11 @@ int pkvm_load_early_modules(void);
|
||||||
__pkvm_load_el2_module(THIS_MODULE, token); \
|
__pkvm_load_el2_module(THIS_MODULE, token); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define pkvm_register_el2_mod_call(hfn, token) \
|
static inline int pkvm_register_el2_mod_call(dyn_hcall_t hfn,
|
||||||
({ \
|
unsigned long token)
|
||||||
__pkvm_register_el2_call(pkvm_el2_mod_va(hfn, token)); \
|
{
|
||||||
})
|
return __pkvm_register_el2_call(pkvm_el2_mod_va(hfn, token));
|
||||||
|
}
|
||||||
|
|
||||||
#define pkvm_el2_mod_call(id, ...) \
|
#define pkvm_el2_mod_call(id, ...) \
|
||||||
({ \
|
({ \
|
||||||
|
|
|
@ -182,7 +182,7 @@ void mte_check_tfsr_el1(void);
|
||||||
|
|
||||||
static inline void mte_check_tfsr_entry(void)
|
static inline void mte_check_tfsr_entry(void)
|
||||||
{
|
{
|
||||||
if (!system_supports_mte())
|
if (!kasan_hw_tags_enabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mte_check_tfsr_el1();
|
mte_check_tfsr_el1();
|
||||||
|
@ -190,7 +190,7 @@ static inline void mte_check_tfsr_entry(void)
|
||||||
|
|
||||||
static inline void mte_check_tfsr_exit(void)
|
static inline void mte_check_tfsr_exit(void)
|
||||||
{
|
{
|
||||||
if (!system_supports_mte())
|
if (!kasan_hw_tags_enabled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
#include <linux/ratelimit.h>
|
#include <linux/ratelimit.h>
|
||||||
#include <linux/syscalls.h>
|
#include <linux/syscalls.h>
|
||||||
|
|
||||||
|
#include <trace/hooks/dtask.h>
|
||||||
|
|
||||||
#include <asm/daifflags.h>
|
#include <asm/daifflags.h>
|
||||||
#include <asm/debug-monitors.h>
|
#include <asm/debug-monitors.h>
|
||||||
#include <asm/elf.h>
|
#include <asm/elf.h>
|
||||||
|
@ -1280,8 +1282,11 @@ static void do_signal(struct pt_regs *regs)
|
||||||
|
|
||||||
void do_notify_resume(struct pt_regs *regs, unsigned long thread_flags)
|
void do_notify_resume(struct pt_regs *regs, unsigned long thread_flags)
|
||||||
{
|
{
|
||||||
|
int thread_lazy_flag = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (thread_flags & _TIF_NEED_RESCHED) {
|
trace_android_vh_read_lazy_flag(&thread_lazy_flag, &thread_flags);
|
||||||
|
if ((thread_flags & _TIF_NEED_RESCHED) || thread_lazy_flag) {
|
||||||
/* Unmask Debug and SError for the next task */
|
/* Unmask Debug and SError for the next task */
|
||||||
local_daif_restore(DAIF_PROCCTX_NOIRQ);
|
local_daif_restore(DAIF_PROCCTX_NOIRQ);
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,10 @@ VDSO_LDFLAGS += -z max-page-size=4096 -z common-page-size=4096
|
||||||
VDSO_LDFLAGS += -shared --hash-style=sysv --build-id=sha1
|
VDSO_LDFLAGS += -shared --hash-style=sysv --build-id=sha1
|
||||||
VDSO_LDFLAGS += --orphan-handling=$(CONFIG_LD_ORPHAN_WARN_LEVEL)
|
VDSO_LDFLAGS += --orphan-handling=$(CONFIG_LD_ORPHAN_WARN_LEVEL)
|
||||||
|
|
||||||
|
# Add user-supplied KCPPFLAGS_COMPAT as the last assignments
|
||||||
|
VDSO_CFLAGS += $(KCPPFLAGS_COMPAT)
|
||||||
|
VDSO_AFLAGS += $(KCPPFLAGS_COMPAT)
|
||||||
|
|
||||||
|
|
||||||
# Borrow vdsomunge.c from the arm vDSO
|
# Borrow vdsomunge.c from the arm vDSO
|
||||||
# We have to use a relative path because scripts/Makefile.host prefixes
|
# We have to use a relative path because scripts/Makefile.host prefixes
|
||||||
|
|
|
@ -221,22 +221,25 @@ static inline void __activate_traps_common(struct kvm_vcpu *vcpu)
|
||||||
|
|
||||||
vcpu->arch.mdcr_el2_host = read_sysreg(mdcr_el2);
|
vcpu->arch.mdcr_el2_host = read_sysreg(mdcr_el2);
|
||||||
write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
|
write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
|
||||||
|
}
|
||||||
|
|
||||||
if (cpus_have_final_cap(ARM64_HAS_HCX)) {
|
static inline void __activate_traps_hcrx(struct kvm_vcpu *vcpu)
|
||||||
u64 hcrx = HCRX_GUEST_FLAGS;
|
{
|
||||||
if (vcpu_has_nv(vcpu) && !is_hyp_ctxt(vcpu)) {
|
u64 hcrx = HCRX_GUEST_FLAGS;
|
||||||
u64 clr = 0, set = 0;
|
|
||||||
|
|
||||||
compute_clr_set(vcpu, HCRX_EL2, clr, set);
|
if (!cpus_have_final_cap(ARM64_HAS_HCX))
|
||||||
|
return;
|
||||||
|
|
||||||
hcrx |= set;
|
if (vcpu_has_nv(vcpu) && !is_hyp_ctxt(vcpu)) {
|
||||||
hcrx &= ~clr;
|
u64 clr = 0, set = 0;
|
||||||
}
|
|
||||||
|
|
||||||
write_sysreg_s(hcrx, SYS_HCRX_EL2);
|
compute_clr_set(vcpu, HCRX_EL2, clr, set);
|
||||||
|
|
||||||
|
hcrx |= set;
|
||||||
|
hcrx &= ~clr;
|
||||||
}
|
}
|
||||||
|
|
||||||
__activate_traps_hfgxtr(vcpu);
|
write_sysreg_s(hcrx, SYS_HCRX_EL2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu)
|
static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu)
|
||||||
|
@ -254,8 +257,6 @@ static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu)
|
||||||
|
|
||||||
if (cpus_have_final_cap(ARM64_HAS_HCX))
|
if (cpus_have_final_cap(ARM64_HAS_HCX))
|
||||||
write_sysreg_s(HCRX_HOST_FLAGS, SYS_HCRX_EL2);
|
write_sysreg_s(HCRX_HOST_FLAGS, SYS_HCRX_EL2);
|
||||||
|
|
||||||
__deactivate_traps_hfgxtr(vcpu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void ___activate_traps(struct kvm_vcpu *vcpu)
|
static inline void ___activate_traps(struct kvm_vcpu *vcpu)
|
||||||
|
|
|
@ -87,7 +87,7 @@ int reclaim_hyp_pool(struct hyp_pool *pool, struct kvm_hyp_memcache *host_mc,
|
||||||
void destroy_hyp_vm_pgt(struct pkvm_hyp_vm *vm);
|
void destroy_hyp_vm_pgt(struct pkvm_hyp_vm *vm);
|
||||||
void drain_hyp_pool(struct pkvm_hyp_vm *vm, struct kvm_hyp_memcache *mc);
|
void drain_hyp_pool(struct pkvm_hyp_vm *vm, struct kvm_hyp_memcache *mc);
|
||||||
|
|
||||||
int module_change_host_page_prot(u64 pfn, enum kvm_pgtable_prot prot, u64 nr_pages);
|
int module_change_host_page_prot(u64 pfn, enum kvm_pgtable_prot prot, u64 nr_pages, bool update_iommu);
|
||||||
|
|
||||||
void psci_mem_protect_inc(u64 n);
|
void psci_mem_protect_inc(u64 n);
|
||||||
void psci_mem_protect_dec(u64 n);
|
void psci_mem_protect_dec(u64 n);
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <asm/kvm_hyp.h>
|
#include <asm/kvm_hyp.h>
|
||||||
|
#include <asm/kvm_hypevents.h>
|
||||||
|
|
||||||
#include <hyp/adjust_pc.h>
|
#include <hyp/adjust_pc.h>
|
||||||
|
|
||||||
|
@ -146,7 +147,7 @@ struct hyp_mgt_allocator_ops kvm_iommu_allocator_ops = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct kvm_hyp_iommu_domain *
|
static struct kvm_hyp_iommu_domain *
|
||||||
handle_to_domain(pkvm_handle_t domain_id)
|
__handle_to_domain(pkvm_handle_t domain_id, bool alloc)
|
||||||
{
|
{
|
||||||
int idx;
|
int idx;
|
||||||
struct kvm_hyp_iommu_domain *domains;
|
struct kvm_hyp_iommu_domain *domains;
|
||||||
|
@ -158,11 +159,9 @@ handle_to_domain(pkvm_handle_t domain_id)
|
||||||
idx = domain_id / KVM_IOMMU_DOMAINS_PER_PAGE;
|
idx = domain_id / KVM_IOMMU_DOMAINS_PER_PAGE;
|
||||||
domains = (struct kvm_hyp_iommu_domain *)READ_ONCE(kvm_hyp_iommu_domains[idx]);
|
domains = (struct kvm_hyp_iommu_domain *)READ_ONCE(kvm_hyp_iommu_domains[idx]);
|
||||||
if (!domains) {
|
if (!domains) {
|
||||||
if (domain_id == KVM_IOMMU_DOMAIN_IDMAP_ID)
|
if (!alloc)
|
||||||
domains = kvm_iommu_donate_pages_atomic(0);
|
return NULL;
|
||||||
else
|
domains = kvm_iommu_donate_page();
|
||||||
domains = kvm_iommu_donate_page();
|
|
||||||
|
|
||||||
if (!domains)
|
if (!domains)
|
||||||
return NULL;
|
return NULL;
|
||||||
/*
|
/*
|
||||||
|
@ -174,16 +173,19 @@ handle_to_domain(pkvm_handle_t domain_id)
|
||||||
*/
|
*/
|
||||||
if (WARN_ON(cmpxchg64_relaxed(&kvm_hyp_iommu_domains[idx], 0,
|
if (WARN_ON(cmpxchg64_relaxed(&kvm_hyp_iommu_domains[idx], 0,
|
||||||
(void *)domains) != 0)) {
|
(void *)domains) != 0)) {
|
||||||
if (domain_id == KVM_IOMMU_DOMAIN_IDMAP_ID)
|
kvm_iommu_reclaim_page(domains);
|
||||||
kvm_iommu_reclaim_pages_atomic(domains, 0);
|
|
||||||
else
|
|
||||||
kvm_iommu_reclaim_page(domains);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &domains[domain_id % KVM_IOMMU_DOMAINS_PER_PAGE];
|
return &domains[domain_id % KVM_IOMMU_DOMAINS_PER_PAGE];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct kvm_hyp_iommu_domain *
|
||||||
|
handle_to_domain(pkvm_handle_t domain_id)
|
||||||
|
{
|
||||||
|
return __handle_to_domain(domain_id, true);
|
||||||
|
}
|
||||||
|
|
||||||
static int domain_get(struct kvm_hyp_iommu_domain *domain)
|
static int domain_get(struct kvm_hyp_iommu_domain *domain)
|
||||||
{
|
{
|
||||||
int old = atomic_fetch_inc_acquire(&domain->refs);
|
int old = atomic_fetch_inc_acquire(&domain->refs);
|
||||||
|
@ -520,14 +522,7 @@ static int kvm_iommu_init_idmap(struct kvm_hyp_memcache *atomic_mc)
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = refill_hyp_pool(&iommu_atomic_pool, atomic_mc);
|
return refill_hyp_pool(&iommu_atomic_pool, atomic_mc);
|
||||||
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
/* The host must guarantee that the allocator can be used from this context. */
|
|
||||||
return WARN_ON(kvm_iommu_alloc_domain(KVM_IOMMU_DOMAIN_IDMAP_ID,
|
|
||||||
KVM_IOMMU_DOMAIN_IDMAP_TYPE));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_iommu_init(struct kvm_iommu_ops *ops, struct kvm_hyp_memcache *atomic_mc,
|
int kvm_iommu_init(struct kvm_iommu_ops *ops, struct kvm_hyp_memcache *atomic_mc,
|
||||||
|
@ -542,10 +537,6 @@ int kvm_iommu_init(struct kvm_iommu_ops *ops, struct kvm_hyp_memcache *atomic_mc
|
||||||
!ops->detach_dev))
|
!ops->detach_dev))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
ret = ops->init ? ops->init(init_arg) : 0;
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = __pkvm_host_donate_hyp(__hyp_pa(kvm_hyp_iommu_domains) >> PAGE_SHIFT,
|
ret = __pkvm_host_donate_hyp(__hyp_pa(kvm_hyp_iommu_domains) >> PAGE_SHIFT,
|
||||||
1 << get_order(KVM_IOMMU_DOMAINS_ROOT_SIZE));
|
1 << get_order(KVM_IOMMU_DOMAINS_ROOT_SIZE));
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -559,7 +550,11 @@ int kvm_iommu_init(struct kvm_iommu_ops *ops, struct kvm_hyp_memcache *atomic_mc
|
||||||
smp_wmb();
|
smp_wmb();
|
||||||
kvm_iommu_ops = ops;
|
kvm_iommu_ops = ops;
|
||||||
|
|
||||||
return kvm_iommu_init_idmap(atomic_mc);
|
ret = kvm_iommu_init_idmap(atomic_mc);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
return ops->init ? ops->init(init_arg) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int pkvm_to_iommu_prot(int prot)
|
static inline int pkvm_to_iommu_prot(int prot)
|
||||||
|
@ -586,9 +581,9 @@ void kvm_iommu_host_stage2_idmap(phys_addr_t start, phys_addr_t end,
|
||||||
if (!kvm_iommu_is_ready())
|
if (!kvm_iommu_is_ready())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
domain = handle_to_domain(KVM_IOMMU_DOMAIN_IDMAP_ID);
|
trace_iommu_idmap(start, end, prot);
|
||||||
if (!domain)
|
|
||||||
return;
|
domain = __handle_to_domain(KVM_IOMMU_DOMAIN_IDMAP_ID, false);
|
||||||
|
|
||||||
kvm_iommu_ops->host_stage2_idmap(domain, start, end, pkvm_to_iommu_prot(prot));
|
kvm_iommu_ops->host_stage2_idmap(domain, start, end, pkvm_to_iommu_prot(prot));
|
||||||
}
|
}
|
||||||
|
|
|
@ -674,7 +674,7 @@ static void __host_update_page_state(phys_addr_t addr, u64 size, enum pkvm_page_
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __host_stage2_set_owner_locked(phys_addr_t addr, u64 size, u8 owner_id, bool is_memory,
|
static int __host_stage2_set_owner_locked(phys_addr_t addr, u64 size, u8 owner_id, bool is_memory,
|
||||||
enum pkvm_page_state nopage_state)
|
enum pkvm_page_state nopage_state, bool update_iommu)
|
||||||
{
|
{
|
||||||
kvm_pte_t annotation;
|
kvm_pte_t annotation;
|
||||||
enum kvm_pgtable_prot prot;
|
enum kvm_pgtable_prot prot;
|
||||||
|
@ -692,24 +692,29 @@ static int __host_stage2_set_owner_locked(phys_addr_t addr, u64 size, u8 owner_i
|
||||||
&host_mmu.pgt,
|
&host_mmu.pgt,
|
||||||
addr, size, &host_s2_pool, annotation);
|
addr, size, &host_s2_pool, annotation);
|
||||||
}
|
}
|
||||||
if (ret || !is_memory)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
if (update_iommu) {
|
||||||
|
prot = owner_id == PKVM_ID_HOST ? PKVM_HOST_MEM_PROT : 0;
|
||||||
|
kvm_iommu_host_stage2_idmap(addr, addr + size, prot);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_memory)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* Don't forget to update the vmemmap tracking for the host */
|
/* Don't forget to update the vmemmap tracking for the host */
|
||||||
if (owner_id == PKVM_ID_HOST)
|
if (owner_id == PKVM_ID_HOST)
|
||||||
__host_update_page_state(addr, size, PKVM_PAGE_OWNED);
|
__host_update_page_state(addr, size, PKVM_PAGE_OWNED);
|
||||||
else
|
else
|
||||||
__host_update_page_state(addr, size, PKVM_NOPAGE | nopage_state);
|
__host_update_page_state(addr, size, PKVM_NOPAGE | nopage_state);
|
||||||
|
|
||||||
prot = owner_id == PKVM_ID_HOST ? PKVM_HOST_MEM_PROT : 0;
|
|
||||||
kvm_iommu_host_stage2_idmap(addr, addr + size, prot);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int host_stage2_set_owner_locked(phys_addr_t addr, u64 size, u8 owner_id)
|
int host_stage2_set_owner_locked(phys_addr_t addr, u64 size, u8 owner_id)
|
||||||
{
|
{
|
||||||
return __host_stage2_set_owner_locked(addr, size, owner_id, addr_is_memory(addr), 0);
|
return __host_stage2_set_owner_locked(addr, size, owner_id, addr_is_memory(addr), 0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool host_stage2_force_pte(u64 addr, u64 end, enum kvm_pgtable_prot prot)
|
static bool host_stage2_force_pte(u64 addr, u64 end, enum kvm_pgtable_prot prot)
|
||||||
|
@ -2183,7 +2188,8 @@ int __pkvm_hyp_donate_host(u64 pfn, u64 nr_pages)
|
||||||
KVM_PGTABLE_PROT_PXN | \
|
KVM_PGTABLE_PROT_PXN | \
|
||||||
KVM_PGTABLE_PROT_UXN)
|
KVM_PGTABLE_PROT_UXN)
|
||||||
|
|
||||||
int module_change_host_page_prot(u64 pfn, enum kvm_pgtable_prot prot, u64 nr_pages)
|
int module_change_host_page_prot(u64 pfn, enum kvm_pgtable_prot prot, u64 nr_pages,
|
||||||
|
bool update_iommu)
|
||||||
{
|
{
|
||||||
u64 i, addr = hyp_pfn_to_phys(pfn);
|
u64 i, addr = hyp_pfn_to_phys(pfn);
|
||||||
u64 end = addr + nr_pages * PAGE_SIZE;
|
u64 end = addr + nr_pages * PAGE_SIZE;
|
||||||
|
@ -2237,10 +2243,10 @@ update:
|
||||||
if (!prot) {
|
if (!prot) {
|
||||||
ret = __host_stage2_set_owner_locked(addr, nr_pages << PAGE_SHIFT,
|
ret = __host_stage2_set_owner_locked(addr, nr_pages << PAGE_SHIFT,
|
||||||
PKVM_ID_PROTECTED, !!reg,
|
PKVM_ID_PROTECTED, !!reg,
|
||||||
PKVM_MODULE_OWNED_PAGE);
|
PKVM_MODULE_OWNED_PAGE, update_iommu);
|
||||||
} else {
|
} else {
|
||||||
ret = host_stage2_idmap_locked(
|
ret = host_stage2_idmap_locked(
|
||||||
addr, nr_pages << PAGE_SHIFT, prot, false);
|
addr, nr_pages << PAGE_SHIFT, prot, update_iommu);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WARN_ON(ret) || !page || !prot)
|
if (WARN_ON(ret) || !page || !prot)
|
||||||
|
@ -2378,7 +2384,7 @@ static int __pkvm_host_use_dma_page(phys_addr_t phys_addr)
|
||||||
return 0;
|
return 0;
|
||||||
if (state != PKVM_PAGE_OWNED)
|
if (state != PKVM_PAGE_OWNED)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
prot = pkvm_mkstate(KVM_HOST_S2_DEFAULT_MMIO_PTE, PKVM_PAGE_MMIO_DMA);
|
prot = pkvm_mkstate(PKVM_HOST_MMIO_PROT, PKVM_PAGE_MMIO_DMA);
|
||||||
return host_stage2_idmap_locked(phys_addr, PAGE_SIZE, prot, false);
|
return host_stage2_idmap_locked(phys_addr, PAGE_SIZE, prot, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,10 @@ static void pvm_init_traps_aa64dfr0(struct kvm_vcpu *vcpu)
|
||||||
cptr_set |= CPTR_EL2_TTA;
|
cptr_set |= CPTR_EL2_TTA;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Trap External Trace */
|
||||||
|
if (!FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_ExtTrcBuff), feature_ids))
|
||||||
|
mdcr_clear |= MDCR_EL2_E2TB_MASK << MDCR_EL2_E2TB_SHIFT;
|
||||||
|
|
||||||
vcpu->arch.mdcr_el2 |= mdcr_set;
|
vcpu->arch.mdcr_el2 |= mdcr_set;
|
||||||
vcpu->arch.mdcr_el2 &= ~mdcr_clear;
|
vcpu->arch.mdcr_el2 &= ~mdcr_clear;
|
||||||
vcpu->arch.cptr_el2 |= cptr_set;
|
vcpu->arch.cptr_el2 |= cptr_set;
|
||||||
|
@ -509,8 +513,8 @@ static void pkvm_vcpu_init_features_from_host(struct pkvm_hyp_vcpu *hyp_vcpu)
|
||||||
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_SVE), PVM_ID_AA64PFR0_RESTRICT_UNSIGNED))
|
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_EL1_SVE), PVM_ID_AA64PFR0_RESTRICT_UNSIGNED))
|
||||||
set_bit(KVM_ARM_VCPU_SVE, allowed_features);
|
set_bit(KVM_ARM_VCPU_SVE, allowed_features);
|
||||||
|
|
||||||
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API), PVM_ID_AA64ISAR1_ALLOW) &&
|
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API), PVM_ID_AA64ISAR1_RESTRICT_UNSIGNED) &&
|
||||||
FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA), PVM_ID_AA64ISAR1_ALLOW))
|
FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA), PVM_ID_AA64ISAR1_RESTRICT_UNSIGNED))
|
||||||
set_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, allowed_features);
|
set_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, allowed_features);
|
||||||
|
|
||||||
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPI), PVM_ID_AA64ISAR1_ALLOW) &&
|
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_GPI), PVM_ID_AA64ISAR1_ALLOW) &&
|
||||||
|
|
|
@ -37,6 +37,52 @@ DEFINE_PER_CPU(unsigned long, kvm_hyp_vector);
|
||||||
extern void kvm_nvhe_prepare_backtrace(unsigned long fp, unsigned long pc);
|
extern void kvm_nvhe_prepare_backtrace(unsigned long fp, unsigned long pc);
|
||||||
extern void __pkvm_unmask_serror(void);
|
extern void __pkvm_unmask_serror(void);
|
||||||
|
|
||||||
|
#define update_pvm_fgt_traps(vcpu, reg) \
|
||||||
|
update_fgt_traps_cs(vcpu, reg, PVM_ ## reg ## _CLR, PVM_ ## reg ## _SET)
|
||||||
|
|
||||||
|
static void __activate_pvm_fine_grain_traps(struct kvm_vcpu *vcpu)
|
||||||
|
{
|
||||||
|
if (cpus_have_final_cap(ARM64_HAS_HCX))
|
||||||
|
update_pvm_fgt_traps(vcpu, HCRX_EL2);
|
||||||
|
|
||||||
|
if (!cpus_have_final_cap(ARM64_HAS_FGT))
|
||||||
|
return;
|
||||||
|
|
||||||
|
update_pvm_fgt_traps(vcpu, HFGRTR_EL2);
|
||||||
|
|
||||||
|
/* Trap guest writes to TCR_EL1 to prevent it from enabling HA or HD. */
|
||||||
|
if (cpus_have_final_cap(ARM64_WORKAROUND_AMPERE_AC03_CPU_38)) {
|
||||||
|
update_fgt_traps_cs(vcpu, HFGWTR_EL2, PVM_HFGWTR_EL2_CLR,
|
||||||
|
PVM_HFGWTR_EL2_SET | HFGxTR_EL2_TCR_EL1_MASK);
|
||||||
|
} else {
|
||||||
|
update_pvm_fgt_traps(vcpu, HFGWTR_EL2);
|
||||||
|
}
|
||||||
|
|
||||||
|
update_pvm_fgt_traps(vcpu, HFGITR_EL2);
|
||||||
|
update_pvm_fgt_traps(vcpu, HDFGRTR_EL2);
|
||||||
|
update_pvm_fgt_traps(vcpu, HDFGWTR_EL2);
|
||||||
|
|
||||||
|
if (cpu_has_amu())
|
||||||
|
update_pvm_fgt_traps(vcpu, HAFGRTR_EL2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __deactivate_pvm_traps_hfgxtr(struct kvm_vcpu *vcpu)
|
||||||
|
{
|
||||||
|
struct kvm_cpu_context *hctxt = &this_cpu_ptr(&kvm_host_data)->host_ctxt;
|
||||||
|
|
||||||
|
if (!cpus_have_final_cap(ARM64_HAS_FGT))
|
||||||
|
return;
|
||||||
|
|
||||||
|
write_sysreg_s(ctxt_sys_reg(hctxt, HFGRTR_EL2), SYS_HFGRTR_EL2);
|
||||||
|
write_sysreg_s(ctxt_sys_reg(hctxt, HFGWTR_EL2), SYS_HFGWTR_EL2);
|
||||||
|
write_sysreg_s(ctxt_sys_reg(hctxt, HFGITR_EL2), SYS_HFGITR_EL2);
|
||||||
|
write_sysreg_s(ctxt_sys_reg(hctxt, HDFGRTR_EL2), SYS_HDFGRTR_EL2);
|
||||||
|
write_sysreg_s(ctxt_sys_reg(hctxt, HDFGWTR_EL2), SYS_HDFGWTR_EL2);
|
||||||
|
|
||||||
|
if (cpu_has_amu())
|
||||||
|
write_sysreg_s(ctxt_sys_reg(hctxt, HAFGRTR_EL2), SYS_HAFGRTR_EL2);
|
||||||
|
}
|
||||||
|
|
||||||
static void __activate_traps(struct kvm_vcpu *vcpu)
|
static void __activate_traps(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
u64 val;
|
u64 val;
|
||||||
|
@ -44,6 +90,13 @@ static void __activate_traps(struct kvm_vcpu *vcpu)
|
||||||
___activate_traps(vcpu);
|
___activate_traps(vcpu);
|
||||||
__activate_traps_common(vcpu);
|
__activate_traps_common(vcpu);
|
||||||
|
|
||||||
|
if (unlikely(vcpu_is_protected(vcpu))) {
|
||||||
|
__activate_pvm_fine_grain_traps(vcpu);
|
||||||
|
} else {
|
||||||
|
__activate_traps_hcrx(vcpu);
|
||||||
|
__activate_traps_hfgxtr(vcpu);
|
||||||
|
}
|
||||||
|
|
||||||
val = vcpu->arch.cptr_el2;
|
val = vcpu->arch.cptr_el2;
|
||||||
val |= CPTR_EL2_TAM; /* Same bit irrespective of E2H */
|
val |= CPTR_EL2_TAM; /* Same bit irrespective of E2H */
|
||||||
val |= has_hvhe() ? CPACR_EL1_TTA : CPTR_EL2_TTA;
|
val |= has_hvhe() ? CPACR_EL1_TTA : CPTR_EL2_TTA;
|
||||||
|
@ -107,6 +160,11 @@ static void __deactivate_traps(struct kvm_vcpu *vcpu)
|
||||||
|
|
||||||
__deactivate_traps_common(vcpu);
|
__deactivate_traps_common(vcpu);
|
||||||
|
|
||||||
|
if (unlikely(vcpu_is_protected(vcpu)))
|
||||||
|
__deactivate_pvm_traps_hfgxtr(vcpu);
|
||||||
|
else
|
||||||
|
__deactivate_traps_hfgxtr(vcpu);
|
||||||
|
|
||||||
write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2);
|
write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2);
|
||||||
|
|
||||||
kvm_reset_cptr_el2(vcpu);
|
kvm_reset_cptr_el2(vcpu);
|
||||||
|
|
|
@ -148,6 +148,8 @@ void activate_traps_vhe_load(struct kvm_vcpu *vcpu)
|
||||||
|
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
__activate_traps_common(vcpu);
|
__activate_traps_common(vcpu);
|
||||||
|
__activate_traps_hcrx(vcpu);
|
||||||
|
__activate_traps_hfgxtr(vcpu);
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,6 +159,7 @@ void deactivate_traps_vhe_put(struct kvm_vcpu *vcpu)
|
||||||
|
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
__deactivate_traps_common(vcpu);
|
__deactivate_traps_common(vcpu);
|
||||||
|
__deactivate_traps_hfgxtr(vcpu);
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,6 @@ CONFIG_EXPERT=y
|
||||||
CONFIG_KALLSYMS_ALL=y
|
CONFIG_KALLSYMS_ALL=y
|
||||||
# CONFIG_RSEQ is not set
|
# CONFIG_RSEQ is not set
|
||||||
CONFIG_PROFILING=y
|
CONFIG_PROFILING=y
|
||||||
CONFIG_KEXEC_FILE=y
|
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
CONFIG_X86_X2APIC=y
|
CONFIG_X86_X2APIC=y
|
||||||
CONFIG_HYPERVISOR_GUEST=y
|
CONFIG_HYPERVISOR_GUEST=y
|
||||||
|
@ -96,6 +95,7 @@ CONFIG_BLK_DEV_ZONED=y
|
||||||
CONFIG_BLK_DEV_THROTTLING=y
|
CONFIG_BLK_DEV_THROTTLING=y
|
||||||
CONFIG_BLK_WBT=y
|
CONFIG_BLK_WBT=y
|
||||||
# CONFIG_BLK_WBT_MQ is not set
|
# CONFIG_BLK_WBT_MQ is not set
|
||||||
|
CONFIG_BLK_CGROUP_IOCOST=y
|
||||||
CONFIG_BLK_CGROUP_IOPRIO=y
|
CONFIG_BLK_CGROUP_IOPRIO=y
|
||||||
CONFIG_BLK_INLINE_ENCRYPTION=y
|
CONFIG_BLK_INLINE_ENCRYPTION=y
|
||||||
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
||||||
|
@ -535,6 +535,7 @@ CONFIG_IIO_TRIGGER=y
|
||||||
CONFIG_GENERIC_PHY=y
|
CONFIG_GENERIC_PHY=y
|
||||||
CONFIG_POWERCAP=y
|
CONFIG_POWERCAP=y
|
||||||
CONFIG_IDLE_INJECT=y
|
CONFIG_IDLE_INJECT=y
|
||||||
|
CONFIG_DTPM=y
|
||||||
CONFIG_ANDROID_BINDER_IPC=y
|
CONFIG_ANDROID_BINDER_IPC=y
|
||||||
CONFIG_ANDROID_BINDERFS=y
|
CONFIG_ANDROID_BINDERFS=y
|
||||||
CONFIG_ANDROID_DEBUG_SYMBOLS=y
|
CONFIG_ANDROID_DEBUG_SYMBOLS=y
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,183 @@
|
||||||
"options": [
|
"options": [
|
||||||
{
|
{
|
||||||
"include-filter": "kselftest_binderfs_binderfs_test"
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -1162,10 +1162,11 @@ static inline bool blk_mq_complete_need_ipi(struct request *rq)
|
||||||
if (force_irqthreads())
|
if (force_irqthreads())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* same CPU or cache domain? Complete locally */
|
/* same CPU or cache domain and capacity? Complete locally */
|
||||||
if (cpu == rq->mq_ctx->cpu ||
|
if (cpu == rq->mq_ctx->cpu ||
|
||||||
(!test_bit(QUEUE_FLAG_SAME_FORCE, &rq->q->queue_flags) &&
|
(!test_bit(QUEUE_FLAG_SAME_FORCE, &rq->q->queue_flags) &&
|
||||||
cpus_share_cache(cpu, rq->mq_ctx->cpu)))
|
cpus_share_cache(cpu, rq->mq_ctx->cpu) &&
|
||||||
|
cpus_equal_capacity(cpu, rq->mq_ctx->cpu)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* don't try to IPI to an offline CPU */
|
/* don't try to IPI to an offline CPU */
|
||||||
|
|
|
@ -581,9 +581,8 @@ int blk_revalidate_disk_zones(struct gendisk *disk,
|
||||||
* Checks that the device driver indicated a valid zone size and that
|
* Checks that the device driver indicated a valid zone size and that
|
||||||
* the max zone append limit is set.
|
* the max zone append limit is set.
|
||||||
*/
|
*/
|
||||||
if (!zone_sectors || !is_power_of_2(zone_sectors)) {
|
if (!zone_sectors) {
|
||||||
pr_warn("%s: Invalid non power of two zone size (%llu)\n",
|
pr_warn("%s: Invalid zone size\n", disk->disk_name);
|
||||||
disk->disk_name, zone_sectors);
|
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
|
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
|
||||||
|
|
||||||
KMI_GENERATION=6
|
KMI_GENERATION=7
|
||||||
|
|
||||||
BRANCH=android15-6.6
|
BRANCH=android15-6.6
|
||||||
LLVM=1
|
LLVM=1
|
||||||
|
|
|
@ -40,6 +40,183 @@
|
||||||
"options": [
|
"options": [
|
||||||
{
|
{
|
||||||
"include-filter": "kselftest_binderfs_binderfs_test"
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -5621,7 +5621,7 @@ static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
||||||
goto err;
|
goto err;
|
||||||
break;
|
break;
|
||||||
case BINDER_SET_MAX_THREADS: {
|
case BINDER_SET_MAX_THREADS: {
|
||||||
int max_threads;
|
u32 max_threads;
|
||||||
|
|
||||||
if (copy_from_user(&max_threads, ubuf,
|
if (copy_from_user(&max_threads, ubuf,
|
||||||
sizeof(max_threads))) {
|
sizeof(max_threads))) {
|
||||||
|
|
|
@ -451,7 +451,7 @@ struct binder_proc {
|
||||||
struct list_head todo;
|
struct list_head todo;
|
||||||
struct binder_stats stats;
|
struct binder_stats stats;
|
||||||
struct list_head delivered_death;
|
struct list_head delivered_death;
|
||||||
int max_threads;
|
u32 max_threads;
|
||||||
int requested_threads;
|
int requested_threads;
|
||||||
int requested_threads_started;
|
int requested_threads_started;
|
||||||
int tmp_ref;
|
int tmp_ref;
|
||||||
|
|
|
@ -45,7 +45,9 @@
|
||||||
#include <trace/hooks/psci.h>
|
#include <trace/hooks/psci.h>
|
||||||
#include <trace/hooks/timer.h>
|
#include <trace/hooks/timer.h>
|
||||||
#include <trace/hooks/fpsimd.h>
|
#include <trace/hooks/fpsimd.h>
|
||||||
|
#include <trace/hooks/preemptirq.h>
|
||||||
#include <trace/hooks/mm.h>
|
#include <trace/hooks/mm.h>
|
||||||
|
#include <trace/hooks/fs.h>
|
||||||
#include <trace/hooks/dtask.h>
|
#include <trace/hooks/dtask.h>
|
||||||
#include <trace/hooks/ftrace_dump.h>
|
#include <trace/hooks/ftrace_dump.h>
|
||||||
#include <trace/hooks/traps.h>
|
#include <trace/hooks/traps.h>
|
||||||
|
@ -68,6 +70,7 @@
|
||||||
#include <trace/hooks/sd.h>
|
#include <trace/hooks/sd.h>
|
||||||
#include <trace/hooks/user.h>
|
#include <trace/hooks/user.h>
|
||||||
#include <trace/hooks/fuse.h>
|
#include <trace/hooks/fuse.h>
|
||||||
|
#include <trace/hooks/psi.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Export tracepoints that act as a bare tracehook (ie: have no trace event
|
* Export tracepoints that act as a bare tracehook (ie: have no trace event
|
||||||
|
@ -213,11 +216,17 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_suspend);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_gic_v3_set_affinity);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_gic_v3_set_affinity);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_set_affinity);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_set_affinity);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_affinity_init);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_affinity_init);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dc_send_copy);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dc_receive);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_bpf_syscall);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_bpf_syscall);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_nanosleep_syscall);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_nanosleep_syscall);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery_set);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery_set);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_preempt_disable);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_preempt_enable);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_disable);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_enable);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_is_fpsimd_save);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_slab_folio_alloced);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_slab_folio_alloced);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kmalloc_large_alloced);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kmalloc_large_alloced);
|
||||||
|
@ -379,14 +388,24 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swapmem_gather_add_bypass);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swapmem_gather_finish);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swapmem_gather_finish);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_oom_swapmem_gather_init);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_oom_swapmem_gather_init);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_oom_swapmem_gather_finish);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_oom_swapmem_gather_finish);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_f2fs_file_open);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_vmalloc_stack);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_vmalloc_stack);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_stack_hash);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_stack_hash);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_mapcount_pages);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_mapcount_pages);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lock_folio_drop_mmap_start);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_lock_folio_drop_mmap_end);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_update_page);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_page_mapcount);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_page_mapcount);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_add_page_to_lrulist);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_add_page_to_lrulist);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_del_page_from_lrulist);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_del_page_from_lrulist);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_traversal_lruvec);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_traversal_lruvec);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_should_be_protected);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_should_be_protected);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mark_page_accessed);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mark_page_accessed);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_cold_pageout_skip);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_event);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_group);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_sdio_pm_flag_set);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_read_lazy_flag);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_tsk_need_resched_lazy);
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,191 @@
|
||||||
"exclude-annotation": "com.android.testutils.SkipPresubmit"
|
"exclude-annotation": "com.android.testutils.SkipPresubmit"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"presubmit-large": [
|
"presubmit-large": [
|
||||||
|
|
|
@ -1003,6 +1003,7 @@ unsigned int pm_wakeup_irq(void)
|
||||||
{
|
{
|
||||||
return wakeup_irq[0];
|
return wakeup_irq[0];
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(pm_wakeup_irq);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pm_get_wakeup_count - Read the number of registered wakeup events.
|
* pm_get_wakeup_count - Read the number of registered wakeup events.
|
||||||
|
|
|
@ -350,7 +350,8 @@ static const struct regmap_bus *regmap_get_i2c_bus(struct i2c_client *i2c,
|
||||||
|
|
||||||
if (quirks->max_write_len &&
|
if (quirks->max_write_len &&
|
||||||
(bus->max_raw_write == 0 || bus->max_raw_write > quirks->max_write_len))
|
(bus->max_raw_write == 0 || bus->max_raw_write > quirks->max_write_len))
|
||||||
max_write = quirks->max_write_len;
|
max_write = quirks->max_write_len -
|
||||||
|
(config->reg_bits + config->pad_bits) / BITS_PER_BYTE;
|
||||||
|
|
||||||
if (max_read || max_write) {
|
if (max_read || max_write) {
|
||||||
ret_bus = kmemdup(bus, sizeof(*bus), GFP_KERNEL);
|
ret_bus = kmemdup(bus, sizeof(*bus), GFP_KERNEL);
|
||||||
|
|
|
@ -7,6 +7,191 @@
|
||||||
"exclude-annotation": "com.android.testutils.SkipPresubmit"
|
"exclude-annotation": "com.android.testutils.SkipPresubmit"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,191 @@
|
||||||
"exclude-annotation": "com.android.testutils.SkipPresubmit"
|
"exclude-annotation": "com.android.testutils.SkipPresubmit"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"presubmit-large": [
|
"presubmit-large": [
|
||||||
|
|
|
@ -32,6 +32,191 @@
|
||||||
"exclude-annotation": "com.android.testutils.SkipPresubmit"
|
"exclude-annotation": "com.android.testutils.SkipPresubmit"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"presubmit-large": [
|
"presubmit-large": [
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
MODULE_AUTHOR("Tom Lendacky <thomas.lendacky@amd.com>");
|
MODULE_AUTHOR("Tom Lendacky <thomas.lendacky@amd.com>");
|
||||||
MODULE_AUTHOR("Gary R Hook <gary.hook@amd.com>");
|
MODULE_AUTHOR("Gary R Hook <gary.hook@amd.com>");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||||
MODULE_VERSION("1.1.0");
|
MODULE_VERSION("1.1.0");
|
||||||
MODULE_DESCRIPTION("AMD Secure Processor driver");
|
MODULE_DESCRIPTION("AMD Secure Processor driver");
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,8 @@ scmi-transport-$(CONFIG_ARM_SCMI_TRANSPORT_SMC) += smc.o
|
||||||
scmi-transport-$(CONFIG_ARM_SCMI_HAVE_MSG) += msg.o
|
scmi-transport-$(CONFIG_ARM_SCMI_HAVE_MSG) += msg.o
|
||||||
scmi-transport-$(CONFIG_ARM_SCMI_TRANSPORT_VIRTIO) += virtio.o
|
scmi-transport-$(CONFIG_ARM_SCMI_TRANSPORT_VIRTIO) += virtio.o
|
||||||
scmi-transport-$(CONFIG_ARM_SCMI_TRANSPORT_OPTEE) += optee.o
|
scmi-transport-$(CONFIG_ARM_SCMI_TRANSPORT_OPTEE) += optee.o
|
||||||
scmi-protocols-y = base.o clock.o perf.o power.o reset.o sensors.o system.o voltage.o powercap.o
|
scmi-protocols-y := base.o clock.o perf.o power.o reset.o sensors.o system.o voltage.o powercap.o
|
||||||
|
scmi-protocols-y += pinctrl.o
|
||||||
scmi-module-objs := $(scmi-driver-y) $(scmi-protocols-y) $(scmi-transport-y)
|
scmi-module-objs := $(scmi-driver-y) $(scmi-protocols-y) $(scmi-transport-y)
|
||||||
|
|
||||||
obj-$(CONFIG_ARM_SCMI_PROTOCOL) += scmi-core.o
|
obj-$(CONFIG_ARM_SCMI_PROTOCOL) += scmi-core.o
|
||||||
|
|
|
@ -13,6 +13,9 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
|
||||||
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x20000
|
||||||
|
|
||||||
#define SCMI_BASE_NUM_SOURCES 1
|
#define SCMI_BASE_NUM_SOURCES 1
|
||||||
#define SCMI_BASE_MAX_CMD_ERR_COUNT 1024
|
#define SCMI_BASE_MAX_CMD_ERR_COUNT 1024
|
||||||
|
|
||||||
|
@ -385,7 +388,7 @@ static int scmi_base_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
|
|
||||||
rev->major_ver = PROTOCOL_REV_MAJOR(version),
|
rev->major_ver = PROTOCOL_REV_MAJOR(version),
|
||||||
rev->minor_ver = PROTOCOL_REV_MINOR(version);
|
rev->minor_ver = PROTOCOL_REV_MINOR(version);
|
||||||
ph->set_priv(ph, rev);
|
ph->set_priv(ph, rev, version);
|
||||||
|
|
||||||
ret = scmi_base_attributes_get(ph);
|
ret = scmi_base_attributes_get(ph);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -423,6 +426,7 @@ static const struct scmi_protocol scmi_base = {
|
||||||
.instance_init = &scmi_base_protocol_init,
|
.instance_init = &scmi_base_protocol_init,
|
||||||
.ops = NULL,
|
.ops = NULL,
|
||||||
.events = &base_protocol_events,
|
.events = &base_protocol_events,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(base, scmi_base)
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(base, scmi_base)
|
||||||
|
|
|
@ -12,6 +12,9 @@
|
||||||
#include "protocols.h"
|
#include "protocols.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
|
||||||
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x20001
|
||||||
|
|
||||||
enum scmi_clock_protocol_cmd {
|
enum scmi_clock_protocol_cmd {
|
||||||
CLOCK_ATTRIBUTES = 0x3,
|
CLOCK_ATTRIBUTES = 0x3,
|
||||||
CLOCK_DESCRIBE_RATES = 0x4,
|
CLOCK_DESCRIBE_RATES = 0x4,
|
||||||
|
@ -25,8 +28,13 @@ enum scmi_clock_protocol_cmd {
|
||||||
CLOCK_POSSIBLE_PARENTS_GET = 0xC,
|
CLOCK_POSSIBLE_PARENTS_GET = 0xC,
|
||||||
CLOCK_PARENT_SET = 0xD,
|
CLOCK_PARENT_SET = 0xD,
|
||||||
CLOCK_PARENT_GET = 0xE,
|
CLOCK_PARENT_GET = 0xE,
|
||||||
|
CLOCK_GET_PERMISSIONS = 0xF,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define CLOCK_STATE_CONTROL_ALLOWED BIT(31)
|
||||||
|
#define CLOCK_PARENT_CONTROL_ALLOWED BIT(30)
|
||||||
|
#define CLOCK_RATE_CONTROL_ALLOWED BIT(29)
|
||||||
|
|
||||||
enum clk_state {
|
enum clk_state {
|
||||||
CLK_STATE_DISABLE,
|
CLK_STATE_DISABLE,
|
||||||
CLK_STATE_ENABLE,
|
CLK_STATE_ENABLE,
|
||||||
|
@ -46,6 +54,7 @@ struct scmi_msg_resp_clock_attributes {
|
||||||
#define SUPPORTS_RATE_CHANGE_REQUESTED_NOTIF(x) ((x) & BIT(30))
|
#define SUPPORTS_RATE_CHANGE_REQUESTED_NOTIF(x) ((x) & BIT(30))
|
||||||
#define SUPPORTS_EXTENDED_NAMES(x) ((x) & BIT(29))
|
#define SUPPORTS_EXTENDED_NAMES(x) ((x) & BIT(29))
|
||||||
#define SUPPORTS_PARENT_CLOCK(x) ((x) & BIT(28))
|
#define SUPPORTS_PARENT_CLOCK(x) ((x) & BIT(28))
|
||||||
|
#define SUPPORTS_GET_PERMISSIONS(x) ((x) & BIT(1))
|
||||||
u8 name[SCMI_SHORT_NAME_MAX_SIZE];
|
u8 name[SCMI_SHORT_NAME_MAX_SIZE];
|
||||||
__le32 clock_enable_latency;
|
__le32 clock_enable_latency;
|
||||||
};
|
};
|
||||||
|
@ -164,6 +173,15 @@ static enum scmi_clock_protocol_cmd evt_2_cmd[] = {
|
||||||
CLOCK_RATE_CHANGE_REQUESTED_NOTIFY,
|
CLOCK_RATE_CHANGE_REQUESTED_NOTIFY,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline struct scmi_clock_info *
|
||||||
|
scmi_clock_domain_lookup(struct clock_info *ci, u32 clk_id)
|
||||||
|
{
|
||||||
|
if (clk_id >= ci->num_clocks)
|
||||||
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
|
return ci->clk + clk_id;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
scmi_clock_protocol_attributes_get(const struct scmi_protocol_handle *ph,
|
scmi_clock_protocol_attributes_get(const struct scmi_protocol_handle *ph,
|
||||||
struct clock_info *ci)
|
struct clock_info *ci)
|
||||||
|
@ -281,6 +299,35 @@ static int scmi_clock_possible_parents(const struct scmi_protocol_handle *ph, u3
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
scmi_clock_get_permissions(const struct scmi_protocol_handle *ph, u32 clk_id,
|
||||||
|
struct scmi_clock_info *clk)
|
||||||
|
{
|
||||||
|
struct scmi_xfer *t;
|
||||||
|
u32 perm;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = ph->xops->xfer_get_init(ph, CLOCK_GET_PERMISSIONS,
|
||||||
|
sizeof(clk_id), sizeof(perm), &t);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
put_unaligned_le32(clk_id, t->tx.buf);
|
||||||
|
|
||||||
|
ret = ph->xops->do_xfer(ph, t);
|
||||||
|
if (!ret) {
|
||||||
|
perm = get_unaligned_le32(t->rx.buf);
|
||||||
|
|
||||||
|
clk->state_ctrl_forbidden = !(perm & CLOCK_STATE_CONTROL_ALLOWED);
|
||||||
|
clk->rate_ctrl_forbidden = !(perm & CLOCK_RATE_CONTROL_ALLOWED);
|
||||||
|
clk->parent_ctrl_forbidden = !(perm & CLOCK_PARENT_CONTROL_ALLOWED);
|
||||||
|
}
|
||||||
|
|
||||||
|
ph->xops->xfer_put(ph, t);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int scmi_clock_attributes_get(const struct scmi_protocol_handle *ph,
|
static int scmi_clock_attributes_get(const struct scmi_protocol_handle *ph,
|
||||||
u32 clk_id, struct scmi_clock_info *clk,
|
u32 clk_id, struct scmi_clock_info *clk,
|
||||||
u32 version)
|
u32 version)
|
||||||
|
@ -327,6 +374,8 @@ static int scmi_clock_attributes_get(const struct scmi_protocol_handle *ph,
|
||||||
clk->rate_change_requested_notifications = true;
|
clk->rate_change_requested_notifications = true;
|
||||||
if (SUPPORTS_PARENT_CLOCK(attributes))
|
if (SUPPORTS_PARENT_CLOCK(attributes))
|
||||||
scmi_clock_possible_parents(ph, clk_id, clk);
|
scmi_clock_possible_parents(ph, clk_id, clk);
|
||||||
|
if (SUPPORTS_GET_PERMISSIONS(attributes))
|
||||||
|
scmi_clock_get_permissions(ph, clk_id, clk);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -499,6 +548,14 @@ static int scmi_clock_rate_set(const struct scmi_protocol_handle *ph,
|
||||||
struct scmi_xfer *t;
|
struct scmi_xfer *t;
|
||||||
struct scmi_clock_set_rate *cfg;
|
struct scmi_clock_set_rate *cfg;
|
||||||
struct clock_info *ci = ph->get_priv(ph);
|
struct clock_info *ci = ph->get_priv(ph);
|
||||||
|
struct scmi_clock_info *clk;
|
||||||
|
|
||||||
|
clk = scmi_clock_domain_lookup(ci, clk_id);
|
||||||
|
if (IS_ERR(clk))
|
||||||
|
return PTR_ERR(clk);
|
||||||
|
|
||||||
|
if (clk->rate_ctrl_forbidden)
|
||||||
|
return -EACCES;
|
||||||
|
|
||||||
ret = ph->xops->xfer_get_init(ph, CLOCK_RATE_SET, sizeof(*cfg), 0, &t);
|
ret = ph->xops->xfer_get_init(ph, CLOCK_RATE_SET, sizeof(*cfg), 0, &t);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -577,14 +634,16 @@ scmi_clock_set_parent(const struct scmi_protocol_handle *ph, u32 clk_id,
|
||||||
struct clock_info *ci = ph->get_priv(ph);
|
struct clock_info *ci = ph->get_priv(ph);
|
||||||
struct scmi_clock_info *clk;
|
struct scmi_clock_info *clk;
|
||||||
|
|
||||||
if (clk_id >= ci->num_clocks)
|
clk = scmi_clock_domain_lookup(ci, clk_id);
|
||||||
return -EINVAL;
|
if (IS_ERR(clk))
|
||||||
|
return PTR_ERR(clk);
|
||||||
clk = ci->clk + clk_id;
|
|
||||||
|
|
||||||
if (parent_id >= clk->num_parents)
|
if (parent_id >= clk->num_parents)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (clk->parent_ctrl_forbidden)
|
||||||
|
return -EACCES;
|
||||||
|
|
||||||
ret = ph->xops->xfer_get_init(ph, CLOCK_PARENT_SET,
|
ret = ph->xops->xfer_get_init(ph, CLOCK_PARENT_SET,
|
||||||
sizeof(*cfg), 0, &t);
|
sizeof(*cfg), 0, &t);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -668,6 +727,14 @@ static int scmi_clock_enable(const struct scmi_protocol_handle *ph, u32 clk_id,
|
||||||
bool atomic)
|
bool atomic)
|
||||||
{
|
{
|
||||||
struct clock_info *ci = ph->get_priv(ph);
|
struct clock_info *ci = ph->get_priv(ph);
|
||||||
|
struct scmi_clock_info *clk;
|
||||||
|
|
||||||
|
clk = scmi_clock_domain_lookup(ci, clk_id);
|
||||||
|
if (IS_ERR(clk))
|
||||||
|
return PTR_ERR(clk);
|
||||||
|
|
||||||
|
if (clk->state_ctrl_forbidden)
|
||||||
|
return -EACCES;
|
||||||
|
|
||||||
return ci->clock_config_set(ph, clk_id, CLK_STATE_ENABLE,
|
return ci->clock_config_set(ph, clk_id, CLK_STATE_ENABLE,
|
||||||
NULL_OEM_TYPE, 0, atomic);
|
NULL_OEM_TYPE, 0, atomic);
|
||||||
|
@ -677,6 +744,14 @@ static int scmi_clock_disable(const struct scmi_protocol_handle *ph, u32 clk_id,
|
||||||
bool atomic)
|
bool atomic)
|
||||||
{
|
{
|
||||||
struct clock_info *ci = ph->get_priv(ph);
|
struct clock_info *ci = ph->get_priv(ph);
|
||||||
|
struct scmi_clock_info *clk;
|
||||||
|
|
||||||
|
clk = scmi_clock_domain_lookup(ci, clk_id);
|
||||||
|
if (IS_ERR(clk))
|
||||||
|
return PTR_ERR(clk);
|
||||||
|
|
||||||
|
if (clk->state_ctrl_forbidden)
|
||||||
|
return -EACCES;
|
||||||
|
|
||||||
return ci->clock_config_set(ph, clk_id, CLK_STATE_DISABLE,
|
return ci->clock_config_set(ph, clk_id, CLK_STATE_DISABLE,
|
||||||
NULL_OEM_TYPE, 0, atomic);
|
NULL_OEM_TYPE, 0, atomic);
|
||||||
|
@ -797,10 +872,10 @@ scmi_clock_info_get(const struct scmi_protocol_handle *ph, u32 clk_id)
|
||||||
struct scmi_clock_info *clk;
|
struct scmi_clock_info *clk;
|
||||||
struct clock_info *ci = ph->get_priv(ph);
|
struct clock_info *ci = ph->get_priv(ph);
|
||||||
|
|
||||||
if (clk_id >= ci->num_clocks)
|
clk = scmi_clock_domain_lookup(ci, clk_id);
|
||||||
|
if (IS_ERR(clk))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
clk = ci->clk + clk_id;
|
|
||||||
if (!clk->name[0])
|
if (!clk->name[0])
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -961,7 +1036,7 @@ static int scmi_clock_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
}
|
}
|
||||||
|
|
||||||
cinfo->version = version;
|
cinfo->version = version;
|
||||||
return ph->set_priv(ph, cinfo);
|
return ph->set_priv(ph, cinfo, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct scmi_protocol scmi_clock = {
|
static const struct scmi_protocol scmi_clock = {
|
||||||
|
@ -970,6 +1045,7 @@ static const struct scmi_protocol scmi_clock = {
|
||||||
.instance_init = &scmi_clock_protocol_init,
|
.instance_init = &scmi_clock_protocol_init,
|
||||||
.ops = &clk_proto_ops,
|
.ops = &clk_proto_ops,
|
||||||
.events = &clk_protocol_events,
|
.events = &clk_protocol_events,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(clock, scmi_clock)
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(clock, scmi_clock)
|
||||||
|
|
|
@ -315,6 +315,7 @@ void shmem_clear_channel(struct scmi_shared_mem __iomem *shmem);
|
||||||
bool shmem_poll_done(struct scmi_shared_mem __iomem *shmem,
|
bool shmem_poll_done(struct scmi_shared_mem __iomem *shmem,
|
||||||
struct scmi_xfer *xfer);
|
struct scmi_xfer *xfer);
|
||||||
bool shmem_channel_free(struct scmi_shared_mem __iomem *shmem);
|
bool shmem_channel_free(struct scmi_shared_mem __iomem *shmem);
|
||||||
|
bool shmem_channel_intr_enabled(struct scmi_shared_mem __iomem *shmem);
|
||||||
|
|
||||||
/* declarations for message passing transports */
|
/* declarations for message passing transports */
|
||||||
struct scmi_msg_payld;
|
struct scmi_msg_payld;
|
||||||
|
|
|
@ -85,6 +85,7 @@ struct scmi_xfers_info {
|
||||||
* @gid: A reference for per-protocol devres management.
|
* @gid: A reference for per-protocol devres management.
|
||||||
* @users: A refcount to track effective users of this protocol.
|
* @users: A refcount to track effective users of this protocol.
|
||||||
* @priv: Reference for optional protocol private data.
|
* @priv: Reference for optional protocol private data.
|
||||||
|
* @version: Protocol version supported by the platform as detected at runtime.
|
||||||
* @ph: An embedded protocol handle that will be passed down to protocol
|
* @ph: An embedded protocol handle that will be passed down to protocol
|
||||||
* initialization code to identify this instance.
|
* initialization code to identify this instance.
|
||||||
*
|
*
|
||||||
|
@ -97,6 +98,7 @@ struct scmi_protocol_instance {
|
||||||
void *gid;
|
void *gid;
|
||||||
refcount_t users;
|
refcount_t users;
|
||||||
void *priv;
|
void *priv;
|
||||||
|
unsigned int version;
|
||||||
struct scmi_protocol_handle ph;
|
struct scmi_protocol_handle ph;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1392,15 +1394,17 @@ static int version_get(const struct scmi_protocol_handle *ph, u32 *version)
|
||||||
*
|
*
|
||||||
* @ph: A reference to the protocol handle.
|
* @ph: A reference to the protocol handle.
|
||||||
* @priv: The private data to set.
|
* @priv: The private data to set.
|
||||||
|
* @version: The detected protocol version for the core to register.
|
||||||
*
|
*
|
||||||
* Return: 0 on Success
|
* Return: 0 on Success
|
||||||
*/
|
*/
|
||||||
static int scmi_set_protocol_priv(const struct scmi_protocol_handle *ph,
|
static int scmi_set_protocol_priv(const struct scmi_protocol_handle *ph,
|
||||||
void *priv)
|
void *priv, u32 version)
|
||||||
{
|
{
|
||||||
struct scmi_protocol_instance *pi = ph_to_pi(ph);
|
struct scmi_protocol_instance *pi = ph_to_pi(ph);
|
||||||
|
|
||||||
pi->priv = priv;
|
pi->priv = priv;
|
||||||
|
pi->version = version;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1477,6 +1481,20 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scmi_common_get_max_msg_size - Get maximum message size
|
||||||
|
* @ph: A protocol handle reference.
|
||||||
|
*
|
||||||
|
* Return: Maximum message size for the current protocol.
|
||||||
|
*/
|
||||||
|
static int scmi_common_get_max_msg_size(const struct scmi_protocol_handle *ph)
|
||||||
|
{
|
||||||
|
const struct scmi_protocol_instance *pi = ph_to_pi(ph);
|
||||||
|
struct scmi_info *info = handle_to_scmi_info(pi->handle);
|
||||||
|
|
||||||
|
return info->desc->max_msg_size;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct scmi_iterator - Iterator descriptor
|
* struct scmi_iterator - Iterator descriptor
|
||||||
* @msg: A reference to the message TX buffer; filled by @prepare_message with
|
* @msg: A reference to the message TX buffer; filled by @prepare_message with
|
||||||
|
@ -1752,6 +1770,7 @@ static void scmi_common_fastchannel_db_ring(struct scmi_fc_db_info *db)
|
||||||
|
|
||||||
static const struct scmi_proto_helpers_ops helpers_ops = {
|
static const struct scmi_proto_helpers_ops helpers_ops = {
|
||||||
.extended_name_get = scmi_common_extended_name_get,
|
.extended_name_get = scmi_common_extended_name_get,
|
||||||
|
.get_max_msg_size = scmi_common_get_max_msg_size,
|
||||||
.iter_response_init = scmi_iterator_init,
|
.iter_response_init = scmi_iterator_init,
|
||||||
.iter_response_run = scmi_iterator_run,
|
.iter_response_run = scmi_iterator_run,
|
||||||
.fastchannel_init = scmi_common_fastchannel_init,
|
.fastchannel_init = scmi_common_fastchannel_init,
|
||||||
|
@ -1849,6 +1868,12 @@ scmi_alloc_init_protocol_instance(struct scmi_info *info,
|
||||||
devres_close_group(handle->dev, pi->gid);
|
devres_close_group(handle->dev, pi->gid);
|
||||||
dev_dbg(handle->dev, "Initialized protocol: 0x%X\n", pi->proto->id);
|
dev_dbg(handle->dev, "Initialized protocol: 0x%X\n", pi->proto->id);
|
||||||
|
|
||||||
|
if (pi->version > proto->supported_version)
|
||||||
|
dev_warn(handle->dev,
|
||||||
|
"Detected UNSUPPORTED higher version 0x%X for protocol 0x%X."
|
||||||
|
"Backward compatibility is NOT assured.\n",
|
||||||
|
pi->version, pi->proto->id);
|
||||||
|
|
||||||
return pi;
|
return pi;
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@ -3026,6 +3051,7 @@ static int __init scmi_driver_init(void)
|
||||||
scmi_voltage_register();
|
scmi_voltage_register();
|
||||||
scmi_system_register();
|
scmi_system_register();
|
||||||
scmi_powercap_register();
|
scmi_powercap_register();
|
||||||
|
scmi_pinctrl_register();
|
||||||
|
|
||||||
return platform_driver_register(&scmi_driver);
|
return platform_driver_register(&scmi_driver);
|
||||||
}
|
}
|
||||||
|
@ -3043,6 +3069,7 @@ static void __exit scmi_driver_exit(void)
|
||||||
scmi_voltage_unregister();
|
scmi_voltage_unregister();
|
||||||
scmi_system_unregister();
|
scmi_system_unregister();
|
||||||
scmi_powercap_unregister();
|
scmi_powercap_unregister();
|
||||||
|
scmi_pinctrl_unregister();
|
||||||
|
|
||||||
scmi_transports_exit();
|
scmi_transports_exit();
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
* @cl: Mailbox Client
|
* @cl: Mailbox Client
|
||||||
* @chan: Transmit/Receive mailbox uni/bi-directional channel
|
* @chan: Transmit/Receive mailbox uni/bi-directional channel
|
||||||
* @chan_receiver: Optional Receiver mailbox unidirectional channel
|
* @chan_receiver: Optional Receiver mailbox unidirectional channel
|
||||||
|
* @chan_platform_receiver: Optional Platform Receiver mailbox unidirectional channel
|
||||||
* @cinfo: SCMI channel info
|
* @cinfo: SCMI channel info
|
||||||
* @shmem: Transmit/Receive shared memory area
|
* @shmem: Transmit/Receive shared memory area
|
||||||
*/
|
*/
|
||||||
|
@ -28,6 +29,7 @@ struct scmi_mailbox {
|
||||||
struct mbox_client cl;
|
struct mbox_client cl;
|
||||||
struct mbox_chan *chan;
|
struct mbox_chan *chan;
|
||||||
struct mbox_chan *chan_receiver;
|
struct mbox_chan *chan_receiver;
|
||||||
|
struct mbox_chan *chan_platform_receiver;
|
||||||
struct scmi_chan_info *cinfo;
|
struct scmi_chan_info *cinfo;
|
||||||
struct scmi_shared_mem __iomem *shmem;
|
struct scmi_shared_mem __iomem *shmem;
|
||||||
};
|
};
|
||||||
|
@ -88,6 +90,8 @@ static bool mailbox_chan_available(struct device_node *of_node, int idx)
|
||||||
* for replies on the a2p channel. Set as zero if not present.
|
* for replies on the a2p channel. Set as zero if not present.
|
||||||
* @p2a_chan: A reference to the optional p2a channel.
|
* @p2a_chan: A reference to the optional p2a channel.
|
||||||
* Set as zero if not present.
|
* Set as zero if not present.
|
||||||
|
* @p2a_rx_chan: A reference to the optional p2a completion channel.
|
||||||
|
* Set as zero if not present.
|
||||||
*
|
*
|
||||||
* At first, validate the transport configuration as described in terms of
|
* At first, validate the transport configuration as described in terms of
|
||||||
* 'mboxes' and 'shmem', then determin which mailbox channel indexes are
|
* 'mboxes' and 'shmem', then determin which mailbox channel indexes are
|
||||||
|
@ -95,8 +99,8 @@ static bool mailbox_chan_available(struct device_node *of_node, int idx)
|
||||||
*
|
*
|
||||||
* Return: 0 on Success or error
|
* Return: 0 on Success or error
|
||||||
*/
|
*/
|
||||||
static int mailbox_chan_validate(struct device *cdev,
|
static int mailbox_chan_validate(struct device *cdev, int *a2p_rx_chan,
|
||||||
int *a2p_rx_chan, int *p2a_chan)
|
int *p2a_chan, int *p2a_rx_chan)
|
||||||
{
|
{
|
||||||
int num_mb, num_sh, ret = 0;
|
int num_mb, num_sh, ret = 0;
|
||||||
struct device_node *np = cdev->of_node;
|
struct device_node *np = cdev->of_node;
|
||||||
|
@ -106,8 +110,9 @@ static int mailbox_chan_validate(struct device *cdev,
|
||||||
dev_dbg(cdev, "Found %d mboxes and %d shmems !\n", num_mb, num_sh);
|
dev_dbg(cdev, "Found %d mboxes and %d shmems !\n", num_mb, num_sh);
|
||||||
|
|
||||||
/* Bail out if mboxes and shmem descriptors are inconsistent */
|
/* Bail out if mboxes and shmem descriptors are inconsistent */
|
||||||
if (num_mb <= 0 || num_sh <= 0 || num_sh > 2 || num_mb > 3 ||
|
if (num_mb <= 0 || num_sh <= 0 || num_sh > 2 || num_mb > 4 ||
|
||||||
(num_mb == 1 && num_sh != 1) || (num_mb == 3 && num_sh != 2)) {
|
(num_mb == 1 && num_sh != 1) || (num_mb == 3 && num_sh != 2) ||
|
||||||
|
(num_mb == 4 && num_sh != 2)) {
|
||||||
dev_warn(cdev,
|
dev_warn(cdev,
|
||||||
"Invalid channel descriptor for '%s' - mbs:%d shm:%d\n",
|
"Invalid channel descriptor for '%s' - mbs:%d shm:%d\n",
|
||||||
of_node_full_name(np), num_mb, num_sh);
|
of_node_full_name(np), num_mb, num_sh);
|
||||||
|
@ -136,6 +141,7 @@ static int mailbox_chan_validate(struct device *cdev,
|
||||||
case 1:
|
case 1:
|
||||||
*a2p_rx_chan = 0;
|
*a2p_rx_chan = 0;
|
||||||
*p2a_chan = 0;
|
*p2a_chan = 0;
|
||||||
|
*p2a_rx_chan = 0;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (num_sh == 2) {
|
if (num_sh == 2) {
|
||||||
|
@ -145,10 +151,17 @@ static int mailbox_chan_validate(struct device *cdev,
|
||||||
*a2p_rx_chan = 1;
|
*a2p_rx_chan = 1;
|
||||||
*p2a_chan = 0;
|
*p2a_chan = 0;
|
||||||
}
|
}
|
||||||
|
*p2a_rx_chan = 0;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
*a2p_rx_chan = 1;
|
*a2p_rx_chan = 1;
|
||||||
*p2a_chan = 2;
|
*p2a_chan = 2;
|
||||||
|
*p2a_rx_chan = 0;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
*a2p_rx_chan = 1;
|
||||||
|
*p2a_chan = 2;
|
||||||
|
*p2a_rx_chan = 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,12 +176,12 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
|
||||||
struct device *cdev = cinfo->dev;
|
struct device *cdev = cinfo->dev;
|
||||||
struct scmi_mailbox *smbox;
|
struct scmi_mailbox *smbox;
|
||||||
struct device_node *shmem;
|
struct device_node *shmem;
|
||||||
int ret, a2p_rx_chan, p2a_chan, idx = tx ? 0 : 1;
|
int ret, a2p_rx_chan, p2a_chan, p2a_rx_chan, idx = tx ? 0 : 1;
|
||||||
struct mbox_client *cl;
|
struct mbox_client *cl;
|
||||||
resource_size_t size;
|
resource_size_t size;
|
||||||
struct resource res;
|
struct resource res;
|
||||||
|
|
||||||
ret = mailbox_chan_validate(cdev, &a2p_rx_chan, &p2a_chan);
|
ret = mailbox_chan_validate(cdev, &a2p_rx_chan, &p2a_chan, &p2a_rx_chan);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -226,6 +239,17 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!tx && p2a_rx_chan) {
|
||||||
|
smbox->chan_platform_receiver = mbox_request_channel(cl, p2a_rx_chan);
|
||||||
|
if (IS_ERR(smbox->chan_platform_receiver)) {
|
||||||
|
ret = PTR_ERR(smbox->chan_platform_receiver);
|
||||||
|
if (ret != -EPROBE_DEFER)
|
||||||
|
dev_err(cdev, "failed to request SCMI P2A Receiver mailbox\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
cinfo->transport_info = smbox;
|
cinfo->transport_info = smbox;
|
||||||
smbox->cinfo = cinfo;
|
smbox->cinfo = cinfo;
|
||||||
|
|
||||||
|
@ -240,9 +264,11 @@ static int mailbox_chan_free(int id, void *p, void *data)
|
||||||
if (smbox && !IS_ERR(smbox->chan)) {
|
if (smbox && !IS_ERR(smbox->chan)) {
|
||||||
mbox_free_channel(smbox->chan);
|
mbox_free_channel(smbox->chan);
|
||||||
mbox_free_channel(smbox->chan_receiver);
|
mbox_free_channel(smbox->chan_receiver);
|
||||||
|
mbox_free_channel(smbox->chan_platform_receiver);
|
||||||
cinfo->transport_info = NULL;
|
cinfo->transport_info = NULL;
|
||||||
smbox->chan = NULL;
|
smbox->chan = NULL;
|
||||||
smbox->chan_receiver = NULL;
|
smbox->chan_receiver = NULL;
|
||||||
|
smbox->chan_platform_receiver = NULL;
|
||||||
smbox->cinfo = NULL;
|
smbox->cinfo = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -297,8 +323,30 @@ static void mailbox_fetch_notification(struct scmi_chan_info *cinfo,
|
||||||
static void mailbox_clear_channel(struct scmi_chan_info *cinfo)
|
static void mailbox_clear_channel(struct scmi_chan_info *cinfo)
|
||||||
{
|
{
|
||||||
struct scmi_mailbox *smbox = cinfo->transport_info;
|
struct scmi_mailbox *smbox = cinfo->transport_info;
|
||||||
|
struct device *cdev = cinfo->dev;
|
||||||
|
struct mbox_chan *intr;
|
||||||
|
int ret;
|
||||||
|
|
||||||
shmem_clear_channel(smbox->shmem);
|
shmem_clear_channel(smbox->shmem);
|
||||||
|
|
||||||
|
if (!shmem_channel_intr_enabled(smbox->shmem))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (smbox->chan_platform_receiver)
|
||||||
|
intr = smbox->chan_platform_receiver;
|
||||||
|
else if (smbox->chan)
|
||||||
|
intr = smbox->chan;
|
||||||
|
else {
|
||||||
|
dev_err(cdev, "Channel INTR wrongly set?\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = mbox_send_message(intr, NULL);
|
||||||
|
/* mbox_send_message returns non-negative value on success, so reset */
|
||||||
|
if (ret > 0)
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
mbox_client_txdone(intr, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
|
|
@ -24,7 +24,10 @@
|
||||||
#include "protocols.h"
|
#include "protocols.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
|
||||||
#define MAX_OPPS 16
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x40000
|
||||||
|
|
||||||
|
#define MAX_OPPS 32
|
||||||
|
|
||||||
enum scmi_performance_protocol_cmd {
|
enum scmi_performance_protocol_cmd {
|
||||||
PERF_DOMAIN_ATTRIBUTES = 0x3,
|
PERF_DOMAIN_ATTRIBUTES = 0x3,
|
||||||
|
@ -1111,7 +1114,7 @@ static int scmi_perf_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
return ph->set_priv(ph, pinfo);
|
return ph->set_priv(ph, pinfo, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct scmi_protocol scmi_perf = {
|
static const struct scmi_protocol scmi_perf = {
|
||||||
|
@ -1120,6 +1123,7 @@ static const struct scmi_protocol scmi_perf = {
|
||||||
.instance_init = &scmi_perf_protocol_init,
|
.instance_init = &scmi_perf_protocol_init,
|
||||||
.ops = &perf_proto_ops,
|
.ops = &perf_proto_ops,
|
||||||
.events = &perf_protocol_events,
|
.events = &perf_protocol_events,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(perf, scmi_perf)
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(perf, scmi_perf)
|
||||||
|
|
916
drivers/firmware/arm_scmi/pinctrl.c
Normal file
916
drivers/firmware/arm_scmi/pinctrl.c
Normal file
|
@ -0,0 +1,916 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
/*
|
||||||
|
* System Control and Management Interface (SCMI) Pinctrl Protocol
|
||||||
|
*
|
||||||
|
* Copyright (C) 2024 EPAM
|
||||||
|
* Copyright 2024 NXP
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <asm/byteorder.h>
|
||||||
|
#include <linux/bits.h>
|
||||||
|
#include <linux/bitfield.h>
|
||||||
|
#include <linux/device.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/scmi_protocol.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
#include "protocols.h"
|
||||||
|
|
||||||
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x10000
|
||||||
|
|
||||||
|
#define GET_GROUPS_NR(x) le32_get_bits((x), GENMASK(31, 16))
|
||||||
|
#define GET_PINS_NR(x) le32_get_bits((x), GENMASK(15, 0))
|
||||||
|
#define GET_FUNCTIONS_NR(x) le32_get_bits((x), GENMASK(15, 0))
|
||||||
|
|
||||||
|
#define EXT_NAME_FLAG(x) le32_get_bits((x), BIT(31))
|
||||||
|
#define NUM_ELEMS(x) le32_get_bits((x), GENMASK(15, 0))
|
||||||
|
|
||||||
|
#define REMAINING(x) le32_get_bits((x), GENMASK(31, 16))
|
||||||
|
#define RETURNED(x) le32_get_bits((x), GENMASK(11, 0))
|
||||||
|
|
||||||
|
#define CONFIG_FLAG_MASK GENMASK(19, 18)
|
||||||
|
#define SELECTOR_MASK GENMASK(17, 16)
|
||||||
|
#define SKIP_CONFIGS_MASK GENMASK(15, 8)
|
||||||
|
#define CONFIG_TYPE_MASK GENMASK(7, 0)
|
||||||
|
|
||||||
|
enum scmi_pinctrl_protocol_cmd {
|
||||||
|
PINCTRL_ATTRIBUTES = 0x3,
|
||||||
|
PINCTRL_LIST_ASSOCIATIONS = 0x4,
|
||||||
|
PINCTRL_SETTINGS_GET = 0x5,
|
||||||
|
PINCTRL_SETTINGS_CONFIGURE = 0x6,
|
||||||
|
PINCTRL_REQUEST = 0x7,
|
||||||
|
PINCTRL_RELEASE = 0x8,
|
||||||
|
PINCTRL_NAME_GET = 0x9,
|
||||||
|
PINCTRL_SET_PERMISSIONS = 0xa,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_msg_settings_conf {
|
||||||
|
__le32 identifier;
|
||||||
|
__le32 function_id;
|
||||||
|
__le32 attributes;
|
||||||
|
__le32 configs[];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_msg_settings_get {
|
||||||
|
__le32 identifier;
|
||||||
|
__le32 attributes;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_resp_settings_get {
|
||||||
|
__le32 function_selected;
|
||||||
|
__le32 num_configs;
|
||||||
|
__le32 configs[];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_msg_pinctrl_protocol_attributes {
|
||||||
|
__le32 attributes_low;
|
||||||
|
__le32 attributes_high;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_msg_pinctrl_attributes {
|
||||||
|
__le32 identifier;
|
||||||
|
__le32 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_resp_pinctrl_attributes {
|
||||||
|
__le32 attributes;
|
||||||
|
u8 name[SCMI_SHORT_NAME_MAX_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_msg_pinctrl_list_assoc {
|
||||||
|
__le32 identifier;
|
||||||
|
__le32 flags;
|
||||||
|
__le32 index;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_resp_pinctrl_list_assoc {
|
||||||
|
__le32 flags;
|
||||||
|
__le16 array[];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_msg_request {
|
||||||
|
__le32 identifier;
|
||||||
|
__le32 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_group_info {
|
||||||
|
char name[SCMI_MAX_STR_SIZE];
|
||||||
|
bool present;
|
||||||
|
u32 *group_pins;
|
||||||
|
u32 nr_pins;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_function_info {
|
||||||
|
char name[SCMI_MAX_STR_SIZE];
|
||||||
|
bool present;
|
||||||
|
u32 *groups;
|
||||||
|
u32 nr_groups;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_pin_info {
|
||||||
|
char name[SCMI_MAX_STR_SIZE];
|
||||||
|
bool present;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct scmi_pinctrl_info {
|
||||||
|
u32 version;
|
||||||
|
int nr_groups;
|
||||||
|
int nr_functions;
|
||||||
|
int nr_pins;
|
||||||
|
struct scmi_group_info *groups;
|
||||||
|
struct scmi_function_info *functions;
|
||||||
|
struct scmi_pin_info *pins;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int scmi_pinctrl_attributes_get(const struct scmi_protocol_handle *ph,
|
||||||
|
struct scmi_pinctrl_info *pi)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct scmi_xfer *t;
|
||||||
|
struct scmi_msg_pinctrl_protocol_attributes *attr;
|
||||||
|
|
||||||
|
ret = ph->xops->xfer_get_init(ph, PROTOCOL_ATTRIBUTES, 0, sizeof(*attr), &t);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
attr = t->rx.buf;
|
||||||
|
|
||||||
|
ret = ph->xops->do_xfer(ph, t);
|
||||||
|
if (!ret) {
|
||||||
|
pi->nr_functions = GET_FUNCTIONS_NR(attr->attributes_high);
|
||||||
|
pi->nr_groups = GET_GROUPS_NR(attr->attributes_low);
|
||||||
|
pi->nr_pins = GET_PINS_NR(attr->attributes_low);
|
||||||
|
if (pi->nr_pins == 0) {
|
||||||
|
dev_warn(ph->dev, "returned zero pins\n");
|
||||||
|
ret = -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ph->xops->xfer_put(ph, t);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_count_get(const struct scmi_protocol_handle *ph,
|
||||||
|
enum scmi_pinctrl_selector_type type)
|
||||||
|
{
|
||||||
|
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case PIN_TYPE:
|
||||||
|
return pi->nr_pins;
|
||||||
|
case GROUP_TYPE:
|
||||||
|
return pi->nr_groups;
|
||||||
|
case FUNCTION_TYPE:
|
||||||
|
return pi->nr_functions;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_validate_id(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector,
|
||||||
|
enum scmi_pinctrl_selector_type type)
|
||||||
|
{
|
||||||
|
int value;
|
||||||
|
|
||||||
|
value = scmi_pinctrl_count_get(ph, type);
|
||||||
|
if (value < 0)
|
||||||
|
return value;
|
||||||
|
|
||||||
|
if (selector >= value || value == 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_attributes(const struct scmi_protocol_handle *ph,
|
||||||
|
enum scmi_pinctrl_selector_type type,
|
||||||
|
u32 selector, char *name,
|
||||||
|
u32 *n_elems)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct scmi_xfer *t;
|
||||||
|
struct scmi_msg_pinctrl_attributes *tx;
|
||||||
|
struct scmi_resp_pinctrl_attributes *rx;
|
||||||
|
bool ext_name_flag;
|
||||||
|
|
||||||
|
if (!name)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_validate_id(ph, selector, type);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = ph->xops->xfer_get_init(ph, PINCTRL_ATTRIBUTES, sizeof(*tx),
|
||||||
|
sizeof(*rx), &t);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
tx = t->tx.buf;
|
||||||
|
rx = t->rx.buf;
|
||||||
|
tx->identifier = cpu_to_le32(selector);
|
||||||
|
tx->flags = cpu_to_le32(type);
|
||||||
|
|
||||||
|
ret = ph->xops->do_xfer(ph, t);
|
||||||
|
if (!ret) {
|
||||||
|
if (n_elems)
|
||||||
|
*n_elems = NUM_ELEMS(rx->attributes);
|
||||||
|
|
||||||
|
strscpy(name, rx->name, SCMI_SHORT_NAME_MAX_SIZE);
|
||||||
|
|
||||||
|
ext_name_flag = !!EXT_NAME_FLAG(rx->attributes);
|
||||||
|
}
|
||||||
|
|
||||||
|
ph->xops->xfer_put(ph, t);
|
||||||
|
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
/*
|
||||||
|
* If supported overwrite short name with the extended one;
|
||||||
|
* on error just carry on and use already provided short name.
|
||||||
|
*/
|
||||||
|
if (ext_name_flag)
|
||||||
|
ret = ph->hops->extended_name_get(ph, PINCTRL_NAME_GET,
|
||||||
|
selector, (u32 *)&type, name,
|
||||||
|
SCMI_MAX_STR_SIZE);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct scmi_pinctrl_ipriv {
|
||||||
|
u32 selector;
|
||||||
|
enum scmi_pinctrl_selector_type type;
|
||||||
|
u32 *array;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void iter_pinctrl_assoc_prepare_message(void *message,
|
||||||
|
u32 desc_index,
|
||||||
|
const void *priv)
|
||||||
|
{
|
||||||
|
struct scmi_msg_pinctrl_list_assoc *msg = message;
|
||||||
|
const struct scmi_pinctrl_ipriv *p = priv;
|
||||||
|
|
||||||
|
msg->identifier = cpu_to_le32(p->selector);
|
||||||
|
msg->flags = cpu_to_le32(p->type);
|
||||||
|
msg->index = cpu_to_le32(desc_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int iter_pinctrl_assoc_update_state(struct scmi_iterator_state *st,
|
||||||
|
const void *response, void *priv)
|
||||||
|
{
|
||||||
|
const struct scmi_resp_pinctrl_list_assoc *r = response;
|
||||||
|
|
||||||
|
st->num_returned = RETURNED(r->flags);
|
||||||
|
st->num_remaining = REMAINING(r->flags);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
iter_pinctrl_assoc_process_response(const struct scmi_protocol_handle *ph,
|
||||||
|
const void *response,
|
||||||
|
struct scmi_iterator_state *st, void *priv)
|
||||||
|
{
|
||||||
|
const struct scmi_resp_pinctrl_list_assoc *r = response;
|
||||||
|
struct scmi_pinctrl_ipriv *p = priv;
|
||||||
|
|
||||||
|
p->array[st->desc_index + st->loop_idx] =
|
||||||
|
le16_to_cpu(r->array[st->loop_idx]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_list_associations(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector,
|
||||||
|
enum scmi_pinctrl_selector_type type,
|
||||||
|
u16 size, u32 *array)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
void *iter;
|
||||||
|
struct scmi_iterator_ops ops = {
|
||||||
|
.prepare_message = iter_pinctrl_assoc_prepare_message,
|
||||||
|
.update_state = iter_pinctrl_assoc_update_state,
|
||||||
|
.process_response = iter_pinctrl_assoc_process_response,
|
||||||
|
};
|
||||||
|
struct scmi_pinctrl_ipriv ipriv = {
|
||||||
|
.selector = selector,
|
||||||
|
.type = type,
|
||||||
|
.array = array,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!array || !size || type == PIN_TYPE)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_validate_id(ph, selector, type);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
iter = ph->hops->iter_response_init(ph, &ops, size,
|
||||||
|
PINCTRL_LIST_ASSOCIATIONS,
|
||||||
|
sizeof(struct scmi_msg_pinctrl_list_assoc),
|
||||||
|
&ipriv);
|
||||||
|
if (IS_ERR(iter))
|
||||||
|
return PTR_ERR(iter);
|
||||||
|
|
||||||
|
return ph->hops->iter_response_run(iter);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct scmi_settings_get_ipriv {
|
||||||
|
u32 selector;
|
||||||
|
enum scmi_pinctrl_selector_type type;
|
||||||
|
bool get_all;
|
||||||
|
unsigned int *nr_configs;
|
||||||
|
enum scmi_pinctrl_conf_type *config_types;
|
||||||
|
u32 *config_values;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
iter_pinctrl_settings_get_prepare_message(void *message, u32 desc_index,
|
||||||
|
const void *priv)
|
||||||
|
{
|
||||||
|
struct scmi_msg_settings_get *msg = message;
|
||||||
|
const struct scmi_settings_get_ipriv *p = priv;
|
||||||
|
u32 attributes;
|
||||||
|
|
||||||
|
attributes = FIELD_PREP(SELECTOR_MASK, p->type);
|
||||||
|
|
||||||
|
if (p->get_all) {
|
||||||
|
attributes |= FIELD_PREP(CONFIG_FLAG_MASK, 1) |
|
||||||
|
FIELD_PREP(SKIP_CONFIGS_MASK, desc_index);
|
||||||
|
} else {
|
||||||
|
attributes |= FIELD_PREP(CONFIG_TYPE_MASK, p->config_types[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
msg->attributes = cpu_to_le32(attributes);
|
||||||
|
msg->identifier = cpu_to_le32(p->selector);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
iter_pinctrl_settings_get_update_state(struct scmi_iterator_state *st,
|
||||||
|
const void *response, void *priv)
|
||||||
|
{
|
||||||
|
const struct scmi_resp_settings_get *r = response;
|
||||||
|
struct scmi_settings_get_ipriv *p = priv;
|
||||||
|
|
||||||
|
if (p->get_all) {
|
||||||
|
st->num_returned = le32_get_bits(r->num_configs, GENMASK(7, 0));
|
||||||
|
st->num_remaining = le32_get_bits(r->num_configs, GENMASK(31, 24));
|
||||||
|
} else {
|
||||||
|
st->num_returned = 1;
|
||||||
|
st->num_remaining = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
iter_pinctrl_settings_get_process_response(const struct scmi_protocol_handle *ph,
|
||||||
|
const void *response,
|
||||||
|
struct scmi_iterator_state *st,
|
||||||
|
void *priv)
|
||||||
|
{
|
||||||
|
const struct scmi_resp_settings_get *r = response;
|
||||||
|
struct scmi_settings_get_ipriv *p = priv;
|
||||||
|
u32 type = le32_get_bits(r->configs[st->loop_idx * 2], GENMASK(7, 0));
|
||||||
|
u32 val = le32_to_cpu(r->configs[st->loop_idx * 2 + 1]);
|
||||||
|
|
||||||
|
if (p->get_all) {
|
||||||
|
p->config_types[st->desc_index + st->loop_idx] = type;
|
||||||
|
} else {
|
||||||
|
if (p->config_types[0] != type)
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
p->config_values[st->desc_index + st->loop_idx] = val;
|
||||||
|
++*p->nr_configs;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
scmi_pinctrl_settings_get(const struct scmi_protocol_handle *ph, u32 selector,
|
||||||
|
enum scmi_pinctrl_selector_type type,
|
||||||
|
unsigned int *nr_configs,
|
||||||
|
enum scmi_pinctrl_conf_type *config_types,
|
||||||
|
u32 *config_values)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
void *iter;
|
||||||
|
unsigned int max_configs = *nr_configs;
|
||||||
|
struct scmi_iterator_ops ops = {
|
||||||
|
.prepare_message = iter_pinctrl_settings_get_prepare_message,
|
||||||
|
.update_state = iter_pinctrl_settings_get_update_state,
|
||||||
|
.process_response = iter_pinctrl_settings_get_process_response,
|
||||||
|
};
|
||||||
|
struct scmi_settings_get_ipriv ipriv = {
|
||||||
|
.selector = selector,
|
||||||
|
.type = type,
|
||||||
|
.get_all = (max_configs > 1),
|
||||||
|
.nr_configs = nr_configs,
|
||||||
|
.config_types = config_types,
|
||||||
|
.config_values = config_values,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!config_types || !config_values || type == FUNCTION_TYPE)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_validate_id(ph, selector, type);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
/* Prepare to count returned configs */
|
||||||
|
*nr_configs = 0;
|
||||||
|
iter = ph->hops->iter_response_init(ph, &ops, max_configs,
|
||||||
|
PINCTRL_SETTINGS_GET,
|
||||||
|
sizeof(struct scmi_msg_settings_get),
|
||||||
|
&ipriv);
|
||||||
|
if (IS_ERR(iter))
|
||||||
|
return PTR_ERR(iter);
|
||||||
|
|
||||||
|
return ph->hops->iter_response_run(iter);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_settings_get_one(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector,
|
||||||
|
enum scmi_pinctrl_selector_type type,
|
||||||
|
enum scmi_pinctrl_conf_type config_type,
|
||||||
|
u32 *config_value)
|
||||||
|
{
|
||||||
|
unsigned int nr_configs = 1;
|
||||||
|
|
||||||
|
return scmi_pinctrl_settings_get(ph, selector, type, &nr_configs,
|
||||||
|
&config_type, config_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_settings_get_all(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector,
|
||||||
|
enum scmi_pinctrl_selector_type type,
|
||||||
|
unsigned int *nr_configs,
|
||||||
|
enum scmi_pinctrl_conf_type *config_types,
|
||||||
|
u32 *config_values)
|
||||||
|
{
|
||||||
|
if (!nr_configs || *nr_configs == 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return scmi_pinctrl_settings_get(ph, selector, type, nr_configs,
|
||||||
|
config_types, config_values);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
scmi_pinctrl_settings_conf(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector,
|
||||||
|
enum scmi_pinctrl_selector_type type,
|
||||||
|
u32 nr_configs,
|
||||||
|
enum scmi_pinctrl_conf_type *config_type,
|
||||||
|
u32 *config_value)
|
||||||
|
{
|
||||||
|
struct scmi_xfer *t;
|
||||||
|
struct scmi_msg_settings_conf *tx;
|
||||||
|
u32 attributes;
|
||||||
|
int ret, i;
|
||||||
|
u32 configs_in_chunk, conf_num = 0;
|
||||||
|
u32 chunk;
|
||||||
|
int max_msg_size = ph->hops->get_max_msg_size(ph);
|
||||||
|
|
||||||
|
if (!config_type || !config_value || type == FUNCTION_TYPE)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_validate_id(ph, selector, type);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
configs_in_chunk = (max_msg_size - sizeof(*tx)) / (sizeof(__le32) * 2);
|
||||||
|
while (conf_num < nr_configs) {
|
||||||
|
chunk = (nr_configs - conf_num > configs_in_chunk) ?
|
||||||
|
configs_in_chunk : nr_configs - conf_num;
|
||||||
|
|
||||||
|
ret = ph->xops->xfer_get_init(ph, PINCTRL_SETTINGS_CONFIGURE,
|
||||||
|
sizeof(*tx) +
|
||||||
|
chunk * 2 * sizeof(__le32), 0, &t);
|
||||||
|
if (ret)
|
||||||
|
break;
|
||||||
|
|
||||||
|
tx = t->tx.buf;
|
||||||
|
tx->identifier = cpu_to_le32(selector);
|
||||||
|
tx->function_id = cpu_to_le32(0xFFFFFFFF);
|
||||||
|
attributes = FIELD_PREP(GENMASK(1, 0), type) |
|
||||||
|
FIELD_PREP(GENMASK(9, 2), chunk);
|
||||||
|
tx->attributes = cpu_to_le32(attributes);
|
||||||
|
|
||||||
|
for (i = 0; i < chunk; i++) {
|
||||||
|
tx->configs[i * 2] =
|
||||||
|
cpu_to_le32(config_type[conf_num + i]);
|
||||||
|
tx->configs[i * 2 + 1] =
|
||||||
|
cpu_to_le32(config_value[conf_num + i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = ph->xops->do_xfer(ph, t);
|
||||||
|
|
||||||
|
ph->xops->xfer_put(ph, t);
|
||||||
|
|
||||||
|
if (ret)
|
||||||
|
break;
|
||||||
|
|
||||||
|
conf_num += chunk;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_function_select(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 group,
|
||||||
|
enum scmi_pinctrl_selector_type type,
|
||||||
|
u32 function_id)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct scmi_xfer *t;
|
||||||
|
struct scmi_msg_settings_conf *tx;
|
||||||
|
u32 attributes;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_validate_id(ph, group, type);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = ph->xops->xfer_get_init(ph, PINCTRL_SETTINGS_CONFIGURE,
|
||||||
|
sizeof(*tx), 0, &t);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
tx = t->tx.buf;
|
||||||
|
tx->identifier = cpu_to_le32(group);
|
||||||
|
tx->function_id = cpu_to_le32(function_id);
|
||||||
|
attributes = FIELD_PREP(GENMASK(1, 0), type) | BIT(10);
|
||||||
|
tx->attributes = cpu_to_le32(attributes);
|
||||||
|
|
||||||
|
ret = ph->xops->do_xfer(ph, t);
|
||||||
|
ph->xops->xfer_put(ph, t);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_request_free(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 identifier,
|
||||||
|
enum scmi_pinctrl_selector_type type,
|
||||||
|
enum scmi_pinctrl_protocol_cmd cmd)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct scmi_xfer *t;
|
||||||
|
struct scmi_msg_request *tx;
|
||||||
|
|
||||||
|
if (type == FUNCTION_TYPE)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (cmd != PINCTRL_REQUEST && cmd != PINCTRL_RELEASE)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_validate_id(ph, identifier, type);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = ph->xops->xfer_get_init(ph, cmd, sizeof(*tx), 0, &t);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
tx = t->tx.buf;
|
||||||
|
tx->identifier = cpu_to_le32(identifier);
|
||||||
|
tx->flags = cpu_to_le32(type);
|
||||||
|
|
||||||
|
ret = ph->xops->do_xfer(ph, t);
|
||||||
|
ph->xops->xfer_put(ph, t);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_pin_request(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 pin)
|
||||||
|
{
|
||||||
|
return scmi_pinctrl_request_free(ph, pin, PIN_TYPE, PINCTRL_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_pin_free(const struct scmi_protocol_handle *ph, u32 pin)
|
||||||
|
{
|
||||||
|
return scmi_pinctrl_request_free(ph, pin, PIN_TYPE, PINCTRL_RELEASE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_get_group_info(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector,
|
||||||
|
struct scmi_group_info *group)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_attributes(ph, GROUP_TYPE, selector, group->name,
|
||||||
|
&group->nr_pins);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
if (!group->nr_pins) {
|
||||||
|
dev_err(ph->dev, "Group %d has 0 elements", selector);
|
||||||
|
return -ENODATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
group->group_pins = kmalloc_array(group->nr_pins,
|
||||||
|
sizeof(*group->group_pins),
|
||||||
|
GFP_KERNEL);
|
||||||
|
if (!group->group_pins)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_list_associations(ph, selector, GROUP_TYPE,
|
||||||
|
group->nr_pins, group->group_pins);
|
||||||
|
if (ret) {
|
||||||
|
kfree(group->group_pins);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
group->present = true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_get_group_name(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector, const char **name)
|
||||||
|
{
|
||||||
|
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
|
||||||
|
|
||||||
|
if (!name)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (selector >= pi->nr_groups || pi->nr_groups == 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!pi->groups[selector].present) {
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_get_group_info(ph, selector,
|
||||||
|
&pi->groups[selector]);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*name = pi->groups[selector].name;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_group_pins_get(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector, const u32 **pins,
|
||||||
|
u32 *nr_pins)
|
||||||
|
{
|
||||||
|
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
|
||||||
|
|
||||||
|
if (!pins || !nr_pins)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (selector >= pi->nr_groups || pi->nr_groups == 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!pi->groups[selector].present) {
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_get_group_info(ph, selector,
|
||||||
|
&pi->groups[selector]);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*pins = pi->groups[selector].group_pins;
|
||||||
|
*nr_pins = pi->groups[selector].nr_pins;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_get_function_info(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector,
|
||||||
|
struct scmi_function_info *func)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_attributes(ph, FUNCTION_TYPE, selector, func->name,
|
||||||
|
&func->nr_groups);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
if (!func->nr_groups) {
|
||||||
|
dev_err(ph->dev, "Function %d has 0 elements", selector);
|
||||||
|
return -ENODATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
func->groups = kmalloc_array(func->nr_groups, sizeof(*func->groups),
|
||||||
|
GFP_KERNEL);
|
||||||
|
if (!func->groups)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_list_associations(ph, selector, FUNCTION_TYPE,
|
||||||
|
func->nr_groups, func->groups);
|
||||||
|
if (ret) {
|
||||||
|
kfree(func->groups);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
func->present = true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_get_function_name(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector, const char **name)
|
||||||
|
{
|
||||||
|
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
|
||||||
|
|
||||||
|
if (!name)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (selector >= pi->nr_functions || pi->nr_functions == 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!pi->functions[selector].present) {
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_get_function_info(ph, selector,
|
||||||
|
&pi->functions[selector]);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*name = pi->functions[selector].name;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
scmi_pinctrl_function_groups_get(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector, u32 *nr_groups,
|
||||||
|
const u32 **groups)
|
||||||
|
{
|
||||||
|
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
|
||||||
|
|
||||||
|
if (!groups || !nr_groups)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (selector >= pi->nr_functions || pi->nr_functions == 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!pi->functions[selector].present) {
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_get_function_info(ph, selector,
|
||||||
|
&pi->functions[selector]);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*groups = pi->functions[selector].groups;
|
||||||
|
*nr_groups = pi->functions[selector].nr_groups;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_mux_set(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector, u32 group)
|
||||||
|
{
|
||||||
|
return scmi_pinctrl_function_select(ph, group, GROUP_TYPE, selector);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_get_pin_info(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector, struct scmi_pin_info *pin)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!pin)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_attributes(ph, PIN_TYPE, selector, pin->name, NULL);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
pin->present = true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_get_pin_name(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector, const char **name)
|
||||||
|
{
|
||||||
|
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
|
||||||
|
|
||||||
|
if (!name)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (selector >= pi->nr_pins)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!pi->pins[selector].present) {
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_get_pin_info(ph, selector, &pi->pins[selector]);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
*name = pi->pins[selector].name;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_name_get(const struct scmi_protocol_handle *ph,
|
||||||
|
u32 selector,
|
||||||
|
enum scmi_pinctrl_selector_type type,
|
||||||
|
const char **name)
|
||||||
|
{
|
||||||
|
switch (type) {
|
||||||
|
case PIN_TYPE:
|
||||||
|
return scmi_pinctrl_get_pin_name(ph, selector, name);
|
||||||
|
case GROUP_TYPE:
|
||||||
|
return scmi_pinctrl_get_group_name(ph, selector, name);
|
||||||
|
case FUNCTION_TYPE:
|
||||||
|
return scmi_pinctrl_get_function_name(ph, selector, name);
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct scmi_pinctrl_proto_ops pinctrl_proto_ops = {
|
||||||
|
.count_get = scmi_pinctrl_count_get,
|
||||||
|
.name_get = scmi_pinctrl_name_get,
|
||||||
|
.group_pins_get = scmi_pinctrl_group_pins_get,
|
||||||
|
.function_groups_get = scmi_pinctrl_function_groups_get,
|
||||||
|
.mux_set = scmi_pinctrl_mux_set,
|
||||||
|
.settings_get_one = scmi_pinctrl_settings_get_one,
|
||||||
|
.settings_get_all = scmi_pinctrl_settings_get_all,
|
||||||
|
.settings_conf = scmi_pinctrl_settings_conf,
|
||||||
|
.pin_request = scmi_pinctrl_pin_request,
|
||||||
|
.pin_free = scmi_pinctrl_pin_free,
|
||||||
|
};
|
||||||
|
|
||||||
|
static int scmi_pinctrl_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
u32 version;
|
||||||
|
struct scmi_pinctrl_info *pinfo;
|
||||||
|
|
||||||
|
ret = ph->xops->version_get(ph, &version);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
dev_dbg(ph->dev, "Pinctrl Version %d.%d\n",
|
||||||
|
PROTOCOL_REV_MAJOR(version), PROTOCOL_REV_MINOR(version));
|
||||||
|
|
||||||
|
pinfo = devm_kzalloc(ph->dev, sizeof(*pinfo), GFP_KERNEL);
|
||||||
|
if (!pinfo)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
ret = scmi_pinctrl_attributes_get(ph, pinfo);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
pinfo->pins = devm_kcalloc(ph->dev, pinfo->nr_pins,
|
||||||
|
sizeof(*pinfo->pins), GFP_KERNEL);
|
||||||
|
if (!pinfo->pins)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
pinfo->groups = devm_kcalloc(ph->dev, pinfo->nr_groups,
|
||||||
|
sizeof(*pinfo->groups), GFP_KERNEL);
|
||||||
|
if (!pinfo->groups)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
pinfo->functions = devm_kcalloc(ph->dev, pinfo->nr_functions,
|
||||||
|
sizeof(*pinfo->functions), GFP_KERNEL);
|
||||||
|
if (!pinfo->functions)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
pinfo->version = version;
|
||||||
|
|
||||||
|
return ph->set_priv(ph, pinfo, version);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int scmi_pinctrl_protocol_deinit(const struct scmi_protocol_handle *ph)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
struct scmi_pinctrl_info *pi = ph->get_priv(ph);
|
||||||
|
|
||||||
|
/* Free groups_pins allocated in scmi_pinctrl_get_group_info */
|
||||||
|
for (i = 0; i < pi->nr_groups; i++) {
|
||||||
|
if (pi->groups[i].present) {
|
||||||
|
kfree(pi->groups[i].group_pins);
|
||||||
|
pi->groups[i].present = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Free groups allocated in scmi_pinctrl_get_function_info */
|
||||||
|
for (i = 0; i < pi->nr_functions; i++) {
|
||||||
|
if (pi->functions[i].present) {
|
||||||
|
kfree(pi->functions[i].groups);
|
||||||
|
pi->functions[i].present = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct scmi_protocol scmi_pinctrl = {
|
||||||
|
.id = SCMI_PROTOCOL_PINCTRL,
|
||||||
|
.owner = THIS_MODULE,
|
||||||
|
.instance_init = &scmi_pinctrl_protocol_init,
|
||||||
|
.instance_deinit = &scmi_pinctrl_protocol_deinit,
|
||||||
|
.ops = &pinctrl_proto_ops,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
|
};
|
||||||
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(pinctrl, scmi_pinctrl)
|
|
@ -13,6 +13,9 @@
|
||||||
#include "protocols.h"
|
#include "protocols.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
|
||||||
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x30000
|
||||||
|
|
||||||
enum scmi_power_protocol_cmd {
|
enum scmi_power_protocol_cmd {
|
||||||
POWER_DOMAIN_ATTRIBUTES = 0x3,
|
POWER_DOMAIN_ATTRIBUTES = 0x3,
|
||||||
POWER_STATE_SET = 0x4,
|
POWER_STATE_SET = 0x4,
|
||||||
|
@ -328,7 +331,7 @@ static int scmi_power_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
|
|
||||||
pinfo->version = version;
|
pinfo->version = version;
|
||||||
|
|
||||||
return ph->set_priv(ph, pinfo);
|
return ph->set_priv(ph, pinfo, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct scmi_protocol scmi_power = {
|
static const struct scmi_protocol scmi_power = {
|
||||||
|
@ -337,6 +340,7 @@ static const struct scmi_protocol scmi_power = {
|
||||||
.instance_init = &scmi_power_protocol_init,
|
.instance_init = &scmi_power_protocol_init,
|
||||||
.ops = &power_proto_ops,
|
.ops = &power_proto_ops,
|
||||||
.events = &power_protocol_events,
|
.events = &power_protocol_events,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(power, scmi_power)
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(power, scmi_power)
|
||||||
|
|
|
@ -17,6 +17,9 @@
|
||||||
#include "protocols.h"
|
#include "protocols.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
|
||||||
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x20000
|
||||||
|
|
||||||
enum scmi_powercap_protocol_cmd {
|
enum scmi_powercap_protocol_cmd {
|
||||||
POWERCAP_DOMAIN_ATTRIBUTES = 0x3,
|
POWERCAP_DOMAIN_ATTRIBUTES = 0x3,
|
||||||
POWERCAP_CAP_GET = 0x4,
|
POWERCAP_CAP_GET = 0x4,
|
||||||
|
@ -975,7 +978,7 @@ scmi_powercap_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
}
|
}
|
||||||
|
|
||||||
pinfo->version = version;
|
pinfo->version = version;
|
||||||
return ph->set_priv(ph, pinfo);
|
return ph->set_priv(ph, pinfo, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct scmi_protocol scmi_powercap = {
|
static const struct scmi_protocol scmi_powercap = {
|
||||||
|
@ -984,6 +987,7 @@ static const struct scmi_protocol scmi_powercap = {
|
||||||
.instance_init = &scmi_powercap_protocol_init,
|
.instance_init = &scmi_powercap_protocol_init,
|
||||||
.ops = &powercap_proto_ops,
|
.ops = &powercap_proto_ops,
|
||||||
.events = &powercap_protocol_events,
|
.events = &powercap_protocol_events,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(powercap, scmi_powercap)
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(powercap, scmi_powercap)
|
||||||
|
|
|
@ -174,7 +174,8 @@ struct scmi_protocol_handle {
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
const struct scmi_xfer_ops *xops;
|
const struct scmi_xfer_ops *xops;
|
||||||
const struct scmi_proto_helpers_ops *hops;
|
const struct scmi_proto_helpers_ops *hops;
|
||||||
int (*set_priv)(const struct scmi_protocol_handle *ph, void *priv);
|
int (*set_priv)(const struct scmi_protocol_handle *ph, void *priv,
|
||||||
|
u32 version);
|
||||||
void *(*get_priv)(const struct scmi_protocol_handle *ph);
|
void *(*get_priv)(const struct scmi_protocol_handle *ph);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -253,6 +254,7 @@ struct scmi_fc_info {
|
||||||
* @fastchannel_init: A common helper used to initialize FC descriptors by
|
* @fastchannel_init: A common helper used to initialize FC descriptors by
|
||||||
* gathering FC descriptions from the SCMI platform server.
|
* gathering FC descriptions from the SCMI platform server.
|
||||||
* @fastchannel_db_ring: A common helper to ring a FC doorbell.
|
* @fastchannel_db_ring: A common helper to ring a FC doorbell.
|
||||||
|
* @get_max_msg_size: A common helper to get the maximum message size.
|
||||||
*/
|
*/
|
||||||
struct scmi_proto_helpers_ops {
|
struct scmi_proto_helpers_ops {
|
||||||
int (*extended_name_get)(const struct scmi_protocol_handle *ph,
|
int (*extended_name_get)(const struct scmi_protocol_handle *ph,
|
||||||
|
@ -269,6 +271,7 @@ struct scmi_proto_helpers_ops {
|
||||||
void __iomem **p_addr,
|
void __iomem **p_addr,
|
||||||
struct scmi_fc_db_info **p_db);
|
struct scmi_fc_db_info **p_db);
|
||||||
void (*fastchannel_db_ring)(struct scmi_fc_db_info *db);
|
void (*fastchannel_db_ring)(struct scmi_fc_db_info *db);
|
||||||
|
int (*get_max_msg_size)(const struct scmi_protocol_handle *ph);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -311,6 +314,10 @@ typedef int (*scmi_prot_init_ph_fn_t)(const struct scmi_protocol_handle *);
|
||||||
* @ops: Optional reference to the operations provided by the protocol and
|
* @ops: Optional reference to the operations provided by the protocol and
|
||||||
* exposed in scmi_protocol.h.
|
* exposed in scmi_protocol.h.
|
||||||
* @events: An optional reference to the events supported by this protocol.
|
* @events: An optional reference to the events supported by this protocol.
|
||||||
|
* @supported_version: The highest version currently supported for this
|
||||||
|
* protocol by the agent. Each protocol implementation
|
||||||
|
* in the agent is supposed to downgrade to match the
|
||||||
|
* protocol version supported by the platform.
|
||||||
*/
|
*/
|
||||||
struct scmi_protocol {
|
struct scmi_protocol {
|
||||||
const u8 id;
|
const u8 id;
|
||||||
|
@ -319,6 +326,7 @@ struct scmi_protocol {
|
||||||
const scmi_prot_init_ph_fn_t instance_deinit;
|
const scmi_prot_init_ph_fn_t instance_deinit;
|
||||||
const void *ops;
|
const void *ops;
|
||||||
const struct scmi_protocol_events *events;
|
const struct scmi_protocol_events *events;
|
||||||
|
unsigned int supported_version;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(name, proto) \
|
#define DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(name, proto) \
|
||||||
|
@ -340,6 +348,7 @@ void __exit scmi_##name##_unregister(void) \
|
||||||
DECLARE_SCMI_REGISTER_UNREGISTER(base);
|
DECLARE_SCMI_REGISTER_UNREGISTER(base);
|
||||||
DECLARE_SCMI_REGISTER_UNREGISTER(clock);
|
DECLARE_SCMI_REGISTER_UNREGISTER(clock);
|
||||||
DECLARE_SCMI_REGISTER_UNREGISTER(perf);
|
DECLARE_SCMI_REGISTER_UNREGISTER(perf);
|
||||||
|
DECLARE_SCMI_REGISTER_UNREGISTER(pinctrl);
|
||||||
DECLARE_SCMI_REGISTER_UNREGISTER(power);
|
DECLARE_SCMI_REGISTER_UNREGISTER(power);
|
||||||
DECLARE_SCMI_REGISTER_UNREGISTER(reset);
|
DECLARE_SCMI_REGISTER_UNREGISTER(reset);
|
||||||
DECLARE_SCMI_REGISTER_UNREGISTER(sensors);
|
DECLARE_SCMI_REGISTER_UNREGISTER(sensors);
|
||||||
|
|
|
@ -13,6 +13,9 @@
|
||||||
#include "protocols.h"
|
#include "protocols.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
|
||||||
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x30000
|
||||||
|
|
||||||
enum scmi_reset_protocol_cmd {
|
enum scmi_reset_protocol_cmd {
|
||||||
RESET_DOMAIN_ATTRIBUTES = 0x3,
|
RESET_DOMAIN_ATTRIBUTES = 0x3,
|
||||||
RESET = 0x4,
|
RESET = 0x4,
|
||||||
|
@ -343,7 +346,7 @@ static int scmi_reset_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
}
|
}
|
||||||
|
|
||||||
pinfo->version = version;
|
pinfo->version = version;
|
||||||
return ph->set_priv(ph, pinfo);
|
return ph->set_priv(ph, pinfo, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct scmi_protocol scmi_reset = {
|
static const struct scmi_protocol scmi_reset = {
|
||||||
|
@ -352,6 +355,7 @@ static const struct scmi_protocol scmi_reset = {
|
||||||
.instance_init = &scmi_reset_protocol_init,
|
.instance_init = &scmi_reset_protocol_init,
|
||||||
.ops = &reset_proto_ops,
|
.ops = &reset_proto_ops,
|
||||||
.events = &reset_protocol_events,
|
.events = &reset_protocol_events,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(reset, scmi_reset)
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(reset, scmi_reset)
|
||||||
|
|
|
@ -14,6 +14,9 @@
|
||||||
#include "protocols.h"
|
#include "protocols.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
|
||||||
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x30000
|
||||||
|
|
||||||
#define SCMI_MAX_NUM_SENSOR_AXIS 63
|
#define SCMI_MAX_NUM_SENSOR_AXIS 63
|
||||||
#define SCMIv2_SENSOR_PROTOCOL 0x10000
|
#define SCMIv2_SENSOR_PROTOCOL 0x10000
|
||||||
|
|
||||||
|
@ -1138,7 +1141,7 @@ static int scmi_sensors_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
return ph->set_priv(ph, sinfo);
|
return ph->set_priv(ph, sinfo, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct scmi_protocol scmi_sensors = {
|
static const struct scmi_protocol scmi_sensors = {
|
||||||
|
@ -1147,6 +1150,7 @@ static const struct scmi_protocol scmi_sensors = {
|
||||||
.instance_init = &scmi_sensors_protocol_init,
|
.instance_init = &scmi_sensors_protocol_init,
|
||||||
.ops = &sensor_proto_ops,
|
.ops = &sensor_proto_ops,
|
||||||
.events = &sensor_protocol_events,
|
.events = &sensor_protocol_events,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(sensors, scmi_sensors)
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(sensors, scmi_sensors)
|
||||||
|
|
|
@ -128,3 +128,8 @@ bool shmem_channel_free(struct scmi_shared_mem __iomem *shmem)
|
||||||
return (ioread32(&shmem->channel_status) &
|
return (ioread32(&shmem->channel_status) &
|
||||||
SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE);
|
SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool shmem_channel_intr_enabled(struct scmi_shared_mem __iomem *shmem)
|
||||||
|
{
|
||||||
|
return ioread32(&shmem->flags) & SCMI_SHMEM_FLAG_INTR_ENABLED;
|
||||||
|
}
|
||||||
|
|
|
@ -13,6 +13,9 @@
|
||||||
#include "protocols.h"
|
#include "protocols.h"
|
||||||
#include "notify.h"
|
#include "notify.h"
|
||||||
|
|
||||||
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x20000
|
||||||
|
|
||||||
#define SCMI_SYSTEM_NUM_SOURCES 1
|
#define SCMI_SYSTEM_NUM_SOURCES 1
|
||||||
|
|
||||||
enum scmi_system_protocol_cmd {
|
enum scmi_system_protocol_cmd {
|
||||||
|
@ -144,7 +147,7 @@ static int scmi_system_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
if (PROTOCOL_REV_MAJOR(pinfo->version) >= 0x2)
|
if (PROTOCOL_REV_MAJOR(pinfo->version) >= 0x2)
|
||||||
pinfo->graceful_timeout_supported = true;
|
pinfo->graceful_timeout_supported = true;
|
||||||
|
|
||||||
return ph->set_priv(ph, pinfo);
|
return ph->set_priv(ph, pinfo, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct scmi_protocol scmi_system = {
|
static const struct scmi_protocol scmi_system = {
|
||||||
|
@ -153,6 +156,7 @@ static const struct scmi_protocol scmi_system = {
|
||||||
.instance_init = &scmi_system_protocol_init,
|
.instance_init = &scmi_system_protocol_init,
|
||||||
.ops = NULL,
|
.ops = NULL,
|
||||||
.events = &system_protocol_events,
|
.events = &system_protocol_events,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(system, scmi_system)
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(system, scmi_system)
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
|
|
||||||
#include "protocols.h"
|
#include "protocols.h"
|
||||||
|
|
||||||
|
/* Updated only after ALL the mandatory features for that version are merged */
|
||||||
|
#define SCMI_PROTOCOL_SUPPORTED_VERSION 0x20000
|
||||||
|
|
||||||
#define VOLTAGE_DOMS_NUM_MASK GENMASK(15, 0)
|
#define VOLTAGE_DOMS_NUM_MASK GENMASK(15, 0)
|
||||||
#define REMAINING_LEVELS_MASK GENMASK(31, 16)
|
#define REMAINING_LEVELS_MASK GENMASK(31, 16)
|
||||||
#define RETURNED_LEVELS_MASK GENMASK(11, 0)
|
#define RETURNED_LEVELS_MASK GENMASK(11, 0)
|
||||||
|
@ -432,7 +435,7 @@ static int scmi_voltage_protocol_init(const struct scmi_protocol_handle *ph)
|
||||||
dev_warn(ph->dev, "No Voltage domains found.\n");
|
dev_warn(ph->dev, "No Voltage domains found.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return ph->set_priv(ph, vinfo);
|
return ph->set_priv(ph, vinfo, version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct scmi_protocol scmi_voltage = {
|
static const struct scmi_protocol scmi_voltage = {
|
||||||
|
@ -440,6 +443,7 @@ static const struct scmi_protocol scmi_voltage = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.instance_init = &scmi_voltage_protocol_init,
|
.instance_init = &scmi_voltage_protocol_init,
|
||||||
.ops = &voltage_proto_ops,
|
.ops = &voltage_proto_ops,
|
||||||
|
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(voltage, scmi_voltage)
|
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(voltage, scmi_voltage)
|
||||||
|
|
|
@ -302,6 +302,34 @@ void __hwspin_unlock(struct hwspinlock *hwlock, int mode, unsigned long *flags)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(__hwspin_unlock);
|
EXPORT_SYMBOL_GPL(__hwspin_unlock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hwspin_lock_bust() - bust a specific hwspinlock
|
||||||
|
* @hwlock: a previously-acquired hwspinlock which we want to bust
|
||||||
|
* @id: identifier of the remote lock holder, if applicable
|
||||||
|
*
|
||||||
|
* This function will bust a hwspinlock that was previously acquired as
|
||||||
|
* long as the current owner of the lock matches the id given by the caller.
|
||||||
|
*
|
||||||
|
* Context: Process context.
|
||||||
|
*
|
||||||
|
* Returns: 0 on success, or -EINVAL if the hwspinlock does not exist, or
|
||||||
|
* the bust operation fails, and -EOPNOTSUPP if the bust operation is not
|
||||||
|
* defined for the hwspinlock.
|
||||||
|
*/
|
||||||
|
int hwspin_lock_bust(struct hwspinlock *hwlock, unsigned int id)
|
||||||
|
{
|
||||||
|
if (WARN_ON(!hwlock))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!hwlock->bank->ops->bust) {
|
||||||
|
pr_err("bust operation not defined\n");
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
|
|
||||||
|
return hwlock->bank->ops->bust(hwlock, id);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(hwspin_lock_bust);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* of_hwspin_lock_simple_xlate - translate hwlock_spec to return a lock id
|
* of_hwspin_lock_simple_xlate - translate hwlock_spec to return a lock id
|
||||||
* @bank: the hwspinlock device bank
|
* @bank: the hwspinlock device bank
|
||||||
|
|
|
@ -21,6 +21,8 @@ struct hwspinlock_device;
|
||||||
* @trylock: make a single attempt to take the lock. returns 0 on
|
* @trylock: make a single attempt to take the lock. returns 0 on
|
||||||
* failure and true on success. may _not_ sleep.
|
* failure and true on success. may _not_ sleep.
|
||||||
* @unlock: release the lock. always succeed. may _not_ sleep.
|
* @unlock: release the lock. always succeed. may _not_ sleep.
|
||||||
|
* @bust: optional, platform-specific bust handler, called by hwspinlock
|
||||||
|
* core to bust a specific lock.
|
||||||
* @relax: optional, platform-specific relax handler, called by hwspinlock
|
* @relax: optional, platform-specific relax handler, called by hwspinlock
|
||||||
* core while spinning on a lock, between two successive
|
* core while spinning on a lock, between two successive
|
||||||
* invocations of @trylock. may _not_ sleep.
|
* invocations of @trylock. may _not_ sleep.
|
||||||
|
@ -28,6 +30,7 @@ struct hwspinlock_device;
|
||||||
struct hwspinlock_ops {
|
struct hwspinlock_ops {
|
||||||
int (*trylock)(struct hwspinlock *lock);
|
int (*trylock)(struct hwspinlock *lock);
|
||||||
void (*unlock)(struct hwspinlock *lock);
|
void (*unlock)(struct hwspinlock *lock);
|
||||||
|
int (*bust)(struct hwspinlock *lock, unsigned int id);
|
||||||
void (*relax)(struct hwspinlock *lock);
|
void (*relax)(struct hwspinlock *lock);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
|
|
||||||
#include "arm-smmu-v3.h"
|
#include "arm-smmu-v3.h"
|
||||||
|
#include "../../dma-iommu.h"
|
||||||
|
|
||||||
struct arm_smmu_option_prop {
|
struct arm_smmu_option_prop {
|
||||||
u32 opt;
|
u32 opt;
|
||||||
|
@ -477,6 +478,21 @@ int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args)
|
||||||
return iommu_fwspec_add_ids(dev, args->args, 1);
|
return iommu_fwspec_add_ids(dev, args->args, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void arm_smmu_get_resv_regions(struct device *dev, struct list_head *head)
|
||||||
|
{
|
||||||
|
struct iommu_resv_region *region;
|
||||||
|
int prot = IOMMU_WRITE | IOMMU_NOEXEC | IOMMU_MMIO;
|
||||||
|
|
||||||
|
region = iommu_alloc_resv_region(MSI_IOVA_BASE, MSI_IOVA_LENGTH,
|
||||||
|
prot, IOMMU_RESV_SW_MSI, GFP_KERNEL);
|
||||||
|
if (!region)
|
||||||
|
return;
|
||||||
|
|
||||||
|
list_add_tail(®ion->list, head);
|
||||||
|
|
||||||
|
iommu_dma_get_resv_regions(dev, head);
|
||||||
|
}
|
||||||
|
|
||||||
int arm_smmu_init_one_queue(struct arm_smmu_device *smmu,
|
int arm_smmu_init_one_queue(struct arm_smmu_device *smmu,
|
||||||
struct arm_smmu_queue *q,
|
struct arm_smmu_queue *q,
|
||||||
void __iomem *page,
|
void __iomem *page,
|
||||||
|
|
|
@ -72,8 +72,7 @@ extern struct kvm_iommu_ops kvm_nvhe_sym(smmu_ops);
|
||||||
static int atomic_pages;
|
static int atomic_pages;
|
||||||
module_param(atomic_pages, int, 0);
|
module_param(atomic_pages, int, 0);
|
||||||
|
|
||||||
static int kvm_arm_smmu_topup_memcache(struct arm_smmu_device *smmu,
|
static int kvm_arm_smmu_topup_memcache(struct arm_smccc_res *res)
|
||||||
struct arm_smccc_res *res)
|
|
||||||
{
|
{
|
||||||
struct kvm_hyp_req req;
|
struct kvm_hyp_req req;
|
||||||
|
|
||||||
|
@ -97,19 +96,19 @@ static int kvm_arm_smmu_topup_memcache(struct arm_smmu_device *smmu,
|
||||||
return __pkvm_topup_hyp_alloc(req.mem.nr_pages);
|
return __pkvm_topup_hyp_alloc(req.mem.nr_pages);
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_err(smmu->dev, "Bogus mem request");
|
pr_err("Bogus mem request");
|
||||||
return -EBADE;
|
return -EBADE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Issue hypercall, and retry after filling the memcache if necessary.
|
* Issue hypercall, and retry after filling the memcache if necessary.
|
||||||
*/
|
*/
|
||||||
#define kvm_call_hyp_nvhe_mc(smmu, ...) \
|
#define kvm_call_hyp_nvhe_mc(...) \
|
||||||
({ \
|
({ \
|
||||||
struct arm_smccc_res __res; \
|
struct arm_smccc_res __res; \
|
||||||
do { \
|
do { \
|
||||||
__res = kvm_call_hyp_nvhe_smccc(__VA_ARGS__); \
|
__res = kvm_call_hyp_nvhe_smccc(__VA_ARGS__); \
|
||||||
} while (__res.a1 && !kvm_arm_smmu_topup_memcache(smmu, &__res));\
|
} while (__res.a1 && !kvm_arm_smmu_topup_memcache(&__res));\
|
||||||
__res.a1; \
|
__res.a1; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -245,7 +244,7 @@ static int kvm_arm_smmu_domain_finalize(struct kvm_arm_smmu_domain *kvm_smmu_dom
|
||||||
}
|
}
|
||||||
kvm_smmu_domain->domain.geometry.force_aperture = true;
|
kvm_smmu_domain->domain.geometry.force_aperture = true;
|
||||||
|
|
||||||
ret = kvm_call_hyp_nvhe_mc(smmu, __pkvm_host_iommu_alloc_domain,
|
ret = kvm_call_hyp_nvhe_mc(__pkvm_host_iommu_alloc_domain,
|
||||||
kvm_smmu_domain->id, kvm_smmu_domain->type);
|
kvm_smmu_domain->id, kvm_smmu_domain->type);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -336,7 +335,7 @@ static int kvm_arm_smmu_set_dev_pasid(struct iommu_domain *domain,
|
||||||
for (i = 0; i < fwspec->num_ids; i++) {
|
for (i = 0; i < fwspec->num_ids; i++) {
|
||||||
int sid = fwspec->ids[i];
|
int sid = fwspec->ids[i];
|
||||||
|
|
||||||
ret = kvm_call_hyp_nvhe_mc(smmu, __pkvm_host_iommu_attach_dev,
|
ret = kvm_call_hyp_nvhe_mc(__pkvm_host_iommu_attach_dev,
|
||||||
host_smmu->id, kvm_smmu_domain->id,
|
host_smmu->id, kvm_smmu_domain->id,
|
||||||
sid, pasid, master->ssid_bits);
|
sid, pasid, master->ssid_bits);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -373,7 +372,6 @@ static int kvm_arm_smmu_map_pages(struct iommu_domain *domain,
|
||||||
size_t mapped;
|
size_t mapped;
|
||||||
size_t size = pgsize * pgcount;
|
size_t size = pgsize * pgcount;
|
||||||
struct kvm_arm_smmu_domain *kvm_smmu_domain = to_kvm_smmu_domain(domain);
|
struct kvm_arm_smmu_domain *kvm_smmu_domain = to_kvm_smmu_domain(domain);
|
||||||
struct arm_smmu_device *smmu = kvm_smmu_domain->smmu;
|
|
||||||
struct arm_smccc_res res;
|
struct arm_smccc_res res;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -387,7 +385,7 @@ static int kvm_arm_smmu_map_pages(struct iommu_domain *domain,
|
||||||
WARN_ON(mapped > pgcount * pgsize);
|
WARN_ON(mapped > pgcount * pgsize);
|
||||||
pgcount -= mapped / pgsize;
|
pgcount -= mapped / pgsize;
|
||||||
*total_mapped += mapped;
|
*total_mapped += mapped;
|
||||||
} while (*total_mapped < size && !kvm_arm_smmu_topup_memcache(smmu, &res));
|
} while (*total_mapped < size && !kvm_arm_smmu_topup_memcache(&res));
|
||||||
if (*total_mapped < size)
|
if (*total_mapped < size)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
@ -403,7 +401,6 @@ static size_t kvm_arm_smmu_unmap_pages(struct iommu_domain *domain,
|
||||||
size_t total_unmapped = 0;
|
size_t total_unmapped = 0;
|
||||||
size_t size = pgsize * pgcount;
|
size_t size = pgsize * pgcount;
|
||||||
struct kvm_arm_smmu_domain *kvm_smmu_domain = to_kvm_smmu_domain(domain);
|
struct kvm_arm_smmu_domain *kvm_smmu_domain = to_kvm_smmu_domain(domain);
|
||||||
struct arm_smmu_device *smmu = kvm_smmu_domain->smmu;
|
|
||||||
struct arm_smccc_res res;
|
struct arm_smccc_res res;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -423,7 +420,7 @@ static size_t kvm_arm_smmu_unmap_pages(struct iommu_domain *domain,
|
||||||
* block mapping.
|
* block mapping.
|
||||||
*/
|
*/
|
||||||
} while (total_unmapped < size &&
|
} while (total_unmapped < size &&
|
||||||
(unmapped || !kvm_arm_smmu_topup_memcache(smmu, &res)));
|
(unmapped || !kvm_arm_smmu_topup_memcache(&res)));
|
||||||
|
|
||||||
return total_unmapped;
|
return total_unmapped;
|
||||||
}
|
}
|
||||||
|
@ -449,6 +446,7 @@ static struct iommu_ops kvm_arm_smmu_ops = {
|
||||||
.capable = arm_smmu_capable,
|
.capable = arm_smmu_capable,
|
||||||
.device_group = arm_smmu_device_group,
|
.device_group = arm_smmu_device_group,
|
||||||
.of_xlate = arm_smmu_of_xlate,
|
.of_xlate = arm_smmu_of_xlate,
|
||||||
|
.get_resv_regions = arm_smmu_get_resv_regions,
|
||||||
.probe_device = kvm_arm_smmu_probe_device,
|
.probe_device = kvm_arm_smmu_probe_device,
|
||||||
.release_device = kvm_arm_smmu_release_device,
|
.release_device = kvm_arm_smmu_release_device,
|
||||||
.domain_alloc = kvm_arm_smmu_domain_alloc,
|
.domain_alloc = kvm_arm_smmu_domain_alloc,
|
||||||
|
@ -1049,6 +1047,17 @@ static int kvm_arm_smmu_v3_init(void)
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_free_mc;
|
goto err_free_mc;
|
||||||
|
|
||||||
|
/* Preemptively allocate the identity domain. */
|
||||||
|
if (atomic_pages) {
|
||||||
|
ret = kvm_call_hyp_nvhe_mc(__pkvm_host_iommu_alloc_domain,
|
||||||
|
KVM_IOMMU_DOMAIN_IDMAP_ID,
|
||||||
|
KVM_IOMMU_DOMAIN_IDMAP_TYPE);
|
||||||
|
if (ret) {
|
||||||
|
pr_err("pKVM SMMUv3 identity domain failed allocation %d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
WARN_ON(driver_for_each_device(&kvm_arm_smmu_driver.driver, NULL,
|
WARN_ON(driver_for_each_device(&kvm_arm_smmu_driver.driver, NULL,
|
||||||
NULL, smmu_put_device));
|
NULL, smmu_put_device));
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
#include "arm-smmu-v3.h"
|
#include "arm-smmu-v3.h"
|
||||||
#include "../../dma-iommu.h"
|
|
||||||
#include "../../iommu-sva.h"
|
#include "../../iommu-sva.h"
|
||||||
|
|
||||||
static bool disable_bypass = true;
|
static bool disable_bypass = true;
|
||||||
|
@ -2509,22 +2508,6 @@ static int arm_smmu_enable_nesting(struct iommu_domain *domain)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void arm_smmu_get_resv_regions(struct device *dev,
|
|
||||||
struct list_head *head)
|
|
||||||
{
|
|
||||||
struct iommu_resv_region *region;
|
|
||||||
int prot = IOMMU_WRITE | IOMMU_NOEXEC | IOMMU_MMIO;
|
|
||||||
|
|
||||||
region = iommu_alloc_resv_region(MSI_IOVA_BASE, MSI_IOVA_LENGTH,
|
|
||||||
prot, IOMMU_RESV_SW_MSI, GFP_KERNEL);
|
|
||||||
if (!region)
|
|
||||||
return;
|
|
||||||
|
|
||||||
list_add_tail(®ion->list, head);
|
|
||||||
|
|
||||||
iommu_dma_get_resv_regions(dev, head);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int arm_smmu_dev_enable_feature(struct device *dev,
|
static int arm_smmu_dev_enable_feature(struct device *dev,
|
||||||
enum iommu_dev_features feat)
|
enum iommu_dev_features feat)
|
||||||
{
|
{
|
||||||
|
|
|
@ -278,6 +278,7 @@ int arm_smmu_device_disable(struct arm_smmu_device *smmu);
|
||||||
bool arm_smmu_capable(struct device *dev, enum iommu_cap cap);
|
bool arm_smmu_capable(struct device *dev, enum iommu_cap cap);
|
||||||
struct iommu_group *arm_smmu_device_group(struct device *dev);
|
struct iommu_group *arm_smmu_device_group(struct device *dev);
|
||||||
int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args);
|
int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args);
|
||||||
|
void arm_smmu_get_resv_regions(struct device *dev, struct list_head *head);
|
||||||
|
|
||||||
struct platform_device;
|
struct platform_device;
|
||||||
int arm_smmu_fw_probe(struct platform_device *pdev,
|
int arm_smmu_fw_probe(struct platform_device *pdev,
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1559,7 +1559,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq)
|
||||||
pr_debug("%s: CQE recovery start\n", mmc_hostname(host));
|
pr_debug("%s: CQE recovery start\n", mmc_hostname(host));
|
||||||
|
|
||||||
err = mmc_cqe_recovery(host);
|
err = mmc_cqe_recovery(host);
|
||||||
if (err)
|
if (err || host->cqe_recovery_reset_always)
|
||||||
mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY);
|
mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY);
|
||||||
mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
|
mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
|
||||||
|
|
||||||
|
|
|
@ -921,6 +921,7 @@ void mmc_set_clock(struct mmc_host *host, unsigned int hz)
|
||||||
host->ios.clock = hz;
|
host->ios.clock = hz;
|
||||||
mmc_set_ios(host);
|
mmc_set_ios(host);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_set_clock);
|
||||||
|
|
||||||
int mmc_execute_tuning(struct mmc_card *card)
|
int mmc_execute_tuning(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
|
@ -955,6 +956,7 @@ int mmc_execute_tuning(struct mmc_card *card)
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_execute_tuning);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Change the bus mode (open drain/push-pull) of a host.
|
* Change the bus mode (open drain/push-pull) of a host.
|
||||||
|
@ -964,6 +966,7 @@ void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode)
|
||||||
host->ios.bus_mode = mode;
|
host->ios.bus_mode = mode;
|
||||||
mmc_set_ios(host);
|
mmc_set_ios(host);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_set_bus_mode);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Change data bus width of a host.
|
* Change data bus width of a host.
|
||||||
|
@ -973,6 +976,7 @@ void mmc_set_bus_width(struct mmc_host *host, unsigned int width)
|
||||||
host->ios.bus_width = width;
|
host->ios.bus_width = width;
|
||||||
mmc_set_ios(host);
|
mmc_set_ios(host);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_set_bus_width);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set initial state after a power cycle or a hw_reset.
|
* Set initial state after a power cycle or a hw_reset.
|
||||||
|
@ -1006,6 +1010,7 @@ void mmc_set_initial_state(struct mmc_host *host)
|
||||||
|
|
||||||
mmc_crypto_set_initial_state(host);
|
mmc_crypto_set_initial_state(host);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_set_initial_state);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mmc_vdd_to_ocrbitnum - Convert a voltage to the OCR bit number
|
* mmc_vdd_to_ocrbitnum - Convert a voltage to the OCR bit number
|
||||||
|
@ -1275,6 +1280,7 @@ void mmc_set_timing(struct mmc_host *host, unsigned int timing)
|
||||||
host->ios.timing = timing;
|
host->ios.timing = timing;
|
||||||
mmc_set_ios(host);
|
mmc_set_ios(host);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_set_timing);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Select appropriate driver type for host.
|
* Select appropriate driver type for host.
|
||||||
|
|
|
@ -42,7 +42,7 @@ struct device_node *mmc_of_find_child_device(struct mmc_host *host,
|
||||||
void mmc_init_erase(struct mmc_card *card);
|
void mmc_init_erase(struct mmc_card *card);
|
||||||
|
|
||||||
void mmc_set_chip_select(struct mmc_host *host, int mode);
|
void mmc_set_chip_select(struct mmc_host *host, int mode);
|
||||||
void mmc_set_clock(struct mmc_host *host, unsigned int hz);
|
extern void mmc_set_clock(struct mmc_host *host, unsigned int hz);
|
||||||
void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode);
|
void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode);
|
||||||
void mmc_set_bus_width(struct mmc_host *host, unsigned int width);
|
void mmc_set_bus_width(struct mmc_host *host, unsigned int width);
|
||||||
u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
|
u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
|
||||||
|
|
|
@ -166,6 +166,7 @@ void mmc_retune_hold(struct mmc_host *host)
|
||||||
host->retune_now = 1;
|
host->retune_now = 1;
|
||||||
host->hold_retune += 1;
|
host->hold_retune += 1;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(mmc_retune_hold);
|
||||||
|
|
||||||
void mmc_retune_release(struct mmc_host *host)
|
void mmc_retune_release(struct mmc_host *host)
|
||||||
{
|
{
|
||||||
|
|
|
@ -982,7 +982,7 @@ static int mmc_select_powerclass(struct mmc_card *card)
|
||||||
/*
|
/*
|
||||||
* Set the bus speed for the selected speed mode.
|
* Set the bus speed for the selected speed mode.
|
||||||
*/
|
*/
|
||||||
static void mmc_set_bus_speed(struct mmc_card *card)
|
void mmc_set_bus_speed(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
unsigned int max_dtr = (unsigned int)-1;
|
unsigned int max_dtr = (unsigned int)-1;
|
||||||
|
|
||||||
|
@ -1002,7 +1002,7 @@ static void mmc_set_bus_speed(struct mmc_card *card)
|
||||||
* If the bus width is changed successfully, return the selected width value.
|
* If the bus width is changed successfully, return the selected width value.
|
||||||
* Zero is returned instead of error value if the wide width is not supported.
|
* Zero is returned instead of error value if the wide width is not supported.
|
||||||
*/
|
*/
|
||||||
static int mmc_select_bus_width(struct mmc_card *card)
|
int mmc_select_bus_width(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
static unsigned ext_csd_bits[] = {
|
static unsigned ext_csd_bits[] = {
|
||||||
EXT_CSD_BUS_WIDTH_8,
|
EXT_CSD_BUS_WIDTH_8,
|
||||||
|
@ -1069,11 +1069,12 @@ static int mmc_select_bus_width(struct mmc_card *card)
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_select_bus_width);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Switch to the high-speed mode
|
* Switch to the high-speed mode
|
||||||
*/
|
*/
|
||||||
static int mmc_select_hs(struct mmc_card *card)
|
int mmc_select_hs(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
@ -1087,11 +1088,12 @@ static int mmc_select_hs(struct mmc_card *card)
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_select_hs);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Activate wide bus and DDR if supported.
|
* Activate wide bus and DDR if supported.
|
||||||
*/
|
*/
|
||||||
static int mmc_select_hs_ddr(struct mmc_card *card)
|
int mmc_select_hs_ddr(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
struct mmc_host *host = card->host;
|
struct mmc_host *host = card->host;
|
||||||
u32 bus_width, ext_csd_bits;
|
u32 bus_width, ext_csd_bits;
|
||||||
|
@ -1160,8 +1162,9 @@ static int mmc_select_hs_ddr(struct mmc_card *card)
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_select_hs_ddr);
|
||||||
|
|
||||||
static int mmc_select_hs400(struct mmc_card *card)
|
int mmc_select_hs400(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
struct mmc_host *host = card->host;
|
struct mmc_host *host = card->host;
|
||||||
unsigned int max_dtr;
|
unsigned int max_dtr;
|
||||||
|
@ -1255,6 +1258,7 @@ out_err:
|
||||||
__func__, err);
|
__func__, err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_select_hs400);
|
||||||
|
|
||||||
int mmc_hs200_to_hs400(struct mmc_card *card)
|
int mmc_hs200_to_hs400(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
|
@ -1535,7 +1539,7 @@ err:
|
||||||
/*
|
/*
|
||||||
* Activate High Speed, HS200 or HS400ES mode if supported.
|
* Activate High Speed, HS200 or HS400ES mode if supported.
|
||||||
*/
|
*/
|
||||||
static int mmc_select_timing(struct mmc_card *card)
|
int mmc_select_timing(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
|
@ -1570,12 +1574,13 @@ bus_speed:
|
||||||
mmc_set_bus_speed(card);
|
mmc_set_bus_speed(card);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_select_timing);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Execute tuning sequence to seek the proper bus operating
|
* Execute tuning sequence to seek the proper bus operating
|
||||||
* conditions for HS200 and HS400, which sends CMD21 to the device.
|
* conditions for HS200 and HS400, which sends CMD21 to the device.
|
||||||
*/
|
*/
|
||||||
static int mmc_hs200_tuning(struct mmc_card *card)
|
int mmc_hs200_tuning(struct mmc_card *card)
|
||||||
{
|
{
|
||||||
struct mmc_host *host = card->host;
|
struct mmc_host *host = card->host;
|
||||||
|
|
||||||
|
@ -1590,6 +1595,7 @@ static int mmc_hs200_tuning(struct mmc_card *card)
|
||||||
|
|
||||||
return mmc_execute_tuning(card);
|
return mmc_execute_tuning(card);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_hs200_tuning);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle the detection and initialisation of a card.
|
* Handle the detection and initialisation of a card.
|
||||||
|
|
|
@ -118,6 +118,7 @@ int mmc_select_card(struct mmc_card *card)
|
||||||
|
|
||||||
return _mmc_select_card(card->host, card);
|
return _mmc_select_card(card->host, card);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_select_card);
|
||||||
|
|
||||||
int mmc_deselect_cards(struct mmc_host *host)
|
int mmc_deselect_cards(struct mmc_host *host)
|
||||||
{
|
{
|
||||||
|
|
|
@ -69,6 +69,7 @@ enum mmc_issue_type mmc_issue_type(struct mmc_queue *mq, struct request *req)
|
||||||
|
|
||||||
return MMC_ISSUE_SYNC;
|
return MMC_ISSUE_SYNC;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mmc_issue_type);
|
||||||
|
|
||||||
static void __mmc_cqe_recovery_notifier(struct mmc_queue *mq)
|
static void __mmc_cqe_recovery_notifier(struct mmc_queue *mq)
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#include <linux/mmc/sdio_func.h>
|
#include <linux/mmc/sdio_func.h>
|
||||||
#include <linux/mmc/sdio_ids.h>
|
#include <linux/mmc/sdio_ids.h>
|
||||||
|
|
||||||
|
#include <trace/hooks/mmc.h>
|
||||||
|
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
#include "card.h"
|
#include "card.h"
|
||||||
#include "host.h"
|
#include "host.h"
|
||||||
|
@ -1116,6 +1118,8 @@ out:
|
||||||
mmc_release_host(host);
|
mmc_release_host(host);
|
||||||
|
|
||||||
host->pm_flags &= ~MMC_PM_KEEP_POWER;
|
host->pm_flags &= ~MMC_PM_KEEP_POWER;
|
||||||
|
trace_android_vh_mmc_sdio_pm_flag_set(host);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2631,6 +2631,9 @@ static int sdhci_msm_probe(struct platform_device *pdev)
|
||||||
/* Set the timeout value to max possible */
|
/* Set the timeout value to max possible */
|
||||||
host->max_timeout_count = 0xF;
|
host->max_timeout_count = 0xF;
|
||||||
|
|
||||||
|
/* Enable force hw reset during cqe recovery */
|
||||||
|
msm_host->mmc->cqe_recovery_reset_always = true;
|
||||||
|
|
||||||
pm_runtime_get_noresume(&pdev->dev);
|
pm_runtime_get_noresume(&pdev->dev);
|
||||||
pm_runtime_set_active(&pdev->dev);
|
pm_runtime_set_active(&pdev->dev);
|
||||||
pm_runtime_enable(&pdev->dev);
|
pm_runtime_enable(&pdev->dev);
|
||||||
|
|
|
@ -552,6 +552,7 @@ static int mtd_nvmem_add(struct mtd_info *mtd)
|
||||||
config.dev = &mtd->dev;
|
config.dev = &mtd->dev;
|
||||||
config.name = dev_name(&mtd->dev);
|
config.name = dev_name(&mtd->dev);
|
||||||
config.owner = THIS_MODULE;
|
config.owner = THIS_MODULE;
|
||||||
|
config.add_legacy_fixed_of_cells = of_device_is_compatible(node, "nvmem-cells");
|
||||||
config.reg_read = mtd_nvmem_reg_read;
|
config.reg_read = mtd_nvmem_reg_read;
|
||||||
config.size = mtd->size;
|
config.size = mtd->size;
|
||||||
config.word_size = 1;
|
config.word_size = 1;
|
||||||
|
@ -898,6 +899,7 @@ static struct nvmem_device *mtd_otp_nvmem_register(struct mtd_info *mtd,
|
||||||
config.name = compatible;
|
config.name = compatible;
|
||||||
config.id = NVMEM_DEVID_AUTO;
|
config.id = NVMEM_DEVID_AUTO;
|
||||||
config.owner = THIS_MODULE;
|
config.owner = THIS_MODULE;
|
||||||
|
config.add_legacy_fixed_of_cells = !mtd_type_is_nand(mtd);
|
||||||
config.type = NVMEM_TYPE_OTP;
|
config.type = NVMEM_TYPE_OTP;
|
||||||
config.root_only = true;
|
config.root_only = true;
|
||||||
config.ignore_wp = true;
|
config.ignore_wp = true;
|
||||||
|
|
|
@ -2456,5 +2456,6 @@ static void __exit ns_cleanup_module(void)
|
||||||
module_exit(ns_cleanup_module);
|
module_exit(ns_cleanup_module);
|
||||||
|
|
||||||
MODULE_LICENSE ("GPL");
|
MODULE_LICENSE ("GPL");
|
||||||
|
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||||
MODULE_AUTHOR ("Artem B. Bityuckiy");
|
MODULE_AUTHOR ("Artem B. Bityuckiy");
|
||||||
MODULE_DESCRIPTION ("The NAND flash simulator");
|
MODULE_DESCRIPTION ("The NAND flash simulator");
|
||||||
|
|
|
@ -1512,3 +1512,4 @@ MODULE_VERSION(__stringify(UBI_VERSION));
|
||||||
MODULE_DESCRIPTION("UBI - Unsorted Block Images");
|
MODULE_DESCRIPTION("UBI - Unsorted Block Images");
|
||||||
MODULE_AUTHOR("Artem Bityutskiy");
|
MODULE_AUTHOR("Artem Bityutskiy");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||||
|
|
|
@ -35,6 +35,191 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "selftests",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_binderfs_binderfs_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_breakpoints_breakpoint_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_capabilities_test_execve"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_b_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bl_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_bo_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_2G"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_l_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_mismatched_ops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_500k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_o_5k"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_requeue_pi_signal_restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_private_mapped_file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_uninitialized_heap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_futex_wait_wouldblock"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_kcmp_kcmp_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_dontunmap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_mremap_test"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_mm_uffd_unit_tests"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_psock_tpacket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_reuseaddr_conflict"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_net_socket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_ptrace_peeksiginfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_rtc_rtctest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_seccomp_seccomp_bpf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_size_test_get_size"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_inconsistency_check"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nanosleep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_nsleep_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_posix_timers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_set_timer_lat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_tests_raw_skew"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_threadtest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_timers_valid_adjtimex"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_abi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_clock_getres"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_getcpu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_vdso_vdso_test_gettimeofday"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_check_initial_reg_state"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ldt_gdt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_ptrace_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_single_step_syscall"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_syscall_nt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include-filter": "kselftest_x86_test_mremap_vdso"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "vts_kernel_net_tests"
|
"name": "vts_kernel_net_tests"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1709,3 +1709,4 @@ module_init(nvmet_init);
|
||||||
module_exit(nvmet_exit);
|
module_exit(nvmet_exit);
|
||||||
|
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
|
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||||
|
|
|
@ -36,6 +36,7 @@ static int apple_efuses_probe(struct platform_device *pdev)
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
struct nvmem_config config = {
|
struct nvmem_config config = {
|
||||||
.dev = &pdev->dev,
|
.dev = &pdev->dev,
|
||||||
|
.add_legacy_fixed_of_cells = true,
|
||||||
.read_only = true,
|
.read_only = true,
|
||||||
.reg_read = apple_efuses_read,
|
.reg_read = apple_efuses_read,
|
||||||
.stride = sizeof(u32),
|
.stride = sizeof(u32),
|
||||||
|
|
|
@ -1003,9 +1003,11 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
|
||||||
if (rval)
|
if (rval)
|
||||||
goto err_remove_cells;
|
goto err_remove_cells;
|
||||||
|
|
||||||
rval = nvmem_add_cells_from_legacy_of(nvmem);
|
if (config->add_legacy_fixed_of_cells) {
|
||||||
if (rval)
|
rval = nvmem_add_cells_from_legacy_of(nvmem);
|
||||||
goto err_remove_cells;
|
if (rval)
|
||||||
|
goto err_remove_cells;
|
||||||
|
}
|
||||||
|
|
||||||
rval = nvmem_add_cells_from_fixed_layout(nvmem);
|
rval = nvmem_add_cells_from_fixed_layout(nvmem);
|
||||||
if (rval)
|
if (rval)
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user