Merge remote-tracking branch into HEAD
* keystone/mirror-android14-6.1: (66 commits) ANDROID: ABI: Update oplus symbol list ANDROID: vendor_hooks: Export the tracepoints sched_stat_sleep and sched_waking to let module probe them ANDROID: vendor_hooks: Export the tracepoints sched_stat_iowait, sched_stat_blocked, sched_stat_wait to let modules probe them ANDROID: vendor_hooks: export get_wchan ANDROID: workqueue: export symbol of the function wq_worker_comm() BACKPORT: mm/kmemleak: fix UAF bug in kmemleak_scan() ANDROID: clang: update to 17.0.2 ANDROID: abi_gki_aarch64_qcom: update symbol list UPSTREAM: media: add nv12_8l128 and nv12_10be_8l128 video format. ANDROID: ABI: update symbol list for galaxy ANDROID: db845c: Remove MAKE_GOALS from build.config ANDROID: GKI: gen_gki_modules_headers update preprocessing FROMGIT: locking/rwsem: Add __always_inline annotation to __down_read_common() and inlined callers FROMGIT: xfrm: Check if_id in inbound policy/secpath match ANDROID: always add the struct wireless_dev * to struct net_device ANDROID: ABI: Update symbol list for imx ANDROID: KVM: arm64: Always unmap protected regions from the host FROMLIST: usb: typec: altmodes/displayport: fix pin_assignment_show ANDROID: block: Improve shared tag set performance ANDROID: Update ABI representation broken by update race ... Change-Id: I70ecca1c7f5d6967c69a7c876f5f6791ad772d03 Signed-off-by: keystone-kernel-automerger <keystone-kernel-automerger@google.com>
This commit is contained in:
commit
8f71ab265a
116 changed files with 8007 additions and 30375 deletions
38
BUILD.bazel
38
BUILD.bazel
|
|
@ -12,6 +12,25 @@ package(
|
|||
],
|
||||
)
|
||||
|
||||
_GKI_AARCH64_MAKE_GOALS = [
|
||||
"Image",
|
||||
"Image.lz4",
|
||||
"Image.gz",
|
||||
"modules",
|
||||
]
|
||||
|
||||
_GKI_RISCV64_MAKE_GOALS = [
|
||||
"Image",
|
||||
"Image.lz4",
|
||||
"Image.gz",
|
||||
"modules",
|
||||
]
|
||||
|
||||
_GKI_X86_64_MAKE_GOALS = [
|
||||
"bzImage",
|
||||
"modules",
|
||||
]
|
||||
|
||||
filegroup(
|
||||
name = "aarch64_additional_kmi_symbol_lists",
|
||||
srcs = [
|
||||
|
|
@ -39,10 +58,12 @@ define_common_kernels(target_configs = {
|
|||
"additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"],
|
||||
"protected_exports_list": "android/abi_gki_protected_exports_aarch64",
|
||||
"protected_modules_list": "android/gki_aarch64_protected_modules",
|
||||
"make_goals": _GKI_AARCH64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_aarch64_16k": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
"module_implicit_outs": COMMON_GKI_MODULES_LIST,
|
||||
"make_goals": _GKI_AARCH64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_aarch64_debug": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
|
|
@ -51,22 +72,26 @@ define_common_kernels(target_configs = {
|
|||
"additional_kmi_symbol_lists": [":aarch64_additional_kmi_symbol_lists"],
|
||||
"protected_exports_list": "android/abi_gki_protected_exports_aarch64",
|
||||
"protected_modules_list": "android/gki_aarch64_protected_modules",
|
||||
"make_goals": _GKI_AARCH64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_riscv64": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
"module_implicit_outs": COMMON_GKI_MODULES_LIST,
|
||||
"make_goals": _GKI_RISCV64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_x86_64": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
"module_implicit_outs": COMMON_GKI_MODULES_LIST,
|
||||
"protected_exports_list": "android/abi_gki_protected_exports_x86_64",
|
||||
"protected_modules_list": "android/gki_x86_64_protected_modules",
|
||||
"make_goals": _GKI_X86_64_MAKE_GOALS,
|
||||
},
|
||||
"kernel_x86_64_debug": {
|
||||
"kmi_symbol_list_strict_mode": False,
|
||||
"module_implicit_outs": COMMON_GKI_MODULES_LIST,
|
||||
"protected_exports_list": "android/abi_gki_protected_exports_x86_64",
|
||||
"protected_modules_list": "android/gki_x86_64_protected_modules",
|
||||
"make_goals": _GKI_X86_64_MAKE_GOALS,
|
||||
},
|
||||
})
|
||||
|
||||
|
|
@ -79,6 +104,12 @@ define_db845c(
|
|||
],
|
||||
define_abi_targets = True,
|
||||
kmi_symbol_list = "//common:android/abi_gki_aarch64_db845c",
|
||||
make_goals = [
|
||||
"modules",
|
||||
"qcom/sdm845-db845c.dtb",
|
||||
"qcom/qrb5165-rb5.dtb",
|
||||
"qcom/sm8450-qrd.dtb",
|
||||
],
|
||||
module_outs = [
|
||||
# keep sorted
|
||||
"crypto/michael_mic.ko",
|
||||
|
|
@ -229,10 +260,12 @@ define_db845c(
|
|||
"drivers/usb/typec/qcom-pmic-typec.ko",
|
||||
"drivers/watchdog/pm8916_wdt.ko",
|
||||
"drivers/watchdog/qcom-wdt.ko",
|
||||
"net/mac80211/mac80211.ko",
|
||||
"net/qrtr/qrtr.ko",
|
||||
"net/qrtr/qrtr-mhi.ko",
|
||||
"net/qrtr/qrtr-smd.ko",
|
||||
"net/qrtr/qrtr-tun.ko",
|
||||
"net/wireless/cfg80211.ko",
|
||||
"sound/soc/codecs/snd-soc-dmic.ko",
|
||||
"sound/soc/codecs/snd-soc-hdmi-codec.ko",
|
||||
"sound/soc/codecs/snd-soc-lpass-macro-common.ko",
|
||||
|
|
@ -284,6 +317,11 @@ kernel_build(
|
|||
],
|
||||
build_config = "build.config.rockpi4",
|
||||
dtstree = "//common-modules/virtual-device:rockpi4_dts",
|
||||
make_goals = [
|
||||
"Image",
|
||||
"modules",
|
||||
"rk3399-rock-pi-4b.dtb",
|
||||
],
|
||||
module_outs = COMMON_GKI_MODULES_LIST + [
|
||||
# keep sorted
|
||||
"drivers/block/virtio_blk.ko",
|
||||
|
|
|
|||
|
|
@ -273,7 +273,9 @@ of the luma plane.
|
|||
.. _V4L2-PIX-FMT-NV12-16L16:
|
||||
.. _V4L2-PIX-FMT-NV12-32L32:
|
||||
.. _V4L2-PIX-FMT-NV12M-8L128:
|
||||
.. _V4L2-PIX-FMT-NV12-8L128:
|
||||
.. _V4L2-PIX-FMT-NV12M-10BE-8L128:
|
||||
.. _V4L2-PIX-FMT-NV12-10BE-8L128:
|
||||
.. _V4L2-PIX-FMT-MM21:
|
||||
|
||||
Tiled NV12
|
||||
|
|
@ -319,6 +321,9 @@ pixels in 2D 8x128 tiles, and stores tiles linearly in memory.
|
|||
The image height must be aligned to a multiple of 128.
|
||||
The layouts of the luma and chroma planes are identical.
|
||||
|
||||
``V4L2_PIX_FMT_NV12_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_8L128`` but stores
|
||||
two planes in one memory.
|
||||
|
||||
``V4L2_PIX_FMT_NV12M_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores
|
||||
10 bits pixels in 2D 8x128 tiles, and stores tiles linearly in memory.
|
||||
the data is arranged in big endian order.
|
||||
|
|
@ -334,6 +339,9 @@ byte 2: Y1(bits 3-0) Y2(bits 9-6)
|
|||
byte 3: Y2(bits 5-0) Y3(bits 9-8)
|
||||
byte 4: Y3(bits 7-0)
|
||||
|
||||
``V4L2_PIX_FMT_NV12_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_10BE_8L128`` but stores
|
||||
two planes in one memory.
|
||||
|
||||
``V4L2_PIX_FMT_MM21`` store luma pixel in 16x32 tiles, and chroma pixels
|
||||
in 16x16 tiles. The line stride must be aligned to a multiple of 16 and the
|
||||
image height must be aligned to a multiple of 32. The number of luma and chroma
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ per-file abi_gki_aarch64_goldfish = rkir@google.com
|
|||
# per-file for review purposes
|
||||
per-file gki_system_dlkm_modules = ramjiyani@google.com
|
||||
per-file abi_gki_protected_exports_* = ramjiyani@google.com
|
||||
per-file gki_aarch64_protected_modules,gki_x86_64_protected_modules = ramjiyani@google.com
|
||||
per-file gki_*_protected_modules = ramjiyani@google.com
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -2,6 +2,7 @@
|
|||
# commonly used symbols
|
||||
add_uevent_var
|
||||
alloc_io_pgtable_ops
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
alt_cb_patch_nops
|
||||
__arch_copy_from_user
|
||||
|
|
@ -19,8 +20,11 @@
|
|||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
bpf_trace_run5
|
||||
bpf_trace_run6
|
||||
bpf_trace_run8
|
||||
bus_register
|
||||
bus_unregister
|
||||
call_rcu
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
cancel_work_sync
|
||||
|
|
@ -28,15 +32,9 @@
|
|||
cdev_device_add
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_find_vendor_elem
|
||||
cfg80211_get_bss
|
||||
cfg80211_put_bss
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_vendor_cmd_reply
|
||||
__check_object_size
|
||||
__class_register
|
||||
class_unregister
|
||||
clk_bulk_disable
|
||||
clk_bulk_enable
|
||||
clk_bulk_prepare
|
||||
|
|
@ -66,6 +64,14 @@
|
|||
cpu_hwcaps
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
__cpu_possible_mask
|
||||
crc32_le
|
||||
crypto_alloc_shash
|
||||
crypto_destroy_tfm
|
||||
crypto_shash_setkey
|
||||
crypto_shash_update
|
||||
csum_partial
|
||||
_ctype
|
||||
debugfs_create_dir
|
||||
debugfs_create_file
|
||||
debugfs_create_u32
|
||||
|
|
@ -73,14 +79,18 @@
|
|||
debugfs_remove
|
||||
default_llseek
|
||||
delayed_work_timer_fn
|
||||
del_timer
|
||||
del_timer_sync
|
||||
destroy_workqueue
|
||||
dev_close
|
||||
dev_coredumpv
|
||||
dev_driver_string
|
||||
_dev_err
|
||||
dev_err_probe
|
||||
dev_fwnode
|
||||
dev_get_regmap
|
||||
device_add
|
||||
device_del
|
||||
device_for_each_child
|
||||
device_get_mac_address
|
||||
device_get_match_data
|
||||
|
|
@ -174,6 +184,7 @@
|
|||
dev_pm_opp_set_opp
|
||||
dev_pm_opp_set_rate
|
||||
dev_pm_set_wake_irq
|
||||
_dev_printk
|
||||
dev_set_name
|
||||
dev_set_threaded
|
||||
_dev_warn
|
||||
|
|
@ -244,13 +255,16 @@
|
|||
drm_mode_vrefresh
|
||||
drm_printf
|
||||
enable_irq
|
||||
eth_type_trans
|
||||
_find_first_bit
|
||||
_find_first_zero_bit
|
||||
_find_next_bit
|
||||
_find_next_zero_bit
|
||||
finish_wait
|
||||
firmware_request_nowarn
|
||||
flush_delayed_work
|
||||
flush_work
|
||||
__flush_workqueue
|
||||
fortify_panic
|
||||
free_io_pgtable_ops
|
||||
free_irq
|
||||
|
|
@ -258,6 +272,7 @@
|
|||
fwnode_property_present
|
||||
fwnode_property_read_string
|
||||
fwnode_property_read_u32_array
|
||||
gcd
|
||||
generic_handle_domain_irq
|
||||
generic_handle_irq
|
||||
geni_icc_disable
|
||||
|
|
@ -324,44 +339,12 @@
|
|||
idr_for_each
|
||||
idr_get_next
|
||||
idr_remove
|
||||
ieee80211_alloc_hw_nm
|
||||
ieee80211_beacon_cntdwn_is_complete
|
||||
ieee80211_beacon_get_template
|
||||
ieee80211_beacon_loss
|
||||
ieee80211_beacon_update_cntdwn
|
||||
ieee80211_bss_get_elem
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_connection_loss
|
||||
ieee80211_csa_finish
|
||||
ieee80211_find_sta
|
||||
ieee80211_find_sta_by_ifaddr
|
||||
ieee80211_free_hw
|
||||
ieee80211_free_txskb
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_hdrlen
|
||||
ieee80211_iterate_active_interfaces_atomic
|
||||
ieee80211_iterate_stations_atomic
|
||||
ieee80211_iter_chan_contexts_atomic
|
||||
ieee80211_queue_delayed_work
|
||||
ieee80211_queue_work
|
||||
ieee80211_radar_detected
|
||||
ieee80211_ready_on_channel
|
||||
ieee80211_register_hw
|
||||
ieee80211_remain_on_channel_expired
|
||||
ieee80211_report_low_ack
|
||||
ieee80211_restart_hw
|
||||
ieee80211_rx_napi
|
||||
ieee80211_scan_completed
|
||||
ieee80211_stop_queues
|
||||
ieee80211_tx_status_ext
|
||||
ieee80211_tx_status_irqsafe
|
||||
ieee80211_unregister_hw
|
||||
ieee80211_wake_queues
|
||||
iio_read_channel_processed
|
||||
init_dummy_netdev
|
||||
init_net
|
||||
__init_swait_queue_head
|
||||
init_timer_key
|
||||
init_uts_ns
|
||||
init_wait_entry
|
||||
__init_waitqueue_head
|
||||
iomem_resource
|
||||
|
|
@ -413,6 +396,7 @@
|
|||
kernel_sendmsg
|
||||
kfree
|
||||
kfree_const
|
||||
kfree_sensitive
|
||||
kfree_skb_reason
|
||||
kimage_voffset
|
||||
__kmalloc
|
||||
|
|
@ -433,6 +417,9 @@
|
|||
ktime_get_mono_fast_ns
|
||||
ktime_get_real_ts64
|
||||
ktime_get_with_offset
|
||||
kvfree
|
||||
kvfree_call_rcu
|
||||
kvmalloc_node
|
||||
__list_add_valid
|
||||
__list_del_entry_valid
|
||||
__local_bh_enable_ip
|
||||
|
|
@ -470,8 +457,13 @@
|
|||
__napi_schedule
|
||||
napi_schedule_prep
|
||||
__netdev_alloc_skb
|
||||
netdev_err
|
||||
netdev_info
|
||||
netif_napi_add_weight
|
||||
__netif_napi_del
|
||||
netif_rx
|
||||
netif_tx_wake_queue
|
||||
net_ratelimit
|
||||
__nla_parse
|
||||
nla_put
|
||||
nr_cpu_ids
|
||||
|
|
@ -522,8 +514,10 @@
|
|||
of_property_read_u32_index
|
||||
of_property_read_variable_u32_array
|
||||
of_property_read_variable_u8_array
|
||||
of_prop_next_u32
|
||||
of_reserved_mem_lookup
|
||||
param_ops_bool
|
||||
param_ops_charp
|
||||
param_ops_int
|
||||
param_ops_uint
|
||||
pci_clear_master
|
||||
|
|
@ -607,6 +601,7 @@
|
|||
_raw_write_lock_irq
|
||||
_raw_write_unlock_bh
|
||||
_raw_write_unlock_irq
|
||||
rcu_barrier
|
||||
__rcu_read_lock
|
||||
__rcu_read_unlock
|
||||
rdev_get_drvdata
|
||||
|
|
@ -614,6 +609,7 @@
|
|||
regcache_cache_only
|
||||
regcache_mark_dirty
|
||||
regcache_sync
|
||||
register_netdevice_notifier
|
||||
register_reboot_notifier
|
||||
__register_rpmsg_driver
|
||||
regmap_bulk_read
|
||||
|
|
@ -653,6 +649,11 @@
|
|||
__reset_control_get
|
||||
reset_control_put
|
||||
reset_control_reset
|
||||
rhashtable_insert_slow
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
round_jiffies_up
|
||||
rpmsg_register_device
|
||||
rpmsg_register_device_override
|
||||
rpmsg_send
|
||||
|
|
@ -665,6 +666,9 @@
|
|||
rproc_del
|
||||
rproc_free
|
||||
rproc_remove_subdev
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
sched_set_fifo_low
|
||||
schedule
|
||||
schedule_timeout
|
||||
|
|
@ -681,10 +685,15 @@
|
|||
simple_read_from_buffer
|
||||
single_open
|
||||
single_release
|
||||
skb_clone
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
skb_dequeue
|
||||
__skb_get_hash
|
||||
skb_pull
|
||||
skb_push
|
||||
skb_put
|
||||
skb_queue_head
|
||||
skb_queue_purge
|
||||
skb_queue_tail
|
||||
skb_trim
|
||||
|
|
@ -759,11 +768,13 @@
|
|||
sysfs_create_link
|
||||
sysfs_emit
|
||||
sysfs_remove_link
|
||||
system_power_efficient_wq
|
||||
system_wq
|
||||
tasklet_init
|
||||
tasklet_kill
|
||||
__tasklet_schedule
|
||||
tasklet_setup
|
||||
tasklet_unlock_wait
|
||||
thermal_cooling_device_register
|
||||
thermal_cooling_device_unregister
|
||||
thermal_zone_device_update
|
||||
|
|
@ -777,9 +788,12 @@
|
|||
__trace_trigger_soft_disabled
|
||||
__udelay
|
||||
unregister_chrdev_region
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_reboot_notifier
|
||||
unregister_rpmsg_driver
|
||||
usb_disabled
|
||||
__usecs_to_jiffies
|
||||
usleep_range_state
|
||||
v4l2_ctrl_handler_free
|
||||
v4l2_ctrl_handler_init_class
|
||||
|
|
@ -833,7 +847,6 @@
|
|||
wake_up_process
|
||||
__warn_printk
|
||||
watchdog_init_timeout
|
||||
wiphy_to_ieee80211_hw
|
||||
__xa_alloc
|
||||
xa_erase
|
||||
xa_find
|
||||
|
|
@ -863,44 +876,15 @@
|
|||
platform_irq_count
|
||||
report_iommu_fault
|
||||
|
||||
# required by ath.ko
|
||||
freq_reg_info
|
||||
reg_initiator_name
|
||||
wiphy_apply_custom_regulatory
|
||||
|
||||
# required by ath10k_core.ko
|
||||
cfg80211_calculate_bitrate
|
||||
cpu_latency_qos_add_request
|
||||
cpu_latency_qos_remove_request
|
||||
crc32_le
|
||||
guid_gen
|
||||
ieee80211_beacon_get_tim
|
||||
ieee80211_hw_restart_disconnect
|
||||
ieee80211_manage_rx_ba_offl
|
||||
ieee80211_next_txq
|
||||
ieee80211_proberesp_get
|
||||
__ieee80211_schedule_txq
|
||||
ieee80211_sta_register_airtime
|
||||
ieee80211_stop_queue
|
||||
ieee80211_tdls_oper_request
|
||||
ieee80211_tx_dequeue
|
||||
ieee80211_txq_get_depth
|
||||
ieee80211_txq_may_transmit
|
||||
ieee80211_txq_schedule_start
|
||||
ieee80211_tx_rate_update
|
||||
ieee80211_wake_queue
|
||||
init_uts_ns
|
||||
__kfifo_alloc
|
||||
__kfifo_free
|
||||
param_ops_ulong
|
||||
regulatory_hint
|
||||
rfc1042_header
|
||||
skb_copy
|
||||
skb_dequeue_tail
|
||||
skb_queue_head
|
||||
skb_realloc_headroom
|
||||
wiphy_read_of_freq_limits
|
||||
wiphy_rfkill_set_hw_state_reason
|
||||
|
||||
# required by ath10k_pci.ko
|
||||
pci_disable_msi
|
||||
|
|
@ -908,29 +892,11 @@
|
|||
pci_write_config_dword
|
||||
|
||||
# required by ath11k.ko
|
||||
crypto_alloc_shash
|
||||
crypto_destroy_tfm
|
||||
crypto_shash_final
|
||||
crypto_shash_setkey
|
||||
crypto_shash_update
|
||||
ieee80211_color_change_finish
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_get_fils_discovery_tmpl
|
||||
ieee80211_get_hdrlen_from_skb
|
||||
ieee80211_get_unsol_bcast_probe_resp_tmpl
|
||||
ieee80211_gtk_rekey_notify
|
||||
ieee80211_tx_status
|
||||
ieeee80211_obss_color_collision_notify
|
||||
__ipv6_addr_type
|
||||
memcpy_and_pad
|
||||
regulatory_set_wiphy_regd
|
||||
rhashtable_destroy
|
||||
rhashtable_init
|
||||
rhashtable_insert_slow
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
__skb_get_hash
|
||||
|
||||
# required by ath11k_ahb.ko
|
||||
dma_map_resource
|
||||
|
|
@ -956,6 +922,57 @@
|
|||
pm_runtime_irq_safe
|
||||
vchan_find_desc
|
||||
|
||||
# required by cfg80211.ko
|
||||
bpf_trace_run10
|
||||
bpf_trace_run7
|
||||
debugfs_rename
|
||||
__dev_change_net_namespace
|
||||
__dev_get_by_index
|
||||
dev_get_by_index
|
||||
device_rename
|
||||
do_trace_netlink_extack
|
||||
genlmsg_multicast_allns
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
get_net_ns_by_fd
|
||||
get_net_ns_by_pid
|
||||
inet_csk_get_port
|
||||
key_create_or_update
|
||||
key_put
|
||||
keyring_alloc
|
||||
ktime_get_coarse_with_offset
|
||||
memcmp
|
||||
netlink_broadcast
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_ns_type_operations
|
||||
nla_find
|
||||
nla_memcpy
|
||||
nla_put_64bit
|
||||
nla_reserve
|
||||
__nla_validate
|
||||
__put_net
|
||||
rb_erase
|
||||
rb_insert_color
|
||||
register_netdevice
|
||||
register_pernet_device
|
||||
request_firmware_nowait
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
rfkill_register
|
||||
rfkill_resume_polling
|
||||
rfkill_set_hw_state_reason
|
||||
rfkill_unregister
|
||||
skb_add_rx_frag
|
||||
__sock_create
|
||||
trace_print_array_seq
|
||||
unregister_pernet_device
|
||||
verify_pkcs7_signature
|
||||
wireless_nlevent_flush
|
||||
|
||||
# required by clk-qcom.ko
|
||||
__clk_determine_rate
|
||||
clk_fixed_factor_ops
|
||||
|
|
@ -969,7 +986,6 @@
|
|||
__clk_mux_determine_rate_closest
|
||||
divider_ro_round_rate_parent
|
||||
of_find_node_opts_by_path
|
||||
of_prop_next_u32
|
||||
pm_genpd_remove_subdomain
|
||||
|
||||
# required by clk-rpmh.ko
|
||||
|
|
@ -1003,7 +1019,6 @@
|
|||
|
||||
# required by drm_display_helper.ko
|
||||
devm_backlight_device_register
|
||||
_dev_printk
|
||||
drm_atomic_get_connector_state
|
||||
drm_atomic_get_crtc_state
|
||||
drm_atomic_get_new_private_obj_state
|
||||
|
|
@ -1031,7 +1046,6 @@
|
|||
devm_extcon_dev_register
|
||||
extcon_set_state_sync
|
||||
gpiod_set_debounce
|
||||
system_power_efficient_wq
|
||||
|
||||
# required by fastrpc.ko
|
||||
dma_buf_attach
|
||||
|
|
@ -1066,7 +1080,6 @@
|
|||
gpiod_get_optional
|
||||
|
||||
# required by gpu-sched.ko
|
||||
call_rcu
|
||||
dma_fence_add_callback
|
||||
dma_fence_remove_callback
|
||||
dma_resv_iter_first
|
||||
|
|
@ -1077,7 +1090,6 @@
|
|||
kmem_cache_free
|
||||
kthread_parkme
|
||||
kthread_should_park
|
||||
rcu_barrier
|
||||
wait_for_completion
|
||||
xa_destroy
|
||||
xa_store
|
||||
|
|
@ -1123,9 +1135,6 @@
|
|||
i2c_get_dma_safe_msg_buf
|
||||
i2c_put_dma_safe_msg_buf
|
||||
|
||||
# required by i2c-qup.ko
|
||||
__usecs_to_jiffies
|
||||
|
||||
# required by i2c-rk3x.ko
|
||||
clk_notifier_register
|
||||
clk_notifier_unregister
|
||||
|
|
@ -1163,6 +1172,71 @@
|
|||
pm_clk_resume
|
||||
pm_clk_suspend
|
||||
|
||||
# required by mac80211.ko
|
||||
alloc_netdev_mqs
|
||||
__alloc_percpu_gfp
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
bitmap_free
|
||||
bitmap_zalloc
|
||||
crc32_be
|
||||
crypto_aead_decrypt
|
||||
crypto_aead_encrypt
|
||||
crypto_aead_setauthsize
|
||||
crypto_aead_setkey
|
||||
crypto_alloc_aead
|
||||
crypto_alloc_skcipher
|
||||
__crypto_memneq
|
||||
crypto_shash_digest
|
||||
crypto_shash_finup
|
||||
crypto_skcipher_decrypt
|
||||
crypto_skcipher_encrypt
|
||||
crypto_skcipher_setkey
|
||||
__crypto_xor
|
||||
dev_addr_mod
|
||||
dev_alloc_name
|
||||
dev_fetch_sw_netstats
|
||||
__dev_queue_xmit
|
||||
ether_setup
|
||||
eth_mac_addr
|
||||
ethtool_op_get_link
|
||||
free_netdev
|
||||
free_percpu
|
||||
get_random_u16
|
||||
__hw_addr_init
|
||||
__hw_addr_sync
|
||||
__hw_addr_unsync
|
||||
kernel_param_lock
|
||||
kernel_param_unlock
|
||||
kfree_skb_list_reason
|
||||
ktime_get_seconds
|
||||
napi_gro_receive
|
||||
netdev_set_default_ethtool_ops
|
||||
netif_carrier_off
|
||||
netif_carrier_on
|
||||
netif_receive_skb
|
||||
netif_receive_skb_list
|
||||
netif_tx_stop_all_queues
|
||||
__per_cpu_offset
|
||||
___pskb_trim
|
||||
register_inet6addr_notifier
|
||||
register_inetaddr_notifier
|
||||
rhashtable_free_and_destroy
|
||||
rhltable_init
|
||||
round_jiffies
|
||||
round_jiffies_relative
|
||||
sg_init_one
|
||||
skb_checksum_help
|
||||
skb_clone_sk
|
||||
skb_complete_wifi_ack
|
||||
skb_copy_expand
|
||||
skb_ensure_writable
|
||||
__skb_gso_segment
|
||||
system_freezable_wq
|
||||
unregister_inet6addr_notifier
|
||||
unregister_inetaddr_notifier
|
||||
unregister_netdevice_many
|
||||
|
||||
# required by mcp251xfd.ko
|
||||
alloc_candev_mqs
|
||||
alloc_can_err_skb
|
||||
|
|
@ -1189,14 +1263,10 @@
|
|||
dql_completed
|
||||
dql_reset
|
||||
free_candev
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_notice
|
||||
netdev_printk
|
||||
netdev_warn
|
||||
netif_schedule_queue
|
||||
netif_tx_wake_queue
|
||||
net_ratelimit
|
||||
open_candev
|
||||
register_candev
|
||||
regmap_get_val_bytes
|
||||
|
|
@ -1214,8 +1284,6 @@
|
|||
__vmalloc
|
||||
|
||||
# required by mhi.ko
|
||||
device_add
|
||||
device_del
|
||||
get_random_u32
|
||||
pm_wakeup_dev_event
|
||||
_raw_read_lock_irq
|
||||
|
|
@ -1230,8 +1298,6 @@
|
|||
|
||||
# required by msm.ko
|
||||
__bitmap_andnot
|
||||
bpf_trace_run6
|
||||
bpf_trace_run8
|
||||
clk_get_parent
|
||||
component_add
|
||||
component_bind_all
|
||||
|
|
@ -1240,14 +1306,12 @@
|
|||
component_master_add_with_match
|
||||
component_master_del
|
||||
component_unbind_all
|
||||
_ctype
|
||||
debugfs_attr_read
|
||||
debugfs_attr_write
|
||||
debugfs_create_bool
|
||||
debugfs_create_file_unsafe
|
||||
debugfs_create_u64
|
||||
debugfs_create_x64
|
||||
del_timer
|
||||
dev_coredumpm
|
||||
devfreq_cooling_unregister
|
||||
devfreq_recommended_opp
|
||||
|
|
@ -1430,7 +1494,6 @@
|
|||
drm_writeback_queue_job
|
||||
drm_writeback_signal_completion
|
||||
fd_install
|
||||
__flush_workqueue
|
||||
get_pid_task
|
||||
get_unused_fd_flags
|
||||
gpiod_get_value
|
||||
|
|
@ -1448,8 +1511,6 @@
|
|||
kthread_create_worker
|
||||
kthread_destroy_worker
|
||||
kthread_queue_work
|
||||
kvfree
|
||||
kvmalloc_node
|
||||
memdup_user_nul
|
||||
memparse
|
||||
mipi_dsi_create_packet
|
||||
|
|
@ -1467,7 +1528,6 @@
|
|||
of_graph_get_next_endpoint
|
||||
of_graph_get_remote_port_parent
|
||||
of_icc_get
|
||||
param_ops_charp
|
||||
param_ops_ullong
|
||||
phy_calibrate
|
||||
phy_configure
|
||||
|
|
@ -1479,7 +1539,6 @@
|
|||
register_shrinker
|
||||
register_vmap_purge_notifier
|
||||
reservation_ww_class
|
||||
round_jiffies_up
|
||||
sched_set_fifo
|
||||
schedule_timeout_interruptible
|
||||
__sg_page_iter_dma_next
|
||||
|
|
@ -1632,7 +1691,6 @@
|
|||
cpufreq_get_driver_data
|
||||
cpufreq_register_driver
|
||||
cpufreq_unregister_driver
|
||||
__cpu_possible_mask
|
||||
dev_pm_opp_adjust_voltage
|
||||
dev_pm_opp_disable
|
||||
dev_pm_opp_enable
|
||||
|
|
@ -1762,7 +1820,6 @@
|
|||
_copy_to_iter
|
||||
|
||||
# required by qrtr.ko
|
||||
__alloc_skb
|
||||
autoremove_wake_function
|
||||
datagram_poll
|
||||
do_wait_intr_irq
|
||||
|
|
@ -1781,8 +1838,6 @@
|
|||
refcount_dec_and_mutex_lock
|
||||
release_sock
|
||||
sk_alloc
|
||||
skb_clone
|
||||
skb_copy_bits
|
||||
skb_copy_datagram_iter
|
||||
skb_free_datagram
|
||||
__skb_pad
|
||||
|
|
@ -1812,8 +1867,6 @@
|
|||
|
||||
# required by rmtfs_mem.ko
|
||||
alloc_chrdev_region
|
||||
__class_register
|
||||
class_unregister
|
||||
|
||||
# required by rpmsg_ns.ko
|
||||
rpmsg_create_channel
|
||||
|
|
@ -1896,9 +1949,6 @@
|
|||
snd_soc_of_parse_card_name
|
||||
snd_soc_of_parse_pin_switches
|
||||
|
||||
# required by snd-soc-rl6231.ko
|
||||
gcd
|
||||
|
||||
# required by snd-soc-rt5663.ko
|
||||
regcache_cache_bypass
|
||||
snd_soc_dapm_disable_pin
|
||||
|
|
@ -1951,7 +2001,6 @@
|
|||
spi_delay_exec
|
||||
spi_finalize_current_message
|
||||
spi_get_next_queued_message
|
||||
tasklet_unlock_wait
|
||||
|
||||
# required by spi-qcom-qspi.ko
|
||||
icc_disable
|
||||
|
|
|
|||
|
|
@ -1928,37 +1928,6 @@
|
|||
_raw_read_unlock_irqrestore
|
||||
|
||||
# required by scsc_wlan.ko
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_chandef_create
|
||||
cfg80211_chandef_valid
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_connect_done
|
||||
cfg80211_conn_failed
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_external_auth_request
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_find_vendor_elem
|
||||
cfg80211_get_bss
|
||||
cfg80211_inform_bss_frame_data
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_new_sta
|
||||
cfg80211_put_bss
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_ref_bss
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_update_owe_info_event
|
||||
cfg80211_vendor_cmd_reply
|
||||
consume_skb
|
||||
dev_addr_mod
|
||||
dev_alloc_name
|
||||
|
|
@ -1969,9 +1938,6 @@
|
|||
ether_setup
|
||||
eth_type_trans
|
||||
for_each_kernel_tracepoint
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_get_channel_khz
|
||||
in4_pton
|
||||
in6_pton
|
||||
ip_send_check
|
||||
|
|
@ -2000,7 +1966,6 @@
|
|||
register_inetaddr_notifier
|
||||
register_kretprobe
|
||||
register_netdevice
|
||||
regulatory_set_wiphy_regd
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
|
|
@ -2013,10 +1978,6 @@
|
|||
unregister_inetaddr_notifier
|
||||
unregister_kretprobe
|
||||
unregister_netdevice_queue
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_register
|
||||
wiphy_unregister
|
||||
|
||||
# required by scsi_srpmb.ko
|
||||
pfn_is_map_memory
|
||||
|
|
|
|||
|
|
@ -11,10 +11,23 @@
|
|||
atomic_notifier_chain_unregister
|
||||
__bitmap_weight
|
||||
bitmap_zalloc
|
||||
blkcg_activate_policy
|
||||
blkcg_deactivate_policy
|
||||
blkcg_policy_register
|
||||
blkcg_policy_unregister
|
||||
blkcg_root
|
||||
blkdev_get_by_dev
|
||||
blkdev_get_by_path
|
||||
blkdev_issue_flush
|
||||
blkdev_put
|
||||
blk_mq_sched_mark_restart_hctx
|
||||
blk_mq_sched_try_insert_merge
|
||||
blk_mq_sched_try_merge
|
||||
blk_queue_rq_timeout
|
||||
blk_req_needs_zone_write_lock
|
||||
__blk_req_zone_write_lock
|
||||
__blk_req_zone_write_unlock
|
||||
blk_stat_enable_accounting
|
||||
cache_line_size
|
||||
cancel_delayed_work_sync
|
||||
__check_object_size
|
||||
|
|
@ -34,11 +47,13 @@
|
|||
crypto_comp_compress
|
||||
crypto_comp_decompress
|
||||
crypto_destroy_tfm
|
||||
css_next_descendant_pre
|
||||
_ctype
|
||||
debugfs_create_file
|
||||
debugfs_remove
|
||||
delayed_work_timer_fn
|
||||
del_timer
|
||||
_dev_alert
|
||||
_dev_err
|
||||
device_create
|
||||
device_destroy
|
||||
|
|
@ -62,6 +77,17 @@
|
|||
dma_alloc_attrs
|
||||
dma_free_attrs
|
||||
down_write
|
||||
elevator_alloc
|
||||
elv_bio_merge_ok
|
||||
elv_rb_add
|
||||
elv_rb_del
|
||||
elv_rb_find
|
||||
elv_rb_former_request
|
||||
elv_rb_latter_request
|
||||
elv_register
|
||||
elv_rqhash_add
|
||||
elv_rqhash_del
|
||||
elv_unregister
|
||||
emergency_restart
|
||||
file_ra_state_init
|
||||
file_write_and_wait_range
|
||||
|
|
@ -160,9 +186,11 @@
|
|||
mutex_lock
|
||||
mutex_unlock
|
||||
name_to_dev_t
|
||||
netlink_ack
|
||||
nr_cpu_ids
|
||||
nsec_to_clock_t
|
||||
of_address_to_resource
|
||||
of_css
|
||||
of_find_compatible_node
|
||||
of_find_node_opts_by_path
|
||||
of_find_property
|
||||
|
|
@ -225,6 +253,7 @@
|
|||
rtc_time64_to_tm
|
||||
rtc_tm_to_time64
|
||||
runqueues
|
||||
sbitmap_queue_min_shallow_depth
|
||||
sched_clock
|
||||
sched_show_task
|
||||
scnprintf
|
||||
|
|
@ -237,6 +266,7 @@
|
|||
simple_strtol
|
||||
single_open
|
||||
single_release
|
||||
snd_soc_find_dai
|
||||
snd_soc_info_volsw_sx
|
||||
snd_soc_put_volsw_sx
|
||||
snprintf
|
||||
|
|
@ -289,6 +319,7 @@
|
|||
__traceiter_android_vh_try_to_freeze_todo
|
||||
__traceiter_android_vh_try_to_freeze_todo_unfrozen
|
||||
__traceiter_android_vh_watchdog_timer_softlockup
|
||||
__traceiter_block_rq_insert
|
||||
__traceiter_console
|
||||
__traceiter_hrtimer_expire_entry
|
||||
__traceiter_hrtimer_expire_exit
|
||||
|
|
@ -319,6 +350,7 @@
|
|||
__tracepoint_android_vh_try_to_freeze_todo
|
||||
__tracepoint_android_vh_try_to_freeze_todo_unfrozen
|
||||
__tracepoint_android_vh_watchdog_timer_softlockup
|
||||
__tracepoint_block_rq_insert
|
||||
__tracepoint_console
|
||||
__tracepoint_hrtimer_expire_entry
|
||||
__tracepoint_hrtimer_expire_exit
|
||||
|
|
|
|||
|
|
@ -108,42 +108,6 @@
|
|||
cec_transmit_attempt_done_ts
|
||||
cec_transmit_done_ts
|
||||
cec_unregister_adapter
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_auth_timeout
|
||||
cfg80211_cac_event
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_classify8021d
|
||||
cfg80211_connect_done
|
||||
cfg80211_cqm_rssi_notify
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_ft_event
|
||||
cfg80211_get_bss
|
||||
cfg80211_inform_bss_data
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_new_sta
|
||||
cfg80211_pmksa_candidate_notify
|
||||
cfg80211_put_bss
|
||||
__cfg80211_radar_event
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_report_wowlan_wakeup
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_assoc_resp
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_rx_mlme_mgmt
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_tdls_oper_request
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_vendor_cmd_reply
|
||||
__check_object_size
|
||||
__class_create
|
||||
class_destroy
|
||||
|
|
@ -213,6 +177,14 @@
|
|||
component_master_del
|
||||
component_match_add_release
|
||||
component_unbind_all
|
||||
configfs_register_default_group
|
||||
configfs_register_subsystem
|
||||
configfs_unregister_default_group
|
||||
configfs_unregister_subsystem
|
||||
config_group_init
|
||||
config_group_init_type_name
|
||||
config_item_put
|
||||
config_item_set_name
|
||||
console_lock
|
||||
console_suspend_enabled
|
||||
console_unlock
|
||||
|
|
@ -370,6 +342,7 @@
|
|||
devm_platform_get_and_ioremap_resource
|
||||
devm_platform_ioremap_resource
|
||||
devm_platform_ioremap_resource_byname
|
||||
devm_power_supply_register
|
||||
devm_pwmchip_add
|
||||
devm_pwm_get
|
||||
devm_rc_allocate_device
|
||||
|
|
@ -458,6 +431,7 @@
|
|||
dmabuf_page_pool_create
|
||||
dmabuf_page_pool_destroy
|
||||
dmabuf_page_pool_free
|
||||
dmabuf_page_pool_get_size
|
||||
dma_buf_put
|
||||
dma_buf_unmap_attachment
|
||||
dma_buf_vmap
|
||||
|
|
@ -918,6 +892,7 @@
|
|||
hdmi_vendor_infoframe_pack
|
||||
hex_dump_to_buffer
|
||||
hrtimer_cancel
|
||||
hrtimer_forward
|
||||
hrtimer_init
|
||||
hrtimer_resolution
|
||||
hrtimer_start_range_ns
|
||||
|
|
@ -964,16 +939,12 @@
|
|||
idr_get_next
|
||||
idr_preload
|
||||
idr_remove
|
||||
ieee80211_bss_get_elem
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_hdrlen
|
||||
ignore_console_lock_warning
|
||||
iio_alloc_pollfunc
|
||||
iio_buffer_enabled
|
||||
iio_buffer_init
|
||||
iio_buffer_put
|
||||
iio_bus_type
|
||||
iio_dealloc_pollfunc
|
||||
iio_device_attach_buffer
|
||||
iio_device_claim_direct_mode
|
||||
|
|
@ -981,14 +952,21 @@
|
|||
__iio_device_register
|
||||
iio_device_release_direct_mode
|
||||
iio_device_unregister
|
||||
iio_format_value
|
||||
iio_get_time_ns
|
||||
iio_push_event
|
||||
iio_push_to_buffers
|
||||
iio_read_const_attr
|
||||
iio_read_mount_matrix
|
||||
iio_show_mount_matrix
|
||||
iio_str_to_fixpoint
|
||||
__iio_trigger_alloc
|
||||
iio_trigger_free
|
||||
iio_trigger_notify_done
|
||||
iio_trigger_poll
|
||||
iio_trigger_poll_chained
|
||||
iio_trigger_register
|
||||
iio_trigger_unregister
|
||||
import_iovec
|
||||
in4_pton
|
||||
init_dummy_netdev
|
||||
|
|
@ -1056,6 +1034,8 @@
|
|||
__irq_set_handler
|
||||
irq_set_irq_wake
|
||||
irq_to_desc
|
||||
irq_work_queue
|
||||
irq_work_sync
|
||||
ir_raw_event_store_edge
|
||||
is_console_locked
|
||||
is_vmalloc_addr
|
||||
|
|
@ -1557,7 +1537,10 @@
|
|||
pm_wakeup_dev_event
|
||||
pm_wakeup_ws_event
|
||||
policy_has_boost_freq
|
||||
power_supply_am_i_supplied
|
||||
power_supply_changed
|
||||
power_supply_get_by_phandle
|
||||
power_supply_get_drvdata
|
||||
power_supply_get_property
|
||||
power_supply_put
|
||||
power_supply_register
|
||||
|
|
@ -1669,8 +1652,6 @@
|
|||
regulator_set_voltage
|
||||
regulator_set_voltage_sel_regmap
|
||||
regulator_set_voltage_time_sel
|
||||
regulatory_hint
|
||||
regulatory_set_wiphy_regd_sync
|
||||
release_firmware
|
||||
__release_region
|
||||
remap_pfn_range
|
||||
|
|
@ -1705,6 +1686,7 @@
|
|||
rproc_add_carveout
|
||||
rproc_alloc
|
||||
rproc_coredump_add_segment
|
||||
rproc_da_to_va
|
||||
rproc_del
|
||||
rproc_elf_find_loaded_rsc_table
|
||||
rproc_elf_get_boot_addr
|
||||
|
|
@ -2294,11 +2276,6 @@
|
|||
__warn_printk
|
||||
watchdog_init_timeout
|
||||
watchdog_set_restart_priority
|
||||
wiphy_apply_custom_regulatory
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_register
|
||||
wiphy_unregister
|
||||
wireless_send_event
|
||||
woken_wake_function
|
||||
ww_mutex_lock
|
||||
|
|
@ -2314,6 +2291,7 @@
|
|||
xdp_do_flush
|
||||
xdp_do_redirect
|
||||
xdp_master_redirect
|
||||
xdp_return_frame
|
||||
xdp_rxq_info_is_reg
|
||||
__xdp_rxq_info_reg
|
||||
xdp_rxq_info_reg_mem_model
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
for_each_kernel_tracepoint
|
||||
freq_qos_add_notifier
|
||||
freq_qos_remove_notifier
|
||||
get_wchan
|
||||
gov_attr_set_get
|
||||
gpiod_to_chip
|
||||
have_governor_per_policy
|
||||
|
|
@ -69,6 +70,13 @@
|
|||
tcf_exts_dump_stats
|
||||
tcf_exts_validate
|
||||
tcf_queue_work
|
||||
__traceiter_android_vh_do_futex
|
||||
__traceiter_android_vh_futex_sleep_start
|
||||
__traceiter_android_vh_futex_wait_end
|
||||
__traceiter_android_vh_futex_wait_start
|
||||
__traceiter_android_vh_futex_wake_this
|
||||
__traceiter_android_vh_futex_wake_traverse_plist
|
||||
__traceiter_android_vh_futex_wake_up_q_finish
|
||||
__traceiter_android_vh_record_mutex_lock_starttime
|
||||
__traceiter_android_vh_record_pcpu_rwsem_starttime
|
||||
__traceiter_android_vh_record_rtmutex_lock_starttime
|
||||
|
|
@ -98,6 +106,11 @@
|
|||
__traceiter_android_vh_rwsem_opt_spin_finish
|
||||
__traceiter_android_vh_rwsem_opt_spin_start
|
||||
__traceiter_android_vh_rwsem_wake_finish
|
||||
__traceiter_sched_stat_blocked
|
||||
__traceiter_sched_stat_iowait
|
||||
__traceiter_sched_stat_sleep
|
||||
__traceiter_sched_stat_wait
|
||||
__traceiter_sched_waking
|
||||
__tracepoint_android_vh_alter_mutex_list_add
|
||||
__tracepoint_android_vh_binder_free_proc
|
||||
__tracepoint_android_vh_binder_has_work_ilocked
|
||||
|
|
@ -110,6 +123,13 @@
|
|||
__tracepoint_android_vh_binder_select_worklist_ilocked
|
||||
__tracepoint_android_vh_binder_thread_read
|
||||
__tracepoint_android_vh_binder_thread_release
|
||||
__tracepoint_android_vh_do_futex
|
||||
__tracepoint_android_vh_futex_sleep_start
|
||||
__tracepoint_android_vh_futex_wait_end
|
||||
__tracepoint_android_vh_futex_wait_start
|
||||
__tracepoint_android_vh_futex_wake_this
|
||||
__tracepoint_android_vh_futex_wake_traverse_plist
|
||||
__tracepoint_android_vh_futex_wake_up_q_finish
|
||||
__tracepoint_android_vh_mutex_can_spin_on_owner
|
||||
__tracepoint_android_vh_mutex_opt_spin_finish
|
||||
__tracepoint_android_vh_mutex_opt_spin_start
|
||||
|
|
@ -118,6 +138,11 @@
|
|||
__tracepoint_android_vh_rwsem_opt_spin_finish
|
||||
__tracepoint_android_vh_rwsem_opt_spin_start
|
||||
__tracepoint_android_vh_rwsem_wake_finish
|
||||
__tracepoint_sched_stat_blocked
|
||||
__tracepoint_sched_stat_iowait
|
||||
__tracepoint_sched_stat_sleep
|
||||
__tracepoint_sched_stat_wait
|
||||
__tracepoint_sched_waking
|
||||
typec_mux_get_drvdata
|
||||
unregister_memory_notifier
|
||||
unregister_tcf_proto_ops
|
||||
|
|
@ -125,3 +150,4 @@
|
|||
wait_for_completion_io_timeout
|
||||
wait_for_completion_killable_timeout
|
||||
wakeup_source_remove
|
||||
wq_worker_comm
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
__alloc_pages
|
||||
alloc_pages_exact
|
||||
__alloc_percpu
|
||||
__alloc_percpu_gfp
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
alt_cb_patch_nops
|
||||
|
|
@ -23,6 +24,8 @@
|
|||
amba_driver_unregister
|
||||
android_rvh_probe_register
|
||||
anon_inode_getfd
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
__arch_clear_user
|
||||
__arch_copy_from_user
|
||||
__arch_copy_to_user
|
||||
|
|
@ -108,8 +111,8 @@
|
|||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
bpf_trace_run10
|
||||
bpf_trace_run1
|
||||
bpf_trace_run10
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
|
|
@ -127,6 +130,7 @@
|
|||
bus_unregister
|
||||
bus_unregister_notifier
|
||||
cache_line_size
|
||||
call_rcu
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
cancel_work_sync
|
||||
|
|
@ -137,35 +141,6 @@
|
|||
cdev_device_add
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_chandef_create
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_connect_done
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_external_auth_request
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_get_bss
|
||||
cfg80211_ibss_joined
|
||||
cfg80211_inform_bss_frame_data
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_new_sta
|
||||
cfg80211_port_authorized
|
||||
cfg80211_put_bss
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_vendor_cmd_reply
|
||||
__check_object_size
|
||||
__class_create
|
||||
class_destroy
|
||||
|
|
@ -260,9 +235,12 @@
|
|||
cpu_pm_unregister_notifier
|
||||
__cpu_possible_mask
|
||||
__cpu_present_mask
|
||||
cpu_scale
|
||||
cpus_read_lock
|
||||
cpus_read_unlock
|
||||
cpu_subsys
|
||||
crc32_be
|
||||
crc32_le
|
||||
crc8
|
||||
crc8_populate_msb
|
||||
crypto_aead_decrypt
|
||||
|
|
@ -278,6 +256,7 @@
|
|||
crypto_comp_decompress
|
||||
crypto_destroy_tfm
|
||||
crypto_has_alg
|
||||
__crypto_memneq
|
||||
crypto_register_notifier
|
||||
crypto_register_shash
|
||||
crypto_req_done
|
||||
|
|
@ -290,7 +269,9 @@
|
|||
crypto_skcipher_setkey
|
||||
crypto_unregister_notifier
|
||||
crypto_unregister_shash
|
||||
__crypto_xor
|
||||
csum_ipv6_magic
|
||||
csum_partial
|
||||
csum_tcpudp_nofold
|
||||
_ctype
|
||||
debugfs_attr_read
|
||||
|
|
@ -309,6 +290,7 @@
|
|||
debugfs_create_x32
|
||||
debugfs_lookup
|
||||
debugfs_remove
|
||||
debugfs_rename
|
||||
dec_zone_page_state
|
||||
default_llseek
|
||||
deferred_free
|
||||
|
|
@ -319,12 +301,15 @@
|
|||
desc_to_gpio
|
||||
destroy_workqueue
|
||||
dev_addr_mod
|
||||
dev_alloc_name
|
||||
__dev_change_net_namespace
|
||||
dev_close
|
||||
_dev_crit
|
||||
dev_driver_string
|
||||
_dev_emerg
|
||||
_dev_err
|
||||
dev_err_probe
|
||||
dev_fetch_sw_netstats
|
||||
devfreq_add_device
|
||||
devfreq_add_governor
|
||||
devfreq_monitor_resume
|
||||
|
|
@ -337,13 +322,17 @@
|
|||
devfreq_unregister_opp_notifier
|
||||
devfreq_update_interval
|
||||
dev_fwnode
|
||||
__dev_get_by_index
|
||||
dev_get_by_index
|
||||
dev_get_by_name
|
||||
device_add
|
||||
device_add_disk
|
||||
device_add_groups
|
||||
device_create
|
||||
device_create_file
|
||||
device_create_managed_software_node
|
||||
device_create_with_groups
|
||||
device_del
|
||||
device_destroy
|
||||
device_find_child
|
||||
device_for_each_child
|
||||
|
|
@ -362,6 +351,7 @@
|
|||
device_register
|
||||
device_remove_file
|
||||
device_remove_groups
|
||||
device_rename
|
||||
device_set_wakeup_capable
|
||||
device_set_wakeup_enable
|
||||
device_unregister
|
||||
|
|
@ -738,6 +728,9 @@
|
|||
enable_irq
|
||||
enable_percpu_irq
|
||||
errno_to_blk_status
|
||||
ether_setup
|
||||
eth_mac_addr
|
||||
ethtool_op_get_link
|
||||
eth_type_trans
|
||||
eventfd_ctx_fdget
|
||||
eventfd_ctx_put
|
||||
|
|
@ -800,6 +793,7 @@
|
|||
gcd
|
||||
generic_file_llseek
|
||||
generic_handle_domain_irq
|
||||
genlmsg_multicast_allns
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
|
|
@ -818,6 +812,8 @@
|
|||
get_cpu_iowait_time_us
|
||||
get_device
|
||||
__get_free_pages
|
||||
get_net_ns_by_fd
|
||||
get_net_ns_by_pid
|
||||
get_pid_task
|
||||
get_random_bytes
|
||||
get_random_u16
|
||||
|
|
@ -875,6 +871,9 @@
|
|||
hrtimer_sleeper_start_expires
|
||||
hrtimer_start_range_ns
|
||||
hrtimer_try_to_cancel
|
||||
__hw_addr_init
|
||||
__hw_addr_sync
|
||||
__hw_addr_unsync
|
||||
hwrng_register
|
||||
hwrng_unregister
|
||||
i2c_adapter_type
|
||||
|
|
@ -904,11 +903,9 @@
|
|||
idr_destroy
|
||||
idr_find
|
||||
idr_for_each
|
||||
idr_get_next
|
||||
idr_preload
|
||||
idr_remove
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_get_channel_khz
|
||||
ieee802154_alloc_hw
|
||||
ieee802154_free_hw
|
||||
ieee802154_register_hw
|
||||
|
|
@ -922,6 +919,7 @@
|
|||
in6_pton
|
||||
in_aton
|
||||
inc_zone_page_state
|
||||
inet_csk_get_port
|
||||
init_dummy_netdev
|
||||
init_net
|
||||
init_pid_ns
|
||||
|
|
@ -929,6 +927,7 @@
|
|||
__init_swait_queue_head
|
||||
init_task
|
||||
init_timer_key
|
||||
init_uts_ns
|
||||
init_wait_entry
|
||||
__init_waitqueue_head
|
||||
input_alloc_absinfo
|
||||
|
|
@ -1011,15 +1010,20 @@
|
|||
irq_set_irq_wake
|
||||
irq_to_desc
|
||||
is_vmalloc_addr
|
||||
jiffies64_to_msecs
|
||||
jiffies
|
||||
jiffies64_to_msecs
|
||||
jiffies_to_msecs
|
||||
jiffies_to_usecs
|
||||
kasan_flag_enabled
|
||||
kasprintf
|
||||
kernel_cpustat
|
||||
kernel_kobj
|
||||
kernel_param_lock
|
||||
kernel_param_unlock
|
||||
kernel_restart
|
||||
key_create_or_update
|
||||
key_put
|
||||
keyring_alloc
|
||||
__kfifo_alloc
|
||||
__kfifo_free
|
||||
__kfifo_in
|
||||
|
|
@ -1028,6 +1032,7 @@
|
|||
__kfifo_out_peek
|
||||
kfree
|
||||
kfree_sensitive
|
||||
kfree_skb_list_reason
|
||||
kfree_skb_reason
|
||||
kill_fasync
|
||||
kimage_voffset
|
||||
|
|
@ -1091,11 +1096,13 @@
|
|||
kthread_unpark
|
||||
kthread_worker_fn
|
||||
ktime_get
|
||||
ktime_get_coarse_with_offset
|
||||
ktime_get_mono_fast_ns
|
||||
ktime_get_raw
|
||||
ktime_get_raw_ts64
|
||||
ktime_get_real_seconds
|
||||
ktime_get_real_ts64
|
||||
ktime_get_seconds
|
||||
ktime_get_snapshot
|
||||
ktime_get_ts64
|
||||
ktime_get_with_offset
|
||||
|
|
@ -1138,8 +1145,8 @@
|
|||
memparse
|
||||
memremap
|
||||
mem_section
|
||||
memset64
|
||||
memset
|
||||
memset64
|
||||
__memset_io
|
||||
memstart_addr
|
||||
memunmap
|
||||
|
|
@ -1190,22 +1197,37 @@
|
|||
__napi_schedule
|
||||
napi_schedule_prep
|
||||
__netdev_alloc_skb
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_set_default_ethtool_ops
|
||||
netdev_state_change
|
||||
netdev_update_features
|
||||
netif_carrier_off
|
||||
netif_carrier_on
|
||||
netif_napi_add_weight
|
||||
__netif_napi_del
|
||||
netif_receive_skb
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_tx_stop_all_queues
|
||||
netif_tx_wake_queue
|
||||
netlink_broadcast
|
||||
__netlink_kernel_create
|
||||
netlink_kernel_release
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_ns_type_operations
|
||||
net_ratelimit
|
||||
nla_find
|
||||
nla_memcpy
|
||||
__nla_parse
|
||||
nla_put
|
||||
nla_put_64bit
|
||||
nla_put_nohdr
|
||||
nla_reserve
|
||||
nla_strscpy
|
||||
__nla_validate
|
||||
__nlmsg_put
|
||||
nonseekable_open
|
||||
noop_llseek
|
||||
|
|
@ -1461,8 +1483,11 @@
|
|||
proc_mkdir_data
|
||||
proc_remove
|
||||
pskb_expand_head
|
||||
__pskb_pull_tail
|
||||
___pskb_trim
|
||||
put_device
|
||||
put_disk
|
||||
__put_net
|
||||
put_pid
|
||||
put_sg_io_hdr
|
||||
__put_task_struct
|
||||
|
|
@ -1506,6 +1531,7 @@
|
|||
rb_next
|
||||
rb_prev
|
||||
rb_replace_node
|
||||
rcu_barrier
|
||||
__rcu_read_lock
|
||||
__rcu_read_unlock
|
||||
rdev_get_drvdata
|
||||
|
|
@ -1529,6 +1555,7 @@
|
|||
register_netdevice
|
||||
register_netdevice_notifier
|
||||
register_oom_notifier
|
||||
register_pernet_device
|
||||
register_pernet_subsys
|
||||
register_pm_notifier
|
||||
register_reboot_notifier
|
||||
|
|
@ -1571,9 +1598,6 @@
|
|||
regulator_set_voltage
|
||||
regulator_set_voltage_sel_regmap
|
||||
regulator_unregister
|
||||
regulatory_hint
|
||||
regulatory_set_wiphy_regd
|
||||
regulatory_set_wiphy_regd_sync
|
||||
release_firmware
|
||||
__release_region
|
||||
remap_pfn_range
|
||||
|
|
@ -1588,12 +1612,24 @@
|
|||
request_threaded_irq
|
||||
return_address
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
rfkill_init_sw_state
|
||||
rfkill_register
|
||||
rfkill_resume_polling
|
||||
rfkill_set_hw_state_reason
|
||||
rfkill_unregister
|
||||
rhashtable_free_and_destroy
|
||||
rhashtable_insert_slow
|
||||
rhltable_init
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
__root_device_register
|
||||
root_device_unregister
|
||||
round_jiffies
|
||||
round_jiffies_relative
|
||||
round_jiffies_up
|
||||
rps_needed
|
||||
rtc_class_close
|
||||
rtc_class_open
|
||||
|
|
@ -1693,11 +1729,20 @@
|
|||
single_open
|
||||
single_open_size
|
||||
single_release
|
||||
skb_add_rx_frag
|
||||
skb_checksum
|
||||
skb_checksum_help
|
||||
skb_clone
|
||||
skb_clone_sk
|
||||
skb_complete_wifi_ack
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
skb_copy_expand
|
||||
skb_dequeue
|
||||
skb_dequeue_tail
|
||||
skb_ensure_writable
|
||||
__skb_get_hash
|
||||
__skb_gso_segment
|
||||
skb_pull
|
||||
skb_push
|
||||
skb_put
|
||||
|
|
@ -1780,6 +1825,8 @@
|
|||
snd_soc_unregister_component
|
||||
snprintf
|
||||
soc_device_register
|
||||
__sock_create
|
||||
sock_release
|
||||
sock_wfree
|
||||
softnet_data
|
||||
sort
|
||||
|
|
@ -1835,8 +1882,10 @@
|
|||
strstr
|
||||
subsys_system_register
|
||||
suspend_set_ops
|
||||
__sw_hweight16
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
__sw_hweight8
|
||||
sync_blockdev
|
||||
sync_file_create
|
||||
sync_file_get_fence
|
||||
|
|
@ -1864,8 +1913,10 @@
|
|||
sysfs_streq
|
||||
sysfs_update_group
|
||||
sysrq_mask
|
||||
system_freezable_wq
|
||||
system_highpri_wq
|
||||
system_long_wq
|
||||
system_power_efficient_wq
|
||||
system_state
|
||||
system_unbound_wq
|
||||
system_wq
|
||||
|
|
@ -1874,6 +1925,7 @@
|
|||
tasklet_init
|
||||
tasklet_kill
|
||||
__tasklet_schedule
|
||||
tasklet_setup
|
||||
tasklet_unlock_wait
|
||||
__task_pid_nr_ns
|
||||
tcpci_get_tcpm_port
|
||||
|
|
@ -2021,9 +2073,11 @@
|
|||
unregister_inet6addr_notifier
|
||||
unregister_inetaddr_notifier
|
||||
unregister_netdev
|
||||
unregister_netdevice_many
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_oom_notifier
|
||||
unregister_pernet_device
|
||||
unregister_pernet_subsys
|
||||
unregister_pm_notifier
|
||||
unregister_reboot_notifier
|
||||
|
|
@ -2129,6 +2183,7 @@
|
|||
vb2_streamon
|
||||
vb2_vmalloc_memops
|
||||
vb2_wait_for_all_buffers
|
||||
verify_pkcs7_signature
|
||||
vfree
|
||||
video_devdata
|
||||
video_device_alloc
|
||||
|
|
@ -2178,10 +2233,7 @@
|
|||
watchdog_register_device
|
||||
watchdog_set_restart_priority
|
||||
watchdog_unregister_device
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_register
|
||||
wiphy_unregister
|
||||
wireless_nlevent_flush
|
||||
woken_wake_function
|
||||
work_busy
|
||||
__xa_alloc
|
||||
|
|
|
|||
|
|
@ -154,7 +154,6 @@
|
|||
bpf_trace_run8
|
||||
bpf_trace_run9
|
||||
bpf_warn_invalid_xdp_action
|
||||
bridge_tunnel_header
|
||||
bt_accept_dequeue
|
||||
bt_accept_enqueue
|
||||
bt_accept_unlink
|
||||
|
|
@ -243,104 +242,6 @@
|
|||
cdev_device_add
|
||||
cdev_device_del
|
||||
cdev_init
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
cfg80211_any_usable_channels
|
||||
cfg80211_assoc_comeback
|
||||
cfg80211_assoc_failure
|
||||
cfg80211_auth_timeout
|
||||
cfg80211_background_cac_abort
|
||||
cfg80211_bss_color_notify
|
||||
cfg80211_bss_flush
|
||||
cfg80211_bss_iter
|
||||
cfg80211_cac_event
|
||||
cfg80211_calculate_bitrate
|
||||
cfg80211_chandef_compatible
|
||||
cfg80211_chandef_create
|
||||
cfg80211_chandef_dfs_required
|
||||
cfg80211_chandef_usable
|
||||
cfg80211_chandef_valid
|
||||
cfg80211_check_combinations
|
||||
cfg80211_check_station_change
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_ch_switch_started_notify
|
||||
cfg80211_classify8021d
|
||||
cfg80211_connect_done
|
||||
cfg80211_conn_failed
|
||||
cfg80211_control_port_tx_status
|
||||
cfg80211_cqm_beacon_loss_notify
|
||||
cfg80211_cqm_pktloss_notify
|
||||
cfg80211_cqm_rssi_notify
|
||||
cfg80211_cqm_txe_notify
|
||||
cfg80211_crit_proto_stopped
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_external_auth_request
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_find_vendor_elem
|
||||
cfg80211_free_nan_func
|
||||
cfg80211_ft_event
|
||||
cfg80211_get_bss
|
||||
cfg80211_get_drvinfo
|
||||
cfg80211_get_ies_channel_number
|
||||
cfg80211_get_iftype_ext_capa
|
||||
cfg80211_get_p2p_attr
|
||||
cfg80211_get_station
|
||||
cfg80211_gtk_rekey_notify
|
||||
cfg80211_ibss_joined
|
||||
cfg80211_iftype_allowed
|
||||
cfg80211_inform_bss_data
|
||||
cfg80211_inform_bss_frame_data
|
||||
cfg80211_is_element_inherited
|
||||
cfg80211_iter_combinations
|
||||
cfg80211_merge_profile
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_nan_func_terminated
|
||||
cfg80211_nan_match
|
||||
cfg80211_new_sta
|
||||
cfg80211_notify_new_peer_candidate
|
||||
cfg80211_pmksa_candidate_notify
|
||||
cfg80211_pmsr_complete
|
||||
cfg80211_pmsr_report
|
||||
cfg80211_port_authorized
|
||||
cfg80211_probe_status
|
||||
cfg80211_put_bss
|
||||
__cfg80211_radar_event
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_ref_bss
|
||||
cfg80211_reg_can_beacon
|
||||
cfg80211_reg_can_beacon_relax
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_report_obss_beacon_khz
|
||||
cfg80211_report_wowlan_wakeup
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_assoc_resp
|
||||
cfg80211_rx_control_port
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_rx_mlme_mgmt
|
||||
cfg80211_rx_spurious_frame
|
||||
cfg80211_rx_unexpected_4addr_frame
|
||||
cfg80211_rx_unprot_mlme_mgmt
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
cfg80211_sched_scan_stopped_locked
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_send_layer2_update
|
||||
cfg80211_shutdown_all_interfaces
|
||||
cfg80211_sinfo_alloc_tid_stats
|
||||
cfg80211_sta_opmode_change_notify
|
||||
cfg80211_stop_iface
|
||||
cfg80211_tdls_oper_request
|
||||
cfg80211_tx_mgmt_expired
|
||||
cfg80211_tx_mlme_mgmt
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_update_owe_info_event
|
||||
cfg80211_vendor_cmd_get_sender
|
||||
cfg80211_vendor_cmd_reply
|
||||
cgroup_path_ns
|
||||
cgroup_taskset_first
|
||||
cgroup_taskset_next
|
||||
|
|
@ -626,6 +527,7 @@
|
|||
dev_get_flags
|
||||
dev_get_regmap
|
||||
dev_get_stats
|
||||
dev_get_tstats64
|
||||
device_add
|
||||
device_add_disk
|
||||
device_add_groups
|
||||
|
|
@ -1157,6 +1059,7 @@
|
|||
eth_mac_addr
|
||||
ethnl_cable_test_fault_length
|
||||
ethnl_cable_test_result
|
||||
eth_platform_get_mac_address
|
||||
eth_prepare_mac_addr_change
|
||||
ethtool_convert_legacy_u32_to_link_mode
|
||||
ethtool_convert_link_mode_to_legacy_u32
|
||||
|
|
@ -1231,7 +1134,6 @@
|
|||
freq_qos_add_request
|
||||
freq_qos_remove_request
|
||||
freq_qos_update_request
|
||||
freq_reg_info
|
||||
fsync_bdev
|
||||
ftrace_dump
|
||||
fwnode_find_reference
|
||||
|
|
@ -1319,7 +1221,6 @@
|
|||
get_unused_fd_flags
|
||||
get_user_ifreq
|
||||
get_user_pages
|
||||
get_wiphy_regdom
|
||||
get_zeroed_page
|
||||
gh_rm_call
|
||||
gh_rm_notifier_register
|
||||
|
|
@ -1500,6 +1401,9 @@
|
|||
icc_nodes_remove
|
||||
icc_provider_add
|
||||
icc_provider_del
|
||||
icc_provider_deregister
|
||||
icc_provider_init
|
||||
icc_provider_register
|
||||
icc_put
|
||||
icc_set_bw
|
||||
icc_set_tag
|
||||
|
|
@ -1517,152 +1421,6 @@
|
|||
idr_preload
|
||||
idr_remove
|
||||
idr_replace
|
||||
ieee80211_alloc_hw_nm
|
||||
ieee80211_amsdu_to_8023s
|
||||
ieee80211_ap_probereq_get
|
||||
ieee80211_ave_rssi
|
||||
ieee80211_beacon_cntdwn_is_complete
|
||||
ieee80211_beacon_get_template
|
||||
ieee80211_beacon_get_tim
|
||||
ieee80211_beacon_loss
|
||||
ieee80211_beacon_set_cntdwn
|
||||
ieee80211_beacon_update_cntdwn
|
||||
ieee80211_bss_get_elem
|
||||
ieee80211_calc_rx_airtime
|
||||
ieee80211_calc_tx_airtime
|
||||
ieee80211_chandef_to_operating_class
|
||||
ieee80211_channel_switch_disconnect
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_chswitch_done
|
||||
ieee80211_color_change_finish
|
||||
ieee80211_connection_loss
|
||||
ieee80211_cqm_beacon_loss_notify
|
||||
ieee80211_cqm_rssi_notify
|
||||
ieee80211_csa_finish
|
||||
ieee80211_ctstoself_duration
|
||||
ieee80211_ctstoself_get
|
||||
ieee80211_data_to_8023_exthdr
|
||||
ieee80211_disable_rssi_reports
|
||||
ieee80211_disconnect
|
||||
ieee80211_enable_rssi_reports
|
||||
ieee80211_find_sta
|
||||
ieee80211_find_sta_by_ifaddr
|
||||
ieee80211_find_sta_by_link_addrs
|
||||
ieee80211_free_hw
|
||||
ieee80211_free_txskb
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_generic_frame_duration
|
||||
ieee80211_get_bssid
|
||||
ieee80211_get_buffered_bc
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_get_fils_discovery_tmpl
|
||||
ieee80211_get_hdrlen_from_skb
|
||||
ieee80211_get_key_rx_seq
|
||||
ieee80211_get_mesh_hdrlen
|
||||
ieee80211_get_num_supported_channels
|
||||
ieee80211_get_response_rate
|
||||
ieee80211_get_tkip_p1k_iv
|
||||
ieee80211_get_tkip_p2k
|
||||
ieee80211_get_tkip_rx_p1k
|
||||
ieee80211_get_tx_rates
|
||||
ieee80211_get_unsol_bcast_probe_resp_tmpl
|
||||
ieee80211_get_vht_max_nss
|
||||
ieee80211_gtk_rekey_add
|
||||
ieee80211_gtk_rekey_notify
|
||||
ieee80211_hdrlen
|
||||
ieee80211_hw_restart_disconnect
|
||||
ieee80211_ie_split_ric
|
||||
ieee80211_iterate_active_interfaces_atomic
|
||||
ieee80211_iterate_active_interfaces_mtx
|
||||
ieee80211_iterate_interfaces
|
||||
ieee80211_iterate_stations
|
||||
ieee80211_iterate_stations_atomic
|
||||
ieee80211_iter_chan_contexts_atomic
|
||||
ieee80211_iter_keys
|
||||
ieee80211_iter_keys_rcu
|
||||
ieee80211_key_mic_failure
|
||||
ieee80211_key_replay
|
||||
ieee80211_manage_rx_ba_offl
|
||||
ieee80211_mandatory_rates
|
||||
ieee80211_mark_rx_ba_filtered_frames
|
||||
ieee80211_nan_func_match
|
||||
ieee80211_nan_func_terminated
|
||||
ieee80211_next_txq
|
||||
ieee80211_nullfunc_get
|
||||
ieee80211_operating_class_to_band
|
||||
ieee80211_parse_p2p_noa
|
||||
ieee80211_probereq_get
|
||||
ieee80211_proberesp_get
|
||||
ieee80211_pspoll_get
|
||||
ieee80211_queue_delayed_work
|
||||
ieee80211_queue_stopped
|
||||
ieee80211_queue_work
|
||||
ieee80211_radar_detected
|
||||
ieee80211_radiotap_iterator_init
|
||||
ieee80211_radiotap_iterator_next
|
||||
ieee80211_rate_control_register
|
||||
ieee80211_rate_control_unregister
|
||||
ieee80211_ready_on_channel
|
||||
ieee80211_register_hw
|
||||
ieee80211_remain_on_channel_expired
|
||||
ieee80211_remove_key
|
||||
ieee80211_report_low_ack
|
||||
ieee80211_report_wowlan_wakeup
|
||||
ieee80211_request_smps
|
||||
ieee80211_reserve_tid
|
||||
ieee80211_restart_hw
|
||||
ieee80211_resume_disconnect
|
||||
ieee80211_rts_duration
|
||||
ieee80211_rts_get
|
||||
ieee80211_rx_ba_timer_expired
|
||||
ieee80211_rx_irqsafe
|
||||
ieee80211_rx_list
|
||||
ieee80211_rx_napi
|
||||
ieee80211_s1g_channel_width
|
||||
ieee80211_scan_completed
|
||||
ieee80211_sched_scan_results
|
||||
ieee80211_sched_scan_stopped
|
||||
__ieee80211_schedule_txq
|
||||
ieee80211_send_bar
|
||||
ieee80211_send_eosp_nullfunc
|
||||
ieee80211_set_active_links
|
||||
ieee80211_set_active_links_async
|
||||
ieee80211_set_key_rx_seq
|
||||
ieee80211_sta_block_awake
|
||||
ieee80211_sta_eosp
|
||||
ieee80211_sta_pspoll
|
||||
ieee80211_sta_ps_transition
|
||||
ieee80211_sta_recalc_aggregates
|
||||
ieee80211_sta_register_airtime
|
||||
ieee80211_start_tx_ba_cb_irqsafe
|
||||
ieee80211_start_tx_ba_session
|
||||
ieee80211_sta_set_buffered
|
||||
ieee80211_sta_uapsd_trigger
|
||||
ieee80211_stop_queue
|
||||
ieee80211_stop_queues
|
||||
ieee80211_stop_rx_ba_session
|
||||
ieee80211_stop_tx_ba_cb_irqsafe
|
||||
ieee80211_stop_tx_ba_session
|
||||
ieee80211_tdls_oper_request
|
||||
ieee80211_tkip_add_iv
|
||||
ieee80211_tx_dequeue
|
||||
ieee80211_tx_prepare_skb
|
||||
ieee80211_txq_airtime_check
|
||||
ieee80211_txq_get_depth
|
||||
ieee80211_txq_may_transmit
|
||||
ieee80211_txq_schedule_start
|
||||
ieee80211_tx_rate_update
|
||||
ieee80211_tx_status_8023
|
||||
ieee80211_tx_status
|
||||
ieee80211_tx_status_ext
|
||||
ieee80211_tx_status_irqsafe
|
||||
ieee80211_unregister_hw
|
||||
ieee80211_unreserve_tid
|
||||
ieee80211_update_mu_groups
|
||||
ieee80211_update_p2p_noa
|
||||
ieee80211_vif_to_wdev
|
||||
ieee80211_wake_queue
|
||||
ieee80211_wake_queues
|
||||
ieee802154_alloc_hw
|
||||
ieee802154_configure_durations
|
||||
ieee802154_free_hw
|
||||
|
|
@ -1679,7 +1437,6 @@
|
|||
ieee802154_xmit_complete
|
||||
ieee802154_xmit_error
|
||||
ieee802154_xmit_hw_error
|
||||
ieeee80211_obss_color_collision_notify
|
||||
iio_buffer_init
|
||||
iio_buffer_put
|
||||
iio_device_attach_buffer
|
||||
|
|
@ -1910,6 +1667,7 @@
|
|||
__kmalloc
|
||||
kmalloc_caches
|
||||
kmalloc_large
|
||||
kmalloc_large_node
|
||||
kmalloc_node_trace
|
||||
__kmalloc_node_track_caller
|
||||
kmalloc_trace
|
||||
|
|
@ -2077,6 +1835,7 @@
|
|||
mdiobus_modify_changed
|
||||
__mdiobus_read
|
||||
mdiobus_read
|
||||
__mdiobus_register
|
||||
mdiobus_unregister
|
||||
__mdiobus_write
|
||||
mdiobus_write
|
||||
|
|
@ -2208,6 +1967,7 @@
|
|||
netif_schedule_queue
|
||||
netif_set_real_num_rx_queues
|
||||
netif_set_real_num_tx_queues
|
||||
netif_set_tso_max_size
|
||||
__netif_set_xps_queue
|
||||
netif_stacked_transfer_operstate
|
||||
netif_tx_lock
|
||||
|
|
@ -2352,6 +2112,7 @@
|
|||
of_machine_is_compatible
|
||||
of_match_device
|
||||
of_match_node
|
||||
__of_mdiobus_register
|
||||
of_modalias_node
|
||||
of_n_addr_cells
|
||||
of_node_name_eq
|
||||
|
|
@ -2488,6 +2249,7 @@
|
|||
perf_trace_run_bpf_submit
|
||||
phy_attached_info
|
||||
phy_calibrate
|
||||
phy_do_ioctl_running
|
||||
phy_drivers_register
|
||||
phy_drivers_unregister
|
||||
phy_error
|
||||
|
|
@ -2532,6 +2294,7 @@
|
|||
phy_power_on
|
||||
phy_read_mmd
|
||||
phy_set_mode_ext
|
||||
phy_suspend
|
||||
phy_trigger_machine
|
||||
phy_write_mmd
|
||||
pick_highest_pushable_task
|
||||
|
|
@ -2701,7 +2464,6 @@
|
|||
radix_tree_lookup
|
||||
radix_tree_next_chunk
|
||||
radix_tree_tagged
|
||||
rate_control_set_rates
|
||||
___ratelimit
|
||||
rational_best_approximation
|
||||
raw_notifier_call_chain
|
||||
|
|
@ -2786,7 +2548,6 @@
|
|||
regcache_mark_dirty
|
||||
regcache_sync
|
||||
regcache_sync_region
|
||||
reg_initiator_name
|
||||
__register_blkdev
|
||||
register_candev
|
||||
__register_chrdev
|
||||
|
|
@ -2831,7 +2592,6 @@
|
|||
regmap_read
|
||||
regmap_update_bits_base
|
||||
regmap_write
|
||||
reg_query_regdb_wmm
|
||||
regulator_allow_bypass
|
||||
regulator_bulk_disable
|
||||
regulator_bulk_enable
|
||||
|
|
@ -2864,10 +2624,6 @@
|
|||
regulator_set_voltage
|
||||
regulator_set_voltage_sel_regmap
|
||||
regulator_unregister_notifier
|
||||
regulatory_hint
|
||||
regulatory_pre_cac_allowed
|
||||
regulatory_set_wiphy_regd
|
||||
regulatory_set_wiphy_regd_sync
|
||||
release_firmware
|
||||
__release_region
|
||||
release_sock
|
||||
|
|
@ -2894,7 +2650,6 @@
|
|||
reset_control_release
|
||||
reset_control_reset
|
||||
return_address
|
||||
rfc1042_header
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
|
|
@ -3236,6 +2991,7 @@
|
|||
snd_usb_endpoint_close
|
||||
snd_usb_endpoint_open
|
||||
snd_usb_endpoint_prepare
|
||||
snd_usb_power_domain_set
|
||||
snprintf
|
||||
soc_device_register
|
||||
soc_device_unregister
|
||||
|
|
@ -3878,6 +3634,7 @@
|
|||
usb_add_phy_dev
|
||||
usb_alloc_coherent
|
||||
usb_alloc_urb
|
||||
usb_altnum_to_altsetting
|
||||
usb_anchor_urb
|
||||
usb_assign_descriptors
|
||||
usb_autopm_get_interface
|
||||
|
|
@ -3899,6 +3656,8 @@
|
|||
usb_disabled
|
||||
usb_driver_claim_interface
|
||||
usb_driver_release_interface
|
||||
usb_driver_set_configuration
|
||||
usb_enable_lpm
|
||||
usb_ep_alloc_request
|
||||
usb_ep_autoconfig
|
||||
usb_ep_dequeue
|
||||
|
|
@ -3917,6 +3676,7 @@
|
|||
usb_get_dev
|
||||
usb_get_from_anchor
|
||||
usb_get_intf
|
||||
usb_get_urb
|
||||
usb_ifnum_to_if
|
||||
usb_interface_id
|
||||
usb_kill_urb
|
||||
|
|
@ -3930,6 +3690,7 @@
|
|||
usb_register_driver
|
||||
usb_register_notify
|
||||
usb_remove_phy
|
||||
usb_reset_configuration
|
||||
usb_role_switch_find_by_fwnode
|
||||
usb_role_switch_get_drvdata
|
||||
usb_role_switch_register
|
||||
|
|
@ -3960,8 +3721,10 @@
|
|||
usb_show_dynids
|
||||
usb_speed_string
|
||||
usb_store_new_id
|
||||
usb_string
|
||||
usb_string_id
|
||||
usb_submit_urb
|
||||
usb_unlink_urb
|
||||
usb_unpoison_urb
|
||||
usb_unregister_notify
|
||||
__usecs_to_jiffies
|
||||
|
|
@ -4138,17 +3901,6 @@
|
|||
wakeup_source_unregister
|
||||
__wake_up_sync_key
|
||||
__warn_printk
|
||||
wdev_chandef
|
||||
wdev_to_ieee80211_vif
|
||||
wiphy_apply_custom_regulatory
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_read_of_freq_limits
|
||||
wiphy_register
|
||||
wiphy_rfkill_set_hw_state_reason
|
||||
wiphy_rfkill_start_polling
|
||||
wiphy_to_ieee80211_hw
|
||||
wiphy_unregister
|
||||
wireless_nlevent_flush
|
||||
wireless_send_event
|
||||
woken_wake_function
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
[abi_symbol_list]
|
||||
# commonly used symbols
|
||||
alloc_etherdev_mqs
|
||||
alloc_netdev_mqs
|
||||
__alloc_pages
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
|
|
@ -11,15 +12,19 @@
|
|||
__arch_copy_to_user
|
||||
arm64_use_ng_mappings
|
||||
bcmp
|
||||
bpf_trace_run1
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
bpf_trace_run5
|
||||
bpf_trace_run6
|
||||
bt_err
|
||||
bt_info
|
||||
bt_warn
|
||||
build_skb
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
cancel_work_sync
|
||||
cfg80211_chandef_valid
|
||||
__check_object_size
|
||||
__class_create
|
||||
class_destroy
|
||||
|
|
@ -35,6 +40,8 @@
|
|||
cpu_hwcaps
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
crc32_le
|
||||
csum_partial
|
||||
debugfs_attr_read
|
||||
debugfs_attr_write
|
||||
debugfs_create_devm_seqfile
|
||||
|
|
@ -46,9 +53,13 @@
|
|||
default_llseek
|
||||
delayed_work_timer_fn
|
||||
del_timer
|
||||
del_timer_sync
|
||||
destroy_workqueue
|
||||
dev_addr_mod
|
||||
dev_alloc_name
|
||||
dev_close
|
||||
_dev_err
|
||||
__dev_get_by_index
|
||||
device_create
|
||||
device_create_file
|
||||
device_remove_file
|
||||
|
|
@ -65,6 +76,7 @@
|
|||
devm_kmalloc
|
||||
devm_request_threaded_irq
|
||||
_dev_notice
|
||||
_dev_printk
|
||||
__dev_queue_xmit
|
||||
_dev_warn
|
||||
dma_alloc_attrs
|
||||
|
|
@ -138,13 +150,18 @@
|
|||
drm_simple_encoder_init
|
||||
drm_vblank_init
|
||||
ether_setup
|
||||
eth_mac_addr
|
||||
ethtool_op_get_link
|
||||
ethtool_op_get_ts_info
|
||||
eth_type_trans
|
||||
eth_validate_addr
|
||||
fd_install
|
||||
_find_first_bit
|
||||
finish_wait
|
||||
firmware_request_nowarn
|
||||
flush_delayed_work
|
||||
flush_work
|
||||
__flush_workqueue
|
||||
__folio_put
|
||||
fortify_panic
|
||||
fput
|
||||
|
|
@ -152,6 +169,9 @@
|
|||
free_netdev
|
||||
__free_pages
|
||||
free_pages
|
||||
genlmsg_put
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
get_device
|
||||
__get_free_pages
|
||||
get_random_bytes
|
||||
|
|
@ -171,28 +191,11 @@
|
|||
hrtimer_start_range_ns
|
||||
ida_alloc_range
|
||||
ida_free
|
||||
idr_alloc
|
||||
idr_destroy
|
||||
idr_get_next
|
||||
idr_remove
|
||||
ieee80211_alloc_hw_nm
|
||||
ieee80211_beacon_cntdwn_is_complete
|
||||
ieee80211_beacon_get_tim
|
||||
ieee80211_csa_finish
|
||||
ieee80211_free_hw
|
||||
ieee80211_free_txskb
|
||||
ieee80211_get_buffered_bc
|
||||
ieee80211_get_hdrlen_from_skb
|
||||
ieee80211_get_tx_rates
|
||||
ieee80211_iterate_active_interfaces_atomic
|
||||
ieee80211_queue_delayed_work
|
||||
ieee80211_radar_detected
|
||||
ieee80211_register_hw
|
||||
ieee80211_send_bar
|
||||
ieee80211_sta_register_airtime
|
||||
ieee80211_stop_queues
|
||||
ieee80211_stop_tx_ba_cb_irqsafe
|
||||
ieee80211_tx_status_ext
|
||||
ieee80211_unregister_hw
|
||||
ieee80211_wake_queues
|
||||
init_net
|
||||
__init_swait_queue_head
|
||||
init_timer_key
|
||||
init_wait_entry
|
||||
|
|
@ -210,8 +213,10 @@
|
|||
irq_set_irq_wake
|
||||
is_vmalloc_addr
|
||||
jiffies
|
||||
jiffies_to_msecs
|
||||
kasan_flag_enabled
|
||||
kfree
|
||||
kfree_sensitive
|
||||
kfree_skb_reason
|
||||
kimage_voffset
|
||||
__kmalloc
|
||||
|
|
@ -228,6 +233,7 @@
|
|||
ktime_get
|
||||
ktime_get_with_offset
|
||||
kvfree
|
||||
kvfree_call_rcu
|
||||
kvmalloc_node
|
||||
__list_add_valid
|
||||
__list_del_entry_valid
|
||||
|
|
@ -242,6 +248,7 @@
|
|||
memstart_addr
|
||||
misc_deregister
|
||||
misc_register
|
||||
mod_delayed_work_on
|
||||
mod_timer
|
||||
module_layout
|
||||
__msecs_to_jiffies
|
||||
|
|
@ -256,6 +263,7 @@
|
|||
napi_gro_receive
|
||||
__napi_schedule
|
||||
napi_schedule_prep
|
||||
__netdev_alloc_skb
|
||||
netdev_err
|
||||
netdev_info
|
||||
netdev_printk
|
||||
|
|
@ -268,13 +276,20 @@
|
|||
netif_device_detach
|
||||
netif_napi_add_weight
|
||||
__netif_napi_del
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_tx_stop_all_queues
|
||||
netif_tx_wake_queue
|
||||
netlink_broadcast
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_ratelimit
|
||||
nf_conntrack_destroy
|
||||
nla_memcpy
|
||||
__nla_parse
|
||||
nla_put_64bit
|
||||
nla_put
|
||||
nla_put_64bit
|
||||
nonseekable_open
|
||||
noop_llseek
|
||||
nr_cpu_ids
|
||||
|
|
@ -285,6 +300,7 @@
|
|||
__page_frag_cache_drain
|
||||
page_frag_free
|
||||
param_ops_bool
|
||||
param_ops_charp
|
||||
param_ops_int
|
||||
param_ops_uint
|
||||
passthru_features_check
|
||||
|
|
@ -318,6 +334,8 @@
|
|||
preempt_schedule_notrace
|
||||
prepare_to_wait_event
|
||||
_printk
|
||||
__pskb_pull_tail
|
||||
___pskb_trim
|
||||
put_device
|
||||
__put_task_struct
|
||||
put_unused_fd
|
||||
|
|
@ -338,6 +356,7 @@
|
|||
refcount_warn_saturate
|
||||
register_netdevice
|
||||
register_netdevice_notifier
|
||||
register_pernet_device
|
||||
register_virtio_device
|
||||
register_virtio_driver
|
||||
__regmap_init
|
||||
|
|
@ -346,11 +365,17 @@
|
|||
remap_pfn_range
|
||||
request_firmware
|
||||
request_threaded_irq
|
||||
rhashtable_insert_slow
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
rtnl_is_locked
|
||||
rtnl_lock
|
||||
rtnl_unlock
|
||||
sched_set_fifo_low
|
||||
schedule
|
||||
schedule_timeout
|
||||
scnprintf
|
||||
seq_lseek
|
||||
seq_printf
|
||||
seq_puts
|
||||
|
|
@ -377,30 +402,44 @@
|
|||
single_open
|
||||
single_release
|
||||
skb_add_rx_frag
|
||||
skb_clone
|
||||
skb_copy
|
||||
skb_copy_bits
|
||||
skb_copy_expand
|
||||
skb_dequeue
|
||||
skb_pull
|
||||
skb_push
|
||||
skb_put
|
||||
skb_queue_head
|
||||
skb_queue_purge
|
||||
skb_queue_tail
|
||||
skb_to_sgvec
|
||||
skb_trim
|
||||
snprintf
|
||||
sprintf
|
||||
sscanf
|
||||
__stack_chk_fail
|
||||
strcasecmp
|
||||
strcmp
|
||||
strcpy
|
||||
strlen
|
||||
strncpy
|
||||
strnlen
|
||||
strscpy
|
||||
__sw_hweight16
|
||||
__sw_hweight32
|
||||
__sw_hweight8
|
||||
sync_file_create
|
||||
synchronize_irq
|
||||
synchronize_net
|
||||
synchronize_rcu
|
||||
sysfs_create_group
|
||||
sysfs_remove_group
|
||||
sysfs_remove_link
|
||||
system_freezable_wq
|
||||
system_wq
|
||||
__tasklet_schedule
|
||||
tasklet_setup
|
||||
tasklet_unlock_wait
|
||||
trace_event_buffer_commit
|
||||
trace_event_buffer_reserve
|
||||
|
|
@ -411,8 +450,10 @@
|
|||
trace_raw_output_prep
|
||||
__trace_trigger_soft_disabled
|
||||
unregister_netdev
|
||||
unregister_netdevice_many
|
||||
unregister_netdevice_notifier
|
||||
unregister_netdevice_queue
|
||||
unregister_pernet_device
|
||||
unregister_virtio_device
|
||||
unregister_virtio_driver
|
||||
usb_add_hcd
|
||||
|
|
@ -537,7 +578,6 @@
|
|||
btbcm_set_bdaddr
|
||||
btbcm_setup_apple
|
||||
btbcm_setup_patchram
|
||||
cancel_delayed_work
|
||||
device_wakeup_disable
|
||||
__dev_kfree_skb_irq
|
||||
disable_irq
|
||||
|
|
@ -568,6 +608,56 @@
|
|||
usb_scuttle_anchored_urbs
|
||||
usb_set_interface
|
||||
|
||||
# required by cfg80211.ko
|
||||
bpf_trace_run10
|
||||
bpf_trace_run7
|
||||
bpf_trace_run8
|
||||
__class_register
|
||||
class_unregister
|
||||
_ctype
|
||||
debugfs_rename
|
||||
__dev_change_net_namespace
|
||||
dev_get_by_index
|
||||
device_add
|
||||
device_del
|
||||
device_initialize
|
||||
device_rename
|
||||
dev_set_name
|
||||
gcd
|
||||
genlmsg_multicast_allns
|
||||
get_net_ns_by_fd
|
||||
get_net_ns_by_pid
|
||||
inet_csk_get_port
|
||||
init_uts_ns
|
||||
key_create_or_update
|
||||
key_put
|
||||
keyring_alloc
|
||||
ktime_get_coarse_with_offset
|
||||
memcmp
|
||||
net_ns_type_operations
|
||||
nla_find
|
||||
nla_reserve
|
||||
__nla_validate
|
||||
of_prop_next_u32
|
||||
__put_net
|
||||
rb_erase
|
||||
rb_insert_color
|
||||
request_firmware_nowait
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
rfkill_register
|
||||
rfkill_resume_polling
|
||||
rfkill_set_hw_state_reason
|
||||
rfkill_unregister
|
||||
__sock_create
|
||||
sock_release
|
||||
sysfs_create_link
|
||||
system_power_efficient_wq
|
||||
trace_print_array_seq
|
||||
verify_pkcs7_signature
|
||||
wireless_nlevent_flush
|
||||
|
||||
# required by clk-vexpress-osc.ko
|
||||
clk_hw_set_rate_range
|
||||
devm_of_clk_add_hw_provider
|
||||
|
|
@ -601,7 +691,6 @@
|
|||
|
||||
# required by dummy_hcd.ko
|
||||
ktime_get_ts64
|
||||
scnprintf
|
||||
strstr
|
||||
usb_add_gadget_udc
|
||||
usb_del_gadget_udc
|
||||
|
|
@ -611,7 +700,6 @@
|
|||
|
||||
# required by failover.ko
|
||||
netdev_master_upper_dev_link
|
||||
rtnl_is_locked
|
||||
|
||||
# required by goldfish_address_space.ko
|
||||
memremap
|
||||
|
|
@ -661,59 +749,80 @@
|
|||
hci_resume_dev
|
||||
hci_suspend_dev
|
||||
iov_iter_revert
|
||||
skb_queue_head
|
||||
|
||||
# required by mac80211.ko
|
||||
__alloc_percpu_gfp
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
bitmap_free
|
||||
bitmap_zalloc
|
||||
call_rcu
|
||||
__cpu_possible_mask
|
||||
crc32_be
|
||||
crypto_aead_decrypt
|
||||
crypto_aead_encrypt
|
||||
crypto_aead_setauthsize
|
||||
crypto_aead_setkey
|
||||
crypto_alloc_aead
|
||||
crypto_alloc_shash
|
||||
crypto_alloc_skcipher
|
||||
crypto_destroy_tfm
|
||||
__crypto_memneq
|
||||
crypto_shash_digest
|
||||
crypto_shash_finup
|
||||
crypto_shash_setkey
|
||||
crypto_shash_update
|
||||
crypto_skcipher_decrypt
|
||||
crypto_skcipher_encrypt
|
||||
crypto_skcipher_setkey
|
||||
__crypto_xor
|
||||
dev_fetch_sw_netstats
|
||||
_find_next_bit
|
||||
free_percpu
|
||||
get_random_u16
|
||||
__hw_addr_init
|
||||
__hw_addr_sync
|
||||
__hw_addr_unsync
|
||||
idr_find
|
||||
idr_for_each
|
||||
kernel_param_lock
|
||||
kernel_param_unlock
|
||||
kfree_skb_list_reason
|
||||
kmalloc_large
|
||||
ktime_get_seconds
|
||||
netdev_set_default_ethtool_ops
|
||||
netif_receive_skb
|
||||
__per_cpu_offset
|
||||
pskb_expand_head
|
||||
rcu_barrier
|
||||
register_inet6addr_notifier
|
||||
register_inetaddr_notifier
|
||||
rhashtable_free_and_destroy
|
||||
rhltable_init
|
||||
round_jiffies
|
||||
round_jiffies_relative
|
||||
round_jiffies_up
|
||||
skb_checksum_help
|
||||
skb_clone_sk
|
||||
skb_complete_wifi_ack
|
||||
skb_ensure_writable
|
||||
__skb_get_hash
|
||||
__skb_gso_segment
|
||||
__sw_hweight64
|
||||
tasklet_kill
|
||||
unregister_inet6addr_notifier
|
||||
unregister_inetaddr_notifier
|
||||
|
||||
# required by mac80211_hwsim.ko
|
||||
alloc_netdev_mqs
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
__cfg80211_send_event_skb
|
||||
cfg80211_vendor_cmd_reply
|
||||
dev_alloc_name
|
||||
device_bind_driver
|
||||
device_release_driver
|
||||
dst_release
|
||||
eth_mac_addr
|
||||
genlmsg_put
|
||||
genl_notify
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
ieee80211_find_sta_by_link_addrs
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_nullfunc_get
|
||||
ieee80211_probereq_get
|
||||
ieee80211_ready_on_channel
|
||||
ieee80211_remain_on_channel_expired
|
||||
ieee80211_rx_irqsafe
|
||||
ieee80211_scan_completed
|
||||
ieee80211_set_active_links_async
|
||||
ieee80211_tx_prepare_skb
|
||||
ieee80211_tx_status_irqsafe
|
||||
init_net
|
||||
jiffies_to_msecs
|
||||
__netdev_alloc_skb
|
||||
netlink_broadcast
|
||||
netlink_register_notifier
|
||||
netlink_unicast
|
||||
netlink_unregister_notifier
|
||||
net_namespace_list
|
||||
nla_memcpy
|
||||
register_pernet_device
|
||||
regulatory_hint
|
||||
rhashtable_destroy
|
||||
rhashtable_init
|
||||
rhashtable_insert_slow
|
||||
__rht_bucket_nested
|
||||
rht_bucket_nested
|
||||
rht_bucket_nested_insert
|
||||
schedule_timeout_interruptible
|
||||
skb_copy
|
||||
skb_copy_expand
|
||||
__skb_ext_put
|
||||
skb_trim
|
||||
__sw_hweight16
|
||||
unregister_pernet_device
|
||||
wiphy_apply_custom_regulatory
|
||||
|
||||
# required by mt76-usb.ko
|
||||
usb_init_urb
|
||||
|
|
@ -722,7 +831,6 @@
|
|||
usb_unpoison_urb
|
||||
|
||||
# required by mt76.ko
|
||||
cfg80211_reg_can_beacon
|
||||
debugfs_create_blob
|
||||
debugfs_create_file_unsafe
|
||||
dev_driver_string
|
||||
|
|
@ -731,30 +839,13 @@
|
|||
dma_map_page_attrs
|
||||
dma_sync_single_for_cpu
|
||||
dma_unmap_page_attrs
|
||||
idr_alloc
|
||||
idr_get_next
|
||||
ieee80211_calc_rx_airtime
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_find_sta_by_ifaddr
|
||||
ieee80211_get_key_rx_seq
|
||||
ieee80211_next_txq
|
||||
ieee80211_rx_list
|
||||
__ieee80211_schedule_txq
|
||||
ieee80211_sta_eosp
|
||||
ieee80211_sta_pspoll
|
||||
ieee80211_sta_ps_transition
|
||||
ieee80211_sta_uapsd_trigger
|
||||
ieee80211_tx_dequeue
|
||||
ieee80211_txq_schedule_start
|
||||
init_dummy_netdev
|
||||
__ioread32_copy
|
||||
__iowrite32_copy
|
||||
kthread_parkme
|
||||
kthread_should_park
|
||||
kvfree_call_rcu
|
||||
led_classdev_register_ext
|
||||
led_classdev_unregister
|
||||
netif_receive_skb_list
|
||||
of_get_child_by_name
|
||||
of_get_mac_address
|
||||
of_get_next_child
|
||||
|
|
@ -763,26 +854,14 @@
|
|||
pcie_capability_clear_and_set_word
|
||||
pcie_capability_read_word
|
||||
radix_tree_tagged
|
||||
rfc1042_header
|
||||
__skb_pad
|
||||
wiphy_read_of_freq_limits
|
||||
|
||||
# required by mt76x02-lib.ko
|
||||
bpf_trace_run1
|
||||
debugfs_create_bool
|
||||
ieee80211_calc_tx_airtime
|
||||
ieee80211_hdrlen
|
||||
ieee80211_iter_keys_rcu
|
||||
ieee80211_restart_hw
|
||||
__kfifo_init
|
||||
___pskb_trim
|
||||
__tasklet_schedule
|
||||
tasklet_setup
|
||||
wiphy_to_ieee80211_hw
|
||||
|
||||
# required by mt76x02-usb.ko
|
||||
hrtimer_active
|
||||
ieee80211_iterate_interfaces
|
||||
system_highpri_wq
|
||||
|
||||
# required by nd_virtio.ko
|
||||
|
|
@ -794,7 +873,6 @@
|
|||
|
||||
# required by net_failover.ko
|
||||
call_netdevice_notifiers
|
||||
dev_close
|
||||
dev_get_stats
|
||||
dev_mc_sync_multiple
|
||||
dev_mc_unsync
|
||||
|
|
@ -839,12 +917,10 @@
|
|||
# required by psmouse.ko
|
||||
bus_register_notifier
|
||||
bus_unregister_notifier
|
||||
del_timer_sync
|
||||
device_add_groups
|
||||
device_link_add
|
||||
device_link_remove
|
||||
device_remove_groups
|
||||
__flush_workqueue
|
||||
i2c_adapter_type
|
||||
i2c_bus_type
|
||||
i2c_client_type
|
||||
|
|
@ -946,29 +1022,15 @@
|
|||
platform_bus
|
||||
sockfd_lookup
|
||||
strchr
|
||||
sysfs_remove_link
|
||||
usb_speed_string
|
||||
|
||||
# required by virt_wifi.ko
|
||||
cfg80211_connect_done
|
||||
cfg80211_disconnected
|
||||
cfg80211_inform_bss_data
|
||||
cfg80211_put_bss
|
||||
cfg80211_scan_done
|
||||
__dev_get_by_index
|
||||
_dev_printk
|
||||
__module_get
|
||||
module_put
|
||||
netdev_upper_dev_link
|
||||
netif_stacked_transfer_operstate
|
||||
rtnl_link_register
|
||||
rtnl_link_unregister
|
||||
skb_clone
|
||||
unregister_netdevice_many
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_register
|
||||
wiphy_unregister
|
||||
|
||||
# required by virtio-gpu.ko
|
||||
__devm_request_region
|
||||
|
|
@ -1082,7 +1144,6 @@
|
|||
__SetPageMovable
|
||||
si_mem_available
|
||||
si_meminfo
|
||||
system_freezable_wq
|
||||
unregister_oom_notifier
|
||||
unregister_shrinker
|
||||
virtqueue_disable_dma_api_for_buffers
|
||||
|
|
@ -1184,8 +1245,6 @@
|
|||
eth_prepare_mac_addr_change
|
||||
ethtool_sprintf
|
||||
ethtool_virtdev_set_link_ksettings
|
||||
eth_type_trans
|
||||
_find_first_bit
|
||||
flow_keys_basic_dissector
|
||||
jiffies_to_usecs
|
||||
__napi_alloc_skb
|
||||
|
|
@ -1198,9 +1257,7 @@
|
|||
__netif_set_xps_queue
|
||||
netif_tx_lock
|
||||
netif_tx_unlock
|
||||
net_ratelimit
|
||||
__num_online_cpus
|
||||
__pskb_pull_tail
|
||||
sched_clock
|
||||
skb_coalesce_rx_frag
|
||||
__skb_flow_dissect
|
||||
|
|
@ -1270,7 +1327,6 @@
|
|||
wait_for_completion_interruptible_timeout
|
||||
|
||||
# required by vkms.ko
|
||||
crc32_le
|
||||
__devm_drm_dev_alloc
|
||||
devres_open_group
|
||||
devres_release_group
|
||||
|
|
@ -1308,7 +1364,6 @@
|
|||
|
||||
# required by vmw_vsock_virtio_transport.ko
|
||||
sk_error_report
|
||||
synchronize_rcu
|
||||
virtio_transport_connect
|
||||
virtio_transport_deliver_tap_pkt
|
||||
virtio_transport_destruct
|
||||
|
|
@ -1359,26 +1414,18 @@
|
|||
can_bus_off
|
||||
can_change_state
|
||||
capable
|
||||
__class_register
|
||||
class_unregister
|
||||
contig_page_data
|
||||
__cpu_possible_mask
|
||||
crypto_alloc_base
|
||||
crypto_comp_compress
|
||||
crypto_comp_decompress
|
||||
crypto_destroy_tfm
|
||||
crypto_has_alg
|
||||
dec_zone_page_state
|
||||
down_read
|
||||
down_write
|
||||
_find_next_bit
|
||||
flush_dcache_page
|
||||
folio_wait_bit
|
||||
free_percpu
|
||||
hex_asc_upper
|
||||
hex_to_bin
|
||||
idr_find
|
||||
idr_for_each
|
||||
inc_zone_page_state
|
||||
__init_rwsem
|
||||
kstrdup
|
||||
|
|
@ -1387,7 +1434,6 @@
|
|||
memset64
|
||||
mutex_is_locked
|
||||
page_endio
|
||||
__per_cpu_offset
|
||||
_raw_read_lock
|
||||
_raw_read_unlock
|
||||
_raw_write_lock
|
||||
|
|
|
|||
|
|
@ -31,10 +31,6 @@
|
|||
__blk_mq_alloc_disk
|
||||
__blk_mq_end_request
|
||||
__blk_rq_map_sg
|
||||
__cfg80211_alloc_event_skb
|
||||
__cfg80211_alloc_reply_skb
|
||||
__cfg80211_radar_event
|
||||
__cfg80211_send_event_skb
|
||||
__check_object_size
|
||||
__class_create
|
||||
__class_register
|
||||
|
|
@ -139,7 +135,6 @@
|
|||
__hwspin_unlock
|
||||
__i2c_smbus_xfer
|
||||
__i2c_transfer
|
||||
__ieee80211_schedule_txq
|
||||
__inet6_lookup_established
|
||||
__inet_lookup_established
|
||||
__init_rwsem
|
||||
|
|
@ -872,7 +867,6 @@
|
|||
bpf_trace_run8
|
||||
bpf_trace_run9
|
||||
bpf_warn_invalid_xdp_action
|
||||
bridge_tunnel_header
|
||||
bsg_job_done
|
||||
bsg_remove_queue
|
||||
bsg_setup_queue
|
||||
|
|
@ -974,100 +968,6 @@
|
|||
cec_s_phys_addr
|
||||
cec_transmit_attempt_done_ts
|
||||
cec_unregister_adapter
|
||||
cfg80211_any_usable_channels
|
||||
cfg80211_assoc_comeback
|
||||
cfg80211_assoc_failure
|
||||
cfg80211_auth_timeout
|
||||
cfg80211_background_cac_abort
|
||||
cfg80211_bss_color_notify
|
||||
cfg80211_bss_flush
|
||||
cfg80211_bss_iter
|
||||
cfg80211_cac_event
|
||||
cfg80211_calculate_bitrate
|
||||
cfg80211_ch_switch_notify
|
||||
cfg80211_ch_switch_started_notify
|
||||
cfg80211_chandef_compatible
|
||||
cfg80211_chandef_create
|
||||
cfg80211_chandef_dfs_required
|
||||
cfg80211_chandef_usable
|
||||
cfg80211_chandef_valid
|
||||
cfg80211_check_combinations
|
||||
cfg80211_check_station_change
|
||||
cfg80211_classify8021d
|
||||
cfg80211_conn_failed
|
||||
cfg80211_connect_done
|
||||
cfg80211_control_port_tx_status
|
||||
cfg80211_cqm_beacon_loss_notify
|
||||
cfg80211_cqm_pktloss_notify
|
||||
cfg80211_cqm_rssi_notify
|
||||
cfg80211_cqm_txe_notify
|
||||
cfg80211_crit_proto_stopped
|
||||
cfg80211_del_sta_sinfo
|
||||
cfg80211_disconnected
|
||||
cfg80211_external_auth_request
|
||||
cfg80211_find_elem_match
|
||||
cfg80211_find_vendor_elem
|
||||
cfg80211_free_nan_func
|
||||
cfg80211_ft_event
|
||||
cfg80211_get_bss
|
||||
cfg80211_get_drvinfo
|
||||
cfg80211_get_ies_channel_number
|
||||
cfg80211_get_iftype_ext_capa
|
||||
cfg80211_get_p2p_attr
|
||||
cfg80211_get_station
|
||||
cfg80211_gtk_rekey_notify
|
||||
cfg80211_ibss_joined
|
||||
cfg80211_iftype_allowed
|
||||
cfg80211_inform_bss_data
|
||||
cfg80211_inform_bss_frame_data
|
||||
cfg80211_is_element_inherited
|
||||
cfg80211_iter_combinations
|
||||
cfg80211_merge_profile
|
||||
cfg80211_mgmt_tx_status_ext
|
||||
cfg80211_michael_mic_failure
|
||||
cfg80211_nan_func_terminated
|
||||
cfg80211_nan_match
|
||||
cfg80211_new_sta
|
||||
cfg80211_notify_new_peer_candidate
|
||||
cfg80211_pmksa_candidate_notify
|
||||
cfg80211_pmsr_complete
|
||||
cfg80211_pmsr_report
|
||||
cfg80211_port_authorized
|
||||
cfg80211_probe_status
|
||||
cfg80211_put_bss
|
||||
cfg80211_ready_on_channel
|
||||
cfg80211_ref_bss
|
||||
cfg80211_reg_can_beacon
|
||||
cfg80211_reg_can_beacon_relax
|
||||
cfg80211_register_netdevice
|
||||
cfg80211_remain_on_channel_expired
|
||||
cfg80211_report_obss_beacon_khz
|
||||
cfg80211_report_wowlan_wakeup
|
||||
cfg80211_roamed
|
||||
cfg80211_rx_assoc_resp
|
||||
cfg80211_rx_control_port
|
||||
cfg80211_rx_mgmt_ext
|
||||
cfg80211_rx_mlme_mgmt
|
||||
cfg80211_rx_spurious_frame
|
||||
cfg80211_rx_unexpected_4addr_frame
|
||||
cfg80211_rx_unprot_mlme_mgmt
|
||||
cfg80211_scan_done
|
||||
cfg80211_sched_scan_results
|
||||
cfg80211_sched_scan_stopped
|
||||
cfg80211_sched_scan_stopped_locked
|
||||
cfg80211_send_layer2_update
|
||||
cfg80211_shutdown_all_interfaces
|
||||
cfg80211_sinfo_alloc_tid_stats
|
||||
cfg80211_sta_opmode_change_notify
|
||||
cfg80211_stop_iface
|
||||
cfg80211_tdls_oper_request
|
||||
cfg80211_tx_mgmt_expired
|
||||
cfg80211_tx_mlme_mgmt
|
||||
cfg80211_unlink_bss
|
||||
cfg80211_unregister_wdev
|
||||
cfg80211_update_owe_info_event
|
||||
cfg80211_vendor_cmd_get_sender
|
||||
cfg80211_vendor_cmd_reply
|
||||
cgroup_path_ns
|
||||
cgroup_taskset_first
|
||||
cgroup_taskset_next
|
||||
|
|
@ -2169,7 +2069,6 @@
|
|||
freq_qos_remove_notifier
|
||||
freq_qos_remove_request
|
||||
freq_qos_update_request
|
||||
freq_reg_info
|
||||
fs_bio_set
|
||||
fsync_bdev
|
||||
ftrace_dump
|
||||
|
|
@ -2275,7 +2174,6 @@
|
|||
get_user_pages
|
||||
get_user_pages_fast
|
||||
get_vaddr_frames
|
||||
get_wiphy_regdom
|
||||
get_zeroed_page
|
||||
getboottime64
|
||||
gh_rm_call
|
||||
|
|
@ -2502,151 +2400,6 @@
|
|||
idr_preload
|
||||
idr_remove
|
||||
idr_replace
|
||||
ieee80211_alloc_hw_nm
|
||||
ieee80211_amsdu_to_8023s
|
||||
ieee80211_ap_probereq_get
|
||||
ieee80211_ave_rssi
|
||||
ieee80211_beacon_cntdwn_is_complete
|
||||
ieee80211_beacon_get_template
|
||||
ieee80211_beacon_get_tim
|
||||
ieee80211_beacon_loss
|
||||
ieee80211_beacon_set_cntdwn
|
||||
ieee80211_beacon_update_cntdwn
|
||||
ieee80211_bss_get_elem
|
||||
ieee80211_calc_rx_airtime
|
||||
ieee80211_calc_tx_airtime
|
||||
ieee80211_chandef_to_operating_class
|
||||
ieee80211_channel_switch_disconnect
|
||||
ieee80211_channel_to_freq_khz
|
||||
ieee80211_chswitch_done
|
||||
ieee80211_color_change_finish
|
||||
ieee80211_connection_loss
|
||||
ieee80211_cqm_beacon_loss_notify
|
||||
ieee80211_cqm_rssi_notify
|
||||
ieee80211_csa_finish
|
||||
ieee80211_ctstoself_duration
|
||||
ieee80211_ctstoself_get
|
||||
ieee80211_data_to_8023_exthdr
|
||||
ieee80211_disable_rssi_reports
|
||||
ieee80211_disconnect
|
||||
ieee80211_enable_rssi_reports
|
||||
ieee80211_find_sta
|
||||
ieee80211_find_sta_by_ifaddr
|
||||
ieee80211_find_sta_by_link_addrs
|
||||
ieee80211_free_hw
|
||||
ieee80211_free_txskb
|
||||
ieee80211_freq_khz_to_channel
|
||||
ieee80211_generic_frame_duration
|
||||
ieee80211_get_bssid
|
||||
ieee80211_get_buffered_bc
|
||||
ieee80211_get_channel_khz
|
||||
ieee80211_get_fils_discovery_tmpl
|
||||
ieee80211_get_hdrlen_from_skb
|
||||
ieee80211_get_key_rx_seq
|
||||
ieee80211_get_mesh_hdrlen
|
||||
ieee80211_get_num_supported_channels
|
||||
ieee80211_get_response_rate
|
||||
ieee80211_get_tkip_p1k_iv
|
||||
ieee80211_get_tkip_p2k
|
||||
ieee80211_get_tkip_rx_p1k
|
||||
ieee80211_get_tx_rates
|
||||
ieee80211_get_unsol_bcast_probe_resp_tmpl
|
||||
ieee80211_get_vht_max_nss
|
||||
ieee80211_gtk_rekey_add
|
||||
ieee80211_gtk_rekey_notify
|
||||
ieee80211_hdrlen
|
||||
ieee80211_hw_restart_disconnect
|
||||
ieee80211_ie_split_ric
|
||||
ieee80211_iter_chan_contexts_atomic
|
||||
ieee80211_iter_keys
|
||||
ieee80211_iter_keys_rcu
|
||||
ieee80211_iterate_active_interfaces_atomic
|
||||
ieee80211_iterate_active_interfaces_mtx
|
||||
ieee80211_iterate_interfaces
|
||||
ieee80211_iterate_stations
|
||||
ieee80211_iterate_stations_atomic
|
||||
ieee80211_key_mic_failure
|
||||
ieee80211_key_replay
|
||||
ieee80211_manage_rx_ba_offl
|
||||
ieee80211_mandatory_rates
|
||||
ieee80211_mark_rx_ba_filtered_frames
|
||||
ieee80211_nan_func_match
|
||||
ieee80211_nan_func_terminated
|
||||
ieee80211_next_txq
|
||||
ieee80211_nullfunc_get
|
||||
ieee80211_operating_class_to_band
|
||||
ieee80211_parse_p2p_noa
|
||||
ieee80211_probereq_get
|
||||
ieee80211_proberesp_get
|
||||
ieee80211_pspoll_get
|
||||
ieee80211_queue_delayed_work
|
||||
ieee80211_queue_stopped
|
||||
ieee80211_queue_work
|
||||
ieee80211_radar_detected
|
||||
ieee80211_radiotap_iterator_init
|
||||
ieee80211_radiotap_iterator_next
|
||||
ieee80211_rate_control_register
|
||||
ieee80211_rate_control_unregister
|
||||
ieee80211_ready_on_channel
|
||||
ieee80211_register_hw
|
||||
ieee80211_remain_on_channel_expired
|
||||
ieee80211_remove_key
|
||||
ieee80211_report_low_ack
|
||||
ieee80211_report_wowlan_wakeup
|
||||
ieee80211_request_smps
|
||||
ieee80211_reserve_tid
|
||||
ieee80211_restart_hw
|
||||
ieee80211_resume_disconnect
|
||||
ieee80211_rts_duration
|
||||
ieee80211_rts_get
|
||||
ieee80211_rx_ba_timer_expired
|
||||
ieee80211_rx_irqsafe
|
||||
ieee80211_rx_list
|
||||
ieee80211_rx_napi
|
||||
ieee80211_s1g_channel_width
|
||||
ieee80211_scan_completed
|
||||
ieee80211_sched_scan_results
|
||||
ieee80211_sched_scan_stopped
|
||||
ieee80211_send_bar
|
||||
ieee80211_send_eosp_nullfunc
|
||||
ieee80211_set_active_links
|
||||
ieee80211_set_active_links_async
|
||||
ieee80211_set_key_rx_seq
|
||||
ieee80211_sta_block_awake
|
||||
ieee80211_sta_eosp
|
||||
ieee80211_sta_ps_transition
|
||||
ieee80211_sta_pspoll
|
||||
ieee80211_sta_recalc_aggregates
|
||||
ieee80211_sta_register_airtime
|
||||
ieee80211_sta_set_buffered
|
||||
ieee80211_sta_uapsd_trigger
|
||||
ieee80211_start_tx_ba_cb_irqsafe
|
||||
ieee80211_start_tx_ba_session
|
||||
ieee80211_stop_queue
|
||||
ieee80211_stop_queues
|
||||
ieee80211_stop_rx_ba_session
|
||||
ieee80211_stop_tx_ba_cb_irqsafe
|
||||
ieee80211_stop_tx_ba_session
|
||||
ieee80211_tdls_oper_request
|
||||
ieee80211_tkip_add_iv
|
||||
ieee80211_tx_dequeue
|
||||
ieee80211_tx_prepare_skb
|
||||
ieee80211_tx_rate_update
|
||||
ieee80211_tx_status
|
||||
ieee80211_tx_status_8023
|
||||
ieee80211_tx_status_ext
|
||||
ieee80211_tx_status_irqsafe
|
||||
ieee80211_txq_airtime_check
|
||||
ieee80211_txq_get_depth
|
||||
ieee80211_txq_may_transmit
|
||||
ieee80211_txq_schedule_start
|
||||
ieee80211_unregister_hw
|
||||
ieee80211_unreserve_tid
|
||||
ieee80211_update_mu_groups
|
||||
ieee80211_update_p2p_noa
|
||||
ieee80211_vif_to_wdev
|
||||
ieee80211_wake_queue
|
||||
ieee80211_wake_queues
|
||||
ieee802154_alloc_hw
|
||||
ieee802154_configure_durations
|
||||
ieee802154_free_hw
|
||||
|
|
@ -2663,7 +2416,6 @@
|
|||
ieee802154_xmit_complete
|
||||
ieee802154_xmit_error
|
||||
ieee802154_xmit_hw_error
|
||||
ieeee80211_obss_color_collision_notify
|
||||
iio_buffer_enabled
|
||||
iio_buffer_init
|
||||
iio_buffer_put
|
||||
|
|
@ -3807,7 +3559,6 @@
|
|||
radix_tree_lookup
|
||||
radix_tree_next_chunk
|
||||
radix_tree_tagged
|
||||
rate_control_set_rates
|
||||
rational_best_approximation
|
||||
raw_notifier_call_chain
|
||||
raw_notifier_chain_register
|
||||
|
|
@ -3861,8 +3612,6 @@
|
|||
refcount_dec_if_one
|
||||
refcount_dec_not_one
|
||||
refcount_warn_saturate
|
||||
reg_initiator_name
|
||||
reg_query_regdb_wmm
|
||||
regcache_cache_bypass
|
||||
regcache_cache_only
|
||||
regcache_drop_region
|
||||
|
|
@ -3937,6 +3686,7 @@
|
|||
regulator_force_disable
|
||||
regulator_get
|
||||
regulator_get_current_limit_regmap
|
||||
regulator_get_drvdata
|
||||
regulator_get_linear_step
|
||||
regulator_get_mode
|
||||
regulator_get_optional
|
||||
|
|
@ -3963,10 +3713,6 @@
|
|||
regulator_set_voltage_sel_regmap
|
||||
regulator_unregister
|
||||
regulator_unregister_notifier
|
||||
regulatory_hint
|
||||
regulatory_pre_cac_allowed
|
||||
regulatory_set_wiphy_regd
|
||||
regulatory_set_wiphy_regd_sync
|
||||
release_firmware
|
||||
release_sock
|
||||
remap_pfn_range
|
||||
|
|
@ -3995,7 +3741,6 @@
|
|||
reset_control_release
|
||||
reset_control_reset
|
||||
return_address
|
||||
rfc1042_header
|
||||
rfkill_alloc
|
||||
rfkill_blocked
|
||||
rfkill_destroy
|
||||
|
|
@ -4780,6 +4525,7 @@
|
|||
ucsi_destroy
|
||||
ucsi_get_drvdata
|
||||
ucsi_register
|
||||
ucsi_send_command
|
||||
ucsi_set_drvdata
|
||||
ucsi_unregister
|
||||
udp4_hwcsum
|
||||
|
|
@ -5287,17 +5033,6 @@
|
|||
watchdog_register_device
|
||||
watchdog_set_restart_priority
|
||||
watchdog_unregister_device
|
||||
wdev_chandef
|
||||
wdev_to_ieee80211_vif
|
||||
wiphy_apply_custom_regulatory
|
||||
wiphy_free
|
||||
wiphy_new_nm
|
||||
wiphy_read_of_freq_limits
|
||||
wiphy_register
|
||||
wiphy_rfkill_set_hw_state_reason
|
||||
wiphy_rfkill_start_polling
|
||||
wiphy_to_ieee80211_hw
|
||||
wiphy_unregister
|
||||
wireless_nlevent_flush
|
||||
wireless_send_event
|
||||
woken_wake_function
|
||||
|
|
|
|||
|
|
@ -144,3 +144,44 @@
|
|||
sbitmap_weight
|
||||
scsi_done
|
||||
scsi_remove_device
|
||||
|
||||
#required by mi_sched.ko
|
||||
__traceiter_android_vh_scheduler_tick
|
||||
__traceiter_android_vh_free_user
|
||||
__traceiter_android_vh_alloc_uid
|
||||
__tracepoint_android_vh_scheduler_tick
|
||||
__tracepoint_android_vh_free_user
|
||||
__tracepoint_android_vh_alloc_uid
|
||||
free_uid
|
||||
find_user
|
||||
|
||||
#required by mi_freqwdg.ko
|
||||
__traceiter_android_vh_freq_qos_remove_request
|
||||
__traceiter_android_vh_freq_qos_update_request
|
||||
__traceiter_android_vh_freq_qos_add_request
|
||||
__traceiter_android_rvh_entity_tick
|
||||
__traceiter_android_rvh_dequeue_task_fair
|
||||
__tracepoint_android_vh_freq_qos_remove_request
|
||||
__tracepoint_android_vh_freq_qos_update_request
|
||||
__tracepoint_android_vh_freq_qos_add_request
|
||||
__tracepoint_android_rvh_dequeue_task_fair
|
||||
__tracepoint_android_rvh_entity_tick
|
||||
|
||||
#required by metis.ko module
|
||||
__traceiter_android_vh_rwsem_read_wait_start
|
||||
__traceiter_android_vh_rwsem_write_wait_start
|
||||
__traceiter_android_vh_mutex_wait_start
|
||||
__traceiter_android_vh_alter_mutex_list_add
|
||||
__traceiter_android_rvh_cpuset_fork
|
||||
__traceiter_android_vh_sched_setaffinity_early
|
||||
__traceiter_android_rvh_set_cpus_allowed_comm
|
||||
__traceiter_android_rvh_dequeue_task
|
||||
__tracepoint_android_vh_rwsem_read_wait_start
|
||||
__tracepoint_android_vh_rwsem_write_wait_start
|
||||
__tracepoint_android_vh_mutex_wait_start
|
||||
__tracepoint_android_vh_alter_mutex_list_add
|
||||
__tracepoint_android_rvh_cpuset_fork
|
||||
__tracepoint_android_vh_sched_setaffinity_early
|
||||
__tracepoint_android_rvh_set_cpus_allowed_comm
|
||||
__tracepoint_android_rvh_dequeue_task
|
||||
cpuset_cpus_allowed
|
||||
|
|
|
|||
|
|
@ -50,11 +50,9 @@ net/ieee802154/ieee802154.ko
|
|||
net/ieee802154/ieee802154_socket.ko
|
||||
net/l2tp/l2tp_core.ko
|
||||
net/l2tp/l2tp_ppp.ko
|
||||
net/mac80211/mac80211.ko
|
||||
net/mac802154/mac802154.ko
|
||||
net/nfc/nfc.ko
|
||||
net/rfkill/rfkill.ko
|
||||
net/tipc/diag.ko
|
||||
net/tipc/tipc.ko
|
||||
net/wireless/cfg80211.ko
|
||||
|
||||
|
|
|
|||
|
|
@ -308,3 +308,9 @@ CONFIG_QCOM_SPM=m
|
|||
CONFIG_PINCTRL_SM8450=m
|
||||
CONFIG_SM_GCC_8450=m
|
||||
CONFIG_INTERCONNECT_QCOM_SM8450=m
|
||||
# CFG80211 & MAC80211 as modules
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
CONFIG_MAC80211=m
|
||||
|
|
|
|||
|
|
@ -276,11 +276,6 @@ CONFIG_BT_HCIUART=m
|
|||
CONFIG_BT_HCIUART_LL=y
|
||||
CONFIG_BT_HCIUART_BCM=y
|
||||
CONFIG_BT_HCIUART_QCA=y
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
CONFIG_MAC80211=m
|
||||
CONFIG_RFKILL=m
|
||||
CONFIG_NFC=m
|
||||
CONFIG_PCI=y
|
||||
|
|
|
|||
|
|
@ -921,4 +921,19 @@ alternative_cb ARM64_ALWAYS_SYSTEM, spectre_bhb_patch_clearbhb
|
|||
alternative_cb_end
|
||||
#endif /* CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY */
|
||||
.endm
|
||||
|
||||
#if defined(__KVM_NVHE_HYPERVISOR__)
|
||||
/*
|
||||
* pKVM uses the module_ops struct to expose services to modules but
|
||||
* doesn't allow fine-grained definition of the license for each export,
|
||||
* and doesn't have a way to check the license of the loaded module.
|
||||
* Given that said module may be proprietary, let's seek GPL compliance
|
||||
* by preventing the accidental export of GPL symbols to hyp modules via
|
||||
* pKVM's module_ops struct.
|
||||
*/
|
||||
#ifdef EXPORT_SYMBOL_GPL
|
||||
#undef EXPORT_SYMBOL_GPL
|
||||
#endif
|
||||
#define EXPORT_SYMBOL_GPL(sym) ASM_BUILD_BUG()
|
||||
#endif
|
||||
#endif /* __ASM_ASSEMBLER_H */
|
||||
|
|
|
|||
|
|
@ -159,6 +159,19 @@ extern void *__nvhe_undefined_symbol;
|
|||
#define this_cpu_ptr_hyp_sym(sym) (&__nvhe_undefined_symbol)
|
||||
#define per_cpu_ptr_hyp_sym(sym, cpu) (&__nvhe_undefined_symbol)
|
||||
|
||||
/*
|
||||
* pKVM uses the module_ops struct to expose services to modules but
|
||||
* doesn't allow fine-grained definition of the license for each export,
|
||||
* and doesn't have a way to check the license of the loaded module.
|
||||
* Given that said module may be proprietary, let's seek GPL compliance
|
||||
* by preventing the accidental export of GPL symbols to hyp modules via
|
||||
* pKVM's module_ops struct.
|
||||
*/
|
||||
#ifdef EXPORT_SYMBOL_GPL
|
||||
#undef EXPORT_SYMBOL_GPL
|
||||
#endif
|
||||
#define EXPORT_SYMBOL_GPL(sym) BUILD_BUG()
|
||||
|
||||
#elif defined(__KVM_VHE_HYPERVISOR__)
|
||||
|
||||
#define CHOOSE_VHE_SYM(sym) sym
|
||||
|
|
@ -208,6 +221,7 @@ struct kvm_nvhe_init_params {
|
|||
unsigned long stack_pa;
|
||||
phys_addr_t pgd_pa;
|
||||
unsigned long hcr_el2;
|
||||
unsigned long hfgwtr_el2;
|
||||
unsigned long vttbr;
|
||||
unsigned long vtcr;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ struct pkvm_module_ops {
|
|||
void *(*linear_map_early)(phys_addr_t phys, size_t size, enum kvm_pgtable_prot prot);
|
||||
void (*linear_unmap_early)(void *addr, size_t size);
|
||||
void (*flush_dcache_to_poc)(void *addr, size_t size);
|
||||
void (*update_hcr_el2)(unsigned long set_mask, unsigned long clear_mask);
|
||||
void (*update_hfgwtr_el2)(unsigned long set_mask, unsigned long clear_mask);
|
||||
int (*register_host_perm_fault_handler)(int (*cb)(struct kvm_cpu_context *ctxt, u64 esr, u64 addr));
|
||||
int (*host_stage2_mod_prot)(u64 pfn, enum kvm_pgtable_prot prot);
|
||||
int (*host_stage2_get_leaf)(phys_addr_t phys, kvm_pte_t *ptep, u32 *level);
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ int main(void)
|
|||
DEFINE(NVHE_INIT_STACK_HYP_VA, offsetof(struct kvm_nvhe_init_params, stack_hyp_va));
|
||||
DEFINE(NVHE_INIT_PGD_PA, offsetof(struct kvm_nvhe_init_params, pgd_pa));
|
||||
DEFINE(NVHE_INIT_HCR_EL2, offsetof(struct kvm_nvhe_init_params, hcr_el2));
|
||||
DEFINE(NVHE_INIT_HFGWTR_EL2, offsetof(struct kvm_nvhe_init_params, hfgwtr_el2));
|
||||
DEFINE(NVHE_INIT_VTTBR, offsetof(struct kvm_nvhe_init_params, vttbr));
|
||||
DEFINE(NVHE_INIT_VTCR, offsetof(struct kvm_nvhe_init_params, vtcr));
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -598,6 +598,7 @@ unsigned long __get_wchan(struct task_struct *p)
|
|||
|
||||
return wchan_info.pc;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(get_wchan);
|
||||
|
||||
unsigned long arch_align_stack(unsigned long sp)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -89,7 +89,6 @@ bool addr_is_memory(phys_addr_t phys);
|
|||
int host_stage2_idmap_locked(phys_addr_t addr, u64 size, enum kvm_pgtable_prot prot,
|
||||
bool update_iommu);
|
||||
int host_stage2_set_owner_locked(phys_addr_t addr, u64 size, enum pkvm_component_id owner_id);
|
||||
int host_stage2_protect_pages_locked(phys_addr_t addr, u64 size);
|
||||
int host_stage2_unmap_reg_locked(phys_addr_t start, u64 size);
|
||||
int kvm_host_prepare_stage2(void *pgt_pool_base);
|
||||
int kvm_guest_prepare_stage2(struct pkvm_hyp_vm *vm, void *pgd);
|
||||
|
|
|
|||
|
|
@ -95,6 +95,9 @@ SYM_CODE_START_LOCAL(___kvm_hyp_init)
|
|||
ldr x1, [x0, #NVHE_INIT_HCR_EL2]
|
||||
msr hcr_el2, x1
|
||||
|
||||
ldr x1, [x0, #NVHE_INIT_HFGWTR_EL2]
|
||||
msr_s SYS_HFGWTR_EL2, x1
|
||||
|
||||
ldr x1, [x0, #NVHE_INIT_VTTBR]
|
||||
msr vttbr_el2, x1
|
||||
|
||||
|
|
|
|||
|
|
@ -2366,19 +2366,6 @@ bool __pkvm_check_ioguard_page(struct pkvm_hyp_vcpu *hyp_vcpu)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int host_stage2_protect_pages_locked(phys_addr_t addr, u64 size)
|
||||
{
|
||||
int ret;
|
||||
|
||||
hyp_assert_lock_held(&host_mmu.lock);
|
||||
|
||||
ret = __host_check_page_state_range(addr, size, PKVM_PAGE_OWNED);
|
||||
if (!ret)
|
||||
ret = host_stage2_set_owner_locked(addr, size, PKVM_ID_PROTECTED);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int host_stage2_get_leaf(phys_addr_t phys, kvm_pte_t *ptep, u32 *level)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,26 @@ static void __kvm_flush_dcache_to_poc(void *addr, size_t size)
|
|||
kvm_flush_dcache_to_poc((unsigned long)addr, (unsigned long)size);
|
||||
}
|
||||
|
||||
static void __update_hcr_el2(unsigned long set_mask, unsigned long clear_mask)
|
||||
{
|
||||
struct kvm_nvhe_init_params *params = this_cpu_ptr(&kvm_init_params);
|
||||
|
||||
params->hcr_el2 |= set_mask;
|
||||
params->hcr_el2 &= ~clear_mask;
|
||||
__kvm_flush_dcache_to_poc(params, sizeof(*params));
|
||||
write_sysreg(params->hcr_el2, hcr_el2);
|
||||
}
|
||||
|
||||
static void __update_hfgwtr_el2(unsigned long set_mask, unsigned long clear_mask)
|
||||
{
|
||||
struct kvm_nvhe_init_params *params = this_cpu_ptr(&kvm_init_params);
|
||||
|
||||
params->hfgwtr_el2 |= set_mask;
|
||||
params->hfgwtr_el2 &= ~clear_mask;
|
||||
__kvm_flush_dcache_to_poc(params, sizeof(*params));
|
||||
write_sysreg_s(params->hfgwtr_el2, SYS_HFGWTR_EL2);
|
||||
}
|
||||
|
||||
static atomic_t early_lm_pages;
|
||||
static void *__pkvm_linear_map_early(phys_addr_t phys, size_t size, enum kvm_pgtable_prot prot)
|
||||
{
|
||||
|
|
@ -78,6 +98,8 @@ const struct pkvm_module_ops module_ops = {
|
|||
.linear_map_early = __pkvm_linear_map_early,
|
||||
.linear_unmap_early = __pkvm_linear_unmap_early,
|
||||
.flush_dcache_to_poc = __kvm_flush_dcache_to_poc,
|
||||
.update_hcr_el2 = __update_hcr_el2,
|
||||
.update_hfgwtr_el2 = __update_hfgwtr_el2,
|
||||
.register_host_perm_fault_handler = hyp_register_host_perm_fault_handler,
|
||||
.host_stage2_mod_prot = module_change_host_page_prot,
|
||||
.host_stage2_get_leaf = host_stage2_get_leaf,
|
||||
|
|
|
|||
|
|
@ -318,7 +318,9 @@ static int unmap_protected_regions(void)
|
|||
reg = &pkvm_moveable_regs[i];
|
||||
if (reg->type != PKVM_MREG_PROTECTED_RANGE)
|
||||
continue;
|
||||
ret = host_stage2_protect_pages_locked(reg->start, reg->size);
|
||||
|
||||
ret = host_stage2_set_owner_locked(reg->start, reg->size,
|
||||
PKVM_ID_PROTECTED);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ int pkvm_iommu_driver_init(u64 drv, void *data, size_t size)
|
|||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_iommu_driver_init, drv, data, size);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_driver_init);
|
||||
EXPORT_SYMBOL(pkvm_iommu_driver_init);
|
||||
|
||||
int pkvm_iommu_register(struct device *dev, u64 drv, phys_addr_t pa,
|
||||
size_t size, struct device *parent, u8 flags)
|
||||
|
|
@ -41,24 +41,24 @@ int pkvm_iommu_register(struct device *dev, u64 drv, phys_addr_t pa,
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_register);
|
||||
EXPORT_SYMBOL(pkvm_iommu_register);
|
||||
|
||||
int pkvm_iommu_suspend(struct device *dev)
|
||||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_iommu_pm_notify, dev_to_id(dev),
|
||||
PKVM_IOMMU_PM_SUSPEND);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_suspend);
|
||||
EXPORT_SYMBOL(pkvm_iommu_suspend);
|
||||
|
||||
int pkvm_iommu_resume(struct device *dev)
|
||||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_iommu_pm_notify, dev_to_id(dev),
|
||||
PKVM_IOMMU_PM_RESUME);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_resume);
|
||||
EXPORT_SYMBOL(pkvm_iommu_resume);
|
||||
|
||||
int pkvm_iommu_finalize(int err)
|
||||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_iommu_finalize, err);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pkvm_iommu_finalize);
|
||||
EXPORT_SYMBOL(pkvm_iommu_finalize);
|
||||
|
|
|
|||
|
|
@ -870,11 +870,11 @@ int __pkvm_load_el2_module(struct module *this, unsigned long *token)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__pkvm_load_el2_module);
|
||||
EXPORT_SYMBOL(__pkvm_load_el2_module);
|
||||
|
||||
int __pkvm_register_el2_call(unsigned long hfn_hyp_va)
|
||||
{
|
||||
return kvm_call_hyp_nvhe(__pkvm_register_hcall, hfn_hyp_va);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__pkvm_register_el2_call);
|
||||
EXPORT_SYMBOL(__pkvm_register_el2_call);
|
||||
#endif /* CONFIG_MODULES */
|
||||
|
|
|
|||
|
|
@ -15,16 +15,14 @@
|
|||
#include <kvm/arm_pmu.h>
|
||||
#include <kvm/arm_vgic.h>
|
||||
|
||||
#define PERF_ATTR_CFG1_COUNTER_64BIT BIT(0)
|
||||
|
||||
DEFINE_STATIC_KEY_FALSE(kvm_arm_pmu_available);
|
||||
|
||||
static LIST_HEAD(arm_pmus);
|
||||
static DEFINE_MUTEX(arm_pmus_lock);
|
||||
|
||||
static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx);
|
||||
static void kvm_pmu_update_pmc_chained(struct kvm_vcpu *vcpu, u64 select_idx);
|
||||
static void kvm_pmu_stop_counter(struct kvm_vcpu *vcpu, struct kvm_pmc *pmc);
|
||||
|
||||
#define PERF_ATTR_CFG1_KVM_PMU_CHAINED 0x1
|
||||
|
||||
static u32 kvm_pmu_event_mask(struct kvm *kvm)
|
||||
{
|
||||
|
|
@ -52,11 +50,22 @@ static u32 kvm_pmu_event_mask(struct kvm *kvm)
|
|||
* @select_idx: The counter index
|
||||
*/
|
||||
static bool kvm_pmu_idx_is_64bit(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
return (select_idx == ARMV8_PMU_CYCLE_IDX);
|
||||
}
|
||||
|
||||
static bool kvm_pmu_idx_has_64bit_overflow(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
return (select_idx == ARMV8_PMU_CYCLE_IDX &&
|
||||
__vcpu_sys_reg(vcpu, PMCR_EL0) & ARMV8_PMU_PMCR_LC);
|
||||
}
|
||||
|
||||
static bool kvm_pmu_counter_can_chain(struct kvm_vcpu *vcpu, u64 idx)
|
||||
{
|
||||
return (!(idx & 1) && (idx + 1) < ARMV8_PMU_CYCLE_IDX &&
|
||||
!kvm_pmu_idx_has_64bit_overflow(vcpu, idx));
|
||||
}
|
||||
|
||||
static struct kvm_vcpu *kvm_pmc_to_vcpu(struct kvm_pmc *pmc)
|
||||
{
|
||||
struct kvm_pmu *pmu;
|
||||
|
|
@ -69,91 +78,22 @@ static struct kvm_vcpu *kvm_pmc_to_vcpu(struct kvm_pmc *pmc)
|
|||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_pmc_is_chained - determine if the pmc is chained
|
||||
* @pmc: The PMU counter pointer
|
||||
*/
|
||||
static bool kvm_pmu_pmc_is_chained(struct kvm_pmc *pmc)
|
||||
{
|
||||
struct kvm_vcpu *vcpu = kvm_pmc_to_vcpu(pmc);
|
||||
|
||||
return test_bit(pmc->idx >> 1, vcpu->arch.pmu.chained);
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_idx_is_high_counter - determine if select_idx is a high/low counter
|
||||
* @select_idx: The counter index
|
||||
*/
|
||||
static bool kvm_pmu_idx_is_high_counter(u64 select_idx)
|
||||
{
|
||||
return select_idx & 0x1;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_get_canonical_pmc - obtain the canonical pmc
|
||||
* @pmc: The PMU counter pointer
|
||||
*
|
||||
* When a pair of PMCs are chained together we use the low counter (canonical)
|
||||
* to hold the underlying perf event.
|
||||
*/
|
||||
static struct kvm_pmc *kvm_pmu_get_canonical_pmc(struct kvm_pmc *pmc)
|
||||
{
|
||||
if (kvm_pmu_pmc_is_chained(pmc) &&
|
||||
kvm_pmu_idx_is_high_counter(pmc->idx))
|
||||
return pmc - 1;
|
||||
|
||||
return pmc;
|
||||
}
|
||||
static struct kvm_pmc *kvm_pmu_get_alternate_pmc(struct kvm_pmc *pmc)
|
||||
{
|
||||
if (kvm_pmu_idx_is_high_counter(pmc->idx))
|
||||
return pmc - 1;
|
||||
else
|
||||
return pmc + 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_idx_has_chain_evtype - determine if the event type is chain
|
||||
* kvm_pmu_get_counter_value - get PMU counter value
|
||||
* @vcpu: The vcpu pointer
|
||||
* @select_idx: The counter index
|
||||
*/
|
||||
static bool kvm_pmu_idx_has_chain_evtype(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
u64 kvm_pmu_get_counter_value(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
u64 eventsel, reg;
|
||||
u64 counter, reg, enabled, running;
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
struct kvm_pmc *pmc = &pmu->pmc[select_idx];
|
||||
|
||||
select_idx |= 0x1;
|
||||
if (!kvm_vcpu_has_pmu(vcpu))
|
||||
return 0;
|
||||
|
||||
if (select_idx == ARMV8_PMU_CYCLE_IDX)
|
||||
return false;
|
||||
|
||||
reg = PMEVTYPER0_EL0 + select_idx;
|
||||
eventsel = __vcpu_sys_reg(vcpu, reg) & kvm_pmu_event_mask(vcpu->kvm);
|
||||
|
||||
return eventsel == ARMV8_PMUV3_PERFCTR_CHAIN;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_get_pair_counter_value - get PMU counter value
|
||||
* @vcpu: The vcpu pointer
|
||||
* @pmc: The PMU counter pointer
|
||||
*/
|
||||
static u64 kvm_pmu_get_pair_counter_value(struct kvm_vcpu *vcpu,
|
||||
struct kvm_pmc *pmc)
|
||||
{
|
||||
u64 counter, counter_high, reg, enabled, running;
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(pmc)) {
|
||||
pmc = kvm_pmu_get_canonical_pmc(pmc);
|
||||
reg = PMEVCNTR0_EL0 + pmc->idx;
|
||||
|
||||
counter = __vcpu_sys_reg(vcpu, reg);
|
||||
counter_high = __vcpu_sys_reg(vcpu, reg + 1);
|
||||
|
||||
counter = lower_32_bits(counter) | (counter_high << 32);
|
||||
} else {
|
||||
reg = (pmc->idx == ARMV8_PMU_CYCLE_IDX)
|
||||
? PMCCNTR_EL0 : PMEVCNTR0_EL0 + pmc->idx;
|
||||
counter = __vcpu_sys_reg(vcpu, reg);
|
||||
}
|
||||
reg = (pmc->idx == ARMV8_PMU_CYCLE_IDX)
|
||||
? PMCCNTR_EL0 : PMEVCNTR0_EL0 + pmc->idx;
|
||||
counter = __vcpu_sys_reg(vcpu, reg);
|
||||
|
||||
/*
|
||||
* The real counter value is equal to the value of counter register plus
|
||||
|
|
@ -163,29 +103,7 @@ static u64 kvm_pmu_get_pair_counter_value(struct kvm_vcpu *vcpu,
|
|||
counter += perf_event_read_value(pmc->perf_event, &enabled,
|
||||
&running);
|
||||
|
||||
return counter;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_get_counter_value - get PMU counter value
|
||||
* @vcpu: The vcpu pointer
|
||||
* @select_idx: The counter index
|
||||
*/
|
||||
u64 kvm_pmu_get_counter_value(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
u64 counter;
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
struct kvm_pmc *pmc = &pmu->pmc[select_idx];
|
||||
|
||||
if (!kvm_vcpu_has_pmu(vcpu))
|
||||
return 0;
|
||||
|
||||
counter = kvm_pmu_get_pair_counter_value(vcpu, pmc);
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(pmc) &&
|
||||
kvm_pmu_idx_is_high_counter(select_idx))
|
||||
counter = upper_32_bits(counter);
|
||||
else if (select_idx != ARMV8_PMU_CYCLE_IDX)
|
||||
if (!kvm_pmu_idx_is_64bit(vcpu, select_idx))
|
||||
counter = lower_32_bits(counter);
|
||||
|
||||
return counter;
|
||||
|
|
@ -218,7 +136,6 @@ void kvm_pmu_set_counter_value(struct kvm_vcpu *vcpu, u64 select_idx, u64 val)
|
|||
*/
|
||||
static void kvm_pmu_release_perf_event(struct kvm_pmc *pmc)
|
||||
{
|
||||
pmc = kvm_pmu_get_canonical_pmc(pmc);
|
||||
if (pmc->perf_event) {
|
||||
perf_event_disable(pmc->perf_event);
|
||||
perf_event_release_kernel(pmc->perf_event);
|
||||
|
|
@ -236,11 +153,10 @@ static void kvm_pmu_stop_counter(struct kvm_vcpu *vcpu, struct kvm_pmc *pmc)
|
|||
{
|
||||
u64 counter, reg, val;
|
||||
|
||||
pmc = kvm_pmu_get_canonical_pmc(pmc);
|
||||
if (!pmc->perf_event)
|
||||
return;
|
||||
|
||||
counter = kvm_pmu_get_pair_counter_value(vcpu, pmc);
|
||||
counter = kvm_pmu_get_counter_value(vcpu, pmc->idx);
|
||||
|
||||
if (pmc->idx == ARMV8_PMU_CYCLE_IDX) {
|
||||
reg = PMCCNTR_EL0;
|
||||
|
|
@ -252,9 +168,6 @@ static void kvm_pmu_stop_counter(struct kvm_vcpu *vcpu, struct kvm_pmc *pmc)
|
|||
|
||||
__vcpu_sys_reg(vcpu, reg) = val;
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(pmc))
|
||||
__vcpu_sys_reg(vcpu, reg + 1) = upper_32_bits(counter);
|
||||
|
||||
kvm_pmu_release_perf_event(pmc);
|
||||
}
|
||||
|
||||
|
|
@ -285,8 +198,6 @@ void kvm_pmu_vcpu_reset(struct kvm_vcpu *vcpu)
|
|||
|
||||
for_each_set_bit(i, &mask, 32)
|
||||
kvm_pmu_stop_counter(vcpu, &pmu->pmc[i]);
|
||||
|
||||
bitmap_zero(vcpu->arch.pmu.chained, ARMV8_PMU_MAX_COUNTER_PAIRS);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -340,12 +251,9 @@ void kvm_pmu_enable_counter_mask(struct kvm_vcpu *vcpu, u64 val)
|
|||
|
||||
pmc = &pmu->pmc[i];
|
||||
|
||||
/* A change in the enable state may affect the chain state */
|
||||
kvm_pmu_update_pmc_chained(vcpu, i);
|
||||
kvm_pmu_create_perf_event(vcpu, i);
|
||||
|
||||
/* At this point, pmc must be the canonical */
|
||||
if (pmc->perf_event) {
|
||||
if (!pmc->perf_event) {
|
||||
kvm_pmu_create_perf_event(vcpu, i);
|
||||
} else {
|
||||
perf_event_enable(pmc->perf_event);
|
||||
if (pmc->perf_event->state != PERF_EVENT_STATE_ACTIVE)
|
||||
kvm_debug("fail to enable perf event\n");
|
||||
|
|
@ -375,11 +283,6 @@ void kvm_pmu_disable_counter_mask(struct kvm_vcpu *vcpu, u64 val)
|
|||
|
||||
pmc = &pmu->pmc[i];
|
||||
|
||||
/* A change in the enable state may affect the chain state */
|
||||
kvm_pmu_update_pmc_chained(vcpu, i);
|
||||
kvm_pmu_create_perf_event(vcpu, i);
|
||||
|
||||
/* At this point, pmc must be the canonical */
|
||||
if (pmc->perf_event)
|
||||
perf_event_disable(pmc->perf_event);
|
||||
}
|
||||
|
|
@ -484,6 +387,65 @@ static void kvm_pmu_perf_overflow_notify_vcpu(struct irq_work *work)
|
|||
kvm_vcpu_kick(vcpu);
|
||||
}
|
||||
|
||||
/*
|
||||
* Perform an increment on any of the counters described in @mask,
|
||||
* generating the overflow if required, and propagate it as a chained
|
||||
* event if possible.
|
||||
*/
|
||||
static void kvm_pmu_counter_increment(struct kvm_vcpu *vcpu,
|
||||
unsigned long mask, u32 event)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!(__vcpu_sys_reg(vcpu, PMCR_EL0) & ARMV8_PMU_PMCR_E))
|
||||
return;
|
||||
|
||||
/* Weed out disabled counters */
|
||||
mask &= __vcpu_sys_reg(vcpu, PMCNTENSET_EL0);
|
||||
|
||||
for_each_set_bit(i, &mask, ARMV8_PMU_CYCLE_IDX) {
|
||||
u64 type, reg;
|
||||
|
||||
/* Filter on event type */
|
||||
type = __vcpu_sys_reg(vcpu, PMEVTYPER0_EL0 + i);
|
||||
type &= kvm_pmu_event_mask(vcpu->kvm);
|
||||
if (type != event)
|
||||
continue;
|
||||
|
||||
/* Increment this counter */
|
||||
reg = __vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) + 1;
|
||||
reg = lower_32_bits(reg);
|
||||
__vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) = reg;
|
||||
|
||||
if (reg) /* No overflow? move on */
|
||||
continue;
|
||||
|
||||
/* Mark overflow */
|
||||
__vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(i);
|
||||
|
||||
if (kvm_pmu_counter_can_chain(vcpu, i))
|
||||
kvm_pmu_counter_increment(vcpu, BIT(i + 1),
|
||||
ARMV8_PMUV3_PERFCTR_CHAIN);
|
||||
}
|
||||
}
|
||||
|
||||
/* Compute the sample period for a given counter value */
|
||||
static u64 compute_period(struct kvm_vcpu *vcpu, u64 select_idx, u64 counter)
|
||||
{
|
||||
u64 val;
|
||||
|
||||
if (kvm_pmu_idx_is_64bit(vcpu, select_idx)) {
|
||||
if (!kvm_pmu_idx_has_64bit_overflow(vcpu, select_idx))
|
||||
val = -(counter & GENMASK(31, 0));
|
||||
else
|
||||
val = (-counter) & GENMASK(63, 0);
|
||||
} else {
|
||||
val = (-counter) & GENMASK(31, 0);
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* When the perf event overflows, set the overflow status and inform the vcpu.
|
||||
*/
|
||||
|
|
@ -503,10 +465,7 @@ static void kvm_pmu_perf_overflow(struct perf_event *perf_event,
|
|||
* Reset the sample period to the architectural limit,
|
||||
* i.e. the point where the counter overflows.
|
||||
*/
|
||||
period = -(local64_read(&perf_event->count));
|
||||
|
||||
if (!kvm_pmu_idx_is_64bit(vcpu, pmc->idx))
|
||||
period &= GENMASK(31, 0);
|
||||
period = compute_period(vcpu, idx, local64_read(&perf_event->count));
|
||||
|
||||
local64_set(&perf_event->hw.period_left, 0);
|
||||
perf_event->attr.sample_period = period;
|
||||
|
|
@ -514,6 +473,10 @@ static void kvm_pmu_perf_overflow(struct perf_event *perf_event,
|
|||
|
||||
__vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(idx);
|
||||
|
||||
if (kvm_pmu_counter_can_chain(vcpu, idx))
|
||||
kvm_pmu_counter_increment(vcpu, BIT(idx + 1),
|
||||
ARMV8_PMUV3_PERFCTR_CHAIN);
|
||||
|
||||
if (kvm_pmu_overflow_status(vcpu)) {
|
||||
kvm_make_request(KVM_REQ_IRQ_PENDING, vcpu);
|
||||
|
||||
|
|
@ -533,50 +496,7 @@ static void kvm_pmu_perf_overflow(struct perf_event *perf_event,
|
|||
*/
|
||||
void kvm_pmu_software_increment(struct kvm_vcpu *vcpu, u64 val)
|
||||
{
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
int i;
|
||||
|
||||
if (!kvm_vcpu_has_pmu(vcpu))
|
||||
return;
|
||||
|
||||
if (!(__vcpu_sys_reg(vcpu, PMCR_EL0) & ARMV8_PMU_PMCR_E))
|
||||
return;
|
||||
|
||||
/* Weed out disabled counters */
|
||||
val &= __vcpu_sys_reg(vcpu, PMCNTENSET_EL0);
|
||||
|
||||
for (i = 0; i < ARMV8_PMU_CYCLE_IDX; i++) {
|
||||
u64 type, reg;
|
||||
|
||||
if (!(val & BIT(i)))
|
||||
continue;
|
||||
|
||||
/* PMSWINC only applies to ... SW_INC! */
|
||||
type = __vcpu_sys_reg(vcpu, PMEVTYPER0_EL0 + i);
|
||||
type &= kvm_pmu_event_mask(vcpu->kvm);
|
||||
if (type != ARMV8_PMUV3_PERFCTR_SW_INCR)
|
||||
continue;
|
||||
|
||||
/* increment this even SW_INC counter */
|
||||
reg = __vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) + 1;
|
||||
reg = lower_32_bits(reg);
|
||||
__vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) = reg;
|
||||
|
||||
if (reg) /* no overflow on the low part */
|
||||
continue;
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(&pmu->pmc[i])) {
|
||||
/* increment the high counter */
|
||||
reg = __vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i + 1) + 1;
|
||||
reg = lower_32_bits(reg);
|
||||
__vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i + 1) = reg;
|
||||
if (!reg) /* mark overflow on the high counter */
|
||||
__vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(i + 1);
|
||||
} else {
|
||||
/* mark overflow on low counter */
|
||||
__vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(i);
|
||||
}
|
||||
}
|
||||
kvm_pmu_counter_increment(vcpu, val, ARMV8_PMUV3_PERFCTR_SW_INCR);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -591,6 +511,9 @@ void kvm_pmu_handle_pmcr(struct kvm_vcpu *vcpu, u64 val)
|
|||
if (!kvm_vcpu_has_pmu(vcpu))
|
||||
return;
|
||||
|
||||
/* The reset bits don't indicate any state, and shouldn't be saved. */
|
||||
__vcpu_sys_reg(vcpu, PMCR_EL0) = val & ~(ARMV8_PMU_PMCR_C | ARMV8_PMU_PMCR_P);
|
||||
|
||||
if (val & ARMV8_PMU_PMCR_E) {
|
||||
kvm_pmu_enable_counter_mask(vcpu,
|
||||
__vcpu_sys_reg(vcpu, PMCNTENSET_EL0));
|
||||
|
|
@ -626,18 +549,11 @@ static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx)
|
|||
{
|
||||
struct arm_pmu *arm_pmu = vcpu->kvm->arch.arm_pmu;
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
struct kvm_pmc *pmc;
|
||||
struct kvm_pmc *pmc = &pmu->pmc[select_idx];
|
||||
struct perf_event *event;
|
||||
struct perf_event_attr attr;
|
||||
u64 eventsel, counter, reg, data;
|
||||
|
||||
/*
|
||||
* For chained counters the event type and filtering attributes are
|
||||
* obtained from the low/even counter. We also use this counter to
|
||||
* determine if the event is enabled/disabled.
|
||||
*/
|
||||
pmc = kvm_pmu_get_canonical_pmc(&pmu->pmc[select_idx]);
|
||||
|
||||
reg = (pmc->idx == ARMV8_PMU_CYCLE_IDX)
|
||||
? PMCCFILTR_EL0 : PMEVTYPER0_EL0 + pmc->idx;
|
||||
data = __vcpu_sys_reg(vcpu, reg);
|
||||
|
|
@ -648,8 +564,12 @@ static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx)
|
|||
else
|
||||
eventsel = data & kvm_pmu_event_mask(vcpu->kvm);
|
||||
|
||||
/* Software increment event doesn't need to be backed by a perf event */
|
||||
if (eventsel == ARMV8_PMUV3_PERFCTR_SW_INCR)
|
||||
/*
|
||||
* Neither SW increment nor chained events need to be backed
|
||||
* by a perf event.
|
||||
*/
|
||||
if (eventsel == ARMV8_PMUV3_PERFCTR_SW_INCR ||
|
||||
eventsel == ARMV8_PMUV3_PERFCTR_CHAIN)
|
||||
return;
|
||||
|
||||
/*
|
||||
|
|
@ -671,30 +591,20 @@ static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx)
|
|||
attr.exclude_host = 1; /* Don't count host events */
|
||||
attr.config = eventsel;
|
||||
|
||||
counter = kvm_pmu_get_pair_counter_value(vcpu, pmc);
|
||||
counter = kvm_pmu_get_counter_value(vcpu, select_idx);
|
||||
|
||||
if (kvm_pmu_pmc_is_chained(pmc)) {
|
||||
/**
|
||||
* The initial sample period (overflow count) of an event. For
|
||||
* chained counters we only support overflow interrupts on the
|
||||
* high counter.
|
||||
*/
|
||||
attr.sample_period = (-counter) & GENMASK(63, 0);
|
||||
attr.config1 |= PERF_ATTR_CFG1_KVM_PMU_CHAINED;
|
||||
/*
|
||||
* If counting with a 64bit counter, advertise it to the perf
|
||||
* code, carefully dealing with the initial sample period
|
||||
* which also depends on the overflow.
|
||||
*/
|
||||
if (kvm_pmu_idx_is_64bit(vcpu, select_idx))
|
||||
attr.config1 |= PERF_ATTR_CFG1_COUNTER_64BIT;
|
||||
|
||||
event = perf_event_create_kernel_counter(&attr, -1, current,
|
||||
kvm_pmu_perf_overflow,
|
||||
pmc + 1);
|
||||
} else {
|
||||
/* The initial sample period (overflow count) of an event. */
|
||||
if (kvm_pmu_idx_is_64bit(vcpu, pmc->idx))
|
||||
attr.sample_period = (-counter) & GENMASK(63, 0);
|
||||
else
|
||||
attr.sample_period = (-counter) & GENMASK(31, 0);
|
||||
attr.sample_period = compute_period(vcpu, select_idx, counter);
|
||||
|
||||
event = perf_event_create_kernel_counter(&attr, -1, current,
|
||||
event = perf_event_create_kernel_counter(&attr, -1, current,
|
||||
kvm_pmu_perf_overflow, pmc);
|
||||
}
|
||||
|
||||
if (IS_ERR(event)) {
|
||||
pr_err_once("kvm: pmu event creation failed %ld\n",
|
||||
|
|
@ -705,41 +615,6 @@ static void kvm_pmu_create_perf_event(struct kvm_vcpu *vcpu, u64 select_idx)
|
|||
pmc->perf_event = event;
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_update_pmc_chained - update chained bitmap
|
||||
* @vcpu: The vcpu pointer
|
||||
* @select_idx: The number of selected counter
|
||||
*
|
||||
* Update the chained bitmap based on the event type written in the
|
||||
* typer register and the enable state of the odd register.
|
||||
*/
|
||||
static void kvm_pmu_update_pmc_chained(struct kvm_vcpu *vcpu, u64 select_idx)
|
||||
{
|
||||
struct kvm_pmu *pmu = &vcpu->arch.pmu;
|
||||
struct kvm_pmc *pmc = &pmu->pmc[select_idx], *canonical_pmc;
|
||||
bool new_state, old_state;
|
||||
|
||||
old_state = kvm_pmu_pmc_is_chained(pmc);
|
||||
new_state = kvm_pmu_idx_has_chain_evtype(vcpu, pmc->idx) &&
|
||||
kvm_pmu_counter_is_enabled(vcpu, pmc->idx | 0x1);
|
||||
|
||||
if (old_state == new_state)
|
||||
return;
|
||||
|
||||
canonical_pmc = kvm_pmu_get_canonical_pmc(pmc);
|
||||
kvm_pmu_stop_counter(vcpu, canonical_pmc);
|
||||
if (new_state) {
|
||||
/*
|
||||
* During promotion from !chained to chained we must ensure
|
||||
* the adjacent counter is stopped and its event destroyed
|
||||
*/
|
||||
kvm_pmu_stop_counter(vcpu, kvm_pmu_get_alternate_pmc(pmc));
|
||||
set_bit(pmc->idx >> 1, vcpu->arch.pmu.chained);
|
||||
return;
|
||||
}
|
||||
clear_bit(pmc->idx >> 1, vcpu->arch.pmu.chained);
|
||||
}
|
||||
|
||||
/**
|
||||
* kvm_pmu_set_counter_event_type - set selected counter to monitor some event
|
||||
* @vcpu: The vcpu pointer
|
||||
|
|
@ -767,7 +642,6 @@ void kvm_pmu_set_counter_event_type(struct kvm_vcpu *vcpu, u64 data,
|
|||
|
||||
__vcpu_sys_reg(vcpu, reg) = data & mask;
|
||||
|
||||
kvm_pmu_update_pmc_chained(vcpu, select_idx);
|
||||
kvm_pmu_create_perf_event(vcpu, select_idx);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -665,13 +665,15 @@ static bool access_pmcr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
|
|||
return false;
|
||||
|
||||
if (p->is_write) {
|
||||
/* Only update writeable bits of PMCR */
|
||||
/*
|
||||
* Only update writeable bits of PMCR (continuing into
|
||||
* kvm_pmu_handle_pmcr() as well)
|
||||
*/
|
||||
val = __vcpu_sys_reg(vcpu, PMCR_EL0);
|
||||
val &= ~ARMV8_PMU_PMCR_MASK;
|
||||
val |= p->regval & ARMV8_PMU_PMCR_MASK;
|
||||
if (!kvm_supports_32bit_el0())
|
||||
val |= ARMV8_PMU_PMCR_LC;
|
||||
__vcpu_sys_reg(vcpu, PMCR_EL0) = val;
|
||||
kvm_pmu_handle_pmcr(vcpu, val);
|
||||
} else {
|
||||
/* PMCR.P & PMCR.C are RAZ */
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
#define cpu_has_fpu cpu_opt(LOONGARCH_CPU_FPU)
|
||||
#define cpu_has_lsx cpu_opt(LOONGARCH_CPU_LSX)
|
||||
#define cpu_has_lasx cpu_opt(LOONGARCH_CPU_LASX)
|
||||
#define cpu_has_crc32 cpu_opt(LOONGARCH_CPU_CRC32)
|
||||
#define cpu_has_complex cpu_opt(LOONGARCH_CPU_COMPLEX)
|
||||
#define cpu_has_crypto cpu_opt(LOONGARCH_CPU_CRYPTO)
|
||||
#define cpu_has_lvz cpu_opt(LOONGARCH_CPU_LVZ)
|
||||
|
|
|
|||
|
|
@ -78,25 +78,26 @@ enum cpu_type_enum {
|
|||
#define CPU_FEATURE_FPU 3 /* CPU has FPU */
|
||||
#define CPU_FEATURE_LSX 4 /* CPU has LSX (128-bit SIMD) */
|
||||
#define CPU_FEATURE_LASX 5 /* CPU has LASX (256-bit SIMD) */
|
||||
#define CPU_FEATURE_COMPLEX 6 /* CPU has Complex instructions */
|
||||
#define CPU_FEATURE_CRYPTO 7 /* CPU has Crypto instructions */
|
||||
#define CPU_FEATURE_LVZ 8 /* CPU has Virtualization extension */
|
||||
#define CPU_FEATURE_LBT_X86 9 /* CPU has X86 Binary Translation */
|
||||
#define CPU_FEATURE_LBT_ARM 10 /* CPU has ARM Binary Translation */
|
||||
#define CPU_FEATURE_LBT_MIPS 11 /* CPU has MIPS Binary Translation */
|
||||
#define CPU_FEATURE_TLB 12 /* CPU has TLB */
|
||||
#define CPU_FEATURE_CSR 13 /* CPU has CSR */
|
||||
#define CPU_FEATURE_WATCH 14 /* CPU has watchpoint registers */
|
||||
#define CPU_FEATURE_VINT 15 /* CPU has vectored interrupts */
|
||||
#define CPU_FEATURE_CSRIPI 16 /* CPU has CSR-IPI */
|
||||
#define CPU_FEATURE_EXTIOI 17 /* CPU has EXT-IOI */
|
||||
#define CPU_FEATURE_PREFETCH 18 /* CPU has prefetch instructions */
|
||||
#define CPU_FEATURE_PMP 19 /* CPU has perfermance counter */
|
||||
#define CPU_FEATURE_SCALEFREQ 20 /* CPU supports cpufreq scaling */
|
||||
#define CPU_FEATURE_FLATMODE 21 /* CPU has flat mode */
|
||||
#define CPU_FEATURE_EIODECODE 22 /* CPU has EXTIOI interrupt pin decode mode */
|
||||
#define CPU_FEATURE_GUESTID 23 /* CPU has GuestID feature */
|
||||
#define CPU_FEATURE_HYPERVISOR 24 /* CPU has hypervisor (running in VM) */
|
||||
#define CPU_FEATURE_CRC32 6 /* CPU has CRC32 instructions */
|
||||
#define CPU_FEATURE_COMPLEX 7 /* CPU has Complex instructions */
|
||||
#define CPU_FEATURE_CRYPTO 8 /* CPU has Crypto instructions */
|
||||
#define CPU_FEATURE_LVZ 9 /* CPU has Virtualization extension */
|
||||
#define CPU_FEATURE_LBT_X86 10 /* CPU has X86 Binary Translation */
|
||||
#define CPU_FEATURE_LBT_ARM 11 /* CPU has ARM Binary Translation */
|
||||
#define CPU_FEATURE_LBT_MIPS 12 /* CPU has MIPS Binary Translation */
|
||||
#define CPU_FEATURE_TLB 13 /* CPU has TLB */
|
||||
#define CPU_FEATURE_CSR 14 /* CPU has CSR */
|
||||
#define CPU_FEATURE_WATCH 15 /* CPU has watchpoint registers */
|
||||
#define CPU_FEATURE_VINT 16 /* CPU has vectored interrupts */
|
||||
#define CPU_FEATURE_CSRIPI 17 /* CPU has CSR-IPI */
|
||||
#define CPU_FEATURE_EXTIOI 18 /* CPU has EXT-IOI */
|
||||
#define CPU_FEATURE_PREFETCH 19 /* CPU has prefetch instructions */
|
||||
#define CPU_FEATURE_PMP 20 /* CPU has perfermance counter */
|
||||
#define CPU_FEATURE_SCALEFREQ 21 /* CPU supports cpufreq scaling */
|
||||
#define CPU_FEATURE_FLATMODE 22 /* CPU has flat mode */
|
||||
#define CPU_FEATURE_EIODECODE 23 /* CPU has EXTIOI interrupt pin decode mode */
|
||||
#define CPU_FEATURE_GUESTID 24 /* CPU has GuestID feature */
|
||||
#define CPU_FEATURE_HYPERVISOR 25 /* CPU has hypervisor (running in VM) */
|
||||
|
||||
#define LOONGARCH_CPU_CPUCFG BIT_ULL(CPU_FEATURE_CPUCFG)
|
||||
#define LOONGARCH_CPU_LAM BIT_ULL(CPU_FEATURE_LAM)
|
||||
|
|
@ -104,6 +105,7 @@ enum cpu_type_enum {
|
|||
#define LOONGARCH_CPU_FPU BIT_ULL(CPU_FEATURE_FPU)
|
||||
#define LOONGARCH_CPU_LSX BIT_ULL(CPU_FEATURE_LSX)
|
||||
#define LOONGARCH_CPU_LASX BIT_ULL(CPU_FEATURE_LASX)
|
||||
#define LOONGARCH_CPU_CRC32 BIT_ULL(CPU_FEATURE_CRC32)
|
||||
#define LOONGARCH_CPU_COMPLEX BIT_ULL(CPU_FEATURE_COMPLEX)
|
||||
#define LOONGARCH_CPU_CRYPTO BIT_ULL(CPU_FEATURE_CRYPTO)
|
||||
#define LOONGARCH_CPU_LVZ BIT_ULL(CPU_FEATURE_LVZ)
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ static inline u32 read_cpucfg(u32 reg)
|
|||
#define CPUCFG1_EP BIT(22)
|
||||
#define CPUCFG1_RPLV BIT(23)
|
||||
#define CPUCFG1_HUGEPG BIT(24)
|
||||
#define CPUCFG1_IOCSRBRD BIT(25)
|
||||
#define CPUCFG1_CRC32 BIT(25)
|
||||
#define CPUCFG1_MSGINT BIT(26)
|
||||
|
||||
#define LOONGARCH_CPUCFG2 0x2
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ static inline void set_elf_platform(int cpu, const char *plat)
|
|||
|
||||
/* MAP BASE */
|
||||
unsigned long vm_map_base;
|
||||
EXPORT_SYMBOL_GPL(vm_map_base);
|
||||
EXPORT_SYMBOL(vm_map_base);
|
||||
|
||||
static void cpu_probe_addrbits(struct cpuinfo_loongarch *c)
|
||||
{
|
||||
|
|
@ -94,13 +94,18 @@ static void cpu_probe_common(struct cpuinfo_loongarch *c)
|
|||
c->options = LOONGARCH_CPU_CPUCFG | LOONGARCH_CPU_CSR |
|
||||
LOONGARCH_CPU_TLB | LOONGARCH_CPU_VINT | LOONGARCH_CPU_WATCH;
|
||||
|
||||
elf_hwcap = HWCAP_LOONGARCH_CPUCFG | HWCAP_LOONGARCH_CRC32;
|
||||
elf_hwcap = HWCAP_LOONGARCH_CPUCFG;
|
||||
|
||||
config = read_cpucfg(LOONGARCH_CPUCFG1);
|
||||
if (config & CPUCFG1_UAL) {
|
||||
c->options |= LOONGARCH_CPU_UAL;
|
||||
elf_hwcap |= HWCAP_LOONGARCH_UAL;
|
||||
}
|
||||
if (config & CPUCFG1_CRC32) {
|
||||
c->options |= LOONGARCH_CPU_CRC32;
|
||||
elf_hwcap |= HWCAP_LOONGARCH_CRC32;
|
||||
}
|
||||
|
||||
|
||||
config = read_cpucfg(LOONGARCH_CPUCFG2);
|
||||
if (config & CPUCFG2_LAM) {
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
|
|||
if (cpu_has_fpu) seq_printf(m, " fpu");
|
||||
if (cpu_has_lsx) seq_printf(m, " lsx");
|
||||
if (cpu_has_lasx) seq_printf(m, " lasx");
|
||||
if (cpu_has_crc32) seq_printf(m, " crc32");
|
||||
if (cpu_has_complex) seq_printf(m, " complex");
|
||||
if (cpu_has_crypto) seq_printf(m, " crypto");
|
||||
if (cpu_has_lvz) seq_printf(m, " lvz");
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
* don't have to care about aliases on other CPUs.
|
||||
*/
|
||||
unsigned long empty_zero_page, zero_page_mask;
|
||||
EXPORT_SYMBOL_GPL(empty_zero_page);
|
||||
EXPORT_SYMBOL(empty_zero_page);
|
||||
EXPORT_SYMBOL(zero_page_mask);
|
||||
|
||||
void setup_zero_pages(void)
|
||||
|
|
@ -231,7 +231,7 @@ pud_t invalid_pud_table[PTRS_PER_PUD] __page_aligned_bss;
|
|||
#endif
|
||||
#ifndef __PAGETABLE_PMD_FOLDED
|
||||
pmd_t invalid_pmd_table[PTRS_PER_PMD] __page_aligned_bss;
|
||||
EXPORT_SYMBOL_GPL(invalid_pmd_table);
|
||||
EXPORT_SYMBOL(invalid_pmd_table);
|
||||
#endif
|
||||
pte_t invalid_pte_table[PTRS_PER_PTE] __page_aligned_bss;
|
||||
EXPORT_SYMBOL(invalid_pte_table);
|
||||
|
|
|
|||
|
|
@ -273,11 +273,6 @@ CONFIG_BT_HCIUART=m
|
|||
CONFIG_BT_HCIUART_LL=y
|
||||
CONFIG_BT_HCIUART_BCM=y
|
||||
CONFIG_BT_HCIUART_QCA=y
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
# CONFIG_CFG80211_DEFAULT_PS is not set
|
||||
# CONFIG_CFG80211_CRDA_SUPPORT is not set
|
||||
CONFIG_MAC80211=m
|
||||
CONFIG_RFKILL=m
|
||||
CONFIG_NFC=m
|
||||
CONFIG_PCI=y
|
||||
|
|
|
|||
|
|
@ -98,10 +98,6 @@ void __blk_mq_tag_idle(struct blk_mq_hw_ctx *hctx)
|
|||
static int __blk_mq_get_tag(struct blk_mq_alloc_data *data,
|
||||
struct sbitmap_queue *bt)
|
||||
{
|
||||
if (!data->q->elevator && !(data->flags & BLK_MQ_REQ_RESERVED) &&
|
||||
!hctx_may_queue(data->hctx, bt))
|
||||
return BLK_MQ_NO_TAG;
|
||||
|
||||
if (data->shallow_depth)
|
||||
return sbitmap_queue_get_shallow(bt, data->shallow_depth);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -1748,9 +1748,6 @@ static bool __blk_mq_alloc_driver_tag(struct request *rq)
|
|||
if (blk_mq_tag_is_reserved(rq->mq_hctx->sched_tags, rq->internal_tag)) {
|
||||
bt = &rq->mq_hctx->tags->breserved_tags;
|
||||
tag_offset = 0;
|
||||
} else {
|
||||
if (!hctx_may_queue(rq->mq_hctx, bt))
|
||||
return false;
|
||||
}
|
||||
|
||||
tag = __sbitmap_queue_get(bt);
|
||||
|
|
|
|||
|
|
@ -334,46 +334,6 @@ static inline void blk_mq_free_requests(struct list_head *list)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* For shared tag users, we track the number of currently active users
|
||||
* and attempt to provide a fair share of the tag depth for each of them.
|
||||
*/
|
||||
static inline bool hctx_may_queue(struct blk_mq_hw_ctx *hctx,
|
||||
struct sbitmap_queue *bt)
|
||||
{
|
||||
unsigned int depth, users;
|
||||
|
||||
if (!hctx || !(hctx->flags & BLK_MQ_F_TAG_QUEUE_SHARED))
|
||||
return true;
|
||||
|
||||
/*
|
||||
* Don't try dividing an ant
|
||||
*/
|
||||
if (bt->sb.depth == 1)
|
||||
return true;
|
||||
|
||||
if (blk_mq_is_shared_tags(hctx->flags)) {
|
||||
struct request_queue *q = hctx->queue;
|
||||
|
||||
if (!test_bit(QUEUE_FLAG_HCTX_ACTIVE, &q->queue_flags))
|
||||
return true;
|
||||
} else {
|
||||
if (!test_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state))
|
||||
return true;
|
||||
}
|
||||
|
||||
users = atomic_read(&hctx->tags->active_queues);
|
||||
|
||||
if (!users)
|
||||
return true;
|
||||
|
||||
/*
|
||||
* Allow at least some tags
|
||||
*/
|
||||
depth = max((bt->sb.depth + users - 1) / users, 4U);
|
||||
return __blk_mq_active_requests(hctx) < depth;
|
||||
}
|
||||
|
||||
/* run the code block in @dispatch_ops with rcu/srcu read lock held */
|
||||
#define __blk_mq_run_dispatch_ops(q, check_sleep, dispatch_ops) \
|
||||
do { \
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.constants
|
||||
|
||||
KMI_GENERATION=5
|
||||
KMI_GENERATION=6
|
||||
|
||||
LLVM=1
|
||||
DEPMOD=depmod
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
BRANCH=android14-6.1
|
||||
CLANG_VERSION=r487747
|
||||
CLANG_VERSION=r487747c
|
||||
AARCH64_NDK_TRIPLE=aarch64-linux-android31
|
||||
X86_64_NDK_TRIPLE=x86_64-linux-android31
|
||||
ARM_NDK_TRIPLE=arm-linux-androideabi31
|
||||
|
|
|
|||
|
|
@ -7,13 +7,6 @@ FRAGMENT_CONFIG=${KERNEL_DIR}/arch/arm64/configs/db845c_gki.fragment
|
|||
PRE_DEFCONFIG_CMDS="KCONFIG_CONFIG=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${FRAGMENT_CONFIG}"
|
||||
POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}"
|
||||
|
||||
MAKE_GOALS="
|
||||
modules
|
||||
qcom/sdm845-db845c.dtb
|
||||
qcom/qrb5165-rb5.dtb
|
||||
qcom/sm8450-qrd.dtb
|
||||
"
|
||||
|
||||
FILES="
|
||||
arch/arm64/boot/dts/qcom/sdm845-db845c.dtb
|
||||
arch/arm64/boot/dts/qcom/qrb5165-rb5.dtb
|
||||
|
|
|
|||
|
|
@ -2,13 +2,6 @@
|
|||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64
|
||||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki
|
||||
|
||||
MAKE_GOALS="
|
||||
Image
|
||||
modules
|
||||
Image.lz4
|
||||
Image.gz
|
||||
"
|
||||
|
||||
FILES="${FILES}
|
||||
arch/arm64/boot/Image.lz4
|
||||
arch/arm64/boot/Image.gz
|
||||
|
|
|
|||
|
|
@ -2,13 +2,6 @@
|
|||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.riscv64
|
||||
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki
|
||||
|
||||
MAKE_GOALS="
|
||||
Image
|
||||
modules
|
||||
Image.lz4
|
||||
Image.gz
|
||||
"
|
||||
|
||||
FILES="${FILES}
|
||||
arch/riscv/boot/Image.lz4
|
||||
arch/riscv/boot/Image.gz
|
||||
|
|
|
|||
|
|
@ -12,11 +12,6 @@ POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG
|
|||
|
||||
DTS_EXT_DIR=common-modules/virtual-device
|
||||
DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/boot/dts/rockchip
|
||||
MAKE_GOALS="
|
||||
Image
|
||||
modules
|
||||
rk3399-rock-pi-4b.dtb
|
||||
"
|
||||
|
||||
FILES="${FILES}
|
||||
../common-modules/virtual-device/rk3399-rock-pi-4b.dtb
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
#include <linux/iova.h>
|
||||
#include <linux/dma-buf.h>
|
||||
#include <linux/futex.h>
|
||||
#include <linux/pm_qos.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/hooks/vendor_hooks.h>
|
||||
|
|
@ -58,6 +60,7 @@
|
|||
#include <trace/hooks/thermal.h>
|
||||
#include <trace/hooks/audio_usboffload.h>
|
||||
#include <trace/hooks/typec.h>
|
||||
#include <trace/hooks/user.h>
|
||||
|
||||
/*
|
||||
* Export tracepoints that act as a bare tracehook (ie: have no trace event
|
||||
|
|
@ -138,6 +141,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction_entry);
|
|||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_select_worklist_ilocked);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_txn_recvd);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpufreq_transition);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_add_request);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_update_request);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_qos_remove_request);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_balance_anon_file_reclaim);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_show_max_freq);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_insert);
|
||||
|
|
@ -169,6 +175,13 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
|
|||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_sleep_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_futex);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wait_start);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wait_end);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_traverse_plist);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_this);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_up_q_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sha256);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_aes_expandkey);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_aes_encrypt);
|
||||
|
|
@ -214,3 +227,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_thread_release);
|
|||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_has_work_ilocked);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_read_done);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_uid);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_user);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpuset_fork);
|
||||
|
|
|
|||
|
|
@ -657,9 +657,10 @@ static void mvebu_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
|
|||
spin_unlock_irqrestore(&mvpwm->lock, flags);
|
||||
}
|
||||
|
||||
static void mvebu_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state) {
|
||||
static int mvebu_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
|
||||
struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip);
|
||||
struct mvebu_gpio_chip *mvchip = mvpwm->mvchip;
|
||||
|
|
@ -693,6 +694,8 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip,
|
|||
state->enabled = false;
|
||||
|
||||
spin_unlock_irqrestore(&mvpwm->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
|
|
|
|||
|
|
@ -1500,8 +1500,8 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void ti_sn_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int ti_sn_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct ti_sn65dsi86 *pdata = pwm_chip_to_ti_sn_bridge(chip);
|
||||
unsigned int pwm_en_inv;
|
||||
|
|
@ -1512,19 +1512,19 @@ static void ti_sn_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
|
||||
ret = regmap_read(pdata->regmap, SN_PWM_EN_INV_REG, &pwm_en_inv);
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
ret = ti_sn65dsi86_read_u16(pdata, SN_BACKLIGHT_SCALE_REG, &scale);
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
ret = ti_sn65dsi86_read_u16(pdata, SN_BACKLIGHT_REG, &backlight);
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
ret = regmap_read(pdata->regmap, SN_PWM_PRE_DIV_REG, &pre_div);
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
state->enabled = FIELD_GET(SN_PWM_EN_MASK, pwm_en_inv);
|
||||
if (FIELD_GET(SN_PWM_INV_MASK, pwm_en_inv))
|
||||
|
|
@ -1539,6 +1539,8 @@ static void ti_sn_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
|
||||
if (state->duty_cycle > state->period)
|
||||
state->duty_cycle = state->period;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops ti_sn_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -972,8 +972,8 @@ out_unlock:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void lpg_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int lpg_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct lpg *lpg = container_of(chip, struct lpg, pwm);
|
||||
struct lpg_channel *chan = &lpg->channels[pwm->hwpwm];
|
||||
|
|
@ -986,20 +986,20 @@ static void lpg_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
|
||||
ret = regmap_read(lpg->map, chan->base + LPG_SIZE_CLK_REG, &val);
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
refclk = lpg_clk_rates[val & PWM_CLK_SELECT_MASK];
|
||||
if (refclk) {
|
||||
ret = regmap_read(lpg->map, chan->base + LPG_PREDIV_CLK_REG, &val);
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
pre_div = lpg_pre_divs[FIELD_GET(PWM_FREQ_PRE_DIV_MASK, val)];
|
||||
m = FIELD_GET(PWM_FREQ_EXP_MASK, val);
|
||||
|
||||
ret = regmap_bulk_read(lpg->map, chan->base + PWM_VALUE_REG, &pwm_value, sizeof(pwm_value));
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
state->period = DIV_ROUND_UP_ULL((u64)NSEC_PER_SEC * LPG_RESOLUTION * pre_div * (1 << m), refclk);
|
||||
state->duty_cycle = DIV_ROUND_UP_ULL((u64)NSEC_PER_SEC * pwm_value * pre_div * (1 << m), refclk);
|
||||
|
|
@ -1010,13 +1010,15 @@ static void lpg_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
|
||||
ret = regmap_read(lpg->map, chan->base + PWM_ENABLE_CONTROL_REG, &val);
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
state->enabled = FIELD_GET(LPG_ENABLE_CONTROL_OUTPUT, val);
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
if (state->duty_cycle > state->period)
|
||||
state->duty_cycle = state->period;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops lpg_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -1444,7 +1444,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
|
|||
case V4L2_META_FMT_VIVID: descr = "Vivid Metadata"; break;
|
||||
case V4L2_META_FMT_RK_ISP1_PARAMS: descr = "Rockchip ISP1 3A Parameters"; break;
|
||||
case V4L2_META_FMT_RK_ISP1_STAT_3A: descr = "Rockchip ISP1 3A Statistics"; break;
|
||||
case V4L2_PIX_FMT_NV12_8L128: descr = "NV12 (8x128 Linear)"; break;
|
||||
case V4L2_PIX_FMT_NV12M_8L128: descr = "NV12M (8x128 Linear)"; break;
|
||||
case V4L2_PIX_FMT_NV12_10BE_8L128: descr = "10-bit NV12 (8x128 Linear, BE)"; break;
|
||||
case V4L2_PIX_FMT_NV12M_10BE_8L128: descr = "10-bit NV12M (8x128 Linear, BE)"; break;
|
||||
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -356,8 +356,8 @@ static int atmel_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void atmel_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int atmel_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct atmel_pwm_chip *atmel_pwm = to_atmel_pwm_chip(chip);
|
||||
u32 sr, cmr;
|
||||
|
|
@ -396,6 +396,8 @@ static void atmel_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
state->polarity = PWM_POLARITY_INVERSED;
|
||||
else
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops atmel_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -68,8 +68,8 @@ static void iproc_pwmc_disable(struct iproc_pwmc *ip, unsigned int channel)
|
|||
ndelay(400);
|
||||
}
|
||||
|
||||
static void iproc_pwmc_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int iproc_pwmc_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct iproc_pwmc *ip = to_iproc_pwmc(chip);
|
||||
u64 tmp, multi, rate;
|
||||
|
|
@ -91,7 +91,7 @@ static void iproc_pwmc_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
if (rate == 0) {
|
||||
state->period = 0;
|
||||
state->duty_cycle = 0;
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
value = readl(ip->base + IPROC_PWM_PRESCALE_OFFSET);
|
||||
|
|
@ -107,6 +107,8 @@ static void iproc_pwmc_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
value = readl(ip->base + IPROC_PWM_DUTY_CYCLE_OFFSET(pwm->hwpwm));
|
||||
tmp = (value & IPROC_PWM_PERIOD_MAX) * multi;
|
||||
state->duty_cycle = div64_u64(tmp, rate);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int iproc_pwmc_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
|
|
|
|||
|
|
@ -121,8 +121,8 @@ static int crc_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void crc_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int crc_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct crystalcove_pwm *crc_pwm = to_crc_pwm(chip);
|
||||
struct device *dev = crc_pwm->chip.dev;
|
||||
|
|
@ -132,13 +132,13 @@ static void crc_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
error = regmap_read(crc_pwm->regmap, PWM0_CLK_DIV, &clk_div_reg);
|
||||
if (error) {
|
||||
dev_err(dev, "Error reading PWM0_CLK_DIV %d\n", error);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
error = regmap_read(crc_pwm->regmap, PWM0_DUTY_CYCLE, &duty_cycle_reg);
|
||||
if (error) {
|
||||
dev_err(dev, "Error reading PWM0_DUTY_CYCLE %d\n", error);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
clk_div = (clk_div_reg & ~PWM_OUTPUT_ENABLE) + 1;
|
||||
|
|
@ -149,6 +149,8 @@ static void crc_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
DIV_ROUND_UP_ULL(duty_cycle_reg * state->period, PWM_MAX_LEVEL);
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
state->enabled = !!(clk_div_reg & PWM_OUTPUT_ENABLE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops crc_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -183,8 +183,8 @@ static int cros_ec_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void cros_ec_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int cros_ec_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct cros_ec_pwm_device *ec_pwm = pwm_to_cros_ec_pwm(chip);
|
||||
struct cros_ec_pwm *channel = pwm_get_chip_data(pwm);
|
||||
|
|
@ -193,11 +193,12 @@ static void cros_ec_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
ret = cros_ec_pwm_get_duty(ec_pwm, pwm->hwpwm);
|
||||
if (ret < 0) {
|
||||
dev_err(chip->dev, "error getting initial duty: %d\n", ret);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
state->enabled = (ret > 0);
|
||||
state->period = EC_PWM_MAX_DUTY;
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
/*
|
||||
* Note that "disabled" and "duty cycle == 0" are treated the same. If
|
||||
|
|
@ -212,6 +213,8 @@ static void cros_ec_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
state->duty_cycle = channel->duty_cycle;
|
||||
else
|
||||
state->duty_cycle = ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct pwm_device *
|
||||
|
|
|
|||
|
|
@ -163,8 +163,8 @@ static int dwc_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void dwc_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int dwc_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct dwc_pwm *dwc = to_dwc_pwm(chip);
|
||||
u64 duty, period;
|
||||
|
|
@ -188,6 +188,8 @@ static void dwc_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
state->polarity = PWM_POLARITY_INVERSED;
|
||||
|
||||
pm_runtime_put_sync(chip->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops dwc_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -128,8 +128,8 @@ static void hibvt_pwm_set_polarity(struct pwm_chip *chip,
|
|||
PWM_POLARITY_MASK, (0x0 << PWM_POLARITY_SHIFT));
|
||||
}
|
||||
|
||||
static void hibvt_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int hibvt_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct hibvt_pwm_chip *hi_pwm_chip = to_hibvt_pwm_chip(chip);
|
||||
void __iomem *base;
|
||||
|
|
@ -146,6 +146,9 @@ static void hibvt_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
|
||||
value = readl(base + PWM_CTRL_ADDR(pwm->hwpwm));
|
||||
state->enabled = (PWM_ENABLE_MASK & value);
|
||||
state->polarity = (PWM_POLARITY_MASK & value) ? PWM_POLARITY_INVERSED : PWM_POLARITY_NORMAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int hibvt_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
|
|
|
|||
|
|
@ -132,9 +132,9 @@ static int pwm_imx_tpm_round_state(struct pwm_chip *chip,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void pwm_imx_tpm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int pwm_imx_tpm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct imx_tpm_pwm_chip *tpm = to_imx_tpm_pwm_chip(chip);
|
||||
u32 rate, val, prescale;
|
||||
|
|
@ -164,6 +164,8 @@ static void pwm_imx_tpm_get_state(struct pwm_chip *chip,
|
|||
|
||||
/* get channel status */
|
||||
state->enabled = FIELD_GET(PWM_IMX_TPM_CnSC_ELS, val) ? true : false;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* this function is supposed to be called with mutex hold */
|
||||
|
|
|
|||
|
|
@ -118,8 +118,8 @@ static void pwm_imx27_clk_disable_unprepare(struct pwm_imx27_chip *imx)
|
|||
clk_disable_unprepare(imx->clk_ipg);
|
||||
}
|
||||
|
||||
static void pwm_imx27_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm, struct pwm_state *state)
|
||||
static int pwm_imx27_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm, struct pwm_state *state)
|
||||
{
|
||||
struct pwm_imx27_chip *imx = to_pwm_imx27_chip(chip);
|
||||
u32 period, prescaler, pwm_clk, val;
|
||||
|
|
@ -128,7 +128,7 @@ static void pwm_imx27_get_state(struct pwm_chip *chip,
|
|||
|
||||
ret = pwm_imx27_clk_prepare_enable(imx);
|
||||
if (ret < 0)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
val = readl(imx->mmio_base + MX3_PWMCR);
|
||||
|
||||
|
|
@ -170,6 +170,8 @@ static void pwm_imx27_get_state(struct pwm_chip *chip,
|
|||
state->duty_cycle = DIV_ROUND_UP_ULL(tmp, pwm_clk);
|
||||
|
||||
pwm_imx27_clk_disable_unprepare(imx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void pwm_imx27_sw_reset(struct pwm_chip *chip)
|
||||
|
|
|
|||
|
|
@ -86,8 +86,8 @@ static int lgm_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return lgm_pwm_enable(chip, 1);
|
||||
}
|
||||
|
||||
static void lgm_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int lgm_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct lgm_pwm_chip *pc = to_lgm_pwm_chip(chip);
|
||||
u32 duty, val;
|
||||
|
|
@ -100,6 +100,8 @@ static void lgm_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
regmap_read(pc->regmap, LGM_PWM_FAN_CON0, &val);
|
||||
duty = FIELD_GET(LGM_PWM_FAN_DC_MSK, val);
|
||||
state->duty_cycle = DIV_ROUND_UP(duty * pc->period, LGM_PWM_MAX_DUTY_CYCLE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops lgm_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -104,8 +104,8 @@ static int iqs620_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void iqs620_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int iqs620_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct iqs620_pwm_private *iqs620_pwm;
|
||||
|
||||
|
|
@ -126,6 +126,9 @@ static void iqs620_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
mutex_unlock(&iqs620_pwm->lock);
|
||||
|
||||
state->period = IQS620_PWM_PERIOD_NS;
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int iqs620_pwm_notifier(struct notifier_block *notifier,
|
||||
|
|
|
|||
|
|
@ -89,8 +89,8 @@ static void keembay_pwm_disable(struct keembay_pwm *priv, int ch)
|
|||
KMB_PWM_LEADIN_OFFSET(ch));
|
||||
}
|
||||
|
||||
static void keembay_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int keembay_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct keembay_pwm *priv = to_keembay_pwm_dev(chip);
|
||||
unsigned long long high, low;
|
||||
|
|
@ -113,6 +113,8 @@ static void keembay_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
state->duty_cycle = DIV_ROUND_UP_ULL(high, clk_rate);
|
||||
state->period = DIV_ROUND_UP_ULL(high + low, clk_rate);
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int keembay_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
|
|
|
|||
|
|
@ -205,8 +205,8 @@ static int pwm_lpss_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void pwm_lpss_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int pwm_lpss_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct pwm_lpss_chip *lpwm = to_lpwm(chip);
|
||||
unsigned long base_unit_range;
|
||||
|
|
@ -236,6 +236,8 @@ static void pwm_lpss_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
state->enabled = !!(ctrl & PWM_ENABLE);
|
||||
|
||||
pm_runtime_put(chip->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops pwm_lpss_ops = {
|
||||
|
|
|
|||
|
|
@ -162,6 +162,12 @@ static int meson_pwm_calc(struct meson_pwm *meson, struct pwm_device *pwm,
|
|||
duty = state->duty_cycle;
|
||||
period = state->period;
|
||||
|
||||
/*
|
||||
* Note this is wrong. The result is an output wave that isn't really
|
||||
* inverted and so is wrongly identified by .get_state as normal.
|
||||
* Fixing this needs some care however as some machines might rely on
|
||||
* this.
|
||||
*/
|
||||
if (state->polarity == PWM_POLARITY_INVERSED)
|
||||
duty = period - duty;
|
||||
|
||||
|
|
@ -318,8 +324,8 @@ static unsigned int meson_pwm_cnt_to_ns(struct pwm_chip *chip,
|
|||
return cnt * fin_ns * (channel->pre_div + 1);
|
||||
}
|
||||
|
||||
static void meson_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int meson_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct meson_pwm *meson = to_meson_pwm(chip);
|
||||
struct meson_pwm_channel_data *channel_data;
|
||||
|
|
@ -327,7 +333,7 @@ static void meson_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
u32 value, tmp;
|
||||
|
||||
if (!state)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
channel = &meson->channels[pwm->hwpwm];
|
||||
channel_data = &meson_pwm_per_channel_data[pwm->hwpwm];
|
||||
|
|
@ -357,6 +363,10 @@ static void meson_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
state->period = 0;
|
||||
state->duty_cycle = 0;
|
||||
}
|
||||
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops meson_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -172,9 +172,9 @@ static int mtk_disp_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void mtk_disp_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int mtk_disp_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct mtk_disp_pwm *mdp = to_mtk_disp_pwm(chip);
|
||||
u64 rate, period, high_width;
|
||||
|
|
@ -184,14 +184,14 @@ static void mtk_disp_pwm_get_state(struct pwm_chip *chip,
|
|||
err = clk_prepare_enable(mdp->clk_main);
|
||||
if (err < 0) {
|
||||
dev_err(chip->dev, "Can't enable mdp->clk_main: %pe\n", ERR_PTR(err));
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
err = clk_prepare_enable(mdp->clk_mm);
|
||||
if (err < 0) {
|
||||
dev_err(chip->dev, "Can't enable mdp->clk_mm: %pe\n", ERR_PTR(err));
|
||||
clk_disable_unprepare(mdp->clk_main);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
rate = clk_get_rate(mdp->clk_main);
|
||||
|
|
@ -212,6 +212,8 @@ static void mtk_disp_pwm_get_state(struct pwm_chip *chip,
|
|||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
clk_disable_unprepare(mdp->clk_mm);
|
||||
clk_disable_unprepare(mdp->clk_main);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops mtk_disp_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -431,8 +431,8 @@ static int pca9685_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void pca9685_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int pca9685_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct pca9685 *pca = to_pca(chip);
|
||||
unsigned long long duty;
|
||||
|
|
@ -458,12 +458,14 @@ static void pca9685_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
*/
|
||||
state->duty_cycle = 0;
|
||||
state->enabled = false;
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
state->enabled = true;
|
||||
duty = pca9685_pwm_get_duty(pca, pwm->hwpwm);
|
||||
state->duty_cycle = DIV_ROUND_DOWN_ULL(duty * state->period, PCA9685_COUNTER_RANGE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int pca9685_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
|
||||
|
|
|
|||
|
|
@ -82,9 +82,9 @@ static int raspberrypi_pwm_get_property(struct rpi_firmware *firmware,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void raspberrypi_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int raspberrypi_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct raspberrypi_pwm *rpipwm = raspberrypi_pwm_from_chip(chip);
|
||||
|
||||
|
|
@ -93,6 +93,8 @@ static void raspberrypi_pwm_get_state(struct pwm_chip *chip,
|
|||
RPI_PWM_MAX_DUTY);
|
||||
state->enabled = !!(rpipwm->duty_cycle);
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int raspberrypi_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
|
|
|
|||
|
|
@ -57,9 +57,9 @@ static inline struct rockchip_pwm_chip *to_rockchip_pwm_chip(struct pwm_chip *c)
|
|||
return container_of(c, struct rockchip_pwm_chip, chip);
|
||||
}
|
||||
|
||||
static void rockchip_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int rockchip_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct rockchip_pwm_chip *pc = to_rockchip_pwm_chip(chip);
|
||||
u32 enable_conf = pc->data->enable_conf;
|
||||
|
|
@ -70,11 +70,11 @@ static void rockchip_pwm_get_state(struct pwm_chip *chip,
|
|||
|
||||
ret = clk_enable(pc->pclk);
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
ret = clk_enable(pc->clk);
|
||||
if (ret)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
clk_rate = clk_get_rate(pc->clk);
|
||||
|
||||
|
|
@ -96,6 +96,8 @@ static void rockchip_pwm_get_state(struct pwm_chip *chip,
|
|||
|
||||
clk_disable(pc->clk);
|
||||
clk_disable(pc->pclk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rockchip_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@ static void pwm_sifive_update_clock(struct pwm_sifive_ddata *ddata,
|
|||
"New real_period = %u ns\n", ddata->real_period);
|
||||
}
|
||||
|
||||
static void pwm_sifive_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int pwm_sifive_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct pwm_sifive_ddata *ddata = pwm_sifive_chip_to_ddata(chip);
|
||||
u32 duty, val;
|
||||
|
|
@ -123,6 +123,8 @@ static void pwm_sifive_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
state->duty_cycle =
|
||||
(u64)duty * ddata->real_period >> PWM_SIFIVE_CMPWIDTH;
|
||||
state->polarity = PWM_POLARITY_INVERSED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int pwm_sifive_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
|
|
|
|||
|
|
@ -87,9 +87,9 @@ struct sl28cpld_pwm {
|
|||
#define sl28cpld_pwm_from_chip(_chip) \
|
||||
container_of(_chip, struct sl28cpld_pwm, pwm_chip)
|
||||
|
||||
static void sl28cpld_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int sl28cpld_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct sl28cpld_pwm *priv = sl28cpld_pwm_from_chip(chip);
|
||||
unsigned int reg;
|
||||
|
|
@ -115,6 +115,8 @@ static void sl28cpld_pwm_get_state(struct pwm_chip *chip,
|
|||
* the PWM core.
|
||||
*/
|
||||
state->duty_cycle = min(state->duty_cycle, state->period);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sl28cpld_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
|
|
|
|||
|
|
@ -65,8 +65,8 @@ static void sprd_pwm_write(struct sprd_pwm_chip *spc, u32 hwid,
|
|||
writel_relaxed(val, spc->base + offset);
|
||||
}
|
||||
|
||||
static void sprd_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int sprd_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct sprd_pwm_chip *spc =
|
||||
container_of(chip, struct sprd_pwm_chip, chip);
|
||||
|
|
@ -83,7 +83,7 @@ static void sprd_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
if (ret) {
|
||||
dev_err(spc->dev, "failed to enable pwm%u clocks\n",
|
||||
pwm->hwpwm);
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
val = sprd_pwm_read(spc, pwm->hwpwm, SPRD_PWM_ENABLE);
|
||||
|
|
@ -109,10 +109,13 @@ static void sprd_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
duty = val & SPRD_PWM_DUTY_MSK;
|
||||
tmp = (prescale + 1) * NSEC_PER_SEC * duty;
|
||||
state->duty_cycle = DIV_ROUND_CLOSEST_ULL(tmp, chn->clk_rate);
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
/* Disable PWM clocks if the PWM channel is not in enable state. */
|
||||
if (!state->enabled)
|
||||
clk_bulk_disable_unprepare(SPRD_PWM_CHN_CLKS_NUM, chn->clks);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sprd_pwm_config(struct sprd_pwm_chip *spc, struct pwm_device *pwm,
|
||||
|
|
|
|||
|
|
@ -157,9 +157,9 @@ err:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void stm32_pwm_lp_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int stm32_pwm_lp_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct stm32_pwm_lp *priv = to_stm32_pwm_lp(chip);
|
||||
unsigned long rate = clk_get_rate(priv->clk);
|
||||
|
|
@ -185,6 +185,8 @@ static void stm32_pwm_lp_get_state(struct pwm_chip *chip,
|
|||
tmp = prd - val;
|
||||
tmp = (tmp << presc) * NSEC_PER_SEC;
|
||||
state->duty_cycle = DIV_ROUND_CLOSEST_ULL(tmp, rate);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops stm32_pwm_lp_ops = {
|
||||
|
|
|
|||
|
|
@ -108,9 +108,9 @@ static inline void sun4i_pwm_writel(struct sun4i_pwm_chip *chip,
|
|||
writel(val, chip->base + offset);
|
||||
}
|
||||
|
||||
static void sun4i_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int sun4i_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct sun4i_pwm_chip *sun4i_pwm = to_sun4i_pwm_chip(chip);
|
||||
u64 clk_rate, tmp;
|
||||
|
|
@ -132,7 +132,7 @@ static void sun4i_pwm_get_state(struct pwm_chip *chip,
|
|||
state->duty_cycle = DIV_ROUND_UP_ULL(state->period, 2);
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
state->enabled = true;
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((PWM_REG_PRESCAL(val, pwm->hwpwm) == PWM_PRESCAL_MASK) &&
|
||||
|
|
@ -142,7 +142,7 @@ static void sun4i_pwm_get_state(struct pwm_chip *chip,
|
|||
prescaler = prescaler_table[PWM_REG_PRESCAL(val, pwm->hwpwm)];
|
||||
|
||||
if (prescaler == 0)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
if (val & BIT_CH(PWM_ACT_STATE, pwm->hwpwm))
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
|
@ -162,6 +162,8 @@ static void sun4i_pwm_get_state(struct pwm_chip *chip,
|
|||
|
||||
tmp = (u64)prescaler * NSEC_PER_SEC * PWM_REG_PRD(val);
|
||||
state->period = DIV_ROUND_CLOSEST_ULL(tmp, clk_rate);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sun4i_pwm_calculate(struct sun4i_pwm_chip *sun4i_pwm,
|
||||
|
|
|
|||
|
|
@ -124,8 +124,8 @@ static int sunplus_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void sunplus_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int sunplus_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct sunplus_pwm *priv = to_sunplus_pwm(chip);
|
||||
u32 mode0, dd_freq, duty;
|
||||
|
|
@ -155,6 +155,8 @@ static void sunplus_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
}
|
||||
|
||||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops sunplus_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -103,8 +103,8 @@ static int visconti_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void visconti_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
static int visconti_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct visconti_pwm_chip *priv = visconti_pwm_from_chip(chip);
|
||||
u32 period, duty, pwmc0, pwmc0_clk;
|
||||
|
|
@ -122,6 +122,8 @@ static void visconti_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm
|
|||
state->polarity = PWM_POLARITY_NORMAL;
|
||||
|
||||
state->enabled = true;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops visconti_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -169,9 +169,9 @@ static int xilinx_pwm_apply(struct pwm_chip *chip, struct pwm_device *unused,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void xilinx_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *unused,
|
||||
struct pwm_state *state)
|
||||
static int xilinx_pwm_get_state(struct pwm_chip *chip,
|
||||
struct pwm_device *unused,
|
||||
struct pwm_state *state)
|
||||
{
|
||||
struct xilinx_timer_priv *priv = xilinx_pwm_chip_to_priv(chip);
|
||||
u32 tlr0, tlr1, tcsr0, tcsr1;
|
||||
|
|
@ -191,6 +191,8 @@ static void xilinx_pwm_get_state(struct pwm_chip *chip,
|
|||
*/
|
||||
if (state->period == state->duty_cycle)
|
||||
state->duty_cycle = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pwm_ops xilinx_pwm_ops = {
|
||||
|
|
|
|||
|
|
@ -150,7 +150,8 @@ static int ufshcd_mcq_config_nr_queues(struct ufs_hba *hba)
|
|||
u32 hba_maxq, rem, tot_queues;
|
||||
struct Scsi_Host *host = hba->host;
|
||||
|
||||
hba_maxq = FIELD_GET(MAX_QUEUE_SUP, hba->mcq_capabilities);
|
||||
/* maxq is 0 based value */
|
||||
hba_maxq = FIELD_GET(MAX_QUEUE_SUP, hba->mcq_capabilities) + 1;
|
||||
|
||||
tot_queues = UFS_MCQ_NUM_DEV_CMD_QUEUES + read_queues + poll_queues +
|
||||
rw_queues;
|
||||
|
|
@ -265,7 +266,7 @@ static int ufshcd_mcq_get_tag(struct ufs_hba *hba,
|
|||
addr = (le64_to_cpu(cqe->command_desc_base_addr) & CQE_UCD_BA) -
|
||||
hba->ucdl_dma_addr;
|
||||
|
||||
return div_u64(addr, sizeof(struct utp_transfer_cmd_desc));
|
||||
return div_u64(addr, ufshcd_get_ucd_size(hba));
|
||||
}
|
||||
|
||||
static void ufshcd_mcq_process_cqe(struct ufs_hba *hba,
|
||||
|
|
|
|||
|
|
@ -2864,10 +2864,10 @@ static void ufshcd_map_queues(struct Scsi_Host *shost)
|
|||
static void ufshcd_init_lrb(struct ufs_hba *hba, struct ufshcd_lrb *lrb, int i)
|
||||
{
|
||||
struct utp_transfer_cmd_desc *cmd_descp = (void *)hba->ucdl_base_addr +
|
||||
i * sizeof_utp_transfer_cmd_desc(hba);
|
||||
i * ufshcd_get_ucd_size(hba);
|
||||
struct utp_transfer_req_desc *utrdlp = hba->utrdl_base_addr;
|
||||
dma_addr_t cmd_desc_element_addr = hba->ucdl_dma_addr +
|
||||
i * sizeof_utp_transfer_cmd_desc(hba);
|
||||
i * ufshcd_get_ucd_size(hba);
|
||||
u16 response_offset = offsetof(struct utp_transfer_cmd_desc,
|
||||
response_upiu);
|
||||
u16 prdt_offset = offsetof(struct utp_transfer_cmd_desc, prd_table);
|
||||
|
|
@ -3790,7 +3790,7 @@ static int ufshcd_memory_alloc(struct ufs_hba *hba)
|
|||
size_t utmrdl_size, utrdl_size, ucdl_size;
|
||||
|
||||
/* Allocate memory for UTP command descriptors */
|
||||
ucdl_size = sizeof_utp_transfer_cmd_desc(hba) * hba->nutrs;
|
||||
ucdl_size = ufshcd_get_ucd_size(hba) * hba->nutrs;
|
||||
hba->ucdl_base_addr = dmam_alloc_coherent(hba->dev,
|
||||
ucdl_size,
|
||||
&hba->ucdl_dma_addr,
|
||||
|
|
@ -3890,7 +3890,7 @@ static void ufshcd_host_memory_configure(struct ufs_hba *hba)
|
|||
prdt_offset =
|
||||
offsetof(struct utp_transfer_cmd_desc, prd_table);
|
||||
|
||||
cmd_desc_size = sizeof_utp_transfer_cmd_desc(hba);
|
||||
cmd_desc_size = ufshcd_get_ucd_size(hba);
|
||||
cmd_desc_dma_addr = hba->ucdl_dma_addr;
|
||||
|
||||
for (i = 0; i < hba->nutrs; i++) {
|
||||
|
|
@ -8490,7 +8490,7 @@ static void ufshcd_release_sdb_queue(struct ufs_hba *hba, int nutrs)
|
|||
{
|
||||
size_t ucdl_size, utrdl_size;
|
||||
|
||||
ucdl_size = sizeof(struct utp_transfer_cmd_desc) * nutrs;
|
||||
ucdl_size = ufshcd_get_ucd_size(hba) * nutrs;
|
||||
dmam_free_coherent(hba->dev, ucdl_size, hba->ucdl_base_addr,
|
||||
hba->ucdl_dma_addr);
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,10 @@ static struct bus_type gadget_bus_type;
|
|||
* @vbus: for udcs who care about vbus status, this value is real vbus status;
|
||||
* for udcs who do not care about vbus status, this value is always true
|
||||
* @started: the UDC's started state. True if the UDC had started.
|
||||
* @connect_lock: protects udc->vbus, udc->started, gadget->connect, gadget->deactivate related
|
||||
* functions. usb_gadget_connect_locked, usb_gadget_disconnect_locked,
|
||||
* usb_udc_connect_control_locked, usb_gadget_udc_start_locked, usb_gadget_udc_stop_locked are
|
||||
* called with this lock held.
|
||||
*
|
||||
* This represents the internal data structure which is used by the UDC-class
|
||||
* to hold information about udc driver and gadget together.
|
||||
|
|
@ -48,6 +52,7 @@ struct usb_udc {
|
|||
struct list_head list;
|
||||
bool vbus;
|
||||
bool started;
|
||||
struct mutex connect_lock;
|
||||
};
|
||||
|
||||
static struct class *udc_class;
|
||||
|
|
@ -660,17 +665,9 @@ out:
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(usb_gadget_vbus_disconnect);
|
||||
|
||||
/**
|
||||
* usb_gadget_connect - software-controlled connect to USB host
|
||||
* @gadget:the peripheral being connected
|
||||
*
|
||||
* Enables the D+ (or potentially D-) pullup. The host will start
|
||||
* enumerating this gadget when the pullup is active and a VBUS session
|
||||
* is active (the link is powered).
|
||||
*
|
||||
* Returns zero on success, else negative errno.
|
||||
*/
|
||||
int usb_gadget_connect(struct usb_gadget *gadget)
|
||||
/* Internal version of usb_gadget_connect needs to be called with connect_lock held. */
|
||||
static int usb_gadget_connect_locked(struct usb_gadget *gadget)
|
||||
__must_hold(&gadget->udc->connect_lock)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
|
|
@ -679,10 +676,15 @@ int usb_gadget_connect(struct usb_gadget *gadget)
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (gadget->deactivated) {
|
||||
if (gadget->connected)
|
||||
goto out;
|
||||
|
||||
if (gadget->deactivated || !gadget->udc->started) {
|
||||
/*
|
||||
* If gadget is deactivated we only save new state.
|
||||
* Gadget will be connected automatically after activation.
|
||||
*
|
||||
* udc first needs to be started before gadget can be pulled up.
|
||||
*/
|
||||
gadget->connected = true;
|
||||
goto out;
|
||||
|
|
@ -697,22 +699,32 @@ out:
|
|||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(usb_gadget_connect);
|
||||
|
||||
/**
|
||||
* usb_gadget_disconnect - software-controlled disconnect from USB host
|
||||
* @gadget:the peripheral being disconnected
|
||||
* usb_gadget_connect - software-controlled connect to USB host
|
||||
* @gadget:the peripheral being connected
|
||||
*
|
||||
* Disables the D+ (or potentially D-) pullup, which the host may see
|
||||
* as a disconnect (when a VBUS session is active). Not all systems
|
||||
* support software pullup controls.
|
||||
*
|
||||
* Following a successful disconnect, invoke the ->disconnect() callback
|
||||
* for the current gadget driver so that UDC drivers don't need to.
|
||||
* Enables the D+ (or potentially D-) pullup. The host will start
|
||||
* enumerating this gadget when the pullup is active and a VBUS session
|
||||
* is active (the link is powered).
|
||||
*
|
||||
* Returns zero on success, else negative errno.
|
||||
*/
|
||||
int usb_gadget_disconnect(struct usb_gadget *gadget)
|
||||
int usb_gadget_connect(struct usb_gadget *gadget)
|
||||
{
|
||||
int ret;
|
||||
|
||||
mutex_lock(&gadget->udc->connect_lock);
|
||||
ret = usb_gadget_connect_locked(gadget);
|
||||
mutex_unlock(&gadget->udc->connect_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(usb_gadget_connect);
|
||||
|
||||
/* Internal version of usb_gadget_disconnect needs to be called with connect_lock held. */
|
||||
static int usb_gadget_disconnect_locked(struct usb_gadget *gadget)
|
||||
__must_hold(&gadget->udc->connect_lock)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
|
|
@ -724,10 +736,12 @@ int usb_gadget_disconnect(struct usb_gadget *gadget)
|
|||
if (!gadget->connected)
|
||||
goto out;
|
||||
|
||||
if (gadget->deactivated) {
|
||||
if (gadget->deactivated || !gadget->udc->started) {
|
||||
/*
|
||||
* If gadget is deactivated we only save new state.
|
||||
* Gadget will stay disconnected after activation.
|
||||
*
|
||||
* udc should have been started before gadget being pulled down.
|
||||
*/
|
||||
gadget->connected = false;
|
||||
goto out;
|
||||
|
|
@ -747,6 +761,30 @@ out:
|
|||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_gadget_disconnect - software-controlled disconnect from USB host
|
||||
* @gadget:the peripheral being disconnected
|
||||
*
|
||||
* Disables the D+ (or potentially D-) pullup, which the host may see
|
||||
* as a disconnect (when a VBUS session is active). Not all systems
|
||||
* support software pullup controls.
|
||||
*
|
||||
* Following a successful disconnect, invoke the ->disconnect() callback
|
||||
* for the current gadget driver so that UDC drivers don't need to.
|
||||
*
|
||||
* Returns zero on success, else negative errno.
|
||||
*/
|
||||
int usb_gadget_disconnect(struct usb_gadget *gadget)
|
||||
{
|
||||
int ret;
|
||||
|
||||
mutex_lock(&gadget->udc->connect_lock);
|
||||
ret = usb_gadget_disconnect_locked(gadget);
|
||||
mutex_unlock(&gadget->udc->connect_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(usb_gadget_disconnect);
|
||||
|
||||
/**
|
||||
|
|
@ -767,10 +805,11 @@ int usb_gadget_deactivate(struct usb_gadget *gadget)
|
|||
if (gadget->deactivated)
|
||||
goto out;
|
||||
|
||||
mutex_lock(&gadget->udc->connect_lock);
|
||||
if (gadget->connected) {
|
||||
ret = usb_gadget_disconnect(gadget);
|
||||
ret = usb_gadget_disconnect_locked(gadget);
|
||||
if (ret)
|
||||
goto out;
|
||||
goto unlock;
|
||||
|
||||
/*
|
||||
* If gadget was being connected before deactivation, we want
|
||||
|
|
@ -780,6 +819,8 @@ int usb_gadget_deactivate(struct usb_gadget *gadget)
|
|||
}
|
||||
gadget->deactivated = true;
|
||||
|
||||
unlock:
|
||||
mutex_unlock(&gadget->udc->connect_lock);
|
||||
out:
|
||||
trace_usb_gadget_deactivate(gadget, ret);
|
||||
|
||||
|
|
@ -803,6 +844,7 @@ int usb_gadget_activate(struct usb_gadget *gadget)
|
|||
if (!gadget->deactivated)
|
||||
goto out;
|
||||
|
||||
mutex_lock(&gadget->udc->connect_lock);
|
||||
gadget->deactivated = false;
|
||||
|
||||
/*
|
||||
|
|
@ -810,7 +852,8 @@ int usb_gadget_activate(struct usb_gadget *gadget)
|
|||
* while it was being deactivated, we call usb_gadget_connect().
|
||||
*/
|
||||
if (gadget->connected)
|
||||
ret = usb_gadget_connect(gadget);
|
||||
ret = usb_gadget_connect_locked(gadget);
|
||||
mutex_unlock(&gadget->udc->connect_lock);
|
||||
|
||||
out:
|
||||
trace_usb_gadget_activate(gadget, ret);
|
||||
|
|
@ -1051,12 +1094,13 @@ EXPORT_SYMBOL_GPL(usb_gadget_set_state);
|
|||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
static void usb_udc_connect_control(struct usb_udc *udc)
|
||||
/* Acquire connect_lock before calling this function. */
|
||||
static void usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock)
|
||||
{
|
||||
if (udc->vbus)
|
||||
usb_gadget_connect(udc->gadget);
|
||||
if (udc->vbus && udc->started)
|
||||
usb_gadget_connect_locked(udc->gadget);
|
||||
else
|
||||
usb_gadget_disconnect(udc->gadget);
|
||||
usb_gadget_disconnect_locked(udc->gadget);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1072,10 +1116,12 @@ void usb_udc_vbus_handler(struct usb_gadget *gadget, bool status)
|
|||
{
|
||||
struct usb_udc *udc = gadget->udc;
|
||||
|
||||
mutex_lock(&udc->connect_lock);
|
||||
if (udc) {
|
||||
udc->vbus = status;
|
||||
usb_udc_connect_control(udc);
|
||||
usb_udc_connect_control_locked(udc);
|
||||
}
|
||||
mutex_unlock(&udc->connect_lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(usb_udc_vbus_handler);
|
||||
|
||||
|
|
@ -1097,7 +1143,7 @@ void usb_gadget_udc_reset(struct usb_gadget *gadget,
|
|||
EXPORT_SYMBOL_GPL(usb_gadget_udc_reset);
|
||||
|
||||
/**
|
||||
* usb_gadget_udc_start - tells usb device controller to start up
|
||||
* usb_gadget_udc_start_locked - tells usb device controller to start up
|
||||
* @udc: The UDC to be started
|
||||
*
|
||||
* This call is issued by the UDC Class driver when it's about
|
||||
|
|
@ -1108,8 +1154,11 @@ EXPORT_SYMBOL_GPL(usb_gadget_udc_reset);
|
|||
* necessary to have it powered on.
|
||||
*
|
||||
* Returns zero on success, else negative errno.
|
||||
*
|
||||
* Caller should acquire connect_lock before invoking this function.
|
||||
*/
|
||||
static inline int usb_gadget_udc_start(struct usb_udc *udc)
|
||||
static inline int usb_gadget_udc_start_locked(struct usb_udc *udc)
|
||||
__must_hold(&udc->connect_lock)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
|
@ -1126,7 +1175,7 @@ static inline int usb_gadget_udc_start(struct usb_udc *udc)
|
|||
}
|
||||
|
||||
/**
|
||||
* usb_gadget_udc_stop - tells usb device controller we don't need it anymore
|
||||
* usb_gadget_udc_stop_locked - tells usb device controller we don't need it anymore
|
||||
* @udc: The UDC to be stopped
|
||||
*
|
||||
* This call is issued by the UDC Class driver after calling
|
||||
|
|
@ -1135,8 +1184,11 @@ static inline int usb_gadget_udc_start(struct usb_udc *udc)
|
|||
* The details are implementation specific, but it can go as
|
||||
* far as powering off UDC completely and disable its data
|
||||
* line pullups.
|
||||
*
|
||||
* Caller should acquire connect lock before invoking this function.
|
||||
*/
|
||||
static inline void usb_gadget_udc_stop(struct usb_udc *udc)
|
||||
static inline void usb_gadget_udc_stop_locked(struct usb_udc *udc)
|
||||
__must_hold(&udc->connect_lock)
|
||||
{
|
||||
if (!udc->started) {
|
||||
dev_err(&udc->dev, "UDC had already stopped\n");
|
||||
|
|
@ -1295,6 +1347,7 @@ int usb_add_gadget(struct usb_gadget *gadget)
|
|||
|
||||
udc->gadget = gadget;
|
||||
gadget->udc = udc;
|
||||
mutex_init(&udc->connect_lock);
|
||||
|
||||
udc->started = false;
|
||||
|
||||
|
|
@ -1496,11 +1549,15 @@ static int gadget_bind_driver(struct device *dev)
|
|||
if (ret)
|
||||
goto err_bind;
|
||||
|
||||
ret = usb_gadget_udc_start(udc);
|
||||
if (ret)
|
||||
mutex_lock(&udc->connect_lock);
|
||||
ret = usb_gadget_udc_start_locked(udc);
|
||||
if (ret) {
|
||||
mutex_unlock(&udc->connect_lock);
|
||||
goto err_start;
|
||||
}
|
||||
usb_gadget_enable_async_callbacks(udc);
|
||||
usb_udc_connect_control(udc);
|
||||
usb_udc_connect_control_locked(udc);
|
||||
mutex_unlock(&udc->connect_lock);
|
||||
|
||||
kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE);
|
||||
return 0;
|
||||
|
|
@ -1531,12 +1588,14 @@ static void gadget_unbind_driver(struct device *dev)
|
|||
|
||||
kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE);
|
||||
|
||||
usb_gadget_disconnect(gadget);
|
||||
mutex_lock(&udc->connect_lock);
|
||||
usb_gadget_disconnect_locked(gadget);
|
||||
usb_gadget_disable_async_callbacks(udc);
|
||||
if (gadget->irq)
|
||||
synchronize_irq(gadget->irq);
|
||||
udc->driver->unbind(gadget);
|
||||
usb_gadget_udc_stop(udc);
|
||||
usb_gadget_udc_stop_locked(udc);
|
||||
mutex_unlock(&udc->connect_lock);
|
||||
|
||||
mutex_lock(&udc_lock);
|
||||
driver->is_bound = false;
|
||||
|
|
@ -1622,11 +1681,15 @@ static ssize_t soft_connect_store(struct device *dev,
|
|||
}
|
||||
|
||||
if (sysfs_streq(buf, "connect")) {
|
||||
usb_gadget_udc_start(udc);
|
||||
usb_gadget_connect(udc->gadget);
|
||||
mutex_lock(&udc->connect_lock);
|
||||
usb_gadget_udc_start_locked(udc);
|
||||
usb_gadget_connect_locked(udc->gadget);
|
||||
mutex_unlock(&udc->connect_lock);
|
||||
} else if (sysfs_streq(buf, "disconnect")) {
|
||||
usb_gadget_disconnect(udc->gadget);
|
||||
usb_gadget_udc_stop(udc);
|
||||
mutex_lock(&udc->connect_lock);
|
||||
usb_gadget_disconnect_locked(udc->gadget);
|
||||
usb_gadget_udc_stop_locked(udc);
|
||||
mutex_unlock(&udc->connect_lock);
|
||||
} else {
|
||||
dev_err(dev, "unsupported command '%s'\n", buf);
|
||||
ret = -EINVAL;
|
||||
|
|
|
|||
|
|
@ -80,20 +80,16 @@ DECLARE_EVENT_CLASS(xhci_log_ctx,
|
|||
__field(dma_addr_t, ctx_dma)
|
||||
__field(u8 *, ctx_va)
|
||||
__field(unsigned, ctx_ep_num)
|
||||
__field(int, slot_id)
|
||||
__dynamic_array(u32, ctx_data,
|
||||
((HCC_64BYTE_CONTEXT(xhci->hcc_params) + 1) * 8) *
|
||||
((ctx->type == XHCI_CTX_TYPE_INPUT) + ep_num + 1))
|
||||
),
|
||||
TP_fast_assign(
|
||||
struct usb_device *udev;
|
||||
|
||||
udev = to_usb_device(xhci_to_hcd(xhci)->self.controller);
|
||||
__entry->ctx_64 = HCC_64BYTE_CONTEXT(xhci->hcc_params);
|
||||
__entry->ctx_type = ctx->type;
|
||||
__entry->ctx_dma = ctx->dma;
|
||||
__entry->ctx_va = ctx->bytes;
|
||||
__entry->slot_id = udev->slot_id;
|
||||
__entry->ctx_ep_num = ep_num;
|
||||
memcpy(__get_dynamic_array(ctx_data), ctx->bytes,
|
||||
((HCC_64BYTE_CONTEXT(xhci->hcc_params) + 1) * 32) *
|
||||
|
|
|
|||
|
|
@ -514,6 +514,10 @@ static ssize_t pin_assignment_show(struct device *dev,
|
|||
|
||||
mutex_unlock(&dp->lock);
|
||||
|
||||
/* get_current_pin_assignments can return 0 when no matching pin assignments are found */
|
||||
if (len == 0)
|
||||
len++;
|
||||
|
||||
buf[len - 1] = '\n';
|
||||
return len;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
#include <asm/perf_event.h>
|
||||
|
||||
#define ARMV8_PMU_CYCLE_IDX (ARMV8_PMU_MAX_COUNTERS - 1)
|
||||
#define ARMV8_PMU_MAX_COUNTER_PAIRS ((ARMV8_PMU_MAX_COUNTERS + 1) >> 1)
|
||||
|
||||
#ifdef CONFIG_HW_PERF_EVENTS
|
||||
|
||||
|
|
@ -29,7 +28,6 @@ struct kvm_pmu {
|
|||
struct irq_work overflow_work;
|
||||
struct kvm_pmu_events events;
|
||||
struct kvm_pmc pmc[ARMV8_PMU_MAX_COUNTERS];
|
||||
DECLARE_BITMAP(chained, ARMV8_PMU_MAX_COUNTER_PAIRS);
|
||||
int irq_num;
|
||||
bool created;
|
||||
bool irq_level;
|
||||
|
|
|
|||
|
|
@ -2085,7 +2085,11 @@ struct net_device {
|
|||
atomic_t carrier_up_count;
|
||||
atomic_t carrier_down_count;
|
||||
|
||||
#ifdef CONFIG_WIRELESS_EXT
|
||||
/* Android KMI hack to allow vendors to have their own wifi changes in modules */
|
||||
#ifdef __GENKSYMS__
|
||||
void *wireless_handlers;
|
||||
void *wireless_data;
|
||||
#else
|
||||
const struct iw_handler_def *wireless_handlers;
|
||||
struct iw_public_data *wireless_data;
|
||||
#endif
|
||||
|
|
@ -2165,9 +2169,13 @@ struct net_device {
|
|||
#if IS_ENABLED(CONFIG_AX25)
|
||||
void *ax25_ptr;
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_CFG80211)
|
||||
/* Android KMI hack to allow vendors to have their own wifi changes in modules */
|
||||
#ifdef __GENKSYMS__
|
||||
void *ieee80211_ptr;
|
||||
#else
|
||||
struct wireless_dev *ieee80211_ptr;
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_IEEE802154) || IS_ENABLED(CONFIG_6LOWPAN)
|
||||
struct wpan_dev *ieee802154_ptr;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -276,8 +276,8 @@ struct pwm_ops {
|
|||
struct pwm_capture *result, unsigned long timeout);
|
||||
int (*apply)(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
const struct pwm_state *state);
|
||||
void (*get_state)(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state);
|
||||
int (*get_state)(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
struct pwm_state *state);
|
||||
struct module *owner;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ struct user_struct {
|
|||
|
||||
/* Miscellaneous per-user rate limit */
|
||||
struct ratelimit_state ratelimit;
|
||||
ANDROID_OEM_DATA_ARRAY(1, 2);
|
||||
};
|
||||
|
||||
extern int uids_sysfs_init(void);
|
||||
|
|
|
|||
|
|
@ -8465,9 +8465,7 @@ int cfg80211_register_netdevice(struct net_device *dev);
|
|||
*/
|
||||
static inline void cfg80211_unregister_netdevice(struct net_device *dev)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_CFG80211)
|
||||
cfg80211_unregister_wdev(dev->ieee80211_ptr);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
#include <net/inet_sock.h>
|
||||
#include <net/protocol.h>
|
||||
#include <net/netns/hash.h>
|
||||
#include <linux/hash.h>
|
||||
#include <linux/icmp.h>
|
||||
|
||||
extern struct proto raw_prot;
|
||||
|
|
@ -29,20 +31,27 @@ int raw_local_deliver(struct sk_buff *, int);
|
|||
|
||||
int raw_rcv(struct sock *, struct sk_buff *);
|
||||
|
||||
#define RAW_HTABLE_SIZE MAX_INET_PROTOS
|
||||
#define RAW_HTABLE_LOG 8
|
||||
#define RAW_HTABLE_SIZE (1U << RAW_HTABLE_LOG)
|
||||
|
||||
struct raw_hashinfo {
|
||||
spinlock_t lock;
|
||||
struct hlist_nulls_head ht[RAW_HTABLE_SIZE];
|
||||
|
||||
struct hlist_head ht[RAW_HTABLE_SIZE] ____cacheline_aligned;
|
||||
};
|
||||
|
||||
static inline u32 raw_hashfunc(const struct net *net, u32 proto)
|
||||
{
|
||||
return hash_32(net_hash_mix(net) ^ proto, RAW_HTABLE_LOG);
|
||||
}
|
||||
|
||||
static inline void raw_hashinfo_init(struct raw_hashinfo *hashinfo)
|
||||
{
|
||||
int i;
|
||||
|
||||
spin_lock_init(&hashinfo->lock);
|
||||
for (i = 0; i < RAW_HTABLE_SIZE; i++)
|
||||
INIT_HLIST_NULLS_HEAD(&hashinfo->ht[i], i);
|
||||
INIT_HLIST_HEAD(&hashinfo->ht[i]);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
|
|
|
|||
|
|
@ -24,6 +24,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_cgroup_force_kthread_migration,
|
|||
struct cgroup_taskset;
|
||||
struct cgroup_subsys;
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_cpuset_fork,
|
||||
TP_PROTO(struct task_struct *p, bool *inherit_cpus),
|
||||
TP_ARGS(p, inherit_cpus), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_cpu_cgroup_attach,
|
||||
TP_PROTO(struct cgroup_taskset *tset),
|
||||
TP_ARGS(tset), 1);
|
||||
|
|
|
|||
|
|
@ -12,15 +12,38 @@
|
|||
* Following tracepoints are not exported in tracefs and provide a
|
||||
* mechanism for vendor modules to hook and extend functionality
|
||||
*/
|
||||
#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS)
|
||||
DECLARE_HOOK(android_vh_alter_futex_plist_add,
|
||||
TP_PROTO(struct plist_node *node,
|
||||
struct plist_head *head,
|
||||
bool *already_on_hb),
|
||||
TP_ARGS(node, head, already_on_hb));
|
||||
#else
|
||||
#define trace_android_vh_alter_futex_plist_add(node, head, already_on_hb)
|
||||
#endif
|
||||
DECLARE_HOOK(android_vh_futex_sleep_start,
|
||||
TP_PROTO(struct task_struct *p),
|
||||
TP_ARGS(p));
|
||||
DECLARE_HOOK(android_vh_do_futex,
|
||||
TP_PROTO(int cmd,
|
||||
unsigned int *flags,
|
||||
u32 __user *uaddr2),
|
||||
TP_ARGS(cmd, flags, uaddr2));
|
||||
DECLARE_HOOK(android_vh_futex_wait_start,
|
||||
TP_PROTO(unsigned int flags,
|
||||
u32 bitset),
|
||||
TP_ARGS(flags, bitset));
|
||||
DECLARE_HOOK(android_vh_futex_wait_end,
|
||||
TP_PROTO(unsigned int flags,
|
||||
u32 bitset),
|
||||
TP_ARGS(flags, bitset));
|
||||
DECLARE_HOOK(android_vh_futex_wake_traverse_plist,
|
||||
TP_PROTO(struct plist_head *chain, int *target_nr,
|
||||
union futex_key key, u32 bitset),
|
||||
TP_ARGS(chain, target_nr, key, bitset));
|
||||
DECLARE_HOOK(android_vh_futex_wake_this,
|
||||
TP_PROTO(int ret, int nr_wake, int target_nr,
|
||||
struct task_struct *p),
|
||||
TP_ARGS(ret, nr_wake, target_nr, p));
|
||||
DECLARE_HOOK(android_vh_futex_wake_up_q_finish,
|
||||
TP_PROTO(int nr_wake, int target_nr),
|
||||
TP_ARGS(nr_wake, target_nr));
|
||||
#endif /* _TRACE_HOOK_FUTEX_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,23 @@ DECLARE_HOOK(android_vh_try_to_freeze_todo_unfrozen,
|
|||
TP_PROTO(struct task_struct *p),
|
||||
TP_ARGS(p));
|
||||
|
||||
enum freq_qos_req_type;
|
||||
struct freq_qos_request;
|
||||
struct freq_constraints;
|
||||
|
||||
DECLARE_HOOK(android_vh_freq_qos_add_request,
|
||||
TP_PROTO(struct freq_constraints *qos, struct freq_qos_request *req,
|
||||
enum freq_qos_req_type type, int value, int ret),
|
||||
TP_ARGS(qos, req, type, value, ret));
|
||||
|
||||
DECLARE_HOOK(android_vh_freq_qos_update_request,
|
||||
TP_PROTO(struct freq_qos_request *req, int value),
|
||||
TP_ARGS(req, value));
|
||||
|
||||
DECLARE_HOOK(android_vh_freq_qos_remove_request,
|
||||
TP_PROTO(struct freq_qos_request *req),
|
||||
TP_ARGS(req));
|
||||
|
||||
#endif /* _TRACE_HOOK_POWER_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
|
|
|||
|
|
@ -332,10 +332,20 @@ DECLARE_HOOK(android_vh_sched_pelt_multiplier,
|
|||
TP_PROTO(unsigned int old, unsigned int cur, int *ret),
|
||||
TP_ARGS(old, cur, ret));
|
||||
|
||||
struct cpufreq_policy;
|
||||
DECLARE_HOOK(android_vh_map_util_freq,
|
||||
TP_PROTO(unsigned long util, unsigned long freq,
|
||||
unsigned long cap, unsigned long *next_freq),
|
||||
TP_ARGS(util, freq, cap, next_freq));
|
||||
unsigned long cap, unsigned long *next_freq, struct cpufreq_policy *policy,
|
||||
bool *need_freq_update),
|
||||
TP_ARGS(util, freq, cap, next_freq, policy, need_freq_update));
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_set_cpus_allowed_comm,
|
||||
TP_PROTO(struct task_struct *p, const struct cpumask *new_mask),
|
||||
TP_ARGS(p, new_mask), 1);
|
||||
|
||||
DECLARE_HOOK(android_vh_sched_setaffinity_early,
|
||||
TP_PROTO(struct task_struct *p, const struct cpumask *new_mask, bool *retval),
|
||||
TP_ARGS(p, new_mask, retval));
|
||||
|
||||
/* macro versions of hooks are no longer required */
|
||||
|
||||
|
|
|
|||
22
include/trace/hooks/user.h
Normal file
22
include/trace/hooks/user.h
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM user
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#define TRACE_INCLUDE_PATH trace/hooks
|
||||
#if !defined(_TRACE_HOOK_USER_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_HOOK_USER_H
|
||||
#include <trace/hooks/vendor_hooks.h>
|
||||
|
||||
struct user_struct;
|
||||
DECLARE_HOOK(android_vh_alloc_uid,
|
||||
TP_PROTO(struct user_struct *user),
|
||||
TP_ARGS(user));
|
||||
|
||||
DECLARE_HOOK(android_vh_free_user,
|
||||
TP_PROTO(struct user_struct *up),
|
||||
TP_ARGS(up));
|
||||
|
||||
#endif /* _TRACE_HOOK_USER_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
||||
|
|
@ -6325,6 +6325,10 @@ enum nl80211_feature_flags {
|
|||
* @NL80211_EXT_FEATURE_SECURE_NAN: Device supports NAN Pairing which enables
|
||||
* authentication, data encryption and message integrity.
|
||||
*
|
||||
* @NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA: Device supports randomized TA
|
||||
* in authentication and deauthentication frames sent to unassociated peer
|
||||
* using @NL80211_CMD_FRAME.
|
||||
*
|
||||
* @NUM_NL80211_EXT_FEATURES: number of extended features.
|
||||
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
|
||||
*/
|
||||
|
|
@ -6395,6 +6399,7 @@ enum nl80211_ext_feature_index {
|
|||
NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
|
||||
NL80211_EXT_FEATURE_PUNCT,
|
||||
NL80211_EXT_FEATURE_SECURE_NAN,
|
||||
NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA,
|
||||
|
||||
/* add new features before the definition below */
|
||||
NUM_NL80211_EXT_FEATURES,
|
||||
|
|
|
|||
|
|
@ -654,6 +654,8 @@ struct v4l2_pix_format {
|
|||
#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
||||
#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 32x32 tiles */
|
||||
#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0') /* 12 Y/CbCr 4:2:0 10-bit 4x4 macroblocks */
|
||||
#define V4L2_PIX_FMT_NV12_8L128 v4l2_fourcc('A', 'T', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */
|
||||
#define V4L2_PIX_FMT_NV12_10BE_8L128 v4l2_fourcc_be('A', 'X', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */
|
||||
|
||||
/* Tiled YUV formats, non contiguous planes */
|
||||
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */
|
||||
|
|
|
|||
|
|
@ -1167,7 +1167,7 @@ static inline size_t ufshcd_sg_entry_size(const struct ufs_hba *hba)
|
|||
({ (void)(hba); BUILD_BUG_ON(sg_entry_size != sizeof(struct ufshcd_sg_entry)); })
|
||||
#endif
|
||||
|
||||
static inline size_t sizeof_utp_transfer_cmd_desc(const struct ufs_hba *hba)
|
||||
static inline size_t ufshcd_get_ucd_size(const struct ufs_hba *hba)
|
||||
{
|
||||
return sizeof(struct utp_transfer_cmd_desc) + SG_ALL * ufshcd_sg_entry_size(hba);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@
|
|||
#include <linux/cgroup.h>
|
||||
#include <linux/wait.h>
|
||||
|
||||
#include <trace/hooks/cgroup.h>
|
||||
|
||||
DEFINE_STATIC_KEY_FALSE(cpusets_pre_enable_key);
|
||||
DEFINE_STATIC_KEY_FALSE(cpusets_enabled_key);
|
||||
|
||||
|
|
@ -3315,18 +3317,18 @@ static void cpuset_cancel_fork(struct task_struct *task, struct css_set *cset)
|
|||
static void cpuset_fork(struct task_struct *task)
|
||||
{
|
||||
struct cpuset *cs;
|
||||
bool same_cs;
|
||||
bool same_cs, inherit_cpus = false;
|
||||
|
||||
rcu_read_lock();
|
||||
cs = task_cs(task);
|
||||
same_cs = (cs == task_cs(current));
|
||||
rcu_read_unlock();
|
||||
|
||||
if (same_cs) {
|
||||
if (cs == &top_cpuset)
|
||||
return;
|
||||
|
||||
set_cpus_allowed_ptr(task, current->cpus_ptr);
|
||||
trace_android_rvh_cpuset_fork(task, &inherit_cpus);
|
||||
if (!inherit_cpus)
|
||||
set_cpus_allowed_ptr(task, current->cpus_ptr);
|
||||
task->mems_allowed = current->mems_allowed;
|
||||
return;
|
||||
}
|
||||
|
|
@ -3798,7 +3800,7 @@ void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask)
|
|||
guarantee_online_cpus(tsk, pmask);
|
||||
spin_unlock_irqrestore(&callback_lock, flags);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(cpuset_cpus_allowed);
|
||||
/**
|
||||
* cpuset_cpus_allowed_fallback - final fallback before complete catastrophe.
|
||||
* @tsk: pointer to task_struct with which the scheduler is struggling
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include <linux/time_namespace.h>
|
||||
|
||||
#include "futex.h"
|
||||
#include <trace/hooks/futex.h>
|
||||
|
||||
/*
|
||||
* Support for robust futexes: the kernel cleans up held futexes at
|
||||
|
|
@ -98,6 +99,7 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
|
|||
return -ENOSYS;
|
||||
}
|
||||
|
||||
trace_android_vh_do_futex(cmd, &flags, uaddr2);
|
||||
switch (cmd) {
|
||||
case FUTEX_WAIT:
|
||||
val3 = FUTEX_BITSET_MATCH_ANY;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include <linux/freezer.h>
|
||||
|
||||
#include "futex.h"
|
||||
#include <trace/hooks/futex.h>
|
||||
|
||||
/*
|
||||
* READ this before attempting to hack on futexes!
|
||||
|
|
@ -146,6 +147,7 @@ int futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
|
|||
struct futex_q *this, *next;
|
||||
union futex_key key = FUTEX_KEY_INIT;
|
||||
int ret;
|
||||
int target_nr;
|
||||
DEFINE_WAKE_Q(wake_q);
|
||||
|
||||
if (!bitset)
|
||||
|
|
@ -163,6 +165,7 @@ int futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
|
|||
|
||||
spin_lock(&hb->lock);
|
||||
|
||||
trace_android_vh_futex_wake_traverse_plist(&hb->chain, &target_nr, key, bitset);
|
||||
plist_for_each_entry_safe(this, next, &hb->chain, list) {
|
||||
if (futex_match (&this->key, &key)) {
|
||||
if (this->pi_state || this->rt_waiter) {
|
||||
|
|
@ -174,6 +177,7 @@ int futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
|
|||
if (!(this->bitset & bitset))
|
||||
continue;
|
||||
|
||||
trace_android_vh_futex_wake_this(ret, nr_wake, target_nr, this->task);
|
||||
futex_wake_mark(&wake_q, this);
|
||||
if (++ret >= nr_wake)
|
||||
break;
|
||||
|
|
@ -182,6 +186,7 @@ int futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
|
|||
|
||||
spin_unlock(&hb->lock);
|
||||
wake_up_q(&wake_q);
|
||||
trace_android_vh_futex_wake_up_q_finish(nr_wake, target_nr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -351,8 +356,10 @@ void futex_wait_queue(struct futex_hash_bucket *hb, struct futex_q *q,
|
|||
* flagged for rescheduling. Only call schedule if there
|
||||
* is no timeout, or if it has yet to expire.
|
||||
*/
|
||||
if (!timeout || timeout->task)
|
||||
if (!timeout || timeout->task) {
|
||||
trace_android_vh_futex_sleep_start(current);
|
||||
schedule();
|
||||
}
|
||||
}
|
||||
__set_current_state(TASK_RUNNING);
|
||||
}
|
||||
|
|
@ -640,6 +647,7 @@ int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val, ktime_t *abs_time
|
|||
if (!bitset)
|
||||
return -EINVAL;
|
||||
q.bitset = bitset;
|
||||
trace_android_vh_futex_wait_start(flags, bitset);
|
||||
|
||||
to = futex_setup_timer(abs_time, &timeout, flags,
|
||||
current->timer_slack_ns);
|
||||
|
|
@ -688,6 +696,7 @@ out:
|
|||
hrtimer_cancel(&to->timer);
|
||||
destroy_hrtimer_on_stack(&to->timer);
|
||||
}
|
||||
trace_android_vh_futex_wait_end(flags, bitset);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1291,7 +1291,7 @@ static struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem)
|
|||
/*
|
||||
* lock for reading
|
||||
*/
|
||||
static inline int __down_read_common(struct rw_semaphore *sem, int state)
|
||||
static __always_inline int __down_read_common(struct rw_semaphore *sem, int state)
|
||||
{
|
||||
int ret = 0;
|
||||
long count;
|
||||
|
|
@ -1309,17 +1309,17 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static inline void __down_read(struct rw_semaphore *sem)
|
||||
static __always_inline void __down_read(struct rw_semaphore *sem)
|
||||
{
|
||||
__down_read_common(sem, TASK_UNINTERRUPTIBLE);
|
||||
}
|
||||
|
||||
static inline int __down_read_interruptible(struct rw_semaphore *sem)
|
||||
static __always_inline int __down_read_interruptible(struct rw_semaphore *sem)
|
||||
{
|
||||
return __down_read_common(sem, TASK_INTERRUPTIBLE);
|
||||
}
|
||||
|
||||
static inline int __down_read_killable(struct rw_semaphore *sem)
|
||||
static __always_inline int __down_read_killable(struct rw_semaphore *sem)
|
||||
{
|
||||
return __down_read_common(sem, TASK_KILLABLE);
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue