mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-11 11:55:28 +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_COPTS = [
|
||||
"-O3",
|
||||
"-pthread",
|
||||
"-std=gnu99",
|
||||
] + select({
|
||||
":arm": ["-mcpu=cortex-a8"],
|
||||
"//conditions:default": [],
|
||||
})
|
||||
|
||||
config_setting(
|
||||
name = "x86_64",
|
||||
values = {"platforms": "//build/kernel/kleaf/impl:android_x86_64"},
|
||||
|
@ -999,12 +1008,17 @@ config_setting(
|
|||
cc_library(
|
||||
name = "kselftest_headers_lib",
|
||||
hdrs = glob(["tools/testing/selftests/*.h"]),
|
||||
copts = _KSELFTEST_COPTS,
|
||||
defines = [
|
||||
"_GNU_SOURCE=",
|
||||
],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
cc_binary_with_abi(
|
||||
name = "kselftest_binderfs_binderfs_test",
|
||||
srcs = ["tools/testing/selftests/filesystems/binderfs/binderfs_test.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1019,6 +1033,7 @@ cc_binary_with_abi(
|
|||
":arm64": ["tools/testing/selftests/breakpoints/breakpoint_test_arm64.c"],
|
||||
"//conditions:default": [],
|
||||
}),
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1028,6 +1043,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_kcmp_kcmp_test",
|
||||
srcs = ["tools/testing/selftests/kcmp/kcmp_test.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1037,6 +1053,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_ptrace_peeksiginfo",
|
||||
srcs = ["tools/testing/selftests/ptrace/peeksiginfo.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1046,6 +1063,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_rtc_rtctest",
|
||||
srcs = ["tools/testing/selftests/rtc/rtctest.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1059,12 +1077,14 @@ cc_library(
|
|||
"tools/testing/selftests/vDSO/parse_vdso.h",
|
||||
"tools/testing/selftests/vDSO/vdso_config.h",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
cc_binary_with_abi(
|
||||
name = "kselftest_vdso_vdso_test_abi",
|
||||
srcs = ["tools/testing/selftests/vDSO/vdso_test_abi.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1077,6 +1097,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_vdso_vdso_test_clock_getres",
|
||||
srcs = ["tools/testing/selftests/vDSO/vdso_test_clock_getres.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1089,6 +1110,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_vdso_vdso_test_getcpu",
|
||||
srcs = ["tools/testing/selftests/vDSO/vdso_test_getcpu.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1101,6 +1123,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_vdso_vdso_test_gettimeofday",
|
||||
srcs = ["tools/testing/selftests/vDSO/vdso_test_gettimeofday.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1113,6 +1136,7 @@ cc_binary_with_abi(
|
|||
cc_library(
|
||||
name = "kselftest_futex_headers_lib",
|
||||
hdrs = glob(["tools/testing/selftests/futex/include/*.h"]),
|
||||
copts = _KSELFTEST_COPTS,
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
|
@ -1120,10 +1144,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_futex_futex_requeue_pi_mismatched_ops",
|
||||
srcs = ["tools/testing/selftests/futex/functional/futex_requeue_pi_mismatched_ops.c"],
|
||||
out = "futex_requeue_pi_mismatched_ops",
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/futex/include",
|
||||
|
@ -1141,10 +1162,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_futex_futex_requeue_pi_signal_restart",
|
||||
srcs = ["tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c"],
|
||||
out = "futex_requeue_pi_signal_restart",
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/futex/include",
|
||||
|
@ -1162,10 +1180,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_futex_futex_requeue_pi",
|
||||
srcs = ["tools/testing/selftests/futex/functional/futex_requeue_pi.c"],
|
||||
out = "futex_requeue_pi",
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/futex/include",
|
||||
|
@ -1183,10 +1198,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_futex_futex_requeue",
|
||||
srcs = ["tools/testing/selftests/futex/functional/futex_requeue.c"],
|
||||
out = "futex_requeue",
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/futex/include",
|
||||
|
@ -1204,10 +1216,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_futex_futex_wait_private_mapped_file",
|
||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait_private_mapped_file.c"],
|
||||
out = "futex_wait_private_mapped_file",
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/futex/include",
|
||||
|
@ -1225,10 +1234,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_futex_futex_wait_timeout",
|
||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait_timeout.c"],
|
||||
out = "futex_wait_timeout",
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/futex/include",
|
||||
|
@ -1246,10 +1252,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_futex_futex_wait_uninitialized_heap",
|
||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait_uninitialized_heap.c"],
|
||||
out = "futex_wait_uninitialized_heap",
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/futex/include",
|
||||
|
@ -1267,10 +1270,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_futex_futex_wait_wouldblock",
|
||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait_wouldblock.c"],
|
||||
out = "futex_wait_wouldblock",
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/futex/include",
|
||||
|
@ -1288,10 +1288,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_futex_futex_wait",
|
||||
srcs = ["tools/testing/selftests/futex/functional/futex_wait.c"],
|
||||
out = "futex_wait",
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/futex/include",
|
||||
|
@ -1308,6 +1305,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_mm_compaction_test",
|
||||
srcs = ["tools/testing/selftests/mm/compaction_test.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
|
@ -1321,6 +1319,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_mm_hugepage_mmap",
|
||||
srcs = ["tools/testing/selftests/mm/hugepage-mmap.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
|
@ -1334,6 +1333,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_mm_hugepage_shm",
|
||||
srcs = ["tools/testing/selftests/mm/hugepage-shm.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
|
@ -1347,6 +1347,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_mm_map_hugetlb",
|
||||
srcs = ["tools/testing/selftests/mm/map_hugetlb.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
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/mlock2.h",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/mm",
|
||||
|
@ -1382,6 +1384,7 @@ cc_binary_with_abi(
|
|||
"tools/testing/selftests/mm/mlock2.h",
|
||||
"tools/testing/selftests/mm/mlock2-tests.c",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/mm",
|
||||
|
@ -1398,6 +1401,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_mm_on_fault_limit",
|
||||
srcs = ["tools/testing/selftests/mm/on-fault-limit.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
|
@ -1411,6 +1415,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_mm_mremap_dontunmap",
|
||||
srcs = ["tools/testing/selftests/mm/mremap_dontunmap.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
|
@ -1424,6 +1429,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_mm_mremap_test",
|
||||
srcs = ["tools/testing/selftests/mm/mremap_test.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
|
@ -1438,9 +1444,7 @@ cc_library(
|
|||
name = "kselftest_mm_vm_util",
|
||||
srcs = ["tools/testing/selftests/mm/vm_util.c"],
|
||||
hdrs = ["tools/testing/selftests/mm/vm_util.h"],
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
visibility = ["//visibility:private"],
|
||||
deps = [
|
||||
":kselftest_headers_lib",
|
||||
|
@ -1450,11 +1454,10 @@ cc_library(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_mm_thuge_gen",
|
||||
srcs = [
|
||||
"tools/testing/selftests/mm/mlock2.h",
|
||||
"tools/testing/selftests/mm/thuge-gen.c",
|
||||
],
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
copts = _KSELFTEST_COPTS + [
|
||||
"-Wno-macro-redefined",
|
||||
],
|
||||
includes = ["tools/testing/selftests"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
|
@ -1470,12 +1473,9 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_mm_transhuge_stress",
|
||||
srcs = [
|
||||
"tools/testing/selftests/mm/mlock2.h",
|
||||
"tools/testing/selftests/mm/transhuge-stress.c",
|
||||
],
|
||||
copts = [
|
||||
"-D_GNU_SOURCE",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/mm/",
|
||||
|
@ -1499,6 +1499,7 @@ cc_library(
|
|||
"tools/testing/selftests/kselftest.h",
|
||||
"tools/testing/selftests/mm/uffd-common.h",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"include/uapi/",
|
||||
"tools/testing/selftests/mm/",
|
||||
|
@ -1515,6 +1516,7 @@ cc_binary_with_abi(
|
|||
srcs = [
|
||||
"tools/testing/selftests/mm/uffd-unit-tests.c",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = [
|
||||
"tools/testing/selftests",
|
||||
"tools/testing/selftests/mm/",
|
||||
|
@ -1533,7 +1535,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_size_test_get_size",
|
||||
srcs = ["tools/testing/selftests/size/get_size.c"],
|
||||
copts = select({
|
||||
copts = _KSELFTEST_COPTS + select({
|
||||
":x86_64": ["-mstackrealign"],
|
||||
"//conditions:default": [],
|
||||
}),
|
||||
|
@ -1550,10 +1552,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_adjtick",
|
||||
srcs = ["tools/testing/selftests/timers/adjtick.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1563,10 +1562,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_alarmtimer_suspend",
|
||||
srcs = ["tools/testing/selftests/timers/alarmtimer-suspend.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1576,10 +1572,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_change_skew",
|
||||
srcs = ["tools/testing/selftests/timers/change_skew.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1594,10 +1587,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_clocksource_switch",
|
||||
srcs = ["tools/testing/selftests/timers/clocksource-switch.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1611,10 +1601,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_freq_step",
|
||||
srcs = ["tools/testing/selftests/timers/freq-step.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1625,10 +1612,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_timers_inconsistency_check",
|
||||
srcs = ["tools/testing/selftests/timers/inconsistency-check.c"],
|
||||
out = "inconsistency-check",
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1638,10 +1622,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_leap_a_day",
|
||||
srcs = ["tools/testing/selftests/timers/leap-a-day.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1651,10 +1632,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_leapcrash",
|
||||
srcs = ["tools/testing/selftests/timers/leapcrash.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1665,10 +1643,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_timers_nanosleep",
|
||||
srcs = ["tools/testing/selftests/timers/nanosleep.c"],
|
||||
out = "nanosleep",
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1679,10 +1654,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_timers_nsleep_lat",
|
||||
srcs = ["tools/testing/selftests/timers/nsleep-lat.c"],
|
||||
out = "nsleep-lat",
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1692,10 +1664,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_posix_timers",
|
||||
srcs = ["tools/testing/selftests/timers/posix_timers.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1706,10 +1675,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_timers_tests_raw_skew",
|
||||
srcs = ["tools/testing/selftests/timers/raw_skew.c"],
|
||||
out = "raw_skew",
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1719,10 +1685,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_set_2038",
|
||||
srcs = ["tools/testing/selftests/timers/set-2038.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1737,10 +1700,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_set_tai",
|
||||
srcs = ["tools/testing/selftests/timers/set-tai.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1750,10 +1710,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_set_timer_lat",
|
||||
srcs = ["tools/testing/selftests/timers/set-timer-lat.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1763,10 +1720,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_set_tz",
|
||||
srcs = ["tools/testing/selftests/timers/set-tz.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1776,10 +1730,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_skew_consistency",
|
||||
srcs = ["tools/testing/selftests/timers/skew_consistency.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1792,10 +1743,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_threadtest",
|
||||
srcs = ["tools/testing/selftests/timers/threadtest.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1805,10 +1753,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_timers_valid_adjtimex",
|
||||
srcs = ["tools/testing/selftests/timers/valid-adjtimex.c"],
|
||||
copts = [
|
||||
"-O3",
|
||||
"-DKTEST",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1818,7 +1763,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_net_socket",
|
||||
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"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
|
@ -1829,6 +1774,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_net_reuseaddr_conflict",
|
||||
srcs = ["tools/testing/selftests/net/reuseaddr_conflict.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
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_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"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
|
@ -1853,6 +1799,7 @@ cc_binary_with_abi(
|
|||
cc_binary_with_abi(
|
||||
name = "kselftest_capabilities_test_execve",
|
||||
srcs = ["tools/testing/selftests/capabilities/test_execve.c"],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1867,6 +1814,7 @@ cc_binary_with_abi(
|
|||
name = "kselftest_capabilities_validate_cap",
|
||||
srcs = ["tools/testing/selftests/capabilities/validate_cap.c"],
|
||||
out = "validate_cap",
|
||||
copts = _KSELFTEST_COPTS,
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
target_compatible_with = ["@platforms//os:android"],
|
||||
visibility = ["//visibility:private"],
|
||||
|
@ -1882,7 +1830,7 @@ cc_binary_with_abi(
|
|||
"tools/testing/selftests/clone3/clone3_selftests.h",
|
||||
"tools/testing/selftests/seccomp/seccomp_bpf.c",
|
||||
],
|
||||
copts = [
|
||||
copts = _KSELFTEST_COPTS + [
|
||||
"-Wno-unused-function",
|
||||
"-D__GLIBC_PREREQ(a,b)",
|
||||
],
|
||||
|
@ -1906,11 +1854,7 @@ cc_binary_with_abi(
|
|||
"x86_64",
|
||||
"x86",
|
||||
],
|
||||
copts = [
|
||||
"-std=gnu99",
|
||||
"-O2",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
linkopts = ["-static"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
|
@ -1931,11 +1875,7 @@ cc_binary_with_abi(
|
|||
"x86_64",
|
||||
"x86",
|
||||
],
|
||||
copts = [
|
||||
"-std=gnu99",
|
||||
"-O2",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
linkopts = ["-static"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
|
@ -1956,11 +1896,7 @@ cc_binary_with_abi(
|
|||
"x86_64",
|
||||
"x86",
|
||||
],
|
||||
copts = [
|
||||
"-std=gnu99",
|
||||
"-O2",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
linkopts = ["-static"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
|
@ -1981,11 +1917,7 @@ cc_binary_with_abi(
|
|||
"x86_64",
|
||||
"x86",
|
||||
],
|
||||
copts = [
|
||||
"-std=gnu99",
|
||||
"-O2",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
linkopts = ["-static"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
|
@ -2006,11 +1938,7 @@ cc_binary_with_abi(
|
|||
"x86_64",
|
||||
"x86",
|
||||
],
|
||||
copts = [
|
||||
"-std=gnu99",
|
||||
"-O2",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
linkopts = [
|
||||
"-static",
|
||||
|
@ -2035,11 +1963,7 @@ cc_binary_with_abi(
|
|||
"x86_64",
|
||||
"x86",
|
||||
],
|
||||
copts = [
|
||||
"-std=gnu99",
|
||||
"-O2",
|
||||
"-pthread",
|
||||
],
|
||||
copts = _KSELFTEST_COPTS,
|
||||
includes = ["tools/testing/selftests"],
|
||||
linkopts = ["-static"],
|
||||
path_prefix = _KSELFTEST_DIR,
|
||||
|
|
|
@ -69,14 +69,17 @@ properties:
|
|||
- const: tx
|
||||
- const: tx_reply
|
||||
- const: rx
|
||||
- const: rx_reply
|
||||
minItems: 2
|
||||
|
||||
mboxes:
|
||||
description:
|
||||
List of phandle and mailbox channel specifiers. It should contain
|
||||
exactly one, two or three mailboxes; the first one or two for transmitting
|
||||
messages ("tx") and another optional ("rx") for receiving notifications
|
||||
and delayed responses, if supported by the platform.
|
||||
exactly one, two, three or four mailboxes; the first one or two for
|
||||
transmitting messages ("tx") and another optional ("rx") for receiving
|
||||
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
|
||||
type of channels exposed by the specific underlying mailbox controller;
|
||||
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 / 1 shmem => SCMI TX over 2 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.
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
maxItems: 4
|
||||
|
||||
shmem:
|
||||
description:
|
||||
|
@ -237,6 +241,37 @@ properties:
|
|||
reg:
|
||||
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
|
||||
|
||||
$defs:
|
||||
|
@ -390,6 +425,25 @@ examples:
|
|||
scmi_powercap: protocol@18 {
|
||||
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
|
||||
building C files and assembler files.
|
||||
|
||||
KCPPFLAGS_COMPAT
|
||||
----------------
|
||||
Additional options to pass to $(CC_COMPAT) when preprocessing C and assembler
|
||||
files.
|
||||
|
||||
KAFLAGS
|
||||
-------
|
||||
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).
|
||||
|
||||
::
|
||||
|
||||
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);
|
||||
|
|
|
@ -8796,8 +8796,8 @@ F: lib/vdso/
|
|||
GENIEZONE HYPERVISOR DRIVER
|
||||
M: Yingshiuan Pan <yingshiuan.pan@mediatek.com>
|
||||
M: Ze-Yu Wang <ze-yu.wang@mediatek.com>
|
||||
M: Yi-De Wu <yi-de.wu@mediatek.com>
|
||||
F: Documentation/devicetree/bindings/hypervisor/mediatek,geniezone-hyp.yaml
|
||||
M: Liju Chen <liju-clr.chen@mediatek.com>
|
||||
F: Documentation/devicetree/bindings/firmware/mediatek,geniezone.yaml
|
||||
F: Documentation/virt/geniezone/
|
||||
F: arch/arm64/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_byname
|
||||
of_irq_parse_one
|
||||
of_machine_is_compatible
|
||||
of_match_device
|
||||
of_match_node
|
||||
__of_mdiobus_register
|
||||
|
|
|
@ -1562,7 +1562,7 @@
|
|||
of_graph_get_next_endpoint
|
||||
of_graph_get_remote_port_parent
|
||||
of_icc_get
|
||||
of_machine_is_compatible
|
||||
of_machine_compatible_match
|
||||
of_property_read_u64_index
|
||||
param_ops_ullong
|
||||
phy_calibrate
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
argv_free
|
||||
argv_split
|
||||
arm64_use_ng_mappings
|
||||
__arm_smccc_hvc
|
||||
__arm_smccc_smc
|
||||
atomic_notifier_call_chain
|
||||
atomic_notifier_chain_register
|
||||
|
@ -23,21 +24,25 @@
|
|||
autoremove_wake_function
|
||||
bcmp
|
||||
__bitmap_clear
|
||||
bitmap_free
|
||||
bitmap_parse
|
||||
bitmap_parselist
|
||||
bitmap_print_to_pagebuf
|
||||
__bitmap_set
|
||||
bitmap_to_arr32
|
||||
bitmap_zalloc
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
bpf_trace_run1
|
||||
bpf_trace_run11
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
bpf_trace_run5
|
||||
bpf_trace_run6
|
||||
bpf_trace_run7
|
||||
bpf_trace_run8
|
||||
bpf_trace_run9
|
||||
bus_get_dev_root
|
||||
bus_register
|
||||
|
@ -50,9 +55,12 @@
|
|||
cdev_alloc
|
||||
cdev_del
|
||||
cdev_init
|
||||
cgroup_taskset_first
|
||||
cgroup_taskset_next
|
||||
__check_object_size
|
||||
class_create
|
||||
class_destroy
|
||||
class_register
|
||||
class_unregister
|
||||
clk_disable
|
||||
clk_enable
|
||||
|
@ -87,6 +95,7 @@
|
|||
cpufreq_quick_get
|
||||
cpufreq_register_notifier
|
||||
cpufreq_unregister_notifier
|
||||
__cpuhp_remove_state
|
||||
__cpuhp_setup_state
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
|
@ -123,7 +132,6 @@
|
|||
device_destroy
|
||||
device_for_each_child
|
||||
device_initialize
|
||||
device_property_present
|
||||
device_register
|
||||
device_remove_file
|
||||
device_set_wakeup_capable
|
||||
|
@ -216,6 +224,7 @@
|
|||
dmam_alloc_attrs
|
||||
dma_map_page_attrs
|
||||
dma_map_sgtable
|
||||
dmam_free_coherent
|
||||
dma_mmap_attrs
|
||||
dma_release_channel
|
||||
dma_request_chan
|
||||
|
@ -231,6 +240,7 @@
|
|||
dma_unmap_page_attrs
|
||||
dma_unmap_sg_attrs
|
||||
do_wait_intr
|
||||
down_read
|
||||
down_write
|
||||
d_path
|
||||
driver_unregister
|
||||
|
@ -241,12 +251,14 @@
|
|||
drm_atomic_private_obj_fini
|
||||
drm_atomic_private_obj_init
|
||||
drm_compat_ioctl
|
||||
drm_connector_attach_encoder
|
||||
drm_connector_cleanup
|
||||
drm_connector_list_iter_begin
|
||||
drm_connector_list_iter_end
|
||||
drm_connector_list_iter_next
|
||||
drm_connector_register
|
||||
drm_connector_unregister
|
||||
drm_connector_update_edid_property
|
||||
drm_crtc_add_crc_entry
|
||||
__drm_crtc_commit_free
|
||||
drm_crtc_wait_one_vblank
|
||||
|
@ -266,6 +278,7 @@
|
|||
drm_kms_helper_hotplug_event
|
||||
drmm_mode_config_init
|
||||
drm_mode_duplicate
|
||||
drm_mode_match
|
||||
drm_mode_probed_add
|
||||
drm_modeset_lock
|
||||
drm_modeset_unlock
|
||||
|
@ -303,8 +316,10 @@
|
|||
free_pages
|
||||
free_percpu
|
||||
freq_qos_update_request
|
||||
gcd
|
||||
generic_file_llseek
|
||||
generic_handle_irq
|
||||
genlmsg_multicast_allns
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
|
@ -358,9 +373,13 @@
|
|||
i2c_smbus_write_i2c_block_data
|
||||
i2c_transfer
|
||||
i2c_transfer_buffer_flags
|
||||
i2c_unregister_device
|
||||
ida_alloc_range
|
||||
ida_free
|
||||
idr_alloc
|
||||
idr_destroy
|
||||
idr_find
|
||||
idr_for_each
|
||||
idr_remove
|
||||
init_dummy_netdev
|
||||
init_net
|
||||
|
@ -402,6 +421,7 @@
|
|||
kasan_flag_enabled
|
||||
kasprintf
|
||||
kernel_kobj
|
||||
kernfs_path_from_node
|
||||
__kfifo_alloc
|
||||
__kfifo_free
|
||||
__kfifo_in
|
||||
|
@ -420,8 +440,10 @@
|
|||
kmem_cache_destroy
|
||||
kmem_cache_free
|
||||
kmemdup
|
||||
kobject_add
|
||||
kobject_create_and_add
|
||||
kobject_get
|
||||
kobject_init
|
||||
kobject_init_and_add
|
||||
kobject_put
|
||||
kobject_uevent_env
|
||||
|
@ -433,6 +455,7 @@
|
|||
kstrtoint
|
||||
kstrtoint_from_user
|
||||
kstrtoll
|
||||
kstrtou16
|
||||
kstrtou8
|
||||
kstrtouint
|
||||
kstrtouint_from_user
|
||||
|
@ -467,7 +490,6 @@
|
|||
log_read_mmio
|
||||
log_write_mmio
|
||||
loops_per_jiffy
|
||||
lzo1x_decompress_safe
|
||||
memchr
|
||||
memcmp
|
||||
memcpy
|
||||
|
@ -509,7 +531,10 @@
|
|||
netif_receive_skb
|
||||
netif_rx
|
||||
netif_tx_wake_queue
|
||||
nla_memcpy
|
||||
nla_put
|
||||
nla_put_64bit
|
||||
nla_reserve
|
||||
noop_llseek
|
||||
nr_cpu_ids
|
||||
nsecs_to_jiffies
|
||||
|
@ -531,7 +556,6 @@
|
|||
of_find_node_by_type
|
||||
of_find_node_opts_by_path
|
||||
of_find_property
|
||||
of_fwnode_ops
|
||||
of_get_child_by_name
|
||||
of_get_named_gpio
|
||||
of_get_next_available_child
|
||||
|
@ -563,6 +587,7 @@
|
|||
of_reserved_mem_device_release
|
||||
of_reserved_mem_lookup
|
||||
of_root
|
||||
on_each_cpu_cond_mask
|
||||
panic
|
||||
panic_notifier_list
|
||||
param_array_ops
|
||||
|
@ -591,9 +616,9 @@
|
|||
perf_event_release_kernel
|
||||
perf_trace_buf_alloc
|
||||
perf_trace_run_bpf_submit
|
||||
pfn_is_map_memory
|
||||
phy_power_off
|
||||
phy_power_on
|
||||
phy_set_mode_ext
|
||||
pinconf_generic_dt_node_to_map
|
||||
pinctrl_dev_get_drvdata
|
||||
pinctrl_lookup_state
|
||||
|
@ -629,7 +654,7 @@
|
|||
power_supply_changed
|
||||
power_supply_get_by_name
|
||||
power_supply_get_drvdata
|
||||
power_supply_get_property
|
||||
power_supply_put
|
||||
power_supply_register
|
||||
power_supply_set_property
|
||||
power_supply_unregister
|
||||
|
@ -659,13 +684,17 @@
|
|||
_raw_read_unlock
|
||||
_raw_read_unlock_irqrestore
|
||||
_raw_spin_lock
|
||||
_raw_spin_lock_bh
|
||||
_raw_spin_lock_irq
|
||||
_raw_spin_lock_irqsave
|
||||
_raw_spin_trylock
|
||||
_raw_spin_unlock
|
||||
_raw_spin_unlock_bh
|
||||
_raw_spin_unlock_irq
|
||||
_raw_spin_unlock_irqrestore
|
||||
_raw_write_lock
|
||||
_raw_write_lock_irqsave
|
||||
_raw_write_unlock
|
||||
_raw_write_unlock_irqrestore
|
||||
rb_erase
|
||||
rb_insert_color
|
||||
|
@ -684,6 +713,7 @@
|
|||
register_die_notifier
|
||||
register_kretprobe
|
||||
register_netdev
|
||||
register_netdevice
|
||||
register_pm_notifier
|
||||
register_reboot_notifier
|
||||
register_restart_handler
|
||||
|
@ -708,13 +738,16 @@
|
|||
remove_proc_entry
|
||||
request_firmware
|
||||
request_firmware_direct
|
||||
request_firmware_nowait
|
||||
__request_region
|
||||
request_threaded_irq
|
||||
return_address
|
||||
rps_needed
|
||||
rtc_class_close
|
||||
rtc_class_open
|
||||
rtc_read_time
|
||||
rtc_time64_to_tm
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
runqueues
|
||||
|
@ -730,6 +763,7 @@
|
|||
set_cpus_allowed_ptr
|
||||
set_normalized_timespec64
|
||||
sg_alloc_table
|
||||
sg_alloc_table_from_pages_segment
|
||||
sg_free_table
|
||||
sg_init_table
|
||||
sg_next
|
||||
|
@ -745,6 +779,7 @@
|
|||
single_open
|
||||
single_release
|
||||
skb_clone
|
||||
skb_copy_bits
|
||||
skb_copy_expand
|
||||
skb_dequeue
|
||||
skb_dequeue_tail
|
||||
|
@ -821,7 +856,9 @@
|
|||
subsys_system_register
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
__sw_hweight8
|
||||
sync_file_create
|
||||
synchronize_net
|
||||
synchronize_rcu
|
||||
syscon_regmap_lookup_by_phandle
|
||||
sysfs_add_file_to_group
|
||||
|
@ -834,9 +871,11 @@
|
|||
sysfs_emit
|
||||
sysfs_remove_file_ns
|
||||
sysfs_remove_group
|
||||
sysfs_remove_link
|
||||
system_cpucaps
|
||||
system_highpri_wq
|
||||
system_long_wq
|
||||
system_power_efficient_wq
|
||||
system_state
|
||||
system_unbound_wq
|
||||
system_wq
|
||||
|
@ -863,6 +902,7 @@
|
|||
__traceiter_android_vh_cpu_idle_exit
|
||||
__traceiter_android_vh_cpuidle_psci_enter
|
||||
__traceiter_android_vh_cpuidle_psci_exit
|
||||
__traceiter_android_vh_is_fpsimd_save
|
||||
__traceiter_clock_set_rate
|
||||
__traceiter_device_pm_callback_end
|
||||
__traceiter_device_pm_callback_start
|
||||
|
@ -872,6 +912,7 @@
|
|||
__tracepoint_android_vh_cpu_idle_exit
|
||||
__tracepoint_android_vh_cpuidle_psci_enter
|
||||
__tracepoint_android_vh_cpuidle_psci_exit
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
__tracepoint_clock_set_rate
|
||||
__tracepoint_device_pm_callback_end
|
||||
__tracepoint_device_pm_callback_start
|
||||
|
@ -888,6 +929,7 @@
|
|||
unregister_chrdev_region
|
||||
unregister_kretprobe
|
||||
unregister_netdev
|
||||
unregister_netdevice_queue
|
||||
unregister_pm_notifier
|
||||
unregister_reboot_notifier
|
||||
up
|
||||
|
@ -936,6 +978,7 @@
|
|||
v4l2_m2m_reqbufs
|
||||
v4l2_m2m_streamoff
|
||||
v4l2_m2m_streamon
|
||||
v4l2_subdev_init
|
||||
v4l_bound_align_image
|
||||
vb2_buffer_done
|
||||
vb2_dma_sg_memops
|
||||
|
@ -972,6 +1015,57 @@
|
|||
wakeup_source_register
|
||||
wakeup_source_unregister
|
||||
__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
|
||||
clk_hw_get_parent
|
||||
|
@ -1015,9 +1109,9 @@
|
|||
drm_modeset_lock_single_interruptible
|
||||
drm_object_property_set_value
|
||||
__drm_printfn_debug
|
||||
hdmi_drm_infoframe_init
|
||||
i2c_add_adapter
|
||||
memchr_inv
|
||||
__sw_hweight8
|
||||
|
||||
# required by drm_ttm_helper.ko
|
||||
drm_print_bits
|
||||
|
@ -1037,7 +1131,6 @@
|
|||
kstat
|
||||
nr_irqs
|
||||
register_console
|
||||
return_address
|
||||
stack_trace_save_tsk
|
||||
touch_softlockup_watchdog
|
||||
__traceiter_android_rvh_arm64_serror_panic
|
||||
|
@ -1045,6 +1138,8 @@
|
|||
__traceiter_android_rvh_do_el1_undef
|
||||
__traceiter_android_rvh_handle_bad_stack
|
||||
__traceiter_android_vh_ipi_stop
|
||||
__traceiter_android_vh_logbuf
|
||||
__traceiter_android_vh_logbuf_pr_cont
|
||||
__traceiter_irq_handler_entry
|
||||
__traceiter_irq_handler_exit
|
||||
__traceiter_rwmmio_post_read
|
||||
|
@ -1056,6 +1151,8 @@
|
|||
__tracepoint_android_rvh_do_el1_undef
|
||||
__tracepoint_android_rvh_handle_bad_stack
|
||||
__tracepoint_android_vh_ipi_stop
|
||||
__tracepoint_android_vh_logbuf
|
||||
__tracepoint_android_vh_logbuf_pr_cont
|
||||
__tracepoint_irq_handler_entry
|
||||
__tracepoint_irq_handler_exit
|
||||
__tracepoint_rwmmio_post_read
|
||||
|
@ -1065,12 +1162,15 @@
|
|||
|
||||
# required by dwc3-exynos-usb.ko
|
||||
device_create_managed_software_node
|
||||
device_property_present
|
||||
platform_device_add
|
||||
platform_device_add_resources
|
||||
platform_device_alloc
|
||||
platform_device_del
|
||||
platform_device_put
|
||||
pm_runtime_allow
|
||||
__traceiter_dwc3_ep_queue
|
||||
__tracepoint_dwc3_ep_queue
|
||||
usb_gadget_set_state
|
||||
usb_otg_state_string
|
||||
usb_role_switch_set_role
|
||||
|
@ -1083,10 +1183,6 @@
|
|||
arch_freq_scale
|
||||
available_idle_cpu
|
||||
balance_push_callback
|
||||
bpf_trace_run11
|
||||
bpf_trace_run8
|
||||
cgroup_taskset_first
|
||||
cgroup_taskset_next
|
||||
check_preempt_curr
|
||||
cpufreq_add_update_util_hook
|
||||
cpufreq_disable_fast_switch
|
||||
|
@ -1096,7 +1192,6 @@
|
|||
cpufreq_register_governor
|
||||
cpufreq_remove_update_util_hook
|
||||
cpufreq_this_cpu_can_update
|
||||
__cpuhp_remove_state
|
||||
cpuidle_governor_latency_req
|
||||
cpuidle_register_governor
|
||||
cpupri_find_fitness
|
||||
|
@ -1113,7 +1208,6 @@
|
|||
memory_read_from_buffer
|
||||
migrate_swap
|
||||
ns_capable
|
||||
pfn_is_map_memory
|
||||
pick_highest_pushable_task
|
||||
__put_cred
|
||||
raw_spin_rq_lock_nested
|
||||
|
@ -1155,7 +1249,6 @@
|
|||
__traceiter_android_rvh_select_task_rq_rt
|
||||
__traceiter_android_rvh_try_to_wake_up
|
||||
__traceiter_android_rvh_uclamp_eff_get
|
||||
__traceiter_android_rvh_update_cpu_capacity
|
||||
__traceiter_android_rvh_update_misfit_status
|
||||
__traceiter_android_rvh_wake_up_new_task
|
||||
__traceiter_android_vh_binder_restore_priority
|
||||
|
@ -1164,7 +1257,6 @@
|
|||
__traceiter_android_vh_scheduler_tick
|
||||
__traceiter_android_vh_syscall_prctl_finished
|
||||
__traceiter_binder_transaction_received
|
||||
__traceiter_cpu_frequency_limits
|
||||
__tracepoint_android_rvh_can_migrate_task
|
||||
__tracepoint_android_rvh_check_preempt_wakeup
|
||||
__tracepoint_android_rvh_cpu_cgroup_attach
|
||||
|
@ -1186,7 +1278,6 @@
|
|||
__tracepoint_android_rvh_select_task_rq_rt
|
||||
__tracepoint_android_rvh_try_to_wake_up
|
||||
__tracepoint_android_rvh_uclamp_eff_get
|
||||
__tracepoint_android_rvh_update_cpu_capacity
|
||||
__tracepoint_android_rvh_update_misfit_status
|
||||
__tracepoint_android_rvh_wake_up_new_task
|
||||
__tracepoint_android_vh_binder_restore_priority
|
||||
|
@ -1195,7 +1286,6 @@
|
|||
__tracepoint_android_vh_scheduler_tick
|
||||
__tracepoint_android_vh_syscall_prctl_finished
|
||||
__tracepoint_binder_transaction_received
|
||||
__tracepoint_cpu_frequency_limits
|
||||
uclamp_eff_value
|
||||
update_rq_clock
|
||||
wake_up_if_idle
|
||||
|
@ -1214,7 +1304,6 @@
|
|||
# required by exynos-coresight-etm.ko
|
||||
__cpuhp_setup_state_cpuslocked
|
||||
|
||||
|
||||
# required by exynos-cpufreq.ko
|
||||
cpufreq_freq_transition_begin
|
||||
cpufreq_freq_transition_end
|
||||
|
@ -1238,6 +1327,7 @@
|
|||
__tracepoint_ipi_raise
|
||||
|
||||
# required by exynos-drm.ko
|
||||
class_create_file_ns
|
||||
component_add
|
||||
component_bind_all
|
||||
component_del
|
||||
|
@ -1249,6 +1339,7 @@
|
|||
devm_drm_panel_bridge_add_typed
|
||||
__do_once_done
|
||||
__do_once_start
|
||||
drm_add_edid_modes
|
||||
drm_atomic_add_affected_connectors
|
||||
drm_atomic_add_affected_planes
|
||||
drm_atomic_bridge_chain_disable
|
||||
|
@ -1295,6 +1386,8 @@
|
|||
drm_bridge_add
|
||||
drm_bridge_attach
|
||||
drm_bridge_chain_mode_set
|
||||
drm_connector_atomic_hdr_metadata_equal
|
||||
drm_connector_attach_hdr_output_metadata_property
|
||||
drm_connector_init
|
||||
drm_crtc_enable_color_mgmt
|
||||
drm_crtc_handle_vblank
|
||||
|
@ -1305,6 +1398,7 @@
|
|||
drm_crtc_vblank_on
|
||||
drm_crtc_vblank_put
|
||||
drm_display_mode_to_videomode
|
||||
drm_edid_to_sad
|
||||
drm_format_info
|
||||
drm_framebuffer_init
|
||||
drm_gem_create_mmap_offset
|
||||
|
@ -1320,17 +1414,22 @@
|
|||
drm_kms_helper_poll_fini
|
||||
drm_kms_helper_poll_init
|
||||
__drmm_add_action_or_reset
|
||||
drm_match_cea_mode
|
||||
__drmm_crtc_alloc_with_planes
|
||||
__drmm_encoder_alloc
|
||||
drmm_kmalloc
|
||||
drm_mode_config_helper_resume
|
||||
drm_mode_config_helper_suspend
|
||||
drm_mode_config_reset
|
||||
drm_mode_copy
|
||||
drm_mode_destroy
|
||||
drm_mode_is_420_only
|
||||
drm_modeset_acquire_fini
|
||||
drm_modeset_acquire_init
|
||||
drm_modeset_backoff
|
||||
drm_modeset_drop_locks
|
||||
drm_modeset_lock_all_ctx
|
||||
drm_mode_sort
|
||||
__drmm_universal_plane_alloc
|
||||
drm_plane_create_alpha_property
|
||||
drm_plane_create_blend_mode_property
|
||||
|
@ -1358,6 +1457,9 @@
|
|||
drm_writeback_cleanup_job
|
||||
drm_writeback_connector_init
|
||||
drm_writeback_queue_job
|
||||
get_options
|
||||
hdmi_drm_infoframe_pack_only
|
||||
irq_set_irq_type
|
||||
mipi_dsi_create_packet
|
||||
mipi_dsi_dcs_set_column_address
|
||||
mipi_dsi_dcs_set_page_address
|
||||
|
@ -1370,6 +1472,8 @@
|
|||
phy_init
|
||||
platform_find_device_by_driver
|
||||
seq_release
|
||||
strnchr
|
||||
v4l2_match_dv_timings
|
||||
|
||||
# required by exynos-dsufreq.ko
|
||||
nsec_to_clock_t
|
||||
|
@ -1381,30 +1485,33 @@
|
|||
# required by exynos-itmon-v2.ko
|
||||
int_pow
|
||||
|
||||
# required by exynos-mpam.ko
|
||||
kobject_move
|
||||
|
||||
# required by exynos-msc-dsu.ko
|
||||
bitmap_alloc
|
||||
|
||||
# required by exynos-pd.ko
|
||||
of_genpd_add_provider_simple
|
||||
pm_genpd_add_subdomain
|
||||
pm_genpd_init
|
||||
|
||||
# required by exynos-pkvm-module.ko
|
||||
__arm_smccc_hvc
|
||||
kimage_vaddr
|
||||
on_each_cpu_cond_mask
|
||||
__pkvm_load_el2_module
|
||||
__pkvm_register_el2_call
|
||||
|
||||
# required by exynos-pkvm-s2mpu.ko
|
||||
kvm_iommu_register_driver
|
||||
|
||||
# required by exynos-reboot.ko
|
||||
pm_power_off
|
||||
|
||||
# required by exynos-seh.ko
|
||||
dmam_free_coherent
|
||||
|
||||
# required by exynos-ssld.ko
|
||||
driver_register
|
||||
|
||||
# required by exynos-usb-audio-offloading.ko
|
||||
phy_set_mode_ext
|
||||
snd_ctl_add
|
||||
snd_ctl_new1
|
||||
snd_usb_autoresume
|
||||
|
@ -1413,8 +1520,6 @@
|
|||
usb_altnum_to_altsetting
|
||||
usb_choose_configuration
|
||||
usb_ifnum_to_if
|
||||
xhci_enable_interrupter
|
||||
xhci_get_endpoint_index
|
||||
xhci_get_ep_ctx
|
||||
|
||||
# required by exynos9955_sound.ko
|
||||
|
@ -1449,14 +1554,12 @@
|
|||
bpf_trace_run10
|
||||
devfreq_add_device
|
||||
devfreq_add_governor
|
||||
devfreq_monitor_stop
|
||||
devfreq_recommended_opp
|
||||
devfreq_register_opp_notifier
|
||||
devfreq_remove_device
|
||||
devfreq_unregister_opp_notifier
|
||||
dev_pm_opp_disable
|
||||
dev_pm_opp_get_freq_indexed
|
||||
perf_event_read_value
|
||||
update_devfreq
|
||||
|
||||
# required by exynos_mct_v3.ko
|
||||
|
@ -1470,6 +1573,30 @@
|
|||
hex_dump_to_buffer
|
||||
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
|
||||
devm_thermal_of_zone_register
|
||||
kthread_flush_work
|
||||
|
@ -1535,7 +1662,6 @@
|
|||
v4l2_device_set_name
|
||||
v4l2_device_unregister_subdev
|
||||
v4l2_subdev_call_wrappers
|
||||
v4l2_subdev_init
|
||||
vb2_mmap
|
||||
|
||||
# required by freq-qos-tracer.ko
|
||||
|
@ -1568,13 +1694,14 @@
|
|||
# required by hts.ko
|
||||
devm_devfreq_register_notifier
|
||||
kernel_cpustat
|
||||
kernfs_path_from_node
|
||||
__traceiter_android_rvh_cpufreq_transition
|
||||
__traceiter_android_vh_free_task
|
||||
__traceiter_android_vh_is_fpsimd_save
|
||||
__tracepoint_android_rvh_cpufreq_transition
|
||||
__tracepoint_android_vh_free_task
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
|
||||
# required by hwdecomp.ko
|
||||
lzo1x_decompress_safe
|
||||
|
||||
# required by i2c-dev.ko
|
||||
bus_register_notifier
|
||||
bus_unregister_notifier
|
||||
|
@ -1616,13 +1743,19 @@
|
|||
i3c_driver_register_with_owner
|
||||
i3c_driver_unregister
|
||||
|
||||
# required by lealt-mon.ko
|
||||
perf_event_read_value
|
||||
|
||||
# required by leds-s2mf301.ko
|
||||
devm_led_classdev_register_ext
|
||||
|
||||
# required by leds-s2mpb02.ko
|
||||
led_classdev_register_ext
|
||||
led_classdev_unregister
|
||||
|
||||
# required by mcDrvModule.ko
|
||||
crypto_shash_final
|
||||
crypto_shash_update
|
||||
down_read
|
||||
freezer_active
|
||||
freezing_slow_path
|
||||
get_zeroed_page
|
||||
|
@ -1653,17 +1786,15 @@
|
|||
rtc_set_time
|
||||
rtc_tm_to_time64
|
||||
sched_setscheduler
|
||||
sysfs_remove_link
|
||||
__wake_up_locked_key
|
||||
__wake_up_sync
|
||||
|
||||
# required by npu.ko
|
||||
class_register
|
||||
cpuidle_pause_and_lock
|
||||
cpuidle_resume_and_unlock
|
||||
vsprintf
|
||||
|
||||
# required by pablo-libs.ko
|
||||
bitmap_free
|
||||
bitmap_zalloc
|
||||
bsearch
|
||||
device_get_dma_attr
|
||||
__dynamic_pr_debug
|
||||
|
@ -1687,12 +1818,9 @@
|
|||
devm_gpiod_get
|
||||
devm_regulator_get_optional
|
||||
drm_bridge_remove
|
||||
drm_connector_attach_encoder
|
||||
drm_connector_update_edid_property
|
||||
drm_mode_convert_to_umode
|
||||
drm_mode_debug_printmodeline
|
||||
drm_mode_equal
|
||||
drm_mode_match
|
||||
drm_panel_add
|
||||
drm_panel_disable
|
||||
drm_panel_enable
|
||||
|
@ -1735,6 +1863,7 @@
|
|||
gpiochip_unlock_as_irq
|
||||
irq_domain_xlate_twocell
|
||||
irq_set_chained_handler_and_data
|
||||
of_fwnode_ops
|
||||
of_node_name_eq
|
||||
pinctrl_add_gpio_range
|
||||
pinctrl_force_sleep
|
||||
|
@ -1771,7 +1900,6 @@
|
|||
# required by s2mf301_mfd.ko
|
||||
i2c_new_dummy_device
|
||||
i2c_smbus_write_word_data
|
||||
i2c_unregister_device
|
||||
__irq_alloc_descs
|
||||
|
||||
# required by s2p_rtc.ko
|
||||
|
@ -1819,10 +1947,20 @@
|
|||
|
||||
# required by samsung_dma_heap.ko
|
||||
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_get_dev
|
||||
dma_heap_get_drvdata
|
||||
dma_heap_get_name
|
||||
is_dma_buf_file
|
||||
mod_node_page_state
|
||||
register_shrinker
|
||||
|
||||
# required by samsung_iommu_v9.ko
|
||||
device_link_add
|
||||
|
@ -1852,25 +1990,19 @@
|
|||
|
||||
# required by scsc_bt.ko
|
||||
crc_ccitt
|
||||
hci_recv_frame
|
||||
hci_uart_register_device_priv
|
||||
hci_uart_tx_wakeup
|
||||
hci_uart_unregister_device
|
||||
param_ops_ullong
|
||||
__serdev_device_driver_register
|
||||
skb_split
|
||||
tty_dev_name_to_number
|
||||
tty_kclose
|
||||
tty_kopen_exclusive
|
||||
tty_lock
|
||||
tty_mode_ioctl
|
||||
tty_register_ldisc
|
||||
tty_set_ldisc
|
||||
tty_set_termios
|
||||
tty_unlock
|
||||
tty_unregister_ldisc
|
||||
|
||||
# required by scsc_logring.ko
|
||||
dev_vprintk_emit
|
||||
vprintk_emit
|
||||
|
||||
# required by scsc_mx.ko
|
||||
genlmsg_multicast_allns
|
||||
__kfifo_from_user
|
||||
kobject_uevent
|
||||
|
||||
|
@ -1879,6 +2011,7 @@
|
|||
of_property_read_variable_u16_array
|
||||
pci_clear_master
|
||||
pci_enable_wake
|
||||
pci_load_and_free_saved_state
|
||||
pcim_enable_device
|
||||
pcim_iomap_regions
|
||||
pcim_iomap_table
|
||||
|
@ -1891,6 +2024,7 @@
|
|||
# required by scsc_wlan.ko
|
||||
arp_tbl
|
||||
dev_alloc_name
|
||||
dev_change_flags
|
||||
__dev_queue_xmit
|
||||
dev_set_threaded
|
||||
down_trylock
|
||||
|
@ -1912,29 +2046,29 @@
|
|||
__netif_napi_del
|
||||
netif_schedule_queue
|
||||
netif_tx_stop_all_queues
|
||||
netlink_broadcast
|
||||
nla_memcpy
|
||||
nla_put_64bit
|
||||
nla_put_nohdr
|
||||
nla_reserve
|
||||
_raw_read_lock_bh
|
||||
_raw_read_unlock_bh
|
||||
_raw_spin_lock_bh
|
||||
_raw_spin_unlock_bh
|
||||
_raw_write_lock
|
||||
_raw_write_lock_bh
|
||||
_raw_write_unlock
|
||||
_raw_write_unlock_bh
|
||||
register_inet6addr_notifier
|
||||
register_inetaddr_notifier
|
||||
register_netdevice
|
||||
rtnl_is_locked
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
synchronize_net
|
||||
unregister_inet6addr_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
|
||||
input_allocate_device
|
||||
|
@ -2007,14 +2141,10 @@
|
|||
drm_syncobj_replace_fence
|
||||
__fdget
|
||||
__folio_put
|
||||
gcd
|
||||
get_random_u32
|
||||
__get_task_comm
|
||||
handle_simple_irq
|
||||
ida_destroy
|
||||
idr_destroy
|
||||
idr_find
|
||||
idr_for_each
|
||||
idr_get_next
|
||||
idr_replace
|
||||
jiffies64_to_msecs
|
||||
|
@ -2053,7 +2183,6 @@
|
|||
seq_putc
|
||||
seq_write
|
||||
set_page_dirty
|
||||
sg_alloc_table_from_pages_segment
|
||||
shmem_file_setup
|
||||
shmem_read_mapping_page_gfp
|
||||
si_meminfo
|
||||
|
@ -2163,7 +2292,6 @@
|
|||
pm_runtime_get_if_active
|
||||
pm_wakeup_dev_event
|
||||
proc_symlink
|
||||
request_firmware_nowait
|
||||
snd_device_free
|
||||
snd_dma_alloc_dir_pages
|
||||
snd_dma_free_pages
|
||||
|
@ -2233,10 +2361,10 @@
|
|||
try_module_get
|
||||
|
||||
# required by ufs-exynos-core.ko
|
||||
blk_crypto_reprogram_all_keys
|
||||
blk_mq_unique_tag
|
||||
blk_queue_update_dma_alignment
|
||||
kobject_add
|
||||
kobject_init
|
||||
devm_blk_crypto_profile_init
|
||||
of_cpu_node_to_id
|
||||
__traceiter_android_vh_ufs_check_int_errors
|
||||
__traceiter_android_vh_ufs_compl_command
|
||||
|
@ -2286,9 +2414,6 @@
|
|||
usb_gstrings_attach
|
||||
usb_os_desc_prepare_interf_dir
|
||||
|
||||
# required by usb_notifier.ko
|
||||
power_supply_put
|
||||
|
||||
# required by usb_notify_layer.ko
|
||||
kthread_complete_and_exit
|
||||
usb_speed_string
|
||||
|
@ -2314,7 +2439,6 @@
|
|||
del_gendisk
|
||||
device_add_disk
|
||||
flush_dcache_page
|
||||
kstrtou16
|
||||
memparse
|
||||
memset64
|
||||
put_disk
|
||||
|
@ -2335,31 +2459,15 @@
|
|||
zs_pool_stats
|
||||
zs_unmap_object
|
||||
|
||||
# required by xhci-exynos-audio.ko
|
||||
dma_pool_alloc
|
||||
dma_pool_free
|
||||
__kmalloc_node
|
||||
# required by xhci-sideband.ko
|
||||
dma_get_sgtable_attrs
|
||||
kmalloc_node_trace
|
||||
xhci_add_endpoint
|
||||
xhci_create_secondary_interrupter
|
||||
xhci_disable_interrupter
|
||||
xhci_initialize_ring_info
|
||||
|
||||
# required by xhci-exynos.ko
|
||||
device_property_read_u32_array
|
||||
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
|
||||
xhci_remove_secondary_interrupter
|
||||
xhci_set_interrupter_moderation
|
||||
xhci_stop_endpoint_sync
|
||||
|
||||
# required by xperf.ko
|
||||
cpufreq_quick_get_max
|
||||
|
|
|
@ -1,19 +1,43 @@
|
|||
[abi_symbol_list]
|
||||
blkcg_activate_policy
|
||||
blkcg_deactivate_policy
|
||||
blkcg_root
|
||||
blkdev_get_by_path
|
||||
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_req_needs_zone_write_lock
|
||||
__blk_req_zone_write_lock
|
||||
__blk_req_zone_write_unlock
|
||||
caches_clean_inval_pou
|
||||
cleancache_register_ops
|
||||
copy_page
|
||||
_dev_alert
|
||||
__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_write_and_wait_range
|
||||
generic_perform_write
|
||||
getboottime64
|
||||
get_options
|
||||
__get_task_ioprio
|
||||
gpiochip_find
|
||||
gs_alloc_req
|
||||
gserial_free_line
|
||||
gserial_resume
|
||||
gserial_suspend
|
||||
gs_free_req
|
||||
kick_all_cpus_sync
|
||||
netlink_ack
|
||||
param_get_uint
|
||||
param_set_uint
|
||||
proc_set_size
|
||||
|
@ -36,21 +60,22 @@
|
|||
__traceiter_android_rvh_do_sp_pc_abort
|
||||
__traceiter_android_rvh_panic_unhandled
|
||||
__traceiter_android_rvh_report_bug
|
||||
__traceiter_android_vh_cache_show
|
||||
__traceiter_android_vh_exit_mm
|
||||
__traceiter_android_vh_is_fpsimd_save
|
||||
__traceiter_android_vh_logbuf
|
||||
__traceiter_android_vh_logbuf_pr_cont
|
||||
__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_ptype_head
|
||||
__traceiter_android_vh_show_mem
|
||||
__traceiter_android_vh_show_smap
|
||||
__traceiter_android_vh_smaps_pte_entry
|
||||
__traceiter_android_vh_try_to_freeze_todo
|
||||
__traceiter_android_vh_try_to_freeze_todo_unfrozen
|
||||
__traceiter_android_vh_watchdog_timer_softlockup
|
||||
__traceiter_android_vh_meminfo_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_workqueue_execute_start
|
||||
__tracepoint_android_rvh_arm64_serror_panic
|
||||
|
@ -62,21 +87,22 @@
|
|||
__tracepoint_android_rvh_do_sp_pc_abort
|
||||
__tracepoint_android_rvh_panic_unhandled
|
||||
__tracepoint_android_rvh_report_bug
|
||||
__tracepoint_android_vh_cache_show
|
||||
__tracepoint_android_vh_exit_mm
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
__tracepoint_android_vh_logbuf
|
||||
__tracepoint_android_vh_logbuf_pr_cont
|
||||
__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_ptype_head
|
||||
__tracepoint_android_vh_show_mem
|
||||
__tracepoint_android_vh_show_smap
|
||||
__tracepoint_android_vh_smaps_pte_entry
|
||||
__tracepoint_android_vh_try_to_freeze_todo
|
||||
__tracepoint_android_vh_try_to_freeze_todo_unfrozen
|
||||
__tracepoint_android_vh_watchdog_timer_softlockup
|
||||
__tracepoint_android_vh_meminfo_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_workqueue_execute_start
|
||||
usb_set_device_state
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
proc_create_net_single_write
|
||||
snmp_fold_field
|
||||
call_usermodehelper
|
||||
pm_wakeup_irq
|
||||
nla_append
|
||||
skb_append
|
||||
sysctl_max_skb_frags
|
||||
|
@ -45,6 +46,10 @@
|
|||
drop_super
|
||||
mm_trace_rss_stat
|
||||
__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
|
||||
__traceiter_android_vh_shrink_slab_bypass
|
||||
__tracepoint_android_vh_do_shrink_slab
|
||||
|
|
|
@ -1528,7 +1528,7 @@
|
|||
of_irq_find_parent
|
||||
of_irq_get
|
||||
of_irq_get_byname
|
||||
of_machine_is_compatible
|
||||
of_machine_compatible_match
|
||||
of_match_device
|
||||
of_match_node
|
||||
__of_mdiobus_register
|
||||
|
|
|
@ -1714,7 +1714,6 @@
|
|||
of_irq_get_byname
|
||||
of_irq_parse_one
|
||||
of_irq_to_resource_table
|
||||
of_machine_is_compatible
|
||||
of_match_device
|
||||
of_match_node
|
||||
of_n_addr_cells
|
||||
|
|
|
@ -44,6 +44,9 @@
|
|||
generic_delete_inode
|
||||
__generic_file_fsync
|
||||
get_wchan
|
||||
gnet_stats_add_queue
|
||||
gnet_stats_copy_basic
|
||||
gnet_stats_copy_queue
|
||||
gov_attr_set_get
|
||||
gpiod_to_chip
|
||||
have_governor_per_policy
|
||||
|
@ -86,6 +89,7 @@
|
|||
memcg_kmem_online_key
|
||||
neigh_xmit
|
||||
netif_receive_skb_core
|
||||
__netif_schedule
|
||||
nf_ct_attach
|
||||
nf_ct_delete
|
||||
nf_register_net_hook
|
||||
|
@ -99,6 +103,7 @@
|
|||
nla_put_64bit
|
||||
nla_reserve
|
||||
nla_reserve_64bit
|
||||
noop_qdisc
|
||||
nop_mnt_idmap
|
||||
notify_change
|
||||
nr_running
|
||||
|
@ -108,6 +113,7 @@
|
|||
override_creds
|
||||
__page_file_index
|
||||
path_get
|
||||
pfifo_qdisc_ops
|
||||
platform_device_add
|
||||
platform_device_alloc
|
||||
platform_device_put
|
||||
|
@ -117,8 +123,18 @@
|
|||
prepare_to_wait_exclusive
|
||||
__printk_ratelimit
|
||||
proc_symlink
|
||||
psched_ratecfg_precompute
|
||||
public_key_verify_signature
|
||||
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_replace_slot
|
||||
_raw_write_trylock
|
||||
|
@ -153,6 +169,9 @@
|
|||
stack_depot_print
|
||||
task_rq_lock
|
||||
tcf_action_exec
|
||||
tcf_block_get
|
||||
tcf_block_put
|
||||
tcf_classify
|
||||
tcf_exts_destroy
|
||||
tcf_exts_dump
|
||||
tcf_exts_dump_stats
|
||||
|
@ -164,6 +183,7 @@
|
|||
__traceiter_android_rvh_post_init_entity_util_avg
|
||||
__traceiter_android_rvh_rtmutex_force_update
|
||||
__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_vh_account_process_tick_gran
|
||||
__traceiter_android_vh_add_page_to_lrulist
|
||||
|
@ -256,6 +276,7 @@
|
|||
__traceiter_android_vh_record_rtmutex_lock_starttime
|
||||
__traceiter_android_vh_record_rwsem_lock_starttime
|
||||
__traceiter_android_vh_reweight_entity
|
||||
__traceiter_android_vh_read_lazy_flag
|
||||
__traceiter_android_vh_rmqueue_bulk_bypass
|
||||
__traceiter_android_vh_rt_mutex_steal
|
||||
__traceiter_android_vh_rtmutex_waiter_prio
|
||||
|
@ -408,10 +429,12 @@
|
|||
__tracepoint_android_vh_rwsem_optimistic_rspin
|
||||
__tracepoint_android_vh_rwsem_opt_spin_finish
|
||||
__tracepoint_android_vh_rwsem_opt_spin_start
|
||||
__tracepoint_android_vh_read_lazy_flag
|
||||
__tracepoint_android_vh_save_track_hash
|
||||
__tracepoint_android_vh_save_vmalloc_stack
|
||||
__tracepoint_android_vh_sched_move_task
|
||||
__tracepoint_android_rvh_sched_setaffinity
|
||||
__tracepoint_android_vh_set_tsk_need_resched_lazy
|
||||
__tracepoint_android_vh_sched_setaffinity_early
|
||||
__tracepoint_android_vh_sched_stat_runtime_rt
|
||||
__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_register
|
||||
clk_hw_round_rate
|
||||
clk_hw_set_rate_range
|
||||
clk_hw_unregister
|
||||
__clk_is_enabled
|
||||
__clk_mux_determine_rate_closest
|
||||
clk_prepare
|
||||
clk_put
|
||||
clk_restore_context
|
||||
clk_round_rate
|
||||
clk_save_context
|
||||
clk_set_parent
|
||||
clk_set_rate
|
||||
clk_sync_state
|
||||
|
@ -803,6 +806,7 @@
|
|||
idr_preload
|
||||
idr_remove
|
||||
iio_read_channel_processed
|
||||
iio_write_channel_raw
|
||||
in4_pton
|
||||
inc_node_page_state
|
||||
in_egroup_p
|
||||
|
@ -1086,11 +1090,26 @@
|
|||
__mmap_lock_do_trace_released
|
||||
__mmap_lock_do_trace_start_locking
|
||||
mmc_cqe_request_done
|
||||
mmc_execute_tuning
|
||||
mmc_hs200_tuning
|
||||
mmc_issue_type
|
||||
mmc_of_parse
|
||||
mmc_regulator_get_supply
|
||||
mmc_regulator_set_ocr
|
||||
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_set_bus_mode
|
||||
mmc_set_bus_width
|
||||
mmc_set_clock
|
||||
mmc_set_initial_state
|
||||
mmc_set_timing
|
||||
__mmdrop
|
||||
mmput
|
||||
mod_delayed_work_on
|
||||
|
@ -1163,6 +1182,7 @@
|
|||
of_clk_add_provider
|
||||
of_clk_del_provider
|
||||
of_clk_get_from_provider
|
||||
of_clk_hw_onecell_get
|
||||
of_clk_hw_simple_get
|
||||
of_clk_src_simple_get
|
||||
of_count_phandle_with_args
|
||||
|
@ -1392,6 +1412,10 @@
|
|||
power_supply_reg_notifier
|
||||
power_supply_set_property
|
||||
power_supply_unreg_notifier
|
||||
powercap_register_control_type
|
||||
powercap_register_zone
|
||||
powercap_unregister_control_type
|
||||
powercap_unregister_zone
|
||||
preempt_schedule
|
||||
preempt_schedule_notrace
|
||||
prepare_to_wait_event
|
||||
|
@ -1909,8 +1933,12 @@
|
|||
__traceiter_android_rvh_iommu_iovad_init_alloc_algo
|
||||
__traceiter_android_rvh_iommu_limit_align_shift
|
||||
__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_new_task_stats
|
||||
__traceiter_android_rvh_preempt_disable
|
||||
__traceiter_android_rvh_preempt_enable
|
||||
__traceiter_android_rvh_replace_next_task_fair
|
||||
__traceiter_android_rvh_rto_next_cpu
|
||||
__traceiter_android_rvh_sched_cpu_dying
|
||||
|
@ -1957,6 +1985,7 @@
|
|||
__traceiter_android_vh_ipi_stop
|
||||
__traceiter_android_vh_jiffies_update
|
||||
__traceiter_android_vh_mmap_region
|
||||
__traceiter_android_vh_mmc_sdio_pm_flag_set
|
||||
__traceiter_android_vh_mpam_set
|
||||
__traceiter_android_vh_printk_hotplug
|
||||
__traceiter_android_vh_rproc_recovery
|
||||
|
@ -2005,8 +2034,12 @@
|
|||
__tracepoint_android_rvh_iommu_iovad_init_alloc_algo
|
||||
__tracepoint_android_rvh_iommu_limit_align_shift
|
||||
__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_new_task_stats
|
||||
__tracepoint_android_rvh_preempt_disable
|
||||
__tracepoint_android_rvh_preempt_enable
|
||||
__tracepoint_android_rvh_replace_next_task_fair
|
||||
__tracepoint_android_rvh_rto_next_cpu
|
||||
__tracepoint_android_rvh_sched_cpu_dying
|
||||
|
@ -2053,6 +2086,7 @@
|
|||
__tracepoint_android_vh_ipi_stop
|
||||
__tracepoint_android_vh_jiffies_update
|
||||
__tracepoint_android_vh_mmap_region
|
||||
__tracepoint_android_vh_mmc_sdio_pm_flag_set
|
||||
__tracepoint_android_vh_mpam_set
|
||||
__tracepoint_android_vh_printk_hotplug
|
||||
__tracepoint_android_vh_rproc_recovery
|
||||
|
@ -2191,6 +2225,8 @@
|
|||
usb_free_coherent
|
||||
usb_function_register
|
||||
usb_function_unregister
|
||||
usb_gadget_connect
|
||||
usb_gadget_disconnect
|
||||
usb_gadget_wakeup
|
||||
usb_hcd_is_primary_hcd
|
||||
usb_ifnum_to_if
|
||||
|
|
|
@ -262,6 +262,12 @@
|
|||
__traceiter_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
|
||||
led_get_default_pattern
|
||||
led_set_brightness
|
||||
|
@ -664,7 +670,6 @@
|
|||
of_clk_get_parent_count
|
||||
of_devfreq_cooling_register_power
|
||||
of_dma_is_coherent
|
||||
of_machine_is_compatible
|
||||
of_property_read_variable_u64_array
|
||||
of_property_read_variable_u8_array
|
||||
param_array_ops
|
||||
|
|
|
@ -54,11 +54,14 @@
|
|||
__traceiter_android_vh_do_swap_page
|
||||
__traceiter_android_vh_do_wp_page
|
||||
__traceiter_android_vh_dup_task_struct
|
||||
__traceiter_android_vh_filemap_update_page
|
||||
__traceiter_android_vh_free_task
|
||||
__traceiter_android_vh_fuse_request_end
|
||||
__traceiter_android_vh_irqtime_account_process_tick
|
||||
__traceiter_android_vh_look_around
|
||||
__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_mutex_init
|
||||
__traceiter_android_vh_mutex_unlock_slowpath
|
||||
|
@ -141,11 +144,14 @@
|
|||
__tracepoint_android_vh_do_swap_page
|
||||
__tracepoint_android_vh_do_wp_page
|
||||
__tracepoint_android_vh_dup_task_struct
|
||||
__tracepoint_android_vh_filemap_update_page
|
||||
__tracepoint_android_vh_free_task
|
||||
__tracepoint_android_vh_fuse_request_end
|
||||
__tracepoint_android_vh_irqtime_account_process_tick
|
||||
__tracepoint_android_vh_look_around
|
||||
__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_mutex_init
|
||||
__tracepoint_android_vh_mutex_unlock_slowpath
|
||||
|
|
|
@ -129,85 +129,138 @@
|
|||
#required by cifs.ko
|
||||
add_swap_extent
|
||||
asn1_ber_decoder
|
||||
bit_wait
|
||||
clear_nlink
|
||||
copy_page_from_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
|
||||
dentry_path_raw
|
||||
d_drop
|
||||
d_move
|
||||
d_hash_and_lookup
|
||||
d_alloc_parallel
|
||||
d_invalidate
|
||||
dup_iter
|
||||
end_page_writeback
|
||||
errseq_check
|
||||
extract_iter_to_sg
|
||||
fc_mount
|
||||
file_modified
|
||||
fs_param_is_bool
|
||||
fs_param_is_u32
|
||||
fs_param_is_u64
|
||||
fs_param_is_string
|
||||
file_write_and_wait_range
|
||||
filemap_dirty_folio
|
||||
filemap_fault
|
||||
filemap_get_folios_tag
|
||||
filemap_map_pages
|
||||
filemap_migrate_folio
|
||||
finish_no_open
|
||||
finish_open
|
||||
filemap_map_pages
|
||||
folio_wait_private_2
|
||||
flush_dcache_folio
|
||||
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
|
||||
generic_permission
|
||||
generic_file_write_iter
|
||||
generic_setlease
|
||||
generic_copy_file_range
|
||||
generic_file_write_iter
|
||||
generic_key_instantiate
|
||||
iov_iter_discard
|
||||
iov_iter_bvec
|
||||
iov_iter_get_pages_alloc2
|
||||
generic_permission
|
||||
generic_setlease
|
||||
iget_failed
|
||||
in_group_p
|
||||
invalidate_inode_pages2
|
||||
iov_iter_advance
|
||||
iov_iter_bvec
|
||||
iov_iter_discard
|
||||
iov_iter_get_pages_alloc2
|
||||
iov_iter_npages
|
||||
kfree_link
|
||||
key_type_logon
|
||||
iov_iter_xarray
|
||||
iterate_supers_type
|
||||
iunique
|
||||
key_invalidate
|
||||
key_revoke
|
||||
key_type_logon
|
||||
key_validate
|
||||
kfree_link
|
||||
kill_anon_super
|
||||
kvfree_sensitive
|
||||
lock_two_nondirectories
|
||||
lookup_positive_unlocked
|
||||
locks_lock_inode_wait
|
||||
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
|
||||
overflowgid
|
||||
override_creds
|
||||
posix_lock_file
|
||||
posix_test_lock
|
||||
prepare_kernel_cred
|
||||
put_fs_context
|
||||
readahead_expand
|
||||
redirty_page_for_writepage
|
||||
register_key_type
|
||||
request_key_tag
|
||||
revert_creds
|
||||
register_key_type
|
||||
sget
|
||||
set_anon_super
|
||||
super_setup_bdi
|
||||
seq_escape_mem
|
||||
setattr_copy
|
||||
sock_sendmsg
|
||||
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
|
||||
truncate_inode_pages_range
|
||||
tcp_sock_set_nodelay
|
||||
super_setup_bdi
|
||||
swapcache_mapping
|
||||
tcp_sock_set_cork
|
||||
tcp_sock_set_nodelay
|
||||
timestamp_truncate
|
||||
touch_atime
|
||||
truncate_inode_pages_range
|
||||
truncate_pagecache_range
|
||||
unlock_two_nondirectories
|
||||
utf8s_to_utf16s
|
||||
utf8_to_utf32
|
||||
unregister_key_type
|
||||
user_describe
|
||||
user_revoke
|
||||
user_destroy
|
||||
user_read
|
||||
vfs_setpos
|
||||
user_revoke
|
||||
utf8_to_utf32
|
||||
utf8s_to_utf16s
|
||||
vfs_parse_fs_string
|
||||
vfs_setpos
|
||||
wait_on_page_writeback
|
||||
__generic_file_write_iter
|
||||
__folio_lock_killable
|
||||
xa_extract
|
||||
xa_set_mark
|
||||
xas_find
|
||||
xas_find_marked
|
||||
xas_pause
|
||||
__break_lease
|
||||
__d_lookup_unhash_wake
|
||||
__filemap_get_folio
|
||||
__folio_lock_killable
|
||||
__folio_start_writeback
|
||||
__fs_parse
|
||||
__generic_file_write_iter
|
||||
__module_put_and_kthread_exit
|
||||
__page_file_index
|
||||
|
||||
# required by tls.ko
|
||||
tcp_rate_check_app_limited
|
||||
|
@ -281,3 +334,16 @@
|
|||
set_capacity
|
||||
blk_queue_flag_clear
|
||||
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_LOCALVERSION="-4k"
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
|
@ -47,7 +48,6 @@ CONFIG_EXPERT=y
|
|||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_RSEQ is not set
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_KEXEC_FILE=y
|
||||
CONFIG_ARCH_SUNXI=y
|
||||
CONFIG_ARCH_HISI=y
|
||||
CONFIG_ARCH_QCOM=y
|
||||
|
@ -104,6 +104,7 @@ CONFIG_BLK_DEV_ZONED=y
|
|||
CONFIG_BLK_DEV_THROTTLING=y
|
||||
CONFIG_BLK_WBT=y
|
||||
# CONFIG_BLK_WBT_MQ is not set
|
||||
CONFIG_BLK_CGROUP_IOCOST=y
|
||||
CONFIG_BLK_CGROUP_IOPRIO=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
||||
|
@ -597,6 +598,9 @@ CONFIG_IIO_TRIGGER=y
|
|||
CONFIG_PWM=y
|
||||
CONFIG_POWERCAP=y
|
||||
CONFIG_IDLE_INJECT=y
|
||||
CONFIG_DTPM=y
|
||||
CONFIG_DTPM_CPU=y
|
||||
CONFIG_DTPM_DEVFREQ=y
|
||||
CONFIG_ANDROID_BINDER_IPC=y
|
||||
CONFIG_ANDROID_BINDERFS=y
|
||||
CONFIG_ANDROID_DEBUG_SYMBOLS=y
|
||||
|
|
|
@ -394,31 +394,6 @@ int gzvm_vm_ioctl_arch_enable_cap(struct gzvm *gzvm,
|
|||
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,
|
||||
u64 nr_pages)
|
||||
{
|
||||
|
|
|
@ -129,4 +129,19 @@ HYP_EVENT(psci_mem_protect,
|
|||
),
|
||||
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
|
||||
|
|
|
@ -103,6 +103,8 @@ void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
|
|||
ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_SSBS) \
|
||||
)
|
||||
|
||||
#define PVM_ID_AA64PFR2_ALLOW (0ULL)
|
||||
|
||||
/*
|
||||
* Allow for protected VMs:
|
||||
* - Mixed-endian
|
||||
|
@ -135,6 +137,7 @@ void pkvm_host_reclaim_page(struct kvm *host_kvm, phys_addr_t ipa);
|
|||
* - Privileged Access Never
|
||||
* - SError interrupt exceptions from speculative reads
|
||||
* - Enhanced Translation Synchronization
|
||||
* - Control for cache maintenance permission
|
||||
*/
|
||||
#define PVM_ID_AA64MMFR1_ALLOW (\
|
||||
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_PAN) | \
|
||||
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) \
|
||||
)
|
||||
|
||||
#define PVM_ID_AA64MMFR3_ALLOW (0ULL)
|
||||
|
||||
/*
|
||||
* 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) \
|
||||
)
|
||||
|
||||
/* 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 (\
|
||||
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_FCMA) | \
|
||||
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 (\
|
||||
ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_ATS1A) | \
|
||||
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.
|
||||
*/
|
||||
|
|
|
@ -169,7 +169,7 @@ struct pkvm_module_ops {
|
|||
void (*update_hcr_el2)(unsigned long set_mask, unsigned long clear_mask);
|
||||
void (*update_hfgwtr_el2)(unsigned long set_mask, unsigned long clear_mask);
|
||||
int (*register_host_perm_fault_handler)(int (*cb)(struct 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 (*register_host_smc_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); \
|
||||
})
|
||||
|
||||
#define pkvm_register_el2_mod_call(hfn, token) \
|
||||
({ \
|
||||
__pkvm_register_el2_call(pkvm_el2_mod_va(hfn, token)); \
|
||||
})
|
||||
static inline int pkvm_register_el2_mod_call(dyn_hcall_t hfn,
|
||||
unsigned long token)
|
||||
{
|
||||
return __pkvm_register_el2_call(pkvm_el2_mod_va(hfn, token));
|
||||
}
|
||||
|
||||
#define pkvm_el2_mod_call(id, ...) \
|
||||
({ \
|
||||
|
|
|
@ -182,7 +182,7 @@ void mte_check_tfsr_el1(void);
|
|||
|
||||
static inline void mte_check_tfsr_entry(void)
|
||||
{
|
||||
if (!system_supports_mte())
|
||||
if (!kasan_hw_tags_enabled())
|
||||
return;
|
||||
|
||||
mte_check_tfsr_el1();
|
||||
|
@ -190,7 +190,7 @@ static inline void mte_check_tfsr_entry(void)
|
|||
|
||||
static inline void mte_check_tfsr_exit(void)
|
||||
{
|
||||
if (!system_supports_mte())
|
||||
if (!kasan_hw_tags_enabled())
|
||||
return;
|
||||
|
||||
/*
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
#include <linux/ratelimit.h>
|
||||
#include <linux/syscalls.h>
|
||||
|
||||
#include <trace/hooks/dtask.h>
|
||||
|
||||
#include <asm/daifflags.h>
|
||||
#include <asm/debug-monitors.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)
|
||||
{
|
||||
int thread_lazy_flag = 0;
|
||||
|
||||
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 */
|
||||
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 += --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
|
||||
# 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);
|
||||
write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
|
||||
}
|
||||
|
||||
if (cpus_have_final_cap(ARM64_HAS_HCX)) {
|
||||
u64 hcrx = HCRX_GUEST_FLAGS;
|
||||
if (vcpu_has_nv(vcpu) && !is_hyp_ctxt(vcpu)) {
|
||||
u64 clr = 0, set = 0;
|
||||
static inline void __activate_traps_hcrx(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
u64 hcrx = HCRX_GUEST_FLAGS;
|
||||
|
||||
compute_clr_set(vcpu, HCRX_EL2, clr, set);
|
||||
if (!cpus_have_final_cap(ARM64_HAS_HCX))
|
||||
return;
|
||||
|
||||
hcrx |= set;
|
||||
hcrx &= ~clr;
|
||||
}
|
||||
if (vcpu_has_nv(vcpu) && !is_hyp_ctxt(vcpu)) {
|
||||
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)
|
||||
|
@ -254,8 +257,6 @@ static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu)
|
|||
|
||||
if (cpus_have_final_cap(ARM64_HAS_HCX))
|
||||
write_sysreg_s(HCRX_HOST_FLAGS, SYS_HCRX_EL2);
|
||||
|
||||
__deactivate_traps_hfgxtr(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 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_dec(u64 n);
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
#include <asm/kvm_hyp.h>
|
||||
#include <asm/kvm_hypevents.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 *
|
||||
handle_to_domain(pkvm_handle_t domain_id)
|
||||
__handle_to_domain(pkvm_handle_t domain_id, bool alloc)
|
||||
{
|
||||
int idx;
|
||||
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;
|
||||
domains = (struct kvm_hyp_iommu_domain *)READ_ONCE(kvm_hyp_iommu_domains[idx]);
|
||||
if (!domains) {
|
||||
if (domain_id == KVM_IOMMU_DOMAIN_IDMAP_ID)
|
||||
domains = kvm_iommu_donate_pages_atomic(0);
|
||||
else
|
||||
domains = kvm_iommu_donate_page();
|
||||
|
||||
if (!alloc)
|
||||
return NULL;
|
||||
domains = kvm_iommu_donate_page();
|
||||
if (!domains)
|
||||
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,
|
||||
(void *)domains) != 0)) {
|
||||
if (domain_id == KVM_IOMMU_DOMAIN_IDMAP_ID)
|
||||
kvm_iommu_reclaim_pages_atomic(domains, 0);
|
||||
else
|
||||
kvm_iommu_reclaim_page(domains);
|
||||
kvm_iommu_reclaim_page(domains);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
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)
|
||||
return ret;
|
||||
|
||||
ret = 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));
|
||||
return refill_hyp_pool(&iommu_atomic_pool, 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))
|
||||
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,
|
||||
1 << get_order(KVM_IOMMU_DOMAINS_ROOT_SIZE));
|
||||
if (ret)
|
||||
|
@ -559,7 +550,11 @@ int kvm_iommu_init(struct kvm_iommu_ops *ops, struct kvm_hyp_memcache *atomic_mc
|
|||
smp_wmb();
|
||||
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)
|
||||
|
@ -586,9 +581,9 @@ void kvm_iommu_host_stage2_idmap(phys_addr_t start, phys_addr_t end,
|
|||
if (!kvm_iommu_is_ready())
|
||||
return;
|
||||
|
||||
domain = handle_to_domain(KVM_IOMMU_DOMAIN_IDMAP_ID);
|
||||
if (!domain)
|
||||
return;
|
||||
trace_iommu_idmap(start, end, prot);
|
||||
|
||||
domain = __handle_to_domain(KVM_IOMMU_DOMAIN_IDMAP_ID, false);
|
||||
|
||||
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,
|
||||
enum pkvm_page_state nopage_state)
|
||||
enum pkvm_page_state nopage_state, bool update_iommu)
|
||||
{
|
||||
kvm_pte_t annotation;
|
||||
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,
|
||||
addr, size, &host_s2_pool, annotation);
|
||||
}
|
||||
if (ret || !is_memory)
|
||||
if (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 */
|
||||
if (owner_id == PKVM_ID_HOST)
|
||||
__host_update_page_state(addr, size, PKVM_PAGE_OWNED);
|
||||
else
|
||||
__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;
|
||||
}
|
||||
|
||||
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)
|
||||
|
@ -2183,7 +2188,8 @@ int __pkvm_hyp_donate_host(u64 pfn, u64 nr_pages)
|
|||
KVM_PGTABLE_PROT_PXN | \
|
||||
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 end = addr + nr_pages * PAGE_SIZE;
|
||||
|
@ -2237,10 +2243,10 @@ update:
|
|||
if (!prot) {
|
||||
ret = __host_stage2_set_owner_locked(addr, nr_pages << PAGE_SHIFT,
|
||||
PKVM_ID_PROTECTED, !!reg,
|
||||
PKVM_MODULE_OWNED_PAGE);
|
||||
PKVM_MODULE_OWNED_PAGE, update_iommu);
|
||||
} else {
|
||||
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)
|
||||
|
@ -2378,7 +2384,7 @@ static int __pkvm_host_use_dma_page(phys_addr_t phys_addr)
|
|||
return 0;
|
||||
if (state != PKVM_PAGE_OWNED)
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -201,6 +201,10 @@ static void pvm_init_traps_aa64dfr0(struct kvm_vcpu *vcpu)
|
|||
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_clear;
|
||||
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))
|
||||
set_bit(KVM_ARM_VCPU_SVE, allowed_features);
|
||||
|
||||
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_API), PVM_ID_AA64ISAR1_ALLOW) &&
|
||||
FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_EL1_APA), 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_RESTRICT_UNSIGNED))
|
||||
set_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, allowed_features);
|
||||
|
||||
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 __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)
|
||||
{
|
||||
u64 val;
|
||||
|
@ -44,6 +90,13 @@ static void __activate_traps(struct kvm_vcpu *vcpu)
|
|||
___activate_traps(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 |= CPTR_EL2_TAM; /* Same bit irrespective of E2H */
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
kvm_reset_cptr_el2(vcpu);
|
||||
|
|
|
@ -148,6 +148,8 @@ void activate_traps_vhe_load(struct kvm_vcpu *vcpu)
|
|||
|
||||
local_irq_save(flags);
|
||||
__activate_traps_common(vcpu);
|
||||
__activate_traps_hcrx(vcpu);
|
||||
__activate_traps_hfgxtr(vcpu);
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
|
@ -157,6 +159,7 @@ void deactivate_traps_vhe_put(struct kvm_vcpu *vcpu)
|
|||
|
||||
local_irq_save(flags);
|
||||
__deactivate_traps_common(vcpu);
|
||||
__deactivate_traps_hfgxtr(vcpu);
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,6 @@ CONFIG_EXPERT=y
|
|||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_RSEQ is not set
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_KEXEC_FILE=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_X86_X2APIC=y
|
||||
CONFIG_HYPERVISOR_GUEST=y
|
||||
|
@ -96,6 +95,7 @@ CONFIG_BLK_DEV_ZONED=y
|
|||
CONFIG_BLK_DEV_THROTTLING=y
|
||||
CONFIG_BLK_WBT=y
|
||||
# CONFIG_BLK_WBT_MQ is not set
|
||||
CONFIG_BLK_CGROUP_IOCOST=y
|
||||
CONFIG_BLK_CGROUP_IOPRIO=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION=y
|
||||
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
|
||||
|
@ -535,6 +535,7 @@ CONFIG_IIO_TRIGGER=y
|
|||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_POWERCAP=y
|
||||
CONFIG_IDLE_INJECT=y
|
||||
CONFIG_DTPM=y
|
||||
CONFIG_ANDROID_BINDER_IPC=y
|
||||
CONFIG_ANDROID_BINDERFS=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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -48,6 +48,183 @@
|
|||
"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"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -1162,10 +1162,11 @@ static inline bool blk_mq_complete_need_ipi(struct request *rq)
|
|||
if (force_irqthreads())
|
||||
return false;
|
||||
|
||||
/* same CPU or cache domain? Complete locally */
|
||||
/* same CPU or cache domain and capacity? Complete locally */
|
||||
if (cpu == rq->mq_ctx->cpu ||
|
||||
(!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;
|
||||
|
||||
/* 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
|
||||
* the max zone append limit is set.
|
||||
*/
|
||||
if (!zone_sectors || !is_power_of_2(zone_sectors)) {
|
||||
pr_warn("%s: Invalid non power of two zone size (%llu)\n",
|
||||
disk->disk_name, zone_sectors);
|
||||
if (!zone_sectors) {
|
||||
pr_warn("%s: Invalid zone size\n", disk->disk_name);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
|
||||
|
||||
KMI_GENERATION=6
|
||||
KMI_GENERATION=7
|
||||
|
||||
BRANCH=android15-6.6
|
||||
LLVM=1
|
||||
|
|
|
@ -40,6 +40,183 @@
|
|||
"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"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -5621,7 +5621,7 @@ static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
goto err;
|
||||
break;
|
||||
case BINDER_SET_MAX_THREADS: {
|
||||
int max_threads;
|
||||
u32 max_threads;
|
||||
|
||||
if (copy_from_user(&max_threads, ubuf,
|
||||
sizeof(max_threads))) {
|
||||
|
|
|
@ -451,7 +451,7 @@ struct binder_proc {
|
|||
struct list_head todo;
|
||||
struct binder_stats stats;
|
||||
struct list_head delivered_death;
|
||||
int max_threads;
|
||||
u32 max_threads;
|
||||
int requested_threads;
|
||||
int requested_threads_started;
|
||||
int tmp_ref;
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
#include <trace/hooks/psci.h>
|
||||
#include <trace/hooks/timer.h>
|
||||
#include <trace/hooks/fpsimd.h>
|
||||
#include <trace/hooks/preemptirq.h>
|
||||
#include <trace/hooks/mm.h>
|
||||
#include <trace/hooks/fs.h>
|
||||
#include <trace/hooks/dtask.h>
|
||||
#include <trace/hooks/ftrace_dump.h>
|
||||
#include <trace/hooks/traps.h>
|
||||
|
@ -68,6 +70,7 @@
|
|||
#include <trace/hooks/sd.h>
|
||||
#include <trace/hooks/user.h>
|
||||
#include <trace/hooks/fuse.h>
|
||||
#include <trace/hooks/psi.h>
|
||||
|
||||
/*
|
||||
* 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_vh_gic_set_affinity);
|
||||
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_nanosleep_syscall);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rproc_recovery_set);
|
||||
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_slab_folio_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_oom_swapmem_gather_init);
|
||||
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_free_user);
|
||||
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_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_add_page_to_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_page_should_be_protected);
|
||||
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"
|
||||
}
|
||||
|
|
|
@ -32,6 +32,191 @@
|
|||
"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": [
|
||||
|
|
|
@ -1003,6 +1003,7 @@ unsigned int pm_wakeup_irq(void)
|
|||
{
|
||||
return wakeup_irq[0];
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pm_wakeup_irq);
|
||||
|
||||
/**
|
||||
* 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 &&
|
||||
(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) {
|
||||
ret_bus = kmemdup(bus, sizeof(*bus), GFP_KERNEL);
|
||||
|
|
|
@ -7,6 +7,191 @@
|
|||
"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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -32,6 +32,191 @@
|
|||
"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": [
|
||||
|
|
|
@ -32,6 +32,191 @@
|
|||
"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": [
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
MODULE_AUTHOR("Tom Lendacky <thomas.lendacky@amd.com>");
|
||||
MODULE_AUTHOR("Gary R Hook <gary.hook@amd.com>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
MODULE_VERSION("1.1.0");
|
||||
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"
|
||||
}
|
||||
|
|
|
@ -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_TRANSPORT_VIRTIO) += virtio.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)
|
||||
|
||||
obj-$(CONFIG_ARM_SCMI_PROTOCOL) += scmi-core.o
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
#include "common.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_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->minor_ver = PROTOCOL_REV_MINOR(version);
|
||||
ph->set_priv(ph, rev);
|
||||
ph->set_priv(ph, rev, version);
|
||||
|
||||
ret = scmi_base_attributes_get(ph);
|
||||
if (ret)
|
||||
|
@ -423,6 +426,7 @@ static const struct scmi_protocol scmi_base = {
|
|||
.instance_init = &scmi_base_protocol_init,
|
||||
.ops = NULL,
|
||||
.events = &base_protocol_events,
|
||||
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||
};
|
||||
|
||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(base, scmi_base)
|
||||
|
|
|
@ -12,6 +12,9 @@
|
|||
#include "protocols.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 {
|
||||
CLOCK_ATTRIBUTES = 0x3,
|
||||
CLOCK_DESCRIBE_RATES = 0x4,
|
||||
|
@ -25,8 +28,13 @@ enum scmi_clock_protocol_cmd {
|
|||
CLOCK_POSSIBLE_PARENTS_GET = 0xC,
|
||||
CLOCK_PARENT_SET = 0xD,
|
||||
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 {
|
||||
CLK_STATE_DISABLE,
|
||||
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_EXTENDED_NAMES(x) ((x) & BIT(29))
|
||||
#define SUPPORTS_PARENT_CLOCK(x) ((x) & BIT(28))
|
||||
#define SUPPORTS_GET_PERMISSIONS(x) ((x) & BIT(1))
|
||||
u8 name[SCMI_SHORT_NAME_MAX_SIZE];
|
||||
__le32 clock_enable_latency;
|
||||
};
|
||||
|
@ -164,6 +173,15 @@ static enum scmi_clock_protocol_cmd evt_2_cmd[] = {
|
|||
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
|
||||
scmi_clock_protocol_attributes_get(const struct scmi_protocol_handle *ph,
|
||||
struct clock_info *ci)
|
||||
|
@ -281,6 +299,35 @@ static int scmi_clock_possible_parents(const struct scmi_protocol_handle *ph, u3
|
|||
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,
|
||||
u32 clk_id, struct scmi_clock_info *clk,
|
||||
u32 version)
|
||||
|
@ -327,6 +374,8 @@ static int scmi_clock_attributes_get(const struct scmi_protocol_handle *ph,
|
|||
clk->rate_change_requested_notifications = true;
|
||||
if (SUPPORTS_PARENT_CLOCK(attributes))
|
||||
scmi_clock_possible_parents(ph, clk_id, clk);
|
||||
if (SUPPORTS_GET_PERMISSIONS(attributes))
|
||||
scmi_clock_get_permissions(ph, clk_id, clk);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -499,6 +548,14 @@ static int scmi_clock_rate_set(const struct scmi_protocol_handle *ph,
|
|||
struct scmi_xfer *t;
|
||||
struct scmi_clock_set_rate *cfg;
|
||||
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);
|
||||
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 scmi_clock_info *clk;
|
||||
|
||||
if (clk_id >= ci->num_clocks)
|
||||
return -EINVAL;
|
||||
|
||||
clk = ci->clk + clk_id;
|
||||
clk = scmi_clock_domain_lookup(ci, clk_id);
|
||||
if (IS_ERR(clk))
|
||||
return PTR_ERR(clk);
|
||||
|
||||
if (parent_id >= clk->num_parents)
|
||||
return -EINVAL;
|
||||
|
||||
if (clk->parent_ctrl_forbidden)
|
||||
return -EACCES;
|
||||
|
||||
ret = ph->xops->xfer_get_init(ph, CLOCK_PARENT_SET,
|
||||
sizeof(*cfg), 0, &t);
|
||||
if (ret)
|
||||
|
@ -668,6 +727,14 @@ static int scmi_clock_enable(const struct scmi_protocol_handle *ph, u32 clk_id,
|
|||
bool atomic)
|
||||
{
|
||||
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,
|
||||
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)
|
||||
{
|
||||
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,
|
||||
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 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;
|
||||
|
||||
clk = ci->clk + clk_id;
|
||||
if (!clk->name[0])
|
||||
return NULL;
|
||||
|
||||
|
@ -961,7 +1036,7 @@ static int scmi_clock_protocol_init(const struct scmi_protocol_handle *ph)
|
|||
}
|
||||
|
||||
cinfo->version = version;
|
||||
return ph->set_priv(ph, cinfo);
|
||||
return ph->set_priv(ph, cinfo, version);
|
||||
}
|
||||
|
||||
static const struct scmi_protocol scmi_clock = {
|
||||
|
@ -970,6 +1045,7 @@ static const struct scmi_protocol scmi_clock = {
|
|||
.instance_init = &scmi_clock_protocol_init,
|
||||
.ops = &clk_proto_ops,
|
||||
.events = &clk_protocol_events,
|
||||
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||
};
|
||||
|
||||
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,
|
||||
struct scmi_xfer *xfer);
|
||||
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 */
|
||||
struct scmi_msg_payld;
|
||||
|
|
|
@ -85,6 +85,7 @@ struct scmi_xfers_info {
|
|||
* @gid: A reference for per-protocol devres management.
|
||||
* @users: A refcount to track effective users of this protocol.
|
||||
* @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
|
||||
* initialization code to identify this instance.
|
||||
*
|
||||
|
@ -97,6 +98,7 @@ struct scmi_protocol_instance {
|
|||
void *gid;
|
||||
refcount_t users;
|
||||
void *priv;
|
||||
unsigned int version;
|
||||
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.
|
||||
* @priv: The private data to set.
|
||||
* @version: The detected protocol version for the core to register.
|
||||
*
|
||||
* Return: 0 on Success
|
||||
*/
|
||||
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);
|
||||
|
||||
pi->priv = priv;
|
||||
pi->version = version;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1477,6 +1481,20 @@ out:
|
|||
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
|
||||
* @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 = {
|
||||
.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_run = scmi_iterator_run,
|
||||
.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);
|
||||
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;
|
||||
|
||||
clean:
|
||||
|
@ -3026,6 +3051,7 @@ static int __init scmi_driver_init(void)
|
|||
scmi_voltage_register();
|
||||
scmi_system_register();
|
||||
scmi_powercap_register();
|
||||
scmi_pinctrl_register();
|
||||
|
||||
return platform_driver_register(&scmi_driver);
|
||||
}
|
||||
|
@ -3043,6 +3069,7 @@ static void __exit scmi_driver_exit(void)
|
|||
scmi_voltage_unregister();
|
||||
scmi_system_unregister();
|
||||
scmi_powercap_unregister();
|
||||
scmi_pinctrl_unregister();
|
||||
|
||||
scmi_transports_exit();
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
* @cl: Mailbox Client
|
||||
* @chan: Transmit/Receive mailbox uni/bi-directional channel
|
||||
* @chan_receiver: Optional Receiver mailbox unidirectional channel
|
||||
* @chan_platform_receiver: Optional Platform Receiver mailbox unidirectional channel
|
||||
* @cinfo: SCMI channel info
|
||||
* @shmem: Transmit/Receive shared memory area
|
||||
*/
|
||||
|
@ -28,6 +29,7 @@ struct scmi_mailbox {
|
|||
struct mbox_client cl;
|
||||
struct mbox_chan *chan;
|
||||
struct mbox_chan *chan_receiver;
|
||||
struct mbox_chan *chan_platform_receiver;
|
||||
struct scmi_chan_info *cinfo;
|
||||
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.
|
||||
* @p2a_chan: A reference to the optional p2a channel.
|
||||
* 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
|
||||
* '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
|
||||
*/
|
||||
static int mailbox_chan_validate(struct device *cdev,
|
||||
int *a2p_rx_chan, int *p2a_chan)
|
||||
static int mailbox_chan_validate(struct device *cdev, int *a2p_rx_chan,
|
||||
int *p2a_chan, int *p2a_rx_chan)
|
||||
{
|
||||
int num_mb, num_sh, ret = 0;
|
||||
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);
|
||||
|
||||
/* Bail out if mboxes and shmem descriptors are inconsistent */
|
||||
if (num_mb <= 0 || num_sh <= 0 || num_sh > 2 || num_mb > 3 ||
|
||||
(num_mb == 1 && num_sh != 1) || (num_mb == 3 && num_sh != 2)) {
|
||||
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 == 4 && num_sh != 2)) {
|
||||
dev_warn(cdev,
|
||||
"Invalid channel descriptor for '%s' - mbs:%d shm:%d\n",
|
||||
of_node_full_name(np), num_mb, num_sh);
|
||||
|
@ -136,6 +141,7 @@ static int mailbox_chan_validate(struct device *cdev,
|
|||
case 1:
|
||||
*a2p_rx_chan = 0;
|
||||
*p2a_chan = 0;
|
||||
*p2a_rx_chan = 0;
|
||||
break;
|
||||
case 2:
|
||||
if (num_sh == 2) {
|
||||
|
@ -145,10 +151,17 @@ static int mailbox_chan_validate(struct device *cdev,
|
|||
*a2p_rx_chan = 1;
|
||||
*p2a_chan = 0;
|
||||
}
|
||||
*p2a_rx_chan = 0;
|
||||
break;
|
||||
case 3:
|
||||
*a2p_rx_chan = 1;
|
||||
*p2a_chan = 2;
|
||||
*p2a_rx_chan = 0;
|
||||
break;
|
||||
case 4:
|
||||
*a2p_rx_chan = 1;
|
||||
*p2a_chan = 2;
|
||||
*p2a_rx_chan = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -163,12 +176,12 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
|
|||
struct device *cdev = cinfo->dev;
|
||||
struct scmi_mailbox *smbox;
|
||||
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;
|
||||
resource_size_t size;
|
||||
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)
|
||||
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;
|
||||
smbox->cinfo = cinfo;
|
||||
|
||||
|
@ -240,9 +264,11 @@ static int mailbox_chan_free(int id, void *p, void *data)
|
|||
if (smbox && !IS_ERR(smbox->chan)) {
|
||||
mbox_free_channel(smbox->chan);
|
||||
mbox_free_channel(smbox->chan_receiver);
|
||||
mbox_free_channel(smbox->chan_platform_receiver);
|
||||
cinfo->transport_info = NULL;
|
||||
smbox->chan = NULL;
|
||||
smbox->chan_receiver = NULL;
|
||||
smbox->chan_platform_receiver = 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)
|
||||
{
|
||||
struct scmi_mailbox *smbox = cinfo->transport_info;
|
||||
struct device *cdev = cinfo->dev;
|
||||
struct mbox_chan *intr;
|
||||
int ret;
|
||||
|
||||
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
|
||||
|
|
|
@ -24,7 +24,10 @@
|
|||
#include "protocols.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 {
|
||||
PERF_DOMAIN_ATTRIBUTES = 0x3,
|
||||
|
@ -1111,7 +1114,7 @@ static int scmi_perf_protocol_init(const struct scmi_protocol_handle *ph)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
return ph->set_priv(ph, pinfo);
|
||||
return ph->set_priv(ph, pinfo, version);
|
||||
}
|
||||
|
||||
static const struct scmi_protocol scmi_perf = {
|
||||
|
@ -1120,6 +1123,7 @@ static const struct scmi_protocol scmi_perf = {
|
|||
.instance_init = &scmi_perf_protocol_init,
|
||||
.ops = &perf_proto_ops,
|
||||
.events = &perf_protocol_events,
|
||||
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||
};
|
||||
|
||||
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 "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 {
|
||||
POWER_DOMAIN_ATTRIBUTES = 0x3,
|
||||
POWER_STATE_SET = 0x4,
|
||||
|
@ -328,7 +331,7 @@ static int scmi_power_protocol_init(const struct scmi_protocol_handle *ph)
|
|||
|
||||
pinfo->version = version;
|
||||
|
||||
return ph->set_priv(ph, pinfo);
|
||||
return ph->set_priv(ph, pinfo, version);
|
||||
}
|
||||
|
||||
static const struct scmi_protocol scmi_power = {
|
||||
|
@ -337,6 +340,7 @@ static const struct scmi_protocol scmi_power = {
|
|||
.instance_init = &scmi_power_protocol_init,
|
||||
.ops = &power_proto_ops,
|
||||
.events = &power_protocol_events,
|
||||
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||
};
|
||||
|
||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(power, scmi_power)
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
#include "protocols.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 {
|
||||
POWERCAP_DOMAIN_ATTRIBUTES = 0x3,
|
||||
POWERCAP_CAP_GET = 0x4,
|
||||
|
@ -975,7 +978,7 @@ scmi_powercap_protocol_init(const struct scmi_protocol_handle *ph)
|
|||
}
|
||||
|
||||
pinfo->version = version;
|
||||
return ph->set_priv(ph, pinfo);
|
||||
return ph->set_priv(ph, pinfo, version);
|
||||
}
|
||||
|
||||
static const struct scmi_protocol scmi_powercap = {
|
||||
|
@ -984,6 +987,7 @@ static const struct scmi_protocol scmi_powercap = {
|
|||
.instance_init = &scmi_powercap_protocol_init,
|
||||
.ops = &powercap_proto_ops,
|
||||
.events = &powercap_protocol_events,
|
||||
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||
};
|
||||
|
||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(powercap, scmi_powercap)
|
||||
|
|
|
@ -174,7 +174,8 @@ struct scmi_protocol_handle {
|
|||
struct device *dev;
|
||||
const struct scmi_xfer_ops *xops;
|
||||
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);
|
||||
};
|
||||
|
||||
|
@ -253,6 +254,7 @@ struct scmi_fc_info {
|
|||
* @fastchannel_init: A common helper used to initialize FC descriptors by
|
||||
* gathering FC descriptions from the SCMI platform server.
|
||||
* @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 {
|
||||
int (*extended_name_get)(const struct scmi_protocol_handle *ph,
|
||||
|
@ -269,6 +271,7 @@ struct scmi_proto_helpers_ops {
|
|||
void __iomem **p_addr,
|
||||
struct scmi_fc_db_info **p_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
|
||||
* exposed in scmi_protocol.h.
|
||||
* @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 {
|
||||
const u8 id;
|
||||
|
@ -319,6 +326,7 @@ struct scmi_protocol {
|
|||
const scmi_prot_init_ph_fn_t instance_deinit;
|
||||
const void *ops;
|
||||
const struct scmi_protocol_events *events;
|
||||
unsigned int supported_version;
|
||||
};
|
||||
|
||||
#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(clock);
|
||||
DECLARE_SCMI_REGISTER_UNREGISTER(perf);
|
||||
DECLARE_SCMI_REGISTER_UNREGISTER(pinctrl);
|
||||
DECLARE_SCMI_REGISTER_UNREGISTER(power);
|
||||
DECLARE_SCMI_REGISTER_UNREGISTER(reset);
|
||||
DECLARE_SCMI_REGISTER_UNREGISTER(sensors);
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
#include "protocols.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 {
|
||||
RESET_DOMAIN_ATTRIBUTES = 0x3,
|
||||
RESET = 0x4,
|
||||
|
@ -343,7 +346,7 @@ static int scmi_reset_protocol_init(const struct scmi_protocol_handle *ph)
|
|||
}
|
||||
|
||||
pinfo->version = version;
|
||||
return ph->set_priv(ph, pinfo);
|
||||
return ph->set_priv(ph, pinfo, version);
|
||||
}
|
||||
|
||||
static const struct scmi_protocol scmi_reset = {
|
||||
|
@ -352,6 +355,7 @@ static const struct scmi_protocol scmi_reset = {
|
|||
.instance_init = &scmi_reset_protocol_init,
|
||||
.ops = &reset_proto_ops,
|
||||
.events = &reset_protocol_events,
|
||||
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||
};
|
||||
|
||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(reset, scmi_reset)
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
#include "protocols.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 SCMIv2_SENSOR_PROTOCOL 0x10000
|
||||
|
||||
|
@ -1138,7 +1141,7 @@ static int scmi_sensors_protocol_init(const struct scmi_protocol_handle *ph)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
return ph->set_priv(ph, sinfo);
|
||||
return ph->set_priv(ph, sinfo, version);
|
||||
}
|
||||
|
||||
static const struct scmi_protocol scmi_sensors = {
|
||||
|
@ -1147,6 +1150,7 @@ static const struct scmi_protocol scmi_sensors = {
|
|||
.instance_init = &scmi_sensors_protocol_init,
|
||||
.ops = &sensor_proto_ops,
|
||||
.events = &sensor_protocol_events,
|
||||
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||
};
|
||||
|
||||
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) &
|
||||
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 "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
|
||||
|
||||
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)
|
||||
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 = {
|
||||
|
@ -153,6 +156,7 @@ static const struct scmi_protocol scmi_system = {
|
|||
.instance_init = &scmi_system_protocol_init,
|
||||
.ops = NULL,
|
||||
.events = &system_protocol_events,
|
||||
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||
};
|
||||
|
||||
DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(system, scmi_system)
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
|
||||
#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 REMAINING_LEVELS_MASK GENMASK(31, 16)
|
||||
#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");
|
||||
}
|
||||
|
||||
return ph->set_priv(ph, vinfo);
|
||||
return ph->set_priv(ph, vinfo, version);
|
||||
}
|
||||
|
||||
static const struct scmi_protocol scmi_voltage = {
|
||||
|
@ -440,6 +443,7 @@ static const struct scmi_protocol scmi_voltage = {
|
|||
.owner = THIS_MODULE,
|
||||
.instance_init = &scmi_voltage_protocol_init,
|
||||
.ops = &voltage_proto_ops,
|
||||
.supported_version = SCMI_PROTOCOL_SUPPORTED_VERSION,
|
||||
};
|
||||
|
||||
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);
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @bank: the hwspinlock device bank
|
||||
|
|
|
@ -21,6 +21,8 @@ struct hwspinlock_device;
|
|||
* @trylock: make a single attempt to take the lock. returns 0 on
|
||||
* failure and true on success. 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
|
||||
* core while spinning on a lock, between two successive
|
||||
* invocations of @trylock. may _not_ sleep.
|
||||
|
@ -28,6 +30,7 @@ struct hwspinlock_device;
|
|||
struct hwspinlock_ops {
|
||||
int (*trylock)(struct hwspinlock *lock);
|
||||
void (*unlock)(struct hwspinlock *lock);
|
||||
int (*bust)(struct hwspinlock *lock, unsigned int id);
|
||||
void (*relax)(struct hwspinlock *lock);
|
||||
};
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <linux/pci.h>
|
||||
|
||||
#include "arm-smmu-v3.h"
|
||||
#include "../../dma-iommu.h"
|
||||
|
||||
struct arm_smmu_option_prop {
|
||||
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);
|
||||
}
|
||||
|
||||
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,
|
||||
struct arm_smmu_queue *q,
|
||||
void __iomem *page,
|
||||
|
|
|
@ -72,8 +72,7 @@ extern struct kvm_iommu_ops kvm_nvhe_sym(smmu_ops);
|
|||
static int atomic_pages;
|
||||
module_param(atomic_pages, int, 0);
|
||||
|
||||
static int kvm_arm_smmu_topup_memcache(struct arm_smmu_device *smmu,
|
||||
struct arm_smccc_res *res)
|
||||
static int kvm_arm_smmu_topup_memcache(struct arm_smccc_res *res)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
dev_err(smmu->dev, "Bogus mem request");
|
||||
pr_err("Bogus mem request");
|
||||
return -EBADE;
|
||||
}
|
||||
|
||||
/*
|
||||
* 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; \
|
||||
do { \
|
||||
__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; \
|
||||
})
|
||||
|
||||
|
@ -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;
|
||||
|
||||
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);
|
||||
|
||||
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++) {
|
||||
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,
|
||||
sid, pasid, master->ssid_bits);
|
||||
if (ret) {
|
||||
|
@ -373,7 +372,6 @@ static int kvm_arm_smmu_map_pages(struct iommu_domain *domain,
|
|||
size_t mapped;
|
||||
size_t size = pgsize * pgcount;
|
||||
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;
|
||||
|
||||
do {
|
||||
|
@ -387,7 +385,7 @@ static int kvm_arm_smmu_map_pages(struct iommu_domain *domain,
|
|||
WARN_ON(mapped > pgcount * pgsize);
|
||||
pgcount -= mapped / pgsize;
|
||||
*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)
|
||||
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 size = pgsize * pgcount;
|
||||
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;
|
||||
|
||||
do {
|
||||
|
@ -423,7 +420,7 @@ static size_t kvm_arm_smmu_unmap_pages(struct iommu_domain *domain,
|
|||
* block mapping.
|
||||
*/
|
||||
} while (total_unmapped < size &&
|
||||
(unmapped || !kvm_arm_smmu_topup_memcache(smmu, &res)));
|
||||
(unmapped || !kvm_arm_smmu_topup_memcache(&res)));
|
||||
|
||||
return total_unmapped;
|
||||
}
|
||||
|
@ -449,6 +446,7 @@ static struct iommu_ops kvm_arm_smmu_ops = {
|
|||
.capable = arm_smmu_capable,
|
||||
.device_group = arm_smmu_device_group,
|
||||
.of_xlate = arm_smmu_of_xlate,
|
||||
.get_resv_regions = arm_smmu_get_resv_regions,
|
||||
.probe_device = kvm_arm_smmu_probe_device,
|
||||
.release_device = kvm_arm_smmu_release_device,
|
||||
.domain_alloc = kvm_arm_smmu_domain_alloc,
|
||||
|
@ -1049,6 +1047,17 @@ static int kvm_arm_smmu_v3_init(void)
|
|||
if (ret)
|
||||
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,
|
||||
NULL, smmu_put_device));
|
||||
return 0;
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include <linux/platform_device.h>
|
||||
|
||||
#include "arm-smmu-v3.h"
|
||||
#include "../../dma-iommu.h"
|
||||
#include "../../iommu-sva.h"
|
||||
|
||||
static bool disable_bypass = true;
|
||||
|
@ -2509,22 +2508,6 @@ static int arm_smmu_enable_nesting(struct iommu_domain *domain)
|
|||
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,
|
||||
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);
|
||||
struct iommu_group *arm_smmu_device_group(struct device *dev);
|
||||
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;
|
||||
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"
|
||||
}
|
||||
|
|
|
@ -1559,7 +1559,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq)
|
|||
pr_debug("%s: CQE recovery start\n", mmc_hostname(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_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;
|
||||
mmc_set_ios(host);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_set_clock);
|
||||
|
||||
int mmc_execute_tuning(struct mmc_card *card)
|
||||
{
|
||||
|
@ -955,6 +956,7 @@ int mmc_execute_tuning(struct mmc_card *card)
|
|||
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_execute_tuning);
|
||||
|
||||
/*
|
||||
* 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;
|
||||
mmc_set_ios(host);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_set_bus_mode);
|
||||
|
||||
/*
|
||||
* 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;
|
||||
mmc_set_ios(host);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_set_bus_width);
|
||||
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_set_initial_state);
|
||||
|
||||
/**
|
||||
* 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;
|
||||
mmc_set_ios(host);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_set_timing);
|
||||
|
||||
/*
|
||||
* 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_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_width(struct mmc_host *host, unsigned int width);
|
||||
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->hold_retune += 1;
|
||||
}
|
||||
EXPORT_SYMBOL(mmc_retune_hold);
|
||||
|
||||
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.
|
||||
*/
|
||||
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;
|
||||
|
||||
|
@ -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.
|
||||
* 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[] = {
|
||||
EXT_CSD_BUS_WIDTH_8,
|
||||
|
@ -1069,11 +1069,12 @@ static int mmc_select_bus_width(struct mmc_card *card)
|
|||
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_select_bus_width);
|
||||
|
||||
/*
|
||||
* 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;
|
||||
|
||||
|
@ -1087,11 +1088,12 @@ static int mmc_select_hs(struct mmc_card *card)
|
|||
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_select_hs);
|
||||
|
||||
/*
|
||||
* 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;
|
||||
u32 bus_width, ext_csd_bits;
|
||||
|
@ -1160,8 +1162,9 @@ static int mmc_select_hs_ddr(struct mmc_card *card)
|
|||
|
||||
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;
|
||||
unsigned int max_dtr;
|
||||
|
@ -1255,6 +1258,7 @@ out_err:
|
|||
__func__, err);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_select_hs400);
|
||||
|
||||
int mmc_hs200_to_hs400(struct mmc_card *card)
|
||||
{
|
||||
|
@ -1535,7 +1539,7 @@ err:
|
|||
/*
|
||||
* 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;
|
||||
|
||||
|
@ -1570,12 +1574,13 @@ bus_speed:
|
|||
mmc_set_bus_speed(card);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_select_timing);
|
||||
|
||||
/*
|
||||
* Execute tuning sequence to seek the proper bus operating
|
||||
* 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;
|
||||
|
||||
|
@ -1590,6 +1595,7 @@ static int mmc_hs200_tuning(struct mmc_card *card)
|
|||
|
||||
return mmc_execute_tuning(card);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_hs200_tuning);
|
||||
|
||||
/*
|
||||
* 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);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_select_card);
|
||||
|
||||
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;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_issue_type);
|
||||
|
||||
static void __mmc_cqe_recovery_notifier(struct mmc_queue *mq)
|
||||
{
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
#include <linux/mmc/sdio_func.h>
|
||||
#include <linux/mmc/sdio_ids.h>
|
||||
|
||||
#include <trace/hooks/mmc.h>
|
||||
|
||||
#include "core.h"
|
||||
#include "card.h"
|
||||
#include "host.h"
|
||||
|
@ -1116,6 +1118,8 @@ out:
|
|||
mmc_release_host(host);
|
||||
|
||||
host->pm_flags &= ~MMC_PM_KEEP_POWER;
|
||||
trace_android_vh_mmc_sdio_pm_flag_set(host);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
@ -2631,6 +2631,9 @@ static int sdhci_msm_probe(struct platform_device *pdev)
|
|||
/* Set the timeout value to max possible */
|
||||
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_set_active(&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.name = dev_name(&mtd->dev);
|
||||
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.size = mtd->size;
|
||||
config.word_size = 1;
|
||||
|
@ -898,6 +899,7 @@ static struct nvmem_device *mtd_otp_nvmem_register(struct mtd_info *mtd,
|
|||
config.name = compatible;
|
||||
config.id = NVMEM_DEVID_AUTO;
|
||||
config.owner = THIS_MODULE;
|
||||
config.add_legacy_fixed_of_cells = !mtd_type_is_nand(mtd);
|
||||
config.type = NVMEM_TYPE_OTP;
|
||||
config.root_only = true;
|
||||
config.ignore_wp = true;
|
||||
|
|
|
@ -2456,5 +2456,6 @@ static void __exit ns_cleanup_module(void)
|
|||
module_exit(ns_cleanup_module);
|
||||
|
||||
MODULE_LICENSE ("GPL");
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
MODULE_AUTHOR ("Artem B. Bityuckiy");
|
||||
MODULE_DESCRIPTION ("The NAND flash simulator");
|
||||
|
|
|
@ -1512,3 +1512,4 @@ MODULE_VERSION(__stringify(UBI_VERSION));
|
|||
MODULE_DESCRIPTION("UBI - Unsorted Block Images");
|
||||
MODULE_AUTHOR("Artem Bityutskiy");
|
||||
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"
|
||||
}
|
||||
|
|
|
@ -1709,3 +1709,4 @@ module_init(nvmet_init);
|
|||
module_exit(nvmet_exit);
|
||||
|
||||
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 nvmem_config config = {
|
||||
.dev = &pdev->dev,
|
||||
.add_legacy_fixed_of_cells = true,
|
||||
.read_only = true,
|
||||
.reg_read = apple_efuses_read,
|
||||
.stride = sizeof(u32),
|
||||
|
|
|
@ -1003,9 +1003,11 @@ struct nvmem_device *nvmem_register(const struct nvmem_config *config)
|
|||
if (rval)
|
||||
goto err_remove_cells;
|
||||
|
||||
rval = nvmem_add_cells_from_legacy_of(nvmem);
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
if (config->add_legacy_fixed_of_cells) {
|
||||
rval = nvmem_add_cells_from_legacy_of(nvmem);
|
||||
if (rval)
|
||||
goto err_remove_cells;
|
||||
}
|
||||
|
||||
rval = nvmem_add_cells_from_fixed_layout(nvmem);
|
||||
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