diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 96f2d0424f31..f7c921b029f6 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -2533,6 +2533,12 @@
memblock=debug [KNL] Enable memblock debug messages.
+ android12_only.will_be_removed_soon.memblock_nomap_remove= [KNL]
+ Setting this to true through kernel command line will
+ call memblock_remove on the regions marked with no-map
+ property thereby saving memory by removing page structs
+ for those regions. By default this is set to false.
+
load_ramdisk= [RAM] [Deprecated]
lockd.nlm_grace_period=P [NFS] Assign grace period.
diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml
old mode 100755
new mode 100644
index be7daf453b89..188caf99ac92
--- a/android/abi_gki_aarch64.xml
+++ b/android/abi_gki_aarch64.xml
@@ -391,6 +391,7 @@
+
@@ -398,6 +399,8 @@
+
+
@@ -440,6 +443,10 @@
+
+
+
+
@@ -450,10 +457,12 @@
+
+
@@ -465,6 +474,8 @@
+
+
@@ -477,9 +488,14 @@
+
+
+
+
+
@@ -503,6 +519,7 @@
+
@@ -515,14 +532,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -556,6 +583,7 @@
+
@@ -567,9 +595,13 @@
+
+
+
+
@@ -594,6 +626,7 @@
+
@@ -601,6 +634,7 @@
+
@@ -781,6 +815,7 @@
+
@@ -2509,6 +2544,7 @@
+
@@ -3541,6 +3577,7 @@
+
@@ -4080,6 +4117,7 @@
+
@@ -4101,6 +4139,7 @@
+
@@ -4132,6 +4171,8 @@
+
+
@@ -4311,6 +4352,7 @@
+
@@ -4678,9 +4720,14 @@
+
+
+
+
+
@@ -4689,6 +4736,7 @@
+
@@ -4766,6 +4814,7 @@
+
@@ -4826,6 +4875,7 @@
+
@@ -5072,6 +5122,7 @@
+
@@ -6245,6 +6296,7 @@
+
@@ -6252,6 +6304,8 @@
+
+
@@ -6294,6 +6348,10 @@
+
+
+
+
@@ -6304,10 +6362,13 @@
+
+
+
@@ -6320,6 +6381,8 @@
+
+
@@ -6332,10 +6395,15 @@
+
+
+
+
+
@@ -6360,6 +6428,7 @@
+
@@ -6373,8 +6442,13 @@
+
+
+
+
+
@@ -6383,6 +6457,11 @@
+
+
+
+
+
@@ -6423,6 +6502,7 @@
+
@@ -6435,10 +6515,14 @@
+
+
+
+
@@ -6465,6 +6549,7 @@
+
@@ -6473,6 +6558,7 @@
+
@@ -6644,6 +6730,7 @@
+
@@ -6726,6 +6813,7 @@
+
@@ -14982,15 +15070,15 @@
-
+
-
+
-
+
-
+
@@ -30617,18 +30705,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -50902,6 +50990,7 @@
+
@@ -52745,81 +52834,81 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -60816,7 +60905,7 @@
-
+
@@ -62462,24 +62551,24 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -73606,6 +73695,7 @@
+
@@ -88395,6 +88485,7 @@
+
@@ -92776,21 +92867,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -105900,30 +105991,30 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -115968,10 +116059,10 @@
-
-
-
-
+
+
+
+
@@ -116374,15 +116465,15 @@
-
-
-
+
+
+
-
-
-
-
+
+
+
+
@@ -116574,10 +116665,10 @@
-
-
-
-
+
+
+
+
@@ -116780,10 +116871,10 @@
-
-
-
-
+
+
+
+
@@ -117444,6 +117535,12 @@
+
+
+
+
+
+
@@ -117496,6 +117593,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -117503,11 +117613,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -117540,35 +117650,35 @@
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
-
+
+
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
@@ -117577,12 +117687,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -117591,30 +117701,30 @@
-
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -117637,17 +117747,17 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
@@ -117780,6 +117890,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -117844,6 +117977,14 @@
+
+
+
+
+
+
+
+
@@ -117872,6 +118013,14 @@
+
+
+
+
+
+
+
+
@@ -117944,6 +118093,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -118003,9 +118165,9 @@
-
-
-
+
+
+
@@ -118015,6 +118177,14 @@
+
+
+
+
+
+
+
+
@@ -118026,6 +118196,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -118033,6 +118222,12 @@
+
+
+
+
+
+
@@ -118175,6 +118370,12 @@
+
+
+
+
+
+
@@ -118249,6 +118450,12 @@
+
+
+
+
+
+
@@ -118257,12 +118464,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -118301,6 +118531,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -118385,11 +118644,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -118489,6 +118748,11 @@
+
+
+
+
+
@@ -118559,6 +118823,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -118577,6 +118852,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -118734,6 +119020,12 @@
+
+
+
+
+
+
@@ -118785,6 +119077,11 @@
+
+
+
+
+
@@ -119289,6 +119586,7 @@
+
@@ -119296,28 +119594,30 @@
+
+
-
+
-
-
-
-
-
+
+
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
@@ -119338,6 +119638,10 @@
+
+
+
+
@@ -119348,10 +119652,13 @@
+
+
+
@@ -119364,6 +119671,8 @@
+
+
@@ -119374,12 +119683,17 @@
-
+
+
+
+
+
+
@@ -119404,6 +119718,7 @@
+
@@ -119417,8 +119732,13 @@
+
+
+
+
+
@@ -119427,6 +119747,11 @@
+
+
+
+
+
@@ -119448,7 +119773,7 @@
-
+
@@ -119467,6 +119792,7 @@
+
@@ -119479,10 +119805,14 @@
+
+
+
+
@@ -119509,6 +119839,7 @@
+
@@ -119517,6 +119848,7 @@
+
@@ -120187,6 +120519,13 @@
+
+
+
+
+
+
+
@@ -121764,9 +122103,9 @@
-
-
-
+
+
+
@@ -121776,14 +122115,14 @@
-
-
-
+
+
+
-
-
-
+
+
+
@@ -122688,9 +123027,9 @@
-
-
-
+
+
+
@@ -123190,14 +123529,14 @@
-
-
-
+
+
+
-
-
-
+
+
+
@@ -125936,16 +126275,16 @@
-
-
+
+
-
-
+
+
-
-
+
+
@@ -125957,16 +126296,16 @@
-
-
+
+
-
-
+
+
-
-
+
+
@@ -129196,8 +129535,8 @@
-
-
+
+
@@ -129224,9 +129563,9 @@
-
-
-
+
+
+
@@ -129237,8 +129576,8 @@
-
-
+
+
@@ -129250,8 +129589,8 @@
-
-
+
+
@@ -129341,6 +129680,12 @@
+
+
+
+
+
+
@@ -130199,9 +130544,9 @@
-
-
-
+
+
+
@@ -130233,17 +130578,17 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
@@ -131708,7 +132053,7 @@
-
+
@@ -133929,12 +134274,12 @@
-
+
-
-
-
+
+
+
@@ -134606,6 +134951,10 @@
+
+
+
+
@@ -134725,28 +135074,28 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -135149,6 +135498,7 @@
+
@@ -136849,8 +137199,8 @@
-
-
+
+
@@ -136881,8 +137231,8 @@
-
-
+
+
@@ -137330,14 +137680,14 @@
-
-
-
+
+
+
-
-
-
+
+
+
@@ -137417,6 +137767,14 @@
+
+
+
+
+
+
+
+
@@ -137529,6 +137887,14 @@
+
+
+
+
+
+
+
+
@@ -137680,6 +138046,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -138208,8 +138584,8 @@
-
-
+
+
@@ -138540,6 +138916,10 @@
+
+
+
+
@@ -139677,16 +140057,16 @@
-
-
+
+
-
-
+
+
-
-
+
+
@@ -140378,6 +140758,12 @@
+
+
+
+
+
+
@@ -140390,6 +140776,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -140436,6 +140838,13 @@
+
+
+
+
+
+
+
@@ -140840,6 +141249,11 @@
+
+
+
+
+
@@ -141178,6 +141592,13 @@
+
+
+
+
+
+
+
@@ -142528,6 +142949,15 @@
+
+
+
+
+
+
+
+
+
@@ -143389,8 +143819,8 @@
-
-
+
+
@@ -143930,11 +144360,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -145009,12 +145439,12 @@
-
-
+
+
-
-
+
+
@@ -147595,18 +148025,18 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
@@ -147886,6 +148316,7 @@
+
diff --git a/android/abi_gki_aarch64_asus b/android/abi_gki_aarch64_asus
old mode 100755
new mode 100644
diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus
index 4f25e9accef0..c34ab7b965e0 100644
--- a/android/abi_gki_aarch64_oplus
+++ b/android/abi_gki_aarch64_oplus
@@ -2100,6 +2100,7 @@
rdev_get_regmap
read_cache_page_gfp
reboot_mode
+ reclaim_pages
refcount_dec_and_lock
refcount_dec_not_one
refcount_warn_saturate
@@ -2798,6 +2799,7 @@
__traceiter_android_vh_futex_sleep_start
__traceiter_android_vh_get_from_fragment_pool
__traceiter_android_vh_gpio_block_read
+ __traceiter_android_vh_handle_failed_page_trylock
__traceiter_android_vh_include_reserved_zone
__traceiter_android_vh_iommu_alloc_iova
__traceiter_android_vh_iommu_free_iova
@@ -2823,9 +2825,13 @@
__traceiter_android_vh_override_creds
__traceiter_android_vh_page_referenced_check_bypass
__traceiter_android_vh_page_should_be_protected
+ __traceiter_android_vh_page_trylock_set
+ __traceiter_android_vh_page_trylock_clear
+ __traceiter_android_vh_page_trylock_get_result
__traceiter_android_vh_mark_page_accessed
__traceiter_android_vh_show_mapcount_pages
__traceiter_android_vh_do_traversal_lruvec
+ __traceiter_android_vh_do_page_trylock
__traceiter_android_vh_update_page_mapcount
__traceiter_android_vh_add_page_to_lrulist
__traceiter_android_vh_del_page_from_lrulist
@@ -2834,6 +2840,10 @@
__traceiter_android_vh_printk_hotplug
__traceiter_android_vh_process_killed
__traceiter_android_vh_revert_creds
+ __traceiter_android_vh_record_mutex_lock_starttime
+ __traceiter_android_vh_record_rtmutex_lock_starttime
+ __traceiter_android_vh_record_rwsem_lock_starttime
+ __traceiter_android_vh_record_percpu_rwsem_lock_starttime
__traceiter_android_vh_rmqueue
__traceiter_android_vh_rwsem_init
__traceiter_android_vh_rwsem_mark_wake_readers
@@ -2846,6 +2856,7 @@
__traceiter_android_vh_rwsem_write_finished
__traceiter_android_vh_save_track_hash
__traceiter_android_vh_save_vmalloc_stack
+ __traceiter_android_vh_remove_vmalloc_stack
__traceiter_android_vh_sched_stat_runtime_rt
__traceiter_android_vh_scheduler_tick
__traceiter_android_vh_selinux_avc_insert
@@ -3021,6 +3032,7 @@
__tracepoint_android_vh_futex_sleep_start
__tracepoint_android_vh_get_from_fragment_pool
__tracepoint_android_vh_gpio_block_read
+ __tracepoint_android_vh_handle_failed_page_trylock
__tracepoint_android_vh_include_reserved_zone
__tracepoint_android_vh_iommu_alloc_iova
__tracepoint_android_vh_iommu_free_iova
@@ -3046,9 +3058,13 @@
__tracepoint_android_vh_override_creds
__tracepoint_android_vh_page_referenced_check_bypass
__tracepoint_android_vh_page_should_be_protected
+ __tracepoint_android_vh_page_trylock_set
+ __tracepoint_android_vh_page_trylock_clear
+ __tracepoint_android_vh_page_trylock_get_result
__tracepoint_android_vh_mark_page_accessed
__tracepoint_android_vh_show_mapcount_pages
__tracepoint_android_vh_do_traversal_lruvec
+ __tracepoint_android_vh_do_page_trylock
__tracepoint_android_vh_update_page_mapcount
__tracepoint_android_vh_add_page_to_lrulist
__tracepoint_android_vh_del_page_from_lrulist
@@ -3057,6 +3073,10 @@
__tracepoint_android_vh_printk_hotplug
__tracepoint_android_vh_process_killed
__tracepoint_android_vh_revert_creds
+ __tracepoint_android_vh_record_mutex_lock_starttime
+ __tracepoint_android_vh_record_rtmutex_lock_starttime
+ __tracepoint_android_vh_record_rwsem_lock_starttime
+ __tracepoint_android_vh_record_percpu_rwsem_lock_starttime
__tracepoint_android_vh_rmqueue
__tracepoint_android_vh_rwsem_init
__tracepoint_android_vh_rwsem_mark_wake_readers
@@ -3069,6 +3089,7 @@
__tracepoint_android_vh_rwsem_write_finished
__tracepoint_android_vh_save_track_hash
__tracepoint_android_vh_save_vmalloc_stack
+ __tracepoint_android_vh_remove_vmalloc_stack
__tracepoint_android_vh_sched_stat_runtime_rt
__tracepoint_android_vh_scheduler_tick
__tracepoint_android_vh_selinux_avc_insert
diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom
index 34770c16c5b8..a73748d1b9e4 100644
--- a/android/abi_gki_aarch64_qcom
+++ b/android/abi_gki_aarch64_qcom
@@ -1965,7 +1965,6 @@
register_kretprobe
register_memory_notifier
register_module_notifier
- register_qdisc
register_netdev
register_netdevice
register_netdevice_notifier
@@ -1973,6 +1972,7 @@
register_oom_notifier
register_pernet_device
register_pm_notifier
+ register_qdisc
register_reboot_notifier
register_restart_handler
__register_rpmsg_driver
@@ -2194,6 +2194,7 @@
sg_init_one
sg_init_table
sg_miter_next
+ sg_miter_skip
sg_miter_start
sg_miter_stop
sg_next
@@ -2233,6 +2234,7 @@
skb_complete_wifi_ack
skb_copy
skb_copy_bits
+ skb_copy_datagram_from_iter
skb_copy_datagram_iter
skb_copy_expand
skb_dequeue
@@ -2321,6 +2323,7 @@
snprintf
soc_device_register
soc_device_unregister
+ sock_alloc_send_pskb
sock_alloc_send_skb
__sock_create
sock_create_kern
@@ -2682,6 +2685,7 @@
__tracepoint_android_vh_cpu_idle_exit
__tracepoint_android_vh_cpuidle_psci_enter
__tracepoint_android_vh_cpuidle_psci_exit
+ __tracepoint_android_vh_disable_thermal_cooling_stats
__tracepoint_android_vh_dump_throttled_rt_tasks
__tracepoint_android_vh_freq_table_limits
__tracepoint_android_vh_ftrace_dump_buffer
diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip
index 2bee0c4c5eb8..3cf7478b5d90 100644
--- a/android/abi_gki_aarch64_rockchip
+++ b/android/abi_gki_aarch64_rockchip
@@ -57,6 +57,7 @@
cancel_delayed_work
cancel_delayed_work_sync
cancel_work_sync
+ capable
cdev_add
cdev_del
cdev_device_add
@@ -92,6 +93,7 @@
clk_gate_ops
clk_get
__clk_get_name
+ clk_get_parent
clk_get_rate
clk_hw_get_flags
clk_hw_get_name
@@ -116,6 +118,7 @@
completion_done
__const_udelay
consume_skb
+ cpu_bit_bitmap
__cpufreq_driver_target
cpufreq_generic_suspend
cpufreq_register_governor
@@ -188,6 +191,7 @@
devfreq_suspend_device
devfreq_unregister_opp_notifier
dev_fwnode
+ dev_get_regmap
device_add
device_add_disk
device_create
@@ -241,6 +245,7 @@
devm_input_allocate_device
devm_ioremap
devm_ioremap_resource
+ devm_kasprintf
devm_kfree
devm_kmalloc
devm_kmemdup
@@ -256,6 +261,7 @@
devm_phy_optional_get
devm_pinctrl_get
devm_pinctrl_register
+ devm_pinctrl_register_and_init
devm_platform_get_and_ioremap_resource
devm_platform_ioremap_resource
devm_platform_ioremap_resource_byname
@@ -315,7 +321,10 @@
dma_buf_unmap_attachment
dma_buf_vmap
dma_buf_vunmap
+ dma_contiguous_default_area
+ dma_fence_add_callback
dma_fence_context_alloc
+ dma_fence_get_status
dma_fence_init
dma_fence_release
dma_fence_signal
@@ -345,15 +354,18 @@
dma_unmap_page_attrs
dma_unmap_resource
dma_unmap_sg_attrs
+ down
down_read
down_write
driver_register
driver_unregister
drm_add_edid_modes
drm_atomic_get_crtc_state
+ drm_atomic_get_new_bridge_state
drm_atomic_get_new_connector_for_encoder
drm_atomic_helper_bridge_destroy_state
drm_atomic_helper_bridge_duplicate_state
+ drm_atomic_helper_bridge_propagate_bus_fmt
drm_atomic_helper_bridge_reset
drm_atomic_helper_connector_destroy_state
drm_atomic_helper_connector_duplicate_state
@@ -417,6 +429,7 @@
drm_helper_probe_single_connector_modes
drm_ioctl
drm_kms_helper_hotplug_event
+ drm_kms_helper_is_poll_worker
drm_match_cea_mode
drm_mode_copy
drm_mode_create
@@ -462,6 +475,7 @@
extcon_get_state
extcon_register_notifier
extcon_set_property_capability
+ extcon_set_state
extcon_set_state_sync
extcon_unregister_notifier
failure_tracking
@@ -476,8 +490,8 @@
flush_workqueue
fpsimd_context_busy
fput
- frame_vector_to_pages
free_irq
+ free_netdev
__free_pages
free_pages
free_percpu
@@ -490,6 +504,7 @@
fwnode_property_read_string
fwnode_property_read_u32_array
gcd
+ generic_file_llseek
generic_handle_irq
generic_mii_ioctl
__genphy_config_aneg
@@ -507,6 +522,7 @@
__get_free_pages
get_random_bytes
get_unused_fd_flags
+ get_user_pages_remote
get_zeroed_page
gic_nonsecure_priorities
gpiochip_add_pin_range
@@ -526,6 +542,8 @@
gpiod_set_value
gpiod_set_value_cansleep
gpiod_to_irq
+ gpio_free
+ gpio_request
gpio_to_desc
handle_nested_irq
handle_simple_irq
@@ -555,8 +573,10 @@
i2c_get_adapter
i2c_put_adapter
i2c_register_driver
+ i2c_smbus_read_byte
i2c_smbus_read_byte_data
i2c_smbus_read_i2c_block_data
+ i2c_smbus_read_word_data
i2c_smbus_write_byte_data
i2c_smbus_write_i2c_block_data
__i2c_smbus_xfer
@@ -575,6 +595,7 @@
iio_device_attach_buffer
iio_push_to_buffers
iio_read_channel_processed
+ init_net
__init_rwsem
__init_swait_queue_head
init_timer_key
@@ -589,17 +610,22 @@
input_register_device
input_set_abs_params
input_set_capability
+ input_unregister_device
iommu_attach_device
+ iommu_attach_group
iommu_detach_device
+ iommu_detach_group
iommu_device_register
iommu_device_sysfs_add
iommu_device_sysfs_remove
iommu_get_dma_cookie
iommu_get_domain_for_dev
iommu_group_alloc
+ iommu_group_get
iommu_group_put
iommu_group_ref_get
iommu_map
+ iommu_map_sg
iommu_put_dma_cookie
iommu_set_fault_handler
iommu_unmap
@@ -645,6 +671,7 @@
kmem_cache_free
kmemdup
kobject_create_and_add
+ kobject_init_and_add
kobject_put
kobject_uevent_env
kstrdup
@@ -670,6 +697,7 @@
led_trigger_unregister
__list_add_valid
__list_del_entry_valid
+ __local_bh_enable_ip
__log_post_read_mmio
__log_read_mmio
__log_write_mmio
@@ -689,6 +717,7 @@
media_pipeline_start
media_pipeline_stop
memcpy
+ __memcpy_fromio
memdup_user
memmove
memset
@@ -701,11 +730,14 @@
mipi_dsi_attach
mipi_dsi_create_packet
mipi_dsi_detach
+ mipi_dsi_device_register_full
+ mipi_dsi_device_unregister
mipi_dsi_host_register
mipi_dsi_host_unregister
misc_deregister
misc_register
mmc_of_parse
+ __mmdrop
mod_delayed_work_on
mod_timer
__module_get
@@ -724,6 +756,13 @@
netdev_err
netdev_info
netdev_warn
+ netif_rx
+ netif_rx_ni
+ netif_tx_wake_queue
+ netlink_unicast
+ nla_memcpy
+ nla_put
+ nla_reserve
no_llseek
nonseekable_open
noop_llseek
@@ -753,6 +792,7 @@
of_find_device_by_node
of_find_i2c_device_by_node
of_find_matching_node_and_match
+ of_find_mipi_dsi_host_by_node
of_find_node_by_name
of_find_node_opts_by_path
of_find_property
@@ -801,6 +841,9 @@
param_ops_int
param_ops_string
param_ops_uint
+ pcie_capability_clear_and_set_word
+ pci_read_config_dword
+ pci_write_config_dword
PDE_DATA
__per_cpu_offset
perf_trace_buf_alloc
@@ -814,8 +857,15 @@
phy_power_off
phy_power_on
phy_set_mode_ext
+ pinconf_generic_dt_free_map
pinconf_generic_dt_node_to_map
pinctrl_dev_get_drvdata
+ pinctrl_enable
+ pinctrl_generic_add_group
+ pinctrl_generic_get_group
+ pinctrl_generic_get_group_count
+ pinctrl_generic_get_group_name
+ pinctrl_generic_get_group_pins
pinctrl_gpio_direction_input
pinctrl_gpio_direction_output
pinctrl_lookup_state
@@ -823,6 +873,11 @@
pinctrl_pm_select_sleep_state
pinctrl_select_state
pinctrl_utils_free_map
+ pinmux_generic_add_function
+ pinmux_generic_get_function
+ pinmux_generic_get_function_count
+ pinmux_generic_get_function_groups
+ pinmux_generic_get_function_name
platform_bus_type
platform_device_put
platform_device_register_full
@@ -839,6 +894,7 @@
pm_clk_destroy
pm_power_off
__pm_relax
+ pm_relax
__pm_runtime_disable
pm_runtime_enable
pm_runtime_force_resume
@@ -851,6 +907,7 @@
__pm_runtime_suspend
__pm_runtime_use_autosuspend
__pm_stay_awake
+ pm_stay_awake
pm_wakeup_ws_event
power_supply_am_i_supplied
power_supply_changed
@@ -863,6 +920,8 @@
power_supply_register
power_supply_reg_notifier
power_supply_unregister
+ prandom_bytes
+ prandom_u32
preempt_schedule
preempt_schedule_notrace
prepare_to_wait_event
@@ -904,6 +963,8 @@
regcache_sync
__register_chrdev
register_chrdev_region
+ register_inetaddr_notifier
+ register_netdevice
register_netdevice_notifier
register_pm_notifier
register_reboot_notifier
@@ -958,6 +1019,7 @@
round_jiffies_relative
rtc_class_open
rtc_read_time
+ rtc_time64_to_tm
rtc_tm_to_time64
rtc_valid_tm
rtnl_is_locked
@@ -1003,9 +1065,11 @@
simple_attr_release
simple_read_from_buffer
simple_strtol
+ simple_strtoul
single_open
single_release
skb_clone
+ skb_copy
skb_copy_bits
skb_copy_expand
skb_pull
@@ -1054,27 +1118,33 @@
snd_soc_put_volsw
snd_soc_unregister_component
snprintf
+ sort
__spi_register_driver
spi_sync
sprintf
sscanf
__stack_chk_fail
__stack_chk_guard
+ strchr
strcmp
strcpy
strlcpy
strlen
strncasecmp
+ strncat
strncmp
strncpy
strnlen
+ strrchr
strscpy
+ strsep
strstr
__sw_hweight16
__sw_hweight32
__sw_hweight64
__sw_hweight8
sync_file_create
+ sync_file_get_fence
synchronize_irq
synchronize_rcu
syscon_node_to_regmap
@@ -1122,7 +1192,9 @@
__udelay
__unregister_chrdev
unregister_chrdev_region
+ unregister_inetaddr_notifier
unregister_netdevice_notifier
+ unregister_netdevice_queue
unregister_reboot_notifier
unregister_shrinker
up
@@ -1221,6 +1293,7 @@
v4l2_event_queue
v4l2_event_subdev_unsubscribe
v4l2_event_subscribe
+ v4l2_event_unsubscribe
v4l2_fh_open
v4l2_i2c_subdev_init
v4l2_match_dv_timings
@@ -1237,10 +1310,6 @@
v4l2_valid_dv_timings
vabits_actual
vb2_buffer_done
- vb2_common_vm_ops
- vb2_create_framevec
- vb2_destroy_framevec
- vb2_dma_contig_memops
vb2_fop_mmap
vb2_fop_poll
vb2_fop_release
@@ -1270,8 +1339,7 @@
vmap
vm_get_page_prot
vm_map_pages
- vm_map_ram
- vm_unmap_ram
+ vsnprintf
vunmap
vzalloc
wait_for_completion
@@ -1281,6 +1349,7 @@
wakeup_source_add
wakeup_source_remove
__warn_printk
+ work_busy
# required by 8250_dw.ko
of_device_is_big_endian
@@ -1312,6 +1381,70 @@
drm_dp_start_crc
drm_dp_stop_crc
+# required by aspm_ext.ko
+ pci_find_capability
+ pci_find_ext_capability
+
+# required by bcmdhd.ko
+ alloc_etherdev_mqs
+ complete_and_exit
+ dev_open
+ down_interruptible
+ down_timeout
+ iwe_stream_add_event
+ iwe_stream_add_point
+ iwe_stream_add_value
+ __kfifo_init
+ kobject_uevent
+ mmc_set_data_timeout
+ mmc_sw_reset
+ mmc_wait_for_req
+ netdev_update_features
+ __netlink_kernel_create
+ netlink_kernel_release
+ nla_append
+ nla_put_nohdr
+ __nlmsg_put
+ _raw_read_lock_bh
+ _raw_read_unlock_bh
+ register_netdev
+ sched_set_fifo_low
+ sdio_claim_host
+ sdio_disable_func
+ sdio_enable_func
+ sdio_f0_readb
+ sdio_f0_writeb
+ sdio_get_host_pm_caps
+ sdio_memcpy_fromio
+ sdio_memcpy_toio
+ sdio_readb
+ sdio_readl
+ sdio_readsb
+ sdio_readw
+ sdio_register_driver
+ sdio_release_host
+ sdio_retune_crc_disable
+ sdio_retune_crc_enable
+ sdio_retune_hold_now
+ sdio_retune_release
+ sdio_set_block_size
+ sdio_set_host_pm_flags
+ sdio_unregister_driver
+ sdio_writeb
+ sdio_writel
+ sdio_writew
+ set_cpus_allowed_ptr
+ __skb_pad
+ skb_realloc_headroom
+ sock_wfree
+ sprint_symbol
+ strcat
+ strspn
+ sys_tz
+ unregister_netdev
+ unregister_pm_notifier
+ wireless_send_event
+
# required by bifrost_kbase.ko
__arch_clear_user
__bitmap_andnot
@@ -1326,28 +1459,23 @@
devfreq_cooling_unregister
devfreq_remove_device
dev_pm_opp_find_freq_exact
- dma_fence_add_callback
dma_fence_default_wait
- dma_fence_get_status
dma_fence_remove_callback
downgrade_write
down_read_trylock
dump_stack
find_get_pid
freezing_slow_path
- generic_file_llseek
get_user_pages
get_user_pages_fast
hrtimer_active
iomem_resource
kobject_del
- kobject_init_and_add
kstrndup
kstrtobool_from_user
ktime_get_raw
ktime_get_raw_ts64
memchr
- __mmdrop
of_dma_is_coherent
of_property_read_variable_u64_array
pid_task
@@ -1371,7 +1499,6 @@
shmem_file_setup
simple_open
strcspn
- sync_file_get_fence
system_freezing_cnt
system_highpri_wq
_totalram_pages
@@ -1418,25 +1545,19 @@
get_net_ns_by_fd
get_net_ns_by_pid
inet_csk_get_port
- init_net
init_uts_ns
key_create_or_update
key_put
keyring_alloc
ktime_get_coarse_with_offset
memcmp
- netif_rx_ni
netlink_broadcast
netlink_register_notifier
- netlink_unicast
netlink_unregister_notifier
net_ns_type_operations
nla_find
- nla_memcpy
__nla_parse
nla_put_64bit
- nla_put
- nla_reserve
__nla_validate
of_prop_next_u32
__put_net
@@ -1482,7 +1603,6 @@
clk_fixed_factor_ops
clk_fractional_divider_ops
__clk_get_hw
- clk_get_parent
clk_hw_register_composite
clk_hw_round_rate
clk_mux_ops
@@ -1501,9 +1621,11 @@
scmi_driver_register
scmi_driver_unregister
+# required by cm3218.ko
+ i2c_smbus_write_word_data
+
# required by cma_heap.ko
cma_get_name
- dma_contiguous_default_area
dma_heap_get_drvdata
dma_heap_put
@@ -1544,10 +1666,8 @@
mmc_cqe_request_done
# required by cryptodev.ko
- __close_fd
crypto_ahash_final
crypto_alloc_akcipher
- get_user_pages_remote
krealloc
proc_dointvec
register_sysctl_table
@@ -1555,7 +1675,6 @@
unregister_sysctl_table
# required by display-connector.ko
- drm_atomic_get_new_bridge_state
drm_probe_ddc
# required by dm9601.ko
@@ -1646,7 +1765,6 @@
tcpm_register_port
tcpm_unregister_port
tcpm_vbus_change
- vsnprintf
# required by gc2145.ko
v4l2_ctrl_subdev_log_status
@@ -1672,14 +1790,7 @@
irq_get_domain_generic_chip
of_pinctrl_get
-# required by grf.ko
- of_find_matching_node_and_match
-
-# required by gslx680-pad.ko
- input_unregister_device
-
# required by hid-alps.ko
- down
input_alloc_absinfo
input_mt_sync_frame
@@ -1706,7 +1817,6 @@
hid_destroy_device
hid_input_report
hid_parse_report
- i2c_smbus_read_byte
# required by i2c-mux.ko
i2c_add_numbered_adapter
@@ -1768,7 +1878,6 @@
dev_queue_xmit
ether_setup
ethtool_op_get_link
- free_netdev
get_random_u32
__hw_addr_init
__hw_addr_sync
@@ -1777,24 +1886,17 @@
kernel_param_unlock
kfree_skb_list
ktime_get_seconds
- __local_bh_enable_ip
napi_gro_receive
netdev_set_default_ethtool_ops
netif_carrier_off
netif_carrier_on
netif_receive_skb
netif_receive_skb_list
- netif_rx
netif_tx_stop_all_queues
- netif_tx_wake_queue
net_ratelimit
- prandom_bytes
- prandom_u32
___pskb_trim
rcu_barrier
register_inet6addr_notifier
- register_inetaddr_notifier
- register_netdevice
rhashtable_free_and_destroy
rhashtable_insert_slow
rhltable_init
@@ -1806,7 +1908,6 @@
skb_checksum_help
skb_clone_sk
skb_complete_wifi_ack
- skb_copy
skb_dequeue
skb_ensure_writable
__skb_get_hash
@@ -1816,9 +1917,7 @@
skb_queue_tail
synchronize_net
unregister_inet6addr_notifier
- unregister_inetaddr_notifier
unregister_netdevice_many
- unregister_netdevice_queue
# required by nvme-core.ko
bd_set_nr_sectors
@@ -1848,7 +1947,6 @@
blk_set_queue_dying
blk_status_to_errno
blk_sync_queue
- capable
cleanup_srcu_struct
device_remove_file_self
dev_pm_qos_expose_latency_tolerance
@@ -1974,7 +2072,6 @@
videomode_from_timing
# required by pcie-dw-rockchip.ko
- cpu_bit_bitmap
cpumask_next_and
dw_pcie_find_ext_capability
dw_pcie_host_init
@@ -1985,10 +2082,7 @@
dw_pcie_write
dw_pcie_write_dbi
pci_disable_link_state
- pcie_capability_clear_and_set_word
- pci_read_config_dword
pci_set_power_state
- pci_write_config_dword
# required by pcierockchiphost.ko
devm_pci_alloc_host_bridge
@@ -2006,7 +2100,6 @@
# required by phy-rockchip-inno-usb2.ko
devm_extcon_register_notifier
- extcon_set_state
extcon_sync
# required by phy-rockchip-inno-usb3.ko
@@ -2061,7 +2154,6 @@
pm_genpd_add_subdomain
pm_genpd_init
pm_genpd_remove
- strrchr
# required by pwm-regulator.ko
regulator_map_voltage_iterate
@@ -2083,12 +2175,17 @@
kernel_kobj
# required by rfkill-rk.ko
- gpio_free
- gpio_request
kstrtoll
rfkill_init_sw_state
rfkill_set_sw_state
+# required by rga3.ko
+ alloc_iova_fast
+ dma_fence_wait_timeout
+ free_iova_fast
+ kstrdup_quotable_cmdline
+ mmput
+
# required by rk628.ko
irq_dispose_mapping
irq_domain_xlate_onetwocell
@@ -2118,11 +2215,6 @@
regmap_del_irq_chip
unregister_syscore_ops
-# required by rk818_battery.ko
- blocking_notifier_call_chain
- blocking_notifier_chain_register
- blocking_notifier_chain_unregister
-
# required by rk860x-regulator.ko
regulator_suspend_enable
@@ -2151,6 +2243,9 @@
# required by rk_headset_irq_hook_adc.ko
iio_read_channel_raw
+# required by rk_ircut.ko
+ drain_workqueue
+
# required by rk_vcodec.ko
devfreq_remove_governor
devm_iounmap
@@ -2160,11 +2255,8 @@
dma_buf_begin_cpu_access_partial
dma_buf_end_cpu_access_partial
__fdget
- iommu_attach_group
- iommu_detach_group
iommu_device_unregister
iommu_dma_reserve_iova
- iommu_group_get
kthread_flush_worker
__kthread_init_worker
kthread_queue_work
@@ -2174,15 +2266,11 @@
platform_device_del
pm_generic_runtime_resume
pm_generic_runtime_suspend
- pm_relax
- pm_stay_awake
proc_create_single_data
proc_remove
- strncat
# required by rknpu.ko
dev_pm_domain_attach_by_name
- drm_gem_create_mmap_offset
drm_gem_dumb_destroy
drm_gem_handle_delete
drm_gem_prime_export
@@ -2253,10 +2341,7 @@
dev_pm_qos_add_request
dev_pm_qos_remove_request
dev_pm_qos_update_request
- regulator_get
remove_cpu
- strchr
- strsep
thermal_zone_get_temp
# required by rockchip_thermal.ko
@@ -2280,7 +2365,6 @@
drm_atomic_commit
drm_atomic_get_connector_state
drm_atomic_get_plane_state
- drm_atomic_helper_bridge_propagate_bus_fmt
drm_atomic_helper_check
drm_atomic_helper_check_plane_state
drm_atomic_helper_cleanup_planes
@@ -2421,7 +2505,6 @@
drm_writeback_signal_completion
iommu_domain_alloc
iommu_domain_free
- iommu_map_sg
memblock_free
mipi_dsi_packet_format_is_short
of_find_backlight_by_node
@@ -2432,21 +2515,14 @@
platform_find_device_by_driver
__platform_register_drivers
platform_unregister_drivers
- sort
__vmalloc
-# required by rohm-bu18tl82.ko
- mipi_dsi_device_register_full
- mipi_dsi_device_unregister
- of_find_mipi_dsi_host_by_node
-
# required by rtc-hym8563.ko
devm_rtc_device_register
# required by rtc-rk808.ko
devm_rtc_allocate_device
__rtc_register_device
- rtc_time64_to_tm
rtc_update_irq
# required by sdhci-of-arasan.ko
@@ -2464,12 +2540,17 @@
sdhci_setup_host
# required by sdhci-of-dwcmshc.ko
+ device_get_match_data
devm_clk_bulk_get_optional
dma_get_required_mask
sdhci_adma_write_desc
sdhci_remove_host
sdhci_request
+# required by sensor_dev.ko
+ class_create_file_ns
+ class_remove_file_ns
+
# required by sg.ko
blk_get_request
blk_put_request
@@ -2498,9 +2579,6 @@
sg_scsi_ioctl
__task_pid_nr_ns
-# required by sgm41542_charger.ko
- regulator_unregister
-
# required by sha1-ce.ko
crypto_sha1_finup
crypto_sha1_update
@@ -2534,6 +2612,9 @@
# required by snd-soc-es8316.ko
snd_pcm_hw_constraint_list
+# required by snd-soc-es8326.ko
+ snd_soc_register_component
+
# required by snd-soc-hdmi-codec.ko
snd_ctl_add
snd_ctl_new1
@@ -2568,7 +2649,6 @@
snd_soc_dapm_force_bias_level
# required by snd-soc-simple-card-utils.ko
- devm_kasprintf
devm_kvasprintf
snd_soc_dai_set_tdm_slot
snd_soc_of_parse_audio_simple_widgets
@@ -2607,7 +2687,6 @@
swiotlb_max_segment
# required by tcpci_husb311.ko
- i2c_smbus_read_word_data
tcpci_get_tcpm_port
tcpci_irq
tcpci_register_port
@@ -2706,18 +2785,21 @@
# required by video_rkcif.ko
media_entity_setup_link
- work_busy
# required by video_rkisp.ko
media_device_cleanup
- __memcpy_fromio
__memcpy_toio
param_ops_ullong
- v4l2_event_unsubscribe
v4l2_pipeline_link_notify
-# required by videobuf2-dma-sg.ko
+# required by videobuf2-cma-sg.ko
+ frame_vector_to_pages
split_page
+ vb2_common_vm_ops
+ vb2_create_framevec
+ vb2_destroy_framevec
+ vm_map_ram
+ vm_unmap_ram
# required by vl6180.ko
iio_read_const_attr
diff --git a/android/abi_gki_aarch64_transsion b/android/abi_gki_aarch64_transsion
index 7538d32cf51b..648b5a445e8b 100644
--- a/android/abi_gki_aarch64_transsion
+++ b/android/abi_gki_aarch64_transsion
@@ -6,3 +6,55 @@
scan_swap_map_slots
swap_alloc_cluster
check_cache_active
+ zero_pfn
+ nr_swap_pages
+ plist_requeue
+ plist_del
+ __traceiter_android_vh_handle_pte_fault_end
+ __traceiter_android_vh_cow_user_page
+ __traceiter_android_vh_swapin_add_anon_rmap
+ __traceiter_android_vh_waiting_for_page_migration
+ __traceiter_android_vh_migrate_page_states
+ __traceiter_android_vh_page_referenced_one_end
+ __traceiter_android_vh_count_pswpin
+ __traceiter_android_vh_count_pswpout
+ __traceiter_android_vh_count_swpout_vm_event
+ __traceiter_android_vh_swap_slot_cache_active
+ __traceiter_android_vh_drain_slots_cache_cpu
+ __traceiter_android_vh_alloc_swap_slot_cache
+ __traceiter_android_vh_free_swap_slot
+ __traceiter_android_vh_get_swap_page
+ __traceiter_android_vh_page_isolated_for_reclaim
+ __traceiter_android_vh_inactive_is_low
+ __traceiter_android_vh_snapshot_refaults
+ __traceiter_android_vh_account_swap_pages
+ __traceiter_android_vh_unuse_swap_page
+ __traceiter_android_vh_init_swap_info_struct
+ __traceiter_android_vh_si_swapinfo
+ __traceiter_android_vh_alloc_si
+ __traceiter_android_vh_free_pages
+ __traceiter_android_vh_set_shmem_page_flag
+ __tracepoint_android_vh_handle_pte_fault_end
+ __tracepoint_android_vh_cow_user_page
+ __tracepoint_android_vh_swapin_add_anon_rmap
+ __tracepoint_android_vh_waiting_for_page_migration
+ __tracepoint_android_vh_migrate_page_states
+ __tracepoint_android_vh_page_referenced_one_end
+ __tracepoint_android_vh_count_pswpin
+ __tracepoint_android_vh_count_pswpout
+ __tracepoint_android_vh_count_swpout_vm_event
+ __tracepoint_android_vh_swap_slot_cache_active
+ __tracepoint_android_vh_drain_slots_cache_cpu
+ __tracepoint_android_vh_alloc_swap_slot_cache
+ __tracepoint_android_vh_free_swap_slot
+ __tracepoint_android_vh_get_swap_page
+ __tracepoint_android_vh_page_isolated_for_reclaim
+ __tracepoint_android_vh_inactive_is_low
+ __tracepoint_android_vh_snapshot_refaults
+ __tracepoint_android_vh_account_swap_pages
+ __tracepoint_android_vh_unuse_swap_page
+ __tracepoint_android_vh_init_swap_info_struct
+ __tracepoint_android_vh_si_swapinfo
+ __tracepoint_android_vh_alloc_si
+ __tracepoint_android_vh_free_pages
+ __tracepoint_android_vh_set_shmem_page_flag
\ No newline at end of file
diff --git a/arch/arm64/configs/rockchip_gki.fragment b/arch/arm64/configs/rockchip_gki.fragment
index 36645c46d0b4..6253108101a8 100644
--- a/arch/arm64/configs/rockchip_gki.fragment
+++ b/arch/arm64/configs/rockchip_gki.fragment
@@ -1,20 +1,24 @@
+CONFIG_AP6XXX=m
CONFIG_ARCH_ROCKCHIP=y
CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=m
CONFIG_ARM_ROCKCHIP_CPUFREQ=m
-# CONFIG_ATA_SFF is not set
+CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=m
CONFIG_BACKLIGHT_PWM=m
CONFIG_BATTERY_CW2015=m
+CONFIG_BATTERY_CW2017=m
+CONFIG_BATTERY_CW221X=m
CONFIG_BATTERY_RK817=m
CONFIG_BATTERY_RK818=m
CONFIG_BLK_DEV_NVME=m
CONFIG_BMA2XX_ACC=m
CONFIG_CHARGER_BQ25700=m
+CONFIG_CHARGER_BQ25890=m
CONFIG_CHARGER_RK817=m
CONFIG_CHARGER_RK818=m
+CONFIG_CHARGER_SC89890=m
+CONFIG_CHARGER_SGM41542=m
CONFIG_CHR_DEV_SCH=m
CONFIG_CHR_DEV_SG=m
-# CONFIG_CLK_RK1808 is not set
-# CONFIG_CLK_RK3308 is not set
CONFIG_COMMON_CLK_PWM=m
CONFIG_COMMON_CLK_RK808=m
CONFIG_COMMON_CLK_ROCKCHIP=m
@@ -25,12 +29,10 @@ CONFIG_COMPASS_DEVICE=m
CONFIG_CPUFREQ_DT=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
-CONFIG_CPU_PX30=y
-CONFIG_CPU_RK3328=y
-CONFIG_CPU_RK3368=y
-CONFIG_CPU_RK3399=y
-CONFIG_CPU_RK3568=y
+CONFIG_CPU_RK3588=y
CONFIG_CRYPTO_AES_ARM64_CE_CCM=m
+CONFIG_CRYPTO_DEV_ROCKCHIP=m
+CONFIG_CRYPTO_DEV_ROCKCHIP_DEV=m
CONFIG_CRYPTO_GHASH_ARM64_CE=m
CONFIG_CRYPTO_SHA1_ARM64_CE=m
CONFIG_CRYPTO_TWOFISH=m
@@ -38,13 +40,20 @@ CONFIG_DEVFREQ_EVENT_ROCKCHIP_NOCP=m
CONFIG_DMABUF_HEAPS_CMA=m
CONFIG_DMABUF_HEAPS_SYSTEM=m
CONFIG_DRAGONRISE_FF=y
+CONFIG_DRM_DISPLAY_CONNECTOR=m
CONFIG_DRM_DW_HDMI_CEC=m
CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
+CONFIG_DRM_MAXIM_MAX96745=m
+CONFIG_DRM_MAXIM_MAX96752F=m
+CONFIG_DRM_MAXIM_MAX96755F=m
CONFIG_DRM_PANEL_SIMPLE=m
+CONFIG_DRM_RK1000_TVE=m
+CONFIG_DRM_RK630_TVE=m
CONFIG_DRM_ROCKCHIP=m
+CONFIG_DRM_ROCKCHIP_RK628=m
+CONFIG_DRM_ROHM_BU18XL82=m
CONFIG_DRM_SII902X=m
CONFIG_DTC_SYMBOLS=y
-# CONFIG_DWMAC_GENERIC is not set
CONFIG_DW_WATCHDOG=m
CONFIG_GPIO_ROCKCHIP=m
CONFIG_GREENASIA_FF=y
@@ -116,13 +125,12 @@ CONFIG_I2C_CHARDEV=m
CONFIG_I2C_GPIO=m
CONFIG_I2C_HID=m
CONFIG_I2C_RK3X=m
+CONFIG_IEP=m
CONFIG_IIO_BUFFER_CB=m
CONFIG_INPUT_RK805_PWRKEY=m
-CONFIG_ION=y
-CONFIG_ION_SYSTEM_HEAP=y
-CONFIG_JOLIET=y
CONFIG_KEYBOARD_ADC=m
CONFIG_LEDS_GPIO=m
+CONFIG_LEDS_RGB13H=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
@@ -131,7 +139,16 @@ CONFIG_LSM330_ACC=m
CONFIG_LS_CM3217=m
CONFIG_LS_CM3218=m
CONFIG_LS_STK3410=m
-# CONFIG_MALI400_PROFILING is not set
+CONFIG_LS_UCS14620=m
+CONFIG_MALI_BIFROST=m
+CONFIG_MALI_BIFROST_DEBUG=y
+CONFIG_MALI_BIFROST_EXPERT=y
+CONFIG_MALI_CSF_SUPPORT=y
+CONFIG_MALI_PLATFORM_NAME="rk"
+CONFIG_MALI_PWRSOFT_765=y
+CONFIG_MFD_RK628=m
+CONFIG_MFD_RK630_I2C=m
+CONFIG_MFD_RK806_SPI=m
CONFIG_MFD_RK808=m
CONFIG_MMC_DW=m
CONFIG_MMC_DW_ROCKCHIP=m
@@ -141,22 +158,33 @@ CONFIG_MPU6500_ACC=m
CONFIG_MPU6880_ACC=m
CONFIG_OPTEE=m
CONFIG_PANTHERLORD_FF=y
+CONFIG_PCIEASPM_EXT=m
+CONFIG_PCIE_DW_ROCKCHIP=m
+CONFIG_PCIE_ROCKCHIP_HOST=m
+CONFIG_PHY_ROCKCHIP_CSI2_DPHY=m
CONFIG_PHY_ROCKCHIP_DP=m
CONFIG_PHY_ROCKCHIP_EMMC=m
CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m
+CONFIG_PHY_ROCKCHIP_INNO_HDMI=m
CONFIG_PHY_ROCKCHIP_INNO_USB2=m
CONFIG_PHY_ROCKCHIP_INNO_USB3=m
CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=m
CONFIG_PHY_ROCKCHIP_NANENG_EDP=m
CONFIG_PHY_ROCKCHIP_PCIE=m
+CONFIG_PHY_ROCKCHIP_SAMSUNG_DCPHY=m
+CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX=m
+CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX_HDMI=m
CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=m
CONFIG_PHY_ROCKCHIP_TYPEC=m
CONFIG_PHY_ROCKCHIP_USB=m
+CONFIG_PHY_ROCKCHIP_USBDP=m
CONFIG_PINCTRL_RK805=m
+CONFIG_PINCTRL_RK806=m
CONFIG_PINCTRL_ROCKCHIP=m
CONFIG_PL330_DMA=m
CONFIG_PROXIMITY_DEVICE=m
CONFIG_PS_STK3410=m
+CONFIG_PS_UCS14620=m
CONFIG_PWM_ROCKCHIP=m
CONFIG_REGULATOR_ACT8865=m
CONFIG_REGULATOR_FAN53555=m
@@ -164,25 +192,43 @@ CONFIG_REGULATOR_GPIO=m
CONFIG_REGULATOR_LP8752=m
CONFIG_REGULATOR_MP8865=m
CONFIG_REGULATOR_PWM=m
+CONFIG_REGULATOR_RK806=m
CONFIG_REGULATOR_RK808=m
+CONFIG_REGULATOR_RK860X=m
CONFIG_REGULATOR_TPS65132=m
+CONFIG_REGULATOR_WL2868C=m
CONFIG_REGULATOR_XZ3216=m
+CONFIG_RFKILL_RK=m
CONFIG_RK_CONSOLE_THREAD=y
-CONFIG_RK_NAND=m
+CONFIG_RK_HEADSET=m
CONFIG_ROCKCHIP_ANALOGIX_DP=y
CONFIG_ROCKCHIP_CDN_DP=y
CONFIG_ROCKCHIP_CPUINFO=m
CONFIG_ROCKCHIP_DEBUG=m
+CONFIG_ROCKCHIP_DW_DP=y
+CONFIG_ROCKCHIP_DW_HDCP2=m
CONFIG_ROCKCHIP_DW_HDMI=y
CONFIG_ROCKCHIP_DW_MIPI_DSI=y
CONFIG_ROCKCHIP_EFUSE=m
-CONFIG_ROCKCHIP_FIQ_DEBUGGER=m
CONFIG_ROCKCHIP_GRF=m
CONFIG_ROCKCHIP_INNO_HDMI=y
CONFIG_ROCKCHIP_IODOMAIN=m
CONFIG_ROCKCHIP_IOMMU=m
CONFIG_ROCKCHIP_IPA=m
CONFIG_ROCKCHIP_LVDS=y
+CONFIG_ROCKCHIP_MPP_AV1DEC=y
+CONFIG_ROCKCHIP_MPP_IEP2=y
+CONFIG_ROCKCHIP_MPP_JPGDEC=y
+CONFIG_ROCKCHIP_MPP_RKVDEC=y
+CONFIG_ROCKCHIP_MPP_RKVDEC2=y
+CONFIG_ROCKCHIP_MPP_RKVENC=y
+CONFIG_ROCKCHIP_MPP_RKVENC2=y
+CONFIG_ROCKCHIP_MPP_SERVICE=m
+CONFIG_ROCKCHIP_MPP_VDPU1=y
+CONFIG_ROCKCHIP_MPP_VDPU2=y
+CONFIG_ROCKCHIP_MPP_VEPU1=y
+CONFIG_ROCKCHIP_MPP_VEPU2=y
+CONFIG_ROCKCHIP_MULTI_RGA=m
CONFIG_ROCKCHIP_OPP=m
CONFIG_ROCKCHIP_OTP=m
CONFIG_ROCKCHIP_PHY=m
@@ -191,14 +237,19 @@ CONFIG_ROCKCHIP_PVTM=m
CONFIG_ROCKCHIP_REMOTECTL=m
CONFIG_ROCKCHIP_REMOTECTL_PWM=m
CONFIG_ROCKCHIP_RGB=y
+CONFIG_ROCKCHIP_RKNPU=m
CONFIG_ROCKCHIP_SARADC=m
CONFIG_ROCKCHIP_SIP=m
+CONFIG_ROCKCHIP_SUSPEND_MODE=m
CONFIG_ROCKCHIP_SYSTEM_MONITOR=m
CONFIG_ROCKCHIP_THERMAL=m
+CONFIG_ROCKCHIP_TIMER=m
CONFIG_ROCKCHIP_VENDOR_STORAGE=m
CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y
+CONFIG_RTC_DRV_HYM8563=m
CONFIG_RTC_DRV_RK808=m
CONFIG_SENSOR_DEVICE=m
+CONFIG_SERIAL_8250_DW=m
CONFIG_SMARTJOYPLUS_FF=y
CONFIG_SND_SIMPLE_CARD=m
CONFIG_SND_SOC_BT_SCO=m
@@ -209,13 +260,20 @@ CONFIG_SND_SOC_ES7210=m
CONFIG_SND_SOC_ES7243E=m
CONFIG_SND_SOC_ES8311=m
CONFIG_SND_SOC_ES8316=m
+CONFIG_SND_SOC_ES8323=m
+CONFIG_SND_SOC_ES8326=m
CONFIG_SND_SOC_ES8396=m
CONFIG_SND_SOC_RK3328=m
CONFIG_SND_SOC_RK817=m
CONFIG_SND_SOC_RK_CODEC_DIGITAL=m
CONFIG_SND_SOC_ROCKCHIP=m
+CONFIG_SND_SOC_ROCKCHIP_HDMI=m
+CONFIG_SND_SOC_ROCKCHIP_I2S=m
+CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=m
+CONFIG_SND_SOC_ROCKCHIP_MULTICODECS=m
CONFIG_SND_SOC_ROCKCHIP_PDM=m
CONFIG_SND_SOC_ROCKCHIP_SPDIF=m
+CONFIG_SND_SOC_ROCKCHIP_SPDIFRX=m
CONFIG_SND_SOC_RT5640=m
CONFIG_SND_SOC_SPDIF=m
CONFIG_SPI_ROCKCHIP=m
@@ -224,14 +282,61 @@ CONFIG_SW_SYNC=m
CONFIG_SYSCON_REBOOT_MODE=m
CONFIG_TEE=m
CONFIG_TEST_POWER=m
+CONFIG_TOUCHSCREEN_ELAN5515=m
+CONFIG_TOUCHSCREEN_GSL3673=m
CONFIG_TOUCHSCREEN_GSLX680_PAD=m
-CONFIG_TOUCHSCREEN_GT1X=m
CONFIG_TYPEC_DP_ALTMODE=m
CONFIG_TYPEC_FUSB302=m
+CONFIG_TYPEC_HUSB311=m
+CONFIG_UCS12CM0=m
+CONFIG_USB_DWC2=m
+CONFIG_USB_NET_CDC_MBIM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_HCD_PCI is not set
+CONFIG_USB_OHCI_HCD_PLATFORM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_VIDEO_AW36518=m
+CONFIG_VIDEO_AW8601=m
+CONFIG_VIDEO_CN3927V=m
CONFIG_VIDEO_DW9714=m
-CONFIG_VIDEO_OV2680=m
+CONFIG_VIDEO_FP5510=m
+CONFIG_VIDEO_GC2145=m
+CONFIG_VIDEO_GC2385=m
+CONFIG_VIDEO_GC4C33=m
+CONFIG_VIDEO_GC8034=m
+CONFIG_VIDEO_IMX415=m
+CONFIG_VIDEO_LT6911UXC=m
+CONFIG_VIDEO_LT7911D=m
+CONFIG_VIDEO_NVP6188=m
+CONFIG_VIDEO_OV02B10=m
+CONFIG_VIDEO_OV13850=m
+CONFIG_VIDEO_OV13855=m
+CONFIG_VIDEO_OV50C40=m
CONFIG_VIDEO_OV5695=m
-CONFIG_ZISOFS=y
+CONFIG_VIDEO_OV8858=m
+CONFIG_VIDEO_RK628_BT1120=m
+CONFIG_VIDEO_RK628_CSI=m
+CONFIG_VIDEO_RK_IRCUT=m
+CONFIG_VIDEO_ROCKCHIP_CIF=m
+CONFIG_VIDEO_ROCKCHIP_ISP=m
+CONFIG_VIDEO_ROCKCHIP_ISPP=m
+CONFIG_VIDEO_S5K3L6XX=m
+CONFIG_VIDEO_S5KJN1=m
+CONFIG_VIDEO_SGM3784=m
+CONFIG_VIDEO_THCV244=m
+CONFIG_VL6180=m
+CONFIG_WIFI_BUILD_MODULE=y
+CONFIG_WL_ROCKCHIP=m
CONFIG_ZRAM=m
CONFIG_ZSMALLOC=m
# CONFIG_USB_DUMMY_HCD is not set
diff --git a/build.config.rockchip b/build.config.rockchip
index e7f08311793b..297c4c95a14b 100644
--- a/build.config.rockchip
+++ b/build.config.rockchip
@@ -3,6 +3,6 @@
DEFCONFIG=rockchip_aarch64_gki_defconfig
KMI_SYMBOL_LIST=android/abi_gki_aarch64_rockchip
-PRE_DEFCONFIG_CMDS="KCONFIG_CONFIG=${ROOT_DIR}/common/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/common/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/common/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/common/arch/arm64/configs/rockchip_gki.config"
+PRE_DEFCONFIG_CMDS="KCONFIG_CONFIG=${ROOT_DIR}/common/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/common/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/common/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/common/arch/arm64/configs/rockchip_gki.fragment"
POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/common/arch/arm64/configs/${DEFCONFIG}"
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index ba7d6a96514f..e2f6da3332a6 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -2576,7 +2576,6 @@ static int binder_proc_transaction(struct binder_transaction *t,
struct binder_priority node_prio;
bool oneway = !!(t->flags & TF_ONE_WAY);
bool pending_async = false;
- bool skip = false;
struct binder_transaction *t_outdated = NULL;
BUG_ON(!node);
@@ -2605,10 +2604,7 @@ static int binder_proc_transaction(struct binder_transaction *t,
return proc->is_frozen ? BR_FROZEN_REPLY : BR_DEAD_REPLY;
}
- trace_android_vh_binder_proc_transaction_entry(proc, t,
- &thread, node->debug_id, pending_async, !oneway, &skip);
-
- if (!thread && !pending_async && !skip)
+ if (!thread && !pending_async)
thread = binder_select_thread_ilocked(proc);
trace_android_vh_binder_proc_transaction(current, proc->tsk,
@@ -4150,10 +4146,6 @@ retry:
size_t trsize = sizeof(*trd);
binder_inner_proc_lock(proc);
- trace_android_vh_binder_select_worklist_ilocked(&list, thread,
- proc, wait_for_proc_work);
- if (list)
- goto skip;
if (!binder_worklist_empty_ilocked(&thread->todo))
list = &thread->todo;
else if (!binder_worklist_empty_ilocked(&proc->todo) &&
@@ -4167,7 +4159,7 @@ retry:
goto retry;
break;
}
-skip:
+
if (end - ptr < sizeof(tr) + 4) {
binder_inner_proc_unlock(proc);
break;
diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
index 128f63a76938..1a22772d64f1 100644
--- a/drivers/android/vendor_hooks.c
+++ b/drivers/android/vendor_hooks.c
@@ -106,6 +106,12 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_rwsem_list_add);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alter_futex_plist_add);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_sleep_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_futex);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wait_start);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wait_end);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_traverse_plist);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_this);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_futex_wake_up_q_finish);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_start);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mutex_wait_finish);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rtmutex_wait_start);
@@ -259,6 +265,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_commit_creds);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_creds);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_override_creds);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_revert_creds);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_mutex_lock_starttime);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_rtmutex_lock_starttime);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_rwsem_lock_starttime);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_record_percpu_rwsem_lock_starttime);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_memory_x);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_memory_nx);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_memory_ro);
@@ -290,10 +300,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_reply);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_trans);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_binder_transaction);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_preset);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction_entry);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_proc_transaction_end);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_select_worklist_ilocked);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_new_ref);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_del_ref);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_post_init_entity_util_avg);
@@ -399,6 +407,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_udp_recvmsg);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_recvmsg_stat);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pci_d3_sleep);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kmalloc_slab);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_disable_thermal_cooling_stats);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmap_region);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_page_mapcount);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_add_page_to_lrulist);
@@ -446,6 +455,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_swapinfo);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_si);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_pages);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_shmem_page_flag);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_pidfd_open);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmput);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_pelt_multiplier);
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 74d2bd7a6550..01e14ac13571 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -1181,6 +1181,9 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base,
if (memblock_is_region_reserved(base, size))
return -EBUSY;
+ if (memblock_is_nomap_remove())
+ return memblock_remove(base, size);
+
return memblock_mark_nomap(base, size);
}
return memblock_reserve(base, size);
diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
index f52708f310e0..3251b27fc5df 100644
--- a/drivers/thermal/thermal_sysfs.c
+++ b/drivers/thermal/thermal_sysfs.c
@@ -18,6 +18,7 @@
#include
#include
#include
+#include
#include "thermal_core.h"
@@ -886,9 +887,22 @@ static struct attribute *cooling_device_stats_attrs[] = {
NULL
};
+static umode_t cooling_device_stats_is_visible(struct kobject *kobj,
+ struct attribute *attr, int attrno)
+{
+ struct thermal_cooling_device *cdev = to_cooling_device(
+ kobj_to_dev(kobj));
+
+ if (!cdev->stats)
+ return 0;
+
+ return attr->mode;
+}
+
static const struct attribute_group cooling_device_stats_attr_group = {
.attrs = cooling_device_stats_attrs,
- .name = "stats"
+ .name = "stats",
+ .is_visible = cooling_device_stats_is_visible,
};
static void cooling_device_stats_setup(struct thermal_cooling_device *cdev)
@@ -896,6 +910,12 @@ static void cooling_device_stats_setup(struct thermal_cooling_device *cdev)
struct cooling_dev_stats *stats;
unsigned long states;
int var;
+ bool disable_cdev_stats = false;
+
+ trace_android_vh_disable_thermal_cooling_stats(cdev,
+ &disable_cdev_stats);
+ if (disable_cdev_stats)
+ return;
if (cdev->ops->get_max_state(cdev, &states))
return;
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index ff08bb433c16..3d2351b43d3b 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -487,6 +487,7 @@ bool memblock_is_map_memory(phys_addr_t addr);
bool memblock_is_region_memory(phys_addr_t base, phys_addr_t size);
bool memblock_is_reserved(phys_addr_t addr);
bool memblock_is_region_reserved(phys_addr_t base, phys_addr_t size);
+bool memblock_is_nomap_remove(void);
void memblock_dump_all(void);
diff --git a/include/linux/percpu-rwsem.h b/include/linux/percpu-rwsem.h
index 536976636c58..2f33e0a6e1a9 100644
--- a/include/linux/percpu-rwsem.h
+++ b/include/linux/percpu-rwsem.h
@@ -9,6 +9,9 @@
#include
#include
+void _trace_android_vh_record_percpu_rwsem_lock_starttime(
+ struct task_struct *tsk, unsigned long settime);
+
struct percpu_rw_semaphore {
struct rcu_sync rss;
unsigned int __percpu *read_count;
@@ -73,6 +76,7 @@ static inline void percpu_down_read(struct percpu_rw_semaphore *sem)
* bleeding the critical section out.
*/
preempt_enable();
+ _trace_android_vh_record_percpu_rwsem_lock_starttime(current, jiffies);
}
static inline bool percpu_down_read_trylock(struct percpu_rw_semaphore *sem)
@@ -93,14 +97,17 @@ static inline bool percpu_down_read_trylock(struct percpu_rw_semaphore *sem)
* bleeding the critical section out.
*/
- if (ret)
+ if (ret) {
+ _trace_android_vh_record_percpu_rwsem_lock_starttime(current, jiffies);
rwsem_acquire_read(&sem->dep_map, 0, 1, _RET_IP_);
+ }
return ret;
}
static inline void percpu_up_read(struct percpu_rw_semaphore *sem)
{
+ _trace_android_vh_record_percpu_rwsem_lock_starttime(current, 0);
rwsem_release(&sem->dep_map, _RET_IP_);
preempt_disable();
diff --git a/include/trace/hooks/binder.h b/include/trace/hooks/binder.h
index 5147261de15c..fd877ec5b67f 100644
--- a/include/trace/hooks/binder.h
+++ b/include/trace/hooks/binder.h
@@ -75,11 +75,6 @@ DECLARE_RESTRICTED_HOOK(android_rvh_binder_transaction,
DECLARE_HOOK(android_vh_binder_preset,
TP_PROTO(struct hlist_head *hhead, struct mutex *lock),
TP_ARGS(hhead, lock));
-DECLARE_HOOK(android_vh_binder_proc_transaction_entry,
- TP_PROTO(struct binder_proc *proc, struct binder_transaction *t,
- struct binder_thread **thread, int node_debug_id, bool pending_async,
- bool sync, bool *skip),
- TP_ARGS(proc, t, thread, node_debug_id, pending_async, sync, skip));
DECLARE_HOOK(android_vh_binder_proc_transaction,
TP_PROTO(struct task_struct *caller_task, struct task_struct *binder_proc_task,
struct task_struct *binder_th_task, int node_debug_id,
@@ -90,10 +85,6 @@ DECLARE_HOOK(android_vh_binder_proc_transaction_end,
struct task_struct *binder_th_task, unsigned int code,
bool pending_async, bool sync),
TP_ARGS(caller_task, binder_proc_task, binder_th_task, code, pending_async, sync));
-DECLARE_HOOK(android_vh_binder_select_worklist_ilocked,
- TP_PROTO(struct list_head **list, struct binder_thread *thread, struct binder_proc *proc,
- int wait_for_proc_work),
- TP_ARGS(list, thread, proc, wait_for_proc_work));
DECLARE_HOOK(android_vh_binder_new_ref,
TP_PROTO(struct task_struct *proc, uint32_t ref_desc, int node_debug_id),
TP_ARGS(proc, ref_desc, node_debug_id));
diff --git a/include/trace/hooks/dtask.h b/include/trace/hooks/dtask.h
index 9890bfe5c41d..fcf0ea550455 100644
--- a/include/trace/hooks/dtask.h
+++ b/include/trace/hooks/dtask.h
@@ -71,7 +71,18 @@ DECLARE_HOOK(android_vh_mutex_unlock_slowpath_end,
DECLARE_HOOK(android_vh_mutex_start_check_new_owner,
TP_PROTO(struct mutex *lock),
TP_ARGS(lock));
-
+DECLARE_HOOK(android_vh_record_mutex_lock_starttime,
+ TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies),
+ TP_ARGS(tsk, settime_jiffies));
+DECLARE_HOOK(android_vh_record_rtmutex_lock_starttime,
+ TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies),
+ TP_ARGS(tsk, settime_jiffies));
+DECLARE_HOOK(android_vh_record_rwsem_lock_starttime,
+ TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies),
+ TP_ARGS(tsk, settime_jiffies));
+DECLARE_HOOK(android_vh_record_percpu_rwsem_lock_starttime,
+ TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies),
+ TP_ARGS(tsk, settime_jiffies));
/* macro versions of hooks are no longer required */
#endif /* _TRACE_HOOK_DTASK_H */
diff --git a/include/trace/hooks/futex.h b/include/trace/hooks/futex.h
index f8bf394ea013..829fe5605b02 100644
--- a/include/trace/hooks/futex.h
+++ b/include/trace/hooks/futex.h
@@ -8,6 +8,10 @@
#include
#include
#include
+#ifndef __GENKSYMS__
+#include
+#endif
+
/*
* Following tracepoints are not exported in tracefs and provide a
* mechanism for vendor modules to hook and extend functionality
@@ -22,6 +26,36 @@ DECLARE_HOOK(android_vh_futex_sleep_start,
TP_PROTO(struct task_struct *p),
TP_ARGS(p));
+DECLARE_HOOK(android_vh_do_futex,
+ TP_PROTO(int cmd,
+ unsigned int *flags,
+ u32 __user *uaddr2),
+ TP_ARGS(cmd, flags, uaddr2));
+
+DECLARE_HOOK(android_vh_futex_wait_start,
+ TP_PROTO(unsigned int flags,
+ u32 bitset),
+ TP_ARGS(flags, bitset));
+
+DECLARE_HOOK(android_vh_futex_wait_end,
+ TP_PROTO(unsigned int flags,
+ u32 bitset),
+ TP_ARGS(flags, bitset));
+
+DECLARE_HOOK(android_vh_futex_wake_traverse_plist,
+ TP_PROTO(struct plist_head *chain, int *target_nr,
+ union futex_key key, u32 bitset),
+ TP_ARGS(chain, target_nr, key, bitset));
+
+DECLARE_HOOK(android_vh_futex_wake_this,
+ TP_PROTO(int ret, int nr_wake, int target_nr,
+ struct task_struct *p),
+ TP_ARGS(ret, nr_wake, target_nr, p));
+
+DECLARE_HOOK(android_vh_futex_wake_up_q_finish,
+ TP_PROTO(int nr_wake, int target_nr),
+ TP_ARGS(nr_wake, target_nr));
+
/* macro versions of hooks are no longer required */
#endif /* _TRACE_HOOK_FUTEX_H */
diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h
index d0fc31e2c966..6488dee32a88 100644
--- a/include/trace/hooks/sched.h
+++ b/include/trace/hooks/sched.h
@@ -391,14 +391,6 @@ DECLARE_HOOK(android_vh_setscheduler_uclamp,
TP_PROTO(struct task_struct *tsk, int clamp_id, unsigned int value),
TP_ARGS(tsk, clamp_id, value));
-DECLARE_HOOK(android_vh_pidfd_open,
- TP_PROTO(struct pid *p),
- TP_ARGS(p));
-
-DECLARE_HOOK(android_vh_mmput,
- TP_PROTO(void *unused),
- TP_ARGS(unused));
-
DECLARE_HOOK(android_vh_sched_pelt_multiplier,
TP_PROTO(unsigned int old, unsigned int cur, int *ret),
TP_ARGS(old, cur, ret));
diff --git a/include/trace/hooks/thermal.h b/include/trace/hooks/thermal.h
index 5e61ecd38425..c438ab6ef5b6 100644
--- a/include/trace/hooks/thermal.h
+++ b/include/trace/hooks/thermal.h
@@ -24,6 +24,11 @@ DECLARE_HOOK(android_vh_thermal_pm_notify_suspend,
TP_PROTO(struct thermal_zone_device *tz, int *irq_wakeable),
TP_ARGS(tz, irq_wakeable));
+struct thermal_cooling_device;
+DECLARE_HOOK(android_vh_disable_thermal_cooling_stats,
+ TP_PROTO(struct thermal_cooling_device *cdev, bool *disable_stats),
+ TP_ARGS(cdev, disable_stats));
+
#endif /* _TRACE_HOOK_THERMAL_H */
/* This part must be outside protection */
#include
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index d50776066fa5..93866c87e680 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -2328,6 +2328,47 @@ int task_cgroup_path(struct task_struct *task, char *buf, size_t buflen)
}
EXPORT_SYMBOL_GPL(task_cgroup_path);
+/**
+ * cgroup_attach_lock - Lock for ->attach()
+ * @lock_threadgroup: whether to down_write cgroup_threadgroup_rwsem
+ *
+ * cgroup migration sometimes needs to stabilize threadgroups against forks and
+ * exits by write-locking cgroup_threadgroup_rwsem. However, some ->attach()
+ * implementations (e.g. cpuset), also need to disable CPU hotplug.
+ * Unfortunately, letting ->attach() operations acquire cpus_read_lock() can
+ * lead to deadlocks.
+ *
+ * Bringing up a CPU may involve creating new tasks which requires read-locking
+ * threadgroup_rwsem, so threadgroup_rwsem nests inside cpus_read_lock(). If we
+ * call an ->attach() which acquires the cpus lock while write-locking
+ * threadgroup_rwsem, the locking order is reversed and we end up waiting for an
+ * on-going CPU hotplug operation which in turn is waiting for the
+ * threadgroup_rwsem to be released to create new tasks. For more details:
+ *
+ * http://lkml.kernel.org/r/20220711174629.uehfmqegcwn2lqzu@wubuntu
+ *
+ * Resolve the situation by always acquiring cpus_read_lock() before optionally
+ * write-locking cgroup_threadgroup_rwsem. This allows ->attach() to assume that
+ * CPU hotplug is disabled on entry.
+ */
+static void cgroup_attach_lock(bool lock_threadgroup)
+{
+ cpus_read_lock();
+ if (lock_threadgroup)
+ percpu_down_write(&cgroup_threadgroup_rwsem);
+}
+
+/**
+ * cgroup_attach_unlock - Undo cgroup_attach_lock()
+ * @lock_threadgroup: whether to up_write cgroup_threadgroup_rwsem
+ */
+static void cgroup_attach_unlock(bool lock_threadgroup)
+{
+ if (lock_threadgroup)
+ percpu_up_write(&cgroup_threadgroup_rwsem);
+ cpus_read_unlock();
+}
+
/**
* cgroup_migrate_add_task - add a migration target task to a migration context
* @task: target task
@@ -2812,9 +2853,8 @@ int cgroup_attach_task(struct cgroup *dst_cgrp, struct task_struct *leader,
}
struct task_struct *cgroup_procs_write_start(char *buf, bool threadgroup,
- bool *locked,
+ bool *threadgroup_locked,
struct cgroup *dst_cgrp)
- __acquires(&cgroup_threadgroup_rwsem)
{
struct task_struct *tsk;
pid_t pid;
@@ -2832,12 +2872,8 @@ struct task_struct *cgroup_procs_write_start(char *buf, bool threadgroup,
* Therefore, we can skip the global lock.
*/
lockdep_assert_held(&cgroup_mutex);
- if (pid || threadgroup) {
- percpu_down_write(&cgroup_threadgroup_rwsem);
- *locked = true;
- } else {
- *locked = false;
- }
+ *threadgroup_locked = pid || threadgroup;
+ cgroup_attach_lock(*threadgroup_locked);
rcu_read_lock();
if (pid) {
@@ -2871,17 +2907,14 @@ struct task_struct *cgroup_procs_write_start(char *buf, bool threadgroup,
goto out_unlock_rcu;
out_unlock_threadgroup:
- if (*locked) {
- percpu_up_write(&cgroup_threadgroup_rwsem);
- *locked = false;
- }
+ cgroup_attach_unlock(*threadgroup_locked);
+ *threadgroup_locked = false;
out_unlock_rcu:
rcu_read_unlock();
return tsk;
}
-void cgroup_procs_write_finish(struct task_struct *task, bool locked)
- __releases(&cgroup_threadgroup_rwsem)
+void cgroup_procs_write_finish(struct task_struct *task, bool threadgroup_locked)
{
struct cgroup_subsys *ss;
int ssid;
@@ -2889,8 +2922,8 @@ void cgroup_procs_write_finish(struct task_struct *task, bool locked)
/* release reference from cgroup_procs_write_start() */
put_task_struct(task);
- if (locked)
- percpu_up_write(&cgroup_threadgroup_rwsem);
+ cgroup_attach_unlock(threadgroup_locked);
+
for_each_subsys(ss, ssid)
if (ss->post_attach)
ss->post_attach();
@@ -2945,12 +2978,11 @@ static int cgroup_update_dfl_csses(struct cgroup *cgrp)
struct cgroup_subsys_state *d_css;
struct cgroup *dsct;
struct ext_css_set *ext_src_set;
+ bool has_tasks;
int ret;
lockdep_assert_held(&cgroup_mutex);
- percpu_down_write(&cgroup_threadgroup_rwsem);
-
/* look up all csses currently attached to @cgrp's subtree */
spin_lock_irq(&css_set_lock);
cgroup_for_each_live_descendant_pre(dsct, d_css, cgrp) {
@@ -2961,6 +2993,15 @@ static int cgroup_update_dfl_csses(struct cgroup *cgrp)
}
spin_unlock_irq(&css_set_lock);
+ /*
+ * We need to write-lock threadgroup_rwsem while migrating tasks.
+ * However, if there are no source csets for @cgrp, changing its
+ * controllers isn't gonna produce any task migrations and the
+ * write-locking can be skipped safely.
+ */
+ has_tasks = !list_empty(&mgctx.preloaded_src_csets);
+ cgroup_attach_lock(has_tasks);
+
/* NULL dst indicates self on default hierarchy */
ret = cgroup_migrate_prepare_dst(&mgctx);
if (ret)
@@ -2980,7 +3021,7 @@ static int cgroup_update_dfl_csses(struct cgroup *cgrp)
ret = cgroup_migrate_execute(&mgctx);
out_finish:
cgroup_migrate_finish(&mgctx);
- percpu_up_write(&cgroup_threadgroup_rwsem);
+ cgroup_attach_unlock(has_tasks);
return ret;
}
@@ -4855,13 +4896,13 @@ static ssize_t cgroup_procs_write(struct kernfs_open_file *of,
struct task_struct *task;
const struct cred *saved_cred;
ssize_t ret;
- bool locked;
+ bool threadgroup_locked;
dst_cgrp = cgroup_kn_lock_live(of->kn, false);
if (!dst_cgrp)
return -ENODEV;
- task = cgroup_procs_write_start(buf, true, &locked, dst_cgrp);
+ task = cgroup_procs_write_start(buf, true, &threadgroup_locked, dst_cgrp);
ret = PTR_ERR_OR_ZERO(task);
if (ret)
goto out_unlock;
@@ -4887,7 +4928,7 @@ static ssize_t cgroup_procs_write(struct kernfs_open_file *of,
ret = cgroup_attach_task(dst_cgrp, task, true);
out_finish:
- cgroup_procs_write_finish(task, locked);
+ cgroup_procs_write_finish(task, threadgroup_locked);
out_unlock:
cgroup_kn_unlock(of->kn);
@@ -4907,7 +4948,7 @@ static ssize_t cgroup_threads_write(struct kernfs_open_file *of,
struct task_struct *task;
const struct cred *saved_cred;
ssize_t ret;
- bool locked;
+ bool threadgroup_locked;
buf = strstrip(buf);
@@ -4915,7 +4956,7 @@ static ssize_t cgroup_threads_write(struct kernfs_open_file *of,
if (!dst_cgrp)
return -ENODEV;
- task = cgroup_procs_write_start(buf, false, &locked, dst_cgrp);
+ task = cgroup_procs_write_start(buf, false, &threadgroup_locked, dst_cgrp);
ret = PTR_ERR_OR_ZERO(task);
if (ret)
goto out_unlock;
@@ -4941,7 +4982,7 @@ static ssize_t cgroup_threads_write(struct kernfs_open_file *of,
ret = cgroup_attach_task(dst_cgrp, task, false);
out_finish:
- cgroup_procs_write_finish(task, locked);
+ cgroup_procs_write_finish(task, threadgroup_locked);
out_unlock:
cgroup_kn_unlock(of->kn);
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index ff2071fba6a7..af3ed68cc4f2 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -2238,7 +2238,7 @@ static void cpuset_attach(struct cgroup_taskset *tset)
cgroup_taskset_first(tset, &css);
cs = css_cs(css);
- cpus_read_lock();
+ lockdep_assert_cpus_held(); /* see cgroup_attach_lock() */
mutex_lock(&cpuset_mutex);
guarantee_online_mems(cs, &cpuset_attach_nodemask_to);
@@ -2292,7 +2292,6 @@ static void cpuset_attach(struct cgroup_taskset *tset)
wake_up(&cpuset_attach_wq);
mutex_unlock(&cpuset_mutex);
- cpus_read_unlock();
}
/* The various types of files and directories in a cpuset file system */
diff --git a/kernel/fork.c b/kernel/fork.c
index 58409b7178c2..3b281326c0e1 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1150,10 +1150,8 @@ void mmput(struct mm_struct *mm)
{
might_sleep();
- if (atomic_dec_and_test(&mm->mm_users)) {
- trace_android_vh_mmput(NULL);
+ if (atomic_dec_and_test(&mm->mm_users))
__mmput(mm);
- }
}
EXPORT_SYMBOL_GPL(mmput);
diff --git a/kernel/futex.c b/kernel/futex.c
index 29bd9cd92468..b223cc525032 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1594,6 +1594,7 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
struct futex_q *this, *next;
union futex_key key = FUTEX_KEY_INIT;
int ret;
+ int target_nr;
DEFINE_WAKE_Q(wake_q);
if (!bitset)
@@ -1611,6 +1612,7 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
spin_lock(&hb->lock);
+ trace_android_vh_futex_wake_traverse_plist(&hb->chain, &target_nr, key, bitset);
plist_for_each_entry_safe(this, next, &hb->chain, list) {
if (match_futex (&this->key, &key)) {
if (this->pi_state || this->rt_waiter) {
@@ -1622,6 +1624,7 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
if (!(this->bitset & bitset))
continue;
+ trace_android_vh_futex_wake_this(ret, nr_wake, target_nr, this->task);
mark_wake_futex(&wake_q, this);
if (++ret >= nr_wake)
break;
@@ -1630,6 +1633,7 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)
spin_unlock(&hb->lock);
wake_up_q(&wake_q);
+ trace_android_vh_futex_wake_up_q_finish(nr_wake, target_nr);
return ret;
}
@@ -2699,6 +2703,7 @@ static int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val,
if (!bitset)
return -EINVAL;
q.bitset = bitset;
+ trace_android_vh_futex_wait_start(flags, bitset);
to = futex_setup_timer(abs_time, &timeout, flags,
current->timer_slack_ns);
@@ -2748,6 +2753,7 @@ out:
hrtimer_cancel(&to->timer);
destroy_hrtimer_on_stack(&to->timer);
}
+ trace_android_vh_futex_wait_end(flags, bitset);
return ret;
}
@@ -3733,6 +3739,7 @@ long do_futex(u32 __user *uaddr, int op, u32 val, ktime_t *timeout,
return -ENOSYS;
}
+ trace_android_vh_do_futex(cmd, &flags, uaddr2);
switch (cmd) {
case FUTEX_WAIT:
val3 = FUTEX_BITSET_MATCH_ANY;
diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c
index 6d4f413264d2..4fa524e21420 100644
--- a/kernel/locking/mutex.c
+++ b/kernel/locking/mutex.c
@@ -170,8 +170,10 @@ static __always_inline bool __mutex_trylock_fast(struct mutex *lock)
unsigned long curr = (unsigned long)current;
unsigned long zero = 0UL;
- if (atomic_long_try_cmpxchg_acquire(&lock->owner, &zero, curr))
+ if (atomic_long_try_cmpxchg_acquire(&lock->owner, &zero, curr)) {
+ trace_android_vh_record_mutex_lock_starttime(current, jiffies);
return true;
+ }
return false;
}
@@ -748,6 +750,7 @@ static noinline void __sched __mutex_unlock_slowpath(struct mutex *lock, unsigne
*/
void __sched mutex_unlock(struct mutex *lock)
{
+ trace_android_vh_record_mutex_lock_starttime(current, 0);
#ifndef CONFIG_DEBUG_LOCK_ALLOC
if (__mutex_unlock_fast(lock))
return;
@@ -978,6 +981,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
lock_acquired(&lock->dep_map, ip);
if (ww_ctx)
ww_mutex_set_context_fastpath(ww, ww_ctx);
+ trace_android_vh_record_mutex_lock_starttime(current, jiffies);
preempt_enable();
return 0;
}
@@ -1097,6 +1101,7 @@ skip_wait:
spin_unlock(&lock->wait_lock);
preempt_enable();
+ trace_android_vh_record_mutex_lock_starttime(current, jiffies);
return 0;
err:
@@ -1433,8 +1438,10 @@ int __sched mutex_trylock(struct mutex *lock)
#endif
locked = __mutex_trylock(lock);
- if (locked)
+ if (locked) {
+ trace_android_vh_record_mutex_lock_starttime(current, jiffies);
mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_);
+ }
return locked;
}
diff --git a/kernel/locking/percpu-rwsem.c b/kernel/locking/percpu-rwsem.c
index b88eda4eb624..4a9e7aafd7f4 100644
--- a/kernel/locking/percpu-rwsem.c
+++ b/kernel/locking/percpu-rwsem.c
@@ -10,6 +10,21 @@
#include
#include
+#include
+
+/*
+ * trace_android_vh_record_percpu_rwsem_lock_starttime is called in
+ * include/linux/percpu-rwsem.h by including include/hooks/dtask.h, which
+ * will result to build-err. So we create
+ * func:_trace_android_vh_record_percpu_rwsem_lock_starttime for percpu-rwsem.h to call.
+ */
+void _trace_android_vh_record_percpu_rwsem_lock_starttime(struct task_struct *tsk,
+ unsigned long settime)
+{
+ trace_android_vh_record_percpu_rwsem_lock_starttime(tsk, settime);
+}
+EXPORT_SYMBOL_GPL(_trace_android_vh_record_percpu_rwsem_lock_starttime);
+
int __percpu_init_rwsem(struct percpu_rw_semaphore *sem,
const char *name, struct lock_class_key *key)
{
@@ -237,11 +252,13 @@ void percpu_down_write(struct percpu_rw_semaphore *sem)
/* Wait for all active readers to complete. */
rcuwait_wait_event(&sem->writer, readers_active_check(sem), TASK_UNINTERRUPTIBLE);
+ trace_android_vh_record_percpu_rwsem_lock_starttime(current, jiffies);
}
EXPORT_SYMBOL_GPL(percpu_down_write);
void percpu_up_write(struct percpu_rw_semaphore *sem)
{
+ trace_android_vh_record_percpu_rwsem_lock_starttime(current, 0);
rwsem_release(&sem->dep_map, _RET_IP_);
/*
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index 49c0fa173bde..419cc6639894 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -1471,6 +1471,7 @@ static inline void __rt_mutex_lock(struct rt_mutex *lock, unsigned int subclass)
mutex_acquire(&lock->dep_map, subclass, 0, _RET_IP_);
rt_mutex_fastlock(lock, TASK_UNINTERRUPTIBLE, rt_mutex_slowlock);
+ trace_android_vh_record_rtmutex_lock_starttime(current, jiffies);
}
#ifdef CONFIG_DEBUG_LOCK_ALLOC
@@ -1519,6 +1520,8 @@ int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock)
ret = rt_mutex_fastlock(lock, TASK_INTERRUPTIBLE, rt_mutex_slowlock);
if (ret)
mutex_release(&lock->dep_map, _RET_IP_);
+ else
+ trace_android_vh_record_rtmutex_lock_starttime(current, jiffies);
return ret;
}
@@ -1563,6 +1566,8 @@ rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout)
rt_mutex_slowlock);
if (ret)
mutex_release(&lock->dep_map, _RET_IP_);
+ else
+ trace_android_vh_record_rtmutex_lock_starttime(current, jiffies);
return ret;
}
@@ -1589,6 +1594,8 @@ int __sched rt_mutex_trylock(struct rt_mutex *lock)
ret = rt_mutex_fasttrylock(lock, rt_mutex_slowtrylock);
if (ret)
mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_);
+ else
+ trace_android_vh_record_rtmutex_lock_starttime(current, jiffies);
return ret;
}
@@ -1603,6 +1610,7 @@ void __sched rt_mutex_unlock(struct rt_mutex *lock)
{
mutex_release(&lock->dep_map, _RET_IP_);
rt_mutex_fastunlock(lock, rt_mutex_slowunlock);
+ trace_android_vh_record_rtmutex_lock_starttime(current, 0);
}
EXPORT_SYMBOL_GPL(rt_mutex_unlock);
diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
index a33e6a36dae9..d368d1a1af49 100644
--- a/kernel/locking/rwsem.c
+++ b/kernel/locking/rwsem.c
@@ -279,6 +279,10 @@ static inline bool rwsem_read_trylock(struct rw_semaphore *sem)
long cnt = atomic_long_add_return_acquire(RWSEM_READER_BIAS, &sem->count);
if (WARN_ON_ONCE(cnt < 0))
rwsem_set_nonspinnable(sem);
+
+ if ((cnt & RWSEM_READ_FAILED_MASK) == 0)
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
+
return !(cnt & RWSEM_READ_FAILED_MASK);
}
@@ -1021,9 +1025,11 @@ rwsem_down_read_slowpath(struct rw_semaphore *sem, int state)
raw_spin_unlock_irq(&sem->wait_lock);
wake_up_q(&wake_q);
}
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
return sem;
} else if (rwsem_reader_phase_trylock(sem, waiter.last_rowner)) {
/* rwsem_reader_phase_trylock() implies ACQUIRE on success */
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
return sem;
}
@@ -1104,6 +1110,7 @@ queue:
__set_current_state(TASK_RUNNING);
trace_android_vh_rwsem_read_wait_finish(sem);
lockevent_inc(rwsem_rlock);
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
return sem;
out_nolock:
@@ -1150,6 +1157,7 @@ rwsem_down_write_slowpath(struct rw_semaphore *sem, int state)
if (rwsem_can_spin_on_owner(sem, RWSEM_WR_NONSPINNABLE) &&
rwsem_optimistic_spin(sem, true)) {
/* rwsem_optimistic_spin() implies ACQUIRE on success */
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
return sem;
}
@@ -1280,7 +1288,7 @@ trylock_again:
rwsem_disable_reader_optspin(sem, disable_rspin);
raw_spin_unlock_irq(&sem->wait_lock);
lockevent_inc(rwsem_wlock);
-
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
return ret;
out_nolock:
@@ -1396,6 +1404,7 @@ static inline int __down_read_trylock(struct rw_semaphore *sem)
if (atomic_long_try_cmpxchg_acquire(&sem->count, &tmp,
tmp + RWSEM_READER_BIAS)) {
rwsem_set_reader_owned(sem);
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
return 1;
}
} while (!(tmp & RWSEM_READ_FAILED_MASK));
@@ -1410,10 +1419,12 @@ static inline void __down_write(struct rw_semaphore *sem)
long tmp = RWSEM_UNLOCKED_VALUE;
if (unlikely(!atomic_long_try_cmpxchg_acquire(&sem->count, &tmp,
- RWSEM_WRITER_LOCKED)))
+ RWSEM_WRITER_LOCKED))) {
rwsem_down_write_slowpath(sem, TASK_UNINTERRUPTIBLE);
- else
+ } else {
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
rwsem_set_owner(sem);
+ }
}
static inline int __down_write_killable(struct rw_semaphore *sem)
@@ -1425,6 +1436,7 @@ static inline int __down_write_killable(struct rw_semaphore *sem)
if (IS_ERR(rwsem_down_write_slowpath(sem, TASK_KILLABLE)))
return -EINTR;
} else {
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
rwsem_set_owner(sem);
}
return 0;
@@ -1440,6 +1452,7 @@ static inline int __down_write_trylock(struct rw_semaphore *sem)
if (atomic_long_try_cmpxchg_acquire(&sem->count, &tmp,
RWSEM_WRITER_LOCKED)) {
rwsem_set_owner(sem);
+ trace_android_vh_record_rwsem_lock_starttime(current, jiffies);
return true;
}
return false;
@@ -1455,6 +1468,7 @@ static inline void __up_read(struct rw_semaphore *sem)
DEBUG_RWSEMS_WARN_ON(sem->magic != sem, sem);
DEBUG_RWSEMS_WARN_ON(!is_rwsem_reader_owned(sem), sem);
+ trace_android_vh_record_rwsem_lock_starttime(current, 0);
rwsem_clear_reader_owned(sem);
tmp = atomic_long_add_return_release(-RWSEM_READER_BIAS, &sem->count);
DEBUG_RWSEMS_WARN_ON(tmp < 0, sem);
@@ -1481,6 +1495,7 @@ static inline void __up_write(struct rw_semaphore *sem)
DEBUG_RWSEMS_WARN_ON((rwsem_owner(sem) != current) &&
!rwsem_test_oflags(sem, RWSEM_NONSPINNABLE), sem);
+ trace_android_vh_record_rwsem_lock_starttime(current, 0);
rwsem_clear_owner(sem);
tmp = atomic_long_fetch_add_release(-RWSEM_WRITER_LOCKED, &sem->count);
if (unlikely(tmp & RWSEM_FLAG_WAITERS))
diff --git a/kernel/pid.c b/kernel/pid.c
index 468d04810b40..48babb1dd3e1 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -45,9 +45,6 @@
#include
#include
-#undef CREATE_TRACE_POINTS
-#include
-
struct pid init_struct_pid = {
.count = REFCOUNT_INIT(1),
.tasks = {
@@ -605,7 +602,6 @@ SYSCALL_DEFINE2(pidfd_open, pid_t, pid, unsigned int, flags)
else
fd = -EINVAL;
- trace_android_vh_pidfd_open(p);
put_pid(p);
return fd;
}
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 938e0091fc93..fc03f982eb6a 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -1193,6 +1193,7 @@ static inline u64 rq_clock_task(struct rq *rq)
return rq->clock_task;
}
+#ifdef CONFIG_SMP
DECLARE_PER_CPU(u64, clock_task_mult);
static inline u64 rq_clock_task_mult(struct rq *rq)
@@ -1202,6 +1203,12 @@ static inline u64 rq_clock_task_mult(struct rq *rq)
return per_cpu(clock_task_mult, cpu_of(rq));
}
+#else
+static inline u64 rq_clock_task_mult(struct rq *rq)
+{
+ return rq_clock_task(rq);
+}
+#endif
/**
* By default the decay is the default pelt decay period.
diff --git a/mm/memblock.c b/mm/memblock.c
index e0c166463ab4..3b559ce0869b 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -152,6 +152,7 @@ static __refdata struct memblock_type *memblock_memory = &memblock.memory;
} while (0)
static int memblock_debug __initdata_memblock;
+static bool memblock_nomap_remove __initdata_memblock;
static bool system_has_some_mirror __initdata_memblock = false;
static int memblock_can_resize __initdata_memblock;
static int memblock_memory_in_slab __initdata_memblock = 0;
@@ -1904,6 +1905,18 @@ static int __init early_memblock(char *p)
}
early_param("memblock", early_memblock);
+static int __init early_memblock_nomap(char *str)
+{
+ kstrtobool(str, &memblock_nomap_remove);
+ return 0;
+}
+early_param("android12_only.will_be_removed_soon.memblock_nomap_remove", early_memblock_nomap);
+
+bool __init memblock_is_nomap_remove(void)
+{
+ return memblock_nomap_remove;
+}
+
static void __init __free_pages_memory(unsigned long start, unsigned long end)
{
int order;
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 0f82957c4de7..e3a885f6a1b5 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1490,12 +1490,11 @@ free_it:
* Is there need to periodically free_page_list? It would
* appear not as the counts should be low
*/
+ trace_android_vh_page_trylock_clear(page);
if (unlikely(PageTransHuge(page)))
destroy_compound_page(page);
- else {
- trace_android_vh_page_trylock_clear(page);
+ else
list_add(&page->lru, &free_pages);
- }
continue;
activate_locked_split: