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 ready
95307ec5c8 FROMLIST: iommu: Avoid more races around device probe
5c8e593916 ANDROID: Update the ABI symbol list
94ddfc9ce4 FROMLIST: ufs: core: clear cmd if abort success in mcq mode
8f46c34931 BACKPORT: wifi: cfg80211: Allow AP/P2PGO to indicate port authorization to peer STA/P2PClient
b3ccd8f092 BACKPORT: wifi: cfg80211: OWE DH IE handling offload
daa7a3d95d ANDROID: KVM: arm64: mount procfs for pKVM module loading
1b639e97b8 ANDROID: GKI: Update symbol list for mtk
b496cc3115 ANDROID: fuse-bpf: Add NULL pointer check in fuse_release_in
8431e524d6 UPSTREAM: serial: 8250_port: Check IRQ data before use
825c17428a ANDROID: KVM: arm64: Fix error path in pkvm_mem_abort()
22e9166465 ANDROID: abi_gki_aarch64_qcom: Update symbol list
ca06bb1e93 ANDROID: GKI: add allowed list for Exynosauto SoC
fb91717581 ANDROID: Update the ABI symbol list
ec3c9a1702 ANDROID: sched: Add vendor hook for util_fits_cpu
c47043d65f ANDROID: update symbol for unisoc vendor_hooks
6e881bf034 ANDROID: vendor_hooks: mm: add hook to count the number pages allocated for each slab
a59b32866c UPSTREAM: usb: gadget: udc: Handle gadget_connect failure during bind operation
7a33209b36 ANDROID: Update the ABI symbol list
69b689971a ANDROID: softirq: Add EXPORT_SYMBOL_GPL for softirq and tasklet
48c6c901fe ANDROID: fs/passthrough: Fix compatibility with R/O file system
abcd4c51e7 FROMLIST: usb: typec: tcpm: Fix sink caps op current check
9d6ac9dc6a UPSTREAM: scsi: ufs: core: Add advanced RPMB support where UFSHCI 4.0 does not support EHS length in UTRD
beea09533d ANDROID: ABI: Update symbol list for MediatTek
5683c2b460 ANDROID: vendor_hooks: Add hook for mmc queue
43a07d84da Revert "proc: allow pid_revalidate() during LOOKUP_RCU"
230d34da33 UPSTREAM: scsi: ufs: ufs-qcom: Clear qunipro_g4_sel for HW major version > 5
0920d4de75 ANDROID: GKI: Update symbols to symbol list
019393a917 ANDROID: vendor_hook: Add hook to tune readaround size
0c859c2180 ANDROID: add for tuning readahead size
a8206e3023 ANDROID: vendor_hooks: Add hooks to avoid key threads stalled in memory allocations
ad9947dc8d ANDROID: GKI: Update oplus symbol list
71f3b61ee4 ANDROID: vendor_hooks: add hooks for adjust kvmalloc_node alloc_flags
fef66e8544 UPSTREAM: netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for ip_set_hash_netportnet.c
7bec8a8180 ANDROID: ABI: Update symbol list for imx
af888bd2a1 ANDROID: abi_gki_aarch64_qcom: Add __netif_rx
131de563f6 ANDROID: ABI: Update sony symbol list and stg
977770ec27 ANDROID: mmc: Add vendor hooks for sdcard failure diagnostics
f8d3b450e9 ANDROID: Update symbol list for mtk
2799026a28 UPSTREAM: scsi: ufs: mcq: Fix the search/wrap around logic
7350783e67 UPSTREAM: scsi: ufs: core: Fix ufshcd_inc_sq_tail() function bug
ff5fa0b7bd FROMLIST: ufs: core: Expand MCQ queue slot to DeviceQueueDepth + 1
4bbeaddf9a Revert "ANDROID: KVM: arm64: Don't allocate from handle_host_mem_abort"
9d38c0bc65 BACKPORT: usb: typec: altmodes/displayport: Signal hpd when configuring pin assignment
e329419f70 UPSTREAM: mm: multi-gen LRU: don't spin during memcg release
3d1b582966 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:
Greg Kroah-Hartman 2023-11-27 14:51:36 +00:00
commit d3f3412122
50 changed files with 1285 additions and 384 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View 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

View File

@ -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

View File

@ -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);
}

View File

@ -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);

View File

@ -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, ",");

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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.

View File

@ -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)

View File

@ -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)

View File

@ -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:

View File

@ -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)

View File

@ -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);
}

View File

@ -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;
ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, dir, 2);
/*
* 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);

View File

@ -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 */

View File

@ -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);

View File

@ -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);

View File

@ -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 */
fput(ff->backing_file);
if (ff->backing_file) {
fput(ff->backing_file);
}
*fri = (struct fuse_release_in) {
.fh = ff->fh,

View File

@ -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;

View 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)

View File

@ -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);

View File

@ -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);
/**

View File

@ -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 */

View File

@ -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>

View File

@ -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);

View File

@ -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,

View File

@ -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.

View File

@ -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);

View File

@ -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.

View File

@ -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;

View File

@ -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);

View File

@ -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
*/

View 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;
}

View File

@ -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));

View File

@ -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;
}

View File

@ -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);

View File

@ -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)

View File

@ -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,

View File

@ -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,
const u8 *td_bitmap, u8 td_bitmap_len)
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 (WARN_ON(!wdev->connected) ||
WARN_ON(!ether_addr_equal(wdev->u.client.connected_addr, bssid)))
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, peer_addr)))
return;
}
nl80211_send_port_authorized(wiphy_to_rdev(wdev->wiphy), wdev->netdev,
bssid, td_bitmap, td_bitmap_len);
peer_addr, td_bitmap, td_bitmap_len);
}
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)
{
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);

View File

@ -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;