mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-19 07:39:54 +02:00
Merge branch 'android15-6.6' into android15-6.6-lts
Sync up with the android15-6.6 branch to fix the TH build due to recent required ABI symbol additions there. Included in here are the following commits: *ee2542f0e5
ANDROID: ABI: Update pixel symbol list *9a46e8ecf7
ANDROID: mm: add vh for kcompactd_cpu_online() *dd7de90d0e
ANDROID: sched: Add android_vh_set_task_comm *e0b348c4b8
Revert "UPSTREAM: Revert "f2fs: use flush command instead of FUA for zoned device"" *d5c1618b74
UPSTREAM: usb: gadget: uvc: queue pump work in uvcg_video_enable() *466f71925c
UPSTREAM: usb: xhci: Check for xhci->interrupters being allocated in xhci_mem_clearup() *90248f12cc
UPSTREAM: cachestat: do not flush stats in recency check *3e6bc54909
UPSTREAM: mm: shmem: fix getting incorrect lruvec when replacing a shmem folio *00079e2bce
UPSTREAM: wifi: cfg80211: validate HE operation element parsing *af3fbe448f
UPSTREAM: riscv: cpufeature: Fix extension subset checking *412ee5bcbf
UPSTREAM: memcg: fix data-race KCSAN bug in rstats *6134f98d1e
UPSTREAM: PM: EM: fix wrong utilization estimation in em_cpu_energy() *600d8fb230
UPSTREAM: exfat: fix timing of synchronizing bitmap and inode *11a6be14ae
UPSTREAM: firmware: arm_ffa: Fix the partition ID check in ffa_notification_info_get() *05181e576f
UPSTREAM: mm/damon/core: check apply interval in damon_do_apply_schemes() *49bb2617e1
UPSTREAM: firmware: arm_ffa: Check xa_load() return value *1c8bc63929
UPSTREAM: firmware: arm_ffa: Add missing rwlock_init() for the driver partition *18bbf1be19
UPSTREAM: firmware: arm_ffa: Add missing rwlock_init() in ffa_setup_partitions() *7f8ed76fc2
UPSTREAM: mm/damon/sysfs-schemes: add timeout for update_schemes_tried_regions *ba95736c5b
BACKPORT: mm/damon/core: copy nr_accesses when splitting region *a44df1cfbb
UPSTREAM: firmware: arm_ffa: Fix ffa_notification_info_get() IDs handling *7c593903ee
UPSTREAM: exfat: fix ctime is not updated *178f47033b
UPSTREAM: exfat: fix setting uninitialized time to ctime/atime *bb51ec9159
ANDROID: GKI: add symbols to symbol list *cc5fad9390
ANDROID: vendor_hooks: add hook in alloc_workqueue() *2fd50de384
ANDROID: Update the ABI symbol list and stg Change-Id: Idfeb4d556fcda753c38b23c04361132d03f62c1b Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
eb7cf642ed
|
@ -315500,6 +315500,11 @@ function {
|
||||||
parameter_id: 0x3fa672fd
|
parameter_id: 0x3fa672fd
|
||||||
parameter_id: 0x0490bb4a
|
parameter_id: 0x0490bb4a
|
||||||
}
|
}
|
||||||
|
function {
|
||||||
|
id: 0x36c501fb
|
||||||
|
return_type_id: 0x33756485
|
||||||
|
parameter_id: 0x1da732a0
|
||||||
|
}
|
||||||
function {
|
function {
|
||||||
id: 0x36cad8bb
|
id: 0x36cad8bb
|
||||||
return_type_id: 0x23f09c34
|
return_type_id: 0x23f09c34
|
||||||
|
@ -337538,6 +337543,14 @@ function {
|
||||||
parameter_id: 0x7be80061
|
parameter_id: 0x7be80061
|
||||||
parameter_id: 0x4585663f
|
parameter_id: 0x4585663f
|
||||||
}
|
}
|
||||||
|
function {
|
||||||
|
id: 0x9bca672a
|
||||||
|
return_type_id: 0x6720d32f
|
||||||
|
parameter_id: 0x18bd6530
|
||||||
|
parameter_id: 0x18db1c77
|
||||||
|
parameter_id: 0x1bf16028
|
||||||
|
parameter_id: 0x13580d6c
|
||||||
|
}
|
||||||
function {
|
function {
|
||||||
id: 0x9bca793f
|
id: 0x9bca793f
|
||||||
return_type_id: 0x6720d32f
|
return_type_id: 0x6720d32f
|
||||||
|
@ -354017,6 +354030,15 @@ elf_symbol {
|
||||||
type_id: 0x9bc8472e
|
type_id: 0x9bc8472e
|
||||||
full_name: "__traceiter_android_rvh_alloc_and_link_pwqs"
|
full_name: "__traceiter_android_rvh_alloc_and_link_pwqs"
|
||||||
}
|
}
|
||||||
|
elf_symbol {
|
||||||
|
id: 0xef79dd4d
|
||||||
|
name: "__traceiter_android_rvh_alloc_workqueue"
|
||||||
|
is_defined: true
|
||||||
|
symbol_type: FUNCTION
|
||||||
|
crc: 0xc0d90a3b
|
||||||
|
type_id: 0x9bca672a
|
||||||
|
full_name: "__traceiter_android_rvh_alloc_workqueue"
|
||||||
|
}
|
||||||
elf_symbol {
|
elf_symbol {
|
||||||
id: 0x0b48afa1
|
id: 0x0b48afa1
|
||||||
name: "__traceiter_android_rvh_arm64_serror_panic"
|
name: "__traceiter_android_rvh_arm64_serror_panic"
|
||||||
|
@ -357293,6 +357315,15 @@ elf_symbol {
|
||||||
type_id: 0x9b7ba7c5
|
type_id: 0x9b7ba7c5
|
||||||
full_name: "__traceiter_android_vh_mm_direct_reclaim_exit"
|
full_name: "__traceiter_android_vh_mm_direct_reclaim_exit"
|
||||||
}
|
}
|
||||||
|
elf_symbol {
|
||||||
|
id: 0x6f5c8275
|
||||||
|
name: "__traceiter_android_vh_mm_kcompactd_cpu_online"
|
||||||
|
is_defined: true
|
||||||
|
symbol_type: FUNCTION
|
||||||
|
crc: 0x0e957ed4
|
||||||
|
type_id: 0x9a33392f
|
||||||
|
full_name: "__traceiter_android_vh_mm_kcompactd_cpu_online"
|
||||||
|
}
|
||||||
elf_symbol {
|
elf_symbol {
|
||||||
id: 0xf182fb15
|
id: 0xf182fb15
|
||||||
name: "__traceiter_android_vh_mm_may_oom_exit"
|
name: "__traceiter_android_vh_mm_may_oom_exit"
|
||||||
|
@ -358256,6 +358287,15 @@ elf_symbol {
|
||||||
type_id: 0x9b50c8eb
|
type_id: 0x9b50c8eb
|
||||||
full_name: "__traceiter_android_vh_sd_setup_unmap_multi_segment"
|
full_name: "__traceiter_android_vh_sd_setup_unmap_multi_segment"
|
||||||
}
|
}
|
||||||
|
elf_symbol {
|
||||||
|
id: 0x0b48ad7a
|
||||||
|
name: "__traceiter_android_vh_set_task_comm"
|
||||||
|
is_defined: true
|
||||||
|
symbol_type: FUNCTION
|
||||||
|
crc: 0x01b7877e
|
||||||
|
type_id: 0x9bdbdcc4
|
||||||
|
full_name: "__traceiter_android_vh_set_task_comm"
|
||||||
|
}
|
||||||
elf_symbol {
|
elf_symbol {
|
||||||
id: 0x874fcdb2
|
id: 0x874fcdb2
|
||||||
name: "__traceiter_android_vh_set_tsk_need_resched_lazy"
|
name: "__traceiter_android_vh_set_tsk_need_resched_lazy"
|
||||||
|
@ -359903,6 +359943,15 @@ elf_symbol {
|
||||||
type_id: 0x18ccbd2c
|
type_id: 0x18ccbd2c
|
||||||
full_name: "__tracepoint_android_rvh_alloc_and_link_pwqs"
|
full_name: "__tracepoint_android_rvh_alloc_and_link_pwqs"
|
||||||
}
|
}
|
||||||
|
elf_symbol {
|
||||||
|
id: 0x0b219d2b
|
||||||
|
name: "__tracepoint_android_rvh_alloc_workqueue"
|
||||||
|
is_defined: true
|
||||||
|
symbol_type: OBJECT
|
||||||
|
crc: 0xbae7d4d4
|
||||||
|
type_id: 0x18ccbd2c
|
||||||
|
full_name: "__tracepoint_android_rvh_alloc_workqueue"
|
||||||
|
}
|
||||||
elf_symbol {
|
elf_symbol {
|
||||||
id: 0x748c1fd7
|
id: 0x748c1fd7
|
||||||
name: "__tracepoint_android_rvh_arm64_serror_panic"
|
name: "__tracepoint_android_rvh_arm64_serror_panic"
|
||||||
|
@ -363179,6 +363228,15 @@ elf_symbol {
|
||||||
type_id: 0x18ccbd2c
|
type_id: 0x18ccbd2c
|
||||||
full_name: "__tracepoint_android_vh_mm_direct_reclaim_exit"
|
full_name: "__tracepoint_android_vh_mm_direct_reclaim_exit"
|
||||||
}
|
}
|
||||||
|
elf_symbol {
|
||||||
|
id: 0x0f593caf
|
||||||
|
name: "__tracepoint_android_vh_mm_kcompactd_cpu_online"
|
||||||
|
is_defined: true
|
||||||
|
symbol_type: OBJECT
|
||||||
|
crc: 0x7258a4a5
|
||||||
|
type_id: 0x18ccbd2c
|
||||||
|
full_name: "__tracepoint_android_vh_mm_kcompactd_cpu_online"
|
||||||
|
}
|
||||||
elf_symbol {
|
elf_symbol {
|
||||||
id: 0x47bcd15f
|
id: 0x47bcd15f
|
||||||
name: "__tracepoint_android_vh_mm_may_oom_exit"
|
name: "__tracepoint_android_vh_mm_may_oom_exit"
|
||||||
|
@ -364142,6 +364200,15 @@ elf_symbol {
|
||||||
type_id: 0x18ccbd2c
|
type_id: 0x18ccbd2c
|
||||||
full_name: "__tracepoint_android_vh_sd_setup_unmap_multi_segment"
|
full_name: "__tracepoint_android_vh_sd_setup_unmap_multi_segment"
|
||||||
}
|
}
|
||||||
|
elf_symbol {
|
||||||
|
id: 0x1f07c260
|
||||||
|
name: "__tracepoint_android_vh_set_task_comm"
|
||||||
|
is_defined: true
|
||||||
|
symbol_type: OBJECT
|
||||||
|
crc: 0xc50d6787
|
||||||
|
type_id: 0x18ccbd2c
|
||||||
|
full_name: "__tracepoint_android_vh_set_task_comm"
|
||||||
|
}
|
||||||
elf_symbol {
|
elf_symbol {
|
||||||
id: 0xb6de2d88
|
id: 0xb6de2d88
|
||||||
name: "__tracepoint_android_vh_set_tsk_need_resched_lazy"
|
name: "__tracepoint_android_vh_set_tsk_need_resched_lazy"
|
||||||
|
@ -423781,6 +423848,15 @@ elf_symbol {
|
||||||
type_id: 0x1fc98171
|
type_id: 0x1fc98171
|
||||||
full_name: "vm_unmap_ram"
|
full_name: "vm_unmap_ram"
|
||||||
}
|
}
|
||||||
|
elf_symbol {
|
||||||
|
id: 0xbbf42090
|
||||||
|
name: "vm_unmapped_area"
|
||||||
|
is_defined: true
|
||||||
|
symbol_type: FUNCTION
|
||||||
|
crc: 0x064b9739
|
||||||
|
type_id: 0x36c501fb
|
||||||
|
full_name: "vm_unmapped_area"
|
||||||
|
}
|
||||||
elf_symbol {
|
elf_symbol {
|
||||||
id: 0xca7f93d5
|
id: 0xca7f93d5
|
||||||
name: "vm_zone_stat"
|
name: "vm_zone_stat"
|
||||||
|
@ -425802,6 +425878,7 @@ interface {
|
||||||
symbol_id: 0xb42422d5
|
symbol_id: 0xb42422d5
|
||||||
symbol_id: 0xb3d70eab
|
symbol_id: 0xb3d70eab
|
||||||
symbol_id: 0x9ca1a40f
|
symbol_id: 0x9ca1a40f
|
||||||
|
symbol_id: 0xef79dd4d
|
||||||
symbol_id: 0x0b48afa1
|
symbol_id: 0x0b48afa1
|
||||||
symbol_id: 0xa927338c
|
symbol_id: 0xa927338c
|
||||||
symbol_id: 0x6d4cc1a2
|
symbol_id: 0x6d4cc1a2
|
||||||
|
@ -426166,6 +426243,7 @@ interface {
|
||||||
symbol_id: 0x83742db6
|
symbol_id: 0x83742db6
|
||||||
symbol_id: 0x9f58159a
|
symbol_id: 0x9f58159a
|
||||||
symbol_id: 0x29c67d40
|
symbol_id: 0x29c67d40
|
||||||
|
symbol_id: 0x6f5c8275
|
||||||
symbol_id: 0xf182fb15
|
symbol_id: 0xf182fb15
|
||||||
symbol_id: 0xe44dacb1
|
symbol_id: 0xe44dacb1
|
||||||
symbol_id: 0xab76d6cc
|
symbol_id: 0xab76d6cc
|
||||||
|
@ -426273,6 +426351,7 @@ interface {
|
||||||
symbol_id: 0xb841c45e
|
symbol_id: 0xb841c45e
|
||||||
symbol_id: 0xe3b923c8
|
symbol_id: 0xe3b923c8
|
||||||
symbol_id: 0x8a2c7656
|
symbol_id: 0x8a2c7656
|
||||||
|
symbol_id: 0x0b48ad7a
|
||||||
symbol_id: 0x874fcdb2
|
symbol_id: 0x874fcdb2
|
||||||
symbol_id: 0xaa3f6a65
|
symbol_id: 0xaa3f6a65
|
||||||
symbol_id: 0xa2fe718f
|
symbol_id: 0xa2fe718f
|
||||||
|
@ -426456,6 +426535,7 @@ interface {
|
||||||
symbol_id: 0x4b7a8fd7
|
symbol_id: 0x4b7a8fd7
|
||||||
symbol_id: 0xcd36f539
|
symbol_id: 0xcd36f539
|
||||||
symbol_id: 0x33f0c37d
|
symbol_id: 0x33f0c37d
|
||||||
|
symbol_id: 0x0b219d2b
|
||||||
symbol_id: 0x748c1fd7
|
symbol_id: 0x748c1fd7
|
||||||
symbol_id: 0xcb42202e
|
symbol_id: 0xcb42202e
|
||||||
symbol_id: 0xc9400cec
|
symbol_id: 0xc9400cec
|
||||||
|
@ -426820,6 +426900,7 @@ interface {
|
||||||
symbol_id: 0x420ef2d0
|
symbol_id: 0x420ef2d0
|
||||||
symbol_id: 0xd333a65c
|
symbol_id: 0xd333a65c
|
||||||
symbol_id: 0xddcff44a
|
symbol_id: 0xddcff44a
|
||||||
|
symbol_id: 0x0f593caf
|
||||||
symbol_id: 0x47bcd15f
|
symbol_id: 0x47bcd15f
|
||||||
symbol_id: 0xb6da564f
|
symbol_id: 0xb6da564f
|
||||||
symbol_id: 0x0403b7c6
|
symbol_id: 0x0403b7c6
|
||||||
|
@ -426927,6 +427008,7 @@ interface {
|
||||||
symbol_id: 0xff2bccb8
|
symbol_id: 0xff2bccb8
|
||||||
symbol_id: 0x5d163d02
|
symbol_id: 0x5d163d02
|
||||||
symbol_id: 0x5294a07c
|
symbol_id: 0x5294a07c
|
||||||
|
symbol_id: 0x1f07c260
|
||||||
symbol_id: 0xb6de2d88
|
symbol_id: 0xb6de2d88
|
||||||
symbol_id: 0xd7ceb15f
|
symbol_id: 0xd7ceb15f
|
||||||
symbol_id: 0x923147c1
|
symbol_id: 0x923147c1
|
||||||
|
@ -433543,6 +433625,7 @@ interface {
|
||||||
symbol_id: 0x2570ceae
|
symbol_id: 0x2570ceae
|
||||||
symbol_id: 0xacc76406
|
symbol_id: 0xacc76406
|
||||||
symbol_id: 0xef2c49d1
|
symbol_id: 0xef2c49d1
|
||||||
|
symbol_id: 0xbbf42090
|
||||||
symbol_id: 0xca7f93d5
|
symbol_id: 0xca7f93d5
|
||||||
symbol_id: 0x3c915fdb
|
symbol_id: 0x3c915fdb
|
||||||
symbol_id: 0x8ffd0533
|
symbol_id: 0x8ffd0533
|
||||||
|
|
|
@ -199,6 +199,7 @@
|
||||||
__traceiter_android_vh_alloc_oem_binder_struct
|
__traceiter_android_vh_alloc_oem_binder_struct
|
||||||
__traceiter_android_vh_alloc_pages_failure_bypass
|
__traceiter_android_vh_alloc_pages_failure_bypass
|
||||||
__traceiter_android_vh_alloc_pages_reclaim_bypass
|
__traceiter_android_vh_alloc_pages_reclaim_bypass
|
||||||
|
__traceiter_android_rvh_alloc_workqueue
|
||||||
__traceiter_android_vh_alter_mutex_list_add
|
__traceiter_android_vh_alter_mutex_list_add
|
||||||
__traceiter_android_vh_binder_alloc_new_buf_locked
|
__traceiter_android_vh_binder_alloc_new_buf_locked
|
||||||
__traceiter_android_vh_binder_buffer_release
|
__traceiter_android_vh_binder_buffer_release
|
||||||
|
@ -345,6 +346,7 @@
|
||||||
__tracepoint_android_vh_alloc_oem_binder_struct
|
__tracepoint_android_vh_alloc_oem_binder_struct
|
||||||
__tracepoint_android_vh_alloc_pages_failure_bypass
|
__tracepoint_android_vh_alloc_pages_failure_bypass
|
||||||
__tracepoint_android_vh_alloc_pages_reclaim_bypass
|
__tracepoint_android_vh_alloc_pages_reclaim_bypass
|
||||||
|
__tracepoint_android_rvh_alloc_workqueue
|
||||||
__tracepoint_android_vh_alter_mutex_list_add
|
__tracepoint_android_vh_alter_mutex_list_add
|
||||||
__tracepoint_android_vh_binder_alloc_new_buf_locked
|
__tracepoint_android_vh_binder_alloc_new_buf_locked
|
||||||
__tracepoint_android_vh_binder_buffer_release
|
__tracepoint_android_vh_binder_buffer_release
|
||||||
|
|
|
@ -124,6 +124,7 @@
|
||||||
class_unregister
|
class_unregister
|
||||||
cleancache_register_ops
|
cleancache_register_ops
|
||||||
clear_page
|
clear_page
|
||||||
|
__ClearPageMovable
|
||||||
clk_disable
|
clk_disable
|
||||||
clk_enable
|
clk_enable
|
||||||
clk_get
|
clk_get
|
||||||
|
@ -559,6 +560,7 @@
|
||||||
down_read_trylock
|
down_read_trylock
|
||||||
down_trylock
|
down_trylock
|
||||||
down_write
|
down_write
|
||||||
|
d_path
|
||||||
dput
|
dput
|
||||||
drain_workqueue
|
drain_workqueue
|
||||||
driver_for_each_device
|
driver_for_each_device
|
||||||
|
@ -826,11 +828,13 @@
|
||||||
find_pid_ns
|
find_pid_ns
|
||||||
find_task_by_vpid
|
find_task_by_vpid
|
||||||
find_vma_intersection
|
find_vma_intersection
|
||||||
|
find_vpid
|
||||||
finish_wait
|
finish_wait
|
||||||
firmware_request_nowarn
|
firmware_request_nowarn
|
||||||
flush_delayed_work
|
flush_delayed_work
|
||||||
flush_work
|
flush_work
|
||||||
__flush_workqueue
|
__flush_workqueue
|
||||||
|
__folio_lock
|
||||||
__folio_put
|
__folio_put
|
||||||
fortify_panic
|
fortify_panic
|
||||||
fput
|
fput
|
||||||
|
@ -899,6 +903,7 @@
|
||||||
get_sg_io_hdr
|
get_sg_io_hdr
|
||||||
__get_task_comm
|
__get_task_comm
|
||||||
get_task_cred
|
get_task_cred
|
||||||
|
get_task_mm
|
||||||
get_thermal_instance
|
get_thermal_instance
|
||||||
get_unused_fd_flags
|
get_unused_fd_flags
|
||||||
get_user_pages
|
get_user_pages
|
||||||
|
@ -1276,6 +1281,7 @@
|
||||||
loops_per_jiffy
|
loops_per_jiffy
|
||||||
mac_pton
|
mac_pton
|
||||||
mas_empty_area_rev
|
mas_empty_area_rev
|
||||||
|
mas_find
|
||||||
max_load_balance_interval
|
max_load_balance_interval
|
||||||
mbox_chan_received_data
|
mbox_chan_received_data
|
||||||
mbox_controller_register
|
mbox_controller_register
|
||||||
|
@ -1329,6 +1335,7 @@
|
||||||
__mmap_lock_do_trace_released
|
__mmap_lock_do_trace_released
|
||||||
__mmap_lock_do_trace_start_locking
|
__mmap_lock_do_trace_start_locking
|
||||||
__mmdrop
|
__mmdrop
|
||||||
|
mmput
|
||||||
mod_delayed_work_on
|
mod_delayed_work_on
|
||||||
mod_timer
|
mod_timer
|
||||||
__module_get
|
__module_get
|
||||||
|
@ -1493,6 +1500,7 @@
|
||||||
param_array_ops
|
param_array_ops
|
||||||
param_get_int
|
param_get_int
|
||||||
param_get_string
|
param_get_string
|
||||||
|
param_get_uint
|
||||||
param_ops_bool
|
param_ops_bool
|
||||||
param_ops_byte
|
param_ops_byte
|
||||||
param_ops_charp
|
param_ops_charp
|
||||||
|
@ -1503,6 +1511,7 @@
|
||||||
param_ops_ulong
|
param_ops_ulong
|
||||||
param_set_copystring
|
param_set_copystring
|
||||||
param_set_int
|
param_set_int
|
||||||
|
param_set_uint_minmax
|
||||||
pci_alloc_irq_vectors
|
pci_alloc_irq_vectors
|
||||||
pci_alloc_irq_vectors_affinity
|
pci_alloc_irq_vectors_affinity
|
||||||
pci_assign_resource
|
pci_assign_resource
|
||||||
|
@ -1802,6 +1811,7 @@
|
||||||
regulator_set_mode
|
regulator_set_mode
|
||||||
regulator_set_voltage
|
regulator_set_voltage
|
||||||
regulator_set_voltage_sel_regmap
|
regulator_set_voltage_sel_regmap
|
||||||
|
regulator_sync_voltage
|
||||||
regulator_unregister
|
regulator_unregister
|
||||||
release_firmware
|
release_firmware
|
||||||
__release_region
|
__release_region
|
||||||
|
@ -1903,6 +1913,7 @@
|
||||||
set_normalized_timespec64
|
set_normalized_timespec64
|
||||||
set_page_dirty
|
set_page_dirty
|
||||||
set_page_dirty_lock
|
set_page_dirty_lock
|
||||||
|
__SetPageMovable
|
||||||
set_task_cpu
|
set_task_cpu
|
||||||
set_user_nice
|
set_user_nice
|
||||||
sg_alloc_table
|
sg_alloc_table
|
||||||
|
@ -2243,6 +2254,7 @@
|
||||||
__traceiter_android_rvh_set_task_cpu
|
__traceiter_android_rvh_set_task_cpu
|
||||||
__traceiter_android_rvh_set_user_nice_locked
|
__traceiter_android_rvh_set_user_nice_locked
|
||||||
__traceiter_android_rvh_tick_entry
|
__traceiter_android_rvh_tick_entry
|
||||||
|
__traceiter_android_rvh_try_to_wake_up_success
|
||||||
__traceiter_android_rvh_uclamp_eff_get
|
__traceiter_android_rvh_uclamp_eff_get
|
||||||
__traceiter_android_rvh_ufs_complete_init
|
__traceiter_android_rvh_ufs_complete_init
|
||||||
__traceiter_android_rvh_ufs_reprogram_all_keys
|
__traceiter_android_rvh_ufs_reprogram_all_keys
|
||||||
|
@ -2262,11 +2274,13 @@
|
||||||
__traceiter_android_vh_early_resume_begin
|
__traceiter_android_vh_early_resume_begin
|
||||||
__traceiter_android_vh_enable_thermal_genl_check
|
__traceiter_android_vh_enable_thermal_genl_check
|
||||||
__traceiter_android_vh_ipi_stop
|
__traceiter_android_vh_ipi_stop
|
||||||
|
__traceiter_android_vh_mm_kcompactd_cpu_online
|
||||||
__traceiter_android_vh_prio_inheritance
|
__traceiter_android_vh_prio_inheritance
|
||||||
__traceiter_android_vh_prio_restore
|
__traceiter_android_vh_prio_restore
|
||||||
__traceiter_android_vh_resume_end
|
__traceiter_android_vh_resume_end
|
||||||
__traceiter_android_vh_scheduler_tick
|
__traceiter_android_vh_scheduler_tick
|
||||||
__traceiter_android_vh_setscheduler_uclamp
|
__traceiter_android_vh_setscheduler_uclamp
|
||||||
|
__traceiter_android_vh_set_task_comm
|
||||||
__traceiter_android_vh_si_meminfo_adjust
|
__traceiter_android_vh_si_meminfo_adjust
|
||||||
__traceiter_android_vh_sysrq_crash
|
__traceiter_android_vh_sysrq_crash
|
||||||
__traceiter_android_vh_uclamp_validate
|
__traceiter_android_vh_uclamp_validate
|
||||||
|
@ -2340,6 +2354,7 @@
|
||||||
__tracepoint_android_rvh_set_task_cpu
|
__tracepoint_android_rvh_set_task_cpu
|
||||||
__tracepoint_android_rvh_set_user_nice_locked
|
__tracepoint_android_rvh_set_user_nice_locked
|
||||||
__tracepoint_android_rvh_tick_entry
|
__tracepoint_android_rvh_tick_entry
|
||||||
|
__tracepoint_android_rvh_try_to_wake_up_success
|
||||||
__tracepoint_android_rvh_uclamp_eff_get
|
__tracepoint_android_rvh_uclamp_eff_get
|
||||||
__tracepoint_android_rvh_ufs_complete_init
|
__tracepoint_android_rvh_ufs_complete_init
|
||||||
__tracepoint_android_rvh_ufs_reprogram_all_keys
|
__tracepoint_android_rvh_ufs_reprogram_all_keys
|
||||||
|
@ -2359,11 +2374,13 @@
|
||||||
__tracepoint_android_vh_early_resume_begin
|
__tracepoint_android_vh_early_resume_begin
|
||||||
__tracepoint_android_vh_enable_thermal_genl_check
|
__tracepoint_android_vh_enable_thermal_genl_check
|
||||||
__tracepoint_android_vh_ipi_stop
|
__tracepoint_android_vh_ipi_stop
|
||||||
|
__tracepoint_android_vh_mm_kcompactd_cpu_online
|
||||||
__tracepoint_android_vh_prio_inheritance
|
__tracepoint_android_vh_prio_inheritance
|
||||||
__tracepoint_android_vh_prio_restore
|
__tracepoint_android_vh_prio_restore
|
||||||
__tracepoint_android_vh_resume_end
|
__tracepoint_android_vh_resume_end
|
||||||
__tracepoint_android_vh_scheduler_tick
|
__tracepoint_android_vh_scheduler_tick
|
||||||
__tracepoint_android_vh_setscheduler_uclamp
|
__tracepoint_android_vh_setscheduler_uclamp
|
||||||
|
__tracepoint_android_vh_set_task_comm
|
||||||
__tracepoint_android_vh_si_meminfo_adjust
|
__tracepoint_android_vh_si_meminfo_adjust
|
||||||
__tracepoint_android_vh_sysrq_crash
|
__tracepoint_android_vh_sysrq_crash
|
||||||
__tracepoint_android_vh_uclamp_validate
|
__tracepoint_android_vh_uclamp_validate
|
||||||
|
@ -2454,6 +2471,7 @@
|
||||||
ufshcd_remove
|
ufshcd_remove
|
||||||
ufshcd_system_resume
|
ufshcd_system_resume
|
||||||
ufshcd_system_suspend
|
ufshcd_system_suspend
|
||||||
|
unlock_page
|
||||||
unmap_mapping_range
|
unmap_mapping_range
|
||||||
unpin_user_page
|
unpin_user_page
|
||||||
__unregister_chrdev
|
__unregister_chrdev
|
||||||
|
@ -2599,6 +2617,7 @@
|
||||||
vmalloc_user
|
vmalloc_user
|
||||||
vmap
|
vmap
|
||||||
vmf_insert_pfn_prot
|
vmf_insert_pfn_prot
|
||||||
|
vm_unmapped_area
|
||||||
vprintk
|
vprintk
|
||||||
vprintk_emit
|
vprintk_emit
|
||||||
vring_del_virtqueue
|
vring_del_virtqueue
|
||||||
|
|
|
@ -591,7 +591,7 @@ static int __init riscv_fill_hwcap_from_ext_list(unsigned long *isa2hwcap)
|
||||||
|
|
||||||
if (ext->subset_ext_size) {
|
if (ext->subset_ext_size) {
|
||||||
for (int j = 0; j < ext->subset_ext_size; j++) {
|
for (int j = 0; j < ext->subset_ext_size; j++) {
|
||||||
if (riscv_isa_extension_check(ext->subset_ext_ids[i]))
|
if (riscv_isa_extension_check(ext->subset_ext_ids[j]))
|
||||||
set_bit(ext->subset_ext_ids[j], isainfo->isa);
|
set_bit(ext->subset_ext_ids[j], isainfo->isa);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -319,6 +319,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_check);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freeze_whether_wake);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freeze_whether_wake);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_percpu_rwsem_wq_add);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_percpu_rwsem_wq_add);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_oem_binder_struct);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_oem_binder_struct);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_alloc_workqueue);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_transaction_received);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_transaction_received);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_oem_binder_struct);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_oem_binder_struct);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_special_task);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_special_task);
|
||||||
|
@ -381,6 +382,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_exit);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_try_to_compact_exit);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_try_to_compact_exit);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_direct_reclaim_enter);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_direct_reclaim_enter);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_direct_reclaim_exit);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_direct_reclaim_exit);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_kcompactd_cpu_online);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_may_oom_exit);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_may_oom_exit);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmscan_kswapd_done);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmscan_kswapd_done);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_folio_list);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_folio_list);
|
||||||
|
|
|
@ -732,6 +732,11 @@ static void __do_sched_recv_cb(u16 part_id, u16 vcpu, bool is_per_vcpu)
|
||||||
void *cb_data;
|
void *cb_data;
|
||||||
|
|
||||||
partition = xa_load(&drv_info->partition_info, part_id);
|
partition = xa_load(&drv_info->partition_info, part_id);
|
||||||
|
if (!partition) {
|
||||||
|
pr_err("%s: Invalid partition ID 0x%x\n", __func__, part_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
read_lock(&partition->rw_lock);
|
read_lock(&partition->rw_lock);
|
||||||
callback = partition->callback;
|
callback = partition->callback;
|
||||||
cb_data = partition->cb_data;
|
cb_data = partition->cb_data;
|
||||||
|
@ -782,9 +787,9 @@ static void ffa_notification_info_get(void)
|
||||||
if (ids_processed >= max_ids - 1)
|
if (ids_processed >= max_ids - 1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
part_id = packed_id_list[++ids_processed];
|
part_id = packed_id_list[ids_processed++];
|
||||||
|
|
||||||
if (!ids_count[list]) { /* Global Notification */
|
if (ids_count[list] == 1) { /* Global Notification */
|
||||||
__do_sched_recv_cb(part_id, 0, false);
|
__do_sched_recv_cb(part_id, 0, false);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -794,7 +799,7 @@ static void ffa_notification_info_get(void)
|
||||||
if (ids_processed >= max_ids - 1)
|
if (ids_processed >= max_ids - 1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
vcpu_id = packed_id_list[++ids_processed];
|
vcpu_id = packed_id_list[ids_processed++];
|
||||||
|
|
||||||
__do_sched_recv_cb(part_id, vcpu_id, true);
|
__do_sched_recv_cb(part_id, vcpu_id, true);
|
||||||
}
|
}
|
||||||
|
@ -909,6 +914,11 @@ static int ffa_sched_recv_cb_update(u16 part_id, ffa_sched_recv_cb callback,
|
||||||
bool cb_valid;
|
bool cb_valid;
|
||||||
|
|
||||||
partition = xa_load(&drv_info->partition_info, part_id);
|
partition = xa_load(&drv_info->partition_info, part_id);
|
||||||
|
if (!partition) {
|
||||||
|
pr_err("%s: Invalid partition ID 0x%x\n", __func__, part_id);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
write_lock(&partition->rw_lock);
|
write_lock(&partition->rw_lock);
|
||||||
|
|
||||||
cb_valid = !!partition->callback;
|
cb_valid = !!partition->callback;
|
||||||
|
@ -1211,6 +1221,7 @@ static void ffa_setup_partitions(void)
|
||||||
ffa_device_unregister(ffa_dev);
|
ffa_device_unregister(ffa_dev);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
rwlock_init(&info->rw_lock);
|
||||||
xa_store(&drv_info->partition_info, tpbuf->id, info, GFP_KERNEL);
|
xa_store(&drv_info->partition_info, tpbuf->id, info, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
drv_info->partition_count = count;
|
drv_info->partition_count = count;
|
||||||
|
@ -1221,6 +1232,7 @@ static void ffa_setup_partitions(void)
|
||||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||||
if (!info)
|
if (!info)
|
||||||
return;
|
return;
|
||||||
|
rwlock_init(&info->rw_lock);
|
||||||
xa_store(&drv_info->partition_info, drv_info->vm_id, info, GFP_KERNEL);
|
xa_store(&drv_info->partition_info, drv_info->vm_id, info, GFP_KERNEL);
|
||||||
drv_info->partition_count++;
|
drv_info->partition_count++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -759,6 +759,7 @@ int uvcg_video_enable(struct uvc_video *video)
|
||||||
video->req_int_count = 0;
|
video->req_int_count = 0;
|
||||||
|
|
||||||
uvc_video_ep_queue_initial_requests(video);
|
uvc_video_ep_queue_initial_requests(video);
|
||||||
|
queue_work(video->async_wq, &video->pump);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1893,7 +1893,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci)
|
||||||
|
|
||||||
cancel_delayed_work_sync(&xhci->cmd_timer);
|
cancel_delayed_work_sync(&xhci->cmd_timer);
|
||||||
|
|
||||||
for (i = 0; i < xhci->max_interrupters; i++) {
|
for (i = 0; xhci->interrupters && i < xhci->max_interrupters; i++) {
|
||||||
if (xhci->interrupters[i]) {
|
if (xhci->interrupters[i]) {
|
||||||
xhci_remove_interrupter(xhci, xhci->interrupters[i]);
|
xhci_remove_interrupter(xhci, xhci->interrupters[i]);
|
||||||
xhci_free_interrupter(xhci, xhci->interrupters[i]);
|
xhci_free_interrupter(xhci, xhci->interrupters[i]);
|
||||||
|
|
|
@ -1236,6 +1236,7 @@ void __set_task_comm(struct task_struct *tsk, const char *buf, bool exec)
|
||||||
task_lock(tsk);
|
task_lock(tsk);
|
||||||
trace_task_rename(tsk, buf);
|
trace_task_rename(tsk, buf);
|
||||||
strscpy_pad(tsk->comm, buf, sizeof(tsk->comm));
|
strscpy_pad(tsk->comm, buf, sizeof(tsk->comm));
|
||||||
|
trace_android_vh_set_task_comm(tsk);
|
||||||
task_unlock(tsk);
|
task_unlock(tsk);
|
||||||
perf_event_comm(tsk, exec);
|
perf_event_comm(tsk, exec);
|
||||||
trace_android_rvh_set_task_comm(tsk, exec);
|
trace_android_rvh_set_task_comm(tsk, exec);
|
||||||
|
|
|
@ -51,7 +51,7 @@ static int exfat_cont_expand(struct inode *inode, loff_t size)
|
||||||
clu.flags = ei->flags;
|
clu.flags = ei->flags;
|
||||||
|
|
||||||
ret = exfat_alloc_cluster(inode, new_num_clusters - num_clusters,
|
ret = exfat_alloc_cluster(inode, new_num_clusters - num_clusters,
|
||||||
&clu, IS_DIRSYNC(inode));
|
&clu, inode_needs_sync(inode));
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -77,12 +77,11 @@ out:
|
||||||
ei->i_size_aligned = round_up(size, sb->s_blocksize);
|
ei->i_size_aligned = round_up(size, sb->s_blocksize);
|
||||||
ei->i_size_ondisk = ei->i_size_aligned;
|
ei->i_size_ondisk = ei->i_size_aligned;
|
||||||
inode->i_blocks = round_up(size, sbi->cluster_size) >> 9;
|
inode->i_blocks = round_up(size, sbi->cluster_size) >> 9;
|
||||||
|
|
||||||
if (IS_DIRSYNC(inode))
|
|
||||||
return write_inode_now(inode, 1);
|
|
||||||
|
|
||||||
mark_inode_dirty(inode);
|
mark_inode_dirty(inode);
|
||||||
|
|
||||||
|
if (IS_SYNC(inode))
|
||||||
|
return write_inode_now(inode, 1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
free_clu:
|
free_clu:
|
||||||
|
@ -344,6 +343,7 @@ int exfat_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
|
||||||
if (attr->ia_valid & ATTR_SIZE)
|
if (attr->ia_valid & ATTR_SIZE)
|
||||||
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
|
||||||
|
|
||||||
|
setattr_copy(&nop_mnt_idmap, inode, attr);
|
||||||
exfat_truncate_inode_atime(inode);
|
exfat_truncate_inode_atime(inode);
|
||||||
|
|
||||||
if (attr->ia_valid & ATTR_SIZE) {
|
if (attr->ia_valid & ATTR_SIZE) {
|
||||||
|
|
|
@ -56,18 +56,18 @@ int __exfat_write_inode(struct inode *inode, int sync)
|
||||||
&ep->dentry.file.create_time,
|
&ep->dentry.file.create_time,
|
||||||
&ep->dentry.file.create_date,
|
&ep->dentry.file.create_date,
|
||||||
&ep->dentry.file.create_time_cs);
|
&ep->dentry.file.create_time_cs);
|
||||||
|
ts = inode_get_mtime(inode);
|
||||||
exfat_set_entry_time(sbi, &ts,
|
exfat_set_entry_time(sbi, &ts,
|
||||||
&ep->dentry.file.modify_tz,
|
&ep->dentry.file.modify_tz,
|
||||||
&ep->dentry.file.modify_time,
|
&ep->dentry.file.modify_time,
|
||||||
&ep->dentry.file.modify_date,
|
&ep->dentry.file.modify_date,
|
||||||
&ep->dentry.file.modify_time_cs);
|
&ep->dentry.file.modify_time_cs);
|
||||||
inode_set_mtime_to_ts(inode, ts);
|
ts = inode_get_atime(inode);
|
||||||
exfat_set_entry_time(sbi, &ts,
|
exfat_set_entry_time(sbi, &ts,
|
||||||
&ep->dentry.file.access_tz,
|
&ep->dentry.file.access_tz,
|
||||||
&ep->dentry.file.access_time,
|
&ep->dentry.file.access_time,
|
||||||
&ep->dentry.file.access_date,
|
&ep->dentry.file.access_date,
|
||||||
NULL);
|
NULL);
|
||||||
inode_set_atime_to_ts(inode, ts);
|
|
||||||
|
|
||||||
/* File size should be zero if there is no cluster allocated */
|
/* File size should be zero if there is no cluster allocated */
|
||||||
on_disk_size = i_size_read(inode);
|
on_disk_size = i_size_read(inode);
|
||||||
|
|
|
@ -378,7 +378,8 @@ sync_nodes:
|
||||||
f2fs_remove_ino_entry(sbi, ino, APPEND_INO);
|
f2fs_remove_ino_entry(sbi, ino, APPEND_INO);
|
||||||
clear_inode_flag(inode, FI_APPEND_WRITE);
|
clear_inode_flag(inode, FI_APPEND_WRITE);
|
||||||
flush_out:
|
flush_out:
|
||||||
if (!atomic && F2FS_OPTION(sbi).fsync_mode != FSYNC_MODE_NOBARRIER)
|
if ((!atomic && F2FS_OPTION(sbi).fsync_mode != FSYNC_MODE_NOBARRIER) ||
|
||||||
|
(atomic && !test_opt(sbi, NOBARRIER) && f2fs_sb_has_blkzoned(sbi)))
|
||||||
ret = f2fs_issue_flush(sbi, inode->i_ino);
|
ret = f2fs_issue_flush(sbi, inode->i_ino);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
f2fs_remove_ino_entry(sbi, ino, UPDATE_INO);
|
f2fs_remove_ino_entry(sbi, ino, UPDATE_INO);
|
||||||
|
|
|
@ -1676,7 +1676,7 @@ static int __write_node_page(struct page *page, bool atomic, bool *submitted,
|
||||||
goto redirty_out;
|
goto redirty_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atomic && !test_opt(sbi, NOBARRIER))
|
if (atomic && !test_opt(sbi, NOBARRIER) && !f2fs_sb_has_blkzoned(sbi))
|
||||||
fio.op_flags |= REQ_PREFLUSH | REQ_FUA;
|
fio.op_flags |= REQ_PREFLUSH | REQ_FUA;
|
||||||
|
|
||||||
/* should add to global list before clearing PAGECACHE status */
|
/* should add to global list before clearing PAGECACHE status */
|
||||||
|
|
|
@ -253,7 +253,6 @@ static inline unsigned long em_cpu_energy(struct em_perf_domain *pd,
|
||||||
* max utilization to the allowed CPU capacity before calculating
|
* max utilization to the allowed CPU capacity before calculating
|
||||||
* effective performance.
|
* effective performance.
|
||||||
*/
|
*/
|
||||||
max_util = map_util_perf(max_util);
|
|
||||||
max_util = min(max_util, allowed_cpu_cap);
|
max_util = min(max_util, allowed_cpu_cap);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -368,7 +368,8 @@ static inline swp_entry_t page_swap_entry(struct page *page)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* linux/mm/workingset.c */
|
/* linux/mm/workingset.c */
|
||||||
bool workingset_test_recent(void *shadow, bool file, bool *workingset);
|
bool workingset_test_recent(void *shadow, bool file, bool *workingset,
|
||||||
|
bool flush);
|
||||||
void workingset_age_nonresident(struct lruvec *lruvec, unsigned long nr_pages);
|
void workingset_age_nonresident(struct lruvec *lruvec, unsigned long nr_pages);
|
||||||
void *workingset_eviction(struct folio *folio, struct mem_cgroup *target_memcg);
|
void *workingset_eviction(struct folio *folio, struct mem_cgroup *target_memcg);
|
||||||
void workingset_refault(struct folio *folio, void *shadow);
|
void workingset_refault(struct folio *folio, void *shadow);
|
||||||
|
|
|
@ -76,6 +76,9 @@ DECLARE_HOOK(android_vh_look_around,
|
||||||
TP_PROTO(struct page_vma_mapped_walk *pvmw, struct folio *folio,
|
TP_PROTO(struct page_vma_mapped_walk *pvmw, struct folio *folio,
|
||||||
struct vm_area_struct *vma, int *referenced),
|
struct vm_area_struct *vma, int *referenced),
|
||||||
TP_ARGS(pvmw, folio, vma, referenced));
|
TP_ARGS(pvmw, folio, vma, referenced));
|
||||||
|
DECLARE_HOOK(android_vh_mm_kcompactd_cpu_online,
|
||||||
|
TP_PROTO(int cpu),
|
||||||
|
TP_ARGS(cpu));
|
||||||
DECLARE_HOOK(android_vh_free_unref_page_bypass,
|
DECLARE_HOOK(android_vh_free_unref_page_bypass,
|
||||||
TP_PROTO(struct page *page, int order, int migratetype, bool *bypass),
|
TP_PROTO(struct page *page, int order, int migratetype, bool *bypass),
|
||||||
TP_ARGS(page, order, migratetype, bypass));
|
TP_ARGS(page, order, migratetype, bypass));
|
||||||
|
|
|
@ -476,7 +476,9 @@ DECLARE_HOOK(android_vh_prio_restore,
|
||||||
TP_PROTO(int saved_prio),
|
TP_PROTO(int saved_prio),
|
||||||
TP_ARGS(saved_prio));
|
TP_ARGS(saved_prio));
|
||||||
|
|
||||||
/* macro versions of hooks are no longer required */
|
DECLARE_HOOK(android_vh_set_task_comm,
|
||||||
|
TP_PROTO(struct task_struct *p),
|
||||||
|
TP_ARGS(p));
|
||||||
|
|
||||||
#endif /* _TRACE_HOOK_SCHED_H */
|
#endif /* _TRACE_HOOK_SCHED_H */
|
||||||
/* This part must be outside protection */
|
/* This part must be outside protection */
|
||||||
|
|
|
@ -10,6 +10,10 @@
|
||||||
* Following tracepoints are not exported in tracefs and provide a
|
* Following tracepoints are not exported in tracefs and provide a
|
||||||
* mechanism for vendor modules to hook and extend functionality
|
* mechanism for vendor modules to hook and extend functionality
|
||||||
*/
|
*/
|
||||||
|
DECLARE_RESTRICTED_HOOK(android_rvh_alloc_workqueue,
|
||||||
|
TP_PROTO(struct workqueue_struct *wq, unsigned int *flags, int *max_active),
|
||||||
|
TP_ARGS(wq, flags, max_active), 1);
|
||||||
|
|
||||||
DECLARE_RESTRICTED_HOOK(android_rvh_create_worker,
|
DECLARE_RESTRICTED_HOOK(android_rvh_create_worker,
|
||||||
TP_PROTO(struct task_struct *p, struct workqueue_attrs *attrs),
|
TP_PROTO(struct task_struct *p, struct workqueue_attrs *attrs),
|
||||||
TP_ARGS(p, attrs), 1);
|
TP_ARGS(p, attrs), 1);
|
||||||
|
|
|
@ -121,3 +121,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_sugov_sched_attr);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_prio_inheritance);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_prio_inheritance);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_prio_restore);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_prio_restore);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_task_comm);
|
||||||
|
|
|
@ -4732,6 +4732,7 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
|
||||||
vsnprintf(wq->name, sizeof(wq->name), fmt, args);
|
vsnprintf(wq->name, sizeof(wq->name), fmt, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
|
trace_android_rvh_alloc_workqueue(wq, &flags, &max_active);
|
||||||
max_active = max_active ?: WQ_DFL_ACTIVE;
|
max_active = max_active ?: WQ_DFL_ACTIVE;
|
||||||
max_active = wq_clamp_max_active(max_active, flags, wq->name);
|
max_active = wq_clamp_max_active(max_active, flags, wq->name);
|
||||||
|
|
||||||
|
|
|
@ -3247,6 +3247,7 @@ static int kcompactd_cpu_online(unsigned int cpu)
|
||||||
if (pgdat->kcompactd)
|
if (pgdat->kcompactd)
|
||||||
set_cpus_allowed_ptr(pgdat->kcompactd, mask);
|
set_cpus_allowed_ptr(pgdat->kcompactd, mask);
|
||||||
}
|
}
|
||||||
|
trace_android_vh_mm_kcompactd_cpu_online(cpu);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -989,6 +989,9 @@ static void damon_do_apply_schemes(struct damon_ctx *c,
|
||||||
damon_for_each_scheme(s, c) {
|
damon_for_each_scheme(s, c) {
|
||||||
struct damos_quota *quota = &s->quota;
|
struct damos_quota *quota = &s->quota;
|
||||||
|
|
||||||
|
if (c->passed_sample_intervals != s->next_apply_sis)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!s->wmarks.activated)
|
if (!s->wmarks.activated)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -1089,10 +1092,6 @@ static void kdamond_apply_schemes(struct damon_ctx *c)
|
||||||
if (c->passed_sample_intervals != s->next_apply_sis)
|
if (c->passed_sample_intervals != s->next_apply_sis)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
s->next_apply_sis +=
|
|
||||||
(s->apply_interval_us ? s->apply_interval_us :
|
|
||||||
c->attrs.aggr_interval) / sample_interval;
|
|
||||||
|
|
||||||
if (!s->wmarks.activated)
|
if (!s->wmarks.activated)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -1108,6 +1107,14 @@ static void kdamond_apply_schemes(struct damon_ctx *c)
|
||||||
damon_for_each_region_safe(r, next_r, t)
|
damon_for_each_region_safe(r, next_r, t)
|
||||||
damon_do_apply_schemes(c, t, r);
|
damon_do_apply_schemes(c, t, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
damon_for_each_scheme(s, c) {
|
||||||
|
if (c->passed_sample_intervals != s->next_apply_sis)
|
||||||
|
continue;
|
||||||
|
s->next_apply_sis +=
|
||||||
|
(s->apply_interval_us ? s->apply_interval_us :
|
||||||
|
c->attrs.aggr_interval) / sample_interval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1208,6 +1215,7 @@ static void damon_split_region_at(struct damon_target *t,
|
||||||
|
|
||||||
new->age = r->age;
|
new->age = r->age;
|
||||||
new->last_nr_accesses = r->last_nr_accesses;
|
new->last_nr_accesses = r->last_nr_accesses;
|
||||||
|
new->nr_accesses = r->nr_accesses;
|
||||||
|
|
||||||
damon_insert_region(new, r, damon_next_region(r), t);
|
damon_insert_region(new, r, damon_next_region(r), t);
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,6 +139,13 @@ static const struct kobj_type damon_sysfs_scheme_region_ktype = {
|
||||||
* 'finished'. Then, damon_sysfs_before_damos_apply() understands the
|
* 'finished'. Then, damon_sysfs_before_damos_apply() understands the
|
||||||
* situation by showing the 'finished' status and do nothing.
|
* situation by showing the 'finished' status and do nothing.
|
||||||
*
|
*
|
||||||
|
* If DAMOS is not applied to any region due to any reasons including the
|
||||||
|
* access pattern, the watermarks, the quotas, and the filters,
|
||||||
|
* ->before_damos_apply() will not be called back. Until the situation is
|
||||||
|
* changed, the update will not be finished. To avoid this,
|
||||||
|
* damon_sysfs_after_sampling() set the status as 'finished' if more than two
|
||||||
|
* apply intervals of the scheme is passed while the state is 'idle'.
|
||||||
|
*
|
||||||
* Finally, the tried regions request handling finisher function
|
* Finally, the tried regions request handling finisher function
|
||||||
* (damon_sysfs_schemes_update_regions_stop()) unregisters the callbacks.
|
* (damon_sysfs_schemes_update_regions_stop()) unregisters the callbacks.
|
||||||
*/
|
*/
|
||||||
|
@ -154,6 +161,7 @@ struct damon_sysfs_scheme_regions {
|
||||||
int nr_regions;
|
int nr_regions;
|
||||||
unsigned long total_bytes;
|
unsigned long total_bytes;
|
||||||
enum damos_sysfs_regions_upd_status upd_status;
|
enum damos_sysfs_regions_upd_status upd_status;
|
||||||
|
unsigned long upd_timeout_jiffies;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct damon_sysfs_scheme_regions *
|
static struct damon_sysfs_scheme_regions *
|
||||||
|
@ -1854,7 +1862,9 @@ void damos_sysfs_mark_finished_regions_updates(struct damon_ctx *ctx)
|
||||||
for (i = 0; i < sysfs_schemes->nr; i++) {
|
for (i = 0; i < sysfs_schemes->nr; i++) {
|
||||||
sysfs_regions = sysfs_schemes->schemes_arr[i]->tried_regions;
|
sysfs_regions = sysfs_schemes->schemes_arr[i]->tried_regions;
|
||||||
if (sysfs_regions->upd_status ==
|
if (sysfs_regions->upd_status ==
|
||||||
DAMOS_TRIED_REGIONS_UPD_STARTED)
|
DAMOS_TRIED_REGIONS_UPD_STARTED ||
|
||||||
|
time_after(jiffies,
|
||||||
|
sysfs_regions->upd_timeout_jiffies))
|
||||||
sysfs_regions->upd_status =
|
sysfs_regions->upd_status =
|
||||||
DAMOS_TRIED_REGIONS_UPD_FINISHED;
|
DAMOS_TRIED_REGIONS_UPD_FINISHED;
|
||||||
}
|
}
|
||||||
|
@ -1883,14 +1893,41 @@ int damon_sysfs_schemes_clear_regions(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct damos *damos_sysfs_nth_scheme(int n, struct damon_ctx *ctx)
|
||||||
|
{
|
||||||
|
struct damos *scheme;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
damon_for_each_scheme(scheme, ctx) {
|
||||||
|
if (i == n)
|
||||||
|
return scheme;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void damos_tried_regions_init_upd_status(
|
static void damos_tried_regions_init_upd_status(
|
||||||
struct damon_sysfs_schemes *sysfs_schemes)
|
struct damon_sysfs_schemes *sysfs_schemes,
|
||||||
|
struct damon_ctx *ctx)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
struct damos *scheme;
|
||||||
|
struct damon_sysfs_scheme_regions *sysfs_regions;
|
||||||
|
|
||||||
for (i = 0; i < sysfs_schemes->nr; i++)
|
for (i = 0; i < sysfs_schemes->nr; i++) {
|
||||||
sysfs_schemes->schemes_arr[i]->tried_regions->upd_status =
|
sysfs_regions = sysfs_schemes->schemes_arr[i]->tried_regions;
|
||||||
DAMOS_TRIED_REGIONS_UPD_IDLE;
|
scheme = damos_sysfs_nth_scheme(i, ctx);
|
||||||
|
if (!scheme) {
|
||||||
|
sysfs_regions->upd_status =
|
||||||
|
DAMOS_TRIED_REGIONS_UPD_FINISHED;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
sysfs_regions->upd_status = DAMOS_TRIED_REGIONS_UPD_IDLE;
|
||||||
|
sysfs_regions->upd_timeout_jiffies = jiffies +
|
||||||
|
2 * usecs_to_jiffies(scheme->apply_interval_us ?
|
||||||
|
scheme->apply_interval_us :
|
||||||
|
ctx->attrs.sample_interval);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Called from damon_sysfs_cmd_request_callback under damon_sysfs_lock */
|
/* Called from damon_sysfs_cmd_request_callback under damon_sysfs_lock */
|
||||||
|
@ -1900,7 +1937,7 @@ int damon_sysfs_schemes_update_regions_start(
|
||||||
{
|
{
|
||||||
damon_sysfs_schemes_clear_regions(sysfs_schemes, ctx);
|
damon_sysfs_schemes_clear_regions(sysfs_schemes, ctx);
|
||||||
damon_sysfs_schemes_for_damos_callback = sysfs_schemes;
|
damon_sysfs_schemes_for_damos_callback = sysfs_schemes;
|
||||||
damos_tried_regions_init_upd_status(sysfs_schemes);
|
damos_tried_regions_init_upd_status(sysfs_schemes, ctx);
|
||||||
damos_regions_upd_total_bytes_only = total_bytes_only;
|
damos_regions_upd_total_bytes_only = total_bytes_only;
|
||||||
ctx->callback.before_damos_apply = damon_sysfs_before_damos_apply;
|
ctx->callback.before_damos_apply = damon_sysfs_before_damos_apply;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -4200,6 +4200,9 @@ static void filemap_cachestat(struct address_space *mapping,
|
||||||
XA_STATE(xas, &mapping->i_pages, first_index);
|
XA_STATE(xas, &mapping->i_pages, first_index);
|
||||||
struct folio *folio;
|
struct folio *folio;
|
||||||
|
|
||||||
|
/* Flush stats (and potentially sleep) outside the RCU read section. */
|
||||||
|
mem_cgroup_flush_stats_ratelimited(NULL);
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
xas_for_each(&xas, folio, last_index) {
|
xas_for_each(&xas, folio, last_index) {
|
||||||
int order;
|
int order;
|
||||||
|
@ -4263,7 +4266,7 @@ static void filemap_cachestat(struct address_space *mapping,
|
||||||
goto resched;
|
goto resched;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (workingset_test_recent(shadow, true, &workingset))
|
if (workingset_test_recent(shadow, true, &workingset, false))
|
||||||
cs->nr_recently_evicted += nr_pages;
|
cs->nr_recently_evicted += nr_pages;
|
||||||
|
|
||||||
goto resched;
|
goto resched;
|
||||||
|
|
|
@ -720,6 +720,7 @@ static inline void memcg_rstat_updated(struct mem_cgroup *memcg, int val)
|
||||||
{
|
{
|
||||||
struct memcg_vmstats_percpu *statc;
|
struct memcg_vmstats_percpu *statc;
|
||||||
int cpu = smp_processor_id();
|
int cpu = smp_processor_id();
|
||||||
|
unsigned int stats_updates;
|
||||||
|
|
||||||
if (!val)
|
if (!val)
|
||||||
return;
|
return;
|
||||||
|
@ -727,8 +728,9 @@ static inline void memcg_rstat_updated(struct mem_cgroup *memcg, int val)
|
||||||
cgroup_rstat_updated(memcg->css.cgroup, cpu);
|
cgroup_rstat_updated(memcg->css.cgroup, cpu);
|
||||||
statc = this_cpu_ptr(memcg->vmstats_percpu);
|
statc = this_cpu_ptr(memcg->vmstats_percpu);
|
||||||
for (; statc; statc = statc->parent) {
|
for (; statc; statc = statc->parent) {
|
||||||
statc->stats_updates += abs(val);
|
stats_updates = READ_ONCE(statc->stats_updates) + abs(val);
|
||||||
if (statc->stats_updates < MEMCG_CHARGE_BATCH)
|
WRITE_ONCE(statc->stats_updates, stats_updates);
|
||||||
|
if (stats_updates < MEMCG_CHARGE_BATCH)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -736,9 +738,9 @@ static inline void memcg_rstat_updated(struct mem_cgroup *memcg, int val)
|
||||||
* redundant. Avoid the overhead of the atomic update.
|
* redundant. Avoid the overhead of the atomic update.
|
||||||
*/
|
*/
|
||||||
if (!memcg_vmstats_needs_flush(statc->vmstats))
|
if (!memcg_vmstats_needs_flush(statc->vmstats))
|
||||||
atomic64_add(statc->stats_updates,
|
atomic64_add(stats_updates,
|
||||||
&statc->vmstats->stats_updates);
|
&statc->vmstats->stats_updates);
|
||||||
statc->stats_updates = 0;
|
WRITE_ONCE(statc->stats_updates, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5771,7 +5773,7 @@ static void mem_cgroup_css_rstat_flush(struct cgroup_subsys_state *css, int cpu)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
statc->stats_updates = 0;
|
WRITE_ONCE(statc->stats_updates, 0);
|
||||||
/* We are in a per-cpu loop here, only do the atomic write once */
|
/* We are in a per-cpu loop here, only do the atomic write once */
|
||||||
if (atomic64_read(&memcg->vmstats->stats_updates))
|
if (atomic64_read(&memcg->vmstats->stats_updates))
|
||||||
atomic64_set(&memcg->vmstats->stats_updates, 0);
|
atomic64_set(&memcg->vmstats->stats_updates, 0);
|
||||||
|
@ -7372,8 +7374,7 @@ void __mem_cgroup_uncharge_list(struct list_head *page_list)
|
||||||
* @new: Replacement folio.
|
* @new: Replacement folio.
|
||||||
*
|
*
|
||||||
* Charge @new as a replacement folio for @old. @old will
|
* Charge @new as a replacement folio for @old. @old will
|
||||||
* be uncharged upon free. This is only used by the page cache
|
* be uncharged upon free.
|
||||||
* (in replace_page_cache_folio()).
|
|
||||||
*
|
*
|
||||||
* Both folios must be locked, @new->mapping must be set up.
|
* Both folios must be locked, @new->mapping must be set up.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1782,7 +1782,7 @@ static int shmem_replace_folio(struct folio **foliop, gfp_t gfp,
|
||||||
xa_lock_irq(&swap_mapping->i_pages);
|
xa_lock_irq(&swap_mapping->i_pages);
|
||||||
error = shmem_replace_entry(swap_mapping, swap_index, old, new);
|
error = shmem_replace_entry(swap_mapping, swap_index, old, new);
|
||||||
if (!error) {
|
if (!error) {
|
||||||
mem_cgroup_migrate(old, new);
|
mem_cgroup_replace_folio(old, new);
|
||||||
__lruvec_stat_mod_folio(new, NR_FILE_PAGES, 1);
|
__lruvec_stat_mod_folio(new, NR_FILE_PAGES, 1);
|
||||||
__lruvec_stat_mod_folio(new, NR_SHMEM, 1);
|
__lruvec_stat_mod_folio(new, NR_SHMEM, 1);
|
||||||
__lruvec_stat_mod_folio(old, NR_FILE_PAGES, -1);
|
__lruvec_stat_mod_folio(old, NR_FILE_PAGES, -1);
|
||||||
|
|
|
@ -412,10 +412,12 @@ void *workingset_eviction(struct folio *folio, struct mem_cgroup *target_memcg)
|
||||||
* @file: whether the corresponding folio is from the file lru.
|
* @file: whether the corresponding folio is from the file lru.
|
||||||
* @workingset: where the workingset value unpacked from shadow should
|
* @workingset: where the workingset value unpacked from shadow should
|
||||||
* be stored.
|
* be stored.
|
||||||
|
* @flush: whether to flush cgroup rstat.
|
||||||
*
|
*
|
||||||
* Return: true if the shadow is for a recently evicted folio; false otherwise.
|
* Return: true if the shadow is for a recently evicted folio; false otherwise.
|
||||||
*/
|
*/
|
||||||
bool workingset_test_recent(void *shadow, bool file, bool *workingset)
|
bool workingset_test_recent(void *shadow, bool file, bool *workingset,
|
||||||
|
bool flush)
|
||||||
{
|
{
|
||||||
struct mem_cgroup *eviction_memcg;
|
struct mem_cgroup *eviction_memcg;
|
||||||
struct lruvec *eviction_lruvec;
|
struct lruvec *eviction_lruvec;
|
||||||
|
@ -467,10 +469,16 @@ bool workingset_test_recent(void *shadow, bool file, bool *workingset)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flush stats (and potentially sleep) outside the RCU read section.
|
* Flush stats (and potentially sleep) outside the RCU read section.
|
||||||
|
*
|
||||||
|
* Note that workingset_test_recent() itself might be called in RCU read
|
||||||
|
* section (for e.g, in cachestat) - these callers need to skip flushing
|
||||||
|
* stats (via the flush argument).
|
||||||
|
*
|
||||||
* XXX: With per-memcg flushing and thresholding, is ratelimiting
|
* XXX: With per-memcg flushing and thresholding, is ratelimiting
|
||||||
* still needed here?
|
* still needed here?
|
||||||
*/
|
*/
|
||||||
mem_cgroup_flush_stats_ratelimited(eviction_memcg);
|
if (flush)
|
||||||
|
mem_cgroup_flush_stats_ratelimited(eviction_memcg);
|
||||||
|
|
||||||
eviction_lruvec = mem_cgroup_lruvec(eviction_memcg, pgdat);
|
eviction_lruvec = mem_cgroup_lruvec(eviction_memcg, pgdat);
|
||||||
refault = atomic_long_read(&eviction_lruvec->nonresident_age);
|
refault = atomic_long_read(&eviction_lruvec->nonresident_age);
|
||||||
|
@ -560,7 +568,7 @@ void workingset_refault(struct folio *folio, void *shadow)
|
||||||
|
|
||||||
mod_lruvec_state(lruvec, WORKINGSET_REFAULT_BASE + file, nr);
|
mod_lruvec_state(lruvec, WORKINGSET_REFAULT_BASE + file, nr);
|
||||||
|
|
||||||
if (!workingset_test_recent(shadow, file, &workingset))
|
if (!workingset_test_recent(shadow, file, &workingset, true))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
folio_set_active(folio);
|
folio_set_active(folio);
|
||||||
|
|
|
@ -2148,7 +2148,8 @@ static bool cfg80211_6ghz_power_type_valid(const u8 *ie, size_t ielen,
|
||||||
struct ieee80211_he_operation *he_oper;
|
struct ieee80211_he_operation *he_oper;
|
||||||
|
|
||||||
tmp = cfg80211_find_ext_elem(WLAN_EID_EXT_HE_OPERATION, ie, ielen);
|
tmp = cfg80211_find_ext_elem(WLAN_EID_EXT_HE_OPERATION, ie, ielen);
|
||||||
if (tmp && tmp->datalen >= sizeof(*he_oper) + 1) {
|
if (tmp && tmp->datalen >= sizeof(*he_oper) + 1 &&
|
||||||
|
tmp->datalen >= ieee80211_he_oper_size(tmp->data + 1)) {
|
||||||
const struct ieee80211_he_6ghz_oper *he_6ghz_oper;
|
const struct ieee80211_he_6ghz_oper *he_6ghz_oper;
|
||||||
|
|
||||||
he_oper = (void *)&tmp->data[1];
|
he_oper = (void *)&tmp->data[1];
|
||||||
|
|
Loading…
Reference in New Issue
Block a user