Merge branch android14-6.1 into android14-6.1-lts
Sync up with the android14-6.1 branch due to the latest ABI update that happened on it. This includes the following commits:08f3189337
ANDROID: ABI: Update oplus symbol list3efffff553
ANDROID: Allow vendor module to reclaim a memcgf627d47d36
ANDROID: Export memcg functions to allow module to add new files032458b9cb
ANDROID: vendor_hooks: add hooks in mem_cgroup subsystemed1e17fc4b
ANDROID: GKI: Update symbols to symbol list0ab6144add
ANDROID: block: export tracepoints57750518de
ANDROID: vendor_hook: Avoid clearing protect-flag before waking waitersaacbded3ac
ANDROID: KVM: arm64: Deprecate late pKVM module loading0fbbb18ab0
ANDROID: ABI: Update symbol for Exynos SoCa1c9b5c53b
ANDROID: 6/7/2023 KMI updatee98206b0af
ANDROID: db845c: Update symbol list9f9c67c073
FROMLIST: ufs: core: Add error handling for MCQ mode4f319f6367
FROMLIST: ufs: mcq: Use ufshcd_mcq_poll_cqe_lock() in mcq modee3d62e38a9
FROMLIST: ufs: mcq: Added ufshcd_mcq_abort()d61719a08e
FROMLIST: ufs: mcq: Add support for clean up mcq resources2bbead6020
FROMLIST: ufs: mcq: Add supporting functions for mcq abort1cb86cc92e
FROMLIST: ufs: core: Update the ufshcd_clear_cmds() functionality0866848447
FROMLIST: ufs: core: Combine 32-bit command_desc_base_addr_lo/hi8326170bb6
ANDROID: GKI: Add OEM data to mutex/rwsemb0375cb69c
BACKPORT: mm: Multi-gen LRU: remove wait_event_killable()5d26262b76
FROMGIT: Binder: Add async from to transaction recordf00a145958
BACKPORT: FROMGIT: Binder: Add timestamp to transaction recordd7b3d8d1e5
ANDROID: GKI: add ANDROID_OEM_DATA() in struct request_queue643c727c8e
ANDROID: GKI: Add ANDROID_OEM_DATA() in struct ufs_hba7c76ad4d21
ANDROID: GKI: add ANDROID_OEM_DATA in struct biofcfa42b67b
ANDROID: GKI: Add ANDROID_OEM_DATA() in struct queue_limits72515e57f0
ANDROID: GKI: Add ANDROID_OEM_DATA in struct ufs_dev_infoa10d9e3fd6
ANDROID: sched: Add oem data in struct rq87881c4dd1
ANDROID: nl80211: reserve UAPI attributes to support backporting after KMI freeze10cb62e6ca
ANDROID: GKI: mm: Add Android ABI padding to MGLRU structures4081f368be
ANDROID: abi_gki_aarch64_qcom: Add secure hibernation APIs3cd0cc9e1b
ANDROID: abi_gki_aarch64_qcom: Add hibernation APIs154b4b9f1a
ANDROID: vendor hooks: Encrypt snapshot for bootloader based hibernationdefdc4d1dd
UPSTREAM: tty: serial: qcom-geni-serial: Add support for Hibernation featurec81f4841b4
ANDROID: abi_gki_aarch64_qcom: Add clk_restore_context and clk_save_contextd7e1f4f021
ANDROID: vendor hooks: Add hooks to support bootloader based hibernationd57acebb45
ANDROID: gki_defconfig: Enable CONFIG_HIBERNATION flag62db17973a
ANDROID: vendor hooks: Export symbols for bootloader based hibernation17537ba480
ANDROID: gki_defconfig: enable CONFIG_LED_TRIGGER_PHY640d3b737d
ANDROID: add vendor fields to swap_info_struct to record swap stats672eca4c06
ANDROID: add vendor fields to swap_slots_cache to support multiple swap devices3cea2a67dc
ANDROID: add vendor fields to lruvec to record refault statsa80f228e59
ANDROID: vendor_hooks: add a field in mem_cgroupddb14b6f45
ANDROID: vendor_hooks: add a field in pglist_data9920a720cc
ANDROID: GKI: Update db845c symbol list for down_writeed10529c6d
ANDROID: fix atomisp driver missing in 6.4 kernela264d8efcb
BACKPORT: mm: do not increment pgfault stats when page fault handler retries3fd1d7d4f2
ANDROID: GKI: enable per-vma lock stats78c6875e2f
UPSTREAM: mm: change per-VMA lock statistics to be disabled by defaultbfef68d9a6
UPSTREAM: s390/mm: try VMA lock-based page fault handling first200745f46a
UPSTREAM: mm: separate vma->lock from vm_area_struct23fcd3167e
UPSTREAM: mm/mmap: free vm_area_struct without call_rcu in exit_mmape04309717e
UPSTREAM: powerc/mm: try VMA lock-based page fault handling firste6bf4cded6
UPSTREAM: arm64/mm: try VMA lock-based page fault handling first51b88c16a3
UPSTREAM: x86/mm: try VMA lock-based page fault handling firstebbbcdfeaf
UPSTREAM: mm: introduce per-VMA lock statistics4e4c6989ae
UPSTREAM: mm: prevent userfaults to be handled under per-vma lock6e306e82ac
UPSTREAM: mm: prevent do_swap_page from handling page faults under VMA lock318bf22529
UPSTREAM: mm: add FAULT_FLAG_VMA_LOCK flagc06661eab5
UPSTREAM: mm: fall back to mmap_lock if vma->anon_vma is not yet set5949b78f6c
UPSTREAM: mm: introduce lock_vma_under_rcu to be used from arch-specific code35ffa4830e
BACKPORT: mm: introduce vma detached flag3c6748cd51
UPSTREAM: mm/mmap: prevent pagefault handler from racing with mmu_notifier registration3d18d86ea9
UPSTREAM: kernel/fork: assert no VMA readers during its destruction9cc64c7fb9
UPSTREAM: mm: conditionally write-lock VMA in free_pgtables5f1e1ab919
UPSTREAM: mm: write-lock VMAs before removing them from VMA tree24ecdbc5e2
UPSTREAM: mm/mremap: write-lock VMA while remapping it to a new address range2554cb4775
FROMLIST: mm/mmap: write-lock VMAs affected by VMA expansion57b3f8a5ab
FROMLIST: mm/mmap: write-lock VMAs in vma_adjust998ec9f54d
FROMLIST: mm/mmap: write-lock VMAs before merging, splitting or expanding themd73ebe031c
UPSTREAM: mm/khugepaged: write-lock VMA while collapsing a huge page3771808d64
FROMLIST: mm/mmap: move VMA locking before vma_adjust_trans_huge call6764412400
UPSTREAM: mm: mark VMA as being written when changing vm_flagsa9ea3113d4
UPSTREAM: mm: add per-VMA lock and helper functions to control it882c3512ec
UPSTREAM: mm: move mmap_lock assert function definitionse28a0a0e5c
UPSTREAM: mm: rcu safe VMA freeing04f73ad5b4
UPSTREAM: mm: introduce CONFIG_PER_VMA_LOCKef8351241d
UPSTREAM: mm: introduce vm_flags_reset_once to replace WRITE_ONCE vm_flags updates75977e5919
UPSTREAM: mm: export dump_mm()2ff3b23c7f
UPSTREAM: mm: introduce __vm_flags_mod and use it in untrack_pfn6f5e28fd18
UPSTREAM: mm: replace vma->vm_flags indirect modification in ksm_madvise5dd0547a3e
UPSTREAM: mm: replace vma->vm_flags direct modifications with modifier callsbf16383ebd
UPSTREAM: mm: replace VM_LOCKED_CLEAR_MASK with VM_LOCKED_MASK6e7028dadd
UPSTREAM: mm: introduce vma->vm_flags wrapper functionsdb341ea4da
UPSTREAM: kernel/fork: convert vma assignment to a memcpyd8e7ccc003
ANDROID: GKI: dentry: add Android ABI padding to some structures05a42c34b2
ANDROID: GKI: sched: add Android ABI padding to some structures1c5cd2e4ad
ANDROID: GKI: elevator: add Android ABI padding to some structures5fe1040d35
ANDROID: GKI: phy: add Android ABI padding to some structures8b849a574b
ANDROID: GKI: workqueue.h: add Android ABI padding to some structures86db2d740e
ANDROID: GKI: scsi: add Android ABI padding to some structuresf456f5cc1c
ANDROID: GKI: device.h: add Android ABI padding to some structures61963aff03
ANDROID: GKI: timer.h: add Android ABI padding to a structuref12cb09789
ANDROID: GKI: USB: add Android ABI padding to some structuresf79a11f8bc
ANDROID: GKI: sched.h: add Android ABI padding to some structures801c9e6233
ANDROID: GKI: module.h: add Android ABI padding to some structures15e9bd7cf2
ANDROID: GKI: sock.h: add Android ABI padding to some structures41afe8d0bf
ANDROID: GKI: sched: add Android ABI padding to some structuresc425034c95
ANDROID: GKI: mount.h: add Android ABI padding to some structures1276e53f17
ANDROID: GKI: mm: add Android ABI padding to some structuresd58a77ead7
ANDROID: GKI: add some padding to some driver core structures854f9f2e6c
ANDROID: GKI: add padding to struct HID structuresbf55b78067
ANDROID: GKI: USB: XHCI: add Android ABI padding to lots of xhci structures807752459e
ANDROID: GKI: dwc3: add Android ABI padding to some structuresfaf9904e25
ANDROID: GKI: sound/usb/card.h: add Android ABI padding to struct snd_usb_endpointcb27de5e20
ANDROID: GKI: user_namespace.h: add Android ABI padding to a structuread192a1c1c
ANDROID: GKI: quota.h: add Android ABI padding to some structures7be2a2a4c3
ANDROID: GKI: mmu_notifier.h: add Android ABI padding to some structures4298070a54
ANDROID: GKI: mm.h: add Android ABI padding to a structureec2d1e2e62
ANDROID: GKI: kobject.h: add Android ABI padding to some structurese69be4de29
ANDROID: GKI: kernfs.h: add Android ABI padding to some structures2baf3e23bb
ANDROID: GKI: irqdomain.h: add Android ABI padding to a structure064d2c58f2
ANDROID: GKI: ioport.h: add Android ABI padding to a structured1cd3e8b1b
ANDROID: GKI: iomap.h: add Android ABI padding to a structurec2c04df929
ANDROID: GKI: hrtimer.h: add Android ABI padding to a structurecaf18df2e2
ANDROID: GKI: genhd.h: add Android ABI padding to some structures0205308795
ANDROID: GKI: ethtool.h: add Android ABI padding to a structuree319ef95b6
ANDROID: GKI: dma-mapping.h: add Android ABI padding to a structure608ed5cfb3
ANDROID: GKI: networking: add Android ABI padding to a lot of networking structures8d09c29ee1
ANDROID: GKI: blk_types.h: add Android ABI padding to a structuree7a017ab91
ANDROID: GKI: scsi.h: add Android ABI padding to a structure48da4dd64b
ANDROID: GKI: pci: add Android ABI padding to some structureseba9ceccd8
ANDROID: GKI: add Android ABI padding to struct nf_conn97752aa71c
ANDROID: GKI: add kabi padding for structures for the android14 release1d39b94f8c
UPSTREAM: ipv{4,6}/raw: fix output xfrm lookup wrt protocol9713594a2b
UPSTREAM: inet: Add IP_LOCAL_PORT_RANGE socket option5376c2a57f
UPSTREAM: sched/fair: Fixes for capacity inversion detection7c8500869b
UPSTREAM: sched/fair: Consider capacity inversion in util_fits_cpu()b9346f206f
UPSTREAM: sched/fair: Detect capacity inversion8691a0dae0
ANDROID: KVM: arm64: Initialize hfgwtr_el2 correctlyfd04f99bfa
UPSTREAM: net: cdc_ncm: Deal with too low values of dwNtbOutMaxSize70586aaa7c
ANDROID: GKI: Add symbols and update symbol list for Unisoc(2nd)94e4512c31
ANDROID: ABI: update symbol list related to meminfo for galaxya390414140
ANDROID: vendor_hooks: add hooks for extra memoryc3ee18fefa
BACKPORT: FROMLIST: ovl: get_acl: Fix null pointer dereference at realinode in rcu-walk mode8d59a7676c
BACKPORT: FROMLIST: ovl: ovl_permission: Fix null pointer dereference at realinode in rcu-walk mode2de1ee6dd8
BACKPORT: FROMLIST: ovl: Let helper ovl_i_path_real() return the realinode963667856e
ANDROID: GKI: Update symbol list for xiaomi508ca06639
ANDROID: vendor_hooks:vendor hook for control memory dirty ratec959a3fc91
ANDROID: f2fs: enable cleancache2ea053d317
FROMGIT: userfaultfd: fix regression in userfaultfd_unmap_prep()2f5f352e6a
FROMGIT: BACKPORT: mm: avoid rewalk in mmap_region86d9de0898
FROMGIT: maple_tree: clear up index and last setting in single entry tree9288f53a31
FROMGIT: maple_tree: add mas_prev_range() and mas_find_range_rev interfacec4f5714056
FROMGIT: maple_tree: introduce mas_prev_slot() interfacedbc16cc86a
FROMGIT: maple_tree: relocate mas_rewalk() and mas_rewalk_if_dead()b83cfb2dc4
FROMGIT: maple_tree: add mas_next_range() and mas_find_range() interfaces84719794e0
FROMGIT: maple_tree: introduce mas_next_slot() interfacec5c507cfec
FROMGIT: maple_tree: try harder to keep active node with mas_prev()cb6d9fa6ad
FROMGIT: maple_tree: try harder to keep active node after mas_next()5ff9438fe1
FROMGIT: BACKPORT: mm/mmap: change do_vmi_align_munmap() for maple tree iterator changes133fbad5bd
FROMLIST: BACKPORT: maple_tree: Refine mas_preallocate() node calculationsce9ebd83aa
ANDROID: maple_tree: Move mas_wr_modify node size calculation to mas_wr_node_size()b6734cb2ce
FROMLIST: BACKPORT: maple_tree: Move mas_wr_end_piv() below mas_wr_extend_null()aede79b81e
ANDROID: mm: Fix __vma_adjust() writes for the maple treeb802573f44
FROMLIST: BACKPORT: mm: Set up vma iterator for vma_iter_prealloc() callsc3118993c9
FROMGIT: maple_tree: avoid unnecessary ascendinge9fdabfc2a
FROMLIST: BACKPORT: mm: Change do_vmi_align_munmap() side tree index25bed2fdbc
UPSTREAM: mm/mmap: remove preallocation from do_mas_align_munmap()312dfb3b7e
ANDROID: abi_gki_aarch64_qcom: Update QCOM symbol list6b3daa3bba
ANDROID: GKI: Update symbol list for xiaomiec196511bf
ANDROID: vendor_hooks:vendor hook for mmput571c04e945
ANDROID: ABI: update symbol list for galaxy847b3f6c96
ANDROID: task_mmu: add vendor hook for swap entryaee36dd530
ANDROID: mm: add vendor hooks in madvise for swap entryc0cfeeaa88
BACKPORT: FROMLIST: arm64: mte: Simplify swap tag restoration logic131714e34b
FROMLIST: mm: Call arch_swap_restore() from unuse_pte()3805b879f5
FROMLIST: mm: Call arch_swap_restore() from do_swap_page()098028adf7
ANDROID: abi_gki_aarch64_qcom: Update symbol list71844b8ed9
ANDROID: GKI: Update symbol list for xiaomi025b5a487b
ANDROID: vendor_hooks:vendor hook for __alloc_pages_slowpath.60b0f85e24
ANDROID: ABI: Update honor symbol list3e2dc32f59
ANDROID: mm: create vendor hooks for memory reclaim8e6a28c815
UPSTREAM: kcsan: Avoid READ_ONCE() in read_instrumented_memory()675bc3a00e
ANDROID: abi_gki_aarch64_qcom: update symbol list7b14897460
ANDROID: Update ABI as part of crash fix9e2fa0a396
ANDROID: Fix incorrect hook declaratione57fe10b5a
ANDROID: abi_gki_aarch64_qcom: Add GIC and hibernation APIs227d23d61d
ANDROID: gic-v3: Export gic_v3_resume() for vendor GIC enhancements275c8705e5
ANDROID: irqchip/irq-gic-v3: Add vendor hook for gic suspendc9539979a9
ANDROID: abi_gki_aarch64_qcom: Update abi_gki_aarch64_qcom for DMA6da02f9101
ANDROID: GKI: Update symbols to abi_gki_aarch64_oplus for extend copy & fbarrier feature87b384408e
ANDROID: abi_gki_aarch64_qcom: Update symbol lista3a743e67f
ANDROID: mmc: core: Export core functions for kernel modules usage631a2db5a3
ANDROID: vendor_hooks: Define new hooks in _mmc_suspend/resumee82e89e170
ANDROID: update symbol for unisoc vendor_hooksb7a7fd15ed
ANDROID: vendor_hooks: psci: add hook to check if cpu is allowed to power off3be7d118e7
ANDROID: Add vendor hook to the effective_cpu_util0c2142745d
ANDROID: Update symbol list for mtk6f7dc871a6
ANDROID: ABI: update symbol list for galaxyb0a752c3aa
ANDROID: update symbol for unisoc vendor_hooksce7ceff8c8
ANDROID: thermal: Add vendor hook to check power range7191b6a759
ANDROID: thermal: Add vendor hook to get thermal zone device1fe511720a
ANDROID: thermal: Add hook for cpufreq thermal78fe8913d1
UPSTREAM: mm,kfence: decouple kfence from page granularity mapping judgement Change-Id: If850e76826ace89e477988751792ea6055c8879c Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
da95c44967
File diff suppressed because it is too large
Load Diff
@ -1057,6 +1057,7 @@
|
|||||||
dma_buf_unmap_attachment
|
dma_buf_unmap_attachment
|
||||||
dma_get_sgtable_attrs
|
dma_get_sgtable_attrs
|
||||||
down_read
|
down_read
|
||||||
|
down_write
|
||||||
find_vma
|
find_vma
|
||||||
__mmap_lock_do_trace_acquire_returned
|
__mmap_lock_do_trace_acquire_returned
|
||||||
__mmap_lock_do_trace_released
|
__mmap_lock_do_trace_released
|
||||||
@ -1068,6 +1069,7 @@
|
|||||||
__tracepoint_mmap_lock_released
|
__tracepoint_mmap_lock_released
|
||||||
__tracepoint_mmap_lock_start_locking
|
__tracepoint_mmap_lock_start_locking
|
||||||
up_read
|
up_read
|
||||||
|
up_write
|
||||||
|
|
||||||
# required by gpi.ko
|
# required by gpi.ko
|
||||||
krealloc
|
krealloc
|
||||||
@ -2043,7 +2045,7 @@
|
|||||||
ufshcd_init_pwr_dev_param
|
ufshcd_init_pwr_dev_param
|
||||||
ufshcd_mcq_config_esi
|
ufshcd_mcq_config_esi
|
||||||
ufshcd_mcq_enable_esi
|
ufshcd_mcq_enable_esi
|
||||||
ufshcd_mcq_poll_cqe_nolock
|
ufshcd_mcq_poll_cqe_lock
|
||||||
ufshcd_mcq_write_cqis
|
ufshcd_mcq_write_cqis
|
||||||
ufshcd_pltfrm_init
|
ufshcd_pltfrm_init
|
||||||
ufshcd_pltfrm_shutdown
|
ufshcd_pltfrm_shutdown
|
||||||
@ -2101,3 +2103,4 @@
|
|||||||
fwnode_get_name
|
fwnode_get_name
|
||||||
icc_provider_add
|
icc_provider_add
|
||||||
icc_provider_del
|
icc_provider_del
|
||||||
|
ufshcd_mcq_poll_cqe_nolock
|
||||||
|
@ -107,9 +107,6 @@
|
|||||||
crc32_le
|
crc32_le
|
||||||
crypto_alloc_shash
|
crypto_alloc_shash
|
||||||
crypto_destroy_tfm
|
crypto_destroy_tfm
|
||||||
crypto_shash_digest
|
|
||||||
crypto_shash_update
|
|
||||||
csum_partial
|
|
||||||
_ctype
|
_ctype
|
||||||
debugfs_create_bool
|
debugfs_create_bool
|
||||||
debugfs_create_dir
|
debugfs_create_dir
|
||||||
@ -123,9 +120,6 @@
|
|||||||
del_timer
|
del_timer
|
||||||
del_timer_sync
|
del_timer_sync
|
||||||
destroy_workqueue
|
destroy_workqueue
|
||||||
dev_addr_mod
|
|
||||||
dev_alloc_name
|
|
||||||
dev_close
|
|
||||||
dev_driver_string
|
dev_driver_string
|
||||||
_dev_emerg
|
_dev_emerg
|
||||||
_dev_err
|
_dev_err
|
||||||
@ -201,8 +195,6 @@
|
|||||||
dev_pm_qos_read_value
|
dev_pm_qos_read_value
|
||||||
dev_pm_qos_remove_request
|
dev_pm_qos_remove_request
|
||||||
dev_pm_qos_update_request
|
dev_pm_qos_update_request
|
||||||
_dev_printk
|
|
||||||
__dev_queue_xmit
|
|
||||||
devres_add
|
devres_add
|
||||||
__devres_alloc_node
|
__devres_alloc_node
|
||||||
dev_set_name
|
dev_set_name
|
||||||
@ -328,7 +320,6 @@
|
|||||||
drm_vblank_init
|
drm_vblank_init
|
||||||
dump_stack
|
dump_stack
|
||||||
enable_irq
|
enable_irq
|
||||||
ether_setup
|
|
||||||
eth_type_trans
|
eth_type_trans
|
||||||
fd_install
|
fd_install
|
||||||
_find_first_bit
|
_find_first_bit
|
||||||
@ -348,7 +339,6 @@
|
|||||||
free_netdev
|
free_netdev
|
||||||
__free_pages
|
__free_pages
|
||||||
free_pages
|
free_pages
|
||||||
free_percpu
|
|
||||||
freq_qos_update_request
|
freq_qos_update_request
|
||||||
gcd
|
gcd
|
||||||
generic_file_llseek
|
generic_file_llseek
|
||||||
@ -415,10 +405,6 @@
|
|||||||
ida_alloc_range
|
ida_alloc_range
|
||||||
ida_free
|
ida_free
|
||||||
idr_alloc
|
idr_alloc
|
||||||
idr_destroy
|
|
||||||
idr_find
|
|
||||||
idr_for_each
|
|
||||||
idr_get_next
|
|
||||||
idr_remove
|
idr_remove
|
||||||
init_dummy_netdev
|
init_dummy_netdev
|
||||||
init_net
|
init_net
|
||||||
@ -468,7 +454,6 @@
|
|||||||
__kfifo_to_user
|
__kfifo_to_user
|
||||||
kfree
|
kfree
|
||||||
kfree_const
|
kfree_const
|
||||||
kfree_sensitive
|
|
||||||
kfree_skb_reason
|
kfree_skb_reason
|
||||||
kimage_voffset
|
kimage_voffset
|
||||||
__kmalloc
|
__kmalloc
|
||||||
@ -521,7 +506,6 @@
|
|||||||
__list_add_valid
|
__list_add_valid
|
||||||
__list_del_entry_valid
|
__list_del_entry_valid
|
||||||
list_sort
|
list_sort
|
||||||
__local_bh_enable_ip
|
|
||||||
log_post_read_mmio
|
log_post_read_mmio
|
||||||
log_post_write_mmio
|
log_post_write_mmio
|
||||||
log_read_mmio
|
log_read_mmio
|
||||||
@ -561,12 +545,9 @@
|
|||||||
__napi_schedule
|
__napi_schedule
|
||||||
napi_schedule_prep
|
napi_schedule_prep
|
||||||
__netdev_alloc_skb
|
__netdev_alloc_skb
|
||||||
netif_carrier_off
|
|
||||||
netif_carrier_on
|
|
||||||
netif_napi_add_weight
|
netif_napi_add_weight
|
||||||
netif_receive_skb
|
netif_receive_skb
|
||||||
netif_rx
|
netif_rx
|
||||||
netif_tx_stop_all_queues
|
|
||||||
netif_tx_wake_queue
|
netif_tx_wake_queue
|
||||||
nla_memcpy
|
nla_memcpy
|
||||||
nla_put
|
nla_put
|
||||||
@ -703,7 +684,6 @@
|
|||||||
proc_remove
|
proc_remove
|
||||||
proc_set_size
|
proc_set_size
|
||||||
proc_set_user
|
proc_set_user
|
||||||
__pskb_pull_tail
|
|
||||||
put_device
|
put_device
|
||||||
__put_task_struct
|
__put_task_struct
|
||||||
put_unused_fd
|
put_unused_fd
|
||||||
@ -740,10 +720,7 @@
|
|||||||
__register_chrdev
|
__register_chrdev
|
||||||
register_chrdev_region
|
register_chrdev_region
|
||||||
register_die_notifier
|
register_die_notifier
|
||||||
register_inet6addr_notifier
|
|
||||||
register_inetaddr_notifier
|
|
||||||
register_netdevice
|
register_netdevice
|
||||||
register_netdevice_notifier
|
|
||||||
register_pm_notifier
|
register_pm_notifier
|
||||||
register_reboot_notifier
|
register_reboot_notifier
|
||||||
register_restart_handler
|
register_restart_handler
|
||||||
@ -810,8 +787,6 @@
|
|||||||
simple_write_to_buffer
|
simple_write_to_buffer
|
||||||
single_open
|
single_open
|
||||||
single_release
|
single_release
|
||||||
skb_clone
|
|
||||||
skb_copy
|
|
||||||
skb_copy_bits
|
skb_copy_bits
|
||||||
skb_copy_expand
|
skb_copy_expand
|
||||||
skb_dequeue
|
skb_dequeue
|
||||||
@ -884,7 +859,6 @@
|
|||||||
strsep
|
strsep
|
||||||
strstr
|
strstr
|
||||||
subsys_system_register
|
subsys_system_register
|
||||||
__sw_hweight16
|
|
||||||
__sw_hweight32
|
__sw_hweight32
|
||||||
__sw_hweight64
|
__sw_hweight64
|
||||||
__sw_hweight8
|
__sw_hweight8
|
||||||
@ -904,7 +878,6 @@
|
|||||||
sysfs_remove_file_ns
|
sysfs_remove_file_ns
|
||||||
sysfs_remove_group
|
sysfs_remove_group
|
||||||
sysfs_remove_link
|
sysfs_remove_link
|
||||||
system_freezable_wq
|
|
||||||
system_highpri_wq
|
system_highpri_wq
|
||||||
system_long_wq
|
system_long_wq
|
||||||
system_state
|
system_state
|
||||||
@ -915,7 +888,6 @@
|
|||||||
tasklet_init
|
tasklet_init
|
||||||
tasklet_kill
|
tasklet_kill
|
||||||
__tasklet_schedule
|
__tasklet_schedule
|
||||||
tasklet_setup
|
|
||||||
thermal_of_cooling_device_register
|
thermal_of_cooling_device_register
|
||||||
thermal_zone_device_update
|
thermal_zone_device_update
|
||||||
thermal_zone_get_temp
|
thermal_zone_get_temp
|
||||||
@ -952,9 +924,6 @@
|
|||||||
unpin_user_page
|
unpin_user_page
|
||||||
__unregister_chrdev
|
__unregister_chrdev
|
||||||
unregister_chrdev_region
|
unregister_chrdev_region
|
||||||
unregister_inet6addr_notifier
|
|
||||||
unregister_inetaddr_notifier
|
|
||||||
unregister_netdevice_notifier
|
|
||||||
unregister_netdevice_queue
|
unregister_netdevice_queue
|
||||||
unregister_pm_notifier
|
unregister_pm_notifier
|
||||||
unregister_reboot_notifier
|
unregister_reboot_notifier
|
||||||
@ -1044,8 +1013,10 @@
|
|||||||
|
|
||||||
# required by cfg80211.ko
|
# required by cfg80211.ko
|
||||||
bpf_trace_run10
|
bpf_trace_run10
|
||||||
|
csum_partial
|
||||||
debugfs_rename
|
debugfs_rename
|
||||||
__dev_change_net_namespace
|
__dev_change_net_namespace
|
||||||
|
dev_close
|
||||||
__dev_get_by_index
|
__dev_get_by_index
|
||||||
dev_get_by_index
|
dev_get_by_index
|
||||||
device_add
|
device_add
|
||||||
@ -1059,6 +1030,7 @@
|
|||||||
key_create_or_update
|
key_create_or_update
|
||||||
key_put
|
key_put
|
||||||
keyring_alloc
|
keyring_alloc
|
||||||
|
kfree_sensitive
|
||||||
ktime_get_coarse_with_offset
|
ktime_get_coarse_with_offset
|
||||||
netdev_err
|
netdev_err
|
||||||
netlink_broadcast
|
netlink_broadcast
|
||||||
@ -1070,7 +1042,9 @@
|
|||||||
__nla_parse
|
__nla_parse
|
||||||
nla_put_64bit
|
nla_put_64bit
|
||||||
__nla_validate
|
__nla_validate
|
||||||
|
__pskb_pull_tail
|
||||||
__put_net
|
__put_net
|
||||||
|
register_netdevice_notifier
|
||||||
register_pernet_device
|
register_pernet_device
|
||||||
rfkill_alloc
|
rfkill_alloc
|
||||||
rfkill_blocked
|
rfkill_blocked
|
||||||
@ -1082,7 +1056,9 @@
|
|||||||
skb_add_rx_frag
|
skb_add_rx_frag
|
||||||
__sock_create
|
__sock_create
|
||||||
sock_release
|
sock_release
|
||||||
|
__sw_hweight16
|
||||||
system_power_efficient_wq
|
system_power_efficient_wq
|
||||||
|
unregister_netdevice_notifier
|
||||||
unregister_pernet_device
|
unregister_pernet_device
|
||||||
verify_pkcs7_signature
|
verify_pkcs7_signature
|
||||||
wireless_nlevent_flush
|
wireless_nlevent_flush
|
||||||
@ -1113,6 +1089,7 @@
|
|||||||
regmap_raw_write_async
|
regmap_raw_write_async
|
||||||
|
|
||||||
# required by drm_display_helper.ko
|
# required by drm_display_helper.ko
|
||||||
|
_dev_printk
|
||||||
drm_atomic_get_new_private_obj_state
|
drm_atomic_get_new_private_obj_state
|
||||||
drm_atomic_get_old_private_obj_state
|
drm_atomic_get_old_private_obj_state
|
||||||
drm_crtc_commit_wait
|
drm_crtc_commit_wait
|
||||||
@ -1654,8 +1631,12 @@
|
|||||||
# required by hardlockup-watchdog.ko
|
# required by hardlockup-watchdog.ko
|
||||||
cpus_read_lock
|
cpus_read_lock
|
||||||
cpus_read_unlock
|
cpus_read_unlock
|
||||||
|
free_percpu
|
||||||
smp_call_on_cpu
|
smp_call_on_cpu
|
||||||
|
|
||||||
|
# required by hdcp2.ko
|
||||||
|
crypto_shash_digest
|
||||||
|
|
||||||
# required by hook.ko
|
# required by hook.ko
|
||||||
__traceiter_android_vh_do_wake_up_sync
|
__traceiter_android_vh_do_wake_up_sync
|
||||||
__traceiter_android_vh_set_wake_flags
|
__traceiter_android_vh_set_wake_flags
|
||||||
@ -1732,63 +1713,9 @@
|
|||||||
led_classdev_register_ext
|
led_classdev_register_ext
|
||||||
led_classdev_unregister
|
led_classdev_unregister
|
||||||
|
|
||||||
# required by mac80211.ko
|
|
||||||
__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_finup
|
|
||||||
crypto_shash_setkey
|
|
||||||
crypto_skcipher_decrypt
|
|
||||||
crypto_skcipher_encrypt
|
|
||||||
crypto_skcipher_setkey
|
|
||||||
__crypto_xor
|
|
||||||
dev_fetch_sw_netstats
|
|
||||||
eth_mac_addr
|
|
||||||
ethtool_op_get_link
|
|
||||||
get_random_u16
|
|
||||||
__hw_addr_init
|
|
||||||
__hw_addr_sync
|
|
||||||
__hw_addr_unsync
|
|
||||||
kernel_param_lock
|
|
||||||
kernel_param_unlock
|
|
||||||
kfree_skb_list_reason
|
|
||||||
ktime_get_seconds
|
|
||||||
memmove
|
|
||||||
netdev_info
|
|
||||||
netdev_set_default_ethtool_ops
|
|
||||||
netif_receive_skb_list
|
|
||||||
net_ratelimit
|
|
||||||
pskb_expand_head
|
|
||||||
___pskb_trim
|
|
||||||
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
|
|
||||||
sg_init_one
|
|
||||||
skb_checksum_help
|
|
||||||
skb_clone_sk
|
|
||||||
skb_complete_wifi_ack
|
|
||||||
skb_ensure_writable
|
|
||||||
__skb_get_hash
|
|
||||||
__skb_gso_segment
|
|
||||||
tasklet_unlock_wait
|
|
||||||
unregister_netdevice_many
|
|
||||||
|
|
||||||
# required by mcDrvModule.ko
|
# required by mcDrvModule.ko
|
||||||
crypto_shash_final
|
crypto_shash_final
|
||||||
|
crypto_shash_update
|
||||||
down_read
|
down_read
|
||||||
freezer_active
|
freezer_active
|
||||||
freezing_slow_path
|
freezing_slow_path
|
||||||
@ -1810,7 +1737,6 @@
|
|||||||
|
|
||||||
# required by mpam_arch.ko
|
# required by mpam_arch.ko
|
||||||
bitmap_alloc
|
bitmap_alloc
|
||||||
__cpu_present_mask
|
|
||||||
kobj_sysfs_ops
|
kobj_sysfs_ops
|
||||||
kstrtou16
|
kstrtou16
|
||||||
on_each_cpu_cond_mask
|
on_each_cpu_cond_mask
|
||||||
@ -1850,6 +1776,7 @@
|
|||||||
kstrdup_const
|
kstrdup_const
|
||||||
llist_add_batch
|
llist_add_batch
|
||||||
rb_first
|
rb_first
|
||||||
|
tasklet_setup
|
||||||
|
|
||||||
# required by pablo-self-tests.ko
|
# required by pablo-self-tests.ko
|
||||||
debugfs_create_blob
|
debugfs_create_blob
|
||||||
@ -1957,6 +1884,7 @@
|
|||||||
devm_rtc_device_register
|
devm_rtc_device_register
|
||||||
rtc_update_irq
|
rtc_update_irq
|
||||||
rtc_valid_tm
|
rtc_valid_tm
|
||||||
|
system_freezable_wq
|
||||||
|
|
||||||
# required by s3c2410_wdt.ko
|
# required by s3c2410_wdt.ko
|
||||||
watchdog_init_timeout
|
watchdog_init_timeout
|
||||||
@ -2070,22 +1998,30 @@
|
|||||||
|
|
||||||
# required by scsc_wlan.ko
|
# required by scsc_wlan.ko
|
||||||
arp_tbl
|
arp_tbl
|
||||||
|
dev_addr_mod
|
||||||
|
dev_alloc_name
|
||||||
|
__dev_queue_xmit
|
||||||
down_trylock
|
down_trylock
|
||||||
dql_completed
|
dql_completed
|
||||||
dql_reset
|
dql_reset
|
||||||
dst_release
|
dst_release
|
||||||
|
ether_setup
|
||||||
for_each_kernel_tracepoint
|
for_each_kernel_tracepoint
|
||||||
in4_pton
|
in4_pton
|
||||||
in6_pton
|
in6_pton
|
||||||
ip_route_output_flow
|
ip_route_output_flow
|
||||||
ip_send_check
|
ip_send_check
|
||||||
linkwatch_fire_event
|
linkwatch_fire_event
|
||||||
|
__local_bh_enable_ip
|
||||||
napi_disable
|
napi_disable
|
||||||
napi_gro_flush
|
napi_gro_flush
|
||||||
neigh_destroy
|
neigh_destroy
|
||||||
neigh_lookup
|
neigh_lookup
|
||||||
|
netif_carrier_off
|
||||||
|
netif_carrier_on
|
||||||
__netif_napi_del
|
__netif_napi_del
|
||||||
netif_schedule_queue
|
netif_schedule_queue
|
||||||
|
netif_tx_stop_all_queues
|
||||||
nla_put_nohdr
|
nla_put_nohdr
|
||||||
_raw_read_lock_bh
|
_raw_read_lock_bh
|
||||||
_raw_read_unlock_bh
|
_raw_read_unlock_bh
|
||||||
@ -2093,8 +2029,14 @@
|
|||||||
_raw_write_lock_bh
|
_raw_write_lock_bh
|
||||||
_raw_write_unlock
|
_raw_write_unlock
|
||||||
_raw_write_unlock_bh
|
_raw_write_unlock_bh
|
||||||
|
register_inet6addr_notifier
|
||||||
|
register_inetaddr_notifier
|
||||||
register_kretprobe
|
register_kretprobe
|
||||||
|
skb_clone
|
||||||
|
skb_copy
|
||||||
skb_realloc_headroom
|
skb_realloc_headroom
|
||||||
|
unregister_inet6addr_notifier
|
||||||
|
unregister_inetaddr_notifier
|
||||||
unregister_kretprobe
|
unregister_kretprobe
|
||||||
|
|
||||||
# required by scsi_srpmb.ko
|
# required by scsi_srpmb.ko
|
||||||
@ -2214,11 +2156,17 @@
|
|||||||
handle_simple_irq
|
handle_simple_irq
|
||||||
i2c_bit_add_bus
|
i2c_bit_add_bus
|
||||||
ida_destroy
|
ida_destroy
|
||||||
|
idr_destroy
|
||||||
|
idr_find
|
||||||
|
idr_for_each
|
||||||
|
idr_get_next
|
||||||
idr_replace
|
idr_replace
|
||||||
jiffies64_to_msecs
|
jiffies64_to_msecs
|
||||||
memremap
|
memremap
|
||||||
memunmap
|
memunmap
|
||||||
mmu_notifier_synchronize
|
mmu_notifier_synchronize
|
||||||
|
page_pinner_inited
|
||||||
|
__page_pinner_put_page
|
||||||
param_ops_hexint
|
param_ops_hexint
|
||||||
pci_assign_unassigned_bus_resources
|
pci_assign_unassigned_bus_resources
|
||||||
pci_bus_resource_n
|
pci_bus_resource_n
|
||||||
|
@ -146,6 +146,7 @@
|
|||||||
kernel_cpustat
|
kernel_cpustat
|
||||||
kernfs_find_and_get_ns
|
kernfs_find_and_get_ns
|
||||||
kfree
|
kfree
|
||||||
|
__kfree_skb
|
||||||
kimage_vaddr
|
kimage_vaddr
|
||||||
kimage_voffset
|
kimage_voffset
|
||||||
__kmalloc
|
__kmalloc
|
||||||
@ -266,6 +267,7 @@
|
|||||||
simple_strtol
|
simple_strtol
|
||||||
single_open
|
single_open
|
||||||
single_release
|
single_release
|
||||||
|
skb_copy_ubufs
|
||||||
snd_soc_find_dai
|
snd_soc_find_dai
|
||||||
snd_soc_info_volsw_sx
|
snd_soc_info_volsw_sx
|
||||||
snd_soc_put_volsw_sx
|
snd_soc_put_volsw_sx
|
||||||
@ -307,24 +309,34 @@
|
|||||||
__traceiter_android_rvh_report_bug
|
__traceiter_android_rvh_report_bug
|
||||||
__traceiter_android_vh_ipi_stop
|
__traceiter_android_vh_ipi_stop
|
||||||
__traceiter_android_vh_is_fpsimd_save
|
__traceiter_android_vh_is_fpsimd_save
|
||||||
|
__traceiter_android_vh_madvise_pageout_swap_entry
|
||||||
|
__traceiter_android_vh_madvise_swapin_walk_pmd_entry
|
||||||
__traceiter_android_vh_mutex_wait_finish
|
__traceiter_android_vh_mutex_wait_finish
|
||||||
__traceiter_android_vh_mutex_wait_start
|
__traceiter_android_vh_mutex_wait_start
|
||||||
|
__traceiter_android_vh_ptype_head
|
||||||
__traceiter_android_vh_rtmutex_wait_finish
|
__traceiter_android_vh_rtmutex_wait_finish
|
||||||
__traceiter_android_vh_rtmutex_wait_start
|
__traceiter_android_vh_rtmutex_wait_start
|
||||||
__traceiter_android_vh_rwsem_read_wait_finish
|
__traceiter_android_vh_rwsem_read_wait_finish
|
||||||
__traceiter_android_vh_rwsem_read_wait_start
|
__traceiter_android_vh_rwsem_read_wait_start
|
||||||
__traceiter_android_vh_rwsem_write_wait_finish
|
__traceiter_android_vh_rwsem_write_wait_finish
|
||||||
__traceiter_android_vh_rwsem_write_wait_start
|
__traceiter_android_vh_rwsem_write_wait_start
|
||||||
|
__traceiter_android_vh_process_madvise_end
|
||||||
__traceiter_android_vh_sched_show_task
|
__traceiter_android_vh_sched_show_task
|
||||||
|
__traceiter_android_vh_show_smap
|
||||||
|
__traceiter_android_vh_smaps_pte_entry
|
||||||
__traceiter_android_vh_try_to_freeze_todo
|
__traceiter_android_vh_try_to_freeze_todo
|
||||||
__traceiter_android_vh_try_to_freeze_todo_unfrozen
|
__traceiter_android_vh_try_to_freeze_todo_unfrozen
|
||||||
__traceiter_android_vh_watchdog_timer_softlockup
|
__traceiter_android_vh_watchdog_timer_softlockup
|
||||||
|
__traceiter_android_vh_meminfo_cache_adjust
|
||||||
|
__traceiter_android_vh_si_mem_available_adjust
|
||||||
|
__traceiter_android_vh_si_meminfo_adjust
|
||||||
__traceiter_block_rq_insert
|
__traceiter_block_rq_insert
|
||||||
__traceiter_console
|
__traceiter_console
|
||||||
__traceiter_hrtimer_expire_entry
|
__traceiter_hrtimer_expire_entry
|
||||||
__traceiter_hrtimer_expire_exit
|
__traceiter_hrtimer_expire_exit
|
||||||
__traceiter_irq_handler_entry
|
__traceiter_irq_handler_entry
|
||||||
__traceiter_irq_handler_exit
|
__traceiter_irq_handler_exit
|
||||||
|
__traceiter_kfree_skb
|
||||||
__traceiter_sched_switch
|
__traceiter_sched_switch
|
||||||
__traceiter_workqueue_execute_start
|
__traceiter_workqueue_execute_start
|
||||||
__tracepoint_android_rvh_arm64_serror_panic
|
__tracepoint_android_rvh_arm64_serror_panic
|
||||||
@ -338,24 +350,34 @@
|
|||||||
__tracepoint_android_rvh_report_bug
|
__tracepoint_android_rvh_report_bug
|
||||||
__tracepoint_android_vh_ipi_stop
|
__tracepoint_android_vh_ipi_stop
|
||||||
__tracepoint_android_vh_is_fpsimd_save
|
__tracepoint_android_vh_is_fpsimd_save
|
||||||
|
__tracepoint_android_vh_madvise_pageout_swap_entry
|
||||||
|
__tracepoint_android_vh_madvise_swapin_walk_pmd_entry
|
||||||
__tracepoint_android_vh_mutex_wait_finish
|
__tracepoint_android_vh_mutex_wait_finish
|
||||||
__tracepoint_android_vh_mutex_wait_start
|
__tracepoint_android_vh_mutex_wait_start
|
||||||
|
__tracepoint_android_vh_ptype_head
|
||||||
__tracepoint_android_vh_rtmutex_wait_finish
|
__tracepoint_android_vh_rtmutex_wait_finish
|
||||||
__tracepoint_android_vh_rtmutex_wait_start
|
__tracepoint_android_vh_rtmutex_wait_start
|
||||||
__tracepoint_android_vh_rwsem_read_wait_finish
|
__tracepoint_android_vh_rwsem_read_wait_finish
|
||||||
__tracepoint_android_vh_rwsem_read_wait_start
|
__tracepoint_android_vh_rwsem_read_wait_start
|
||||||
__tracepoint_android_vh_rwsem_write_wait_finish
|
__tracepoint_android_vh_rwsem_write_wait_finish
|
||||||
__tracepoint_android_vh_rwsem_write_wait_start
|
__tracepoint_android_vh_rwsem_write_wait_start
|
||||||
|
__tracepoint_android_vh_process_madvise_end
|
||||||
__tracepoint_android_vh_sched_show_task
|
__tracepoint_android_vh_sched_show_task
|
||||||
|
__tracepoint_android_vh_show_smap
|
||||||
|
__tracepoint_android_vh_smaps_pte_entry
|
||||||
__tracepoint_android_vh_try_to_freeze_todo
|
__tracepoint_android_vh_try_to_freeze_todo
|
||||||
__tracepoint_android_vh_try_to_freeze_todo_unfrozen
|
__tracepoint_android_vh_try_to_freeze_todo_unfrozen
|
||||||
__tracepoint_android_vh_watchdog_timer_softlockup
|
__tracepoint_android_vh_watchdog_timer_softlockup
|
||||||
|
__tracepoint_android_vh_meminfo_cache_adjust
|
||||||
|
__tracepoint_android_vh_si_mem_available_adjust
|
||||||
|
__tracepoint_android_vh_si_meminfo_adjust
|
||||||
__tracepoint_block_rq_insert
|
__tracepoint_block_rq_insert
|
||||||
__tracepoint_console
|
__tracepoint_console
|
||||||
__tracepoint_hrtimer_expire_entry
|
__tracepoint_hrtimer_expire_entry
|
||||||
__tracepoint_hrtimer_expire_exit
|
__tracepoint_hrtimer_expire_exit
|
||||||
__tracepoint_irq_handler_entry
|
__tracepoint_irq_handler_entry
|
||||||
__tracepoint_irq_handler_exit
|
__tracepoint_irq_handler_exit
|
||||||
|
__tracepoint_kfree_skb
|
||||||
tracepoint_probe_register
|
tracepoint_probe_register
|
||||||
tracepoint_probe_unregister
|
tracepoint_probe_unregister
|
||||||
__tracepoint_sched_switch
|
__tracepoint_sched_switch
|
||||||
@ -366,6 +388,7 @@
|
|||||||
unregister_restart_handler
|
unregister_restart_handler
|
||||||
unregister_syscore_ops
|
unregister_syscore_ops
|
||||||
up_write
|
up_write
|
||||||
|
usb_alloc_dev
|
||||||
usb_gstrings_attach
|
usb_gstrings_attach
|
||||||
usbnet_get_endpoints
|
usbnet_get_endpoints
|
||||||
usbnet_link_change
|
usbnet_link_change
|
||||||
|
@ -3,9 +3,15 @@
|
|||||||
__tracepoint_android_vh_page_add_new_anon_rmap
|
__tracepoint_android_vh_page_add_new_anon_rmap
|
||||||
__tracepoint_android_vh_do_shrink_slab
|
__tracepoint_android_vh_do_shrink_slab
|
||||||
__tracepoint_android_vh_shrink_slab_bypass
|
__tracepoint_android_vh_shrink_slab_bypass
|
||||||
|
__tracepoint_android_vh_mutex_init
|
||||||
|
__tracepoint_android_vh_file_is_tiny_bypass
|
||||||
|
__tracepoint_android_vh_modify_scan_control
|
||||||
|
__tracepoint_android_vh_should_continue_reclaim
|
||||||
__traceiter_android_vh_get_page_wmark
|
__traceiter_android_vh_get_page_wmark
|
||||||
__traceiter_android_vh_page_add_new_anon_rmap
|
__traceiter_android_vh_page_add_new_anon_rmap
|
||||||
__traceiter_android_vh_do_shrink_slab
|
__traceiter_android_vh_do_shrink_slab
|
||||||
__traceiter_android_vh_shrink_slab_bypass
|
__traceiter_android_vh_shrink_slab_bypass
|
||||||
__traceiter_android_vh_mutex_init
|
__traceiter_android_vh_mutex_init
|
||||||
__tracepoint_android_vh_mutex_init
|
__traceiter_android_vh_file_is_tiny_bypass
|
||||||
|
__traceiter_android_vh_modify_scan_control
|
||||||
|
__traceiter_android_vh_should_continue_reclaim
|
@ -186,6 +186,8 @@
|
|||||||
clk_unprepare
|
clk_unprepare
|
||||||
clockevents_config_and_register
|
clockevents_config_and_register
|
||||||
clocks_calc_mult_shift
|
clocks_calc_mult_shift
|
||||||
|
clocksource_mmio_init
|
||||||
|
clocksource_mmio_readl_up
|
||||||
close_fd
|
close_fd
|
||||||
cma_alloc
|
cma_alloc
|
||||||
cma_release
|
cma_release
|
||||||
@ -246,7 +248,9 @@
|
|||||||
cpu_hwcaps
|
cpu_hwcaps
|
||||||
cpuidle_driver_state_disabled
|
cpuidle_driver_state_disabled
|
||||||
cpuidle_get_driver
|
cpuidle_get_driver
|
||||||
|
cpuidle_governor_latency_req
|
||||||
cpuidle_pause_and_lock
|
cpuidle_pause_and_lock
|
||||||
|
cpuidle_register_governor
|
||||||
cpuidle_resume_and_unlock
|
cpuidle_resume_and_unlock
|
||||||
cpu_latency_qos_add_request
|
cpu_latency_qos_add_request
|
||||||
cpu_latency_qos_remove_request
|
cpu_latency_qos_remove_request
|
||||||
@ -302,6 +306,7 @@
|
|||||||
crypto_skcipher_setkey
|
crypto_skcipher_setkey
|
||||||
__crypto_xor
|
__crypto_xor
|
||||||
css_next_child
|
css_next_child
|
||||||
|
csum_ipv6_magic
|
||||||
csum_partial
|
csum_partial
|
||||||
ct_idle_enter
|
ct_idle_enter
|
||||||
ct_idle_exit
|
ct_idle_exit
|
||||||
@ -378,6 +383,7 @@
|
|||||||
dev_get_flags
|
dev_get_flags
|
||||||
dev_get_regmap
|
dev_get_regmap
|
||||||
dev_get_stats
|
dev_get_stats
|
||||||
|
dev_get_tstats64
|
||||||
device_add
|
device_add
|
||||||
device_add_disk
|
device_add_disk
|
||||||
device_attach
|
device_attach
|
||||||
@ -413,6 +419,7 @@
|
|||||||
__device_reset
|
__device_reset
|
||||||
device_set_of_node_from_dev
|
device_set_of_node_from_dev
|
||||||
device_set_wakeup_capable
|
device_set_wakeup_capable
|
||||||
|
device_set_wakeup_enable
|
||||||
device_show_bool
|
device_show_bool
|
||||||
device_store_bool
|
device_store_bool
|
||||||
device_unregister
|
device_unregister
|
||||||
@ -545,6 +552,8 @@
|
|||||||
dev_pm_opp_put_opp_table
|
dev_pm_opp_put_opp_table
|
||||||
dev_pm_opp_remove_all_dynamic
|
dev_pm_opp_remove_all_dynamic
|
||||||
dev_pm_opp_set_config
|
dev_pm_opp_set_config
|
||||||
|
dev_pm_qos_add_notifier
|
||||||
|
dev_pm_qos_remove_notifier
|
||||||
dev_pm_qos_update_request
|
dev_pm_qos_update_request
|
||||||
dev_pm_set_dedicated_wake_irq_reverse
|
dev_pm_set_dedicated_wake_irq_reverse
|
||||||
_dev_printk
|
_dev_printk
|
||||||
@ -583,6 +592,10 @@
|
|||||||
dma_buf_get_each
|
dma_buf_get_each
|
||||||
dma_buf_map_attachment
|
dma_buf_map_attachment
|
||||||
dma_buf_mmap
|
dma_buf_mmap
|
||||||
|
dmabuf_page_pool_alloc
|
||||||
|
dmabuf_page_pool_create
|
||||||
|
dmabuf_page_pool_destroy
|
||||||
|
dmabuf_page_pool_free
|
||||||
dma_buf_put
|
dma_buf_put
|
||||||
dma_buf_unmap_attachment
|
dma_buf_unmap_attachment
|
||||||
dma_buf_vmap
|
dma_buf_vmap
|
||||||
@ -760,6 +773,7 @@
|
|||||||
drm_gem_prime_fd_to_handle
|
drm_gem_prime_fd_to_handle
|
||||||
drm_gem_prime_handle_to_fd
|
drm_gem_prime_handle_to_fd
|
||||||
drm_gem_prime_import
|
drm_gem_prime_import
|
||||||
|
drm_gem_prime_import_dev
|
||||||
drm_gem_private_object_init
|
drm_gem_private_object_init
|
||||||
drm_gem_vm_close
|
drm_gem_vm_close
|
||||||
drm_gem_vm_open
|
drm_gem_vm_open
|
||||||
@ -836,6 +850,9 @@
|
|||||||
eth_header_cache_update
|
eth_header_cache_update
|
||||||
eth_header_parse
|
eth_header_parse
|
||||||
eth_mac_addr
|
eth_mac_addr
|
||||||
|
eth_platform_get_mac_address
|
||||||
|
ethtool_convert_legacy_u32_to_link_mode
|
||||||
|
ethtool_convert_link_mode_to_legacy_u32
|
||||||
__ethtool_get_link_ksettings
|
__ethtool_get_link_ksettings
|
||||||
ethtool_op_get_link
|
ethtool_op_get_link
|
||||||
ethtool_op_get_ts_info
|
ethtool_op_get_ts_info
|
||||||
@ -855,6 +872,7 @@
|
|||||||
fget
|
fget
|
||||||
file_path
|
file_path
|
||||||
filp_close
|
filp_close
|
||||||
|
filp_open_block
|
||||||
_find_first_bit
|
_find_first_bit
|
||||||
_find_first_zero_bit
|
_find_first_zero_bit
|
||||||
find_get_pid
|
find_get_pid
|
||||||
@ -933,6 +951,7 @@
|
|||||||
genlmsg_put
|
genlmsg_put
|
||||||
genl_register_family
|
genl_register_family
|
||||||
genl_unregister_family
|
genl_unregister_family
|
||||||
|
genphy_resume
|
||||||
gen_pool_add_owner
|
gen_pool_add_owner
|
||||||
gen_pool_alloc_algo_owner
|
gen_pool_alloc_algo_owner
|
||||||
gen_pool_avail
|
gen_pool_avail
|
||||||
@ -1012,6 +1031,7 @@
|
|||||||
handle_simple_irq
|
handle_simple_irq
|
||||||
handle_sysrq
|
handle_sysrq
|
||||||
have_governor_per_policy
|
have_governor_per_policy
|
||||||
|
hex2bin
|
||||||
hex_asc
|
hex_asc
|
||||||
hex_asc_upper
|
hex_asc_upper
|
||||||
hex_dump_to_buffer
|
hex_dump_to_buffer
|
||||||
@ -1029,6 +1049,7 @@
|
|||||||
hrtimer_active
|
hrtimer_active
|
||||||
hrtimer_cancel
|
hrtimer_cancel
|
||||||
hrtimer_forward
|
hrtimer_forward
|
||||||
|
__hrtimer_get_remaining
|
||||||
hrtimer_init
|
hrtimer_init
|
||||||
hrtimer_start_range_ns
|
hrtimer_start_range_ns
|
||||||
hrtimer_try_to_cancel
|
hrtimer_try_to_cancel
|
||||||
@ -1136,8 +1157,10 @@
|
|||||||
input_unregister_device
|
input_unregister_device
|
||||||
input_unregister_handle
|
input_unregister_handle
|
||||||
input_unregister_handler
|
input_unregister_handler
|
||||||
|
int_sqrt
|
||||||
iomem_resource
|
iomem_resource
|
||||||
iommu_alloc_resv_region
|
iommu_alloc_resv_region
|
||||||
|
iommu_dev_disable_feature
|
||||||
iommu_device_register
|
iommu_device_register
|
||||||
iommu_device_sysfs_add
|
iommu_device_sysfs_add
|
||||||
iommu_device_sysfs_remove
|
iommu_device_sysfs_remove
|
||||||
@ -1208,6 +1231,7 @@
|
|||||||
irq_work_queue_on
|
irq_work_queue_on
|
||||||
irq_work_run
|
irq_work_run
|
||||||
irq_work_sync
|
irq_work_sync
|
||||||
|
is_dma_buf_file
|
||||||
is_vmalloc_addr
|
is_vmalloc_addr
|
||||||
iterate_dir
|
iterate_dir
|
||||||
iterate_fd
|
iterate_fd
|
||||||
@ -1256,6 +1280,7 @@
|
|||||||
__kmalloc
|
__kmalloc
|
||||||
kmalloc_caches
|
kmalloc_caches
|
||||||
kmalloc_large
|
kmalloc_large
|
||||||
|
kmalloc_large_node
|
||||||
__kmalloc_node
|
__kmalloc_node
|
||||||
kmalloc_node_trace
|
kmalloc_node_trace
|
||||||
__kmalloc_node_track_caller
|
__kmalloc_node_track_caller
|
||||||
@ -1366,6 +1391,11 @@
|
|||||||
mbox_free_channel
|
mbox_free_channel
|
||||||
mbox_request_channel
|
mbox_request_channel
|
||||||
mbox_send_message
|
mbox_send_message
|
||||||
|
mdiobus_alloc_size
|
||||||
|
mdiobus_free
|
||||||
|
mdiobus_get_phy
|
||||||
|
__mdiobus_register
|
||||||
|
mdiobus_unregister
|
||||||
media_create_ancillary_link
|
media_create_ancillary_link
|
||||||
media_create_intf_link
|
media_create_intf_link
|
||||||
media_create_pad_link
|
media_create_pad_link
|
||||||
@ -1471,6 +1501,7 @@
|
|||||||
mutex_lock_killable
|
mutex_lock_killable
|
||||||
mutex_trylock
|
mutex_trylock
|
||||||
mutex_unlock
|
mutex_unlock
|
||||||
|
__napi_alloc_skb
|
||||||
napi_complete_done
|
napi_complete_done
|
||||||
napi_disable
|
napi_disable
|
||||||
napi_enable
|
napi_enable
|
||||||
@ -1488,6 +1519,7 @@
|
|||||||
netdev_err
|
netdev_err
|
||||||
netdev_info
|
netdev_info
|
||||||
netdev_name_in_use
|
netdev_name_in_use
|
||||||
|
netdev_notice
|
||||||
netdev_printk
|
netdev_printk
|
||||||
netdev_set_default_ethtool_ops
|
netdev_set_default_ethtool_ops
|
||||||
netdev_update_features
|
netdev_update_features
|
||||||
@ -1504,8 +1536,11 @@
|
|||||||
netif_receive_skb
|
netif_receive_skb
|
||||||
netif_receive_skb_list
|
netif_receive_skb_list
|
||||||
netif_rx
|
netif_rx
|
||||||
|
netif_set_tso_max_size
|
||||||
netif_stacked_transfer_operstate
|
netif_stacked_transfer_operstate
|
||||||
|
netif_tx_lock
|
||||||
netif_tx_stop_all_queues
|
netif_tx_stop_all_queues
|
||||||
|
netif_tx_unlock
|
||||||
netif_tx_wake_queue
|
netif_tx_wake_queue
|
||||||
netlink_broadcast
|
netlink_broadcast
|
||||||
netlink_capable
|
netlink_capable
|
||||||
@ -1519,6 +1554,9 @@
|
|||||||
net_namespace_list
|
net_namespace_list
|
||||||
net_ns_type_operations
|
net_ns_type_operations
|
||||||
net_ratelimit
|
net_ratelimit
|
||||||
|
net_selftest
|
||||||
|
net_selftest_get_count
|
||||||
|
net_selftest_get_strings
|
||||||
nf_conntrack_destroy
|
nf_conntrack_destroy
|
||||||
nf_register_net_hooks
|
nf_register_net_hooks
|
||||||
nf_unregister_net_hooks
|
nf_unregister_net_hooks
|
||||||
@ -1617,6 +1655,7 @@
|
|||||||
of_n_addr_cells
|
of_n_addr_cells
|
||||||
of_n_size_cells
|
of_n_size_cells
|
||||||
__of_parse_phandle_with_args
|
__of_parse_phandle_with_args
|
||||||
|
of_pci_get_max_link_speed
|
||||||
of_phandle_iterator_init
|
of_phandle_iterator_init
|
||||||
of_phandle_iterator_next
|
of_phandle_iterator_next
|
||||||
of_phy_simple_xlate
|
of_phy_simple_xlate
|
||||||
@ -1726,13 +1765,35 @@
|
|||||||
perf_trace_buf_alloc
|
perf_trace_buf_alloc
|
||||||
perf_trace_run_bpf_submit
|
perf_trace_run_bpf_submit
|
||||||
pfn_is_map_memory
|
pfn_is_map_memory
|
||||||
|
phy_attached_info
|
||||||
|
phy_connect
|
||||||
|
phy_disconnect
|
||||||
|
phy_do_ioctl_running
|
||||||
|
phy_ethtool_get_link_ksettings
|
||||||
|
phy_ethtool_nway_reset
|
||||||
|
phy_ethtool_set_link_ksettings
|
||||||
phy_exit
|
phy_exit
|
||||||
phy_get
|
phy_get
|
||||||
phy_init
|
phy_init
|
||||||
|
phylink_connect_phy
|
||||||
|
phylink_create
|
||||||
|
phylink_destroy
|
||||||
|
phylink_disconnect_phy
|
||||||
|
phylink_ethtool_get_pauseparam
|
||||||
|
phylink_ethtool_set_pauseparam
|
||||||
|
phylink_generic_validate
|
||||||
|
phylink_resume
|
||||||
|
phylink_start
|
||||||
|
phylink_stop
|
||||||
|
phylink_suspend
|
||||||
phy_power_off
|
phy_power_off
|
||||||
phy_power_on
|
phy_power_on
|
||||||
|
phy_print_status
|
||||||
phy_put
|
phy_put
|
||||||
phy_set_mode_ext
|
phy_set_mode_ext
|
||||||
|
phy_start
|
||||||
|
phy_stop
|
||||||
|
phy_suspend
|
||||||
pick_migrate_task
|
pick_migrate_task
|
||||||
pid_task
|
pid_task
|
||||||
pinconf_generic_parse_dt_config
|
pinconf_generic_parse_dt_config
|
||||||
@ -1823,6 +1884,7 @@
|
|||||||
print_hex_dump
|
print_hex_dump
|
||||||
_printk
|
_printk
|
||||||
_printk_deferred
|
_printk_deferred
|
||||||
|
__printk_ratelimit
|
||||||
proc_create
|
proc_create
|
||||||
proc_create_data
|
proc_create_data
|
||||||
proc_create_net_data
|
proc_create_net_data
|
||||||
@ -2062,6 +2124,7 @@
|
|||||||
rtnl_unregister_all
|
rtnl_unregister_all
|
||||||
runqueues
|
runqueues
|
||||||
sched_clock
|
sched_clock
|
||||||
|
sched_clock_register
|
||||||
sched_feat_keys
|
sched_feat_keys
|
||||||
sched_setattr
|
sched_setattr
|
||||||
sched_setattr_nocheck
|
sched_setattr_nocheck
|
||||||
@ -2335,6 +2398,7 @@
|
|||||||
spi_controller_suspend
|
spi_controller_suspend
|
||||||
spi_delay_to_ns
|
spi_delay_to_ns
|
||||||
spi_finalize_current_transfer
|
spi_finalize_current_transfer
|
||||||
|
spi_mem_default_supports_op
|
||||||
__spi_register_driver
|
__spi_register_driver
|
||||||
spi_setup
|
spi_setup
|
||||||
spi_sync
|
spi_sync
|
||||||
@ -2444,12 +2508,15 @@
|
|||||||
thermal_zone_get_temp
|
thermal_zone_get_temp
|
||||||
thermal_zone_get_zone_by_name
|
thermal_zone_get_zone_by_name
|
||||||
thread_group_cputime_adjusted
|
thread_group_cputime_adjusted
|
||||||
|
tick_nohz_get_sleep_length
|
||||||
timecounter_init
|
timecounter_init
|
||||||
timecounter_read
|
timecounter_read
|
||||||
|
timer_of_init
|
||||||
timer_unstable_counter_workaround
|
timer_unstable_counter_workaround
|
||||||
topology_clear_scale_freq_source
|
topology_clear_scale_freq_source
|
||||||
topology_update_thermal_pressure
|
topology_update_thermal_pressure
|
||||||
_totalram_pages
|
_totalram_pages
|
||||||
|
_trace_android_vh_record_pcpu_rwsem_starttime
|
||||||
__trace_bprintk
|
__trace_bprintk
|
||||||
trace_event_buffer_commit
|
trace_event_buffer_commit
|
||||||
trace_event_buffer_reserve
|
trace_event_buffer_reserve
|
||||||
@ -2524,6 +2591,8 @@
|
|||||||
__traceiter_android_vh_check_file_open
|
__traceiter_android_vh_check_file_open
|
||||||
__traceiter_android_vh_check_mmap_file
|
__traceiter_android_vh_check_mmap_file
|
||||||
__traceiter_android_vh_cpufreq_fast_switch
|
__traceiter_android_vh_cpufreq_fast_switch
|
||||||
|
__traceiter_android_vh_cpu_idle_enter
|
||||||
|
__traceiter_android_vh_cpu_idle_exit
|
||||||
__traceiter_android_vh_iommu_iovad_alloc_iova
|
__traceiter_android_vh_iommu_iovad_alloc_iova
|
||||||
__traceiter_android_vh_iommu_iovad_free_iova
|
__traceiter_android_vh_iommu_iovad_free_iova
|
||||||
__traceiter_android_vh_is_fpsimd_save
|
__traceiter_android_vh_is_fpsimd_save
|
||||||
@ -2539,6 +2608,8 @@
|
|||||||
__traceiter_android_vh_ufs_clock_scaling
|
__traceiter_android_vh_ufs_clock_scaling
|
||||||
__traceiter_cpu_frequency
|
__traceiter_cpu_frequency
|
||||||
__traceiter_gpu_mem_total
|
__traceiter_gpu_mem_total
|
||||||
|
__traceiter_ipi_entry
|
||||||
|
__traceiter_ipi_raise
|
||||||
__traceiter_mmap_lock_acquire_returned
|
__traceiter_mmap_lock_acquire_returned
|
||||||
__traceiter_mmap_lock_released
|
__traceiter_mmap_lock_released
|
||||||
__traceiter_mmap_lock_start_locking
|
__traceiter_mmap_lock_start_locking
|
||||||
@ -2614,6 +2685,8 @@
|
|||||||
__tracepoint_android_vh_check_file_open
|
__tracepoint_android_vh_check_file_open
|
||||||
__tracepoint_android_vh_check_mmap_file
|
__tracepoint_android_vh_check_mmap_file
|
||||||
__tracepoint_android_vh_cpufreq_fast_switch
|
__tracepoint_android_vh_cpufreq_fast_switch
|
||||||
|
__tracepoint_android_vh_cpu_idle_enter
|
||||||
|
__tracepoint_android_vh_cpu_idle_exit
|
||||||
__tracepoint_android_vh_iommu_iovad_alloc_iova
|
__tracepoint_android_vh_iommu_iovad_alloc_iova
|
||||||
__tracepoint_android_vh_iommu_iovad_free_iova
|
__tracepoint_android_vh_iommu_iovad_free_iova
|
||||||
__tracepoint_android_vh_is_fpsimd_save
|
__tracepoint_android_vh_is_fpsimd_save
|
||||||
@ -2629,12 +2702,15 @@
|
|||||||
__tracepoint_android_vh_ufs_clock_scaling
|
__tracepoint_android_vh_ufs_clock_scaling
|
||||||
__tracepoint_cpu_frequency
|
__tracepoint_cpu_frequency
|
||||||
__tracepoint_gpu_mem_total
|
__tracepoint_gpu_mem_total
|
||||||
|
__tracepoint_ipi_entry
|
||||||
|
__tracepoint_ipi_raise
|
||||||
__tracepoint_mmap_lock_acquire_returned
|
__tracepoint_mmap_lock_acquire_returned
|
||||||
__tracepoint_mmap_lock_released
|
__tracepoint_mmap_lock_released
|
||||||
__tracepoint_mmap_lock_start_locking
|
__tracepoint_mmap_lock_start_locking
|
||||||
__tracepoint_pelt_rt_tp
|
__tracepoint_pelt_rt_tp
|
||||||
__tracepoint_pelt_se_tp
|
__tracepoint_pelt_se_tp
|
||||||
tracepoint_probe_register
|
tracepoint_probe_register
|
||||||
|
tracepoint_probe_register_prio
|
||||||
tracepoint_probe_unregister
|
tracepoint_probe_unregister
|
||||||
__tracepoint_sched_update_nr_running_tp
|
__tracepoint_sched_update_nr_running_tp
|
||||||
tracepoint_srcu
|
tracepoint_srcu
|
||||||
@ -2791,6 +2867,7 @@
|
|||||||
usb_add_hcd
|
usb_add_hcd
|
||||||
usb_alloc_coherent
|
usb_alloc_coherent
|
||||||
usb_alloc_urb
|
usb_alloc_urb
|
||||||
|
usb_altnum_to_altsetting
|
||||||
usb_anchor_urb
|
usb_anchor_urb
|
||||||
usb_assign_descriptors
|
usb_assign_descriptors
|
||||||
usb_autopm_get_interface
|
usb_autopm_get_interface
|
||||||
@ -2803,6 +2880,7 @@
|
|||||||
usb_composite_unregister
|
usb_composite_unregister
|
||||||
usb_control_msg
|
usb_control_msg
|
||||||
usb_control_msg_recv
|
usb_control_msg_recv
|
||||||
|
usb_control_msg_send
|
||||||
usb_copy_descriptors
|
usb_copy_descriptors
|
||||||
usb_create_hcd
|
usb_create_hcd
|
||||||
usb_create_shared_hcd
|
usb_create_shared_hcd
|
||||||
@ -2812,6 +2890,8 @@
|
|||||||
usb_disabled
|
usb_disabled
|
||||||
usb_driver_claim_interface
|
usb_driver_claim_interface
|
||||||
usb_driver_release_interface
|
usb_driver_release_interface
|
||||||
|
usb_driver_set_configuration
|
||||||
|
usb_enable_lpm
|
||||||
usb_ep_alloc_request
|
usb_ep_alloc_request
|
||||||
usb_ep_autoconfig
|
usb_ep_autoconfig
|
||||||
usb_ep_dequeue
|
usb_ep_dequeue
|
||||||
@ -2844,6 +2924,7 @@
|
|||||||
usb_get_intf
|
usb_get_intf
|
||||||
usb_get_maximum_speed
|
usb_get_maximum_speed
|
||||||
usb_get_role_switch_default_mode
|
usb_get_role_switch_default_mode
|
||||||
|
usb_get_urb
|
||||||
usb_gstrings_attach
|
usb_gstrings_attach
|
||||||
usb_hcd_check_unlink_urb
|
usb_hcd_check_unlink_urb
|
||||||
usb_hcd_end_port_resume
|
usb_hcd_end_port_resume
|
||||||
@ -2871,9 +2952,12 @@
|
|||||||
usb_put_function_instance
|
usb_put_function_instance
|
||||||
usb_put_hcd
|
usb_put_hcd
|
||||||
usb_put_intf
|
usb_put_intf
|
||||||
|
usb_queue_reset_device
|
||||||
usb_register_driver
|
usb_register_driver
|
||||||
usb_remove_function
|
usb_remove_function
|
||||||
usb_remove_hcd
|
usb_remove_hcd
|
||||||
|
usb_reset_configuration
|
||||||
|
usb_reset_device
|
||||||
usb_role_string
|
usb_role_string
|
||||||
usb_role_switch_get
|
usb_role_switch_get
|
||||||
usb_role_switch_get_drvdata
|
usb_role_switch_get_drvdata
|
||||||
@ -2881,11 +2965,14 @@
|
|||||||
usb_role_switch_set_role
|
usb_role_switch_set_role
|
||||||
usb_role_switch_unregister
|
usb_role_switch_unregister
|
||||||
usb_root_hub_lost_power
|
usb_root_hub_lost_power
|
||||||
|
usb_set_interface
|
||||||
usb_show_dynids
|
usb_show_dynids
|
||||||
usb_speed_string
|
usb_speed_string
|
||||||
usb_store_new_id
|
usb_store_new_id
|
||||||
|
usb_string
|
||||||
usb_string_id
|
usb_string_id
|
||||||
usb_submit_urb
|
usb_submit_urb
|
||||||
|
usb_unlink_urb
|
||||||
usb_unpoison_urb
|
usb_unpoison_urb
|
||||||
usb_wakeup_notification
|
usb_wakeup_notification
|
||||||
__usecs_to_jiffies
|
__usecs_to_jiffies
|
||||||
@ -3053,6 +3140,7 @@
|
|||||||
wait_woken
|
wait_woken
|
||||||
__wake_up
|
__wake_up
|
||||||
wake_up_bit
|
wake_up_bit
|
||||||
|
wake_up_if_idle
|
||||||
__wake_up_locked
|
__wake_up_locked
|
||||||
wake_up_process
|
wake_up_process
|
||||||
wakeup_source_add
|
wakeup_source_add
|
||||||
@ -3060,6 +3148,10 @@
|
|||||||
wakeup_source_destroy
|
wakeup_source_destroy
|
||||||
wakeup_source_register
|
wakeup_source_register
|
||||||
wakeup_source_remove
|
wakeup_source_remove
|
||||||
|
wakeup_sources_read_lock
|
||||||
|
wakeup_sources_read_unlock
|
||||||
|
wakeup_sources_walk_next
|
||||||
|
wakeup_sources_walk_start
|
||||||
wakeup_source_unregister
|
wakeup_source_unregister
|
||||||
__wake_up_sync_key
|
__wake_up_sync_key
|
||||||
__warn_printk
|
__warn_printk
|
||||||
|
@ -1,9 +1,14 @@
|
|||||||
[abi_symbol_list]
|
[abi_symbol_list]
|
||||||
|
address_space_init_once
|
||||||
bio_add_page
|
bio_add_page
|
||||||
bio_associate_blkg
|
bio_associate_blkg
|
||||||
bio_put
|
bio_put
|
||||||
|
__blkdev_issue_discard
|
||||||
|
blk_finish_plug
|
||||||
blk_rq_map_user
|
blk_rq_map_user
|
||||||
blk_rq_map_user_iov
|
blk_rq_map_user_iov
|
||||||
|
blk_start_plug
|
||||||
|
cgroup_add_legacy_cftypes
|
||||||
console_printk
|
console_printk
|
||||||
cpufreq_frequency_table_get_index
|
cpufreq_frequency_table_get_index
|
||||||
cpufreq_policy_transition_delay_us
|
cpufreq_policy_transition_delay_us
|
||||||
@ -35,6 +40,7 @@
|
|||||||
ktime_get_coarse_real_ts64
|
ktime_get_coarse_real_ts64
|
||||||
memory_cgrp_subsys
|
memory_cgrp_subsys
|
||||||
memory_cgrp_subsys_enabled_key
|
memory_cgrp_subsys_enabled_key
|
||||||
|
mem_cgroup_from_id
|
||||||
mipi_dsi_generic_write
|
mipi_dsi_generic_write
|
||||||
mmc_wait_for_cmd
|
mmc_wait_for_cmd
|
||||||
nf_ct_attach
|
nf_ct_attach
|
||||||
@ -42,10 +48,14 @@
|
|||||||
nf_register_net_hooks
|
nf_register_net_hooks
|
||||||
nf_unregister_net_hooks
|
nf_unregister_net_hooks
|
||||||
of_css
|
of_css
|
||||||
|
__page_file_index
|
||||||
__page_mapcount
|
__page_mapcount
|
||||||
pm_get_active_wakeup_sources
|
pm_get_active_wakeup_sources
|
||||||
__printk_ratelimit
|
__printk_ratelimit
|
||||||
|
prepare_to_wait_exclusive
|
||||||
proc_symlink
|
proc_symlink
|
||||||
|
radix_tree_lookup_slot
|
||||||
|
radix_tree_replace_slot
|
||||||
_raw_write_trylock
|
_raw_write_trylock
|
||||||
reciprocal_value
|
reciprocal_value
|
||||||
register_tcf_proto_ops
|
register_tcf_proto_ops
|
||||||
@ -111,11 +121,16 @@
|
|||||||
__traceiter_android_vh_cgroup_set_task
|
__traceiter_android_vh_cgroup_set_task
|
||||||
__traceiter_android_vh_dup_task_struct
|
__traceiter_android_vh_dup_task_struct
|
||||||
__traceiter_android_vh_exit_signal
|
__traceiter_android_vh_exit_signal
|
||||||
|
__traceiter_android_vh_mem_cgroup_id_remove
|
||||||
|
__traceiter_android_vh_mem_cgroup_css_offline
|
||||||
|
__traceiter_android_vh_mem_cgroup_css_online
|
||||||
|
__traceiter_android_vh_mem_cgroup_free
|
||||||
|
__traceiter_android_vh_mem_cgroup_alloc
|
||||||
__traceiter_android_vh_irqtime_account_process_tick
|
__traceiter_android_vh_irqtime_account_process_tick
|
||||||
__traceiter_android_vh_mutex_can_spin_on_owner
|
__traceiter_android_vh_mutex_can_spin_on_owner
|
||||||
__traceiter_android_vh_mutex_opt_spin_finish
|
__traceiter_android_vh_mutex_opt_spin_finish
|
||||||
__traceiter_android_vh_mutex_opt_spin_start
|
__traceiter_android_vh_mutex_opt_spin_start
|
||||||
__traceiter_android_vh_cpufreq_acct_update_power
|
__traceiter_android_vh_cpufreq_acct_update_power
|
||||||
__traceiter_android_vh_cleanup_old_buffers_bypass
|
__traceiter_android_vh_cleanup_old_buffers_bypass
|
||||||
__traceiter_android_vh_dm_bufio_shrink_scan_bypass
|
__traceiter_android_vh_dm_bufio_shrink_scan_bypass
|
||||||
__traceiter_android_vh_mutex_unlock_slowpath
|
__traceiter_android_vh_mutex_unlock_slowpath
|
||||||
@ -126,6 +141,12 @@
|
|||||||
__traceiter_android_vh_sched_stat_runtime_rt
|
__traceiter_android_vh_sched_stat_runtime_rt
|
||||||
__traceiter_android_vh_shrink_node_memcgs
|
__traceiter_android_vh_shrink_node_memcgs
|
||||||
__traceiter_android_vh_sync_txn_recvd
|
__traceiter_android_vh_sync_txn_recvd
|
||||||
|
__traceiter_block_bio_queue
|
||||||
|
__traceiter_block_getrq
|
||||||
|
__traceiter_block_rq_complete
|
||||||
|
__traceiter_block_rq_issue
|
||||||
|
__traceiter_block_rq_merge
|
||||||
|
__traceiter_block_rq_requeue
|
||||||
__traceiter_sched_stat_blocked
|
__traceiter_sched_stat_blocked
|
||||||
__traceiter_sched_stat_iowait
|
__traceiter_sched_stat_iowait
|
||||||
__traceiter_sched_stat_runtime
|
__traceiter_sched_stat_runtime
|
||||||
@ -156,6 +177,11 @@
|
|||||||
__tracepoint_android_vh_do_futex
|
__tracepoint_android_vh_do_futex
|
||||||
__tracepoint_android_vh_dup_task_struct
|
__tracepoint_android_vh_dup_task_struct
|
||||||
__tracepoint_android_vh_exit_signal
|
__tracepoint_android_vh_exit_signal
|
||||||
|
__tracepoint_android_vh_mem_cgroup_id_remove
|
||||||
|
__tracepoint_android_vh_mem_cgroup_css_offline
|
||||||
|
__tracepoint_android_vh_mem_cgroup_css_online
|
||||||
|
__tracepoint_android_vh_mem_cgroup_free
|
||||||
|
__tracepoint_android_vh_mem_cgroup_alloc
|
||||||
__tracepoint_android_vh_futex_sleep_start
|
__tracepoint_android_vh_futex_sleep_start
|
||||||
__tracepoint_android_vh_futex_wait_end
|
__tracepoint_android_vh_futex_wait_end
|
||||||
__tracepoint_android_vh_futex_wait_start
|
__tracepoint_android_vh_futex_wait_start
|
||||||
@ -177,6 +203,12 @@
|
|||||||
__tracepoint_android_vh_sched_stat_runtime_rt
|
__tracepoint_android_vh_sched_stat_runtime_rt
|
||||||
__tracepoint_android_vh_shrink_node_memcgs
|
__tracepoint_android_vh_shrink_node_memcgs
|
||||||
__tracepoint_android_vh_sync_txn_recvd
|
__tracepoint_android_vh_sync_txn_recvd
|
||||||
|
__tracepoint_block_bio_queue
|
||||||
|
__tracepoint_block_getrq
|
||||||
|
__tracepoint_block_rq_complete
|
||||||
|
__tracepoint_block_rq_issue
|
||||||
|
__tracepoint_block_rq_merge
|
||||||
|
__tracepoint_block_rq_requeue
|
||||||
__tracepoint_sched_stat_blocked
|
__tracepoint_sched_stat_blocked
|
||||||
__tracepoint_sched_stat_iowait
|
__tracepoint_sched_stat_iowait
|
||||||
__tracepoint_sched_stat_runtime
|
__tracepoint_sched_stat_runtime
|
||||||
@ -184,6 +216,7 @@
|
|||||||
__tracepoint_sched_stat_wait
|
__tracepoint_sched_stat_wait
|
||||||
__tracepoint_sched_waking
|
__tracepoint_sched_waking
|
||||||
__tracepoint_task_rename
|
__tracepoint_task_rename
|
||||||
|
try_to_free_mem_cgroup_pages
|
||||||
typec_mux_get_drvdata
|
typec_mux_get_drvdata
|
||||||
unregister_memory_notifier
|
unregister_memory_notifier
|
||||||
unregister_tcf_proto_ops
|
unregister_tcf_proto_ops
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
__alloc_percpu_gfp
|
__alloc_percpu_gfp
|
||||||
__alloc_skb
|
__alloc_skb
|
||||||
alloc_skb_with_frags
|
alloc_skb_with_frags
|
||||||
|
alloc_swapdev_block
|
||||||
alloc_workqueue
|
alloc_workqueue
|
||||||
alt_cb_patch_nops
|
alt_cb_patch_nops
|
||||||
amba_bustype
|
amba_bustype
|
||||||
@ -141,10 +142,10 @@
|
|||||||
bpf_prog_put
|
bpf_prog_put
|
||||||
bpf_prog_sub
|
bpf_prog_sub
|
||||||
bpf_stats_enabled_key
|
bpf_stats_enabled_key
|
||||||
|
bpf_trace_run1
|
||||||
bpf_trace_run10
|
bpf_trace_run10
|
||||||
bpf_trace_run11
|
bpf_trace_run11
|
||||||
bpf_trace_run12
|
bpf_trace_run12
|
||||||
bpf_trace_run1
|
|
||||||
bpf_trace_run2
|
bpf_trace_run2
|
||||||
bpf_trace_run3
|
bpf_trace_run3
|
||||||
bpf_trace_run4
|
bpf_trace_run4
|
||||||
@ -299,6 +300,7 @@
|
|||||||
clk_register
|
clk_register
|
||||||
clk_restore_context
|
clk_restore_context
|
||||||
clk_round_rate
|
clk_round_rate
|
||||||
|
clk_save_context
|
||||||
clk_set_parent
|
clk_set_parent
|
||||||
clk_set_rate
|
clk_set_rate
|
||||||
clk_sync_state
|
clk_sync_state
|
||||||
@ -694,6 +696,7 @@
|
|||||||
dev_pm_opp_of_register_em
|
dev_pm_opp_of_register_em
|
||||||
dev_pm_opp_of_remove_table
|
dev_pm_opp_of_remove_table
|
||||||
dev_pm_opp_put
|
dev_pm_opp_put
|
||||||
|
dev_pm_opp_remove
|
||||||
dev_pm_opp_remove_all_dynamic
|
dev_pm_opp_remove_all_dynamic
|
||||||
dev_pm_opp_set_config
|
dev_pm_opp_set_config
|
||||||
dev_pm_opp_set_opp
|
dev_pm_opp_set_opp
|
||||||
@ -731,6 +734,7 @@
|
|||||||
divider_ro_round_rate_parent
|
divider_ro_round_rate_parent
|
||||||
divider_round_rate_parent
|
divider_round_rate_parent
|
||||||
dma_alloc_attrs
|
dma_alloc_attrs
|
||||||
|
dma_alloc_noncontiguous
|
||||||
dma_alloc_pages
|
dma_alloc_pages
|
||||||
dma_async_device_register
|
dma_async_device_register
|
||||||
dma_async_device_unregister
|
dma_async_device_unregister
|
||||||
@ -769,6 +773,7 @@
|
|||||||
dma_fence_signal_timestamp_locked
|
dma_fence_signal_timestamp_locked
|
||||||
dma_fence_wait_timeout
|
dma_fence_wait_timeout
|
||||||
dma_free_attrs
|
dma_free_attrs
|
||||||
|
dma_free_noncontiguous
|
||||||
dma_free_pages
|
dma_free_pages
|
||||||
dma_get_sgtable_attrs
|
dma_get_sgtable_attrs
|
||||||
dma_get_slave_channel
|
dma_get_slave_channel
|
||||||
@ -803,6 +808,8 @@
|
|||||||
dma_unmap_page_attrs
|
dma_unmap_page_attrs
|
||||||
dma_unmap_resource
|
dma_unmap_resource
|
||||||
dma_unmap_sg_attrs
|
dma_unmap_sg_attrs
|
||||||
|
dma_vmap_noncontiguous
|
||||||
|
dma_vunmap_noncontiguous
|
||||||
do_trace_netlink_extack
|
do_trace_netlink_extack
|
||||||
do_trace_rcu_torture_read
|
do_trace_rcu_torture_read
|
||||||
double_rq_lock
|
double_rq_lock
|
||||||
@ -1227,6 +1234,9 @@
|
|||||||
gh_rm_notifier_unregister
|
gh_rm_notifier_unregister
|
||||||
gh_rm_register_platform_ops
|
gh_rm_register_platform_ops
|
||||||
gh_rm_unregister_platform_ops
|
gh_rm_unregister_platform_ops
|
||||||
|
gic_v3_cpu_init
|
||||||
|
gic_v3_dist_init
|
||||||
|
gic_v3_dist_wait_for_rwp
|
||||||
gic_nonsecure_priorities
|
gic_nonsecure_priorities
|
||||||
gov_attr_set_init
|
gov_attr_set_init
|
||||||
gov_attr_set_put
|
gov_attr_set_put
|
||||||
@ -1873,8 +1883,8 @@
|
|||||||
memremap_pages
|
memremap_pages
|
||||||
memscan
|
memscan
|
||||||
mem_section
|
mem_section
|
||||||
memset64
|
|
||||||
memset
|
memset
|
||||||
|
memset64
|
||||||
__memset_io
|
__memset_io
|
||||||
memstart_addr
|
memstart_addr
|
||||||
memunmap
|
memunmap
|
||||||
@ -1892,12 +1902,37 @@
|
|||||||
__mmap_lock_do_trace_acquire_returned
|
__mmap_lock_do_trace_acquire_returned
|
||||||
__mmap_lock_do_trace_released
|
__mmap_lock_do_trace_released
|
||||||
__mmap_lock_do_trace_start_locking
|
__mmap_lock_do_trace_start_locking
|
||||||
|
__mmc_claim_host
|
||||||
mmc_cqe_request_done
|
mmc_cqe_request_done
|
||||||
|
mmc_execute_tuning
|
||||||
|
mmc_get_card
|
||||||
|
mmc_get_ext_csd
|
||||||
|
mmc_hs200_tuning
|
||||||
|
mmc_issue_type
|
||||||
mmc_of_parse
|
mmc_of_parse
|
||||||
|
__mmc_poll_for_busy
|
||||||
|
mmc_prepare_busy_cmd
|
||||||
|
mmc_put_card
|
||||||
mmc_regulator_get_supply
|
mmc_regulator_get_supply
|
||||||
mmc_regulator_set_ocr
|
mmc_regulator_set_ocr
|
||||||
mmc_regulator_set_vqmmc
|
mmc_regulator_set_vqmmc
|
||||||
|
mmc_release_host
|
||||||
|
mmc_retune_hold
|
||||||
|
mmc_retune_release
|
||||||
|
mmc_select_bus_width
|
||||||
|
mmc_select_card
|
||||||
|
mmc_select_hs
|
||||||
|
mmc_select_hs400
|
||||||
|
mmc_select_hs_ddr
|
||||||
|
mmc_select_timing
|
||||||
|
mmc_send_status
|
||||||
mmc_send_tuning
|
mmc_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
|
mmput
|
||||||
mod_delayed_work_on
|
mod_delayed_work_on
|
||||||
mod_node_page_state
|
mod_node_page_state
|
||||||
@ -2017,10 +2052,10 @@
|
|||||||
nla_find
|
nla_find
|
||||||
nla_memcpy
|
nla_memcpy
|
||||||
__nla_parse
|
__nla_parse
|
||||||
nla_put_64bit
|
|
||||||
nla_put
|
nla_put
|
||||||
nla_reserve_64bit
|
nla_put_64bit
|
||||||
nla_reserve
|
nla_reserve
|
||||||
|
nla_reserve_64bit
|
||||||
nla_strscpy
|
nla_strscpy
|
||||||
__nla_validate
|
__nla_validate
|
||||||
__nlmsg_put
|
__nlmsg_put
|
||||||
@ -2159,6 +2194,8 @@
|
|||||||
page_ext_put
|
page_ext_put
|
||||||
page_is_ram
|
page_is_ram
|
||||||
page_mapping
|
page_mapping
|
||||||
|
page_pinner_inited
|
||||||
|
__page_pinner_put_page
|
||||||
page_pool_alloc_pages
|
page_pool_alloc_pages
|
||||||
page_pool_create
|
page_pool_create
|
||||||
page_pool_destroy
|
page_pool_destroy
|
||||||
@ -2772,6 +2809,7 @@
|
|||||||
sdhci_cqe_disable
|
sdhci_cqe_disable
|
||||||
sdhci_cqe_enable
|
sdhci_cqe_enable
|
||||||
sdhci_cqe_irq
|
sdhci_cqe_irq
|
||||||
|
sdhci_dumpregs
|
||||||
sdhci_enable_clk
|
sdhci_enable_clk
|
||||||
sdhci_get_property
|
sdhci_get_property
|
||||||
sdhci_pltfm_free
|
sdhci_pltfm_free
|
||||||
@ -2932,6 +2970,7 @@
|
|||||||
smp_call_function
|
smp_call_function
|
||||||
smp_call_function_single
|
smp_call_function_single
|
||||||
smp_call_function_single_async
|
smp_call_function_single_async
|
||||||
|
snapshot_get_image_size
|
||||||
snd_ctl_remove
|
snd_ctl_remove
|
||||||
snd_hwdep_new
|
snd_hwdep_new
|
||||||
snd_info_create_card_entry
|
snd_info_create_card_entry
|
||||||
@ -3202,6 +3241,7 @@
|
|||||||
topology_update_done
|
topology_update_done
|
||||||
topology_update_thermal_pressure
|
topology_update_thermal_pressure
|
||||||
_totalram_pages
|
_totalram_pages
|
||||||
|
_trace_android_vh_record_pcpu_rwsem_starttime
|
||||||
trace_array_put
|
trace_array_put
|
||||||
__trace_bprintk
|
__trace_bprintk
|
||||||
trace_clock_local
|
trace_clock_local
|
||||||
@ -3246,6 +3286,8 @@
|
|||||||
__traceiter_android_rvh_iommu_setup_dma_ops
|
__traceiter_android_rvh_iommu_setup_dma_ops
|
||||||
__traceiter_android_rvh_is_cpu_allowed
|
__traceiter_android_rvh_is_cpu_allowed
|
||||||
__traceiter_android_rvh_migrate_queued_task
|
__traceiter_android_rvh_migrate_queued_task
|
||||||
|
__traceiter_android_rvh_mmc_resume
|
||||||
|
__traceiter_android_rvh_mmc_suspend
|
||||||
__traceiter_android_rvh_new_task_stats
|
__traceiter_android_rvh_new_task_stats
|
||||||
__traceiter_android_rvh_pick_next_entity
|
__traceiter_android_rvh_pick_next_entity
|
||||||
__traceiter_android_rvh_place_entity
|
__traceiter_android_rvh_place_entity
|
||||||
@ -3298,6 +3340,7 @@
|
|||||||
__traceiter_android_vh_cpufreq_fast_switch
|
__traceiter_android_vh_cpufreq_fast_switch
|
||||||
__traceiter_android_vh_cpufreq_resolve_freq
|
__traceiter_android_vh_cpufreq_resolve_freq
|
||||||
__traceiter_android_vh_cpufreq_target
|
__traceiter_android_vh_cpufreq_target
|
||||||
|
__traceiter_android_vh_check_hibernation_swap
|
||||||
__traceiter_android_vh_cpu_idle_enter
|
__traceiter_android_vh_cpu_idle_enter
|
||||||
__traceiter_android_vh_cpu_idle_exit
|
__traceiter_android_vh_cpu_idle_exit
|
||||||
__traceiter_android_vh_cpuidle_psci_enter
|
__traceiter_android_vh_cpuidle_psci_enter
|
||||||
@ -3306,22 +3349,30 @@
|
|||||||
__traceiter_android_vh_do_wake_up_sync
|
__traceiter_android_vh_do_wake_up_sync
|
||||||
__traceiter_android_vh_dump_throttled_rt_tasks
|
__traceiter_android_vh_dump_throttled_rt_tasks
|
||||||
__traceiter_android_vh_free_task
|
__traceiter_android_vh_free_task
|
||||||
|
__traceiter_android_vh_encrypt_page
|
||||||
__traceiter_android_vh_ftrace_dump_buffer
|
__traceiter_android_vh_ftrace_dump_buffer
|
||||||
__traceiter_android_vh_ftrace_format_check
|
__traceiter_android_vh_ftrace_format_check
|
||||||
__traceiter_android_vh_ftrace_oops_enter
|
__traceiter_android_vh_ftrace_oops_enter
|
||||||
__traceiter_android_vh_ftrace_oops_exit
|
__traceiter_android_vh_ftrace_oops_exit
|
||||||
__traceiter_android_vh_ftrace_size_check
|
__traceiter_android_vh_ftrace_size_check
|
||||||
__traceiter_android_vh_ignore_dmabuf_vmap_bounds
|
__traceiter_android_vh_ignore_dmabuf_vmap_bounds
|
||||||
|
__traceiter_android_vh_gic_v3_suspend
|
||||||
__traceiter_android_vh_ipi_stop
|
__traceiter_android_vh_ipi_stop
|
||||||
__traceiter_android_vh_jiffies_update
|
__traceiter_android_vh_jiffies_update
|
||||||
__traceiter_android_vh_kswapd_per_node
|
__traceiter_android_vh_kswapd_per_node
|
||||||
|
__traceiter_android_vh_mpam_set
|
||||||
|
__traceiter_android_vh_init_aes_encrypt
|
||||||
|
__traceiter_android_vh_post_image_save
|
||||||
__traceiter_android_vh_printk_hotplug
|
__traceiter_android_vh_printk_hotplug
|
||||||
__traceiter_android_vh_rproc_recovery
|
__traceiter_android_vh_rproc_recovery
|
||||||
__traceiter_android_vh_rproc_recovery_set
|
__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_scheduler_tick
|
||||||
__traceiter_android_vh_setscheduler_uclamp
|
__traceiter_android_vh_setscheduler_uclamp
|
||||||
__traceiter_android_vh_show_resume_epoch_val
|
__traceiter_android_vh_show_resume_epoch_val
|
||||||
__traceiter_android_vh_show_suspend_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_timer_calc_index
|
||||||
__traceiter_android_vh_ufs_check_int_errors
|
__traceiter_android_vh_ufs_check_int_errors
|
||||||
__traceiter_android_vh_ufs_compl_command
|
__traceiter_android_vh_ufs_compl_command
|
||||||
@ -3378,6 +3429,8 @@
|
|||||||
__tracepoint_android_rvh_iommu_setup_dma_ops
|
__tracepoint_android_rvh_iommu_setup_dma_ops
|
||||||
__tracepoint_android_rvh_is_cpu_allowed
|
__tracepoint_android_rvh_is_cpu_allowed
|
||||||
__tracepoint_android_rvh_migrate_queued_task
|
__tracepoint_android_rvh_migrate_queued_task
|
||||||
|
__tracepoint_android_rvh_mmc_resume
|
||||||
|
__tracepoint_android_rvh_mmc_suspend
|
||||||
__tracepoint_android_rvh_new_task_stats
|
__tracepoint_android_rvh_new_task_stats
|
||||||
__tracepoint_android_rvh_pick_next_entity
|
__tracepoint_android_rvh_pick_next_entity
|
||||||
__tracepoint_android_rvh_place_entity
|
__tracepoint_android_rvh_place_entity
|
||||||
@ -3430,6 +3483,7 @@
|
|||||||
__tracepoint_android_vh_cpufreq_fast_switch
|
__tracepoint_android_vh_cpufreq_fast_switch
|
||||||
__tracepoint_android_vh_cpufreq_resolve_freq
|
__tracepoint_android_vh_cpufreq_resolve_freq
|
||||||
__tracepoint_android_vh_cpufreq_target
|
__tracepoint_android_vh_cpufreq_target
|
||||||
|
__tracepoint_android_vh_check_hibernation_swap
|
||||||
__tracepoint_android_vh_cpu_idle_enter
|
__tracepoint_android_vh_cpu_idle_enter
|
||||||
__tracepoint_android_vh_cpu_idle_exit
|
__tracepoint_android_vh_cpu_idle_exit
|
||||||
__tracepoint_android_vh_cpuidle_psci_enter
|
__tracepoint_android_vh_cpuidle_psci_enter
|
||||||
@ -3438,22 +3492,30 @@
|
|||||||
__tracepoint_android_vh_do_wake_up_sync
|
__tracepoint_android_vh_do_wake_up_sync
|
||||||
__tracepoint_android_vh_dump_throttled_rt_tasks
|
__tracepoint_android_vh_dump_throttled_rt_tasks
|
||||||
__tracepoint_android_vh_free_task
|
__tracepoint_android_vh_free_task
|
||||||
|
__tracepoint_android_vh_encrypt_page
|
||||||
__tracepoint_android_vh_ftrace_dump_buffer
|
__tracepoint_android_vh_ftrace_dump_buffer
|
||||||
__tracepoint_android_vh_ftrace_format_check
|
__tracepoint_android_vh_ftrace_format_check
|
||||||
__tracepoint_android_vh_ftrace_oops_enter
|
__tracepoint_android_vh_ftrace_oops_enter
|
||||||
__tracepoint_android_vh_ftrace_oops_exit
|
__tracepoint_android_vh_ftrace_oops_exit
|
||||||
__tracepoint_android_vh_ftrace_size_check
|
__tracepoint_android_vh_ftrace_size_check
|
||||||
__tracepoint_android_vh_ignore_dmabuf_vmap_bounds
|
__tracepoint_android_vh_ignore_dmabuf_vmap_bounds
|
||||||
|
__tracepoint_android_vh_gic_v3_suspend
|
||||||
__tracepoint_android_vh_ipi_stop
|
__tracepoint_android_vh_ipi_stop
|
||||||
__tracepoint_android_vh_jiffies_update
|
__tracepoint_android_vh_jiffies_update
|
||||||
__tracepoint_android_vh_kswapd_per_node
|
__tracepoint_android_vh_kswapd_per_node
|
||||||
|
__tracepoint_android_vh_mpam_set
|
||||||
|
__tracepoint_android_vh_init_aes_encrypt
|
||||||
|
__tracepoint_android_vh_post_image_save
|
||||||
__tracepoint_android_vh_printk_hotplug
|
__tracepoint_android_vh_printk_hotplug
|
||||||
__tracepoint_android_vh_rproc_recovery
|
__tracepoint_android_vh_rproc_recovery
|
||||||
__tracepoint_android_vh_rproc_recovery_set
|
__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_scheduler_tick
|
||||||
__tracepoint_android_vh_setscheduler_uclamp
|
__tracepoint_android_vh_setscheduler_uclamp
|
||||||
__tracepoint_android_vh_show_resume_epoch_val
|
__tracepoint_android_vh_show_resume_epoch_val
|
||||||
__tracepoint_android_vh_show_suspend_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_timer_calc_index
|
||||||
__tracepoint_android_vh_ufs_check_int_errors
|
__tracepoint_android_vh_ufs_check_int_errors
|
||||||
__tracepoint_android_vh_ufs_compl_command
|
__tracepoint_android_vh_ufs_compl_command
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -223,8 +223,20 @@
|
|||||||
#required by io_limit.ko
|
#required by io_limit.ko
|
||||||
__traceiter_android_vh_psi_event
|
__traceiter_android_vh_psi_event
|
||||||
__traceiter_android_vh_psi_group
|
__traceiter_android_vh_psi_group
|
||||||
|
__traceiter_android_rvh_ctl_dirty_rate
|
||||||
__tracepoint_android_vh_psi_event
|
__tracepoint_android_vh_psi_event
|
||||||
__tracepoint_android_vh_psi_group
|
__tracepoint_android_vh_psi_group
|
||||||
|
__tracepoint_android_rvh_ctl_dirty_rate
|
||||||
|
|
||||||
#required by touch module
|
#required by touch module
|
||||||
power_supply_is_system_supplied
|
power_supply_is_system_supplied
|
||||||
|
|
||||||
|
#required by mi_mempool.ko
|
||||||
|
__traceiter_android_vh_alloc_pages_reclaim_bypass
|
||||||
|
__traceiter_android_vh_alloc_pages_failure_bypass
|
||||||
|
__tracepoint_android_vh_alloc_pages_reclaim_bypass
|
||||||
|
__tracepoint_android_vh_alloc_pages_failure_bypass
|
||||||
|
|
||||||
|
#required by mi_mempool.ko
|
||||||
|
__traceiter_android_vh_mmput
|
||||||
|
__tracepoint_android_vh_mmput
|
||||||
|
@ -316,7 +316,7 @@ static int __init gate_vma_init(void)
|
|||||||
gate_vma.vm_page_prot = PAGE_READONLY_EXEC;
|
gate_vma.vm_page_prot = PAGE_READONLY_EXEC;
|
||||||
gate_vma.vm_start = 0xffff0000;
|
gate_vma.vm_start = 0xffff0000;
|
||||||
gate_vma.vm_end = 0xffff0000 + PAGE_SIZE;
|
gate_vma.vm_end = 0xffff0000 + PAGE_SIZE;
|
||||||
gate_vma.vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC;
|
vm_flags_init(&gate_vma, VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
arch_initcall(gate_vma_init);
|
arch_initcall(gate_vma_init);
|
||||||
|
@ -96,6 +96,7 @@ config ARM64
|
|||||||
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
|
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
|
||||||
select ARCH_SUPPORTS_NUMA_BALANCING
|
select ARCH_SUPPORTS_NUMA_BALANCING
|
||||||
select ARCH_SUPPORTS_PAGE_TABLE_CHECK
|
select ARCH_SUPPORTS_PAGE_TABLE_CHECK
|
||||||
|
select ARCH_SUPPORTS_PER_VMA_LOCK
|
||||||
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT
|
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT
|
||||||
select ARCH_WANT_DEFAULT_BPF_JIT
|
select ARCH_WANT_DEFAULT_BPF_JIT
|
||||||
select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
|
select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
|
||||||
|
@ -62,6 +62,7 @@ CONFIG_UNWIND_PATCH_PAC_INTO_SCS=y
|
|||||||
CONFIG_CMDLINE="console=ttynull stack_depot_disable=on cgroup_disable=pressure kasan.page_alloc.sample=10 kasan.stacktrace=off kvm-arm.mode=protected bootconfig ioremap_guard"
|
CONFIG_CMDLINE="console=ttynull stack_depot_disable=on cgroup_disable=pressure kasan.page_alloc.sample=10 kasan.stacktrace=off kvm-arm.mode=protected bootconfig ioremap_guard"
|
||||||
CONFIG_CMDLINE_EXTEND=y
|
CONFIG_CMDLINE_EXTEND=y
|
||||||
# CONFIG_DMI is not set
|
# CONFIG_DMI is not set
|
||||||
|
CONFIG_HIBERNATION=y
|
||||||
CONFIG_PM_WAKELOCKS=y
|
CONFIG_PM_WAKELOCKS=y
|
||||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||||
@ -326,6 +327,7 @@ CONFIG_IFB=y
|
|||||||
CONFIG_MACSEC=y
|
CONFIG_MACSEC=y
|
||||||
CONFIG_TUN=y
|
CONFIG_TUN=y
|
||||||
CONFIG_VETH=y
|
CONFIG_VETH=y
|
||||||
|
CONFIG_LED_TRIGGER_PHY=y
|
||||||
CONFIG_AX88796B_PHY=y
|
CONFIG_AX88796B_PHY=y
|
||||||
CONFIG_CAN_VCAN=m
|
CONFIG_CAN_VCAN=m
|
||||||
CONFIG_CAN_SLCAN=m
|
CONFIG_CAN_SLCAN=m
|
||||||
@ -704,6 +706,7 @@ CONFIG_UBSAN_LOCAL_BOUNDS=y
|
|||||||
# CONFIG_UBSAN_ENUM is not set
|
# CONFIG_UBSAN_ENUM is not set
|
||||||
CONFIG_PAGE_OWNER=y
|
CONFIG_PAGE_OWNER=y
|
||||||
CONFIG_PAGE_PINNER=y
|
CONFIG_PAGE_PINNER=y
|
||||||
|
CONFIG_PER_VMA_LOCK_STATS=y
|
||||||
CONFIG_DEBUG_STACK_USAGE=y
|
CONFIG_DEBUG_STACK_USAGE=y
|
||||||
CONFIG_DEBUG_MEMORY_INIT=y
|
CONFIG_DEBUG_MEMORY_INIT=y
|
||||||
CONFIG_KASAN=y
|
CONFIG_KASAN=y
|
||||||
|
@ -19,4 +19,14 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_KFENCE
|
||||||
|
extern bool kfence_early_init;
|
||||||
|
static inline bool arm64_kfence_can_set_direct_map(void)
|
||||||
|
{
|
||||||
|
return !kfence_early_init;
|
||||||
|
}
|
||||||
|
#else /* CONFIG_KFENCE */
|
||||||
|
static inline bool arm64_kfence_can_set_direct_map(void) { return false; }
|
||||||
|
#endif /* CONFIG_KFENCE */
|
||||||
|
|
||||||
#endif /* __ASM_KFENCE_H */
|
#endif /* __ASM_KFENCE_H */
|
||||||
|
@ -63,17 +63,11 @@ enum __kvm_host_smccc_func {
|
|||||||
__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa,
|
__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa,
|
||||||
__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid,
|
__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid,
|
||||||
__KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context,
|
__KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context,
|
||||||
|
|
||||||
/*
|
|
||||||
* __pkvm_alloc_module_va may temporarily serve as the privileged hcall
|
|
||||||
* limit when module loading is enabled, see early_pkvm_enable_modules().
|
|
||||||
*/
|
|
||||||
__KVM_HOST_SMCCC_FUNC___pkvm_alloc_module_va,
|
__KVM_HOST_SMCCC_FUNC___pkvm_alloc_module_va,
|
||||||
__KVM_HOST_SMCCC_FUNC___pkvm_map_module_page,
|
__KVM_HOST_SMCCC_FUNC___pkvm_map_module_page,
|
||||||
__KVM_HOST_SMCCC_FUNC___pkvm_unmap_module_page,
|
__KVM_HOST_SMCCC_FUNC___pkvm_unmap_module_page,
|
||||||
__KVM_HOST_SMCCC_FUNC___pkvm_init_module,
|
__KVM_HOST_SMCCC_FUNC___pkvm_init_module,
|
||||||
__KVM_HOST_SMCCC_FUNC___pkvm_register_hcall,
|
__KVM_HOST_SMCCC_FUNC___pkvm_register_hcall,
|
||||||
__KVM_HOST_SMCCC_FUNC___pkvm_close_module_registration,
|
|
||||||
__KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize,
|
__KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize,
|
||||||
|
|
||||||
/* Hypercalls available after pKVM finalisation */
|
/* Hypercalls available after pKVM finalisation */
|
||||||
|
@ -25,7 +25,7 @@ unsigned long mte_copy_tags_to_user(void __user *to, void *from,
|
|||||||
unsigned long n);
|
unsigned long n);
|
||||||
int mte_save_tags(struct page *page);
|
int mte_save_tags(struct page *page);
|
||||||
void mte_save_page_tags(const void *page_addr, void *tag_storage);
|
void mte_save_page_tags(const void *page_addr, void *tag_storage);
|
||||||
bool mte_restore_tags(swp_entry_t entry, struct page *page);
|
void mte_restore_tags(swp_entry_t entry, struct page *page);
|
||||||
void mte_restore_page_tags(void *page_addr, const void *tag_storage);
|
void mte_restore_page_tags(void *page_addr, const void *tag_storage);
|
||||||
void mte_invalidate_tags(int type, pgoff_t offset);
|
void mte_invalidate_tags(int type, pgoff_t offset);
|
||||||
void mte_invalidate_tags_area(int type);
|
void mte_invalidate_tags_area(int type);
|
||||||
@ -61,7 +61,7 @@ static inline bool page_mte_tagged(struct page *page)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void mte_zero_clear_page_tags(void *addr);
|
void mte_zero_clear_page_tags(void *addr);
|
||||||
void mte_sync_tags(pte_t old_pte, pte_t pte);
|
void mte_sync_tags(pte_t pte);
|
||||||
void mte_copy_page_tags(void *kto, const void *kfrom);
|
void mte_copy_page_tags(void *kto, const void *kfrom);
|
||||||
void mte_thread_init_user(void);
|
void mte_thread_init_user(void);
|
||||||
void mte_thread_switch(struct task_struct *next);
|
void mte_thread_switch(struct task_struct *next);
|
||||||
@ -89,7 +89,7 @@ static inline bool page_mte_tagged(struct page *page)
|
|||||||
static inline void mte_zero_clear_page_tags(void *addr)
|
static inline void mte_zero_clear_page_tags(void *addr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
static inline void mte_sync_tags(pte_t old_pte, pte_t pte)
|
static inline void mte_sync_tags(pte_t pte)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
static inline void mte_copy_page_tags(void *kto, const void *kfrom)
|
static inline void mte_copy_page_tags(void *kto, const void *kfrom)
|
||||||
|
@ -335,18 +335,8 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
|
|||||||
* don't expose tags (instruction fetches don't check tags).
|
* don't expose tags (instruction fetches don't check tags).
|
||||||
*/
|
*/
|
||||||
if (system_supports_mte() && pte_access_permitted(pte, false) &&
|
if (system_supports_mte() && pte_access_permitted(pte, false) &&
|
||||||
!pte_special(pte)) {
|
!pte_special(pte) && pte_tagged(pte))
|
||||||
pte_t old_pte = READ_ONCE(*ptep);
|
mte_sync_tags(pte);
|
||||||
/*
|
|
||||||
* We only need to synchronise if the new PTE has tags enabled
|
|
||||||
* or if swapping in (in which case another mapping may have
|
|
||||||
* set tags in the past even if this PTE isn't tagged).
|
|
||||||
* (!pte_none() && !pte_present()) is an open coded version of
|
|
||||||
* is_swap_pte()
|
|
||||||
*/
|
|
||||||
if (pte_tagged(pte) || (!pte_none(old_pte) && !pte_present(old_pte)))
|
|
||||||
mte_sync_tags(old_pte, pte);
|
|
||||||
}
|
|
||||||
|
|
||||||
__check_racy_pte_update(mm, ptep, pte);
|
__check_racy_pte_update(mm, ptep, pte);
|
||||||
|
|
||||||
@ -1066,8 +1056,8 @@ static inline void arch_swap_invalidate_area(int type)
|
|||||||
#define __HAVE_ARCH_SWAP_RESTORE
|
#define __HAVE_ARCH_SWAP_RESTORE
|
||||||
static inline void arch_swap_restore(swp_entry_t entry, struct folio *folio)
|
static inline void arch_swap_restore(swp_entry_t entry, struct folio *folio)
|
||||||
{
|
{
|
||||||
if (system_supports_mte() && mte_restore_tags(entry, &folio->page))
|
if (system_supports_mte())
|
||||||
set_page_mte_tagged(&folio->page);
|
mte_restore_tags(entry, &folio->page);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_ARM64_MTE */
|
#endif /* CONFIG_ARM64_MTE */
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include <asm/sysreg.h>
|
#include <asm/sysreg.h>
|
||||||
#include <asm/trans_pgd.h>
|
#include <asm/trans_pgd.h>
|
||||||
#include <asm/virt.h>
|
#include <asm/virt.h>
|
||||||
|
#include <trace/hooks/bl_hib.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hibernate core relies on this value being 0 on resume, and marks it
|
* Hibernate core relies on this value being 0 on resume, and marks it
|
||||||
@ -80,6 +81,8 @@ static struct arch_hibernate_hdr {
|
|||||||
phys_addr_t __hyp_stub_vectors;
|
phys_addr_t __hyp_stub_vectors;
|
||||||
|
|
||||||
u64 sleep_cpu_mpidr;
|
u64 sleep_cpu_mpidr;
|
||||||
|
|
||||||
|
ANDROID_VENDOR_DATA(1);
|
||||||
} resume_hdr;
|
} resume_hdr;
|
||||||
|
|
||||||
static inline void arch_hdr_invariants(struct arch_hibernate_hdr_invariants *i)
|
static inline void arch_hdr_invariants(struct arch_hibernate_hdr_invariants *i)
|
||||||
@ -117,6 +120,9 @@ int arch_hibernation_header_save(void *addr, unsigned int max_size)
|
|||||||
hdr->ttbr1_el1 = __pa_symbol(swapper_pg_dir);
|
hdr->ttbr1_el1 = __pa_symbol(swapper_pg_dir);
|
||||||
hdr->reenter_kernel = _cpu_resume;
|
hdr->reenter_kernel = _cpu_resume;
|
||||||
|
|
||||||
|
trace_android_vh_save_cpu_resume(&hdr->android_vendor_data1,
|
||||||
|
__pa(cpu_resume));
|
||||||
|
|
||||||
/* We can't use __hyp_get_vectors() because kvm may still be loaded */
|
/* We can't use __hyp_get_vectors() because kvm may still be loaded */
|
||||||
if (el2_reset_needed())
|
if (el2_reset_needed())
|
||||||
hdr->__hyp_stub_vectors = __pa_symbol(__hyp_stub_vectors);
|
hdr->__hyp_stub_vectors = __pa_symbol(__hyp_stub_vectors);
|
||||||
|
@ -35,47 +35,18 @@ DEFINE_STATIC_KEY_FALSE(mte_async_or_asymm_mode);
|
|||||||
EXPORT_SYMBOL_GPL(mte_async_or_asymm_mode);
|
EXPORT_SYMBOL_GPL(mte_async_or_asymm_mode);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void mte_sync_page_tags(struct page *page, pte_t old_pte,
|
void mte_sync_tags(pte_t pte)
|
||||||
bool check_swap, bool pte_is_tagged)
|
|
||||||
{
|
|
||||||
if (check_swap && is_swap_pte(old_pte)) {
|
|
||||||
swp_entry_t entry = pte_to_swp_entry(old_pte);
|
|
||||||
|
|
||||||
if (!non_swap_entry(entry) && mte_restore_tags(entry, page)) {
|
|
||||||
set_page_mte_tagged(page);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pte_is_tagged)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Test PG_mte_tagged again in case it was racing with another
|
|
||||||
* set_pte_at().
|
|
||||||
*/
|
|
||||||
if (!page_mte_tagged(page)) {
|
|
||||||
mte_clear_page_tags(page_address(page));
|
|
||||||
set_page_mte_tagged(page);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void mte_sync_tags(pte_t old_pte, pte_t pte)
|
|
||||||
{
|
{
|
||||||
struct page *page = pte_page(pte);
|
struct page *page = pte_page(pte);
|
||||||
long i, nr_pages = compound_nr(page);
|
long i, nr_pages = compound_nr(page);
|
||||||
bool check_swap = nr_pages == 1;
|
|
||||||
bool pte_is_tagged = pte_tagged(pte);
|
|
||||||
|
|
||||||
/* Early out if there's nothing to do */
|
|
||||||
if (!check_swap && !pte_is_tagged)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* if PG_mte_tagged is set, tags have already been initialised */
|
/* if PG_mte_tagged is set, tags have already been initialised */
|
||||||
for (i = 0; i < nr_pages; i++, page++)
|
for (i = 0; i < nr_pages; i++, page++) {
|
||||||
if (!page_mte_tagged(page))
|
if (!page_mte_tagged(page)) {
|
||||||
mte_sync_page_tags(page, old_pte, check_swap,
|
mte_clear_page_tags(page_address(page));
|
||||||
pte_is_tagged);
|
set_page_mte_tagged(page);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* ensure the tags are visible before the PTE is set */
|
/* ensure the tags are visible before the PTE is set */
|
||||||
smp_wmb();
|
smp_wmb();
|
||||||
|
@ -1687,6 +1687,7 @@ static void cpu_prepare_hyp_mode(int cpu)
|
|||||||
else
|
else
|
||||||
params->hcr_el2 = HCR_HOST_NVHE_FLAGS;
|
params->hcr_el2 = HCR_HOST_NVHE_FLAGS;
|
||||||
params->vttbr = params->vtcr = 0;
|
params->vttbr = params->vtcr = 0;
|
||||||
|
params->hfgwtr_el2 = HFGxTR_EL2_nSMPRI_EL1_MASK | HFGxTR_EL2_nTPIDR2_EL0_MASK;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flush the init params from the data cache because the struct will
|
* Flush the init params from the data cache because the struct will
|
||||||
|
@ -11,13 +11,10 @@ int __pkvm_register_hyp_panic_notifier(void (*cb)(struct kvm_cpu_context *));
|
|||||||
enum pkvm_psci_notification;
|
enum pkvm_psci_notification;
|
||||||
int __pkvm_register_psci_notifier(void (*cb)(enum pkvm_psci_notification, struct kvm_cpu_context *));
|
int __pkvm_register_psci_notifier(void (*cb)(enum pkvm_psci_notification, struct kvm_cpu_context *));
|
||||||
|
|
||||||
int reset_pkvm_priv_hcall_limit(void);
|
|
||||||
|
|
||||||
#ifdef CONFIG_MODULES
|
#ifdef CONFIG_MODULES
|
||||||
int __pkvm_init_module(void *module_init);
|
int __pkvm_init_module(void *module_init);
|
||||||
int __pkvm_register_hcall(unsigned long hfn_hyp_va);
|
int __pkvm_register_hcall(unsigned long hfn_hyp_va);
|
||||||
int handle_host_dynamic_hcall(struct kvm_cpu_context *host_ctxt);
|
int handle_host_dynamic_hcall(struct kvm_cpu_context *host_ctxt);
|
||||||
int __pkvm_close_late_module_registration(void);
|
|
||||||
void __pkvm_close_module_registration(void);
|
void __pkvm_close_module_registration(void);
|
||||||
#else
|
#else
|
||||||
static inline int __pkvm_init_module(void *module_init) { return -EOPNOTSUPP; }
|
static inline int __pkvm_init_module(void *module_init) { return -EOPNOTSUPP; }
|
||||||
@ -27,6 +24,5 @@ static inline int handle_host_dynamic_hcall(struct kvm_cpu_context *host_ctxt)
|
|||||||
{
|
{
|
||||||
return HCALL_UNHANDLED;
|
return HCALL_UNHANDLED;
|
||||||
}
|
}
|
||||||
static inline int __pkvm_close_late_module_registration(void) { return -EOPNOTSUPP; }
|
|
||||||
static inline void __pkvm_close_module_registration(void) { }
|
static inline void __pkvm_close_module_registration(void) { }
|
||||||
#endif
|
#endif
|
||||||
|
@ -1212,12 +1212,6 @@ static void handle___pkvm_register_hcall(struct kvm_cpu_context *host_ctxt)
|
|||||||
cpu_reg(host_ctxt, 1) = __pkvm_register_hcall(hfn_hyp_va);
|
cpu_reg(host_ctxt, 1) = __pkvm_register_hcall(hfn_hyp_va);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
handle___pkvm_close_module_registration(struct kvm_cpu_context *host_ctxt)
|
|
||||||
{
|
|
||||||
cpu_reg(host_ctxt, 1) = __pkvm_close_late_module_registration();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void handle___pkvm_load_tracing(struct kvm_cpu_context *host_ctxt)
|
static void handle___pkvm_load_tracing(struct kvm_cpu_context *host_ctxt)
|
||||||
{
|
{
|
||||||
DECLARE_REG(unsigned long, pack_hva, host_ctxt, 1);
|
DECLARE_REG(unsigned long, pack_hva, host_ctxt, 1);
|
||||||
@ -1290,13 +1284,11 @@ static const hcall_t host_hcall[] = {
|
|||||||
HANDLE_FUNC(__kvm_tlb_flush_vmid_ipa),
|
HANDLE_FUNC(__kvm_tlb_flush_vmid_ipa),
|
||||||
HANDLE_FUNC(__kvm_tlb_flush_vmid),
|
HANDLE_FUNC(__kvm_tlb_flush_vmid),
|
||||||
HANDLE_FUNC(__kvm_flush_cpu_context),
|
HANDLE_FUNC(__kvm_flush_cpu_context),
|
||||||
|
|
||||||
HANDLE_FUNC(__pkvm_alloc_module_va),
|
HANDLE_FUNC(__pkvm_alloc_module_va),
|
||||||
HANDLE_FUNC(__pkvm_map_module_page),
|
HANDLE_FUNC(__pkvm_map_module_page),
|
||||||
HANDLE_FUNC(__pkvm_unmap_module_page),
|
HANDLE_FUNC(__pkvm_unmap_module_page),
|
||||||
HANDLE_FUNC(__pkvm_init_module),
|
HANDLE_FUNC(__pkvm_init_module),
|
||||||
HANDLE_FUNC(__pkvm_register_hcall),
|
HANDLE_FUNC(__pkvm_register_hcall),
|
||||||
HANDLE_FUNC(__pkvm_close_module_registration),
|
|
||||||
HANDLE_FUNC(__pkvm_prot_finalize),
|
HANDLE_FUNC(__pkvm_prot_finalize),
|
||||||
|
|
||||||
HANDLE_FUNC(__pkvm_host_share_hyp),
|
HANDLE_FUNC(__pkvm_host_share_hyp),
|
||||||
@ -1330,22 +1322,6 @@ static const hcall_t host_hcall[] = {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned long pkvm_priv_hcall_limit __ro_after_init = __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize;
|
|
||||||
|
|
||||||
int reset_pkvm_priv_hcall_limit(void)
|
|
||||||
{
|
|
||||||
unsigned long *addr;
|
|
||||||
|
|
||||||
if (pkvm_priv_hcall_limit == __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize)
|
|
||||||
return -EACCES;
|
|
||||||
|
|
||||||
addr = hyp_fixmap_map(__hyp_pa(&pkvm_priv_hcall_limit));
|
|
||||||
*addr = __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize;
|
|
||||||
hyp_fixmap_unmap();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void handle_host_hcall(struct kvm_cpu_context *host_ctxt)
|
static void handle_host_hcall(struct kvm_cpu_context *host_ctxt)
|
||||||
{
|
{
|
||||||
DECLARE_REG(unsigned long, id, host_ctxt, 0);
|
DECLARE_REG(unsigned long, id, host_ctxt, 0);
|
||||||
@ -1365,7 +1341,7 @@ static void handle_host_hcall(struct kvm_cpu_context *host_ctxt)
|
|||||||
* returns -EPERM after the first call for a given CPU.
|
* returns -EPERM after the first call for a given CPU.
|
||||||
*/
|
*/
|
||||||
if (static_branch_unlikely(&kvm_protected_mode_initialized))
|
if (static_branch_unlikely(&kvm_protected_mode_initialized))
|
||||||
hcall_min = pkvm_priv_hcall_limit;
|
hcall_min = __KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize;
|
||||||
|
|
||||||
id -= KVM_HOST_SMCCC_ID(0);
|
id -= KVM_HOST_SMCCC_ID(0);
|
||||||
|
|
||||||
|
@ -470,8 +470,6 @@ int __pkvm_iommu_finalize(int err)
|
|||||||
if (!ret && err)
|
if (!ret && err)
|
||||||
pkvm_handle_system_misconfiguration(NO_DMA_ISOLATION);
|
pkvm_handle_system_misconfiguration(NO_DMA_ISOLATION);
|
||||||
|
|
||||||
__pkvm_close_late_module_registration();
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,15 +77,6 @@ void __pkvm_close_module_registration(void)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
int __pkvm_close_late_module_registration(void)
|
|
||||||
{
|
|
||||||
__pkvm_close_module_registration();
|
|
||||||
|
|
||||||
return reset_pkvm_priv_hcall_limit();
|
|
||||||
|
|
||||||
/* The fuse is blown! No way back until reset */
|
|
||||||
}
|
|
||||||
|
|
||||||
const struct pkvm_module_ops module_ops = {
|
const struct pkvm_module_ops module_ops = {
|
||||||
.create_private_mapping = __pkvm_create_private_mapping,
|
.create_private_mapping = __pkvm_create_private_mapping,
|
||||||
.alloc_module_va = __pkvm_alloc_module_va,
|
.alloc_module_va = __pkvm_alloc_module_va,
|
||||||
|
@ -578,26 +578,14 @@ int pkvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap)
|
|||||||
#ifdef CONFIG_MODULES
|
#ifdef CONFIG_MODULES
|
||||||
static char early_pkvm_modules[COMMAND_LINE_SIZE] __initdata;
|
static char early_pkvm_modules[COMMAND_LINE_SIZE] __initdata;
|
||||||
|
|
||||||
static int __init pkvm_enable_module_late_loading(void)
|
|
||||||
{
|
|
||||||
extern unsigned long kvm_nvhe_sym(pkvm_priv_hcall_limit);
|
|
||||||
|
|
||||||
WARN(1, "Loading pKVM modules with kvm-arm.protected_modules is deprecated\n"
|
|
||||||
"Use kvm-arm.protected_modules=<module1>,<module2>");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Move the limit to allow module loading HVCs. It will be moved back to
|
|
||||||
* its original position in __pkvm_close_module_registration().
|
|
||||||
*/
|
|
||||||
kvm_nvhe_sym(pkvm_priv_hcall_limit) = __KVM_HOST_SMCCC_FUNC___pkvm_alloc_module_va;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __init early_pkvm_modules_cfg(char *arg)
|
static int __init early_pkvm_modules_cfg(char *arg)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Loading pKVM modules with kvm-arm.protected_modules is deprecated
|
||||||
|
* Use kvm-arm.protected_modules=<module1>,<module2>
|
||||||
|
*/
|
||||||
if (!arg)
|
if (!arg)
|
||||||
return pkvm_enable_module_late_loading();
|
return -EINVAL;
|
||||||
|
|
||||||
strscpy(early_pkvm_modules, arg, COMMAND_LINE_SIZE);
|
strscpy(early_pkvm_modules, arg, COMMAND_LINE_SIZE);
|
||||||
|
|
||||||
@ -800,7 +788,8 @@ int __pkvm_load_el2_module(struct module *this, unsigned long *token)
|
|||||||
int ret, i, secs_first;
|
int ret, i, secs_first;
|
||||||
size_t offset, size;
|
size_t offset, size;
|
||||||
|
|
||||||
if (!is_protected_kvm_enabled())
|
/* The pKVM hyp only allows loading before it is fully initialized */
|
||||||
|
if (!is_protected_kvm_enabled() || is_pkvm_initialized())
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(secs_map); i++) {
|
for (i = 0; i < ARRAY_SIZE(secs_map); i++) {
|
||||||
|
@ -554,6 +554,9 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr,
|
|||||||
unsigned long vm_flags;
|
unsigned long vm_flags;
|
||||||
unsigned int mm_flags = FAULT_FLAG_DEFAULT;
|
unsigned int mm_flags = FAULT_FLAG_DEFAULT;
|
||||||
unsigned long addr = untagged_addr(far);
|
unsigned long addr = untagged_addr(far);
|
||||||
|
#ifdef CONFIG_PER_VMA_LOCK
|
||||||
|
struct vm_area_struct *vma;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (kprobe_page_fault(regs, esr))
|
if (kprobe_page_fault(regs, esr))
|
||||||
return 0;
|
return 0;
|
||||||
@ -611,6 +614,36 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr,
|
|||||||
|
|
||||||
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr);
|
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr);
|
||||||
|
|
||||||
|
#ifdef CONFIG_PER_VMA_LOCK
|
||||||
|
if (!(mm_flags & FAULT_FLAG_USER))
|
||||||
|
goto lock_mmap;
|
||||||
|
|
||||||
|
vma = lock_vma_under_rcu(mm, addr);
|
||||||
|
if (!vma)
|
||||||
|
goto lock_mmap;
|
||||||
|
|
||||||
|
if (!(vma->vm_flags & vm_flags)) {
|
||||||
|
vma_end_read(vma);
|
||||||
|
goto lock_mmap;
|
||||||
|
}
|
||||||
|
fault = handle_mm_fault(vma, addr & PAGE_MASK,
|
||||||
|
mm_flags | FAULT_FLAG_VMA_LOCK, regs);
|
||||||
|
vma_end_read(vma);
|
||||||
|
|
||||||
|
if (!(fault & VM_FAULT_RETRY)) {
|
||||||
|
count_vm_vma_lock_event(VMA_LOCK_SUCCESS);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
count_vm_vma_lock_event(VMA_LOCK_RETRY);
|
||||||
|
|
||||||
|
/* Quick path to respond to signals */
|
||||||
|
if (fault_signal_pending(fault, regs)) {
|
||||||
|
if (!user_mode(regs))
|
||||||
|
goto no_context;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
lock_mmap:
|
||||||
|
#endif /* CONFIG_PER_VMA_LOCK */
|
||||||
/*
|
/*
|
||||||
* As per x86, we may deadlock here. However, since the kernel only
|
* As per x86, we may deadlock here. However, since the kernel only
|
||||||
* validly references user space from well defined areas of the code,
|
* validly references user space from well defined areas of the code,
|
||||||
@ -654,6 +687,9 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr,
|
|||||||
}
|
}
|
||||||
mmap_read_unlock(mm);
|
mmap_read_unlock(mm);
|
||||||
|
|
||||||
|
#ifdef CONFIG_PER_VMA_LOCK
|
||||||
|
done:
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* Handle the "normal" (no error) case first.
|
* Handle the "normal" (no error) case first.
|
||||||
*/
|
*/
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
#include <linux/set_memory.h>
|
#include <linux/set_memory.h>
|
||||||
|
#include <linux/kfence.h>
|
||||||
|
|
||||||
#include <asm/barrier.h>
|
#include <asm/barrier.h>
|
||||||
#include <asm/cputype.h>
|
#include <asm/cputype.h>
|
||||||
@ -38,6 +39,7 @@
|
|||||||
#include <asm/ptdump.h>
|
#include <asm/ptdump.h>
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
#include <asm/pgalloc.h>
|
#include <asm/pgalloc.h>
|
||||||
|
#include <asm/kfence.h>
|
||||||
|
|
||||||
#define NO_BLOCK_MAPPINGS BIT(0)
|
#define NO_BLOCK_MAPPINGS BIT(0)
|
||||||
#define NO_CONT_MAPPINGS BIT(1)
|
#define NO_CONT_MAPPINGS BIT(1)
|
||||||
@ -521,12 +523,67 @@ static int __init enable_crash_mem_map(char *arg)
|
|||||||
}
|
}
|
||||||
early_param("crashkernel", enable_crash_mem_map);
|
early_param("crashkernel", enable_crash_mem_map);
|
||||||
|
|
||||||
|
#ifdef CONFIG_KFENCE
|
||||||
|
|
||||||
|
bool __ro_after_init kfence_early_init = !!CONFIG_KFENCE_SAMPLE_INTERVAL;
|
||||||
|
|
||||||
|
/* early_param() will be parsed before map_mem() below. */
|
||||||
|
static int __init parse_kfence_early_init(char *arg)
|
||||||
|
{
|
||||||
|
int val;
|
||||||
|
|
||||||
|
if (get_option(&arg, &val))
|
||||||
|
kfence_early_init = !!val;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
early_param("kfence.sample_interval", parse_kfence_early_init);
|
||||||
|
|
||||||
|
static phys_addr_t __init arm64_kfence_alloc_pool(void)
|
||||||
|
{
|
||||||
|
phys_addr_t kfence_pool;
|
||||||
|
|
||||||
|
if (!kfence_early_init)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
kfence_pool = memblock_phys_alloc(KFENCE_POOL_SIZE, PAGE_SIZE);
|
||||||
|
if (!kfence_pool) {
|
||||||
|
pr_err("failed to allocate kfence pool\n");
|
||||||
|
kfence_early_init = false;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Temporarily mark as NOMAP. */
|
||||||
|
memblock_mark_nomap(kfence_pool, KFENCE_POOL_SIZE);
|
||||||
|
|
||||||
|
return kfence_pool;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init arm64_kfence_map_pool(phys_addr_t kfence_pool, pgd_t *pgdp)
|
||||||
|
{
|
||||||
|
if (!kfence_pool)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* KFENCE pool needs page-level mapping. */
|
||||||
|
__map_memblock(pgdp, kfence_pool, kfence_pool + KFENCE_POOL_SIZE,
|
||||||
|
pgprot_tagged(PAGE_KERNEL),
|
||||||
|
NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS);
|
||||||
|
memblock_clear_nomap(kfence_pool, KFENCE_POOL_SIZE);
|
||||||
|
__kfence_pool = phys_to_virt(kfence_pool);
|
||||||
|
}
|
||||||
|
#else /* CONFIG_KFENCE */
|
||||||
|
|
||||||
|
static inline phys_addr_t arm64_kfence_alloc_pool(void) { return 0; }
|
||||||
|
static inline void arm64_kfence_map_pool(phys_addr_t kfence_pool, pgd_t *pgdp) { }
|
||||||
|
|
||||||
|
#endif /* CONFIG_KFENCE */
|
||||||
|
|
||||||
static void __init map_mem(pgd_t *pgdp)
|
static void __init map_mem(pgd_t *pgdp)
|
||||||
{
|
{
|
||||||
static const u64 direct_map_end = _PAGE_END(VA_BITS_MIN);
|
static const u64 direct_map_end = _PAGE_END(VA_BITS_MIN);
|
||||||
phys_addr_t kernel_start = __pa_symbol(_stext);
|
phys_addr_t kernel_start = __pa_symbol(_stext);
|
||||||
phys_addr_t kernel_end = __pa_symbol(__init_begin);
|
phys_addr_t kernel_end = __pa_symbol(__init_begin);
|
||||||
phys_addr_t start, end;
|
phys_addr_t start, end;
|
||||||
|
phys_addr_t early_kfence_pool;
|
||||||
int flags = NO_EXEC_MAPPINGS;
|
int flags = NO_EXEC_MAPPINGS;
|
||||||
u64 i;
|
u64 i;
|
||||||
|
|
||||||
@ -539,6 +596,8 @@ static void __init map_mem(pgd_t *pgdp)
|
|||||||
*/
|
*/
|
||||||
BUILD_BUG_ON(pgd_index(direct_map_end - 1) == pgd_index(direct_map_end));
|
BUILD_BUG_ON(pgd_index(direct_map_end - 1) == pgd_index(direct_map_end));
|
||||||
|
|
||||||
|
early_kfence_pool = arm64_kfence_alloc_pool();
|
||||||
|
|
||||||
if (can_set_direct_map())
|
if (can_set_direct_map())
|
||||||
flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
|
flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
|
||||||
|
|
||||||
@ -604,6 +663,8 @@ static void __init map_mem(pgd_t *pgdp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
arm64_kfence_map_pool(early_kfence_pool, pgdp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mark_rodata_ro(void)
|
void mark_rodata_ro(void)
|
||||||
|
@ -46,21 +46,19 @@ int mte_save_tags(struct page *page)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mte_restore_tags(swp_entry_t entry, struct page *page)
|
void mte_restore_tags(swp_entry_t entry, struct page *page)
|
||||||
{
|
{
|
||||||
void *tags = xa_load(&mte_pages, entry.val);
|
void *tags = xa_load(&mte_pages, entry.val);
|
||||||
|
|
||||||
if (!tags)
|
if (!tags)
|
||||||
return false;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Test PG_mte_tagged again in case it was racing with another
|
* Test PG_mte_tagged in case the tags were restored before
|
||||||
* set_pte_at().
|
* (e.g. CoW pages).
|
||||||
*/
|
*/
|
||||||
if (!test_and_set_bit(PG_mte_tagged, &page->flags))
|
if (!test_and_set_bit(PG_mte_tagged, &page->flags))
|
||||||
mte_restore_page_tags(page_address(page), tags);
|
mte_restore_page_tags(page_address(page), tags);
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void mte_invalidate_tags(int type, pgoff_t offset)
|
void mte_invalidate_tags(int type, pgoff_t offset)
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/set_memory.h>
|
#include <asm/set_memory.h>
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
|
#include <asm/kfence.h>
|
||||||
|
|
||||||
struct page_change_data {
|
struct page_change_data {
|
||||||
pgprot_t set_mask;
|
pgprot_t set_mask;
|
||||||
@ -22,12 +23,14 @@ bool rodata_full __ro_after_init = IS_ENABLED(CONFIG_RODATA_FULL_DEFAULT_ENABLED
|
|||||||
bool can_set_direct_map(void)
|
bool can_set_direct_map(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* rodata_full, DEBUG_PAGEALLOC and KFENCE require linear map to be
|
* rodata_full and DEBUG_PAGEALLOC require linear map to be
|
||||||
* mapped at page granularity, so that it is possible to
|
* mapped at page granularity, so that it is possible to
|
||||||
* protect/unprotect single pages.
|
* protect/unprotect single pages.
|
||||||
|
*
|
||||||
|
* KFENCE pool requires page-granular mapping if initialized late.
|
||||||
*/
|
*/
|
||||||
return (rodata_enabled && rodata_full) || debug_pagealloc_enabled() ||
|
return (rodata_enabled && rodata_full) || debug_pagealloc_enabled() ||
|
||||||
IS_ENABLED(CONFIG_KFENCE);
|
arm64_kfence_can_set_direct_map();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int change_page_range(pte_t *ptep, unsigned long addr, void *data)
|
static int change_page_range(pte_t *ptep, unsigned long addr, void *data)
|
||||||
|
@ -109,7 +109,7 @@ ia64_init_addr_space (void)
|
|||||||
vma_set_anonymous(vma);
|
vma_set_anonymous(vma);
|
||||||
vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
|
vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
|
||||||
vma->vm_end = vma->vm_start + PAGE_SIZE;
|
vma->vm_end = vma->vm_start + PAGE_SIZE;
|
||||||
vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT;
|
vm_flags_init(vma, VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT);
|
||||||
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
||||||
mmap_write_lock(current->mm);
|
mmap_write_lock(current->mm);
|
||||||
if (insert_vm_struct(current->mm, vma)) {
|
if (insert_vm_struct(current->mm, vma)) {
|
||||||
@ -127,8 +127,8 @@ ia64_init_addr_space (void)
|
|||||||
vma_set_anonymous(vma);
|
vma_set_anonymous(vma);
|
||||||
vma->vm_end = PAGE_SIZE;
|
vma->vm_end = PAGE_SIZE;
|
||||||
vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT);
|
vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT);
|
||||||
vma->vm_flags = VM_READ | VM_MAYREAD | VM_IO |
|
vm_flags_init(vma, VM_READ | VM_MAYREAD | VM_IO |
|
||||||
VM_DONTEXPAND | VM_DONTDUMP;
|
VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
mmap_write_lock(current->mm);
|
mmap_write_lock(current->mm);
|
||||||
if (insert_vm_struct(current->mm, vma)) {
|
if (insert_vm_struct(current->mm, vma)) {
|
||||||
mmap_write_unlock(current->mm);
|
mmap_write_unlock(current->mm);
|
||||||
@ -272,7 +272,7 @@ static int __init gate_vma_init(void)
|
|||||||
vma_init(&gate_vma, NULL);
|
vma_init(&gate_vma, NULL);
|
||||||
gate_vma.vm_start = FIXADDR_USER_START;
|
gate_vma.vm_start = FIXADDR_USER_START;
|
||||||
gate_vma.vm_end = FIXADDR_USER_END;
|
gate_vma.vm_end = FIXADDR_USER_END;
|
||||||
gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
|
vm_flags_init(&gate_vma, VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC);
|
||||||
gate_vma.vm_page_prot = __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX);
|
gate_vma.vm_page_prot = __pgprot(__ACCESS_BITS | _PAGE_PL_3 | _PAGE_AR_RX);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -149,7 +149,7 @@ static inline void tlb_flush(struct mmu_gather *tlb)
|
|||||||
struct vm_area_struct vma;
|
struct vm_area_struct vma;
|
||||||
|
|
||||||
vma.vm_mm = tlb->mm;
|
vma.vm_mm = tlb->mm;
|
||||||
vma.vm_flags = 0;
|
vm_flags_init(&vma, 0);
|
||||||
if (tlb->fullmm) {
|
if (tlb->fullmm) {
|
||||||
flush_tlb_mm(tlb->mm);
|
flush_tlb_mm(tlb->mm);
|
||||||
return;
|
return;
|
||||||
|
@ -393,6 +393,7 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm,
|
|||||||
{
|
{
|
||||||
unsigned long gfn = memslot->base_gfn;
|
unsigned long gfn = memslot->base_gfn;
|
||||||
unsigned long end, start = gfn_to_hva(kvm, gfn);
|
unsigned long end, start = gfn_to_hva(kvm, gfn);
|
||||||
|
unsigned long vm_flags;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma;
|
||||||
int merge_flag = (merge) ? MADV_MERGEABLE : MADV_UNMERGEABLE;
|
int merge_flag = (merge) ? MADV_MERGEABLE : MADV_UNMERGEABLE;
|
||||||
@ -409,12 +410,15 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm,
|
|||||||
ret = H_STATE;
|
ret = H_STATE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
/* Copy vm_flags to avoid partial modifications in ksm_madvise */
|
||||||
|
vm_flags = vma->vm_flags;
|
||||||
ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
|
ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
|
||||||
merge_flag, &vma->vm_flags);
|
merge_flag, &vm_flags);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ret = H_STATE;
|
ret = H_STATE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
vm_flags_reset(vma, vm_flags);
|
||||||
start = vma->vm_end;
|
start = vma->vm_end;
|
||||||
} while (end > vma->vm_end);
|
} while (end > vma->vm_end);
|
||||||
|
|
||||||
|
@ -325,7 +325,7 @@ static int kvmppc_xive_native_mmap(struct kvm_device *dev,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP);
|
||||||
vma->vm_page_prot = pgprot_noncached_wc(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached_wc(vma->vm_page_prot);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -156,7 +156,7 @@ static void subpage_mark_vma_nohuge(struct mm_struct *mm, unsigned long addr,
|
|||||||
* VM_NOHUGEPAGE and split them.
|
* VM_NOHUGEPAGE and split them.
|
||||||
*/
|
*/
|
||||||
for_each_vma_range(vmi, vma, addr + len) {
|
for_each_vma_range(vmi, vma, addr + len) {
|
||||||
vma->vm_flags |= VM_NOHUGEPAGE;
|
vm_flags_set(vma, VM_NOHUGEPAGE);
|
||||||
walk_page_vma(vma, &subpage_walk_ops, NULL);
|
walk_page_vma(vma, &subpage_walk_ops, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -474,6 +474,40 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address,
|
|||||||
if (is_exec)
|
if (is_exec)
|
||||||
flags |= FAULT_FLAG_INSTRUCTION;
|
flags |= FAULT_FLAG_INSTRUCTION;
|
||||||
|
|
||||||
|
#ifdef CONFIG_PER_VMA_LOCK
|
||||||
|
if (!(flags & FAULT_FLAG_USER))
|
||||||
|
goto lock_mmap;
|
||||||
|
|
||||||
|
vma = lock_vma_under_rcu(mm, address);
|
||||||
|
if (!vma)
|
||||||
|
goto lock_mmap;
|
||||||
|
|
||||||
|
if (unlikely(access_pkey_error(is_write, is_exec,
|
||||||
|
(error_code & DSISR_KEYFAULT), vma))) {
|
||||||
|
vma_end_read(vma);
|
||||||
|
goto lock_mmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (unlikely(access_error(is_write, is_exec, vma))) {
|
||||||
|
vma_end_read(vma);
|
||||||
|
goto lock_mmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs);
|
||||||
|
vma_end_read(vma);
|
||||||
|
|
||||||
|
if (!(fault & VM_FAULT_RETRY)) {
|
||||||
|
count_vm_vma_lock_event(VMA_LOCK_SUCCESS);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
count_vm_vma_lock_event(VMA_LOCK_RETRY);
|
||||||
|
|
||||||
|
if (fault_signal_pending(fault, regs))
|
||||||
|
return user_mode(regs) ? 0 : SIGBUS;
|
||||||
|
|
||||||
|
lock_mmap:
|
||||||
|
#endif /* CONFIG_PER_VMA_LOCK */
|
||||||
|
|
||||||
/* When running in the kernel we expect faults to occur only to
|
/* When running in the kernel we expect faults to occur only to
|
||||||
* addresses in user space. All other faults represent errors in the
|
* addresses in user space. All other faults represent errors in the
|
||||||
* kernel and should generate an OOPS. Unfortunately, in the case of an
|
* kernel and should generate an OOPS. Unfortunately, in the case of an
|
||||||
@ -550,6 +584,9 @@ static int ___do_page_fault(struct pt_regs *regs, unsigned long address,
|
|||||||
|
|
||||||
mmap_read_unlock(current->mm);
|
mmap_read_unlock(current->mm);
|
||||||
|
|
||||||
|
#ifdef CONFIG_PER_VMA_LOCK
|
||||||
|
done:
|
||||||
|
#endif
|
||||||
if (unlikely(fault & VM_FAULT_ERROR))
|
if (unlikely(fault & VM_FAULT_ERROR))
|
||||||
return mm_fault_error(regs, address, fault);
|
return mm_fault_error(regs, address, fault);
|
||||||
|
|
||||||
|
@ -525,7 +525,7 @@ static int coproc_mmap(struct file *fp, struct vm_area_struct *vma)
|
|||||||
pfn = paste_addr >> PAGE_SHIFT;
|
pfn = paste_addr >> PAGE_SHIFT;
|
||||||
|
|
||||||
/* flags, page_prot from cxl_mmap(), except we want cachable */
|
/* flags, page_prot from cxl_mmap(), except we want cachable */
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP);
|
||||||
vma->vm_page_prot = pgprot_cached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_cached(vma->vm_page_prot);
|
||||||
|
|
||||||
prot = __pgprot(pgprot_val(vma->vm_page_prot) | _PAGE_DIRTY);
|
prot = __pgprot(pgprot_val(vma->vm_page_prot) | _PAGE_DIRTY);
|
||||||
|
@ -291,7 +291,7 @@ static int spufs_mem_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
if (!(vma->vm_flags & VM_SHARED))
|
if (!(vma->vm_flags & VM_SHARED))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP);
|
||||||
vma->vm_page_prot = pgprot_noncached_wc(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached_wc(vma->vm_page_prot);
|
||||||
|
|
||||||
vma->vm_ops = &spufs_mem_mmap_vmops;
|
vma->vm_ops = &spufs_mem_mmap_vmops;
|
||||||
@ -381,7 +381,7 @@ static int spufs_cntl_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
if (!(vma->vm_flags & VM_SHARED))
|
if (!(vma->vm_flags & VM_SHARED))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP);
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
|
||||||
vma->vm_ops = &spufs_cntl_mmap_vmops;
|
vma->vm_ops = &spufs_cntl_mmap_vmops;
|
||||||
@ -1043,7 +1043,7 @@ static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
if (!(vma->vm_flags & VM_SHARED))
|
if (!(vma->vm_flags & VM_SHARED))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP);
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
|
||||||
vma->vm_ops = &spufs_signal1_mmap_vmops;
|
vma->vm_ops = &spufs_signal1_mmap_vmops;
|
||||||
@ -1179,7 +1179,7 @@ static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
if (!(vma->vm_flags & VM_SHARED))
|
if (!(vma->vm_flags & VM_SHARED))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP);
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
|
||||||
vma->vm_ops = &spufs_signal2_mmap_vmops;
|
vma->vm_ops = &spufs_signal2_mmap_vmops;
|
||||||
@ -1302,7 +1302,7 @@ static int spufs_mss_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
if (!(vma->vm_flags & VM_SHARED))
|
if (!(vma->vm_flags & VM_SHARED))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP);
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
|
||||||
vma->vm_ops = &spufs_mss_mmap_vmops;
|
vma->vm_ops = &spufs_mss_mmap_vmops;
|
||||||
@ -1364,7 +1364,7 @@ static int spufs_psmap_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
if (!(vma->vm_flags & VM_SHARED))
|
if (!(vma->vm_flags & VM_SHARED))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP);
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
|
||||||
vma->vm_ops = &spufs_psmap_mmap_vmops;
|
vma->vm_ops = &spufs_psmap_mmap_vmops;
|
||||||
@ -1424,7 +1424,7 @@ static int spufs_mfc_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
if (!(vma->vm_flags & VM_SHARED))
|
if (!(vma->vm_flags & VM_SHARED))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP);
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
|
||||||
vma->vm_ops = &spufs_mfc_mmap_vmops;
|
vma->vm_ops = &spufs_mfc_mmap_vmops;
|
||||||
|
@ -16,6 +16,7 @@ config PPC_POWERNV
|
|||||||
select PPC_DOORBELL
|
select PPC_DOORBELL
|
||||||
select MMU_NOTIFIER
|
select MMU_NOTIFIER
|
||||||
select FORCE_SMP
|
select FORCE_SMP
|
||||||
|
select ARCH_SUPPORTS_PER_VMA_LOCK
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config OPAL_PRD
|
config OPAL_PRD
|
||||||
|
@ -21,6 +21,7 @@ config PPC_PSERIES
|
|||||||
select HOTPLUG_CPU
|
select HOTPLUG_CPU
|
||||||
select FORCE_SMP
|
select FORCE_SMP
|
||||||
select SWIOTLB
|
select SWIOTLB
|
||||||
|
select ARCH_SUPPORTS_PER_VMA_LOCK
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config PARAVIRT
|
config PARAVIRT
|
||||||
|
@ -115,6 +115,7 @@ config S390
|
|||||||
select ARCH_SUPPORTS_DEBUG_PAGEALLOC
|
select ARCH_SUPPORTS_DEBUG_PAGEALLOC
|
||||||
select ARCH_SUPPORTS_HUGETLBFS
|
select ARCH_SUPPORTS_HUGETLBFS
|
||||||
select ARCH_SUPPORTS_NUMA_BALANCING
|
select ARCH_SUPPORTS_NUMA_BALANCING
|
||||||
|
select ARCH_SUPPORTS_PER_VMA_LOCK
|
||||||
select ARCH_USE_BUILTIN_BSWAP
|
select ARCH_USE_BUILTIN_BSWAP
|
||||||
select ARCH_USE_CMPXCHG_LOCKREF
|
select ARCH_USE_CMPXCHG_LOCKREF
|
||||||
select ARCH_WANTS_DYNAMIC_TASK_STRUCT
|
select ARCH_WANTS_DYNAMIC_TASK_STRUCT
|
||||||
|
@ -403,6 +403,30 @@ static inline vm_fault_t do_exception(struct pt_regs *regs, int access)
|
|||||||
access = VM_WRITE;
|
access = VM_WRITE;
|
||||||
if (access == VM_WRITE)
|
if (access == VM_WRITE)
|
||||||
flags |= FAULT_FLAG_WRITE;
|
flags |= FAULT_FLAG_WRITE;
|
||||||
|
#ifdef CONFIG_PER_VMA_LOCK
|
||||||
|
if (!(flags & FAULT_FLAG_USER))
|
||||||
|
goto lock_mmap;
|
||||||
|
vma = lock_vma_under_rcu(mm, address);
|
||||||
|
if (!vma)
|
||||||
|
goto lock_mmap;
|
||||||
|
if (!(vma->vm_flags & access)) {
|
||||||
|
vma_end_read(vma);
|
||||||
|
goto lock_mmap;
|
||||||
|
}
|
||||||
|
fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs);
|
||||||
|
vma_end_read(vma);
|
||||||
|
if (!(fault & VM_FAULT_RETRY)) {
|
||||||
|
count_vm_vma_lock_event(VMA_LOCK_SUCCESS);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
count_vm_vma_lock_event(VMA_LOCK_RETRY);
|
||||||
|
/* Quick path to respond to signals */
|
||||||
|
if (fault_signal_pending(fault, regs)) {
|
||||||
|
fault = VM_FAULT_SIGNAL;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
lock_mmap:
|
||||||
|
#endif /* CONFIG_PER_VMA_LOCK */
|
||||||
mmap_read_lock(mm);
|
mmap_read_lock(mm);
|
||||||
|
|
||||||
gmap = NULL;
|
gmap = NULL;
|
||||||
|
@ -2518,8 +2518,7 @@ static inline void thp_split_mm(struct mm_struct *mm)
|
|||||||
VMA_ITERATOR(vmi, mm, 0);
|
VMA_ITERATOR(vmi, mm, 0);
|
||||||
|
|
||||||
for_each_vma(vmi, vma) {
|
for_each_vma(vmi, vma) {
|
||||||
vma->vm_flags &= ~VM_HUGEPAGE;
|
vm_flags_mod(vma, VM_NOHUGEPAGE, VM_HUGEPAGE);
|
||||||
vma->vm_flags |= VM_NOHUGEPAGE;
|
|
||||||
walk_page_vma(vma, &thp_split_walk_ops, NULL);
|
walk_page_vma(vma, &thp_split_walk_ops, NULL);
|
||||||
}
|
}
|
||||||
mm->def_flags |= VM_NOHUGEPAGE;
|
mm->def_flags |= VM_NOHUGEPAGE;
|
||||||
@ -2584,14 +2583,18 @@ int gmap_mark_unmergeable(void)
|
|||||||
{
|
{
|
||||||
struct mm_struct *mm = current->mm;
|
struct mm_struct *mm = current->mm;
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma;
|
||||||
|
unsigned long vm_flags;
|
||||||
int ret;
|
int ret;
|
||||||
VMA_ITERATOR(vmi, mm, 0);
|
VMA_ITERATOR(vmi, mm, 0);
|
||||||
|
|
||||||
for_each_vma(vmi, vma) {
|
for_each_vma(vmi, vma) {
|
||||||
|
/* Copy vm_flags to avoid partial modifications in ksm_madvise */
|
||||||
|
vm_flags = vma->vm_flags;
|
||||||
ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
|
ret = ksm_madvise(vma, vma->vm_start, vma->vm_end,
|
||||||
MADV_UNMERGEABLE, &vma->vm_flags);
|
MADV_UNMERGEABLE, &vm_flags);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
vm_flags_reset(vma, vm_flags);
|
||||||
}
|
}
|
||||||
mm->def_flags &= ~VM_MERGEABLE;
|
mm->def_flags &= ~VM_MERGEABLE;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -27,6 +27,7 @@ config X86_64
|
|||||||
# Options that are inherently 64-bit kernel only:
|
# Options that are inherently 64-bit kernel only:
|
||||||
select ARCH_HAS_GIGANTIC_PAGE
|
select ARCH_HAS_GIGANTIC_PAGE
|
||||||
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
|
select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
|
||||||
|
select ARCH_SUPPORTS_PER_VMA_LOCK
|
||||||
select ARCH_USE_CMPXCHG_LOCKREF
|
select ARCH_USE_CMPXCHG_LOCKREF
|
||||||
select HAVE_ARCH_SOFT_DIRTY
|
select HAVE_ARCH_SOFT_DIRTY
|
||||||
select MODULES_USE_ELF_RELA
|
select MODULES_USE_ELF_RELA
|
||||||
|
@ -61,6 +61,7 @@ CONFIG_NR_CPUS=32
|
|||||||
CONFIG_EFI=y
|
CONFIG_EFI=y
|
||||||
CONFIG_CMDLINE_BOOL=y
|
CONFIG_CMDLINE_BOOL=y
|
||||||
CONFIG_CMDLINE="console=ttynull stack_depot_disable=on cgroup_disable=pressure bootconfig"
|
CONFIG_CMDLINE="console=ttynull stack_depot_disable=on cgroup_disable=pressure bootconfig"
|
||||||
|
CONFIG_HIBERNATION=y
|
||||||
CONFIG_PM_WAKELOCKS=y
|
CONFIG_PM_WAKELOCKS=y
|
||||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||||
@ -312,6 +313,7 @@ CONFIG_IFB=y
|
|||||||
CONFIG_MACSEC=y
|
CONFIG_MACSEC=y
|
||||||
CONFIG_TUN=y
|
CONFIG_TUN=y
|
||||||
CONFIG_VETH=y
|
CONFIG_VETH=y
|
||||||
|
CONFIG_LED_TRIGGER_PHY=y
|
||||||
CONFIG_AX88796B_PHY=y
|
CONFIG_AX88796B_PHY=y
|
||||||
CONFIG_CAN_VCAN=m
|
CONFIG_CAN_VCAN=m
|
||||||
CONFIG_CAN_SLCAN=m
|
CONFIG_CAN_SLCAN=m
|
||||||
@ -646,6 +648,7 @@ CONFIG_UBSAN_LOCAL_BOUNDS=y
|
|||||||
# CONFIG_UBSAN_BOOL is not set
|
# CONFIG_UBSAN_BOOL is not set
|
||||||
# CONFIG_UBSAN_ENUM is not set
|
# CONFIG_UBSAN_ENUM is not set
|
||||||
CONFIG_PAGE_OWNER=y
|
CONFIG_PAGE_OWNER=y
|
||||||
|
CONFIG_PER_VMA_LOCK_STATS=y
|
||||||
CONFIG_DEBUG_STACK_USAGE=y
|
CONFIG_DEBUG_STACK_USAGE=y
|
||||||
CONFIG_DEBUG_MEMORY_INIT=y
|
CONFIG_DEBUG_MEMORY_INIT=y
|
||||||
CONFIG_KFENCE=y
|
CONFIG_KFENCE=y
|
||||||
|
@ -391,7 +391,7 @@ void __init map_vsyscall(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (vsyscall_mode == XONLY)
|
if (vsyscall_mode == XONLY)
|
||||||
gate_vma.vm_flags = VM_EXEC;
|
vm_flags_init(&gate_vma, VM_EXEC);
|
||||||
|
|
||||||
BUILD_BUG_ON((unsigned long)__fix_to_virt(VSYSCALL_PAGE) !=
|
BUILD_BUG_ON((unsigned long)__fix_to_virt(VSYSCALL_PAGE) !=
|
||||||
(unsigned long)VSYSCALL_ADDR);
|
(unsigned long)VSYSCALL_ADDR);
|
||||||
|
@ -95,7 +95,7 @@ static int sgx_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
vma->vm_ops = &sgx_vm_ops;
|
vma->vm_ops = &sgx_vm_ops;
|
||||||
vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO;
|
vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO);
|
||||||
vma->vm_private_data = encl;
|
vma->vm_private_data = encl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -105,7 +105,7 @@ static int sgx_vepc_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
|
|
||||||
vma->vm_ops = &sgx_vepc_vm_ops;
|
vma->vm_ops = &sgx_vepc_vm_ops;
|
||||||
/* Don't copy VMA in fork() */
|
/* Don't copy VMA in fork() */
|
||||||
vma->vm_flags |= VM_PFNMAP | VM_IO | VM_DONTDUMP | VM_DONTCOPY;
|
vm_flags_set(vma, VM_PFNMAP | VM_IO | VM_DONTDUMP | VM_DONTCOPY);
|
||||||
vma->vm_private_data = vepc;
|
vma->vm_private_data = vepc;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include <linux/uaccess.h> /* faulthandler_disabled() */
|
#include <linux/uaccess.h> /* faulthandler_disabled() */
|
||||||
#include <linux/efi.h> /* efi_crash_gracefully_on_page_fault()*/
|
#include <linux/efi.h> /* efi_crash_gracefully_on_page_fault()*/
|
||||||
#include <linux/mm_types.h>
|
#include <linux/mm_types.h>
|
||||||
|
#include <linux/mm.h> /* find_and_lock_vma() */
|
||||||
|
|
||||||
#include <asm/cpufeature.h> /* boot_cpu_has, ... */
|
#include <asm/cpufeature.h> /* boot_cpu_has, ... */
|
||||||
#include <asm/traps.h> /* dotraplinkage, ... */
|
#include <asm/traps.h> /* dotraplinkage, ... */
|
||||||
@ -1354,6 +1355,38 @@ void do_user_addr_fault(struct pt_regs *regs,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_PER_VMA_LOCK
|
||||||
|
if (!(flags & FAULT_FLAG_USER))
|
||||||
|
goto lock_mmap;
|
||||||
|
|
||||||
|
vma = lock_vma_under_rcu(mm, address);
|
||||||
|
if (!vma)
|
||||||
|
goto lock_mmap;
|
||||||
|
|
||||||
|
if (unlikely(access_error(error_code, vma))) {
|
||||||
|
vma_end_read(vma);
|
||||||
|
goto lock_mmap;
|
||||||
|
}
|
||||||
|
fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs);
|
||||||
|
vma_end_read(vma);
|
||||||
|
|
||||||
|
if (!(fault & VM_FAULT_RETRY)) {
|
||||||
|
count_vm_vma_lock_event(VMA_LOCK_SUCCESS);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
count_vm_vma_lock_event(VMA_LOCK_RETRY);
|
||||||
|
|
||||||
|
/* Quick path to respond to signals */
|
||||||
|
if (fault_signal_pending(fault, regs)) {
|
||||||
|
if (!user_mode(regs))
|
||||||
|
kernelmode_fixup_or_oops(regs, error_code, address,
|
||||||
|
SIGBUS, BUS_ADRERR,
|
||||||
|
ARCH_DEFAULT_PKEY);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lock_mmap:
|
||||||
|
#endif /* CONFIG_PER_VMA_LOCK */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Kernel-mode access to the user address space should only occur
|
* Kernel-mode access to the user address space should only occur
|
||||||
* on well-defined single instructions listed in the exception
|
* on well-defined single instructions listed in the exception
|
||||||
@ -1454,6 +1487,9 @@ void do_user_addr_fault(struct pt_regs *regs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
mmap_read_unlock(mm);
|
mmap_read_unlock(mm);
|
||||||
|
#ifdef CONFIG_PER_VMA_LOCK
|
||||||
|
done:
|
||||||
|
#endif
|
||||||
if (likely(!(fault & VM_FAULT_ERROR)))
|
if (likely(!(fault & VM_FAULT_ERROR)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1047,7 +1047,7 @@ int track_pfn_remap(struct vm_area_struct *vma, pgprot_t *prot,
|
|||||||
|
|
||||||
ret = reserve_pfn_range(paddr, size, prot, 0);
|
ret = reserve_pfn_range(paddr, size, prot, 0);
|
||||||
if (ret == 0 && vma)
|
if (ret == 0 && vma)
|
||||||
vma->vm_flags |= VM_PAT;
|
vm_flags_set(vma, VM_PAT);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1093,7 +1093,7 @@ void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot, pfn_t pfn)
|
|||||||
* can be for the entire vma (in which case pfn, size are zero).
|
* can be for the entire vma (in which case pfn, size are zero).
|
||||||
*/
|
*/
|
||||||
void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
|
void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
|
||||||
unsigned long size)
|
unsigned long size, bool mm_wr_locked)
|
||||||
{
|
{
|
||||||
resource_size_t paddr;
|
resource_size_t paddr;
|
||||||
unsigned long prot;
|
unsigned long prot;
|
||||||
@ -1112,8 +1112,12 @@ void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
|
|||||||
size = vma->vm_end - vma->vm_start;
|
size = vma->vm_end - vma->vm_start;
|
||||||
}
|
}
|
||||||
free_pfn_range(paddr, size);
|
free_pfn_range(paddr, size);
|
||||||
if (vma)
|
if (vma) {
|
||||||
vma->vm_flags &= ~VM_PAT;
|
if (mm_wr_locked)
|
||||||
|
vm_flags_clear(vma, VM_PAT);
|
||||||
|
else
|
||||||
|
__vm_flags_mod(vma, 0, VM_PAT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1123,7 +1127,7 @@ void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
|
|||||||
*/
|
*/
|
||||||
void untrack_pfn_moved(struct vm_area_struct *vma)
|
void untrack_pfn_moved(struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
vma->vm_flags &= ~VM_PAT;
|
vm_flags_clear(vma, VM_PAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
pgprot_t pgprot_writecombine(pgprot_t prot)
|
pgprot_t pgprot_writecombine(pgprot_t prot)
|
||||||
|
@ -16,7 +16,7 @@ static int __init gate_vma_init(void)
|
|||||||
vma_init(&gate_vma, NULL);
|
vma_init(&gate_vma, NULL);
|
||||||
gate_vma.vm_start = FIXADDR_USER_START;
|
gate_vma.vm_start = FIXADDR_USER_START;
|
||||||
gate_vma.vm_end = FIXADDR_USER_END;
|
gate_vma.vm_end = FIXADDR_USER_END;
|
||||||
gate_vma.vm_flags = VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC;
|
vm_flags_init(&gate_vma, VM_READ | VM_MAYREAD | VM_EXEC | VM_MAYEXEC);
|
||||||
gate_vma.vm_page_prot = PAGE_READONLY;
|
gate_vma.vm_page_prot = PAGE_READONLY;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -58,6 +58,12 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_complete);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(block_split);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_split);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(block_unplug);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_unplug);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_insert);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_insert);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_queue);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_getrq);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_issue);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_merge);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_requeue);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_complete);
|
||||||
|
|
||||||
DEFINE_IDA(blk_queue_ida);
|
DEFINE_IDA(blk_queue_ida);
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include <linux/percpu.h>
|
#include <linux/percpu.h>
|
||||||
#include <linux/hashtable.h>
|
#include <linux/hashtable.h>
|
||||||
|
#include <linux/android_kabi.h>
|
||||||
|
|
||||||
struct io_cq;
|
struct io_cq;
|
||||||
struct elevator_type;
|
struct elevator_type;
|
||||||
@ -46,6 +47,11 @@ struct elevator_mq_ops {
|
|||||||
struct request *(*next_request)(struct request_queue *, struct request *);
|
struct request *(*next_request)(struct request_queue *, struct request *);
|
||||||
void (*init_icq)(struct io_cq *);
|
void (*init_icq)(struct io_cq *);
|
||||||
void (*exit_icq)(struct io_cq *);
|
void (*exit_icq)(struct io_cq *);
|
||||||
|
|
||||||
|
ANDROID_KABI_RESERVE(1);
|
||||||
|
ANDROID_KABI_RESERVE(2);
|
||||||
|
ANDROID_KABI_RESERVE(3);
|
||||||
|
ANDROID_KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ELV_NAME_MAX (16)
|
#define ELV_NAME_MAX (16)
|
||||||
@ -82,6 +88,9 @@ struct elevator_type
|
|||||||
/* managed by elevator core */
|
/* managed by elevator core */
|
||||||
char icq_cache_name[ELV_NAME_MAX + 6]; /* elvname + "_io_cq" */
|
char icq_cache_name[ELV_NAME_MAX + 6]; /* elvname + "_io_cq" */
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
|
|
||||||
|
ANDROID_KABI_RESERVE(1);
|
||||||
|
ANDROID_KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ELV_HASH_BITS 6
|
#define ELV_HASH_BITS 6
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
|
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
|
||||||
|
|
||||||
KMI_GENERATION=7
|
KMI_GENERATION=8
|
||||||
|
|
||||||
LLVM=1
|
LLVM=1
|
||||||
DEPMOD=depmod
|
DEPMOD=depmod
|
||||||
|
@ -310,7 +310,7 @@ pfrt_log_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
return -EROFS;
|
return -EROFS;
|
||||||
|
|
||||||
/* changing from read to write with mprotect is not allowed */
|
/* changing from read to write with mprotect is not allowed */
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
vm_flags_clear(vma, VM_MAYWRITE);
|
||||||
|
|
||||||
pfrt_log_dev = to_pfrt_log_dev(file);
|
pfrt_log_dev = to_pfrt_log_dev(file);
|
||||||
|
|
||||||
|
@ -66,6 +66,7 @@
|
|||||||
#include <linux/syscalls.h>
|
#include <linux/syscalls.h>
|
||||||
#include <linux/task_work.h>
|
#include <linux/task_work.h>
|
||||||
#include <linux/sizes.h>
|
#include <linux/sizes.h>
|
||||||
|
#include <linux/ktime.h>
|
||||||
#include <linux/android_vendor.h>
|
#include <linux/android_vendor.h>
|
||||||
|
|
||||||
#include <uapi/linux/sched/types.h>
|
#include <uapi/linux/sched/types.h>
|
||||||
@ -3113,6 +3114,7 @@ static void binder_transaction(struct binder_proc *proc,
|
|||||||
binder_size_t last_fixup_min_off = 0;
|
binder_size_t last_fixup_min_off = 0;
|
||||||
struct binder_context *context = proc->context;
|
struct binder_context *context = proc->context;
|
||||||
int t_debug_id = atomic_inc_return(&binder_last_id);
|
int t_debug_id = atomic_inc_return(&binder_last_id);
|
||||||
|
ktime_t t_start_time = ktime_get();
|
||||||
char *secctx = NULL;
|
char *secctx = NULL;
|
||||||
u32 secctx_sz = 0;
|
u32 secctx_sz = 0;
|
||||||
struct list_head sgc_head;
|
struct list_head sgc_head;
|
||||||
@ -3358,6 +3360,7 @@ static void binder_transaction(struct binder_proc *proc,
|
|||||||
binder_stats_created(BINDER_STAT_TRANSACTION_COMPLETE);
|
binder_stats_created(BINDER_STAT_TRANSACTION_COMPLETE);
|
||||||
|
|
||||||
t->debug_id = t_debug_id;
|
t->debug_id = t_debug_id;
|
||||||
|
t->start_time = t_start_time;
|
||||||
|
|
||||||
if (reply)
|
if (reply)
|
||||||
binder_debug(BINDER_DEBUG_TRANSACTION,
|
binder_debug(BINDER_DEBUG_TRANSACTION,
|
||||||
@ -3382,6 +3385,8 @@ static void binder_transaction(struct binder_proc *proc,
|
|||||||
t->from = thread;
|
t->from = thread;
|
||||||
else
|
else
|
||||||
t->from = NULL;
|
t->from = NULL;
|
||||||
|
t->from_pid = proc->pid;
|
||||||
|
t->from_tid = thread->pid;
|
||||||
t->sender_euid = task_euid(proc->tsk);
|
t->sender_euid = task_euid(proc->tsk);
|
||||||
t->to_proc = target_proc;
|
t->to_proc = target_proc;
|
||||||
t->to_thread = target_thread;
|
t->to_thread = target_thread;
|
||||||
@ -5823,8 +5828,7 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||||||
proc->pid, vma->vm_start, vma->vm_end, "bad vm_flags", -EPERM);
|
proc->pid, vma->vm_start, vma->vm_end, "bad vm_flags", -EPERM);
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
}
|
}
|
||||||
vma->vm_flags |= VM_DONTCOPY | VM_MIXEDMAP;
|
vm_flags_mod(vma, VM_DONTCOPY | VM_MIXEDMAP, VM_MAYWRITE);
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
|
||||||
|
|
||||||
vma->vm_ops = &binder_vm_ops;
|
vma->vm_ops = &binder_vm_ops;
|
||||||
vma->vm_private_data = proc;
|
vma->vm_private_data = proc;
|
||||||
@ -6181,18 +6185,20 @@ static void print_binder_transaction_ilocked(struct seq_file *m,
|
|||||||
{
|
{
|
||||||
struct binder_proc *to_proc;
|
struct binder_proc *to_proc;
|
||||||
struct binder_buffer *buffer = t->buffer;
|
struct binder_buffer *buffer = t->buffer;
|
||||||
|
ktime_t current_time = ktime_get();
|
||||||
|
|
||||||
spin_lock(&t->lock);
|
spin_lock(&t->lock);
|
||||||
to_proc = t->to_proc;
|
to_proc = t->to_proc;
|
||||||
seq_printf(m,
|
seq_printf(m,
|
||||||
"%s %d: %pK from %d:%d to %d:%d code %x flags %x pri %d:%d r%d",
|
"%s %d: %pK from %d:%d to %d:%d code %x flags %x pri %d:%d r%d elapsed %lldms",
|
||||||
prefix, t->debug_id, t,
|
prefix, t->debug_id, t,
|
||||||
t->from ? t->from->proc->pid : 0,
|
t->from_pid,
|
||||||
t->from ? t->from->pid : 0,
|
t->from_tid,
|
||||||
to_proc ? to_proc->pid : 0,
|
to_proc ? to_proc->pid : 0,
|
||||||
t->to_thread ? t->to_thread->pid : 0,
|
t->to_thread ? t->to_thread->pid : 0,
|
||||||
t->code, t->flags, t->priority.sched_policy,
|
t->code, t->flags, t->priority.sched_policy,
|
||||||
t->priority.prio, t->need_reply);
|
t->priority.prio, t->need_reply,
|
||||||
|
ktime_ms_delta(current_time, t->start_time));
|
||||||
spin_unlock(&t->lock);
|
spin_unlock(&t->lock);
|
||||||
|
|
||||||
if (proc != to_proc) {
|
if (proc != to_proc) {
|
||||||
|
@ -552,6 +552,8 @@ struct binder_transaction {
|
|||||||
int debug_id;
|
int debug_id;
|
||||||
struct binder_work work;
|
struct binder_work work;
|
||||||
struct binder_thread *from;
|
struct binder_thread *from;
|
||||||
|
pid_t from_pid;
|
||||||
|
pid_t from_tid;
|
||||||
struct binder_transaction *from_parent;
|
struct binder_transaction *from_parent;
|
||||||
struct binder_proc *to_proc;
|
struct binder_proc *to_proc;
|
||||||
struct binder_thread *to_thread;
|
struct binder_thread *to_thread;
|
||||||
@ -567,6 +569,7 @@ struct binder_transaction {
|
|||||||
bool set_priority_called;
|
bool set_priority_called;
|
||||||
bool is_nested;
|
bool is_nested;
|
||||||
kuid_t sender_euid;
|
kuid_t sender_euid;
|
||||||
|
ktime_t start_time;
|
||||||
struct list_head fd_fixups;
|
struct list_head fd_fixups;
|
||||||
binder_uintptr_t security_ctx;
|
binder_uintptr_t security_ctx;
|
||||||
/**
|
/**
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include <trace/hooks/preemptirq.h>
|
#include <trace/hooks/preemptirq.h>
|
||||||
#include <trace/hooks/ftrace_dump.h>
|
#include <trace/hooks/ftrace_dump.h>
|
||||||
#include <trace/hooks/ufshcd.h>
|
#include <trace/hooks/ufshcd.h>
|
||||||
|
#include <trace/hooks/mmc.h>
|
||||||
#include <trace/hooks/cgroup.h>
|
#include <trace/hooks/cgroup.h>
|
||||||
#include <trace/hooks/sys.h>
|
#include <trace/hooks/sys.h>
|
||||||
#include <trace/hooks/iommu.h>
|
#include <trace/hooks/iommu.h>
|
||||||
@ -62,7 +63,9 @@
|
|||||||
#include <trace/hooks/typec.h>
|
#include <trace/hooks/typec.h>
|
||||||
#include <trace/hooks/user.h>
|
#include <trace/hooks/user.h>
|
||||||
#include <trace/hooks/signal.h>
|
#include <trace/hooks/signal.h>
|
||||||
|
#include <trace/hooks/psci.h>
|
||||||
#include <trace/hooks/psi.h>
|
#include <trace/hooks/psi.h>
|
||||||
|
#include <trace/hooks/bl_hib.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Export tracepoints that act as a bare tracehook (ie: have no trace event
|
* Export tracepoints that act as a bare tracehook (ie: have no trace event
|
||||||
@ -116,6 +119,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_disable);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_enable);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_irqs_enable);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_cgroup_attach);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_cgroup_attach);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_cgroup_online);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_cgroup_online);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_meminfo_cache_adjust);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_mem_available_adjust);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_meminfo_adjust);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_enter);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_enter);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_oops_exit);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_size_check);
|
||||||
@ -225,6 +231,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_panic_unhandled);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_arm64_serror_panic);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_arm64_serror_panic);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_disable_thermal_cooling_stats);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_disable_thermal_cooling_stats);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_suspend);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_audio_usb_offload_connect);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_audio_usb_offload_connect);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_audio_usb_offload_disconnect);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_audio_usb_offload_disconnect);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kswapd_per_node);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kswapd_per_node);
|
||||||
@ -248,6 +255,11 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_read_done);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_id_remove);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_offline);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_css_online);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_free);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mem_cgroup_alloc);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_alloc_new_buf_locked);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_alloc_new_buf_locked);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_reply);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_reply);
|
||||||
@ -258,9 +270,16 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_slab_bypass);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_shrink_slab);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_shrink_slab);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_page_wmark);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_page_wmark);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_add_new_anon_rmap);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_add_new_anon_rmap);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_psci_tos_resident_on);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_psci_cpu_suspend);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_event);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_event);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_group);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_psi_group);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_acct_update_power);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpufreq_acct_update_power);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_modify_scan_control);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_should_continue_reclaim);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_file_is_tiny_bypass);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_mmc_resume);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_mmc_suspend);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_signal);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_signal);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_node_memcgs);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_node_memcgs);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_modify_thermal_request_freq);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_modify_thermal_request_freq);
|
||||||
@ -268,3 +287,22 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_modify_thermal_target_freq);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_new_ref);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_new_ref);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_del_ref);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_del_ref);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_register);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_unregister);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_thermal_zone_device);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_power_cap);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_reclaim_bypass);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_failure_bypass);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_pageout_swap_entry);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_swapin_walk_pmd_entry);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_process_madvise_end);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_smaps_pte_entry);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_smap);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ctl_dirty_rate);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_hibernation_swap);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_cpu_resume);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_save_hib_resume_bdev);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_encrypt_page);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_init_aes_encrypt);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_skip_swap_map_write);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_post_image_save);
|
||||||
|
@ -206,7 +206,7 @@ mspec_mmap(struct file *file, struct vm_area_struct *vma,
|
|||||||
refcount_set(&vdata->refcnt, 1);
|
refcount_set(&vdata->refcnt, 1);
|
||||||
vma->vm_private_data = vdata;
|
vma->vm_private_data = vdata;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
if (vdata->type == MSPEC_UNCACHED)
|
if (vdata->type == MSPEC_UNCACHED)
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
vma->vm_ops = &mspec_vm_ops;
|
vma->vm_ops = &mspec_vm_ops;
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include <linux/units.h>
|
#include <linux/units.h>
|
||||||
#include <trace/events/power.h>
|
#include <trace/events/power.h>
|
||||||
#include <trace/hooks/cpufreq.h>
|
#include <trace/hooks/cpufreq.h>
|
||||||
|
#include <trace/hooks/thermal.h>
|
||||||
|
|
||||||
static LIST_HEAD(cpufreq_policy_list);
|
static LIST_HEAD(cpufreq_policy_list);
|
||||||
|
|
||||||
@ -1537,8 +1538,10 @@ static int cpufreq_online(unsigned int cpu)
|
|||||||
if (cpufreq_driver->ready)
|
if (cpufreq_driver->ready)
|
||||||
cpufreq_driver->ready(policy);
|
cpufreq_driver->ready(policy);
|
||||||
|
|
||||||
if (cpufreq_thermal_control_enabled(cpufreq_driver))
|
if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
|
||||||
policy->cdev = of_cpufreq_cooling_register(policy);
|
policy->cdev = of_cpufreq_cooling_register(policy);
|
||||||
|
trace_android_vh_thermal_register(policy);
|
||||||
|
}
|
||||||
|
|
||||||
pr_debug("initialization complete\n");
|
pr_debug("initialization complete\n");
|
||||||
|
|
||||||
@ -1623,6 +1626,7 @@ static void __cpufreq_offline(unsigned int cpu, struct cpufreq_policy *policy)
|
|||||||
|
|
||||||
if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
|
if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
|
||||||
cpufreq_cooling_unregister(policy->cdev);
|
cpufreq_cooling_unregister(policy->cdev);
|
||||||
|
trace_android_vh_thermal_unregister(policy);
|
||||||
policy->cdev = NULL;
|
policy->cdev = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3333,7 +3333,7 @@ static int hisi_qm_uacce_mmap(struct uacce_queue *q,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO;
|
vm_flags_set(vma, VM_IO);
|
||||||
|
|
||||||
return remap_pfn_range(vma, vma->vm_start,
|
return remap_pfn_range(vma, vma->vm_start,
|
||||||
phys_base >> PAGE_SHIFT,
|
phys_base >> PAGE_SHIFT,
|
||||||
|
@ -308,7 +308,7 @@ static int dax_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
vma->vm_ops = &dax_vm_ops;
|
vma->vm_ops = &dax_vm_ops;
|
||||||
vma->vm_flags |= VM_HUGEPAGE;
|
vm_flags_set(vma, VM_HUGEPAGE);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,7 +201,7 @@ static int idxd_cdev_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
vma->vm_flags |= VM_DONTCOPY;
|
vm_flags_set(vma, VM_DONTCOPY);
|
||||||
pfn = (base + idxd_get_wq_portal_full_offset(wq->id,
|
pfn = (base + idxd_get_wq_portal_full_offset(wq->id,
|
||||||
IDXD_PORTAL_LIMITED)) >> PAGE_SHIFT;
|
IDXD_PORTAL_LIMITED)) >> PAGE_SHIFT;
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include <asm/system_misc.h>
|
#include <asm/system_misc.h>
|
||||||
#include <asm/smp_plat.h>
|
#include <asm/smp_plat.h>
|
||||||
#include <asm/suspend.h>
|
#include <asm/suspend.h>
|
||||||
|
#include <trace/hooks/psci.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* While a 64-bit OS can make calls with SMC32 calling conventions, for some
|
* While a 64-bit OS can make calls with SMC32 calling conventions, for some
|
||||||
@ -53,6 +54,12 @@ static enum arm_smccc_conduit psci_conduit = SMCCC_CONDUIT_NONE;
|
|||||||
|
|
||||||
bool psci_tos_resident_on(int cpu)
|
bool psci_tos_resident_on(int cpu)
|
||||||
{
|
{
|
||||||
|
bool resident = false;
|
||||||
|
|
||||||
|
trace_android_rvh_psci_tos_resident_on(cpu, &resident);
|
||||||
|
if (resident)
|
||||||
|
return resident;
|
||||||
|
|
||||||
return cpu == resident_cpu;
|
return cpu == resident_cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,6 +182,11 @@ static __always_inline int
|
|||||||
__psci_cpu_suspend(u32 fn, u32 state, unsigned long entry_point)
|
__psci_cpu_suspend(u32 fn, u32 state, unsigned long entry_point)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
bool deny = false;
|
||||||
|
|
||||||
|
trace_android_rvh_psci_cpu_suspend(state, &deny);
|
||||||
|
if (deny)
|
||||||
|
return -EPERM;
|
||||||
|
|
||||||
err = invoke_psci_fn(fn, state, entry_point, 0);
|
err = invoke_psci_fn(fn, state, entry_point, 0);
|
||||||
return psci_to_linux_errno(err);
|
return psci_to_linux_errno(err);
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/cdev.h>
|
#include <linux/cdev.h>
|
||||||
#include <linux/rwsem.h>
|
#include <linux/rwsem.h>
|
||||||
|
#include <linux/android_kabi.h>
|
||||||
|
|
||||||
#define GPIOCHIP_NAME "gpiochip"
|
#define GPIOCHIP_NAME "gpiochip"
|
||||||
|
|
||||||
@ -75,6 +76,7 @@ struct gpio_device {
|
|||||||
*/
|
*/
|
||||||
struct list_head pin_ranges;
|
struct list_head pin_ranges;
|
||||||
#endif
|
#endif
|
||||||
|
ANDROID_KABI_RESERVE(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* gpio suffixes used for ACPI and device tree lookup */
|
/* gpio suffixes used for ACPI and device tree lookup */
|
||||||
@ -100,6 +102,7 @@ struct gpio_array {
|
|||||||
struct gpio_chip *chip;
|
struct gpio_chip *chip;
|
||||||
unsigned long *get_mask;
|
unsigned long *get_mask;
|
||||||
unsigned long *set_mask;
|
unsigned long *set_mask;
|
||||||
|
ANDROID_KABI_RESERVE(1);
|
||||||
unsigned long invert_mask[];
|
unsigned long invert_mask[];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -179,6 +182,7 @@ struct gpio_desc {
|
|||||||
/* debounce period in microseconds */
|
/* debounce period in microseconds */
|
||||||
unsigned int debounce_period_us;
|
unsigned int debounce_period_us;
|
||||||
#endif
|
#endif
|
||||||
|
ANDROID_KABI_RESERVE(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define gpiod_not_found(desc) (IS_ERR(desc) && PTR_ERR(desc) == -ENOENT)
|
#define gpiod_not_found(desc) (IS_ERR(desc) && PTR_ERR(desc) == -ENOENT)
|
||||||
|
@ -256,7 +256,7 @@ static int amdgpu_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_str
|
|||||||
*/
|
*/
|
||||||
if (is_cow_mapping(vma->vm_flags) &&
|
if (is_cow_mapping(vma->vm_flags) &&
|
||||||
!(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)))
|
!(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)))
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
vm_flags_clear(vma, VM_MAYWRITE);
|
||||||
|
|
||||||
return drm_gem_ttm_mmap(obj, vma);
|
return drm_gem_ttm_mmap(obj, vma);
|
||||||
}
|
}
|
||||||
|
@ -2888,8 +2888,8 @@ static int kfd_mmio_mmap(struct kfd_dev *dev, struct kfd_process *process,
|
|||||||
|
|
||||||
address = dev->adev->rmmio_remap.bus_addr;
|
address = dev->adev->rmmio_remap.bus_addr;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
|
vm_flags_set(vma, VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
|
||||||
VM_DONTDUMP | VM_PFNMAP;
|
VM_DONTDUMP | VM_PFNMAP);
|
||||||
|
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
|
||||||
|
@ -159,8 +159,8 @@ int kfd_doorbell_mmap(struct kfd_dev *dev, struct kfd_process *process,
|
|||||||
address = kfd_get_process_doorbells(pdd);
|
address = kfd_get_process_doorbells(pdd);
|
||||||
if (!address)
|
if (!address)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
|
vm_flags_set(vma, VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
|
||||||
VM_DONTDUMP | VM_PFNMAP;
|
VM_DONTDUMP | VM_PFNMAP);
|
||||||
|
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
|
||||||
|
@ -1049,8 +1049,8 @@ int kfd_event_mmap(struct kfd_process *p, struct vm_area_struct *vma)
|
|||||||
pfn = __pa(page->kernel_address);
|
pfn = __pa(page->kernel_address);
|
||||||
pfn >>= PAGE_SHIFT;
|
pfn >>= PAGE_SHIFT;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE
|
vm_flags_set(vma, VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE
|
||||||
| VM_DONTDUMP | VM_PFNMAP;
|
| VM_DONTDUMP | VM_PFNMAP);
|
||||||
|
|
||||||
pr_debug("Mapping signal page\n");
|
pr_debug("Mapping signal page\n");
|
||||||
pr_debug(" start user address == 0x%08lx\n", vma->vm_start);
|
pr_debug(" start user address == 0x%08lx\n", vma->vm_start);
|
||||||
|
@ -2031,8 +2031,8 @@ int kfd_reserved_mem_mmap(struct kfd_dev *dev, struct kfd_process *process,
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND
|
vm_flags_set(vma, VM_IO | VM_DONTCOPY | VM_DONTEXPAND
|
||||||
| VM_NORESERVE | VM_DONTDUMP | VM_PFNMAP;
|
| VM_NORESERVE | VM_DONTDUMP | VM_PFNMAP);
|
||||||
/* Mapping pages to user process */
|
/* Mapping pages to user process */
|
||||||
return remap_pfn_range(vma, vma->vm_start,
|
return remap_pfn_range(vma, vma->vm_start,
|
||||||
PFN_DOWN(__pa(qpd->cwsr_kaddr)),
|
PFN_DOWN(__pa(qpd->cwsr_kaddr)),
|
||||||
|
@ -1047,7 +1047,7 @@ int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size,
|
|||||||
goto err_drm_gem_object_put;
|
goto err_drm_gem_object_put;
|
||||||
}
|
}
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
||||||
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
||||||
}
|
}
|
||||||
|
@ -530,8 +530,7 @@ int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct vm_area_struct *
|
|||||||
* the whole buffer.
|
* the whole buffer.
|
||||||
*/
|
*/
|
||||||
vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
|
vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
|
||||||
vma->vm_flags &= ~VM_PFNMAP;
|
vm_flags_mod(vma, VM_DONTEXPAND, VM_PFNMAP);
|
||||||
vma->vm_flags |= VM_DONTEXPAND;
|
|
||||||
|
|
||||||
if (dma_obj->map_noncoherent) {
|
if (dma_obj->map_noncoherent) {
|
||||||
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
||||||
|
@ -636,7 +636,7 @@ int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
||||||
if (shmem->map_wc)
|
if (shmem->map_wc)
|
||||||
vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
|
||||||
|
@ -476,7 +476,7 @@ static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma)
|
|||||||
|
|
||||||
if (!capable(CAP_SYS_ADMIN) &&
|
if (!capable(CAP_SYS_ADMIN) &&
|
||||||
(dma->flags & _DRM_DMA_USE_PCI_RO)) {
|
(dma->flags & _DRM_DMA_USE_PCI_RO)) {
|
||||||
vma->vm_flags &= ~(VM_WRITE | VM_MAYWRITE);
|
vm_flags_clear(vma, VM_WRITE | VM_MAYWRITE);
|
||||||
#if defined(__i386__) || defined(__x86_64__)
|
#if defined(__i386__) || defined(__x86_64__)
|
||||||
pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
|
pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
|
||||||
#else
|
#else
|
||||||
@ -492,7 +492,7 @@ static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma)
|
|||||||
|
|
||||||
vma->vm_ops = &drm_vm_dma_ops;
|
vma->vm_ops = &drm_vm_dma_ops;
|
||||||
|
|
||||||
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
|
|
||||||
drm_vm_open_locked(dev, vma);
|
drm_vm_open_locked(dev, vma);
|
||||||
return 0;
|
return 0;
|
||||||
@ -560,7 +560,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!capable(CAP_SYS_ADMIN) && (map->flags & _DRM_READ_ONLY)) {
|
if (!capable(CAP_SYS_ADMIN) && (map->flags & _DRM_READ_ONLY)) {
|
||||||
vma->vm_flags &= ~(VM_WRITE | VM_MAYWRITE);
|
vm_flags_clear(vma, VM_WRITE | VM_MAYWRITE);
|
||||||
#if defined(__i386__) || defined(__x86_64__)
|
#if defined(__i386__) || defined(__x86_64__)
|
||||||
pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
|
pgprot_val(vma->vm_page_prot) &= ~_PAGE_RW;
|
||||||
#else
|
#else
|
||||||
@ -628,7 +628,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma)
|
|||||||
default:
|
default:
|
||||||
return -EINVAL; /* This should never happen. */
|
return -EINVAL; /* This should never happen. */
|
||||||
}
|
}
|
||||||
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
|
|
||||||
drm_vm_open_locked(dev, vma);
|
drm_vm_open_locked(dev, vma);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -130,7 +130,7 @@ static int etnaviv_gem_mmap_obj(struct etnaviv_gem_object *etnaviv_obj,
|
|||||||
{
|
{
|
||||||
pgprot_t vm_page_prot;
|
pgprot_t vm_page_prot;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
|
|
||||||
vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ static int exynos_drm_gem_mmap_buffer(struct exynos_drm_gem *exynos_gem,
|
|||||||
unsigned long vm_size;
|
unsigned long vm_size;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
vma->vm_flags &= ~VM_PFNMAP;
|
vm_flags_clear(vma, VM_PFNMAP);
|
||||||
vma->vm_pgoff = 0;
|
vma->vm_pgoff = 0;
|
||||||
|
|
||||||
vm_size = vma->vm_end - vma->vm_start;
|
vm_size = vma->vm_end - vma->vm_start;
|
||||||
@ -368,7 +368,7 @@ static int exynos_drm_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct
|
|||||||
if (obj->import_attach)
|
if (obj->import_attach)
|
||||||
return dma_buf_mmap(obj->dma_buf, vma, 0);
|
return dma_buf_mmap(obj->dma_buf, vma, 0);
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
|
|
||||||
DRM_DEV_DEBUG_KMS(to_dma_dev(obj->dev), "flags = 0x%x\n",
|
DRM_DEV_DEBUG_KMS(to_dma_dev(obj->dev), "flags = 0x%x\n",
|
||||||
exynos_gem->flags);
|
exynos_gem->flags);
|
||||||
|
@ -139,7 +139,7 @@ static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
|
|||||||
*/
|
*/
|
||||||
vma->vm_ops = &psbfb_vm_ops;
|
vma->vm_ops = &psbfb_vm_ops;
|
||||||
vma->vm_private_data = (void *)fb;
|
vma->vm_private_data = (void *)fb;
|
||||||
vma->vm_flags |= VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ static int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
|||||||
buf = dev_priv->mmap_buffer;
|
buf = dev_priv->mmap_buffer;
|
||||||
buf_priv = buf->dev_private;
|
buf_priv = buf->dev_private;
|
||||||
|
|
||||||
vma->vm_flags |= VM_DONTCOPY;
|
vm_flags_set(vma, VM_DONTCOPY);
|
||||||
|
|
||||||
buf_priv->currently_mapped = I810_BUF_MAPPED;
|
buf_priv->currently_mapped = I810_BUF_MAPPED;
|
||||||
|
|
||||||
|
@ -979,7 +979,7 @@ int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||||||
i915_gem_object_put(obj);
|
i915_gem_object_put(obj);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
vm_flags_clear(vma, VM_MAYWRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
anon = mmap_singleton(to_i915(dev));
|
anon = mmap_singleton(to_i915(dev));
|
||||||
@ -988,7 +988,7 @@ int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||||||
return PTR_ERR(anon);
|
return PTR_ERR(anon);
|
||||||
}
|
}
|
||||||
|
|
||||||
vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO;
|
vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We keep the ref on mmo->obj, not vm_file, but we require
|
* We keep the ref on mmo->obj, not vm_file, but we require
|
||||||
|
@ -158,7 +158,7 @@ static int mtk_drm_gem_object_mmap(struct drm_gem_object *obj,
|
|||||||
* dma_alloc_attrs() allocated a struct page table for mtk_gem, so clear
|
* dma_alloc_attrs() allocated a struct page table for mtk_gem, so clear
|
||||||
* VM_PFNMAP flag that was set by drm_gem_mmap_obj()/drm_gem_mmap().
|
* VM_PFNMAP flag that was set by drm_gem_mmap_obj()/drm_gem_mmap().
|
||||||
*/
|
*/
|
||||||
vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
||||||
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
||||||
|
|
||||||
|
@ -1012,7 +1012,7 @@ static int msm_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct
|
|||||||
{
|
{
|
||||||
struct msm_gem_object *msm_obj = to_msm_bo(obj);
|
struct msm_gem_object *msm_obj = to_msm_bo(obj);
|
||||||
|
|
||||||
vma->vm_flags |= VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
vma->vm_page_prot = msm_gem_pgprot(msm_obj, vm_get_page_prot(vma->vm_flags));
|
vma->vm_page_prot = msm_gem_pgprot(msm_obj, vm_get_page_prot(vma->vm_flags));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -543,8 +543,7 @@ int omap_gem_mmap_obj(struct drm_gem_object *obj,
|
|||||||
{
|
{
|
||||||
struct omap_gem_object *omap_obj = to_omap_bo(obj);
|
struct omap_gem_object *omap_obj = to_omap_bo(obj);
|
||||||
|
|
||||||
vma->vm_flags &= ~VM_PFNMAP;
|
vm_flags_mod(vma, VM_MIXEDMAP, VM_PFNMAP);
|
||||||
vma->vm_flags |= VM_MIXEDMAP;
|
|
||||||
|
|
||||||
if (omap_obj->flags & OMAP_BO_WC) {
|
if (omap_obj->flags & OMAP_BO_WC) {
|
||||||
vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
||||||
|
@ -250,8 +250,7 @@ static int rockchip_drm_gem_object_mmap(struct drm_gem_object *obj,
|
|||||||
* We allocated a struct page table for rk_obj, so clear
|
* We allocated a struct page table for rk_obj, so clear
|
||||||
* VM_PFNMAP flag that was set by drm_gem_mmap_obj()/drm_gem_mmap().
|
* VM_PFNMAP flag that was set by drm_gem_mmap_obj()/drm_gem_mmap().
|
||||||
*/
|
*/
|
||||||
vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_mod(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP, VM_PFNMAP);
|
||||||
vma->vm_flags &= ~VM_PFNMAP;
|
|
||||||
|
|
||||||
vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
|
||||||
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
||||||
|
@ -573,7 +573,7 @@ int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma)
|
|||||||
* and set the vm_pgoff (used as a fake buffer offset by DRM)
|
* and set the vm_pgoff (used as a fake buffer offset by DRM)
|
||||||
* to 0 as we want to map the whole buffer.
|
* to 0 as we want to map the whole buffer.
|
||||||
*/
|
*/
|
||||||
vma->vm_flags &= ~VM_PFNMAP;
|
vm_flags_clear(vma, VM_PFNMAP);
|
||||||
vma->vm_pgoff = 0;
|
vma->vm_pgoff = 0;
|
||||||
|
|
||||||
err = dma_mmap_wc(gem->dev->dev, vma, bo->vaddr, bo->iova,
|
err = dma_mmap_wc(gem->dev->dev, vma, bo->vaddr, bo->iova,
|
||||||
@ -587,8 +587,7 @@ int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma)
|
|||||||
} else {
|
} else {
|
||||||
pgprot_t prot = vm_get_page_prot(vma->vm_flags);
|
pgprot_t prot = vm_get_page_prot(vma->vm_flags);
|
||||||
|
|
||||||
vma->vm_flags |= VM_MIXEDMAP;
|
vm_flags_mod(vma, VM_MIXEDMAP, VM_PFNMAP);
|
||||||
vma->vm_flags &= ~VM_PFNMAP;
|
|
||||||
|
|
||||||
vma->vm_page_prot = pgprot_writecombine(prot);
|
vma->vm_page_prot = pgprot_writecombine(prot);
|
||||||
}
|
}
|
||||||
|
@ -468,8 +468,7 @@ int ttm_bo_mmap_obj(struct vm_area_struct *vma, struct ttm_buffer_object *bo)
|
|||||||
|
|
||||||
vma->vm_private_data = bo;
|
vma->vm_private_data = bo;
|
||||||
|
|
||||||
vma->vm_flags |= VM_PFNMAP;
|
vm_flags_set(vma, VM_PFNMAP | VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ttm_bo_mmap_obj);
|
EXPORT_SYMBOL(ttm_bo_mmap_obj);
|
||||||
|
@ -46,7 +46,7 @@ static int virtio_gpu_vram_mmap(struct drm_gem_object *obj,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
|
vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
|
||||||
vma->vm_flags |= VM_MIXEDMAP | VM_DONTEXPAND;
|
vm_flags_set(vma, VM_MIXEDMAP | VM_DONTEXPAND);
|
||||||
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
|
||||||
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
|
||||||
vma->vm_ops = &virtio_gpu_vram_vm_ops;
|
vma->vm_ops = &virtio_gpu_vram_vm_ops;
|
||||||
|
@ -97,7 +97,7 @@ int vmw_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||||||
|
|
||||||
/* Use VM_PFNMAP rather than VM_MIXEDMAP if not a COW mapping */
|
/* Use VM_PFNMAP rather than VM_MIXEDMAP if not a COW mapping */
|
||||||
if (!is_cow_mapping(vma->vm_flags))
|
if (!is_cow_mapping(vma->vm_flags))
|
||||||
vma->vm_flags = (vma->vm_flags & ~VM_MIXEDMAP) | VM_PFNMAP;
|
vm_flags_mod(vma, VM_PFNMAP, VM_MIXEDMAP);
|
||||||
|
|
||||||
ttm_bo_put(bo); /* release extra ref taken by ttm_bo_mmap_obj() */
|
ttm_bo_put(bo); /* release extra ref taken by ttm_bo_mmap_obj() */
|
||||||
|
|
||||||
|
@ -70,8 +70,7 @@ static int xen_drm_front_gem_object_mmap(struct drm_gem_object *gem_obj,
|
|||||||
* vm_pgoff (used as a fake buffer offset by DRM) to 0 as we want to map
|
* vm_pgoff (used as a fake buffer offset by DRM) to 0 as we want to map
|
||||||
* the whole buffer.
|
* the whole buffer.
|
||||||
*/
|
*/
|
||||||
vma->vm_flags &= ~VM_PFNMAP;
|
vm_flags_mod(vma, VM_MIXEDMAP | VM_DONTEXPAND, VM_PFNMAP);
|
||||||
vma->vm_flags |= VM_MIXEDMAP | VM_DONTEXPAND;
|
|
||||||
vma->vm_pgoff = 0;
|
vma->vm_pgoff = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1264,7 +1264,7 @@ static int cs_char_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
if (vma_pages(vma) != 1)
|
if (vma_pages(vma) != 1)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
vma->vm_flags |= VM_IO | VM_DONTDUMP | VM_DONTEXPAND;
|
vm_flags_set(vma, VM_IO | VM_DONTDUMP | VM_DONTEXPAND);
|
||||||
vma->vm_ops = &cs_char_vm_ops;
|
vma->vm_ops = &cs_char_vm_ops;
|
||||||
vma->vm_private_data = file->private_data;
|
vma->vm_private_data = file->private_data;
|
||||||
|
|
||||||
|
@ -1659,7 +1659,7 @@ static int intel_th_msc_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
atomic_dec(&msc->user_count);
|
atomic_dec(&msc->user_count);
|
||||||
|
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
vma->vm_flags |= VM_DONTEXPAND | VM_DONTCOPY;
|
vm_flags_set(vma, VM_DONTEXPAND | VM_DONTCOPY);
|
||||||
vma->vm_ops = &msc_mmap_ops;
|
vma->vm_ops = &msc_mmap_ops;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -715,7 +715,7 @@ static int stm_char_mmap(struct file *file, struct vm_area_struct *vma)
|
|||||||
pm_runtime_get_sync(&stm->dev);
|
pm_runtime_get_sync(&stm->dev);
|
||||||
|
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
vma->vm_ops = &stm_mmap_vmops;
|
vma->vm_ops = &stm_mmap_vmops;
|
||||||
vm_iomap_memory(vma, phys, size);
|
vm_iomap_memory(vma, phys, size);
|
||||||
|
|
||||||
|
@ -403,7 +403,7 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma)
|
|||||||
ret = -EPERM;
|
ret = -EPERM;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
vm_flags_clear(vma, VM_MAYWRITE);
|
||||||
addr = vma->vm_start;
|
addr = vma->vm_start;
|
||||||
for (i = 0 ; i < uctxt->egrbufs.numbufs; i++) {
|
for (i = 0 ; i < uctxt->egrbufs.numbufs; i++) {
|
||||||
memlen = uctxt->egrbufs.buffers[i].len;
|
memlen = uctxt->egrbufs.buffers[i].len;
|
||||||
@ -528,7 +528,7 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
vma->vm_flags = flags;
|
vm_flags_reset(vma, flags);
|
||||||
hfi1_cdbg(PROC,
|
hfi1_cdbg(PROC,
|
||||||
"%u:%u type:%u io/vf:%d/%d, addr:0x%llx, len:%lu(%lu), flags:0x%lx\n",
|
"%u:%u type:%u io/vf:%d/%d, addr:0x%llx, len:%lu(%lu), flags:0x%lx\n",
|
||||||
ctxt, subctxt, type, mapio, vmf, memaddr, memlen,
|
ctxt, subctxt, type, mapio, vmf, memaddr, memlen,
|
||||||
|
@ -2091,7 +2091,7 @@ static int mlx5_ib_mmap_clock_info_page(struct mlx5_ib_dev *dev,
|
|||||||
|
|
||||||
if (vma->vm_flags & (VM_WRITE | VM_EXEC))
|
if (vma->vm_flags & (VM_WRITE | VM_EXEC))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
vm_flags_clear(vma, VM_MAYWRITE);
|
||||||
|
|
||||||
if (!dev->mdev->clock_info)
|
if (!dev->mdev->clock_info)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
@ -2315,7 +2315,7 @@ static int mlx5_ib_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vm
|
|||||||
|
|
||||||
if (vma->vm_flags & VM_WRITE)
|
if (vma->vm_flags & VM_WRITE)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
vm_flags_clear(vma, VM_MAYWRITE);
|
||||||
|
|
||||||
/* Don't expose to user-space information it shouldn't have */
|
/* Don't expose to user-space information it shouldn't have */
|
||||||
if (PAGE_SIZE > 4096)
|
if (PAGE_SIZE > 4096)
|
||||||
|
@ -733,7 +733,7 @@ static int qib_mmap_mem(struct vm_area_struct *vma, struct qib_ctxtdata *rcd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* don't allow them to later change with mprotect */
|
/* don't allow them to later change with mprotect */
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
vm_flags_clear(vma, VM_MAYWRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
pfn = virt_to_phys(kvaddr) >> PAGE_SHIFT;
|
pfn = virt_to_phys(kvaddr) >> PAGE_SHIFT;
|
||||||
@ -769,7 +769,7 @@ static int mmap_ureg(struct vm_area_struct *vma, struct qib_devdata *dd,
|
|||||||
phys = dd->physaddr + ureg;
|
phys = dd->physaddr + ureg;
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
|
||||||
vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND;
|
vm_flags_set(vma, VM_DONTCOPY | VM_DONTEXPAND);
|
||||||
ret = io_remap_pfn_range(vma, vma->vm_start,
|
ret = io_remap_pfn_range(vma, vma->vm_start,
|
||||||
phys >> PAGE_SHIFT,
|
phys >> PAGE_SHIFT,
|
||||||
vma->vm_end - vma->vm_start,
|
vma->vm_end - vma->vm_start,
|
||||||
@ -810,8 +810,7 @@ static int mmap_piobufs(struct vm_area_struct *vma,
|
|||||||
* don't allow them to later change to readable with mprotect (for when
|
* don't allow them to later change to readable with mprotect (for when
|
||||||
* not initially mapped readable, as is normally the case)
|
* not initially mapped readable, as is normally the case)
|
||||||
*/
|
*/
|
||||||
vma->vm_flags &= ~VM_MAYREAD;
|
vm_flags_mod(vma, VM_DONTCOPY | VM_DONTEXPAND, VM_MAYREAD);
|
||||||
vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND;
|
|
||||||
|
|
||||||
/* We used PAT if wc_cookie == 0 */
|
/* We used PAT if wc_cookie == 0 */
|
||||||
if (!dd->wc_cookie)
|
if (!dd->wc_cookie)
|
||||||
@ -852,7 +851,7 @@ static int mmap_rcvegrbufs(struct vm_area_struct *vma,
|
|||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
/* don't allow them to later change to writable with mprotect */
|
/* don't allow them to later change to writable with mprotect */
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
vm_flags_clear(vma, VM_MAYWRITE);
|
||||||
|
|
||||||
start = vma->vm_start;
|
start = vma->vm_start;
|
||||||
|
|
||||||
@ -944,7 +943,7 @@ static int mmap_kvaddr(struct vm_area_struct *vma, u64 pgaddr,
|
|||||||
* Don't allow permission to later change to writable
|
* Don't allow permission to later change to writable
|
||||||
* with mprotect.
|
* with mprotect.
|
||||||
*/
|
*/
|
||||||
vma->vm_flags &= ~VM_MAYWRITE;
|
vm_flags_clear(vma, VM_MAYWRITE);
|
||||||
} else
|
} else
|
||||||
goto bail;
|
goto bail;
|
||||||
len = vma->vm_end - vma->vm_start;
|
len = vma->vm_end - vma->vm_start;
|
||||||
@ -955,7 +954,7 @@ static int mmap_kvaddr(struct vm_area_struct *vma, u64 pgaddr,
|
|||||||
|
|
||||||
vma->vm_pgoff = (unsigned long) addr >> PAGE_SHIFT;
|
vma->vm_pgoff = (unsigned long) addr >> PAGE_SHIFT;
|
||||||
vma->vm_ops = &qib_file_vm_ops;
|
vma->vm_ops = &qib_file_vm_ops;
|
||||||
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
ret = 1;
|
ret = 1;
|
||||||
|
|
||||||
bail:
|
bail:
|
||||||
|
@ -672,7 +672,7 @@ int usnic_ib_mmap(struct ib_ucontext *context,
|
|||||||
usnic_dbg("\n");
|
usnic_dbg("\n");
|
||||||
|
|
||||||
us_ibdev = to_usdev(context->device);
|
us_ibdev = to_usdev(context->device);
|
||||||
vma->vm_flags |= VM_IO;
|
vm_flags_set(vma, VM_IO);
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
vfid = vma->vm_pgoff;
|
vfid = vma->vm_pgoff;
|
||||||
usnic_dbg("Page Offset %lu PAGE_SHIFT %u VFID %u\n",
|
usnic_dbg("Page Offset %lu PAGE_SHIFT %u VFID %u\n",
|
||||||
|
@ -408,7 +408,7 @@ int pvrdma_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vma)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Map UAR to kernel space, VM_LOCKED? */
|
/* Map UAR to kernel space, VM_LOCKED? */
|
||||||
vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND;
|
vm_flags_set(vma, VM_DONTCOPY | VM_DONTEXPAND);
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
if (io_remap_pfn_range(vma, start, context->uar.pfn, size,
|
if (io_remap_pfn_range(vma, start, context->uar.pfn, size,
|
||||||
vma->vm_page_prot))
|
vma->vm_page_prot))
|
||||||
|
@ -211,10 +211,11 @@ static void gic_do_wait_for_rwp(void __iomem *base, u32 bit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Wait for completion of a distributor change */
|
/* Wait for completion of a distributor change */
|
||||||
static void gic_dist_wait_for_rwp(void)
|
void gic_v3_dist_wait_for_rwp(void)
|
||||||
{
|
{
|
||||||
gic_do_wait_for_rwp(gic_data.dist_base, GICD_CTLR_RWP);
|
gic_do_wait_for_rwp(gic_data.dist_base, GICD_CTLR_RWP);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(gic_v3_dist_wait_for_rwp);
|
||||||
|
|
||||||
/* Wait for completion of a redistributor change */
|
/* Wait for completion of a redistributor change */
|
||||||
static void gic_redist_wait_for_rwp(void)
|
static void gic_redist_wait_for_rwp(void)
|
||||||
@ -361,7 +362,7 @@ static void gic_mask_irq(struct irq_data *d)
|
|||||||
if (gic_irq_in_rdist(d))
|
if (gic_irq_in_rdist(d))
|
||||||
gic_redist_wait_for_rwp();
|
gic_redist_wait_for_rwp();
|
||||||
else
|
else
|
||||||
gic_dist_wait_for_rwp();
|
gic_v3_dist_wait_for_rwp();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gic_eoimode1_mask_irq(struct irq_data *d)
|
static void gic_eoimode1_mask_irq(struct irq_data *d)
|
||||||
@ -817,7 +818,7 @@ static bool gic_has_group0(void)
|
|||||||
return val != 0;
|
return val != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init gic_dist_init(void)
|
void gic_v3_dist_init(void)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
u64 affinity;
|
u64 affinity;
|
||||||
@ -826,7 +827,7 @@ static void __init gic_dist_init(void)
|
|||||||
|
|
||||||
/* Disable the distributor */
|
/* Disable the distributor */
|
||||||
writel_relaxed(0, base + GICD_CTLR);
|
writel_relaxed(0, base + GICD_CTLR);
|
||||||
gic_dist_wait_for_rwp();
|
gic_v3_dist_wait_for_rwp();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Configure SPIs as non-secure Group-1. This will only matter
|
* Configure SPIs as non-secure Group-1. This will only matter
|
||||||
@ -863,7 +864,7 @@ static void __init gic_dist_init(void)
|
|||||||
|
|
||||||
/* Enable distributor with ARE, Group1, and wait for it to drain */
|
/* Enable distributor with ARE, Group1, and wait for it to drain */
|
||||||
writel_relaxed(val, base + GICD_CTLR);
|
writel_relaxed(val, base + GICD_CTLR);
|
||||||
gic_dist_wait_for_rwp();
|
gic_v3_dist_wait_for_rwp();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set all global interrupts to the boot CPU only. ARE must be
|
* Set all global interrupts to the boot CPU only. ARE must be
|
||||||
@ -880,6 +881,7 @@ static void __init gic_dist_init(void)
|
|||||||
gic_write_irouter(affinity, base + GICD_IROUTERnE + i * 8);
|
gic_write_irouter(affinity, base + GICD_IROUTERnE + i * 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(gic_v3_dist_init);
|
||||||
|
|
||||||
static int gic_iterate_rdists(int (*fn)(struct redist_region *, void __iomem *))
|
static int gic_iterate_rdists(int (*fn)(struct redist_region *, void __iomem *))
|
||||||
{
|
{
|
||||||
@ -1175,7 +1177,7 @@ static int gic_dist_supports_lpis(void)
|
|||||||
!gicv3_nolpi);
|
!gicv3_nolpi);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gic_cpu_init(void)
|
void gic_v3_cpu_init(void)
|
||||||
{
|
{
|
||||||
void __iomem *rbase;
|
void __iomem *rbase;
|
||||||
int i;
|
int i;
|
||||||
@ -1202,6 +1204,7 @@ static void gic_cpu_init(void)
|
|||||||
/* initialise system registers */
|
/* initialise system registers */
|
||||||
gic_cpu_sys_reg_init();
|
gic_cpu_sys_reg_init();
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(gic_v3_cpu_init);
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
|
|
||||||
@ -1210,7 +1213,7 @@ static void gic_cpu_init(void)
|
|||||||
|
|
||||||
static int gic_starting_cpu(unsigned int cpu)
|
static int gic_starting_cpu(unsigned int cpu)
|
||||||
{
|
{
|
||||||
gic_cpu_init();
|
gic_v3_cpu_init();
|
||||||
|
|
||||||
if (gic_dist_supports_lpis())
|
if (gic_dist_supports_lpis())
|
||||||
its_cpu_init();
|
its_cpu_init();
|
||||||
@ -1396,13 +1399,21 @@ static inline void gic_cpu_pm_init(void) { }
|
|||||||
#endif /* CONFIG_CPU_PM */
|
#endif /* CONFIG_CPU_PM */
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
static void gic_resume(void)
|
void gic_v3_resume(void)
|
||||||
{
|
{
|
||||||
trace_android_vh_gic_resume(&gic_data);
|
trace_android_vh_gic_resume(&gic_data);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(gic_v3_resume);
|
||||||
|
|
||||||
|
static int gic_v3_suspend(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_gic_v3_suspend(&gic_data);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static struct syscore_ops gic_syscore_ops = {
|
static struct syscore_ops gic_syscore_ops = {
|
||||||
.resume = gic_resume,
|
.resume = gic_v3_resume,
|
||||||
|
.suspend = gic_v3_suspend,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void gic_syscore_init(void)
|
static void gic_syscore_init(void)
|
||||||
@ -1412,6 +1423,8 @@ static void gic_syscore_init(void)
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
static inline void gic_syscore_init(void) { }
|
static inline void gic_syscore_init(void) { }
|
||||||
|
void gic_v3_resume(void) { }
|
||||||
|
static int gic_v3_suspend(void) { return 0; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -1899,8 +1912,8 @@ static int __init gic_init_bases(void __iomem *dist_base,
|
|||||||
|
|
||||||
gic_update_rdist_properties();
|
gic_update_rdist_properties();
|
||||||
|
|
||||||
gic_dist_init();
|
gic_v3_dist_init();
|
||||||
gic_cpu_init();
|
gic_v3_cpu_init();
|
||||||
gic_smp_init();
|
gic_smp_init();
|
||||||
gic_cpu_pm_init();
|
gic_cpu_pm_init();
|
||||||
gic_syscore_init();
|
gic_syscore_init();
|
||||||
|
@ -292,7 +292,7 @@ static int vb2_dc_mmap(void *buf_priv, struct vm_area_struct *vma)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
|
vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
|
||||||
vma->vm_private_data = &buf->handler;
|
vma->vm_private_data = &buf->handler;
|
||||||
vma->vm_ops = &vb2_common_vm_ops;
|
vma->vm_ops = &vb2_common_vm_ops;
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ static int vb2_vmalloc_mmap(void *buf_priv, struct vm_area_struct *vma)
|
|||||||
/*
|
/*
|
||||||
* Make sure that vm_areas for 2 buffers won't be merged together
|
* Make sure that vm_areas for 2 buffers won't be merged together
|
||||||
*/
|
*/
|
||||||
vma->vm_flags |= VM_DONTEXPAND;
|
vm_flags_set(vma, VM_DONTEXPAND);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use common vm_area operations to track buffer refcount.
|
* Use common vm_area operations to track buffer refcount.
|
||||||
|
@ -314,7 +314,7 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
|||||||
}
|
}
|
||||||
|
|
||||||
vma->vm_ops = &videobuf_vm_ops;
|
vma->vm_ops = &videobuf_vm_ops;
|
||||||
vma->vm_flags |= VM_DONTEXPAND;
|
vm_flags_set(vma, VM_DONTEXPAND);
|
||||||
vma->vm_private_data = map;
|
vma->vm_private_data = map;
|
||||||
|
|
||||||
dev_dbg(q->dev, "mmap %p: q=%p %08lx-%08lx (%lx) pgoff %08lx buf %d\n",
|
dev_dbg(q->dev, "mmap %p: q=%p %08lx-%08lx (%lx) pgoff %08lx buf %d\n",
|
||||||
|
@ -634,8 +634,8 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
|
|||||||
map->count = 1;
|
map->count = 1;
|
||||||
map->q = q;
|
map->q = q;
|
||||||
vma->vm_ops = &videobuf_vm_ops;
|
vma->vm_ops = &videobuf_vm_ops;
|
||||||
vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
|
/* using shared anonymous pages */
|
||||||
vma->vm_flags &= ~VM_IO; /* using shared anonymous pages */
|
vm_flags_mod(vma, VM_DONTEXPAND | VM_DONTDUMP, VM_IO);
|
||||||
vma->vm_private_data = map;
|
vma->vm_private_data = map;
|
||||||
dprintk(1, "mmap %p: q=%p %08lx-%08lx pgoff %08lx bufs %d-%d\n",
|
dprintk(1, "mmap %p: q=%p %08lx-%08lx pgoff %08lx bufs %d-%d\n",
|
||||||
map, q, vma->vm_start, vma->vm_end, vma->vm_pgoff, first, last);
|
map, q, vma->vm_start, vma->vm_end, vma->vm_pgoff, first, last);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user