Merge branch 'android14-6.1' into branch 'android14-6.1-lts'
This syncs up the android14-6.1-lts branch with many changes that have happened in the android14-6.1 branch. Included in here are the following commits:d2c0f4c450
FROMLIST: devcoredump: Send uevent once devcd is ready95307ec5c8
FROMLIST: iommu: Avoid more races around device probe5c8e593916
ANDROID: Update the ABI symbol list94ddfc9ce4
FROMLIST: ufs: core: clear cmd if abort success in mcq mode8f46c34931
BACKPORT: wifi: cfg80211: Allow AP/P2PGO to indicate port authorization to peer STA/P2PClientb3ccd8f092
BACKPORT: wifi: cfg80211: OWE DH IE handling offloaddaa7a3d95d
ANDROID: KVM: arm64: mount procfs for pKVM module loading1b639e97b8
ANDROID: GKI: Update symbol list for mtkb496cc3115
ANDROID: fuse-bpf: Add NULL pointer check in fuse_release_in8431e524d6
UPSTREAM: serial: 8250_port: Check IRQ data before use825c17428a
ANDROID: KVM: arm64: Fix error path in pkvm_mem_abort()22e9166465
ANDROID: abi_gki_aarch64_qcom: Update symbol listca06bb1e93
ANDROID: GKI: add allowed list for Exynosauto SoCfb91717581
ANDROID: Update the ABI symbol listec3c9a1702
ANDROID: sched: Add vendor hook for util_fits_cpuc47043d65f
ANDROID: update symbol for unisoc vendor_hooks6e881bf034
ANDROID: vendor_hooks: mm: add hook to count the number pages allocated for each slaba59b32866c
UPSTREAM: usb: gadget: udc: Handle gadget_connect failure during bind operation7a33209b36
ANDROID: Update the ABI symbol list69b689971a
ANDROID: softirq: Add EXPORT_SYMBOL_GPL for softirq and tasklet48c6c901fe
ANDROID: fs/passthrough: Fix compatibility with R/O file systemabcd4c51e7
FROMLIST: usb: typec: tcpm: Fix sink caps op current check9d6ac9dc6a
UPSTREAM: scsi: ufs: core: Add advanced RPMB support where UFSHCI 4.0 does not support EHS length in UTRDbeea09533d
ANDROID: ABI: Update symbol list for MediatTek5683c2b460
ANDROID: vendor_hooks: Add hook for mmc queue43a07d84da
Revert "proc: allow pid_revalidate() during LOOKUP_RCU"230d34da33
UPSTREAM: scsi: ufs: ufs-qcom: Clear qunipro_g4_sel for HW major version > 50920d4de75
ANDROID: GKI: Update symbols to symbol list019393a917
ANDROID: vendor_hook: Add hook to tune readaround size0c859c2180
ANDROID: add for tuning readahead sizea8206e3023
ANDROID: vendor_hooks: Add hooks to avoid key threads stalled in memory allocationsad9947dc8d
ANDROID: GKI: Update oplus symbol list71f3b61ee4
ANDROID: vendor_hooks: add hooks for adjust kvmalloc_node alloc_flagsfef66e8544
UPSTREAM: netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for ip_set_hash_netportnet.c7bec8a8180
ANDROID: ABI: Update symbol list for imxaf888bd2a1
ANDROID: abi_gki_aarch64_qcom: Add __netif_rx131de563f6
ANDROID: ABI: Update sony symbol list and stg977770ec27
ANDROID: mmc: Add vendor hooks for sdcard failure diagnosticsf8d3b450e9
ANDROID: Update symbol list for mtk2799026a28
UPSTREAM: scsi: ufs: mcq: Fix the search/wrap around logic7350783e67
UPSTREAM: scsi: ufs: core: Fix ufshcd_inc_sq_tail() function bugff5fa0b7bd
FROMLIST: ufs: core: Expand MCQ queue slot to DeviceQueueDepth + 14bbeaddf9a
Revert "ANDROID: KVM: arm64: Don't allocate from handle_host_mem_abort"9d38c0bc65
BACKPORT: usb: typec: altmodes/displayport: Signal hpd when configuring pin assignmente329419f70
UPSTREAM: mm: multi-gen LRU: don't spin during memcg release3d1b582966
UPSTREAM: vringh: don't use vringh_kiov_advance() in vringh_iov_xfer() Change-Id: I89958775659103a11ae82cac8d6b4764251da3c5 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
d3f3412122
@ -112,6 +112,7 @@ filegroup(
|
||||
"android/abi_gki_aarch64_pixel",
|
||||
"android/abi_gki_aarch64_qcom",
|
||||
"android/abi_gki_aarch64_rockchip",
|
||||
"android/abi_gki_aarch64_sony",
|
||||
"android/abi_gki_aarch64_tuxera",
|
||||
"android/abi_gki_aarch64_unisoc",
|
||||
"android/abi_gki_aarch64_virtual_device",
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -365,6 +365,7 @@
|
||||
devm_nvmem_device_get
|
||||
devm_nvmem_register
|
||||
devm_of_clk_add_hw_provider
|
||||
devm_of_iomap
|
||||
devm_of_phy_get
|
||||
__devm_of_phy_provider_register
|
||||
devm_of_platform_populate
|
||||
@ -391,6 +392,7 @@
|
||||
__devm_regmap_init_spi
|
||||
devm_regulator_bulk_get
|
||||
devm_regulator_get
|
||||
devm_regulator_get_enable_optional
|
||||
devm_regulator_get_exclusive
|
||||
devm_regulator_get_optional
|
||||
devm_regulator_register
|
||||
@ -1410,6 +1412,7 @@
|
||||
of_iomap
|
||||
of_irq_find_parent
|
||||
of_irq_get
|
||||
of_irq_get_byname
|
||||
of_machine_is_compatible
|
||||
of_match_device
|
||||
of_match_node
|
||||
@ -1719,6 +1722,7 @@
|
||||
regmap_get_device
|
||||
__regmap_init_mmio_clk
|
||||
regmap_irq_get_virq
|
||||
regmap_raw_read
|
||||
regmap_raw_write
|
||||
regmap_read
|
||||
regmap_register_patch
|
||||
|
@ -7,6 +7,7 @@
|
||||
add_uevent_var
|
||||
add_wait_queue
|
||||
add_wait_queue_exclusive
|
||||
add_wait_queue_priority
|
||||
adjust_managed_page_count
|
||||
aes_encrypt
|
||||
aes_expandkey
|
||||
@ -62,6 +63,7 @@
|
||||
bio_init
|
||||
bio_put
|
||||
bio_start_io_acct
|
||||
bitmap_alloc
|
||||
__bitmap_and
|
||||
__bitmap_andnot
|
||||
__bitmap_clear
|
||||
@ -220,6 +222,7 @@
|
||||
cpu_bit_bitmap
|
||||
cpufreq_add_update_util_hook
|
||||
cpufreq_cpu_get
|
||||
cpufreq_cpu_get_raw
|
||||
cpufreq_cpu_put
|
||||
cpufreq_disable_fast_switch
|
||||
cpufreq_driver_fast_switch
|
||||
@ -228,6 +231,7 @@
|
||||
cpufreq_enable_fast_switch
|
||||
cpufreq_generic_attr
|
||||
cpufreq_generic_frequency_table_verify
|
||||
cpufreq_get_driver_data
|
||||
cpufreq_get_policy
|
||||
cpufreq_policy_transition_delay_us
|
||||
cpufreq_quick_get
|
||||
@ -239,6 +243,8 @@
|
||||
cpufreq_unregister_driver
|
||||
cpufreq_unregister_governor
|
||||
cpufreq_update_limits
|
||||
cpufreq_update_policy
|
||||
cpufreq_update_util_data
|
||||
cpu_hotplug_disable
|
||||
cpu_hotplug_enable
|
||||
__cpuhp_remove_state
|
||||
@ -457,6 +463,7 @@
|
||||
devm_clk_bulk_get_optional
|
||||
devm_clk_get
|
||||
devm_clk_get_optional
|
||||
devm_clk_get_optional_enabled
|
||||
devm_clk_put
|
||||
devm_clk_register
|
||||
dev_mc_sync
|
||||
@ -472,6 +479,7 @@
|
||||
devm_fwnode_pwm_get
|
||||
devm_gpiochip_add_data_with_key
|
||||
devm_gpiod_get
|
||||
devm_gpiod_get_array
|
||||
devm_gpiod_get_index
|
||||
devm_gpiod_get_optional
|
||||
devm_gpiod_put
|
||||
@ -516,6 +524,7 @@
|
||||
devm_platform_ioremap_resource_byname
|
||||
devm_power_supply_get_by_phandle
|
||||
devm_power_supply_register
|
||||
devm_pwmchip_add
|
||||
devm_rc_allocate_device
|
||||
devm_rc_register_device
|
||||
devm_regmap_add_irq_chip
|
||||
@ -554,7 +563,10 @@
|
||||
dev_pm_genpd_add_notifier
|
||||
dev_pm_genpd_set_performance_state
|
||||
dev_pm_opp_add
|
||||
dev_pm_opp_adjust_voltage
|
||||
dev_pm_opp_clear_config
|
||||
dev_pm_opp_disable
|
||||
dev_pm_opp_enable
|
||||
dev_pm_opp_find_freq_ceil
|
||||
dev_pm_opp_find_freq_exact
|
||||
dev_pm_opp_find_freq_floor
|
||||
@ -586,6 +598,7 @@
|
||||
dev_set_mtu
|
||||
dev_set_name
|
||||
dev_set_promiscuity
|
||||
dev_set_threaded
|
||||
dev_uc_add
|
||||
dev_uc_del
|
||||
dev_uc_sync
|
||||
@ -671,6 +684,7 @@
|
||||
dma_unmap_page_attrs
|
||||
dma_unmap_resource
|
||||
dma_unmap_sg_attrs
|
||||
dma_vmap_noncontiguous
|
||||
do_trace_netlink_extack
|
||||
double_rq_lock
|
||||
do_wait_intr_irq
|
||||
@ -744,6 +758,7 @@
|
||||
drm_connector_cleanup
|
||||
drm_connector_init
|
||||
drm_connector_register
|
||||
drm_connector_set_panel_orientation
|
||||
drm_connector_unregister
|
||||
drm_connector_update_edid_property
|
||||
drm_crtc_add_crc_entry
|
||||
@ -832,6 +847,7 @@
|
||||
drm_panel_enable
|
||||
drm_panel_get_modes
|
||||
drm_panel_init
|
||||
drm_panel_of_backlight
|
||||
drm_panel_prepare
|
||||
drm_panel_remove
|
||||
drm_panel_unprepare
|
||||
@ -894,6 +910,7 @@
|
||||
file_path
|
||||
filp_close
|
||||
filp_open_block
|
||||
_find_first_and_bit
|
||||
_find_first_bit
|
||||
_find_first_zero_bit
|
||||
find_get_pid
|
||||
@ -1012,7 +1029,9 @@
|
||||
get_user_ifreq
|
||||
get_user_pages
|
||||
get_user_pages_fast
|
||||
get_user_pages_fast_only
|
||||
get_user_pages_remote
|
||||
get_user_pages_unlocked
|
||||
get_vaddr_frames
|
||||
get_zeroed_page
|
||||
gfn_to_pfn_memslot
|
||||
@ -1034,6 +1053,7 @@
|
||||
gpiod_get_raw_value
|
||||
gpiod_get_value
|
||||
gpiod_get_value_cansleep
|
||||
gpiod_set_array_value_cansleep
|
||||
gpiod_set_debounce
|
||||
gpiod_set_raw_value
|
||||
gpiod_set_value
|
||||
@ -1059,7 +1079,10 @@
|
||||
hex_to_bin
|
||||
hid_add_device
|
||||
hid_allocate_device
|
||||
hid_debug
|
||||
hid_destroy_device
|
||||
hid_driver_reset_resume
|
||||
hid_driver_suspend
|
||||
hid_ignore
|
||||
hid_input_report
|
||||
hid_parse_report
|
||||
@ -1085,6 +1108,7 @@
|
||||
i2c_put_adapter
|
||||
i2c_put_dma_safe_msg_buf
|
||||
i2c_register_driver
|
||||
i2c_smbus_read_byte
|
||||
i2c_smbus_read_byte_data
|
||||
i2c_smbus_read_i2c_block_data
|
||||
i2c_smbus_read_word_data
|
||||
@ -1236,6 +1260,7 @@
|
||||
irq_domain_simple_ops
|
||||
irq_domain_xlate_onetwocell
|
||||
irq_domain_xlate_twocell
|
||||
irq_find_matching_fwspec
|
||||
irq_get_irqchip_state
|
||||
irq_get_irq_data
|
||||
irq_modify_status
|
||||
@ -1452,6 +1477,7 @@
|
||||
__memcpy_fromio
|
||||
__memcpy_toio
|
||||
memdup_user
|
||||
memdup_user_nul
|
||||
memmove
|
||||
memory_read_from_buffer
|
||||
memparse
|
||||
@ -1466,7 +1492,9 @@
|
||||
migrate_swap
|
||||
__migrate_task
|
||||
mipi_dsi_attach
|
||||
mipi_dsi_dcs_enter_sleep_mode
|
||||
mipi_dsi_dcs_read
|
||||
mipi_dsi_dcs_set_display_off
|
||||
mipi_dsi_dcs_write
|
||||
mipi_dsi_dcs_write_buffer
|
||||
mipi_dsi_detach
|
||||
@ -1497,6 +1525,8 @@
|
||||
mmc_hw_reset
|
||||
mmc_of_parse
|
||||
mmc_put_card
|
||||
mmc_pwrseq_register
|
||||
mmc_pwrseq_unregister
|
||||
mmc_regulator_get_supply
|
||||
mmc_regulator_set_ocr
|
||||
mmc_regulator_set_vqmmc
|
||||
@ -1643,6 +1673,7 @@
|
||||
of_dma_xlate_by_chan_id
|
||||
of_drm_find_bridge
|
||||
of_drm_find_panel
|
||||
of_drm_get_panel_orientation
|
||||
of_find_backlight_by_node
|
||||
of_find_compatible_node
|
||||
of_find_device_by_node
|
||||
@ -1907,6 +1938,7 @@
|
||||
__pm_stay_awake
|
||||
pm_stay_awake
|
||||
pm_suspend_default_s2idle
|
||||
pm_suspend_target_state
|
||||
pm_system_wakeup
|
||||
pm_wakeup_dev_event
|
||||
pm_wakeup_ws_event
|
||||
@ -2117,6 +2149,7 @@
|
||||
reset_control_deassert
|
||||
reset_controller_register
|
||||
reset_control_reset
|
||||
return_address
|
||||
rhashtable_destroy
|
||||
rhashtable_free_and_destroy
|
||||
rhashtable_init
|
||||
@ -2250,6 +2283,7 @@
|
||||
serdev_device_wait_until_sent
|
||||
serdev_device_write_buf
|
||||
serdev_device_write_flush
|
||||
serial8250_do_pm
|
||||
serial8250_do_set_termios
|
||||
serial8250_do_shutdown
|
||||
serial8250_do_startup
|
||||
@ -2397,6 +2431,7 @@
|
||||
snd_soc_rtdcom_lookup
|
||||
snd_soc_set_runtime_hwparams
|
||||
snd_soc_unregister_component
|
||||
snd_vendor_set_ops
|
||||
snprintf
|
||||
soc_device_register
|
||||
soc_device_unregister
|
||||
@ -2571,6 +2606,7 @@
|
||||
topology_update_thermal_pressure
|
||||
_totalram_pages
|
||||
_trace_android_vh_record_pcpu_rwsem_starttime
|
||||
_trace_android_vh_record_pcpu_rwsem_time_early
|
||||
__trace_bprintk
|
||||
trace_event_buffer_commit
|
||||
trace_event_buffer_reserve
|
||||
@ -2586,6 +2622,7 @@
|
||||
__traceiter_android_rvh_commit_creds
|
||||
__traceiter_android_rvh_cpu_cgroup_attach
|
||||
__traceiter_android_rvh_cpu_cgroup_online
|
||||
__traceiter_android_rvh_cpufreq_transition
|
||||
__traceiter_android_rvh_cpu_overutilized
|
||||
__traceiter_android_rvh_dequeue_task
|
||||
__traceiter_android_rvh_dequeue_task_fair
|
||||
@ -2603,6 +2640,7 @@
|
||||
__traceiter_android_rvh_is_cpu_allowed
|
||||
__traceiter_android_rvh_new_task_stats
|
||||
__traceiter_android_rvh_override_creds
|
||||
__traceiter_android_rvh_post_init_entity_util_avg
|
||||
__traceiter_android_rvh_prepare_prio_fork
|
||||
__traceiter_android_rvh_replace_next_task_fair
|
||||
__traceiter_android_rvh_revert_creds
|
||||
@ -2639,20 +2677,24 @@
|
||||
__traceiter_android_vh_audio_usb_offload_connect
|
||||
__traceiter_android_vh_binder_restore_priority
|
||||
__traceiter_android_vh_binder_set_priority
|
||||
__traceiter_android_vh_binder_trans
|
||||
__traceiter_android_vh_binder_transaction_init
|
||||
__traceiter_android_vh_cgroup_attach
|
||||
__traceiter_android_vh_cgroup_set_task
|
||||
__traceiter_android_vh_check_bpf_syscall
|
||||
__traceiter_android_vh_check_file_open
|
||||
__traceiter_android_vh_check_mmap_file
|
||||
__traceiter_android_vh_check_uninterrupt_tasks
|
||||
__traceiter_android_vh_compaction_exit
|
||||
__traceiter_android_vh_compaction_try_to_compact_pages_exit
|
||||
__traceiter_android_vh_cpufreq_fast_switch
|
||||
__traceiter_android_vh_cpu_idle_enter
|
||||
__traceiter_android_vh_cpu_idle_exit
|
||||
__traceiter_android_vh_dump_throttled_rt_tasks
|
||||
__traceiter_android_vh_iommu_iovad_alloc_iova
|
||||
__traceiter_android_vh_iommu_iovad_free_iova
|
||||
__traceiter_android_vh_is_fpsimd_save
|
||||
__traceiter_android_vh_mmc_update_mmc_queue
|
||||
__traceiter_android_vh_mm_alloc_pages_direct_reclaim_enter
|
||||
__traceiter_android_vh_mm_alloc_pages_direct_reclaim_exit
|
||||
__traceiter_android_vh_mm_alloc_pages_may_oom_exit
|
||||
@ -2661,6 +2703,7 @@
|
||||
__traceiter_android_vh_rwsem_write_finished
|
||||
__traceiter_android_vh_sched_pelt_multiplier
|
||||
__traceiter_android_vh_scheduler_tick
|
||||
__traceiter_android_vh_setscheduler_uclamp
|
||||
__traceiter_android_vh_set_wake_flags
|
||||
__traceiter_android_vh_show_resume_epoch_val
|
||||
__traceiter_android_vh_show_suspend_epoch_val
|
||||
@ -2687,6 +2730,7 @@
|
||||
__tracepoint_android_rvh_commit_creds
|
||||
__tracepoint_android_rvh_cpu_cgroup_attach
|
||||
__tracepoint_android_rvh_cpu_cgroup_online
|
||||
__tracepoint_android_rvh_cpufreq_transition
|
||||
__tracepoint_android_rvh_cpu_overutilized
|
||||
__tracepoint_android_rvh_dequeue_task
|
||||
__tracepoint_android_rvh_dequeue_task_fair
|
||||
@ -2704,6 +2748,7 @@
|
||||
__tracepoint_android_rvh_is_cpu_allowed
|
||||
__tracepoint_android_rvh_new_task_stats
|
||||
__tracepoint_android_rvh_override_creds
|
||||
__tracepoint_android_rvh_post_init_entity_util_avg
|
||||
__tracepoint_android_rvh_prepare_prio_fork
|
||||
__tracepoint_android_rvh_replace_next_task_fair
|
||||
__tracepoint_android_rvh_revert_creds
|
||||
@ -2740,20 +2785,24 @@
|
||||
__tracepoint_android_vh_audio_usb_offload_connect
|
||||
__tracepoint_android_vh_binder_restore_priority
|
||||
__tracepoint_android_vh_binder_set_priority
|
||||
__tracepoint_android_vh_binder_trans
|
||||
__tracepoint_android_vh_binder_transaction_init
|
||||
__tracepoint_android_vh_cgroup_attach
|
||||
__tracepoint_android_vh_cgroup_set_task
|
||||
__tracepoint_android_vh_check_bpf_syscall
|
||||
__tracepoint_android_vh_check_file_open
|
||||
__tracepoint_android_vh_check_mmap_file
|
||||
__tracepoint_android_vh_check_uninterrupt_tasks
|
||||
__tracepoint_android_vh_compaction_exit
|
||||
__tracepoint_android_vh_compaction_try_to_compact_pages_exit
|
||||
__tracepoint_android_vh_cpufreq_fast_switch
|
||||
__tracepoint_android_vh_cpu_idle_enter
|
||||
__tracepoint_android_vh_cpu_idle_exit
|
||||
__tracepoint_android_vh_dump_throttled_rt_tasks
|
||||
__tracepoint_android_vh_iommu_iovad_alloc_iova
|
||||
__tracepoint_android_vh_iommu_iovad_free_iova
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
__tracepoint_android_vh_mmc_update_mmc_queue
|
||||
__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_enter
|
||||
__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_exit
|
||||
__tracepoint_android_vh_mm_alloc_pages_may_oom_exit
|
||||
@ -2762,6 +2811,7 @@
|
||||
__tracepoint_android_vh_rwsem_write_finished
|
||||
__tracepoint_android_vh_sched_pelt_multiplier
|
||||
__tracepoint_android_vh_scheduler_tick
|
||||
__tracepoint_android_vh_setscheduler_uclamp
|
||||
__tracepoint_android_vh_set_wake_flags
|
||||
__tracepoint_android_vh_show_resume_epoch_val
|
||||
__tracepoint_android_vh_show_suspend_epoch_val
|
||||
@ -2886,7 +2936,9 @@
|
||||
ufshcd_make_hba_operational
|
||||
ufshcd_mcq_config_mac
|
||||
ufshcd_mcq_make_queues_operational
|
||||
ufshcd_mcq_poll_cqe_lock
|
||||
ufshcd_mcq_read_cqis
|
||||
ufshcd_mcq_write_cqis
|
||||
ufshcd_pltfrm_init
|
||||
ufshcd_query_attr
|
||||
ufshcd_query_descriptor_retry
|
||||
@ -2907,6 +2959,7 @@
|
||||
unmap_mapping_range
|
||||
unpin_user_page
|
||||
unpin_user_pages
|
||||
unpin_user_pages_dirty_lock
|
||||
unregister_blkdev
|
||||
__unregister_chrdev
|
||||
unregister_chrdev_region
|
||||
|
@ -161,6 +161,7 @@
|
||||
__traceiter_android_vh_rwsem_opt_spin_start
|
||||
__traceiter_android_vh_rwsem_wake_finish
|
||||
__traceiter_android_vh_adjust_alloc_flags
|
||||
__traceiter_android_vh_adjust_kvmalloc_flags
|
||||
__traceiter_android_vh_sched_stat_runtime_rt
|
||||
__traceiter_android_vh_shrink_node_memcgs
|
||||
__traceiter_android_vh_sync_txn_recvd
|
||||
@ -184,6 +185,14 @@
|
||||
__traceiter_task_rename
|
||||
__traceiter_android_vh_test_clear_look_around_ref
|
||||
__traceiter_android_vh_tune_swappiness
|
||||
__traceiter_android_vh_alloc_pages_reclaim_bypass
|
||||
__traceiter_android_vh_free_unref_page_bypass
|
||||
__traceiter_android_vh_kvmalloc_node_use_vmalloc
|
||||
__traceiter_android_vh_should_alloc_pages_retry
|
||||
__traceiter_android_vh_unreserve_highatomic_bypass
|
||||
__traceiter_android_vh_rmqueue_bulk_bypass
|
||||
__traceiter_android_vh_tune_mmap_readaround
|
||||
__traceiter_android_vh_ra_tuning_max_page
|
||||
__traceiter_android_vh_alloc_oem_binder_struct
|
||||
__traceiter_android_vh_binder_transaction_received
|
||||
__traceiter_android_vh_free_oem_binder_struct
|
||||
@ -250,12 +259,21 @@
|
||||
__tracepoint_android_vh_rwsem_opt_spin_start
|
||||
__tracepoint_android_vh_rwsem_wake_finish
|
||||
__tracepoint_android_vh_adjust_alloc_flags
|
||||
__tracepoint_android_vh_adjust_kvmalloc_flags
|
||||
__tracepoint_android_vh_sched_stat_runtime_rt
|
||||
__tracepoint_android_vh_shrink_node_memcgs
|
||||
__tracepoint_android_vh_sync_txn_recvd
|
||||
__tracepoint_android_vh_task_blocks_on_rtmutex
|
||||
__tracepoint_android_vh_test_clear_look_around_ref
|
||||
__tracepoint_android_vh_tune_swappiness
|
||||
__tracepoint_android_vh_alloc_pages_reclaim_bypass
|
||||
__tracepoint_android_vh_free_unref_page_bypass
|
||||
__tracepoint_android_vh_kvmalloc_node_use_vmalloc
|
||||
__tracepoint_android_vh_should_alloc_pages_retry
|
||||
__tracepoint_android_vh_unreserve_highatomic_bypass
|
||||
__tracepoint_android_vh_rmqueue_bulk_bypass
|
||||
__tracepoint_android_vh_tune_mmap_readaround
|
||||
__tracepoint_android_vh_ra_tuning_max_page
|
||||
__tracepoint_block_bio_queue
|
||||
__tracepoint_block_getrq
|
||||
__tracepoint_block_rq_complete
|
||||
|
@ -26,6 +26,7 @@
|
||||
amba_driver_unregister
|
||||
android_rvh_probe_register
|
||||
anon_inode_getfd
|
||||
anon_inode_getfile
|
||||
arc4_crypt
|
||||
arc4_setkey
|
||||
__arch_clear_user
|
||||
@ -2188,6 +2189,7 @@
|
||||
__traceiter_android_rvh_update_load_avg
|
||||
__traceiter_android_rvh_update_misfit_status
|
||||
__traceiter_android_rvh_update_rt_rq_load_avg
|
||||
__traceiter_android_rvh_util_fits_cpu
|
||||
__traceiter_android_vh_arch_set_freq_scale
|
||||
__traceiter_android_vh_audio_usb_offload_connect
|
||||
__traceiter_android_vh_binder_restore_priority
|
||||
@ -2252,6 +2254,8 @@
|
||||
__traceiter_sched_util_est_cfs_tp
|
||||
__traceiter_sched_util_est_se_tp
|
||||
__traceiter_sched_wakeup
|
||||
__traceiter_softirq_entry
|
||||
__traceiter_softirq_exit
|
||||
__traceiter_suspend_resume
|
||||
__traceiter_workqueue_execute_end
|
||||
__traceiter_workqueue_execute_start
|
||||
@ -2290,6 +2294,7 @@
|
||||
__tracepoint_android_rvh_update_load_avg
|
||||
__tracepoint_android_rvh_update_misfit_status
|
||||
__tracepoint_android_rvh_update_rt_rq_load_avg
|
||||
__tracepoint_android_rvh_util_fits_cpu
|
||||
__tracepoint_android_vh_arch_set_freq_scale
|
||||
__tracepoint_android_vh_audio_usb_offload_connect
|
||||
__tracepoint_android_vh_binder_restore_priority
|
||||
@ -2356,6 +2361,8 @@
|
||||
__tracepoint_sched_util_est_cfs_tp
|
||||
__tracepoint_sched_util_est_se_tp
|
||||
__tracepoint_sched_wakeup
|
||||
__tracepoint_softirq_entry
|
||||
__tracepoint_softirq_exit
|
||||
__tracepoint_suspend_resume
|
||||
__tracepoint_workqueue_execute_end
|
||||
__tracepoint_workqueue_execute_start
|
||||
|
@ -2038,6 +2038,7 @@
|
||||
__netif_napi_del
|
||||
netif_receive_skb
|
||||
netif_receive_skb_list
|
||||
__netif_rx
|
||||
netif_rx
|
||||
netif_schedule_queue
|
||||
netif_set_real_num_rx_queues
|
||||
@ -3292,7 +3293,9 @@
|
||||
topology_update_thermal_pressure
|
||||
_totalram_pages
|
||||
_trace_android_vh_record_pcpu_rwsem_starttime
|
||||
trace_array_get_by_name
|
||||
trace_array_put
|
||||
trace_array_set_clr_event
|
||||
__trace_bprintk
|
||||
trace_clock_local
|
||||
trace_event_buffer_commit
|
||||
|
8
android/abi_gki_aarch64_sony
Normal file
8
android/abi_gki_aarch64_sony
Normal file
@ -0,0 +1,8 @@
|
||||
[abi_symbol_list]
|
||||
#required for failure diagnostics
|
||||
__traceiter_block_rq_complete
|
||||
__tracepoint_block_rq_complete
|
||||
__traceiter_android_vh_mmc_blk_mq_rw_recovery
|
||||
__tracepoint_android_vh_mmc_blk_mq_rw_recovery
|
||||
__traceiter_android_vh_sd_update_bus_speed_mode
|
||||
__tracepoint_android_vh_sd_update_bus_speed_mode
|
@ -719,6 +719,7 @@
|
||||
__traceiter_android_vh_modify_thermal_target_freq
|
||||
__traceiter_android_vh_regmap_update
|
||||
__traceiter_android_vh_scheduler_tick
|
||||
__traceiter_android_vh_slab_folio_alloced
|
||||
__traceiter_android_vh_thermal_power_cap
|
||||
__traceiter_android_vh_thermal_register
|
||||
__traceiter_android_vh_thermal_unregister
|
||||
@ -798,6 +799,7 @@
|
||||
__tracepoint_android_vh_modify_thermal_target_freq
|
||||
__tracepoint_android_vh_regmap_update
|
||||
__tracepoint_android_vh_scheduler_tick
|
||||
__tracepoint_android_vh_slab_folio_alloced
|
||||
__tracepoint_android_vh_thermal_power_cap
|
||||
__tracepoint_android_vh_thermal_register
|
||||
__tracepoint_android_vh_thermal_unregister
|
||||
|
@ -79,35 +79,10 @@ static void hyp_unlock_component(void)
|
||||
hyp_spin_unlock(&pkvm_pgd_lock);
|
||||
}
|
||||
|
||||
static void assert_host_can_alloc(void)
|
||||
{
|
||||
/* We can always get back to the host from guest context */
|
||||
if (read_sysreg(vttbr_el2) != kvm_get_vttbr(&host_mmu.arch.mmu))
|
||||
return;
|
||||
|
||||
/*
|
||||
* An error code must be returned to EL1 to handle memory allocation
|
||||
* failures cleanly. That's doable for explicit calls into higher
|
||||
* ELs, but not so much for other EL2 entry reasons such as mem aborts.
|
||||
* Thankfully we don't need memory allocation in these cases by
|
||||
* construction, so let's enforce the invariant.
|
||||
*/
|
||||
switch (ESR_ELx_EC(read_sysreg(esr_el2))) {
|
||||
case ESR_ELx_EC_HVC64:
|
||||
case ESR_ELx_EC_SMC64:
|
||||
break;
|
||||
default:
|
||||
WARN_ON(1);
|
||||
}
|
||||
}
|
||||
|
||||
static void *host_s2_zalloc_pages_exact(size_t size)
|
||||
{
|
||||
void *addr;
|
||||
void *addr = hyp_alloc_pages(&host_s2_pool, get_order(size));
|
||||
|
||||
assert_host_can_alloc();
|
||||
|
||||
addr = hyp_alloc_pages(&host_s2_pool, get_order(size));
|
||||
hyp_split_page(hyp_virt_to_page(addr));
|
||||
|
||||
/*
|
||||
@ -122,8 +97,6 @@ static void *host_s2_zalloc_pages_exact(size_t size)
|
||||
|
||||
static void *host_s2_zalloc_page(void *pool)
|
||||
{
|
||||
assert_host_can_alloc();
|
||||
|
||||
return hyp_alloc_pages(pool, 0);
|
||||
}
|
||||
|
||||
|
@ -1388,7 +1388,7 @@ static int pkvm_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
|
||||
* prevent try_to_unmap() from succeeding.
|
||||
*/
|
||||
ret = -EIO;
|
||||
goto dec_account;
|
||||
goto unpin;
|
||||
}
|
||||
|
||||
write_lock(&kvm->mmu_lock);
|
||||
@ -1397,7 +1397,7 @@ static int pkvm_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
|
||||
if (ret) {
|
||||
if (ret == -EAGAIN)
|
||||
ret = 0;
|
||||
goto unpin;
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
ppage->page = page;
|
||||
@ -1407,8 +1407,9 @@ static int pkvm_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
|
||||
|
||||
return 0;
|
||||
|
||||
unpin:
|
||||
unlock:
|
||||
write_unlock(&kvm->mmu_lock);
|
||||
unpin:
|
||||
unpin_user_pages(&page, 1);
|
||||
dec_account:
|
||||
account_locked_vm(mm, 1, false);
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include <linux/of_fdt.h>
|
||||
#include <linux/of_reserved_mem.h>
|
||||
#include <linux/sort.h>
|
||||
#include <linux/stat.h>
|
||||
|
||||
#include <asm/kvm_hyp.h>
|
||||
#include <asm/kvm_mmu.h>
|
||||
@ -21,6 +22,9 @@
|
||||
#include <asm/kvm_pkvm_module.h>
|
||||
#include <asm/setup.h>
|
||||
|
||||
#include <uapi/linux/mount.h>
|
||||
#include <linux/init_syscalls.h>
|
||||
|
||||
#include "hyp_constants.h"
|
||||
|
||||
DEFINE_STATIC_KEY_FALSE(kvm_protected_mode_initialized);
|
||||
@ -682,7 +686,11 @@ int __init pkvm_load_early_modules(void)
|
||||
{
|
||||
char *token, *buf = early_pkvm_modules;
|
||||
char *module_path = CONFIG_PKVM_MODULE_PATH;
|
||||
int err;
|
||||
int err = init_mount("proc", "/proc", "proc",
|
||||
MS_SILENT | MS_NOEXEC | MS_NOSUID, NULL);
|
||||
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
while (true) {
|
||||
token = strsep(&buf, ",");
|
||||
|
@ -1563,17 +1563,22 @@ static const struct iommu_ops *acpi_iommu_configure_id(struct device *dev,
|
||||
int err;
|
||||
const struct iommu_ops *ops;
|
||||
|
||||
/* Serialise to make dev->iommu stable under our potential fwspec */
|
||||
mutex_lock(&iommu_probe_device_lock);
|
||||
/*
|
||||
* If we already translated the fwspec there is nothing left to do,
|
||||
* return the iommu_ops.
|
||||
*/
|
||||
ops = acpi_iommu_fwspec_ops(dev);
|
||||
if (ops)
|
||||
if (ops) {
|
||||
mutex_unlock(&iommu_probe_device_lock);
|
||||
return ops;
|
||||
}
|
||||
|
||||
err = iort_iommu_configure_id(dev, id_in);
|
||||
if (err && err != -EPROBE_DEFER)
|
||||
err = viot_iommu_configure(dev);
|
||||
mutex_unlock(&iommu_probe_device_lock);
|
||||
|
||||
/*
|
||||
* If we have reason to believe the IOMMU driver missed the initial
|
||||
|
@ -171,6 +171,13 @@ 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_vh_dm_bufio_shrink_scan_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cleanup_old_buffers_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_unref_page_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kvmalloc_node_use_vmalloc);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_should_alloc_pages_retry);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_unreserve_highatomic_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rmqueue_bulk_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ra_tuning_max_page);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_mmap_readaround);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_insert);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_delete);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_node_replace);
|
||||
@ -255,6 +262,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_mutex_list_add);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_unlock_slowpath);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake_finish);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_adjust_alloc_flags);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_adjust_kvmalloc_flags);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_looper_state_registered);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_thread_read);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_free_proc);
|
||||
@ -289,6 +297,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_should_continue_reclaim);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_file_is_tiny_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_mmc_resume);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_mmc_suspend);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_update_mmc_queue);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_signal);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_node_memcgs);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_modify_thermal_request_freq);
|
||||
@ -351,3 +360,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_resume_begin);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_resume_end);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_early_resume_begin);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_get_folio);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_blk_mq_rw_recovery);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sd_update_bus_speed_mode);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_slab_folio_alloced);
|
||||
|
@ -363,6 +363,7 @@ void dev_coredumpm(struct device *dev, struct module *owner,
|
||||
devcd->devcd_dev.class = &devcd_class;
|
||||
|
||||
mutex_lock(&devcd->mutex);
|
||||
dev_set_uevent_suppress(&devcd->devcd_dev, true);
|
||||
if (device_add(&devcd->devcd_dev))
|
||||
goto put_device;
|
||||
|
||||
@ -377,6 +378,8 @@ void dev_coredumpm(struct device *dev, struct module *owner,
|
||||
"devcoredump"))
|
||||
dev_warn(dev, "devcoredump create_link failed\n");
|
||||
|
||||
dev_set_uevent_suppress(&devcd->devcd_dev, false);
|
||||
kobject_uevent(&devcd->devcd_dev.kobj, KOBJ_ADD);
|
||||
INIT_DELAYED_WORK(&devcd->del_wk, devcd_del);
|
||||
schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT);
|
||||
mutex_unlock(&devcd->mutex);
|
||||
|
@ -308,12 +308,13 @@ static u32 dev_iommu_get_max_pasids(struct device *dev)
|
||||
return min_t(u32, max_pasids, dev->iommu->iommu_dev->max_pasids);
|
||||
}
|
||||
|
||||
DEFINE_MUTEX(iommu_probe_device_lock);
|
||||
|
||||
static int __iommu_probe_device(struct device *dev, struct list_head *group_list)
|
||||
{
|
||||
const struct iommu_ops *ops = dev->bus->iommu_ops;
|
||||
struct iommu_device *iommu_dev;
|
||||
struct iommu_group *group;
|
||||
static DEFINE_MUTEX(iommu_probe_device_lock);
|
||||
int ret;
|
||||
|
||||
if (!ops)
|
||||
@ -325,10 +326,10 @@ static int __iommu_probe_device(struct device *dev, struct list_head *group_list
|
||||
* probably be able to use device_lock() here to minimise the scope,
|
||||
* but for now enforcing a simple global ordering is fine.
|
||||
*/
|
||||
mutex_lock(&iommu_probe_device_lock);
|
||||
lockdep_assert_held(&iommu_probe_device_lock);
|
||||
if (!dev_iommu_get(dev)) {
|
||||
ret = -ENOMEM;
|
||||
goto err_unlock;
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
if (!try_module_get(ops->owner)) {
|
||||
@ -357,7 +358,6 @@ static int __iommu_probe_device(struct device *dev, struct list_head *group_list
|
||||
mutex_unlock(&group->mutex);
|
||||
iommu_group_put(group);
|
||||
|
||||
mutex_unlock(&iommu_probe_device_lock);
|
||||
iommu_device_link(iommu_dev, dev);
|
||||
|
||||
return 0;
|
||||
@ -372,9 +372,7 @@ static int __iommu_probe_device(struct device *dev, struct list_head *group_list
|
||||
err_free:
|
||||
dev_iommu_free(dev);
|
||||
|
||||
err_unlock:
|
||||
mutex_unlock(&iommu_probe_device_lock);
|
||||
|
||||
err_out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -384,7 +382,9 @@ int iommu_probe_device(struct device *dev)
|
||||
struct iommu_group *group;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&iommu_probe_device_lock);
|
||||
ret = __iommu_probe_device(dev, NULL);
|
||||
mutex_unlock(&iommu_probe_device_lock);
|
||||
if (ret)
|
||||
goto err_out;
|
||||
|
||||
@ -1716,7 +1716,9 @@ static int probe_iommu_group(struct device *dev, void *data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
mutex_lock(&iommu_probe_device_lock);
|
||||
ret = __iommu_probe_device(dev, group_list);
|
||||
mutex_unlock(&iommu_probe_device_lock);
|
||||
if (ret == -ENODEV)
|
||||
ret = 0;
|
||||
|
||||
|
@ -113,16 +113,20 @@ const struct iommu_ops *of_iommu_configure(struct device *dev,
|
||||
const u32 *id)
|
||||
{
|
||||
const struct iommu_ops *ops = NULL;
|
||||
struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev);
|
||||
struct iommu_fwspec *fwspec;
|
||||
int err = NO_IOMMU;
|
||||
|
||||
if (!master_np)
|
||||
return NULL;
|
||||
|
||||
/* Serialise to make dev->iommu stable under our potential fwspec */
|
||||
mutex_lock(&iommu_probe_device_lock);
|
||||
fwspec = dev_iommu_fwspec_get(dev);
|
||||
if (fwspec) {
|
||||
if (fwspec->ops)
|
||||
if (fwspec->ops) {
|
||||
mutex_unlock(&iommu_probe_device_lock);
|
||||
return fwspec->ops;
|
||||
|
||||
}
|
||||
/* In the deferred case, start again from scratch */
|
||||
iommu_fwspec_free(dev);
|
||||
}
|
||||
@ -156,6 +160,8 @@ const struct iommu_ops *of_iommu_configure(struct device *dev,
|
||||
fwspec = dev_iommu_fwspec_get(dev);
|
||||
ops = fwspec->ops;
|
||||
}
|
||||
mutex_unlock(&iommu_probe_device_lock);
|
||||
|
||||
/*
|
||||
* If we have reason to believe the IOMMU driver missed the initial
|
||||
* probe for dev, replay it to get things in order.
|
||||
|
@ -46,9 +46,12 @@
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/mmc/mmc.h>
|
||||
#include <linux/mmc/sd.h>
|
||||
#include <trace/hooks/mmc.h>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
#include <trace/hooks/mmc.h>
|
||||
|
||||
#include "queue.h"
|
||||
#include "block.h"
|
||||
#include "core.h"
|
||||
@ -1894,6 +1897,7 @@ static void mmc_blk_mq_rw_recovery(struct mmc_queue *mq, struct request *req)
|
||||
err && mmc_blk_reset(md, card->host, type)) {
|
||||
pr_err("%s: recovery failed!\n", req->q->disk->disk_name);
|
||||
mqrq->retries = MMC_NO_RETRIES;
|
||||
trace_android_vh_mmc_blk_mq_rw_recovery(card);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -3015,6 +3019,7 @@ static int mmc_blk_probe(struct mmc_card *card)
|
||||
ret = PTR_ERR(md);
|
||||
goto out_free;
|
||||
}
|
||||
trace_android_vh_mmc_update_mmc_queue(card, &md->queue);
|
||||
|
||||
ret = mmc_blk_alloc_parts(card, md);
|
||||
if (ret)
|
||||
|
@ -21,6 +21,8 @@
|
||||
#include <linux/mmc/mmc.h>
|
||||
#include <linux/mmc/sd.h>
|
||||
|
||||
#include <trace/hooks/mmc.h>
|
||||
|
||||
#include "core.h"
|
||||
#include "card.h"
|
||||
#include "host.h"
|
||||
@ -481,6 +483,8 @@ static void sd_update_bus_speed_mode(struct mmc_card *card)
|
||||
SD_MODE_UHS_SDR12)) {
|
||||
card->sd_bus_speed = UHS_SDR12_BUS_SPEED;
|
||||
}
|
||||
|
||||
trace_android_vh_sd_update_bus_speed_mode(card);
|
||||
}
|
||||
|
||||
static int sd_set_bus_speed_mode(struct mmc_card *card, u8 *status)
|
||||
|
@ -446,7 +446,7 @@ int ufshcd_mcq_init(struct ufs_hba *hba)
|
||||
|
||||
for (i = 0; i < hba->nr_hw_queues; i++) {
|
||||
hwq = &hba->uhq[i];
|
||||
hwq->max_entries = hba->nutrs;
|
||||
hwq->max_entries = hba->nutrs + 1;
|
||||
spin_lock_init(&hwq->sq_lock);
|
||||
spin_lock_init(&hwq->cq_lock);
|
||||
mutex_init(&hwq->sq_mutex);
|
||||
@ -593,7 +593,6 @@ static bool ufshcd_mcq_sqe_search(struct ufs_hba *hba,
|
||||
{
|
||||
struct ufshcd_lrb *lrbp = &hba->lrb[task_tag];
|
||||
struct utp_transfer_req_desc *utrd;
|
||||
u32 mask = hwq->max_entries - 1;
|
||||
__le64 cmd_desc_base_addr;
|
||||
bool ret = false;
|
||||
u64 addr, match;
|
||||
@ -621,7 +620,10 @@ static bool ufshcd_mcq_sqe_search(struct ufs_hba *hba,
|
||||
ret = true;
|
||||
goto out;
|
||||
}
|
||||
sq_head_slot = (sq_head_slot + 1) & mask;
|
||||
|
||||
sq_head_slot++;
|
||||
if (sq_head_slot == hwq->max_entries)
|
||||
sq_head_slot = 0;
|
||||
}
|
||||
|
||||
out:
|
||||
|
@ -76,8 +76,7 @@ static int ufs_bsg_exec_advanced_rpmb_req(struct ufs_hba *hba, struct bsg_job *j
|
||||
int ret;
|
||||
int data_len;
|
||||
|
||||
if (hba->ufs_version < ufshci_version(4, 0) || !hba->dev_info.b_advanced_rpmb_en ||
|
||||
!(hba->capabilities & MASK_EHSLUTRD_SUPPORTED))
|
||||
if (hba->ufs_version < ufshci_version(4, 0) || !hba->dev_info.b_advanced_rpmb_en)
|
||||
return -EINVAL;
|
||||
|
||||
if (rpmb_request->ehs_req.length != 2 || rpmb_request->ehs_req.ehs_type != 1)
|
||||
|
@ -370,10 +370,11 @@ static inline bool ufs_is_valid_unit_desc_lun(struct ufs_dev_info *dev_info, u8
|
||||
|
||||
static inline void ufshcd_inc_sq_tail(struct ufs_hw_queue *q)
|
||||
{
|
||||
u32 mask = q->max_entries - 1;
|
||||
u32 val;
|
||||
|
||||
q->sq_tail_slot = (q->sq_tail_slot + 1) & mask;
|
||||
q->sq_tail_slot++;
|
||||
if (q->sq_tail_slot == q->max_entries)
|
||||
q->sq_tail_slot = 0;
|
||||
val = q->sq_tail_slot * sizeof(struct utp_transfer_req_desc);
|
||||
writel(val, q->mcq_sq_tail);
|
||||
}
|
||||
|
@ -6485,6 +6485,8 @@ static bool ufshcd_abort_all(struct ufs_hba *hba)
|
||||
if (is_mcq_enabled(hba)) {
|
||||
struct ufshcd_lrb *lrbp;
|
||||
int tag;
|
||||
struct ufs_hw_queue *hwq;
|
||||
unsigned long flags;
|
||||
|
||||
for (tag = 0; tag < hba->nutrs; tag++) {
|
||||
lrbp = &hba->lrb[tag];
|
||||
@ -6498,6 +6500,11 @@ static bool ufshcd_abort_all(struct ufs_hba *hba)
|
||||
needs_reset = true;
|
||||
goto out;
|
||||
}
|
||||
hwq = ufshcd_mcq_req_to_hwq(hba, scsi_cmd_to_rq(lrbp->cmd));
|
||||
spin_lock_irqsave(&hwq->cq_lock, flags);
|
||||
if (ufshcd_cmd_inflight(lrbp->cmd))
|
||||
ufshcd_release_scsi_cmd(hba, lrbp);
|
||||
spin_unlock_irqrestore(&hwq->cq_lock, flags);
|
||||
}
|
||||
} else {
|
||||
/* Clear pending transfer requests */
|
||||
@ -7385,7 +7392,15 @@ int ufshcd_advanced_rpmb_req_handler(struct ufs_hba *hba, struct utp_upiu_req *r
|
||||
/* Advanced RPMB starts from UFS 4.0, so its command type is UTP_CMD_TYPE_UFS_STORAGE */
|
||||
lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
|
||||
|
||||
/*
|
||||
* According to UFSHCI 4.0 specification page 24, if EHSLUTRDS is 0, host controller takes
|
||||
* EHS length from CMD UPIU, and SW driver use EHS Length field in CMD UPIU. if it is 1,
|
||||
* HW controller takes EHS length from UTRD.
|
||||
*/
|
||||
if (hba->capabilities & MASK_EHSLUTRD_SUPPORTED)
|
||||
ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, dir, 2);
|
||||
else
|
||||
ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, dir, 0);
|
||||
|
||||
/* update the task tag and LUN in the request upiu */
|
||||
req_upiu->header.dword_0 |= cpu_to_be32(upiu_flags << 16 | UFS_UPIU_RPMB_WLUN << 8 | tag);
|
||||
|
@ -225,7 +225,7 @@ static void ufs_qcom_select_unipro_mode(struct ufs_qcom_host *host)
|
||||
ufs_qcom_cap_qunipro(host) ? QUNIPRO_SEL : 0,
|
||||
REG_UFS_CFG1);
|
||||
|
||||
if (host->hw_ver.major == 0x05)
|
||||
if (host->hw_ver.major >= 0x05)
|
||||
ufshcd_rmwl(host->hba, QUNIPRO_G4_SEL, 0, REG_UFS_CFG0);
|
||||
|
||||
/* make sure above configuration is applied before we return */
|
||||
|
@ -1099,12 +1099,12 @@ EXPORT_SYMBOL_GPL(usb_gadget_set_state);
|
||||
/* ------------------------------------------------------------------------- */
|
||||
|
||||
/* Acquire connect_lock before calling this function. */
|
||||
static void usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock)
|
||||
static int usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock)
|
||||
{
|
||||
if (udc->vbus)
|
||||
usb_gadget_connect_locked(udc->gadget);
|
||||
return usb_gadget_connect_locked(udc->gadget);
|
||||
else
|
||||
usb_gadget_disconnect_locked(udc->gadget);
|
||||
return usb_gadget_disconnect_locked(udc->gadget);
|
||||
}
|
||||
|
||||
static void vbus_event_work(struct work_struct *work)
|
||||
@ -1578,12 +1578,23 @@ static int gadget_bind_driver(struct device *dev)
|
||||
}
|
||||
usb_gadget_enable_async_callbacks(udc);
|
||||
udc->allow_connect = true;
|
||||
usb_udc_connect_control_locked(udc);
|
||||
ret = usb_udc_connect_control_locked(udc);
|
||||
if (ret)
|
||||
goto err_connect_control;
|
||||
|
||||
mutex_unlock(&udc->connect_lock);
|
||||
|
||||
kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE);
|
||||
return 0;
|
||||
|
||||
err_connect_control:
|
||||
udc->allow_connect = false;
|
||||
usb_gadget_disable_async_callbacks(udc);
|
||||
if (gadget->irq)
|
||||
synchronize_irq(gadget->irq);
|
||||
usb_gadget_udc_stop_locked(udc);
|
||||
mutex_unlock(&udc->connect_lock);
|
||||
|
||||
err_start:
|
||||
driver->unbind(udc->gadget);
|
||||
|
||||
|
@ -4289,7 +4289,8 @@ static void run_state_machine(struct tcpm_port *port)
|
||||
current_lim = PD_P_SNK_STDBY_MW / 5;
|
||||
tcpm_set_current_limit(port, current_lim, 5000);
|
||||
/* Not sink vbus if operational current is 0mA */
|
||||
tcpm_set_charge(port, !!pdo_max_current(port->snk_pdo[0]));
|
||||
tcpm_set_charge(port, !port->pd_supported ||
|
||||
pdo_max_current(port->snk_pdo[0]));
|
||||
|
||||
if (!port->pd_supported)
|
||||
tcpm_set_state(port, SNK_READY, 0);
|
||||
|
@ -300,7 +300,9 @@ int fuse_release_initialize(struct fuse_bpf_args *fa, struct fuse_release_in *fr
|
||||
struct inode *inode, struct fuse_file *ff)
|
||||
{
|
||||
/* Always put backing file whatever bpf/userspace says */
|
||||
if (ff->backing_file) {
|
||||
fput(ff->backing_file);
|
||||
}
|
||||
|
||||
*fri = (struct fuse_release_in) {
|
||||
.fh = ff->fh,
|
||||
|
@ -214,7 +214,8 @@ int fuse_passthrough_open(struct fuse_dev *fud, u32 lower_fd)
|
||||
}
|
||||
|
||||
if (!passthrough_filp->f_op->read_iter ||
|
||||
!passthrough_filp->f_op->write_iter) {
|
||||
!((passthrough_filp->f_path.mnt->mnt_flags | MNT_READONLY) ||
|
||||
passthrough_filp->f_op->write_iter)) {
|
||||
pr_err("FUSE: passthrough file misses file operations.\n");
|
||||
res = -EBADF;
|
||||
goto err_free_file;
|
||||
|
@ -2022,21 +2022,19 @@ static int pid_revalidate(struct dentry *dentry, unsigned int flags)
|
||||
{
|
||||
struct inode *inode;
|
||||
struct task_struct *task;
|
||||
int ret = 0;
|
||||
|
||||
rcu_read_lock();
|
||||
inode = d_inode_rcu(dentry);
|
||||
if (!inode)
|
||||
goto out;
|
||||
task = pid_task(proc_pid(inode), PIDTYPE_PID);
|
||||
if (flags & LOOKUP_RCU)
|
||||
return -ECHILD;
|
||||
|
||||
inode = d_inode(dentry);
|
||||
task = get_proc_task(inode);
|
||||
|
||||
if (task) {
|
||||
pid_update_inode(task, inode);
|
||||
ret = 1;
|
||||
put_task_struct(task);
|
||||
return 1;
|
||||
}
|
||||
out:
|
||||
rcu_read_unlock();
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline bool proc_inode_is_dead(struct inode *inode)
|
||||
|
@ -689,6 +689,7 @@ static inline void dev_iommu_priv_set(struct device *dev, void *priv)
|
||||
dev->iommu->priv = priv;
|
||||
}
|
||||
|
||||
extern struct mutex iommu_probe_device_lock;
|
||||
int iommu_probe_device(struct device *dev);
|
||||
void iommu_release_device(struct device *dev);
|
||||
|
||||
|
@ -7873,7 +7873,8 @@ void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
|
||||
* cfg80211_port_authorized - notify cfg80211 of successful security association
|
||||
*
|
||||
* @dev: network device
|
||||
* @bssid: the BSSID of the AP
|
||||
* @peer_addr: BSSID of the AP/P2P GO in case of STA/GC or STA/GC MAC address
|
||||
* in case of AP/P2P GO
|
||||
* @td_bitmap: transition disable policy
|
||||
* @td_bitmap_len: Length of transition disable policy
|
||||
* @gfp: allocation flags
|
||||
@ -7884,8 +7885,11 @@ void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
|
||||
* should be preceded with a call to cfg80211_connect_result(),
|
||||
* cfg80211_connect_done(), cfg80211_connect_bss() or cfg80211_roamed() to
|
||||
* indicate the 802.11 association.
|
||||
* This function can also be called by AP/P2P GO driver that supports
|
||||
* authentication offload. In this case the peer_mac passed is that of
|
||||
* associated STA/GC.
|
||||
*/
|
||||
void cfg80211_port_authorized(struct net_device *dev, const u8 *bssid,
|
||||
void cfg80211_port_authorized(struct net_device *dev, const u8 *peer_addr,
|
||||
const u8* td_bitmap, u8 td_bitmap_len, gfp_t gfp);
|
||||
|
||||
/**
|
||||
|
@ -123,6 +123,31 @@ DECLARE_HOOK(android_vh_mm_compaction_begin,
|
||||
DECLARE_HOOK(android_vh_mm_compaction_end,
|
||||
TP_PROTO(struct compact_control *cc, long vendor_ret),
|
||||
TP_ARGS(cc, vendor_ret));
|
||||
DECLARE_HOOK(android_vh_free_unref_page_bypass,
|
||||
TP_PROTO(struct page *page, int order, int migratetype, bool *bypass),
|
||||
TP_ARGS(page, order, migratetype, bypass));
|
||||
DECLARE_HOOK(android_vh_kvmalloc_node_use_vmalloc,
|
||||
TP_PROTO(size_t size, gfp_t *kmalloc_flags, bool *use_vmalloc),
|
||||
TP_ARGS(size, kmalloc_flags, use_vmalloc));
|
||||
DECLARE_HOOK(android_vh_should_alloc_pages_retry,
|
||||
TP_PROTO(gfp_t gfp_mask, int order, int *alloc_flags,
|
||||
int migratetype, struct zone *preferred_zone, struct page **page, bool *should_alloc_retry),
|
||||
TP_ARGS(gfp_mask, order, alloc_flags,
|
||||
migratetype, preferred_zone, page, should_alloc_retry));
|
||||
DECLARE_HOOK(android_vh_unreserve_highatomic_bypass,
|
||||
TP_PROTO(bool force, struct zone *zone, bool *skip_unreserve_highatomic),
|
||||
TP_ARGS(force, zone, skip_unreserve_highatomic));
|
||||
DECLARE_HOOK(android_vh_rmqueue_bulk_bypass,
|
||||
TP_PROTO(unsigned int order, struct per_cpu_pages *pcp, int migratetype,
|
||||
struct list_head *list),
|
||||
TP_ARGS(order, pcp, migratetype, list));
|
||||
DECLARE_HOOK(android_vh_ra_tuning_max_page,
|
||||
TP_PROTO(struct readahead_control *ractl, unsigned long *max_page),
|
||||
TP_ARGS(ractl, max_page));
|
||||
DECLARE_HOOK(android_vh_tune_mmap_readaround,
|
||||
TP_PROTO(unsigned int ra_pages, pgoff_t pgoff,
|
||||
pgoff_t *start, unsigned int *size, unsigned int *async_size),
|
||||
TP_ARGS(ra_pages, pgoff, start, size, async_size));
|
||||
struct mem_cgroup;
|
||||
DECLARE_HOOK(android_vh_mem_cgroup_alloc,
|
||||
TP_PROTO(struct mem_cgroup *memcg),
|
||||
@ -168,6 +193,12 @@ struct oom_control;
|
||||
DECLARE_HOOK(android_vh_mm_alloc_pages_may_oom_exit,
|
||||
TP_PROTO(struct oom_control *oc, unsigned long did_some_progress),
|
||||
TP_ARGS(oc, did_some_progress));
|
||||
DECLARE_HOOK(android_vh_adjust_kvmalloc_flags,
|
||||
TP_PROTO(unsigned int order, gfp_t *alloc_flags),
|
||||
TP_ARGS(order, alloc_flags));
|
||||
DECLARE_HOOK(android_vh_slab_folio_alloced,
|
||||
TP_PROTO(unsigned int order, gfp_t flags),
|
||||
TP_ARGS(order, flags));
|
||||
#endif /* _TRACE_HOOK_MM_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
@ -7,11 +7,21 @@
|
||||
#define _TRACE_HOOK_MMC_H
|
||||
#include <trace/hooks/vendor_hooks.h>
|
||||
struct mmc_host;
|
||||
struct mmc_card;
|
||||
struct mmc_queue;
|
||||
|
||||
/*
|
||||
* Following tracepoints are not exported in tracefs and provide a
|
||||
* mechanism for vendor modules to hook and extend functionality
|
||||
*/
|
||||
DECLARE_HOOK(android_vh_mmc_blk_mq_rw_recovery,
|
||||
TP_PROTO(struct mmc_card *card),
|
||||
TP_ARGS(card));
|
||||
|
||||
DECLARE_HOOK(android_vh_sd_update_bus_speed_mode,
|
||||
TP_PROTO(struct mmc_card *card),
|
||||
TP_ARGS(card));
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_mmc_suspend,
|
||||
TP_PROTO(struct mmc_host *host),
|
||||
TP_ARGS(host), 1);
|
||||
@ -20,6 +30,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_mmc_resume,
|
||||
TP_PROTO(struct mmc_host *host, bool *resume_success),
|
||||
TP_ARGS(host, resume_success), 1);
|
||||
|
||||
DECLARE_HOOK(android_vh_mmc_update_mmc_queue,
|
||||
TP_PROTO(struct mmc_card *card, struct mmc_queue *mq),
|
||||
TP_ARGS(card, mq));
|
||||
|
||||
#endif /* _TRACE_HOOK_MMC_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
@ -198,6 +198,11 @@ DECLARE_RESTRICTED_HOOK(android_rvh_update_misfit_status,
|
||||
TP_PROTO(struct task_struct *p, struct rq *rq, bool *need_update),
|
||||
TP_ARGS(p, rq, need_update), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_util_fits_cpu,
|
||||
TP_PROTO(unsigned long util, unsigned long uclamp_min, unsigned long uclamp_max,
|
||||
int cpu, bool *fits, bool *done),
|
||||
TP_ARGS(util, uclamp_min, uclamp_max, cpu, fits, done), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_sched_fork_init,
|
||||
TP_PROTO(struct task_struct *p),
|
||||
TP_ARGS(p), 1);
|
||||
|
@ -334,6 +334,15 @@
|
||||
* use %NL80211_CMD_START_AP or similar functions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: OWE DH IE handling offload
|
||||
*
|
||||
* By setting @NL80211_EXT_FEATURE_OWE_OFFLOAD flag, drivers can indicate
|
||||
* kernel/application space to avoid DH IE handling. When this flag is
|
||||
* advertised, the driver/device will take care of DH IE inclusion and
|
||||
* processing of peer DH IE to generate PMK.
|
||||
*/
|
||||
|
||||
/**
|
||||
* enum nl80211_commands - supported nl80211 commands
|
||||
*
|
||||
@ -6434,6 +6443,12 @@ enum nl80211_feature_flags {
|
||||
* in authentication and deauthentication frames sent to unassociated peer
|
||||
* using @NL80211_CMD_FRAME.
|
||||
*
|
||||
* @NL80211_EXT_FEATURE_OWE_OFFLOAD: Driver/Device wants to do OWE DH IE
|
||||
* handling in station mode.
|
||||
*
|
||||
* @NL80211_EXT_FEATURE_OWE_OFFLOAD_AP: Driver/Device wants to do OWE DH IE
|
||||
* handling in AP mode.
|
||||
*
|
||||
* @NUM_NL80211_EXT_FEATURES: number of extended features.
|
||||
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
|
||||
*/
|
||||
@ -6505,8 +6520,8 @@ enum nl80211_ext_feature_index {
|
||||
NL80211_EXT_FEATURE_PUNCT,
|
||||
NL80211_EXT_FEATURE_SECURE_NAN,
|
||||
NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA,
|
||||
NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_1,
|
||||
NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_2,
|
||||
NL80211_EXT_FEATURE_OWE_OFFLOAD,
|
||||
NL80211_EXT_FEATURE_OWE_OFFLOAD_AP,
|
||||
NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_3,
|
||||
NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_4,
|
||||
NL80211_EXT_FEATURE_ANDROID_KABI_RESERVED_5,
|
||||
|
@ -4459,7 +4459,12 @@ static inline int util_fits_cpu(unsigned long util,
|
||||
{
|
||||
unsigned long capacity_orig, capacity_orig_thermal;
|
||||
unsigned long capacity = capacity_of(cpu);
|
||||
bool fits, uclamp_max_fits;
|
||||
bool fits, uclamp_max_fits, done = false;
|
||||
|
||||
trace_android_rvh_util_fits_cpu(util, uclamp_min, uclamp_max, cpu, &fits, &done);
|
||||
|
||||
if (done)
|
||||
return fits;
|
||||
|
||||
/*
|
||||
* Check if the real util fits without any uclamp boost/cap applied.
|
||||
|
@ -69,6 +69,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_cpu_dying);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_account_irq);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_place_entity);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_build_perf_domains);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_util_fits_cpu);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpu_capacity);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_misfit_status);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rto_next_cpu);
|
||||
|
@ -35,6 +35,10 @@
|
||||
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(irq_handler_entry);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(irq_handler_exit);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(softirq_entry);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(softirq_exit);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(tasklet_entry);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(tasklet_exit);
|
||||
|
||||
/*
|
||||
- No shared variables, all the data are CPU local.
|
||||
|
@ -3058,6 +3058,8 @@ static struct file *do_sync_mmap_readahead(struct vm_fault *vmf)
|
||||
ra->start = max_t(long, 0, vmf->pgoff - ra->ra_pages / 2);
|
||||
ra->size = ra->ra_pages;
|
||||
ra->async_size = ra->ra_pages / 4;
|
||||
trace_android_vh_tune_mmap_readaround(ra->ra_pages, vmf->pgoff,
|
||||
&ra->start, &ra->size, &ra->async_size);
|
||||
ractl._index = ra->start;
|
||||
page_cache_ra_order(&ractl, ra, 0);
|
||||
return fpin;
|
||||
|
@ -1727,11 +1727,15 @@ static void __free_pages_ok(struct page *page, unsigned int order,
|
||||
int migratetype;
|
||||
unsigned long pfn = page_to_pfn(page);
|
||||
struct zone *zone = page_zone(page);
|
||||
bool skip_free_unref_page = false;
|
||||
|
||||
if (!free_pages_prepare(page, order, true, fpi_flags))
|
||||
return;
|
||||
|
||||
migratetype = get_pfnblock_migratetype(page, pfn);
|
||||
trace_android_vh_free_unref_page_bypass(page, order, migratetype, &skip_free_unref_page);
|
||||
if (skip_free_unref_page)
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&zone->lock, flags);
|
||||
if (unlikely(has_isolate_pageblock(zone) ||
|
||||
@ -2960,6 +2964,7 @@ static bool unreserve_highatomic_pageblock(const struct alloc_context *ac,
|
||||
struct page *page;
|
||||
int order;
|
||||
bool ret;
|
||||
bool skip_unreserve_highatomic = false;
|
||||
|
||||
for_each_zone_zonelist_nodemask(zone, z, zonelist, ac->highest_zoneidx,
|
||||
ac->nodemask) {
|
||||
@ -2971,6 +2976,11 @@ static bool unreserve_highatomic_pageblock(const struct alloc_context *ac,
|
||||
pageblock_nr_pages)
|
||||
continue;
|
||||
|
||||
trace_android_vh_unreserve_highatomic_bypass(force, zone,
|
||||
&skip_unreserve_highatomic);
|
||||
if (skip_unreserve_highatomic)
|
||||
continue;
|
||||
|
||||
spin_lock_irqsave(&zone->lock, flags);
|
||||
for (order = 0; order < MAX_ORDER; order++) {
|
||||
struct free_area *area = &(zone->free_area[order]);
|
||||
@ -3227,6 +3237,10 @@ static struct list_head *get_populated_pcp_list(struct zone *zone,
|
||||
int batch = READ_ONCE(pcp->batch);
|
||||
int alloced;
|
||||
|
||||
trace_android_vh_rmqueue_bulk_bypass(order, pcp, migratetype, list);
|
||||
if (!list_empty(list))
|
||||
return list;
|
||||
|
||||
/*
|
||||
* Scale batch relative to order if batch implies
|
||||
* free pages can be stored on the PCP. Batch can
|
||||
@ -3547,10 +3561,16 @@ void free_unref_page(struct page *page, unsigned int order)
|
||||
struct zone *zone;
|
||||
unsigned long pfn = page_to_pfn(page);
|
||||
int migratetype, pcpmigratetype;
|
||||
bool skip_free_unref_page = false;
|
||||
|
||||
if (!free_unref_page_prepare(page, pfn, order))
|
||||
return;
|
||||
|
||||
migratetype = get_pcppage_migratetype(page);
|
||||
trace_android_vh_free_unref_page_bypass(page, order, migratetype, &skip_free_unref_page);
|
||||
if (skip_free_unref_page)
|
||||
return;
|
||||
|
||||
/*
|
||||
* We only track unmovable, reclaimable, movable, and CMA on pcp lists.
|
||||
* Place ISOLATE pages on the isolated list because they are being
|
||||
@ -5127,6 +5147,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
|
||||
unsigned int zonelist_iter_cookie;
|
||||
int reserve_flags;
|
||||
unsigned long alloc_start = jiffies;
|
||||
bool should_alloc_retry = false;
|
||||
/*
|
||||
* We also sanity check to catch abuse of atomic reserves being used by
|
||||
* callers that are not in atomic context.
|
||||
@ -5279,6 +5300,11 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
|
||||
if (page)
|
||||
goto got_pg;
|
||||
|
||||
trace_android_vh_should_alloc_pages_retry(gfp_mask, order, &alloc_flags,
|
||||
ac->migratetype, ac->preferred_zoneref->zone, &page, &should_alloc_retry);
|
||||
if (should_alloc_retry)
|
||||
goto retry;
|
||||
|
||||
/* Try direct reclaim and then allocating */
|
||||
page = __alloc_pages_direct_reclaim(gfp_mask, order, alloc_flags, ac,
|
||||
&did_some_progress);
|
||||
|
@ -591,6 +591,8 @@ static void ondemand_readahead(struct readahead_control *ractl,
|
||||
if (req_size > max_pages && bdi->io_pages > max_pages)
|
||||
max_pages = min(req_size, bdi->io_pages);
|
||||
|
||||
trace_android_vh_ra_tuning_max_page(ractl, &max_pages);
|
||||
|
||||
/*
|
||||
* start of file
|
||||
*/
|
||||
|
@ -43,6 +43,7 @@
|
||||
|
||||
#include <linux/debugfs.h>
|
||||
#include <trace/events/kmem.h>
|
||||
#include <trace/hooks/mm.h>
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
@ -1823,6 +1824,8 @@ static inline struct slab *alloc_slab_page(gfp_t flags, int node,
|
||||
if (page_is_pfmemalloc(folio_page(folio, 0)))
|
||||
slab_set_pfmemalloc(slab);
|
||||
|
||||
trace_android_vh_slab_folio_alloced(order, flags);
|
||||
|
||||
return slab;
|
||||
}
|
||||
|
||||
|
11
mm/util.c
11
mm/util.c
@ -25,12 +25,13 @@
|
||||
#include <linux/compat.h>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
#include <trace/hooks/mm.h>
|
||||
#include "internal.h"
|
||||
#include "swap.h"
|
||||
|
||||
#ifndef __GENSYMS__
|
||||
#ifndef __GENKSYMS__
|
||||
#include <trace/hooks/syscall_check.h>
|
||||
#include <trace/hooks/mm.h>
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -565,7 +566,11 @@ void *kvmalloc_node(size_t size, gfp_t flags, int node)
|
||||
{
|
||||
gfp_t kmalloc_flags = flags;
|
||||
void *ret;
|
||||
bool use_vmalloc = false;
|
||||
|
||||
trace_android_vh_kvmalloc_node_use_vmalloc(size, &kmalloc_flags, &use_vmalloc);
|
||||
if (use_vmalloc)
|
||||
goto use_vmalloc_node;
|
||||
/*
|
||||
* We want to attempt a large physically contiguous block first because
|
||||
* it is less likely to fragment multiple larger blocks and therefore
|
||||
@ -582,6 +587,7 @@ void *kvmalloc_node(size_t size, gfp_t flags, int node)
|
||||
/* nofail semantic is implemented by the vmalloc fallback */
|
||||
kmalloc_flags &= ~__GFP_NOFAIL;
|
||||
}
|
||||
trace_android_vh_adjust_kvmalloc_flags(get_order(size), &kmalloc_flags);
|
||||
|
||||
ret = kmalloc_node(size, kmalloc_flags, node);
|
||||
|
||||
@ -608,6 +614,7 @@ void *kvmalloc_node(size_t size, gfp_t flags, int node)
|
||||
* about the resulting pointer, and cannot play
|
||||
* protection games.
|
||||
*/
|
||||
use_vmalloc_node:
|
||||
return __vmalloc_node_range(size, 1, VMALLOC_START, VMALLOC_END,
|
||||
flags, PAGE_KERNEL, VM_ALLOW_HUGE_VMAP,
|
||||
node, __builtin_return_address(0));
|
||||
|
13
mm/vmscan.c
13
mm/vmscan.c
@ -4805,16 +4805,17 @@ void lru_gen_release_memcg(struct mem_cgroup *memcg)
|
||||
|
||||
spin_lock_irq(&pgdat->memcg_lru.lock);
|
||||
|
||||
VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list));
|
||||
if (hlist_nulls_unhashed(&lruvec->lrugen.list))
|
||||
goto unlock;
|
||||
|
||||
gen = lruvec->lrugen.gen;
|
||||
|
||||
hlist_nulls_del_rcu(&lruvec->lrugen.list);
|
||||
hlist_nulls_del_init_rcu(&lruvec->lrugen.list);
|
||||
pgdat->memcg_lru.nr_memcgs[gen]--;
|
||||
|
||||
if (!pgdat->memcg_lru.nr_memcgs[gen] && gen == get_memcg_gen(pgdat->memcg_lru.seq))
|
||||
WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1);
|
||||
|
||||
unlock:
|
||||
spin_unlock_irq(&pgdat->memcg_lru.lock);
|
||||
}
|
||||
}
|
||||
@ -5441,8 +5442,10 @@ static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc)
|
||||
rcu_read_lock();
|
||||
|
||||
hlist_nulls_for_each_entry_rcu(lrugen, pos, &pgdat->memcg_lru.fifo[gen][bin], list) {
|
||||
if (op)
|
||||
if (op) {
|
||||
lru_gen_rotate_memcg(lruvec, op);
|
||||
op = 0;
|
||||
}
|
||||
|
||||
mem_cgroup_put(memcg);
|
||||
|
||||
@ -5450,7 +5453,7 @@ static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc)
|
||||
memcg = lruvec_memcg(lruvec);
|
||||
|
||||
if (!mem_cgroup_tryget(memcg)) {
|
||||
op = 0;
|
||||
lru_gen_release_memcg(memcg);
|
||||
memcg = NULL;
|
||||
continue;
|
||||
}
|
||||
|
@ -276,7 +276,7 @@ struct cfg80211_event {
|
||||
struct ieee80211_channel *channel;
|
||||
} ij;
|
||||
struct {
|
||||
u8 bssid[ETH_ALEN];
|
||||
u8 peer_addr[ETH_ALEN];
|
||||
const u8 *td_bitmap;
|
||||
u8 td_bitmap_len;
|
||||
} pa;
|
||||
@ -417,7 +417,7 @@ int cfg80211_disconnect(struct cfg80211_registered_device *rdev,
|
||||
bool wextev);
|
||||
void __cfg80211_roamed(struct wireless_dev *wdev,
|
||||
struct cfg80211_roam_info *info);
|
||||
void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid,
|
||||
void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *peer_addr,
|
||||
const u8 *td_bitmap, u8 td_bitmap_len);
|
||||
int cfg80211_mgd_wext_connect(struct cfg80211_registered_device *rdev,
|
||||
struct wireless_dev *wdev);
|
||||
|
@ -18023,7 +18023,7 @@ void nl80211_send_roamed(struct cfg80211_registered_device *rdev,
|
||||
}
|
||||
|
||||
void nl80211_send_port_authorized(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *bssid,
|
||||
struct net_device *netdev, const u8 *peer_addr,
|
||||
const u8 *td_bitmap, u8 td_bitmap_len)
|
||||
{
|
||||
struct sk_buff *msg;
|
||||
@ -18041,7 +18041,7 @@ void nl80211_send_port_authorized(struct cfg80211_registered_device *rdev,
|
||||
|
||||
if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) ||
|
||||
nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) ||
|
||||
nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, bssid))
|
||||
nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, peer_addr))
|
||||
goto nla_put_failure;
|
||||
|
||||
if ((td_bitmap_len > 0) && td_bitmap)
|
||||
|
@ -82,8 +82,11 @@ void nl80211_send_connect_result(struct cfg80211_registered_device *rdev,
|
||||
void nl80211_send_roamed(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
struct cfg80211_roam_info *info, gfp_t gfp);
|
||||
/* For STA/GC, indicate port authorized with AP/GO bssid.
|
||||
* For GO/AP, use peer GC/STA mac_addr.
|
||||
*/
|
||||
void nl80211_send_port_authorized(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *bssid,
|
||||
struct net_device *netdev, const u8 *peer_addr,
|
||||
const u8 *td_bitmap, u8 td_bitmap_len);
|
||||
void nl80211_send_disconnected(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, u16 reason,
|
||||
|
@ -1280,24 +1280,29 @@ void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info,
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_roamed);
|
||||
|
||||
void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *bssid,
|
||||
void __cfg80211_port_authorized(struct wireless_dev *wdev, const u8 *peer_addr,
|
||||
const u8 *td_bitmap, u8 td_bitmap_len)
|
||||
{
|
||||
ASSERT_WDEV_LOCK(wdev);
|
||||
|
||||
if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION &&
|
||||
wdev->iftype != NL80211_IFTYPE_P2P_CLIENT))
|
||||
wdev->iftype != NL80211_IFTYPE_P2P_CLIENT &&
|
||||
wdev->iftype != NL80211_IFTYPE_AP &&
|
||||
wdev->iftype != NL80211_IFTYPE_P2P_GO))
|
||||
return;
|
||||
|
||||
if (wdev->iftype == NL80211_IFTYPE_STATION ||
|
||||
wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) {
|
||||
if (WARN_ON(!wdev->connected) ||
|
||||
WARN_ON(!ether_addr_equal(wdev->u.client.connected_addr, bssid)))
|
||||
WARN_ON(!ether_addr_equal(wdev->u.client.connected_addr, peer_addr)))
|
||||
return;
|
||||
|
||||
nl80211_send_port_authorized(wiphy_to_rdev(wdev->wiphy), wdev->netdev,
|
||||
bssid, td_bitmap, td_bitmap_len);
|
||||
}
|
||||
|
||||
void cfg80211_port_authorized(struct net_device *dev, const u8 *bssid,
|
||||
nl80211_send_port_authorized(wiphy_to_rdev(wdev->wiphy), wdev->netdev,
|
||||
peer_addr, td_bitmap, td_bitmap_len);
|
||||
}
|
||||
|
||||
void cfg80211_port_authorized(struct net_device *dev, const u8 *peer_addr,
|
||||
const u8 *td_bitmap, u8 td_bitmap_len, gfp_t gfp)
|
||||
{
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
@ -1305,7 +1310,7 @@ void cfg80211_port_authorized(struct net_device *dev, const u8 *bssid,
|
||||
struct cfg80211_event *ev;
|
||||
unsigned long flags;
|
||||
|
||||
if (WARN_ON(!bssid))
|
||||
if (WARN_ON(!peer_addr))
|
||||
return;
|
||||
|
||||
ev = kzalloc(sizeof(*ev) + td_bitmap_len, gfp);
|
||||
@ -1313,7 +1318,7 @@ void cfg80211_port_authorized(struct net_device *dev, const u8 *bssid,
|
||||
return;
|
||||
|
||||
ev->type = EVENT_PORT_AUTHORIZED;
|
||||
memcpy(ev->pa.bssid, bssid, ETH_ALEN);
|
||||
memcpy(ev->pa.peer_addr, peer_addr, ETH_ALEN);
|
||||
ev->pa.td_bitmap = ((u8 *)ev) + sizeof(*ev);
|
||||
ev->pa.td_bitmap_len = td_bitmap_len;
|
||||
memcpy((void *)ev->pa.td_bitmap, td_bitmap, td_bitmap_len);
|
||||
|
@ -990,7 +990,7 @@ void cfg80211_process_wdev_events(struct wireless_dev *wdev)
|
||||
__cfg80211_leave(wiphy_to_rdev(wdev->wiphy), wdev);
|
||||
break;
|
||||
case EVENT_PORT_AUTHORIZED:
|
||||
__cfg80211_port_authorized(wdev, ev->pa.bssid,
|
||||
__cfg80211_port_authorized(wdev, ev->pa.peer_addr,
|
||||
ev->pa.td_bitmap,
|
||||
ev->pa.td_bitmap_len);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user