Merge branch 'android13-5.15' into android13-5.15-lts

Sync up with android13-5.15 for the following commits:

a60104c6cc Merge tag 'android13-5.15.78_r00' into android13-5.15
0c8a58469b UPSTREAM: usb: gadget: uvc: Prevent buffer overflow in setup handler
85b6370411 UPSTREAM: usb: gadget: uvc: also use try_format in set_format
0a1c1e4f64 UPSTREAM: usb: gadget: uvc: default the ctrl request interface offsets
fce2002702 UPSTREAM: usb: gadget: uvc: don't put item still in use
38ce45512f UPSTREAM: usb: gadget: uvc: Fix argument to sizeof() in uvc_register_video()
eae0c310a5 UPSTREAM: usb: gadget: uvc: add v4l2 try_format api call
5f385970be UPSTREAM: usb: gadget: uvc: add v4l2 enumeration api calls
4aa53ed66b BACKPORT: media: uvcvideo: move uvc_format_desc to common header
fc7969e41e BACKPORT: media: v4l: move helper functions for fractions from uvc to v4l2-common
0f48a44f70 UPSTREAM: usb: gadget: uvc: increase worker prio to WQ_HIGHPRI
8792df01c4 UPSTREAM: usb: move from strlcpy with unused retval to strscpy
1b2bc88b59 UPSTREAM: usb: gadget: uvc: Fix comment blocks style
8bc4e80471 UPSTREAM: usb: gadget: uvc: track frames in format entries
28431ab172 ANDROID: clocksource/arm_arch_timer: Add workaround for erratum 858921
6b4d1d8995 UPSTREAM: usb: gadget: f_fs: Ensure ep0req is dequeued before free_request
001fc069da UPSTREAM: usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait
c190539f4e UPSTREAM: usb: gadget: uvc: move structs to common header
e5fe1a95c3 UPSTREAM: usb: gadget: uvc: prevent index variables to start from 0
413bfd5f1b UPSTREAM: usb: gadget: uvc: implement dwPresentationTime and scrSourceClock
baa5c6d923 UPSTREAM: usb: gadget: uvc: ensure the vdev is unset
82beac34d8 BACKPORT: UPSTREAM: usb: dwc3: EP clear halt leading to clearing of delayed_status
016d61094b ANDROID: mm/oom_kill: fix task_struct refcount_t: underflow; use-after-free.
2f40ae382f ANDROID: ABI: Update allowed list for QCOM
c7562e628c ANDROID: GKI: update allowed list for exynosauto SoC
8945ccdb22 ANDROID: GKI: update xiaomi symbol list
8501db9cda ANDROID: loop: Add vendor hook to update cmd
b73474bacc ANDROID: GKI: Update abi_gki_aarch64_qcom
0f1629ced8 ANDROID: direct_io: Add a vendor hook to update OEM-specific field of struct bio
647d9c21bc ANDROID: GKI: update xiaomi symbol list
5e05d41272 ANDROID: GKI: Update abi_gki_aarch64_qcom symbols.
4fa690983d ANDROID: GKI: Update abi_gki_aarch64_qcom
5d96c24be9 ANDROID: uid_sys_stats: defer process_notifier work if uid_lock is contended
75aa4c087e FROMGIT: bpf: btf: limit logging of ignored BTF mismatches
f162762e3a UPSTREAM: skbuff: Account for tail adjustment during pull operations
25f2c8b4c7 ANDROID: Update the ABI symbol list and xml
d0822a3f9b ANDROID: mm: Export find_vm_area
37d8fe8dc3 ANDROID: GKI: update xiaomi symbol list
b3084d784b ANDROID: vendor_hooks:vendor hook for control memory dirty rate
6d9e986186 FROMGIT: mm/cma.c: delete kmemleak objects when freeing CMA areas to buddy at boot
e51492910c BACKPORT: FROMGIT: mm/cma.c: make kmemleak aware of all CMA regions
bac2fa84f7 UPSTREAM: mm: kmemleak: alloc gray object for reserved region with direct map
b1b50c61eb UPSTREAM: usb: dwc3: gadget: Don't delay End Transfer on delayed_status
f77134986a UPSTREAM: usb: dwc3: gadget: Do not clear ep delayed stop flag during ep disable
70947d4104 UPSTREAM: usb: dwc3: gadget: Skip waiting for CMDACT cleared during endxfer
6cac29527d UPSTREAM: usb: dwc3: Increase DWC3 controller halt timeout
c24377e58a ANDROID: mm: fix vma refcounting for SPF in vm_area_dup
1b8d144a47 UPSTREAM: usb: dwc3: Remove DWC3 locking during gadget suspend/resume
25e07b302b UPSTREAM: usb: dwc3: Avoid unmapping USB requests if endxfer is not complete
adcf982b9a UPSTREAM: usb: dwc3: gadget: Continue handling EP0 xfercomplete events
5dedf5e350 UPSTREAM: usb: dwc3: gadget: Synchronize IRQ between soft connect/disconnect
4483376b15 UPSTREAM: usb: dwc3: gadget: Force sending delayed status during soft disconnect
fec000d477 UPSTREAM: usb: dwc3: Do not service EP0 and conndone events if soft disconnected
c2a767880d UPSTREAM: usb: dwc3: gadget: conditionally remove requests
ad7838324a UPSTREAM: usb: dwc3: ep0: Properly handle setup_packet_pending scenario in data stage
f0c8e8fb26 UPSTREAM: usb: dwc3: gadget: Fix IN endpoint max packet size allocation
7dcee70181 UPSTREAM: usb: dwc3: gadget: Delay issuing End Transfer
7ec08af1cc UPSTREAM: usb: dwc3: gadget: Only End Transfer for ep0 data phase
1fd897b8fd UPSTREAM: usb: dwc3: ep0: Don't prepare beyond Setup stage
aa96dec5f3 UPSTREAM: usb: dwc3: gadget: move cmd_endtransfer to extra function
fd0d0cdd6d UPSTREAM: usb: dwc3: gadget: ep_queue simplify isoc start condition
8dd53dc29a UPSTREAM: usb: dwc3: gadget: Skip reading GEVNTSIZn
f99c14b160 UPSTREAM: usb: dwc3: gadget: Ignore Update Transfer cmd params
3c022868a2 UPSTREAM: usb: dwc3: gadget: Skip checking Update Transfer status
4baf5030d0 ANDROID: fips140: add crypto_memneq() back to the module
55dd45162b ANDROID: kbuild: Search external devicetree path when running clean target
a2593b3a74 ANDROID: Re-enable fast mremap and fix UAF with SPF
28e537ca36 Revert "ANDROID: Make SPF aware of fast mremaps"
11662bc7d0 ANDROID: fips140: add dump_jitterentropy command to fips140_lab_util
8e10ceb0f1 ANDROID: GKI: Update allowed list for QCOM
74ccad59c9 Revert "ANDROID: ABI: Update symbols to unisoc whitelist"
ab2dfaed45 ANDROID: page_pinner: prevent pp_buffer uninitialized access
0ef8ae8d3a ANDROID: cpufreq: add macro guard to protect vendor hook
7a3d34495c ANDROID: remove unnecessary SPECULATIVE_PAGE_FAULT config dependency
f5ade1a7ad ANDROID: usb: gadget: f_accessory: update SS/SSP descriptors
c265df840a ANDROID: Update the ABI symbol list and xml
ed6f0796dd ANDROID: sched/pelt: export ___update_load_[sum|avg]
85aa38928c ANDROID: GKI: add symbol list file for honor
6525e159bb ANDROID: Update the GKI symbol list and ABI XML
9d0ccb89bc ANDROID: irqchip/irq-gic-v3: Add vendor hook for gic suspend
b3c4378d24 ANDROID: ABI: Update symbols to unisoc whitelist
af027c97fc ANDROID: Make SPF aware of fast mremaps
8d58de2c76 ANDROID: abi_gki_aarch64_qcom: Add secure hibernation APIs
57c0c76264 ANDROID: GKI: Update symbol list for mtk
cb0ff59972 ANDROID: cpufreq: add vendor hook in cpufreq_offline
b5b2dbf1a2 UPSTREAM: locks: fix TOCTOU race when granting write lease
22b130dfad ANDROID: Update symbol list for sunxi
69fefbb3db ANDROID: GKI: Source GKI_BUILD_CONFIG_FRAGMENT after setting all variables
e80bb46694 ANDROID: Revert "ANDROID: allmodconfig: disable WERROR"
6bbccfc63e UPSTREAM: drm/amdgpu: temporarily disable broken Clang builds due to blown stack-frame
0667e5dfa3 BACKPORT: Kconfig.debug: provide a little extra FRAME_WARN leeway when KASAN is enabled
9c8074484f UPSTREAM: crypto: algboss - compile out test-related code when tests disabled
02ffa3bd9d UPSTREAM: crypto: api - compile out crypto_boot_test_finished when tests disabled
7bf98ba526 UPSTREAM: crypto: algboss - optimize registration of internal algorithms
46b75c8648 BACKPORT: crypto: api - optimize algorithm registration when self-tests disabled
9662706fb0 UPSTREAM: crypto: api - Fix boot-up crash when crypto manager is disabled
3f5a00a5ef UPSTREAM: crypto: api - Do not create test larvals if manager is disabled
da83ad2055 UPSTREAM: crypto: api - Export crypto_boot_test_finished
e07f20669c UPSTREAM: crypto: api - Fix built-in testing dependency failures
f72cb1622f ANDROID: GKI: Add a general aarch64 symbol list
ac16892391 ANDROID: GKI: db845c: remove led-multicolor override
39b026b051 ANDROID: GKI: enable mulitcolor-led
cf8edf1928 UPSTREAM: HID: playstation: support updated DualSense rumble mode.
a7bb941a00 UPSTREAM: HID: playstation: add initial DualSense Edge controller support
72fd652689 UPSTREAM: HID: playstation: stop DualSense output work on remove.
2096eced42 UPSTREAM: HID: playstation: convert to use dev_groups
4281e23610 UPSTREAM: HID: playstation: fix return from dualsense_player_led_set_brightness()
1c2aceb8d7 UPSTREAM: HID: playstation: expose DualSense player LEDs through LED class.
8abc9ed234 UPSTREAM: leds: add new LED_FUNCTION_PLAYER for player LEDs for game controllers.
392b327fe0 UPSTREAM: HID: playstation: expose DualSense lightbar through a multi-color LED.
f0ecfd1af7 ANDROID: GKI: Add Tuxera symbol list
ac26e9c7b8 ANDROID: cma: allow to use CMA in swap-in path
60a61c1a04 ANDROID: GKI: update xiaomi symbol list
cac282fc1a ANDROID: dm: Add a vendor hook to update bio after clone
be6c9a9b11 ANDROID: GKI: Update symbol list
4ff88497a3 ANDROID: GKI: export symbols to modify lru stats
f8c2625ba0 ANDROID: GKI: Update exynos_wear symbol list
3cc69a0a0a ANDROID: vendor hooks: Encrypt snapshot for bootloader based hibernation
72ec9e1cd2 ANDROID: vendor hooks: Export symbols for bootloader based hibernation
37a7d66607 ANDROID: abi_gki_aarch64_qcom: Update symbol list
474a540f29 ANDROID: irq: put irq_resolve_mapping under protection of __irq_enter_raw
aea6e535a2 BACKPORT: UPSTREAM: usb: typec: ucsi: Wait for the USB role switches
680c12419c UPSTREAM: rpmsg: char: Avoid double destroy of default endpoint
1a1ee4bb87 BACKPORT: exfat: fix overflow for large capacity partition
737bf2358f UPSTREAM: usb: gadget: uvc: fix changing interface name via configfs
1b90823b62 UPSTREAM: dma-mapping: Fix build error unused-value
6fcc6343c3 UPSTREAM: bpf: Ensure correct locking around vulnerable function find_vpid()
5df791308b ANDROID: abi_gki_aarch64_qcom: whitelist symbols added for cma retries
6f0ba6ad99 ANDROID: mm/cma: add vendor_hook in cma_alloc for retries
8022d8faf6 ANDROID: arm64: mm: perform clean & invalidation in __dma_map_area
28f65c4aa3 FROMLIST: sched: Fix use-after-free bug in dup_user_cpus_ptr()
6be735d61e UPSTREAM: HID: roccat: Fix use-after-free in roccat_read()
8e0c2cedbc UPSTREAM: mm/damon: use set_huge_pte_at() to make huge pte old
1d0c369729 UPSTREAM: usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS
bcf5cce758 UPSTREAM: gen_compile_commands: handle multiple lines per .mod file
96ce46922d UPSTREAM: scripts/nsdeps: adjust to the format change of *.mod files
19be6b818a BACKPORT: kbuild: avoid regex RS for POSIX awk
61f4b98fe0 UPSTREAM: KVM: arm64: Always start with clearing SVE flag on load
a11aae86d8 UPSTREAM: powerpc/64: Include cache.h directly in paca.h
a3eb9c5744 UPSTREAM: KVM: arm64: vgic-v3: Consistently populate ID_AA64PFR0_EL1.GIC
bf995d5fbf UPSTREAM: module.h: simplify MODULE_IMPORT_NS
4009f67147 UPSTREAM: mac80211_hwsim: fix RCU protected chanctx access
e295ae9c84 UPSTREAM: KVM: arm64: nvhe: Eliminate kernel-doc warnings
b1cad5be29 BACKPORT: KVM: arm64: Actually prevent SMC64 SYSTEM_RESET2 from AArch32
46d726e380 UPSTREAM: KVM: arm64: Generally disallow SMC64 for AArch32 guests
35c5fa9834 UPSTREAM: virtio: use virtio_device_ready() in virtio_device_restore()
aa7f73725f UPSTREAM: mm: fix use-after-free bug when mm->mmap is reused after being freed
bc920538bb UPSTREAM: kasan: test: prevent cache merging in kmem_cache_double_destroy
435eac40de UPSTREAM: arm64: Ensure that the 'bti' macro is defined where linkage.h is included
03a56596ef UPSTREAM: mmc: mediatek: free the ext_csd when mmc_get_ext_csd success
ac6122b362 UPSTREAM: scsi: ufs: Fix double space in SCSI_UFS_HWMON description
a094f7c2d4 UPSTREAM: scsi: ufs: mediatek: Avoid sched_clock() misuse
9fe6ac18f7 UPSTREAM: scsi: ufs: core: SCSI_UFS_HWMON depends on HWMON=y
ce550b4d77 ANDROID: GKI: db845c: Update symbols list and ABI
f9bfdf7a59 BACKPORT: f2fs: invalidate meta pages only for post_read required inode
9b96bd8907 ANDROID: GKI: Update symbols to symbol list
65d4d9d5da ANDROID: cpu/hotplug: call perf event through function pointer
5feed5b144 Merge tag 'android13-5.15.74_r00' into android13-5.15
35c0e672b8 ANDROID: abi_gki_aarch64_qcom: Update symbol list
f5cbc8d09c UPSTREAM: usb: dwc3: gadget: Submit endxfer command if delayed during disconnect
150b3c4e4b BACKPORT: ANDROID: dma-buf: heaps: replace mutex lock with spinlock
1e8b8c6263 ANDROID: Update symbol list for mtk
fa068ecbc8 ANDROID: Fix license for BUILD.bazel file.
d47ef1a984 UPSTREAM: gcov: clang: fix the buffer overflow issue
4951a62804 ANDROID: kleaf: load() then package().
d2cfc10a38 UPSTREAM: perf/arm-cmn: Add debugfs topology info
942d043ca8 UPSTREAM: perf/arm-cmn: Add CI-700 Support
ef74c2d064 UPSTREAM: dt-bindings: perf: arm-cmn: Add CI-700
d14ad92dd0 UPSTREAM: perf/arm-cmn: Support new IP features
d0205771e2 UPSTREAM: perf/arm-cmn: Demarcate CMN-600 specifics
b6a7974310 UPSTREAM: perf/arm-cmn: Move group validation data off-stack
9a74f34abd UPSTREAM: perf/arm-cmn: Optimise DTC counter accesses
fb9091356e UPSTREAM: perf/arm-cmn: Optimise DTM counter reads
86d818633c UPSTREAM: perf/arm-cmn: Refactor DTM handling
3081baf827 UPSTREAM: perf/arm-cmn: Streamline node iteration
534bc126aa UPSTREAM: perf/arm-cmn: Refactor node ID handling
11319db7b8 UPSTREAM: perf/arm-cmn: Drop compile-test restriction
40b2978978 UPSTREAM: perf/arm-cmn: Account for NUMA affinity
e82a3f108d UPSTREAM: fs: erofs: add sanity check for kobject in erofs_unregister_sysfs
8ff9996c5d ANDROID: cpufreq: times: record fast switch frequency transitions
09d0ae9798 ANDROID: abi_gki_aarch64_qcom: Add android_vh_madvise_cold_or_pageout
485c0121e7 ANDROID: GKI: MGLRU ABI Fixup
3263c8d514 ANDROID: GKI: Build multi-gen LRU
383505860c BACKPORT: mm: multi-gen LRU: design doc
3fa3e8ad5d UPSTREAM: mm: multi-gen LRU: admin guide
a95784fdac BACKPORT: mm: multi-gen LRU: debugfs interface
dd4f2bd6c0 UPSTREAM: mm: multi-gen LRU: thrashing prevention
94d1a38c47 BACKPORT: mm: multi-gen LRU: kill switch
8726e22e86 BACKPORT: mm: multi-gen LRU: optimize multiple memcgs
35e2163024 BACKPORT: mm: multi-gen LRU: support page table walks
009d857059 BACKPORT: mm: multi-gen LRU: exploit locality in rmap
53af55e4cc BACKPORT: mm: multi-gen LRU: minimal implementation
f4d4c46c3a BACKPORT: mm: multi-gen LRU: groundwork
ce62ece686 UPSTREAM: Revert "include/linux/mm_inline.h: fold __update_lru_size() into its sole caller"
3cebab25d5 BACKPORT: mm/vmscan.c: refactor shrink_node()
f3f123ebb5 BACKPORT: mm: x86: add CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG
de96dbc641 BACKPORT: mm: x86, arm64: add arch_has_hw_pte_young()
970353b36e Revert "FROMLIST: mm: x86, arm64: add arch_has_hw_pte_young()"
475108fadd Revert "FROMLIST: mm: x86: add CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG"
8d47a32fa8 Revert "FROMLIST: mm/vmscan.c: refactor shrink_node()"
e849bd2f88 Revert "FROMLIST: Revert "include/linux/mm_inline.h: fold __update_lru_size() into its sole caller""
60f9c51c88 Revert "FROMLIST: mm: multi-gen LRU: groundwork"
6e620d5117 Revert "FROMLIST: mm: multi-gen LRU: minimal implementation"
4bce99229a Revert "FROMLIST: mm: multi-gen LRU: exploit locality in rmap"
16e5220b3d Revert "FROMLIST: mm: multi-gen LRU: support page table walks"
4124cf4b02 Revert "FROMLIST: mm: multi-gen LRU: optimize multiple memcgs"
3a3733721b Revert "FROMLIST: mm: multi-gen LRU: kill switch"
a62a81e770 Revert "FROMLIST: mm: multi-gen LRU: thrashing prevention"
f4b12ac3bc Revert "FROMLIST: mm: multi-gen LRU: debugfs interface"
81c19190ff Revert "FROMLIST: mm: multi-gen LRU: admin guide"
b49c49542f Revert "FROMLIST: mm: multi-gen LRU: design doc"
d8c59190ad Revert "ANDROID: GKI: build multi-gen LRU"
4931d96eb3 ANDROID: mm: Use intended order-adjusted batch size
1bb821dcab ANDROID: ABI: Update allowed list for QCOM
e47b11059b ANDROID: GKI: Add exynos_wear symbol list
23fb3111f6 ANDROID: page_pinner: prevent pp_buffer access before initialization
2bd8e6670e ANDROID: KVM: arm64: Use 32-bit function ID for PSCI MEM_PROTECT call
050466c42e ANDROID: ABI: Update allowed list for QCOM
9449b4f1af ANDROID: mm: preserve vma->anon_vma after MREMAP_DONTUNMAP for SPF
cf5cad44fd ANDROID: mm: disable speculative page faults for CONFIG_NUMA
5fcb50b055 ANDROID: mm: fix speculative walk which is unsafe under RCU
749aa64ba8 ANDROID: mm: avoid using vmacache in lockless vma search
3e7526c672 ANDROID: disable page table moves when speculative page faults are enabled
3b43f23348 ANDROID: mm: skip pte_alloc during speculative page fault
d9d7f843da ANDROID: mm: introduce vma refcounting to protect vma during SPF
d7c52b0cd0 UPSTREAM: crypto: arm/xor - make vectorized C code Clang-friendly
f759aa5f65 UPSTREAM: efi: capsule-loader: Fix use-after-free in efi_capsule_write
564233e471 ANDROID: mm: add a vendor hook to rmqueue_bulk()
979df868f5 FROMGIT: mm/madvise: fix madvise_pageout for private file mappings
99e3951ea4 ANDROID: vendor_hooks: Allow shared pages reclaim via MADV_PAGEOUT
ec736ca13a ANDROID: abi_gki_aarch64_qcom: Update symbol list
710fd74d1d FROMGIT: tty: serial: qcom-geni-serial: Add support for Hibernation feature
6196aa68f6 ANDROID: GKI: Update symbol list for Amlogic
0be362f248 UPSTREAM: KVM: x86: do not report a vCPU as preempted outside instruction boundaries
50358d6729 ANDROID: mm/slab: Use EXPORT_SYMBOL for android_kmalloc_64_create
e161b0c43c ANDROID: GKI: update symbol list for ExynosAuto SoC
1da102d4e3 ANDROID: KVM: arm64: s2mpu: Fix SYNC latency regression
ce39549d92 ANDROID: KVM: arm64: iommu: Add host_stage2_idmap_complete
f0c53a5637 ANDROID: KVM: arm64: Issue CMOs when tearing down shadow pages
aec224bb9e ANDROID: GKI: Update symbol list for xiaomi
4bc79ed42f ANDROID: Add ashmem ioctl to return a unique file identifier
3a049b038e ANDROID: KVM: arm64: Fix repainting of PSCI SYSTEM_RESET2 calls
c2162eca3f ANDROID: reimplement vm_file protection during speculative page fault
a07770525e Revert "ANDROID: add vma->file_ref_count to synchronize vma->vm_file destruction"
578745e43f Revert "ANDROID: arm64/mm: protect vm_file during speculative page fault handling"
24894a547e Revert "ANDROID: x86/mm: protect vm_file during speculative page fault handling"
e9a7e9f2ff Revert "ANDROID: powerpc/mm: protect vm_file during speculative page fault handling"
4288911d5e FROMGIT: usb: core: stop USB enumeration if too many retries
b8b0948987 FROMGIT: f2fs: allow to read node block after shutdown
e796ee5695 ANDROID: KVM: arm64: Adjust PSCI MEM_PROTECT refcount across share/unshare
5e82339f4b UPSTREAM: ext4,f2fs: fix readahead of verity data
3605981d8a FROMLIST: f2fs: fix the msg data type
f9965bb807 BACKPORT: FROMLIST: f2fs: fix the assign logic of iocb
c95f78db38 ANDROID: Update the GKI symbol list and ABI XML
8a7073c106 ANDROID: mm/slab: Create 64-byte slab caches if the hardware supports it
34e03c38fd ANDROID: dma-buf: Add vendor hook for deferred dmabuf sysfs stats release
e4923174ba FROMLIST: cfi: free old cfi shadow asynchronously
9b7bf9c529 FROMLIST: cfi: enable sanitize for cfi.c
432cf292eb ANDROID: GKI: Update abi_gki_aarch64_qcom
a382999851 ANDROID: ABI: Add usb_pipe_type_check symbol
f2f619baa5 ANDROID: GKI: Update symbols to symbol list
69ec48c6a0 ANDROID: GKI: Update symbol list for Amlogic
6707ada5f7 ANDROID: dm-user: Remove bio recount in I/O path
654e0ed6fc UPSTREAM: drm/meson: Fix overflow implicit truncation warnings
aaa6cd7d0d UPSTREAM: irqchip/tegra: Fix overflow implicit truncation warnings
d75ef462c3 UPSTREAM: video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write
777857c7a1 UPSTREAM: i2c: ismt: prevent memory corruption in ismt_access()
b006f3a809 ANDROID: GKI: Update symbol list for mtk STB projects
7266895825 FROMLIST: KVM: arm64: pkvm: Fixup boot mode to reflect that the kernel resumes from EL1
b72960ae91 ANDROID: ABI: Add teace_android_rvh_rto_next_cpu to unisoc whitelist
02ac822b3d BACKPORT: rcu: Remove __read_mostly annotations from rcu_scheduler_active externs
4baff5cba1 ANDROID: ABI: Export vendor_hook to be used by memcgv2 optimization mechanism
5993940dd7 FROMLIST: xfrm: Fix oops in __xfrm_state_delete()
aaf18200c3 BACKPORT: KVM: arm64: Fix bad dereference on MTE-enabled systems
201d5f4a3e FROMLIST: binder: fix UAF of alloc->vma in race with munmap()
20af947ec9 Revert "Revert "BACKPORT: FROMLIST: ext4: implement speculative fault handling""
365ffc56b4 ANDROID: fix a race between speculative page walk and unmap operations
68f9882b75 ANDROID: GKI: update .xml file after cfg80211 changes
f6fa00feb4 UPSTREAM: wifi: cfg80211: add hardware timestamps to frame RX info
2a2c366c47 UPSTREAM: wifi: cfg80211: add a function for reporting TX status with hardware timestamps
1148c260a1 BACKPORT: wifi: nl80211: add RX and TX timestamp attributes
9c20617add BACKPORT: wifi: nl80211: add EML/MLD capabilities to per-iftype capabilities
23c1ff4ec5 FROMGIT: wifi: cfg80211: support reporting failed links
5bdebe9301 FROMGIT: wifi: cfg80211: Fix bitrates overflow issue
41f5642f15 UPSTREAM: wifi: cfg80211: fix MCS divisor value
3658e1b900 BACKPORT: wifi: nl80211: add MLD address to assoc BSS entries
20d705c31e UPSTREAM: wifi: nl80211: remove redundant err variable
acf72eda07 BACKPORT: wifi: nl80211: Add POWERED_ADDR_CHANGE feature
4743d0ad6c BACKPORT: wifi: cfg80211/mac80211: check EHT capability size correctly
89abd0e78b UPSTREAM: wifi: cfg80211: Update RNR parsing to align with Draft P802.11be_D2.0
d4ecf4c3c4 UPSTREAM: wifi: cfg80211: debugfs: fix return type in ht40allow_map_read()
da9a72662d FROMGIT: wifi: nl80211: use link ID in NL80211_CMD_SET_BSS
94afbcfb15 UPSTREAM: wifi: cfg80211: add link id to txq params
8e9375450e BACKPORT: wifi: mac80211: Align with Draft P802.11be_D2.0
fadbf9a2ca BACKPORT: wifi: mac80211: Align with Draft P802.11be_D1.5
3ae950a584 UPSTREAM: wifi: nl80211: add MLO link ID to the NL80211_CMD_FRAME TX API
483086ceca UPSTREAM: wifi: cfg80211: report link ID in NL80211_CMD_FRAME
46c8675945 UPSTREAM: wifi: cfg80211/nl80211: move rx management data into a struct
6d81ebd631 BACKPORT: wifi: nl80211/mac80211: clarify link ID in control port TX
dfdfc3041e UPSTREAM: wifi: nl80211: require MLD address on link STA add/modify
5697efd6e4 UPSTREAM: wifi: cfg80211: add cfg80211_get_iftype_ext_capa()
2c60081d52 UPSTREAM: wifi: nl80211: fix some attribute policy entries
9e73ea479d UPSTREAM: wifi: nl80211: reject fragmented and non-inheritance elements
c74a4e8436 UPSTREAM: wifi: nl80211: reject link specific elements on assoc link
3594b5cb98 UPSTREAM: wifi: cfg80211: set country_elem to NULL
2d971fdf0a UPSTREAM: wifi: nl80211: advertise MLO support
8f37e21b18 UPSTREAM: wifi: nl80211: allow link ID in set_wiphy with frequency
eed91854a5 BACKPORT: wifi: cfg80211/mac80211: Support control port TX from specific link
3120619c1b UPSTREAM: wifi: nl80211: Support MLD parameters in nl80211_set_station()
eab9f6c4ab UPSTREAM: wifi: nl80211: check MLO support in authenticate
85f1514d21 UPSTREAM: wifi: nl80211: set BSS to NULL if IS_ERR()
d9847463ac ANDROID: abi_gki_aarch64_qcom: Add drm_plane_from_index
c6432173e0 ANDROID: GKI: Update symbols to symbol list
0051c6ca25 ANDROID: add func in mm/memcontrol.c
671ba4d337 UPSTREAM: af_key: Do not call xfrm_probe_algs in parallel
4431f52671 UPSTREAM: mm: Fix TLB flush for not-first PFNMAP mappings in unmap_region()
c0a7deb29d ANDROID: KVM: arm64: Donate memory per vcpu for each vcpu shadow state
76094a9979 ANDROID: KVM: arm64: Initialize shadow vcpus with separate hypercalls
31d3b09cb7 ANDROID: KVM: arm64: Refactor unpinning host vcpu
bf48426928 ANDROID: KVM: arm64: Separate functions for shadow vm and vcpu init
bf94ae1300 ANDROID: KVM: arm64: Refactor code for reclaiming guest memory into a function
2c4a77c9b4 UPSTREAM: mm: Force TLB flush for PFNMAP mappings before unlink_file_vma()
e8e8278ea7 ANDROID: sched: check on_rq in freezer_should_skip()
15a4d4c54f BACKPORT: mm: don't be stuck to rmap lock on reclaim path
2ac3611cdf UPSTREAM: crypto: x86/polyval - Fix crashes when keys are not 16-byte aligned
379be12c0f ANDROID: KVM: arm64: Only unpin a vCPU SVE state if set
d6b5e9db8c ANDROID: GKI: Update symbol list for xiaomi
9527695a56 FROMGIT: f2fs: let's avoid to get cp_rwsem twice by f2fs_evict_inode by d_invalidate
d9b344dc29 ANDROID: ABI: Update symbols to unisoc whitelist for the scheduler 6st
2f4a562ed8 UPSTREAM: virtio_mmio: add support to set IRQ of a virtio device as wakeup source
56a0806bcb UPSTREAM: dt-bindings: virtio: mmio: add optional wakeup-source property
c4ef0b793d BACKPORT: mm: re-allow pinning of zero pfns
45cda0a886 BACKPORT: mm: fix is_pinnable_page against a cma page
7d53a26b25 ANDROID: Update symbol list for mtk
1f44f2214d UPSTREAM: thermal: sysfs: Fix cooling_device_stats_setup() error code path
161b98aa4c FROMGIT: usb: dwc3: gadget: Don't set IMI for no_interrupt
7947f2f48a FROMGIT: usb: dwc3: gadget: Stop processing more requests on IMI
3bdd7e23e2 FROMGIT: usb: gadget: uvc: fix sg handling during video encode
55249e0b76 FROMGIT: usb: gadget: uvc: fix sg handling in error case
45238b84d8 FROMGIT: usb: gadget: uvc: fix dropped frame after missed isoc
2d2cd1af72 UPSTREAM: usb: gadget: uvc: improve sg exit condition
3248ae0d9d UPSTREAM: usb: gadget: uvc: giveback vb2 buffer on req complete
23616a2948 UPSTREAM: usb: gadget: uvc: rework uvcg_queue_next_buffer to uvcg_complete_buffer
a50df26246 UPSTREAM: usb: gadget: uvc: use on returned header len in video_encode_isoc_sg
c91c6e0a3f UPSTREAM: usb: gadget: uvc: consistently use define for headerlen
2616a2072c FROMGIT: arm64: io: Use asm-generic high level MMIO accessors
15fbf32b75 ANDROID: GKI: Update abi_gki_aarch64_qcom for trace_mmio
93602bed42 UPSTREAM: usb: dwc3: gadget: fix high speed multiplier setting
14bd2d1473 UPSTREAM: usb: dwc3: gadget: refactor dwc3_repare_one_trb
68d8dea7fe ANDROID: GKI: Update abi_gki_aarch64_qcom for timespec64_to_jiffies
fdf67142f3 ANDROID: vendor_hook: skip trace_android_vh_page_trylock_set when ignore_references is true
a9092347ad ANDROID: ABI: Export psi_system symbol to be used by memcgv2 optimization mechanism
6d81bca908 ANDROID: ABI: export psi_system for memcgv2's vh function optimization
ecb0dcb24a UPSTREAM: mm/damon/dbgfs: fix memory leak when using debugfs_lookup()
52808991c0 UPSTREAM: wifi: mac80211: fix MBSSID parsing use-after-free
ec4ab62846 UPSTREAM: mac80211: fix memory leaks with element parsing
4ae50d8935 UPSTREAM: mac80211: always allocate struct ieee802_11_elems
33c9746293 UPSTREAM: mac80211: mlme: find auth challenge directly
d3f1cd61da UPSTREAM: mac80211: move CRC into struct ieee802_11_elems
397e82f22b UPSTREAM: mac80211: mesh: clean up rx_bcn_presp API
1b7036d9ee UPSTREAM: wifi: cfg80211: update hidden BSSes to avoid WARN_ON
db5865ed3c UPSTREAM: wifi: mac80211: fix crash in beacon protection for P2P-device
b2126d0131 UPSTREAM: wifi: mac80211_hwsim: avoid mac80211 warning on bad rate
64265011ea UPSTREAM: wifi: cfg80211: avoid nontransmitted BSS list corruption
56203e0ecb UPSTREAM: wifi: cfg80211: fix BSS refcounting bugs
3ebea46325 UPSTREAM: wifi: cfg80211: ensure length byte is present before access
0abe9e97c8 UPSTREAM: wifi: cfg80211/mac80211: reject bad MBSSID elements
50802a459b UPSTREAM: wifi: cfg80211: fix u8 overflow in cfg80211_update_notlisted_nontrans()
0a4e0e56b6 UPSTREAM: usb: gadget: f_serial: Ensure gserial disconnected during unbind
a42bb7b44d UPSTREAM: wifi: nl80211: better validate link ID for stations
3ce62ab9f9 UPSTREAM: wifi: cfg80211: clean up links appropriately
6b5b4300ba UPSTREAM: wifi: cfg80211: add ieee80211_chanwidth_rate_flags()
dda95a93f4 UPSTREAM: wifi: cfg80211: extend cfg80211_rx_assoc_resp() for MLO
a4670eb422 BACKPORT: wifi: cfg80211: put cfg80211_rx_assoc_resp() arguments into a struct
c1bcc88a92 BACKPORT: wifi: cfg80211: adjust assoc comeback for MLO
db5bcd0cd8 BACKPORT: wifi: cfg80211: prepare association failure APIs for MLO
4c026e7989 BACKPORT: wifi: cfg80211: remove BSS pointer from cfg80211_disassoc_request
54c7401e6f UPSTREAM: wifi: nl80211: acquire wdev mutex for dump_survey
cedf0a45f1 UPSTREAM: wifi: cfg80211: drop BSS elements from assoc trace for now
85139f4bfc UPSTREAM: wifi: cfg80211: make cfg80211_auth_request::key_idx signed
e75dfe1943 UPSTREAM: wifi: nl80211: enable setting the link address at new station
d104fc76c4 UPSTREAM: wifi: nl80211: hold wdev mutex for station APIs
80f8155cfc UPSTREAM: wifi: nl80211: hold wdev mutex for channel switch APIs
7f076a74a7 UPSTREAM: wifi: nl80211: hold wdev mutex in add/mod/del link station
b1bdeb8543 UPSTREAM: wifi: cfg80211: Allow MLO TX with link source address
6f2a6c919a ANDROID: ABI: add debugfs_lookup_and_remove to whitelist
cabd649d1b UPSTREAM: sched/debug: fix dentry leak in update_sched_domain_debugfs
e681f878fc UPSTREAM: debugfs: add debugfs_lookup_and_remove()
08ef164027 ANDROID: sched: Move scratch_mask to a percpu variable
c61797f241 ANDROID: sched: Keep sched_class::set_cpus_allowed stable
448eb7ef25 FROMGIT: sched: Always clear user_cpus_ptr in do_set_cpus_allowed()
ec8cf94166 BACKPORT: FROMGIT: sched: Enforce user requested affinity
50a3a47c14 BACKPORT: FROMGIT: sched: Always preserve the user requested cpumask
54aeb5c372 BACKPORT: FROMGIT: sched: Introduce affinity_context
5001781910 FROMGIT: sched: Add __releases annotations to affine_move_task()
b3bb41cebd ANDROID: GKI: Update abi_gki_aarch64_qcom for DMA
dba7a32ef7 ANDROID: GKI: Update symbols to symbol list
ba5d7b443e ANDROID: GKI: Update symbol list for Exynos SoC
2eb7ccbee2 BACKPORT: FROMGIT: mmc: core: SD: Add BROKEN-SD-DISCARD quirk
3ade531891 BACKPORT: wifi: cfg80211: Fix validating BSS pointers in __cfg80211_connect_result
0436dc8907 UPSTREAM: mmc: sdhci: Fix host->cmd is null
e91ba0b70e ANDROID: ABI: Update symbols to unisoc whitelist for the wlan
ea095dd932 ANDROID: ABI: Update symbols to unisoc whitelist
545bb8eb6b FROMGIT: seccomp: Move copy_seccomp() to no failure path.
41300cf104 BACKPORT: FROMLIST: tracing: Add register read/write tracing support
e8a2596dec UPSTREAM: fbcon: Prevent that screen size is smaller than font size
b54f2a0d7b UPSTREAM: fbcon: Disallow setting font bigger than screen size
52833e8faf UPSTREAM: fbmem: Check virtual screen sizes in fb_set_var()
ea2a1b81e8 ANDROID: GKI: Update symbol list for VIVO
e0a18fbf05 ANDROID: GKI: Update symbol list for sunxi
3d7ba02e51 ANDROID: ABI: update allowed list for galaxy
ed0b913a4b ANDROID: ABI: Update symbols to unisoc whitelist for UFS the 1st
16aecf0f68 UPSTREAM: usb: gadget: f_fs: change ep->ep safe in ffs_epfile_io()
9dec42d377 UPSTREAM: usb: gadget: f_fs: change ep->status safe in ffs_epfile_io()
6f90f3b9c9 ANDROID: KVM: arm64: Fix MMIO guard map error handling
8324bb0aed ANDROID: GKI: Update symbols to symbol list
95af22de88 UPSTREAM: cgroup: Add missing cpus_read_lock() to cgroup_attach_task_all()
546f62e71b FROMLIST: locking/rwsem: Limit # of null owner retries for handoff writer
4ece302f35 FROMLIST: locking/rwsem: Prevent non-first waiter from spinning in down_write() slowpath
b5e4b8916f ANDROID: abi_gki_aarch64_sony: Export block driver symbols to collect device info
ca65be56ed ANDROID: GKI: block: export block_rq_complete
316e668d5f ANDROID: ABI: update allowed list for galaxy
6d4b5281a6 ANDROID: KVM: arm64: s2mpu: Add SysMMU_SYNC timeout
c0a46be9dc ANDROID: KVM: arm64: Force CMOs with FWB when reclaiming guest pages
24d27dff64 BACKPORT: locking/rwsem: Allow slowpath writer to ignore handoff bit if not set by first waiter
48b7cad9b0 ANDROID: Update mtktv symbol list
38e30fccb8 ANDROID: arm64: Reclaim some cpucaps to aid in backporting
e76686ed1d ANDROID: GKI: Update symbol list for mtk STB projects
7639b80540 ANDROID: debug_symbols: Add put_task_stack
807d95c66b ANDROID: abi_gki_aarch64_qcom: Add hibernation APIs
fae48a3639 ANDROID: fix kernelci build-break for !CONFIG_ANDROID_VENDOR_OEM_DATA
6232eecfa7 ANDROID: mm/filemap: Fix missing put_page() for speculative page fault
0555154508 ANDROID: abi_gki_aarch64_qcom: Add clk_restore_context and clk_save_context
fa951e233f BACKPORT: HID: steam: Prevent NULL pointer dereference in steam_{recv,send}_report
1554564451 ANDROID: abi_gki_aarch64_qcom: Add drm driver APIs
16a71479cb ANDROID: sched: Export sched_domains_mutex for lockdep
d2cb755a43 ANDROID: vendor hooks: Add hooks to support bootloader based hibernation
c297152a18 ANDROID: GKI: Update Amlogic symbol list
2455f6610a ANDROID: fix ABI breakage in struct psi_group
9ed7219990 FROMLIST: psi: stop relying on timer_pending for poll_work rescheduling
9040c2052e ANDROID: ABI: Update symbols to unisoc whitelist
646452113d ANDROID: ABI: Update oplus symbol list
b55a937270 ANDROID: GKI: Update symbol list for sunxi
1eedea5f8d ANDROID: abi_gki_aarch64_qcom: Export update_readahead_gfp_mask VH
041ffcd941 ANDROID: mm: add a vendor_hook to change the gfp flags
ee928517b9 ANDROID: GKI: Update vendor symbol list for vivo
4c1cf366ac ANDROID: vendor_hooks: add new parameter to android_vh_blk_alloc_rqs()
5923781e8c ANDROID: KVM: arm64: Do not advertise SVE capability in protected mode
f803a7997d ANDROID: ABI: Update symbols to unisoc whitelist for the drm
ebf773d748 ANDROID: ABI: Update symbols to unisoc whitelist for clock
372abe5b53 ANDROID: KVM: arm64: Fix MMIO guard unmap
809ec777ea ANDROID: GKI: Add RTK TV KMI symbol list
85eea22b5e ANDROID: Update QCOM symbol list for __tracepoint_android_vh_mmc_sd_update_cmdline_timing
b84c40ff60 UPSTREAM: crypto: jitter - add oversampling of noise source
4b6af87d6e BACKPORT: writeback avoid use-after-free after removing device
75b1bf99a9 ANDROID: GKI: Update abi_gki_aarch64_qcom
3ee1075693 FROMGIT: f2fs: support recording stop_checkpoint reason into super_block
e82a19427e FROMLIST: mm: fix use-after free of page_ext after race with memory-offline
898cfbf094 ANDROID: mm: introduce page_pinner
8dea6e5e50 ANDROID: ABI: Add extcon_get_property_capability symbol
8409443201 ANDROID: gki_config: enable F2FS_UNFAIR_RWSEM
285d4132a6 ANDROID: scsi: ufs: add complete init vendor hook
5756b89437 ANDROID: ABI: update allowed list for galaxy
4ec2c6e2d1 ANDROID: GKI: Update symbol list for mtk AI-vision projects
d6b20ddcd9 ANDROID: GKI: Enable HCTR2
2496e06b21 UPSTREAM: fscrypt: Add HCTR2 support for filename encryption
731238ab38 UPSTREAM: crypto: arm64/polyval - Add PMULL accelerated implementation of POLYVAL
6606d9507e UPSTREAM: crypto: x86/polyval - Add PCLMULQDQ accelerated implementation of POLYVAL
e3431e9f2b UPSTREAM: crypto: arm64/aes-xctr - Improve readability of XCTR and CTR modes
8a794a25ae UPSTREAM: crypto: arm64/aes-xctr - Add accelerated implementation of XCTR
9a11762fde UPSTREAM: crypto: x86/aesni-xctr - Add accelerated implementation of XCTR
927d58494f UPSTREAM: crypto: hctr2 - Add HCTR2 support
b07dcba017 UPSTREAM: crypto: polyval - Add POLYVAL support
24a19f56b4 UPSTREAM: crypto: xctr - Add XCTR support
96c87ab88b UPSTREAM: arm64: Add macro version of the BTI instruction
1fd5d6489a UPSTREAM: crypto: arm64/aes-neon-ctr - improve handling of single tail block
b760d25fca ANDROID: GKI: Update symbols to symbol list
8b49e4bee6 ANDROID: KVM: arm64: Initialize ptr auth in protected mode
5405862223 FROMGIT: KVM: arm64: Ignore kvm-arm.mode if !is_hyp_mode_available()
c101b51fb6 UPSTREAM: wifi: mac80211_hwsim: use 32-bit skb cookie
eb82ad82b1 UPSTREAM: wifi: mac80211_hwsim: add back erroneously removed cast
e154458b37 UPSTREAM: wifi: mac80211_hwsim: fix race condition in pending packet
5e1321eb79 ANDROID: abi_gki_aarch64_qcom: Add protocol related symbols
9122cbfc55 ANDROID: Fix lost track action type in save_track_hash
bcb5f0547e UPSTREAM: usb: gadget: mass_storage: Fix cdrom data transfers on MAC-OS
c2ab21a729 ANDROID: GKI: Update symbols to symbol list
ac82d34706 ANDROID: vendor_hook: rename the the name of hooks
4a9e3b2ca6 ANDROID: vendor_hooks: Add hook in kmalloc_slab()
fcacd896ec BACKPORT: wifi: cfg80211/mac80211: separate link params from station params
5b0ceee1bd UPSTREAM: wifi: cfg80211: add API to add/modify/remove a link station
54f780d093 ANDROID: signal: Add vendor hook for memory reaping
5edc332cee ANDROID: GKI: Update abi_gki_aarch64_pixel
b80df8c286 Revert "ANDROID: vendor_hooks: Add hooks to tcp/udp send/recv msg functions."
8c09081fc0 Revert "ANDROID: sched: Add vendor hook for util-update related functions"
587cfd8e66 ANDROID: fix alignment of struct shash_desc member
e15184fefe BACKPORT: mm: make minimum slab alignment a runtime property
273bbfc4d7 BACKPORT: printk: stop including cache.h from printk.h
088ce42ab0 UPSTREAM: kasan: fix a missing header include of static_keys.h
17e4c2a950 BACKPORT: kasan: split kasan_*enabled() functions into a separate header
afa76a1c3a ANDROID: scsi: ufs: Improve MCQ error handling
9dcd74deff ANDROID: GKI: Add Sony KMI symbol list
b9707158ac ANDROID: ABI: update allowed list for galaxy
daac36f215 ANDROID: GKI: Update symbols to symbol list
effc9c940a ANDROID: GKI: Update abi_gki_aarch64_qcom symbols.
3561c27eeb UPSTREAM: Revert "mm: kmemleak: take a full lowmem check in kmemleak_*_phys()"
a89fbc0de0 ANDROID: fix add vendor hooks for unusual abort cases
0fd0345839 ANDROID: regmap: Unhide REGMAP_SPMI
314e242119 ANDROID: ABI: update allowed list for galaxy
6b1ae1157f ANDROID: Enable BUILD_GKI_CERTIFICATION_TOOLS for x86_64 GKI
cbc497caa2 ANDROID: irqchip: Fix vendor hook arguments
898941454f UPSTREAM: usb: dwc3: gadget: Avoid duplicate requests to enable Run/Stop
7bdc155a70 Revert "FROMLIST: usb: dwc3: gadget: Avoid duplicate requests to enable Run/Stop"
94c8c2f858 ANDROID: add symbol file for type visibility symbols
0e0c25fffd ANDROID: selftests: incfs: Increase timeout in concurrent_reads_and_writes_test
bba227bfd0 ANDROID: abi_gki_aarch64_qcom: Add iio symbol list for qcom
0c3d2d04cc ANDROID: make sure all types for hooks are defined in KMI
1aeba1eea1 ANDROID: mm: cma: proper ret type for tasks interrupted by fatal signal
c2b91dc63c BACKPORT: erofs: fix use-after-free of on-stack io[]
a75431c61b ANDROID: kleaf: Explicit list of ABI files.
41a23cd26e FROMGIT: kasan: call kasan_malloc() from __kmalloc_*track_caller()
e1c0ed46cf FROMLIST: f2fs: let FI_OPU_WRITE override FADVISE_COLD_BIT
d7735e03b7 ANDROID: GKI: update the ABI xml and pixel symbol list
f8c9fae007 ANDROID: incfs: Add check for ATTR_KILL_SUID and ATTR_MODE in incfs_setattr
66e0726ca5 ANDROID: GKI: update vendor hook for sd
010f93525d UPSTREAM: kbuild: rename cmd_{bzip2,lzma,lzo,lz4,xzkern,zstd22}
8833039066 ANDROID: ABI: Update symbols to unisoc whitelist
a3525f6e75 ANDROID: ABI: Update symbols to unisoc whitelist for sync from local code
7c0b04f044 ANDROID: ABI: Update symbols to unisoc whitelist
e6c55bbd43 ANDROID: GKI: Update symbol list for sunxi
a3e20edea9 ANDROID: GKI: Update symbol list
ef9a35b2e6 ANDROID: ABI: Update symbols for unisoc whitelist Android13-k5.15
70a5111957 ANDROID: net: export symbol for tracepoint_consume_skb
13bedfc2f2 ANDROID: gki_defconfig: Enable CONFIG_HIBERNATION flag
32e1ff60db ANDROID: ABI: Update symbols to unisoc whitelist for sync from local code
42f39fcf09 ANDROID: GKI: update xiaomi symbol list
ca319dfc39 ANDROID: Add headers to vendor_hooks.c for type visibility
e85a386df9 BACKPORT: KVM: x86: avoid calling x86 emulator without a decoded instruction
6b2fb25eac ANDROID: ABI: Update symbols to unisoc whitelist
678d7a0952 BACKPORT: dm verity: set DM_TARGET_IMMUTABLE feature flag
a2c2b6c914 BACKPORT: pipe: Fix missing lock in pipe_resize_ring()
3c2cc4561f FROMLIST: locking/rwsem: Disable preemption while trying for rwsem lock
c82312f9b0 BACKPORT: rpmsg: virtio: Fix possible double free in rpmsg_probe()
e0440af8b2 BACKPORT: rpmsg: virtio: Fix possible double free in rpmsg_virtio_add_ctrl_dev()
cff4cc7a64 Revert "ANDROID: arm64: smp: fix Lockdep warning: RCU used illegally from idle CPU."
6a2905d352 FROMLIST: arm64: mte: move register initialization to C
7a67b48b62 Revert "BACKPORT: FROMLIST: ext4: implement speculative fault handling"
9f7ac5d820 Revert "FROMLIST: arm64: mte: move register initialization to C"
b9f272d887 ANDROID: vendor_hooks:vendor hook for mmput
c96092a914 ANDROID: GKI: Upate sunxi symbol list
5dc0a0bd6b ANDROID: remove CONFIG_TRACEPOINTS from hook definition headers
ecb7d6b106 ANDROID: remove inclusions from hook definition headers
ea45eaaaae BACKPORT: scsi: ufs: core: Increase fDeviceInit poll frequency
c17b8c3da8 FROMGIT: f2fs: increase the limit for reserve_root
35666bb866 FROMGIT: f2fs: complete checkpoints during remount
9e14ab97fe FROMGIT: f2fs: flush pending checkpoints when freezing super
b52dcd4e22 FROMGIT: f2fs: remove gc_urgent_high_limited for cleanup
e4c3ce6f7d FROMGIT: f2fs: fix wrong continue condition in GC
619b99d2d4 BACKPORT: f2fs: handle decompress only post processing in softirq
c119114518 BACKPORT: f2fs: introduce memory mode
3ec6819bff ANDROID: kleaf: Do not include GKI modules in default output of //common:kernel_aarch64.
fe1e4c55de ANDROID: GKI: Update symbols to symbol list
08b9a0b8aa ANDROID: GKI: Update symbol list for Exynos SoC
ca7f18ea25 ANDROID: ABI: Update oplus symbol list
fb2bb8f3ad ANDROID: mm: Add vendor hook in rmqueue()
193dcfee4d ANDROID: abi_gki_aarch64_qcom: Update symbol list.
1cf95b1e07 ANDROID: GKI: Update symbols to symbol list
e1b8ef44fd ANDROID: Revert "psi: allow unprivileged users with CAP_SYS_RESOURCE to write psi files"
c9ee361850 ANDROID: abi_gki_aarch64_qcom: Add hook for set_cpus_allowed_by_task
2508098b95 ANDROID: GKI: Update symbol list
06a2fffcf3 ANDROID: GKI: Update symbol list for mtk AI-vision projects
1f0f167b62 FROMGIT: wifi: cfg80211: Add link_id to cfg80211_ch_switch_started_notify()
c9375148db FROMGIT: wifi: nl80211: send MLO links channel info in GET_INTERFACE
df92dc5573 FROMGIT: wifi: cfg80211: Prevent cfg80211_wext_siwencodeext() on MLD
460e2bc5da FROMGIT: wifi: cfg80211: reject connect response with MLO params for WEP
cad63b2cf1 FROMGIT: wifi: cfg80211: get correct AP link chandef
e6c826aa9b ANDROID: reduce number of opaque structs in KMI
0226fc2e18 ANDROID: vendor_hooks: tune reclaim inactive ratio
8de5430cb7 BACKPORT: FROMGIT: PCI: dwc: Add support for 64-bit MSI target address
8181ea8d96 BACKPORT: FROMGIT: PCI: dwc: Drop dependency on ZONE_DMA32
a8dfddb2b9 Revert "BACKPORT: FROMLIST: PCI: dwc: Drop dependency on ZONE_DMA32"
c5e662db60 Revert "BACKPORT: FROMLIST: PCI: dwc: Add support for 64-bit MSI target address"
ff81c8d3f5 ANDROID: GKI: create initial PASA symbol list
55f112e068 ANDROID: vendor_hooks: Add hooks for cpufreq_acct_update_power
76be364a84 BACKPORT: irq_work: use kasan_record_aux_stack_noalloc() record callstack
cc724041ce ANDROID: vendor_hooks: Add hooks for oem futex optimization
eb6c8ea051 BACKPORT: fuse: send security context of inode on file
05e1c47bbc UPSTREAM: security: Return xattr name from security_dentry_init_security()
e8ac12a811 BACKPORT: fuse: extend init flags
a43215959d BACKPORT: scsi: ufs: core: Fix missing clk change notification on host reset
773f36077b ANDROID: ABI: Dedup the repeated symbols for Unisoc
c4ebf71500 FROMLIST: arm64: mte: move register initialization to C
f42e2933f0 FROMLIST: ufs: allow host driver to disable wb toggling during clock scaling
8d76ae003b ANDROID: GKI: update xiaomi symbol list
be69ad8227 ANDROID: Expand user_struct size.
776d084118 UPSTREAM: usb: gadget: uvc: calculate the number of request depending on framesize
26e36e62c9 UPSTREAM: usb: dwc3: gadget: increase tx fifo size for ss isoc endpoints
928bb2bbe1 UPSTREAM: usb: gadget: uvc: remove pause flag use
85791a9e63 UPSTREAM: usb: gadget: uvc: allow changing interface name via configfs
499ea1f89b UPSTREAM: usb: gadget: uvc: fix list double add in uvcg_video_pump
0db028444c ANDROID: abi_gki_aarch64_qcom: Add blk_mq_free_request
b58af507bf ANDROID: GKI: Update symbols to symbol list
0312e9cd22 ANDROID: vendor_hooks:vendor hook for __alloc_pages_slowpath.
22c312bbde ANDROID: nl80211: enable reserved attributes with upstream assignments
17e63e8b13 ANDROID: fix declaration mismatch for ns_to_kernel_old_timeval
13e5af1463 ANDROID: avoid huge-page not to clear trylock-bit after shrink_page_list.
b337f6e1a9 ANDROID: mm/memory_hotplug: Fix error path handling
695e36b60e ANDROID: GKI: Update symbol list for imx
4d91f7dff5 ANDROID: GKI: update xiaomi symbol list
39088bd0f1 UPSTREAM: usb: gadget: uvc: test if ep->desc is valid on ep_queue
48ffd4d42d UPSTREAM: usb: gadget: uvc: only pump video data if necessary
1b5de9bdc4 UPSTREAM: usb: gadget: uvc: only schedule stream in streaming state
75b799c801 UPSTREAM: usb: dwc3: gadget: Give some time to schedule isoc
8398037818 UPSTREAM: usb: gadget: composite: Show warning if function driver's descriptors are incomplete.
77672b2424 ANDROID: GKI: Add symbol list file for sunxi
555400c6f7 ANDROID: ABI: Update symbols to unisoc whitelist
73b352b9bc ANDROID: GKI: Update Symbol List for Vendor
175fa88bc2 ANDROID: kernel/sched: rebuild_sched_domains export
5dc0125847 ANDROID: vendor_hooks: Add hooks for page_cache_sync_ra
5a3e902fed FROMLIST: cgroup: Fix race condition at rebind_subsystems()
6aafd4a7e6 ANDROID: GKI: Update symbols to symbol list
7e1756dacc ANDROID: GKI: Add initial symbol list for amlogic
885f16fab6 ANDROID: gki_defconfig: enable CONFIG_USB_CONFIGFS_F_UVC
b2a6221a18 ANDROID: GKI: Update symbols to symbol list
7fa896f92d ANDROID: GKI: Update symbols to symbol list
212c9a7426 ANDROID: ABI: Update symbols to unisoc whitelist for mmc 3st
fb9c12a0f6 ANDROID: ABI: Update oplus symbol list
a54b0cc492 ANDROID: Update mtktv symbol list
bc2b2529f6 BACKPORT: cgroup: Fix threadgroup_rwsem <-> cpus_read_lock() deadlock
a30c0961dd UPSTREAM: cgroup: Elide write-locking threadgroup_rwsem when updating csses on an empty subtree
b38034b5d5 BACKPORT: FROMLIST: PCI: dwc: Add support for 64-bit MSI target address
6c9828727f BACKPORT: FROMLIST: PCI: dwc: Drop dependency on ZONE_DMA32
cfaccedb79 BACKPORT: f2fs: do not allow to decompress files have FI_COMPRESS_RELEASED
70d1b9fe5f BACKPORT: f2fs: do not set compression bit if kernel doesn't support
66a0472aac BACKPORT: f2fs: fix to remove F2FS_COMPR_FL and tag F2FS_NOCOMP_FL at the same time
b57cdff123 BACKPORT: f2fs: do not skip updating inode when retrying to flush node page
db198f61d0 BACKPORT: f2fs: do not count ENOENT for error case
39886a23bb BACKPORT: f2fs: attach inline_data after setting compression
d85467fdca BACKPORT: f2fs: allow compression for mmap files in compress_mode=user
0e65382de3 BACKPORT: f2fs: fix fallocate to use file_modified to update permissions consistently
0d0b29daf8 BACKPORT: f2fs: don't need inode lock for system hidden quota
089aeb07ab BACKPORT: f2fs: fix to clear dirty inode in f2fs_evict_inode()
05a794d93a BACKPORT: f2fs: avoid infinite loop to flush node pages
9449d07f3f BACKPORT: f2fs: fix to do sanity check on inline_dots inode
820c876e42 BACKPORT: f2fs: introduce data read/write showing path info
8637bc7602 BACKPORT: f2fs: fix wrong condition check when failing metapage read
ffb7e4633b BACKPORT: f2fs: replace congestion_wait() calls with io_schedule_timeout()
a60c2d4f12 ANDROID: vendor_hooks: Add hooks for ipa
e956d16bc2 ANDROID: GKI: add restricted vendor hook for mmc
fc9630b3cb ANDROID: vendor_hooks: add vendor hook for dma_heap_buffer_alloc
47351f748e ANDROID: GKI: Update symbol list for Exynos SoC
f729494767 ANDROID: vendor_hook: add hooks to protect locking-tsk in cpu scheduler
e5e38b46e5 ANDROID: GKI: Update symbols to symbol list
1f925159e2 ANDROID: fix kernelci issue: visibility of struct cgroup_subsys
aea5730216 ANDROID: ABI: Update symbols to unisoc whitelist for sync from local code
4899ed313f ANDROID: GKI: update the ABI xml and pixel symbol list
e7cbfabf82 ANDROID: export reclaim_pages
309a6bf81a ANDROID: vendor_hook: Add hook to not be stuck ro rmap lock in kswapd or direct_reclaim
4f5025129f FROMLIST: usb: dwc3: gadget: Avoid duplicate requests to enable Run/Stop
d4d10fb574 Revert "FROMLIST: usb: dwc3: gadget: Avoid duplicate requests to enable Run/Stop"
2487db8d59 ANDROID: freezer: Add vendor hook to freezer for GKI purpose.
9ac0923ef5 ANDROID: user: Add vendor hook to user for GKI purpose
8b885a54ba ANDROID: GKI: Update symbol list for imx
d1bc61dd85 ANDROID: android: Export symbols for invoking cpufreq_update_util()
b109cefd6f FROMGIT: usb: typec: ucsi: Acknowledge the GET_ERROR_STATUS command completion
6349c3bbd5 ANDROID: GKI: add vendor hook to support emmc FFU
64ae41d79b ANDROID: GKI: Update symbols to symbol list
58c2de6dd0 ANDROID: Update symbol list of mediatek
c3677a966d ANDROID: ABI: update allowed list for galaxy
6581a0bfa7 FROMLIST: usb: gadget: f_uac2: fix superspeed transfer
e2c216a2af UPSTREAM: usb: gadget: f_uac2: clean up some inconsistent indenting
2b0d64ba20 UPSTREAM: wifi: cfg80211: Allow P2P client interface to indicate port authorization
5fad12ed63 UPSTREAM: bcache: move uapi header bcache.h to bcache code directory
99b2e4c942 UPSTREAM: arm64: perf: Support new DT compatibles
08f07e3d42 UPSTREAM: arm64: perf: Simplify registration boilerplate
48af748d03 UPSTREAM: arm64: perf: Support Denver and Carmel PMUs
952fbc560f ANDROID: Add symbols required for NVMe in abi_gki_aarch64_qcom
ce8b55bb08 ANDROID: vendor_hooks: protect multi-mapcount pages in kernel
09ebd2be6e ANDROID: add func:do_traversal_all_lruvec in mm/memcontrol.c
efbe140e82 ANDROID: vendor_hooks: account page-mapcount
bf19ba7dd0 ANDROID: GKI: allow mm vendor hooks header inclusion from header files
e99fffe1d4 ANDROID: Update symbol list for mtk
42f3a7e05f UPSTREAM: dma-buf: remove restriction of IOCTL:DMA_BUF_SET_NAME
dbe7eb9794 ANDROID: abi_gki_aarch64_qcom: Update symbol list
1d7ab182b7 ANDROID: ABI update for virtual device virtio_gpu changes
e0bf6839e7 ANDROID: mm: always destroy mmu_notifier percpu_rwsem asynchronously
3c5af3f431 UPSTREAM: kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS (2nd attempt)
a379c27044 ANDROID: ABI: Update symbols to unisoc whitelist for mmc 2st
7b610b2916 ANDROID: Update symbol list of mediatek
5b6fcb2222 UPSTREAM: kbuild: Ignore __this_module in gen_autoksyms.sh
d78c536fe7 UPSTREAM: binder: fix redefinition of seq_file attributes
b52b0debf7 ANDROID: Add a script to collect information about a device's dependencies
af6d390801 BACKPORT: FROMLIST: wifi: cfg80211: Add link_id parameter to various key operations for MLO
359b4ecb6b ANDROID: Update symbol list for mtk
6360c456ed ANDROID: update symbol list for pixel
60714690fe ANDROID: scsi: ufs: add vendor hook to override key reprogramming
cacbff013b BACKPORT: Bluetooth: L2CAP: Fix use-after-free caused by l2cap_chan_put
c4fbc06424 BACKPORT: KVM: x86/mmu: fix NULL pointer dereference on guest INVPCID
6bb5d6b3f7 ANDROID: GKI: update symbol list
a2f552f49c ANDROID: GKI: vendor code needs __balance_callbacks access

Change-Id: Ibee4a43f0ecbddf17851d4db250e95e83800a5a2
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2023-01-23 12:25:59 +00:00
463 changed files with 41021 additions and 11080 deletions

View File

@@ -1,41 +1,64 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
load("//build/kernel/kleaf:constants.bzl", "aarch64_gz_outs")
load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels", "define_db845c")
package(
default_visibility = [
"//visibility:public",
],
)
load("//build/kernel/kleaf:constants.bzl", "aarch64_gz_outs")
load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels", "define_db845c")
_aarch64_additional_kmi_symbol_lists = [
# keep sorted
"android/abi_gki_aarch64_amlogic",
"android/abi_gki_aarch64_db845c",
"android/abi_gki_aarch64_exynos",
"android/abi_gki_aarch64_exynos_wear",
"android/abi_gki_aarch64_exynosauto",
"android/abi_gki_aarch64_fips140",
"android/abi_gki_aarch64_galaxy",
"android/abi_gki_aarch64_general",
"android/abi_gki_aarch64_honor",
"android/abi_gki_aarch64_imx",
"android/abi_gki_aarch64_mtk",
"android/abi_gki_aarch64_mtktv",
"android/abi_gki_aarch64_oplus",
"android/abi_gki_aarch64_pasa",
"android/abi_gki_aarch64_pixel",
"android/abi_gki_aarch64_qcom",
"android/abi_gki_aarch64_rtktv",
"android/abi_gki_aarch64_sony",
"android/abi_gki_aarch64_sunxi",
"android/abi_gki_aarch64_tuxera",
"android/abi_gki_aarch64_type_visibility",
"android/abi_gki_aarch64_unisoc",
"android/abi_gki_aarch64_virtual_device",
"android/abi_gki_aarch64_virtual_device_removed",
"android/abi_gki_aarch64_vivo",
"android/abi_gki_aarch64_xiaomi",
]
# This uses android/abi_gki_aarch64* in kmi_configs. If the list of
# glob(["android/abi_gki_aarch64*"]) differs from
# KMI_SYMBOL_LIST + ADDITIONAL_KMI_SYMBOL_LISTS in build.config.gki.aarch64,
# or TRIM_NONLISTED_KMI changes, override kmi_configs here.
define_common_kernels(target_configs = {
# Sync with build.config.gki.aarch64
"kernel_aarch64": {
"module_implicit_outs": [
"drivers/block/zram/zram.ko",
"mm/zsmalloc.ko",
],
"kmi_symbol_list": "android/abi_gki_aarch64",
"additional_kmi_symbol_lists": _aarch64_additional_kmi_symbol_lists,
"abi_definition": "android/abi_gki_aarch64.xml",
},
"kernel_aarch64_debug": {
"module_implicit_outs": [
"drivers/block/zram/zram.ko",
"mm/zsmalloc.ko",
],
"kmi_symbol_list": "android/abi_gki_aarch64",
"additional_kmi_symbol_lists": _aarch64_additional_kmi_symbol_lists,
"abi_definition": "android/abi_gki_aarch64.xml",
},
})
@@ -97,7 +120,6 @@ define_db845c(
"drivers/interconnect/qcom/qnoc-sm8250.ko",
"drivers/iommu/arm/arm-smmu/arm_smmu.ko",
"drivers/irqchip/qcom-pdc.ko",
"drivers/leds/led-class-multicolor.ko",
"drivers/mailbox/qcom-apcs-ipc-mailbox.ko",
"drivers/mailbox/qcom-ipcc.ko",
"drivers/mfd/qcom-spmi-pmic.ko",

View File

@@ -7,6 +7,7 @@ Description: UVC function directory
streaming_maxburst 0..15 (ss only)
streaming_maxpacket 1..1023 (fs), 1..3072 (hs/ss)
streaming_interval 1..16
function_name string [32]
=================== =============================
What: /config/usb-gadget/gadget/functions/uvc.name/control

View File

@@ -244,6 +244,17 @@ Description:
is permitted, "u2" if only u2 is permitted, "u1_u2" if both u1 and
u2 are permitted.
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/early_stop
Date: Sep 2022
Contact: Ray Chi <raychi@google.com>
Description:
Some USB hosts have some watchdog mechanisms so that the device
may enter ramdump if it takes a long time during port initialization.
This attribute allows each port just has two attempts so that the
port initialization will be failed quickly. In addition, if a port
which is marked with early_stop has failed to initialize, it will ignore
all future connections until this attribute is clear.
What: /sys/bus/usb/devices/.../power/usb2_lpm_l1_timeout
Date: May 2013
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>

View File

@@ -338,6 +338,10 @@
connected to one of 16 gameports
Format: <type1>,<type2>,..<type16>
android_kmalloc_64_create [MM]
Creates all kmalloc variants of the 64-byte slab cache,
if the hardware supports it.
apc= [HW,SPARC]
Power management functions (SPARCstation-4/5 + deriv.)
Format: noidle

View File

@@ -24,12 +24,13 @@ following subsections.
Kill switch
-----------
``enable`` accepts different values to enable or disable the following
components. Its default value depends on ``CONFIG_LRU_GEN_ENABLED``.
All the components should be enabled unless some of them have
unforeseen side effects. Writing to ``enable`` has no effect when a
component is not supported by the hardware, and valid values will be
accepted even when the main switch is off.
``enabled`` accepts different values to enable or disable the
following components. Its default value depends on
``CONFIG_LRU_GEN_ENABLED``. All the components should be enabled
unless some of them have unforeseen side effects. Writing to
``enabled`` has no effect when a component is not supported by the
hardware, and valid values will be accepted even when the main switch
is off.
====== ===============================================================
Values Components
@@ -39,7 +40,9 @@ Values Components
batches, when MMU sets it (e.g., on x86). This behavior can
theoretically worsen lock contention (mmap_lock). If it is
disabled, the multi-gen LRU will suffer a minor performance
degradation.
degradation for workloads that contiguously map hot pages,
whose accessed bits can be otherwise cleared by fewer larger
batches.
0x0004 Clearing the accessed bit in non-leaf page table entries as
well, when MMU sets it (e.g., on x86). This behavior was not
verified on x86 varieties other than Intel and AMD. If it is
@@ -90,18 +93,19 @@ evicted generations in this file.
Working set estimation
----------------------
Working set estimation measures how much memory an application
requires in a given time interval, and it is usually done with little
impact on the performance of the application. E.g., data centers want
to optimize job scheduling (bin packing) to improve memory
utilizations. When a new job comes in, the job scheduler needs to find
out whether each server it manages can allocate a certain amount of
memory for this new job before it can pick a candidate. To do so, this
job scheduler needs to estimate the working sets of the existing jobs.
Working set estimation measures how much memory an application needs
in a given time interval, and it is usually done with little impact on
the performance of the application. E.g., data centers want to
optimize job scheduling (bin packing) to improve memory utilizations.
When a new job comes in, the job scheduler needs to find out whether
each server it manages can allocate a certain amount of memory for
this new job before it can pick a candidate. To do so, the job
scheduler needs to estimate the working sets of the existing jobs.
When it is read, ``lru_gen`` returns a histogram of numbers of pages
accessed over different time intervals for each memcg and node.
``MAX_NR_GENS`` decides the number of bins for each histogram.
``MAX_NR_GENS`` decides the number of bins for each histogram. The
histograms are noncumulative.
::
memcg memcg_id memcg_path
@@ -110,43 +114,49 @@ accessed over different time intervals for each memcg and node.
...
max_gen_nr age_in_ms nr_anon_pages nr_file_pages
Each generation contains an estimated number of pages that have been
accessed within ``age_in_ms`` non-cumulatively. E.g., ``min_gen_nr``
contains the coldest pages and ``max_gen_nr`` contains the hottest
pages, since ``age_in_ms`` of the former is the largest and that of
the latter is the smallest.
Each bin contains an estimated number of pages that have been accessed
within ``age_in_ms``. E.g., ``min_gen_nr`` contains the coldest pages
and ``max_gen_nr`` contains the hottest pages, since ``age_in_ms`` of
the former is the largest and that of the latter is the smallest.
Users can write ``+ memcg_id node_id max_gen_nr
[can_swap[full_scan]]`` to ``lru_gen`` to create a new generation
``max_gen_nr+1``. ``can_swap`` defaults to the swap setting and, if it
is set to ``1``, it forces the scan of anon pages when swap is off.
``full_scan`` defaults to ``1`` and, if it is set to ``0``, it reduces
the overhead as well as the coverage when scanning page tables.
Users can write the following command to ``lru_gen`` to create a new
generation ``max_gen_nr+1``:
A typical use case is that a job scheduler writes to ``lru_gen`` at a
``+ memcg_id node_id max_gen_nr [can_swap [force_scan]]``
``can_swap`` defaults to the swap setting and, if it is set to ``1``,
it forces the scan of anon pages when swap is off, and vice versa.
``force_scan`` defaults to ``1`` and, if it is set to ``0``, it
employs heuristics to reduce the overhead, which is likely to reduce
the coverage as well.
A typical use case is that a job scheduler runs this command at a
certain time interval to create new generations, and it ranks the
servers it manages based on the sizes of their cold memory defined by
servers it manages based on the sizes of their cold pages defined by
this time interval.
Proactive reclaim
-----------------
Proactive reclaim induces memory reclaim when there is no memory
pressure and usually targets cold memory only. E.g., when a new job
comes in, the job scheduler wants to proactively reclaim memory on the
server it has selected to improve the chance of successfully landing
Proactive reclaim induces page reclaim when there is no memory
pressure. It usually targets cold pages only. E.g., when a new job
comes in, the job scheduler wants to proactively reclaim cold pages on
the server it selected, to improve the chance of successfully landing
this new job.
Users can write ``- memcg_id node_id min_gen_nr [swappiness
[nr_to_reclaim]]`` to ``lru_gen`` to evict generations less than or
equal to ``min_gen_nr``. Note that ``min_gen_nr`` should be less than
``max_gen_nr-1`` as ``max_gen_nr`` and ``max_gen_nr-1`` are not fully
aged and therefore cannot be evicted. ``swappiness`` overrides the
default value in ``/proc/sys/vm/swappiness``. ``nr_to_reclaim`` limits
the number of pages to evict.
Users can write the following command to ``lru_gen`` to evict
generations less than or equal to ``min_gen_nr``.
A typical use case is that a job scheduler writes to ``lru_gen``
before it tries to land a new job on a server, and if it fails to
materialize the cold memory without impacting the existing jobs on
this server, it retries on the next server according to the ranking
result obtained from the working set estimation step described
earlier.
``- memcg_id node_id min_gen_nr [swappiness [nr_to_reclaim]]``
``min_gen_nr`` should be less than ``max_gen_nr-1``, since
``max_gen_nr`` and ``max_gen_nr-1`` are not fully aged (equivalent to
the active list) and therefore cannot be evicted. ``swappiness``
overrides the default value in ``/proc/sys/vm/swappiness``.
``nr_to_reclaim`` limits the number of pages to evict.
A typical use case is that a job scheduler runs this command before it
tries to land a new job on a server. If it fails to materialize enough
cold pages because of the overestimation, it retries on the next
server according to the ranking result obtained from the working set
estimation step. This less forceful approach limits the impacts on the
existing jobs.

View File

@@ -12,12 +12,14 @@ maintainers:
properties:
compatible:
const: arm,cmn-600
enum:
- arm,cmn-600
- arm,ci-700
reg:
items:
- description: Physical address of the base (PERIPHBASE) and
size (up to 64MB) of the configuration address space.
size of the configuration address space.
interrupts:
minItems: 1
@@ -31,14 +33,23 @@ properties:
arm,root-node:
$ref: /schemas/types.yaml#/definitions/uint32
description: Offset from PERIPHBASE of the configuration
discovery node (see TRM definition of ROOTNODEBASE).
description: Offset from PERIPHBASE of CMN-600's configuration
discovery node (see TRM definition of ROOTNODEBASE). Not
relevant for newer CMN/CI products.
required:
- compatible
- reg
- interrupts
- arm,root-node
if:
properties:
compatible:
contains:
const: arm,cmn-600
then:
required:
- arm,root-node
additionalProperties: false

View File

@@ -31,6 +31,10 @@ properties:
description: Required for devices making accesses thru an IOMMU.
maxItems: 1
wakeup-source:
type: boolean
description: Required for setting irq of a virtio_mmio device as wakeup source.
required:
- compatible
- reg

View File

@@ -342,6 +342,11 @@ discard_unit=%s Control discard unit, the argument can be "block", "segment"
default, it is helpful for large sized SMR or ZNS devices to
reduce memory cost by getting rid of fs metadata supports small
discard.
memory=%s Control memory mode. This supports "normal" and "low" modes.
"low" mode is introduced to support low memory devices.
Because of the nature of low memory devices, in this mode, f2fs
will try to save memory sometimes by sacrificing performance.
"normal" mode is the default mode and same as before.
======================== ============================================================
Debugfs Entries

View File

@@ -337,6 +337,7 @@ Currently, the following pairs of encryption modes are supported:
- AES-256-XTS for contents and AES-256-CTS-CBC for filenames
- AES-128-CBC for contents and AES-128-CTS-CBC for filenames
- Adiantum for both contents and filenames
- AES-256-XTS for contents and AES-256-HCTR2 for filenames (v2 policies only)
If unsure, you should use the (AES-256-XTS, AES-256-CTS-CBC) pair.
@@ -357,6 +358,17 @@ To use Adiantum, CONFIG_CRYPTO_ADIANTUM must be enabled. Also, fast
implementations of ChaCha and NHPoly1305 should be enabled, e.g.
CONFIG_CRYPTO_CHACHA20_NEON and CONFIG_CRYPTO_NHPOLY1305_NEON for ARM.
AES-256-HCTR2 is another true wide-block encryption mode that is intended for
use on CPUs with dedicated crypto instructions. AES-256-HCTR2 has the property
that a bitflip in the plaintext changes the entire ciphertext. This property
makes it desirable for filename encryption since initialization vectors are
reused within a directory. For more details on AES-256-HCTR2, see the paper
"Length-preserving encryption with HCTR2"
(https://eprint.iacr.org/2021/1441.pdf). To use AES-256-HCTR2,
CONFIG_CRYPTO_HCTR2 must be enabled. Also, fast implementations of XCTR and
POLYVAL should be enabled, e.g. CRYPTO_POLYVAL_ARM64_CE and
CRYPTO_AES_ARM64_CE_BLK for ARM64.
New encryption modes can be added relatively easily, without changes
to individual filesystems. However, authenticated encryption (AE)
modes are not currently supported because of the difficulty of dealing
@@ -404,11 +416,11 @@ alternatively has the file's nonce (for `DIRECT_KEY policies`_) or
inode number (for `IV_INO_LBLK_64 policies`_) included in the IVs.
Thus, IV reuse is limited to within a single directory.
With CTS-CBC, the IV reuse means that when the plaintext filenames
share a common prefix at least as long as the cipher block size (16
bytes for AES), the corresponding encrypted filenames will also share
a common prefix. This is undesirable. Adiantum does not have this
weakness, as it is a wide-block encryption mode.
With CTS-CBC, the IV reuse means that when the plaintext filenames share a
common prefix at least as long as the cipher block size (16 bytes for AES), the
corresponding encrypted filenames will also share a common prefix. This is
undesirable. Adiantum and HCTR2 do not have this weakness, as they are
wide-block encryption modes.
All supported filenames encryption modes accept any plaintext length
>= 16 bytes; cipher block alignment is not required. However,

View File

@@ -16,6 +16,20 @@ but then try the legacy ones, too.
Notice there's a list of functions in include/dt-bindings/leds/common.h .
* Gamepads and joysticks
Game controllers may feature LEDs to indicate a player number. This is commonly
used on game consoles in which multiple controllers can be connected to a system.
The "player LEDs" are then programmed with a pattern to indicate a particular
player. For example, a game controller with 4 LEDs, may be programmed with "x---"
to indicate player 1, "-x--" to indicate player 2 etcetera where "x" means on.
Input drivers can utilize the LED class to expose the individual player LEDs
of a game controller using the function "player".
Note: tracking and management of Player IDs is the responsibility of user space,
though drivers may pick a default value.
Good: "input*:*:player-{1,2,3,4,5}
* Keyboards
Good: "input*:*:capslock"

View File

@@ -784,6 +784,7 @@ The uvc function provides these attributes in its function directory:
streaming_maxpacket maximum packet size this endpoint is capable of
sending or receiving when this configuration is
selected
function_name name of the interface
=================== ================================================
There are also "control" and "streaming" subdirectories, each of which contain

View File

@@ -22,15 +22,15 @@ The design objectives are:
The representation of access recency is at the core of all LRU
implementations. In the multi-gen LRU, each generation represents a
group of pages with similar access recency. Generations establish a
common frame of reference and therefore help make better choices,
e.g., between different memcgs on a computer or different computers in
a data center (for job scheduling).
(time-based) common frame of reference and therefore help make better
choices, e.g., between different memcgs on a computer or different
computers in a data center (for job scheduling).
Exploiting spatial locality improves efficiency when gathering the
accessed bit. A rmap walk targets a single page and does not try to
profit from discovering a young PTE. A page table walk can sweep all
the young PTEs in an address space, but the address space can be too
large to make a profit. The key is to optimize both methods and use
sparse to make a profit. The key is to optimize both methods and use
them in combination.
Fast paths reduce code complexity and runtime overhead. Unmapped pages
@@ -38,7 +38,7 @@ do not require TLB flushes; clean pages do not require writeback.
These facts are only helpful when other conditions, e.g., access
recency, are similar. With generations as a common frame of reference,
additional factors stand out. But obvious choices might not be good
choices; thus self-correction is required.
choices; thus self-correction is necessary.
The benefits of simple self-correcting heuristics are self-evident.
Again, with generations as a common frame of reference, this becomes
@@ -64,7 +64,7 @@ The protection of the former channel is by design stronger because:
3. The penalty of underprotecting the former channel is higher because
applications usually do not prepare themselves for major page
faults like they do for blocked I/O. E.g., GUI applications
commonly use dedicated I/O threads to avoid blocking the rendering
commonly use dedicated I/O threads to avoid blocking rendering
threads.
There are also two access patterns:
@@ -88,19 +88,19 @@ pages can be evicted regardless of swap constraints. These three
variables are monotonically increasing.
Generation numbers are truncated into ``order_base_2(MAX_NR_GENS+1)``
bits in order to fit into the gen counter in ``page->flags``. Each
bits in order to fit into the gen counter in ``folio->flags``. Each
truncated generation number is an index to ``lrugen->lists[]``. The
sliding window technique is used to track at least ``MIN_NR_GENS`` and
at most ``MAX_NR_GENS`` generations. The gen counter stores a value
within ``[1, MAX_NR_GENS]`` while a page is on one of
``lrugen->lists[]``; otherwise it stores zero.
Each generation is divided into multiple tiers. Tiers represent
different ranges of numbers of accesses through file descriptors. A
page accessed ``N`` times through file descriptors is in tier
``order_base_2(N)``. In contrast to moving across generations, which
requires the LRU lock, moving across tiers only requires operations on
``page->flags`` and therefore has a negligible cost. A feedback loop
Each generation is divided into multiple tiers. A page accessed ``N``
times through file descriptors is in tier ``order_base_2(N)``. Unlike
generations, tiers do not have dedicated ``lrugen->lists[]``. In
contrast to moving across generations, which requires the LRU lock,
moving across tiers only involves atomic operations on
``folio->flags`` and therefore has a negligible cost. A feedback loop
modeled after the PID controller monitors refaults over all the tiers
from anon and file types and decides which tiers from which types to
evict or protect.
@@ -118,12 +118,11 @@ demotion of cold pages happens consequently when it increments
``max_seq``. The aging uses page table walks and rmap walks to find
young PTEs. For the former, it iterates ``lruvec_memcg()->mm_list``
and calls ``walk_page_range()`` with each ``mm_struct`` on this list
to scan PTEs. On finding a young PTE, it clears the accessed bit and
updates the gen counter of the page mapped by this PTE to
``(max_seq%MAX_NR_GENS)+1``. After each iteration of this list, it
increments ``max_seq``. For the latter, when the eviction walks the
rmap and finds a young PTE, the aging scans the adjacent PTEs and
follows the same steps just described.
to scan PTEs, and after each iteration, it increments ``max_seq``. For
the latter, when the eviction walks the rmap and finds a young PTE,
the aging scans the adjacent PTEs. For both, on finding a young PTE,
the aging clears the accessed bit and updates the gen counter of the
page mapped by this PTE to ``(max_seq%MAX_NR_GENS)+1``.
Eviction
--------
@@ -134,12 +133,12 @@ evict from, it first compares ``min_seq[]`` to select the older type.
If both types are equally old, it selects the one whose first tier has
a lower refault percentage. The first tier contains single-use
unmapped clean pages, which are the best bet. The eviction sorts a
page according to the gen counter if the aging has found this page
accessed through page tables and updated the gen counter. It also
page according to its gen counter if the aging has found this page
accessed through page tables and updated its gen counter. It also
moves a page to the next generation, i.e., ``min_seq+1``, if this page
was accessed multiple times through file descriptors and the feedback
loop has detected outlying refaults from the tier this page is in. To
do this, the feedback loop uses the first tier as the baseline, for
this end, the feedback loop uses the first tier as the baseline, for
the reason stated earlier.
Summary
@@ -147,14 +146,14 @@ Summary
The multi-gen LRU can be disassembled into the following parts:
* Generations
* Page table walks
* Rmap walks
* Page table walks
* Bloom filters
* The PID controller
* PID controller
The aging and the eviction is a producer-consumer model; specifically,
the latter drives the former by the sliding window over generations.
Within the aging, rmap walks drive page table walks by inserting hot
densely populated page tables to the Bloom filters. Within the
eviction, the PID controller uses refaults as the feedback to select
types to evict and tiers to protect.
The aging and the eviction form a producer-consumer model;
specifically, the latter drives the former by the sliding window over
generations. Within the aging, rmap walks drive page table walks by
inserting hot densely populated page tables to the Bloom filters.
Within the eviction, the PID controller uses refaults as the feedback
to select types to evict and tiers to protect.

View File

@@ -1954,7 +1954,9 @@ $(clean-dirs):
clean: $(clean-dirs)
$(call cmd,rmfiles)
@find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
@find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) \
$(if $(filter-out arch/$(SRCARCH)/boot/dts, $(dtstree)), $(dtstree)) \
$(RCS_FIND_IGNORE) \
\( -name '*.[aios]' -o -name '*.ko' -o -name '.*.cmd' \
-o -name '*.ko.*' \
-o -name '*.dtb' -o -name '*.dtbo' -o -name '*.dtb.S' -o -name '*.dt.yaml' \

View File

@@ -19,6 +19,7 @@
# required by zram.ko
__alloc_percpu
android_kmalloc_64_create
bio_endio
bio_end_io_acct_remapped
bio_start_io_acct
@@ -81,7 +82,6 @@
strcpy
strlcpy
strlen
__sysfs_match_string
sysfs_streq
unregister_blkdev
up_read

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,9 @@
# commonly used symbols
add_uevent_var
alloc_io_pgtable_ops
__alloc_skb
alloc_workqueue
android_kmalloc_64_create
__arch_copy_from_user
__arch_copy_to_user
arm64_const_caps_ready
@@ -16,8 +18,11 @@
bpf_trace_run3
bpf_trace_run4
bpf_trace_run5
bpf_trace_run6
bpf_trace_run8
bus_register
bus_unregister
call_rcu
cancel_delayed_work
cancel_delayed_work_sync
cancel_work_sync
@@ -27,6 +32,8 @@
cdev_init
__cfi_slowpath_diag
__check_object_size
__class_register
class_unregister
clk_bulk_disable
clk_bulk_enable
clk_bulk_prepare
@@ -53,11 +60,20 @@
__const_udelay
consume_skb
_copy_from_iter
__cpuhp_remove_state
__cpuhp_setup_state
cpu_hwcap_keys
cpu_hwcaps
cpumask_next
cpu_number
__cpu_online_mask
__cpu_possible_mask
crc32_le
crypto_alloc_shash
crypto_destroy_tfm
crypto_shash_setkey
crypto_shash_update
_ctype
debugfs_create_dir
debugfs_create_file
debugfs_create_u32
@@ -65,13 +81,17 @@
debugfs_remove
default_llseek
delayed_work_timer_fn
del_timer
del_timer_sync
destroy_workqueue
dev_close
dev_coredumpv
dev_driver_string
_dev_err
dev_err_probe
dev_get_regmap
device_add
device_del
device_find_child
device_for_each_child
device_get_match_data
@@ -180,6 +200,7 @@
dma_sync_single_for_device
dma_unmap_page_attrs
dma_unmap_sg_attrs
down_read
driver_register
driver_unregister
drm_add_edid_modes
@@ -201,16 +222,22 @@
drm_kms_helper_hotplug_event
drm_mode_vrefresh
enable_irq
eth_type_trans
event_triggers_call
_find_first_bit
_find_first_zero_bit
_find_next_bit
finish_wait
firmware_request_nowarn
flush_delayed_work
flush_work
flush_workqueue
free_io_pgtable_ops
free_irq
__free_pages
free_pages
free_percpu
gcd
generic_handle_domain_irq
generic_handle_irq
geni_icc_disable
@@ -278,6 +305,7 @@
init_net
__init_swait_queue_head
init_timer_key
init_uts_ns
init_wait_entry
__init_waitqueue_head
iomem_resource
@@ -328,24 +356,38 @@
kernel_sendmsg
kfree
kfree_const
kfree_sensitive
kfree_skb
__kmalloc
kmalloc_caches
kmalloc_order_trace
kmem_cache_alloc
kmem_cache_alloc_trace
kmem_cache_create
kmem_cache_destroy
kmem_cache_free
kmemdup
kstrdup
kstrdup_const
kstrtoint
kstrtouint
kthread_create_on_node
kthread_should_stop
kthread_stop
ktime_get
ktime_get_mono_fast_ns
ktime_get_real_ts64
ktime_get_with_offset
kvfree
kvfree_call_rcu
kvmalloc_node
__list_add_valid
__list_del_entry_valid
__local_bh_enable_ip
log_post_read_mmio
log_post_write_mmio
log_read_mmio
log_write_mmio
mbox_client_txdone
mbox_free_channel
mbox_request_channel
@@ -354,6 +396,7 @@
__memcpy_fromio
__memcpy_toio
memmove
memparse
memremap
memset
__memset_io
@@ -380,12 +423,16 @@
__napi_schedule
napi_schedule_prep
__netdev_alloc_skb
netdev_err
netdev_info
netif_napi_add
__netif_napi_del
netif_tx_wake_queue
__nla_parse
nla_put
no_llseek
nr_cpu_ids
__num_online_cpus
nvmem_cell_get
nvmem_cell_put
nvmem_cell_read
@@ -433,8 +480,11 @@
of_property_read_u32_index
of_property_read_variable_u32_array
of_property_read_variable_u8_array
of_prop_next_u32
of_reserved_mem_lookup
param_ops_bool
param_ops_charp
param_ops_int
param_ops_uint
pci_clear_master
pci_disable_device
@@ -449,6 +499,7 @@
pci_request_region
pci_set_master
pci_unregister_driver
__per_cpu_offset
perf_trace_buf_alloc
perf_trace_run_bpf_submit
phy_exit
@@ -499,6 +550,8 @@
radix_tree_next_chunk
___ratelimit
rational_best_approximation
_raw_read_lock
_raw_read_unlock
_raw_spin_lock
_raw_spin_lock_bh
_raw_spin_lock_irq
@@ -507,8 +560,13 @@
_raw_spin_unlock_bh
_raw_spin_unlock_irq
_raw_spin_unlock_irqrestore
_raw_write_lock
_raw_write_lock_bh
_raw_write_unlock
_raw_write_unlock_bh
rb_erase
rb_insert_color
rcu_barrier
__rcu_read_lock
__rcu_read_unlock
rdev_get_drvdata
@@ -516,8 +574,10 @@
regcache_cache_only
regcache_mark_dirty
regcache_sync
register_netdevice_notifier
register_reboot_notifier
__register_rpmsg_driver
register_shrinker
regmap_bulk_read
regmap_bulk_write
regmap_field_read
@@ -549,7 +609,9 @@
request_threaded_irq
reset_control_assert
reset_control_deassert
reset_control_put
reset_control_reset
round_jiffies_up
rpmsg_register_device
rpmsg_send
rpmsg_unregister_device
@@ -561,6 +623,9 @@
rproc_del
rproc_free
rproc_remove_subdev
rtnl_is_locked
rtnl_lock
rtnl_unlock
sched_set_fifo_low
schedule
schedule_timeout
@@ -577,10 +642,14 @@
simple_read_from_buffer
single_open
single_release
skb_clone
skb_copy
skb_copy_bits
skb_dequeue
skb_pull
skb_push
skb_put
skb_queue_head
skb_queue_purge
skb_queue_tail
skb_trim
@@ -633,6 +702,7 @@
strnlen
strpbrk
strscpy
strscpy_pad
strsep
__sw_hweight16
__sw_hweight32
@@ -646,11 +716,13 @@
sysfs_create_link
sysfs_emit
sysfs_remove_link
system_power_efficient_wq
system_wq
tasklet_init
tasklet_kill
__tasklet_schedule
tasklet_setup
tasklet_unlock_wait
thermal_cooling_device_register
thermal_cooling_device_unregister
thermal_zone_device_update
@@ -665,9 +737,14 @@
__ubsan_handle_cfi_check_fail_abort
__udelay
unregister_chrdev_region
unregister_netdevice_notifier
unregister_netdevice_queue
unregister_reboot_notifier
unregister_rpmsg_driver
unregister_shrinker
up_read
usb_disabled
__usecs_to_jiffies
usleep_range_state
vabits_actual
vfree
@@ -707,27 +784,20 @@
iommu_fwspec_free
iommu_group_ref_get
of_dma_is_coherent
param_ops_int
pci_bus_type
pci_device_group
report_iommu_fault
# required by ath.ko
# required by ath10k_core.ko
cpu_latency_qos_add_request
cpu_latency_qos_remove_request
crc32_le
device_get_mac_address
device_set_wakeup_enable
guid_gen
init_uts_ns
__kfifo_alloc
__kfifo_free
param_ops_ulong
skb_copy
skb_dequeue_tail
skb_queue_head
skb_realloc_headroom
strlcat
@@ -742,14 +812,8 @@
iommu_map
# required by ath11k.ko
crypto_alloc_shash
crypto_destroy_tfm
crypto_shash_final
crypto_shash_setkey
crypto_shash_update
memcpy_and_pad
rtnl_lock
rtnl_unlock
# required by ath11k_ahb.ko
rproc_boot
@@ -777,6 +841,56 @@
vchan_tx_desc_free
vchan_tx_submit
# required by cfg80211.ko
bpf_trace_run10
bpf_trace_run7
debugfs_rename
__dev_change_net_namespace
__dev_get_by_index
dev_get_by_index
device_rename
do_trace_netlink_extack
genlmsg_multicast_allns
genlmsg_put
genl_register_family
genl_unregister_family
get_net_ns_by_fd
get_net_ns_by_pid
inet_csk_get_port
key_create_or_update
key_put
keyring_alloc
ktime_get_coarse_with_offset
memcmp
netif_rx_ni
netlink_broadcast
netlink_register_notifier
netlink_unicast
netlink_unregister_notifier
net_ns_type_operations
nla_find
nla_memcpy
nla_put_64bit
nla_reserve
__nla_validate
__put_net
register_netdevice
register_pernet_device
request_firmware_nowait
rfkill_alloc
rfkill_blocked
rfkill_destroy
rfkill_register
rfkill_resume_polling
rfkill_set_hw_state_reason
rfkill_unregister
skb_add_rx_frag
__sock_create
trace_print_array_seq
unregister_pernet_device
verify_pkcs7_signature
wireless_nlevent_flush
# required by clk-qcom.ko
__clk_determine_rate
clk_fixed_factor_ops
@@ -789,7 +903,6 @@
__clk_mux_determine_rate_closest
divider_ro_round_rate_parent
of_find_node_opts_by_path
of_prop_next_u32
pm_genpd_remove_subdomain
# required by clk-rpmh.ko
@@ -808,6 +921,10 @@
mmc_cqe_request_done
# required by display-connector.ko
drm_atomic_get_new_bridge_state
drm_atomic_helper_bridge_destroy_state
drm_atomic_helper_bridge_duplicate_state
drm_atomic_helper_bridge_reset
drm_probe_ddc
of_get_i2c_adapter_by_node
@@ -816,7 +933,6 @@
devm_extcon_dev_register
extcon_set_state_sync
gpiod_set_debounce
system_power_efficient_wq
# required by fastrpc.ko
dma_buf_attach
@@ -827,7 +943,6 @@
dma_buf_put
dma_buf_unmap_attachment
dma_get_sgtable_attrs
down_read
__find_vma
__mmap_lock_do_trace_acquire_returned
__mmap_lock_do_trace_released
@@ -838,7 +953,6 @@
__tracepoint_mmap_lock_acquire_returned
__tracepoint_mmap_lock_released
__tracepoint_mmap_lock_start_locking
up_read
# required by gpio-regulator.ko
devm_gpiod_get_index
@@ -848,20 +962,12 @@
gpiod_get_optional
# required by gpu-sched.ko
call_rcu
dma_fence_add_callback
dma_fence_remove_callback
kmem_cache_alloc
kmem_cache_create
kmem_cache_destroy
kmem_cache_free
kthread_park
kthread_parkme
kthread_should_park
kthread_should_stop
kthread_stop
kthread_unpark
rcu_barrier
wait_for_completion
# required by i2c-designware-core.ko
@@ -908,9 +1014,6 @@
i2c_get_dma_safe_msg_buf
i2c_put_dma_safe_msg_buf
# required by i2c-qup.ko
__usecs_to_jiffies
# required by i2c-rk3x.ko
clk_notifier_register
clk_notifier_unregister
@@ -948,6 +1051,77 @@
pm_clk_resume
pm_clk_suspend
# required by mac80211.ko
alloc_netdev_mqs
__alloc_percpu_gfp
arc4_crypt
arc4_setkey
crc32_be
crypto_aead_decrypt
crypto_aead_encrypt
crypto_aead_setauthsize
crypto_aead_setkey
crypto_alloc_aead
crypto_alloc_skcipher
__crypto_memneq
crypto_shash_digest
crypto_shash_finup
crypto_skcipher_decrypt
crypto_skcipher_encrypt
crypto_skcipher_setkey
__crypto_xor
dev_alloc_name
dev_fetch_sw_netstats
_dev_printk
dev_queue_xmit
ether_setup
eth_mac_addr
ethtool_op_get_link
free_netdev
get_random_u32
__hw_addr_init
__hw_addr_sync
__hw_addr_unsync
kernel_param_lock
kernel_param_unlock
kfree_skb_list
ktime_get_seconds
napi_gro_receive
netdev_set_default_ethtool_ops
netif_carrier_off
netif_carrier_on
netif_receive_skb
netif_receive_skb_list
netif_rx
netif_tx_stop_all_queues
net_ratelimit
prandom_bytes
___pskb_trim
rb_next
rb_prev
register_inet6addr_notifier
register_inetaddr_notifier
rhashtable_free_and_destroy
rhashtable_insert_slow
rhltable_init
__rht_bucket_nested
rht_bucket_nested
rht_bucket_nested_insert
round_jiffies
round_jiffies_relative
sg_init_one
skb_checksum_help
skb_clone_sk
skb_complete_wifi_ack
skb_copy_expand
skb_ensure_writable
__skb_get_hash
__skb_gso_segment
system_freezable_wq
unregister_inet6addr_notifier
unregister_inetaddr_notifier
unregister_netdevice_many
# required by mcp251xfd.ko
alloc_candev_mqs
alloc_can_err_skb
@@ -971,12 +1145,9 @@
dql_completed
dql_reset
free_candev
netdev_err
netdev_info
netdev_notice
netdev_warn
netif_schedule_queue
netif_tx_wake_queue
open_candev
register_candev
regmap_get_val_bytes
@@ -994,8 +1165,6 @@
__vmalloc
# required by mhi.ko
device_add
device_del
pm_wakeup_dev_event
prandom_u32
_raw_read_lock_bh
@@ -1016,8 +1185,6 @@
# required by msm.ko
__bitmap_andnot
__bitmap_weight
bpf_trace_run6
bpf_trace_run8
clk_get_parent
clk_set_parent
component_add
@@ -1026,10 +1193,8 @@
component_master_add_with_match
component_master_del
component_unbind_all
_ctype
debugfs_create_bool
debugfs_create_u64
del_timer
dev_coredumpm
devfreq_cooling_unregister
devfreq_recommended_opp
@@ -1082,9 +1247,11 @@
drm_atomic_private_obj_init
__drm_atomic_state_free
drm_bridge_attach
drm_bridge_connector_enable_hpd
drm_bridge_connector_init
drm_bridge_detect
drm_compat_ioctl
drm_connector_has_possible_encoder
drm_connector_init_with_ddc
drm_connector_list_iter_begin
drm_connector_list_iter_end
drm_connector_list_iter_next
@@ -1247,10 +1414,7 @@
kthread_create_worker
kthread_destroy_worker
kthread_queue_work
kvfree
kvmalloc_node
memdup_user_nul
memparse
mipi_dsi_create_packet
mipi_dsi_host_register
mipi_dsi_host_unregister
@@ -1271,21 +1435,14 @@
of_graph_get_next_endpoint
of_graph_get_remote_port_parent
of_icc_get
param_ops_charp
phy_calibrate
phy_configure
pid_task
pm_runtime_get_if_active
put_pid
put_unused_fd
_raw_read_lock
_raw_read_unlock
_raw_write_lock
_raw_write_unlock
register_shrinker
register_vmap_purge_notifier
reservation_ww_class
round_jiffies_up
sched_set_fifo
schedule_timeout_interruptible
__sg_page_iter_dma_next
@@ -1299,7 +1456,6 @@
sync_file_create
sync_file_get_fence
unmap_mapping_range
unregister_shrinker
unregister_vmap_purge_notifier
vmf_insert_mixed
vm_get_page_prot
@@ -1342,7 +1498,6 @@
dma_pool_create
dma_pool_destroy
dma_pool_free
free_pages
gen_pool_dma_alloc_align
gen_pool_dma_zalloc_align
gen_pool_free_owner
@@ -1385,7 +1540,7 @@
usb_remove_hcd
# required by phy-qcom-qmp.ko
of_clk_get_by_name
devm_get_clk_from_child
__of_reset_control_get
# required by phy-qcom-qusb2.ko
@@ -1447,7 +1602,6 @@
cpufreq_get_driver_data
cpufreq_register_driver
cpufreq_unregister_driver
__cpu_possible_mask
cpu_scale
dev_pm_opp_adjust_voltage
dev_pm_opp_disable
@@ -1459,7 +1613,6 @@
dev_pm_opp_set_sharing_cpus
get_cpu_device
of_get_cpu_node
__per_cpu_offset
policy_has_boost_freq
system_highpri_wq
topology_set_thermal_pressure
@@ -1548,7 +1701,6 @@
bitmap_find_next_zero_area_off
__bitmap_set
cpu_pm_register_notifier
__num_online_cpus
_raw_spin_trylock
# required by qcom_spmi-regulator.ko
@@ -1569,7 +1721,6 @@
_copy_to_iter
# required by qrtr.ko
__alloc_skb
autoremove_wake_function
datagram_poll
do_wait_intr_irq
@@ -1582,8 +1733,6 @@
refcount_dec_and_mutex_lock
release_sock
sk_alloc
skb_clone
skb_copy_bits
skb_copy_datagram_iter
skb_free_datagram
__skb_pad
@@ -1617,8 +1766,6 @@
# required by rmtfs_mem.ko
alloc_chrdev_region
__class_register
class_unregister
# required by rpmsg_ns.ko
rpmsg_create_channel
@@ -1641,7 +1788,6 @@
mmc_send_tuning
regulator_is_supported_voltage
__reset_control_get
reset_control_put
__sdhci_add_host
sdhci_add_host
sdhci_cleanup_host
@@ -1691,9 +1837,6 @@
snd_soc_of_parse_aux_devs
snd_soc_of_parse_card_name
# required by snd-soc-rl6231.ko
gcd
# required by snd-soc-rt5663.ko
regcache_cache_bypass
snd_soc_dapm_disable_pin
@@ -1711,9 +1854,6 @@
# required by snd-soc-wcd9335.ko
kmemdup_nul
snd_soc_get_volsw_sx
snd_soc_info_volsw_sx
snd_soc_put_volsw_sx
strnstr
# required by snd-soc-wcd934x.ko
@@ -1748,7 +1888,6 @@
spi_delay_exec
spi_finalize_current_message
spi_get_next_queued_message
tasklet_unlock_wait
# required by spi-qcom-qspi.ko
icc_disable
@@ -1770,7 +1909,6 @@
dma_heap_get_name
dma_sync_sg_for_cpu
dma_sync_sg_for_device
__free_pages
__sg_page_iter_next
# required by ufs_qcom.ko
@@ -1800,3 +1938,79 @@
# required by wcd934x.ko
mfd_add_devices
mfd_remove_devices
# required by zram.ko
__alloc_percpu
bio_endio
bio_end_io_acct_remapped
bio_start_io_acct
__blk_alloc_disk
blk_cleanup_disk
blk_queue_flag_clear
blk_queue_flag_set
blk_queue_io_min
blk_queue_io_opt
blk_queue_logical_block_size
blk_queue_max_discard_sectors
blk_queue_max_write_zeroes_sectors
blk_queue_physical_block_size
__cpuhp_state_add_instance
__cpuhp_state_remove_instance
crypto_alloc_base
crypto_comp_compress
crypto_comp_decompress
crypto_has_alg
del_gendisk
device_add_disk
disk_end_io_acct
disk_start_io_acct
down_write
flush_dcache_page
fsync_bdev
__get_free_pages
__init_rwsem
kstrtou16
kstrtoull
memset64
page_endio
__register_blkdev
set_capacity
set_capacity_and_notify
sysfs_streq
unregister_blkdev
up_write
zs_compact
zs_create_pool
zs_destroy_pool
zs_free
zs_get_total_pages
zs_huge_class_size
zs_malloc
zs_map_object
zs_pool_stats
zs_unmap_object
# required by zsmalloc.ko
alloc_anon_inode
__alloc_pages
__ClearPageMovable
contig_page_data
dec_zone_page_state
inc_zone_page_state
init_pseudo
iput
kern_mount
kern_unmount
kill_anon_super
page_mapping
__put_page
__SetPageMovable
unlock_page
wait_on_page_bit
# preserved by --additions-only
drm_connector_init_with_ddc
of_clk_get_by_name
snd_soc_get_volsw_sx
snd_soc_info_volsw_sx
snd_soc_put_volsw_sx

View File

@@ -18,7 +18,9 @@
amba_driver_unregister
android_debug_symbol
android_rvh_probe_register
anon_inode_getfd
anon_inode_getfile
__arch_clear_user
__arch_copy_from_user
__arch_copy_to_user
arch_freq_scale
@@ -83,6 +85,7 @@
bpf_trace_run8
bpf_trace_run9
bsearch
build_skb
bus_find_device
bus_for_each_dev
bus_register
@@ -90,6 +93,7 @@
bus_set_iommu
bus_unregister
bus_unregister_notifier
cache_line_size
call_rcu
cancel_delayed_work
cancel_delayed_work_sync
@@ -112,6 +116,7 @@
class_find_device
__class_register
class_unregister
clear_page
__ClearPageMovable
clk_bulk_disable
clk_bulk_enable
@@ -163,6 +168,7 @@
__const_udelay
consume_skb
contig_page_data
copy_from_kernel_nofault
__cpu_active_mask
cpu_all_bits
cpu_bit_bitmap
@@ -213,6 +219,7 @@
cpu_subsys
cpu_topology
crc32_le
crc_ccitt
crypto_alloc_base
crypto_alloc_shash
crypto_comp_compress
@@ -236,6 +243,7 @@
debugfs_create_symlink
debugfs_create_u32
debugfs_create_x32
debugfs_create_x64
debugfs_remove
debugfs_rename
dec_zone_page_state
@@ -292,6 +300,7 @@
device_link_add
device_link_del
device_property_present
device_property_read_string_array
device_property_read_u32_array
device_register
device_remove_file
@@ -350,6 +359,7 @@
devm_pinctrl_put
devm_pinctrl_register
devm_platform_ioremap_resource
devm_platform_ioremap_resource_byname
__devm_regmap_init_i2c
__devm_regmap_init_mmio_clk
devm_regulator_bulk_get
@@ -370,13 +380,18 @@
dev_pm_opp_add
dev_pm_opp_disable
dev_pm_opp_find_freq_ceil
dev_pm_opp_find_freq_ceil_by_volt
dev_pm_opp_find_freq_exact
dev_pm_opp_find_freq_floor
dev_pm_opp_get_freq
dev_pm_opp_get_opp_count
dev_pm_opp_get_voltage
dev_pm_opp_of_add_table
dev_pm_opp_of_register_em
dev_pm_opp_of_remove_table
dev_pm_opp_put
dev_pm_opp_put_regulators
dev_pm_opp_set_regulators
dev_pm_qos_add_notifier
dev_pm_qos_add_request
dev_pm_qos_read_value
@@ -431,12 +446,14 @@
dma_fence_context_alloc
dma_fence_default_wait
dma_fence_enable_sw_signaling
dma_fence_free
dma_fence_get_status
dma_fence_get_stub
dma_fence_init
dma_fence_release
dma_fence_remove_callback
dma_fence_signal
dma_fence_signal_locked
dma_fence_wait_any_timeout
dma_fence_wait_timeout
dma_free_attrs
@@ -454,6 +471,7 @@
dmam_alloc_attrs
dma_map_page_attrs
dma_map_resource
dma_map_sg_attrs
dma_map_sgtable
dmam_free_coherent
dma_mmap_attrs
@@ -481,13 +499,17 @@
double_rq_lock
do_wait_intr
down
downgrade_write
down_interruptible
down_read
down_read_killable
down_read_trylock
down_trylock
down_write
down_write_trylock
d_path
dql_completed
dql_reset
drain_workqueue
driver_register
driver_unregister
@@ -774,10 +796,13 @@
fb_mode_option
__fdget
fd_install
fget
_find_first_bit
_find_first_zero_bit
find_get_pid
_find_next_bit
find_task_by_vpid
__find_vma
find_vpid
finish_wait
firmware_request_nowarn
@@ -830,6 +855,8 @@
get_task_mm
get_thermal_instance
get_unused_fd_flags
get_user_pages
get_user_pages_fast
get_zeroed_page
gic_nonsecure_priorities
gpiochip_add_data_with_key
@@ -845,6 +872,7 @@
gpiod_direction_output
gpiod_direction_output_raw
gpiod_get_raw_value
gpiod_get_raw_value_cansleep
gpiod_get_value_cansleep
gpiod_set_raw_value
gpiod_set_value
@@ -929,6 +957,8 @@
iio_device_free
__iio_device_register
iio_device_unregister
in4_pton
in6_pton
inc_zone_page_state
inet_csk_get_port
init_dummy_netdev
@@ -965,6 +995,8 @@
iommu_device_sysfs_add
iommu_device_sysfs_remove
iommu_device_unlink
iommu_device_unregister
iommu_dma_enable_best_fit_algo
iommu_fwspec_add_ids
iommu_fwspec_free
iommu_get_dma_cookie
@@ -1008,6 +1040,7 @@
irq_set_chip_data
__irq_set_handler
irq_set_handler_data
irq_set_irqchip_state
irq_set_irq_wake
irq_to_desc
irq_work_queue
@@ -1053,6 +1086,7 @@
kmemdup
kobject_add
kobject_create_and_add
kobject_del
kobject_get
kobject_init
kobject_init_and_add
@@ -1078,6 +1112,7 @@
kstrtoull_from_user
kthread_bind
kthread_bind_mask
kthread_cancel_delayed_work_sync
kthread_cancel_work_sync
kthread_create_on_node
kthread_create_worker
@@ -1085,6 +1120,7 @@
kthread_destroy_worker
kthread_flush_work
__kthread_init_worker
kthread_mod_delayed_work
kthread_park
kthread_parkme
kthread_queue_work
@@ -1096,6 +1132,7 @@
ktime_get
ktime_get_coarse_with_offset
ktime_get_mono_fast_ns
ktime_get_raw
ktime_get_raw_ts64
ktime_get_real_seconds
ktime_get_real_ts64
@@ -1133,6 +1170,8 @@
mfd_remove_devices
mipi_dsi_attach
mipi_dsi_compression_mode
mipi_dsi_create_packet
mipi_dsi_dcs_get_display_brightness
mipi_dsi_dcs_read
mipi_dsi_dcs_set_column_address
mipi_dsi_dcs_set_display_brightness
@@ -1144,9 +1183,25 @@
mipi_dsi_driver_unregister
mipi_dsi_host_register
mipi_dsi_host_unregister
mipi_dsi_packet_format_is_long
mipi_dsi_picture_parameter_set
misc_deregister
misc_register
mmc_add_host
mmc_alloc_host
mmc_can_gpio_cd
mmc_detect_change
mmc_free_host
mmc_gpio_get_cd
mmc_gpio_get_ro
mmc_of_parse
mmc_regulator_get_supply
mmc_regulator_set_ocr
mmc_regulator_set_vqmmc
mmc_remove_host
mmc_request_done
mmc_wait_for_req
__mmdrop
mmput
mmu_notifier_synchronize
mod_delayed_work_on
@@ -1179,6 +1234,7 @@
__netif_napi_del
netif_receive_skb
netif_rx_ni
netif_schedule_queue
netif_tx_stop_all_queues
netif_tx_wake_queue
netlink_broadcast
@@ -1204,10 +1260,12 @@
ns_to_kernel_old_timeval
ns_to_timespec64
__num_online_cpus
of_add_property
of_address_to_resource
of_alias_get_highest_id
of_alias_get_id
of_clk_add_provider
of_clk_get
of_clk_get_by_name
of_clk_src_onecell_get
of_count_phandle_with_args
@@ -1217,10 +1275,12 @@
of_device_is_compatible
of_dma_controller_free
of_dma_controller_register
of_dma_is_coherent
of_drm_find_bridge
of_drm_find_panel
of_find_compatible_node
of_find_device_by_node
of_find_i2c_device_by_node
of_find_matching_node_and_match
of_find_node_by_name
of_find_node_by_phandle
@@ -1241,12 +1301,14 @@
of_iomap
of_irq_get_byname
of_irq_parse_one
of_machine_is_compatible
of_match_device
of_match_node
of_n_addr_cells
of_node_name_eq
of_n_size_cells
of_parse_phandle
of_parse_phandle_with_args
of_parse_phandle_with_fixed_args
of_phandle_iterator_init
of_phandle_iterator_next
@@ -1278,6 +1340,7 @@
param_get_charp
param_ops_bint
param_ops_bool
param_ops_byte
param_ops_charp
param_ops_hexint
param_ops_int
@@ -1296,10 +1359,12 @@
pci_bus_type
pci_clear_master
pci_disable_device
pcie_get_mps
pci_enable_atomic_ops_to_root
pci_enable_device
pci_enable_pcie_error_reporting
pci_enable_wake
pcie_set_mps
pci_find_bus
pci_find_ext_capability
pci_free_irq_vectors
@@ -1362,6 +1427,7 @@
pin_get_name
pin_user_pages
pin_user_pages_fast
pin_user_pages_remote
platform_bus_type
platform_device_add
platform_device_add_resources
@@ -1390,6 +1456,8 @@
__pm_runtime_disable
pm_runtime_enable
pm_runtime_forbid
pm_runtime_force_resume
pm_runtime_force_suspend
pm_runtime_get_if_active
__pm_runtime_idle
pm_runtime_irq_safe
@@ -1431,6 +1499,7 @@
put_device
__put_net
__put_page
put_pid
__put_task_struct
put_unused_fd
pwmchip_add
@@ -1475,6 +1544,8 @@
rb_insert_color
rb_next
rb_next_postorder
rb_prev
rb_replace_node
rcu_barrier
__rcu_read_lock
__rcu_read_unlock
@@ -1484,6 +1555,7 @@
refcount_warn_saturate
refresh_frequency_limits
__refrigerator
regcache_cache_bypass
regcache_cache_only
regcache_mark_dirty
regcache_sync
@@ -1497,6 +1569,7 @@
register_netdev
register_netdevice
register_netdevice_notifier
register_oom_notifier
register_pernet_device
register_pm_notifier
register_reboot_notifier
@@ -1513,6 +1586,7 @@
regmap_raw_write_async
regmap_read
regmap_register_patch
regmap_reinit_cache
regmap_update_bits_base
regmap_write
regulator_bulk_disable
@@ -1533,6 +1607,7 @@
release_pages
__release_region
remap_pfn_range
remap_vmalloc_range
remove_cpu
remove_proc_entry
request_firmware
@@ -1583,20 +1658,29 @@
__scsi_execute
scsi_print_sense_hdr
sdev_prefix_printk
sdio_signal_irq
seq_lseek
seq_open
__seq_open_private
seq_printf
seq_putc
seq_puts
seq_read
seq_release
seq_release_private
seq_write
set_capacity
set_capacity_and_notify
set_cpus_allowed_ptr
set_next_entity
set_normalized_timespec64
set_page_dirty_lock
__SetPageMovable
set_task_cpu
sg_alloc_table
sg_alloc_table_from_pages_segment
sg_free_table
sg_init_one
sg_init_table
sg_miter_next
sg_miter_start
@@ -1632,6 +1716,7 @@
skb_queue_purge
skb_queue_tail
skb_realloc_headroom
skb_split
skb_trim
smp_call_function
smp_call_function_any
@@ -1648,6 +1733,7 @@
snd_dmaengine_pcm_prepare_slave_config
snd_dma_free_pages
snd_hwdep_new
snd_jack_set_key
snd_pcm_format_physical_width
snd_pcm_format_width
snd_pcm_hw_constraint_integer
@@ -1663,11 +1749,13 @@
snd_soc_bytes_info_ext
snd_soc_bytes_tlv_callback
snd_soc_card_get_kcontrol
snd_soc_card_jack_new
snd_soc_component_async_complete
snd_soc_component_disable_pin
snd_soc_component_force_enable_pin
snd_soc_component_init_regmap
snd_soc_component_read
snd_soc_component_set_pll
snd_soc_component_set_sysclk
snd_soc_component_update_bits
snd_soc_component_update_bits_async
@@ -1679,6 +1767,7 @@
snd_soc_dai_set_channel_map
snd_soc_dai_set_sysclk
snd_soc_dai_set_tdm_slot
snd_soc_dai_set_tristate
snd_soc_dapm_add_routes
snd_soc_dapm_disable_pin
snd_soc_dapm_enable_pin
@@ -1689,6 +1778,7 @@
snd_soc_dapm_ignore_suspend
snd_soc_dapm_info_pin_switch
snd_soc_dapm_kcontrol_dapm
snd_soc_dapm_mixer_update_power
snd_soc_dapm_new_control
snd_soc_dapm_new_controls
snd_soc_dapm_put_enum_double
@@ -1707,6 +1797,7 @@
snd_soc_info_volsw
snd_soc_info_volsw_sx
snd_soc_info_xr_sx
snd_soc_jack_report
snd_soc_lookup_component
snd_soc_new_compress
snd_soc_of_get_dai_link_codecs
@@ -1765,6 +1856,7 @@
strchr
strcmp
strcpy
strcspn
stream_open
strim
strlcat
@@ -1790,6 +1882,7 @@
__sw_hweight8
sync_file_create
sync_file_get_fence
synchronize_irq
synchronize_net
synchronize_rcu
syscon_regmap_lookup_by_phandle
@@ -1884,16 +1977,20 @@
__traceiter_android_rvh_tick_entry
__traceiter_android_rvh_update_misfit_status
__traceiter_android_rvh_wake_up_new_task
__traceiter_android_vh_arch_set_freq_scale
__traceiter_android_vh_binder_restore_priority
__traceiter_android_vh_binder_set_priority
__traceiter_android_vh_binder_wakeup_ilocked
__traceiter_android_vh_cpu_idle_enter
__traceiter_android_vh_cpu_idle_exit
__traceiter_android_vh_do_wake_up_sync
__traceiter_android_vh_gic_set_affinity
__traceiter_android_vh_ipi_stop
__traceiter_android_vh_logbuf
__traceiter_android_vh_logbuf_pr_cont
__traceiter_android_vh_scheduler_tick
__traceiter_android_vh_set_wake_flags
__traceiter_android_vh_show_mem
__traceiter_android_vh_ufs_check_int_errors
__traceiter_android_vh_ufs_compl_command
__traceiter_binder_transaction_received
@@ -1924,6 +2021,7 @@
__traceiter_suspend_resume
__traceiter_workqueue_execute_end
__traceiter_workqueue_execute_start
trace_output_call
__tracepoint_android_rvh_can_migrate_task
__tracepoint_android_rvh_check_preempt_wakeup
__tracepoint_android_rvh_cpu_cgroup_attach
@@ -1951,16 +2049,20 @@
__tracepoint_android_rvh_tick_entry
__tracepoint_android_rvh_update_misfit_status
__tracepoint_android_rvh_wake_up_new_task
__tracepoint_android_vh_arch_set_freq_scale
__tracepoint_android_vh_binder_restore_priority
__tracepoint_android_vh_binder_set_priority
__tracepoint_android_vh_binder_wakeup_ilocked
__tracepoint_android_vh_cpu_idle_enter
__tracepoint_android_vh_cpu_idle_exit
__tracepoint_android_vh_do_wake_up_sync
__tracepoint_android_vh_gic_set_affinity
__tracepoint_android_vh_ipi_stop
__tracepoint_android_vh_logbuf
__tracepoint_android_vh_logbuf_pr_cont
__tracepoint_android_vh_scheduler_tick
__tracepoint_android_vh_set_wake_flags
__tracepoint_android_vh_show_mem
__tracepoint_android_vh_ufs_check_int_errors
__tracepoint_android_vh_ufs_compl_command
__tracepoint_binder_transaction_received
@@ -1994,6 +2096,7 @@
__tracepoint_workqueue_execute_end
__tracepoint_workqueue_execute_start
trace_print_array_seq
trace_print_flags_seq
trace_print_symbols_seq
trace_raw_output_prep
try_module_get
@@ -2038,10 +2141,20 @@
ttm_sg_tt_init
ttm_tt_destroy_common
ttm_tt_fini
tty_dev_name_to_number
tty_flip_buffer_push
tty_insert_flip_string_fixed_flag
tty_kclose
tty_kopen_exclusive
tty_kref_put
tty_lock
tty_mode_ioctl
tty_port_tty_get
tty_register_ldisc
tty_set_ldisc
tty_set_termios
tty_unlock
tty_unregister_ldisc
typec_get_drvdata
typec_register_partner
typec_register_port
@@ -2091,6 +2204,7 @@
unregister_netdev
unregister_netdevice_notifier
unregister_netdevice_queue
unregister_oom_notifier
unregister_pernet_device
unregister_pm_notifier
unregister_reboot_notifier
@@ -2134,15 +2248,21 @@
v4l2_ctrl_new_custom
v4l2_ctrl_new_std
v4l2_ctrl_new_std_menu
v4l2_ctrl_poll
v4l2_ctrl_subscribe_event
v4l2_device_register
v4l2_device_register_subdev
v4l2_device_set_name
v4l2_device_unregister
v4l2_device_unregister_subdev
v4l2_event_unsubscribe
v4l2_fh_add
v4l2_fh_del
v4l2_fh_exit
v4l2_fh_init
v4l2_fh_is_singular
v4l2_fh_open
v4l2_fh_release
v4l2_i2c_subdev_init
v4l2_m2m_buf_queue
v4l2_m2m_buf_remove
@@ -2198,13 +2318,16 @@
video_devdata
video_device_alloc
video_device_release
video_device_release_empty
video_ioctl2
__video_register_device
video_unregister_device
vmalloc
vmalloc_to_page
vmalloc_to_pfn
vmalloc_user
vmap
vmf_insert_pfn_prot
vm_get_page_prot
vm_iomap_memory
vprintk_emit
@@ -2228,6 +2351,7 @@
wakeup_source_remove
wakeup_source_unregister
__wake_up_sync
__wake_up_sync_key
__warn_printk
watchdog_init_timeout
watchdog_register_device

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,8 @@
[abi_symbol_list]
add_timer
add_wait_queue
alloc_anon_inode
alloc_chrdev_region
alloc_etherdev_mqs
alloc_netdev_mqs
__alloc_pages
@@ -9,7 +11,9 @@
alloc_workqueue
amba_driver_register
amba_driver_unregister
android_debug_for_each_module
android_debug_symbol
android_kmalloc_64_create
anon_inode_getfd
anon_inode_getfile
__arch_clear_user
@@ -33,10 +37,14 @@
__bitmap_clear
__bitmap_complement
bitmap_find_free_region
bitmap_free
bitmap_parselist
bitmap_print_to_pagebuf
bitmap_release_region
__bitmap_set
__bitmap_weight
__bitmap_xor
bitmap_zalloc
__blk_alloc_disk
blk_cleanup_disk
blk_execute_rq
@@ -162,12 +170,24 @@
consume_skb
contig_page_data
copy_from_user_nofault
__cpu_active_mask
cpu_bit_bitmap
cpufreq_cpu_get
cpufreq_cpu_get_raw
cpufreq_cpu_put
__cpufreq_driver_target
cpufreq_freq_transition_begin
cpufreq_freq_transition_end
cpufreq_frequency_table_verify
cpufreq_generic_attr
cpufreq_register_driver
cpufreq_table_index_unsorted
__cpuhp_remove_state
__cpuhp_setup_state
__cpuhp_setup_state_cpuslocked
__cpuhp_state_add_instance
__cpuhp_state_remove_instance
cpuhp_tasks_frozen
cpu_hwcap_keys
cpu_hwcaps
cpumask_next
@@ -182,11 +202,14 @@
cpus_read_unlock
crc32_le
crypto_alloc_base
crypto_alloc_shash
crypto_comp_compress
crypto_comp_decompress
crypto_destroy_tfm
crypto_has_alg
__crypto_memneq
crypto_shash_final
crypto_shash_update
_ctype
current_work
debugfs_attr_read
@@ -200,6 +223,7 @@
debugfs_create_x32
debugfs_lookup
debugfs_remove
debugfs_rename
dec_zone_page_state
default_llseek
default_wake_function
@@ -215,6 +239,17 @@
_dev_emerg
_dev_err
dev_err_probe
devfreq_add_device
devfreq_add_governor
devfreq_monitor_resume
devfreq_monitor_start
devfreq_monitor_stop
devfreq_monitor_suspend
devfreq_recommended_opp
devfreq_remove_device
devfreq_remove_governor
devfreq_update_interval
dev_fwnode
dev_get_stats
device_add_disk
device_create
@@ -222,12 +257,15 @@
device_create_managed_software_node
device_destroy
device_for_each_child
device_get_dma_attr
device_get_match_data
device_get_phy_mode
device_initialize
device_init_wakeup
device_link_add
device_link_del
device_property_present
device_property_read_u32_array
device_property_read_u8_array
device_register
device_remove_file
@@ -238,37 +276,48 @@
_dev_info
__dev_kfree_skb_any
devm_add_action
devm_alloc_etherdev_mqs
devm_clk_get
devm_clk_get_optional
devm_clk_put
dev_mc_sync_multiple
dev_mc_unsync
devm_devfreq_register_notifier
devm_devfreq_unregister_notifier
__devm_drm_dev_alloc
devm_free_irq
devm_gen_pool_create
devm_get_free_pages
devm_gpiochip_add_data_with_key
devm_gpiod_get
devm_gpiod_get_optional
devm_gpio_request_one
devm_hwrng_register
devm_i2c_new_dummy_device
devm_ioremap
devm_ioremap_resource
devm_iounmap
__devm_irq_alloc_descs
devm_kasprintf
devm_kfree
devm_kmalloc
devm_kmemdup
devm_kstrdup
devm_mfd_add_devices
__devm_of_phy_provider_register
devm_pci_alloc_host_bridge
devm_phy_create
devm_phy_get
devm_pinctrl_get
devm_pinctrl_register
devm_platform_ioremap_resource
devm_platform_ioremap_resource_byname
__devm_regmap_init
__devm_regmap_init_i2c
__devm_regmap_init_mmio_clk
devm_regulator_bulk_get
devm_regulator_get
devm_regulator_register
__devm_request_region
devm_request_threaded_irq
__devm_reset_control_get
@@ -279,12 +328,18 @@
devm_thermal_zone_of_sensor_register
_dev_notice
dev_open
dev_pm_opp_add
dev_pm_opp_find_freq_ceil
dev_pm_opp_get_voltage
dev_pm_opp_of_add_table
dev_pm_opp_of_remove_table
dev_pm_opp_put
dev_pm_opp_put_regulators
dev_pm_opp_set_regulators
dev_pm_qos_add_request
dev_pm_qos_read_value
dev_pm_qos_remove_request
dev_pm_qos_update_request
_dev_printk
dev_queue_xmit
devres_add
@@ -313,6 +368,7 @@
dma_buf_export
dma_buf_fd
dma_buf_get
dma_buf_get_flags
dma_buf_map_attachment
dma_buf_mmap
dma_buf_move_notify
@@ -342,6 +398,7 @@
dma_fence_release
dma_fence_remove_callback
dma_fence_signal
dma_fence_signal_locked
dma_fence_wait_any_timeout
dma_fence_wait_timeout
dma_free_attrs
@@ -356,8 +413,10 @@
dma_heap_get_drvdata
dma_heap_get_name
dma_heap_put
dmam_alloc_attrs
dma_map_page_attrs
dma_map_resource
dma_map_sg_attrs
dma_map_sgtable
dma_mmap_attrs
dma_release_channel
@@ -391,8 +450,10 @@
down_trylock
down_write
down_write_trylock
d_path
dql_completed
dql_reset
drain_workqueue
driver_unregister
drm_add_edid_modes
drm_add_modes_noedid
@@ -407,7 +468,9 @@
drm_atomic_helper_commit
drm_atomic_helper_commit_modeset_disables
drm_atomic_helper_commit_planes
__drm_atomic_helper_connector_destroy_state
drm_atomic_helper_connector_destroy_state
__drm_atomic_helper_connector_duplicate_state
drm_atomic_helper_connector_duplicate_state
drm_atomic_helper_connector_reset
drm_atomic_helper_crtc_destroy_state
@@ -636,6 +699,8 @@
drm_universal_plane_init
drm_vblank_init
drm_writeback_connector_init
drm_writeback_queue_job
drm_writeback_signal_completion
dump_backtrace
dump_stack
dw_pcie_ep_init
@@ -656,6 +721,8 @@
ethnl_cable_test_result
ethnl_cable_test_step
eth_prepare_mac_addr_change
ethtool_convert_legacy_u32_to_link_mode
ethtool_convert_link_mode_to_legacy_u32
__ethtool_get_link_ksettings
ethtool_op_get_link
ethtool_op_get_ts_info
@@ -673,18 +740,28 @@
_find_next_bit
__find_vma
finish_wait
flow_block_cb_setup_simple
flow_keys_basic_dissector
flow_rule_match_basic
flow_rule_match_ipv4_addrs
flow_rule_match_ports
flow_rule_match_vlan
flush_dcache_page
flush_delayed_work
flush_work
flush_workqueue
fput
frame_vector_create
frame_vector_destroy
frame_vector_to_pages
free_irq
free_netdev
__free_pages
free_pages
free_percpu
freezing_slow_path
freq_qos_add_request
freq_qos_update_request
fsync_bdev
gcd
generic_file_llseek
@@ -700,24 +777,39 @@
genphy_c45_read_lpa
genphy_check_and_restart_aneg
__genphy_config_aneg
genphy_handle_interrupt_no_ack
genphy_read_abilities
genphy_read_lpa
genphy_read_mmd_unsupported
genphy_read_status
genphy_read_status_fixed
genphy_resume
genphy_setup_forced
genphy_soft_reset
genphy_suspend
genphy_update_link
genphy_write_mmd_unsupported
gen_pool_add_owner
gen_pool_alloc_algo_owner
gen_pool_avail
gen_pool_create
gen_pool_destroy
gen_pool_first_fit_align
gen_pool_free_owner
gen_pool_size
get_cpu_device
get_device
__get_free_pages
get_random_bytes
get_random_u32
__get_task_comm
get_task_mm
get_task_pid
get_unused_fd_flags
get_user_pages
get_user_pages_fast
get_vaddr_frames
get_zeroed_page
gic_nonsecure_priorities
gpiochip_generic_free
gpiochip_generic_request
@@ -740,6 +832,7 @@
handle_nested_irq
handle_simple_irq
handle_sysrq
hdmi_audio_infoframe_init
hdmi_avi_infoframe_init
hdmi_avi_infoframe_pack
hex_dump_to_buffer
@@ -791,6 +884,7 @@
i3c_master_set_info
i3c_master_unregister
ida_alloc_range
ida_destroy
ida_free
idr_alloc
idr_alloc_cyclic
@@ -881,6 +975,7 @@
is_dma_buf_file
is_vmalloc_addr
iterate_fd
jiffies64_to_msecs
jiffies
jiffies_to_msecs
jiffies_to_usecs
@@ -926,6 +1021,7 @@
kstrtobool_from_user
kstrtoint
kstrtoint_from_user
kstrtol_from_user
kstrtoll
kstrtou16
kstrtou8
@@ -959,6 +1055,10 @@
__list_del_entry_valid
__local_bh_enable_ip
__lock_page
log_post_read_mmio
log_post_write_mmio
log_read_mmio
log_write_mmio
loops_per_jiffy
mdiobus_alloc_size
mdiobus_free
@@ -969,6 +1069,9 @@
mdiobus_unregister
__mdiobus_write
mdiobus_write
mdio_device_create
mdio_device_free
memchr
memcpy
__memcpy_fromio
__memcpy_toio
@@ -994,6 +1097,7 @@
misc_deregister
misc_register
__mmdrop
mmput
mmu_notifier_synchronize
mod_delayed_work_on
mod_timer
@@ -1001,6 +1105,7 @@
module_put
__msecs_to_jiffies
msleep
msleep_interruptible
__mutex_init
mutex_is_locked
mutex_lock
@@ -1026,6 +1131,7 @@
netdev_master_upper_dev_link
netdev_notify_peers
netdev_pick_tx
netdev_rss_key_fill
netdev_rx_handler_register
netdev_rx_handler_unregister
netdev_update_features
@@ -1070,6 +1176,7 @@
of_device_is_compatible
of_dma_controller_free
of_dma_controller_register
of_dma_is_coherent
of_drm_find_bridge
of_drm_find_panel
of_find_compatible_node
@@ -1132,6 +1239,11 @@
oops_in_progress
page_endio
page_mapping
page_pool_alloc_pages
page_pool_create
page_pool_destroy
page_pool_put_page
page_pool_release_page
panic
panic_notifier_list
param_array_ops
@@ -1143,6 +1255,7 @@
param_ops_charp
param_ops_hexint
param_ops_int
param_ops_long
param_ops_string
param_ops_uint
param_set_bool
@@ -1175,12 +1288,14 @@
pci_generic_config_read
pci_generic_config_write
pci_get_device
pci_host_probe
pci_iomap
pci_iomap_range
pci_iounmap
pci_irq_get_affinity
pci_irq_vector
pci_load_saved_state
pci_lock_rescan_remove
pci_map_rom
pci_msi_create_irq_domain
pci_msi_mask_irq
@@ -1195,6 +1310,7 @@
pci_release_region
pci_release_resource
pci_release_selected_regions
pci_remove_root_bus
pci_request_region
pci_request_selected_regions
pci_rescan_bus
@@ -1203,7 +1319,9 @@
pci_restore_state
pci_save_state
pci_set_master
pci_stop_root_bus
pci_store_saved_state
pci_unlock_rescan_remove
pci_unmap_rom
pci_unregister_driver
pci_vfs_assigned
@@ -1219,6 +1337,7 @@
perf_trace_run_bpf_submit
pfn_is_map_memory
phy_attached_info
phy_basic_t1_features
phy_config_aneg
phy_configure
phy_disconnect
@@ -1238,10 +1357,27 @@
phylink_connect_phy
phylink_create
phylink_destroy
phylink_disconnect_phy
phylink_ethtool_get_eee
phylink_ethtool_get_pauseparam
phylink_ethtool_get_wol
phylink_ethtool_ksettings_get
phylink_ethtool_ksettings_set
phylink_ethtool_nway_reset
phylink_ethtool_set_eee
phylink_ethtool_set_pauseparam
phylink_ethtool_set_wol
phylink_get_eee_err
phylink_mii_ioctl
phylink_of_phy_connect
phylink_resume
phylink_set_pcs
phylink_set_port_modes
phylink_speed_down
phylink_speed_up
phylink_start
phylink_stop
phylink_suspend
phy_mac_interrupt
phy_mii_ioctl
__phy_modify
@@ -1278,6 +1414,7 @@
pinctrl_remove_gpio_range
pinctrl_select_state
pin_user_pages
pin_user_pages_fast
pin_user_pages_remote
pipe_lock
pipe_unlock
@@ -1327,6 +1464,7 @@
prandom_bytes
preempt_schedule
preempt_schedule_notrace
prepare_to_wait
prepare_to_wait_event
print_hex_dump
_printk
@@ -1336,6 +1474,7 @@
proc_mkdir
proc_set_size
__pskb_pull_tail
ptp_clock_event
ptp_clock_index
ptp_clock_register
ptp_clock_unregister
@@ -1344,6 +1483,7 @@
put_pid
__put_task_struct
put_unused_fd
put_vaddr_frames
pwmchip_add
pwmchip_remove
pwm_get_chip_data
@@ -1399,6 +1539,7 @@
register_chrdev_region
register_console
register_die_notifier
register_module_notifier
register_netdev
register_netdevice_notifier
register_oom_notifier
@@ -1410,6 +1551,7 @@
register_virtio_device
register_virtio_driver
regmap_bulk_write
regmap_multi_reg_write
regmap_read
regmap_register_patch
regmap_update_bits_base
@@ -1426,9 +1568,11 @@
regulator_map_voltage_linear
regulator_put
regulator_register
regulator_set_load
regulator_set_voltage
regulator_unregister
release_firmware
release_pages
__release_region
remap_pfn_range
remap_vmalloc_range
@@ -1436,10 +1580,13 @@
remove_proc_entry
remove_wait_queue
request_firmware
request_firmware_direct
request_firmware_into_buf
__request_region
request_threaded_irq
reset_control_assert
reset_control_deassert
reset_control_reset
return_address
rtc_time64_to_tm
rtc_update_irq
@@ -1477,10 +1624,15 @@
__SetPageMovable
set_user_nice
sg_alloc_table
sg_alloc_table_chained
sg_alloc_table_from_pages_segment
sg_free_table
sg_free_table_chained
sg_init_one
sg_init_table
sg_miter_next
sg_miter_start
sg_miter_stop
sg_next
__sg_page_iter_next
__sg_page_iter_start
@@ -1509,9 +1661,16 @@
smp_call_function
smp_call_function_single
smp_call_on_cpu
snd_ctl_add
snd_ctl_enum_info
snd_ctl_new1
snd_dmaengine_pcm_prepare_slave_config
snd_pcm_add_chmap_ctls
snd_pcm_create_iec958_consumer_default
snd_pcm_fill_iec958_consumer
snd_pcm_fill_iec958_consumer_hw_params
snd_pcm_format_width
snd_pcm_hw_constraint_eld
snd_pcm_hw_constraint_integer
snd_pcm_lib_free_pages
snd_pcm_lib_ioctl
@@ -1539,6 +1698,7 @@
snd_soc_get_volsw
snd_soc_info_enum_double
snd_soc_info_volsw
snd_soc_jack_report
snd_soc_of_get_dai_link_codecs
snd_soc_of_get_dai_name
snd_soc_of_parse_audio_routing
@@ -1589,6 +1749,7 @@
strnstr
strpbrk
strrchr
strscpy
strsep
strstr
subsys_system_register
@@ -1620,6 +1781,7 @@
sysfs_streq
sysrq_mask
system_freezing_cnt
system_state
system_unbound_wq
system_wq
sys_tz
@@ -1643,6 +1805,8 @@
trace_handle_return
__traceiter_android_vh_ipi_stop
__traceiter_android_vh_logbuf
__traceiter_android_vh_logbuf_pr_cont
__traceiter_android_vh_show_mem
__traceiter_android_vh_ufs_fill_prdt
__traceiter_cpu_idle
__traceiter_device_pm_callback_end
@@ -1663,6 +1827,8 @@
trace_output_call
__tracepoint_android_vh_ipi_stop
__tracepoint_android_vh_logbuf
__tracepoint_android_vh_logbuf_pr_cont
__tracepoint_android_vh_show_mem
__tracepoint_android_vh_ufs_fill_prdt
__tracepoint_cpu_idle
__tracepoint_device_pm_callback_end
@@ -1939,9 +2105,11 @@
vunmap
vzalloc
wait_for_completion
wait_for_completion_interruptible
wait_for_completion_interruptible_timeout
wait_for_completion_killable
wait_for_completion_timeout
wait_on_page_bit
__wake_up
__wake_up_locked
wake_up_process
@@ -1967,10 +2135,28 @@
xdp_master_redirect
xdp_return_frame
xdp_return_frame_rx_napi
xdp_rxq_info_is_reg
xdp_rxq_info_reg
xdp_rxq_info_reg_mem_model
xdp_rxq_info_unreg
xdp_rxq_info_unreg_mem_model
xdp_warn
xp_alloc
xp_dma_map
xp_dma_sync_for_cpu_slow
xp_dma_sync_for_device_slow
xp_dma_unmap
xp_free
xp_raw_get_dma
xp_set_rxq_info
xsk_clear_rx_need_wakeup
xsk_get_pool_from_qid
xsk_set_rx_need_wakeup
xsk_set_tx_need_wakeup
xsk_tx_completed
xsk_tx_peek_desc
xsk_tx_release
xsk_uses_need_wakeup
zs_compact
zs_create_pool
zs_destroy_pool

View File

@@ -111,6 +111,7 @@
_raw_spin_lock
_raw_spin_unlock
refcount_warn_saturate
rng_is_initialized
scatterwalk_ffwd
scatterwalk_map_and_copy
sg_init_one

View File

@@ -14,6 +14,13 @@
blk_mq_sched_try_insert_merge
blk_mq_sched_try_merge
blk_queue_rq_timeout
cdc_ncm_bind_common
cdc_ncm_change_mtu
cdc_ncm_fill_tx_frame
cdc_ncm_rx_verify_ndp16
cdc_ncm_rx_verify_nth16
cdc_ncm_select_altsetting
cdc_ncm_unbind
class_create_file_ns
class_remove_file_ns
cleancache_register_ops
@@ -22,6 +29,7 @@
create_function_device
css_next_descendant_pre
_dev_alert
devm_bitmap_zalloc
drm_edid_get_monitor_name
drm_edid_is_valid
elevator_alloc
@@ -46,9 +54,14 @@
gserial_resume
gserial_suspend
gs_free_req
hid_hw_close
hid_hw_open
__kfifo_out_peek
__kfree_skb
kmsg_dump_get_line
kstrtos16
kthread_blkcg
log_suspend_abort_reason
name_to_dev_t
netlink_ack
of_css
@@ -60,8 +73,14 @@
proc_set_size
pstore_register
pstore_unregister
pwm_put
regulator_get_current_limit
rfkill_set_sw_state
sbitmap_queue_min_shallow_depth
skb_copy_ubufs
smpboot_unregister_percpu_thread
snd_soc_add_card_controls
stack_trace_save_regs
__traceiter_android_rvh_die_kernel_fault
__traceiter_android_rvh_do_mem_abort
__traceiter_android_rvh_do_sp_pc_abort
@@ -69,18 +88,43 @@
__traceiter_android_vh_meminfo_proc_show
__traceiter_android_vh_show_mem
__traceiter_block_rq_insert
__tracepoint_android_rvh_arm64_serror_panic
__tracepoint_android_rvh_die_kernel_fault
__tracepoint_android_rvh_do_mem_abort
__tracepoint_android_rvh_do_ptrauth_fault
__tracepoint_android_rvh_do_sea
__tracepoint_android_rvh_do_sp_pc_abort
__tracepoint_android_rvh_do_undefinstr
__tracepoint_android_rvh_panic_unhandled
__tracepoint_android_vh_meminfo_proc_show
__tracepoint_android_vh_ptype_head
__tracepoint_android_vh_rtmutex_wait_finish
__tracepoint_android_vh_rtmutex_wait_start
__tracepoint_android_vh_rwsem_read_wait_finish
__tracepoint_android_vh_rwsem_write_wait_finish
__tracepoint_android_vh_sched_show_task
__tracepoint_android_vh_show_mem
__tracepoint_android_vh_try_to_freeze_todo
__tracepoint_android_vh_try_to_freeze_todo_unfrozen
__tracepoint_android_vh_watchdog_timer_softlockup
__tracepoint_android_vh_wq_lockup_pool
__tracepoint_block_rq_insert
__tracepoint_hrtimer_expire_entry
__tracepoint_hrtimer_expire_exit
__tracepoint_irq_handler_entry
__tracepoint_irq_handler_exit
__tracepoint_kfree_skb
__tracepoint_workqueue_execute_start
_trace_android_vh_record_pcpu_rwsem_starttime
usb_alloc_dev
usb_deregister_dev
usb_find_interface
usb_hid_driver
usbnet_cdc_unbind
usbnet_defer_kevent
usbnet_generic_cdc_bind
usb_poison_anchored_urbs
usb_register_dev
usb_set_device_state
vfs_fsync_range
__vlan_find_dev_deep_rcu

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,7 @@
__traceiter_android_vh_mutex_unlock_slowpath
__traceiter_android_vh_mutex_wait_start
__traceiter_android_vh_mutex_wait_finish
__traceiter_android_rvh_dma_buf_stats_teardown
__tracepoint_android_vh_rwsem_init
__tracepoint_android_vh_rwsem_wake
__tracepoint_android_vh_rwsem_write_finished
@@ -17,3 +18,4 @@
__tracepoint_android_vh_mutex_unlock_slowpath
__tracepoint_android_vh_mutex_wait_start
__tracepoint_android_vh_mutex_wait_finish
__tracepoint_android_rvh_dma_buf_stats_teardown

View File

@@ -3,9 +3,11 @@
add_wait_queue
alloc_chrdev_region
alloc_etherdev_mqs
alloc_netdev_mqs
__alloc_pages
alloc_pages_exact
__alloc_percpu
__alloc_skb
alloc_workqueue
__arch_copy_from_user
__arch_copy_to_user
@@ -17,16 +19,23 @@
atomic_notifier_chain_unregister
bcmp
__bitmap_and
__bitmap_complement
blocking_notifier_call_chain
blocking_notifier_chain_register
blocking_notifier_chain_unregister
bpf_trace_run1
bpf_trace_run2
bpf_trace_run3
bpf_trace_run4
bpf_trace_run5
bpf_trace_run6
bsearch
bus_register
bus_unregister
cancel_delayed_work
cancel_delayed_work_sync
cancel_work_sync
capable
cdev_add
cdev_del
cdev_init
@@ -88,6 +97,8 @@
cpu_number
__cpu_online_mask
__cpu_possible_mask
crc32_le
crypto_destroy_tfm
_ctype
debugfs_create_dir
debugfs_create_file
@@ -98,6 +109,8 @@
del_timer
del_timer_sync
destroy_workqueue
dev_alloc_name
dev_close
_dev_crit
dev_driver_string
_dev_err
@@ -109,7 +122,9 @@
device_del
device_destroy
device_for_each_child
device_get_child_node_count
device_get_match_data
device_get_next_child_node
device_initialize
device_init_wakeup
device_link_add
@@ -125,9 +140,11 @@
_dev_info
__dev_kfree_skb_any
devm_add_action
devm_backlight_device_register
devm_clk_bulk_get
devm_clk_get
devm_clk_get_optional
devm_device_add_group
__devm_drm_dev_alloc
devm_drm_panel_bridge_add
devm_extcon_dev_allocate
@@ -148,6 +165,7 @@
devm_kfree
devm_kmalloc
devm_kmemdup
devm_led_classdev_register_ext
__devm_of_phy_provider_register
devm_phy_create
devm_phy_get
@@ -173,6 +191,7 @@
devm_thermal_zone_of_sensor_register
devm_usb_get_phy_by_phandle
devm_watchdog_register_device
dev_pm_domain_attach_by_id
dev_pm_domain_attach_by_name
dev_pm_domain_detach
dev_pm_set_wake_irq
@@ -211,6 +230,7 @@
dma_map_sg_attrs
dma_map_sgtable
dmam_free_coherent
dma_mmap_attrs
dma_pool_alloc
dma_pool_create
dma_pool_destroy
@@ -359,8 +379,10 @@
drm_vblank_init
dump_stack
enable_irq
ether_setup
ethnl_cable_test_fault_length
ethnl_cable_test_result
ethtool_op_get_link
eth_type_trans
eth_validate_addr
event_triggers_call
@@ -369,6 +391,7 @@
_find_first_bit
_find_next_bit
finish_wait
flush_delayed_work
flush_work
flush_workqueue
fput
@@ -382,6 +405,7 @@
fwnode_graph_get_remote_port_parent
fwnode_handle_put
fwnode_property_present
fwnode_property_read_string
fwnode_property_read_u32_array
fwnode_property_read_u64_array
gcd
@@ -401,9 +425,11 @@
get_random_bytes
get_unused_fd_flags
gic_nonsecure_priorities
gpiochip_add_data_with_key
gpiochip_generic_free
gpiochip_generic_request
gpiochip_get_data
gpiochip_remove
gpiod_direction_output
gpiod_direction_output_raw
gpiod_get_optional
@@ -456,13 +482,16 @@
iio_get_time_ns
iio_push_event
iio_push_to_buffers
init_net
__init_swait_queue_head
init_timer_key
init_wait_entry
__init_waitqueue_head
input_alloc_absinfo
input_event
input_mt_init_slots
input_mt_report_slot_state
input_mt_sync_frame
input_register_device
input_set_abs_params
input_set_capability
@@ -483,10 +512,17 @@
irq_set_irq_wake
is_vmalloc_addr
jiffies
jiffies_to_msecs
jiffies_to_usecs
kasan_flag_enabled
kasprintf
__kfifo_alloc
__kfifo_free
__kfifo_in
__kfifo_out
kfree
kfree_sensitive
kfree_skb
kimage_voffset
__kmalloc
kmalloc_caches
@@ -498,6 +534,7 @@
kmem_cache_free
kmemdup
kobject_create_and_add
kobject_uevent_env
krealloc
kstrdup
kstrtoint
@@ -510,6 +547,9 @@
ktime_get
ktime_get_mono_fast_ns
ktime_get_real_ts64
ktime_get_with_offset
kvfree_call_rcu
led_init_default_state_get
__list_add_valid
__list_del_entry_valid
__local_bh_enable_ip
@@ -526,6 +566,7 @@
media_device_unregister
media_entity_pads_init
media_entity_remote_pad
memcmp
memcpy
__memcpy_fromio
__memcpy_toio
@@ -538,14 +579,20 @@
mipi_dsi_create_packet
mipi_dsi_dcs_enter_sleep_mode
mipi_dsi_dcs_exit_sleep_mode
mipi_dsi_dcs_get_display_brightness
mipi_dsi_dcs_set_display_brightness
mipi_dsi_dcs_set_display_off
mipi_dsi_dcs_set_display_on
mipi_dsi_dcs_set_pixel_format
mipi_dsi_dcs_set_tear_on
mipi_dsi_dcs_set_tear_scanline
mipi_dsi_dcs_soft_reset
mipi_dsi_detach
mipi_dsi_device_register_full
mipi_dsi_device_unregister
mipi_dsi_driver_register_full
mipi_dsi_driver_unregister
mipi_dsi_generic_write
mipi_dsi_host_register
mipi_dsi_host_unregister
misc_deregister
@@ -564,17 +611,30 @@
napi_complete_done
napi_disable
napi_enable
napi_gro_receive
__napi_schedule
napi_schedule_prep
__netdev_alloc_skb
netdev_err
netdev_info
netif_carrier_off
netif_carrier_on
netif_device_attach
netif_device_detach
netif_napi_add
netif_receive_skb
netif_rx
netif_rx_ni
netif_tx_stop_all_queues
netif_tx_wake_queue
netlink_broadcast
net_ratelimit
__nla_parse
nla_put
no_llseek
noop_llseek
nr_cpu_ids
__num_online_cpus
of_address_to_resource
of_alias_get_id
of_clk_add_hw_provider
@@ -633,7 +693,6 @@
of_property_read_variable_u32_array
of_reserved_mem_device_init_by_idx
of_reserved_mem_lookup
of_reset_control_array_get
of_thermal_get_trip_points
of_usb_get_phy_mode
oops_in_progress
@@ -668,6 +727,7 @@
pinctrl_pm_select_default_state
pinctrl_pm_select_sleep_state
pinctrl_select_state
platform_bus_type
platform_device_add
platform_device_add_data
platform_device_alloc
@@ -685,7 +745,6 @@
platform_irq_count
pm_genpd_init
pm_genpd_remove
__pm_relax
pm_runtime_allow
__pm_runtime_disable
pm_runtime_enable
@@ -705,19 +764,26 @@
preempt_schedule_notrace
prepare_to_wait_event
_printk
pskb_expand_head
__pskb_pull_tail
put_device
__put_page
__put_task_struct
pwm_apply_state
queue_delayed_work_on
queue_work_on
___ratelimit
_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
rb_erase
rb_insert_color
__rcu_read_lock
__rcu_read_unlock
rdev_get_drvdata
@@ -727,7 +793,12 @@
regcache_sync
regcache_sync_region
__register_chrdev
register_inet6addr_notifier
register_inetaddr_notifier
register_netdev
register_netdevice
register_netdevice_notifier
register_pm_notifier
register_reboot_notifier
__register_rpmsg_driver
register_virtio_driver
@@ -780,6 +851,7 @@
rtc_time64_to_tm
rtc_tm_to_time64
rtc_update_irq
rtnl_is_locked
rtnl_lock
rtnl_unlock
schedule
@@ -804,8 +876,12 @@
simple_strtoul
single_open
single_release
skb_clone
skb_copy_bits
skb_pull
skb_push
skb_put
skb_trim
snd_ctl_boolean_mono_info
snd_dma_alloc_pages
snd_dmaengine_pcm_prepare_slave_config
@@ -876,10 +952,15 @@
strscpy
strsep
strstr
__sw_hweight16
__sw_hweight32
__sw_hweight64
__sw_hweight8
sync_file_create
sync_file_get_fence
synchronize_irq
synchronize_net
synchronize_rcu
syscon_node_to_regmap
syscon_regmap_lookup_by_compatible
syscon_regmap_lookup_by_phandle
@@ -890,12 +971,17 @@
sysfs_remove_file_ns
sysfs_remove_group
sysrq_mask
system_power_efficient_wq
system_wq
tasklet_init
tasklet_kill
__tasklet_schedule
tasklet_setup
thermal_cooling_device_unregister
thermal_of_cooling_device_register
timer_of_init
touchscreen_parse_properties
touchscreen_report_pos
trace_event_buffer_commit
trace_event_buffer_reserve
trace_event_ignore_this_pid
@@ -905,9 +991,13 @@
trace_handle_return
trace_raw_output_prep
try_module_get
tty_encode_baud_rate
tty_flip_buffer_push
__tty_insert_flip_char
tty_insert_flip_string_fixed_flag
tty_kref_put
tty_port_tty_get
tty_termios_baud_rate
uart_add_one_port
uart_console_device
uart_console_write
@@ -927,13 +1017,21 @@
__udelay
__unregister_chrdev
unregister_chrdev_region
unregister_inet6addr_notifier
unregister_inetaddr_notifier
unregister_netdev
unregister_netdevice_notifier
unregister_netdevice_queue
unregister_rpmsg_driver
unregister_virtio_driver
up
up_read
up_write
usb_add_phy_dev
usb_autopm_get_interface
usb_autopm_put_interface
usb_control_msg
usb_disabled
usb_remove_phy
usleep_range_state
v4l2_ctrl_handler_free
@@ -1029,9 +1127,6 @@
mdio_device_reset
phy_resolve_aneg_pause
# required by busfreq-imx8mq.ko
register_pm_notifier
# required by cdns_mhdp_drmcore.ko
drm_connector_attach_content_protection_property
drm_dp_aux_register
@@ -1048,8 +1143,57 @@
hdmi_avi_infoframe_check
seq_write
# required by cfg80211.ko
bpf_trace_run10
bpf_trace_run7
debugfs_rename
__dev_change_net_namespace
__dev_get_by_index
dev_get_by_index
device_rename
do_trace_netlink_extack
genlmsg_multicast_allns
genlmsg_put
genl_register_family
genl_unregister_family
get_net_ns_by_fd
get_net_ns_by_pid
inet_csk_get_port
init_uts_ns
key_create_or_update
key_put
keyring_alloc
ktime_get_coarse_with_offset
netlink_register_notifier
netlink_unicast
netlink_unregister_notifier
net_ns_type_operations
nla_find
nla_memcpy
nla_put_64bit
nla_reserve
__nla_validate
of_prop_next_u32
__put_net
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
sysfs_create_link
sysfs_remove_link
trace_print_array_seq
unregister_pernet_device
verify_pkcs7_signature
wireless_nlevent_flush
# required by ci_hdrc.ko
bpf_trace_run2
debugfs_lookup
devm_extcon_register_notifier
devm_usb_get_phy
@@ -1068,7 +1212,6 @@
__usb_create_hcd
usb_debug_root
usb_del_gadget_udc
usb_disabled
usb_ep_alloc_request
usb_ep_clear_halt
usb_ep_disable
@@ -1111,6 +1254,9 @@
cma_release
dma_contiguous_default_area
# required by cp210x.ko
tty_termios_hw_change
# required by cpufreq-dt.ko
cpufreq_enable_boost_support
cpufreq_freq_attr_scaling_available_freqs
@@ -1175,6 +1321,9 @@
__drmm_simple_encoder_alloc
drm_of_encoder_active_endpoint
# required by elants_i2c.ko
i2c_smbus_xfer
# required by fb.ko
console_lock
console_unlock
@@ -1193,19 +1342,13 @@
system_unbound_wq
# required by fec.ko
crc32_le
ethtool_op_get_link
ethtool_op_get_ts_info
mdiobus_alloc_size
mdiobus_free
mdiobus_is_registered_device
mdiobus_unregister
napi_gro_receive
netdev_err
netdev_info
netdev_pick_tx
netif_schedule_queue
net_ratelimit
net_selftest
net_selftest_get_count
net_selftest_get_strings
@@ -1239,7 +1382,6 @@
phy_stop
phy_support_sym_pause
platform_get_irq_byname_optional
pskb_expand_head
ptp_clock_event
ptp_clock_index
ptp_clock_register
@@ -1275,9 +1417,9 @@
# required by fsl_lpuart.ko
add_timer
console_suspend_enabled
tty_kref_put
tty_port_tty_get
tty_termios_baud_rate
# required by ftdi_sio.ko
kstrtou8
# required by galcore.ko
anon_inode_getfd
@@ -1286,7 +1428,6 @@
dev_pm_opp_remove
dma_fence_array_ops
dma_fence_signal
dma_mmap_attrs
down
driver_create_file
driver_remove_file
@@ -1304,27 +1445,24 @@
iommu_map
iommu_set_fault_handler
iommu_unmap
jiffies_to_msecs
kstrtoint_from_user
ktime_get_ts64
mem_section
mutex_trylock
param_ops_ullong
pid_task
platform_bus_type
reset_control_reset
schedule_hrtimeout
__task_pid_nr_ns
_totalram_pages
__traceiter_gpu_mem_total
__tracepoint_gpu_mem_total
vm_mmap
vm_munmap
vm_zone_stat
# required by goodix.ko
gpiod_direction_input
input_alloc_absinfo
input_mt_sync_frame
touchscreen_parse_properties
touchscreen_report_pos
# required by gpio-imx-rpmsg.ko
generic_handle_irq
@@ -1349,7 +1487,6 @@
register_syscore_ops
# required by gpio-pca953x.ko
__bitmap_complement
__bitmap_or
__bitmap_replace
__bitmap_xor
@@ -1377,7 +1514,6 @@
kobject_uevent
kstrtoll
strpbrk
__sw_hweight32
sysfs_notify
thermal_zone_device_update
@@ -1434,9 +1570,9 @@
devm_mbox_controller_register
mbox_chan_received_data
mbox_chan_txdone
tasklet_init
# required by imx-pcm-rpmsg.ko
__pm_relax
__pm_stay_awake
snd_soc_lookup_component
wakeup_source_register
@@ -1517,7 +1653,6 @@
devm_of_phy_get
# required by imx_dsp_rproc.ko
dev_pm_domain_attach_by_id
rproc_da_to_va
rproc_of_parse_firmware
@@ -1539,34 +1674,95 @@
# required by kfifo_buf.ko
iio_buffer_init
iio_buffer_put
__kfifo_alloc
__kfifo_free
__kfifo_in
__kfifo_to_user
# required by leds-gpio.ko
device_get_child_node_count
device_get_next_child_node
devm_fwnode_gpiod_get_index
devm_led_classdev_register_ext
gpiod_cansleep
gpiod_set_value
led_init_default_state_get
# required by leds-pwm.ko
devm_fwnode_pwm_get
of_fwnode_ops
# required by lpa_ctrl.ko
sysfs_create_groups
# required by mac80211.ko
__alloc_percpu_gfp
arc4_crypt
arc4_setkey
call_rcu
crc32_be
crypto_aead_decrypt
crypto_aead_encrypt
crypto_aead_setauthsize
crypto_aead_setkey
crypto_alloc_aead
crypto_alloc_shash
crypto_alloc_skcipher
__crypto_memneq
crypto_shash_digest
crypto_shash_finup
crypto_shash_setkey
crypto_shash_update
crypto_skcipher_decrypt
crypto_skcipher_encrypt
crypto_skcipher_setkey
__crypto_xor
dev_fetch_sw_netstats
_dev_printk
dev_queue_xmit
eth_mac_addr
get_random_u32
__hw_addr_init
__hw_addr_sync
__hw_addr_unsync
kernel_param_lock
kernel_param_unlock
kfree_skb_list
ktime_get_seconds
kvfree
kvmalloc_node
netdev_set_default_ethtool_ops
netif_receive_skb_list
prandom_bytes
___pskb_trim
rb_next
rb_prev
rcu_barrier
rhashtable_free_and_destroy
rhashtable_insert_slow
rhltable_init
__rht_bucket_nested
rht_bucket_nested
rht_bucket_nested_insert
round_jiffies
round_jiffies_relative
round_jiffies_up
skb_checksum_help
skb_clone_sk
skb_complete_wifi_ack
skb_copy
skb_copy_expand
skb_dequeue
skb_ensure_writable
__skb_get_hash
__skb_gso_segment
skb_queue_head
skb_queue_purge
skb_queue_tail
system_freezable_wq
tasklet_unlock_wait
unregister_netdevice_many
__usecs_to_jiffies
# required by micrel.ko
genphy_restart_aneg
# required by moal.ko
alloc_netdev_mqs
__alloc_skb
dev_alloc_name
ether_setup
in4_pton
init_dummy_netdev
init_net
iwe_stream_add_event
iwe_stream_add_point
iwe_stream_add_value
@@ -1574,24 +1770,13 @@
iw_handler_get_thrspy
iw_handler_set_spy
iw_handler_set_thrspy
kfree_skb
ktime_get_raw_ts64
ktime_get_with_offset
memcmp
mmc_hw_reset
mmc_set_data_timeout
mmc_wait_for_req
netif_carrier_on
__netif_napi_del
netif_receive_skb
netif_rx
netif_rx_ni
netif_tx_stop_all_queues
netlink_broadcast
__netlink_kernel_create
netlink_kernel_release
__nla_parse
nla_put
panic
param_ops_ushort
pci_choose_state
@@ -1614,16 +1799,10 @@
pci_set_power_state
pci_unregister_driver
PDE_DATA
pm_wakeup_ws_event
prandom_u32
proc_create_data
proc_mkdir
_raw_spin_lock_bh
_raw_spin_unlock_bh
register_inet6addr_notifier
register_inetaddr_notifier
request_firmware_direct
rtnl_is_locked
schedule_timeout_uninterruptible
sdio_claim_host
sdio_claim_irq
@@ -1642,20 +1821,11 @@
sdio_unregister_driver
sdio_writeb
sdio_writesb
skb_clone
skb_push
skb_realloc_headroom
skb_trim
strcat
strim
strncasecmp
__sw_hweight64
synchronize_net
unregister_inet6addr_notifier
unregister_inetaddr_notifier
vprintk
wakeup_source_add
wakeup_source_remove
wireless_send_event
# required by mpl3115.ko
@@ -1666,7 +1836,6 @@
bdi_alloc
bdi_put
bdi_register
capable
deactivate_locked_super
fixed_size_llseek
generic_shutdown_super
@@ -1699,7 +1868,9 @@
# required by mxc-clk.ko
__clk_determine_rate
clk_divider_ops
clk_divider_ro_ops
clk_fractional_divider_ops
clk_gate_is_enabled
clk_gate_ops
__clk_get_hw
clk_hw_get_name
@@ -1710,6 +1881,7 @@
clk_hw_unregister
clk_mux_index_to_val
clk_mux_ops
clk_mux_ro_ops
clk_unregister
divider_get_val
divider_recalc_rate
@@ -1721,7 +1893,6 @@
# required by mxs-dma.ko
dmaenginem_async_device_register
tasklet_setup
# required by mxsfb.ko
devm_drm_panel_bridge_add_typed
@@ -1756,15 +1927,6 @@
v4l2_event_subdev_unsubscribe
__v4l2_find_nearest_size
# required by panel-raydium-rm67191.ko
devm_backlight_device_register
mipi_dsi_dcs_get_display_brightness
mipi_dsi_dcs_set_display_brightness
mipi_dsi_dcs_set_pixel_format
mipi_dsi_dcs_set_tear_scanline
mipi_dsi_dcs_soft_reset
mipi_dsi_generic_write
# required by panel-rocktech-hx8394f.ko
mipi_dsi_dcs_write_buffer
@@ -1819,6 +1981,7 @@
of_clk_src_simple_get
# required by phy-generic.ko
devm_regulator_get_exclusive
regulator_set_current_limit
# required by pinctrl-imx.ko
@@ -1845,7 +2008,6 @@
backlight_device_register
backlight_device_unregister
devm_pwm_get
pwm_apply_state
pwm_free
pwm_request
@@ -1888,6 +2050,7 @@
__regmap_init_mmio_clk
# required by rpmsg_life_cycle.ko
pm_suspend_target_state
remove_cpu
# required by rpmsg_ns.ko
@@ -1936,9 +2099,6 @@
drm_panel_prepare
of_drm_find_panel
# required by sec_mipi_dsim-imx.ko
reset_control_put
# required by secure_heap.ko
deferred_free
gen_pool_add_owner
@@ -1968,7 +2128,6 @@
# required by snd-soc-fsl-micfil.ko
kobject_put
kobject_uevent_env
snd_soc_get_volsw_sx
snd_soc_info_volsw_sx
snd_soc_put_volsw_sx
@@ -2015,6 +2174,7 @@
# required by snd-soc-simple-card-utils.ko
devm_kvasprintf
snd_soc_component_set_sysclk
snd_soc_daifmt_clock_provider_from_bitmap
snd_soc_dapm_get_pin_switch
snd_soc_dapm_info_pin_switch
@@ -2044,7 +2204,6 @@
snd_soc_dapm_force_enable_pin_unlocked
snd_soc_dapm_sync
snd_soc_dapm_sync_unlocked
system_power_efficient_wq
try_wait_for_completion
# required by snd-sof.ko
@@ -2132,8 +2291,6 @@
dma_buf_vunmap
fget
import_iovec
rb_erase
rb_insert_color
strncpy_from_user
virtqueue_detach_unused_buf
wait_woken
@@ -2164,6 +2321,48 @@
of_clk_set_defaults
of_device_request_module
# required by usbserial.ko
driver_attach
schedule_timeout_interruptible
seq_putc
__tty_alloc_driver
tty_driver_kref_put
tty_hangup
tty_ldisc_deref
tty_ldisc_ref
tty_port_close
tty_port_destroy
tty_port_hangup
tty_port_init
tty_port_open
tty_port_register_device
tty_port_tty_wakeup
tty_register_driver
tty_standard_install
tty_std_termios
tty_termios_copy_hw
tty_unregister_device
tty_unregister_driver
tty_vhangup
usb_alloc_urb
usb_deregister
usb_driver_claim_interface
usb_driver_release_interface
usb_free_urb
usb_get_dev
usb_get_intf
usb_kill_urb
usb_match_id
usb_match_one_id
usb_poison_urb
usb_put_dev
usb_put_intf
usb_register_driver
usb_show_dynids
usb_store_new_id
usb_submit_urb
usb_unpoison_urb
# required by v4l2-async.ko
_dev_notice
fwnode_handle_get
@@ -2175,7 +2374,6 @@
fwnode_graph_get_remote_endpoint
fwnode_graph_parse_endpoint
fwnode_property_get_reference_args
fwnode_property_read_string
kstrdup_const
# required by virtio_rpmsg_bus.ko
@@ -2186,7 +2384,6 @@
virtqueue_enable_cb
# required by vsiv4l2.ko
devm_device_add_group
v4l2_event_dequeue
v4l2_event_queue_fh
v4l2_src_change_event_subscribe
@@ -2226,7 +2423,6 @@
crypto_alloc_base
crypto_comp_compress
crypto_comp_decompress
crypto_destroy_tfm
crypto_has_alg
del_gendisk
device_add_disk
@@ -2238,7 +2434,6 @@
__get_free_pages
__init_rwsem
memset64
__num_online_cpus
page_endio
__register_blkdev
set_capacity
@@ -2246,6 +2441,16 @@
__sysfs_match_string
sysfs_streq
unregister_blkdev
zs_compact
zs_create_pool
zs_destroy_pool
zs_free
zs_get_total_pages
zs_huge_class_size
zs_malloc
zs_map_object
zs_pool_stats
zs_unmap_object
# required by zsmalloc.ko
alloc_anon_inode
@@ -2258,7 +2463,6 @@
kern_mount
kern_unmount
kill_anon_super
__lock_page
page_mapping
_raw_read_lock
_raw_read_unlock
@@ -2268,3 +2472,4 @@
__SetPageMovable
unlock_page
unregister_shrinker
wait_on_page_bit

View File

@@ -183,7 +183,9 @@
contig_page_data
_copy_from_iter
copy_from_kernel_nofault
copy_from_user_toio
_copy_to_iter
copy_to_user_fromio
__cpu_active_mask
cpu_all_bits
cpu_bit_bitmap
@@ -350,8 +352,10 @@
devm_clk_register
devm_devfreq_add_device
devm_devfreq_register_notifier
devm_devfreq_register_opp_notifier
devm_devfreq_remove_device
devm_devfreq_unregister_notifier
devm_devfreq_unregister_opp_notifier
devm_extcon_dev_allocate
devm_extcon_dev_register
devm_extcon_register_notifier
@@ -616,6 +620,7 @@
drm_dp_dpcd_write
drm_dp_link_train_channel_eq_delay
drm_dp_link_train_clock_recovery_delay
drm_dp_read_dpcd_caps
drm_edid_duplicate
drm_edid_to_sad
drm_encoder_cleanup
@@ -661,6 +666,7 @@
drm_mode_probed_add
drm_mode_set_crtcinfo
drm_mode_set_name
drm_mode_validate_size
drm_mode_vrefresh
drm_object_attach_property
drm_open
@@ -679,6 +685,7 @@
drm_property_create_blob
drm_property_create_range
drm_property_lookup_blob
drm_property_replace_global_blob
drm_read
drm_release
drm_universal_plane_init
@@ -765,6 +772,8 @@
fwnode_property_read_string
fwnode_property_read_u32_array
fwnode_property_read_u64_array
g_audio_cleanup
g_audio_setup
gcd
generic_file_llseek
generic_handle_domain_irq
@@ -797,6 +806,21 @@
get_each_dmabuf
__get_free_pages
get_governor_parent_kobj
gether_cleanup
gether_connect
gether_disconnect
gether_get_dev_addr
gether_get_host_addr
gether_get_host_addr_u8
gether_get_ifname
gether_get_qmult
gether_register_netdev
gether_set_dev_addr
gether_set_gadget
gether_set_host_addr
gether_set_ifname
gether_set_qmult
gether_setup_name_default
get_kernel_pages
get_pid_task
get_random_bytes
@@ -840,8 +864,16 @@
handle_nested_irq
handle_simple_irq
have_governor_per_policy
hdmi_spd_infoframe_init
hdmi_spd_infoframe_pack
hex_asc
hex_to_bin
hid_add_device
hid_allocate_device
hid_debug
hid_destroy_device
hid_input_report
hid_parse_report
hrtimer_active
hrtimer_cancel
hrtimer_forward
@@ -1034,6 +1066,7 @@
kstrtoint_from_user
kstrtol_from_user
kstrtoll
kstrtos16
kstrtou16
kstrtou8
kstrtouint
@@ -1056,6 +1089,7 @@
kthread_stop
kthread_worker_fn
ktime_get
ktime_get_coarse_ts64
ktime_get_mono_fast_ns
ktime_get_raw
ktime_get_raw_ts64
@@ -1077,6 +1111,7 @@
led_trigger_remove
led_update_brightness
led_update_flash_brightness
linear_range_get_max_value
linear_range_get_selector_within
linear_range_get_value
__list_add_valid
@@ -1393,6 +1428,7 @@
phy_exit
phy_get
phy_init
phy_loopback
phy_power_off
phy_power_on
phy_print_status
@@ -1533,8 +1569,12 @@
rb_next
rb_prev
rb_replace_node
rc_allocate_device
rc_free_device
rc_register_device
rcu_idle_enter
rcu_idle_exit
rc_unregister_device
__rcu_read_lock
__rcu_read_unlock
rdev_get_dev
@@ -1562,6 +1602,7 @@
register_shrinker
register_syscore_ops
register_sysctl_table
register_tracepoint_module_notifier
register_virtio_device
register_virtio_driver
regmap_bulk_read
@@ -1760,6 +1801,7 @@
skb_put
skb_queue_tail
skb_realloc_headroom
skb_split
skb_trim
smp_call_function
smp_call_function_single
@@ -1940,6 +1982,7 @@
trace_event_reg
trace_handle_return
__traceiter_android_rvh_after_enqueue_task
__traceiter_android_rvh_audio_usb_offload_disconnect
__traceiter_android_rvh_can_migrate_task
__traceiter_android_rvh_commit_creds
__traceiter_android_rvh_cpu_overutilized
@@ -1960,6 +2003,7 @@
__traceiter_android_rvh_override_creds
__traceiter_android_rvh_prepare_prio_fork
__traceiter_android_rvh_revert_creds
__traceiter_android_rvh_rmqueue_bulk
__traceiter_android_rvh_rtmutex_prepare_setprio
__traceiter_android_rvh_rto_next_cpu
__traceiter_android_rvh_sched_newidle_balance
@@ -1988,6 +2032,7 @@
__traceiter_android_vh_check_file_open
__traceiter_android_vh_check_mmap_file
__traceiter_android_vh_check_uninterruptible_tasks
__traceiter_android_vh_cpufreq_offline
__traceiter_android_vh_iommu_iovad_alloc_iova
__traceiter_android_vh_iommu_iovad_free_iova
__traceiter_android_vh_is_fpsimd_save
@@ -1995,6 +2040,7 @@
__traceiter_android_vh_rwsem_init
__traceiter_android_vh_rwsem_wake
__traceiter_android_vh_rwsem_write_finished
__traceiter_android_vh_sched_pelt_multiplier
__traceiter_android_vh_scheduler_tick
__traceiter_android_vh_set_memory_nx
__traceiter_android_vh_set_memory_rw
@@ -2035,6 +2081,7 @@
__tracepoint_android_rvh_override_creds
__tracepoint_android_rvh_prepare_prio_fork
__tracepoint_android_rvh_revert_creds
__tracepoint_android_rvh_rmqueue_bulk
__tracepoint_android_rvh_rtmutex_prepare_setprio
__tracepoint_android_rvh_rto_next_cpu
__tracepoint_android_rvh_sched_newidle_balance
@@ -2063,6 +2110,7 @@
__tracepoint_android_vh_check_file_open
__tracepoint_android_vh_check_mmap_file
__tracepoint_android_vh_check_uninterruptible_tasks
__tracepoint_android_vh_cpufreq_offline
__tracepoint_android_vh_iommu_iovad_alloc_iova
__tracepoint_android_vh_iommu_iovad_free_iova
__tracepoint_android_vh_is_fpsimd_save
@@ -2070,6 +2118,7 @@
__tracepoint_android_vh_rwsem_init
__tracepoint_android_vh_rwsem_wake
__tracepoint_android_vh_rwsem_write_finished
__tracepoint_android_vh_sched_pelt_multiplier
__tracepoint_android_vh_scheduler_tick
__tracepoint_android_vh_set_memory_nx
__tracepoint_android_vh_set_memory_rw
@@ -2101,13 +2150,17 @@
tracing_off
try_module_get
try_wait_for_completion
tty_chars_in_buffer
tty_driver_flush_buffer
tty_flip_buffer_push
tty_insert_flip_string_fixed_flag
tty_ldisc_flush
tty_register_ldisc
tty_set_termios
tty_termios_baud_rate
tty_termios_encode_baud_rate
tty_unregister_ldisc
tty_write_room
typec_mux_get_drvdata
typec_mux_register
typec_mux_set
@@ -2128,6 +2181,14 @@
uart_get_baud_rate
uart_get_divisor
uart_update_timeout
u_audio_get_mute
u_audio_get_volume
u_audio_set_mute
u_audio_set_volume
u_audio_start_capture
u_audio_start_playback
u_audio_stop_capture
u_audio_stop_playback
__ubsan_handle_cfi_check_fail_abort
uclamp_eff_value
__udelay

View File

@@ -256,6 +256,7 @@
dev_alloc_name
__dev_change_net_namespace
dev_close
dev_coredumpv
_dev_crit
dev_driver_string
_dev_emerg
@@ -462,6 +463,7 @@
driver_create_file
driver_find
driver_register
driver_remove_file
driver_unregister
drm_atomic_get_crtc_state
drm_atomic_helper_async_commit
@@ -656,13 +658,16 @@
gpiochip_remove
gpiod_cansleep
gpiod_count
gpiod_direction_input
gpiod_direction_output
gpiod_direction_output_raw
gpiod_get_raw_value
gpiod_get_value
gpiod_get_value_cansleep
gpiod_is_active_low
gpiod_set_consumer_name
gpiod_set_debounce
gpiod_set_raw_value
gpiod_set_value
gpiod_set_value_cansleep
gpiod_to_irq
@@ -692,6 +697,7 @@
hwspin_lock_get_id
hwspin_lock_request
hwspin_lock_request_specific
__hwspin_lock_timeout
__hwspin_trylock
__hwspin_unlock
i2c_adapter_type
@@ -704,9 +710,11 @@
i2c_del_driver
i2c_for_each_dev
i2c_get_adapter
i2c_get_dma_safe_msg_buf
i2c_new_client_device
i2c_new_dummy_device
i2c_put_adapter
i2c_put_dma_safe_msg_buf
i2c_register_driver
i2c_smbus_xfer
__i2c_transfer
@@ -745,11 +753,16 @@
__init_waitqueue_head
inode_init_once
input_allocate_device
input_close_device
input_event
input_free_device
input_open_device
input_register_device
input_register_handle
input_register_handler
input_set_capability
input_unregister_device
input_unregister_handle
__insert_inode_hash
int_sqrt
invalidate_bh_lrus
@@ -799,6 +812,7 @@
irq_to_desc
is_bad_inode
is_vmalloc_addr
jiffies_64_to_clock_t
jiffies64_to_nsecs
jiffies
jiffies_to_msecs
@@ -858,8 +872,12 @@
kstrtoull
kthread_bind
kthread_create_on_node
kthread_park
kthread_parkme
kthread_should_park
kthread_should_stop
kthread_stop
kthread_unpark
ktime_get
ktime_get_coarse_real_ts64
ktime_get_coarse_with_offset
@@ -1035,9 +1053,11 @@
of_get_next_parent
of_get_property
of_get_regulator_init_data
of_hwspin_lock_get_id
of_iomap
of_irq_find_parent
of_irq_get
of_irq_get_byname
of_irq_parse_and_map_pci
of_irq_parse_one
of_machine_is_compatible
@@ -1335,6 +1355,7 @@
rproc_get_by_child
rproc_mem_entry_init
rproc_of_resm_mem_entry_init
rproc_report_crash
rproc_shutdown
rproc_vq_interrupt
rtc_add_group
@@ -1567,6 +1588,7 @@
sysfs_streq
sysfs_unmerge_group
sysfs_update_group
system_freezable_power_efficient_wq
system_freezable_wq
system_freezing_cnt
system_highpri_wq
@@ -1580,6 +1602,7 @@
tasklet_unlock_wait
thermal_cooling_device_unregister
thermal_of_cooling_device_register
thermal_zone_get_temp
thermal_zone_get_zone_by_name
time64_to_tm
_totalram_pages
@@ -1711,6 +1734,7 @@
usb_string
usb_submit_urb
usb_unanchor_urb
usb_unlink_anchored_urbs
__usecs_to_jiffies
usleep_range_state
uuid_null

View File

@@ -1,28 +1,35 @@
[abi_symbol_list]
address_space_init_once
add_timer
alloc_anon_inode
__alloc_pages
__alloc_percpu
alloc_workqueue
android_debug_symbol
arm64_const_caps_ready
autoremove_wake_function
bcmp
bio_add_page
bio_alloc_bioset
bio_associate_blkg
bio_chain
__bio_crypt_clone
bio_crypt_set_ctx
bio_endio
bio_end_io_acct_remapped
bio_init
bio_put
bio_start_io_acct
__blk_alloc_disk
blk_cleanup_disk
blk_cleanup_queue
blkdev_get_by_dev
blkdev_get_by_path
__blkdev_issue_discard
blkdev_issue_flush
blkdev_put
blk_finish_plug
blk_mq_queue_inflight
blk_queue_flag_clear
blk_queue_flag_set
blk_queue_io_min
@@ -34,11 +41,18 @@
blk_queue_physical_block_size
blk_queue_write_cache
blk_start_plug
blk_status_to_errno
call_rcu
capable
cgroup_add_legacy_cftypes
__class_register
class_unregister
__ClearPageMovable
complete
congestion_wait
contig_page_data
copy_from_kernel_nofault
cpufreq_update_util_data
__cpuhp_remove_state
__cpuhp_setup_state
__cpuhp_state_add_instance
@@ -52,20 +66,38 @@
crypto_comp_decompress
crypto_destroy_tfm
crypto_has_alg
debugfs_create_dir
debugfs_create_file
dec_zone_page_state
default_llseek
delayed_work_timer_fn
del_gendisk
del_timer
del_timer_sync
destroy_workqueue
dev_get_by_index_rcu
device_add_disk
devres_destroy
disk_end_io_acct
disk_start_io_acct
do_traversal_all_lruvec
down
downgrade_write
down_read
down_write
d_path
dput
dump_stack
eventfd_ctx_fileget
eventfd_signal
file_path
filp_close
filp_open_block
find_task_by_vpid
finish_wait
flush_dcache_page
flush_work
fput
__free_pages
free_pages
free_percpu
@@ -74,7 +106,13 @@
genlmsg_put
genl_register_family
genl_unregister_family
get_each_dmabuf
get_each_object_track
__get_free_pages
get_random_bytes
get_slabinfo
get_task_mm
get_user_pages_remote
get_wchan
idr_alloc
idr_destroy
@@ -82,25 +120,36 @@
idr_for_each
idr_remove
inc_zone_page_state
in_egroup_p
__inet6_lookup_established
inet_csk_get_port
__inet_lookup_established
init_net
init_on_free
init_pseudo
__init_rwsem
init_task
init_timer_key
init_user_ns
init_wait_entry
__init_waitqueue_head
io_schedule
iov_iter_advance
ip6_local_out
ip6_route_me_harder
ip_local_deliver
ip_local_out
ip_route_me_harder
iput
ipv6_find_hdr
ipv6_skip_exthdr
is_dma_buf_file
iterate_fd
jiffies
jiffies_64
jiffies_to_msecs
kasan_flag_enabled
kasprintf
kern_mount
kern_unmount
kfree
@@ -108,30 +157,54 @@
kill_anon_super
kmalloc_caches
kmem_cache_alloc
kmem_cache_alloc_bulk
kmem_cache_alloc_trace
kmem_cache_create
kmem_cache_create_usercopy
kmem_cache_destroy
kmem_cache_free
kmem_cache_free_bulk
kmem_cache_shrink
kobject_create_and_add
kobject_put
ksize
kstrdup
kstrtobool
kstrtoint
kstrtoint_from_user
kstrtou16
kstrtouint
kstrtouint_from_user
kstrtoull
kswapd
kthread_create_on_node
kthread_should_stop
kthread_stop
ktime_get
ktime_get_coarse_real_ts64
ktime_get_raw_ts64
ktime_get_real_ts64
kvfree
__list_add_valid
__list_del_entry_valid
__lock_page
match_string
mem_cgroup_from_id
memchr_inv
memcmp
memcpy
memmove
memory_cgrp_subsys
memory_cgrp_subsys_enabled_key
memparse
memset
memset64
memstart_addr
migrate_page_copy
misc_deregister
misc_register
mmput
mod_node_page_state
mod_timer
module_layout
msleep
@@ -142,7 +215,9 @@
mutex_unlock
nf_ct_attach
nf_ct_delete
nf_register_net_hook
nf_register_net_hooks
nf_unregister_net_hook
nf_unregister_net_hooks
nla_find
nla_memcpy
@@ -151,12 +226,16 @@
nla_put_64bit
nla_reserve
nla_reserve_64bit
nonseekable_open
nr_cpu_ids
__num_online_cpus
of_css
page_endio
__page_file_index
__page_mapcount
page_mapping
param_ops_uint
page_to_lruvec
__per_cpu_offset
platform_device_add
platform_device_alloc
@@ -167,7 +246,13 @@
prepare_to_wait
prepare_to_wait_event
prepare_to_wait_exclusive
print_hex_dump
_printk
proc_create
proc_create_data
proc_mkdir
proc_remove
public_key_verify_signature
put_disk
__put_page
__put_task_struct
@@ -181,6 +266,7 @@
radix_tree_next_chunk
radix_tree_preload
radix_tree_replace_slot
rtc_read_alarm
_raw_read_lock
_raw_read_unlock
_raw_spin_lock
@@ -191,36 +277,78 @@
_raw_write_unlock
__rcu_read_lock
__rcu_read_unlock
reclaim_pages
__register_blkdev
register_memory_notifier
register_reboot_notifier
register_shrinker
register_sysctl_table
register_tcf_proto_ops
remove_proc_subtree
__rtnl_link_unregister
sched_clock
sched_setscheduler_nocheck
sched_show_task
schedule
schedule_timeout
scnprintf
sdio_writeb_readb
seq_lseek
seq_open
__seq_open_private
seq_open_private
seq_printf
seq_putc
seq_puts
seq_read
seq_release
seq_release_private
seq_write
set_blocksize
set_capacity
set_capacity_and_notify
set_cpus_allowed_ptr
set_freezable
set_page_dirty
__SetPageMovable
set_user_nice
shrink_slab
si_mem_available
simple_open
simple_read_from_buffer
single_open
single_release
si_swapinfo
__skb_checksum_complete
skb_dump
snprintf
sort
sprintf
sscanf
__stack_chk_fail
stack_depot_fetch
stack_depot_save
stack_trace_save
strcmp
strcpy
strlcpy
strlen
strncmp
strncpy
strnlen
strsep
strstr
submit_bio
submit_bio_wait
sysfs_create_files
__sysfs_match_string
sysfs_remove_files
sysfs_streq
system_freezable_wq
system_unbound_wq
system_wq
sys_tz
task_active_pid_ns
tcf_action_exec
tcf_exts_destroy
tcf_exts_dump
@@ -228,16 +356,26 @@
tcf_exts_validate
tcf_queue_work
tcp_hashinfo
time64_to_tm
timespec64_to_jiffies
__traceiter_android_rvh_check_preempt_wakeup_ignore
__traceiter_android_rvh_do_serror
__traceiter_android_rvh_pick_next_entity
__traceiter_android_rvh_place_entity
__traceiter_android_rvh_schedule
__traceiter_android_rvh_set_balance_anon_file_reclaim
__traceiter_android_rvh_set_user_nice
__traceiter_android_vh_account_task_time
__traceiter_android_vh_add_page_to_lrulist
__traceiter_android_vh_alloc_pages_slowpath
__traceiter_android_vh_binder_del_ref
__traceiter_android_vh_binder_free_proc
__traceiter_android_vh_binder_has_work_ilocked
__traceiter_android_vh_binder_looper_state_registered
__traceiter_android_vh_binder_new_ref
__traceiter_android_vh_binder_preset
__traceiter_android_vh_binder_priority_skip
__traceiter_android_vh_binder_proc_transaction
__traceiter_android_vh_binder_proc_transaction_entry
__traceiter_android_vh_binder_proc_transaction_finish
__traceiter_android_vh_binder_read_done
@@ -246,17 +384,59 @@
__traceiter_android_vh_binder_thread_release
__traceiter_android_vh_build_sched_domains
__traceiter_android_vh_cache_show
__traceiter_android_vh_check_uninterruptible_tasks_dn
__traceiter_android_vh_cma_drain_all_pages_bypass
__traceiter_android_vh_cpufreq_acct_update_power
__traceiter_android_vh_del_page_from_lrulist
__traceiter_android_vh_do_futex
__traceiter_android_vh_do_page_trylock
__traceiter_android_vh_do_traversal_lruvec
__traceiter_android_vh_drain_all_pages_bypass
__traceiter_android_vh_dup_task_struct
__traceiter_android_vh_exit_mm
__traceiter_android_vh_exit_signal
__traceiter_android_vh_free_task
__traceiter_android_vh_futex_sleep_start
__traceiter_android_vh_futex_wait_end
__traceiter_android_vh_futex_wait_start
__traceiter_android_vh_futex_wake_this
__traceiter_android_vh_futex_wake_traverse_plist
__traceiter_android_vh_futex_wake_up_q_finish
__traceiter_android_vh_handle_failed_page_trylock
__traceiter_android_vh_irqtime_account_process_tick
__traceiter_android_vh_killed_process
__traceiter_android_vh_kmalloc_slab
__traceiter_android_vh_mark_page_accessed
__traceiter_android_vh_mem_cgroup_alloc
__traceiter_android_vh_mem_cgroup_css_offline
__traceiter_android_vh_mem_cgroup_css_online
__traceiter_android_vh_mem_cgroup_free
__traceiter_android_vh_mem_cgroup_id_remove
__traceiter_android_vh_meminfo_proc_show
__traceiter_android_vh_modify_thermal_cpu_get_power
__traceiter_android_vh_mutex_init
__traceiter_android_vh_page_referenced_check_bypass
__traceiter_android_vh_page_should_be_protected
__traceiter_android_vh_page_trylock_clear
__traceiter_android_vh_page_trylock_get_result
__traceiter_android_vh_page_trylock_set
__traceiter_android_vh_pcplist_add_cma_pages_bypass
__traceiter_android_vh_print_slabinfo_header
__traceiter_android_vh_record_mutex_lock_starttime
__traceiter_android_vh_record_pcpu_rwsem_starttime
__traceiter_android_vh_record_rtmutex_lock_starttime
__traceiter_android_vh_record_rwsem_lock_starttime
__traceiter_android_vh_rmqueue
__traceiter_android_vh_rwsem_wake_finish
__traceiter_android_vh_save_track_hash
__traceiter_android_vh_sched_show_task
__traceiter_android_vh_sched_stat_runtime_rt
__traceiter_android_vh_show_mapcount_pages
__traceiter_android_vh_sync_txn_recvd
__traceiter_android_vh_tune_inactive_ratio
__traceiter_android_vh_tune_scan_type
__traceiter_android_vh_tune_swappiness
__traceiter_android_vh_update_page_mapcount
__traceiter_sched_stat_blocked
__traceiter_sched_stat_iowait
__traceiter_sched_stat_runtime
@@ -265,15 +445,23 @@
__traceiter_sched_waking
__traceiter_task_rename
__tracepoint_android_rvh_check_preempt_wakeup_ignore
__tracepoint_android_rvh_do_serror
__tracepoint_android_rvh_pick_next_entity
__tracepoint_android_rvh_place_entity
__tracepoint_android_rvh_schedule
__tracepoint_android_rvh_set_balance_anon_file_reclaim
__tracepoint_android_rvh_set_user_nice
__tracepoint_android_vh_account_task_time
__tracepoint_android_vh_add_page_to_lrulist
__tracepoint_android_vh_alloc_pages_slowpath
__tracepoint_android_vh_binder_del_ref
__tracepoint_android_vh_binder_free_proc
__tracepoint_android_vh_binder_has_work_ilocked
__tracepoint_android_vh_binder_looper_state_registered
__tracepoint_android_vh_binder_new_ref
__tracepoint_android_vh_binder_preset
__tracepoint_android_vh_binder_priority_skip
__tracepoint_android_vh_binder_proc_transaction
__tracepoint_android_vh_binder_proc_transaction_entry
__tracepoint_android_vh_binder_proc_transaction_finish
__tracepoint_android_vh_binder_read_done
@@ -283,16 +471,61 @@
__tracepoint_android_vh_build_sched_domains
__tracepoint_android_vh_cache_show
__tracepoint_android_vh_cma_drain_all_pages_bypass
__tracepoint_android_vh_cpufreq_acct_update_power
__tracepoint_android_vh_del_page_from_lrulist
__tracepoint_android_vh_do_futex
__tracepoint_android_vh_do_page_trylock
__tracepoint_android_vh_do_traversal_lruvec
__tracepoint_android_vh_drain_all_pages_bypass
__tracepoint_android_vh_dup_task_struct
__tracepoint_android_vh_exit_mm
__tracepoint_android_vh_exit_signal
__tracepoint_android_vh_free_task
__tracepoint_android_vh_futex_sleep_start
__tracepoint_android_vh_futex_wait_end
__tracepoint_android_vh_futex_wait_start
__tracepoint_android_vh_futex_wake_this
__tracepoint_android_vh_futex_wake_traverse_plist
__tracepoint_android_vh_futex_wake_up_q_finish
__tracepoint_android_vh_handle_failed_page_trylock
__tracepoint_android_vh_irqtime_account_process_tick
__tracepoint_android_vh_killed_process
__tracepoint_android_vh_kmalloc_slab
__tracepoint_android_vh_mark_page_accessed
__tracepoint_android_vh_mem_cgroup_alloc
__tracepoint_android_vh_mem_cgroup_css_offline
__tracepoint_android_vh_mem_cgroup_css_online
__tracepoint_android_vh_mem_cgroup_free
__tracepoint_android_vh_mem_cgroup_id_remove
__tracepoint_android_vh_meminfo_proc_show
__tracepoint_android_vh_modify_thermal_cpu_get_power
__tracepoint_android_vh_mutex_init
__tracepoint_android_vh_page_referenced_check_bypass
__tracepoint_android_vh_page_should_be_protected
__tracepoint_android_vh_page_trylock_clear
__tracepoint_android_vh_page_trylock_get_result
__tracepoint_android_vh_page_trylock_set
__tracepoint_android_vh_pcplist_add_cma_pages_bypass
__tracepoint_android_vh_print_slabinfo_header
__tracepoint_android_vh_record_mutex_lock_starttime
__tracepoint_android_vh_record_pcpu_rwsem_starttime
__tracepoint_android_vh_record_rtmutex_lock_starttime
__tracepoint_android_vh_record_rwsem_lock_starttime
__tracepoint_android_vh_rmqueue
__tracepoint_android_vh_rwsem_wake_finish
__tracepoint_android_vh_sched_show_task
__tracepoint_android_vh_save_track_hash
__tracepoint_android_vh_sched_stat_runtime_rt
__tracepoint_android_vh_show_mapcount_pages
__tracepoint_android_vh_sync_txn_recvd
__tracepoint_android_vh_tune_inactive_ratio
__tracepoint_android_vh_tune_scan_type
__tracepoint_android_vh_tune_swappiness
__tracepoint_android_vh_update_page_mapcount
__tracepoint_net_dev_queue
__tracepoint_net_dev_xmit
__tracepoint_netif_receive_skb
__tracepoint_netif_rx
__tracepoint_sched_stat_blocked
__tracepoint_sched_stat_iowait
__tracepoint_sched_stat_runtime
@@ -300,17 +533,25 @@
__tracepoint_sched_stat_wait
__tracepoint_sched_waking
__tracepoint_task_rename
try_to_free_mem_cgroup_pages
__ubsan_handle_cfi_check_fail_abort
unlock_page
unregister_blkdev
unregister_memory_notifier
unregister_net_sysctl_table
unregister_reboot_notifier
unregister_shrinker
unregister_sysctl_table
unregister_tcf_proto_ops
up
up_read
up_write
vfree
vmalloc
vmalloc_nr_pages
vsnprintf
vzalloc
wait_for_completion_io_timeout
__wake_up
wake_up_process
wq_worker_comm

View File

@@ -0,0 +1,16 @@
[abi_symbol_list]
__hid_register_driver
__hid_request
hid_add_device
hid_alloc_report_buf
hid_allocate_device
hid_destroy_device
hid_hw_start
hid_hw_stop
hid_input_report
hid_open_report
hid_parse_report
hid_report_raw_event
hid_unregister_driver
hidinput_calc_abs_res

View File

@@ -21,6 +21,8 @@
alloc_workqueue
amba_driver_register
amba_driver_unregister
android_debug_symbol
android_kmalloc_64_create
android_rvh_probe_register
anon_inode_getfd
arc4_crypt
@@ -45,6 +47,9 @@
balance_push_callback
bcmp
bin2hex
bio_endio
bio_end_io_acct_remapped
bio_start_io_acct
__bitmap_clear
__bitmap_equal
bitmap_from_arr32
@@ -53,9 +58,19 @@
bitmap_print_to_pagebuf
bitmap_to_arr32
__bitmap_weight
__blk_alloc_disk
blk_cleanup_disk
blk_execute_rq_nowait
blk_get_request
blk_put_request
blk_queue_flag_clear
blk_queue_flag_set
blk_queue_io_min
blk_queue_io_opt
blk_queue_logical_block_size
blk_queue_max_discard_sectors
blk_queue_max_write_zeroes_sectors
blk_queue_physical_block_size
blk_rq_map_user
blk_rq_map_user_iov
blk_rq_unmap_user
@@ -176,6 +191,7 @@
cpufreq_register_governor
cpufreq_register_notifier
cpufreq_remove_update_util_hook
cpufreq_table_index_unsorted
cpufreq_this_cpu_can_update
__cpuhp_remove_state
__cpuhp_setup_state
@@ -210,11 +226,16 @@
crypto_aead_setauthsize
crypto_aead_setkey
crypto_alloc_aead
crypto_alloc_base
crypto_alloc_shash
crypto_alloc_skcipher
crypto_alloc_sync_skcipher
crypto_comp_compress
crypto_comp_decompress
crypto_destroy_tfm
crypto_has_alg
__crypto_memneq
crypto_req_done
crypto_shash_digest
crypto_shash_finup
crypto_shash_setkey
@@ -245,6 +266,7 @@
default_llseek
deferred_free
delayed_work_timer_fn
del_gendisk
del_timer
del_timer_sync
desc_to_gpio
@@ -274,6 +296,7 @@
dev_get_by_index
dev_get_by_name
device_add
device_add_disk
device_add_groups
device_create
device_create_file
@@ -397,6 +420,8 @@
disable_irq
disable_irq_nosync
disable_percpu_irq
disk_end_io_acct
disk_start_io_acct
dma_alloc_attrs
dma_async_device_register
dma_async_device_unregister
@@ -695,8 +720,10 @@
_find_next_bit
find_pid_ns
find_task_by_vpid
find_vm_area
__find_vma
finish_wait
flush_dcache_page
flush_delayed_work
flush_work
flush_workqueue
@@ -715,6 +742,7 @@
freq_qos_add_request
freq_qos_remove_request
freq_qos_update_request
fsync_bdev
full_name_hash
fwnode_get_name
fwnode_gpiod_get_index
@@ -747,6 +775,7 @@
get_random_bytes
get_random_u32
get_sg_io_hdr
get_task_cred
get_thermal_instance
get_unused_fd_flags
get_user_pages
@@ -827,6 +856,7 @@
i2c_unregister_device
i2c_verify_client
ida_alloc_range
ida_destroy
ida_free
idr_alloc
idr_destroy
@@ -859,6 +889,7 @@
init_uts_ns
init_wait_entry
__init_waitqueue_head
input_alloc_absinfo
input_allocate_device
input_close_device
input_event
@@ -876,6 +907,10 @@
input_unregister_device
input_unregister_handle
input_unregister_handler
interval_tree_insert
interval_tree_iter_first
interval_tree_iter_next
interval_tree_remove
int_sqrt
iomem_resource
iommu_alloc_resv_region
@@ -890,6 +925,7 @@
iommu_device_sysfs_remove
iommu_device_unlink
iommu_device_unregister
iommu_dma_enable_best_fit_algo
iommu_domain_alloc
iommu_domain_free
iommu_fwspec_add_ids
@@ -1042,7 +1078,11 @@
__local_bh_enable_ip
__lock_page
log_abnormal_wakeup_reason
log_post_read_mmio
log_post_write_mmio
log_read_mmio
log_threaded_irq_wakeup_reason
log_write_mmio
loops_per_jiffy
mac_pton
mbox_chan_received_data
@@ -1061,6 +1101,7 @@
memparse
memremap
mem_section
memset64
memset
memstart_addr
memunmap
@@ -1145,6 +1186,7 @@
noop_llseek
nr_cpu_ids
nr_irqs
ns_capable
nsec_to_clock_t
ns_to_timespec64
__num_online_cpus
@@ -1228,6 +1270,7 @@
of_thermal_is_trip_valid
of_translate_address
of_usb_host_tpl_support
page_endio
page_mapping
panic
panic_notifier_list
@@ -1380,9 +1423,11 @@
proc_mkdir
proc_mkdir_data
proc_remove
proc_set_size
pskb_expand_head
__pskb_pull_tail
___pskb_trim
__put_cred
put_device
__put_net
__put_page
@@ -1396,6 +1441,7 @@
___ratelimit
raw_notifier_call_chain
raw_notifier_chain_register
raw_notifier_chain_unregister
_raw_read_lock
_raw_read_lock_bh
_raw_read_lock_irqsave
@@ -1430,12 +1476,14 @@
__rcu_read_unlock
rdev_get_drvdata
rdev_get_id
reboot_mode
refcount_warn_saturate
__refrigerator
regcache_cache_only
regcache_drop_region
regcache_mark_dirty
regcache_sync
__register_blkdev
__register_chrdev
register_chrdev_region
register_console
@@ -1535,6 +1583,7 @@
rt_mutex_unlock
rtnl_is_locked
rtnl_lock
rtnl_trylock
rtnl_unlock
runqueues
sched_clock
@@ -1582,11 +1631,14 @@
seq_release
seq_release_private
seq_write
set_capacity
set_capacity_and_notify
set_cpus_allowed_ptr
set_freezable
set_page_dirty
set_page_dirty_lock
__SetPageMovable
set_user_nice
sg_alloc_table
sg_alloc_table_from_pages_segment
sg_free_table
@@ -1776,6 +1828,7 @@
sysfs_create_link
sysfs_emit
sysfs_emit_at
__sysfs_match_string
sysfs_notify
sysfs_remove_file_ns
sysfs_remove_group
@@ -1843,6 +1896,7 @@
__traceiter_android_rvh_cpu_cgroup_online
__traceiter_android_rvh_cpu_overutilized
__traceiter_android_rvh_dequeue_task
__traceiter_android_rvh_enqueue_task
__traceiter_android_rvh_find_energy_efficient_cpu
__traceiter_android_rvh_irqs_disable
__traceiter_android_rvh_irqs_enable
@@ -1850,17 +1904,24 @@
__traceiter_android_rvh_preempt_disable
__traceiter_android_rvh_preempt_enable
__traceiter_android_rvh_sched_fork
__traceiter_android_rvh_select_task_rq_fair
__traceiter_android_rvh_select_task_rq_rt
__traceiter_android_rvh_set_cpus_allowed_by_task
__traceiter_android_rvh_set_iowait
__traceiter_android_rvh_set_task_cpu
__traceiter_android_rvh_uclamp_eff_get
__traceiter_android_rvh_ufs_reprogram_all_keys
__traceiter_android_rvh_update_rt_rq_load_avg
__traceiter_android_rvh_util_est_update
__traceiter_android_vh_arch_set_freq_scale
__traceiter_android_vh_cpu_idle_enter
__traceiter_android_vh_cpu_idle_exit
__traceiter_android_vh_dup_task_struct
__traceiter_android_vh_ipi_stop
__traceiter_android_vh_scheduler_tick
__traceiter_android_vh_setscheduler_uclamp
__traceiter_android_vh_sysrq_crash
__traceiter_android_vh_try_to_freeze_todo_logging
__traceiter_android_vh_ufs_check_int_errors
__traceiter_android_vh_ufs_compl_command
__traceiter_android_vh_ufs_fill_prdt
@@ -1868,6 +1929,7 @@
__traceiter_android_vh_ufs_send_command
__traceiter_android_vh_ufs_send_tm_command
__traceiter_android_vh_ufs_send_uic_command
__traceiter_android_vh_ufs_update_sdev
__traceiter_android_vh_ufs_update_sysfs
__traceiter_clock_set_rate
__traceiter_cpu_frequency
@@ -1890,6 +1952,7 @@
__tracepoint_android_rvh_cpu_cgroup_online
__tracepoint_android_rvh_cpu_overutilized
__tracepoint_android_rvh_dequeue_task
__tracepoint_android_rvh_enqueue_task
__tracepoint_android_rvh_find_energy_efficient_cpu
__tracepoint_android_rvh_irqs_disable
__tracepoint_android_rvh_irqs_enable
@@ -1897,17 +1960,24 @@
__tracepoint_android_rvh_preempt_disable
__tracepoint_android_rvh_preempt_enable
__tracepoint_android_rvh_sched_fork
__tracepoint_android_rvh_select_task_rq_fair
__tracepoint_android_rvh_select_task_rq_rt
__tracepoint_android_rvh_set_cpus_allowed_by_task
__tracepoint_android_rvh_set_iowait
__tracepoint_android_rvh_set_task_cpu
__tracepoint_android_rvh_uclamp_eff_get
__tracepoint_android_rvh_ufs_reprogram_all_keys
__tracepoint_android_rvh_update_rt_rq_load_avg
__tracepoint_android_rvh_util_est_update
__tracepoint_android_vh_arch_set_freq_scale
__tracepoint_android_vh_cpu_idle_enter
__tracepoint_android_vh_cpu_idle_exit
__tracepoint_android_vh_dup_task_struct
__tracepoint_android_vh_ipi_stop
__tracepoint_android_vh_scheduler_tick
__tracepoint_android_vh_setscheduler_uclamp
__tracepoint_android_vh_sysrq_crash
__tracepoint_android_vh_try_to_freeze_todo_logging
__tracepoint_android_vh_ufs_check_int_errors
__tracepoint_android_vh_ufs_compl_command
__tracepoint_android_vh_ufs_fill_prdt
@@ -1915,6 +1985,7 @@
__tracepoint_android_vh_ufs_send_command
__tracepoint_android_vh_ufs_send_tm_command
__tracepoint_android_vh_ufs_send_uic_command
__tracepoint_android_vh_ufs_update_sdev
__tracepoint_android_vh_ufs_update_sysfs
__tracepoint_clock_set_rate
__tracepoint_cpu_frequency
@@ -1981,6 +2052,7 @@
unlock_page
unmap_mapping_range
unpin_user_page
unregister_blkdev
__unregister_chrdev
unregister_chrdev_region
unregister_inet6addr_notifier
@@ -2001,7 +2073,9 @@
unregister_virtio_driver
up
update_devfreq
___update_load_avg
__update_load_avg_blocked_se
___update_load_sum
update_rq_clock
up_read
up_write
@@ -2014,6 +2088,8 @@
usb_ep_autoconfig
usb_function_register
usb_function_unregister
usb_gadget_activate
usb_gadget_deactivate
usb_gadget_set_state
usb_hcd_is_primary_hcd
usb_hcd_platform_shutdown
@@ -2123,6 +2199,7 @@
vm_map_ram
vm_unmap_ram
vprintk
vprintk_emit
vring_del_virtqueue
vring_interrupt
vring_new_virtqueue
@@ -2134,6 +2211,7 @@
wait_for_completion_interruptible
wait_for_completion_interruptible_timeout
wait_for_completion_timeout
wait_on_page_bit
wait_woken
__wake_up
__wake_up_locked
@@ -2160,3 +2238,13 @@
xhci_resume
xhci_run
xhci_suspend
zs_compact
zs_create_pool
zs_destroy_pool
zs_free
zs_get_total_pages
zs_huge_class_size
zs_malloc
zs_map_object
zs_pool_stats
zs_unmap_object

View File

@@ -1,5 +1,7 @@
[abi_symbol_list]
access_process_vm
ack_all_badblocks
activate_task
add_cpu
add_device_randomness
@@ -14,10 +16,12 @@
alloc_anon_inode
alloc_chrdev_region
alloc_io_pgtable_ops
alloc_page_buffers
__alloc_pages
__alloc_percpu
__alloc_skb
alloc_skb_with_frags
alloc_swapdev_block
alloc_workqueue
amba_bustype
amba_driver_register
@@ -40,6 +44,7 @@
__arm_smccc_sve_check
async_schedule_node
async_synchronize_cookie
_atomic_dec_and_lock
atomic_notifier_call_chain
atomic_notifier_chain_register
atomic_notifier_chain_unregister
@@ -47,9 +52,29 @@
available_idle_cpu
backlight_device_get_by_type
backlight_device_set_brightness
badblocks_clear
badblocks_exit
badblocks_init
badblocks_set
badblocks_show
badblocks_store
__balance_callbacks
balance_push_callback
bdev_check_media_change
bdevname
bdev_read_only
bd_link_disk_holder
bd_unlink_disk_holder
bio_add_page
bio_associate_blkg
bio_clone_fast
bio_endio
bio_end_io_acct_remapped
bio_init
bio_put
bioset_exit
bioset_init
bio_split
bio_start_io_acct
bitmap_allocate_region
__bitmap_and
@@ -63,24 +88,63 @@
bitmap_zalloc
__blk_alloc_disk
blk_cleanup_disk
blk_cleanup_queue
blkdev_get_by_dev
__blkdev_issue_discard
blkdev_put
blk_execute_rq_nowait
blk_finish_plug
blk_freeze_queue_start
blk_get_queue
blk_get_request
blk_ksm_get_slot_idx
blk_ksm_register
blk_mark_disk_dead
blk_mq_alloc_request
blk_mq_alloc_request_hctx
blk_mq_complete_request_remote
blk_mq_delay_kick_requeue_list
blk_mq_free_request
blk_mq_freeze_queue
blk_mq_freeze_queue_wait
blk_mq_freeze_queue_wait_timeout
blk_mq_init_queue
blk_mq_map_queues
blk_mq_pci_map_queues
blk_mq_requeue_request
blk_mq_rq_cpu
blk_mq_tagset_busy_iter
blk_mq_tagset_wait_completed_request
blk_mq_tag_to_rq
blk_mq_unfreeze_queue
blk_mq_update_nr_hw_queues
blk_put_queue
blk_put_request
blk_queue_chunk_sectors
blk_queue_dma_alignment
blk_queue_flag_clear
blk_queue_flag_set
blk_queue_flag_test_and_set
blk_queue_io_min
blk_queue_io_opt
blk_queue_logical_block_size
blk_queue_max_discard_sectors
blk_queue_max_write_same_sectors
blk_queue_max_write_zeroes_sectors
blk_queue_physical_block_size
blk_queue_split
blk_queue_virt_boundary
blk_rq_map_user
blk_rq_map_user_iov
blk_rq_unmap_user
blk_set_stacking_limits
blk_start_plug
blk_sync_queue
blkdev_compat_ptr_ioctl
blocking_notifier_call_chain
blocking_notifier_chain_register
blocking_notifier_chain_unregister
bmap
bpf_trace_run1
bpf_trace_run10
bpf_trace_run11
@@ -163,7 +227,9 @@
clk_notifier_unregister
clk_prepare
clk_put
clk_restore_context
clk_round_rate
clk_save_context
clk_set_parent
clk_set_rate
clk_sync_state
@@ -242,6 +308,7 @@
cpus_read_unlock
cpu_subsys
cpu_topology
crc32_be
crc8
crc8_populate_msb
crypto_ahash_digest
@@ -324,6 +391,7 @@
device_property_read_u32_array
device_register
device_remove_file
device_remove_file_self
device_show_int
device_store_int
device_unregister
@@ -423,6 +491,7 @@
dev_pm_opp_of_cpumask_remove_table
dev_pm_opp_of_find_icc_paths
dev_pm_opp_of_register_em
dev_pm_opp_remove
dev_pm_opp_of_remove_table
dev_pm_opp_put
dev_pm_opp_put_clkname
@@ -433,9 +502,12 @@
dev_pm_opp_set_sharing_cpus
dev_pm_qos_add_notifier
dev_pm_qos_add_request
dev_pm_qos_expose_latency_tolerance
dev_pm_qos_hide_latency_tolerance
dev_pm_qos_remove_notifier
dev_pm_qos_remove_request
dev_pm_qos_update_request
dev_pm_qos_update_user_latency_tolerance
devres_add
__devres_alloc_node
devres_free
@@ -446,12 +518,14 @@
disable_irq_nosync
disable_percpu_irq
disk_end_io_acct
disk_stack_limits
disk_start_io_acct
divider_get_val
divider_recalc_rate
divider_ro_round_rate_parent
divider_round_rate_parent
dma_alloc_attrs
dma_alloc_noncontiguous
dma_alloc_pages
dma_async_device_register
dma_async_device_unregister
@@ -486,6 +560,7 @@
dma_fence_signal_timestamp_locked
dma_fence_wait_timeout
dma_free_attrs
dma_free_noncontiguous
dma_free_pages
dma_get_sgtable_attrs
dma_get_slave_channel
@@ -501,6 +576,7 @@
dma_map_resource
dma_map_sg_attrs
dma_map_sgtable
dma_max_mapping_size
dmam_free_coherent
dma_release_channel
dma_request_chan
@@ -515,7 +591,11 @@
dma_unmap_page_attrs
dma_unmap_resource
dma_unmap_sg_attrs
dma_vmap_noncontiguous
dma_vunmap_noncontiguous
do_exit
__do_once_done
__do_once_start
do_trace_rcu_torture_read
double_rq_lock
do_wait_intr
@@ -539,9 +619,15 @@
drm_bridge_chain_enable
drm_bridge_chain_post_disable
drm_bridge_chain_pre_enable
drm_client_buffer_vmap
drm_client_framebuffer_create
drm_client_framebuffer_delete
drm_client_init
drm_client_modeset_commit
drm_client_modeset_commit_locked
drm_client_modeset_probe
drm_client_register
drm_connector_list_update
drm_crtc_vblank_reset
drm_dp_atomic_find_vcpi_slots
drm_dp_atomic_release_vcpi_slots
@@ -551,6 +637,7 @@
drm_dp_mst_allocate_vcpi
drm_dp_mst_deallocate_vcpi
drm_dp_mst_detect_port
drm_dp_mst_dump_topology
drm_dp_mst_get_edid
drm_dp_mst_get_port_malloc
drm_dp_mst_hpd_irq
@@ -572,13 +659,20 @@
drm_is_current_master
drm_kms_helper_poll_disable
drm_kms_helper_poll_enable
drm_master_get
drm_master_put
drm_mode_convert_umode
drm_mode_create_dp_colorspace_property
drm_mode_create_tile_group
drm_mode_destroy
drm_mode_is_420_only
drm_mode_match
drm_mode_prune_invalid
drm_mode_set_crtcinfo
drm_mode_set_name
drm_mode_sort
drm_object_property_set_value
drm_plane_from_index
drm_wait_one_vblank
__dynamic_dev_dbg
__dynamic_pr_debug
@@ -605,6 +699,7 @@
extcon_get_edev_name
extcon_get_extcon_dev
extcon_get_property
extcon_get_property_capability
extcon_get_state
extcon_register_notifier
extcon_set_property
@@ -615,6 +710,7 @@
__fdget
fd_install
fget
file_path
_find_first_bit
_find_first_zero_bit
_find_next_bit
@@ -630,9 +726,11 @@
flush_dcache_page
flush_delayed_fput
flush_delayed_work
flush_signals
flush_work
flush_workqueue
fput
free_buffer_head
free_io_pgtable_ops
free_irq
__free_pages
@@ -715,6 +813,9 @@
get_unused_fd_flags
get_user_ifreq
get_zeroed_page
gic_cpu_init
gic_dist_init
gic_dist_wait_for_rwp
gic_nonsecure_priorities
gic_resume
gic_v2_resume
@@ -828,8 +929,15 @@
idr_preload
idr_remove
idr_replace
iio_buffer_init
iio_buffer_put
iio_channel_get
iio_channel_release
iio_device_attach_buffer
iio_device_claim_direct_mode
iio_device_release_direct_mode
iio_push_event
iio_push_to_buffers
iio_read_channel_processed
iio_write_channel_raw
import_iovec
@@ -838,7 +946,9 @@
inc_zone_page_state
in_egroup_p
inet6_ioctl
__inet6_lookup_established
inet_ioctl
__inet_lookup_established
init_iova_domain
init_net
init_pid_ns
@@ -869,7 +979,9 @@
interval_tree_iter_first
interval_tree_iter_next
interval_tree_remove
int_pow
int_sqrt
invalidate_bdev
iomem_resource
iommu_alloc_resv_region
iommu_attach_device
@@ -1056,6 +1168,7 @@
kthread_should_stop
kthread_stop
kthread_worker_fn
ktime_add_safe
ktime_get
ktime_get_mono_fast_ns
ktime_get_real_ts64
@@ -1078,6 +1191,10 @@
__local_bh_enable_ip
__lock_page
lock_sock_nested
log_post_read_mmio
log_post_write_mmio
log_read_mmio
log_write_mmio
lookup_page_ext
match_string
mbox_chan_received_data
@@ -1114,9 +1231,12 @@
mempool_alloc
mempool_alloc_slab
mempool_create
mempool_create_node
mempool_destroy
mempool_free
mempool_free_slab
mempool_kfree
mempool_kmalloc
memremap
mem_section
memset
@@ -1131,11 +1251,34 @@
misc_deregister
misc_register
mmc_cqe_request_done
mmc_execute_tuning
mmc_get_ext_csd
mmc_get_card
mmc_hs200_tuning
mmc_issue_type
mmc_of_parse
__mmc_poll_for_busy
mmc_prepare_busy_cmd
mmc_put_card
mmc_regulator_get_supply
mmc_regulator_set_ocr
mmc_regulator_set_vqmmc
mmc_retune_hold
mmc_retune_release
mmc_select_card
mmc_select_bus_width
mmc_select_hs
mmc_select_hs400
mmc_select_hs_ddr
mmc_select_timing
mmc_send_status
mmc_send_tuning
mmc_set_bus_mode
mmc_set_bus_width
mmc_set_clock
mmc_set_initial_state
mmc_set_timing
mmc_wait_for_cmd
mmput
mod_delayed_work_on
mod_node_page_state
@@ -1151,6 +1294,7 @@
mutex_lock_interruptible
mutex_trylock
mutex_unlock
name_to_dev_t
neigh_destroy
neigh_resolve_output
netdev_alert
@@ -1280,6 +1424,7 @@
param_array_ops
param_get_int
param_get_string
param_get_uint
param_get_ullong
param_ops_bool
param_ops_charp
@@ -1288,18 +1433,24 @@
param_ops_ullong
param_set_bool
param_set_copystring
param_set_uint
param_set_uint_minmax
pci_aer_clear_nonfatal_status
pcibios_resource_to_bus
pci_bus_type
pci_dev_get
pci_device_group
pci_device_is_present
pci_dev_present
pci_dev_put
pci_disable_pcie_error_reporting
pcie_aspm_enabled
pcie_capability_clear_and_set_word
pcie_capability_read_word
pci_enable_device
pci_enable_pcie_error_reporting
pci_find_ext_capability
pci_free_irq
pci_get_device
pci_get_domain_bus_and_slot
pci_host_probe
@@ -1311,9 +1462,11 @@
pci_read_config_dword
pci_read_config_word
__pci_register_driver
pci_request_irq
pci_restore_state
pci_save_state
pci_set_master
pci_sriov_configure_simple
pci_store_saved_state
pci_walk_bus
pci_write_config_dword
@@ -1324,6 +1477,11 @@
__percpu_init_rwsem
__per_cpu_offset
per_cpu_ptr_to_phys
percpu_ref_exit
percpu_ref_init
percpu_ref_is_zero
percpu_ref_switch_to_atomic_sync
percpu_ref_switch_to_percpu
percpu_up_write
perf_aux_output_begin
perf_aux_output_end
@@ -1488,6 +1646,7 @@
ptp_clock_unregister
putback_movable_pages
put_device
put_disk
put_iova_domain
__put_page
put_sg_io_hdr
@@ -1573,6 +1732,7 @@
rcuwait_wake_up
rdev_get_drvdata
reboot_mode
rebuild_sched_domains
reclaim_shmem_address_space
refcount_dec_and_lock
refcount_dec_not_one
@@ -1729,6 +1889,7 @@
sdhci_cqe_disable
sdhci_cqe_enable
sdhci_cqe_irq
sdhci_dumpregs
sdhci_enable_clk
sdhci_get_property
sdhci_pltfm_free
@@ -1741,6 +1902,7 @@
sdhci_setup_host
select_fallback_rq
seq_buf_printf
seq_file_path
seq_lseek
seq_printf
seq_putc
@@ -1809,6 +1971,7 @@
smp_call_function
smp_call_function_single
smp_call_function_single_async
snapshot_get_image_size
snd_info_create_module_entry
snd_info_free_entry
snd_info_register
@@ -1832,6 +1995,7 @@
sock_alloc_send_pskb
sock_alloc_send_skb
sock_create_kern
sock_edemux
sock_gettstamp
sock_init_data
sock_no_accept
@@ -1902,9 +2066,12 @@
strreplace
strscpy
strsep
submit_bio_noacct
submit_bio_wait
__sw_hweight32
__sw_hweight64
__sw_hweight8
sync_blockdev
synchronize_irq
synchronize_rcu
synchronize_rcu_expedited
@@ -1957,6 +2124,7 @@
task_may_not_preempt
__task_pid_nr_ns
__task_rq_lock
tcp_hashinfo
thermal_cooling_device_register
thermal_cooling_device_unregister
thermal_of_cooling_device_register
@@ -1970,6 +2138,7 @@
tick_nohz_get_sleep_length
time64_to_tm
timer_unstable_counter_workaround
timespec64_to_jiffies
topology_clear_scale_freq_source
topology_set_thermal_pressure
topology_update_done
@@ -1984,8 +2153,124 @@
trace_event_reg
trace_get_event_file
trace_handle_return
__traceiter_android_rvh_account_irq_end
__traceiter_android_rvh_account_irq_start
__traceiter_android_rvh_after_dequeue_task
__traceiter_android_rvh_after_enqueue_task
__traceiter_android_rvh_audio_usb_offload_disconnect
__traceiter_android_rvh_build_perf_domains
__traceiter_android_rvh_can_migrate_task
__traceiter_android_rvh_check_preempt_wakeup
__traceiter_android_rvh_cpu_cgroup_attach
__traceiter_android_rvh_cpu_cgroup_online
__traceiter_android_rvh_do_ptrauth_fault
__traceiter_android_rvh_do_sched_yield
__traceiter_android_rvh_do_undefinstr
__traceiter_android_rvh_find_busiest_queue
__traceiter_android_rvh_find_lowest_rq
__traceiter_android_rvh_flush_task
__traceiter_android_rvh_get_nohz_timer_target
__traceiter_android_rvh_gic_v3_set_affinity
__traceiter_android_rvh_iommu_setup_dma_ops
__traceiter_android_rvh_is_cpu_allowed
__traceiter_android_rvh_migrate_queued_task
__traceiter_android_rvh_mmc_cache_card_properties
__traceiter_android_rvh_new_task_stats
__traceiter_android_rvh_partial_init
__traceiter_android_rvh_replace_next_task_fair
__traceiter_android_rvh_rto_next_cpu
__traceiter_android_rvh_sched_cpu_dying
__traceiter_android_rvh_sched_cpu_starting
__traceiter_android_rvh_sched_exec
__traceiter_android_rvh_sched_fork_init
__traceiter_android_rvh_sched_getaffinity
__traceiter_android_rvh_sched_newidle_balance
__traceiter_android_rvh_sched_nohz_balancer_kick
__traceiter_android_rvh_sched_setaffinity
__traceiter_android_rvh_schedule
__traceiter_android_rvh_select_task_rq_fair
__traceiter_android_rvh_select_task_rq_rt
__traceiter_android_rvh_set_balance_anon_file_reclaim
__traceiter_android_rvh_set_cpus_allowed_by_task
__traceiter_android_rvh_set_cpus_allowed_ptr_locked
__traceiter_android_rvh_set_gfp_zone_flags
__traceiter_android_rvh_set_readahead_gfp_mask
__traceiter_android_rvh_set_skip_swapcache_flags
__traceiter_android_rvh_set_task_cpu
__traceiter_android_rvh_show_max_freq
__traceiter_android_rvh_tick_entry
__traceiter_android_rvh_try_to_wake_up
__traceiter_android_rvh_try_to_wake_up_success
__traceiter_android_rvh_ttwu_cond
__traceiter_android_rvh_update_cpu_capacity
__traceiter_android_rvh_update_cpus_allowed
__traceiter_android_rvh_update_misfit_status
__traceiter_android_rvh_update_readahead_gfp_mask
__traceiter_android_rvh_update_thermal_stats
__traceiter_android_rvh_wake_up_new_task
__traceiter_android_vh_audio_usb_offload_connect
__traceiter_android_vh_binder_restore_priority
__traceiter_android_vh_binder_set_priority
__traceiter_android_vh_binder_wakeup_ilocked
__traceiter_android_vh_check_hibernation_swap
__traceiter_android_vh_check_uninterruptible_tasks
__traceiter_android_vh_check_uninterruptible_tasks_dn
__traceiter_android_vh_cma_alloc_retry
__traceiter_android_vh_cpu_idle_enter
__traceiter_android_vh_cpu_idle_exit
__traceiter_android_vh_cpuidle_psci_enter
__traceiter_android_vh_cpuidle_psci_exit
__traceiter_android_vh_disable_thermal_cooling_stats
__traceiter_android_vh_do_wake_up_sync
__traceiter_android_vh_encrypt_page
__traceiter_android_vh_ftrace_dump_buffer
__traceiter_android_vh_ftrace_format_check
__traceiter_android_vh_ftrace_oops_enter
__traceiter_android_vh_ftrace_oops_exit
__traceiter_android_vh_ftrace_size_check
__traceiter_android_vh_gic_resume
__traceiter_android_vh_gic_suspend
__traceiter_android_vh_gic_v2_resume
__traceiter_android_vh_handle_tlb_conf
__traceiter_android_vh_init_aes_encrypt
__traceiter_android_vh_ipi_stop
__traceiter_android_vh_jiffies_update
__traceiter_android_vh_kswapd_per_node
__traceiter_android_vh_logbuf
__traceiter_android_vh_logbuf_pr_cont
__traceiter_android_vh_madvise_cold_or_pageout
__traceiter_android_vh_mmc_sdio_pm_flag_set
__traceiter_android_vh_mmc_sd_update_cmdline_timing
__traceiter_android_vh_post_image_save
__traceiter_android_vh_printk_hotplug
__traceiter_android_vh_rproc_recovery
__traceiter_android_vh_rproc_recovery_set
__traceiter_android_vh_save_cpu_resume
__traceiter_android_vh_save_hib_resume_bdev
__traceiter_android_vh_scheduler_tick
__traceiter_android_vh_show_resume_epoch_val
__traceiter_android_vh_show_suspend_epoch_val
__traceiter_android_vh_skip_swap_map_write
__traceiter_android_vh_timer_calc_index
__traceiter_android_vh_ufs_check_int_errors
__traceiter_android_vh_ufs_clock_scaling
__traceiter_android_vh_ufs_compl_command
__traceiter_android_vh_ufs_send_command
__traceiter_android_vh_ufs_send_tm_command
__traceiter_android_vh_ufs_send_uic_command
__traceiter_android_vh_ufs_update_sdev
__traceiter_android_vh_update_topology_flags_workfn
__traceiter_binder_transaction_received
__traceiter_block_bio_remap
__traceiter_cpu_frequency_limits
__traceiter_cpu_idle
__traceiter_ipi_entry
__traceiter_ipi_raise
__traceiter_irq_handler_entry
__traceiter_map
__traceiter_sched_overutilized_tp
__traceiter_sched_switch
__traceiter_suspend_resume
__traceiter_unmap
__tracepoint_android_rvh_account_irq_end
__tracepoint_android_rvh_account_irq_start
@@ -1997,7 +2282,9 @@
__tracepoint_android_rvh_check_preempt_wakeup
__tracepoint_android_rvh_cpu_cgroup_attach
__tracepoint_android_rvh_cpu_cgroup_online
__tracepoint_android_rvh_do_ptrauth_fault
__tracepoint_android_rvh_do_sched_yield
__tracepoint_android_rvh_do_undefinstr
__tracepoint_android_rvh_find_busiest_queue
__tracepoint_android_rvh_find_lowest_rq
__tracepoint_android_rvh_flush_task
@@ -2023,6 +2310,7 @@
__tracepoint_android_rvh_select_task_rq_fair
__tracepoint_android_rvh_select_task_rq_rt
__tracepoint_android_rvh_set_balance_anon_file_reclaim
__tracepoint_android_rvh_set_cpus_allowed_by_task
__tracepoint_android_rvh_set_cpus_allowed_ptr_locked
__tracepoint_android_rvh_set_gfp_zone_flags
__tracepoint_android_rvh_set_readahead_gfp_mask
@@ -2036,39 +2324,52 @@
__tracepoint_android_rvh_update_cpu_capacity
__tracepoint_android_rvh_update_cpus_allowed
__tracepoint_android_rvh_update_misfit_status
__tracepoint_android_rvh_update_readahead_gfp_mask
__tracepoint_android_rvh_update_thermal_stats
__tracepoint_android_rvh_wake_up_new_task
__tracepoint_android_vh_audio_usb_offload_connect
__tracepoint_android_vh_binder_restore_priority
__tracepoint_android_vh_binder_set_priority
__tracepoint_android_vh_binder_wakeup_ilocked
__tracepoint_android_vh_check_hibernation_swap
__tracepoint_android_vh_check_uninterruptible_tasks
__tracepoint_android_vh_check_uninterruptible_tasks_dn
__tracepoint_android_vh_cma_alloc_retry
__tracepoint_android_vh_cpu_idle_enter
__tracepoint_android_vh_cpu_idle_exit
__tracepoint_android_vh_cpuidle_psci_enter
__tracepoint_android_vh_cpuidle_psci_exit
__tracepoint_android_vh_disable_thermal_cooling_stats
__tracepoint_android_vh_do_wake_up_sync
__tracepoint_android_vh_encrypt_page
__tracepoint_android_vh_ftrace_dump_buffer
__tracepoint_android_vh_ftrace_format_check
__tracepoint_android_vh_ftrace_oops_enter
__tracepoint_android_vh_ftrace_oops_exit
__tracepoint_android_vh_ftrace_size_check
__tracepoint_android_vh_gic_resume
__tracepoint_android_vh_gic_suspend
__tracepoint_android_vh_gic_v2_resume
__tracepoint_android_vh_handle_tlb_conf
__tracepoint_android_vh_init_aes_encrypt
__tracepoint_android_vh_ipi_stop
__tracepoint_android_vh_jiffies_update
__tracepoint_android_vh_kswapd_per_node
__tracepoint_android_vh_logbuf
__tracepoint_android_vh_logbuf_pr_cont
__tracepoint_android_vh_madvise_cold_or_pageout
__tracepoint_android_vh_mmc_sdio_pm_flag_set
__tracepoint_android_vh_mmc_sd_update_cmdline_timing
__tracepoint_android_vh_post_image_save
__tracepoint_android_vh_printk_hotplug
__tracepoint_android_vh_rproc_recovery
__tracepoint_android_vh_rproc_recovery_set
__tracepoint_android_vh_save_cpu_resume
__tracepoint_android_vh_save_hib_resume_bdev
__tracepoint_android_vh_scheduler_tick
__tracepoint_android_vh_show_resume_epoch_val
__tracepoint_android_vh_show_suspend_epoch_val
__tracepoint_android_vh_skip_swap_map_write
__tracepoint_android_vh_timer_calc_index
__tracepoint_android_vh_ufs_check_int_errors
__tracepoint_android_vh_ufs_clock_scaling
@@ -2079,6 +2380,7 @@
__tracepoint_android_vh_ufs_update_sdev
__tracepoint_android_vh_update_topology_flags_workfn
__tracepoint_binder_transaction_received
__tracepoint_block_bio_remap
__tracepoint_cpu_frequency_limits
__tracepoint_cpu_idle
__tracepoint_ipi_entry
@@ -2130,6 +2432,9 @@
ucsi_set_drvdata
ucsi_unregister
__udelay
__udp4_lib_lookup
__udp6_lib_lookup
udp_table
ufshcd_auto_hibern8_update
ufshcd_dme_get_attr
ufshcd_dme_set_attr
@@ -2204,6 +2509,7 @@
usb_mon_deregister
usb_mon_register
usb_phy_set_charger_current
usb_pipe_type_check
usb_put_function_instance
usb_register_notify
usb_remove_phy
@@ -2239,6 +2545,7 @@
vchan_tx_desc_free
vchan_tx_submit
vfree
vfs_fsync
vhost_add_used_and_signal
vhost_dev_check_owner
vhost_dev_cleanup
@@ -2273,6 +2580,7 @@
wait_for_completion
wait_for_completion_interruptible
wait_for_completion_interruptible_timeout
wait_for_completion_io_timeout
wait_for_completion_timeout
__wait_rcu_gp
__wake_up

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
[abi_symbol_list]
#required by codec module
snd_soc_component_enable_pin
snd_soc_component_get_pin_status
#required for mmc debugging
__traceiter_block_rq_complete
__tracepoint_block_rq_complete

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,282 @@
[abi_symbol_list]
add_to_page_cache_locked
__alloc_pages
android_kmalloc_64_create
__arch_copy_from_user
__arch_copy_to_user
arm64_const_caps_ready
autoremove_wake_function
balance_dirty_pages_ratelimited
bcmp
bdev_read_only
__bforget
bio_add_page
bio_alloc_bioset
bio_associate_blkg
bio_put
__bitmap_weight
bit_waitqueue
blkdev_issue_discard
blkdev_issue_flush
blk_finish_plug
blk_start_plug
__blockdev_direct_IO
block_invalidatepage
block_is_partially_uptodate
__breadahead
__bread_gfp
__brelse
buffer_migrate_page
__cancel_dirty_page
capable
capable_wrt_inode_uidgid
__cfi_slowpath_diag
__check_object_size
clean_bdev_aliases
__cleancache_invalidate_inode
clear_inode
clear_page
clear_page_dirty_for_io
complete_and_exit
copy_page_from_iter_atomic
cpu_hwcap_keys
cpu_hwcaps
create_empty_buffers
current_umask
d_add
d_add_ci
delete_from_page_cache
d_instantiate
d_make_root
d_obtain_alias
down_read
down_write
down_write_trylock
dput
drop_nlink
d_splice_alias
dump_stack
end_buffer_read_sync
end_buffer_write_sync
end_page_writeback
errseq_set
fault_in_iov_iter_readable
fault_in_safe_writeable
fget
fiemap_fill_next_extent
fiemap_prep
filemap_fault
filemap_fdatawait_range
filemap_fdatawrite
filemap_flush
__filemap_set_wb_err
filemap_write_and_wait_range
file_remove_privs
file_update_time
file_write_and_wait_range
finish_wait
flush_dcache_page
fput
freezing_slow_path
fs_bio_set
generic_error_remove_page
generic_file_direct_write
generic_file_llseek
generic_file_mmap
generic_file_open
generic_file_read_iter
generic_file_splice_read
generic_fillattr
generic_perform_write
generic_read_dir
generic_write_checks
__getblk_gfp
gic_nonsecure_priorities
grab_cache_page_write_begin
iget5_locked
igrab
ihold
ilookup5
inc_nlink
in_group_p
__init_rwsem
init_special_inode
init_wait_entry
__init_waitqueue_head
inode_dio_wait
inode_init_once
inode_init_owner
inode_newsize_ok
inode_set_flags
__insert_inode_hash
invalidate_bdev
invalidate_mapping_pages
io_schedule
iov_iter_advance
iov_iter_alignment
iov_iter_get_pages
iov_iter_single_seg_count
iput
is_bad_inode
iter_file_splice_write
iunique
jiffies
jiffies_to_msecs
kasan_flag_enabled
kfree
kill_block_super
__kmalloc
kmalloc_caches
kmem_cache_alloc
kmem_cache_alloc_trace
kmem_cache_create
kmem_cache_create_usercopy
kmem_cache_destroy
kmem_cache_free
krealloc
kthread_create_on_node
kthread_should_stop
kthread_stop
ktime_get_coarse_real_ts64
kvfree
__list_add_valid
__list_del_entry_valid
ll_rw_block
load_nls
load_nls_default
__lock_buffer
__lock_page
lru_cache_add
make_bad_inode
mark_buffer_async_write
mark_buffer_dirty
mark_buffer_write_io_error
__mark_inode_dirty
mark_page_accessed
memcmp
memcpy
memmove
memset
mktime64
mnt_drop_write_file
mnt_want_write_file
module_layout
mount_bdev
mpage_readahead
mpage_readpage
__msecs_to_jiffies
__mutex_init
mutex_lock
mutex_trylock
mutex_unlock
new_inode
notify_change
pagecache_get_page
page_cache_next_miss
page_cache_prev_miss
page_mapped
pagevec_lookup_range
pagevec_lookup_range_tag
__pagevec_release
page_zero_new_buffers
__percpu_down_read
preempt_schedule
preempt_schedule_notrace
prepare_to_wait
prepare_to_wait_event
_printk
__printk_ratelimit
__put_page
put_pages_list
___ratelimit
_raw_read_lock
_raw_read_lock_irqsave
_raw_read_unlock
_raw_read_unlock_irqrestore
_raw_spin_lock
_raw_spin_lock_irqsave
_raw_spin_unlock
_raw_spin_unlock_irqrestore
_raw_write_lock
_raw_write_lock_irqsave
_raw_write_unlock
_raw_write_unlock_irqrestore
rcuwait_wake_up
readahead_gfp_mask
read_cache_page
redirty_page_for_writepage
__refrigerator
register_filesystem
__remove_inode_hash
sb_min_blocksize
sb_set_blocksize
schedule
schedule_timeout_interruptible
security_inode_init_security
seq_printf
setattr_prepare
set_freezable
set_nlink
set_page_dirty
__set_page_dirty_buffers
__set_page_dirty_nobuffers
set_user_nice
simple_strtol
simple_strtoul
simple_strtoull
snprintf
sprintf
sscanf
__stack_chk_fail
strchr
strcmp
strlen
strncasecmp
strncmp
strsep
strstr
submit_bh
submit_bio
sync_blockdev
__sync_dirty_buffer
sync_dirty_buffer
sync_filesystem
sync_inode_metadata
system_freezing_cnt
sys_tz
tag_pages_for_writeback
__test_set_page_writeback
time64_to_tm
timestamp_truncate
touch_atime
_trace_android_vh_record_pcpu_rwsem_starttime
truncate_inode_pages
truncate_inode_pages_final
truncate_pagecache
truncate_setsize
try_to_release_page
try_to_writeback_inodes_sb
__ubsan_handle_cfi_check_fail_abort
unload_nls
unlock_buffer
unlock_new_inode
unlock_page
unmap_mapping_range
unregister_filesystem
up_read
up_write
vfree
vfs_fsync_range
vmalloc
__vmalloc
vsnprintf
vzalloc
__wait_on_buffer
wait_on_page_bit
wake_bit_function
__wake_up
wake_up_process
__warn_printk
write_inode_now
write_one_page
xa_load

View File

@@ -0,0 +1,6 @@
[abi_symbol_list]
# for type visibility
GKI_struct_selinux_state
GKI_struct_readahead_control
GKI_struct_blk_mq_alloc_data

File diff suppressed because it is too large Load Diff

View File

@@ -2307,6 +2307,7 @@
__traceiter_android_rvh_build_perf_domains
__traceiter_android_rvh_can_migrate_task
__traceiter_android_rvh_check_preempt_wakeup
__traceiter_android_rvh_cpufreq_transition
__traceiter_android_rvh_cpu_cgroup_attach
__traceiter_android_rvh_cpu_cgroup_online
__traceiter_android_rvh_find_busiest_queue
@@ -2314,6 +2315,7 @@
__traceiter_android_rvh_is_cpu_allowed
__traceiter_android_rvh_migrate_queued_task
__traceiter_android_rvh_new_task_stats
__traceiter_android_rvh_refrigerator
__traceiter_android_rvh_replace_next_task_fair
__traceiter_android_rvh_sched_cpu_dying
__traceiter_android_rvh_sched_cpu_starting
@@ -2331,12 +2333,18 @@
__traceiter_android_rvh_update_cpu_capacity
__traceiter_android_rvh_update_misfit_status
__traceiter_android_rvh_wake_up_new_task
__traceiter_android_vh_account_task_time
__traceiter_android_vh_audio_usb_offload_connect
__traceiter_android_vh_binder_restore_priority
__traceiter_android_vh_binder_set_priority
__traceiter_android_vh_binder_trans
__traceiter_android_vh_blk_alloc_rqs
__traceiter_android_vh_blk_rq_ctx_init
__traceiter_android_vh_cpu_idle_enter
__traceiter_android_vh_cpu_idle_exit
__traceiter_android_vh_dup_task_struct
__traceiter_android_vh_ipi_stop
__traceiter_android_vh_irqtime_account_process_tick
__traceiter_android_vh_logbuf
__traceiter_android_vh_logbuf_pr_cont
__traceiter_android_vh_mmap_region
@@ -2351,6 +2359,7 @@
__traceiter_android_vh_show_suspend_epoch_val
__traceiter_android_vh_shrink_slab_bypass
__traceiter_android_vh_try_to_unmap_one
__traceiter_android_vh_tune_scan_type
__traceiter_android_vh_ufs_check_int_errors
__traceiter_android_vh_ufs_clock_scaling
__traceiter_android_vh_ufs_compl_command
@@ -2360,6 +2369,7 @@
__traceiter_android_vh_ufs_send_uic_command
__traceiter_android_vh_ufs_update_sdev
__traceiter_android_vh_update_topology_flags_workfn
__traceiter_android_vh_vmpressure
__traceiter_block_rq_insert
__traceiter_cpu_frequency_limits
__traceiter_dwc3_complete_trb
@@ -2385,6 +2395,7 @@
__tracepoint_android_rvh_build_perf_domains
__tracepoint_android_rvh_can_migrate_task
__tracepoint_android_rvh_check_preempt_wakeup
__tracepoint_android_rvh_cpufreq_transition
__tracepoint_android_rvh_cpu_cgroup_attach
__tracepoint_android_rvh_cpu_cgroup_online
__tracepoint_android_rvh_do_sched_yield
@@ -2396,6 +2407,7 @@
__tracepoint_android_rvh_is_cpu_allowed
__tracepoint_android_rvh_migrate_queued_task
__tracepoint_android_rvh_new_task_stats
__tracepoint_android_rvh_refrigerator
__tracepoint_android_rvh_replace_next_task_fair
__tracepoint_android_rvh_rto_next_cpu
__tracepoint_android_rvh_sched_cpu_dying
@@ -2423,14 +2435,19 @@
__tracepoint_android_rvh_update_cpus_allowed
__tracepoint_android_rvh_update_misfit_status
__tracepoint_android_rvh_wake_up_new_task
__tracepoint_android_vh_account_task_time
__tracepoint_android_vh_audio_usb_offload_connect
__tracepoint_android_vh_binder_restore_priority
__tracepoint_android_vh_binder_set_priority
__tracepoint_android_vh_binder_trans
__tracepoint_android_vh_binder_wakeup_ilocked
__tracepoint_android_vh_blk_alloc_rqs
__tracepoint_android_vh_blk_rq_ctx_init
__tracepoint_android_vh_cpu_idle_enter
__tracepoint_android_vh_cpu_idle_exit
__tracepoint_android_vh_cpuidle_psci_enter
__tracepoint_android_vh_cpuidle_psci_exit
__tracepoint_android_vh_dup_task_struct
__tracepoint_android_vh_ftrace_dump_buffer
__tracepoint_android_vh_ftrace_format_check
__tracepoint_android_vh_ftrace_oops_enter
@@ -2438,6 +2455,7 @@
__tracepoint_android_vh_ftrace_size_check
__tracepoint_android_vh_gic_resume
__tracepoint_android_vh_ipi_stop
__tracepoint_android_vh_irqtime_account_process_tick
__tracepoint_android_vh_jiffies_update
__tracepoint_android_vh_logbuf
__tracepoint_android_vh_logbuf_pr_cont
@@ -2456,6 +2474,7 @@
__tracepoint_android_vh_shrink_slab_bypass
__tracepoint_android_vh_timer_calc_index
__tracepoint_android_vh_try_to_unmap_one
__tracepoint_android_vh_tune_scan_type
__tracepoint_android_vh_ufs_check_int_errors
__tracepoint_android_vh_ufs_clock_scaling
__tracepoint_android_vh_ufs_compl_command
@@ -2465,6 +2484,7 @@
__tracepoint_android_vh_ufs_send_uic_command
__tracepoint_android_vh_ufs_update_sdev
__tracepoint_android_vh_update_topology_flags_workfn
__tracepoint_android_vh_vmpressure
__tracepoint_binder_transaction_received
__tracepoint_block_rq_insert
__tracepoint_cpu_frequency_limits

View File

@@ -82,6 +82,9 @@
__tracepoint_android_vh_ufs_mcq_send_command
__tracepoint_android_vh_ufs_mcq_set_sqid
__tracepoint_android_vh_ufs_mcq_has_oustanding_reqs
__tracepoint_android_vh_dm_update_clone_bio
__tracepoint_android_vh_direct_io_update_bio
__tracepoint_android_vh_loop_prepare_cmd
__traceiter_android_vh_ufs_mcq_handler
__traceiter_android_vh_ufs_mcq_print_trs
__traceiter_android_vh_ufs_mcq_config
@@ -97,6 +100,9 @@
__traceiter_android_vh_ufs_mcq_send_command
__traceiter_android_vh_ufs_mcq_set_sqid
__traceiter_android_vh_ufs_mcq_has_oustanding_reqs
__traceiter_android_vh_dm_update_clone_bio
__traceiter_android_vh_direct_io_update_bio
__traceiter_android_vh_loop_prepare_cmd
#required by cs35l41 module
regmap_raw_write_async
@@ -172,7 +178,7 @@
__tracepoint_android_vh_binder_trans
__tracepoint_android_vh_binder_reply
__tracepoint_android_vh_binder_alloc_new_buf_locked
freezer_cgrp_subsys
#required by mi_sched.ko
__traceiter_android_vh_free_task
@@ -180,6 +186,8 @@
__traceiter_android_vh_scheduler_tick
__tracepoint_android_vh_scheduler_tick
jiffies_64
free_uid
find_user
#required by migt.ko
__traceiter_android_rvh_after_enqueue_task
@@ -214,6 +222,10 @@
__tracepoint_binder_txn_latency_free
#required by reclaim module
__traceiter_android_vh_tune_scan_type
__tracepoint_android_vh_tune_scan_type
__traceiter_android_vh_tune_swappiness
__tracepoint_android_vh_tune_swappiness
#required by msm_drm.ko module
drm_get_connector_type_name
@@ -221,7 +233,6 @@
#required by mi_gamekey.ko module
gpio_request_array
#extend_reclaim.ko
#required by xm_power_debug.ko module
wakeup_sources_read_lock
@@ -240,7 +251,7 @@
__tracepoint_irq_handler_entry
__traceiter_irq_handler_entry
#required by msm_rtb.ko module
#required by ax88796b.ko module
phy_resolve_aneg_linkmode
#required by metis.ko module
@@ -261,3 +272,254 @@
__tracepoint_android_rvh_set_cpus_allowed_comm
__tracepoint_android_rvh_dequeue_task
cpuset_cpus_allowed
#required by perf_helper.ko
try_to_free_mem_cgroup_pages
#required by debug_ext.ko
of_find_all_nodes
#required by mi_freqwdg.ko
__traceiter_android_vh_freq_qos_remove_request
__traceiter_android_vh_freq_qos_update_request
__traceiter_android_vh_freq_qos_add_request
__traceiter_android_rvh_entity_tick
__traceiter_android_rvh_dequeue_task_fair
__tracepoint_android_vh_freq_qos_remove_request
__tracepoint_android_vh_freq_qos_update_request
__tracepoint_android_vh_freq_qos_add_request
__tracepoint_android_rvh_dequeue_task_fair
__tracepoint_android_rvh_entity_tick
#required by binder_prio module
__traceiter_android_vh_binder_priority_skip
__tracepoint_android_vh_binder_priority_skip
#required by mi_mempool.ko module
__traceiter_android_vh_mmput
__tracepoint_android_vh_mmput
__traceiter_android_vh_alloc_pages_reclaim_bypass
__tracepoint_android_vh_alloc_pages_reclaim_bypass
__traceiter_android_vh_alloc_pages_failure_bypass
__tracepoint_android_vh_alloc_pages_failure_bypass
#required by mifs.ko module
__cleancache_get_page
__dquot_alloc_space
__dquot_free_space
__dquot_transfer
__filemap_set_wb_err
__fscrypt_encrypt_symlink
__fscrypt_inode_uses_inline_crypto
__fscrypt_prepare_link
__fscrypt_prepare_lookup
__fscrypt_prepare_readdir
__fscrypt_prepare_rename
__fscrypt_prepare_setattr
__iomap_dio_rw
__page_file_mapping
__pagevec_release
__percpu_counter_init
__percpu_counter_sum
__set_page_dirty_nobuffers
__sync_dirty_buffer
__test_set_page_writeback
__traceiter_android_fs_dataread_end
__traceiter_android_fs_dataread_start
__traceiter_android_fs_datawrite_end
__traceiter_android_fs_datawrite_start
__tracepoint_android_fs_dataread_end
__tracepoint_android_fs_dataread_start
__tracepoint_android_fs_datawrite_end
__tracepoint_android_fs_datawrite_start
__xa_clear_mark
add_swap_extent
bdev_read_only
bio_associate_blkg_from_css
bioset_exit
bioset_init
blk_op_str
blkdev_issue_discard
blkdev_issue_zeroout
capable_wrt_inode_uidgid
clear_page_dirty_for_io
current_umask
d_instantiate_new
d_invalidate
d_tmpfile
dentry_path_raw
dotdot_name
dqget
dqput
dquot_acquire
dquot_alloc
dquot_alloc_inode
dquot_claim_space_nodirty
dquot_commit
dquot_commit_info
dquot_destroy
dquot_disable
dquot_drop
dquot_file_open
dquot_free_inode
dquot_get_dqblk
dquot_get_next_dqblk
dquot_get_next_id
dquot_get_state
dquot_initialize
dquot_initialize_needed
dquot_load_quota_inode
dquot_mark_dquot_dirty
dquot_quota_off
dquot_quota_on
dquot_quota_on_mount
dquot_release
dquot_resume
dquot_set_dqblk
dquot_set_dqinfo
dquot_transfer
dquot_writeback_dquots
end_page_writeback
errseq_set
evict_inodes
fault_in_iov_iter_readable
fiemap_fill_next_extent
fiemap_prep
file_modified
file_update_time
fileattr_fill_flags
filemap_check_errors
filemap_fault
filemap_fdatawrite
filemap_map_pages
filemap_read
filemap_write_and_wait_range
find_inode_nowait
freeze_bdev
freeze_super
fs_kobj
fscrypt_decrypt_bio
fscrypt_dio_supported
fscrypt_drop_inode
fscrypt_encrypt_pagecache_blocks
fscrypt_file_open
fscrypt_fname_alloc_buffer
fscrypt_fname_disk_to_usr
fscrypt_fname_free_buffer
fscrypt_fname_siphash
fscrypt_free_bounce_page
fscrypt_free_inode
fscrypt_get_symlink
fscrypt_has_permitted_context
fscrypt_ioctl_add_key
fscrypt_ioctl_get_key_status
fscrypt_ioctl_get_nonce
fscrypt_ioctl_get_policy
fscrypt_ioctl_get_policy_ex
fscrypt_ioctl_remove_key
fscrypt_ioctl_remove_key_all_users
fscrypt_ioctl_set_policy
fscrypt_limit_io_blocks
fscrypt_match_name
fscrypt_mergeable_bio
fscrypt_prepare_new_inode
fscrypt_prepare_symlink
fscrypt_put_encryption_info
fscrypt_set_bio_crypt_ctx
fscrypt_set_context
fscrypt_set_test_dummy_encryption
fscrypt_setup_filename
fscrypt_show_test_dummy_encryption
fscrypt_symlink_getattr
fscrypt_zeroout_range
fsverity_cleanup_inode
fsverity_enqueue_verify_work
fsverity_file_open
fsverity_ioctl_enable
fsverity_ioctl_measure
fsverity_ioctl_read_metadata
fsverity_prepare_setattr
fsverity_verify_bio
fsverity_verify_page
generate_random_uuid
generic_fadvise
generic_file_llseek_size
generic_set_encrypted_ci_d_ops
grab_cache_page_write_begin
iget_locked
inode_dio_wait
inode_init_owner
inode_newsize_ok
inode_owner_or_capable
inode_set_flags
insert_inode_locked
iomap_dio_complete
iov_iter_alignment
iter_file_splice_write
kernfs_get
kset_register
migrate_page_move_mapping
migrate_page_states
mnt_drop_write_file
mnt_want_write_file
noop_backing_dev_info
noop_direct_IO
page_cache_ra_unbounded
page_cache_sync_ra
page_symlink
pagecache_write_begin
pagecache_write_end
pagevec_lookup_range
pagevec_lookup_range_tag
percpu_counter_add_batch
percpu_counter_batch
percpu_counter_destroy
percpu_counter_set
posix_acl_alloc
posix_acl_chmod
posix_acl_equiv_mode
redirty_page_for_writepage
security_inode_init_security
seq_escape
set_cached_acl
set_task_ioprio
shrink_dcache_sb
sync_inode_metadata
sync_inodes_sb
tag_pages_for_writeback
thaw_bdev
thaw_super
touch_atime
truncate_inode_pages_range
truncate_pagecache_range
utf8_casefold
utf8_load
utf8_strncasecmp_folded
utf8_unload
vfs_setpos
wait_for_completion_io
wait_for_stable_page
wait_on_page_writeback
wbc_account_cgroup_owner
xa_get_mark
LZ4_compress_HC
LZ4_compress_default
LZ4_decompress_safe
ZSTD_CStreamWorkspaceBound
ZSTD_DStreamWorkspaceBound
ZSTD_compressStream
ZSTD_decompressStream
ZSTD_endStream
ZSTD_getParams
ZSTD_initCStream
ZSTD_initDStream
ZSTD_maxCLevel
#required by cache module
__mod_lruvec_state
__mod_zone_page_state
d_delete
mem_cgroup_update_lru_size
__traceiter_android_rvh_ctl_dirty_rate
__tracepoint_android_rvh_ctl_dirty_rate

View File

@@ -1300,7 +1300,6 @@ config ARCH_HAVE_TRACE_MMIO_ACCESS
config ARCH_HAS_NONLEAF_PMD_YOUNG
bool
depends on PGTABLE_LEVELS > 2
help
Architectures that select this option are capable of setting the
accessed bit in non-leaf PMD entries when using them as part of linear

View File

@@ -77,10 +77,10 @@ CPPFLAGS_vmlinux.lds += -DTEXT_OFFSET="$(TEXT_OFFSET)"
CPPFLAGS_vmlinux.lds += -DMALLOC_SIZE="$(MALLOC_SIZE)"
compress-$(CONFIG_KERNEL_GZIP) = gzip
compress-$(CONFIG_KERNEL_LZO) = lzo
compress-$(CONFIG_KERNEL_LZMA) = lzma
compress-$(CONFIG_KERNEL_XZ) = xzkern
compress-$(CONFIG_KERNEL_LZ4) = lz4
compress-$(CONFIG_KERNEL_LZO) = lzo_with_size
compress-$(CONFIG_KERNEL_LZMA) = lzma_with_size
compress-$(CONFIG_KERNEL_XZ) = xzkern_with_size
compress-$(CONFIG_KERNEL_LZ4) = lz4_with_size
libfdt_objs := fdt_rw.o fdt_ro.o fdt_wip.o fdt.o

View File

@@ -17,18 +17,11 @@ MODULE_LICENSE("GPL");
/*
* Pull in the reference implementations while instructing GCC (through
* -ftree-vectorize) to attempt to exploit implicit parallelism and emit
* NEON instructions.
* NEON instructions. Clang does this by default at O2 so no pragma is
* needed.
*/
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
#ifdef CONFIG_CC_IS_GCC
#pragma GCC optimize "tree-vectorize"
#else
/*
* While older versions of GCC do not generate incorrect code, they fail to
* recognize the parallel nature of these functions, and emit plain ARM code,
* which is known to be slower than the optimized ARM code in asm-arm/xor.h.
*
* #warning This code requires at least version 4.6 of GCC
*/
#endif
#pragma GCC diagnostic ignored "-Wunused-variable"

View File

@@ -657,6 +657,7 @@ config ARM64_ERRATUM_1463225
config ARM64_ERRATUM_1542419
bool "Neoverse-N1: workaround mis-ordering of instruction fetches"
default y
depends on BROKEN # CPU cap re-allocated by Android
help
This option adds a workaround for ARM Neoverse-N1 erratum
1542419.
@@ -857,6 +858,7 @@ config CAVIUM_ERRATUM_23154
config CAVIUM_ERRATUM_27456
bool "Cavium erratum 27456: Broadcast TLBI instructions may cause icache corruption"
default y
depends on BROKEN # CPU cap re-allocated by Android
help
On ThunderX T88 pass 1.x through 2.1 parts, broadcast TLBI
instructions may cause the icache to become corrupted if it
@@ -868,6 +870,7 @@ config CAVIUM_ERRATUM_27456
config CAVIUM_ERRATUM_30115
bool "Cavium erratum 30115: Guest may disable interrupts in host"
default y
depends on BROKEN # CPU cap re-allocated by Android
help
On ThunderX T88 pass 1.x through 2.2, T81 pass 1.0 through
1.2, and T83 Pass 1.0, KVM guest execution may disable
@@ -879,6 +882,7 @@ config CAVIUM_ERRATUM_30115
config CAVIUM_TX2_ERRATUM_219
bool "Cavium ThunderX2 erratum 219: PRFM between TTBR change and ISB fails"
default y
depends on BROKEN # CPU caps re-allocated by Android
help
On Cavium ThunderX2, a load, store or prefetch instruction between a
TTBR update and the corresponding context synchronizing operation can

View File

@@ -295,7 +295,6 @@ CONFIG_SND_SOC_SM8250=m
CONFIG_SND_SOC_LPASS_WSA_MACRO=m
CONFIG_SND_SOC_LPASS_VA_MACRO=m
CONFIG_TYPEC_QCOM_PMIC=m
CONFIG_LEDS_CLASS_MULTICOLOR=m
CONFIG_LEDS_QCOM_LPG=m
CONFIG_SM_GPUCC_8250=m
CONFIG_SM_DISPCC_8250=m

View File

@@ -67,6 +67,7 @@ CONFIG_RANDOMIZE_BASE=y
CONFIG_CMDLINE="stack_depot_disable=on kasan.stacktrace=off kvm-arm.mode=protected cgroup_disable=pressure"
CONFIG_CMDLINE_EXTEND=y
# CONFIG_DMI is not set
CONFIG_HIBERNATION=y
CONFIG_PM_WAKELOCKS=y
CONFIG_PM_WAKELOCKS_LIMIT=0
# CONFIG_PM_WAKELOCKS_GC is not set
@@ -88,6 +89,7 @@ CONFIG_KVM=y
CONFIG_KVM_S2MPU=y
CONFIG_CRYPTO_SHA2_ARM64_CE=y
CONFIG_CRYPTO_SHA512_ARM64_CE=y
CONFIG_CRYPTO_POLYVAL_ARM64_CE=y
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
CONFIG_KPROBES=y
CONFIG_JUMP_LABEL=y
@@ -505,6 +507,7 @@ CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
CONFIG_USB_CONFIGFS_F_UAC2=y
CONFIG_USB_CONFIGFS_F_MIDI=y
CONFIG_USB_CONFIGFS_F_HID=y
CONFIG_USB_CONFIGFS_F_UVC=y
CONFIG_TYPEC=y
CONFIG_TYPEC_TCPM=y
CONFIG_TYPEC_TCPCI=y
@@ -516,6 +519,7 @@ CONFIG_MMC_CRYPTO=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_LEDS_CLASS_FLASH=y
CONFIG_LEDS_CLASS_MULTICOLOR=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_TRANSIENT=y
CONFIG_EDAC=y
@@ -567,6 +571,7 @@ CONFIG_EXT4_FS_SECURITY=y
CONFIG_F2FS_FS=y
CONFIG_F2FS_FS_SECURITY=y
CONFIG_F2FS_FS_COMPRESSION=y
CONFIG_F2FS_UNFAIR_RWSEM=y
CONFIG_FS_ENCRYPTION=y
CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
CONFIG_FS_VERITY=y
@@ -649,6 +654,7 @@ CONFIG_SECURITY_SELINUX=y
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
CONFIG_CRYPTO_CHACHA20POLY1305=y
CONFIG_CRYPTO_ADIANTUM=y
CONFIG_CRYPTO_HCTR2=y
CONFIG_CRYPTO_XCBC=y
CONFIG_CRYPTO_BLAKE2B=y
CONFIG_CRYPTO_MD5=y
@@ -657,6 +663,7 @@ CONFIG_CRYPTO_LZO=y
CONFIG_CRYPTO_LZ4=y
CONFIG_CRYPTO_ZSTD=y
CONFIG_CRYPTO_ANSI_CPRNG=y
CONFIG_TRACE_MMIO_ACCESS=y
CONFIG_XZ_DEC=y
CONFIG_DMA_RESTRICTED_POOL=y
CONFIG_DMA_CMA=y
@@ -678,6 +685,7 @@ CONFIG_UBSAN_LOCAL_BOUNDS=y
# CONFIG_UBSAN_BOOL is not set
# CONFIG_UBSAN_ENUM is not set
CONFIG_PAGE_OWNER=y
CONFIG_PAGE_PINNER=y
CONFIG_DEBUG_STACK_USAGE=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_KASAN=y
@@ -693,7 +701,6 @@ CONFIG_WQ_WATCHDOG=y
CONFIG_SCHEDSTATS=y
# CONFIG_DEBUG_PREEMPT is not set
CONFIG_BUG_ON_DATA_CORRUPTION=y
CONFIG_TRACE_MMIO_ACCESS=y
CONFIG_HIST_TRIGGERS=y
CONFIG_PID_IN_CONTEXTIDR=y
# CONFIG_RUNTIME_TESTING_MENU is not set

View File

@@ -61,6 +61,11 @@ config CRYPTO_GHASH_ARM64_CE
select CRYPTO_LIB_AES
select CRYPTO_AEAD
config CRYPTO_POLYVAL_ARM64_CE
tristate "POLYVAL using ARMv8 Crypto Extensions (for HCTR2)"
depends on KERNEL_MODE_NEON
select CRYPTO_POLYVAL
config CRYPTO_CRCT10DIF_ARM64_CE
tristate "CRCT10DIF digest algorithm using PMULL instructions"
depends on KERNEL_MODE_NEON && CRC_T10DIF
@@ -85,13 +90,13 @@ config CRYPTO_AES_ARM64_CE_CCM
select CRYPTO_LIB_AES
config CRYPTO_AES_ARM64_CE_BLK
tristate "AES in ECB/CBC/CTR/XTS modes using ARMv8 Crypto Extensions"
tristate "AES in ECB/CBC/CTR/XTS/XCTR modes using ARMv8 Crypto Extensions"
depends on KERNEL_MODE_NEON
select CRYPTO_SKCIPHER
select CRYPTO_AES_ARM64_CE
config CRYPTO_AES_ARM64_NEON_BLK
tristate "AES in ECB/CBC/CTR/XTS modes using NEON instructions"
tristate "AES in ECB/CBC/CTR/XTS/XCTR modes using NEON instructions"
depends on KERNEL_MODE_NEON
select CRYPTO_SKCIPHER
select CRYPTO_LIB_AES

View File

@@ -26,6 +26,9 @@ sm4-ce-y := sm4-ce-glue.o sm4-ce-core.o
obj-$(CONFIG_CRYPTO_GHASH_ARM64_CE) += ghash-ce.o
ghash-ce-y := ghash-ce-glue.o ghash-ce-core.o
obj-$(CONFIG_CRYPTO_POLYVAL_ARM64_CE) += polyval-ce.o
polyval-ce-y := polyval-ce-glue.o polyval-ce-core.o
obj-$(CONFIG_CRYPTO_CRCT10DIF_ARM64_CE) += crct10dif-ce.o
crct10dif-ce-y := crct10dif-ce-core.o crct10dif-ce-glue.o

View File

@@ -24,7 +24,6 @@
#ifdef USE_V8_CRYPTO_EXTENSIONS
#define MODE "ce"
#define PRIO 300
#define STRIDE 5
#define aes_expandkey ce_aes_expandkey
#define aes_ecb_encrypt ce_aes_ecb_encrypt
#define aes_ecb_decrypt ce_aes_ecb_decrypt
@@ -35,14 +34,14 @@
#define aes_essiv_cbc_encrypt ce_aes_essiv_cbc_encrypt
#define aes_essiv_cbc_decrypt ce_aes_essiv_cbc_decrypt
#define aes_ctr_encrypt ce_aes_ctr_encrypt
#define aes_xctr_encrypt ce_aes_xctr_encrypt
#define aes_xts_encrypt ce_aes_xts_encrypt
#define aes_xts_decrypt ce_aes_xts_decrypt
#define aes_mac_update ce_aes_mac_update
MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 Crypto Extensions");
MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS/XCTR using ARMv8 Crypto Extensions");
#else
#define MODE "neon"
#define PRIO 200
#define STRIDE 4
#define aes_ecb_encrypt neon_aes_ecb_encrypt
#define aes_ecb_decrypt neon_aes_ecb_decrypt
#define aes_cbc_encrypt neon_aes_cbc_encrypt
@@ -52,16 +51,18 @@ MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 Crypto Extensions");
#define aes_essiv_cbc_encrypt neon_aes_essiv_cbc_encrypt
#define aes_essiv_cbc_decrypt neon_aes_essiv_cbc_decrypt
#define aes_ctr_encrypt neon_aes_ctr_encrypt
#define aes_xctr_encrypt neon_aes_xctr_encrypt
#define aes_xts_encrypt neon_aes_xts_encrypt
#define aes_xts_decrypt neon_aes_xts_decrypt
#define aes_mac_update neon_aes_mac_update
MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 NEON");
MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS/XCTR using ARMv8 NEON");
#endif
#if defined(USE_V8_CRYPTO_EXTENSIONS) || !IS_ENABLED(CONFIG_CRYPTO_AES_ARM64_BS)
MODULE_ALIAS_CRYPTO("ecb(aes)");
MODULE_ALIAS_CRYPTO("cbc(aes)");
MODULE_ALIAS_CRYPTO("ctr(aes)");
MODULE_ALIAS_CRYPTO("xts(aes)");
MODULE_ALIAS_CRYPTO("xctr(aes)");
#endif
MODULE_ALIAS_CRYPTO("cts(cbc(aes))");
MODULE_ALIAS_CRYPTO("essiv(cbc(aes),sha256)");
@@ -89,7 +90,10 @@ asmlinkage void aes_cbc_cts_decrypt(u8 out[], u8 const in[], u32 const rk[],
int rounds, int bytes, u8 const iv[]);
asmlinkage void aes_ctr_encrypt(u8 out[], u8 const in[], u32 const rk[],
int rounds, int bytes, u8 ctr[], u8 finalbuf[]);
int rounds, int bytes, u8 ctr[]);
asmlinkage void aes_xctr_encrypt(u8 out[], u8 const in[], u32 const rk[],
int rounds, int bytes, u8 ctr[], int byte_ctr);
asmlinkage void aes_xts_encrypt(u8 out[], u8 const in[], u32 const rk1[],
int rounds, int bytes, u32 const rk2[], u8 iv[],
@@ -444,6 +448,52 @@ static int __maybe_unused essiv_cbc_decrypt(struct skcipher_request *req)
return err ?: cbc_decrypt_walk(req, &walk);
}
static int __maybe_unused xctr_encrypt(struct skcipher_request *req)
{
struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
struct crypto_aes_ctx *ctx = crypto_skcipher_ctx(tfm);
int err, rounds = 6 + ctx->key_length / 4;
struct skcipher_walk walk;
unsigned int byte_ctr = 0;
err = skcipher_walk_virt(&walk, req, false);
while (walk.nbytes > 0) {
const u8 *src = walk.src.virt.addr;
unsigned int nbytes = walk.nbytes;
u8 *dst = walk.dst.virt.addr;
u8 buf[AES_BLOCK_SIZE];
/*
* If given less than 16 bytes, we must copy the partial block
* into a temporary buffer of 16 bytes to avoid out of bounds
* reads and writes. Furthermore, this code is somewhat unusual
* in that it expects the end of the data to be at the end of
* the temporary buffer, rather than the start of the data at
* the start of the temporary buffer.
*/
if (unlikely(nbytes < AES_BLOCK_SIZE))
src = dst = memcpy(buf + sizeof(buf) - nbytes,
src, nbytes);
else if (nbytes < walk.total)
nbytes &= ~(AES_BLOCK_SIZE - 1);
kernel_neon_begin();
aes_xctr_encrypt(dst, src, ctx->key_enc, rounds, nbytes,
walk.iv, byte_ctr);
kernel_neon_end();
if (unlikely(nbytes < AES_BLOCK_SIZE))
memcpy(walk.dst.virt.addr,
buf + sizeof(buf) - nbytes, nbytes);
byte_ctr += nbytes;
err = skcipher_walk_done(&walk, walk.nbytes - nbytes);
}
return err;
}
static int __maybe_unused ctr_encrypt(struct skcipher_request *req)
{
struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
@@ -458,26 +508,29 @@ static int __maybe_unused ctr_encrypt(struct skcipher_request *req)
unsigned int nbytes = walk.nbytes;
u8 *dst = walk.dst.virt.addr;
u8 buf[AES_BLOCK_SIZE];
unsigned int tail;
/*
* If given less than 16 bytes, we must copy the partial block
* into a temporary buffer of 16 bytes to avoid out of bounds
* reads and writes. Furthermore, this code is somewhat unusual
* in that it expects the end of the data to be at the end of
* the temporary buffer, rather than the start of the data at
* the start of the temporary buffer.
*/
if (unlikely(nbytes < AES_BLOCK_SIZE))
src = memcpy(buf, src, nbytes);
src = dst = memcpy(buf + sizeof(buf) - nbytes,
src, nbytes);
else if (nbytes < walk.total)
nbytes &= ~(AES_BLOCK_SIZE - 1);
kernel_neon_begin();
aes_ctr_encrypt(dst, src, ctx->key_enc, rounds, nbytes,
walk.iv, buf);
walk.iv);
kernel_neon_end();
tail = nbytes % (STRIDE * AES_BLOCK_SIZE);
if (tail > 0 && tail < AES_BLOCK_SIZE)
/*
* The final partial block could not be returned using
* an overlapping store, so it was passed via buf[]
* instead.
*/
memcpy(dst + nbytes - tail, buf, tail);
if (unlikely(nbytes < AES_BLOCK_SIZE))
memcpy(walk.dst.virt.addr,
buf + sizeof(buf) - nbytes, nbytes);
err = skcipher_walk_done(&walk, walk.nbytes - nbytes);
}
@@ -676,6 +729,22 @@ static struct skcipher_alg aes_algs[] = { {
.setkey = skcipher_aes_setkey,
.encrypt = ctr_encrypt,
.decrypt = ctr_encrypt,
}, {
.base = {
.cra_name = "xctr(aes)",
.cra_driver_name = "xctr-aes-" MODE,
.cra_priority = PRIO,
.cra_blocksize = 1,
.cra_ctxsize = sizeof(struct crypto_aes_ctx),
.cra_module = THIS_MODULE,
},
.min_keysize = AES_MIN_KEY_SIZE,
.max_keysize = AES_MAX_KEY_SIZE,
.ivsize = AES_BLOCK_SIZE,
.chunksize = AES_BLOCK_SIZE,
.setkey = skcipher_aes_setkey,
.encrypt = xctr_encrypt,
.decrypt = xctr_encrypt,
}, {
.base = {
.cra_name = "xts(aes)",

View File

@@ -318,127 +318,211 @@ AES_FUNC_END(aes_cbc_cts_decrypt)
.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
.previous
/*
* aes_ctr_encrypt(u8 out[], u8 const in[], u8 const rk[], int rounds,
* int bytes, u8 ctr[], u8 finalbuf[])
* This macro generates the code for CTR and XCTR mode.
*/
.macro ctr_encrypt xctr
// Arguments
OUT .req x0
IN .req x1
KEY .req x2
ROUNDS_W .req w3
BYTES_W .req w4
IV .req x5
BYTE_CTR_W .req w6 // XCTR only
// Intermediate values
CTR_W .req w11 // XCTR only
CTR .req x11 // XCTR only
IV_PART .req x12
BLOCKS .req x13
BLOCKS_W .req w13
AES_FUNC_START(aes_ctr_encrypt)
stp x29, x30, [sp, #-16]!
mov x29, sp
enc_prepare w3, x2, x12
ld1 {vctr.16b}, [x5]
enc_prepare ROUNDS_W, KEY, IV_PART
ld1 {vctr.16b}, [IV]
umov x12, vctr.d[1] /* keep swabbed ctr in reg */
rev x12, x12
/*
* Keep 64 bits of the IV in a register. For CTR mode this lets us
* easily increment the IV. For XCTR mode this lets us efficiently XOR
* the 64-bit counter with the IV.
*/
.if \xctr
umov IV_PART, vctr.d[0]
lsr CTR_W, BYTE_CTR_W, #4
.else
umov IV_PART, vctr.d[1]
rev IV_PART, IV_PART
.endif
.LctrloopNx:
add w7, w4, #15
sub w4, w4, #MAX_STRIDE << 4
lsr w7, w7, #4
.LctrloopNx\xctr:
add BLOCKS_W, BYTES_W, #15
sub BYTES_W, BYTES_W, #MAX_STRIDE << 4
lsr BLOCKS_W, BLOCKS_W, #4
mov w8, #MAX_STRIDE
cmp w7, w8
csel w7, w7, w8, lt
adds x12, x12, x7
cmp BLOCKS_W, w8
csel BLOCKS_W, BLOCKS_W, w8, lt
/*
* Set up the counter values in v0-v{MAX_STRIDE-1}.
*
* If we are encrypting less than MAX_STRIDE blocks, the tail block
* handling code expects the last keystream block to be in
* v{MAX_STRIDE-1}. For example: if encrypting two blocks with
* MAX_STRIDE=5, then v3 and v4 should have the next two counter blocks.
*/
.if \xctr
add CTR, CTR, BLOCKS
.else
adds IV_PART, IV_PART, BLOCKS
.endif
mov v0.16b, vctr.16b
mov v1.16b, vctr.16b
mov v2.16b, vctr.16b
mov v3.16b, vctr.16b
ST5( mov v4.16b, vctr.16b )
bcs 0f
.if \xctr
sub x6, CTR, #MAX_STRIDE - 1
sub x7, CTR, #MAX_STRIDE - 2
sub x8, CTR, #MAX_STRIDE - 3
sub x9, CTR, #MAX_STRIDE - 4
ST5( sub x10, CTR, #MAX_STRIDE - 5 )
eor x6, x6, IV_PART
eor x7, x7, IV_PART
eor x8, x8, IV_PART
eor x9, x9, IV_PART
ST5( eor x10, x10, IV_PART )
mov v0.d[0], x6
mov v1.d[0], x7
mov v2.d[0], x8
mov v3.d[0], x9
ST5( mov v4.d[0], x10 )
.else
bcs 0f
.subsection 1
/*
* This subsection handles carries.
*
* Conditional branching here is allowed with respect to time
* invariance since the branches are dependent on the IV instead
* of the plaintext or key. This code is rarely executed in
* practice anyway.
*/
.subsection 1
/* apply carry to outgoing counter */
0: umov x8, vctr.d[0]
rev x8, x8
add x8, x8, #1
rev x8, x8
ins vctr.d[0], x8
/* Apply carry to outgoing counter. */
0: umov x8, vctr.d[0]
rev x8, x8
add x8, x8, #1
rev x8, x8
ins vctr.d[0], x8
/* apply carry to N counter blocks for N := x12 */
cbz x12, 2f
adr x16, 1f
sub x16, x16, x12, lsl #3
br x16
hint 34 // bti c
mov v0.d[0], vctr.d[0]
hint 34 // bti c
mov v1.d[0], vctr.d[0]
hint 34 // bti c
mov v2.d[0], vctr.d[0]
hint 34 // bti c
mov v3.d[0], vctr.d[0]
ST5( hint 34 )
ST5( mov v4.d[0], vctr.d[0] )
1: b 2f
.previous
/*
* Apply carry to counter blocks if needed.
*
* Since the carry flag was set, we know 0 <= IV_PART <
* MAX_STRIDE. Using the value of IV_PART we can determine how
* many counter blocks need to be updated.
*/
cbz IV_PART, 2f
adr x16, 1f
sub x16, x16, IV_PART, lsl #3
br x16
bti c
mov v0.d[0], vctr.d[0]
bti c
mov v1.d[0], vctr.d[0]
bti c
mov v2.d[0], vctr.d[0]
bti c
mov v3.d[0], vctr.d[0]
ST5( bti c )
ST5( mov v4.d[0], vctr.d[0] )
1: b 2f
.previous
2: rev x7, x12
ins vctr.d[1], x7
sub x7, x12, #MAX_STRIDE - 1
sub x8, x12, #MAX_STRIDE - 2
sub x9, x12, #MAX_STRIDE - 3
rev x7, x7
rev x8, x8
mov v1.d[1], x7
rev x9, x9
ST5( sub x10, x12, #MAX_STRIDE - 4 )
mov v2.d[1], x8
ST5( rev x10, x10 )
mov v3.d[1], x9
ST5( mov v4.d[1], x10 )
tbnz w4, #31, .Lctrtail
ld1 {v5.16b-v7.16b}, [x1], #48
2: rev x7, IV_PART
ins vctr.d[1], x7
sub x7, IV_PART, #MAX_STRIDE - 1
sub x8, IV_PART, #MAX_STRIDE - 2
sub x9, IV_PART, #MAX_STRIDE - 3
rev x7, x7
rev x8, x8
mov v1.d[1], x7
rev x9, x9
ST5( sub x10, IV_PART, #MAX_STRIDE - 4 )
mov v2.d[1], x8
ST5( rev x10, x10 )
mov v3.d[1], x9
ST5( mov v4.d[1], x10 )
.endif
/*
* If there are at least MAX_STRIDE blocks left, XOR the data with
* keystream and store. Otherwise jump to tail handling.
*/
tbnz BYTES_W, #31, .Lctrtail\xctr
ld1 {v5.16b-v7.16b}, [IN], #48
ST4( bl aes_encrypt_block4x )
ST5( bl aes_encrypt_block5x )
eor v0.16b, v5.16b, v0.16b
ST4( ld1 {v5.16b}, [x1], #16 )
ST4( ld1 {v5.16b}, [IN], #16 )
eor v1.16b, v6.16b, v1.16b
ST5( ld1 {v5.16b-v6.16b}, [x1], #32 )
ST5( ld1 {v5.16b-v6.16b}, [IN], #32 )
eor v2.16b, v7.16b, v2.16b
eor v3.16b, v5.16b, v3.16b
ST5( eor v4.16b, v6.16b, v4.16b )
st1 {v0.16b-v3.16b}, [x0], #64
ST5( st1 {v4.16b}, [x0], #16 )
cbz w4, .Lctrout
b .LctrloopNx
st1 {v0.16b-v3.16b}, [OUT], #64
ST5( st1 {v4.16b}, [OUT], #16 )
cbz BYTES_W, .Lctrout\xctr
b .LctrloopNx\xctr
.Lctrout:
st1 {vctr.16b}, [x5] /* return next CTR value */
.Lctrout\xctr:
.if !\xctr
st1 {vctr.16b}, [IV] /* return next CTR value */
.endif
ldp x29, x30, [sp], #16
ret
.Lctrtail:
/* XOR up to MAX_STRIDE * 16 - 1 bytes of in/output with v0 ... v3/v4 */
.Lctrtail\xctr:
/*
* Handle up to MAX_STRIDE * 16 - 1 bytes of plaintext
*
* This code expects the last keystream block to be in v{MAX_STRIDE-1}.
* For example: if encrypting two blocks with MAX_STRIDE=5, then v3 and
* v4 should have the next two counter blocks.
*
* This allows us to store the ciphertext by writing to overlapping
* regions of memory. Any invalid ciphertext blocks get overwritten by
* correctly computed blocks. This approach greatly simplifies the
* logic for storing the ciphertext.
*/
mov x16, #16
ands x13, x4, #0xf
csel x13, x13, x16, ne
ands w7, BYTES_W, #0xf
csel x13, x7, x16, ne
ST5( cmp w4, #64 - (MAX_STRIDE << 4) )
ST5( cmp BYTES_W, #64 - (MAX_STRIDE << 4))
ST5( csel x14, x16, xzr, gt )
cmp w4, #48 - (MAX_STRIDE << 4)
cmp BYTES_W, #48 - (MAX_STRIDE << 4)
csel x15, x16, xzr, gt
cmp w4, #32 - (MAX_STRIDE << 4)
cmp BYTES_W, #32 - (MAX_STRIDE << 4)
csel x16, x16, xzr, gt
cmp w4, #16 - (MAX_STRIDE << 4)
ble .Lctrtail1x
cmp BYTES_W, #16 - (MAX_STRIDE << 4)
adr_l x12, .Lcts_permute_table
add x12, x12, x13
adr_l x9, .Lcts_permute_table
add x9, x9, x13
ble .Lctrtail1x\xctr
ST5( ld1 {v5.16b}, [x1], x14 )
ld1 {v6.16b}, [x1], x15
ld1 {v7.16b}, [x1], x16
ST5( ld1 {v5.16b}, [IN], x14 )
ld1 {v6.16b}, [IN], x15
ld1 {v7.16b}, [IN], x16
ST4( bl aes_encrypt_block4x )
ST5( bl aes_encrypt_block5x )
ld1 {v8.16b}, [x1], x13
ld1 {v9.16b}, [x1]
ld1 {v10.16b}, [x12]
ld1 {v8.16b}, [IN], x13
ld1 {v9.16b}, [IN]
ld1 {v10.16b}, [x9]
ST4( eor v6.16b, v6.16b, v0.16b )
ST4( eor v7.16b, v7.16b, v1.16b )
@@ -453,24 +537,91 @@ ST5( eor v7.16b, v7.16b, v2.16b )
ST5( eor v8.16b, v8.16b, v3.16b )
ST5( eor v9.16b, v9.16b, v4.16b )
ST5( st1 {v5.16b}, [x0], x14 )
st1 {v6.16b}, [x0], x15
st1 {v7.16b}, [x0], x16
add x13, x13, x0
ST5( st1 {v5.16b}, [OUT], x14 )
st1 {v6.16b}, [OUT], x15
st1 {v7.16b}, [OUT], x16
add x13, x13, OUT
st1 {v9.16b}, [x13] // overlapping stores
st1 {v8.16b}, [x0]
b .Lctrout
st1 {v8.16b}, [OUT]
b .Lctrout\xctr
.Lctrtail1x:
csel x0, x0, x6, eq // use finalbuf if less than a full block
ld1 {v5.16b}, [x1]
.Lctrtail1x\xctr:
/*
* Handle <= 16 bytes of plaintext
*
* This code always reads and writes 16 bytes. To avoid out of bounds
* accesses, XCTR and CTR modes must use a temporary buffer when
* encrypting/decrypting less than 16 bytes.
*
* This code is unusual in that it loads the input and stores the output
* relative to the end of the buffers rather than relative to the start.
* This causes unusual behaviour when encrypting/decrypting less than 16
* bytes; the end of the data is expected to be at the end of the
* temporary buffer rather than the start of the data being at the start
* of the temporary buffer.
*/
sub x8, x7, #16
csel x7, x7, x8, eq
add IN, IN, x7
add OUT, OUT, x7
ld1 {v5.16b}, [IN]
ld1 {v6.16b}, [OUT]
ST5( mov v3.16b, v4.16b )
encrypt_block v3, w3, x2, x8, w7
encrypt_block v3, ROUNDS_W, KEY, x8, w7
ld1 {v10.16b-v11.16b}, [x9]
tbl v3.16b, {v3.16b}, v10.16b
sshr v11.16b, v11.16b, #7
eor v5.16b, v5.16b, v3.16b
st1 {v5.16b}, [x0]
b .Lctrout
bif v5.16b, v6.16b, v11.16b
st1 {v5.16b}, [OUT]
b .Lctrout\xctr
// Arguments
.unreq OUT
.unreq IN
.unreq KEY
.unreq ROUNDS_W
.unreq BYTES_W
.unreq IV
.unreq BYTE_CTR_W // XCTR only
// Intermediate values
.unreq CTR_W // XCTR only
.unreq CTR // XCTR only
.unreq IV_PART
.unreq BLOCKS
.unreq BLOCKS_W
.endm
/*
* aes_ctr_encrypt(u8 out[], u8 const in[], u8 const rk[], int rounds,
* int bytes, u8 ctr[])
*
* The input and output buffers must always be at least 16 bytes even if
* encrypting/decrypting less than 16 bytes. Otherwise out of bounds
* accesses will occur. The data to be encrypted/decrypted is expected
* to be at the end of this 16-byte temporary buffer rather than the
* start.
*/
AES_FUNC_START(aes_ctr_encrypt)
ctr_encrypt 0
AES_FUNC_END(aes_ctr_encrypt)
/*
* aes_xctr_encrypt(u8 out[], u8 const in[], u8 const rk[], int rounds,
* int bytes, u8 const iv[], int byte_ctr)
*
* The input and output buffers must always be at least 16 bytes even if
* encrypting/decrypting less than 16 bytes. Otherwise out of bounds
* accesses will occur. The data to be encrypted/decrypted is expected
* to be at the end of this 16-byte temporary buffer rather than the
* start.
*/
AES_FUNC_START(aes_xctr_encrypt)
ctr_encrypt 1
AES_FUNC_END(aes_xctr_encrypt)
/*
* aes_xts_encrypt(u8 out[], u8 const in[], u8 const rk1[], int rounds,

View File

@@ -0,0 +1,361 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Implementation of POLYVAL using ARMv8 Crypto Extensions.
*
* Copyright 2021 Google LLC
*/
/*
* This is an efficient implementation of POLYVAL using ARMv8 Crypto Extensions
* It works on 8 blocks at a time, by precomputing the first 8 keys powers h^8,
* ..., h^1 in the POLYVAL finite field. This precomputation allows us to split
* finite field multiplication into two steps.
*
* In the first step, we consider h^i, m_i as normal polynomials of degree less
* than 128. We then compute p(x) = h^8m_0 + ... + h^1m_7 where multiplication
* is simply polynomial multiplication.
*
* In the second step, we compute the reduction of p(x) modulo the finite field
* modulus g(x) = x^128 + x^127 + x^126 + x^121 + 1.
*
* This two step process is equivalent to computing h^8m_0 + ... + h^1m_7 where
* multiplication is finite field multiplication. The advantage is that the
* two-step process only requires 1 finite field reduction for every 8
* polynomial multiplications. Further parallelism is gained by interleaving the
* multiplications and polynomial reductions.
*/
#include <linux/linkage.h>
#define STRIDE_BLOCKS 8
KEY_POWERS .req x0
MSG .req x1
BLOCKS_LEFT .req x2
ACCUMULATOR .req x3
KEY_START .req x10
EXTRA_BYTES .req x11
TMP .req x13
M0 .req v0
M1 .req v1
M2 .req v2
M3 .req v3
M4 .req v4
M5 .req v5
M6 .req v6
M7 .req v7
KEY8 .req v8
KEY7 .req v9
KEY6 .req v10
KEY5 .req v11
KEY4 .req v12
KEY3 .req v13
KEY2 .req v14
KEY1 .req v15
PL .req v16
PH .req v17
TMP_V .req v18
LO .req v20
MI .req v21
HI .req v22
SUM .req v23
GSTAR .req v24
.text
.arch armv8-a+crypto
.align 4
.Lgstar:
.quad 0xc200000000000000, 0xc200000000000000
/*
* Computes the product of two 128-bit polynomials in X and Y and XORs the
* components of the 256-bit product into LO, MI, HI.
*
* Given:
* X = [X_1 : X_0]
* Y = [Y_1 : Y_0]
*
* We compute:
* LO += X_0 * Y_0
* MI += (X_0 + X_1) * (Y_0 + Y_1)
* HI += X_1 * Y_1
*
* Later, the 256-bit result can be extracted as:
* [HI_1 : HI_0 + HI_1 + MI_1 + LO_1 : LO_1 + HI_0 + MI_0 + LO_0 : LO_0]
* This step is done when computing the polynomial reduction for efficiency
* reasons.
*
* Karatsuba multiplication is used instead of Schoolbook multiplication because
* it was found to be slightly faster on ARM64 CPUs.
*
*/
.macro karatsuba1 X Y
X .req \X
Y .req \Y
ext v25.16b, X.16b, X.16b, #8
ext v26.16b, Y.16b, Y.16b, #8
eor v25.16b, v25.16b, X.16b
eor v26.16b, v26.16b, Y.16b
pmull2 v28.1q, X.2d, Y.2d
pmull v29.1q, X.1d, Y.1d
pmull v27.1q, v25.1d, v26.1d
eor HI.16b, HI.16b, v28.16b
eor LO.16b, LO.16b, v29.16b
eor MI.16b, MI.16b, v27.16b
.unreq X
.unreq Y
.endm
/*
* Same as karatsuba1, except overwrites HI, LO, MI rather than XORing into
* them.
*/
.macro karatsuba1_store X Y
X .req \X
Y .req \Y
ext v25.16b, X.16b, X.16b, #8
ext v26.16b, Y.16b, Y.16b, #8
eor v25.16b, v25.16b, X.16b
eor v26.16b, v26.16b, Y.16b
pmull2 HI.1q, X.2d, Y.2d
pmull LO.1q, X.1d, Y.1d
pmull MI.1q, v25.1d, v26.1d
.unreq X
.unreq Y
.endm
/*
* Computes the 256-bit polynomial represented by LO, HI, MI. Stores
* the result in PL, PH.
* [PH : PL] =
* [HI_1 : HI_1 + HI_0 + MI_1 + LO_1 : HI_0 + MI_0 + LO_1 + LO_0 : LO_0]
*/
.macro karatsuba2
// v4 = [HI_1 + MI_1 : HI_0 + MI_0]
eor v4.16b, HI.16b, MI.16b
// v4 = [HI_1 + MI_1 + LO_1 : HI_0 + MI_0 + LO_0]
eor v4.16b, v4.16b, LO.16b
// v5 = [HI_0 : LO_1]
ext v5.16b, LO.16b, HI.16b, #8
// v4 = [HI_1 + HI_0 + MI_1 + LO_1 : HI_0 + MI_0 + LO_1 + LO_0]
eor v4.16b, v4.16b, v5.16b
// HI = [HI_0 : HI_1]
ext HI.16b, HI.16b, HI.16b, #8
// LO = [LO_0 : LO_1]
ext LO.16b, LO.16b, LO.16b, #8
// PH = [HI_1 : HI_1 + HI_0 + MI_1 + LO_1]
ext PH.16b, v4.16b, HI.16b, #8
// PL = [HI_0 + MI_0 + LO_1 + LO_0 : LO_0]
ext PL.16b, LO.16b, v4.16b, #8
.endm
/*
* Computes the 128-bit reduction of PH : PL. Stores the result in dest.
*
* This macro computes p(x) mod g(x) where p(x) is in montgomery form and g(x) =
* x^128 + x^127 + x^126 + x^121 + 1.
*
* We have a 256-bit polynomial PH : PL = P_3 : P_2 : P_1 : P_0 that is the
* product of two 128-bit polynomials in Montgomery form. We need to reduce it
* mod g(x). Also, since polynomials in Montgomery form have an "extra" factor
* of x^128, this product has two extra factors of x^128. To get it back into
* Montgomery form, we need to remove one of these factors by dividing by x^128.
*
* To accomplish both of these goals, we add multiples of g(x) that cancel out
* the low 128 bits P_1 : P_0, leaving just the high 128 bits. Since the low
* bits are zero, the polynomial division by x^128 can be done by right
* shifting.
*
* Since the only nonzero term in the low 64 bits of g(x) is the constant term,
* the multiple of g(x) needed to cancel out P_0 is P_0 * g(x). The CPU can
* only do 64x64 bit multiplications, so split P_0 * g(x) into x^128 * P_0 +
* x^64 * g*(x) * P_0 + P_0, where g*(x) is bits 64-127 of g(x). Adding this to
* the original polynomial gives P_3 : P_2 + P_0 + T_1 : P_1 + T_0 : 0, where T
* = T_1 : T_0 = g*(x) * P_0. Thus, bits 0-63 got "folded" into bits 64-191.
*
* Repeating this same process on the next 64 bits "folds" bits 64-127 into bits
* 128-255, giving the answer in bits 128-255. This time, we need to cancel P_1
* + T_0 in bits 64-127. The multiple of g(x) required is (P_1 + T_0) * g(x) *
* x^64. Adding this to our previous computation gives P_3 + P_1 + T_0 + V_1 :
* P_2 + P_0 + T_1 + V_0 : 0 : 0, where V = V_1 : V_0 = g*(x) * (P_1 + T_0).
*
* So our final computation is:
* T = T_1 : T_0 = g*(x) * P_0
* V = V_1 : V_0 = g*(x) * (P_1 + T_0)
* p(x) / x^{128} mod g(x) = P_3 + P_1 + T_0 + V_1 : P_2 + P_0 + T_1 + V_0
*
* The implementation below saves a XOR instruction by computing P_1 + T_0 : P_0
* + T_1 and XORing into dest, rather than separately XORing P_1 : P_0 and T_0 :
* T_1 into dest. This allows us to reuse P_1 + T_0 when computing V.
*/
.macro montgomery_reduction dest
DEST .req \dest
// TMP_V = T_1 : T_0 = P_0 * g*(x)
pmull TMP_V.1q, PL.1d, GSTAR.1d
// TMP_V = T_0 : T_1
ext TMP_V.16b, TMP_V.16b, TMP_V.16b, #8
// TMP_V = P_1 + T_0 : P_0 + T_1
eor TMP_V.16b, PL.16b, TMP_V.16b
// PH = P_3 + P_1 + T_0 : P_2 + P_0 + T_1
eor PH.16b, PH.16b, TMP_V.16b
// TMP_V = V_1 : V_0 = (P_1 + T_0) * g*(x)
pmull2 TMP_V.1q, TMP_V.2d, GSTAR.2d
eor DEST.16b, PH.16b, TMP_V.16b
.unreq DEST
.endm
/*
* Compute Polyval on 8 blocks.
*
* If reduce is set, also computes the montgomery reduction of the
* previous full_stride call and XORs with the first message block.
* (m_0 + REDUCE(PL, PH))h^8 + ... + m_7h^1.
* I.e., the first multiplication uses m_0 + REDUCE(PL, PH) instead of m_0.
*
* Sets PL, PH.
*/
.macro full_stride reduce
eor LO.16b, LO.16b, LO.16b
eor MI.16b, MI.16b, MI.16b
eor HI.16b, HI.16b, HI.16b
ld1 {M0.16b, M1.16b, M2.16b, M3.16b}, [MSG], #64
ld1 {M4.16b, M5.16b, M6.16b, M7.16b}, [MSG], #64
karatsuba1 M7 KEY1
.if \reduce
pmull TMP_V.1q, PL.1d, GSTAR.1d
.endif
karatsuba1 M6 KEY2
.if \reduce
ext TMP_V.16b, TMP_V.16b, TMP_V.16b, #8
.endif
karatsuba1 M5 KEY3
.if \reduce
eor TMP_V.16b, PL.16b, TMP_V.16b
.endif
karatsuba1 M4 KEY4
.if \reduce
eor PH.16b, PH.16b, TMP_V.16b
.endif
karatsuba1 M3 KEY5
.if \reduce
pmull2 TMP_V.1q, TMP_V.2d, GSTAR.2d
.endif
karatsuba1 M2 KEY6
.if \reduce
eor SUM.16b, PH.16b, TMP_V.16b
.endif
karatsuba1 M1 KEY7
eor M0.16b, M0.16b, SUM.16b
karatsuba1 M0 KEY8
karatsuba2
.endm
/*
* Handle any extra blocks after full_stride loop.
*/
.macro partial_stride
add KEY_POWERS, KEY_START, #(STRIDE_BLOCKS << 4)
sub KEY_POWERS, KEY_POWERS, BLOCKS_LEFT, lsl #4
ld1 {KEY1.16b}, [KEY_POWERS], #16
ld1 {TMP_V.16b}, [MSG], #16
eor SUM.16b, SUM.16b, TMP_V.16b
karatsuba1_store KEY1 SUM
sub BLOCKS_LEFT, BLOCKS_LEFT, #1
tst BLOCKS_LEFT, #4
beq .Lpartial4BlocksDone
ld1 {M0.16b, M1.16b, M2.16b, M3.16b}, [MSG], #64
ld1 {KEY8.16b, KEY7.16b, KEY6.16b, KEY5.16b}, [KEY_POWERS], #64
karatsuba1 M0 KEY8
karatsuba1 M1 KEY7
karatsuba1 M2 KEY6
karatsuba1 M3 KEY5
.Lpartial4BlocksDone:
tst BLOCKS_LEFT, #2
beq .Lpartial2BlocksDone
ld1 {M0.16b, M1.16b}, [MSG], #32
ld1 {KEY8.16b, KEY7.16b}, [KEY_POWERS], #32
karatsuba1 M0 KEY8
karatsuba1 M1 KEY7
.Lpartial2BlocksDone:
tst BLOCKS_LEFT, #1
beq .LpartialDone
ld1 {M0.16b}, [MSG], #16
ld1 {KEY8.16b}, [KEY_POWERS], #16
karatsuba1 M0 KEY8
.LpartialDone:
karatsuba2
montgomery_reduction SUM
.endm
/*
* Perform montgomery multiplication in GF(2^128) and store result in op1.
*
* Computes op1*op2*x^{-128} mod x^128 + x^127 + x^126 + x^121 + 1
* If op1, op2 are in montgomery form, this computes the montgomery
* form of op1*op2.
*
* void pmull_polyval_mul(u8 *op1, const u8 *op2);
*/
SYM_FUNC_START(pmull_polyval_mul)
adr TMP, .Lgstar
ld1 {GSTAR.2d}, [TMP]
ld1 {v0.16b}, [x0]
ld1 {v1.16b}, [x1]
karatsuba1_store v0 v1
karatsuba2
montgomery_reduction SUM
st1 {SUM.16b}, [x0]
ret
SYM_FUNC_END(pmull_polyval_mul)
/*
* Perform polynomial evaluation as specified by POLYVAL. This computes:
* h^n * accumulator + h^n * m_0 + ... + h^1 * m_{n-1}
* where n=nblocks, h is the hash key, and m_i are the message blocks.
*
* x0 - pointer to precomputed key powers h^8 ... h^1
* x1 - pointer to message blocks
* x2 - number of blocks to hash
* x3 - pointer to accumulator
*
* void pmull_polyval_update(const struct polyval_ctx *ctx, const u8 *in,
* size_t nblocks, u8 *accumulator);
*/
SYM_FUNC_START(pmull_polyval_update)
adr TMP, .Lgstar
mov KEY_START, KEY_POWERS
ld1 {GSTAR.2d}, [TMP]
ld1 {SUM.16b}, [ACCUMULATOR]
subs BLOCKS_LEFT, BLOCKS_LEFT, #STRIDE_BLOCKS
blt .LstrideLoopExit
ld1 {KEY8.16b, KEY7.16b, KEY6.16b, KEY5.16b}, [KEY_POWERS], #64
ld1 {KEY4.16b, KEY3.16b, KEY2.16b, KEY1.16b}, [KEY_POWERS], #64
full_stride 0
subs BLOCKS_LEFT, BLOCKS_LEFT, #STRIDE_BLOCKS
blt .LstrideLoopExitReduce
.LstrideLoop:
full_stride 1
subs BLOCKS_LEFT, BLOCKS_LEFT, #STRIDE_BLOCKS
bge .LstrideLoop
.LstrideLoopExitReduce:
montgomery_reduction SUM
.LstrideLoopExit:
adds BLOCKS_LEFT, BLOCKS_LEFT, #STRIDE_BLOCKS
beq .LskipPartial
partial_stride
.LskipPartial:
st1 {SUM.16b}, [ACCUMULATOR]
ret
SYM_FUNC_END(pmull_polyval_update)

View File

@@ -0,0 +1,191 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Glue code for POLYVAL using ARMv8 Crypto Extensions
*
* Copyright (c) 2007 Nokia Siemens Networks - Mikko Herranen <mh1@iki.fi>
* Copyright (c) 2009 Intel Corp.
* Author: Huang Ying <ying.huang@intel.com>
* Copyright 2021 Google LLC
*/
/*
* Glue code based on ghash-clmulni-intel_glue.c.
*
* This implementation of POLYVAL uses montgomery multiplication accelerated by
* ARMv8 Crypto Extensions instructions to implement the finite field operations.
*/
#include <crypto/algapi.h>
#include <crypto/internal/hash.h>
#include <crypto/internal/simd.h>
#include <crypto/polyval.h>
#include <linux/crypto.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/cpufeature.h>
#include <asm/neon.h>
#include <asm/simd.h>
#define NUM_KEY_POWERS 8
struct polyval_tfm_ctx {
/*
* These powers must be in the order h^8, ..., h^1.
*/
u8 key_powers[NUM_KEY_POWERS][POLYVAL_BLOCK_SIZE];
};
struct polyval_desc_ctx {
u8 buffer[POLYVAL_BLOCK_SIZE];
u32 bytes;
};
asmlinkage void pmull_polyval_update(const struct polyval_tfm_ctx *keys,
const u8 *in, size_t nblocks, u8 *accumulator);
asmlinkage void pmull_polyval_mul(u8 *op1, const u8 *op2);
static void internal_polyval_update(const struct polyval_tfm_ctx *keys,
const u8 *in, size_t nblocks, u8 *accumulator)
{
if (likely(crypto_simd_usable())) {
kernel_neon_begin();
pmull_polyval_update(keys, in, nblocks, accumulator);
kernel_neon_end();
} else {
polyval_update_non4k(keys->key_powers[NUM_KEY_POWERS-1], in,
nblocks, accumulator);
}
}
static void internal_polyval_mul(u8 *op1, const u8 *op2)
{
if (likely(crypto_simd_usable())) {
kernel_neon_begin();
pmull_polyval_mul(op1, op2);
kernel_neon_end();
} else {
polyval_mul_non4k(op1, op2);
}
}
static int polyval_arm64_setkey(struct crypto_shash *tfm,
const u8 *key, unsigned int keylen)
{
struct polyval_tfm_ctx *tctx = crypto_shash_ctx(tfm);
int i;
if (keylen != POLYVAL_BLOCK_SIZE)
return -EINVAL;
memcpy(tctx->key_powers[NUM_KEY_POWERS-1], key, POLYVAL_BLOCK_SIZE);
for (i = NUM_KEY_POWERS-2; i >= 0; i--) {
memcpy(tctx->key_powers[i], key, POLYVAL_BLOCK_SIZE);
internal_polyval_mul(tctx->key_powers[i],
tctx->key_powers[i+1]);
}
return 0;
}
static int polyval_arm64_init(struct shash_desc *desc)
{
struct polyval_desc_ctx *dctx = shash_desc_ctx(desc);
memset(dctx, 0, sizeof(*dctx));
return 0;
}
static int polyval_arm64_update(struct shash_desc *desc,
const u8 *src, unsigned int srclen)
{
struct polyval_desc_ctx *dctx = shash_desc_ctx(desc);
const struct polyval_tfm_ctx *tctx = crypto_shash_ctx(desc->tfm);
u8 *pos;
unsigned int nblocks;
unsigned int n;
if (dctx->bytes) {
n = min(srclen, dctx->bytes);
pos = dctx->buffer + POLYVAL_BLOCK_SIZE - dctx->bytes;
dctx->bytes -= n;
srclen -= n;
while (n--)
*pos++ ^= *src++;
if (!dctx->bytes)
internal_polyval_mul(dctx->buffer,
tctx->key_powers[NUM_KEY_POWERS-1]);
}
while (srclen >= POLYVAL_BLOCK_SIZE) {
/* allow rescheduling every 4K bytes */
nblocks = min(srclen, 4096U) / POLYVAL_BLOCK_SIZE;
internal_polyval_update(tctx, src, nblocks, dctx->buffer);
srclen -= nblocks * POLYVAL_BLOCK_SIZE;
src += nblocks * POLYVAL_BLOCK_SIZE;
}
if (srclen) {
dctx->bytes = POLYVAL_BLOCK_SIZE - srclen;
pos = dctx->buffer;
while (srclen--)
*pos++ ^= *src++;
}
return 0;
}
static int polyval_arm64_final(struct shash_desc *desc, u8 *dst)
{
struct polyval_desc_ctx *dctx = shash_desc_ctx(desc);
const struct polyval_tfm_ctx *tctx = crypto_shash_ctx(desc->tfm);
if (dctx->bytes) {
internal_polyval_mul(dctx->buffer,
tctx->key_powers[NUM_KEY_POWERS-1]);
}
memcpy(dst, dctx->buffer, POLYVAL_BLOCK_SIZE);
return 0;
}
static struct shash_alg polyval_alg = {
.digestsize = POLYVAL_DIGEST_SIZE,
.init = polyval_arm64_init,
.update = polyval_arm64_update,
.final = polyval_arm64_final,
.setkey = polyval_arm64_setkey,
.descsize = sizeof(struct polyval_desc_ctx),
.base = {
.cra_name = "polyval",
.cra_driver_name = "polyval-ce",
.cra_priority = 200,
.cra_blocksize = POLYVAL_BLOCK_SIZE,
.cra_ctxsize = sizeof(struct polyval_tfm_ctx),
.cra_module = THIS_MODULE,
},
};
static int __init polyval_ce_mod_init(void)
{
return crypto_register_shash(&polyval_alg);
}
static void __exit polyval_ce_mod_exit(void)
{
crypto_unregister_shash(&polyval_alg);
}
module_cpu_feature_match(PMULL, polyval_ce_mod_init)
module_exit(polyval_ce_mod_exit);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("POLYVAL hash function accelerated by ARMv8 Crypto Extensions");
MODULE_ALIAS_CRYPTO("polyval");
MODULE_ALIAS_CRYPTO("polyval-ce");

View File

@@ -787,6 +787,16 @@ alternative_endif
.Lnoyield_\@:
.endm
/*
* Branch Target Identifier (BTI)
*/
.macro bti, targets
.equ .L__bti_targets_c, 34
.equ .L__bti_targets_j, 36
.equ .L__bti_targets_jc,38
hint #.L__bti_targets_\targets
.endm
/*
* This macro emits a program property note section identifying
* architecture features which require special handling, mainly for

View File

@@ -6,6 +6,7 @@
#define __ASM_CACHE_H
#include <asm/cputype.h>
#include <asm/mte-def.h>
#define CTR_L1IP_SHIFT 14
#define CTR_L1IP_MASK 3
@@ -49,15 +50,21 @@
*/
#define ARCH_DMA_MINALIGN (128)
#ifdef CONFIG_KASAN_SW_TAGS
#define ARCH_SLAB_MINALIGN (1ULL << KASAN_SHADOW_SCALE_SHIFT)
#elif defined(CONFIG_KASAN_HW_TAGS)
#define ARCH_SLAB_MINALIGN MTE_GRANULE_SIZE
#endif
#ifndef __ASSEMBLY__
#include <linux/bitops.h>
#include <linux/kasan-enabled.h>
#ifdef CONFIG_KASAN_SW_TAGS
#define ARCH_SLAB_MINALIGN (1ULL << KASAN_SHADOW_SCALE_SHIFT)
#elif defined(CONFIG_KASAN_HW_TAGS)
static inline unsigned int arch_slab_minalign(void)
{
return kasan_hw_tags_enabled() ? MTE_GRANULE_SIZE :
__alignof__(unsigned long long);
}
#define arch_slab_minalign() arch_slab_minalign()
#endif
#define ICACHEF_ALIASING 0
#define ICACHEF_VPIPT 1

View File

@@ -91,7 +91,7 @@ static inline u64 __raw_readq(const volatile void __iomem *addr)
}
/* IO barriers */
#define __iormb(v) \
#define __io_ar(v) \
({ \
unsigned long tmp; \
\
@@ -108,40 +108,15 @@ static inline u64 __raw_readq(const volatile void __iomem *addr)
: "memory"); \
})
#define __io_par(v) __iormb(v)
#define __iowmb() dma_wmb()
#define __io_bw() dma_wmb()
#define __io_br(v)
#define __io_aw(v)
/* arm64-specific, don't use in portable drivers */
#define __iormb(v) __io_ar(v)
#define __iowmb() __io_bw()
#define __iomb() dma_mb()
/*
* Relaxed I/O memory access primitives. These follow the Device memory
* ordering rules but do not guarantee any ordering relative to Normal memory
* accesses.
*/
#define readb_relaxed(c) ({ u8 __r = __raw_readb(c); __r; })
#define readw_relaxed(c) ({ u16 __r = le16_to_cpu((__force __le16)__raw_readw(c)); __r; })
#define readl_relaxed(c) ({ u32 __r = le32_to_cpu((__force __le32)__raw_readl(c)); __r; })
#define readq_relaxed(c) ({ u64 __r = le64_to_cpu((__force __le64)__raw_readq(c)); __r; })
#define writeb_relaxed(v,c) ((void)__raw_writeb((v),(c)))
#define writew_relaxed(v,c) ((void)__raw_writew((__force u16)cpu_to_le16(v),(c)))
#define writel_relaxed(v,c) ((void)__raw_writel((__force u32)cpu_to_le32(v),(c)))
#define writeq_relaxed(v,c) ((void)__raw_writeq((__force u64)cpu_to_le64(v),(c)))
/*
* I/O memory access primitives. Reads are ordered relative to any
* following Normal memory access. Writes are ordered relative to any prior
* Normal memory access.
*/
#define readb(c) ({ u8 __v = readb_relaxed(c); __iormb(__v); __v; })
#define readw(c) ({ u16 __v = readw_relaxed(c); __iormb(__v); __v; })
#define readl(c) ({ u32 __v = readl_relaxed(c); __iormb(__v); __v; })
#define readq(c) ({ u64 __v = readq_relaxed(c); __iormb(__v); __v; })
#define writeb(v,c) ({ __iowmb(); writeb_relaxed((v),(c)); })
#define writew(v,c) ({ __iowmb(); writew_relaxed((v),(c)); })
#define writel(v,c) ({ __iowmb(); writel_relaxed((v),(c)); })
#define writeq(v,c) ({ __iowmb(); writeq_relaxed((v),(c)); })
/*
* I/O port access primitives.
*/

View File

@@ -76,6 +76,7 @@ enum __kvm_host_smccc_func {
__KVM_HOST_SMCCC_FUNC___vgic_v3_save_vmcr_aprs,
__KVM_HOST_SMCCC_FUNC___vgic_v3_restore_vmcr_aprs,
__KVM_HOST_SMCCC_FUNC___pkvm_init_shadow,
__KVM_HOST_SMCCC_FUNC___pkvm_init_shadow_vcpu,
__KVM_HOST_SMCCC_FUNC___pkvm_teardown_shadow,
__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_load,
__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_put,

View File

@@ -1,17 +1,16 @@
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
#ifdef __ASSEMBLY__
#include <asm/assembler.h>
#endif
#define __ALIGN .align 2
#define __ALIGN_STR ".align 2"
#if defined(CONFIG_ARM64_BTI_KERNEL) && defined(__aarch64__)
/*
* Since current versions of gas reject the BTI instruction unless we
* set the architecture version to v8.5 we use the hint instruction
* instead.
*/
#define BTI_C hint 34 ;
#define BTI_C bti c ;
/*
* When using in-kernel BTI we need to ensure that PCS-conformant assembly

View File

@@ -6,6 +6,7 @@
#define __ASM_MTE_KASAN_H
#include <asm/compiler.h>
#include <asm/cputype.h>
#include <asm/mte-def.h>
#ifndef __ASSEMBLY__

View File

@@ -10,6 +10,7 @@
#include <asm/alternative.h>
#include <asm/cmpxchg.h>
#include <asm/stack_pointer.h>
#include <asm/sysreg.h>
static inline void set_my_cpu_offset(unsigned long off)
{

View File

@@ -98,10 +98,6 @@ cpu_enable_trap_ctr_access(const struct arm64_cpu_capabilities *cap)
(arm64_ftr_reg_ctrel0.sys_val & mask))
enable_uct_trap = true;
/* ... or if the system is affected by an erratum */
if (cap->capability == ARM64_WORKAROUND_1542419)
enable_uct_trap = true;
if (enable_uct_trap)
sysreg_clear_set(sctlr_el1, SCTLR_EL1_UCT, 0);
}
@@ -182,18 +178,6 @@ needs_tx2_tvm_workaround(const struct arm64_cpu_capabilities *entry,
return false;
}
static bool __maybe_unused
has_neoverse_n1_erratum_1542419(const struct arm64_cpu_capabilities *entry,
int scope)
{
u32 midr = read_cpuid_id();
bool has_dic = read_cpuid_cachetype() & BIT(CTR_DIC_SHIFT);
const struct midr_range range = MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1);
WARN_ON(scope != SCOPE_LOCAL_CPU || preemptible());
return is_midr_in_range(midr, &range) && has_dic;
}
#ifdef CONFIG_ARM64_WORKAROUND_REPEAT_TLBI
static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = {
#ifdef CONFIG_QCOM_FALKOR_ERRATUM_1009
@@ -229,28 +213,6 @@ static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = {
};
#endif
#ifdef CONFIG_CAVIUM_ERRATUM_27456
const struct midr_range cavium_erratum_27456_cpus[] = {
/* Cavium ThunderX, T88 pass 1.x - 2.1 */
MIDR_RANGE(MIDR_THUNDERX, 0, 0, 1, 1),
/* Cavium ThunderX, T81 pass 1.0 */
MIDR_REV(MIDR_THUNDERX_81XX, 0, 0),
{},
};
#endif
#ifdef CONFIG_CAVIUM_ERRATUM_30115
static const struct midr_range cavium_erratum_30115_cpus[] = {
/* Cavium ThunderX, T88 pass 1.x - 2.2 */
MIDR_RANGE(MIDR_THUNDERX, 0, 0, 1, 2),
/* Cavium ThunderX, T81 pass 1.0 - 1.2 */
MIDR_REV_RANGE(MIDR_THUNDERX_81XX, 0, 0, 2),
/* Cavium ThunderX, T83 pass 1.0 */
MIDR_REV(MIDR_THUNDERX_83XX, 0, 0),
{},
};
#endif
#ifdef CONFIG_QCOM_FALKOR_ERRATUM_1003
static const struct arm64_cpu_capabilities qcom_erratum_1003_list[] = {
{
@@ -443,20 +405,6 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
.capability = ARM64_WORKAROUND_CAVIUM_23154,
ERRATA_MIDR_REV_RANGE(MIDR_THUNDERX, 0, 0, 1),
},
#endif
#ifdef CONFIG_CAVIUM_ERRATUM_27456
{
.desc = "Cavium erratum 27456",
.capability = ARM64_WORKAROUND_CAVIUM_27456,
ERRATA_MIDR_RANGE_LIST(cavium_erratum_27456_cpus),
},
#endif
#ifdef CONFIG_CAVIUM_ERRATUM_30115
{
.desc = "Cavium erratum 30115",
.capability = ARM64_WORKAROUND_CAVIUM_30115,
ERRATA_MIDR_RANGE_LIST(cavium_erratum_30115_cpus),
},
#endif
{
.desc = "Mismatched cache type (CTR_EL0)",
@@ -551,29 +499,6 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
.midr_range_list = erratum_1463225,
},
#endif
#ifdef CONFIG_CAVIUM_TX2_ERRATUM_219
{
.desc = "Cavium ThunderX2 erratum 219 (KVM guest sysreg trapping)",
.capability = ARM64_WORKAROUND_CAVIUM_TX2_219_TVM,
ERRATA_MIDR_RANGE_LIST(tx2_family_cpus),
.matches = needs_tx2_tvm_workaround,
},
{
.desc = "Cavium ThunderX2 erratum 219 (PRFM removal)",
.capability = ARM64_WORKAROUND_CAVIUM_TX2_219_PRFM,
ERRATA_MIDR_RANGE_LIST(tx2_family_cpus),
},
#endif
#ifdef CONFIG_ARM64_ERRATUM_1542419
{
/* we depend on the firmware portion for correctness */
.desc = "ARM erratum 1542419 (kernel portion)",
.capability = ARM64_WORKAROUND_1542419,
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
.matches = has_neoverse_n1_erratum_1542419,
.cpu_enable = cpu_enable_trap_ctr_access,
},
#endif
#ifdef CONFIG_ARM64_ERRATUM_1508412
{
/* we depend on the firmware portion for correctness */

View File

@@ -1395,16 +1395,6 @@ static bool has_useable_gicv3_cpuif(const struct arm64_cpu_capabilities *entry,
return has_sre;
}
static bool has_no_hw_prefetch(const struct arm64_cpu_capabilities *entry, int __unused)
{
u32 midr = read_cpuid_id();
/* Cavium ThunderX pass 1.x and 2.x */
return midr_is_cpu_model_range(midr, MIDR_THUNDERX,
MIDR_CPU_VAR_REV(0, 0),
MIDR_CPU_VAR_REV(1, MIDR_REVISION_MASK));
}
static bool has_no_fpsimd(const struct arm64_cpu_capabilities *entry, int __unused)
{
u64 pfr0 = read_sanitised_ftr_reg(SYS_ID_AA64PFR0_EL1);
@@ -1493,18 +1483,6 @@ bool kaslr_requires_kpti(void)
return false;
}
/*
* Systems affected by Cavium erratum 24756 are incompatible
* with KPTI.
*/
if (IS_ENABLED(CONFIG_CAVIUM_ERRATUM_27456)) {
extern const struct midr_range cavium_erratum_27456_cpus[];
if (is_midr_in_range_list(read_cpuid_id(),
cavium_erratum_27456_cpus))
return false;
}
return kaslr_offset() > 0;
}
@@ -1545,20 +1523,6 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,
if (!meltdown_safe)
__meltdown_safe = false;
/*
* For reasons that aren't entirely clear, enabling KPTI on Cavium
* ThunderX leads to apparent I-cache corruption of kernel text, which
* ends as well as you might imagine. Don't even try. We cannot rely
* on the cpus_have_*cap() helpers here to detect the CPU erratum
* because cpucap detection order may change. However, since we know
* affected CPUs are always in a homogeneous configuration, it is
* safe to rely on this_cpu_has_cap() here.
*/
if (this_cpu_has_cap(ARM64_WORKAROUND_CAVIUM_27456)) {
str = "ARM64_WORKAROUND_CAVIUM_27456";
__kpti_forced = -1;
}
/* Useful for KASLR robustness */
if (kaslr_requires_kpti()) {
if (!__kpti_forced) {
@@ -1988,12 +1952,6 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
.min_field_value = 2,
},
#endif /* CONFIG_ARM64_LSE_ATOMICS */
{
.desc = "Software prefetching using PRFM",
.capability = ARM64_HAS_NO_HW_PREFETCH,
.type = ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE,
.matches = has_no_hw_prefetch,
},
{
.desc = "Virtualization Host Extensions",
.capability = ARM64_HAS_VIRT_HOST_EXTN,

View File

@@ -691,9 +691,7 @@ alternative_else_nop_endif
tramp_map_kernel x30
alternative_insn isb, nop, ARM64_WORKAROUND_QCOM_FALKOR_E1003
tramp_data_read_var x30, vectors
alternative_if_not ARM64_WORKAROUND_CAVIUM_TX2_219_PRFM
prfm plil1strm, [x30, #(1b - \vector_start)]
alternative_else_nop_endif
msr vbar_el1, x30
isb

View File

@@ -37,6 +37,7 @@
#include <asm/sysreg.h>
#include <asm/trans_pgd.h>
#include <asm/virt.h>
#include <trace/hooks/bl_hib.h>
/*
* Hibernate core relies on this value being 0 on resume, and marks it
@@ -87,6 +88,8 @@ static struct arch_hibernate_hdr {
phys_addr_t __hyp_stub_vectors;
u64 sleep_cpu_mpidr;
ANDROID_VENDOR_DATA(1);
} resume_hdr;
static inline void arch_hdr_invariants(struct arch_hibernate_hdr_invariants *i)
@@ -124,6 +127,11 @@ int arch_hibernation_header_save(void *addr, unsigned int max_size)
hdr->ttbr1_el1 = __pa_symbol(swapper_pg_dir);
hdr->reenter_kernel = _cpu_resume;
#ifdef CONFIG_ANDROID_VENDOR_OEM_DATA
trace_android_vh_save_cpu_resume(&hdr->android_vendor_data1,
__pa(cpu_resume));
#endif
/* We can't use __hyp_get_vectors() because kvm may still be loaded */
if (el2_reset_needed())
hdr->__hyp_stub_vectors = __pa_symbol(__hyp_stub_vectors);

View File

@@ -1193,17 +1193,32 @@ static int armv8_pmu_init_nogroups(struct arm_pmu *cpu_pmu, char *name,
return armv8_pmu_init(cpu_pmu, name, map_event, NULL, NULL, NULL);
}
static int armv8_pmuv3_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_pmuv3",
armv8_pmuv3_map_event);
#define PMUV3_INIT_SIMPLE(name) \
static int name##_pmu_init(struct arm_pmu *cpu_pmu) \
{ \
return armv8_pmu_init_nogroups(cpu_pmu, #name, armv8_pmuv3_map_event);\
}
static int armv8_a34_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a34",
armv8_pmuv3_map_event);
}
PMUV3_INIT_SIMPLE(armv8_pmuv3)
PMUV3_INIT_SIMPLE(armv8_cortex_a34)
PMUV3_INIT_SIMPLE(armv8_cortex_a55)
PMUV3_INIT_SIMPLE(armv8_cortex_a65)
PMUV3_INIT_SIMPLE(armv8_cortex_a75)
PMUV3_INIT_SIMPLE(armv8_cortex_a76)
PMUV3_INIT_SIMPLE(armv8_cortex_a77)
PMUV3_INIT_SIMPLE(armv8_cortex_a78)
PMUV3_INIT_SIMPLE(armv9_cortex_a510)
PMUV3_INIT_SIMPLE(armv9_cortex_a710)
PMUV3_INIT_SIMPLE(armv8_cortex_x1)
PMUV3_INIT_SIMPLE(armv9_cortex_x2)
PMUV3_INIT_SIMPLE(armv8_neoverse_e1)
PMUV3_INIT_SIMPLE(armv8_neoverse_n1)
PMUV3_INIT_SIMPLE(armv9_neoverse_n2)
PMUV3_INIT_SIMPLE(armv8_neoverse_v1)
PMUV3_INIT_SIMPLE(armv8_nvidia_carmel)
PMUV3_INIT_SIMPLE(armv8_nvidia_denver)
static int armv8_a35_pmu_init(struct arm_pmu *cpu_pmu)
{
@@ -1217,24 +1232,12 @@ static int armv8_a53_pmu_init(struct arm_pmu *cpu_pmu)
armv8_a53_map_event);
}
static int armv8_a55_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a55",
armv8_pmuv3_map_event);
}
static int armv8_a57_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a57",
armv8_a57_map_event);
}
static int armv8_a65_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a65",
armv8_pmuv3_map_event);
}
static int armv8_a72_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a72",
@@ -1247,42 +1250,6 @@ static int armv8_a73_pmu_init(struct arm_pmu *cpu_pmu)
armv8_a73_map_event);
}
static int armv8_a75_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a75",
armv8_pmuv3_map_event);
}
static int armv8_a76_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a76",
armv8_pmuv3_map_event);
}
static int armv8_a77_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a77",
armv8_pmuv3_map_event);
}
static int armv8_a78_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cortex_a78",
armv8_pmuv3_map_event);
}
static int armv8_e1_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_neoverse_e1",
armv8_pmuv3_map_event);
}
static int armv8_n1_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_neoverse_n1",
armv8_pmuv3_map_event);
}
static int armv8_thunder_pmu_init(struct arm_pmu *cpu_pmu)
{
return armv8_pmu_init_nogroups(cpu_pmu, "armv8_cavium_thunder",
@@ -1296,23 +1263,31 @@ static int armv8_vulcan_pmu_init(struct arm_pmu *cpu_pmu)
}
static const struct of_device_id armv8_pmu_of_device_ids[] = {
{.compatible = "arm,armv8-pmuv3", .data = armv8_pmuv3_init},
{.compatible = "arm,cortex-a34-pmu", .data = armv8_a34_pmu_init},
{.compatible = "arm,armv8-pmuv3", .data = armv8_pmuv3_pmu_init},
{.compatible = "arm,cortex-a34-pmu", .data = armv8_cortex_a34_pmu_init},
{.compatible = "arm,cortex-a35-pmu", .data = armv8_a35_pmu_init},
{.compatible = "arm,cortex-a53-pmu", .data = armv8_a53_pmu_init},
{.compatible = "arm,cortex-a55-pmu", .data = armv8_a55_pmu_init},
{.compatible = "arm,cortex-a55-pmu", .data = armv8_cortex_a55_pmu_init},
{.compatible = "arm,cortex-a57-pmu", .data = armv8_a57_pmu_init},
{.compatible = "arm,cortex-a65-pmu", .data = armv8_a65_pmu_init},
{.compatible = "arm,cortex-a65-pmu", .data = armv8_cortex_a65_pmu_init},
{.compatible = "arm,cortex-a72-pmu", .data = armv8_a72_pmu_init},
{.compatible = "arm,cortex-a73-pmu", .data = armv8_a73_pmu_init},
{.compatible = "arm,cortex-a75-pmu", .data = armv8_a75_pmu_init},
{.compatible = "arm,cortex-a76-pmu", .data = armv8_a76_pmu_init},
{.compatible = "arm,cortex-a77-pmu", .data = armv8_a77_pmu_init},
{.compatible = "arm,cortex-a78-pmu", .data = armv8_a78_pmu_init},
{.compatible = "arm,neoverse-e1-pmu", .data = armv8_e1_pmu_init},
{.compatible = "arm,neoverse-n1-pmu", .data = armv8_n1_pmu_init},
{.compatible = "arm,cortex-a75-pmu", .data = armv8_cortex_a75_pmu_init},
{.compatible = "arm,cortex-a76-pmu", .data = armv8_cortex_a76_pmu_init},
{.compatible = "arm,cortex-a77-pmu", .data = armv8_cortex_a77_pmu_init},
{.compatible = "arm,cortex-a78-pmu", .data = armv8_cortex_a78_pmu_init},
{.compatible = "arm,cortex-a510-pmu", .data = armv9_cortex_a510_pmu_init},
{.compatible = "arm,cortex-a710-pmu", .data = armv9_cortex_a710_pmu_init},
{.compatible = "arm,cortex-x1-pmu", .data = armv8_cortex_x1_pmu_init},
{.compatible = "arm,cortex-x2-pmu", .data = armv9_cortex_x2_pmu_init},
{.compatible = "arm,neoverse-e1-pmu", .data = armv8_neoverse_e1_pmu_init},
{.compatible = "arm,neoverse-n1-pmu", .data = armv8_neoverse_n1_pmu_init},
{.compatible = "arm,neoverse-n2-pmu", .data = armv9_neoverse_n2_pmu_init},
{.compatible = "arm,neoverse-v1-pmu", .data = armv8_neoverse_v1_pmu_init},
{.compatible = "cavium,thunder-pmu", .data = armv8_thunder_pmu_init},
{.compatible = "brcm,vulcan-pmu", .data = armv8_vulcan_pmu_init},
{.compatible = "nvidia,carmel-pmu", .data = armv8_nvidia_carmel_pmu_init},
{.compatible = "nvidia,denver-pmu", .data = armv8_nvidia_denver_pmu_init},
{},
};
@@ -1335,7 +1310,7 @@ static int __init armv8_pmu_driver_init(void)
if (acpi_disabled)
return platform_driver_register(&armv8_pmu_driver);
else
return arm_pmu_acpi_probe(armv8_pmuv3_init);
return arm_pmu_acpi_probe(armv8_pmuv3_pmu_init);
}
device_initcall(armv8_pmu_driver_init)

View File

@@ -908,7 +908,7 @@ static void do_handle_IPI(int ipinr)
break;
case IPI_CPU_STOP:
trace_android_vh_ipi_stop_rcuidle(get_irq_regs());
trace_android_vh_ipi_stop(get_irq_regs());
local_cpu_stop();
break;

View File

@@ -32,15 +32,6 @@ __do_compat_cache_op(unsigned long start, unsigned long end)
if (fatal_signal_pending(current))
return 0;
if (cpus_have_const_cap(ARM64_WORKAROUND_1542419)) {
/*
* The workaround requires an inner-shareable tlbi.
* We pick the reserved-ASID to minimise the impact.
*/
__tlbi(aside1is, __TLBI_VADDR(0, 0));
dsb(ish);
}
ret = caches_clean_inval_user_pou(start, start + chunk);
if (ret)
return ret;

View File

@@ -587,15 +587,6 @@ static void ctr_read_handler(unsigned int esr, struct pt_regs *regs)
int rt = ESR_ELx_SYS64_ISS_RT(esr);
unsigned long val = arm64_ftr_reg_user_value(&arm64_ftr_reg_ctrel0);
if (cpus_have_const_cap(ARM64_WORKAROUND_1542419)) {
/* Hide DIC so that we can trap the unnecessary maintenance...*/
val &= ~BIT(CTR_DIC_SHIFT);
/* ... and fake IminLine to reduce the number of traps. */
val &= ~CTR_IMINLINE_MASK;
val |= (PAGE_SHIFT - 2) & CTR_IMINLINE_MASK;
}
pt_regs_write_reg(regs, rt, val);
arm64_skip_faulting_instruction(regs, AARCH64_INSN_SIZE);
@@ -947,6 +938,13 @@ bool arm64_is_fatal_ras_serror(struct pt_regs *regs, unsigned int esr)
void do_serror(struct pt_regs *regs, unsigned int esr)
{
int ret = 0;
/* Add vendor hooks for unusual abort cases */
trace_android_rvh_do_serror(regs, esr, &ret);
if (ret != 0)
return;
/* non-RAS errors are not containable */
if (!arm64_is_ras_serror(esr) || arm64_is_fatal_ras_serror(regs, esr))
arm64_serror_panic(regs, esr);

View File

@@ -296,7 +296,7 @@ static int kvm_check_extension(struct kvm *kvm, long ext)
r = get_kvm_ipa_limit();
break;
case KVM_CAP_ARM_SVE:
r = system_supports_sve();
r = system_supports_sve() && !is_protected_kvm_enabled();
break;
case KVM_CAP_ARM_PTRAUTH_ADDRESS:
case KVM_CAP_ARM_PTRAUTH_GENERIC:
@@ -2162,6 +2162,17 @@ static int pkvm_drop_host_privileges(void)
* once the host stage 2 is installed.
*/
static_branch_enable(&kvm_protected_mode_initialized);
/*
* Fixup the boot mode so that we don't take spurious round
* trips via EL2 on cpu_resume. Flush to the PoC for a good
* measure, so that it can be observed by a CPU coming out of
* suspend with the MMU off.
*/
__boot_cpu_mode[0] = __boot_cpu_mode[1] = BOOT_CPU_MODE_EL1;
dcache_clean_poc((unsigned long)__boot_cpu_mode,
(unsigned long)(__boot_cpu_mode + 2));
on_each_cpu(_kvm_host_prot_finalize, &ret, 1);
return ret;
}
@@ -2320,6 +2331,16 @@ static int __init early_kvm_mode_cfg(char *arg)
if (!arg)
return -EINVAL;
if (strcmp(arg, "none") == 0) {
kvm_mode = KVM_MODE_NONE;
return 0;
}
if (!is_hyp_mode_available()) {
pr_warn_once("KVM is not available. Ignoring kvm-arm.mode\n");
return 0;
}
if (strcmp(arg, "protected") == 0) {
if (!is_kernel_in_hyp_mode())
kvm_mode = KVM_MODE_PROTECTED;
@@ -2334,11 +2355,6 @@ static int __init early_kvm_mode_cfg(char *arg)
return 0;
}
if (strcmp(arg, "none") == 0) {
kvm_mode = KVM_MODE_NONE;
return 0;
}
return -EINVAL;
}
early_param("kvm-arm.mode", early_kvm_mode_cfg);

View File

@@ -80,6 +80,7 @@ void kvm_arch_vcpu_load_fp(struct kvm_vcpu *vcpu)
vcpu->arch.flags &= ~KVM_ARM64_FP_ENABLED;
vcpu->arch.flags |= KVM_ARM64_FP_HOST;
vcpu->arch.flags &= ~KVM_ARM64_HOST_SVE_ENABLED;
if (read_sysreg(cpacr_el1) & CPACR_EL1_ZEN_EL0EN)
vcpu->arch.flags |= KVM_ARM64_HOST_SVE_ENABLED;
}

View File

@@ -166,7 +166,8 @@ static void enter_exception64(struct kvm_vcpu *vcpu, unsigned long target_mode,
*vcpu_pc(vcpu) = vbar + offset;
old = *vcpu_cpsr(vcpu);
new = get_except64_cpsr(old, kvm_has_mte(vcpu->kvm), sctlr, target_mode);
new = get_except64_cpsr(old, kvm_has_mte(kern_hyp_va(vcpu->kvm)), sctlr,
target_mode);
*vcpu_cpsr(vcpu) = new;
__vcpu_write_spsr(vcpu, old);
}

View File

@@ -110,9 +110,6 @@ static inline void ___activate_traps(struct kvm_vcpu *vcpu)
{
u64 hcr = vcpu->arch.hcr_el2;
if (cpus_have_final_cap(ARM64_WORKAROUND_CAVIUM_TX2_219_TVM))
hcr |= HCR_TVM;
write_sysreg(hcr, hcr_el2);
if (cpus_have_final_cap(ARM64_HAS_RAS_EXTN) && (hcr & HCR_VSE))
@@ -203,61 +200,6 @@ static bool kvm_hyp_handle_fpsimd(struct kvm_vcpu *vcpu, u64 *exit_code)
return true;
}
static inline bool handle_tx2_tvm(struct kvm_vcpu *vcpu)
{
u32 sysreg = esr_sys64_to_sysreg(kvm_vcpu_get_esr(vcpu));
int rt = kvm_vcpu_sys_get_rt(vcpu);
u64 val = vcpu_get_reg(vcpu, rt);
/*
* The normal sysreg handling code expects to see the traps,
* let's not do anything here.
*/
if (vcpu->arch.hcr_el2 & HCR_TVM)
return false;
switch (sysreg) {
case SYS_SCTLR_EL1:
write_sysreg_el1(val, SYS_SCTLR);
break;
case SYS_TTBR0_EL1:
write_sysreg_el1(val, SYS_TTBR0);
break;
case SYS_TTBR1_EL1:
write_sysreg_el1(val, SYS_TTBR1);
break;
case SYS_TCR_EL1:
write_sysreg_el1(val, SYS_TCR);
break;
case SYS_ESR_EL1:
write_sysreg_el1(val, SYS_ESR);
break;
case SYS_FAR_EL1:
write_sysreg_el1(val, SYS_FAR);
break;
case SYS_AFSR0_EL1:
write_sysreg_el1(val, SYS_AFSR0);
break;
case SYS_AFSR1_EL1:
write_sysreg_el1(val, SYS_AFSR1);
break;
case SYS_MAIR_EL1:
write_sysreg_el1(val, SYS_MAIR);
break;
case SYS_AMAIR_EL1:
write_sysreg_el1(val, SYS_AMAIR);
break;
case SYS_CONTEXTIDR_EL1:
write_sysreg_el1(val, SYS_CONTEXTIDR);
break;
default:
return false;
}
__kvm_skip_instr(vcpu);
return true;
}
static inline bool esr_is_ptrauth_trap(u32 esr)
{
switch (esr_sys64_to_sysreg(esr)) {
@@ -314,10 +256,6 @@ static bool kvm_hyp_handle_ptrauth(struct kvm_vcpu *vcpu, u64 *exit_code)
static bool kvm_hyp_handle_sysreg(struct kvm_vcpu *vcpu, u64 *exit_code)
{
if (cpus_have_final_cap(ARM64_WORKAROUND_CAVIUM_TX2_219_TVM) &&
handle_tx2_tvm(vcpu))
return true;
if (static_branch_unlikely(&vgic_v3_cpuif_trap) &&
__vgic_v3_perform_cpuif_access(vcpu) == 1)
return true;

View File

@@ -48,6 +48,12 @@ struct pkvm_iommu_ops {
void (*host_stage2_idmap_apply)(struct pkvm_iommu *dev,
phys_addr_t start, phys_addr_t end);
/*
* Callback to finish a host stage-2 mapping change at device level.
* Called after 'host_stage2_idmap_apply' with host lock held.
*/
void (*host_stage2_idmap_complete)(struct pkvm_iommu *dev);
/* Power management callbacks. Called with host lock held. */
int (*suspend)(struct pkvm_iommu *dev);
int (*resume)(struct pkvm_iommu *dev);

View File

@@ -42,14 +42,20 @@ struct kvm_shadow_vm {
/* The total size of the donated shadow area. */
size_t shadow_area_size;
/*
* The number of vcpus initialized and ready to run in the shadow vm.
* Modifying this is protected by shadow_lock.
*/
unsigned int nr_vcpus;
struct kvm_arch arch;
struct kvm_pgtable pgt;
struct kvm_pgtable_mm_ops mm_ops;
struct hyp_pool pool;
hyp_spinlock_t lock;
/* Array of the shadow state per vcpu. */
struct shadow_vcpu_state shadow_vcpus[0];
/* Array of the shadow state pointers per vcpu. */
struct shadow_vcpu_state *shadow_vcpus[0];
};
static inline bool vcpu_is_protected(struct kvm_vcpu *vcpu)
@@ -65,6 +71,9 @@ extern phys_addr_t pvmfw_size;
void hyp_shadow_table_init(void *tbl);
int __pkvm_init_shadow(struct kvm *kvm, void *shadow_va, size_t size, void *pgd);
int __pkvm_init_shadow_vcpu(unsigned int shadow_handle,
struct kvm_vcpu *host_vcpu,
void *shadow_vcpu_hva);
int __pkvm_teardown_shadow(int shadow_handle);
struct kvm_vcpu *get_shadow_vcpu(int shadow_handle, unsigned int vcpu_idx);
void put_shadow_vcpu(struct kvm_vcpu *vcpu);

View File

@@ -1006,6 +1006,17 @@ static void handle___pkvm_init_shadow(struct kvm_cpu_context *host_ctxt)
shadow_size, pgd);
}
static void handle___pkvm_init_shadow_vcpu(struct kvm_cpu_context *host_ctxt)
{
DECLARE_REG(unsigned int, shadow_handle, host_ctxt, 1);
DECLARE_REG(struct kvm_vcpu *, host_vcpu, host_ctxt, 2);
DECLARE_REG(void *, shadow_vcpu_hva, host_ctxt, 3);
cpu_reg(host_ctxt, 1) = __pkvm_init_shadow_vcpu(shadow_handle,
host_vcpu,
shadow_vcpu_hva);
}
static void handle___pkvm_teardown_shadow(struct kvm_cpu_context *host_ctxt)
{
DECLARE_REG(int, shadow_handle, host_ctxt, 1);
@@ -1079,6 +1090,7 @@ static const hcall_t host_hcall[] = {
HANDLE_FUNC(__vgic_v3_save_vmcr_aprs),
HANDLE_FUNC(__vgic_v3_restore_vmcr_aprs),
HANDLE_FUNC(__pkvm_init_shadow),
HANDLE_FUNC(__pkvm_init_shadow_vcpu),
HANDLE_FUNC(__pkvm_teardown_shadow),
HANDLE_FUNC(__pkvm_vcpu_load),
HANDLE_FUNC(__pkvm_vcpu_put),

View File

@@ -546,4 +546,9 @@ void pkvm_iommu_host_stage2_idmap(phys_addr_t start, phys_addr_t end,
if (dev->powered && dev->ops->host_stage2_idmap_apply)
dev->ops->host_stage2_idmap_apply(dev, start, end);
}
list_for_each_entry(dev, &iommu_list, list) {
if (dev->powered && dev->ops->host_stage2_idmap_complete)
dev->ops->host_stage2_idmap_complete(dev);
}
}

View File

@@ -24,6 +24,10 @@
#define PA_MAX ((phys_addr_t)SZ_1G * NR_GIGABYTES)
#define SYNC_MAX_RETRIES 5
#define SYNC_TIMEOUT 5
#define SYNC_TIMEOUT_MULTIPLIER 3
#define CTX_CFG_ENTRY(ctxid, nr_ctx, vid) \
(CONTEXT_CFG_VALID_VID_CTX_VID(ctxid, vid) \
| (((ctxid) < (nr_ctx)) ? CONTEXT_CFG_VALID_VID_CTX_VALID(ctxid) : 0))
@@ -158,11 +162,20 @@ static void __set_control_regs(struct pkvm_iommu *dev)
writel_relaxed(ctrl0, dev->va + REG_NS_CTRL0);
}
/* Poll the given SFR until its value has all bits of a given mask set. */
static void __wait_until(void __iomem *addr, u32 mask)
/*
* Poll the given SFR until its value has all bits of a given mask set.
* Returns true if successful, false if not successful after a given number of
* attempts.
*/
static bool __wait_until(void __iomem *addr, u32 mask, size_t max_attempts)
{
while ((readl_relaxed(addr) & mask) != mask)
continue;
size_t i;
for (i = 0; i < max_attempts; i++) {
if ((readl_relaxed(addr) & mask) == mask)
return true;
}
return false;
}
/* Poll the given SFR as long as its value has all bits of a given mask set. */
@@ -172,17 +185,54 @@ static void __wait_while(void __iomem *addr, u32 mask)
continue;
}
static void __wait_for_invalidation_complete(struct pkvm_iommu *dev)
static void __sync_cmd_start(struct pkvm_iommu *sync)
{
struct pkvm_iommu *sync;
writel_relaxed(SYNC_CMD_SYNC, sync->va + REG_NS_SYNC_CMD);
}
static void __invalidation_barrier_slow(struct pkvm_iommu *sync)
{
size_t i, timeout;
/*
* Wait for transactions to drain if SysMMU_SYNCs were registered.
* Assumes that they are in the same power domain as the S2MPU.
*
* The algorithm will try initiating the SYNC if the SYNC_COMP_COMPLETE
* bit has not been set after a given number of attempts, increasing the
* timeout exponentially each time. If this cycle fails a given number
* of times, the algorithm will give up completely to avoid deadlock.
*/
timeout = SYNC_TIMEOUT;
for (i = 0; i < SYNC_MAX_RETRIES; i++) {
__sync_cmd_start(sync);
if (__wait_until(sync->va + REG_NS_SYNC_COMP, SYNC_COMP_COMPLETE, timeout))
break;
timeout *= SYNC_TIMEOUT_MULTIPLIER;
}
}
/* Initiate invalidation barrier. */
static void __invalidation_barrier_init(struct pkvm_iommu *dev)
{
struct pkvm_iommu *sync;
for_each_child(sync, dev)
__sync_cmd_start(sync);
}
/* Wait for invalidation to complete. */
static void __invalidation_barrier_complete(struct pkvm_iommu *dev)
{
struct pkvm_iommu *sync;
/*
* Check if the SYNC_COMP_COMPLETE bit has been set for individual
* devices. If not, fall back to non-parallel invalidation.
*/
for_each_child(sync, dev) {
writel_relaxed(SYNC_CMD_SYNC, sync->va + REG_NS_SYNC_CMD);
__wait_until(sync->va + REG_NS_SYNC_COMP, SYNC_COMP_COMPLETE);
if (!(readl_relaxed(sync->va + REG_NS_SYNC_COMP) & SYNC_COMP_COMPLETE))
__invalidation_barrier_slow(sync);
}
/* Must not access SFRs while S2MPU is busy invalidating (v9 only). */
@@ -195,11 +245,12 @@ static void __wait_for_invalidation_complete(struct pkvm_iommu *dev)
static void __all_invalidation(struct pkvm_iommu *dev)
{
writel_relaxed(INVALIDATION_INVALIDATE, dev->va + REG_NS_ALL_INVALIDATION);
__wait_for_invalidation_complete(dev);
__invalidation_barrier_init(dev);
__invalidation_barrier_complete(dev);
}
static void __range_invalidation(struct pkvm_iommu *dev, phys_addr_t first_byte,
phys_addr_t last_byte)
static void __range_invalidation_init(struct pkvm_iommu *dev, phys_addr_t first_byte,
phys_addr_t last_byte)
{
u32 start_ppn = first_byte >> RANGE_INVALIDATION_PPN_SHIFT;
u32 end_ppn = last_byte >> RANGE_INVALIDATION_PPN_SHIFT;
@@ -207,7 +258,7 @@ static void __range_invalidation(struct pkvm_iommu *dev, phys_addr_t first_byte,
writel_relaxed(start_ppn, dev->va + REG_NS_RANGE_INVALIDATION_START_PPN);
writel_relaxed(end_ppn, dev->va + REG_NS_RANGE_INVALIDATION_END_PPN);
writel_relaxed(INVALIDATION_INVALIDATE, dev->va + REG_NS_RANGE_INVALIDATION);
__wait_for_invalidation_complete(dev);
__invalidation_barrier_init(dev);
}
static void __set_l1entry_attr_with_prot(struct pkvm_iommu *dev, unsigned int gb,
@@ -341,7 +392,13 @@ static void __mpt_idmap_apply(struct pkvm_iommu *dev, struct mpt *mpt,
__set_l1entry_attr_with_fmpt(dev, gb, vid, fmpt);
}
}
__range_invalidation(dev, first_byte, last_byte);
/* Initiate invalidation, completed in __mdt_idmap_complete. */
__range_invalidation_init(dev, first_byte, last_byte);
}
static void __mpt_idmap_complete(struct pkvm_iommu *dev, struct mpt *mpt)
{
__invalidation_barrier_complete(dev);
}
static void s2mpu_host_stage2_idmap_prepare(phys_addr_t start, phys_addr_t end,
@@ -362,6 +419,11 @@ static void s2mpu_host_stage2_idmap_apply(struct pkvm_iommu *dev,
__mpt_idmap_apply(dev, &host_mpt, start, end - 1);
}
static void s2mpu_host_stage2_idmap_complete(struct pkvm_iommu *dev)
{
__mpt_idmap_complete(dev, &host_mpt);
}
static int s2mpu_resume(struct pkvm_iommu *dev)
{
/*
@@ -550,6 +612,7 @@ const struct pkvm_iommu_ops pkvm_s2mpu_ops = (struct pkvm_iommu_ops){
.suspend = s2mpu_suspend,
.host_stage2_idmap_prepare = s2mpu_host_stage2_idmap_prepare,
.host_stage2_idmap_apply = s2mpu_host_stage2_idmap_apply,
.host_stage2_idmap_complete = s2mpu_host_stage2_idmap_complete,
.host_dabt_handler = s2mpu_host_dabt_handler,
.data_size = sizeof(struct s2mpu_drv_data),
};

View File

@@ -929,6 +929,9 @@ static int host_complete_share(u64 addr, const struct pkvm_mem_transition *tx,
{
u64 size = tx->nr_pages * PAGE_SIZE;
if (tx->initiator.id == PKVM_ID_GUEST)
psci_mem_protect_dec();
return __host_set_page_state_range(addr, size, PKVM_PAGE_SHARED_BORROWED);
}
@@ -937,6 +940,9 @@ static int host_complete_unshare(u64 addr, const struct pkvm_mem_transition *tx)
u64 size = tx->nr_pages * PAGE_SIZE;
pkvm_id owner_id = initiator_owner_id(tx);
if (tx->initiator.id == PKVM_ID_GUEST)
psci_mem_protect_inc();
return host_stage2_set_owner_locked(addr, size, owner_id);
}
@@ -1915,7 +1921,14 @@ static int hyp_zero_page(phys_addr_t phys)
if (!addr)
return -EINVAL;
memset(addr, 0, PAGE_SIZE);
__clean_dcache_guest_page(addr, PAGE_SIZE);
/*
* Prefer kvm_flush_dcache_to_poc() over __clean_dcache_guest_page()
* here as the latter may elide the CMO under the assumption that FWB
* will be enabled on CPUs that support it. This is incorrect for the
* host stage-2 and would otherwise lead to a malicious host potentially
* being able to read the content of newly reclaimed guest pages.
*/
kvm_flush_dcache_to_poc(addr, PAGE_SIZE);
return hyp_fixmap_unmap();
}

View File

@@ -276,9 +276,9 @@ struct kvm_vcpu *get_shadow_vcpu(int shadow_handle, unsigned int vcpu_idx)
hyp_spin_lock(&shadow_lock);
vm = find_shadow_by_handle(shadow_handle);
if (!vm || vm->created_vcpus <= vcpu_idx)
if (!vm || vm->nr_vcpus <= vcpu_idx)
goto unlock;
vcpu = &vm->shadow_vcpus[vcpu_idx].vcpu;
vcpu = &vm->shadow_vcpus[vcpu_idx]->vcpu;
/* Ensure vcpu isn't loaded on more than one cpu simultaneously. */
if (unlikely(vcpu->arch.pkvm.loaded_on_cpu)) {
@@ -338,15 +338,11 @@ static int copy_features(struct kvm_vcpu *shadow_vcpu, struct kvm_vcpu *host_vcp
/*
* Check if remaining features are allowed:
* - Performance Monitoring
* - Scalable Vectors
* - Pointer Authentication
*/
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_PMUVER), PVM_ID_AA64DFR0_ALLOW))
set_bit(KVM_ARM_VCPU_PMU_V3, allowed_features);
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64PFR0_SVE), PVM_ID_AA64PFR0_ALLOW))
set_bit(KVM_ARM_VCPU_SVE, allowed_features);
if (FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_API), PVM_ID_AA64ISAR1_ALLOW) &&
FIELD_GET(ARM64_FEATURE_MASK(ID_AA64ISAR1_APA), PVM_ID_AA64ISAR1_ALLOW))
set_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, allowed_features);
@@ -370,126 +366,139 @@ static int copy_features(struct kvm_vcpu *shadow_vcpu, struct kvm_vcpu *host_vcp
return 0;
}
static void unpin_host_vcpus(struct shadow_vcpu_state *shadow_vcpus, int nr_vcpus)
static void unpin_host_vcpu(struct shadow_vcpu_state *shadow_vcpu)
{
int i;
struct kvm_vcpu *host_vcpu = shadow_vcpu->vcpu.arch.pkvm.host_vcpu;
size_t sve_state_size;
void *sve_state = shadow_vcpu->vcpu.arch.sve_state;
for (i = 0; i < nr_vcpus; i++) {
struct kvm_vcpu *host_vcpu = shadow_vcpus[i].vcpu.arch.pkvm.host_vcpu;
struct kvm_vcpu *shadow_vcpu = &shadow_vcpus[i].vcpu;
size_t sve_state_size;
void *sve_state;
hyp_unpin_shared_mem(host_vcpu, host_vcpu + 1);
hyp_unpin_shared_mem(host_vcpu, host_vcpu + 1);
if (!sve_state)
return;
if (!test_bit(KVM_ARM_VCPU_SVE, shadow_vcpu->arch.features))
continue;
sve_state = shadow_vcpu->arch.sve_state;
sve_state = kern_hyp_va(sve_state);
sve_state_size = vcpu_sve_state_size(shadow_vcpu);
hyp_unpin_shared_mem(sve_state, sve_state + sve_state_size);
}
sve_state = kern_hyp_va(sve_state);
sve_state_size = vcpu_sve_state_size(&shadow_vcpu->vcpu);
hyp_unpin_shared_mem(sve_state, sve_state + sve_state_size);
}
static int set_host_vcpus(struct shadow_vcpu_state *shadow_vcpus, int nr_vcpus,
struct kvm_vcpu **vcpu_array, size_t vcpu_array_size)
static void unpin_host_vcpus(struct shadow_vcpu_state *shadow_vcpus[], int nr_vcpus)
{
int i;
if (vcpu_array_size < sizeof(*vcpu_array) * nr_vcpus)
return -EINVAL;
for (i = 0; i < nr_vcpus; i++) {
struct kvm_vcpu *host_vcpu = kern_hyp_va(vcpu_array[i]);
if (hyp_pin_shared_mem(host_vcpu, host_vcpu + 1)) {
unpin_host_vcpus(shadow_vcpus, i);
return -EBUSY;
}
shadow_vcpus[i].vcpu.arch.pkvm.host_vcpu = host_vcpu;
}
return 0;
for (i = 0; i < nr_vcpus; i++)
unpin_host_vcpu(shadow_vcpus[i]);
}
static int init_shadow_structs(struct kvm *kvm, struct kvm_shadow_vm *vm,
struct kvm_vcpu **vcpu_array, int nr_vcpus)
static int init_ptrauth(struct kvm_vcpu *shadow_vcpu)
{
int i;
int ret;
int ret = 0;
if (test_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, shadow_vcpu->arch.features) ||
test_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, shadow_vcpu->arch.features))
ret = kvm_vcpu_enable_ptrauth(shadow_vcpu);
return ret;
}
static void init_shadow_vm(struct kvm *kvm, struct kvm_shadow_vm *vm,
int nr_vcpus)
{
vm->host_kvm = kvm;
vm->created_vcpus = nr_vcpus;
vm->arch.pkvm.pvmfw_load_addr = kvm->arch.pkvm.pvmfw_load_addr;
vm->arch.pkvm.enabled = READ_ONCE(kvm->arch.pkvm.enabled);
}
for (i = 0; i < nr_vcpus; i++) {
struct shadow_vcpu_state *shadow_state = &vm->shadow_vcpus[i];
struct kvm_vcpu *shadow_vcpu = &shadow_state->vcpu;
struct kvm_vcpu *host_vcpu = shadow_vcpu->arch.pkvm.host_vcpu;
static int init_shadow_vcpu(struct shadow_vcpu_state *shadow_state,
struct kvm_vcpu *host_vcpu,
struct kvm_shadow_vm *vm, int vcpu_idx)
{
struct kvm_vcpu *shadow_vcpu = &shadow_state->vcpu;
int ret;
shadow_vcpu->kvm = kvm;
shadow_vcpu->vcpu_id = host_vcpu->vcpu_id;
shadow_vcpu->vcpu_idx = i;
host_vcpu = kern_hyp_va(host_vcpu);
if (hyp_pin_shared_mem(host_vcpu, host_vcpu + 1))
return -EBUSY;
ret = copy_features(shadow_vcpu, host_vcpu);
if (ret)
return ret;
if (host_vcpu->vcpu_idx != vcpu_idx) {
ret = -EINVAL;
goto done;
}
if (test_bit(KVM_ARM_VCPU_SVE, shadow_vcpu->arch.features)) {
size_t sve_state_size;
void *sve_state;
shadow_vcpu->arch.pkvm.host_vcpu = host_vcpu;
shadow_vcpu->kvm = vm->host_kvm;
shadow_vcpu->vcpu_id = host_vcpu->vcpu_id;
shadow_vcpu->vcpu_idx = vcpu_idx;
shadow_vcpu->arch.sve_state = READ_ONCE(host_vcpu->arch.sve_state);
shadow_vcpu->arch.sve_max_vl = READ_ONCE(host_vcpu->arch.sve_max_vl);
ret = copy_features(shadow_vcpu, host_vcpu);
if (ret)
goto done;
sve_state = kern_hyp_va(shadow_vcpu->arch.sve_state);
sve_state_size = vcpu_sve_state_size(shadow_vcpu);
ret = init_ptrauth(shadow_vcpu);
if (ret)
goto done;
if (!shadow_vcpu->arch.sve_state || !sve_state_size ||
hyp_pin_shared_mem(sve_state,
sve_state + sve_state_size)) {
clear_bit(KVM_ARM_VCPU_SVE,
shadow_vcpu->arch.features);
shadow_vcpu->arch.sve_state = NULL;
shadow_vcpu->arch.sve_max_vl = 0;
return -EINVAL;
}
}
if (test_bit(KVM_ARM_VCPU_SVE, shadow_vcpu->arch.features)) {
size_t sve_state_size;
void *sve_state;
if (vm->arch.pkvm.enabled)
pkvm_vcpu_init_traps(shadow_vcpu);
kvm_reset_pvm_sys_regs(shadow_vcpu);
shadow_vcpu->arch.sve_state =
READ_ONCE(host_vcpu->arch.sve_state);
shadow_vcpu->arch.sve_max_vl =
READ_ONCE(host_vcpu->arch.sve_max_vl);
vm->vcpus[i] = shadow_vcpu;
shadow_state->vm = vm;
sve_state = kern_hyp_va(shadow_vcpu->arch.sve_state);
sve_state_size = vcpu_sve_state_size(shadow_vcpu);
shadow_vcpu->arch.hw_mmu = &vm->arch.mmu;
shadow_vcpu->arch.pkvm.shadow_vm = vm;
shadow_vcpu->arch.power_off = true;
if (test_bit(KVM_ARM_VCPU_POWER_OFF, shadow_vcpu->arch.features)) {
shadow_vcpu->arch.pkvm.power_state = PSCI_0_2_AFFINITY_LEVEL_OFF;
} else if (pvm_has_pvmfw(vm)) {
if (vm->pvmfw_entry_vcpu)
return -EINVAL;
vm->pvmfw_entry_vcpu = shadow_vcpu;
shadow_vcpu->arch.reset_state.reset = true;
shadow_vcpu->arch.pkvm.power_state = PSCI_0_2_AFFINITY_LEVEL_ON_PENDING;
} else {
struct vcpu_reset_state *reset_state = &shadow_vcpu->arch.reset_state;
reset_state->pc = *vcpu_pc(host_vcpu);
reset_state->r0 = vcpu_get_reg(host_vcpu, 0);
reset_state->reset = true;
shadow_vcpu->arch.pkvm.power_state = PSCI_0_2_AFFINITY_LEVEL_ON_PENDING;
if (!shadow_vcpu->arch.sve_state || !sve_state_size ||
hyp_pin_shared_mem(sve_state, sve_state + sve_state_size)) {
clear_bit(KVM_ARM_VCPU_SVE, shadow_vcpu->arch.features);
shadow_vcpu->arch.sve_state = NULL;
shadow_vcpu->arch.sve_max_vl = 0;
ret = -EINVAL;
goto done;
}
}
return 0;
if (vm->arch.pkvm.enabled)
pkvm_vcpu_init_traps(shadow_vcpu);
kvm_reset_pvm_sys_regs(shadow_vcpu);
vm->vcpus[vcpu_idx] = shadow_vcpu;
shadow_state->vm = vm;
shadow_vcpu->arch.hw_mmu = &vm->arch.mmu;
shadow_vcpu->arch.pkvm.shadow_vm = vm;
shadow_vcpu->arch.power_off = true;
if (test_bit(KVM_ARM_VCPU_POWER_OFF, shadow_vcpu->arch.features)) {
shadow_vcpu->arch.pkvm.power_state =
PSCI_0_2_AFFINITY_LEVEL_OFF;
} else if (pvm_has_pvmfw(vm)) {
if (vm->pvmfw_entry_vcpu) {
ret = -EINVAL;
goto done;
}
vm->pvmfw_entry_vcpu = shadow_vcpu;
shadow_vcpu->arch.reset_state.reset = true;
shadow_vcpu->arch.pkvm.power_state =
PSCI_0_2_AFFINITY_LEVEL_ON_PENDING;
} else {
struct vcpu_reset_state *reset_state =
&shadow_vcpu->arch.reset_state;
reset_state->pc = *vcpu_pc(host_vcpu);
reset_state->r0 = vcpu_get_reg(host_vcpu, 0);
reset_state->reset = true;
shadow_vcpu->arch.pkvm.power_state =
PSCI_0_2_AFFINITY_LEVEL_ON_PENDING;
}
done:
if (ret)
unpin_host_vcpu(shadow_state);
return ret;
}
static bool __exists_shadow(struct kvm *host_kvm)
@@ -578,7 +587,7 @@ static size_t pkvm_get_shadow_size(int num_vcpus)
{
/* Shadow space for the vm struct and all of its vcpu states. */
return sizeof(struct kvm_shadow_vm) +
sizeof(struct shadow_vcpu_state) * num_vcpus;
sizeof(struct shadow_vcpu_state *) * num_vcpus;
}
/*
@@ -600,14 +609,14 @@ static int check_shadow_size(int nr_vcpus, size_t shadow_size)
return 0;
}
static void drain_shadow_vcpus(struct shadow_vcpu_state *shadow_vcpus,
static void drain_shadow_vcpus(struct shadow_vcpu_state *shadow_vcpus[],
unsigned int nr_vcpus,
struct kvm_hyp_memcache *mc)
{
int i;
for (i = 0; i < nr_vcpus; i++) {
struct kvm_vcpu *shadow_vcpu = &shadow_vcpus[i].vcpu;
struct kvm_vcpu *shadow_vcpu = &shadow_vcpus[i]->vcpu;
struct kvm_hyp_memcache *vcpu_mc = &shadow_vcpu->arch.pkvm_memcache;
void *addr;
@@ -632,8 +641,6 @@ static void drain_shadow_vcpus(struct shadow_vcpu_state *shadow_vcpus,
* Must be a multiple of the page size.
* pgd: The host va of the area being donated for the stage-2 PGD for the VM.
* Must be page aligned. Its size is implied by the VM's VTCR.
* Note: An array to the host KVM VCPUs (host VA) is passed via the pgd, as to
* not to be dependent on how the VCPU's are layed out in struct kvm.
*
* Return a unique handle to the protected VM on success,
* negative error code on failure.
@@ -685,19 +692,13 @@ int __pkvm_init_shadow(struct kvm *kvm,
if (ret)
goto err_remove_mappings;
ret = set_host_vcpus(vm->shadow_vcpus, nr_vcpus, pgd, pgd_size);
if (ret)
goto err_remove_pgd;
ret = init_shadow_structs(kvm, vm, pgd, nr_vcpus);
if (ret < 0)
goto err_unpin_host_vcpus;
init_shadow_vm(kvm, vm, nr_vcpus);
/* Add the entry to the shadow table. */
hyp_spin_lock(&shadow_lock);
ret = insert_shadow_table(kvm, vm, shadow_size);
if (ret < 0)
goto err_unlock_unpin_host_vcpus;
goto err_unlock;
ret = kvm_guest_prepare_stage2(vm, pgd);
if (ret)
@@ -708,34 +709,106 @@ int __pkvm_init_shadow(struct kvm *kvm,
err_remove_shadow_table:
remove_shadow_table(vm->shadow_handle);
err_unlock_unpin_host_vcpus:
err_unlock:
hyp_spin_unlock(&shadow_lock);
err_unpin_host_vcpus:
unpin_host_vcpus(vm->shadow_vcpus, nr_vcpus);
err_remove_pgd:
WARN_ON(__pkvm_hyp_donate_host(hyp_virt_to_pfn(pgd), nr_pgd_pages));
err_remove_mappings:
/* Clear the donated shadow memory on failure to avoid data leaks. */
memset(vm, 0, shadow_size);
WARN_ON(__pkvm_hyp_donate_host(hyp_phys_to_pfn(shadow_pa),
shadow_size >> PAGE_SHIFT));
err:
hyp_unpin_shared_mem(kvm, kvm + 1);
return ret;
}
/*
* Initialize the protected vcpu state shadow copy in host-donated memory.
*
* shadow_handle: The handle for the protected vm.
* host_vcpu: A pointer to the corresponding host vcpu (host va).
* shadow_vcpu_hva: The host va of the area being donated for the vcpu state.
* Must be page aligned. The size of the area must be equal to
* the paged-aligned size of kvm_shadow_vcpu_state.
*
* Return 0 on success, negative error code on failure.
*/
int __pkvm_init_shadow_vcpu(unsigned int shadow_handle,
struct kvm_vcpu *host_vcpu,
void *shadow_vcpu_hva)
{
struct kvm_shadow_vm *vm;
struct shadow_vcpu_state *shadow_state = kern_hyp_va(shadow_vcpu_hva);
size_t vcpu_state_sz = sizeof(*shadow_state);
u64 nr_pages = PAGE_ALIGN(vcpu_state_sz) >> PAGE_SHIFT;
unsigned int idx;
int ret;
if (!PAGE_ALIGNED(shadow_vcpu_hva))
return -EINVAL;
ret = __pkvm_host_donate_hyp(hyp_virt_to_pfn(shadow_state),
nr_pages);
if (ret)
return ret;
memset(shadow_state, 0, vcpu_state_sz);
hyp_spin_lock(&shadow_lock);
vm = find_shadow_by_handle(shadow_handle);
if (!vm) {
ret = -ENOENT;
goto unlock;
}
idx = vm->nr_vcpus;
if (idx >= vm->created_vcpus) {
ret = -EINVAL;
goto unlock;
}
ret = init_shadow_vcpu(shadow_state, host_vcpu, vm, idx);
if (ret)
goto unlock;
vm->shadow_vcpus[idx] = shadow_state;
vm->nr_vcpus++;
unlock:
hyp_spin_unlock(&shadow_lock);
if (ret) {
memset(shadow_state, 0, vcpu_state_sz);
WARN_ON(__pkvm_hyp_donate_host(hyp_virt_to_pfn(shadow_state),
nr_pages));
}
return ret;
}
static void teardown_donated_memory(struct kvm_hyp_memcache *mc, void *addr,
size_t size)
{
u64 pfn = hyp_phys_to_pfn(__hyp_pa(addr));
u64 nr_pages = size >> PAGE_SHIFT;
void *start;
memset(addr, 0, size);
kvm_flush_dcache_to_poc(addr, size);
for (start = addr; start < addr + size; start += PAGE_SIZE)
push_hyp_memcache(mc, start, hyp_virt_to_phys);
WARN_ON(__pkvm_hyp_donate_host(pfn, nr_pages));
}
int __pkvm_teardown_shadow(int shadow_handle)
{
struct kvm_hyp_memcache *mc;
struct kvm_shadow_vm *vm;
struct kvm *host_kvm;
size_t shadow_size;
unsigned int nr_vcpus;
int err;
u64 pfn;
u64 nr_pages;
void *addr;
int i;
/* Lookup then remove entry from the shadow table. */
@@ -751,6 +824,9 @@ int __pkvm_teardown_shadow(int shadow_handle)
goto err_unlock;
}
host_kvm = vm->host_kvm;
nr_vcpus = vm->nr_vcpus;
/*
* Clear the tracking for last_loaded_vcpu for all cpus for this vm in
* case the same addresses for those vcpus are reused for future vms.
@@ -770,22 +846,17 @@ int __pkvm_teardown_shadow(int shadow_handle)
hyp_spin_unlock(&shadow_lock);
/* Reclaim guest pages, and page-table pages */
mc = &vm->host_kvm->arch.pkvm.teardown_mc;
mc = &host_kvm->arch.pkvm.teardown_mc;
reclaim_guest_pages(vm, mc);
drain_shadow_vcpus(vm->shadow_vcpus, vm->created_vcpus, mc);
unpin_host_vcpus(vm->shadow_vcpus, vm->created_vcpus);
drain_shadow_vcpus(vm->shadow_vcpus, nr_vcpus, mc);
unpin_host_vcpus(vm->shadow_vcpus, nr_vcpus);
for (i = 0; i < nr_vcpus; i++)
teardown_donated_memory(mc, vm->shadow_vcpus[i],
PAGE_ALIGN(sizeof(vm->shadow_vcpus[i])));
teardown_donated_memory(mc, vm, vm->shadow_area_size);
/* Push the metadata pages to the teardown memcache */
shadow_size = vm->shadow_area_size;
host_kvm = vm->host_kvm;
memset(vm, 0, shadow_size);
for (addr = vm; addr < ((void *)vm + shadow_size); addr += PAGE_SIZE)
push_hyp_memcache(mc, addr, hyp_virt_to_phys);
hyp_unpin_shared_mem(host_kvm, host_kvm + 1);
pfn = hyp_phys_to_pfn(__hyp_pa(vm));
nr_pages = shadow_size >> PAGE_SHIFT;
WARN_ON(__pkvm_hyp_donate_host(pfn, nr_pages));
return 0;
err_unlock:
@@ -851,14 +922,7 @@ void pkvm_reset_vcpu(struct kvm_vcpu *vcpu)
WARN_ON(!reset_state->reset);
if (test_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, vcpu->arch.features) ||
test_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, vcpu->arch.features)) {
/*
* This call should not fail since we've already checked for
* feature support on initialization.
*/
WARN_ON(kvm_vcpu_enable_ptrauth(vcpu));
}
init_ptrauth(vcpu);
/* Reset core registers */
memset(vcpu_gp_regs(vcpu), 0, sizeof(*vcpu_gp_regs(vcpu)));
@@ -913,7 +977,7 @@ struct kvm_vcpu *pvm_mpidr_to_vcpu(struct kvm_shadow_vm *vm, unsigned long mpidr
mpidr &= MPIDR_HWID_BITMASK;
for (i = 0; i < vm->created_vcpus; i++) {
for (i = 0; i < READ_ONCE(vm->nr_vcpus); i++) {
vcpu = vm->vcpus[i];
if (mpidr == kvm_vcpu_get_mpidr_aff(vcpu))
@@ -1030,7 +1094,7 @@ static bool pvm_psci_vcpu_affinity_info(struct kvm_vcpu *vcpu)
* then if at least one is PENDING_ON then return PENDING_ON.
* Otherwise, return OFF.
*/
for (i = 0; i < vm->created_vcpus; i++) {
for (i = 0; i < READ_ONCE(vm->nr_vcpus); i++) {
tmp = vm->vcpus[i];
mpidr = kvm_vcpu_get_mpidr_aff(tmp);
@@ -1240,7 +1304,7 @@ out_guest_err:
static bool pkvm_install_ioguard_page(struct kvm_vcpu *vcpu, u64 *exit_code)
{
u32 retval = SMCCC_RET_SUCCESS;
u64 retval = SMCCC_RET_SUCCESS;
u64 ipa = smccc_get_arg1(vcpu);
int ret;
@@ -1332,6 +1396,8 @@ bool kvm_handle_pvm_hvc64(struct kvm_vcpu *vcpu, u64 *exit_code)
return pkvm_install_ioguard_page(vcpu, exit_code);
case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_UNMAP_FUNC_ID:
if (__pkvm_remove_ioguard_page(vcpu, vcpu_get_reg(vcpu, 1)))
val[0] = SMCCC_RET_INVALID_PARAMETER;
else
val[0] = SMCCC_RET_SUCCESS;
break;
case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_INFO_FUNC_ID:

View File

@@ -235,7 +235,7 @@ static u64 psci_mem_protect(s64 offset)
return cnt;
if (!cnt || !new)
psci_call(PSCI_1_1_FN64_MEM_PROTECT, offset < 0 ? 0 : 1, 0, 0);
psci_call(PSCI_1_1_FN_MEM_PROTECT, offset < 0 ? 0 : 1, 0, 0);
cnt = new;
return cnt;
@@ -307,10 +307,8 @@ static unsigned long psci_1_0_handler(u64 func_id, struct kvm_cpu_context *host_
case PSCI_1_1_FN64_SYSTEM_RESET2:
pkvm_clear_pvmfw_pages();
hyp_spin_lock(&mem_protect_lock);
if (psci_mem_protect_active()) {
return psci_0_2_handler(PSCI_0_2_FN_SYSTEM_RESET,
host_ctxt);
}
if (psci_mem_protect_active())
cpu_reg(host_ctxt, 0) = PSCI_0_2_FN_SYSTEM_RESET;
fallthrough;
case PSCI_1_0_FN_PSCI_FEATURES:
case PSCI_1_0_FN_SET_SUSPEND_MODE:

View File

@@ -120,7 +120,7 @@ static void __hyp_vgic_restore_state(struct kvm_vcpu *vcpu)
}
}
/**
/*
* Disable host events, enable guest events
*/
static bool __pmu_switch_to_guest(struct kvm_cpu_context *host_ctxt)
@@ -140,7 +140,7 @@ static bool __pmu_switch_to_guest(struct kvm_cpu_context *host_ctxt)
return (pmu->events_host || pmu->events_guest);
}
/**
/*
* Disable guest events, enable host events
*/
static void __pmu_switch_to_host(struct kvm_cpu_context *host_ctxt)
@@ -158,7 +158,7 @@ static void __pmu_switch_to_host(struct kvm_cpu_context *host_ctxt)
write_sysreg(pmu->events_host, pmcntenset_el0);
}
/**
/*
* Handler for protected VM MSR, MRS or System instruction execution in AArch64.
*
* Returns true if the hypervisor has handled the exit, and control should go
@@ -175,7 +175,7 @@ static bool kvm_handle_pvm_sys64(struct kvm_vcpu *vcpu, u64 *exit_code)
kvm_handle_pvm_sysreg(vcpu, exit_code));
}
/**
/*
* Handler for protected floating-point and Advanced SIMD accesses.
*
* Returns true if the hypervisor has handled the exit, and control should go

View File

@@ -89,8 +89,8 @@ static u64 get_pvm_id_aa64pfr0(const struct kvm_vcpu *vcpu)
u64 set_mask = 0;
u64 allow_mask = PVM_ID_AA64PFR0_ALLOW;
if (!vcpu_has_sve(vcpu))
allow_mask &= ~ARM64_FEATURE_MASK(ID_AA64PFR0_SVE);
/* SVE not supported for now. */
allow_mask &= ~ARM64_FEATURE_MASK(ID_AA64PFR0_SVE);
set_mask |= get_restricted_features_unsigned(id_aa64pfr0_el1_sys_val,
PVM_ID_AA64PFR0_RESTRICT_UNSIGNED);

View File

@@ -117,8 +117,8 @@ void __init kvm_hyp_reserve(void)
*/
static int __create_el2_shadow(struct kvm *kvm)
{
struct kvm_vcpu *vcpu, **vcpu_array;
size_t pgd_sz, shadow_sz;
struct kvm_vcpu *vcpu;
size_t pgd_sz, shadow_sz, vcpu_state_sz;
void *pgd, *shadow_addr;
unsigned long idx;
int shadow_handle;
@@ -137,21 +137,15 @@ static int __create_el2_shadow(struct kvm *kvm)
if (!pgd)
return -ENOMEM;
/* Allocate memory to donate to hyp for the kvm and vcpu state. */
/* Allocate memory to donate to hyp for the kvm and vcpu state pointers. */
shadow_sz = PAGE_ALIGN(KVM_SHADOW_VM_SIZE +
SHADOW_VCPU_STATE_SIZE * kvm->created_vcpus);
sizeof(void *) * kvm->created_vcpus);
shadow_addr = alloc_pages_exact(shadow_sz, GFP_KERNEL_ACCOUNT);
if (!shadow_addr) {
ret = -ENOMEM;
goto free_pgd;
}
/* Stash the vcpu pointers into the PGD */
BUILD_BUG_ON(KVM_MAX_VCPUS > (PAGE_SIZE / sizeof(u64)));
vcpu_array = pgd;
kvm_for_each_vcpu(idx, vcpu, kvm)
vcpu_array[idx] = vcpu;
/* Donate the shadow memory to hyp and let hyp initialize it. */
ret = kvm_call_hyp_nvhe(__pkvm_init_shadow, kvm, shadow_addr, shadow_sz,
pgd);
@@ -163,8 +157,35 @@ static int __create_el2_shadow(struct kvm *kvm)
/* Store the shadow handle given by hyp for future call reference. */
kvm->arch.pkvm.shadow_handle = shadow_handle;
/* Donate memory for the vcpu state at hyp and initialize it. */
vcpu_state_sz = PAGE_ALIGN(SHADOW_VCPU_STATE_SIZE);
kvm_for_each_vcpu (idx, vcpu, kvm) {
void *vcpu_state;
/* Indexing of the vcpus to be sequential starting at 0. */
if (WARN_ON(vcpu->vcpu_idx != idx)) {
ret = -EINVAL;
goto destroy_vm;
}
vcpu_state = alloc_pages_exact(vcpu_state_sz, GFP_KERNEL_ACCOUNT);
if (!vcpu_state) {
ret = -ENOMEM;
goto destroy_vm;
}
ret = kvm_call_hyp_nvhe(__pkvm_init_shadow_vcpu, shadow_handle,
vcpu, vcpu_state);
if (ret) {
free_pages_exact(vcpu_state, vcpu_state_sz);
goto destroy_vm;
}
}
return 0;
destroy_vm:
kvm_shadow_destroy(kvm);
return ret;
free_shadow:
free_pages_exact(shadow_addr, shadow_sz);
free_pgd:

View File

@@ -188,15 +188,11 @@ static void kvm_psci_system_reset2(struct kvm_vcpu *vcpu)
static unsigned long kvm_psci_check_allowed_function(struct kvm_vcpu *vcpu, u32 fn)
{
switch(fn) {
case PSCI_0_2_FN64_CPU_SUSPEND:
case PSCI_0_2_FN64_CPU_ON:
case PSCI_0_2_FN64_AFFINITY_INFO:
/* Disallow these functions for 32bit guests */
if (vcpu_mode_is_32bit(vcpu))
return PSCI_RET_NOT_SUPPORTED;
break;
}
/*
* Prevent 32 bit guests from calling 64 bit PSCI functions.
*/
if ((fn & PSCI_0_2_64BIT) && vcpu_mode_is_32bit(vcpu))
return PSCI_RET_NOT_SUPPORTED;
return 0;
}
@@ -208,10 +204,6 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
unsigned long val;
int ret = 1;
val = kvm_psci_check_allowed_function(vcpu, psci_fn);
if (val)
goto out;
switch (psci_fn) {
case PSCI_0_2_FN_PSCI_VERSION:
/*
@@ -279,7 +271,6 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
break;
}
out:
smccc_set_retval(vcpu, val, 0, 0, 0);
return ret;
}
@@ -399,6 +390,15 @@ static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
*/
int kvm_psci_call(struct kvm_vcpu *vcpu)
{
u32 psci_fn = smccc_get_function(vcpu);
unsigned long val;
val = kvm_psci_check_allowed_function(vcpu, psci_fn);
if (val) {
smccc_set_retval(vcpu, val, 0, 0, 0);
return 1;
}
switch (kvm_psci_version(vcpu, vcpu->kvm)) {
case KVM_ARM_PSCI_1_1:
return kvm_psci_1_x_call(vcpu, 1);

View File

@@ -1048,8 +1048,7 @@ static u64 read_id_reg(const struct kvm_vcpu *vcpu,
val |= FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_CSV2), (u64)vcpu->kvm->arch.pfr0_csv2);
val &= ~ARM64_FEATURE_MASK(ID_AA64PFR0_CSV3);
val |= FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_CSV3), (u64)vcpu->kvm->arch.pfr0_csv3);
if (irqchip_in_kernel(vcpu->kvm) &&
vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) {
if (kvm_vgic_global_state.type == VGIC_V3) {
val &= ~ARM64_FEATURE_MASK(ID_AA64PFR0_GIC);
val |= FIELD_PREP(ARM64_FEATURE_MASK(ID_AA64PFR0_GIC), 1);
}

View File

@@ -683,11 +683,6 @@ int vgic_v3_probe(const struct gic_kvm_info *info)
if (kvm_vgic_global_state.vcpu_base == 0)
kvm_info("disabling GICv2 emulation\n");
if (cpus_have_const_cap(ARM64_WORKAROUND_CAVIUM_30115)) {
group0_trap = true;
group1_trap = true;
}
if (vgic_v3_broken_seis()) {
kvm_info("GICv3 with broken locally generated SEI\n");

View File

@@ -18,13 +18,6 @@
* x1 - src
*/
SYM_FUNC_START_PI(copy_page)
alternative_if ARM64_HAS_NO_HW_PREFETCH
// Prefetch three cache lines ahead.
prfm pldl1strm, [x1, #128]
prfm pldl1strm, [x1, #256]
prfm pldl1strm, [x1, #384]
alternative_else_nop_endif
ldp x2, x3, [x1]
ldp x4, x5, [x1, #16]
ldp x6, x7, [x1, #32]
@@ -39,10 +32,6 @@ alternative_else_nop_endif
1:
tst x0, #(PAGE_SIZE - 1)
alternative_if ARM64_HAS_NO_HW_PREFETCH
prfm pldl1strm, [x1, #384]
alternative_else_nop_endif
stnp x2, x3, [x0, #-256]
ldp x2, x3, [x1]
stnp x4, x5, [x0, #16 - 256]

View File

@@ -230,6 +230,8 @@ SYM_FUNC_END_PI(__dma_flush_area)
* - dir - DMA direction
*/
SYM_FUNC_START_PI(__dma_map_area)
cmp w2, #DMA_FROM_DEVICE
b.eq __dma_flush_area
add x1, x0, x1
b __dma_clean_area
SYM_FUNC_END_PI(__dma_map_area)

View File

@@ -338,12 +338,7 @@ EXPORT_SYMBOL_GPL(arm64_mm_context_put);
/* Errata workaround post TTBRx_EL1 update. */
asmlinkage void post_ttbr_update_workaround(void)
{
if (!IS_ENABLED(CONFIG_CAVIUM_ERRATUM_27456))
return;
asm(ALTERNATIVE("nop; nop; nop",
"ic iallu; dsb nsh; isb",
ARM64_WORKAROUND_CAVIUM_27456));
return;
}
void cpu_do_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm)

View File

@@ -542,9 +542,7 @@ static int __kprobes do_page_fault(unsigned long far, unsigned int esr,
unsigned int mm_flags = FAULT_FLAG_DEFAULT;
unsigned long addr = untagged_addr(far);
#ifdef CONFIG_SPECULATIVE_PAGE_FAULT
struct vm_area_struct *orig_vma = NULL;
struct vm_area_struct *vma;
struct vm_area_struct pvma;
unsigned long seq;
#endif
@@ -618,41 +616,29 @@ static int __kprobes do_page_fault(unsigned long far, unsigned int esr,
count_vm_spf_event(SPF_ABORT_ODD);
goto spf_abort;
}
rcu_read_lock();
vma = __find_vma(mm, addr);
if (!vma || vma->vm_start > addr) {
rcu_read_unlock();
vma = get_vma(mm, addr);
if (!vma) {
count_vm_spf_event(SPF_ABORT_UNMAPPED);
goto spf_abort;
}
if (!vma_can_speculate(vma, mm_flags)) {
rcu_read_unlock();
put_vma(vma);
count_vm_spf_event(SPF_ABORT_NO_SPECULATE);
goto spf_abort;
}
if (vma->vm_file) {
if (!vma_get_file_ref(vma)) {
rcu_read_unlock();
count_vm_spf_event(SPF_ABORT_UNMAPPED);
goto spf_abort;
}
orig_vma = vma;
}
pvma = *vma;
rcu_read_unlock();
if (!mmap_seq_read_check(mm, seq, SPF_ABORT_VMA_COPY)) {
vma_put_file_ref(orig_vma);
put_vma(vma);
goto spf_abort;
}
vma = &pvma;
if (!(vma->vm_flags & vm_flags)) {
put_vma(vma);
count_vm_spf_event(SPF_ABORT_ACCESS_ERROR);
vma_put_file_ref(orig_vma);
goto spf_abort;
}
fault = do_handle_mm_fault(vma, addr & PAGE_MASK,
mm_flags | FAULT_FLAG_SPECULATIVE, seq, regs);
vma_put_file_ref(orig_vma);
put_vma(vma);
/* Quick path to respond to signals */
if (fault_signal_pending(fault, regs)) {

View File

@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
#
# Internal CPU capabilities constants, keep this list sorted
# Internal CPU capabilities constants
BTI
# Unreliable: use system_supports_32bit_el0() instead.
@@ -26,7 +26,8 @@ HAS_IRQ_PRIO_MASKING
HAS_LDAPR
HAS_LSE_ATOMICS
HAS_NO_FPSIMD
HAS_NO_HW_PREFETCH
# HAS_NO_HW_PREFETCH
ANDROID_RESERVED_1
HAS_PAN
HAS_RAS_EXTN
HAS_RNG
@@ -54,15 +55,20 @@ WORKAROUND_858921
WORKAROUND_1418040
WORKAROUND_1463225
WORKAROUND_1508412
WORKAROUND_1542419
# WORKAROUND_1542419
ANDROID_RESERVED_2
WORKAROUND_TRBE_OVERWRITE_FILL_MODE
WORKAROUND_TSB_FLUSH_FAILURE
WORKAROUND_TRBE_WRITE_OUT_OF_RANGE
WORKAROUND_CAVIUM_23154
WORKAROUND_CAVIUM_27456
WORKAROUND_CAVIUM_30115
WORKAROUND_CAVIUM_TX2_219_PRFM
WORKAROUND_CAVIUM_TX2_219_TVM
# WORKAROUND_CAVIUM_27456
ANDROID_RESERVED_3
# WORKAROUND_CAVIUM_30115
ANDROID_RESERVED_4
# WORKAROUND_CAVIUM_TX2_219_PRFM
ANDROID_RESERVED_5
# WORKAROUND_CAVIUM_TX2_219_TVM
ANDROID_RESERVED_6
WORKAROUND_CLEAN_CACHE
WORKAROUND_DEVICE_LOAD_ACQUIRE
WORKAROUND_NVIDIA_CARMEL_CNP

View File

@@ -5,9 +5,9 @@
#include <linux/bitops.h>
#include <asm/segment.h>
#include <linux/cache.h>
#include <asm/ptrace.h>
#include <asm/current.h>
#include <asm/cache.h>
#include <abi/reg_ops.h>
#include <abi/regdef.h>
#include <abi/switch_context.h>

View File

@@ -30,9 +30,11 @@ $(obj)/vmlinux.bin: vmlinux FORCE
suffix-$(CONFIG_KERNEL_GZIP) := gzip
suffix-$(CONFIG_KERNEL_LZO) := lzo
compress-$(CONFIG_KERNEL_GZIP) := gzip
compress-$(CONFIG_KERNEL_LZO) := lzo_with_size
$(obj)/vmlinux.bin.$(suffix-y): $(obj)/vmlinux.bin FORCE
$(call if_changed,$(suffix-y))
$(call if_changed,$(compress-y))
LDFLAGS_piggy.o := -r --format binary --oformat elf32-h8300-linux -T
OBJCOPYFLAGS := -O binary

View File

@@ -80,12 +80,12 @@ $(obj)/vmlinux.bin: $(KBUILD_IMAGE) FORCE
$(call if_changed,objcopy)
tool_$(CONFIG_KERNEL_GZIP) = gzip
tool_$(CONFIG_KERNEL_BZIP2) = bzip2
tool_$(CONFIG_KERNEL_LZ4) = lz4
tool_$(CONFIG_KERNEL_LZMA) = lzma
tool_$(CONFIG_KERNEL_LZO) = lzo
tool_$(CONFIG_KERNEL_XZ) = xzkern
tool_$(CONFIG_KERNEL_ZSTD) = zstd22
tool_$(CONFIG_KERNEL_BZIP2) = bzip2_with_size
tool_$(CONFIG_KERNEL_LZ4) = lz4_with_size
tool_$(CONFIG_KERNEL_LZMA) = lzma_with_size
tool_$(CONFIG_KERNEL_LZO) = lzo_with_size
tool_$(CONFIG_KERNEL_XZ) = xzkern_with_size
tool_$(CONFIG_KERNEL_ZSTD) = zstd22_with_size
targets += vmlinux.bin.z

View File

@@ -73,15 +73,15 @@ suffix-$(CONFIG_KERNEL_XZ) := xz
$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
$(call if_changed,gzip)
$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
$(call if_changed,bzip2)
$(call if_changed,bzip2_with_size)
$(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lz4)
$(call if_changed,lz4_with_size)
$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lzma)
$(call if_changed,lzma_with_size)
$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lzo)
$(call if_changed,lzo_with_size)
$(obj)/vmlinux.bin.xz: $(vmlinux.bin.all-y) FORCE
$(call if_changed,xzkern)
$(call if_changed,xzkern_with_size)
LDFLAGS_piggy.o := -r --format binary --oformat $(LD_BFD) -T
$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.$(suffix-y) FORCE

View File

@@ -12,6 +12,7 @@
#ifdef CONFIG_PPC64
#include <linux/cache.h>
#include <linux/string.h>
#include <asm/types.h>
#include <asm/lppaca.h>

View File

@@ -395,8 +395,6 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address,
vm_fault_t fault, major = 0;
bool kprobe_fault = kprobe_page_fault(regs, 11);
#ifdef CONFIG_SPECULATIVE_PAGE_FAULT
struct vm_area_struct *orig_vma = NULL;
struct vm_area_struct pvma;
unsigned long seq;
#endif
@@ -469,49 +467,37 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address,
count_vm_spf_event(SPF_ABORT_ODD);
goto spf_abort;
}
rcu_read_lock();
vma = __find_vma(mm, address);
if (!vma || vma->vm_start > address) {
rcu_read_unlock();
vma = get_vma(mm, address);
if (!vma) {
count_vm_spf_event(SPF_ABORT_UNMAPPED);
goto spf_abort;
}
if (!vma_can_speculate(vma, flags)) {
rcu_read_unlock();
put_vma(vma);
count_vm_spf_event(SPF_ABORT_NO_SPECULATE);
goto spf_abort;
}
if (vma->vm_file) {
if (!vma_get_file_ref(vma)) {
rcu_read_unlock();
count_vm_spf_event(SPF_ABORT_UNMAPPED);
goto spf_abort;
}
orig_vma = vma;
}
pvma = *vma;
rcu_read_unlock();
if (!mmap_seq_read_check(mm, seq, SPF_ABORT_VMA_COPY)) {
vma_put_file_ref(orig_vma);
put_vma(vma);
goto spf_abort;
}
vma = &pvma;
#ifdef CONFIG_PPC_MEM_KEYS
if (unlikely(access_pkey_error(is_write, is_exec,
(error_code & DSISR_KEYFAULT), vma))) {
put_vma(vma);
count_vm_spf_event(SPF_ABORT_ACCESS_ERROR);
vma_put_file_ref(orig_vma);
goto spf_abort;
}
#endif /* CONFIG_PPC_MEM_KEYS */
if (unlikely(access_error(is_write, is_exec, vma))) {
put_vma(vma);
count_vm_spf_event(SPF_ABORT_ACCESS_ERROR);
vma_put_file_ref(orig_vma);
goto spf_abort;
}
fault = do_handle_mm_fault(vma, address,
flags | FAULT_FLAG_SPECULATIVE, seq, regs);
vma_put_file_ref(orig_vma);
flags | FAULT_FLAG_SPECULATIVE, seq, regs);
put_vma(vma);
major |= fault & VM_FAULT_MAJOR;
if (fault_signal_pending(fault, regs))

View File

@@ -71,17 +71,17 @@ suffix-$(CONFIG_KERNEL_ZSTD) := .zst
$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
$(call if_changed,gzip)
$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
$(call if_changed,bzip2)
$(call if_changed,bzip2_with_size)
$(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lz4)
$(call if_changed,lz4_with_size)
$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lzma)
$(call if_changed,lzma_with_size)
$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lzo)
$(call if_changed,lzo_with_size)
$(obj)/vmlinux.bin.xz: $(vmlinux.bin.all-y) FORCE
$(call if_changed,xzkern)
$(call if_changed,xzkern_with_size)
$(obj)/vmlinux.bin.zst: $(vmlinux.bin.all-y) FORCE
$(call if_changed,zstd22)
$(call if_changed,zstd22_with_size)
OBJCOPYFLAGS_piggy.o := -I binary -O elf64-s390 -B s390:64-bit --rename-section .data=.vmlinux.bin.compressed
$(obj)/piggy.o: $(obj)/vmlinux.bin$(suffix-y) FORCE

View File

@@ -58,13 +58,13 @@ vmlinux.bin.all-y := $(obj)/vmlinux.bin
$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
$(call if_changed,gzip)
$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
$(call if_changed,bzip2)
$(call if_changed,bzip2_with_size)
$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lzma)
$(call if_changed,lzma_with_size)
$(obj)/vmlinux.bin.xz: $(vmlinux.bin.all-y) FORCE
$(call if_changed,xzkern)
$(call if_changed,xzkern_with_size)
$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lzo)
$(call if_changed,lzo_with_size)
OBJCOPYFLAGS += -R .empty_zero_page

View File

@@ -85,7 +85,7 @@ config X86
select ARCH_HAS_PMEM_API if X86_64
select ARCH_HAS_PTE_DEVMAP if X86_64
select ARCH_HAS_PTE_SPECIAL
select ARCH_HAS_NONLEAF_PMD_YOUNG
select ARCH_HAS_NONLEAF_PMD_YOUNG if PGTABLE_LEVELS > 2
select ARCH_HAS_UACCESS_FLUSHCACHE if X86_64
select ARCH_HAS_COPY_MC if X86_64
select ARCH_HAS_SET_MEMORY

View File

@@ -130,17 +130,17 @@ vmlinux.bin.all-$(CONFIG_X86_NEED_RELOCS) += $(obj)/vmlinux.relocs
$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
$(call if_changed,gzip)
$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
$(call if_changed,bzip2)
$(call if_changed,bzip2_with_size)
$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lzma)
$(call if_changed,lzma_with_size)
$(obj)/vmlinux.bin.xz: $(vmlinux.bin.all-y) FORCE
$(call if_changed,xzkern)
$(call if_changed,xzkern_with_size)
$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lzo)
$(call if_changed,lzo_with_size)
$(obj)/vmlinux.bin.lz4: $(vmlinux.bin.all-y) FORCE
$(call if_changed,lz4)
$(call if_changed,lz4_with_size)
$(obj)/vmlinux.bin.zst: $(vmlinux.bin.all-y) FORCE
$(call if_changed,zstd22)
$(call if_changed,zstd22_with_size)
suffix-$(CONFIG_KERNEL_GZIP) := gz
suffix-$(CONFIG_KERNEL_BZIP2) := bz2

View File

@@ -61,6 +61,7 @@ CONFIG_NR_CPUS=32
CONFIG_EFI=y
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="stack_depot_disable=on cgroup_disable=pressure"
CONFIG_HIBERNATION=y
CONFIG_PM_WAKELOCKS=y
CONFIG_PM_WAKELOCKS_LIMIT=0
# CONFIG_PM_WAKELOCKS_GC is not set
@@ -453,6 +454,7 @@ CONFIG_USB_CONFIGFS_F_ACC=y
CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
CONFIG_USB_CONFIGFS_F_MIDI=y
CONFIG_USB_CONFIGFS_F_HID=y
CONFIG_USB_CONFIGFS_F_UVC=y
CONFIG_TYPEC=y
CONFIG_TYPEC_TCPM=y
CONFIG_TYPEC_TCPCI=y
@@ -464,6 +466,7 @@ CONFIG_MMC_CRYPTO=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_LEDS_CLASS_FLASH=y
CONFIG_LEDS_CLASS_MULTICOLOR=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_TRANSIENT=y
CONFIG_EDAC=y
@@ -499,6 +502,7 @@ CONFIG_EXT4_FS_SECURITY=y
CONFIG_F2FS_FS=y
CONFIG_F2FS_FS_SECURITY=y
CONFIG_F2FS_FS_COMPRESSION=y
CONFIG_F2FS_UNFAIR_RWSEM=y
CONFIG_FS_ENCRYPTION=y
CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
CONFIG_FS_VERITY=y
@@ -582,8 +586,10 @@ CONFIG_SECURITY_SELINUX=y
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
CONFIG_CRYPTO_CHACHA20POLY1305=y
CONFIG_CRYPTO_ADIANTUM=y
CONFIG_CRYPTO_HCTR2=y
CONFIG_CRYPTO_XCBC=y
CONFIG_CRYPTO_BLAKE2B=y
CONFIG_CRYPTO_POLYVAL_CLMUL_NI=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA256_SSSE3=y
CONFIG_CRYPTO_SHA512_SSSE3=y

Some files were not shown because too many files have changed in this diff Show More