From 215e38e5176b722d6abaabdfa129c6047a2f9192 Mon Sep 17 00:00:00 2001 From: steve2_yang Date: Wed, 13 Sep 2023 18:43:57 +0800 Subject: [PATCH 01/99] ANDROID: GKI: Add ASUS symbol list create the ASUS symbol list of HID symbols for the USB HID Fan driver which requires them 6 function symbol(s) added 'int __hid_register_driver(struct hid_driver*, struct module*, const char*)' 'int hid_hw_raw_request(struct hid_device*, unsigned char, __u8*, size_t, enum hid_report_type, enum hid_class_request)' 'int hid_hw_start(struct hid_device*, unsigned int)' 'void hid_hw_stop(struct hid_device*)' 'int hid_open_report(struct hid_device*)' 'void hid_unregister_driver(struct hid_driver*)' Bug: 300220786 Change-Id: I422c3b82754921c530e9afc32529a1dbf2f6c38e Signed-off-by: Steve2 Yang --- BUILD.bazel | 1 + android/abi_gki_aarch64.stg | 113 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_asus | 8 +++ 3 files changed, 122 insertions(+) create mode 100644 android/abi_gki_aarch64_asus diff --git a/BUILD.bazel b/BUILD.bazel index b0376d31d72e..6cf6aa83ab9d 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -98,6 +98,7 @@ filegroup( name = "aarch64_additional_kmi_symbol_lists", srcs = [ # keep sorted + "android/abi_gki_aarch64_asus", "android/abi_gki_aarch64_db845c", "android/abi_gki_aarch64_exynos", "android/abi_gki_aarch64_exynosauto", diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index fd395f6b1af9..9b1782a70442 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -275017,6 +275017,37 @@ enumeration { } } } +enumeration { + id: 0x87463428 + name: "hid_class_request" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "HID_REQ_GET_REPORT" + value: 1 + } + enumerator { + name: "HID_REQ_GET_IDLE" + value: 2 + } + enumerator { + name: "HID_REQ_GET_PROTOCOL" + value: 3 + } + enumerator { + name: "HID_REQ_SET_REPORT" + value: 9 + } + enumerator { + name: "HID_REQ_SET_IDLE" + value: 10 + } + enumerator { + name: "HID_REQ_SET_PROTOCOL" + value: 11 + } + } +} enumeration { id: 0xfa5f37bb name: "hid_report_type" @@ -284685,6 +284716,11 @@ function { parameter_id: 0x6720d32f parameter_id: 0x115a10f4 } +function { + id: 0x104da524 + return_type_id: 0x48b5725f + parameter_id: 0x0357d2dd +} function { id: 0x104de9a9 return_type_id: 0x48b5725f @@ -318472,6 +318508,13 @@ function { parameter_id: 0x1bb6a471 parameter_id: 0x368ec5cb } +function { + id: 0x9d760cc4 + return_type_id: 0x6720d32f + parameter_id: 0x0357d2dd + parameter_id: 0x0b27dc43 + parameter_id: 0x3e10b518 +} function { id: 0x9d763af9 return_type_id: 0x6720d32f @@ -321415,6 +321458,16 @@ function { parameter_id: 0x5d8155a5 parameter_id: 0x6720d32f } +function { + id: 0x9f85a1ff + return_type_id: 0x6720d32f + parameter_id: 0x0de4c6b1 + parameter_id: 0x5d8155a5 + parameter_id: 0x2669d715 + parameter_id: 0xf435685e + parameter_id: 0xfa5f37bb + parameter_id: 0x87463428 +} function { id: 0x9f87b817 return_type_id: 0x6720d32f @@ -328310,6 +328363,15 @@ elf_symbol { type_id: 0x98878fd8 full_name: "__hci_cmd_sync_status_sk" } +elf_symbol { + id: 0xb3d97fa3 + name: "__hid_register_driver" + is_defined: true + symbol_type: FUNCTION + crc: 0xe11057d9 + type_id: 0x9d760cc4 + full_name: "__hid_register_driver" +} elf_symbol { id: 0xf245d4a3 name: "__hrtimer_get_remaining" @@ -356292,6 +356354,33 @@ elf_symbol { type_id: 0x13e1603f full_name: "hid_destroy_device" } +elf_symbol { + id: 0x6c303862 + name: "hid_hw_raw_request" + is_defined: true + symbol_type: FUNCTION + crc: 0x1754ea42 + type_id: 0x9f85a1ff + full_name: "hid_hw_raw_request" +} +elf_symbol { + id: 0xfba34655 + name: "hid_hw_start" + is_defined: true + symbol_type: FUNCTION + crc: 0x80c181b3 + type_id: 0x9fefc71b + full_name: "hid_hw_start" +} +elf_symbol { + id: 0x52d444b1 + name: "hid_hw_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0x109cf170 + type_id: 0x13e1603f + full_name: "hid_hw_stop" +} elf_symbol { id: 0x7d0e44ca name: "hid_ignore" @@ -356310,6 +356399,15 @@ elf_symbol { type_id: 0x9d13a27c full_name: "hid_input_report" } +elf_symbol { + id: 0x0eb11e95 + name: "hid_open_report" + is_defined: true + symbol_type: FUNCTION + crc: 0x99072c9a + type_id: 0x9ef9d283 + full_name: "hid_open_report" +} elf_symbol { id: 0x6ca4d0ed name: "hid_parse_report" @@ -356319,6 +356417,15 @@ elf_symbol { type_id: 0x9e711486 full_name: "hid_parse_report" } +elf_symbol { + id: 0x6e37f09d + name: "hid_unregister_driver" + is_defined: true + symbol_type: FUNCTION + crc: 0xe1767c20 + type_id: 0x104da524 + full_name: "hid_unregister_driver" +} elf_symbol { id: 0x21d35235 name: "hidp_hid_driver" @@ -389978,6 +390085,7 @@ interface { symbol_id: 0x010ff5f2 symbol_id: 0xe3bb3be3 symbol_id: 0xdf924e64 + symbol_id: 0xb3d97fa3 symbol_id: 0xf245d4a3 symbol_id: 0x74b9825e symbol_id: 0xd672e937 @@ -393086,9 +393194,14 @@ interface { symbol_id: 0xccc593d6 symbol_id: 0x97a02af0 symbol_id: 0x2ffc7c7e + symbol_id: 0x6c303862 + symbol_id: 0xfba34655 + symbol_id: 0x52d444b1 symbol_id: 0x7d0e44ca symbol_id: 0x10de460f + symbol_id: 0x0eb11e95 symbol_id: 0x6ca4d0ed + symbol_id: 0x6e37f09d symbol_id: 0x21d35235 symbol_id: 0x334ff68f symbol_id: 0xd7ecf501 diff --git a/android/abi_gki_aarch64_asus b/android/abi_gki_aarch64_asus new file mode 100644 index 000000000000..4236b195170d --- /dev/null +++ b/android/abi_gki_aarch64_asus @@ -0,0 +1,8 @@ +[abi_symbol_list] +# aura sync + hid_unregister_driver + hid_hw_raw_request + hid_open_report + hid_hw_start + hid_hw_stop + __hid_register_driver From d3212c2dbababf849d940f5f7001f4fde222b888 Mon Sep 17 00:00:00 2001 From: Schspa Shi Date: Mon, 29 Aug 2022 01:03:02 +0800 Subject: [PATCH 02/99] UPSTREAM: sched/rt: Fix bad task migration for rt tasks Commit 95158a89dd50 ("sched,rt: Use the full cpumask for balancing") allows find_lock_lowest_rq() to pick a task with migration disabled. The purpose of the commit is to push the current running task on the CPU that has the migrate_disable() task away. However, there is a race which allows a migrate_disable() task to be migrated. Consider: CPU0 CPU1 push_rt_task check is_migration_disabled(next_task) task not running and migration_disabled == 0 find_lock_lowest_rq(next_task, rq); _double_lock_balance(this_rq, busiest); raw_spin_rq_unlock(this_rq); double_rq_lock(this_rq, busiest); <> task become running migrate_disable(); deactivate_task(rq, next_task, 0); set_task_cpu(next_task, lowest_rq->cpu); WARN_ON_ONCE(is_migration_disabled(p)); Fixes: 95158a89dd50 ("sched,rt: Use the full cpumask for balancing") Signed-off-by: Schspa Shi Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Steven Rostedt (Google) Reviewed-by: Dietmar Eggemann Reviewed-by: Valentin Schneider Tested-by: Dwaine Gonyier Signed-off-by: Sasha Levin Bug: 300418678 (cherry picked from commit feffe5bb274dd3442080ef0e4053746091878799) [quic_dickey@quicinc.com: Port only] Change-Id: I3e7953aeb3edf3f1a5d03e355297d7b1541ff7c8 Signed-off-by: Stephen Dickey --- kernel/sched/deadline.c | 1 + kernel/sched/rt.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 9ae8f41e3372..f7d381b6c313 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -2246,6 +2246,7 @@ static struct rq *find_lock_later_rq(struct task_struct *task, struct rq *rq) !cpumask_test_cpu(later_rq->cpu, &task->cpus_mask) || task_on_cpu(rq, task) || !dl_task(task) || + is_migration_disabled(task) || !task_on_rq_queued(task))) { double_unlock_balance(rq, later_rq); later_rq = NULL; diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c index 0de7c8fdb3f7..d8f751beb7dc 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -2098,11 +2098,15 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq) * the mean time, task could have * migrated already or had its affinity changed. * Also make sure that it wasn't scheduled on its rq. + * It is possible the task was scheduled, set + * "migrate_disabled" and then got preempted, so we must + * check the task migration disable flag here too. */ if (unlikely(task_rq(task) != rq || !cpumask_test_cpu(lowest_rq->cpu, &task->cpus_mask) || task_on_cpu(rq, task) || !rt_task(task) || + is_migration_disabled(task) || !task_on_rq_queued(task))) { double_unlock_balance(rq, lowest_rq); From c3d6c235b2d048ab3905f37637925ed69d1506c8 Mon Sep 17 00:00:00 2001 From: Budimir Markovic Date: Thu, 24 Aug 2023 01:49:05 -0700 Subject: [PATCH 03/99] UPSTREAM: net/sched: sch_hfsc: Ensure inner classes have fsc curve [ Upstream commit b3d26c5702c7d6c45456326e56d2ccf3f103e60f ] HFSC assumes that inner classes have an fsc curve, but it is currently possible for classes without an fsc curve to become parents. This leads to bugs including a use-after-free. Don't allow non-root classes without HFSC_FSC to become parents. Bug: 300027510 Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Reported-by: Budimir Markovic Signed-off-by: Budimir Markovic Acked-by: Jamal Hadi Salim Link: https://lore.kernel.org/r/20230824084905.422-1-markovicbudimir@gmail.com Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin (cherry picked from commit a1e820fc7808e42b990d224f40e9b4895503ac40) Signed-off-by: Lee Jones Change-Id: I7d839127f7e1709cb571ac22a19aec08e6deec18 --- net/sched/sch_hfsc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c index 70b0c5873d32..61d52594ff6d 100644 --- a/net/sched/sch_hfsc.c +++ b/net/sched/sch_hfsc.c @@ -1012,6 +1012,10 @@ hfsc_change_class(struct Qdisc *sch, u32 classid, u32 parentid, if (parent == NULL) return -ENOENT; } + if (!(parent->cl_flags & HFSC_FSC) && parent != &q->root) { + NL_SET_ERR_MSG(extack, "Invalid parent - parent class must have FSC"); + return -EINVAL; + } if (classid == 0 || TC_H_MAJ(classid ^ sch->handle) != 0) return -EINVAL; From 404360f6d31a7c598f882a4c4663f7acffbc04c1 Mon Sep 17 00:00:00 2001 From: Elaine Zhang Date: Tue, 1 Aug 2023 16:14:56 +0800 Subject: [PATCH 04/99] FROMLIST: clk: clk-fractional-divider: Export clk_fractional_divider_general_approximation API This is used by the Rockchip clk driver, export it to allow that driver to be compiled as a module. Bug: 300024866 Change-Id: Ie457e795b105312aeb220b6070972d50a07797d9 Signed-off-by: Elaine Zhang Reviewed-by: Kever Yang Link: https://lore.kernel.org/lkml/20230801081456.2551-1-zhangqing@rock-chips.com/ --- drivers/clk/clk-fractional-divider.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/clk/clk-fractional-divider.c b/drivers/clk/clk-fractional-divider.c index 8efa5142ff8c..cae0ea9fff98 100644 --- a/drivers/clk/clk-fractional-divider.c +++ b/drivers/clk/clk-fractional-divider.c @@ -126,6 +126,7 @@ void clk_fractional_divider_general_approximation(struct clk_hw *hw, GENMASK(fd->mwidth - 1, 0), GENMASK(fd->nwidth - 1, 0), m, n); } +EXPORT_SYMBOL_GPL(clk_fractional_divider_general_approximation); static long clk_fd_round_rate(struct clk_hw *hw, unsigned long rate, unsigned long *parent_rate) From 1e26ba190127d8d777aec9f5384b47785544a94a Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Wed, 13 Sep 2023 10:49:51 +0800 Subject: [PATCH 05/99] ANDROID: GKI: Add initial rockchip symbol list Add initial symbol list for rockchip in android/abi_gki_aarch64_rockchip Bug: 300024866 Change-Id: I4fd44b33141dfbdcd5b8d0d7c5d0fbc5aa2758cc Signed-off-by: Kever Yang --- android/abi_gki_aarch64_rockchip | 2235 ++++++++++++++++++++++++++++++ 1 file changed, 2235 insertions(+) create mode 100644 android/abi_gki_aarch64_rockchip diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip new file mode 100644 index 000000000000..8c21914afe6d --- /dev/null +++ b/android/abi_gki_aarch64_rockchip @@ -0,0 +1,2235 @@ +[abi_symbol_list] +# commonly used symbols + add_timer + alloc_chrdev_region + alloc_iova_fast + __alloc_pages + __alloc_skb + alloc_workqueue + alt_cb_patch_nops + anon_inode_getfd + __arch_copy_from_user + __arch_copy_to_user + arm64_use_ng_mappings + __arm_smccc_smc + atomic_notifier_call_chain + atomic_notifier_chain_register + atomic_notifier_chain_unregister + _bcd2bin + bcmp + _bin2bcd + __bitmap_andnot + __bitmap_equal + bitmap_free + __bitmap_or + __bitmap_set + __bitmap_xor + bitmap_zalloc + blocking_notifier_call_chain + blocking_notifier_chain_register + blocking_notifier_chain_unregister + bpf_trace_run1 + bpf_trace_run2 + bpf_trace_run3 + bpf_trace_run4 + bpf_trace_run5 + bpf_trace_run6 + bpf_trace_run7 + cancel_delayed_work + cancel_delayed_work_sync + cancel_work_sync + capable + cdev_add + cdev_del + cdev_device_add + cdev_device_del + cdev_init + __check_object_size + __class_create + class_create_file_ns + class_destroy + class_for_each_device + __class_register + class_remove_file_ns + class_unregister + clk_bulk_disable + clk_bulk_enable + clk_bulk_prepare + clk_bulk_unprepare + clk_disable + clk_enable + clk_gate_ops + clk_get + __clk_get_name + clk_get_parent + clk_get_rate + clk_hw_get_flags + clk_hw_get_name + clk_hw_get_parent + clk_hw_get_rate + clk_is_match + __clk_mux_determine_rate + clk_notifier_register + clk_notifier_unregister + clk_prepare + clk_put + clk_register + clk_round_rate + clk_set_parent + clk_set_phase + clk_set_rate + clk_unprepare + clk_unregister + cma_alloc + cma_release + compat_ptr_ioctl + complete + completion_done + __const_udelay + consume_skb + __copy_overflow + cpufreq_cpu_get + __cpufreq_driver_target + cpufreq_generic_suspend + cpufreq_register_governor + cpufreq_register_notifier + cpufreq_unregister_governor + cpu_have_feature + cpu_hwcaps + cpu_latency_qos_add_request + cpu_latency_qos_update_request + cpu_number + __cpu_online_mask + __cpu_possible_mask + cpus_read_lock + cpus_read_unlock + crc16 + crc32_le + csum_partial + _ctype + default_llseek + delayed_work_timer_fn + del_timer + del_timer_sync + destroy_workqueue + dev_addr_mod + dev_close + dev_driver_string + _dev_err + dev_err_probe + dev_fwnode + dev_get_regmap + dev_get_tstats64 + device_create + device_create_file + device_destroy + device_get_child_node_count + device_get_match_data + device_get_named_child_node + device_get_next_child_node + device_initialize + device_link_add + device_link_del + device_property_match_string + device_property_present + device_property_read_string + device_property_read_u32_array + device_property_read_u8_array + device_remove_file + device_set_wakeup_capable + device_set_wakeup_enable + device_unregister + device_wakeup_disable + device_wakeup_enable + _dev_info + __dev_kfree_skb_any + devm_add_action + devm_backlight_device_register + devm_clk_bulk_get + devm_clk_bulk_get_all + devm_clk_get + devm_clk_get_optional + devm_clk_hw_register + devm_clk_register + devm_devfreq_add_device + devm_devfreq_event_add_edev + devm_device_add_group + devm_extcon_dev_allocate + devm_extcon_dev_register + devm_free_irq + devm_fwnode_gpiod_get_index + devm_get_clk_from_child + devm_gpiochip_add_data_with_key + devm_gpiod_get + devm_gpiod_get_index + devm_gpiod_get_index_optional + devm_gpiod_get_optional + devm_gpio_request + devm_gpio_request_one + devm_hwrng_register + devm_iio_channel_get + devm_iio_device_alloc + __devm_iio_device_register + devm_input_allocate_device + devm_ioremap + devm_ioremap_resource + devm_kasprintf + devm_kfree + devm_kmalloc + devm_kmemdup + devm_kstrdup + devm_led_classdev_register_ext + devm_mfd_add_devices + devm_nvmem_register + devm_of_clk_add_hw_provider + devm_of_phy_get + __devm_of_phy_provider_register + devm_phy_create + devm_phy_get + 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 + devm_power_supply_register + devm_pwm_get + devm_regmap_field_alloc + __devm_regmap_init + __devm_regmap_init_i2c + __devm_regmap_init_mmio_clk + devm_regulator_bulk_get + devm_regulator_get + devm_regulator_get_optional + devm_regulator_register + devm_remove_action + devm_request_threaded_irq + devm_reset_control_array_get + __devm_reset_control_get + devm_rtc_allocate_device + __devm_rtc_register_device + devm_snd_dmaengine_pcm_register + devm_snd_soc_register_card + devm_snd_soc_register_component + devm_usb_get_phy + _dev_notice + dev_open + dev_pm_opp_clear_config + dev_pm_opp_disable + dev_pm_opp_find_freq_ceil + dev_pm_opp_find_freq_floor + dev_pm_opp_get_freq + dev_pm_opp_get_opp_count + dev_pm_opp_get_opp_table + dev_pm_opp_get_supplies + dev_pm_opp_get_voltage + dev_pm_opp_of_get_sharing_cpus + dev_pm_opp_of_remove_table + dev_pm_opp_put + dev_pm_opp_put_opp_table + dev_pm_opp_set_config + dev_pm_opp_set_rate + _dev_printk + devres_add + __devres_alloc_node + devres_free + dev_set_name + _dev_warn + disable_irq + disable_irq_nosync + dma_alloc_attrs + dma_buf_attach + dma_buf_begin_cpu_access + dma_buf_detach + dma_buf_end_cpu_access + dma_buf_export + dma_buf_fd + dma_buf_get + dma_buf_map_attachment + dma_buf_mmap + dma_buf_put + 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 + dma_free_attrs + dma_get_sgtable_attrs + dma_heap_add + dma_heap_get_name + dmam_alloc_attrs + dma_map_page_attrs + dma_map_resource + dma_map_sg_attrs + dma_map_sgtable + dmam_free_coherent + dma_mmap_attrs + dma_release_channel + dma_request_chan + dma_set_coherent_mask + dma_set_mask + dma_sync_sg_for_cpu + dma_sync_sg_for_device + dma_sync_single_for_cpu + dma_sync_single_for_device + dma_unmap_page_attrs + dma_unmap_resource + dma_unmap_sg_attrs + do_trace_netlink_extack + down + down_read + down_write + driver_unregister + dummy_irq_chip + enable_irq + eth_mac_addr + ethtool_op_get_link + ethtool_op_get_ts_info + eth_type_trans + eth_validate_addr + extcon_get_edev_by_phandle + extcon_get_state + extcon_register_notifier + extcon_set_property_capability + extcon_set_state + extcon_set_state_sync + extcon_unregister_notifier + fd_install + _find_first_bit + _find_first_zero_bit + _find_next_bit + _find_next_zero_bit + finish_wait + flush_delayed_work + flush_work + __flush_workqueue + __folio_put + fortify_panic + fput + free_iova_fast + free_irq + free_netdev + __free_pages + free_pages + freq_qos_add_request + freq_qos_remove_request + freq_qos_update_request + fwnode_device_is_available + fwnode_get_name + fwnode_graph_get_next_endpoint + fwnode_graph_get_port_parent + fwnode_graph_get_remote_endpoint + fwnode_graph_get_remote_port_parent + fwnode_handle_put + fwnode_property_present + fwnode_property_read_u32_array + gcd + generic_handle_domain_irq + generic_mii_ioctl + __genphy_config_aneg + genphy_read_status + genphy_resume + genphy_soft_reset + genphy_suspend + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_create + gen_pool_destroy + gen_pool_free_owner + get_cpu_device + get_device + __get_free_pages + get_random_bytes + get_unused_fd_flags + get_user_pages_remote + get_zeroed_page + gic_nonsecure_priorities + gpiochip_add_pin_range + gpiochip_generic_free + gpiochip_generic_request + gpiochip_get_data + gpiod_cansleep + gpiod_direction_input + gpiod_direction_output + gpiod_direction_output_raw + gpiod_get_optional + gpiod_get_raw_value + gpiod_get_value + gpiod_get_value_cansleep + gpiod_set_consumer_name + gpiod_set_raw_value + gpiod_set_raw_value_cansleep + gpiod_set_value + gpiod_set_value_cansleep + gpiod_to_irq + gpio_free + gpio_request + gpio_to_desc + handle_nested_irq + handle_simple_irq + hdmi_audio_infoframe_init + hdmi_audio_infoframe_pack + hdmi_drm_infoframe_pack + hdmi_infoframe_pack + hdmi_vendor_infoframe_pack + hrtimer_cancel + hrtimer_forward + hrtimer_init + hrtimer_start_range_ns + i2c_adapter_type + i2c_add_adapter + i2c_add_numbered_adapter + i2c_del_adapter + i2c_del_driver + 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 + i2c_smbus_xfer + i2c_transfer + i2c_transfer_buffer_flags + i2c_verify_client + idr_alloc + idr_destroy + idr_find + idr_for_each + idr_get_next + idr_preload + idr_remove + iio_buffer_init + iio_buffer_put + iio_device_attach_buffer + iio_push_to_buffers + iio_read_channel_processed + init_net + __init_rwsem + __init_swait_queue_head + init_timer_key + init_wait_entry + __init_waitqueue_head + input_allocate_device + input_event + input_ff_create_memless + input_free_device + input_mt_init_slots + input_mt_report_slot_state + 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_get_domain_for_dev + iommu_group_get + iommu_group_put + iommu_map + iommu_map_sg + iommu_set_fault_handler + iommu_unmap + ioremap_prot + iounmap + __irq_apply_affinity_hint + irq_create_mapping_affinity + irq_dispose_mapping + __irq_domain_add + irq_domain_remove + irq_get_irq_data + irq_modify_status + irq_of_parse_and_map + __irq_resolve_mapping + irq_set_chained_handler_and_data + irq_set_chip + irq_set_chip_and_handler_name + irq_set_chip_data + irq_set_irq_type + irq_set_irq_wake + irq_to_desc + is_vmalloc_addr + jiffies + jiffies_to_msecs + kasan_flag_enabled + kasprintf + kernel_neon_begin + kernel_neon_end + __kfifo_alloc + __kfifo_free + __kfifo_in + __kfifo_out + kfree + kfree_sensitive + kfree_skb_reason + kimage_voffset + __kmalloc + kmalloc_caches + kmalloc_large + kmalloc_trace + kmem_cache_alloc + kmem_cache_create + kmem_cache_destroy + kmemdup + kobject_create_and_add + kobject_init_and_add + kobject_put + kstrdup + kstrdup_const + kstrtoint + kstrtoll + kstrtouint + kstrtouint_from_user + kstrtoull + kthread_create_on_node + kthread_flush_worker + kthread_queue_work + kthread_should_stop + kthread_stop + ktime_get + ktime_get_mono_fast_ns + ktime_get_real_ts64 + ktime_get_with_offset + kvfree + kvfree_call_rcu + kvmalloc_node + led_classdev_register_ext + led_classdev_unregister + led_set_brightness_nosleep + led_trigger_register + led_trigger_unregister + __list_add_valid + __list_del_entry_valid + __local_bh_enable_ip + log_post_read_mmio + log_post_write_mmio + log_read_mmio + log_write_mmio + mdiobus_alloc_size + mdiobus_free + mdiobus_read + mdiobus_unregister + mdiobus_write + media_create_pad_link + media_device_cleanup + media_device_init + __media_device_register + media_device_unregister + media_entity_pads_init + media_graph_walk_cleanup + media_graph_walk_init + media_graph_walk_next + media_graph_walk_start + media_pad_remote_pad_first + memcpy + __memcpy_fromio + __memcpy_toio + memdup_user + memmove + mem_section + memset + __memset_io + memstart_addr + mfd_add_devices + mfd_remove_devices + mii_check_media + mii_ethtool_gset + mii_nway_restart + 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 + __mmap_lock_do_trace_acquire_returned + __mmap_lock_do_trace_released + __mmap_lock_do_trace_start_locking + mmc_cqe_request_done + mmc_of_parse + mmc_request_done + __mmdrop + mod_delayed_work_on + mod_timer + module_layout + module_put + __msecs_to_jiffies + msleep + msleep_interruptible + __mutex_init + mutex_is_locked + mutex_lock + mutex_lock_interruptible + mutex_trylock + mutex_unlock + napi_gro_receive + __netdev_alloc_skb + netdev_err + netdev_info + netdev_update_features + netdev_warn + netif_carrier_off + netif_carrier_on + netif_rx + netif_tx_wake_queue + netlink_unicast + net_ratelimit + nla_memcpy + __nla_parse + nla_put + nla_reserve + nonseekable_open + noop_llseek + nr_cpu_ids + ns_to_kernel_old_timeval + ns_to_timespec64 + nvmem_cell_get + nvmem_cell_put + nvmem_cell_read + of_address_to_resource + of_alias_get_id + of_clk_add_hw_provider + of_clk_add_provider + of_clk_del_provider + of_clk_get + of_clk_get_by_name + of_clk_get_parent_count + of_clk_hw_simple_get + of_clk_src_onecell_get + of_clk_src_simple_get + of_count_phandle_with_args + of_device_get_match_data + of_device_is_available + of_device_is_compatible + of_drm_find_bridge + of_drm_find_panel + of_find_compatible_node + 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 + of_get_child_by_name + of_get_drm_display_mode + of_get_i2c_adapter_by_node + of_get_named_gpio_flags + of_get_next_available_child + of_get_next_child + of_get_parent + of_get_property + of_get_regulator_init_data + of_graph_get_endpoint_by_regs + of_graph_get_next_endpoint + of_graph_get_remote_node + of_graph_get_remote_port_parent + of_graph_parse_endpoint + of_iomap + of_irq_get_byname + of_machine_is_compatible + of_match_device + of_match_node + of_node_name_eq + of_nvmem_cell_get + __of_parse_phandle_with_args + of_phy_simple_xlate + of_property_count_elems_of_size + of_property_match_string + of_property_read_string + of_property_read_string_helper + of_property_read_u32_index + of_property_read_u64 + of_property_read_u64_index + of_property_read_variable_u32_array + of_property_read_variable_u8_array + of_prop_next_string + of_regulator_match + of_reserved_mem_device_init_by_idx + __of_reset_control_get + of_usb_get_dr_mode_by_phy + of_usb_host_tpl_support + page_pinner_inited + __page_pinner_put_page + panic_notifier_list + param_get_int + param_ops_bool + param_ops_charp + param_ops_int + param_ops_string + param_ops_uint + pcie_capability_clear_and_set_word + pci_read_config_dword + pci_write_config_dword + __per_cpu_offset + perf_trace_buf_alloc + perf_trace_run_bpf_submit + phy_attached_info + phy_configure + phy_drivers_register + phy_drivers_unregister + phy_exit + phy_init + phy_mipi_dphy_config_validate + 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 + pinctrl_pm_select_default_state + pinctrl_pm_select_idle_state + 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_device_put + platform_device_register_full + platform_device_unregister + __platform_driver_probe + __platform_driver_register + platform_driver_unregister + platform_get_ethdev_address + platform_get_irq + platform_get_irq_byname + platform_get_irq_optional + platform_get_resource + platform_get_resource_byname + pm_clk_create + pm_clk_destroy + pm_power_off + __pm_relax + pm_relax + __pm_runtime_disable + pm_runtime_enable + pm_runtime_forbid + pm_runtime_force_resume + pm_runtime_force_suspend + pm_runtime_get_if_active + __pm_runtime_idle + __pm_runtime_resume + pm_runtime_set_autosuspend_delay + __pm_runtime_set_status + __pm_runtime_suspend + __pm_runtime_use_autosuspend + __pm_stay_awake + pm_stay_awake + pm_wakeup_dev_event + pm_wakeup_ws_event + power_supply_am_i_supplied + power_supply_changed + power_supply_class + power_supply_get_battery_info + power_supply_get_by_name + power_supply_get_by_phandle + power_supply_get_drvdata + power_supply_get_property + power_supply_register + power_supply_reg_notifier + power_supply_unregister + preempt_schedule + preempt_schedule_notrace + prepare_to_wait_event + print_hex_dump + _printk + proc_create + proc_create_data + proc_dointvec + proc_mkdir + pskb_expand_head + __pskb_pull_tail + put_device + __put_task_struct + put_unused_fd + pwm_adjust_config + pwm_apply_state + queue_delayed_work_on + queue_work_on + ___ratelimit + rational_best_approximation + _raw_read_lock_irqsave + _raw_read_unlock_irqrestore + _raw_spin_lock + _raw_spin_lock_bh + _raw_spin_lock_irq + _raw_spin_lock_irqsave + _raw_spin_trylock + _raw_spin_unlock + _raw_spin_unlock_bh + _raw_spin_unlock_irq + _raw_spin_unlock_irqrestore + _raw_write_lock_irqsave + _raw_write_unlock_irqrestore + rb_erase + rb_insert_color + rb_next + __rcu_read_lock + __rcu_read_unlock + rdev_get_drvdata + rdev_get_id + refcount_warn_saturate + regcache_cache_only + regcache_mark_dirty + regcache_sync + register_chrdev_region + register_inetaddr_notifier + register_netdev + register_netdevice + register_netdevice_notifier + register_pm_notifier + register_reboot_notifier + register_restart_handler + regmap_bulk_read + regmap_bulk_write + regmap_field_read + regmap_field_update_bits_base + regmap_irq_get_domain + regmap_irq_get_virq + regmap_multi_reg_write + regmap_raw_read + regmap_raw_write + regmap_read + regmap_update_bits_base + regmap_write + regulator_bulk_disable + regulator_bulk_enable + regulator_disable + regulator_disable_regmap + regulator_enable + regulator_enable_regmap + regulator_get + regulator_get_optional + regulator_get_voltage + regulator_get_voltage_sel_regmap + regulator_is_enabled + regulator_is_enabled_regmap + regulator_list_voltage_linear + regulator_list_voltage_linear_range + regulator_map_voltage_linear + regulator_map_voltage_linear_range + regulator_put + regulator_register_notifier + regulator_set_ramp_delay_regmap + regulator_set_voltage + regulator_set_voltage_sel_regmap + regulator_set_voltage_time_sel + regulator_unregister + regulator_unregister_notifier + release_firmware + remap_pfn_range + remove_proc_entry + request_firmware + request_threaded_irq + reset_control_assert + reset_control_deassert + rfkill_alloc + rfkill_destroy + rfkill_register + rfkill_set_hw_state_reason + rfkill_unregister + round_jiffies_relative + rtc_class_open + rtc_read_time + rtc_time64_to_tm + rtc_tm_to_time64 + rtc_valid_tm + rtnl_is_locked + rtnl_lock + rtnl_unlock + scatterwalk_map_and_copy + sched_clock + sched_set_fifo + schedule + schedule_timeout + scnprintf + seq_lseek + seq_printf + seq_putc + seq_puts + seq_read + set_page_dirty_lock + sg_alloc_table + sg_alloc_table_from_pages_segment + sg_free_table + sg_init_one + sg_init_table + sg_nents + sg_next + simple_attr_open + simple_attr_release + simple_read_from_buffer + simple_strtol + simple_strtoul + single_open + single_release + skb_add_rx_frag + skb_clone + skb_copy + skb_copy_bits + skb_copy_expand + skb_pull + skb_push + skb_put + skb_trim + skcipher_alloc_instance_simple + skcipher_register_instance + skcipher_walk_done + skcipher_walk_virt + snd_ctl_boolean_mono_info + snd_pcm_format_width + snd_pcm_stop_xrun + snd_soc_add_component_controls + snd_soc_add_dai_controls + snd_soc_card_jack_new_pins + snd_soc_component_read + snd_soc_component_set_jack + snd_soc_component_update_bits + snd_soc_component_write + snd_soc_daifmt_clock_provider_from_bitmap + snd_soc_daifmt_parse_clock_provider_raw + snd_soc_daifmt_parse_format + snd_soc_dai_set_sysclk + snd_soc_dapm_add_routes + snd_soc_dapm_disable_pin_unlocked + snd_soc_dapm_force_enable_pin_unlocked + snd_soc_dapm_get_enum_double + snd_soc_dapm_get_volsw + snd_soc_dapm_new_controls + snd_soc_dapm_put_enum_double + snd_soc_dapm_put_volsw + snd_soc_dapm_sync_unlocked + snd_soc_get_dai_name + snd_soc_get_enum_double + snd_soc_get_volsw + snd_soc_info_enum_double + snd_soc_info_volsw + snd_soc_jack_add_gpios + snd_soc_jack_report + snd_soc_of_parse_audio_routing + snd_soc_of_parse_card_name + snd_soc_params_to_frame_size + snd_soc_pm_ops + snd_soc_put_enum_double + snd_soc_put_volsw + snd_soc_unregister_component + snprintf + sort + __spi_register_driver + spi_setup + spi_sync + sprintf + sscanf + __stack_chk_fail + strcasecmp + strchr + strcmp + strcpy + strlcat + strlcpy + strlen + strncasecmp + strncmp + strncpy + strnlen + strrchr + strscpy + strsep + strstr + __sw_hweight16 + __sw_hweight32 + __sw_hweight64 + __sw_hweight8 + swiotlb_max_segment + sync_file_create + sync_file_get_fence + synchronize_irq + synchronize_net + synchronize_rcu + syscon_node_to_regmap + syscon_regmap_lookup_by_phandle + sysfs_create_file_ns + sysfs_create_group + sysfs_create_link + sysfs_remove_file_ns + sysfs_remove_group + sysfs_remove_link + sysfs_streq + system_freezable_wq + system_highpri_wq + system_long_wq + system_power_efficient_wq + system_state + system_wq + tasklet_init + tasklet_kill + __tasklet_schedule + tasklet_setup + tasklet_unlock_wait + __task_pid_nr_ns + tcpm_tcpc_reset + thermal_zone_get_zone_by_name + trace_event_buffer_commit + trace_event_buffer_reserve + trace_event_printf + trace_event_raw_init + trace_event_reg + trace_handle_return + __traceiter_mmap_lock_acquire_returned + __traceiter_mmap_lock_released + __traceiter_mmap_lock_start_locking + __tracepoint_mmap_lock_acquire_returned + __tracepoint_mmap_lock_released + __tracepoint_mmap_lock_start_locking + trace_print_array_seq + trace_raw_output_prep + __trace_trigger_soft_disabled + typec_mux_get_drvdata + typec_mux_register + typec_mux_unregister + typec_switch_get_drvdata + typec_switch_register + typec_switch_unregister + __udelay + unregister_chrdev_region + unregister_inetaddr_notifier + unregister_netdev + unregister_netdevice_notifier + unregister_netdevice_queue + unregister_reboot_notifier + unregister_sysctl_table + up + update_devfreq + up_read + up_write + usb_add_hcd + usb_alloc_urb + usb_autopm_get_interface + usb_autopm_put_interface + usb_calc_bus_time + usb_control_msg + usb_create_hcd + usb_debug_root + usb_deregister + usb_deregister_dev + usb_disabled + usb_free_urb + usb_hcd_check_unlink_urb + usb_hcd_giveback_urb + usb_hcd_link_urb_to_ep + usb_hcd_resume_root_hub + usb_hcd_unlink_urb_from_ep + usb_put_hcd + usb_register_dev + usb_register_driver + usb_remove_hcd + usb_set_interface + usb_submit_urb + __usecs_to_jiffies + usleep_range_state + vb2_buffer_done + vb2_dma_contig_memops + vb2_fop_mmap + vb2_fop_poll + vb2_fop_release + vb2_ioctl_create_bufs + vb2_ioctl_dqbuf + vb2_ioctl_expbuf + vb2_ioctl_prepare_buf + vb2_ioctl_qbuf + vb2_ioctl_querybuf + vb2_ioctl_reqbufs + vb2_ioctl_streamoff + vb2_ioctl_streamon + vb2_ops_wait_finish + vb2_ops_wait_prepare + vb2_plane_cookie + vb2_plane_vaddr + vb2_queue_init + vb2_queue_release + vb2_vmalloc_memops + vfree + vmalloc + vmap + vm_get_page_prot + vm_map_pages + vsnprintf + vunmap + vzalloc + wait_for_completion + wait_for_completion_timeout + __wake_up + wake_up_process + wakeup_source_add + wakeup_source_remove + __warn_printk + work_busy + +# required by act8865-regulator.ko + regulator_set_pull_down_regmap + +# required by adc-keys.ko + iio_get_channel_type + input_set_poll_interval + input_setup_polling + +# required by aes-ce-ccm.ko + ce_aes_expandkey + skcipher_walk_aead_decrypt + skcipher_walk_aead_encrypt + +# required by analogix_dp.ko + drm_atomic_get_old_connector_for_encoder + +# required by aspm_ext.ko + pci_find_capability + pci_find_ext_capability + +# required by bcmdhd.ko + alloc_etherdev_mqs + cpu_bit_bitmap + down_interruptible + down_timeout + get_random_u32 + iwe_stream_add_event + iwe_stream_add_point + iwe_stream_add_value + __kfifo_init + kobject_uevent + kthread_complete_and_exit + mmc_set_data_timeout + mmc_sw_reset + mmc_wait_for_req + netdev_state_change + __netlink_kernel_create + netlink_kernel_release + nla_put_nohdr + __nlmsg_put + _raw_read_lock_bh + _raw_read_unlock_bh + sched_set_fifo_low + sched_set_normal + set_cpus_allowed_ptr + __skb_pad + sock_wfree + sprint_symbol + strcat + strspn + sys_tz + unregister_pm_notifier + vprintk + wireless_send_event + +# required by bifrost_kbase.ko + __arch_clear_user + __bitmap_weight + cache_line_size + clear_page + __ClearPageMovable + complete_all + devfreq_add_device + devfreq_cooling_em_register + devfreq_cooling_unregister + devfreq_remove_device + dev_pm_opp_find_freq_exact + dma_fence_default_wait + dma_fence_remove_callback + downgrade_write + down_read_trylock + dump_stack + find_get_pid + find_vma_intersection + __folio_lock + freezer_active + freezing_slow_path + generic_file_llseek + get_user_pages + get_user_pages_fast + hrtimer_active + iomem_resource + kobject_del + kstrndup + kstrtobool_from_user + ktime_get_raw + ktime_get_raw_ts64 + mas_empty_area_rev + memchr + of_dma_is_coherent + of_property_read_variable_u64_array + param_array_ops + param_ops_byte + pid_task + pin_user_pages + pin_user_pages_remote + put_pid + rb_first + rb_prev + rb_replace_node + __refrigerator + register_oom_notifier + register_shrinker + __release_region + remap_vmalloc_range + __request_region + seq_open + __seq_open_private + seq_release + seq_release_private + seq_write + set_freezable + __SetPageMovable + shmem_file_setup + simple_open + strcspn + _totalram_pages + __traceiter_gpu_mem_total + trace_output_call + __tracepoint_gpu_mem_total + trace_print_flags_seq + trace_print_symbols_seq + try_module_get + unlock_page + unmap_mapping_range + unpin_user_page + unregister_oom_notifier + unregister_shrinker + vmalloc_user + vmf_insert_pfn_prot + +# required by bq25890_charger.ko + devm_regmap_field_bulk_alloc + power_supply_get_property_from_supplier + +# required by cfg80211.ko + bpf_trace_run10 + bpf_trace_run8 + __dev_change_net_namespace + __dev_get_by_index + dev_get_by_index + device_add + device_del + device_rename + genlmsg_multicast_allns + genlmsg_put + genl_register_family + genl_unregister_family + get_net_ns_by_fd + get_net_ns_by_pid + inet_csk_get_port + init_uts_ns + key_create_or_update + key_put + keyring_alloc + kobject_uevent_env + ktime_get_coarse_with_offset + memcmp + netlink_broadcast + netlink_register_notifier + netlink_unregister_notifier + net_ns_type_operations + nla_find + nla_put_64bit + __nla_validate + of_prop_next_u32 + __put_net + register_pernet_device + request_firmware_nowait + rfkill_blocked + rfkill_resume_polling + __sock_create + sock_release + unregister_pernet_device + verify_pkcs7_signature + wireless_nlevent_flush + +# required by clk-link.ko + pm_clk_add + pm_clk_resume + pm_clk_suspend + +# required by clk-out.ko + __clk_hw_register_gate + of_clk_parent_fill + +# required by clk-rk628.ko + devm_reset_controller_register + +# required by clk-rockchip-regmap.ko + clk_hw_get_num_parents + clk_hw_get_parent_by_index + divider_recalc_rate + divider_round_rate_parent + +# required by clk-rockchip.ko + clk_divider_ops + clk_divider_ro_ops + clk_fixed_factor_ops + clk_fractional_divider_general_approximation + clk_fractional_divider_ops + __clk_get_hw + clk_hw_register_composite + clk_hw_round_rate + clk_hw_unregister_composite + clk_mux_ops + clk_mux_ro_ops + clk_register_divider_table + clk_register_fixed_factor + clk_register_gate + clk_register_mux_table + match_string + reset_controller_register + +# required by clk-scmi.ko + clk_hw_set_rate_range + of_clk_hw_onecell_get + scmi_driver_register + scmi_driver_unregister + +# required by cm3218.ko + i2c_smbus_write_word_data + +# required by cma_heap.ko + cma_get_name + dma_heap_get_drvdata + +# required by cpufreq-dt.ko + cpufreq_enable_boost_support + cpufreq_freq_attr_scaling_available_freqs + cpufreq_freq_attr_scaling_boost_freqs + cpufreq_generic_frequency_table_verify + cpufreq_generic_get + cpufreq_register_driver + cpufreq_unregister_driver + dev_pm_opp_free_cpufreq_table + dev_pm_opp_get_max_transition_latency + dev_pm_opp_get_sharing_cpus + dev_pm_opp_get_suspend_opp_freq + dev_pm_opp_init_cpufreq_table + dev_pm_opp_of_cpumask_add_table + dev_pm_opp_of_cpumask_remove_table + dev_pm_opp_of_register_em + dev_pm_opp_set_sharing_cpus + policy_has_boost_freq + +# required by cpufreq_ondemand.ko + cpufreq_cpu_get_raw + cpufreq_dbs_governor_exit + cpufreq_dbs_governor_init + cpufreq_dbs_governor_limits + cpufreq_dbs_governor_start + cpufreq_dbs_governor_stop + cpufreq_table_index_unsorted + dbs_update + get_cpu_idle_time_us + gov_update_cpu_data + sampling_rate_store + +# required by cqhci.ko + devm_blk_crypto_profile_init + +# required by cryptodev.ko + crypto_alloc_akcipher + flush_dcache_page + krealloc + register_sysctl_table + sg_last + +# required by cw221x_battery.ko + power_supply_is_system_supplied + +# required by display-connector.ko + drm_atomic_get_new_bridge_state + drm_probe_ddc + +# required by dm9601.ko + mii_link_ok + +# required by drm_display_helper.ko + drm_atomic_get_new_private_obj_state + drm_atomic_get_old_private_obj_state + drm_atomic_get_private_obj_state + __drm_atomic_helper_private_obj_duplicate_state + drm_atomic_private_obj_fini + drm_atomic_private_obj_init + drm_connector_register + drm_crtc_add_crc_entry + __drm_crtc_commit_free + drm_crtc_commit_wait + drm_crtc_wait_one_vblank + __drm_debug + drm_display_mode_from_cea_vic + drm_edid_duplicate + drm_edid_get_monitor_name + drm_modeset_lock_single_interruptible + drm_object_property_set_value + __drm_printfn_debug + drm_sysfs_connector_status_event + hdmi_drm_infoframe_init + memchr_inv + request_firmware_direct + +# required by drm_dma_helper.ko + dma_alloc_pages + dma_free_pages + dma_mmap_pages + drm_atomic_helper_damage_iter_init + drm_atomic_helper_damage_iter_next + drm_format_info_block_height + drm_format_info_block_width + drm_gem_create_mmap_offset + drm_gem_fb_get_obj + drm_gem_private_object_init + +# required by dw-hdmi-hdcp.ko + kstrtobool + sha1_init + sha1_transform + +# required by dw-hdmi-qp.ko + drm_mode_equal + hdmi_avi_infoframe_pack_only + +# required by dw-hdmi.ko + drm_connector_attach_hdr_output_metadata_property + drm_connector_attach_max_bpc_property + drm_default_rgb_quant_range + +# required by dw-mipi-dsi.ko + drm_panel_bridge_remove + +# required by dw_mmc-rockchip.ko + clk_get_phase + mmc_send_tuning + +# required by dw_mmc.ko + device_property_read_string_array + mmc_add_host + mmc_alloc_host + mmc_can_gpio_cd + mmc_detect_change + mmc_free_host + mmc_gpio_get_cd + mmc_gpio_get_ro + mmc_regulator_get_supply + mmc_regulator_set_ocr + mmc_regulator_set_vqmmc + mmc_remove_host + sdio_signal_irq + sg_miter_next + sg_miter_start + sg_miter_stop + +# required by dw_wdt.ko + watchdog_init_timeout + watchdog_register_device + watchdog_set_restart_priority + watchdog_unregister_device + +# required by dwc2.ko + __bitmap_clear + bitmap_find_next_zero_area_off + kmem_cache_free + of_usb_update_otg_caps + phy_reset + usb_add_gadget_udc + usb_del_gadget_udc + usb_ep_set_maxpacket_limit + usb_gadget_giveback_request + usb_gadget_map_request + usb_gadget_set_state + usb_gadget_unmap_request + usb_get_dr_mode + usb_get_role_switch_default_mode + usb_hcd_map_urb_for_dma + usb_hcd_unmap_urb_for_dma + usb_hub_clear_tt_buffer + usb_phy_set_charger_current + usb_role_switch_get_drvdata + usb_role_switch_get_role + usb_role_switch_register + usb_role_switch_unregister + usb_speed_string + usb_wakeup_enabled_descendants + +# required by dwmac-rockchip.ko + csum_tcpudp_nofold + ip_send_check + of_get_phy_mode + +# required by gpio-regulator.ko + gpiod_count + +# required by gpio-rockchip.ko + gpiochip_add_data_with_key + gpiochip_relres_irq + gpiochip_remove + gpiochip_reqres_irq + handle_edge_irq + handle_level_irq + __irq_alloc_domain_generic_chips + irq_gc_ack_set_bit + irq_gc_mask_clr_bit + irq_gc_mask_set_bit + irq_gc_set_wake + irq_generic_chip_ops + irq_get_domain_generic_chip + of_pinctrl_get + +# required by i2c-dev.ko + bus_register_notifier + bus_unregister_notifier + device_for_each_child + i2c_bus_type + i2c_for_each_dev + sysfs_emit + +# required by i2c-gpio.ko + desc_to_gpio + i2c_bit_add_numbered_bus + +# required by i2c-mux.ko + __i2c_transfer + rt_mutex_lock + rt_mutex_trylock + rt_mutex_unlock + +# required by i2c-rk3x.ko + i2c_parse_fw_timings + unregister_restart_handler + +# required by industrialio-buffer-cb.ko + iio_channel_get_all + iio_channel_release_all + iio_update_buffers + +# required by industrialio-triggered-buffer.ko + iio_alloc_pollfunc + iio_dealloc_pollfunc + iio_device_id + +# required by io-domain.ko + _dev_crit + +# required by kalmia.ko + usb_bulk_msg + +# required by kfifo_buf.ko + __kfifo_from_user + __kfifo_to_user + +# required by leds-gpio.ko + led_init_default_state_get + +# required by leds-rgb13h.ko + led_classdev_flash_register_ext + led_classdev_flash_unregister + +# required by ledtrig-heartbeat.ko + avenrun + +# required by mac80211.ko + alloc_netdev_mqs + __alloc_percpu_gfp + arc4_crypt + arc4_setkey + call_rcu + crc32_be + crypto_shash_digest + crypto_shash_finup + crypto_shash_setkey + dev_alloc_name + dev_fetch_sw_netstats + __dev_queue_xmit + ether_setup + free_percpu + get_random_u16 + __hw_addr_init + __hw_addr_sync + __hw_addr_unsync + kernel_param_lock + kernel_param_unlock + kfree_skb_list_reason + ktime_get_seconds + netdev_set_default_ethtool_ops + netif_receive_skb + netif_receive_skb_list + netif_tx_stop_all_queues + ___pskb_trim + rcu_barrier + register_inet6addr_notifier + rhashtable_free_and_destroy + rhashtable_insert_slow + rhltable_init + __rht_bucket_nested + rht_bucket_nested + rht_bucket_nested_insert + round_jiffies + round_jiffies_up + skb_checksum_help + skb_clone_sk + skb_complete_wifi_ack + skb_dequeue + skb_ensure_writable + __skb_get_hash + __skb_gso_segment + skb_queue_head + skb_queue_purge + skb_queue_tail + unregister_inet6addr_notifier + unregister_netdevice_many + +# required by max96755f.ko + kstrtou8 + +# required by ohci-hcd.ko + dma_pool_alloc + dma_pool_create + dma_pool_destroy + dma_pool_free + gen_pool_dma_alloc_align + gen_pool_dma_zalloc_align + sb800_prefetch + schedule_timeout_uninterruptible + usb_amd_dev_put + usb_amd_quirk_pll_disable + usb_amd_quirk_pll_enable + usb_hc_died + usb_hcd_poll_rh_status + usb_hcds_loaded + usb_root_hub_lost_power + +# required by ohci-platform.ko + usb_hcd_platform_shutdown + +# required by optee-rng.ko + driver_register + +# required by optee.ko + alloc_pages_exact + __arm_smccc_hvc + bus_for_each_dev + device_register + free_pages_exact + mas_find + memremap + memunmap + pfn_is_map_memory + wait_for_completion_interruptible + +# required by panel-simple.ko + drm_bus_flags_from_videomode + drm_connector_set_panel_orientation + drm_panel_of_backlight + drm_panel_remove + mipi_dsi_compression_mode + mipi_dsi_dcs_get_display_brightness + mipi_dsi_dcs_set_display_brightness + mipi_dsi_dcs_write_buffer + mipi_dsi_driver_register_full + mipi_dsi_driver_unregister + mipi_dsi_generic_write + mipi_dsi_picture_parameter_set + of_drm_get_panel_orientation + of_find_i2c_adapter_by_node + of_get_display_timing + videomode_from_timing + +# required by pcie-dw-rockchip.ko + device_release_driver + dw_pcie_find_ext_capability + dw_pcie_host_init + dw_pcie_link_up + dw_pcie_read + dw_pcie_read_dbi + dw_pcie_setup_rc + dw_pcie_write + dw_pcie_write_dbi + generic_handle_irq + pci_disable_link_state + pci_set_power_state + +# required by pcierockchiphost.ko + devm_pci_alloc_host_bridge + devm_pci_remap_cfg_resource + jiffies_to_usecs + of_pci_get_max_link_speed + pci_host_probe + pci_remove_root_bus + pci_stop_root_bus + regulator_get_current_limit + +# required by pcs_xpcs.ko + __bitmap_and + mdiobus_modify_changed + phylink_mii_c22_pcs_decode_state + phylink_mii_c22_pcs_encode_advertisement + +# required by phy-rockchip-inno-usb2.ko + devm_extcon_register_notifier + extcon_sync + +# required by phy-rockchip-inno-usb3.ko + usb_add_phy + +# required by phy-rockchip-samsung-hdptx-hdmi.ko + of_platform_device_create + +# required by phy-rockchip-usbdp.ko + usb_get_maximum_speed + +# required by pinctrl-rk628.ko + irq_domain_xlate_twocell + pinctrl_add_gpio_range + pinctrl_find_gpio_range_from_pin + +# required by pinctrl-rk805.ko + device_set_node + +# required by pinctrl-rockchip.ko + devm_kasprintf_strarray + of_find_node_by_phandle + of_platform_depopulate + of_platform_populate + pinconf_generic_parse_dt_config + pinctrl_force_default + pinctrl_force_sleep + pin_get_name + +# required by pl330.ko + amba_driver_register + amba_driver_unregister + dma_async_device_register + dma_async_device_unregister + dma_async_tx_descriptor_init + dmaengine_unmap_put + dma_get_slave_channel + loops_per_jiffy + of_dma_controller_free + of_dma_controller_register + pm_runtime_irq_safe + +# required by pm_domains.ko + clk_bulk_put + of_genpd_add_provider_onecell + panic + param_get_bool + param_set_bool + pm_clk_add_clk + pm_genpd_add_subdomain + pm_genpd_init + pm_genpd_remove + pm_wq + +# required by pwm-regulator.ko + regulator_map_voltage_iterate + +# required by pwm-rockchip.ko + __ndelay + pwmchip_add + pwmchip_remove + +# required by pwm_bl.ko + backlight_device_register + backlight_device_unregister + pwm_free + pwm_request + +# required by pwrseq_simple.ko + bitmap_alloc + devm_gpiod_get_array + gpiod_set_array_value_cansleep + mmc_pwrseq_register + mmc_pwrseq_unregister + +# required by reboot-mode.ko + devres_release + kernel_kobj + kfree_const + +# required by rfkill-rk.ko + rfkill_init_sw_state + rfkill_set_sw_state + +# required by rga3.ko + dma_fence_wait_timeout + find_vma + idr_alloc_cyclic + kstrdup_quotable_cmdline + mmput + +# required by rk628.ko + irq_domain_xlate_onetwocell + irq_set_parent + +# required by rk628_dsi.ko + bus_find_device + device_match_name + platform_bus_type + +# required by rk805-pwrkey.ko + devm_request_any_context_irq + +# required by rk806-core.ko + devm_regmap_add_irq_chip + +# required by rk806-spi.ko + spi_write_then_read + +# required by rk808-regulator.ko + gpiod_is_active_low + +# required by rk808.ko + devm_register_sys_off_handler + platform_device_add + platform_device_alloc + register_syscore_ops + regmap_add_irq_chip + regmap_del_irq_chip + unregister_syscore_ops + +# required by rk860x-regulator.ko + regulator_suspend_enable + +# required by rk_fiq_debugger.ko + console_lock + console_unlock + __cpuhp_setup_state + cpu_pm_register_notifier + of_irq_parse_one + oops_in_progress + platform_device_register + +# required by rk_headset_irq_hook_adc.ko + iio_read_channel_raw + +# required by rk_ircut.ko + drain_workqueue + +# required by rk_vcodec.ko + devm_iounmap + disable_hardirq + __fdget + __kthread_init_worker + kthread_worker_fn + proc_create_single_data + proc_remove + reserve_iova + +# required by rknpu.ko + dev_pm_domain_attach_by_name + dev_pm_domain_detach + drm_gem_handle_delete + drm_gem_mmap_obj + drm_gem_prime_export + drm_gem_prime_import_dev + of_dma_configure_id + set_user_nice + vmf_insert_mixed + vm_insert_page + +# required by rockchip-rng.ko + devm_of_iomap + +# required by rockchip_bus.ko + cpu_topology + +# required by rockchip_dmc_common.ko + down_write_trylock + +# required by rockchip_headset_core.ko + iio_channel_get + +# required by rockchip_iommu.ko + iommu_device_register + iommu_device_sysfs_add + iommu_device_sysfs_remove + iommu_group_alloc + iommu_group_ref_get + platform_irq_count + report_iommu_fault + +# required by rockchip_ipa.ko + of_get_compatible_child + +# required by rockchip_opp_select.ko + dev_pm_opp_of_add_table + regulator_get_linear_step + +# required by rockchip_pwm_remotectl.ko + __tasklet_hi_schedule + +# required by rockchip_saradc.ko + iio_get_time_ns + iio_trigger_notify_done + +# required by rockchip_system_monitor.ko + add_cpu + bitmap_parselist + compat_only_sysfs_link_entry_to_kobj + dev_pm_qos_add_request + dev_pm_qos_remove_request + dev_pm_qos_update_request + remove_cpu + thermal_zone_get_temp + +# required by rockchip_thermal.ko + devm_clk_put + devm_thermal_of_zone_register + thermal_zone_device_disable + thermal_zone_device_enable + thermal_zone_device_update + +# required by rtc-rk808.ko + rtc_update_irq + +# required by sg.ko + blk_execute_rq_nowait + blk_mq_free_request + blk_rq_map_user_io + blk_rq_unmap_user + cdev_alloc + class_interface_unregister + fasync_helper + get_sg_io_hdr + kill_fasync + __module_get + put_sg_io_hdr + _raw_write_lock_irq + _raw_write_unlock_irq + register_sysctl + scsi_alloc_request + scsi_autopm_get_device + scsi_autopm_put_device + scsi_block_when_processing_errors + scsi_cmd_allowed + scsi_command_size_tbl + scsi_device_get + scsi_device_put + scsi_ioctl + scsi_ioctl_block_when_processing_errors + scsi_normalize_sense + __scsi_print_sense + scsi_register_interface + sdev_prefix_printk + +# required by sii902x.ko + hdmi_avi_infoframe_pack + +# required by smsc.ko + devm_clk_get_optional_enabled + phy_error + phy_trigger_machine + +# required by smsc95xx.ko + __irq_domain_alloc_fwnode + irq_domain_free_fwnode + irq_domain_simple_ops + __mdiobus_register + net_selftest + net_selftest_get_count + net_selftest_get_strings + phy_connect_direct + phy_disconnect + phy_ethtool_get_link_ksettings + phy_ethtool_nway_reset + phy_ethtool_set_link_ksettings + phy_find_first + phy_get_pause + phy_init_hw + phy_mii_ioctl + phy_print_status + phy_start + phy_stop + usb_autopm_get_interface_no_resume + +# required by snd-soc-aw883xx.ko + snd_soc_register_component + +# required by snd-soc-es8316.ko + snd_pcm_hw_constraint_list + +# required by snd-soc-hdmi-codec.ko + snd_ctl_add + snd_ctl_new1 + snd_pcm_add_chmap_ctls + snd_pcm_create_iec958_consumer_default + snd_pcm_fill_iec958_consumer + snd_pcm_fill_iec958_consumer_hw_params + snd_pcm_hw_constraint_eld + snd_pcm_stop + +# required by snd-soc-rk817.ko + snd_soc_component_exit_regmap + snd_soc_component_init_regmap + +# required by snd-soc-rockchip-hdmi.ko + snd_soc_dapm_new_widgets + +# required by snd-soc-rockchip-multicodecs.ko + snd_soc_dapm_get_pin_switch + snd_soc_dapm_info_pin_switch + snd_soc_dapm_put_pin_switch + snd_soc_jack_add_zones + snd_soc_jack_get_type + +# required by snd-soc-rockchip-spdif.ko + snd_pcm_create_iec958_consumer_hw_params + +# required by snd-soc-rt5640.ko + regmap_register_patch + snd_soc_dapm_force_bias_level + +# required by snd-soc-simple-card-utils.ko + devm_kvasprintf + snd_pcm_hw_constraint_minmax + snd_soc_component_set_sysclk + snd_soc_dai_active + snd_soc_dai_set_tdm_slot + snd_soc_of_parse_audio_simple_widgets + snd_soc_of_parse_pin_switches + snd_soc_runtime_calc_hw + +# required by snd-soc-simple-card.ko + snd_soc_dai_link_set_capabilities + snd_soc_of_get_dai_name + snd_soc_of_parse_aux_devs + snd_soc_of_parse_node_prefix + snd_soc_of_parse_tdm_slot + +# required by spi-rockchip.ko + devm_spi_register_controller + __spi_alloc_controller + spi_controller_resume + spi_controller_suspend + +# required by spidev.ko + __register_chrdev + stream_open + __unregister_chrdev + +# required by stmmac-platform.ko + device_get_phy_mode + of_get_mac_address + of_phy_is_fixed_link + platform_get_irq_byname_optional + +# required by stmmac.ko + bpf_dispatcher_xdp_func + bpf_master_redirect_enabled_key + bpf_prog_put + bpf_stats_enabled_key + bpf_warn_invalid_xdp_action + devm_alloc_etherdev_mqs + dql_completed + dql_reset + ethtool_convert_legacy_u32_to_link_mode + ethtool_convert_link_mode_to_legacy_u32 + flow_block_cb_setup_simple + flow_rule_match_basic + flow_rule_match_ipv4_addrs + flow_rule_match_ports + flow_rule_match_vlan + fwnode_get_named_child_node + fwnode_get_phy_node + get_device_system_crosststamp + mdiobus_get_phy + mdio_device_create + mdio_device_free + __napi_alloc_skb + napi_complete_done + napi_disable + napi_enable + __napi_schedule + napi_schedule_prep + netdev_alert + netdev_pick_tx + netdev_rss_key_fill + netif_device_attach + netif_device_detach + netif_napi_add_weight + __netif_napi_del + netif_schedule_queue + netif_set_real_num_rx_queues + netif_set_real_num_tx_queues + __num_online_cpus + __of_mdiobus_register + page_pool_alloc_pages + page_pool_create + page_pool_destroy + page_pool_put_defragged_page + page_pool_release_page + phy_init_eee + phylink_connect_phy + phylink_create + phylink_destroy + phylink_disconnect_phy + phylink_ethtool_get_eee + phylink_ethtool_get_pauseparam + phylink_ethtool_get_wol + phylink_ethtool_ksettings_get + phylink_ethtool_ksettings_set + phylink_ethtool_nway_reset + phylink_ethtool_set_eee + phylink_ethtool_set_pauseparam + phylink_ethtool_set_wol + phylink_expects_phy + phylink_fwnode_phy_connect + phylink_generic_validate + phylink_get_eee_err + phylink_mii_ioctl + phylink_resume + phylink_speed_down + phylink_speed_up + phylink_start + phylink_stop + phylink_suspend + ptp_clock_event + ptp_clock_index + ptp_clock_register + ptp_clock_unregister + reset_control_reset + skb_tstamp_tx + __traceiter_xdp_exception + __tracepoint_xdp_exception + xdp_convert_zc_to_xdp_frame + xdp_do_flush + xdp_do_redirect + xdp_master_redirect + xdp_return_frame + xdp_return_frame_rx_napi + xdp_rxq_info_is_reg + __xdp_rxq_info_reg + xdp_rxq_info_reg_mem_model + xdp_rxq_info_unreg + xdp_rxq_info_unreg_mem_model + xdp_warn + xp_alloc + xp_dma_map + xp_dma_sync_for_cpu_slow + xp_dma_sync_for_device_slow + xp_dma_unmap + xp_free + xp_raw_get_dma + xp_set_rxq_info + xsk_clear_rx_need_wakeup + xsk_get_pool_from_qid + xsk_set_rx_need_wakeup + xsk_set_tx_need_wakeup + xsk_tx_completed + xsk_tx_peek_desc + xsk_tx_release + xsk_uses_need_wakeup + +# required by sw_sync.ko + dma_fence_free + dma_fence_signal_locked + __get_task_comm + +# required by system_heap.ko + dmabuf_page_pool_alloc + dmabuf_page_pool_create + dmabuf_page_pool_destroy + dmabuf_page_pool_free + dmabuf_page_pool_get_size + dma_heap_get_dev + __sg_page_iter_next + __sg_page_iter_start + +# required by tcpci_husb311.ko + tcpci_get_tcpm_port + tcpci_irq + tcpci_register_port + tcpci_unregister_port + +# required by tee.ko + add_uevent_var + bus_register + bus_unregister + class_find_device + crypto_shash_final + gen_pool_first_fit_align + gen_pool_virt_to_phys + get_kernel_pages + idr_replace + in_egroup_p + pin_user_pages_fast + unpin_user_pages + uuid_null + vmalloc_to_page + +# required by timer-rockchip.ko + clockevents_config_and_register + +# required by tps65132-regulator.ko + regulator_set_active_discharge_regmap + +# required by trancevibrator.ko + usb_get_dev + usb_put_dev + +# required by usblp.ko + add_wait_queue + default_wake_function + remove_wait_queue + stpcpy + usb_anchor_urb + usb_find_common_endpoints + usb_find_interface + usb_get_intf + usb_kill_anchored_urbs + usb_poison_anchored_urbs + usb_put_intf + usb_unanchor_urb + +# required by v4l2-async.ko + fwnode_handle_get + media_create_ancillary_link + +# required by v4l2-fwnode.ko + fwnode_graph_parse_endpoint + fwnode_property_get_reference_args + fwnode_property_read_string + fwnode_property_read_u64_array + +# required by video_rkcif.ko + media_entity_setup_link + +# required by video_rkisp.ko + param_ops_ullong + v4l2_ctrl_poll + +# 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 From 2f3d6aa0c97acf60a88e8173bc98ce6a519e72b4 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Wed, 13 Sep 2023 11:58:02 +0800 Subject: [PATCH 06/99] ANDROID: GKI: Add initial abi for rockchip INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 65 function symbol(s) added 'unsigned int _bcd2bin(unsigned char)' 'unsigned char _bin2bcd(unsigned int)' 'int ce_aes_expandkey(struct crypto_aes_ctx*, const u8*, unsigned int)' 'void clk_fractional_divider_general_approximation(struct clk_hw*, unsigned long, unsigned long*, unsigned long*, unsigned long*)' 'int clk_get_phase(struct clk*)' 'void clk_hw_unregister_composite(struct clk_hw*)' 'int clk_set_phase(struct clk*, int)' 'int compat_only_sysfs_link_entry_to_kobj(struct kobject*, struct kobject*, const char*, const char*)' 'bool cpu_have_feature(unsigned int)' 'struct crypto_akcipher* crypto_alloc_akcipher(const char*, u32, u32)' 'int dev_pm_opp_get_supplies(struct dev_pm_opp*, struct dev_pm_opp_supply*)' 'void device_set_node(struct device*, struct fwnode_handle*)' 'struct devfreq_event_dev* devm_devfreq_event_add_edev(struct device*, struct devfreq_event_desc*)' 'char** devm_kasprintf_strarray(struct device*, const char*, size_t)' 'void* devm_pci_remap_cfg_resource(struct device*, struct resource*)' 'bool disable_hardirq(unsigned int)' 'int drm_gem_handle_delete(struct drm_file*, u32)' 'u16 dw_pcie_find_ext_capability(struct dw_pcie*, u8)' 'int dw_pcie_link_up(struct dw_pcie*)' 'int extcon_sync(struct extcon_dev*, unsigned int)' 'void gpiochip_relres_irq(struct gpio_chip*, unsigned int)' 'int gpiochip_reqres_irq(struct gpio_chip*, unsigned int)' 'ssize_t hdmi_avi_infoframe_pack_only(const struct hdmi_avi_infoframe*, void*, size_t)' 'struct iio_channel* iio_channel_get_all(struct device*)' 'void iio_channel_release_all(struct iio_channel*)' 'int iio_update_buffers(struct iio_dev*, struct iio_buffer*, struct iio_buffer*)' 'void input_set_poll_interval(struct input_dev*, unsigned int)' 'int input_setup_polling(struct input_dev*, void(*)(struct input_dev*))' 'void iommu_detach_group(struct iommu_domain*, struct iommu_group*)' 'int irq_gc_set_wake(struct irq_data*, unsigned int)' 'void led_set_brightness_nosleep(struct led_classdev*, unsigned int)' 'int media_entity_setup_link(struct media_link*, u32)' 'int mii_link_ok(struct mii_if_info*)' 'int mmc_sw_reset(struct mmc_card*)' 'struct pinctrl_dev* of_pinctrl_get(struct device_node*)' 'enum usb_dr_mode of_usb_get_dr_mode_by_phy(struct device_node*, int)' 'int phy_mipi_dphy_config_validate(struct phy_configure_opts_mipi_dphy*)' 'struct pinctrl_gpio_range* pinctrl_find_gpio_range_from_pin(struct pinctrl_dev*, unsigned int)' 'int pinmux_generic_add_function(struct pinctrl_dev*, const char*, const char* const*, unsigned int, void*)' 'int pm_clk_add_clk(struct device*, struct clk*)' 'int power_supply_get_property_from_supplier(struct power_supply*, enum power_supply_property, union power_supply_propval*)' 'int pwm_adjust_config(struct pwm_device*)' 'int regulator_suspend_enable(struct regulator_dev*, suspend_state_t)' 'struct iova* reserve_iova(struct iova_domain*, unsigned long, unsigned long)' 'void sha1_init(__u32*)' 'void sha1_transform(__u32*, const char*, __u32*)' 'struct skcipher_instance* skcipher_alloc_instance_simple(struct crypto_template*, struct rtattr**)' 'int skcipher_register_instance(struct crypto_template*, struct skcipher_instance*)' 'int skcipher_walk_aead_decrypt(struct skcipher_walk*, struct aead_request*, bool)' 'int skcipher_walk_aead_encrypt(struct skcipher_walk*, struct aead_request*, bool)' 'int skcipher_walk_done(struct skcipher_walk*, int)' 'int skcipher_walk_virt(struct skcipher_walk*, struct skcipher_request*, bool)' 'int snd_pcm_create_iec958_consumer_hw_params(struct snd_pcm_hw_params*, u8*, size_t)' 'int snd_pcm_stop_xrun(struct snd_pcm_substream*)' 'int snd_soc_jack_add_zones(struct snd_soc_jack*, int, struct snd_soc_jack_zone*)' 'int snd_soc_jack_get_type(struct snd_soc_jack*, int)' 'unsigned int swiotlb_max_segment()' 'void tcpm_tcpc_reset(struct tcpm_port*)' 'int usb_add_phy(struct usb_phy*, enum usb_phy_type)' 'void usb_deregister_dev(struct usb_interface*, struct usb_class_driver*)' 'struct usb_interface* usb_find_interface(struct usb_driver*, int)' 'void usb_poison_anchored_urbs(struct usb_anchor*)' 'int usb_register_dev(struct usb_interface*, struct usb_class_driver*)' 'enum usb_role usb_role_switch_get_role(struct usb_role_switch*)' 'unsigned int usb_wakeup_enabled_descendants(struct usb_device*)' 2 variable symbol(s) added 'unsigned long avenrun[3]' 'struct class* power_supply_class' Bug: 300024866 Change-Id: I0e1aeb3470bc01a8097319dfca593c6d0c0c7d7f Signed-off-by: Kever Yang --- BUILD.bazel | 1 + android/abi_gki_aarch64.stg | 1445 +++++++++++++++++++++++++++++++++++ 2 files changed, 1446 insertions(+) diff --git a/BUILD.bazel b/BUILD.bazel index 6cf6aa83ab9d..35f2484b7940 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -110,6 +110,7 @@ filegroup( "android/abi_gki_aarch64_oplus", "android/abi_gki_aarch64_pixel", "android/abi_gki_aarch64_qcom", + "android/abi_gki_aarch64_rockchip", "android/abi_gki_aarch64_tuxera", "android/abi_gki_aarch64_unisoc", "android/abi_gki_aarch64_virtual_device", diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 9b1782a70442..d2cc09048ee0 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -2518,6 +2518,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0f54a4fe } +pointer_reference { + id: 0x0945c216 + kind: POINTER + pointee_type_id: 0x0f57eec7 +} pointer_reference { id: 0x09483d5e kind: POINTER @@ -5168,6 +5173,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1c88dd20 } +pointer_reference { + id: 0x0db22504 + kind: POINTER + pointee_type_id: 0x1c88728f +} pointer_reference { id: 0x0db25a6d kind: POINTER @@ -5593,6 +5603,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x12c0cb4c } +pointer_reference { + id: 0x0e211675 + kind: POINTER + pointee_type_id: 0x12c4bf48 +} pointer_reference { id: 0x0e211c44 kind: POINTER @@ -9018,6 +9033,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x708fc0fe } +pointer_reference { + id: 0x16b45c7f + kind: POINTER + pointee_type_id: 0x70919762 +} pointer_reference { id: 0x16b46fbd kind: POINTER @@ -12168,6 +12188,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xb99f29b6 } +pointer_reference { + id: 0x24f9cd24 + kind: POINTER + pointee_type_id: 0xb9a7d20f +} pointer_reference { id: 0x250095e2 kind: POINTER @@ -13513,6 +13538,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x84be8096 } +pointer_reference { + id: 0x2bc65a97 + kind: POINTER + pointee_type_id: 0x85598cc2 +} pointer_reference { id: 0x2bc93f35 kind: POINTER @@ -16348,6 +16378,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9e071849 } +pointer_reference { + id: 0x2d12100b + kind: POINTER + pointee_type_id: 0x9e08a6b2 +} pointer_reference { id: 0x2d126960 kind: POINTER @@ -16768,6 +16803,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9eb7e15e } +pointer_reference { + id: 0x2d3dc4f9 + kind: POINTER + pointee_type_id: 0x9eb7f57a +} pointer_reference { id: 0x2d3df092 kind: POINTER @@ -21788,6 +21828,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9511594d } +pointer_reference { + id: 0x2fd4f232 + kind: POINTER + pointee_type_id: 0x95132e54 +} pointer_reference { id: 0x2fd86c98 kind: POINTER @@ -22123,6 +22168,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xeabee0bd } +pointer_reference { + id: 0x30408c71 + kind: POINTER + pointee_type_id: 0xeb42d758 +} pointer_reference { id: 0x3043f6b1 kind: POINTER @@ -23313,6 +23363,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe620f747 } +pointer_reference { + id: 0x331a1d7a + kind: POINTER + pointee_type_id: 0xe6289375 +} pointer_reference { id: 0x331a85e3 kind: POINTER @@ -24478,6 +24533,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfff5e6f7 } +pointer_reference { + id: 0x356e4b27 + kind: POINTER + pointee_type_id: 0xfff9ca03 +} pointer_reference { id: 0x35737846 kind: POINTER @@ -26808,6 +26868,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc032f3e5 } +pointer_reference { + id: 0x3a9d5bb9 + kind: POINTER + pointee_type_id: 0xc035887a +} pointer_reference { id: 0x3aac87ab kind: POINTER @@ -27233,6 +27298,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc4f6e4f3 } +pointer_reference { + id: 0x3bb0740c + kind: POINTER + pointee_type_id: 0xc48136af +} pointer_reference { id: 0x3bb11c92 kind: POINTER @@ -31168,6 +31238,11 @@ qualified { qualifier: CONST qualified_type_id: 0x70d15e47 } +qualified { + id: 0xc035887a + qualifier: CONST + qualified_type_id: 0x70919762 +} qualified { id: 0xc04414ae qualifier: CONST @@ -31328,6 +31403,11 @@ qualified { qualifier: CONST qualified_type_id: 0x6101d583 } +qualified { + id: 0xc48136af + qualifier: CONST + qualified_type_id: 0x62436c35 +} qualified { id: 0xc48494d4 qualifier: CONST @@ -34493,6 +34573,11 @@ qualified { qualifier: CONST qualified_type_id: 0x8f902d54 } +qualified { + id: 0xfff9ca03 + qualifier: CONST + qualified_type_id: 0x8fa09e85 +} primitive { id: 0x15053314 name: "double" @@ -38555,6 +38640,11 @@ member { type_id: 0x4f2326f3 offset: 1280 } +member { + id: 0x300b2d2f + type_id: 0x4f02e8cc + offset: 512 +} member { id: 0x300b75af type_id: 0x4f03a6ae @@ -44192,6 +44282,11 @@ member { type_id: 0x6720d32f offset: 576 } +member { + id: 0x2777335c + name: "alg" + type_id: 0xdabf4001 +} member { id: 0x2784b70a name: "alg" @@ -44339,6 +44434,12 @@ member { type_id: 0x0b395893 offset: 8192 } +member { + id: 0x9d7710c5 + name: "alignmask" + type_id: 0x4585663f + offset: 1152 +} member { id: 0x361dfe02 name: "alignment" @@ -51401,6 +51502,12 @@ member { name: "base" type_id: 0xec967f20 } +member { + id: 0x8544c9f4 + name: "base" + type_id: 0x9e2c67f2 + offset: 512 +} member { id: 0x85481c0d name: "base" @@ -53620,6 +53727,12 @@ member { type_id: 0x4585663f offset: 224 } +member { + id: 0x89cc162f + name: "blocksize" + type_id: 0x4585663f + offset: 1088 +} member { id: 0x9d6f12e1 name: "blue" @@ -55162,6 +55275,12 @@ member { name: "buffer" type_id: 0x0483e6f8 } +member { + id: 0x33decf44 + name: "buffer" + type_id: 0x00c72527 + offset: 832 +} member { id: 0x33e6ba8e name: "buffer" @@ -55372,6 +55491,12 @@ member { type_id: 0xd3c80119 offset: 576 } +member { + id: 0xc0824dc3 + name: "buffers" + type_id: 0xd3c80119 + offset: 640 +} member { id: 0x803be3e4 name: "buffersize" @@ -70773,6 +70898,12 @@ member { type_id: 0x6720d32f offset: 256 } +member { + id: 0x74a266cc + name: "debounce_time" + type_id: 0x4585663f + offset: 96 +} member { id: 0x070a913d name: "debug" @@ -72406,6 +72537,12 @@ member { type_id: 0x0483e6f8 offset: 1344 } +member { + id: 0x87e0b654 + name: "desc" + type_id: 0x3a9d5bb9 + offset: 7872 +} member { id: 0x87e3bc35 name: "desc" @@ -74987,6 +75124,12 @@ member { type_id: 0x0537192f offset: 192 } +member { + id: 0x1ea56ad0 + name: "devnode" + type_id: 0x053432a7 + offset: 64 +} member { id: 0x1ea56fa3 name: "devnode" @@ -75771,6 +75914,12 @@ member { type_id: 0x2d078518 offset: 960 } +member { + id: 0x0da0f708 + name: "disable" + type_id: 0x2d12100b + offset: 64 +} member { id: 0x0da0f771 name: "disable" @@ -78827,6 +78976,12 @@ member { type_id: 0x6d25e07f offset: 128 } +member { + id: 0xbbab7e83 + name: "dst" + type_id: 0x5ade635b + offset: 128 +} member { id: 0xbbb264ba name: "dst" @@ -80713,6 +80868,11 @@ member { type_id: 0x2d078518 offset: 896 } +member { + id: 0x98ca1d0f + name: "enable" + type_id: 0x2d12100b +} member { id: 0x98ca2102 name: "enable" @@ -80802,6 +80962,12 @@ member { type_id: 0x74d29cf1 offset: 22144 } +member { + id: 0x7a5a9024 + name: "enable_count" + type_id: 0xc9082b19 + offset: 7808 +} member { id: 0x7a5a9508 name: "enable_count" @@ -83301,6 +83467,12 @@ member { type_id: 0xcd74e255 offset: 1984 } +member { + id: 0x8daeae65 + name: "event_type" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x8dfc7230 name: "event_type" @@ -88556,6 +88728,12 @@ member { type_id: 0x6720d32f offset: 128 } +member { + id: 0x2d0fadac + name: "flags" + type_id: 0x6720d32f + offset: 1056 +} member { id: 0x2d0fadff name: "flags" @@ -91634,6 +91812,11 @@ member { type_id: 0x0d364e53 offset: 320 } +member { + id: 0xfeafbaf6 + name: "free" + type_id: 0x0db22504 +} member { id: 0xfeafc015 name: "free" @@ -94350,6 +94533,12 @@ member { type_id: 0x0db9efe5 offset: 1600 } +member { + id: 0xd77c9cbe + name: "get_event" + type_id: 0x2d3dc4f9 + offset: 256 +} member { id: 0xad0b27c9 name: "get_features" @@ -98323,6 +98512,11 @@ member { type_id: 0x3e6239e1 offset: 64 } +member { + id: 0xb56701d9 + name: "head" + type_id: 0x3db8d8c8 +} member { id: 0xb568e1b3 name: "head" @@ -104121,6 +104315,12 @@ member { type_id: 0xff8884d8 offset: 64 } +member { + id: 0x5c6f2950 + name: "in" + type_id: 0xc440583a + offset: 256 +} member { id: 0x5c99cb61 name: "in" @@ -110510,6 +110710,12 @@ member { type_id: 0x2efe8065 offset: 1408 } +member { + id: 0x56ccb987 + name: "iv" + type_id: 0x18bd6530 + offset: 960 +} member { id: 0x56d4cc43 name: "iv" @@ -110528,6 +110734,12 @@ member { type_id: 0x6720d32f offset: 192 } +member { + id: 0x8320112b + name: "ivsize" + type_id: 0x4585663f + offset: 1024 +} member { id: 0x832017a6 name: "ivsize" @@ -110581,6 +110793,12 @@ member { type_id: 0x2c7bd73f offset: 1792 } +member { + id: 0x9f7caab9 + name: "jack_type" + type_id: 0x4585663f + offset: 64 +} member { id: 0x5d9c18bc name: "jack_zones" @@ -116240,6 +116458,11 @@ member { type_id: 0x2ef03743 offset: 192 } +member { + id: 0xd4c95c39 + name: "load_count" + type_id: 0x33756485 +} member { id: 0x387efce1 name: "load_fw" @@ -116853,6 +117076,12 @@ member { type_id: 0xa7c362b0 offset: 9728 } +member { + id: 0x2d4b3012 + name: "lock" + type_id: 0xa7c362b0 + offset: 7424 +} member { id: 0x2d4b30cc name: "lock" @@ -121599,6 +121828,12 @@ member { type_id: 0x4585663f offset: 2336 } +member { + id: 0xeaccae16 + name: "max_mv" + type_id: 0x4585663f + offset: 32 +} member { id: 0x7b864e19 name: "max_native_cs" @@ -124958,6 +125193,11 @@ member { type_id: 0x4585663f offset: 2304 } +member { + id: 0xa07cb245 + name: "min_mv" + type_id: 0x4585663f +} member { id: 0x31458425 name: "min_nr" @@ -125312,6 +125552,12 @@ member { type_id: 0xc9082b19 offset: 3680 } +member { + id: 0xa298fce5 + name: "minor_base" + type_id: 0x6720d32f + offset: 192 +} member { id: 0x850041c9 name: "minor_class" @@ -138483,6 +138729,12 @@ member { type_id: 0x42201dce offset: 832 } +member { + id: 0xe5a6cde2 + name: "oiv" + type_id: 0x00c72527 + offset: 896 +} member { id: 0x1e0dc421 name: "okfn" @@ -140021,6 +140273,12 @@ member { type_id: 0x3542336e offset: 576 } +member { + id: 0xafbe6621 + name: "ops" + type_id: 0x356e4b27 + offset: 192 +} member { id: 0xafbed153 name: "ops" @@ -140653,6 +140911,12 @@ member { type_id: 0xff8884d8 offset: 160 } +member { + id: 0xb335975f + name: "out" + type_id: 0xc440583a + offset: 448 +} member { id: 0xb396f982 name: "out" @@ -142167,6 +142431,17 @@ member { type_id: 0x06835e9c offset: 640 } +member { + id: 0x32051484 + name: "page" + type_id: 0x00c72527 +} +member { + id: 0x32051c2a + name: "page" + type_id: 0x00c72527 + offset: 768 +} member { id: 0x322121cd name: "page" @@ -145991,6 +146266,11 @@ member { name: "phys" type_id: 0x5abe7554 } +member { + id: 0x304c83ff + name: "phys" + type_id: 0x14ca5b0f +} member { id: 0x3065f315 name: "phys" @@ -163043,6 +163323,12 @@ member { type_id: 0x2d255333 offset: 256 } +member { + id: 0x6290b59b + name: "reset" + type_id: 0x2d12100b + offset: 128 +} member { id: 0x6290e8f3 name: "reset" @@ -167677,6 +167963,11 @@ member { name: "s" type_id: 0x36592664 } +member { + id: 0x67c7a307 + name: "s" + type_id: 0x3514d59f +} member { id: 0x67c839a9 name: "s" @@ -172324,6 +172615,12 @@ member { type_id: 0x0d44ba38 offset: 128 } +member { + id: 0x87f98767 + name: "set_event" + type_id: 0x2d12100b + offset: 192 +} member { id: 0xada2d6c5 name: "set_fecparam" @@ -178849,6 +179146,11 @@ member { name: "src" type_id: 0x6d25e07f } +member { + id: 0x446cb466 + name: "src" + type_id: 0x5ade635b +} member { id: 0x4475a595 name: "src" @@ -182562,6 +182864,12 @@ member { type_id: 0x4585663f offset: 45344 } +member { + id: 0x5e10ffff + name: "stride" + type_id: 0x4585663f + offset: 1120 +} member { id: 0x5e325618 name: "stride" @@ -189817,6 +190125,12 @@ member { type_id: 0xb02b353a offset: 704 } +member { + id: 0x9d16fe6e + name: "total" + type_id: 0x4585663f + offset: 576 +} member { id: 0x9d2cc35c name: "total" @@ -189875,6 +190189,12 @@ member { type_id: 0x295c7202 offset: 112 } +member { + id: 0xb46976b5 + name: "total_count" + type_id: 0x33756485 + offset: 64 +} member { id: 0x5d3c1feb name: "total_frames" @@ -200858,6 +201178,11 @@ member { type_id: 0xc9082b19 offset: 96 } +member { + id: 0xde7997b9 + name: "virt" + type_id: 0x14e40ca3 +} member { id: 0xc21c7538 name: "virt_base" @@ -207488,6 +207813,24 @@ struct_union { member_id: 0x35690218 } } +struct_union { + id: 0x14ca5b0f + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x320350ff + member_id: 0x9b2fad41 + } +} +struct_union { + id: 0x14e40ca3 + kind: STRUCT + definition { + bytesize: 16 + member_id: 0x32051484 + member_id: 0x243566e2 + } +} struct_union { id: 0x153cf6a0 kind: STRUCT @@ -209034,6 +209377,15 @@ struct_union { member_id: 0x8f0ea6b7 } } +struct_union { + id: 0x3514d59f + kind: STRUCT + definition { + bytesize: 512 + member_id: 0xb56701d9 + member_id: 0x8544c9f4 + } +} struct_union { id: 0x352630a5 kind: STRUCT @@ -210337,6 +210689,15 @@ struct_union { member_id: 0x8fed16f2 } } +struct_union { + id: 0x4f02e8cc + kind: UNION + definition { + bytesize: 512 + member_id: 0x67c7a307 + member_id: 0x2777335c + } +} struct_union { id: 0x4f03a6ae kind: UNION @@ -210816,6 +211177,15 @@ struct_union { member_id: 0x2e0294e1 } } +struct_union { + id: 0x5ade635b + kind: UNION + definition { + bytesize: 16 + member_id: 0x304c83ff + member_id: 0xde7997b9 + } +} struct_union { id: 0x5ae4b375 kind: UNION @@ -219372,6 +219742,15 @@ struct_union { member_id: 0x8597b963 } } +struct_union { + id: 0x0f57eec7 + kind: STRUCT + name: "crypto_akcipher" + definition { + bytesize: 64 + member_id: 0x8597be7c + } +} struct_union { id: 0x293b162f kind: STRUCT @@ -220419,6 +220798,54 @@ struct_union { member_id: 0xf21adff5 } } +struct_union { + id: 0x95132e54 + kind: STRUCT + name: "devfreq_event_data" + definition { + bytesize: 16 + member_id: 0xd4c95c39 + member_id: 0xb46976b5 + } +} +struct_union { + id: 0x70919762 + kind: STRUCT + name: "devfreq_event_desc" + definition { + bytesize: 32 + member_id: 0x0de57ce8 + member_id: 0x8daeae65 + member_id: 0x6d52b170 + member_id: 0xafbe6621 + } +} +struct_union { + id: 0x12c4bf48 + kind: STRUCT + name: "devfreq_event_dev" + definition { + bytesize: 992 + member_id: 0x0fa6c6af + member_id: 0xce1ac88b + member_id: 0x2d4b3012 + member_id: 0x7a5a9024 + member_id: 0x87e0b654 + } +} +struct_union { + id: 0x8fa09e85 + kind: STRUCT + name: "devfreq_event_ops" + definition { + bytesize: 40 + member_id: 0x98ca1d0f + member_id: 0x0da0f708 + member_id: 0x6290b59b + member_id: 0x87f98767 + member_id: 0xd77c9cbe + } +} struct_union { id: 0xeee59200 kind: STRUCT @@ -248823,6 +249250,16 @@ struct_union { member_id: 0x202d9792 } } +struct_union { + id: 0xc440583a + kind: STRUCT + name: "scatter_walk" + definition { + bytesize: 16 + member_id: 0x9d8652e2 + member_id: 0x9b595d43 + } +} struct_union { id: 0x6d7f0eb8 kind: STRUCT @@ -251216,6 +251653,16 @@ struct_union { member_id: 0x85f3de85 } } +struct_union { + id: 0xeb42d758 + kind: STRUCT + name: "skcipher_instance" + definition { + bytesize: 576 + member_id: 0xfeafbaf6 + member_id: 0x300b2d2f + } +} struct_union { id: 0x5a18785c kind: STRUCT @@ -251230,6 +251677,30 @@ struct_union { member_id: 0x75906a36 } } +struct_union { + id: 0xb9a7d20f + kind: STRUCT + name: "skcipher_walk" + definition { + bytesize: 152 + member_id: 0x446cb466 + member_id: 0xbbab7e83 + member_id: 0x5c6f2950 + member_id: 0x9a42cf0b + member_id: 0xb335975f + member_id: 0x9d16fe6e + member_id: 0xc0824dc3 + member_id: 0x32051c2a + member_id: 0x33decf44 + member_id: 0xe5a6cde2 + member_id: 0x56ccb987 + member_id: 0x8320112b + member_id: 0x2d0fadac + member_id: 0x89cc162f + member_id: 0x5e10ffff + member_id: 0x9d7710c5 + } +} struct_union { id: 0x140795ac kind: STRUCT @@ -253049,6 +253520,19 @@ struct_union { member_id: 0x720365d0 } } +struct_union { + id: 0x85598cc2 + kind: STRUCT + name: "snd_soc_jack_zone" + definition { + bytesize: 32 + member_id: 0xa07cb245 + member_id: 0xeaccae16 + member_id: 0x9f7caab9 + member_id: 0x74a266cc + member_id: 0x7c00e690 + } +} struct_union { id: 0x69e1c6f0 kind: STRUCT @@ -259842,6 +260326,18 @@ struct_union { member_id: 0xe7429092 } } +struct_union { + id: 0xe6289375 + kind: STRUCT + name: "usb_class_driver" + definition { + bytesize: 32 + member_id: 0x0ddfefbb + member_id: 0x1ea56ad0 + member_id: 0xb1aa5772 + member_id: 0xa298fce5 + } +} struct_union { id: 0xaec12290 kind: STRUCT @@ -283938,6 +284434,12 @@ function { parameter_id: 0xb0c2eb21 parameter_id: 0x18bd6530 } +function { + id: 0x034a2603 + return_type_id: 0x30408c71 + parameter_id: 0x1fba7d3d + parameter_id: 0x0c96fb14 +} function { id: 0x034f6ce3 return_type_id: 0x34544a3f @@ -284275,6 +284777,13 @@ function { return_type_id: 0x343ebce3 parameter_id: 0x343ebce3 } +function { + id: 0x0c5cd477 + return_type_id: 0x0bb0c019 + parameter_id: 0x0258f96e + parameter_id: 0x3e10b518 + parameter_id: 0xf435685e +} function { id: 0x0cd36f30 return_type_id: 0x33756485 @@ -284350,6 +284859,12 @@ function { parameter_id: 0x6d7f5ff6 parameter_id: 0x6d7f5ff6 } +function { + id: 0x0ec08f0d + return_type_id: 0x914dbfdc + parameter_id: 0x3d3b5dd7 + parameter_id: 0x295c7202 +} function { id: 0x0ee8ead6 return_type_id: 0x914dbfdc @@ -284506,6 +285021,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0206e690 } +function { + id: 0x101c2d25 + return_type_id: 0x48b5725f + parameter_id: 0x0258f96e + parameter_id: 0x0490bb4a +} function { id: 0x10219d88 return_type_id: 0x48b5725f @@ -286829,6 +287350,15 @@ function { parameter_id: 0x09483d5e parameter_id: 0x0858434c } +function { + id: 0x12ed274e + return_type_id: 0x48b5725f + parameter_id: 0x0ae4a2c7 + parameter_id: 0x33756485 + parameter_id: 0x064d6086 + parameter_id: 0x064d6086 + parameter_id: 0x064d6086 +} function { id: 0x12efab79 return_type_id: 0x48b5725f @@ -288640,6 +289170,12 @@ function { parameter_id: 0x12c0ba43 parameter_id: 0x6d7f5ff6 } +function { + id: 0x159ef67f + return_type_id: 0x48b5725f + parameter_id: 0x1042c9d1 + parameter_id: 0x4585663f +} function { id: 0x159f9b02 return_type_id: 0x48b5725f @@ -290210,6 +290746,12 @@ function { parameter_id: 0x3f0185ef parameter_id: 0x4585663f } +function { + id: 0x18159e1c + return_type_id: 0x48b5725f + parameter_id: 0x21069feb + parameter_id: 0x331a1d7a +} function { id: 0x1817bd12 return_type_id: 0x48b5725f @@ -291158,6 +291700,12 @@ function { parameter_id: 0x2cd31328 parameter_id: 0x6d7f5ff6 } +function { + id: 0x1a1c4881 + return_type_id: 0x0400f16a + parameter_id: 0x1b55a8f2 + parameter_id: 0x4585663f +} function { id: 0x1a27e882 return_type_id: 0x48b5725f @@ -291209,6 +291757,13 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2b603afb } +function { + id: 0x1a42044c + return_type_id: 0xd5cc9c9a + parameter_id: 0x3bb0740c + parameter_id: 0x18bd6530 + parameter_id: 0xf435685e +} function { id: 0x1a450083 return_type_id: 0x48b5725f @@ -291601,6 +292156,12 @@ function { parameter_id: 0x2e94a1e1 parameter_id: 0x0ab1f084 } +function { + id: 0x1b18b5bc + return_type_id: 0x48b5725f + parameter_id: 0x2e94a1e1 + parameter_id: 0x097315c2 +} function { id: 0x1b18f64e return_type_id: 0x48b5725f @@ -292463,6 +293024,11 @@ function { parameter_id: 0x31b5a66f parameter_id: 0x2a670b41 } +function { + id: 0x1c5eb40a + return_type_id: 0x48b5725f + parameter_id: 0x331b9666 +} function { id: 0x1c5ec399 return_type_id: 0x48b5725f @@ -292590,6 +293156,11 @@ function { parameter_id: 0x11cfee5a parameter_id: 0x11cfee5a } +function { + id: 0x1c88728f + return_type_id: 0x48b5725f + parameter_id: 0x30408c71 +} function { id: 0x1c88dd20 return_type_id: 0x48b5725f @@ -292649,6 +293220,13 @@ function { parameter_id: 0x274194ac parameter_id: 0x2e18f543 } +function { + id: 0x1caa303b + return_type_id: 0x48b5725f + parameter_id: 0x331b9666 + parameter_id: 0x3e10b518 + parameter_id: 0x331b9666 +} function { id: 0x1cab6a11 return_type_id: 0x48b5725f @@ -293162,6 +293740,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x368daf92 } +function { + id: 0x1d3cefc2 + return_type_id: 0x48b5725f + parameter_id: 0x32caaf24 + parameter_id: 0x4585663f +} function { id: 0x1d3f8bd2 return_type_id: 0x48b5725f @@ -297216,6 +297800,13 @@ function { return_type_id: 0x18bd6530 parameter_id: 0x4585663f } +function { + id: 0x48135354 + return_type_id: 0x35304fb1 + parameter_id: 0x3f84ee3c + parameter_id: 0x33756485 + parameter_id: 0x33756485 +} function { id: 0x48834be4 return_type_id: 0xc9082b19 @@ -297390,6 +297981,12 @@ function { return_type_id: 0x18e64f74 parameter_id: 0x3668642a } +function { + id: 0x4d306964 + return_type_id: 0x21069feb + parameter_id: 0x3c9a9fb2 + parameter_id: 0x6720d32f +} function { id: 0x4d878509 return_type_id: 0x21069feb @@ -298059,6 +298656,12 @@ function { return_type_id: 0x1c898f28 parameter_id: 0x210b9681 } +function { + id: 0x56edbc2a + return_type_id: 0x18bd6530 + parameter_id: 0x0258f96e + parameter_id: 0x3b4ce03a +} function { id: 0x56f10608 return_type_id: 0x18bd6530 @@ -299058,6 +299661,12 @@ function { parameter_id: 0x1c3dbe5a parameter_id: 0x1c3dbe5a } +function { + id: 0x66525607 + return_type_id: 0x82bc7069 + parameter_id: 0x347303b4 + parameter_id: 0x6720d32f +} function { id: 0x6680517a return_type_id: 0x054f691a @@ -299167,6 +299776,13 @@ function { parameter_id: 0x2584a3b9 parameter_id: 0x6d7f5ff6 } +function { + id: 0x69b2a88c + return_type_id: 0x0945c216 + parameter_id: 0x3e10b518 + parameter_id: 0xc9082b19 + parameter_id: 0xc9082b19 +} function { id: 0x69be77aa return_type_id: 0x054f691a @@ -301132,6 +301748,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3668642a } +function { + id: 0x901c3c62 + return_type_id: 0x6720d32f + parameter_id: 0x3ae3ff84 + parameter_id: 0xc9082b19 +} function { id: 0x90208300 return_type_id: 0x6720d32f @@ -305544,6 +306166,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x3bb11c92 } +function { + id: 0x936fda74 + return_type_id: 0x6720d32f + parameter_id: 0x3dcee85d + parameter_id: 0x6720d32f +} function { id: 0x93788ff8 return_type_id: 0x6720d32f @@ -306322,6 +306950,11 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x6720d32f } +function { + id: 0x94418fe1 + return_type_id: 0x6720d32f + parameter_id: 0x2705b338 +} function { id: 0x9441b35b return_type_id: 0x6720d32f @@ -306510,6 +307143,13 @@ function { parameter_id: 0x34434827 parameter_id: 0xcddc4fff } +function { + id: 0x946d2b92 + return_type_id: 0x6720d32f + parameter_id: 0x24f9cd24 + parameter_id: 0x323908e0 + parameter_id: 0x6d7f5ff6 +} function { id: 0x946eaca9 return_type_id: 0x52658204 @@ -306739,6 +307379,13 @@ function { return_type_id: 0x6720d32f parameter_id: 0x25520d15 } +function { + id: 0x94d5972f + return_type_id: 0x6720d32f + parameter_id: 0x24f9cd24 + parameter_id: 0x1c1627b0 + parameter_id: 0x6d7f5ff6 +} function { id: 0x94d8cba3 return_type_id: 0x6720d32f @@ -306909,6 +307556,12 @@ function { parameter_id: 0x23f09c34 parameter_id: 0x1dd302e9 } +function { + id: 0x950d2ca0 + return_type_id: 0x6720d32f + parameter_id: 0x21069feb + parameter_id: 0x331a1d7a +} function { id: 0x950f0fae return_type_id: 0x6720d32f @@ -306927,6 +307580,12 @@ function { parameter_id: 0x21069feb parameter_id: 0x38040a6c } +function { + id: 0x9522132a + return_type_id: 0x6720d32f + parameter_id: 0x24f9cd24 + parameter_id: 0x6720d32f +} function { id: 0x952ae349 return_type_id: 0x6720d32f @@ -307634,6 +308293,14 @@ function { parameter_id: 0x2668e644 parameter_id: 0x78d7d113 } +function { + id: 0x95fc7a3d + return_type_id: 0x6720d32f + parameter_id: 0x23f09c34 + parameter_id: 0x23f09c34 + parameter_id: 0x3e10b518 + parameter_id: 0x3e10b518 +} function { id: 0x95fc827f return_type_id: 0x6720d32f @@ -308645,6 +309312,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x28136e4b } +function { + id: 0x97889594 + return_type_id: 0x6720d32f + parameter_id: 0x2821daec +} function { id: 0x978bc97a return_type_id: 0x6720d32f @@ -310789,6 +311461,12 @@ function { parameter_id: 0x1aeeade4 parameter_id: 0x6720d32f } +function { + id: 0x99ae995e + return_type_id: 0x6720d32f + parameter_id: 0x1042c9d1 + parameter_id: 0x0fb2015e +} function { id: 0x99aea96e return_type_id: 0x6720d32f @@ -311344,6 +312022,12 @@ function { parameter_id: 0x1d19a9d5 parameter_id: 0x4585663f } +function { + id: 0x9a1d7c68 + return_type_id: 0x6720d32f + parameter_id: 0x12e6ffae + parameter_id: 0xc9082b19 +} function { id: 0x9a1e34e7 return_type_id: 0x6720d32f @@ -312139,6 +312823,12 @@ function { parameter_id: 0x18e64f74 parameter_id: 0x4585663f } +function { + id: 0x9aaf7e51 + return_type_id: 0x6720d32f + parameter_id: 0x1fba7d3d + parameter_id: 0x30408c71 +} function { id: 0x9ab24357 return_type_id: 0x6720d32f @@ -312703,6 +313393,13 @@ function { parameter_id: 0x6d7f5ff6 parameter_id: 0x1d19a9d5 } +function { + id: 0x9b15020e + return_type_id: 0x6720d32f + parameter_id: 0x188b9e81 + parameter_id: 0x2f3288e0 + parameter_id: 0x2f3288e0 +} function { id: 0x9b153afe return_type_id: 0x6720d32f @@ -312987,6 +313684,12 @@ function { parameter_id: 0x4585663f parameter_id: 0x1253769c } +function { + id: 0x9b2efcfe + return_type_id: 0x6720d32f + parameter_id: 0x19e66c71 + parameter_id: 0x35e13364 +} function { id: 0x9b2f1182 return_type_id: 0x6720d32f @@ -314539,6 +315242,15 @@ function { parameter_id: 0x09d25c5b parameter_id: 0x07f5d8a3 } +function { + id: 0x9ba346af + return_type_id: 0x6720d32f + parameter_id: 0x1b55a8f2 + parameter_id: 0x3e10b518 + parameter_id: 0x3e75499e + parameter_id: 0x4585663f + parameter_id: 0x18bd6530 +} function { id: 0x9ba39408 return_type_id: 0x6720d32f @@ -317202,6 +317914,12 @@ function { parameter_id: 0x04b193cc parameter_id: 0x06ef24ac } +function { + id: 0x9cb7a3ee + return_type_id: 0x6720d32f + parameter_id: 0x0f78474f + parameter_id: 0xba5444a6 +} function { id: 0x9cb7cef1 return_type_id: 0x6720d32f @@ -319360,6 +320078,12 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x0c45539b } +function { + id: 0x9de1e6d5 + return_type_id: 0x6720d32f + parameter_id: 0x0258f96e + parameter_id: 0x3dcee85d +} function { id: 0x9de31a69 return_type_id: 0x6720d32f @@ -319699,6 +320423,11 @@ function { parameter_id: 0x0cf3d8fe parameter_id: 0x2ec35650 } +function { + id: 0x9e08a6b2 + return_type_id: 0x6720d32f + parameter_id: 0x0e211675 +} function { id: 0x9e08dfbb return_type_id: 0x6720d32f @@ -320134,6 +320863,12 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x07dcdbe1 } +function { + id: 0x9e65fffe + return_type_id: 0x6720d32f + parameter_id: 0x09e67e75 + parameter_id: 0x6720d32f +} function { id: 0x9e663e24 return_type_id: 0x6720d32f @@ -320209,6 +320944,13 @@ function { parameter_id: 0x366f4294 parameter_id: 0x0e656e5d } +function { + id: 0x9e6f0e68 + return_type_id: 0x6720d32f + parameter_id: 0x09e67e75 + parameter_id: 0x6720d32f + parameter_id: 0x2bc65a97 +} function { id: 0x9e711486 return_type_id: 0x6720d32f @@ -320275,6 +321017,12 @@ function { parameter_id: 0x07dcdbe1 parameter_id: 0x0aa1f0ee } +function { + id: 0x9e7bd8f3 + return_type_id: 0x6720d32f + parameter_id: 0x05c2a3ca + parameter_id: 0xa2e4cbbb +} function { id: 0x9e7f936c return_type_id: 0x6720d32f @@ -320464,6 +321212,12 @@ function { parameter_id: 0x3a40dd6c parameter_id: 0x07dcdbe1 } +function { + id: 0x9eb7f57a + return_type_id: 0x6720d32f + parameter_id: 0x0e211675 + parameter_id: 0x2fd4f232 +} function { id: 0x9eb8629a return_type_id: 0x6720d32f @@ -322717,6 +323471,12 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x3e10b518 } +function { + id: 0xaa9ceb0d + return_type_id: 0x0e211675 + parameter_id: 0x0258f96e + parameter_id: 0x16b45c7f +} function { id: 0xaa9fab30 return_type_id: 0x3dcee85d @@ -324110,6 +324870,11 @@ function { parameter_id: 0x37f227e9 parameter_id: 0x6720d32f } +function { + id: 0xcd844708 + return_type_id: 0x4585663f + parameter_id: 0x0d7ce7cc +} function { id: 0xcd8cb8f5 return_type_id: 0x4585663f @@ -324495,6 +325260,11 @@ function { return_type_id: 0x02eb105a parameter_id: 0x3e10b518 } +function { + id: 0xd9bb2b92 + return_type_id: 0x4585663f + parameter_id: 0x5d8155a5 +} function { id: 0xd9de6af9 return_type_id: 0x1e93567a @@ -324793,6 +325563,11 @@ function { parameter_id: 0x2df43e6f parameter_id: 0x187ed209 } +function { + id: 0xe2abbe2e + return_type_id: 0x1b55a8f2 + parameter_id: 0x347303b4 +} function { id: 0xe2c8401b return_type_id: 0x3ea2e6c1 @@ -337184,6 +337959,24 @@ elf_symbol { type_id: 0x10605221 full_name: "__xfrm_state_destroy" } +elf_symbol { + id: 0xda249832 + name: "_bcd2bin" + is_defined: true + symbol_type: FUNCTION + crc: 0xb6936ffe + type_id: 0xd9bb2b92 + full_name: "_bcd2bin" +} +elf_symbol { + id: 0x206fe2ef + name: "_bin2bcd" + is_defined: true + symbol_type: FUNCTION + crc: 0x80ca5026 + type_id: 0xdcb8e234 + full_name: "_bin2bcd" +} elf_symbol { id: 0x5693f2df name: "_copy_from_iter" @@ -338325,6 +339118,15 @@ elf_symbol { type_id: 0x8448d7e4 full_name: "available_idle_cpu" } +elf_symbol { + id: 0x3eb51b20 + name: "avenrun" + is_defined: true + symbol_type: OBJECT + crc: 0xf1e98c74 + type_id: 0x1e18ac15 + full_name: "avenrun" +} elf_symbol { id: 0xb9c34cbd name: "backlight_device_get_by_type" @@ -340807,6 +341609,15 @@ elf_symbol { type_id: 0x17107dc5 full_name: "cdev_init" } +elf_symbol { + id: 0x1ae20002 + name: "ce_aes_expandkey" + is_defined: true + symbol_type: FUNCTION + crc: 0x68f275ad + type_id: 0x982246a7 + full_name: "ce_aes_expandkey" +} elf_symbol { id: 0xc8e5adc6 name: "cec_allocate_adapter" @@ -341300,6 +342111,15 @@ elf_symbol { type_id: 0xde3bc780 full_name: "clk_fixed_rate_ops" } +elf_symbol { + id: 0xf42e28c4 + name: "clk_fractional_divider_general_approximation" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8861ced + type_id: 0x12ed274e + full_name: "clk_fractional_divider_general_approximation" +} elf_symbol { id: 0x8a96e88d name: "clk_fractional_divider_ops" @@ -341345,6 +342165,15 @@ elf_symbol { type_id: 0xa96c5286 full_name: "clk_get_parent" } +elf_symbol { + id: 0x04880ada + name: "clk_get_phase" + is_defined: true + symbol_type: FUNCTION + crc: 0x1c5ff742 + type_id: 0x92f35938 + full_name: "clk_get_phase" +} elf_symbol { id: 0x25ef9f7a name: "clk_get_rate" @@ -341516,6 +342345,15 @@ elf_symbol { type_id: 0x12217922 full_name: "clk_hw_unregister" } +elf_symbol { + id: 0x91507af8 + name: "clk_hw_unregister_composite" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5812f72 + type_id: 0x12217922 + full_name: "clk_hw_unregister_composite" +} elf_symbol { id: 0xd2c17be4 name: "clk_is_match" @@ -341696,6 +342534,15 @@ elf_symbol { type_id: 0x92046299 full_name: "clk_set_parent" } +elf_symbol { + id: 0x98850f9d + name: "clk_set_phase" + is_defined: true + symbol_type: FUNCTION + crc: 0xb7329c06 + type_id: 0x936fda74 + full_name: "clk_set_phase" +} elf_symbol { id: 0x495f0223 name: "clk_set_rate" @@ -341822,6 +342669,15 @@ elf_symbol { type_id: 0xfa5a390c full_name: "cma_release" } +elf_symbol { + id: 0xfb23b117 + name: "compat_only_sysfs_link_entry_to_kobj" + is_defined: true + symbol_type: FUNCTION + crc: 0x256e3ace + type_id: 0x95fc7a3d + full_name: "compat_only_sysfs_link_entry_to_kobj" +} elf_symbol { id: 0x4f627b39 name: "compat_ptr_ioctl" @@ -342234,6 +343090,15 @@ elf_symbol { type_id: 0xd0d5f663 full_name: "cpu_bit_bitmap" } +elf_symbol { + id: 0x15e1667b + name: "cpu_have_feature" + is_defined: true + symbol_type: FUNCTION + crc: 0x41237f71 + type_id: 0xefc5028b + full_name: "cpu_have_feature" +} elf_symbol { id: 0x33bbeca6 name: "cpu_hotplug_disable" @@ -343022,6 +343887,15 @@ elf_symbol { type_id: 0xd40f21a4 full_name: "crypto_alloc_ahash" } +elf_symbol { + id: 0x5d9de9a7 + name: "crypto_alloc_akcipher" + is_defined: true + symbol_type: FUNCTION + crc: 0xdc2b9dfc + type_id: 0x69b2a88c + full_name: "crypto_alloc_akcipher" +} elf_symbol { id: 0x1d1f6717 name: "crypto_alloc_base" @@ -344480,6 +345354,15 @@ elf_symbol { type_id: 0x9df535bf full_name: "dev_pm_opp_get_sharing_cpus" } +elf_symbol { + id: 0xe1beb7e3 + name: "dev_pm_opp_get_supplies" + is_defined: true + symbol_type: FUNCTION + crc: 0xa27bcff7 + type_id: 0x9b2efcfe + full_name: "dev_pm_opp_get_supplies" +} elf_symbol { id: 0x0d97ed87 name: "dev_pm_opp_get_suspend_opp_freq" @@ -345452,6 +346335,15 @@ elf_symbol { type_id: 0x9dee9fa0 full_name: "device_rename" } +elf_symbol { + id: 0xa09675ab + name: "device_set_node" + is_defined: true + symbol_type: FUNCTION + crc: 0x3fd03b85 + type_id: 0x101c2d25 + full_name: "device_set_node" +} elf_symbol { id: 0xcdcce9e8 name: "device_set_of_node_from_dev" @@ -345839,6 +346731,15 @@ elf_symbol { type_id: 0xda80c39b full_name: "devm_devfreq_add_device" } +elf_symbol { + id: 0xa4692a70 + name: "devm_devfreq_event_add_edev" + is_defined: true + symbol_type: FUNCTION + crc: 0x5d86691d + type_id: 0xaa9ceb0d + full_name: "devm_devfreq_event_add_edev" +} elf_symbol { id: 0x3afde7ec name: "devm_devfreq_register_notifier" @@ -346262,6 +347163,15 @@ elf_symbol { type_id: 0x3d63b46a full_name: "devm_kasprintf" } +elf_symbol { + id: 0x0abc683e + name: "devm_kasprintf_strarray" + is_defined: true + symbol_type: FUNCTION + crc: 0xd205a636 + type_id: 0x0c5cd477 + full_name: "devm_kasprintf_strarray" +} elf_symbol { id: 0x7c053015 name: "devm_kfree" @@ -346496,6 +347406,15 @@ elf_symbol { type_id: 0x68eaecc0 full_name: "devm_pci_alloc_host_bridge" } +elf_symbol { + id: 0x92ffc2e2 + name: "devm_pci_remap_cfg_resource" + is_defined: true + symbol_type: FUNCTION + crc: 0x029de2b5 + type_id: 0x56edbc2a + full_name: "devm_pci_remap_cfg_resource" +} elf_symbol { id: 0xd6e5f7c7 name: "devm_phy_create" @@ -347072,6 +347991,15 @@ elf_symbol { type_id: 0x106c9a5c full_name: "devres_remove_group" } +elf_symbol { + id: 0x30dd6796 + name: "disable_hardirq" + is_defined: true + symbol_type: FUNCTION + crc: 0xbd3fe1e3 + type_id: 0xefc5028b + full_name: "disable_hardirq" +} elf_symbol { id: 0x573e2956 name: "disable_irq" @@ -350420,6 +351348,15 @@ elf_symbol { type_id: 0x99d6eb87 full_name: "drm_gem_handle_create" } +elf_symbol { + id: 0xd32d7c35 + name: "drm_gem_handle_delete" + is_defined: true + symbol_type: FUNCTION + crc: 0x855a2628 + type_id: 0x9a1d7c68 + full_name: "drm_gem_handle_delete" +} elf_symbol { id: 0xf76bbee4 name: "drm_gem_lock_reservations" @@ -352427,6 +353364,15 @@ elf_symbol { type_id: 0x5ca118ca full_name: "dw_pcie_find_capability" } +elf_symbol { + id: 0xdc24b796 + name: "dw_pcie_find_ext_capability" + is_defined: true + symbol_type: FUNCTION + crc: 0x8adbc3f0 + type_id: 0x0ec08f0d + full_name: "dw_pcie_find_ext_capability" +} elf_symbol { id: 0xb8395a3e name: "dw_pcie_host_init" @@ -352436,6 +353382,15 @@ elf_symbol { type_id: 0x94e69702 full_name: "dw_pcie_host_init" } +elf_symbol { + id: 0xa625950b + name: "dw_pcie_link_up" + is_defined: true + symbol_type: FUNCTION + crc: 0x9b8ebc8e + type_id: 0x92ce345a + full_name: "dw_pcie_link_up" +} elf_symbol { id: 0x9d898d75 name: "dw_pcie_own_conf_map_bus" @@ -353120,6 +354075,15 @@ elf_symbol { type_id: 0x988f2c1b full_name: "extcon_set_state_sync" } +elf_symbol { + id: 0xad3eb214 + name: "extcon_sync" + is_defined: true + symbol_type: FUNCTION + crc: 0x7893b9d4 + type_id: 0x989473cc + full_name: "extcon_sync" +} elf_symbol { id: 0xb107d2cd name: "extcon_unregister_notifier" @@ -355490,6 +356454,15 @@ elf_symbol { type_id: 0x9b54e21c full_name: "gpiochip_populate_parent_fwspec_fourcell" } +elf_symbol { + id: 0x14b7a009 + name: "gpiochip_relres_irq" + is_defined: true + symbol_type: FUNCTION + crc: 0x9c82d602 + type_id: 0x17b7d7d6 + full_name: "gpiochip_relres_irq" +} elf_symbol { id: 0x7dd9e61e name: "gpiochip_remove" @@ -355499,6 +356472,15 @@ elf_symbol { type_id: 0x16a1c24e full_name: "gpiochip_remove" } +elf_symbol { + id: 0x30903940 + name: "gpiochip_reqres_irq" + is_defined: true + symbol_type: FUNCTION + crc: 0x920467d8 + type_id: 0x9aaf656a + full_name: "gpiochip_reqres_irq" +} elf_symbol { id: 0x77a0ab63 name: "gpiochip_unlock_as_irq" @@ -356237,6 +357219,15 @@ elf_symbol { type_id: 0x102e21e5 full_name: "hdmi_avi_infoframe_pack" } +elf_symbol { + id: 0x4e8277c6 + name: "hdmi_avi_infoframe_pack_only" + is_defined: true + symbol_type: FUNCTION + crc: 0x2ee4c2b1 + type_id: 0x1a42044c + full_name: "hdmi_avi_infoframe_pack_only" +} elf_symbol { id: 0x7ec10e18 name: "hdmi_drm_infoframe_init" @@ -357695,6 +358686,15 @@ elf_symbol { type_id: 0xa98cedf4 full_name: "iio_channel_get" } +elf_symbol { + id: 0x0b446726 + name: "iio_channel_get_all" + is_defined: true + symbol_type: FUNCTION + crc: 0x30387314 + type_id: 0xa974af20 + full_name: "iio_channel_get_all" +} elf_symbol { id: 0x8aa99af0 name: "iio_channel_release" @@ -357704,6 +358704,15 @@ elf_symbol { type_id: 0x1ef16b9c full_name: "iio_channel_release" } +elf_symbol { + id: 0x5ecdc560 + name: "iio_channel_release_all" + is_defined: true + symbol_type: FUNCTION + crc: 0x47935be9 + type_id: 0x1ef16b9c + full_name: "iio_channel_release_all" +} elf_symbol { id: 0x7ee06725 name: "iio_dealloc_pollfunc" @@ -357947,6 +358956,15 @@ elf_symbol { type_id: 0x16dc304e full_name: "iio_trigger_unregister" } +elf_symbol { + id: 0xdf3e8655 + name: "iio_update_buffers" + is_defined: true + symbol_type: FUNCTION + crc: 0x7cc9b292 + type_id: 0x9b15020e + full_name: "iio_update_buffers" +} elf_symbol { id: 0x6f2f4bd1 name: "iio_write_channel_raw" @@ -358577,6 +359595,15 @@ elf_symbol { type_id: 0x158f9726 full_name: "input_set_capability" } +elf_symbol { + id: 0x31a5a9d7 + name: "input_set_poll_interval" + is_defined: true + symbol_type: FUNCTION + crc: 0xaf8d6e4f + type_id: 0x159ef67f + full_name: "input_set_poll_interval" +} elf_symbol { id: 0xfa66175a name: "input_set_timestamp" @@ -358586,6 +359613,15 @@ elf_symbol { type_id: 0x14cff3f5 full_name: "input_set_timestamp" } +elf_symbol { + id: 0x3975a1c8 + name: "input_setup_polling" + is_defined: true + symbol_type: FUNCTION + crc: 0xe6795292 + type_id: 0x99ae995e + full_name: "input_setup_polling" +} elf_symbol { id: 0x6a48a444 name: "input_unregister_device" @@ -358829,6 +359865,15 @@ elf_symbol { type_id: 0x1b338a63 full_name: "iommu_detach_device_pasid" } +elf_symbol { + id: 0xc578c7af + name: "iommu_detach_group" + is_defined: true + symbol_type: FUNCTION + crc: 0x41cce3f8 + type_id: 0x1b18b5bc + full_name: "iommu_detach_group" +} elf_symbol { id: 0x4c05b91e name: "iommu_dev_disable_feature" @@ -359810,6 +360855,15 @@ elf_symbol { type_id: 0x1247424a full_name: "irq_gc_mask_set_bit" } +elf_symbol { + id: 0x508904bc + name: "irq_gc_set_wake" + is_defined: true + symbol_type: FUNCTION + crc: 0x12d2b40d + type_id: 0x9e49e56e + full_name: "irq_gc_set_wake" +} elf_symbol { id: 0xe8b2d7a6 name: "irq_generic_chip_ops" @@ -361998,6 +363052,15 @@ elf_symbol { type_id: 0x927aedd4 full_name: "led_mc_calc_color_components" } +elf_symbol { + id: 0xbea2c272 + name: "led_set_brightness_nosleep" + is_defined: true + symbol_type: FUNCTION + crc: 0x8d7fee8c + type_id: 0x1d3cefc2 + full_name: "led_set_brightness_nosleep" +} elf_symbol { id: 0x2e74d698 name: "led_set_brightness_sync" @@ -362790,6 +363853,15 @@ elf_symbol { type_id: 0x173d80e7 full_name: "media_entity_remove_links" } +elf_symbol { + id: 0xda5dc517 + name: "media_entity_setup_link" + is_defined: true + symbol_type: FUNCTION + crc: 0xe5982bfb + type_id: 0x901c3c62 + full_name: "media_entity_setup_link" +} elf_symbol { id: 0x84278a73 name: "media_graph_walk_cleanup" @@ -363263,6 +364335,15 @@ elf_symbol { type_id: 0x142e3633 full_name: "mii_ethtool_gset" } +elf_symbol { + id: 0x863e9436 + name: "mii_link_ok" + is_defined: true + symbol_type: FUNCTION + crc: 0x957e09ab + type_id: 0x9906a4a5 + full_name: "mii_link_ok" +} elf_symbol { id: 0x1579ecd2 name: "mii_nway_restart" @@ -364010,6 +365091,15 @@ elf_symbol { type_id: 0x1c081607 full_name: "mmc_set_timing" } +elf_symbol { + id: 0xa6d8e105 + name: "mmc_sw_reset" + is_defined: true + symbol_type: FUNCTION + crc: 0x59a1e31f + type_id: 0x9d19aa55 + full_name: "mmc_sw_reset" +} elf_symbol { id: 0x44bb49dc name: "mmc_switch" @@ -366647,6 +367737,15 @@ elf_symbol { type_id: 0x119fef8e full_name: "of_phy_simple_xlate" } +elf_symbol { + id: 0xb27a823c + name: "of_pinctrl_get" + is_defined: true + symbol_type: FUNCTION + crc: 0xdcb4edab + type_id: 0xe2abbe2e + full_name: "of_pinctrl_get" +} elf_symbol { id: 0x840bde05 name: "of_platform_depopulate" @@ -366917,6 +368016,15 @@ elf_symbol { type_id: 0x5a09df06 full_name: "of_translate_address" } +elf_symbol { + id: 0xee187039 + name: "of_usb_get_dr_mode_by_phy" + is_defined: true + symbol_type: FUNCTION + crc: 0x2ea7a3cd + type_id: 0x66525607 + full_name: "of_usb_get_dr_mode_by_phy" +} elf_symbol { id: 0x7d8fe18b name: "of_usb_get_phy_mode" @@ -368873,6 +369981,15 @@ elf_symbol { type_id: 0x911c4ef8 full_name: "phy_mii_ioctl" } +elf_symbol { + id: 0xce039362 + name: "phy_mipi_dphy_config_validate" + is_defined: true + symbol_type: FUNCTION + crc: 0x881bad5e + type_id: 0x94418fe1 + full_name: "phy_mipi_dphy_config_validate" +} elf_symbol { id: 0x890d0269 name: "phy_mipi_dphy_get_default_config" @@ -369593,6 +370710,15 @@ elf_symbol { type_id: 0x9b558913 full_name: "pinctrl_enable" } +elf_symbol { + id: 0x35b1ed7b + name: "pinctrl_find_gpio_range_from_pin" + is_defined: true + symbol_type: FUNCTION + crc: 0x25629e8a + type_id: 0x1a1c4881 + full_name: "pinctrl_find_gpio_range_from_pin" +} elf_symbol { id: 0xf8bcc2db name: "pinctrl_force_default" @@ -369818,6 +370944,15 @@ elf_symbol { type_id: 0x9b4d90bf full_name: "pinctrl_utils_reserve_map" } +elf_symbol { + id: 0x62c010b9 + name: "pinmux_generic_add_function" + is_defined: true + symbol_type: FUNCTION + crc: 0x6264567f + type_id: 0x9ba346af + full_name: "pinmux_generic_add_function" +} elf_symbol { id: 0x013abbf5 name: "pinmux_generic_get_function" @@ -370169,6 +371304,15 @@ elf_symbol { type_id: 0x9dee9fa0 full_name: "pm_clk_add" } +elf_symbol { + id: 0x5b13a53d + name: "pm_clk_add_clk" + is_defined: true + symbol_type: FUNCTION + crc: 0x319b67c2 + type_id: 0x9de1e6d5 + full_name: "pm_clk_add_clk" +} elf_symbol { id: 0xaba73bf2 name: "pm_clk_create" @@ -370538,6 +371682,15 @@ elf_symbol { type_id: 0x169d12f4 full_name: "power_supply_changed" } +elf_symbol { + id: 0x50bfe1d8 + name: "power_supply_class" + is_defined: true + symbol_type: OBJECT + crc: 0x3e11d97d + type_id: 0x2a4c6b85 + full_name: "power_supply_class" +} elf_symbol { id: 0xa9ebbb66 name: "power_supply_find_ocv2cap_table" @@ -370601,6 +371754,15 @@ elf_symbol { type_id: 0x9ba3144f full_name: "power_supply_get_property" } +elf_symbol { + id: 0xf20efe74 + name: "power_supply_get_property_from_supplier" + is_defined: true + symbol_type: FUNCTION + crc: 0xf188af38 + type_id: 0x9ba3144f + full_name: "power_supply_get_property_from_supplier" +} elf_symbol { id: 0xd28bb85a name: "power_supply_is_system_supplied" @@ -371402,6 +372564,15 @@ elf_symbol { type_id: 0x9b6d4a33 full_name: "pvclock_gtod_register_notifier" } +elf_symbol { + id: 0x5ae13553 + name: "pwm_adjust_config" + is_defined: true + symbol_type: FUNCTION + crc: 0x22bed5ce + type_id: 0x97889594 + full_name: "pwm_adjust_config" +} elf_symbol { id: 0x53ee2234 name: "pwm_apply_state" @@ -373274,6 +374445,15 @@ elf_symbol { type_id: 0x9f59863d full_name: "regulator_set_voltage_time_sel" } +elf_symbol { + id: 0x12ab7c99 + name: "regulator_suspend_enable" + is_defined: true + symbol_type: FUNCTION + crc: 0x668c29cc + type_id: 0x9cb7a3ee + full_name: "regulator_suspend_enable" +} elf_symbol { id: 0x21b06e02 name: "regulator_sync_voltage" @@ -373481,6 +374661,15 @@ elf_symbol { type_id: 0x700bbe07 full_name: "reservation_ww_class" } +elf_symbol { + id: 0xb15014ad + name: "reserve_iova" + is_defined: true + symbol_type: FUNCTION + crc: 0x207ae624 + type_id: 0x48135354 + full_name: "reserve_iova" +} elf_symbol { id: 0x089f5fe6 name: "reset_control_acquire" @@ -376397,6 +377586,24 @@ elf_symbol { type_id: 0xf07462c6 full_name: "sget_fc" } +elf_symbol { + id: 0x0b4df89e + name: "sha1_init" + is_defined: true + symbol_type: FUNCTION + crc: 0x50624917 + type_id: 0x1c5eb40a + full_name: "sha1_init" +} +elf_symbol { + id: 0x7996527c + name: "sha1_transform" + is_defined: true + symbol_type: FUNCTION + crc: 0x5e0ccb9f + type_id: 0x1caa303b + full_name: "sha1_transform" +} elf_symbol { id: 0x7f3b48aa name: "shmem_file_setup" @@ -377091,6 +378298,60 @@ elf_symbol { type_id: 0x11b644af full_name: "skb_unlink" } +elf_symbol { + id: 0x706a5214 + name: "skcipher_alloc_instance_simple" + is_defined: true + symbol_type: FUNCTION + crc: 0xae8e9e95 + type_id: 0x034a2603 + full_name: "skcipher_alloc_instance_simple" +} +elf_symbol { + id: 0x56fe28ac + name: "skcipher_register_instance" + is_defined: true + symbol_type: FUNCTION + crc: 0xd2b42989 + type_id: 0x9aaf7e51 + full_name: "skcipher_register_instance" +} +elf_symbol { + id: 0xfb0d7eaf + name: "skcipher_walk_aead_decrypt" + is_defined: true + symbol_type: FUNCTION + crc: 0x9356d0fe + type_id: 0x946d2b92 + full_name: "skcipher_walk_aead_decrypt" +} +elf_symbol { + id: 0x910f3594 + name: "skcipher_walk_aead_encrypt" + is_defined: true + symbol_type: FUNCTION + crc: 0x4e121a7c + type_id: 0x946d2b92 + full_name: "skcipher_walk_aead_encrypt" +} +elf_symbol { + id: 0x6a015d4f + name: "skcipher_walk_done" + is_defined: true + symbol_type: FUNCTION + crc: 0xe799e196 + type_id: 0x9522132a + full_name: "skcipher_walk_done" +} +elf_symbol { + id: 0xcb37c2fd + name: "skcipher_walk_virt" + is_defined: true + symbol_type: FUNCTION + crc: 0xa1045e95 + type_id: 0x94d5972f + full_name: "skcipher_walk_virt" +} elf_symbol { id: 0x57adf54a name: "skip_spaces" @@ -377559,6 +378820,15 @@ elf_symbol { type_id: 0x9e61ffc7 full_name: "snd_pcm_create_iec958_consumer_default" } +elf_symbol { + id: 0xa4da49fe + name: "snd_pcm_create_iec958_consumer_hw_params" + is_defined: true + symbol_type: FUNCTION + crc: 0x11eba48e + type_id: 0x96d423b4 + full_name: "snd_pcm_create_iec958_consumer_hw_params" +} elf_symbol { id: 0xb9a87429 name: "snd_pcm_fill_iec958_consumer" @@ -377829,6 +379099,15 @@ elf_symbol { type_id: 0x98e6a470 full_name: "snd_pcm_stop" } +elf_symbol { + id: 0xc26d0753 + name: "snd_pcm_stop_xrun" + is_defined: true + symbol_type: FUNCTION + crc: 0x789b9ad6 + type_id: 0x98aeb261 + full_name: "snd_pcm_stop_xrun" +} elf_symbol { id: 0x1f5649eb name: "snd_sgbuf_get_addr" @@ -378630,6 +379909,24 @@ elf_symbol { type_id: 0x9e6bce91 full_name: "snd_soc_jack_add_gpios" } +elf_symbol { + id: 0xc92a02ef + name: "snd_soc_jack_add_zones" + is_defined: true + symbol_type: FUNCTION + crc: 0x1e0a39c0 + type_id: 0x9e6f0e68 + full_name: "snd_soc_jack_add_zones" +} +elf_symbol { + id: 0x804bafc3 + name: "snd_soc_jack_get_type" + is_defined: true + symbol_type: FUNCTION + crc: 0x0056842b + type_id: 0x9e65fffe + full_name: "snd_soc_jack_get_type" +} elf_symbol { id: 0xabad0839 name: "snd_soc_jack_notifier_register" @@ -380379,6 +381676,15 @@ elf_symbol { type_id: 0x1d20fb22 full_name: "suspend_set_ops" } +elf_symbol { + id: 0xd5e0987f + name: "swiotlb_max_segment" + is_defined: true + symbol_type: FUNCTION + crc: 0x5b6b0329 + type_id: 0xcedb7efb + full_name: "swiotlb_max_segment" +} elf_symbol { id: 0x1fe11014 name: "sync_blockdev" @@ -381216,6 +382522,15 @@ elf_symbol { type_id: 0x129c1f38 full_name: "tcpm_sourcing_vbus" } +elf_symbol { + id: 0xfccd15d1 + name: "tcpm_tcpc_reset" + is_defined: true + symbol_type: FUNCTION + crc: 0xea220941 + type_id: 0x129c1f38 + full_name: "tcpm_tcpc_reset" +} elf_symbol { id: 0x6869c83d name: "tcpm_vbus_change" @@ -384411,6 +385726,15 @@ elf_symbol { type_id: 0x95c42336 full_name: "usb_add_hcd" } +elf_symbol { + id: 0xea314c1f + name: "usb_add_phy" + is_defined: true + symbol_type: FUNCTION + crc: 0xb3aac08b + type_id: 0x9e7bd8f3 + full_name: "usb_add_phy" +} elf_symbol { id: 0xdc59a2d7 name: "usb_add_phy_dev" @@ -384744,6 +386068,15 @@ elf_symbol { type_id: 0x1fbef67f full_name: "usb_deregister" } +elf_symbol { + id: 0x201afca9 + name: "usb_deregister_dev" + is_defined: true + symbol_type: FUNCTION + crc: 0x6835cf09 + type_id: 0x18159e1c + full_name: "usb_deregister_dev" +} elf_symbol { id: 0xd75ad246 name: "usb_device_match_id" @@ -384924,6 +386257,15 @@ elf_symbol { type_id: 0x9dcedb70 full_name: "usb_find_common_endpoints" } +elf_symbol { + id: 0x899ff164 + name: "usb_find_interface" + is_defined: true + symbol_type: FUNCTION + crc: 0x8b21a5ec + type_id: 0x4d306964 + full_name: "usb_find_interface" +} elf_symbol { id: 0x4ec99a42 name: "usb_free_all_descriptors" @@ -385518,6 +386860,15 @@ elf_symbol { type_id: 0x11252cf3 full_name: "usb_phy_set_event" } +elf_symbol { + id: 0xbf06fcb7 + name: "usb_poison_anchored_urbs" + is_defined: true + symbol_type: FUNCTION + crc: 0x842f046d + type_id: 0x1d8d80fc + full_name: "usb_poison_anchored_urbs" +} elf_symbol { id: 0xcaff4b1e name: "usb_poison_urb" @@ -385581,6 +386932,15 @@ elf_symbol { type_id: 0x18d9f669 full_name: "usb_queue_reset_device" } +elf_symbol { + id: 0xa60cf3b7 + name: "usb_register_dev" + is_defined: true + symbol_type: FUNCTION + crc: 0xf06b7687 + type_id: 0x950d2ca0 + full_name: "usb_register_dev" +} elf_symbol { id: 0x944deaea name: "usb_register_driver" @@ -385680,6 +387040,15 @@ elf_symbol { type_id: 0x580ef044 full_name: "usb_role_switch_get_drvdata" } +elf_symbol { + id: 0x9de82d32 + name: "usb_role_switch_get_role" + is_defined: true + symbol_type: FUNCTION + crc: 0xff42c374 + type_id: 0x9a23bd25 + full_name: "usb_role_switch_get_role" +} elf_symbol { id: 0x09c05733 name: "usb_role_switch_put" @@ -386058,6 +387427,15 @@ elf_symbol { type_id: 0x1675f88f full_name: "usb_unregister_notify" } +elf_symbol { + id: 0x9ea1c58f + name: "usb_wakeup_enabled_descendants" + is_defined: true + symbol_type: FUNCTION + crc: 0xa1709c0c + type_id: 0xcd844708 + full_name: "usb_wakeup_enabled_descendants" +} elf_symbol { id: 0x140d9164 name: "usb_wakeup_notification" @@ -391065,6 +392443,8 @@ interface { symbol_id: 0xd6e3f912 symbol_id: 0x640280c1 symbol_id: 0xb3b57b4d + symbol_id: 0xda249832 + symbol_id: 0x206fe2ef symbol_id: 0x5693f2df symbol_id: 0xb029aed0 symbol_id: 0xa762593e @@ -391192,6 +392572,7 @@ interface { symbol_id: 0x82786c66 symbol_id: 0xd772fde3 symbol_id: 0x1abdc14f + symbol_id: 0x3eb51b20 symbol_id: 0xb9c34cbd symbol_id: 0x0bd7f049 symbol_id: 0xf54175ef @@ -391468,6 +392849,7 @@ interface { symbol_id: 0xa84b7a9c symbol_id: 0x1c488fd9 symbol_id: 0x4a75c450 + symbol_id: 0x1ae20002 symbol_id: 0xc8e5adc6 symbol_id: 0xa0a33b62 symbol_id: 0xc80b76b2 @@ -391523,11 +392905,13 @@ interface { symbol_id: 0xdac60909 symbol_id: 0x39dbce1e symbol_id: 0x5a11b234 + symbol_id: 0xf42e28c4 symbol_id: 0x8a96e88d symbol_id: 0xbd2ef94c symbol_id: 0x580bab0e symbol_id: 0x48318742 symbol_id: 0xa11919c2 + symbol_id: 0x04880ada symbol_id: 0x25ef9f7a symbol_id: 0xd6393164 symbol_id: 0x6c7fb432 @@ -391547,6 +392931,7 @@ interface { symbol_id: 0x76052ea8 symbol_id: 0x754e3185 symbol_id: 0x72598679 + symbol_id: 0x91507af8 symbol_id: 0xd2c17be4 symbol_id: 0xc5d5f65e symbol_id: 0x6ca4b892 @@ -391567,6 +392952,7 @@ interface { symbol_id: 0xd84adb21 symbol_id: 0xed719736 symbol_id: 0x2b1e3d59 + symbol_id: 0x98850f9d symbol_id: 0x495f0223 symbol_id: 0x7fbd0d58 symbol_id: 0x06f2ea68 @@ -391581,6 +392967,7 @@ interface { symbol_id: 0x5f9864aa symbol_id: 0x966a7c42 symbol_id: 0xab62b21c + symbol_id: 0xfb23b117 symbol_id: 0x4f627b39 symbol_id: 0xda163e44 symbol_id: 0xb375007c @@ -391627,6 +393014,7 @@ interface { symbol_id: 0x9f1f7cee symbol_id: 0xd89255c2 symbol_id: 0x962b6a68 + symbol_id: 0x15e1667b symbol_id: 0x33bbeca6 symbol_id: 0x4e0ae383 symbol_id: 0x81619b01 @@ -391715,6 +393103,7 @@ interface { symbol_id: 0xff08526f symbol_id: 0xc81e9eb3 symbol_id: 0x237a3562 + symbol_id: 0x5d9de9a7 symbol_id: 0x1d1f6717 symbol_id: 0x20c19184 symbol_id: 0xef67fe16 @@ -391877,6 +393266,7 @@ interface { symbol_id: 0xf233a4f2 symbol_id: 0x5f8e5002 symbol_id: 0x4bb20cbc + symbol_id: 0xe1beb7e3 symbol_id: 0x0d97ed87 symbol_id: 0x0aa80467 symbol_id: 0x92dcd9e0 @@ -391985,6 +393375,7 @@ interface { symbol_id: 0x22e51db4 symbol_id: 0x5a62c5df symbol_id: 0x20c43211 + symbol_id: 0xa09675ab symbol_id: 0xcdcce9e8 symbol_id: 0x67a68b2f symbol_id: 0x89e08852 @@ -392028,6 +393419,7 @@ interface { symbol_id: 0xdeeb802d symbol_id: 0x78407718 symbol_id: 0x88d6fe86 + symbol_id: 0xa4692a70 symbol_id: 0x3afde7ec symbol_id: 0x2bf23b7c symbol_id: 0x97301de5 @@ -392075,6 +393467,7 @@ interface { symbol_id: 0xb08551d1 symbol_id: 0x5b0ad2ac symbol_id: 0xc576d59e + symbol_id: 0x0abc683e symbol_id: 0x7c053015 symbol_id: 0xff9fcdce symbol_id: 0xa34635ab @@ -392101,6 +393494,7 @@ interface { symbol_id: 0x6e7e1dc0 symbol_id: 0x1ed62a9d symbol_id: 0x5df7b359 + symbol_id: 0x92ffc2e2 symbol_id: 0xd6e5f7c7 symbol_id: 0x7695d1dd symbol_id: 0xcf6046cf @@ -392165,6 +393559,7 @@ interface { symbol_id: 0xabe60a33 symbol_id: 0x7ae5eeb4 symbol_id: 0x317870a4 + symbol_id: 0x30dd6796 symbol_id: 0x573e2956 symbol_id: 0xe5bfa8c8 symbol_id: 0xd48a6769 @@ -392535,6 +393930,7 @@ interface { symbol_id: 0xaef6523a symbol_id: 0xef97e722 symbol_id: 0x026b095a + symbol_id: 0xd32d7c35 symbol_id: 0xf76bbee4 symbol_id: 0x91de51a1 symbol_id: 0x007e9802 @@ -392758,7 +394154,9 @@ interface { symbol_id: 0x42636e32 symbol_id: 0x9bb960df symbol_id: 0xbf2af0d7 + symbol_id: 0xdc24b796 symbol_id: 0xb8395a3e + symbol_id: 0xa625950b symbol_id: 0x9d898d75 symbol_id: 0x9ec4a8cb symbol_id: 0x9b31fd86 @@ -392835,6 +394233,7 @@ interface { symbol_id: 0xb1dfbb02 symbol_id: 0xacc42253 symbol_id: 0x0a446897 + symbol_id: 0xad3eb214 symbol_id: 0xb107d2cd symbol_id: 0x8628f24d symbol_id: 0xc56006c7 @@ -393098,7 +394497,9 @@ interface { symbol_id: 0x65492c23 symbol_id: 0xa106a350 symbol_id: 0x59b3b64e + symbol_id: 0x14b7a009 symbol_id: 0x7dd9e61e + symbol_id: 0x30903940 symbol_id: 0x77a0ab63 symbol_id: 0x4825b485 symbol_id: 0xa448ac51 @@ -393181,6 +394582,7 @@ interface { symbol_id: 0x0e1d2fa4 symbol_id: 0x306e3b3d symbol_id: 0x684435da + symbol_id: 0x4e8277c6 symbol_id: 0x7ec10e18 symbol_id: 0xe197ec6f symbol_id: 0x58069299 @@ -393343,7 +394745,9 @@ interface { symbol_id: 0x76041d7e symbol_id: 0xd941beb8 symbol_id: 0xe4653a75 + symbol_id: 0x0b446726 symbol_id: 0x8aa99af0 + symbol_id: 0x5ecdc560 symbol_id: 0x7ee06725 symbol_id: 0xea065265 symbol_id: 0xd50bc6e1 @@ -393371,6 +394775,7 @@ interface { symbol_id: 0x7551a60b symbol_id: 0x08fd4b84 symbol_id: 0xc6d8f246 + symbol_id: 0xdf3e8655 symbol_id: 0x6f2f4bd1 symbol_id: 0xf87ecda4 symbol_id: 0x00b4d2da @@ -393441,7 +394846,9 @@ interface { symbol_id: 0xdd50f291 symbol_id: 0xd2b5c87d symbol_id: 0xf58961c1 + symbol_id: 0x31a5a9d7 symbol_id: 0xfa66175a + symbol_id: 0x3975a1c8 symbol_id: 0x6a48a444 symbol_id: 0xc73383c1 symbol_id: 0x0ee6aecf @@ -393469,6 +394876,7 @@ interface { symbol_id: 0xe80863b1 symbol_id: 0xd81a7d03 symbol_id: 0x0566bca1 + symbol_id: 0xc578c7af symbol_id: 0x4c05b91e symbol_id: 0xa5459730 symbol_id: 0xe77a1ae2 @@ -393578,6 +394986,7 @@ interface { symbol_id: 0x9ed1af8c symbol_id: 0xf030b866 symbol_id: 0x01f6343f + symbol_id: 0x508904bc symbol_id: 0xe8b2d7a6 symbol_id: 0x2ed6bfeb symbol_id: 0xa9c80d6c @@ -393821,6 +395230,7 @@ interface { symbol_id: 0x62cd5012 symbol_id: 0xda95494e symbol_id: 0x76f00da5 + symbol_id: 0xbea2c272 symbol_id: 0x2e74d698 symbol_id: 0x7bbb8d5f symbol_id: 0xa18d331b @@ -393909,6 +395319,7 @@ interface { symbol_id: 0xd0b869bf symbol_id: 0x3e285e2f symbol_id: 0xf5924d9f + symbol_id: 0xda5dc517 symbol_id: 0x84278a73 symbol_id: 0xf5327fe3 symbol_id: 0x92649662 @@ -393962,6 +395373,7 @@ interface { symbol_id: 0xbad16ab3 symbol_id: 0x68c3a63b symbol_id: 0xbc90165b + symbol_id: 0x863e9436 symbol_id: 0x1579ecd2 symbol_id: 0xe4572a81 symbol_id: 0x07b15271 @@ -394045,6 +395457,7 @@ interface { symbol_id: 0x2f332836 symbol_id: 0x165e673e symbol_id: 0xe8a26880 + symbol_id: 0xa6d8e105 symbol_id: 0x44bb49dc symbol_id: 0x6e71b72c symbol_id: 0x381bc1b0 @@ -394338,6 +395751,7 @@ interface { symbol_id: 0x783e3f26 symbol_id: 0xeb2dab5b symbol_id: 0x5516ad40 + symbol_id: 0xb27a823c symbol_id: 0x840bde05 symbol_id: 0x923f5818 symbol_id: 0x41ba71c8 @@ -394368,6 +395782,7 @@ interface { symbol_id: 0x28517749 symbol_id: 0xdfe02c28 symbol_id: 0xdcce2e99 + symbol_id: 0xee187039 symbol_id: 0x7d8fe18b symbol_id: 0x02252ed7 symbol_id: 0xbfb07eec @@ -394585,6 +396000,7 @@ interface { symbol_id: 0x0e1df21c symbol_id: 0xac520589 symbol_id: 0x2eeef935 + symbol_id: 0xce039362 symbol_id: 0x890d0269 symbol_id: 0xa22df476 symbol_id: 0x3b5dbc43 @@ -394665,6 +396081,7 @@ interface { symbol_id: 0x9df74c73 symbol_id: 0x740c134e symbol_id: 0xacd66e9e + symbol_id: 0x35b1ed7b symbol_id: 0xf8bcc2db symbol_id: 0x3f5b9269 symbol_id: 0xdfa2e68a @@ -394690,6 +396107,7 @@ interface { symbol_id: 0xe59b51ac symbol_id: 0x82feb89e symbol_id: 0x417866a8 + symbol_id: 0x62c010b9 symbol_id: 0x013abbf5 symbol_id: 0x9542ffda symbol_id: 0xb1ded749 @@ -394729,6 +396147,7 @@ interface { symbol_id: 0x55fd0d76 symbol_id: 0x25e7db1a symbol_id: 0xb634bd54 + symbol_id: 0x5b13a53d symbol_id: 0xaba73bf2 symbol_id: 0xa2a45fe2 symbol_id: 0xe8ce7aa9 @@ -394770,6 +396189,7 @@ interface { symbol_id: 0x324d8228 symbol_id: 0xd612789c symbol_id: 0x561323f1 + symbol_id: 0x50bfe1d8 symbol_id: 0xa9ebbb66 symbol_id: 0x2f21ba25 symbol_id: 0x81c5befa @@ -394777,6 +396197,7 @@ interface { symbol_id: 0xd1691fe4 symbol_id: 0x4804f611 symbol_id: 0x842fc505 + symbol_id: 0xf20efe74 symbol_id: 0xd28bb85a symbol_id: 0x9e62b4cc symbol_id: 0x26c5a1b9 @@ -394866,6 +396287,7 @@ interface { symbol_id: 0xde695e5a symbol_id: 0x4e730977 symbol_id: 0x8dafa617 + symbol_id: 0x5ae13553 symbol_id: 0x53ee2234 symbol_id: 0x227e051f symbol_id: 0x9a5fd229 @@ -395074,6 +396496,7 @@ interface { symbol_id: 0x0b03a904 symbol_id: 0x2bce772d symbol_id: 0x705777ef + symbol_id: 0x12ab7c99 symbol_id: 0x21b06e02 symbol_id: 0x70f8b485 symbol_id: 0x3a44a497 @@ -395097,6 +396520,7 @@ interface { symbol_id: 0x0d3c3e14 symbol_id: 0xe5340075 symbol_id: 0x6aab6dda + symbol_id: 0xb15014ad symbol_id: 0x089f5fe6 symbol_id: 0x0c73acc8 symbol_id: 0xace4bcdf @@ -395421,6 +396845,8 @@ interface { symbol_id: 0x7c74f0ec symbol_id: 0x8525915d symbol_id: 0x12402fa7 + symbol_id: 0x0b4df89e + symbol_id: 0x7996527c symbol_id: 0x7f3b48aa symbol_id: 0xf47010e0 symbol_id: 0x436ee92c @@ -395498,6 +396924,12 @@ interface { symbol_id: 0x745d77d7 symbol_id: 0xee44d535 symbol_id: 0xeedc57e1 + symbol_id: 0x706a5214 + symbol_id: 0x56fe28ac + symbol_id: 0xfb0d7eaf + symbol_id: 0x910f3594 + symbol_id: 0x6a015d4f + symbol_id: 0xcb37c2fd symbol_id: 0x57adf54a symbol_id: 0xcfc71fe1 symbol_id: 0xadfa8107 @@ -395550,6 +396982,7 @@ interface { symbol_id: 0x5f29be60 symbol_id: 0xfd1fa5d2 symbol_id: 0x964dcd4d + symbol_id: 0xa4da49fe symbol_id: 0xb9a87429 symbol_id: 0xbfd5ebac symbol_id: 0x68c67cd0 @@ -395580,6 +397013,7 @@ interface { symbol_id: 0x92edca7e symbol_id: 0xb2f7eb17 symbol_id: 0x8eb5b50d + symbol_id: 0xc26d0753 symbol_id: 0x1f5649eb symbol_id: 0x31ef5894 symbol_id: 0x0af8ff72 @@ -395669,6 +397103,8 @@ interface { symbol_id: 0xcd537f33 symbol_id: 0xef58928a symbol_id: 0x48726233 + symbol_id: 0xc92a02ef + symbol_id: 0x804bafc3 symbol_id: 0xabad0839 symbol_id: 0x6d4398fa symbol_id: 0xce618820 @@ -395864,6 +397300,7 @@ interface { symbol_id: 0x0e1b0b82 symbol_id: 0xfb52ace2 symbol_id: 0x44e002a2 + symbol_id: 0xd5e0987f symbol_id: 0x1fe11014 symbol_id: 0x75fe69c4 symbol_id: 0x2a267913 @@ -395957,6 +397394,7 @@ interface { symbol_id: 0xc8ad19b6 symbol_id: 0xdebe76ba symbol_id: 0xae3ea97c + symbol_id: 0xfccd15d1 symbol_id: 0x6869c83d symbol_id: 0x5bbd3545 symbol_id: 0xf4017fdd @@ -396312,6 +397750,7 @@ interface { symbol_id: 0x8f72141f symbol_id: 0x8dc26f05 symbol_id: 0xcb2698e3 + symbol_id: 0xea314c1f symbol_id: 0xdc59a2d7 symbol_id: 0xc8d57f30 symbol_id: 0xa1439ad9 @@ -396349,6 +397788,7 @@ interface { symbol_id: 0x27e59f46 symbol_id: 0x109adee2 symbol_id: 0x784d1cb4 + symbol_id: 0x201afca9 symbol_id: 0xd75ad246 symbol_id: 0xdefa9d60 symbol_id: 0x905187d4 @@ -396369,6 +397809,7 @@ interface { symbol_id: 0x792a6c04 symbol_id: 0xdc1a1266 symbol_id: 0x4a8ce807 + symbol_id: 0x899ff164 symbol_id: 0x4ec99a42 symbol_id: 0xf83f300d symbol_id: 0x57c3f1e7 @@ -396435,6 +397876,7 @@ interface { symbol_id: 0xe9d87e68 symbol_id: 0xf55bd7e0 symbol_id: 0xf3c1fd90 + symbol_id: 0xbf06fcb7 symbol_id: 0xcaff4b1e symbol_id: 0x92510f88 symbol_id: 0x1294ca70 @@ -396442,6 +397884,7 @@ interface { symbol_id: 0x214d76fa symbol_id: 0xa834737e symbol_id: 0x869e15d7 + symbol_id: 0xa60cf3b7 symbol_id: 0x944deaea symbol_id: 0x413dc89c symbol_id: 0xbc035d91 @@ -396453,6 +397896,7 @@ interface { symbol_id: 0xd5bd73b9 symbol_id: 0x951bfee9 symbol_id: 0x55fbd705 + symbol_id: 0x9de82d32 symbol_id: 0x09c05733 symbol_id: 0xf104e451 symbol_id: 0x282288bb @@ -396495,6 +397939,7 @@ interface { symbol_id: 0x0741c87d symbol_id: 0x3bf4fac5 symbol_id: 0xcac8f190 + symbol_id: 0x9ea1c58f symbol_id: 0x140d9164 symbol_id: 0x52816b1c symbol_id: 0x19d80976 From 7246ecec46a3236a3abd81910251ed7a433c76f0 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 14 Sep 2023 10:21:58 +0800 Subject: [PATCH 07/99] ANDROID: GKI: Add rockchip drm symbols and abi INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 23 function symbol(s) added 'int __drm_atomic_helper_disable_plane(struct drm_plane*, struct drm_plane_state*)' 'int component_compare_dev(struct device*, void*)' 'int drm_aperture_remove_conflicting_framebuffers(resource_size_t, resource_size_t, bool, const struct drm_driver*)' 'struct edid* drm_bridge_get_edid(struct drm_bridge*, struct drm_connector*)' 'int drm_bridge_get_modes(struct drm_bridge*, struct drm_connector*)' 'bool drm_connector_has_possible_encoder(struct drm_connector*, struct drm_encoder*)' 'struct drm_crtc* drm_crtc_from_index(struct drm_device*, int)' 'uint64_t drm_format_info_min_pitch(const struct drm_format_info*, int, unsigned int)' 'struct dma_buf* drm_gem_dmabuf_export(struct drm_device*, struct dma_buf_export_info*)' 'int drm_gem_dumb_map_offset(struct drm_file*, struct drm_device*, u32, u64*)' 'int drm_gem_fb_afbc_init(struct drm_device*, const struct drm_mode_fb_cmd2*, struct drm_afbc_framebuffer*)' 'int drm_gem_fb_init_with_funcs(struct drm_device*, struct drm_framebuffer*, struct drm_file*, const struct drm_mode_fb_cmd2*, const struct drm_framebuffer_funcs*)' 'int drm_mm_reserve_node(struct drm_mm*, struct drm_mm_node*)' 'int drm_mode_create_tv_properties(struct drm_device*, unsigned int, const char* const*)' 'bool drm_mode_is_420(const struct drm_display_info*, const struct drm_display_mode*)' 'enum drm_mode_status drm_mode_validate_driver(struct drm_device*, const struct drm_display_mode*)' 'enum drm_mode_status drm_mode_validate_size(const struct drm_display_mode*, int, int)' 'enum drm_mode_status drm_mode_validate_ycbcr420(const struct drm_display_mode*, struct drm_connector*)' 'uint32_t drm_of_crtc_port_mask(struct drm_device*, struct device_node*)' 'struct drm_property* drm_property_create_object(struct drm_device*, u32, const char*, uint32_t)' 'int drm_property_replace_global_blob(struct drm_device*, struct drm_property_blob**, size_t, const void*, struct drm_mode_object*, struct drm_property*)' 'bool mipi_dsi_packet_format_is_short(u8)' 'struct device_node* of_graph_get_remote_port(const struct device_node*)' Bug: 300024866 Change-Id: I057815380a8c4a3dfb1a81f6fd27148e3e36719c Signed-off-by: Kever Yang --- android/abi_gki_aarch64.stg | 397 +++++++++++++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 262 ++++++++++++++++++++ 2 files changed, 659 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index d2cc09048ee0..fa80fac5fa33 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -8553,6 +8553,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x7a249348 } +pointer_reference { + id: 0x14199568 + kind: POINTER + pointee_type_id: 0x7a26b33d +} pointer_reference { id: 0x141d28a8 kind: POINTER @@ -9048,6 +9053,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x71511504 } +pointer_reference { + id: 0x16c5c0ab + kind: POINTER + pointee_type_id: 0x7157e430 +} pointer_reference { id: 0x16df644d kind: POINTER @@ -44113,6 +44123,12 @@ member { type_id: 0x18bd6530 offset: 384 } +member { + id: 0xd5613ffc + name: "afbc_size" + type_id: 0xc9082b19 + offset: 1760 +} member { id: 0x9aeabf13 name: "afc" @@ -44434,6 +44450,18 @@ member { type_id: 0x0b395893 offset: 8192 } +member { + id: 0xdeafe619 + name: "aligned_height" + type_id: 0xc9082b19 + offset: 1696 +} +member { + id: 0x6db01f09 + name: "aligned_width" + type_id: 0xc9082b19 + offset: 1664 +} member { id: 0x9d7710c5 name: "alignmask" @@ -51502,6 +51530,11 @@ member { name: "base" type_id: 0xec967f20 } +member { + id: 0x85378cb8 + name: "base" + type_id: 0xed62338c +} member { id: 0x8544c9f4 name: "base" @@ -53572,6 +53605,12 @@ member { type_id: 0x861a0f9a offset: 112 } +member { + id: 0xdb864134 + name: "block_height" + type_id: 0xc9082b19 + offset: 1632 +} member { id: 0x215a13ec name: "block_len" @@ -53638,6 +53677,12 @@ member { type_id: 0x861a0f9a offset: 104 } +member { + id: 0x3b9c97de + name: "block_width" + type_id: 0xc9082b19 + offset: 1600 +} member { id: 0x82470e87 name: "blocked" @@ -138577,6 +138622,12 @@ member { type_id: 0xdd6eef0a offset: 128 } +member { + id: 0x9bd5d3ca + name: "offset" + type_id: 0xc9082b19 + offset: 1728 +} member { id: 0x9bd5d4ef name: "offset" @@ -222671,6 +222722,21 @@ struct_union { member_id: 0xd47cf744 } } +struct_union { + id: 0x7a26b33d + kind: STRUCT + name: "drm_afbc_framebuffer" + definition { + bytesize: 224 + member_id: 0x85378cb8 + member_id: 0x3b9c97de + member_id: 0xdb864134 + member_id: 0x6db01f09 + member_id: 0xdeafe619 + member_id: 0x9bd5d3ca + member_id: 0xd5613ffc + } +} struct_union { id: 0x9cb7b96f kind: STRUCT @@ -297672,6 +297738,12 @@ function { parameter_id: 0x0cbf60eb parameter_id: 0x2b20aa80 } +function { + id: 0x44b624d1 + return_type_id: 0x00c83ba6 + parameter_id: 0x3b04bead + parameter_id: 0x16c5c0ab +} function { id: 0x44ddb78b return_type_id: 0x356691bc @@ -297717,6 +297789,12 @@ function { parameter_id: 0x3860f3c0 parameter_id: 0x6720d32f } +function { + id: 0x45df5dd3 + return_type_id: 0x315b7e01 + parameter_id: 0x3b04bead + parameter_id: 0x6720d32f +} function { id: 0x45f82b62 return_type_id: 0xc9082b19 @@ -298257,6 +298335,13 @@ function { parameter_id: 0x2936263d parameter_id: 0x6720d32f } +function { + id: 0x5274946d + return_type_id: 0x1c898f28 + parameter_id: 0x356691bc + parameter_id: 0x6720d32f + parameter_id: 0x4585663f +} function { id: 0x5281433c return_type_id: 0x92233392 @@ -304785,6 +304870,13 @@ function { parameter_id: 0x3b04bead parameter_id: 0x4585663f } +function { + id: 0x9258444e + return_type_id: 0x6720d32f + parameter_id: 0x3b04bead + parameter_id: 0x4585663f + parameter_id: 0x3e75499e +} function { id: 0x925d3e48 return_type_id: 0x6720d32f @@ -306126,6 +306218,16 @@ function { parameter_id: 0x13580d6c parameter_id: 0x07dcdbe1 } +function { + id: 0x93625762 + return_type_id: 0x6720d32f + parameter_id: 0x3b04bead + parameter_id: 0x079f969f + parameter_id: 0xf435685e + parameter_id: 0x391f15ea + parameter_id: 0x30ccee09 + parameter_id: 0x2a670b41 +} function { id: 0x93627fe0 return_type_id: 0x6720d32f @@ -306233,6 +306335,15 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xa52a0930 } +function { + id: 0x938283cb + return_type_id: 0x6720d32f + parameter_id: 0x3b04bead + parameter_id: 0x31c8b544 + parameter_id: 0x12e6ffae + parameter_id: 0x36d2de0e + parameter_id: 0x3db894b0 +} function { id: 0x93833601 return_type_id: 0x6720d32f @@ -306404,6 +306515,13 @@ function { parameter_id: 0x4585663f parameter_id: 0x0b27dc43 } +function { + id: 0x939f8199 + return_type_id: 0x6720d32f + parameter_id: 0x3b04bead + parameter_id: 0x36d2de0e + parameter_id: 0x14199568 +} function { id: 0x93a2a3d7 return_type_id: 0x6720d32f @@ -309208,6 +309326,12 @@ function { parameter_id: 0x391f15ea parameter_id: 0x18bd6530 } +function { + id: 0x974e1bca + return_type_id: 0x6720d32f + parameter_id: 0x2953a412 + parameter_id: 0x26847863 +} function { id: 0x975a548f return_type_id: 0x6720d32f @@ -311796,6 +311920,14 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x92233392 } +function { + id: 0x99e7b457 + return_type_id: 0x6720d32f + parameter_id: 0x12e6ffae + parameter_id: 0x3b04bead + parameter_id: 0xc9082b19 + parameter_id: 0x2e18f543 +} function { id: 0x99eacf10 return_type_id: 0x6720d32f @@ -314614,6 +314746,14 @@ function { parameter_id: 0xc9082b19 parameter_id: 0x17b3f4e8 } +function { + id: 0x9b723218 + return_type_id: 0x2a670b41 + parameter_id: 0x3b04bead + parameter_id: 0xc9082b19 + parameter_id: 0x3e10b518 + parameter_id: 0x1c3dbe5a +} function { id: 0x9b7237ea return_type_id: 0x2a670b41 @@ -323814,6 +323954,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0xb0ddb211 } +function { + id: 0xb28c48b5 + return_type_id: 0x067c4b9a + parameter_id: 0x358ff5b7 + parameter_id: 0x31b5a66f +} function { id: 0xb2be15b9 return_type_id: 0x6720d32f @@ -323844,6 +323990,13 @@ function { parameter_id: 0x315b7e01 parameter_id: 0x358ff5b7 } +function { + id: 0xb3cfd554 + return_type_id: 0x067c4b9a + parameter_id: 0x358ff5b7 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0xb3df35fa return_type_id: 0x06835e9c @@ -324038,6 +324191,14 @@ function { parameter_id: 0x1344d43c parameter_id: 0xf1a6dfed } +function { + id: 0xba97bb1d + return_type_id: 0x6720d32f + parameter_id: 0x9565759f + parameter_id: 0x9565759f + parameter_id: 0x6d7f5ff6 + parameter_id: 0x33d50b40 +} function { id: 0xbb40a305 return_type_id: 0x6720d32f @@ -326362,6 +326523,12 @@ function { parameter_id: 0x1b55a8f2 parameter_id: 0x4585663f } +function { + id: 0xf272e262 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x31b5a66f + parameter_id: 0x2ef43f67 +} function { id: 0xf275a972 return_type_id: 0x6d7f5ff6 @@ -328688,6 +328855,15 @@ elf_symbol { type_id: 0x1c25e791 full_name: "__drm_atomic_helper_crtc_reset" } +elf_symbol { + id: 0xa061e45d + name: "__drm_atomic_helper_disable_plane" + is_defined: true + symbol_type: FUNCTION + crc: 0x3695d680 + type_id: 0x9bf37946 + full_name: "__drm_atomic_helper_disable_plane" +} elf_symbol { id: 0xec903c93 name: "__drm_atomic_helper_plane_destroy_state" @@ -342741,6 +342917,15 @@ elf_symbol { type_id: 0x9d7428e0 full_name: "component_bind_all" } +elf_symbol { + id: 0x9901e8ee + name: "component_compare_dev" + is_defined: true + symbol_type: FUNCTION + crc: 0x0b549846 + type_id: 0x9d7428e0 + full_name: "component_compare_dev" +} elf_symbol { id: 0x4bc5faef name: "component_compare_dev_name" @@ -349530,6 +349715,15 @@ elf_symbol { type_id: 0x9068c1cc full_name: "drm_add_modes_noedid" } +elf_symbol { + id: 0x7e8263f6 + name: "drm_aperture_remove_conflicting_framebuffers" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5abe6ba + type_id: 0xba97bb1d + full_name: "drm_aperture_remove_conflicting_framebuffers" +} elf_symbol { id: 0x588ab3fd name: "drm_aperture_remove_conflicting_pci_framebuffers" @@ -350376,6 +350570,24 @@ elf_symbol { type_id: 0xfcf090be full_name: "drm_bridge_detect" } +elf_symbol { + id: 0x3ef0db06 + name: "drm_bridge_get_edid" + is_defined: true + symbol_type: FUNCTION + crc: 0xdeb653ce + type_id: 0xc7bc0e4a + full_name: "drm_bridge_get_edid" +} +elf_symbol { + id: 0xc72378aa + name: "drm_bridge_get_modes" + is_defined: true + symbol_type: FUNCTION + crc: 0x8446a07e + type_id: 0x94dc0c27 + full_name: "drm_bridge_get_modes" +} elf_symbol { id: 0xd82232b3 name: "drm_bridge_hpd_notify" @@ -350511,6 +350723,15 @@ elf_symbol { type_id: 0x1cf53808 full_name: "drm_connector_cleanup" } +elf_symbol { + id: 0xf8bd92c8 + name: "drm_connector_has_possible_encoder" + is_defined: true + symbol_type: FUNCTION + crc: 0x2e4b4a64 + type_id: 0xf272e262 + full_name: "drm_connector_has_possible_encoder" +} elf_symbol { id: 0x70b7d94b name: "drm_connector_init" @@ -350655,6 +350876,15 @@ elf_symbol { type_id: 0x1e67551a full_name: "drm_crtc_enable_color_mgmt" } +elf_symbol { + id: 0x08309f5e + name: "drm_crtc_from_index" + is_defined: true + symbol_type: FUNCTION + crc: 0x34429a5e + type_id: 0x45df5dd3 + full_name: "drm_crtc_from_index" +} elf_symbol { id: 0x11e9361c name: "drm_crtc_handle_vblank" @@ -351159,6 +351389,15 @@ elf_symbol { type_id: 0xc21e59d8 full_name: "drm_format_info_block_width" } +elf_symbol { + id: 0x4b9e6227 + name: "drm_format_info_min_pitch" + is_defined: true + symbol_type: FUNCTION + crc: 0x6910e4cd + type_id: 0x5274946d + full_name: "drm_format_info_min_pitch" +} elf_symbol { id: 0x9c6b68f2 name: "drm_framebuffer_cleanup" @@ -351222,6 +351461,15 @@ elf_symbol { type_id: 0x9398dfdf full_name: "drm_gem_create_mmap_offset" } +elf_symbol { + id: 0xd4d38d4c + name: "drm_gem_dmabuf_export" + is_defined: true + symbol_type: FUNCTION + crc: 0x9af5812d + type_id: 0x44b624d1 + full_name: "drm_gem_dmabuf_export" +} elf_symbol { id: 0x81bdff8a name: "drm_gem_dmabuf_mmap" @@ -351258,6 +351506,24 @@ elf_symbol { type_id: 0x10563618 full_name: "drm_gem_dmabuf_vunmap" } +elf_symbol { + id: 0xac1aeaf0 + name: "drm_gem_dumb_map_offset" + is_defined: true + symbol_type: FUNCTION + crc: 0x8220a182 + type_id: 0x99e7b457 + full_name: "drm_gem_dumb_map_offset" +} +elf_symbol { + id: 0x622cdd92 + name: "drm_gem_fb_afbc_init" + is_defined: true + symbol_type: FUNCTION + crc: 0x38ebad6a + type_id: 0x939f8199 + full_name: "drm_gem_fb_afbc_init" +} elf_symbol { id: 0xc7970f23 name: "drm_gem_fb_begin_cpu_access" @@ -351303,6 +351569,15 @@ elf_symbol { type_id: 0x0bfc976c full_name: "drm_gem_fb_get_obj" } +elf_symbol { + id: 0x585410d0 + name: "drm_gem_fb_init_with_funcs" + is_defined: true + symbol_type: FUNCTION + crc: 0x882550af + type_id: 0x938283cb + full_name: "drm_gem_fb_init_with_funcs" +} elf_symbol { id: 0xd4a13963 name: "drm_gem_fb_vmap" @@ -351987,6 +352262,15 @@ elf_symbol { type_id: 0x19394f8b full_name: "drm_mm_remove_node" } +elf_symbol { + id: 0xd0dd3133 + name: "drm_mm_reserve_node" + is_defined: true + symbol_type: FUNCTION + crc: 0x2754dad8 + type_id: 0x974e1bca + full_name: "drm_mm_reserve_node" +} elf_symbol { id: 0x3b867568 name: "drm_mm_scan_add_block" @@ -352131,6 +352415,15 @@ elf_symbol { type_id: 0x42ee3dd4 full_name: "drm_mode_create_tile_group" } +elf_symbol { + id: 0x0d3b6723 + name: "drm_mode_create_tv_properties" + is_defined: true + symbol_type: FUNCTION + crc: 0x30d9d722 + type_id: 0x9258444e + full_name: "drm_mode_create_tv_properties" +} elf_symbol { id: 0x58b810bd name: "drm_mode_crtc_set_gamma_size" @@ -352194,6 +352487,15 @@ elf_symbol { type_id: 0xc6a0fd0e full_name: "drm_mode_find_dmt" } +elf_symbol { + id: 0xc3ae75b9 + name: "drm_mode_is_420" + is_defined: true + symbol_type: FUNCTION + crc: 0x8c35d2cf + type_id: 0xf10b3730 + full_name: "drm_mode_is_420" +} elf_symbol { id: 0xca851619 name: "drm_mode_is_420_also" @@ -352293,6 +352595,33 @@ elf_symbol { type_id: 0x1f00dfeb full_name: "drm_mode_sort" } +elf_symbol { + id: 0x003f0aec + name: "drm_mode_validate_driver" + is_defined: true + symbol_type: FUNCTION + crc: 0x952d25ca + type_id: 0xb13e733c + full_name: "drm_mode_validate_driver" +} +elf_symbol { + id: 0x43bb72ae + name: "drm_mode_validate_size" + is_defined: true + symbol_type: FUNCTION + crc: 0xd7a9cf42 + type_id: 0xb3cfd554 + full_name: "drm_mode_validate_size" +} +elf_symbol { + id: 0x49fd657a + name: "drm_mode_validate_ycbcr420" + is_defined: true + symbol_type: FUNCTION + crc: 0xcb2c6fb3 + type_id: 0xb28c48b5 + full_name: "drm_mode_validate_ycbcr420" +} elf_symbol { id: 0x4e6bfabc name: "drm_mode_vrefresh" @@ -352437,6 +352766,15 @@ elf_symbol { type_id: 0x9dad5a62 full_name: "drm_of_component_probe" } +elf_symbol { + id: 0xdb6eae3a + name: "drm_of_crtc_port_mask" + is_defined: true + symbol_type: FUNCTION + crc: 0xf557a5fd + type_id: 0x3d0f6874 + full_name: "drm_of_crtc_port_mask" +} elf_symbol { id: 0x122e3e9f name: "drm_of_encoder_active_endpoint" @@ -352824,6 +353162,15 @@ elf_symbol { type_id: 0x9b72aa8f full_name: "drm_property_create_enum" } +elf_symbol { + id: 0x8d62d3e1 + name: "drm_property_create_object" + is_defined: true + symbol_type: FUNCTION + crc: 0x6e0229f2 + type_id: 0x9b723218 + full_name: "drm_property_create_object" +} elf_symbol { id: 0x7a4db2f9 name: "drm_property_create_range" @@ -352869,6 +353216,15 @@ elf_symbol { type_id: 0xff934450 full_name: "drm_property_replace_blob" } +elf_symbol { + id: 0x4cf5ba17 + name: "drm_property_replace_global_blob" + is_defined: true + symbol_type: FUNCTION + crc: 0xd2ff27b8 + type_id: 0x93625762 + full_name: "drm_property_replace_global_blob" +} elf_symbol { id: 0x9718e72e name: "drm_puts" @@ -364614,6 +364970,15 @@ elf_symbol { type_id: 0xf4f34784 full_name: "mipi_dsi_packet_format_is_long" } +elf_symbol { + id: 0xb6dbcbcc + name: "mipi_dsi_packet_format_is_short" + is_defined: true + symbol_type: FUNCTION + crc: 0x238b099f + type_id: 0xf4f34784 + full_name: "mipi_dsi_packet_format_is_short" +} elf_symbol { id: 0xdca2a3c4 name: "mipi_dsi_picture_parameter_set" @@ -367431,6 +367796,15 @@ elf_symbol { type_id: 0x796e9f62 full_name: "of_graph_get_remote_node" } +elf_symbol { + id: 0x9539ac95 + name: "of_graph_get_remote_port" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8fcc975 + type_id: 0x7a78fdc4 + full_name: "of_graph_get_remote_port" +} elf_symbol { id: 0xc699a239 name: "of_graph_get_remote_port_parent" @@ -391413,6 +391787,7 @@ interface { symbol_id: 0x1c1ee265 symbol_id: 0x77466fa6 symbol_id: 0x0b0f732e + symbol_id: 0xa061e45d symbol_id: 0xec903c93 symbol_id: 0x7149b35b symbol_id: 0x04e4be20 @@ -392975,6 +393350,7 @@ interface { symbol_id: 0x0356dc1d symbol_id: 0x53eb2602 symbol_id: 0xcce97787 + symbol_id: 0x9901e8ee symbol_id: 0x4bc5faef symbol_id: 0xa06e08e9 symbol_id: 0x98bdb018 @@ -393728,6 +394104,7 @@ interface { symbol_id: 0xe5349379 symbol_id: 0xb7abbec5 symbol_id: 0x573a436c + symbol_id: 0x7e8263f6 symbol_id: 0x588ab3fd symbol_id: 0x1389094c symbol_id: 0x098d4189 @@ -393822,6 +394199,8 @@ interface { symbol_id: 0x0dfe64b8 symbol_id: 0x51b726c8 symbol_id: 0x5d9f16f7 + symbol_id: 0x3ef0db06 + symbol_id: 0xc72378aa symbol_id: 0xd82232b3 symbol_id: 0x69a31cde symbol_id: 0xfbc28ac3 @@ -393837,6 +394216,7 @@ interface { symbol_id: 0x1cc3ba5d symbol_id: 0xf01aa08a symbol_id: 0x7fe4fd87 + symbol_id: 0xf8bd92c8 symbol_id: 0x70b7d94b symbol_id: 0x3b6d3ed0 symbol_id: 0xcda9ec73 @@ -393853,6 +394233,7 @@ interface { symbol_id: 0xc8580afc symbol_id: 0xbe89afca symbol_id: 0x3b7c3802 + symbol_id: 0x08309f5e symbol_id: 0x11e9361c symbol_id: 0x98de519f symbol_id: 0x49bf35a9 @@ -393909,6 +394290,7 @@ interface { symbol_id: 0xaad93a6e symbol_id: 0x820af79e symbol_id: 0xf5a866d4 + symbol_id: 0x4b9e6227 symbol_id: 0x9c6b68f2 symbol_id: 0x8ab89d74 symbol_id: 0x717f2784 @@ -393916,15 +394298,19 @@ interface { symbol_id: 0x88d310ca symbol_id: 0x596f41bc symbol_id: 0xcf21a814 + symbol_id: 0xd4d38d4c symbol_id: 0x81bdff8a symbol_id: 0xeba98304 symbol_id: 0x48e94357 symbol_id: 0x6cbff317 + symbol_id: 0xac1aeaf0 + symbol_id: 0x622cdd92 symbol_id: 0xc7970f23 symbol_id: 0x5758ca8d symbol_id: 0x8f687080 symbol_id: 0x128b55c8 symbol_id: 0xd2191311 + symbol_id: 0x585410d0 symbol_id: 0xd4a13963 symbol_id: 0xa09bde3a symbol_id: 0xaef6523a @@ -394001,6 +394387,7 @@ interface { symbol_id: 0x93c0dba2 symbol_id: 0xd7cfff98 symbol_id: 0xecb4d16d + symbol_id: 0xd0dd3133 symbol_id: 0x3b867568 symbol_id: 0xc5806cb6 symbol_id: 0xd48e0164 @@ -394017,6 +394404,7 @@ interface { symbol_id: 0xbe3f1757 symbol_id: 0x64649d2c symbol_id: 0x51b5201f + symbol_id: 0x0d3b6723 symbol_id: 0x58b810bd symbol_id: 0x23e302cb symbol_id: 0x9a3d3812 @@ -394024,6 +394412,7 @@ interface { symbol_id: 0xa6782aae symbol_id: 0x648de106 symbol_id: 0xe96cf682 + symbol_id: 0xc3ae75b9 symbol_id: 0xca851619 symbol_id: 0x6a50bad9 symbol_id: 0x1183a93d @@ -394035,6 +394424,9 @@ interface { symbol_id: 0x76120529 symbol_id: 0x7a8a4736 symbol_id: 0x3f8952ab + symbol_id: 0x003f0aec + symbol_id: 0x43bb72ae + symbol_id: 0x49fd657a symbol_id: 0x4e6bfabc symbol_id: 0x935fb0ee symbol_id: 0xe5fad629 @@ -394051,6 +394443,7 @@ interface { symbol_id: 0x0cf86849 symbol_id: 0x6f8184d5 symbol_id: 0x8aa099dd + symbol_id: 0xdb6eae3a symbol_id: 0x122e3e9f symbol_id: 0xc0d6517a symbol_id: 0xd479c471 @@ -394094,11 +394487,13 @@ interface { symbol_id: 0x3bb33b54 symbol_id: 0x8da7c819 symbol_id: 0x808bdf9f + symbol_id: 0x8d62d3e1 symbol_id: 0x7a4db2f9 symbol_id: 0xb96f3f15 symbol_id: 0xafb178b7 symbol_id: 0xceb76dac symbol_id: 0xb1f5cc24 + symbol_id: 0x4cf5ba17 symbol_id: 0x9718e72e symbol_id: 0x8da70bb5 symbol_id: 0xc84875f6 @@ -395404,6 +395799,7 @@ interface { symbol_id: 0xd08cb4e7 symbol_id: 0x596b8466 symbol_id: 0xd9f124cf + symbol_id: 0xb6dbcbcc symbol_id: 0xdca2a3c4 symbol_id: 0x6d579aaf symbol_id: 0xe4059d72 @@ -395717,6 +396113,7 @@ interface { symbol_id: 0xd3bfa538 symbol_id: 0x1544acf1 symbol_id: 0xacdbe7cb + symbol_id: 0x9539ac95 symbol_id: 0xc699a239 symbol_id: 0xe63f0c53 symbol_id: 0x8be0e5f9 diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 8c21914afe6d..8159959b2849 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -286,6 +286,108 @@ down_read down_write driver_unregister + drm_add_edid_modes + drm_add_modes_noedid + drm_atomic_get_connector_state + drm_atomic_get_crtc_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 + drm_atomic_helper_connector_reset + drm_bridge_add + drm_bridge_attach + drm_bridge_detect + drm_bridge_get_modes + drm_bridge_hpd_notify + drm_bridge_remove + drm_compat_ioctl + drm_connector_attach_encoder + drm_connector_cleanup + drm_connector_has_possible_encoder + drm_connector_init + drm_connector_init_with_ddc + drm_connector_list_iter_begin + drm_connector_list_iter_end + drm_connector_list_iter_next + drm_connector_unregister + drm_connector_update_edid_property + ___drm_dbg + drm_detect_hdmi_monitor + drm_detect_monitor_audio + drm_dev_alloc + __drm_dev_dbg + drm_dev_printk + drm_dev_put + drm_dev_register + drm_dev_unregister + drm_display_info_set_bus_formats + drm_display_mode_from_videomode + drm_display_mode_to_videomode + __drm_err + drm_gem_dumb_map_offset + drm_gem_get_pages + drm_gem_handle_create + drm_gem_mmap + drm_gem_object_free + drm_gem_object_init + drm_gem_object_lookup + drm_gem_object_release + drm_gem_prime_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_prime_mmap + drm_gem_put_pages + drm_gem_vm_close + drm_gem_vm_open + drm_get_edid + drm_hdmi_avi_infoframe_from_display_mode + drm_hdmi_avi_infoframe_quant_range + drm_hdmi_vendor_infoframe_from_display_mode + drm_helper_hpd_irq_event + 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 + drm_mode_duplicate + drm_mode_is_420_also + drm_mode_is_420_only + drm_mode_object_put + drm_mode_probed_add + drm_modeset_acquire_fini + drm_modeset_acquire_init + drm_modeset_backoff + drm_modeset_drop_locks + drm_modeset_lock + drm_mode_set_name + drm_modeset_unlock + drm_mode_validate_driver + drm_mode_vrefresh + drm_object_attach_property + drm_of_find_panel_or_bridge + drm_open + drm_panel_add + drm_panel_disable + drm_panel_enable + drm_panel_get_modes + drm_panel_init + drm_panel_prepare + drm_panel_unprepare + drm_poll + drm_prime_gem_destroy + drm_prime_get_contiguous_size + drm_prime_pages_to_sg + drm_prime_sg_to_page_array + drm_printf + drm_property_create_enum + drm_property_replace_global_blob + drm_read + drm_release dummy_irq_chip enable_irq eth_mac_addr @@ -1903,6 +2005,166 @@ thermal_zone_device_enable thermal_zone_device_update +# required by rockchipdrm.ko + adjust_managed_page_count + component_add + component_bind_all + component_compare_dev + component_del + component_master_add_with_match + component_master_del + component_match_add_release + component_unbind_all + devm_of_phy_get_by_index + driver_find_device + drm_aperture_remove_conflicting_framebuffers + drm_atomic_commit + drm_atomic_get_plane_state + drm_atomic_helper_check + drm_atomic_helper_check_plane_state + drm_atomic_helper_cleanup_planes + drm_atomic_helper_commit + drm_atomic_helper_commit_hw_done + drm_atomic_helper_commit_modeset_disables + drm_atomic_helper_commit_modeset_enables + drm_atomic_helper_commit_planes + __drm_atomic_helper_connector_destroy_state + __drm_atomic_helper_connector_duplicate_state + __drm_atomic_helper_connector_reset + __drm_atomic_helper_crtc_destroy_state + __drm_atomic_helper_crtc_duplicate_state + __drm_atomic_helper_disable_plane + drm_atomic_helper_duplicate_state + drm_atomic_helper_fake_vblank + drm_atomic_helper_page_flip + __drm_atomic_helper_plane_destroy_state + __drm_atomic_helper_plane_duplicate_state + __drm_atomic_helper_plane_reset + drm_atomic_helper_set_config + drm_atomic_helper_shutdown + drm_atomic_helper_swap_state + drm_atomic_helper_wait_for_vblanks + drm_atomic_set_crtc_for_connector + drm_atomic_set_crtc_for_plane + drm_atomic_set_fb_for_plane + drm_atomic_set_mode_for_crtc + drm_atomic_state_alloc + __drm_atomic_state_free + drm_bridge_chain_mode_set + drm_bridge_get_edid + drm_connector_list_update + drm_crtc_cleanup + drm_crtc_enable_color_mgmt + drm_crtc_from_index + drm_crtc_handle_vblank + drm_crtc_init_with_planes + drm_crtc_send_vblank_event + drm_crtc_vblank_get + drm_crtc_vblank_off + drm_crtc_vblank_on + drm_crtc_vblank_put + drm_do_get_edid + drm_encoder_cleanup + drm_encoder_init + drm_event_reserve_init_locked + drm_firmware_drivers_only + drm_flip_work_cleanup + drm_flip_work_commit + drm_flip_work_init + drm_flip_work_queue + drm_format_info + drm_format_info_min_pitch + drm_framebuffer_cleanup + drm_framebuffer_init + drm_gem_dmabuf_export + drm_gem_dmabuf_mmap + drm_gem_dmabuf_release + drm_gem_dmabuf_vmap + drm_gem_dmabuf_vunmap + drm_gem_fb_afbc_init + drm_gem_fb_create_handle + drm_gem_fb_init_with_funcs + drm_gem_map_attach + drm_gem_map_detach + drm_gem_map_dma_buf + drm_gem_unmap_dma_buf + drm_get_format_info + drm_helper_mode_fill_fb_struct + drm_kms_helper_poll_enable + drm_kms_helper_poll_fini + drm_kms_helper_poll_init + drm_mm_init + drm_mm_insert_node_in_range + drmm_mode_config_init + drm_mm_print + drm_mm_remove_node + drm_mm_reserve_node + drm_mm_takedown + drm_mode_config_cleanup + drm_mode_config_helper_resume + drm_mode_config_helper_suspend + drm_mode_config_reset + drm_mode_create_hdmi_colorspace_property + drm_mode_create_tv_properties + drm_mode_crtc_set_gamma_size + drm_mode_debug_printmodeline + drm_mode_is_420 + drm_mode_object_get + drm_mode_prune_invalid + drm_mode_set_crtcinfo + drm_modeset_lock_all + drm_modeset_unlock_all + drm_mode_sort + drm_mode_validate_size + drm_mode_validate_ycbcr420 + drm_of_crtc_port_mask + drm_of_encoder_active_endpoint + drm_plane_cleanup + drm_plane_create_alpha_property + drm_plane_create_blend_mode_property + drm_plane_create_rotation_property + drm_plane_create_zpos_property + __drm_printfn_seq_file + drm_property_blob_get + drm_property_blob_put + drm_property_create + drm_property_create_bitmask + drm_property_create_bool + drm_property_create_object + drm_property_create_range + drm_property_destroy + drm_property_lookup_blob + drm_property_replace_blob + __drm_puts_seq_file + drm_rect_calc_hscale + drm_self_refresh_helper_cleanup + drm_self_refresh_helper_init + drm_send_event_locked + drm_simple_encoder_init + drm_universal_plane_init + drm_vblank_init + drm_writeback_connector_init + drm_writeback_queue_job + drm_writeback_signal_completion + hdmi_drm_infoframe_pack_only + iommu_domain_alloc + iommu_domain_free + memblock_free + mipi_dsi_packet_format_is_short + of_clk_set_defaults + of_find_backlight_by_node + of_fwnode_ops + of_get_next_parent + of_graph_get_port_by_id + of_graph_get_remote_endpoint + of_graph_get_remote_port + phy_mipi_dphy_get_default_config + platform_find_device_by_driver + __platform_register_drivers + platform_unregister_drivers + system_unbound_wq + __vmalloc + # required by rtc-rk808.ko rtc_update_irq From 9c9ee611cfa6fd2c816e883eacec3bd3374f51f7 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 14 Sep 2023 11:23:10 +0800 Subject: [PATCH 08/99] ANDROID: GKI: Add crypto symbols for rockchip INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 14 function symbol(s) added 'int crypto_ahash_final(struct ahash_request*)' 'int crypto_ahash_finup(struct ahash_request*)' 'void crypto_cipher_encrypt_one(struct crypto_cipher*, u8*, const u8*)' 'int crypto_register_akcipher(struct akcipher_alg*)' 'int crypto_register_alg(struct crypto_alg*)' 'int crypto_register_template(struct crypto_template*)' 'int crypto_sha1_finup(struct shash_desc*, const u8*, unsigned int, u8*)' 'int crypto_sha1_update(struct shash_desc*, const u8*, unsigned int)' 'void crypto_unregister_akcipher(struct akcipher_alg*)' 'void crypto_unregister_alg(struct crypto_alg*)' 'void crypto_unregister_template(struct crypto_template*)' 'int des_expand_key(struct des_ctx*, const u8*, unsigned int)' 'int rsa_parse_priv_key(struct rsa_key*, const void*, unsigned int)' 'int rsa_parse_pub_key(struct rsa_key*, const void*, unsigned int)' 2 variable symbol(s) added 'bool fpsimd_context_busy' 'irq_cpustat_t irq_stat' Bug: 300024866 Change-Id: I8266e5ca7683d3ffc4924b1926b5b70ba6cd7a81 Signed-off-by: Kever Yang --- android/abi_gki_aarch64.stg | 566 +++++++++++++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 57 ++++ 2 files changed, 623 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index fa80fac5fa33..d5d5725e1d7c 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -2003,6 +2003,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x37265f81 } +pointer_reference { + id: 0x076327a3 + kind: POINTER + pointee_type_id: 0x37cc7810 +} pointer_reference { id: 0x07665a1f kind: POINTER @@ -5618,6 +5623,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x12c79320 } +pointer_reference { + id: 0x0e2271e2 + kind: POINTER + pointee_type_id: 0x12c92116 +} pointer_reference { id: 0x0e22e25f kind: POINTER @@ -8068,6 +8078,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6fb840c8 } +pointer_reference { + id: 0x117e85f5 + kind: POINTER + pointee_type_id: 0x6fbaf148 +} pointer_reference { id: 0x118d97cb kind: POINTER @@ -8258,6 +8273,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x6054a6ab } +pointer_reference { + id: 0x128a8a58 + kind: POINTER + pointee_type_id: 0x606acffd +} pointer_reference { id: 0x1291c430 kind: POINTER @@ -15788,6 +15808,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9921a72c } +pointer_reference { + id: 0x2cd8a9c9 + kind: POINTER + pointee_type_id: 0x992241b9 +} pointer_reference { id: 0x2cd9dff0 kind: POINTER @@ -17013,6 +17038,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9f1dcaea } +pointer_reference { + id: 0x2d591a0e + kind: POINTER + pointee_type_id: 0x9f248ea4 +} pointer_reference { id: 0x2d594ead kind: POINTER @@ -17128,6 +17158,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x9fd1a709 } +pointer_reference { + id: 0x2d645d4d + kind: POINTER + pointee_type_id: 0x9fd193aa +} pointer_reference { id: 0x2d646f41 kind: POINTER @@ -22698,6 +22733,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xef9a648b } +pointer_reference { + id: 0x31790b1e + kind: POINTER + pointee_type_id: 0xefa4cae6 +} pointer_reference { id: 0x31829648 kind: POINTER @@ -25788,6 +25828,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xca5a7101 } +pointer_reference { + id: 0x380882e7 + kind: POINTER + pointee_type_id: 0xca62ed00 +} pointer_reference { id: 0x3808938b kind: POINTER @@ -26523,6 +26568,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xcc81b8d3 } +pointer_reference { + id: 0x39b2ba38 + kind: POINTER + pointee_type_id: 0xcc8a0e7e +} pointer_reference { id: 0x39b425bc kind: POINTER @@ -29968,6 +30018,11 @@ typedef { name: "iommu_fault_handler_t" referred_type_id: 0x2f184276 } +typedef { + id: 0x0b098126 + name: "irq_cpustat_t" + referred_type_id: 0x3b85198b +} typedef { id: 0xb0c2eb21 name: "irq_flow_handler_t" @@ -40955,6 +41010,11 @@ member { name: "__sk_common" type_id: 0x61a74d47 } +member { + id: 0x8fa57542 + name: "__softirq_pending" + type_id: 0x4585663f +} member { id: 0x11319dfd name: "__stack" @@ -51690,6 +51750,12 @@ member { type_id: 0x2ac43c51 offset: 128 } +member { + id: 0x85f3d282 + name: "base" + type_id: 0x293b162f + offset: 1024 +} member { id: 0x85f3de85 name: "base" @@ -68747,6 +68813,12 @@ member { type_id: 0xc93e017b offset: 16 } +member { + id: 0xc325cba2 + name: "d" + type_id: 0x3f0185ef + offset: 128 +} member { id: 0x8b60974a name: "d1_support" @@ -69061,6 +69133,12 @@ member { type_id: 0xd3c80119 offset: 1280 } +member { + id: 0xcc4dd9fb + name: "d_sz" + type_id: 0xf435685e + offset: 640 +} member { id: 0x8fb0e835 name: "d_term_en" @@ -71374,6 +71452,12 @@ member { type_id: 0x2ed391e2 offset: 192 } +member { + id: 0x70fa6b40 + name: "decrypt" + type_id: 0x2cd8a9c9 + offset: 192 +} member { id: 0x70fa8381 name: "decrypt" @@ -77733,12 +77817,24 @@ member { name: "dp" type_id: 0x80ba3719 } +member { + id: 0x55f0c48b + name: "dp" + type_id: 0x3f0185ef + offset: 320 +} member { id: 0x1e95895b name: "dp_subconnector_property" type_id: 0x2a670b41 offset: 7424 } +member { + id: 0x086093bd + name: "dp_sz" + type_id: 0xf435685e + offset: 832 +} member { id: 0x93b48e83 name: "dpa" @@ -77877,6 +77973,12 @@ member { type_id: 0x3e79e71f offset: 1056 } +member { + id: 0x12302e1a + name: "dq" + type_id: 0x3f0185ef + offset: 384 +} member { id: 0x535fdeda name: "dq_count" @@ -77960,6 +78062,12 @@ member { type_id: 0x26ee682a offset: 960 } +member { + id: 0x8d88c04b + name: "dq_sz" + type_id: 0xf435685e + offset: 896 +} member { id: 0xdae271b1 name: "dqb_bhardlimit" @@ -79033,6 +79141,12 @@ member { type_id: 0x43c73e81 offset: 896 } +member { + id: 0xbbe061af + name: "dst" + type_id: 0x11cffa09 + offset: 448 +} member { id: 0xbbe06e11 name: "dst" @@ -79147,6 +79261,12 @@ member { type_id: 0x6d7f5ff6 offset: 168 } +member { + id: 0x352c27f4 + name: "dst_len" + type_id: 0x4585663f + offset: 544 +} member { id: 0x35da4011 name: "dst_len" @@ -79952,6 +80072,12 @@ member { type_id: 0x007e8ce4 offset: 32 } +member { + id: 0x87e623f5 + name: "e" + type_id: 0x3f0185ef + offset: 64 +} member { id: 0x8d6d2188 name: "e1000_base_cx" @@ -80065,6 +80191,12 @@ member { type_id: 0xc93e017b offset: 16 } +member { + id: 0xab258a23 + name: "e_sz" + type_id: 0xf435685e + offset: 576 +} member { id: 0x8c50076a name: "e_tag" @@ -81582,6 +81714,12 @@ member { type_id: 0x2c316317 offset: 64 } +member { + id: 0x893e9a51 + name: "encrypt" + type_id: 0x2cd8a9c9 + offset: 128 +} member { id: 0x897f3adb name: "encrypt" @@ -84000,6 +84138,12 @@ member { type_id: 0x0d301752 offset: 1792 } +member { + id: 0x0d2e2ebd + name: "exit" + type_id: 0x0e2271e2 + offset: 512 +} member { id: 0x0d2e75d7 name: "exit" @@ -84429,6 +84573,11 @@ member { type_id: 0x4585663f offset: 608 } +member { + id: 0xbd3cd538 + name: "expkey" + type_id: 0x668e8237 +} member { id: 0x01992270 name: "explicit_contract" @@ -105618,6 +105767,12 @@ member { type_id: 0x2d5e4b40 offset: 1408 } +member { + id: 0x1ac7a60f + name: "init" + type_id: 0x2d645d4d + offset: 448 +} member { id: 0x1ac7a665 name: "init" @@ -122480,6 +122635,12 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0xcfd59103 + name: "max_size" + type_id: 0x39b2ba38 + offset: 384 +} member { id: 0xc288bba2 name: "max_slices" @@ -128785,6 +128946,11 @@ member { type_id: 0x1592957f offset: 2688 } +member { + id: 0x4659cf92 + name: "n" + type_id: 0x3f0185ef +} member { id: 0xc101e64f name: "n2" @@ -129105,6 +129271,12 @@ member { type_id: 0xe62ebf07 offset: 32 } +member { + id: 0x0cc91dc5 + name: "n_sz" + type_id: 0xf435685e + offset: 512 +} member { id: 0xdc10e384 name: "n_tables" @@ -141846,6 +142018,12 @@ member { type_id: 0x3d7c93df offset: 896 } +member { + id: 0xa68e47c8 + name: "p" + type_id: 0x3f0185ef + offset: 192 +} member { id: 0xa6984880 name: "p" @@ -142073,6 +142251,12 @@ member { name: "p_s64" type_id: 0x0113dde3 } +member { + id: 0x73d7a8f4 + name: "p_sz" + type_id: 0xf435685e + offset: 704 +} member { id: 0x5fce0bc2 name: "p_u16" @@ -154656,6 +154840,12 @@ member { name: "q" type_id: 0x407489b0 } +member { + id: 0xe94def1c + name: "q" + type_id: 0x3f0185ef + offset: 256 +} member { id: 0xe95c6150 name: "q" @@ -154707,6 +154897,12 @@ member { name: "q_node" type_id: 0xd3c80119 } +member { + id: 0x30c8a340 + name: "q_sz" + type_id: 0xf435685e + offset: 768 +} member { id: 0xc5c43282 name: "q_usage_counter" @@ -154807,6 +155003,18 @@ member { type_id: 0x295c7202 offset: 1056 } +member { + id: 0x060b5e2a + name: "qinv" + type_id: 0x3f0185ef + offset: 448 +} +member { + id: 0x112d65f6 + name: "qinv_sz" + type_id: 0xf435685e + offset: 960 +} member { id: 0x9b5b8e67 name: "qlen" @@ -162075,6 +162283,12 @@ member { type_id: 0x4585663f offset: 32 } +member { + id: 0xa9e8c522 + name: "reqsize" + type_id: 0x4585663f + offset: 576 +} member { id: 0xa9e8c748 name: "reqsize" @@ -173211,6 +173425,12 @@ member { type_id: 0x2e136b7a offset: 1856 } +member { + id: 0x4117392b + name: "set_priv_key" + type_id: 0x2d591a0e + offset: 320 +} member { id: 0x9fa5cb5f name: "set_promiscuous_mode" @@ -173241,6 +173461,12 @@ member { type_id: 0x2ec0f499 offset: 320 } +member { + id: 0xfd2d3002 + name: "set_pub_key" + type_id: 0x2d591a0e + offset: 256 +} member { id: 0xff542925 name: "set_pull_down" @@ -175379,6 +175605,11 @@ member { type_id: 0x4050ae51 offset: 24 } +member { + id: 0x9063e9c1 + name: "sign" + type_id: 0x2cd8a9c9 +} member { id: 0x90777e15 name: "sign" @@ -179170,6 +179401,12 @@ member { type_id: 0x11cffa09 offset: 448 } +member { + id: 0x4427a46d + name: "src" + type_id: 0x11cffa09 + offset: 384 +} member { id: 0x4427ac3d name: "src" @@ -179322,6 +179559,12 @@ member { type_id: 0xb3e7bac9 offset: 16 } +member { + id: 0xe29869f3 + name: "src_len" + type_id: 0x4585663f + offset: 512 +} member { id: 0x031b1a4e name: "src_maxburst" @@ -200084,6 +200327,12 @@ member { type_id: 0x6d7f5ff6 offset: 1216 } +member { + id: 0xf584ce40 + name: "verify" + type_id: 0x2cd8a9c9 + offset: 64 +} member { id: 0xf586d6a4 name: "verify" @@ -209779,6 +210028,14 @@ struct_union { member_id: 0xc446e43e } } +struct_union { + id: 0x3b85198b + kind: STRUCT + definition { + bytesize: 64 + member_id: 0x8fa57542 + } +} struct_union { id: 0x3bf747f0 kind: STRUCT @@ -213935,6 +214192,39 @@ struct_union { member_id: 0x75906a36 } } +struct_union { + id: 0x6fbaf148 + kind: STRUCT + name: "akcipher_alg" + definition { + bytesize: 512 + member_id: 0x9063e9c1 + member_id: 0xf584ce40 + member_id: 0x893e9a51 + member_id: 0x70fa6b40 + member_id: 0xfd2d3002 + member_id: 0x4117392b + member_id: 0xcfd59103 + member_id: 0x1ac7a60f + member_id: 0x0d2e2ebd + member_id: 0xa9e8c522 + member_id: 0x85f3d282 + } +} +struct_union { + id: 0x606acffd + kind: STRUCT + name: "akcipher_request" + definition { + bytesize: 128 + member_id: 0x85e1e383 + member_id: 0x4427a46d + member_id: 0xbbe061af + member_id: 0xe29869f3 + member_id: 0x352c27f4 + member_id: 0x75906a36 + } +} struct_union { id: 0x91212402 kind: STRUCT @@ -219839,6 +220129,15 @@ struct_union { member_id: 0x2da18bb2 } } +struct_union { + id: 0x37cc7810 + kind: STRUCT + name: "crypto_cipher" + definition { + bytesize: 64 + member_id: 0x8597be7c + } +} struct_union { id: 0x85b25628 kind: STRUCT @@ -220375,6 +220674,15 @@ struct_union { member_id: 0xe0f6393d } } +struct_union { + id: 0xefa4cae6 + kind: STRUCT + name: "des_ctx" + definition { + bytesize: 128 + member_id: 0xbd3cd538 + } +} struct_union { id: 0x2729c17d kind: STRUCT @@ -248823,6 +249131,30 @@ struct_union { member_id: 0x055225e4 } } +struct_union { + id: 0xca62ed00 + kind: STRUCT + name: "rsa_key" + definition { + bytesize: 128 + member_id: 0x4659cf92 + member_id: 0x87e623f5 + member_id: 0xc325cba2 + member_id: 0xa68e47c8 + member_id: 0xe94def1c + member_id: 0x55f0c48b + member_id: 0x12302e1a + member_id: 0x060b5e2a + member_id: 0x0cc91dc5 + member_id: 0xab258a23 + member_id: 0xcc4dd9fb + member_id: 0x73d7a8f4 + member_id: 0x30c8a340 + member_id: 0x086093bd + member_id: 0x8d88c04b + member_id: 0x112d65f6 + } +} struct_union { id: 0xdbc8b0ff kind: STRUCT @@ -286194,6 +286526,13 @@ function { return_type_id: 0x48b5725f parameter_id: 0x074f1a14 } +function { + id: 0x114c448e + return_type_id: 0x48b5725f + parameter_id: 0x076327a3 + parameter_id: 0x00c72527 + parameter_id: 0x3f0185ef +} function { id: 0x11508453 return_type_id: 0x9547a3da @@ -287279,6 +287618,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x09427c40 } +function { + id: 0x12c92116 + return_type_id: 0x48b5725f + parameter_id: 0x0945c216 +} function { id: 0x12ca5ec4 return_type_id: 0x48b5725f @@ -288661,6 +289005,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x117e2995 } +function { + id: 0x14c7f0ee + return_type_id: 0x48b5725f + parameter_id: 0x117e85f5 +} function { id: 0x14c81bbb return_type_id: 0x48b5725f @@ -290460,6 +290809,11 @@ function { parameter_id: 0x1c2f6323 parameter_id: 0x3f1a5886 } +function { + id: 0x1776cedc + return_type_id: 0x48b5725f + parameter_id: 0x1fba7d3d +} function { id: 0x177cb160 return_type_id: 0x48b5725f @@ -302990,6 +303344,13 @@ function { return_type_id: 0x6720d32f parameter_id: 0x32caaf24 } +function { + id: 0x9133c6a6 + return_type_id: 0x6720d32f + parameter_id: 0x31790b1e + parameter_id: 0x3f0185ef + parameter_id: 0x4585663f +} function { id: 0x913618b5 return_type_id: 0x6720d32f @@ -306274,6 +306635,13 @@ function { parameter_id: 0x3dcee85d parameter_id: 0x6720d32f } +function { + id: 0x9377de98 + return_type_id: 0x6720d32f + parameter_id: 0x380882e7 + parameter_id: 0x391f15ea + parameter_id: 0x4585663f +} function { id: 0x93788ff8 return_type_id: 0x6720d32f @@ -311062,6 +311430,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1285100d } +function { + id: 0x992241b9 + return_type_id: 0x6720d32f + parameter_id: 0x128a8a58 +} function { id: 0x9927995d return_type_id: 0xf435685e @@ -311877,6 +312250,11 @@ function { parameter_id: 0x3b04bead parameter_id: 0x2d1f457b } +function { + id: 0x99df4252 + return_type_id: 0x6720d32f + parameter_id: 0x117e85f5 +} function { id: 0x99e0f6e0 return_type_id: 0x6720d32f @@ -312664,6 +313042,11 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x6720d32f } +function { + id: 0x9a6e7c60 + return_type_id: 0x6720d32f + parameter_id: 0x1fba7d3d +} function { id: 0x9a702edf return_type_id: 0x6720d32f @@ -319709,6 +320092,11 @@ function { parameter_id: 0x295c7202 parameter_id: 0x4585663f } +function { + id: 0x9db75c24 + return_type_id: 0x6720d32f + parameter_id: 0x00defc2c +} function { id: 0x9db78784 return_type_id: 0x6720d32f @@ -321891,6 +322279,13 @@ function { parameter_id: 0x097315c2 parameter_id: 0x3e10b518 } +function { + id: 0x9f248ea4 + return_type_id: 0x6720d32f + parameter_id: 0x0945c216 + parameter_id: 0x391f15ea + parameter_id: 0x4585663f +} function { id: 0x9f25dc29 return_type_id: 0x6720d32f @@ -322790,6 +323185,11 @@ function { id: 0x9fd15b99 return_type_id: 0x11c404ba } +function { + id: 0x9fd193aa + return_type_id: 0x6720d32f + parameter_id: 0x0945c216 +} function { id: 0x9fd1a709 return_type_id: 0x6720d32f @@ -324993,6 +325393,11 @@ function { parameter_id: 0x6720d32f parameter_id: 0x6720d32f } +function { + id: 0xcc8a0e7e + return_type_id: 0x4585663f + parameter_id: 0x0945c216 +} function { id: 0xcc9736e7 return_type_id: 0x65d74a06 @@ -344045,6 +344450,24 @@ elf_symbol { type_id: 0x911583bf full_name: "crypto_ahash_digest" } +elf_symbol { + id: 0xf8751b15 + name: "crypto_ahash_final" + is_defined: true + symbol_type: FUNCTION + crc: 0x1af67977 + type_id: 0x911583bf + full_name: "crypto_ahash_final" +} +elf_symbol { + id: 0xdd9947d5 + name: "crypto_ahash_finup" + is_defined: true + symbol_type: FUNCTION + crc: 0x095c49bc + type_id: 0x911583bf + full_name: "crypto_ahash_finup" +} elf_symbol { id: 0xff08526f name: "crypto_ahash_setkey" @@ -344126,6 +344549,16 @@ elf_symbol { type_id: 0x329319f8 full_name: "crypto_alloc_sync_skcipher" } +elf_symbol { + id: 0xa3db58f1 + name: "crypto_cipher_encrypt_one" + is_defined: true + symbol_type: FUNCTION + crc: 0x1f362def + namespace: "CRYPTO_INTERNAL" + type_id: 0x114c448e + full_name: "crypto_cipher_encrypt_one" +} elf_symbol { id: 0x1257590d name: "crypto_comp_compress" @@ -344270,6 +344703,24 @@ elf_symbol { type_id: 0x9ee20867 full_name: "crypto_register_ahash" } +elf_symbol { + id: 0xc60881ee + name: "crypto_register_akcipher" + is_defined: true + symbol_type: FUNCTION + crc: 0x44f8c5fe + type_id: 0x99df4252 + full_name: "crypto_register_akcipher" +} +elf_symbol { + id: 0xd9005076 + name: "crypto_register_alg" + is_defined: true + symbol_type: FUNCTION + crc: 0x4a1204f0 + type_id: 0x9db75c24 + full_name: "crypto_register_alg" +} elf_symbol { id: 0xcb0ffe5b name: "crypto_register_notifier" @@ -344315,6 +344766,15 @@ elf_symbol { type_id: 0x928f1946 full_name: "crypto_register_skcipher" } +elf_symbol { + id: 0x8e0112d7 + name: "crypto_register_template" + is_defined: true + symbol_type: FUNCTION + crc: 0xf1da2be6 + type_id: 0x9a6e7c60 + full_name: "crypto_register_template" +} elf_symbol { id: 0x0e52d725 name: "crypto_req_done" @@ -344324,6 +344784,24 @@ elf_symbol { type_id: 0x10100c3c full_name: "crypto_req_done" } +elf_symbol { + id: 0x162a73f7 + name: "crypto_sha1_finup" + is_defined: true + symbol_type: FUNCTION + crc: 0xe1737405 + type_id: 0x9fb1dc71 + full_name: "crypto_sha1_finup" +} +elf_symbol { + id: 0x7dcc32e4 + name: "crypto_sha1_update" + is_defined: true + symbol_type: FUNCTION + crc: 0xb7dbc187 + type_id: 0x9fb1df6d + full_name: "crypto_sha1_update" +} elf_symbol { id: 0x91309df9 name: "crypto_shash_digest" @@ -344423,6 +344901,24 @@ elf_symbol { type_id: 0x13fabadb full_name: "crypto_unregister_ahash" } +elf_symbol { + id: 0xdb6ddedf + name: "crypto_unregister_akcipher" + is_defined: true + symbol_type: FUNCTION + crc: 0xbfd52d96 + type_id: 0x14c7f0ee + full_name: "crypto_unregister_akcipher" +} +elf_symbol { + id: 0x883df740 + name: "crypto_unregister_alg" + is_defined: true + symbol_type: FUNCTION + crc: 0xa0dbb600 + type_id: 0x10afee98 + full_name: "crypto_unregister_alg" +} elf_symbol { id: 0x551c18d1 name: "crypto_unregister_notifier" @@ -344468,6 +344964,15 @@ elf_symbol { type_id: 0x1f97abfa full_name: "crypto_unregister_skcipher" } +elf_symbol { + id: 0x801e3d5d + name: "crypto_unregister_template" + is_defined: true + symbol_type: FUNCTION + crc: 0xd6fa098b + type_id: 0x1776cedc + full_name: "crypto_unregister_template" +} elf_symbol { id: 0xd36400de name: "css_next_child" @@ -345026,6 +345531,15 @@ elf_symbol { type_id: 0x1f15d172 full_name: "delayed_work_timer_fn" } +elf_symbol { + id: 0x1ef313dc + name: "des_expand_key" + is_defined: true + symbol_type: FUNCTION + crc: 0xa8fb743d + type_id: 0x9133c6a6 + full_name: "des_expand_key" +} elf_symbol { id: 0x67daf3cf name: "desc_to_gpio" @@ -354926,6 +355440,15 @@ elf_symbol { type_id: 0x1f1c7cd5 full_name: "fortify_panic" } +elf_symbol { + id: 0x5c388f41 + name: "fpsimd_context_busy" + is_defined: true + symbol_type: OBJECT + crc: 0x535be82a + type_id: 0x6d7f5ff6 + full_name: "fpsimd_context_busy" +} elf_symbol { id: 0x93b9959a name: "fput" @@ -361373,6 +361896,15 @@ elf_symbol { type_id: 0x85d454a8 full_name: "irq_set_parent" } +elf_symbol { + id: 0x3b8e2bac + name: "irq_stat" + is_defined: true + symbol_type: OBJECT + crc: 0xcc365d07 + type_id: 0x0b098126 + full_name: "irq_stat" +} elf_symbol { id: 0xc89a8e29 name: "irq_to_desc" @@ -375809,6 +376341,24 @@ elf_symbol { type_id: 0x8e47c273 full_name: "rps_needed" } +elf_symbol { + id: 0xde4d20e6 + name: "rsa_parse_priv_key" + is_defined: true + symbol_type: FUNCTION + crc: 0xd75b20aa + type_id: 0x9377de98 + full_name: "rsa_parse_priv_key" +} +elf_symbol { + id: 0x6a82e2a4 + name: "rsa_parse_pub_key" + is_defined: true + symbol_type: FUNCTION + crc: 0x89ae7aa0 + type_id: 0x9377de98 + full_name: "rsa_parse_pub_key" +} elf_symbol { id: 0xec5e9065 name: "rt6_lookup" @@ -393476,6 +394026,8 @@ interface { symbol_id: 0x0a2b21ec symbol_id: 0xbdd0f4c6 symbol_id: 0xe5e28fcd + symbol_id: 0xf8751b15 + symbol_id: 0xdd9947d5 symbol_id: 0xff08526f symbol_id: 0xc81e9eb3 symbol_id: 0x237a3562 @@ -393485,6 +394037,7 @@ interface { symbol_id: 0xef67fe16 symbol_id: 0x9eca665b symbol_id: 0x3ea8bbd7 + symbol_id: 0xa3db58f1 symbol_id: 0x1257590d symbol_id: 0x833374c8 symbol_id: 0x717034d4 @@ -393501,12 +394054,17 @@ interface { symbol_id: 0x053cd2eb symbol_id: 0xd1471c13 symbol_id: 0x3359f049 + symbol_id: 0xc60881ee + symbol_id: 0xd9005076 symbol_id: 0xcb0ffe5b symbol_id: 0xa79ba8cc symbol_id: 0x23b67585 symbol_id: 0x1e81ded9 symbol_id: 0xfca661a6 + symbol_id: 0x8e0112d7 symbol_id: 0x0e52d725 + symbol_id: 0x162a73f7 + symbol_id: 0x7dcc32e4 symbol_id: 0x91309df9 symbol_id: 0xfdca589d symbol_id: 0xb50ff8bd @@ -393518,11 +394076,14 @@ interface { symbol_id: 0xbb92068e symbol_id: 0x81600265 symbol_id: 0x57a4fa38 + symbol_id: 0xdb6ddedf + symbol_id: 0x883df740 symbol_id: 0x551c18d1 symbol_id: 0xeb9b8f1f symbol_id: 0x4d669c6d symbol_id: 0x6715c595 symbol_id: 0x9f75c77b + symbol_id: 0x801e3d5d symbol_id: 0xd36400de symbol_id: 0x2c08983d symbol_id: 0x81bdacc5 @@ -393585,6 +394146,7 @@ interface { symbol_id: 0xf666562b symbol_id: 0xa5179b7b symbol_id: 0xc1583575 + symbol_id: 0x1ef313dc symbol_id: 0x67daf3cf symbol_id: 0xe5161e20 symbol_id: 0x31d27334 @@ -394683,6 +395245,7 @@ interface { symbol_id: 0x1721c938 symbol_id: 0x1bf542c4 symbol_id: 0x5c93a483 + symbol_id: 0x5c388f41 symbol_id: 0x93b9959a symbol_id: 0x618f059e symbol_id: 0x48641588 @@ -395399,6 +395962,7 @@ interface { symbol_id: 0x5904d735 symbol_id: 0xcb7dc482 symbol_id: 0xaed00f8c + symbol_id: 0x3b8e2bac symbol_id: 0xc89a8e29 symbol_id: 0x92dfef70 symbol_id: 0xd1f69ecb @@ -397003,6 +397567,8 @@ interface { symbol_id: 0x74c27ecd symbol_id: 0x80913de9 symbol_id: 0xbffd1c46 + symbol_id: 0xde4d20e6 + symbol_id: 0x6a82e2a4 symbol_id: 0xec5e9065 symbol_id: 0x264c5308 symbol_id: 0x205145e9 diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 8159959b2849..258aec25213a 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -105,6 +105,28 @@ cpus_read_unlock crc16 crc32_le + crypto_aead_decrypt + crypto_aead_encrypt + crypto_aead_setauthsize + crypto_aead_setkey + crypto_ahash_final + crypto_ahash_setkey + crypto_alloc_aead + crypto_alloc_ahash + crypto_alloc_shash + crypto_alloc_skcipher + crypto_cipher_encrypt_one + crypto_destroy_tfm + __crypto_memneq + crypto_register_aead + crypto_register_template + crypto_shash_update + crypto_skcipher_decrypt + crypto_skcipher_encrypt + crypto_skcipher_setkey + crypto_unregister_aead + crypto_unregister_template + __crypto_xor csum_partial _ctype default_llseek @@ -1916,6 +1938,29 @@ # required by rk860x-regulator.ko regulator_suspend_enable +# required by rk_crypto.ko + crypto_ahash_digest + crypto_ahash_finup + crypto_dequeue_request + crypto_enqueue_request + crypto_init_queue + crypto_register_ahash + crypto_register_akcipher + crypto_register_skcipher + crypto_req_done + crypto_unregister_ahash + crypto_unregister_akcipher + crypto_unregister_skcipher + des_expand_key + rsa_parse_priv_key + rsa_parse_pub_key + scatterwalk_ffwd + sg_copy_from_buffer + sg_copy_to_buffer + sg_nents_for_len + sg_pcopy_from_buffer + sg_pcopy_to_buffer + # required by rk_fiq_debugger.ko console_lock console_unlock @@ -2198,6 +2243,14 @@ scsi_register_interface sdev_prefix_printk +# required by sha1-ce.ko + crypto_register_shash + crypto_sha1_finup + crypto_sha1_update + crypto_unregister_shash + fpsimd_context_busy + irq_stat + # required by sii902x.ko hdmi_avi_infoframe_pack @@ -2453,6 +2506,10 @@ usb_get_dev usb_put_dev +# required by twofish_generic.ko + crypto_register_alg + crypto_unregister_alg + # required by usblp.ko add_wait_queue default_wake_function From 62d64a59d93d29121a37d00e38a98fd8ae4f71cf Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 14 Sep 2023 10:45:14 +0800 Subject: [PATCH 09/99] ANDROID: GKI: Add symbols for rockchip devfreq INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 6 function symbol(s) added 'int devfreq_event_disable_edev(struct devfreq_event_dev*)' 'int devfreq_event_enable_edev(struct devfreq_event_dev*)' 'struct devfreq_event_dev* devfreq_event_get_edev_by_phandle(struct device*, const char*, int)' 'int devfreq_event_get_edev_count(struct device*, const char*)' 'int devfreq_event_get_event(struct devfreq_event_dev*, struct devfreq_event_data*)' 'int devm_devfreq_register_opp_notifier(struct device*, struct devfreq*)' Bug: 300024866 Change-Id: I5db2294c3bc3e7e6dc9932551073310aec7065dc Signed-off-by: Kever Yang --- android/abi_gki_aarch64.stg | 67 ++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 31 +++++++++++++++ 2 files changed, 98 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index d5d5725e1d7c..dc185bb1c81a 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -323987,6 +323987,13 @@ function { parameter_id: 0x4585663f parameter_id: 0xf1a6dfed } +function { + id: 0xaa27b09c + return_type_id: 0x0e211675 + parameter_id: 0x0258f96e + parameter_id: 0x3e10b518 + parameter_id: 0x6720d32f +} function { id: 0xaa55ab2e return_type_id: 0x31b5a66f @@ -346485,6 +346492,51 @@ elf_symbol { type_id: 0x11aaf502 full_name: "devfreq_cooling_unregister" } +elf_symbol { + id: 0x349b4e0a + name: "devfreq_event_disable_edev" + is_defined: true + symbol_type: FUNCTION + crc: 0xf7add401 + type_id: 0x9e08a6b2 + full_name: "devfreq_event_disable_edev" +} +elf_symbol { + id: 0x11f117af + name: "devfreq_event_enable_edev" + is_defined: true + symbol_type: FUNCTION + crc: 0x1a88e996 + type_id: 0x9e08a6b2 + full_name: "devfreq_event_enable_edev" +} +elf_symbol { + id: 0x781fabb2 + name: "devfreq_event_get_edev_by_phandle" + is_defined: true + symbol_type: FUNCTION + crc: 0x37666b78 + type_id: 0xaa27b09c + full_name: "devfreq_event_get_edev_by_phandle" +} +elf_symbol { + id: 0xe2544e4d + name: "devfreq_event_get_edev_count" + is_defined: true + symbol_type: FUNCTION + crc: 0x2e31dce9 + type_id: 0x9dee9fa0 + full_name: "devfreq_event_get_edev_count" +} +elf_symbol { + id: 0xdd8da0cf + name: "devfreq_event_get_event" + is_defined: true + symbol_type: FUNCTION + crc: 0x9719d881 + type_id: 0x9eb7f57a + full_name: "devfreq_event_get_event" +} elf_symbol { id: 0x19e74e36 name: "devfreq_get_devfreq_by_node" @@ -347448,6 +347500,15 @@ elf_symbol { type_id: 0x9d8c8e95 full_name: "devm_devfreq_register_notifier" } +elf_symbol { + id: 0x6415475c + name: "devm_devfreq_register_opp_notifier" + is_defined: true + symbol_type: FUNCTION + crc: 0x7d3273ad + type_id: 0x9d8b7529 + full_name: "devm_devfreq_register_opp_notifier" +} elf_symbol { id: 0x2bf23b7c name: "devm_devfreq_remove_device" @@ -394252,6 +394313,11 @@ interface { symbol_id: 0x04c32c7c symbol_id: 0x15eb01e7 symbol_id: 0x647c0881 + symbol_id: 0x349b4e0a + symbol_id: 0x11f117af + symbol_id: 0x781fabb2 + symbol_id: 0xe2544e4d + symbol_id: 0xdd8da0cf symbol_id: 0x19e74e36 symbol_id: 0xdb9d4783 symbol_id: 0x4c5f0ec2 @@ -394359,6 +394425,7 @@ interface { symbol_id: 0x88d6fe86 symbol_id: 0xa4692a70 symbol_id: 0x3afde7ec + symbol_id: 0x6415475c symbol_id: 0x2bf23b7c symbol_id: 0x97301de5 symbol_id: 0x8ed64fa4 diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 258aec25213a..a50ecc40dbfa 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -139,6 +139,13 @@ dev_driver_string _dev_err dev_err_probe + devfreq_add_governor + devfreq_recommended_opp + devfreq_register_opp_notifier + devfreq_remove_governor + devfreq_resume_device + devfreq_suspend_device + devfreq_unregister_opp_notifier dev_fwnode dev_get_regmap dev_get_tstats64 @@ -1998,12 +2005,36 @@ vmf_insert_mixed vm_insert_page +# required by rockchip-cpufreq.ko + cpufreq_unregister_notifier + # required by rockchip-rng.ko devm_of_iomap # required by rockchip_bus.ko cpu_topology +# required by rockchip_dmc.ko + cpufreq_cpu_put + cpufreq_quick_get + devfreq_event_disable_edev + devfreq_event_enable_edev + devfreq_event_get_edev_by_phandle + devfreq_event_get_edev_count + devfreq_event_get_event + devfreq_monitor_resume + devfreq_monitor_start + devfreq_monitor_stop + devfreq_monitor_suspend + devfreq_update_interval + devm_devfreq_register_opp_notifier + dev_pm_opp_add + input_close_device + input_open_device + input_register_handle + input_register_handler + input_unregister_handle + # required by rockchip_dmc_common.ko down_write_trylock From b09b06dcf1b35ec8606255ffb0ee636ad6ef7eba Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 14 Sep 2023 14:22:16 +0800 Subject: [PATCH 10/99] ANDROID: GKI: Add symbols for rockchip sdhci INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 8 function symbol(s) added 'void sdhci_adma_write_desc(struct sdhci_host*, void**, dma_addr_t, int, unsigned int)' 'unsigned int sdhci_pltfm_clk_get_max_clock(struct sdhci_host*)' 'int sdhci_pltfm_unregister(struct platform_device*)' 'void sdhci_set_clock(struct sdhci_host*, unsigned int)' 'void sdhci_set_power_and_bus_voltage(struct sdhci_host*, unsigned char, unsigned short)' 'void sdhci_set_uhs_signaling(struct sdhci_host*, unsigned int)' 'u16 sdio_readw(struct sdio_func*, unsigned int, int*)' 'void sdio_writew(struct sdio_func*, u16, unsigned int, int*)' Bug: 300024866 Change-Id: I7592c26a0e1547719a70994a28d9c5bb525224b5 Signed-off-by: Kever Yang --- android/abi_gki_aarch64.stg | 95 ++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 51 +++++++++++++++++ 2 files changed, 146 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index dc185bb1c81a..710a18fcf779 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -284879,6 +284879,13 @@ function { return_type_id: 0xe2774cab parameter_id: 0x24d65b62 } +function { + id: 0x04a35d6c + return_type_id: 0x914dbfdc + parameter_id: 0x126add1c + parameter_id: 0x4585663f + parameter_id: 0x13580d6c +} function { id: 0x04ce0b6f return_type_id: 0x914dbfdc @@ -289920,6 +289927,14 @@ function { return_type_id: 0x48b5725f parameter_id: 0x1b36c7a2 } +function { + id: 0x1656fc12 + return_type_id: 0x48b5725f + parameter_id: 0x126add1c + parameter_id: 0x914dbfdc + parameter_id: 0x4585663f + parameter_id: 0x13580d6c +} function { id: 0x1658716c return_type_id: 0x48b5725f @@ -377356,6 +377371,15 @@ elf_symbol { type_id: 0x93dfa305 full_name: "sdhci_add_host" } +elf_symbol { + id: 0xf399cd48 + name: "sdhci_adma_write_desc" + is_defined: true + symbol_type: FUNCTION + crc: 0x01560eef + type_id: 0x1ecc6a5d + full_name: "sdhci_adma_write_desc" +} elf_symbol { id: 0x05840f35 name: "sdhci_cleanup_host" @@ -377437,6 +377461,15 @@ elf_symbol { type_id: 0x1f55a7e6 full_name: "sdhci_get_property" } +elf_symbol { + id: 0x15f1b772 + name: "sdhci_pltfm_clk_get_max_clock" + is_defined: true + symbol_type: FUNCTION + crc: 0x91fe6c0a + type_id: 0xc0843ed1 + full_name: "sdhci_pltfm_clk_get_max_clock" +} elf_symbol { id: 0x38940a34 name: "sdhci_pltfm_free" @@ -377455,6 +377488,15 @@ elf_symbol { type_id: 0xb019e307 full_name: "sdhci_pltfm_init" } +elf_symbol { + id: 0x9f8a16f0 + name: "sdhci_pltfm_unregister" + is_defined: true + symbol_type: FUNCTION + crc: 0xca4fab1b + type_id: 0x924d155a + full_name: "sdhci_pltfm_unregister" +} elf_symbol { id: 0xad3b5931 name: "sdhci_remove_host" @@ -377527,6 +377569,24 @@ elf_symbol { type_id: 0x1f5b92f5 full_name: "sdhci_set_bus_width" } +elf_symbol { + id: 0x92732196 + name: "sdhci_set_clock" + is_defined: true + symbol_type: FUNCTION + crc: 0xefd8b1a4 + type_id: 0x1fd10421 + full_name: "sdhci_set_clock" +} +elf_symbol { + id: 0xd29660d9 + name: "sdhci_set_power_and_bus_voltage" + is_defined: true + symbol_type: FUNCTION + crc: 0x3726c8e5 + type_id: 0x1f835b6f + full_name: "sdhci_set_power_and_bus_voltage" +} elf_symbol { id: 0xa6c906b5 name: "sdhci_set_power_noreg" @@ -377536,6 +377596,15 @@ elf_symbol { type_id: 0x1f835b6f full_name: "sdhci_set_power_noreg" } +elf_symbol { + id: 0x77dba918 + name: "sdhci_set_uhs_signaling" + is_defined: true + symbol_type: FUNCTION + crc: 0x30232005 + type_id: 0x1fd10421 + full_name: "sdhci_set_uhs_signaling" +} elf_symbol { id: 0x5cc4535c name: "sdhci_setup_host" @@ -377662,6 +377731,15 @@ elf_symbol { type_id: 0x99685c26 full_name: "sdio_readsb" } +elf_symbol { + id: 0xe1092bbd + name: "sdio_readw" + is_defined: true + symbol_type: FUNCTION + crc: 0xf956e25f + type_id: 0x04a35d6c + full_name: "sdio_readw" +} elf_symbol { id: 0x3003f174 name: "sdio_register_driver" @@ -377761,6 +377839,15 @@ elf_symbol { type_id: 0x980bf22a full_name: "sdio_writesb" } +elf_symbol { + id: 0xb3b8cbe2 + name: "sdio_writew" + is_defined: true + symbol_type: FUNCTION + crc: 0xc72a8a38 + type_id: 0x1656fc12 + full_name: "sdio_writew" +} elf_symbol { id: 0xec171799 name: "security_file_ioctl" @@ -397740,6 +397827,7 @@ interface { symbol_id: 0x9c54c873 symbol_id: 0x771aea1d symbol_id: 0x8d3c4841 + symbol_id: 0xf399cd48 symbol_id: 0x05840f35 symbol_id: 0xa6141872 symbol_id: 0x56b779c5 @@ -397749,8 +397837,10 @@ interface { symbol_id: 0x5ab300fb symbol_id: 0x33d40ef0 symbol_id: 0xeb6692c0 + symbol_id: 0x15f1b772 symbol_id: 0x38940a34 symbol_id: 0x322ca1cc + symbol_id: 0x9f8a16f0 symbol_id: 0xad3b5931 symbol_id: 0xdc85b8be symbol_id: 0xd1dc3f24 @@ -397759,7 +397849,10 @@ interface { symbol_id: 0x4e595f64 symbol_id: 0xd94e8fae symbol_id: 0xd2399e18 + symbol_id: 0x92732196 + symbol_id: 0xd29660d9 symbol_id: 0xa6c906b5 + symbol_id: 0x77dba918 symbol_id: 0x5cc4535c symbol_id: 0x7d2c4acc symbol_id: 0x1f593233 @@ -397774,6 +397867,7 @@ interface { symbol_id: 0xbd7218cd symbol_id: 0x8ef4fedc symbol_id: 0x4f956c89 + symbol_id: 0xe1092bbd symbol_id: 0x3003f174 symbol_id: 0xf85ae22f symbol_id: 0xcca4d1a0 @@ -397785,6 +397879,7 @@ interface { symbol_id: 0xbf0b0a4c symbol_id: 0x4a4e8bee symbol_id: 0x5b060b7d + symbol_id: 0xb3b8cbe2 symbol_id: 0xec171799 symbol_id: 0xb7265b03 symbol_id: 0x24b9d7ed diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index a50ecc40dbfa..746f5bc62f06 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -998,6 +998,19 @@ schedule schedule_timeout scnprintf + __sdhci_add_host + sdhci_cleanup_host + sdhci_enable_clk + sdhci_get_property + sdhci_pltfm_clk_get_max_clock + sdhci_pltfm_free + sdhci_pltfm_init + sdhci_reset + sdhci_resume_host + sdhci_set_bus_width + sdhci_set_clock + sdhci_setup_host + sdhci_suspend_host seq_lseek seq_printf seq_putc @@ -1264,6 +1277,26 @@ _raw_read_unlock_bh sched_set_fifo_low sched_set_normal + 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_set_block_size + sdio_set_host_pm_flags + sdio_unregister_driver + sdio_writeb + sdio_writel + sdio_writew set_cpus_allowed_ptr __skb_pad sock_wfree @@ -2244,6 +2277,24 @@ # required by rtc-rk808.ko rtc_update_irq +# required by sdhci-of-arasan.ko + sdhci_add_host + sdhci_cqe_disable + sdhci_cqe_enable + sdhci_cqe_irq + sdhci_dumpregs + sdhci_execute_tuning + sdhci_pltfm_unregister + sdhci_set_power_and_bus_voltage + sdhci_set_uhs_signaling + +# required by sdhci-of-dwcmshc.ko + devm_clk_bulk_get_optional + dma_get_required_mask + sdhci_adma_write_desc + sdhci_remove_host + sdhci_request + # required by sg.ko blk_execute_rq_nowait blk_mq_free_request From 53162778e7f2423368d52ad6c1bd96756801f36c Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 14 Sep 2023 14:49:23 +0800 Subject: [PATCH 11/99] ANDROID: GKI: Add cdc symbols for rockchip INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 10 function symbol(s) added 'struct net_device* __vlan_find_dev_deep_rcu(struct net_device*, __be16, u16)' 'int cdc_ncm_bind_common(struct usbnet*, struct usb_interface*, u8, int)' 'int cdc_ncm_change_mtu(struct net_device*, int)' 'struct sk_buff* cdc_ncm_fill_tx_frame(struct usbnet*, struct sk_buff*, __le32)' 'int cdc_ncm_rx_verify_ndp16(struct sk_buff*, int)' 'int cdc_ncm_rx_verify_nth16(struct cdc_ncm_ctx*, struct sk_buff*)' 'u8 cdc_ncm_select_altsetting(struct usb_interface*)' 'void cdc_ncm_unbind(struct usbnet*, struct usb_interface*)' 'void cec_queue_pin_hpd_event(struct cec_adapter*, bool, ktime_t)' 'void in6_dev_finish_destroy(struct inet6_dev*)' Bug: 300024866 Change-Id: I4eaa35395fcb35e058f67ef73ae6561161ccf0bd Signed-off-by: Kever Yang --- android/abi_gki_aarch64.stg | 747 +++++++++++++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 33 ++ 2 files changed, 780 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 710a18fcf779..e0567a696ebf 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -893,6 +893,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x27461240 } +pointer_reference { + id: 0x034b35b4 + kind: POINTER + pointee_type_id: 0x276c304c +} pointer_reference { id: 0x035330ac kind: POINTER @@ -23053,6 +23058,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xe3685372 } +pointer_reference { + id: 0x324ddec3 + kind: POINTER + pointee_type_id: 0xe3779d93 +} pointer_reference { id: 0x324e6996 kind: POINTER @@ -24868,6 +24878,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfda4bf28 } +pointer_reference { + id: 0x35feb7e2 + kind: POINTER + pointee_type_id: 0xfdba3915 +} pointer_reference { id: 0x36042134 kind: POINTER @@ -27248,6 +27263,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc733e2de } +pointer_reference { + id: 0x3b622f67 + kind: POINTER + pointee_type_id: 0xc7c85b01 +} pointer_reference { id: 0x3b66c89b kind: POINTER @@ -27348,6 +27368,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc4e323c9 } +pointer_reference { + id: 0x3ba909c1 + kind: POINTER + pointee_type_id: 0xc4e4c198 +} pointer_reference { id: 0x3baacc82 kind: POINTER @@ -27438,6 +27463,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc5e27af4 } +pointer_reference { + id: 0x3beb3e50 + kind: POINTER + pointee_type_id: 0xc5ec1fdd +} pointer_reference { id: 0x3bedc96c kind: POINTER @@ -28793,6 +28823,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xd69f81c9 } +pointer_reference { + id: 0x3f387468 + kind: POINTER + pointee_type_id: 0xd6a1373c +} pointer_reference { id: 0x3f3cd89a kind: POINTER @@ -31543,6 +31578,11 @@ qualified { qualifier: CONST qualified_type_id: 0x67ce5d5b } +qualified { + id: 0xc5ec1fdd + qualifier: CONST + qualified_type_id: 0x67f7c9ff +} qualified { id: 0xc5f7c32f qualifier: CONST @@ -31658,6 +31698,11 @@ qualified { qualifier: CONST qualified_type_id: 0x6e373489 } +qualified { + id: 0xc7c85b01 + qualifier: CONST + qualified_type_id: 0x6f66da8d +} qualified { id: 0xc7dbc4f1 qualifier: CONST @@ -32428,6 +32473,11 @@ qualified { qualifier: CONST qualified_type_id: 0x29d16967 } +qualified { + id: 0xd6a1373c + qualifier: CONST + qualified_type_id: 0x2ac36a79 +} qualified { id: 0xd6b384f7 qualifier: CONST @@ -33163,6 +33213,11 @@ qualified { qualifier: CONST qualified_type_id: 0xfde6fb43 } +qualified { + id: 0xe3779d93 + qualifier: CONST + qualified_type_id: 0xfd99c0c6 +} qualified { id: 0xe3791aa0 qualifier: CONST @@ -37477,6 +37532,10 @@ array { id: 0xc81b91b5 element_type_id: 0x30887d17 } +array { + id: 0xc82f70f4 + element_type_id: 0x305bf810 +} array { id: 0xc8c766a0 number_of_elements: 8 @@ -37520,6 +37579,10 @@ array { number_of_elements: 26 element_type_id: 0x295c7202 } +array { + id: 0xcb703345 + element_type_id: 0x3d26f6d4 +} array { id: 0xcbd8574f element_type_id: 0x3f8766fd @@ -39547,6 +39610,11 @@ member { type_id: 0x68d21466 offset: 256 } +member { + id: 0x3a3b9c87 + type_id: 0x67c0081f + offset: 1984 +} member { id: 0x3a3e30f1 type_id: 0x67d69fb5 @@ -52599,6 +52667,12 @@ member { type_id: 0xa5960bec offset: 192 } +member { + id: 0x5e2b88f3 + name: "bh" + type_id: 0xa5960bec + offset: 832 +} member { id: 0xb592ec0b name: "bhash" @@ -53940,6 +54014,12 @@ member { type_id: 0xb3e7bac9 offset: 40 } +member { + id: 0x6b1b4f66 + name: "bmNtbFormatsSupported" + type_id: 0x9bd401b6 + offset: 16 +} member { id: 0xb0e7ec93 name: "bmSublinkSpeedAttr" @@ -65065,6 +65145,12 @@ member { type_id: 0x2bb39ba6 offset: 2176 } +member { + id: 0xfc1d642c + name: "control" + type_id: 0x21069feb + offset: 1472 +} member { id: 0xfc37c610 name: "control" @@ -69907,6 +69993,12 @@ member { type_id: 0x20fd6195 offset: 64 } +member { + id: 0xffb32814 + name: "data" + type_id: 0x21069feb + offset: 1536 +} member { id: 0xffb530a9 name: "data" @@ -72117,6 +72209,16 @@ member { type_id: 0x6d7f5ff6 offset: 3072 } +member { + id: 0xc43f5f8d + name: "delayed_ndp16" + type_id: 0x3ba909c1 +} +member { + id: 0xd408f584 + name: "delayed_ndp32" + type_id: 0x35feb7e2 +} member { id: 0x506f3dc2 name: "delayed_runtime" @@ -73714,6 +73816,12 @@ member { type_id: 0x1042c9d1 offset: 192 } +member { + id: 0xce34257f + name: "dev" + type_id: 0x0dc9e98b + offset: 1152 +} member { id: 0xce3495b5 name: "dev" @@ -77899,6 +78007,18 @@ member { offset: 1034 bitsize: 1 } +member { + id: 0xab0f277e + name: "dpe16" + type_id: 0xc82f70f4 + offset: 64 +} +member { + id: 0x015a8ae1 + name: "dpe32" + type_id: 0xcb703345 + offset: 128 +} member { id: 0x32a55865 name: "dpipe_headers" @@ -78914,6 +79034,12 @@ member { type_id: 0x18bd6530 offset: 192 } +member { + id: 0xbf6a10c0 + name: "drvflags" + type_id: 0x6720d32f + offset: 1824 +} member { id: 0xacd4449f name: "drvpriv" @@ -79907,6 +80033,46 @@ member { name: "dwDTERate" type_id: 0x0baa70a7 } +member { + id: 0x09ca9dd2 + name: "dwDatagramIndex" + type_id: 0x0baa70a7 +} +member { + id: 0x348d64a1 + name: "dwDatagramLength" + type_id: 0x0baa70a7 + offset: 32 +} +member { + id: 0x6e82996c + name: "dwNextNdpIndex" + type_id: 0x0baa70a7 + offset: 64 +} +member { + id: 0x7000a99b + name: "dwNtbInMaxSize" + type_id: 0x0baa70a7 + offset: 32 +} +member { + id: 0xc1f69c16 + name: "dwNtbOutMaxSize" + type_id: 0x0baa70a7 + offset: 128 +} +member { + id: 0x46e37740 + name: "dwReserved12" + type_id: 0x0baa70a7 + offset: 96 +} +member { + id: 0x1e7efd51 + name: "dwSignature" + type_id: 0x0baa70a7 +} member { id: 0x301130d9 name: "dword_0" @@ -83186,6 +83352,12 @@ member { type_id: 0xb3e7bac9 offset: 112 } +member { + id: 0x48630da5 + name: "ether_desc" + type_id: 0x3f387468 + offset: 1408 +} member { id: 0xedf651c0 name: "ether_spec" @@ -93287,6 +93459,12 @@ member { type_id: 0x3af3fd37 offset: 192 } +member { + id: 0xaab5e3db + name: "func_desc" + type_id: 0x3beb3e50 + offset: 1216 +} member { id: 0x74d098cf name: "func_id" @@ -110228,6 +110406,12 @@ member { offset: 6533 bitsize: 1 } +member { + id: 0xbc20bf07 + name: "is_ndp16" + type_id: 0x295c7202 + offset: 1920 +} member { id: 0x1f3c147c name: "is_nested" @@ -121479,6 +121663,12 @@ member { type_id: 0xe8034002 offset: 64 } +member { + id: 0x3a33fdde + name: "max_datagram_size" + type_id: 0xc9082b19 + offset: 2272 +} member { id: 0x6252d912 name: "max_dec_size" @@ -122046,6 +122236,12 @@ member { type_id: 0x6720d32f offset: 160 } +member { + id: 0x90a7314a + name: "max_ndp_size" + type_id: 0xc9082b19 + offset: 1888 +} member { id: 0x4f305ba6 name: "max_newidle_lb_cost" @@ -123345,6 +123541,18 @@ member { type_id: 0xa84ab8c0 offset: 32 } +member { + id: 0x12ebc87a + name: "mbim_desc" + type_id: 0x324ddec3 + offset: 1280 +} +member { + id: 0x605196d3 + name: "mbim_extended_desc" + type_id: 0x3b622f67 + offset: 1344 +} member { id: 0xaea16832 name: "mbox" @@ -125530,6 +125738,12 @@ member { type_id: 0xb3e7bac9 offset: 7080 } +member { + id: 0x7cb10669 + name: "min_tx_pkt" + type_id: 0x914dbfdc + offset: 2400 +} member { id: 0x47fc27ee name: "min_tx_rate" @@ -128568,6 +128782,12 @@ member { type_id: 0x0f626ee5 offset: 640 } +member { + id: 0x3a21c0f4 + name: "mtx" + type_id: 0xf313e71a + offset: 1760 +} member { id: 0x3a75162c name: "mtx" @@ -130384,6 +130604,11 @@ member { type_id: 0x6720d32f offset: 320 } +member { + id: 0x11638e21 + name: "ncm_parm" + type_id: 0xc4793083 +} member { id: 0xe5f6efa3 name: "ncmd_timer" @@ -167677,6 +167902,12 @@ member { name: "rx_mask" type_id: 0x7dbd382e } +member { + id: 0xa064e9a8 + name: "rx_max" + type_id: 0xc9082b19 + offset: 2112 +} member { id: 0xfd4774fd name: "rx_max_coalesced_frames" @@ -167783,6 +168014,12 @@ member { type_id: 0xedf277ba offset: 1472 } +member { + id: 0xb3ff3714 + name: "rx_ntbs" + type_id: 0x92233392 + offset: 2816 +} member { id: 0x9fdf2166 name: "rx_oos_packets" @@ -167818,6 +168055,12 @@ member { type_id: 0xedf277ba offset: 704 } +member { + id: 0xa15b4dcc + name: "rx_overhead" + type_id: 0x92233392 + offset: 2752 +} member { id: 0x6a136bc1 name: "rx_packets" @@ -167943,6 +168186,12 @@ member { name: "rx_sc_stats" type_id: 0x3f75f4e8 } +member { + id: 0x32a32199 + name: "rx_seq" + type_id: 0x914dbfdc + offset: 2384 +} member { id: 0xa6aa7bdf name: "rx_seq_discards" @@ -182671,6 +182920,12 @@ member { name: "stop" type_id: 0x6720d32f } +member { + id: 0x69fcaeb3 + name: "stop" + type_id: 0x74d29cf1 + offset: 1792 +} member { id: 0x02ed8160 name: "stop_count" @@ -189568,6 +189823,12 @@ member { type_id: 0x0cd0749c offset: 832 } +member { + id: 0xbd73b897 + name: "timer_interval" + type_id: 0xc9082b19 + offset: 1856 +} member { id: 0x64abf1a3 name: "timer_intv" @@ -192971,6 +193232,30 @@ member { type_id: 0xe8034002 offset: 1200 } +member { + id: 0xc168d729 + name: "tx_curr_frame_num" + type_id: 0xc9082b19 + offset: 2080 +} +member { + id: 0x086ff8ab + name: "tx_curr_frame_payload" + type_id: 0xc9082b19 + offset: 2432 +} +member { + id: 0x38ca06c6 + name: "tx_curr_size" + type_id: 0xc9082b19 + offset: 2176 +} +member { + id: 0x5d898398 + name: "tx_curr_skb" + type_id: 0x054f691a + offset: 1600 +} member { id: 0x54a31621 name: "tx_custom_high_usecs" @@ -193224,6 +193509,18 @@ member { type_id: 0xc9082b19 offset: 13152 } +member { + id: 0x61a8790c + name: "tx_low_mem_max_cnt" + type_id: 0xc9082b19 + offset: 2208 +} +member { + id: 0xa94058b8 + name: "tx_low_mem_val" + type_id: 0xc9082b19 + offset: 2240 +} member { id: 0xa6a7625f name: "tx_lpi_enabled" @@ -193248,6 +193545,12 @@ member { type_id: 0x92233392 offset: 384 } +member { + id: 0x6dd1b0db + name: "tx_max" + type_id: 0xc9082b19 + offset: 2144 +} member { id: 0x55810d6d name: "tx_max_coalesced_frames" @@ -193272,6 +193575,12 @@ member { type_id: 0xe62ebf07 offset: 512 } +member { + id: 0x24dde6e5 + name: "tx_max_datagrams" + type_id: 0x914dbfdc + offset: 2304 +} member { id: 0x7992b00c name: "tx_max_pending" @@ -193313,6 +193622,12 @@ member { name: "tx_mode" type_id: 0xb3e7bac9 } +member { + id: 0xd6166cf3 + name: "tx_modulus" + type_id: 0x914dbfdc + offset: 2336 +} member { id: 0x962013d6 name: "tx_msg" @@ -193338,6 +193653,24 @@ member { offset: 579 bitsize: 3 } +member { + id: 0x85dc3e67 + name: "tx_ndp_modulus" + type_id: 0x914dbfdc + offset: 2352 +} +member { + id: 0xe0d8421b + name: "tx_ntbs" + type_id: 0x92233392 + offset: 2688 +} +member { + id: 0xa8317855 + name: "tx_overhead" + type_id: 0x92233392 + offset: 2624 +} member { id: 0x9206d03d name: "tx_packets" @@ -193461,6 +193794,48 @@ member { type_id: 0x33756485 offset: 11328 } +member { + id: 0xc1b8b7af + name: "tx_reason_max_datagram" + type_id: 0xc9082b19 + offset: 2560 +} +member { + id: 0x29c64945 + name: "tx_reason_ndp_full" + type_id: 0xc9082b19 + offset: 2496 +} +member { + id: 0xaec5023b + name: "tx_reason_ntb_full" + type_id: 0xc9082b19 + offset: 2464 +} +member { + id: 0x618af26f + name: "tx_reason_timeout" + type_id: 0xc9082b19 + offset: 2528 +} +member { + id: 0x8d6eed3e + name: "tx_rem_sign" + type_id: 0x0baa70a7 + offset: 1728 +} +member { + id: 0x2d67c2b0 + name: "tx_rem_skb" + type_id: 0x054f691a + offset: 1664 +} +member { + id: 0x8c376a11 + name: "tx_remainder" + type_id: 0x914dbfdc + offset: 2320 +} member { id: 0x5f95d285 name: "tx_reserved" @@ -193518,6 +193893,12 @@ member { type_id: 0x054f691a offset: 6528 } +member { + id: 0x163cb0a1 + name: "tx_seq" + type_id: 0x914dbfdc + offset: 2368 +} member { id: 0x2862bcb8 name: "tx_sg" @@ -193609,6 +193990,18 @@ member { type_id: 0xc9082b19 offset: 13024 } +member { + id: 0xa25bc850 + name: "tx_timer" + type_id: 0xcd7704bf + offset: 256 +} +member { + id: 0xf9c0c1b7 + name: "tx_timer_pending" + type_id: 0xc9082b19 + offset: 2048 +} member { id: 0x5343bc40 name: "tx_toggle" @@ -202397,6 +202790,17 @@ member { type_id: 0x9bd401b6 offset: 32 } +member { + id: 0xdd4cd36f + name: "wDatagramIndex" + type_id: 0x9bd401b6 +} +member { + id: 0x3643720a + name: "wDatagramLength" + type_id: 0x9bd401b6 + offset: 16 +} member { id: 0x3b766446 name: "wFunctionalitySupport" @@ -202415,6 +202819,17 @@ member { type_id: 0x9bd401b6 offset: 48 } +member { + id: 0x070c8108 + name: "wLength" + type_id: 0x9bd401b6 + offset: 32 +} +member { + id: 0x070c8c33 + name: "wLength" + type_id: 0x9bd401b6 +} member { id: 0xb75b254f name: "wMTU" @@ -202451,18 +202866,78 @@ member { type_id: 0x9bd401b6 offset: 64 } +member { + id: 0x2726a674 + name: "wNdpInAlignment" + type_id: 0x9bd401b6 + offset: 96 +} +member { + id: 0x8464bb02 + name: "wNdpInDivisor" + type_id: 0x9bd401b6 + offset: 64 +} +member { + id: 0x2c655b0e + name: "wNdpInPayloadRemainder" + type_id: 0x9bd401b6 + offset: 80 +} +member { + id: 0x13c51648 + name: "wNdpOutAlignment" + type_id: 0x9bd401b6 + offset: 192 +} +member { + id: 0x5a711378 + name: "wNdpOutDivisor" + type_id: 0x9bd401b6 + offset: 160 +} +member { + id: 0xcf666fe6 + name: "wNdpOutPayloadRemainder" + type_id: 0x9bd401b6 + offset: 176 +} +member { + id: 0x28625ee1 + name: "wNextNdpIndex" + type_id: 0x9bd401b6 + offset: 48 +} +member { + id: 0x364cd8ff + name: "wNtbOutMaxDatagrams" + type_id: 0x9bd401b6 + offset: 208 +} member { id: 0xd6499e1b name: "wNumberMCFilters" type_id: 0x9bd401b6 offset: 80 } +member { + id: 0x0550cff2 + name: "wPadding1" + type_id: 0x9bd401b6 + offset: 112 +} member { id: 0x84d40eb1 name: "wReserved" type_id: 0x9bd401b6 offset: 80 } +member { + id: 0xe3bc934c + name: "wReserved6" + type_id: 0x9bd401b6 + offset: 48 +} member { id: 0xeffe0b79 name: "wReseved" @@ -212342,6 +212817,15 @@ struct_union { member_id: 0x8ee7990f } } +struct_union { + id: 0x67c0081f + kind: UNION + definition { + bytesize: 8 + member_id: 0xc43f5f8d + member_id: 0xd408f584 + } +} struct_union { id: 0x67d43857 kind: UNION @@ -217831,6 +218315,58 @@ struct_union { member_id: 0x3203541e } } +struct_union { + id: 0x276c304c + kind: STRUCT + name: "cdc_ncm_ctx" + definition { + bytesize: 360 + member_id: 0x11638e21 + member_id: 0xa25bc850 + member_id: 0x5e2b88f3 + member_id: 0xce34257f + member_id: 0xaab5e3db + member_id: 0x12ebc87a + member_id: 0x605196d3 + member_id: 0x48630da5 + member_id: 0xfc1d642c + member_id: 0xffb32814 + member_id: 0x5d898398 + member_id: 0x2d67c2b0 + member_id: 0x8d6eed3e + member_id: 0x3a21c0f4 + member_id: 0x69fcaeb3 + member_id: 0xbf6a10c0 + member_id: 0xbd73b897 + member_id: 0x90a7314a + member_id: 0xbc20bf07 + member_id: 0x3a3b9c87 + member_id: 0xf9c0c1b7 + member_id: 0xc168d729 + member_id: 0xa064e9a8 + member_id: 0x6dd1b0db + member_id: 0x38ca06c6 + member_id: 0x61a8790c + member_id: 0xa94058b8 + member_id: 0x3a33fdde + member_id: 0x24dde6e5 + member_id: 0x8c376a11 + member_id: 0xd6166cf3 + member_id: 0x85dc3e67 + member_id: 0x163cb0a1 + member_id: 0x32a32199 + member_id: 0x7cb10669 + member_id: 0x086ff8ab + member_id: 0xaec5023b + member_id: 0x29c64945 + member_id: 0x618af26f + member_id: 0xc1b8b7af + member_id: 0xa8317855 + member_id: 0xe0d8421b + member_id: 0xa15b4dcc + member_id: 0xb3ff3714 + } +} struct_union { id: 0x5f766fc6 kind: STRUCT @@ -260645,6 +261181,72 @@ struct_union { member_id: 0xfb7cce1d } } +struct_union { + id: 0x305bf810 + kind: STRUCT + name: "usb_cdc_ncm_dpe16" + definition { + bytesize: 4 + member_id: 0xdd4cd36f + member_id: 0x3643720a + } +} +struct_union { + id: 0x3d26f6d4 + kind: STRUCT + name: "usb_cdc_ncm_dpe32" + definition { + bytesize: 8 + member_id: 0x09ca9dd2 + member_id: 0x348d64a1 + } +} +struct_union { + id: 0xc4e4c198 + kind: STRUCT + name: "usb_cdc_ncm_ndp16" + definition { + bytesize: 8 + member_id: 0x1e7efd51 + member_id: 0x070c8108 + member_id: 0x28625ee1 + member_id: 0xab0f277e + } +} +struct_union { + id: 0xfdba3915 + kind: STRUCT + name: "usb_cdc_ncm_ndp32" + definition { + bytesize: 16 + member_id: 0x1e7efd51 + member_id: 0x070c8108 + member_id: 0xe3bc934c + member_id: 0x6e82996c + member_id: 0x46e37740 + member_id: 0x015a8ae1 + } +} +struct_union { + id: 0xc4793083 + kind: STRUCT + name: "usb_cdc_ncm_ntb_parameters" + definition { + bytesize: 28 + member_id: 0x070c8c33 + member_id: 0x6b1b4f66 + member_id: 0x7000a99b + member_id: 0x8464bb02 + member_id: 0x2c655b0e + member_id: 0x2726a674 + member_id: 0x0550cff2 + member_id: 0xc1f69c16 + member_id: 0x5a711378 + member_id: 0xcf666fe6 + member_id: 0x13c51648 + member_id: 0x364cd8ff + } +} struct_union { id: 0x50209186 kind: STRUCT @@ -295068,6 +295670,11 @@ function { parameter_id: 0x6d7f5ff6 parameter_id: 0xac0d3a85 } +function { + id: 0x1e704726 + return_type_id: 0x48b5725f + parameter_id: 0x3ba05ad7 +} function { id: 0x1e70c9ff return_type_id: 0x48b5725f @@ -295670,6 +296277,13 @@ function { parameter_id: 0x31b96ec5 parameter_id: 0xf435685e } +function { + id: 0x1f2853af + return_type_id: 0x48b5725f + parameter_id: 0x3806390a + parameter_id: 0x6d7f5ff6 + parameter_id: 0x11c404ba +} function { id: 0x1f29471f return_type_id: 0xd5cc9c9a @@ -299491,6 +300105,11 @@ function { parameter_id: 0x391f15ea parameter_id: 0xf435685e } +function { + id: 0x5b0b198d + return_type_id: 0x295c7202 + parameter_id: 0x21069feb +} function { id: 0x5b3d7cd1 return_type_id: 0x18bd6530 @@ -300357,6 +300976,13 @@ function { parameter_id: 0x054f691a parameter_id: 0xf1a6dfed } +function { + id: 0x6bfb947b + return_type_id: 0x054f691a + parameter_id: 0x0dc9e98b + parameter_id: 0x054f691a + parameter_id: 0x0baa70a7 +} function { id: 0x6c109ae9 return_type_id: 0x249959de @@ -319439,6 +320065,12 @@ function { parameter_id: 0x2f73da3b parameter_id: 0x6720d32f } +function { + id: 0x9d4713e6 + return_type_id: 0x6720d32f + parameter_id: 0x034b35b4 + parameter_id: 0x054f691a +} function { id: 0x9d475de3 return_type_id: 0x6720d32f @@ -321566,6 +322198,14 @@ function { parameter_id: 0x05c2a3ca parameter_id: 0xa2e4cbbb } +function { + id: 0x9e7d48ad + return_type_id: 0x6720d32f + parameter_id: 0x0dc9e98b + parameter_id: 0x21069feb + parameter_id: 0x295c7202 + parameter_id: 0x6720d32f +} function { id: 0x9e7f936c return_type_id: 0x6720d32f @@ -326729,6 +327369,13 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x00c72527 } +function { + id: 0xf12845f8 + return_type_id: 0x32a623d7 + parameter_id: 0x32a623d7 + parameter_id: 0x7584e7da + parameter_id: 0x914dbfdc +} function { id: 0xf1329f23 return_type_id: 0x6d7f5ff6 @@ -338427,6 +339074,15 @@ elf_symbol { type_id: 0x9f0d3989 full_name: "__video_register_device" } +elf_symbol { + id: 0x6b7624f1 + name: "__vlan_find_dev_deep_rcu" + is_defined: true + symbol_type: FUNCTION + crc: 0xa50a5b08 + type_id: 0xf12845f8 + full_name: "__vlan_find_dev_deep_rcu" +} elf_symbol { id: 0x97d65f20 name: "__vmalloc" @@ -342149,6 +342805,69 @@ elf_symbol { type_id: 0xfdb03c5c full_name: "capable_wrt_inode_uidgid" } +elf_symbol { + id: 0x0d8df2d6 + name: "cdc_ncm_bind_common" + is_defined: true + symbol_type: FUNCTION + crc: 0xa165232f + type_id: 0x9e7d48ad + full_name: "cdc_ncm_bind_common" +} +elf_symbol { + id: 0xbe895b99 + name: "cdc_ncm_change_mtu" + is_defined: true + symbol_type: FUNCTION + crc: 0xe9dd0df4 + type_id: 0x90b5e896 + full_name: "cdc_ncm_change_mtu" +} +elf_symbol { + id: 0x438a802b + name: "cdc_ncm_fill_tx_frame" + is_defined: true + symbol_type: FUNCTION + crc: 0x3e5e696a + type_id: 0x6bfb947b + full_name: "cdc_ncm_fill_tx_frame" +} +elf_symbol { + id: 0xe05cfed6 + name: "cdc_ncm_rx_verify_ndp16" + is_defined: true + symbol_type: FUNCTION + crc: 0xbeac75e1 + type_id: 0x9d4fba25 + full_name: "cdc_ncm_rx_verify_ndp16" +} +elf_symbol { + id: 0xb0d627f0 + name: "cdc_ncm_rx_verify_nth16" + is_defined: true + symbol_type: FUNCTION + crc: 0x0c8f8ef8 + type_id: 0x9d4713e6 + full_name: "cdc_ncm_rx_verify_nth16" +} +elf_symbol { + id: 0x3b573ab8 + name: "cdc_ncm_select_altsetting" + is_defined: true + symbol_type: FUNCTION + crc: 0x0bd5ab5f + type_id: 0x5b0b198d + full_name: "cdc_ncm_select_altsetting" +} +elf_symbol { + id: 0xb4ff03eb + name: "cdc_ncm_unbind" + is_defined: true + symbol_type: FUNCTION + crc: 0xb2a5cb89 + type_id: 0x136e318e + full_name: "cdc_ncm_unbind" +} elf_symbol { id: 0xb2bfcc0c name: "cdc_parse_cdc_header" @@ -342302,6 +343021,15 @@ elf_symbol { type_id: 0x158d1ae2 full_name: "cec_notifier_set_phys_addr_from_edid" } +elf_symbol { + id: 0xa383a6c1 + name: "cec_queue_pin_hpd_event" + is_defined: true + symbol_type: FUNCTION + crc: 0xafee3a98 + type_id: 0x1f2853af + full_name: "cec_queue_pin_hpd_event" +} elf_symbol { id: 0x1ff124cb name: "cec_received_msg_ts" @@ -359956,6 +360684,15 @@ elf_symbol { type_id: 0x9399e12a full_name: "in4_pton" } +elf_symbol { + id: 0xcc6510bd + name: "in6_dev_finish_destroy" + is_defined: true + symbol_type: FUNCTION + crc: 0x71b83d03 + type_id: 0x1e704726 + full_name: "in6_dev_finish_destroy" +} elf_symbol { id: 0xc93c3b7d name: "in6_pton" @@ -393501,6 +394238,7 @@ interface { symbol_id: 0x3f61ffe2 symbol_id: 0xab99b62a symbol_id: 0x4648ac0b + symbol_id: 0x6b7624f1 symbol_id: 0x97d65f20 symbol_id: 0xf84b240e symbol_id: 0xb63e140d @@ -393915,6 +394653,13 @@ interface { symbol_id: 0x9e7fc289 symbol_id: 0x0e419b40 symbol_id: 0x61aaf300 + symbol_id: 0x0d8df2d6 + symbol_id: 0xbe895b99 + symbol_id: 0x438a802b + symbol_id: 0xe05cfed6 + symbol_id: 0xb0d627f0 + symbol_id: 0x3b573ab8 + symbol_id: 0xb4ff03eb symbol_id: 0xb2bfcc0c symbol_id: 0x06192615 symbol_id: 0x9e3deb49 @@ -393932,6 +394677,7 @@ interface { symbol_id: 0xfe061fe6 symbol_id: 0xcda0bdad symbol_id: 0x3c28dcec + symbol_id: 0xa383a6c1 symbol_id: 0x1ff124cb symbol_id: 0x80b6d91d symbol_id: 0x229b68f6 @@ -395892,6 +396638,7 @@ interface { symbol_id: 0xf87ecda4 symbol_id: 0x00b4d2da symbol_id: 0xdf968210 + symbol_id: 0xcc6510bd symbol_id: 0xc93c3b7d symbol_id: 0xcae49fd9 symbol_id: 0x83940072 diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 746f5bc62f06..d4670c064aae 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -44,6 +44,20 @@ cdev_device_add cdev_device_del cdev_init + cec_allocate_adapter + cec_delete_adapter + cec_fill_conn_info_from_drm + cec_notifier_cec_adap_register + cec_notifier_cec_adap_unregister + cec_notifier_conn_register + cec_notifier_conn_unregister + cec_notifier_set_phys_addr + cec_notifier_set_phys_addr_from_edid + cec_queue_pin_hpd_event + cec_received_msg_ts + cec_register_adapter + cec_transmit_attempt_done_ts + cec_unregister_adapter __check_object_size __class_create class_create_file_ns @@ -1388,6 +1402,25 @@ devm_regmap_field_bulk_alloc power_supply_get_property_from_supplier +# required by cdc-wdm.ko + cdc_parse_cdc_header + usb_poison_urb + usb_unpoison_urb + +# required by cdc_mbim.ko + cdc_ncm_bind_common + cdc_ncm_change_mtu + cdc_ncm_fill_tx_frame + cdc_ncm_rx_verify_ndp16 + cdc_ncm_rx_verify_nth16 + cdc_ncm_select_altsetting + cdc_ncm_unbind + in6_dev_finish_destroy + __ipv6_addr_type + ipv6_stub + usb_match_id + __vlan_find_dev_deep_rcu + # required by cfg80211.ko bpf_trace_run10 bpf_trace_run8 From 3e3c6debe4db1d266b7e6ae0ea84e08445cd9958 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 14 Sep 2023 15:09:25 +0800 Subject: [PATCH 12/99] ANDROID: GKI: Add hid and usb symbols for rockchip INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 35 function symbol(s) added 'struct fwnode_handle* fwnode_create_software_node(const struct property_entry*, const struct fwnode_handle*)' 'int hid_driver_reset_resume(struct hid_device*)' 'int hid_driver_suspend(struct hid_device*, pm_message_t)' 'void hid_hw_close(struct hid_device*)' 'int hid_hw_open(struct hid_device*)' 'int hid_hw_output_report(struct hid_device*, __u8*, size_t)' 'void hid_hw_request(struct hid_device*, struct hid_report*, enum hid_class_request)' 'int hid_report_raw_event(struct hid_device*, enum hid_report_type, u8*, u32, int)' 'struct hid_report* hid_validate_values(struct hid_device*, enum hid_report_type, unsigned int, unsigned int, unsigned int)' 'struct tcpm_port* tcpm_register_port(struct device*, struct tcpc_dev*)' 'void tcpm_unregister_port(struct tcpm_port*)' 'int usb_interrupt_msg(struct usb_device*, unsigned int, void*, int, int*, int)' 'int usbnet_change_mtu(struct net_device*, int)' 'void usbnet_defer_kevent(struct usbnet*, int)' 'void usbnet_disconnect(struct usb_interface*)' 'void usbnet_get_drvinfo(struct net_device*, struct ethtool_drvinfo*)' 'u32 usbnet_get_link(struct net_device*)' 'int usbnet_get_link_ksettings_mii(struct net_device*, struct ethtool_link_ksettings*)' 'u32 usbnet_get_msglevel(struct net_device*)' 'int usbnet_nway_reset(struct net_device*)' 'int usbnet_open(struct net_device*)' 'int usbnet_probe(struct usb_interface*, const struct usb_device_id*)' 'int usbnet_read_cmd(struct usbnet*, u8, u8, u16, u16, void*, u16)' 'int usbnet_read_cmd_nopm(struct usbnet*, u8, u8, u16, u16, void*, u16)' 'int usbnet_resume(struct usb_interface*)' 'int usbnet_set_link_ksettings_mii(struct net_device*, const struct ethtool_link_ksettings*)' 'void usbnet_set_msglevel(struct net_device*, u32)' 'void usbnet_skb_return(struct usbnet*, struct sk_buff*)' 'netdev_tx_t usbnet_start_xmit(struct sk_buff*, struct net_device*)' 'int usbnet_stop(struct net_device*)' 'int usbnet_suspend(struct usb_interface*, pm_message_t)' 'void usbnet_tx_timeout(struct net_device*, unsigned int)' 'int usbnet_write_cmd(struct usbnet*, u8, u8, u16, u16, const void*, u16)' 'int usbnet_write_cmd_async(struct usbnet*, u8, u8, u16, u16, const void*, u16)' 'int usbnet_write_cmd_nopm(struct usbnet*, u8, u8, u16, u16, const void*, u16)' 2 variable symbol(s) added 'int hid_debug' 'struct hid_ll_driver usb_hid_driver' Bug: 300024866 Change-Id: Ie417675e96b58d05e04c44e81abcc00c5d3b0dbe Signed-off-by: Kever Yang --- android/abi_gki_aarch64.stg | 432 +++++++++++++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 74 ++++++ 2 files changed, 506 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index e0567a696ebf..ebb2e3519cf1 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -287993,6 +287993,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0bb0c019 } +function { + id: 0x1276a8bd + return_type_id: 0x48b5725f + parameter_id: 0x0dc9e98b + parameter_id: 0x6720d32f +} function { id: 0x1277c151 return_type_id: 0x48b5725f @@ -288728,6 +288734,13 @@ function { parameter_id: 0x81f130ac parameter_id: 0x18bd6530 } +function { + id: 0x137a1cdc + return_type_id: 0x48b5725f + parameter_id: 0x0de4c6b1 + parameter_id: 0x2eab5b8a + parameter_id: 0x87463428 +} function { id: 0x137d1ffc return_type_id: 0x48b5725f @@ -289060,6 +289073,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0d8bad22 } +function { + id: 0x13ff1655 + return_type_id: 0x48b5725f + parameter_id: 0x0dc9e98b + parameter_id: 0x054f691a +} function { id: 0x1401698f return_type_id: 0x48b5725f @@ -290775,6 +290794,12 @@ function { parameter_id: 0x1a6ea392 parameter_id: 0x24706e28 } +function { + id: 0x16949287 + return_type_id: 0x08113aaf + parameter_id: 0x0258f96e + parameter_id: 0x396fe4f8 +} function { id: 0x16983453 return_type_id: 0x48b5725f @@ -297808,6 +297833,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x92233392 } +function { + id: 0x34270f0c + return_type_id: 0x0490bb4a + parameter_id: 0x36e75420 + parameter_id: 0x3e146274 +} function { id: 0x345f1809 return_type_id: 0xa9403390 @@ -322001,6 +322032,28 @@ function { return_type_id: 0x6720d32f parameter_id: 0x0f78474f } +function { + id: 0x9e5fde3c + return_type_id: 0x6720d32f + parameter_id: 0x0dc9e98b + parameter_id: 0x295c7202 + parameter_id: 0x295c7202 + parameter_id: 0x914dbfdc + parameter_id: 0x914dbfdc + parameter_id: 0x391f15ea + parameter_id: 0x914dbfdc +} +function { + id: 0x9e5fdeba + return_type_id: 0x6720d32f + parameter_id: 0x0dc9e98b + parameter_id: 0x295c7202 + parameter_id: 0x295c7202 + parameter_id: 0x914dbfdc + parameter_id: 0x914dbfdc + parameter_id: 0x18bd6530 + parameter_id: 0x914dbfdc +} function { id: 0x9e609ac2 return_type_id: 0x6720d32f @@ -326763,6 +326816,15 @@ function { parameter_id: 0x18a2fb63 parameter_id: 0x4585663f } +function { + id: 0xe10f9802 + return_type_id: 0x2eab5b8a + parameter_id: 0x0de4c6b1 + parameter_id: 0xfa5f37bb + parameter_id: 0x4585663f + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0xe12a6d4e return_type_id: 0x07450c2a @@ -356577,6 +356639,15 @@ elf_symbol { type_id: 0xc075980c full_name: "full_name_hash" } +elf_symbol { + id: 0xc35e482b + name: "fwnode_create_software_node" + is_defined: true + symbol_type: FUNCTION + crc: 0xf7a29e9c + type_id: 0x34270f0c + full_name: "fwnode_create_software_node" +} elf_symbol { id: 0x53816b02 name: "fwnode_device_is_available" @@ -359019,6 +359090,15 @@ elf_symbol { type_id: 0x98aacbd0 full_name: "hid_allocate_device" } +elf_symbol { + id: 0xa832c6f3 + name: "hid_debug" + is_defined: true + symbol_type: OBJECT + crc: 0x05495392 + type_id: 0x6720d32f + full_name: "hid_debug" +} elf_symbol { id: 0x2ffc7c7e name: "hid_destroy_device" @@ -359028,6 +359108,51 @@ elf_symbol { type_id: 0x13e1603f full_name: "hid_destroy_device" } +elf_symbol { + id: 0x1706be22 + name: "hid_driver_reset_resume" + is_defined: true + symbol_type: FUNCTION + crc: 0x38266a07 + type_id: 0x9ef9d283 + full_name: "hid_driver_reset_resume" +} +elf_symbol { + id: 0x4c3911f0 + name: "hid_driver_suspend" + is_defined: true + symbol_type: FUNCTION + crc: 0x63c99127 + type_id: 0x9d398c85 + full_name: "hid_driver_suspend" +} +elf_symbol { + id: 0x8717f26f + name: "hid_hw_close" + is_defined: true + symbol_type: FUNCTION + crc: 0xffa28586 + type_id: 0x13e1603f + full_name: "hid_hw_close" +} +elf_symbol { + id: 0x361004c8 + name: "hid_hw_open" + is_defined: true + symbol_type: FUNCTION + crc: 0x83abbb03 + type_id: 0x9ef9d283 + full_name: "hid_hw_open" +} +elf_symbol { + id: 0xcf5ea9a2 + name: "hid_hw_output_report" + is_defined: true + symbol_type: FUNCTION + crc: 0x8f5731d2 + type_id: 0x9e5d7885 + full_name: "hid_hw_output_report" +} elf_symbol { id: 0x6c303862 name: "hid_hw_raw_request" @@ -359037,6 +359162,15 @@ elf_symbol { type_id: 0x9f85a1ff full_name: "hid_hw_raw_request" } +elf_symbol { + id: 0x553bc5f3 + name: "hid_hw_request" + is_defined: true + symbol_type: FUNCTION + crc: 0xe88265d4 + type_id: 0x137a1cdc + full_name: "hid_hw_request" +} elf_symbol { id: 0xfba34655 name: "hid_hw_start" @@ -359091,6 +359225,15 @@ elf_symbol { type_id: 0x9e711486 full_name: "hid_parse_report" } +elf_symbol { + id: 0x741d5af7 + name: "hid_report_raw_event" + is_defined: true + symbol_type: FUNCTION + crc: 0x358ef5ff + type_id: 0x9d13a27c + full_name: "hid_report_raw_event" +} elf_symbol { id: 0x6e37f09d name: "hid_unregister_driver" @@ -359100,6 +359243,15 @@ elf_symbol { type_id: 0x104da524 full_name: "hid_unregister_driver" } +elf_symbol { + id: 0x29d6d842 + name: "hid_validate_values" + is_defined: true + symbol_type: FUNCTION + crc: 0x67c1cd41 + type_id: 0xe10f9802 + full_name: "hid_validate_values" +} elf_symbol { id: 0x21d35235 name: "hidp_hid_driver" @@ -384313,6 +384465,15 @@ elf_symbol { type_id: 0xfca015af full_name: "tcpm_port_is_toggling" } +elf_symbol { + id: 0xd2070626 + name: "tcpm_register_port" + is_defined: true + symbol_type: FUNCTION + crc: 0xd95cde3e + type_id: 0x16949287 + full_name: "tcpm_register_port" +} elf_symbol { id: 0xdebe76ba name: "tcpm_sink_frs" @@ -384340,6 +384501,15 @@ elf_symbol { type_id: 0x129c1f38 full_name: "tcpm_tcpc_reset" } +elf_symbol { + id: 0x591431f1 + name: "tcpm_unregister_port" + is_defined: true + symbol_type: FUNCTION + crc: 0x76eeda4b + type_id: 0x129c1f38 + full_name: "tcpm_unregister_port" +} elf_symbol { id: 0x6869c83d name: "tcpm_vbus_change" @@ -388525,6 +388695,15 @@ elf_symbol { type_id: 0x33756485 full_name: "usb_hcds_loaded" } +elf_symbol { + id: 0x00a14c5c + name: "usb_hid_driver" + is_defined: true + symbol_type: OBJECT + crc: 0x06332c5c + type_id: 0x2def15e8 + full_name: "usb_hid_driver" +} elf_symbol { id: 0x868c5f6e name: "usb_hub_clear_tt_buffer" @@ -388579,6 +388758,15 @@ elf_symbol { type_id: 0x9ebe912b full_name: "usb_interface_id" } +elf_symbol { + id: 0x83676405 + name: "usb_interrupt_msg" + is_defined: true + symbol_type: FUNCTION + crc: 0xc5e153c9 + type_id: 0x9fce79d4 + full_name: "usb_interrupt_msg" +} elf_symbol { id: 0x89c78ea4 name: "usb_kill_anchored_urbs" @@ -389254,6 +389442,42 @@ elf_symbol { type_id: 0x12d17df8 full_name: "usb_wakeup_notification" } +elf_symbol { + id: 0xbbf007f4 + name: "usbnet_change_mtu" + is_defined: true + symbol_type: FUNCTION + crc: 0xdf1db1f5 + type_id: 0x90b5e896 + full_name: "usbnet_change_mtu" +} +elf_symbol { + id: 0xd28057f3 + name: "usbnet_defer_kevent" + is_defined: true + symbol_type: FUNCTION + crc: 0x6e3c218b + type_id: 0x1276a8bd + full_name: "usbnet_defer_kevent" +} +elf_symbol { + id: 0x580c56b8 + name: "usbnet_disconnect" + is_defined: true + symbol_type: FUNCTION + crc: 0xfe1e5ee6 + type_id: 0x18d9f669 + full_name: "usbnet_disconnect" +} +elf_symbol { + id: 0x8f0c866d + name: "usbnet_get_drvinfo" + is_defined: true + symbol_type: FUNCTION + crc: 0xa5701874 + type_id: 0x1cc68e0f + full_name: "usbnet_get_drvinfo" +} elf_symbol { id: 0x52816b1c name: "usbnet_get_endpoints" @@ -389263,6 +389487,33 @@ elf_symbol { type_id: 0x9e768332 full_name: "usbnet_get_endpoints" } +elf_symbol { + id: 0x4f4e9353 + name: "usbnet_get_link" + is_defined: true + symbol_type: FUNCTION + crc: 0xa8e792b0 + type_id: 0x4951a397 + full_name: "usbnet_get_link" +} +elf_symbol { + id: 0x3f51a906 + name: "usbnet_get_link_ksettings_mii" + is_defined: true + symbol_type: FUNCTION + crc: 0x2d9393b2 + type_id: 0x914dbe16 + full_name: "usbnet_get_link_ksettings_mii" +} +elf_symbol { + id: 0x6515c416 + name: "usbnet_get_msglevel" + is_defined: true + symbol_type: FUNCTION + crc: 0xaa53e6df + type_id: 0x4951a397 + full_name: "usbnet_get_msglevel" +} elf_symbol { id: 0x19d80976 name: "usbnet_link_change" @@ -389272,6 +389523,150 @@ elf_symbol { type_id: 0x12448959 full_name: "usbnet_link_change" } +elf_symbol { + id: 0x6c854cb3 + name: "usbnet_nway_reset" + is_defined: true + symbol_type: FUNCTION + crc: 0x44c1d620 + type_id: 0x91296bda + full_name: "usbnet_nway_reset" +} +elf_symbol { + id: 0xcd021e80 + name: "usbnet_open" + is_defined: true + symbol_type: FUNCTION + crc: 0x37e3dac8 + type_id: 0x91296bda + full_name: "usbnet_open" +} +elf_symbol { + id: 0x147e4ad2 + name: "usbnet_probe" + is_defined: true + symbol_type: FUNCTION + crc: 0xa6db5d48 + type_id: 0x952154fc + full_name: "usbnet_probe" +} +elf_symbol { + id: 0x167360fc + name: "usbnet_read_cmd" + is_defined: true + symbol_type: FUNCTION + crc: 0xa46394ea + type_id: 0x9e5fdeba + full_name: "usbnet_read_cmd" +} +elf_symbol { + id: 0x69b1070f + name: "usbnet_read_cmd_nopm" + is_defined: true + symbol_type: FUNCTION + crc: 0x721f340d + type_id: 0x9e5fdeba + full_name: "usbnet_read_cmd_nopm" +} +elf_symbol { + id: 0x3be16591 + name: "usbnet_resume" + is_defined: true + symbol_type: FUNCTION + crc: 0xb279d24c + type_id: 0x95c144d5 + full_name: "usbnet_resume" +} +elf_symbol { + id: 0x6e3c0f91 + name: "usbnet_set_link_ksettings_mii" + is_defined: true + symbol_type: FUNCTION + crc: 0x3f50bb22 + type_id: 0x91cc9f9b + full_name: "usbnet_set_link_ksettings_mii" +} +elf_symbol { + id: 0x99cb2edf + name: "usbnet_set_msglevel" + is_defined: true + symbol_type: FUNCTION + crc: 0xcbf61848 + type_id: 0x1f15f9ca + full_name: "usbnet_set_msglevel" +} +elf_symbol { + id: 0x2325cd65 + name: "usbnet_skb_return" + is_defined: true + symbol_type: FUNCTION + crc: 0x7602f70e + type_id: 0x13ff1655 + full_name: "usbnet_skb_return" +} +elf_symbol { + id: 0x9cf79f8d + name: "usbnet_start_xmit" + is_defined: true + symbol_type: FUNCTION + crc: 0x64b56e3d + type_id: 0x5515f11d + full_name: "usbnet_start_xmit" +} +elf_symbol { + id: 0x2f365f93 + name: "usbnet_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0x1328858d + type_id: 0x91296bda + full_name: "usbnet_stop" +} +elf_symbol { + id: 0x6229bd38 + name: "usbnet_suspend" + is_defined: true + symbol_type: FUNCTION + crc: 0xf5d2649e + type_id: 0x96011ad3 + full_name: "usbnet_suspend" +} +elf_symbol { + id: 0x90b81315 + name: "usbnet_tx_timeout" + is_defined: true + symbol_type: FUNCTION + crc: 0x93fad802 + type_id: 0x1d27ccfe + full_name: "usbnet_tx_timeout" +} +elf_symbol { + id: 0xb011e423 + name: "usbnet_write_cmd" + is_defined: true + symbol_type: FUNCTION + crc: 0xf6bbc53f + type_id: 0x9e5fde3c + full_name: "usbnet_write_cmd" +} +elf_symbol { + id: 0x27363bb6 + name: "usbnet_write_cmd_async" + is_defined: true + symbol_type: FUNCTION + crc: 0x54bea6a3 + type_id: 0x9e5fde3c + full_name: "usbnet_write_cmd_async" +} +elf_symbol { + id: 0x10932377 + name: "usbnet_write_cmd_nopm" + is_defined: true + symbol_type: FUNCTION + crc: 0xee57cfe4 + type_id: 0x9e5fde3c + full_name: "usbnet_write_cmd_nopm" +} elf_symbol { id: 0xb5437ef4 name: "usleep_range_state" @@ -396182,6 +396577,7 @@ interface { symbol_id: 0xee139066 symbol_id: 0x613adcb1 symbol_id: 0x370e6f08 + symbol_id: 0xc35e482b symbol_id: 0x53816b02 symbol_id: 0xc9ddb79e symbol_id: 0x11780300 @@ -396453,15 +396849,24 @@ interface { symbol_id: 0x88f82161 symbol_id: 0xccc593d6 symbol_id: 0x97a02af0 + symbol_id: 0xa832c6f3 symbol_id: 0x2ffc7c7e + symbol_id: 0x1706be22 + symbol_id: 0x4c3911f0 + symbol_id: 0x8717f26f + symbol_id: 0x361004c8 + symbol_id: 0xcf5ea9a2 symbol_id: 0x6c303862 + symbol_id: 0x553bc5f3 symbol_id: 0xfba34655 symbol_id: 0x52d444b1 symbol_id: 0x7d0e44ca symbol_id: 0x10de460f symbol_id: 0x0eb11e95 symbol_id: 0x6ca4d0ed + symbol_id: 0x741d5af7 symbol_id: 0x6e37f09d + symbol_id: 0x29d6d842 symbol_id: 0x21d35235 symbol_id: 0x334ff68f symbol_id: 0xd7ecf501 @@ -399264,9 +399669,11 @@ interface { symbol_id: 0xbabc4102 symbol_id: 0x4c16a6b4 symbol_id: 0xc8ad19b6 + symbol_id: 0xd2070626 symbol_id: 0xdebe76ba symbol_id: 0xae3ea97c symbol_id: 0xfccd15d1 + symbol_id: 0x591431f1 symbol_id: 0x6869c83d symbol_id: 0x5bbd3545 symbol_id: 0xf4017fdd @@ -399732,12 +400139,14 @@ interface { symbol_id: 0x700d3d6b symbol_id: 0xbdfbbc33 symbol_id: 0x1b3f668e + symbol_id: 0x00a14c5c symbol_id: 0x868c5f6e symbol_id: 0xb89dad0b symbol_id: 0x110008ad symbol_id: 0x5df193f7 symbol_id: 0x9b635032 symbol_id: 0x4048e514 + symbol_id: 0x83676405 symbol_id: 0x89c78ea4 symbol_id: 0x37cf2035 symbol_id: 0x2db08c33 @@ -399813,8 +400222,31 @@ interface { symbol_id: 0xcac8f190 symbol_id: 0x9ea1c58f symbol_id: 0x140d9164 + symbol_id: 0xbbf007f4 + symbol_id: 0xd28057f3 + symbol_id: 0x580c56b8 + symbol_id: 0x8f0c866d symbol_id: 0x52816b1c + symbol_id: 0x4f4e9353 + symbol_id: 0x3f51a906 + symbol_id: 0x6515c416 symbol_id: 0x19d80976 + symbol_id: 0x6c854cb3 + symbol_id: 0xcd021e80 + symbol_id: 0x147e4ad2 + symbol_id: 0x167360fc + symbol_id: 0x69b1070f + symbol_id: 0x3be16591 + symbol_id: 0x6e3c0f91 + symbol_id: 0x99cb2edf + symbol_id: 0x2325cd65 + symbol_id: 0x9cf79f8d + symbol_id: 0x2f365f93 + symbol_id: 0x6229bd38 + symbol_id: 0x90b81315 + symbol_id: 0xb011e423 + symbol_id: 0x27363bb6 + symbol_id: 0x10932377 symbol_id: 0xb5437ef4 symbol_id: 0x1473720a symbol_id: 0xa459c02b diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index d4670c064aae..ef09752c3c14 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -523,6 +523,18 @@ hdmi_drm_infoframe_pack hdmi_infoframe_pack hdmi_vendor_infoframe_pack + hid_debug + hid_hw_close + hid_hw_open + hid_hw_output_report + hid_hw_raw_request + hid_hw_request + hid_hw_start + hid_hw_stop + hid_open_report + __hid_register_driver + hid_unregister_driver + hid_validate_values hrtimer_cancel hrtimer_forward hrtimer_init @@ -1201,6 +1213,32 @@ usb_hcd_link_urb_to_ep usb_hcd_resume_root_hub usb_hcd_unlink_urb_from_ep + usb_hid_driver + usbnet_change_mtu + usbnet_defer_kevent + usbnet_disconnect + usbnet_get_drvinfo + usbnet_get_endpoints + usbnet_get_link + usbnet_get_link_ksettings_mii + usbnet_get_msglevel + usbnet_link_change + usbnet_nway_reset + usbnet_open + usbnet_probe + usbnet_read_cmd + usbnet_read_cmd_nopm + usbnet_resume + usbnet_set_link_ksettings_mii + usbnet_set_msglevel + usbnet_skb_return + usbnet_start_xmit + usbnet_stop + usbnet_suspend + usbnet_tx_timeout + usbnet_write_cmd + usbnet_write_cmd_async + usbnet_write_cmd_nopm usb_put_hcd usb_register_dev usb_register_driver @@ -1677,6 +1715,19 @@ ip_send_check of_get_phy_mode +# required by fusb302.ko + extcon_get_extcon_dev + fwnode_create_software_node + kthread_create_worker + kthread_destroy_worker + tcpm_cc_change + tcpm_pd_hard_reset + tcpm_pd_receive + tcpm_pd_transmit_complete + tcpm_register_port + tcpm_unregister_port + tcpm_vbus_change + # required by gpio-regulator.ko gpiod_count @@ -1696,6 +1747,20 @@ irq_get_domain_generic_chip of_pinctrl_get +# required by hid-alps.ko + input_alloc_absinfo + input_mt_sync_frame + +# required by hid-holtek-kbd.ko + usb_ifnum_to_if + +# required by hid-primax.ko + hid_report_raw_event + +# required by hid-thrustmaster.ko + usb_interrupt_msg + usb_kill_urb + # required by i2c-dev.ko bus_register_notifier bus_unregister_notifier @@ -1708,6 +1773,15 @@ desc_to_gpio i2c_bit_add_numbered_bus +# required by i2c-hid.ko + hid_add_device + hid_allocate_device + hid_destroy_device + hid_driver_reset_resume + hid_driver_suspend + hid_input_report + hid_parse_report + # required by i2c-mux.ko __i2c_transfer rt_mutex_lock From 6a10b34387ef8e94245e0f2d73e9f3539fa0f4c4 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Thu, 14 Sep 2023 15:31:44 +0800 Subject: [PATCH 13/99] ANDROID: GKI: Add symbols for rockchip v4l2 INFO: ABI DIFFERENCES HAVE BEEN DETECTED! INFO: 11 function symbol(s) added 'int __v4l2_ctrl_handler_setup(struct v4l2_ctrl_handler*)' 'bool v4l2_find_dv_timings_cap(struct v4l2_dv_timings*, const struct v4l2_dv_timings_cap*, unsigned int, v4l2_check_dv_timings_fnc*, void*)' 'int v4l2_pipeline_pm_get(struct media_entity*)' 'void v4l2_pipeline_pm_put(struct media_entity*)' 'void v4l2_print_dv_timings(const char*, const char*, const struct v4l2_dv_timings*, bool)' 'int v4l2_querymenu(struct v4l2_ctrl_handler*, struct v4l2_querymenu*)' 'int v4l2_src_change_event_subdev_subscribe(struct v4l2_subdev*, struct v4l2_fh*, struct v4l2_event_subscription*)' 'void v4l2_subdev_notify_event(struct v4l2_subdev*, const struct v4l2_event*)' 'bool v4l2_valid_dv_timings(const struct v4l2_dv_timings*, const struct v4l2_dv_timings_cap*, v4l2_check_dv_timings_fnc*, void*)' 'int video_device_pipeline_start(struct video_device*, struct media_pipeline*)' 'void video_device_pipeline_stop(struct video_device*)' 1 variable symbol(s) added 'const char* v4l2_type_names[15]' Bug: 300024866 Change-Id: I1c7e85b6b125c2dfb43fe2ac4c4c9b2867119513 Signed-off-by: Kever Yang --- android/abi_gki_aarch64.stg | 173 +++++++++++++++++++++++++++++++ android/abi_gki_aarch64_rockchip | 62 +++++++++++ 2 files changed, 235 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index ebb2e3519cf1..227be236d819 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -38210,6 +38210,11 @@ array { number_of_elements: 15 element_type_id: 0x384f7d7c } +array { + id: 0xf95ab7ac + number_of_elements: 15 + element_type_id: 0x3e10b518 +} array { id: 0xf95fb1e4 number_of_elements: 8 @@ -286034,6 +286039,12 @@ function { parameter_id: 0x0258f96e parameter_id: 0x0490bb4a } +function { + id: 0x101d83a0 + return_type_id: 0x48b5725f + parameter_id: 0x01c5a749 + parameter_id: 0x3d2ef874 +} function { id: 0x10219d88 return_type_id: 0x48b5725f @@ -296915,6 +296926,14 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3df0a7d3 } +function { + id: 0x1fe91863 + return_type_id: 0x48b5725f + parameter_id: 0x3e10b518 + parameter_id: 0x3e10b518 + parameter_id: 0x324e7f0f + parameter_id: 0x6d7f5ff6 +} function { id: 0x1feaaebf return_type_id: 0x48b5725f @@ -313257,6 +313276,11 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1e9705eb } +function { + id: 0x9a25325b + return_type_id: 0x6720d32f + parameter_id: 0x1e9745d3 +} function { id: 0x9a299233 return_type_id: 0x6720d32f @@ -319870,6 +319894,12 @@ function { parameter_id: 0x01c5a749 parameter_id: 0x30600191 } +function { + id: 0x9d30566e + return_type_id: 0x6720d32f + parameter_id: 0x026c3dea + parameter_id: 0x0aee8ed6 +} function { id: 0x9d30fa23 return_type_id: 0x6720d32f @@ -320686,6 +320716,12 @@ function { parameter_id: 0xc700b957 parameter_id: 0x07dcdbe1 } +function { + id: 0x9da46876 + return_type_id: 0x6720d32f + parameter_id: 0x01e0b0cf + parameter_id: 0x1729da91 +} function { id: 0x9da4bde5 return_type_id: 0x6720d32f @@ -327689,6 +327725,14 @@ function { return_type_id: 0x26e55184 parameter_id: 0x3e10b518 } +function { + id: 0xf2d3e848 + return_type_id: 0x6d7f5ff6 + parameter_id: 0x324e7f0f + parameter_id: 0x3bcd0c02 + parameter_id: 0x2de928d9 + parameter_id: 0x18bd6530 +} function { id: 0xf2d73ac2 return_type_id: 0x6d7f5ff6 @@ -327777,6 +327821,15 @@ function { return_type_id: 0x6d7f5ff6 parameter_id: 0x36194830 } +function { + id: 0xf3248c4f + return_type_id: 0x6d7f5ff6 + parameter_id: 0x35f8cea5 + parameter_id: 0x3bcd0c02 + parameter_id: 0x4585663f + parameter_id: 0x2de928d9 + parameter_id: 0x18bd6530 +} function { id: 0xf334abb2 return_type_id: 0x6d7f5ff6 @@ -339064,6 +339117,15 @@ elf_symbol { type_id: 0x20cd94dc full_name: "__usecs_to_jiffies" } +elf_symbol { + id: 0x4c0a941a + name: "__v4l2_ctrl_handler_setup" + is_defined: true + symbol_type: FUNCTION + crc: 0x3ae35349 + type_id: 0x9d1bec55 + full_name: "__v4l2_ctrl_handler_setup" +} elf_symbol { id: 0xfc85c168 name: "__v4l2_ctrl_modify_range" @@ -390108,6 +390170,15 @@ elf_symbol { type_id: 0x9bba7997 full_name: "v4l2_fh_release" } +elf_symbol { + id: 0x538ad5cc + name: "v4l2_find_dv_timings_cap" + is_defined: true + symbol_type: FUNCTION + crc: 0x3aa68d7a + type_id: 0xf3248c4f + full_name: "v4l2_find_dv_timings_cap" +} elf_symbol { id: 0x2244c8f0 name: "v4l2_format_info" @@ -390567,6 +390638,42 @@ elf_symbol { type_id: 0x900d5d3b full_name: "v4l2_pipeline_link_notify" } +elf_symbol { + id: 0xb2eba8d7 + name: "v4l2_pipeline_pm_get" + is_defined: true + symbol_type: FUNCTION + crc: 0x12d08c2a + type_id: 0x9a25325b + full_name: "v4l2_pipeline_pm_get" +} +elf_symbol { + id: 0xa84f74e5 + name: "v4l2_pipeline_pm_put" + is_defined: true + symbol_type: FUNCTION + crc: 0xce6853d3 + type_id: 0x173d80e7 + full_name: "v4l2_pipeline_pm_put" +} +elf_symbol { + id: 0x64b2fdfd + name: "v4l2_print_dv_timings" + is_defined: true + symbol_type: FUNCTION + crc: 0x08402862 + type_id: 0x1fe91863 + full_name: "v4l2_print_dv_timings" +} +elf_symbol { + id: 0x34ad1913 + name: "v4l2_querymenu" + is_defined: true + symbol_type: FUNCTION + crc: 0x11003a10 + type_id: 0x9d30566e + full_name: "v4l2_querymenu" +} elf_symbol { id: 0x5f3882d0 name: "v4l2_s_ctrl" @@ -390585,6 +390692,15 @@ elf_symbol { type_id: 0x9df4075f full_name: "v4l2_s_parm_cap" } +elf_symbol { + id: 0x90eb49a1 + name: "v4l2_src_change_event_subdev_subscribe" + is_defined: true + symbol_type: FUNCTION + crc: 0xe05167de + type_id: 0x9d3b60fc + full_name: "v4l2_src_change_event_subdev_subscribe" +} elf_symbol { id: 0xac8d7ab3 name: "v4l2_src_change_event_subscribe" @@ -390630,6 +390746,33 @@ elf_symbol { type_id: 0x9d1d4664 full_name: "v4l2_subdev_link_validate_default" } +elf_symbol { + id: 0x5da8252d + name: "v4l2_subdev_notify_event" + is_defined: true + symbol_type: FUNCTION + crc: 0x9389db87 + type_id: 0x101d83a0 + full_name: "v4l2_subdev_notify_event" +} +elf_symbol { + id: 0x1e8152b6 + name: "v4l2_type_names" + is_defined: true + symbol_type: OBJECT + crc: 0x123959a1 + type_id: 0xf95ab7ac + full_name: "v4l2_type_names" +} +elf_symbol { + id: 0xd07f1826 + name: "v4l2_valid_dv_timings" + is_defined: true + symbol_type: FUNCTION + crc: 0x0af3d134 + type_id: 0xf2d3e848 + full_name: "v4l2_valid_dv_timings" +} elf_symbol { id: 0x7733b651 name: "v4l_bound_align_image" @@ -391251,6 +391394,24 @@ elf_symbol { type_id: 0x90a73fa7 full_name: "video_device_alloc" } +elf_symbol { + id: 0x2e0c3fe5 + name: "video_device_pipeline_start" + is_defined: true + symbol_type: FUNCTION + crc: 0x7a4ef3ef + type_id: 0x9da46876 + full_name: "video_device_pipeline_start" +} +elf_symbol { + id: 0xae3c44c1 + name: "video_device_pipeline_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0xc359213b + type_id: 0x10e07da0 + full_name: "video_device_pipeline_stop" +} elf_symbol { id: 0xb1b42a22 name: "video_device_release" @@ -394625,6 +394786,7 @@ interface { symbol_id: 0x7c261545 symbol_id: 0xf497de36 symbol_id: 0xf44f6a18 + symbol_id: 0x4c0a941a symbol_id: 0xfc85c168 symbol_id: 0xb6af2644 symbol_id: 0x96901dfb @@ -400296,6 +400458,7 @@ interface { symbol_id: 0x592a4678 symbol_id: 0xff77e1ca symbol_id: 0xe66642fe + symbol_id: 0x538ad5cc symbol_id: 0x2244c8f0 symbol_id: 0x58330374 symbol_id: 0xdb18c924 @@ -400347,13 +400510,21 @@ interface { symbol_id: 0x906c5f61 symbol_id: 0xf40e82dd symbol_id: 0x9b29f9ed + symbol_id: 0xb2eba8d7 + symbol_id: 0xa84f74e5 + symbol_id: 0x64b2fdfd + symbol_id: 0x34ad1913 symbol_id: 0x5f3882d0 symbol_id: 0xe203e72f + symbol_id: 0x90eb49a1 symbol_id: 0xac8d7ab3 symbol_id: 0x2f159216 symbol_id: 0xb1da32d2 symbol_id: 0x354ec447 symbol_id: 0x28f5deaf + symbol_id: 0x5da8252d + symbol_id: 0x1e8152b6 + symbol_id: 0xd07f1826 symbol_id: 0x7733b651 symbol_id: 0x8e6a3c4a symbol_id: 0x3635e264 @@ -400423,6 +400594,8 @@ interface { symbol_id: 0x2f1da35c symbol_id: 0x47f90fd0 symbol_id: 0x969a2ec0 + symbol_id: 0x2e0c3fe5 + symbol_id: 0xae3c44c1 symbol_id: 0xb1b42a22 symbol_id: 0x689b6a95 symbol_id: 0xbd9fe5b6 diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index ef09752c3c14..8fdda5ad35fb 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -1247,6 +1247,47 @@ usb_submit_urb __usecs_to_jiffies usleep_range_state + v4l2_ctrl_find + v4l2_ctrl_g_ctrl + v4l2_ctrl_g_ctrl_int64 + v4l2_ctrl_handler_free + v4l2_ctrl_handler_init_class + __v4l2_ctrl_handler_setup + v4l2_ctrl_handler_setup + __v4l2_ctrl_modify_range + v4l2_ctrl_new_custom + v4l2_ctrl_new_int_menu + v4l2_ctrl_new_std + v4l2_ctrl_new_std_menu + v4l2_ctrl_new_std_menu_items + __v4l2_ctrl_s_ctrl + __v4l2_ctrl_s_ctrl_int64 + v4l2_ctrl_subdev_subscribe_event + v4l2_device_register + v4l2_device_register_subdev + __v4l2_device_register_subdev_nodes + v4l2_device_unregister + v4l2_device_unregister_subdev + v4l2_enum_dv_timings_cap + v4l2_event_queue + v4l2_event_subdev_unsubscribe + v4l2_event_subscribe + v4l2_event_unsubscribe + v4l2_fh_open + v4l2_i2c_subdev_init + v4l2_match_dv_timings + v4l2_pipeline_link_notify + v4l2_pipeline_pm_get + v4l2_pipeline_pm_put + v4l2_print_dv_timings + v4l2_querymenu + v4l2_src_change_event_subdev_subscribe + v4l2_subdev_call_wrappers + v4l2_subdev_init + v4l2_subdev_link_validate + v4l2_subdev_notify_event + v4l2_type_names + v4l2_valid_dv_timings vb2_buffer_done vb2_dma_contig_memops vb2_fop_mmap @@ -1269,6 +1310,13 @@ vb2_queue_release vb2_vmalloc_memops vfree + video_devdata + video_device_pipeline_start + video_device_pipeline_stop + video_device_release_empty + video_ioctl2 + __video_register_device + video_unregister_device vmalloc vmap vm_get_page_prot @@ -1728,6 +1776,9 @@ tcpm_unregister_port tcpm_vbus_change +# required by gc2145.ko + v4l2_ctrl_subdev_log_status + # required by gpio-regulator.ko gpiod_count @@ -2148,6 +2199,17 @@ # required by rockchip-cpufreq.ko cpufreq_unregister_notifier +# required by rockchip-hdmirx.ko + cec_s_phys_addr + cpu_latency_qos_remove_request + device_create_with_groups + of_reserved_mem_device_release + v4l2_ctrl_log_status + v4l2_ctrl_subscribe_event + v4l2_find_dv_timings_cap + v4l2_src_change_event_subscribe + vb2_fop_read + # required by rockchip-rng.ko devm_of_iomap From 536996aa30a30a373d416a3a457b104bb1c1524d Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Wed, 13 Sep 2023 10:55:55 +0800 Subject: [PATCH 14/99] ANDROID: GKI: Add rockchip fragment and build.config Add rockchip fragment and build.config for build symbol list and abi update. Bug: 300024866 Change-Id: I05f9b2cdba8b558be68a3f93330cd072cd341d71 Signed-off-by: Kever Yang --- arch/arm64/configs/rockchip_gki.fragment | 358 +++++++++++++++++++++++ build.config.rockchip | 15 + 2 files changed, 373 insertions(+) create mode 100644 arch/arm64/configs/rockchip_gki.fragment create mode 100644 build.config.rockchip diff --git a/arch/arm64/configs/rockchip_gki.fragment b/arch/arm64/configs/rockchip_gki.fragment new file mode 100644 index 000000000000..c31a4e8280f5 --- /dev/null +++ b/arch/arm64/configs/rockchip_gki.fragment @@ -0,0 +1,358 @@ +# CONFIG_MODULE_SIG_ALL is not set +CONFIG_PWRSEQ_SIMPLE=m +CONFIG_AP6XXX=m +CONFIG_ARCH_ROCKCHIP=y +CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=m +CONFIG_ARM_ROCKCHIP_CPUFREQ=m +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_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_SG=m +CONFIG_COMMON_CLK_PWM=m +CONFIG_COMMON_CLK_RK808=m +CONFIG_COMMON_CLK_ROCKCHIP=m +CONFIG_COMMON_CLK_SCMI=m +CONFIG_COMPASS_AK8963=m +CONFIG_COMPASS_AK8975=m +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_RK3399=y +CONFIG_CPU_RK3562=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_SHA1_ARM64_CE=m +CONFIG_CRYPTO_TWOFISH=m +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_MAX96755F=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_RK1000_TVE=m +CONFIG_DRM_RK630_TVE=m +CONFIG_DRM_ROCKCHIP=m +CONFIG_DRM_ROCKCHIP_RK618=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_DWMAC_IPQ806X is not set +# CONFIG_DWMAC_QCOM_ETHQOS is not set +# CONFIG_DWMAC_SUN8I is not set +# CONFIG_DWMAC_SUNXI is not set +CONFIG_DW_WATCHDOG=m +CONFIG_FIQ_DEBUGGER=m +CONFIG_FIQ_DEBUGGER_CONSOLE=y +CONFIG_FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE=y +CONFIG_FIQ_DEBUGGER_NO_SLEEP=y +CONFIG_FIQ_DEBUGGER_TRUST_ZONE=y +CONFIG_GPIO_ROCKCHIP=m +CONFIG_GREENASIA_FF=y +CONFIG_GSENSOR_DEVICE=m +CONFIG_GS_DA223=m +CONFIG_GS_KXTJ9=m +CONFIG_GS_LIS3DH=m +CONFIG_GS_LSM303D=m +CONFIG_GS_MC3230=m +CONFIG_GS_MMA7660=m +CONFIG_GS_MMA8452=m +CONFIG_GS_MXC6655XA=m +CONFIG_GS_SC7660=m +CONFIG_GS_SC7A20=m +CONFIG_GS_SC7A30=m +CONFIG_GYROSCOPE_DEVICE=m +CONFIG_GYRO_EWTSA=m +CONFIG_GYRO_L3G20D=m +CONFIG_GYRO_L3G4200D=m +CONFIG_GYRO_LSM330=m +CONFIG_GYRO_MPU6500=m +CONFIG_GYRO_MPU6880=m +CONFIG_HALL_DEVICE=m +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_ALPS=m +CONFIG_HID_APPLEIR=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_GYRATION=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_ICADE=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LENOVO=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PRIMAX=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_WALTOP=m +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HS_MH248=m +CONFIG_HW_RANDOM_ROCKCHIP=m +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HID_OF=m +CONFIG_I2C_RK3X=m +CONFIG_IEP=m +CONFIG_IIO_BUFFER_CB=m +CONFIG_INPUT_RK805_PWRKEY=m +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 +CONFIG_LIGHT_DEVICE=m +CONFIG_LSM330_ACC=m +CONFIG_LS_CM3217=m +CONFIG_LS_CM3218=m +CONFIG_LS_STK3410=m +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_RK618=m +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 +CONFIG_MMC_SDHCI_OF_ARASAN=m +CONFIG_MMC_SDHCI_OF_DWCMSHC=m +CONFIG_MPU6500_ACC=m +CONFIG_MPU6880_ACC=m +CONFIG_NVMEM_ROCKCHIP_EFUSE=m +CONFIG_NVMEM_ROCKCHIP_OTP=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 +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_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_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_PHY=m +CONFIG_ROCKCHIP_PM_DOMAINS=m +CONFIG_ROCKCHIP_PVTM=m +CONFIG_ROCKCHIP_RAM_VENDOR_STORAGE=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_SMARTJOYPLUS_FF=y +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_SOC_AW883XX=m +CONFIG_SND_SOC_BT_SCO=m +CONFIG_SND_SOC_CX2072X=m +CONFIG_SND_SOC_DUMMY_CODEC=m +CONFIG_SND_SOC_ES7202=m +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_RK_DSM=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_SAI=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 +CONFIG_SPI_SPIDEV=m +CONFIG_STMMAC_ETH=m +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_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_TRANCEVIBRATOR=m +CONFIG_VIDEO_AW36518=m +CONFIG_VIDEO_AW8601=m +CONFIG_VIDEO_CN3927V=m +CONFIG_VIDEO_DW9714=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_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_HDMIRX=m +CONFIG_VIDEO_ROCKCHIP_ISP=m +CONFIG_VIDEO_ROCKCHIP_ISPP=m +CONFIG_VIDEO_ROCKCHIP_RKISP1=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_USB_DUMMY_HCD is not set diff --git a/build.config.rockchip b/build.config.rockchip new file mode 100644 index 000000000000..c3d089708674 --- /dev/null +++ b/build.config.rockchip @@ -0,0 +1,15 @@ +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64 + +BUILD_INITRAMFS=1 +LZ4_RAMDISK=1 +DEFCONFIG=rockchip_gki_defconfig +FRAGMENT_CONFIG=${KERNEL_DIR}/arch/arm64/configs/rockchip_gki.fragment +PRE_DEFCONFIG_CMDS="KCONFIG_CONFIG=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${FRAGMENT_CONFIG}" +POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}" + +DTC_INCLUDE=${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/boot/dts/rockchip + +FILES="${FILES} +arch/arm64/boot/dts/rockchip/rk3588*.dtb +" From 64ed291347f9b2a4b7c98257692eacebe6347c9d Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Fri, 20 Jan 2023 18:42:48 +0100 Subject: [PATCH 15/99] UPSTREAM: of: Introduce of_translate_dma_region() This function is similar to of_translate_dma_address() but also reads a length in addition to an address from a device tree property. Bug: 257546262 Reviewed-by: Rob Herring Change-Id: I04eb9ee382b4a6db998b0bf34545f2bddef7a00e Signed-off-by: Thierry Reding Link: https://lore.kernel.org/r/20230120174251.4004100-2-thierry.reding@gmail.com Signed-off-by: Joerg Roedel (cherry picked from commit e251c21372c07694f547afe3c9828f7f6ef01267) --- drivers/of/address.c | 41 ++++++++++++++++++++++++++++++++++++++ include/linux/of_address.h | 2 ++ 2 files changed, 43 insertions(+) diff --git a/drivers/of/address.c b/drivers/of/address.c index 67763e5b8c0e..4c0b169ef9bf 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c @@ -626,6 +626,47 @@ u64 of_translate_dma_address(struct device_node *dev, const __be32 *in_addr) } EXPORT_SYMBOL(of_translate_dma_address); +/** + * of_translate_dma_region - Translate device tree address and size tuple + * @dev: device tree node for which to translate + * @prop: pointer into array of cells + * @start: return value for the start of the DMA range + * @length: return value for the length of the DMA range + * + * Returns a pointer to the cell immediately following the translated DMA region. + */ +const __be32 *of_translate_dma_region(struct device_node *dev, const __be32 *prop, + phys_addr_t *start, size_t *length) +{ + struct device_node *parent; + u64 address, size; + int na, ns; + + parent = __of_get_dma_parent(dev); + if (!parent) + return NULL; + + na = of_bus_n_addr_cells(parent); + ns = of_bus_n_size_cells(parent); + + of_node_put(parent); + + address = of_translate_dma_address(dev, prop); + if (address == OF_BAD_ADDR) + return NULL; + + size = of_read_number(prop + na, ns); + + if (start) + *start = address; + + if (length) + *length = size; + + return prop + na + ns; +} +EXPORT_SYMBOL(of_translate_dma_region); + const __be32 *__of_get_address(struct device_node *dev, int index, int bar_no, u64 *size, unsigned int *flags) { diff --git a/include/linux/of_address.h b/include/linux/of_address.h index 45598dbec269..78d3fa9b4ff8 100644 --- a/include/linux/of_address.h +++ b/include/linux/of_address.h @@ -38,6 +38,8 @@ struct of_pci_range { /* Translate a DMA address from device space to CPU space */ extern u64 of_translate_dma_address(struct device_node *dev, const __be32 *in_addr); +extern const __be32 *of_translate_dma_region(struct device_node *dev, const __be32 *addr, + phys_addr_t *start, size_t *length); #ifdef CONFIG_OF_ADDRESS extern u64 of_translate_address(struct device_node *np, const __be32 *addr); From e9603e85ac14c97c57277fe839f89546fd6e2e80 Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Fri, 20 Jan 2023 18:42:49 +0100 Subject: [PATCH 16/99] UPSTREAM: dt-bindings: reserved-memory: Document iommu-addresses This adds the "iommu-addresses" property to reserved-memory nodes, which allow describing the interaction of memory regions with IOMMUs. Two use- cases are supported: 1. Static mappings can be described by pairing the "iommu-addresses" property with a "reg" property. This is mostly useful for adopting firmware-allocated buffers via identity mappings. One common use- case where this is required is if early firmware or bootloaders have set up a bootsplash framebuffer that a display controller is actively scanning out from during the operating system boot process. 2. If an "iommu-addresses" property exists without a "reg" property, the reserved-memory node describes an IOVA reservation. Such memory regions are excluded from the IOVA space available to operating system drivers and can be used for regions that must not be used to map arbitrary buffers. Each mapping or reservation is tied to a specific device via a phandle to the device's device tree node. This allows a reserved-memory region to be reused across multiple devices. Bug: 257546262 Reviewed-by: Rob Herring Reviewed-by: Robin Murphy Change-Id: I9cdd29d056896b9cbb9fdbbc0c6cbd824f1be78e Signed-off-by: Thierry Reding Link: https://lore.kernel.org/r/20230120174251.4004100-3-thierry.reding@gmail.com Signed-off-by: Joerg Roedel (cherry picked from commit af0d81357cc558ff40968b4e04131e08ae540127) --- .../reserved-memory/reserved-memory.yaml | 89 ++++++++++++++++++- 1 file changed, 85 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml index 44f72bcf1782..010219138858 100644 --- a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml +++ b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml @@ -52,6 +52,30 @@ properties: Address and Length pairs. Specifies regions of memory that are acceptable to allocate from. + iommu-addresses: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: > + A list of phandle and specifier pairs that describe static IO virtual + address space mappings and carveouts associated with a given reserved + memory region. The phandle in the first cell refers to the device for + which the mapping or carveout is to be created. + + The specifier consists of an address/size pair and denotes the IO + virtual address range of the region for the given device. The exact + format depends on the values of the "#address-cells" and "#size-cells" + properties of the device referenced via the phandle. + + When used in combination with a "reg" property, an IOVA mapping is to + be established for this memory region. One example where this can be + useful is to create an identity mapping for physical memory that the + firmware has configured some hardware to access (such as a bootsplash + framebuffer). + + If no "reg" property is specified, the "iommu-addresses" property + defines carveout regions in the IOVA space for the given device. This + can be useful if a certain memory region should not be mapped through + the IOMMU. + no-map: type: boolean description: > @@ -89,12 +113,69 @@ allOf: - no-map oneOf: - - required: - - reg + - oneOf: + - required: + - reg - - required: - - size + - required: + - size + + - oneOf: + # IOMMU reservations + - required: + - iommu-addresses + + # IOMMU mappings + - required: + - reg + - iommu-addresses additionalProperties: true +examples: + - | + / { + compatible = "foo"; + model = "foo"; + + #address-cells = <2>; + #size-cells = <2>; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + adsp_resv: reservation-adsp { + /* + * Restrict IOVA mappings for ADSP buffers to the 512 MiB region + * from 0x40000000 - 0x5fffffff. Anything outside is reserved by + * the ADSP for I/O memory and private memory allocations. + */ + iommu-addresses = <&adsp 0x0 0x00000000 0x00 0x40000000>, + <&adsp 0x0 0x60000000 0xff 0xa0000000>; + }; + + fb: framebuffer@90000000 { + reg = <0x0 0x90000000 0x0 0x00800000>; + iommu-addresses = <&dc0 0x0 0x90000000 0x0 0x00800000>; + }; + }; + + bus@0 { + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x0 0x0 0x40000000>; + + adsp: adsp@2990000 { + reg = <0x2990000 0x2000>; + memory-region = <&adsp_resv>; + }; + + dc0: display@15200000 { + reg = <0x15200000 0x10000>; + memory-region = <&fb>; + }; + }; + }; ... From 693c7129670b89eca1acec4b1f347880dd207ee0 Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Fri, 20 Jan 2023 18:42:50 +0100 Subject: [PATCH 17/99] UPSTREAM: iommu: Implement of_iommu_get_resv_regions() This is an implementation that IOMMU drivers can use to obtain reserved memory regions from a device tree node. It uses the reserved-memory DT bindings to find the regions associated with a given device. If these regions are marked accordingly, identity mappings will be created for them in the IOMMU domain that the devices will be attached to. Bug: 257546262 Cc: Frank Rowand Cc: devicetree@vger.kernel.org Reviewed-by: Rob Herring Acked-by: Robin Murphy Change-Id: I68367e556cfd822a5802d7ff579f6dc12f54f6a6 Signed-off-by: Thierry Reding Link: https://lore.kernel.org/r/20230120174251.4004100-4-thierry.reding@gmail.com Signed-off-by: Joerg Roedel (cherry picked from commit a5bf3cfce8cb77d9d24613ab52d520896f83dd48) --- drivers/iommu/of_iommu.c | 94 ++++++++++++++++++++++++++++++++++++++++ include/linux/of_iommu.h | 8 ++++ 2 files changed, 102 insertions(+) diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c index 5696314ae69e..fa7c63a4abbf 100644 --- a/drivers/iommu/of_iommu.c +++ b/drivers/iommu/of_iommu.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -172,3 +173,96 @@ const struct iommu_ops *of_iommu_configure(struct device *dev, return ops; } + +static enum iommu_resv_type iommu_resv_region_get_type(struct device *dev, struct resource *phys, + phys_addr_t start, size_t length) +{ + phys_addr_t end = start + length - 1; + + /* + * IOMMU regions without an associated physical region cannot be + * mapped and are simply reservations. + */ + if (phys->start >= phys->end) + return IOMMU_RESV_RESERVED; + + /* may be IOMMU_RESV_DIRECT_RELAXABLE for certain cases */ + if (start == phys->start && end == phys->end) + return IOMMU_RESV_DIRECT; + + dev_warn(dev, "treating non-direct mapping [%pr] -> [%pap-%pap] as reservation\n", &phys, + &start, &end); + return IOMMU_RESV_RESERVED; +} + +/** + * of_iommu_get_resv_regions - reserved region driver helper for device tree + * @dev: device for which to get reserved regions + * @list: reserved region list + * + * IOMMU drivers can use this to implement their .get_resv_regions() callback + * for memory regions attached to a device tree node. See the reserved-memory + * device tree bindings on how to use these: + * + * Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt + */ +void of_iommu_get_resv_regions(struct device *dev, struct list_head *list) +{ +#if IS_ENABLED(CONFIG_OF_ADDRESS) + struct of_phandle_iterator it; + int err; + + of_for_each_phandle(&it, err, dev->of_node, "memory-region", NULL, 0) { + const __be32 *maps, *end; + struct resource phys; + int size; + + memset(&phys, 0, sizeof(phys)); + + /* + * The "reg" property is optional and can be omitted by reserved-memory regions + * that represent reservations in the IOVA space, which are regions that should + * not be mapped. + */ + if (of_find_property(it.node, "reg", NULL)) { + err = of_address_to_resource(it.node, 0, &phys); + if (err < 0) { + dev_err(dev, "failed to parse memory region %pOF: %d\n", + it.node, err); + continue; + } + } + + maps = of_get_property(it.node, "iommu-addresses", &size); + if (!maps) + continue; + + end = maps + size / sizeof(__be32); + + while (maps < end) { + struct device_node *np; + u32 phandle; + + phandle = be32_to_cpup(maps++); + np = of_find_node_by_phandle(phandle); + + if (np == dev->of_node) { + int prot = IOMMU_READ | IOMMU_WRITE; + struct iommu_resv_region *region; + enum iommu_resv_type type; + phys_addr_t iova; + size_t length; + + maps = of_translate_dma_region(np, maps, &iova, &length); + type = iommu_resv_region_get_type(dev, &phys, iova, length); + + region = iommu_alloc_resv_region(iova, length, prot, type, + GFP_KERNEL); + if (region) + list_add_tail(®ion->list, list); + } + } + } +#endif +} +EXPORT_SYMBOL(of_iommu_get_resv_regions); diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h index 55c1eb300a86..9a5e6b410dd2 100644 --- a/include/linux/of_iommu.h +++ b/include/linux/of_iommu.h @@ -12,6 +12,9 @@ extern const struct iommu_ops *of_iommu_configure(struct device *dev, struct device_node *master_np, const u32 *id); +extern void of_iommu_get_resv_regions(struct device *dev, + struct list_head *list); + #else static inline const struct iommu_ops *of_iommu_configure(struct device *dev, @@ -21,6 +24,11 @@ static inline const struct iommu_ops *of_iommu_configure(struct device *dev, return NULL; } +static inline void of_iommu_get_resv_regions(struct device *dev, + struct list_head *list) +{ +} + #endif /* CONFIG_OF_IOMMU */ #endif /* __OF_IOMMU_H */ From a032fbc776be8271b3f99994541a11a6b8aab030 Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Fri, 20 Jan 2023 18:42:51 +0100 Subject: [PATCH 18/99] UPSTREAM: iommu: dma: Use of_iommu_get_resv_regions() For device tree nodes, use the standard of_iommu_get_resv_regions() implementation to obtain the reserved memory regions associated with a device. Bug: 257546262 Cc: Rob Herring Cc: Frank Rowand Cc: devicetree@vger.kernel.org Acked-by: Robin Murphy Change-Id: I142fa2ef8639b604701f8d0bc70429288a5e8491 Signed-off-by: Thierry Reding Link: https://lore.kernel.org/r/20230120174251.4004100-5-thierry.reding@gmail.com Signed-off-by: Joerg Roedel (cherry picked from commit 5cef282e295f7cf623672470d040716d1e3eacf2) --- drivers/iommu/dma-iommu.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index c9bdec523454..89c2c55aa690 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -392,6 +393,8 @@ void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list) if (!is_of_node(dev_iommu_fwspec_get(dev)->iommu_fwnode)) iort_iommu_get_resv_regions(dev, list); + if (dev->of_node) + of_iommu_get_resv_regions(dev, list); } EXPORT_SYMBOL(iommu_dma_get_resv_regions); From d8f69aade52a20fcd2cb1c93f4a98badf23cf05c Mon Sep 17 00:00:00 2001 From: Randy Dunlap Date: Wed, 8 Feb 2023 17:03:59 -0800 Subject: [PATCH 19/99] UPSTREAM: iommu/of: mark an unused function as __maybe_unused When CONFIG_OF_ADDRESS is not set, there is a build warning/error about an unused function. Annotate the function to quieten the warning/error. ../drivers/iommu/of_iommu.c:176:29: warning: 'iommu_resv_region_get_type' defined but not used [-Wunused-function] 176 | static enum iommu_resv_type iommu_resv_region_get_type(struct device *dev, struct resource *phys, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ Bug: 257546262 Fixes: a5bf3cfce8cb ("iommu: Implement of_iommu_get_resv_regions()") Change-Id: Ice815df046c06efa7351351e3886e925c27ca57f Signed-off-by: Randy Dunlap Cc: Thierry Reding Cc: Joerg Roedel Cc: Will Deacon Cc: iommu@lists.linux.dev Reviewed-by: Thierry Reding Link: https://lore.kernel.org/r/20230209010359.23831-1-rdunlap@infradead.org [joro: Improve code formatting] Signed-off-by: Joerg Roedel (cherry picked from commit 4762315d1c971312d55848fdc85eee7f0b09c8f2) --- drivers/iommu/of_iommu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c index fa7c63a4abbf..da271c5596fb 100644 --- a/drivers/iommu/of_iommu.c +++ b/drivers/iommu/of_iommu.c @@ -174,8 +174,10 @@ const struct iommu_ops *of_iommu_configure(struct device *dev, return ops; } -static enum iommu_resv_type iommu_resv_region_get_type(struct device *dev, struct resource *phys, - phys_addr_t start, size_t length) +static enum iommu_resv_type __maybe_unused +iommu_resv_region_get_type(struct device *dev, + struct resource *phys, + phys_addr_t start, size_t length) { phys_addr_t end = start + length - 1; From 40b46d8656d39252decf1420faddcf0eaaeb429d Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Wed, 5 Jul 2023 18:05:35 -0300 Subject: [PATCH 20/99] UPSTREAM: netfilter: nf_tables: prevent OOB access in nft_byteorder_eval commit caf3ef7468f7534771b5c44cd8dbd6f7f87c2cbd upstream. When evaluating byteorder expressions with size 2, a union with 32-bit and 16-bit members is used. Since the 16-bit members are aligned to 32-bit, the array accesses will be out-of-bounds. It may lead to a stack-out-of-bounds access like the one below: [ 23.095215] ================================================================== [ 23.095625] BUG: KASAN: stack-out-of-bounds in nft_byteorder_eval+0x13c/0x320 [ 23.096020] Read of size 2 at addr ffffc90000007948 by task ping/115 [ 23.096358] [ 23.096456] CPU: 0 PID: 115 Comm: ping Not tainted 6.4.0+ #413 [ 23.096770] Call Trace: [ 23.096910] [ 23.097030] dump_stack_lvl+0x60/0xc0 [ 23.097218] print_report+0xcf/0x630 [ 23.097388] ? nft_byteorder_eval+0x13c/0x320 [ 23.097577] ? kasan_addr_to_slab+0xd/0xc0 [ 23.097760] ? nft_byteorder_eval+0x13c/0x320 [ 23.097949] kasan_report+0xc9/0x110 [ 23.098106] ? nft_byteorder_eval+0x13c/0x320 [ 23.098298] __asan_load2+0x83/0xd0 [ 23.098453] nft_byteorder_eval+0x13c/0x320 [ 23.098659] nft_do_chain+0x1c8/0xc50 [ 23.098852] ? __pfx_nft_do_chain+0x10/0x10 [ 23.099078] ? __kasan_check_read+0x11/0x20 [ 23.099295] ? __pfx___lock_acquire+0x10/0x10 [ 23.099535] ? __pfx___lock_acquire+0x10/0x10 [ 23.099745] ? __kasan_check_read+0x11/0x20 [ 23.099929] nft_do_chain_ipv4+0xfe/0x140 [ 23.100105] ? __pfx_nft_do_chain_ipv4+0x10/0x10 [ 23.100327] ? lock_release+0x204/0x400 [ 23.100515] ? nf_hook.constprop.0+0x340/0x550 [ 23.100779] nf_hook_slow+0x6c/0x100 [ 23.100977] ? __pfx_nft_do_chain_ipv4+0x10/0x10 [ 23.101223] nf_hook.constprop.0+0x334/0x550 [ 23.101443] ? __pfx_ip_local_deliver_finish+0x10/0x10 [ 23.101677] ? __pfx_nf_hook.constprop.0+0x10/0x10 [ 23.101882] ? __pfx_ip_rcv_finish+0x10/0x10 [ 23.102071] ? __pfx_ip_local_deliver_finish+0x10/0x10 [ 23.102291] ? rcu_read_lock_held+0x4b/0x70 [ 23.102481] ip_local_deliver+0xbb/0x110 [ 23.102665] ? __pfx_ip_rcv+0x10/0x10 [ 23.102839] ip_rcv+0x199/0x2a0 [ 23.102980] ? __pfx_ip_rcv+0x10/0x10 [ 23.103140] __netif_receive_skb_one_core+0x13e/0x150 [ 23.103362] ? __pfx___netif_receive_skb_one_core+0x10/0x10 [ 23.103647] ? mark_held_locks+0x48/0xa0 [ 23.103819] ? process_backlog+0x36c/0x380 [ 23.103999] __netif_receive_skb+0x23/0xc0 [ 23.104179] process_backlog+0x91/0x380 [ 23.104350] __napi_poll.constprop.0+0x66/0x360 [ 23.104589] ? net_rx_action+0x1cb/0x610 [ 23.104811] net_rx_action+0x33e/0x610 [ 23.105024] ? _raw_spin_unlock+0x23/0x50 [ 23.105257] ? __pfx_net_rx_action+0x10/0x10 [ 23.105485] ? mark_held_locks+0x48/0xa0 [ 23.105741] __do_softirq+0xfa/0x5ab [ 23.105956] ? __dev_queue_xmit+0x765/0x1c00 [ 23.106193] do_softirq.part.0+0x49/0xc0 [ 23.106423] [ 23.106547] [ 23.106670] __local_bh_enable_ip+0xf5/0x120 [ 23.106903] __dev_queue_xmit+0x789/0x1c00 [ 23.107131] ? __pfx___dev_queue_xmit+0x10/0x10 [ 23.107381] ? find_held_lock+0x8e/0xb0 [ 23.107585] ? lock_release+0x204/0x400 [ 23.107798] ? neigh_resolve_output+0x185/0x350 [ 23.108049] ? mark_held_locks+0x48/0xa0 [ 23.108265] ? neigh_resolve_output+0x185/0x350 [ 23.108514] neigh_resolve_output+0x246/0x350 [ 23.108753] ? neigh_resolve_output+0x246/0x350 [ 23.109003] ip_finish_output2+0x3c3/0x10b0 [ 23.109250] ? __pfx_ip_finish_output2+0x10/0x10 [ 23.109510] ? __pfx_nf_hook+0x10/0x10 [ 23.109732] __ip_finish_output+0x217/0x390 [ 23.109978] ip_finish_output+0x2f/0x130 [ 23.110207] ip_output+0xc9/0x170 [ 23.110404] ip_push_pending_frames+0x1a0/0x240 [ 23.110652] raw_sendmsg+0x102e/0x19e0 [ 23.110871] ? __pfx_raw_sendmsg+0x10/0x10 [ 23.111093] ? lock_release+0x204/0x400 [ 23.111304] ? __mod_lruvec_page_state+0x148/0x330 [ 23.111567] ? find_held_lock+0x8e/0xb0 [ 23.111777] ? find_held_lock+0x8e/0xb0 [ 23.111993] ? __rcu_read_unlock+0x7c/0x2f0 [ 23.112225] ? aa_sk_perm+0x18a/0x550 [ 23.112431] ? filemap_map_pages+0x4f1/0x900 [ 23.112665] ? __pfx_aa_sk_perm+0x10/0x10 [ 23.112880] ? find_held_lock+0x8e/0xb0 [ 23.113098] inet_sendmsg+0xa0/0xb0 [ 23.113297] ? inet_sendmsg+0xa0/0xb0 [ 23.113500] ? __pfx_inet_sendmsg+0x10/0x10 [ 23.113727] sock_sendmsg+0xf4/0x100 [ 23.113924] ? move_addr_to_kernel.part.0+0x4f/0xa0 [ 23.114190] __sys_sendto+0x1d4/0x290 [ 23.114391] ? __pfx___sys_sendto+0x10/0x10 [ 23.114621] ? __pfx_mark_lock.part.0+0x10/0x10 [ 23.114869] ? lock_release+0x204/0x400 [ 23.115076] ? find_held_lock+0x8e/0xb0 [ 23.115287] ? rcu_is_watching+0x23/0x60 [ 23.115503] ? __rseq_handle_notify_resume+0x6e2/0x860 [ 23.115778] ? __kasan_check_write+0x14/0x30 [ 23.116008] ? blkcg_maybe_throttle_current+0x8d/0x770 [ 23.116285] ? mark_held_locks+0x28/0xa0 [ 23.116503] ? do_syscall_64+0x37/0x90 [ 23.116713] __x64_sys_sendto+0x7f/0xb0 [ 23.116924] do_syscall_64+0x59/0x90 [ 23.117123] ? irqentry_exit_to_user_mode+0x25/0x30 [ 23.117387] ? irqentry_exit+0x77/0xb0 [ 23.117593] ? exc_page_fault+0x92/0x140 [ 23.117806] entry_SYSCALL_64_after_hwframe+0x6e/0xd8 [ 23.118081] RIP: 0033:0x7f744aee2bba [ 23.118282] Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 15 b8 2c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 7e c3 0f 1f 44 00 00 41 54 48 83 ec 30 44 89 [ 23.119237] RSP: 002b:00007ffd04a7c9f8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c [ 23.119644] RAX: ffffffffffffffda RBX: 00007ffd04a7e0a0 RCX: 00007f744aee2bba [ 23.120023] RDX: 0000000000000040 RSI: 000056488e9e6300 RDI: 0000000000000003 [ 23.120413] RBP: 000056488e9e6300 R08: 00007ffd04a80320 R09: 0000000000000010 [ 23.120809] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000040 [ 23.121219] R13: 00007ffd04a7dc38 R14: 00007ffd04a7ca00 R15: 00007ffd04a7e0a0 [ 23.121617] [ 23.121749] [ 23.121845] The buggy address belongs to the virtual mapping at [ 23.121845] [ffffc90000000000, ffffc90000009000) created by: [ 23.121845] irq_init_percpu_irqstack+0x1cf/0x270 [ 23.122707] [ 23.122803] The buggy address belongs to the physical page: [ 23.123104] page:0000000072ac19f0 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x24a09 [ 23.123609] flags: 0xfffffc0001000(reserved|node=0|zone=1|lastcpupid=0x1fffff) [ 23.123998] page_type: 0xffffffff() [ 23.124194] raw: 000fffffc0001000 ffffea0000928248 ffffea0000928248 0000000000000000 [ 23.124610] raw: 0000000000000000 0000000000000000 00000001ffffffff 0000000000000000 [ 23.125023] page dumped because: kasan: bad access detected [ 23.125326] [ 23.125421] Memory state around the buggy address: [ 23.125682] ffffc90000007800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 23.126072] ffffc90000007880: 00 00 00 00 00 f1 f1 f1 f1 f1 f1 00 00 f2 f2 00 [ 23.126455] >ffffc90000007900: 00 00 00 00 00 00 00 00 00 f2 f2 f2 f2 00 00 00 [ 23.126840] ^ [ 23.127138] ffffc90000007980: 00 00 00 00 00 00 00 00 00 00 00 00 00 f3 f3 f3 [ 23.127522] ffffc90000007a00: f3 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 [ 23.127906] ================================================================== [ 23.128324] Disabling lock debugging due to kernel taint Using simple s16 pointers for the 16-bit accesses fixes the problem. For the 32-bit accesses, src and dst can be used directly. Bug: 291031528 Fixes: 96518518cc41 ("netfilter: add nftables") Cc: stable@vger.kernel.org Reported-by: Tanguy DUBROCA (@SidewayRE) from @Synacktiv working with ZDI Signed-off-by: Thadeu Lima de Souza Cascardo Reviewed-by: Florian Westphal Signed-off-by: Pablo Neira Ayuso Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 870dcc31c0cf47cb15a568ade4168dc644b3ccfb) Signed-off-by: Lee Jones Change-Id: I4a76c2be021867c923684f0034d4564f7797b48b --- net/netfilter/nft_byteorder.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/net/netfilter/nft_byteorder.c b/net/netfilter/nft_byteorder.c index f952a80275a8..2e2eb2cb17bc 100644 --- a/net/netfilter/nft_byteorder.c +++ b/net/netfilter/nft_byteorder.c @@ -30,11 +30,11 @@ void nft_byteorder_eval(const struct nft_expr *expr, const struct nft_byteorder *priv = nft_expr_priv(expr); u32 *src = ®s->data[priv->sreg]; u32 *dst = ®s->data[priv->dreg]; - union { u32 u32; u16 u16; } *s, *d; + u16 *s16, *d16; unsigned int i; - s = (void *)src; - d = (void *)dst; + s16 = (void *)src; + d16 = (void *)dst; switch (priv->size) { case 8: { @@ -62,11 +62,11 @@ void nft_byteorder_eval(const struct nft_expr *expr, switch (priv->op) { case NFT_BYTEORDER_NTOH: for (i = 0; i < priv->len / 4; i++) - d[i].u32 = ntohl((__force __be32)s[i].u32); + dst[i] = ntohl((__force __be32)src[i]); break; case NFT_BYTEORDER_HTON: for (i = 0; i < priv->len / 4; i++) - d[i].u32 = (__force __u32)htonl(s[i].u32); + dst[i] = (__force __u32)htonl(src[i]); break; } break; @@ -74,11 +74,11 @@ void nft_byteorder_eval(const struct nft_expr *expr, switch (priv->op) { case NFT_BYTEORDER_NTOH: for (i = 0; i < priv->len / 2; i++) - d[i].u16 = ntohs((__force __be16)s[i].u16); + d16[i] = ntohs((__force __be16)s16[i]); break; case NFT_BYTEORDER_HTON: for (i = 0; i < priv->len / 2; i++) - d[i].u16 = (__force __u16)htons(s[i].u16); + d16[i] = (__force __u16)htons(s16[i]); break; } break; From 1e4c6e50488d22217af0fbe08c49213743db0b87 Mon Sep 17 00:00:00 2001 From: Yi Yang Date: Fri, 11 Aug 2023 11:11:21 +0800 Subject: [PATCH 21/99] UPSTREAM: tty: n_gsm: fix the UAF caused by race condition in gsm_cleanup_mux commit 3c4f8333b582487a2d1e02171f1465531cde53e3 upstream. In commit 9b9c8195f3f0 ("tty: n_gsm: fix UAF in gsm_cleanup_mux"), the UAF problem is not completely fixed. There is a race condition in gsm_cleanup_mux(), which caused this UAF. The UAF problem is triggered by the following race: task[5046] task[5054] ----------------------- ----------------------- gsm_cleanup_mux(); dlci = gsm->dlci[0]; mutex_lock(&gsm->mutex); gsm_cleanup_mux(); dlci = gsm->dlci[0]; //Didn't take the lock gsm_dlci_release(gsm->dlci[i]); gsm->dlci[i] = NULL; mutex_unlock(&gsm->mutex); mutex_lock(&gsm->mutex); dlci->dead = true; //UAF Fix it by assigning values after mutex_lock(). Bug: 291178675 Link: https://syzkaller.appspot.com/text?tag=CrashReport&x=176188b5a80000 Cc: stable Fixes: 9b9c8195f3f0 ("tty: n_gsm: fix UAF in gsm_cleanup_mux") Fixes: aa371e96f05d ("tty: n_gsm: fix restart handling via CLD command") Signed-off-by: Yi Yang Co-developed-by: Qiumiao Zhang Signed-off-by: Qiumiao Zhang Link: https://lore.kernel.org/r/20230811031121.153237-1-yiyang13@huawei.com Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 31311a9a4baae0ad47c85e448af21b2120344ff0) Signed-off-by: Lee Jones Change-Id: I460a0f21f4121531d7732e09643a451382dfa2da --- drivers/tty/n_gsm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index 59a559366b61..c1fa20a4e342 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -2481,12 +2481,13 @@ static void gsm_error(struct gsm_mux *gsm) static void gsm_cleanup_mux(struct gsm_mux *gsm, bool disc) { int i; - struct gsm_dlci *dlci = gsm->dlci[0]; + struct gsm_dlci *dlci; struct gsm_msg *txq, *ntxq; gsm->dead = true; mutex_lock(&gsm->mutex); + dlci = gsm->dlci[0]; if (dlci) { if (disc && dlci->state != DLCI_CLOSED) { gsm_dlci_begin_close(dlci); From 8465ef2b4f5b8bd6a31a2835481f7bd19a7caa9f Mon Sep 17 00:00:00 2001 From: steve2_yang Date: Wed, 20 Sep 2023 19:03:49 +0800 Subject: [PATCH 22/99] ANDROID: GKI: Update symbol list for ASUS 3 symbol(s) added hid_hw_output_report hid_hw_open hid_hw_close Bug: 301210579 Change-Id: Idd91bc728f0a7d4f4333862fc4974187caf921c9 Signed-off-by: Steve2 Yang --- android/abi_gki_aarch64_asus | 3 +++ 1 file changed, 3 insertions(+) diff --git a/android/abi_gki_aarch64_asus b/android/abi_gki_aarch64_asus index 4236b195170d..98ab875a5b2a 100644 --- a/android/abi_gki_aarch64_asus +++ b/android/abi_gki_aarch64_asus @@ -6,3 +6,6 @@ hid_hw_start hid_hw_stop __hid_register_driver + hid_hw_output_report + hid_hw_open + hid_hw_close From b52b33e91249841e07540aab76abe329a5f5a18e Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 2 Jun 2023 10:42:53 +0200 Subject: [PATCH 23/99] UPSTREAM: sched: Unconditionally use full-fat wait_task_inactive() While modifying wait_task_inactive() for PREEMPT_RT; the build robot noted that UP got broken. This led to audit and consideration of the UP implementation of wait_task_inactive(). It looks like the UP implementation is also broken for PREEMPT; consider task_current_syscall() getting preempted between the two calls to wait_task_inactive(). Therefore move the wait_task_inactive() implementation out of CONFIG_SMP and unconditionally use it. Signed-off-by: Peter Zijlstra (Intel) Link: https://lkml.kernel.org/r/20230602103731.GA630648%40hirez.programming.kicks-ass.net (cherry picked from commit d5e1586617be7093ea3419e3fa9387ed833cdbb1) Bug: 292064955 Change-Id: Ief91cf48c27533fee47d5bd049c8a9be4010e6f6 Signed-off-by: Elliot Berman --- include/linux/sched.h | 7 +- kernel/sched/core.c | 216 +++++++++++++++++++++--------------------- 2 files changed, 110 insertions(+), 113 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 19a43aa5a021..431cb079f6a9 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2029,15 +2029,12 @@ static __always_inline void scheduler_ipi(void) */ preempt_fold_need_resched(); } -extern unsigned long wait_task_inactive(struct task_struct *, unsigned int match_state); #else static inline void scheduler_ipi(void) { } -static inline unsigned long wait_task_inactive(struct task_struct *p, unsigned int match_state) -{ - return 1; -} #endif +extern unsigned long wait_task_inactive(struct task_struct *, unsigned int match_state); + /* * Set thread flags in other task's structures. * See asm/thread_info.h for TIF_xxxx flags available: diff --git a/kernel/sched/core.c b/kernel/sched/core.c index f27338be5f24..76b9e18af579 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2249,6 +2249,114 @@ void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags) } EXPORT_SYMBOL_GPL(check_preempt_curr); +/* + * wait_task_inactive - wait for a thread to unschedule. + * + * Wait for the thread to block in any of the states set in @match_state. + * If it changes, i.e. @p might have woken up, then return zero. When we + * succeed in waiting for @p to be off its CPU, we return a positive number + * (its total switch count). If a second call a short while later returns the + * same number, the caller can be sure that @p has remained unscheduled the + * whole time. + * + * The caller must ensure that the task *will* unschedule sometime soon, + * else this function might spin for a *long* time. This function can't + * be called with interrupts off, or it may introduce deadlock with + * smp_call_function() if an IPI is sent by the same process we are + * waiting to become inactive. + */ +unsigned long wait_task_inactive(struct task_struct *p, unsigned int match_state) +{ + int running, queued; + struct rq_flags rf; + unsigned long ncsw; + struct rq *rq; + + for (;;) { + /* + * We do the initial early heuristics without holding + * any task-queue locks at all. We'll only try to get + * the runqueue lock when things look like they will + * work out! + */ + rq = task_rq(p); + + /* + * If the task is actively running on another CPU + * still, just relax and busy-wait without holding + * any locks. + * + * NOTE! Since we don't hold any locks, it's not + * even sure that "rq" stays as the right runqueue! + * But we don't care, since "task_on_cpu()" will + * return false if the runqueue has changed and p + * is actually now running somewhere else! + */ + while (task_on_cpu(rq, p)) { + if (!(READ_ONCE(p->__state) & match_state)) + return 0; + cpu_relax(); + } + + /* + * Ok, time to look more closely! We need the rq + * lock now, to be *sure*. If we're wrong, we'll + * just go back and repeat. + */ + rq = task_rq_lock(p, &rf); + trace_sched_wait_task(p); + running = task_on_cpu(rq, p); + queued = task_on_rq_queued(p); + ncsw = 0; + if (READ_ONCE(p->__state) & match_state) + ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ + task_rq_unlock(rq, p, &rf); + + /* + * If it changed from the expected state, bail out now. + */ + if (unlikely(!ncsw)) + break; + + /* + * Was it really running after all now that we + * checked with the proper locks actually held? + * + * Oops. Go back and try again.. + */ + if (unlikely(running)) { + cpu_relax(); + continue; + } + + /* + * It's not enough that it's not actively running, + * it must be off the runqueue _entirely_, and not + * preempted! + * + * So if it was still runnable (but just not actively + * running right now), it's preempted, and we should + * yield - it could be a while. + */ + if (unlikely(queued)) { + ktime_t to = NSEC_PER_SEC / HZ; + + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_hrtimeout(&to, HRTIMER_MODE_REL_HARD); + continue; + } + + /* + * Ahh, all good. It wasn't running, and it wasn't + * runnable, which means that it will never become + * running in the future either. We're all done! + */ + break; + } + + return ncsw; +} + #ifdef CONFIG_SMP static void @@ -3363,114 +3471,6 @@ out: } EXPORT_SYMBOL_GPL(migrate_swap); -/* - * wait_task_inactive - wait for a thread to unschedule. - * - * Wait for the thread to block in any of the states set in @match_state. - * If it changes, i.e. @p might have woken up, then return zero. When we - * succeed in waiting for @p to be off its CPU, we return a positive number - * (its total switch count). If a second call a short while later returns the - * same number, the caller can be sure that @p has remained unscheduled the - * whole time. - * - * The caller must ensure that the task *will* unschedule sometime soon, - * else this function might spin for a *long* time. This function can't - * be called with interrupts off, or it may introduce deadlock with - * smp_call_function() if an IPI is sent by the same process we are - * waiting to become inactive. - */ -unsigned long wait_task_inactive(struct task_struct *p, unsigned int match_state) -{ - int running, queued; - struct rq_flags rf; - unsigned long ncsw; - struct rq *rq; - - for (;;) { - /* - * We do the initial early heuristics without holding - * any task-queue locks at all. We'll only try to get - * the runqueue lock when things look like they will - * work out! - */ - rq = task_rq(p); - - /* - * If the task is actively running on another CPU - * still, just relax and busy-wait without holding - * any locks. - * - * NOTE! Since we don't hold any locks, it's not - * even sure that "rq" stays as the right runqueue! - * But we don't care, since "task_on_cpu()" will - * return false if the runqueue has changed and p - * is actually now running somewhere else! - */ - while (task_on_cpu(rq, p)) { - if (!(READ_ONCE(p->__state) & match_state)) - return 0; - cpu_relax(); - } - - /* - * Ok, time to look more closely! We need the rq - * lock now, to be *sure*. If we're wrong, we'll - * just go back and repeat. - */ - rq = task_rq_lock(p, &rf); - trace_sched_wait_task(p); - running = task_on_cpu(rq, p); - queued = task_on_rq_queued(p); - ncsw = 0; - if (READ_ONCE(p->__state) & match_state) - ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ - task_rq_unlock(rq, p, &rf); - - /* - * If it changed from the expected state, bail out now. - */ - if (unlikely(!ncsw)) - break; - - /* - * Was it really running after all now that we - * checked with the proper locks actually held? - * - * Oops. Go back and try again.. - */ - if (unlikely(running)) { - cpu_relax(); - continue; - } - - /* - * It's not enough that it's not actively running, - * it must be off the runqueue _entirely_, and not - * preempted! - * - * So if it was still runnable (but just not actively - * running right now), it's preempted, and we should - * yield - it could be a while. - */ - if (unlikely(queued)) { - ktime_t to = NSEC_PER_SEC / HZ; - - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_hrtimeout(&to, HRTIMER_MODE_REL_HARD); - continue; - } - - /* - * Ahh, all good. It wasn't running, and it wasn't - * runnable, which means that it will never become - * running in the future either. We're all done! - */ - break; - } - - return ncsw; -} - /*** * kick_process - kick a running thread to enter/exit the kernel * @p: the to-be-kicked thread From ac9005946aec30cb976c451c227899560b02cc37 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Wed, 31 May 2023 16:39:07 +0200 Subject: [PATCH 24/99] UPSTREAM: sched: Consider task_struct::saved_state in wait_task_inactive() With the introduction of task_struct::saved_state in commit 5f220be21418 ("sched/wakeup: Prepare for RT sleeping spin/rwlocks") matching the task state has gotten more complicated. That same commit changed try_to_wake_up() to consider both states, but wait_task_inactive() has been neglected. Sebastian noted that the wait_task_inactive() usage in ptrace_check_attach() can misbehave when ptrace_stop() is blocked on the tasklist_lock after it sets TASK_TRACED. Therefore extract a common helper from ttwu_state_match() and use that to teach wait_task_inactive() about the PREEMPT_RT locks. Originally-by: Sebastian Andrzej Siewior Signed-off-by: Peter Zijlstra (Intel) Tested-by: Sebastian Andrzej Siewior Link: https://lkml.kernel.org/r/20230601091234.GW83892@hirez.programming.kicks-ass.net (cherry picked from commit 1c06918788e8ae6e69e4381a2806617312922524) Bug: 292064955 Change-Id: I2cc02dfdf3c04be146078f80d09c3a87979d79a6 Signed-off-by: Elliot Berman --- kernel/sched/core.c | 59 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 76b9e18af579..c033651150cc 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2249,6 +2249,39 @@ void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags) } EXPORT_SYMBOL_GPL(check_preempt_curr); +static __always_inline +int __task_state_match(struct task_struct *p, unsigned int state) +{ + if (READ_ONCE(p->__state) & state) + return 1; + +#ifdef CONFIG_PREEMPT_RT + if (READ_ONCE(p->saved_state) & state) + return -1; +#endif + return 0; +} + +static __always_inline +int task_state_match(struct task_struct *p, unsigned int state) +{ +#ifdef CONFIG_PREEMPT_RT + int match; + + /* + * Serialize against current_save_and_set_rtlock_wait_state() and + * current_restore_rtlock_saved_state(). + */ + raw_spin_lock_irq(&p->pi_lock); + match = __task_state_match(p, state); + raw_spin_unlock_irq(&p->pi_lock); + + return match; +#else + return __task_state_match(p, state); +#endif +} + /* * wait_task_inactive - wait for a thread to unschedule. * @@ -2267,7 +2300,7 @@ EXPORT_SYMBOL_GPL(check_preempt_curr); */ unsigned long wait_task_inactive(struct task_struct *p, unsigned int match_state) { - int running, queued; + int running, queued, match; struct rq_flags rf; unsigned long ncsw; struct rq *rq; @@ -2293,7 +2326,7 @@ unsigned long wait_task_inactive(struct task_struct *p, unsigned int match_state * is actually now running somewhere else! */ while (task_on_cpu(rq, p)) { - if (!(READ_ONCE(p->__state) & match_state)) + if (!task_state_match(p, match_state)) return 0; cpu_relax(); } @@ -2308,8 +2341,15 @@ unsigned long wait_task_inactive(struct task_struct *p, unsigned int match_state running = task_on_cpu(rq, p); queued = task_on_rq_queued(p); ncsw = 0; - if (READ_ONCE(p->__state) & match_state) + if ((match = __task_state_match(p, match_state))) { + /* + * When matching on p->saved_state, consider this task + * still queued so it will wait. + */ + if (match < 0) + queued = 1; ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ + } task_rq_unlock(rq, p, &rf); /* @@ -4019,15 +4059,14 @@ static void ttwu_queue(struct task_struct *p, int cpu, int wake_flags) static __always_inline bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success) { + int match; + if (IS_ENABLED(CONFIG_DEBUG_PREEMPT)) { WARN_ON_ONCE((state & TASK_RTLOCK_WAIT) && state != TASK_RTLOCK_WAIT); } - if (READ_ONCE(p->__state) & state) { - *success = 1; - return true; - } + *success = !!(match = __task_state_match(p, state)); #ifdef CONFIG_PREEMPT_RT /* @@ -4043,12 +4082,10 @@ bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success) * p::saved_state to TASK_RUNNING so any further tests will * not result in false positives vs. @success */ - if (p->saved_state & state) { + if (match < 0) p->saved_state = TASK_RUNNING; - *success = 1; - } #endif - return false; + return match > 0; } /* From 2f2c0354534c09222f7eb9b7c063dc6fdb01a006 Mon Sep 17 00:00:00 2001 From: Kuen-Han Tsai Date: Fri, 2 Jun 2023 15:00:06 +0800 Subject: [PATCH 25/99] UPSTREAM: usb: gadget: u_serial: Add null pointer check in gs_start_io If gs_close has cleared port->port.tty and gs_start_io is called afterwards, then the function tty_wakeup will attempt to access the value of the pointer port->port.tty which will cause a null pointer dereference error. To avoid this, add a null pointer check to gs_start_io before attempting to access the value of the pointer port->port.tty. Signed-off-by: Kuen-Han Tsai Message-ID: <20230602070009.1353946-1-khtsai@google.com> Signed-off-by: Greg Kroah-Hartman Bug: 283247551 (cherry picked from commit ffd603f214237e250271162a5b325c6199a65382) Change-Id: I782ef328b0d49810d3fb23c002a86439e6728542 Signed-off-by: Kuen-Han Tsai (cherry picked from commit ca0cd377615866a0253c6e495f99fad57bbaab86) --- drivers/usb/gadget/function/u_serial.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c index db6fd0238d4b..0c429f25d0ac 100644 --- a/drivers/usb/gadget/function/u_serial.c +++ b/drivers/usb/gadget/function/u_serial.c @@ -538,16 +538,20 @@ static int gs_alloc_requests(struct usb_ep *ep, struct list_head *head, static int gs_start_io(struct gs_port *port) { struct list_head *head = &port->read_pool; - struct usb_ep *ep = port->port_usb->out; + struct usb_ep *ep; int status; unsigned started; + if (!port->port_usb || !port->port.tty) + return -EIO; + /* Allocate RX and TX I/O buffers. We can't easily do this much * earlier (with GFP_KERNEL) because the requests are coupled to * endpoints, as are the packet sizes we'll be using. Different * configurations may use different endpoints with a given port; * and high speed vs full speed changes packet sizes too. */ + ep = port->port_usb->out; status = gs_alloc_requests(ep, head, gs_read_complete, &port->read_allocated); if (status) From 66251331379fcfadfea33cb48b7051ad83cce511 Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Wed, 20 Sep 2023 14:08:41 +0100 Subject: [PATCH 26/99] ANDROID: KVM: arm64: Don't force pte mappings in [n]VHE guest stage-2 Commit d096d35445d7 ("ANDROID: KVM: arm64: Have different callbacks for PTE manipulation") accidentally forces the use of pte-level mappings for the guest stage-2 page-table when not using pKVM. This confuses user_mem_abort() when the guest takes a permission fault trying to execute from a huge page. Since the fault is reported at the pte-level, we end up handling it as a translation fault by calling kvm_pgtable_stage2_map() which dutifully returns -EAGAIN when it finds the RW PTE. Consequently, the guest appears to hang randomly during boot. Fix the issue by inverting stage2_force_pte_cb() so that the host is in complete control of the mapping granularity of the guest when pKVM is not being used. Cc: Fuad Tabba Cc: Mostafa Saleh Fixes: d096d35445d7 ("ANDROID: KVM: arm64: Have different callbacks for PTE manipulation") Signed-off-by: Will Deacon Bug: 222044487 Change-Id: Ideab281ae6d1d5c0fd29fba03ad8ed1cae521a1e --- arch/arm64/kvm/mmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index 6259a72812e9..8d4d1374012a 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -701,7 +701,7 @@ static int get_user_mapping_size(struct kvm *kvm, u64 addr) static bool stage2_force_pte_cb(u64 addr, u64 end, enum kvm_pgtable_prot prot) { - return true; + return false; } static bool stage2_pte_is_counted(kvm_pte_t pte, u32 level) From 9290fc3e8d0822b3c5ad721ddeb13a0c74f3d00b Mon Sep 17 00:00:00 2001 From: Saravana Kannan Date: Thu, 14 Sep 2023 18:10:14 -0700 Subject: [PATCH 27/99] ANDROID: Flush deferred probe list before dropping host priv Some IOMMU devices might be deferred after the driver being loaded early, so we need to flush the deferred probe list, this will work if all dependencies already exist. Bug: 290582379 Change-Id: I5fb3af9b0f7d1b4dbf57078707112dfdb8a3dc23 Signed-off-by: Saravana Kannan Signed-off-by: Mostafa Saleh --- arch/arm64/kvm/pkvm.c | 10 ++++++---- drivers/base/dd.c | 23 +++++++++++++++++++++++ include/linux/device/driver.h | 1 + 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kvm/pkvm.c b/arch/arm64/kvm/pkvm.c index b601ff98e9f2..789753790a28 100644 --- a/arch/arm64/kvm/pkvm.c +++ b/arch/arm64/kvm/pkvm.c @@ -504,10 +504,6 @@ static int __init finalize_pkvm(void) if (pkvm_load_early_modules()) pkvm_firmware_rmem_clear(); - /* If no DMA protection. */ - if (!pkvm_iommu_finalized()) - pkvm_firmware_rmem_clear(); - /* * Exclude HYP sections from kmemleak so that they don't get peeked * at, which would end badly once inaccessible. @@ -516,6 +512,12 @@ static int __init finalize_pkvm(void) kmemleak_free_part(__hyp_data_start, __hyp_data_end - __hyp_data_start); kmemleak_free_part_phys(hyp_mem_base, hyp_mem_size); + flush_deferred_probe_now(); + + /* If no DMA protection. */ + if (!pkvm_iommu_finalized()) + pkvm_firmware_rmem_clear(); + ret = pkvm_drop_host_privileges(); if (ret) { pr_err("Failed to de-privilege the host kernel: %d\n", ret); diff --git a/drivers/base/dd.c b/drivers/base/dd.c index c463173f1fb1..1b7378843ceb 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -754,6 +754,29 @@ void wait_for_device_probe(void) } EXPORT_SYMBOL_GPL(wait_for_device_probe); +/** + * flush_deferred_probe_now + * + * This function should be used sparingly. It's meant for when we need to flush + * the deferred probe list at earlier initcall levels. Really meant only for KVM + * needs. This function should never be exported because it makes no sense for + * modules to call this. + */ +void flush_deferred_probe_now(void) +{ + /* + * Really shouldn't using this if deferred probe has already been + * enabled + */ + if (WARN_ON(driver_deferred_probe_enable)) + return; + + driver_deferred_probe_enable = true; + driver_deferred_probe_trigger(); + wait_for_device_probe(); + driver_deferred_probe_enable = false; +} + static int __driver_probe_device(struct device_driver *drv, struct device *dev) { int ret = 0; diff --git a/include/linux/device/driver.h b/include/linux/device/driver.h index d2a71e25caab..b2d338904de2 100644 --- a/include/linux/device/driver.h +++ b/include/linux/device/driver.h @@ -134,6 +134,7 @@ extern struct device_driver *driver_find(const char *name, struct bus_type *bus); extern int driver_probe_done(void); extern void wait_for_device_probe(void); +extern void flush_deferred_probe_now(void); void __init wait_for_init_devices_probe(void); /* sysfs interface for exporting driver attributes */ From 97f2f8a065cbfc2e2706e81276956cbdb5aa65df Mon Sep 17 00:00:00 2001 From: Peifeng Li Date: Thu, 13 Apr 2023 15:53:28 +0800 Subject: [PATCH 28/99] ANDROID: uid_sys_stat: split the global lock uid_lock to the fine-grained locks for each hlist in hash_table. 1.Hash_table in uid_sys_stat is protected by a global lock named id_lock, which causes some lock competition issue. Actually, uid_lock can be split to several file-grained locks for each hlist in hash_table, which avoid the unnecessary lock competition when get different-uid process info. 2. Switching rt-mutex to spinlock, in order to operate with read_rcu_lock. Bug: 278138377 Signed-off-by: Peifeng Li (cherry picked from https://android-review.googlesource.com/q/commit:c949fbdce0bc792dea206c709d909094be579c3a) Merged-In: Ib252b65e9aebe3a594e6edf075f7aa01f8e6105d Change-Id: Ib252b65e9aebe3a594e6edf075f7aa01f8e6105d --- drivers/misc/uid_sys_stats.c | 168 ++++++++++++++++++++++++----------- 1 file changed, 115 insertions(+), 53 deletions(-) diff --git a/drivers/misc/uid_sys_stats.c b/drivers/misc/uid_sys_stats.c index 842597bbeb89..f713de2b3a08 100644 --- a/drivers/misc/uid_sys_stats.c +++ b/drivers/misc/uid_sys_stats.c @@ -23,17 +23,20 @@ #include #include #include -#include #include #include #include #include - +#include #define UID_HASH_BITS 10 +#define UID_HASH_NUMS (1 << UID_HASH_BITS) DECLARE_HASHTABLE(hash_table, UID_HASH_BITS); +/* + * uid_lock[bkt] ensure consistency of hash_table[bkt] + */ +spinlock_t uid_lock[UID_HASH_NUMS]; -static DEFINE_RT_MUTEX(uid_lock); static struct proc_dir_entry *cpu_parent; static struct proc_dir_entry *io_parent; static struct proc_dir_entry *proc_parent; @@ -78,6 +81,32 @@ struct uid_entry { #endif }; +static inline int trylock_uid(uid_t uid) +{ + return spin_trylock( + &uid_lock[hash_min(uid, HASH_BITS(hash_table))]); +} + +static inline void lock_uid(uid_t uid) +{ + spin_lock(&uid_lock[hash_min(uid, HASH_BITS(hash_table))]); +} + +static inline void unlock_uid(uid_t uid) +{ + spin_unlock(&uid_lock[hash_min(uid, HASH_BITS(hash_table))]); +} + +static inline void lock_uid_by_bkt(u32 bkt) +{ + spin_lock(&uid_lock[bkt]); +} + +static inline void unlock_uid_by_bkt(u32 bkt) +{ + spin_unlock(&uid_lock[bkt]); +} + static u64 compute_write_bytes(struct task_io_accounting *ioac) { if (ioac->write_bytes <= ioac->cancelled_write_bytes) @@ -333,24 +362,29 @@ static int uid_cputime_show(struct seq_file *m, void *v) struct user_namespace *user_ns = current_user_ns(); u64 utime; u64 stime; - unsigned long bkt; + u32 bkt; uid_t uid; - rt_mutex_lock(&uid_lock); - - hash_for_each(hash_table, bkt, uid_entry, hash) { - uid_entry->active_stime = 0; - uid_entry->active_utime = 0; + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && + bkt < HASH_SIZE(hash_table); bkt++) { + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + uid_entry->active_stime = 0; + uid_entry->active_utime = 0; + } + unlock_uid_by_bkt(bkt); } rcu_read_lock(); do_each_thread(temp, task) { uid = from_kuid_munged(user_ns, task_uid(task)); + lock_uid(uid); + if (!uid_entry || uid_entry->uid != uid) uid_entry = find_or_register_uid(uid); if (!uid_entry) { rcu_read_unlock(); - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); pr_err("%s: failed to find the uid_entry for uid %d\n", __func__, uid); return -ENOMEM; @@ -361,19 +395,24 @@ static int uid_cputime_show(struct seq_file *m, void *v) uid_entry->active_utime += utime; uid_entry->active_stime += stime; } + unlock_uid(uid); } while_each_thread(temp, task); rcu_read_unlock(); - hash_for_each(hash_table, bkt, uid_entry, hash) { - u64 total_utime = uid_entry->utime + - uid_entry->active_utime; - u64 total_stime = uid_entry->stime + - uid_entry->active_stime; - seq_printf(m, "%d: %llu %llu\n", uid_entry->uid, - ktime_to_us(total_utime), ktime_to_us(total_stime)); + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && + bkt < HASH_SIZE(hash_table); bkt++) { + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + u64 total_utime = uid_entry->utime + + uid_entry->active_utime; + u64 total_stime = uid_entry->stime + + uid_entry->active_stime; + seq_printf(m, "%d: %llu %llu\n", uid_entry->uid, + ktime_to_us(total_utime), ktime_to_us(total_stime)); + } + unlock_uid_by_bkt(bkt); } - rt_mutex_unlock(&uid_lock); return 0; } @@ -421,9 +460,8 @@ static ssize_t uid_remove_write(struct file *file, return -EINVAL; } - rt_mutex_lock(&uid_lock); - for (; uid_start <= uid_end; uid_start++) { + lock_uid(uid_start); hash_for_each_possible_safe(hash_table, uid_entry, tmp, hash, (uid_t)uid_start) { if (uid_start == uid_entry->uid) { @@ -432,9 +470,9 @@ static ssize_t uid_remove_write(struct file *file, kfree(uid_entry); } } + unlock_uid(uid_start); } - rt_mutex_unlock(&uid_lock); return count; } @@ -472,37 +510,51 @@ static void add_uid_io_stats(struct uid_entry *uid_entry, __add_uid_io_stats(uid_entry, &task->ioac, slot); } -static void update_io_stats_all_locked(void) +static void update_io_stats_all(void) { struct uid_entry *uid_entry = NULL; struct task_struct *task, *temp; struct user_namespace *user_ns = current_user_ns(); - unsigned long bkt; + u32 bkt; uid_t uid; - hash_for_each(hash_table, bkt, uid_entry, hash) { - memset(&uid_entry->io[UID_STATE_TOTAL_CURR], 0, - sizeof(struct io_stats)); - set_io_uid_tasks_zero(uid_entry); + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && bkt < HASH_SIZE(hash_table); + bkt++) { + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + memset(&uid_entry->io[UID_STATE_TOTAL_CURR], 0, + sizeof(struct io_stats)); + set_io_uid_tasks_zero(uid_entry); + } + unlock_uid_by_bkt(bkt); } rcu_read_lock(); do_each_thread(temp, task) { uid = from_kuid_munged(user_ns, task_uid(task)); + lock_uid(uid); if (!uid_entry || uid_entry->uid != uid) uid_entry = find_or_register_uid(uid); - if (!uid_entry) + if (!uid_entry) { + unlock_uid(uid); continue; + } add_uid_io_stats(uid_entry, task, UID_STATE_TOTAL_CURR); + unlock_uid(uid); } while_each_thread(temp, task); rcu_read_unlock(); - hash_for_each(hash_table, bkt, uid_entry, hash) { - compute_io_bucket_stats(&uid_entry->io[uid_entry->state], - &uid_entry->io[UID_STATE_TOTAL_CURR], - &uid_entry->io[UID_STATE_TOTAL_LAST], - &uid_entry->io[UID_STATE_DEAD_TASKS]); - compute_io_uid_tasks(uid_entry); + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && bkt < HASH_SIZE(hash_table); + bkt++) { + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + compute_io_bucket_stats(&uid_entry->io[uid_entry->state], + &uid_entry->io[UID_STATE_TOTAL_CURR], + &uid_entry->io[UID_STATE_TOTAL_LAST], + &uid_entry->io[UID_STATE_DEAD_TASKS]); + compute_io_uid_tasks(uid_entry); + } + unlock_uid_by_bkt(bkt); } } @@ -534,14 +586,15 @@ static void update_io_stats_uid_locked(struct uid_entry *uid_entry) static int uid_io_show(struct seq_file *m, void *v) { struct uid_entry *uid_entry; - unsigned long bkt; + u32 bkt; - rt_mutex_lock(&uid_lock); + update_io_stats_all(); + for (bkt = 0, uid_entry = NULL; uid_entry == NULL && bkt < HASH_SIZE(hash_table); + bkt++) { - update_io_stats_all_locked(); - - hash_for_each(hash_table, bkt, uid_entry, hash) { - seq_printf(m, "%d %llu %llu %llu %llu %llu %llu %llu %llu %llu %llu\n", + lock_uid_by_bkt(bkt); + hlist_for_each_entry(uid_entry, &hash_table[bkt], hash) { + seq_printf(m, "%d %llu %llu %llu %llu %llu %llu %llu %llu %llu %llu\n", uid_entry->uid, uid_entry->io[UID_STATE_FOREGROUND].rchar, uid_entry->io[UID_STATE_FOREGROUND].wchar, @@ -554,10 +607,11 @@ static int uid_io_show(struct seq_file *m, void *v) uid_entry->io[UID_STATE_FOREGROUND].fsync, uid_entry->io[UID_STATE_BACKGROUND].fsync); - show_io_uid_tasks(m, uid_entry); + show_io_uid_tasks(m, uid_entry); + } + unlock_uid_by_bkt(bkt); } - rt_mutex_unlock(&uid_lock); return 0; } @@ -601,16 +655,15 @@ static ssize_t uid_procstat_write(struct file *file, if (state != UID_STATE_BACKGROUND && state != UID_STATE_FOREGROUND) return -EINVAL; - rt_mutex_lock(&uid_lock); - + lock_uid(uid); uid_entry = find_or_register_uid(uid); if (!uid_entry) { - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); return -EINVAL; } if (uid_entry->state == state) { - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); return count; } @@ -618,7 +671,7 @@ static ssize_t uid_procstat_write(struct file *file, uid_entry->state = state; - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); return count; } @@ -649,10 +702,9 @@ static void update_stats_workfn(struct work_struct *work) struct task_entry *task_entry __maybe_unused; struct llist_node *node; - rt_mutex_lock(&uid_lock); - node = llist_del_all(&work_usw); llist_for_each_entry_safe(usw, t, node, node) { + lock_uid(usw->uid); uid_entry = find_uid_entry(usw->uid); if (!uid_entry) goto next; @@ -669,12 +721,13 @@ static void update_stats_workfn(struct work_struct *work) #endif __add_uid_io_stats(uid_entry, &usw->ioac, UID_STATE_DEAD_TASKS); next: + unlock_uid(usw->uid); #ifdef CONFIG_UID_SYS_STATS_DEBUG put_task_struct(usw->task); #endif kfree(usw); } - rt_mutex_unlock(&uid_lock); + } static DECLARE_WORK(update_stats_work, update_stats_workfn); @@ -690,7 +743,7 @@ static int process_notifier(struct notifier_block *self, return NOTIFY_OK; uid = from_kuid_munged(current_user_ns(), task_uid(task)); - if (!rt_mutex_trylock(&uid_lock)) { + if (!trylock_uid(uid)) { struct update_stats_work *usw; usw = kmalloc(sizeof(struct update_stats_work), GFP_KERNEL); @@ -724,7 +777,7 @@ static int process_notifier(struct notifier_block *self, add_uid_io_stats(uid_entry, task, UID_STATE_DEAD_TASKS); exit: - rt_mutex_unlock(&uid_lock); + unlock_uid(uid); return NOTIFY_OK; } @@ -732,9 +785,18 @@ static struct notifier_block process_notifier_block = { .notifier_call = process_notifier, }; +static void init_hash_table_and_lock(void) +{ + int i; + + hash_init(hash_table); + for (i = 0; i < UID_HASH_NUMS; i++) + spin_lock_init(&uid_lock[i]); +} + static int __init proc_uid_sys_stats_init(void) { - hash_init(hash_table); + init_hash_table_and_lock(); cpu_parent = proc_mkdir("uid_cputime", NULL); if (!cpu_parent) { From c6724bfedaadcbe81f7985f938d22c3701e6cee8 Mon Sep 17 00:00:00 2001 From: Peifeng Li Date: Tue, 19 Sep 2023 17:35:11 +0800 Subject: [PATCH 29/99] ANDROID: uid_sys_stat: instead update_io_stats_uid_locked to update_io_stats_uid Update_io_stats_uid_locked would take a long lock-time of uid_lock due to call do_each_thread to compute uid_entry->io, which would cause to lock competition sometime. Using uid_entry_tmp to get the result of update_io_stats_uid, so that we can unlock_uid during update_io_stats_uid, in order to avoid the unnecessary lock-time of uid_lock. Bug: 278138377 Signed-off-by: Peifeng Li (cherry picked from https://android-review.googlesource.com/q/commit:c1fa53f3cf85c0a1c23f0e0a944986b4aa049073) Merged-In: I5be62105e57e2a896a95d906e3c14e17c7f8077d Change-Id: I5be62105e57e2a896a95d906e3c14e17c7f8077d --- drivers/misc/uid_sys_stats.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/misc/uid_sys_stats.c b/drivers/misc/uid_sys_stats.c index f713de2b3a08..095962102ac7 100644 --- a/drivers/misc/uid_sys_stats.c +++ b/drivers/misc/uid_sys_stats.c @@ -558,7 +558,11 @@ static void update_io_stats_all(void) } } +#ifndef CONFIG_UID_SYS_STATS_DEBUG +static void update_io_stats_uid(struct uid_entry *uid_entry) +#else static void update_io_stats_uid_locked(struct uid_entry *uid_entry) +#endif { struct task_struct *task, *temp; struct user_namespace *user_ns = current_user_ns(); @@ -639,6 +643,9 @@ static ssize_t uid_procstat_write(struct file *file, uid_t uid; int argc, state; char input[128]; +#ifndef CONFIG_UID_SYS_STATS_DEBUG + struct uid_entry uid_entry_tmp; +#endif if (count >= sizeof(input)) return -EINVAL; @@ -667,11 +674,39 @@ static ssize_t uid_procstat_write(struct file *file, return count; } +#ifndef CONFIG_UID_SYS_STATS_DEBUG + /* + * Update_io_stats_uid_locked would take a long lock-time of uid_lock + * due to call do_each_thread to compute uid_entry->io, which would + * cause to lock competition sometime. + * + * Using uid_entry_tmp to get the result of Update_io_stats_uid, + * so that we can unlock_uid during update_io_stats_uid, in order + * to avoid the unnecessary lock-time of uid_lock. + */ + uid_entry_tmp.uid = uid_entry->uid; + memcpy(uid_entry_tmp.io, uid_entry->io, + sizeof(struct io_stats) * UID_STATE_SIZE); + unlock_uid(uid); + update_io_stats_uid(&uid_entry_tmp); + + lock_uid(uid); + hlist_for_each_entry(uid_entry, &hash_table[hash_min(uid, HASH_BITS(hash_table))], hash) { + if (uid_entry->uid == uid_entry_tmp.uid) { + memcpy(uid_entry->io, uid_entry_tmp.io, + sizeof(struct io_stats) * UID_STATE_SIZE); + uid_entry->state = state; + break; + } + } + unlock_uid(uid); +#else update_io_stats_uid_locked(uid_entry); uid_entry->state = state; unlock_uid(uid); +#endif return count; } From 740a51391b9bb300bd768d407c3e9695581b86d1 Mon Sep 17 00:00:00 2001 From: lfc Date: Thu, 21 Sep 2023 14:09:38 +0800 Subject: [PATCH 30/99] ANDROID: vendor_hooks: Add hooks for binder Add hooks to support oem's binder feature of improving binder_thread->task sched priority 1) Check if it is a specific task in trace_android_vh_binder_transaction_buffer() and store the flag to t->android_vendor_data1 2) If it is a specific binder task and binder_thread selected, raise the sched priority of binder_thread->task in runqueue. 3) If it is a specific binder task but no binder_thread selected (e.g pending_async or no free threads), insert t->work to the appropriate position in the list. 4) Reset the sched priority when BR_TRANSACTION or BC_FREE_BUFFER. Some high-priority async binder task reset the sched priority when BC_FREE_BUFFER in trace_android_vh_binder_free_buf(). Some middle-priority async binder task reset the sched priority when driver return server "BR_TRANSACTION" in trace_android_vh_binder_transaction_received(). Bug: 299328919 Change-Id: Iab4939fe4a4881b31961aaa2fef500b51c944743 Signed-off-by: lfc --- drivers/android/binder.c | 23 +++++++++++++++++++---- drivers/android/vendor_hooks.c | 5 +++++ include/trace/hooks/binder.h | 24 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 4f89346dd283..8b7448753183 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -1761,6 +1761,7 @@ static void binder_free_transaction(struct binder_transaction *t) { struct binder_proc *target_proc = t->to_proc; + trace_android_vh_free_oem_binder_struct(t); if (target_proc) { binder_inner_proc_lock(target_proc); target_proc->outstanding_txns--; @@ -2945,6 +2946,7 @@ static int binder_proc_transaction(struct binder_transaction *t, bool pending_async = false; struct binder_transaction *t_outdated = NULL; bool skip = false; + bool enqueue_task = true; BUG_ON(!node); binder_node_lock(node); @@ -2984,7 +2986,10 @@ static int binder_proc_transaction(struct binder_transaction *t, binder_transaction_priority(thread, t, node); binder_enqueue_thread_work_ilocked(thread, &t->work); } else if (!pending_async) { - binder_enqueue_work_ilocked(&t->work, &proc->todo); + trace_android_vh_binder_special_task(t, proc, thread, + &t->work, &proc->todo, !oneway, &enqueue_task); + if (enqueue_task) + binder_enqueue_work_ilocked(&t->work, &proc->todo); } else { if ((t->flags & TF_UPDATE_TXN) && proc->is_frozen) { t_outdated = binder_find_outdated_transaction_ilocked(t, @@ -2997,7 +3002,10 @@ static int binder_proc_transaction(struct binder_transaction *t, proc->outstanding_txns--; } } - binder_enqueue_work_ilocked(&t->work, &node->async_todo); + trace_android_vh_binder_special_task(t, proc, thread, + &t->work, &node->async_todo, !oneway, &enqueue_task); + if (enqueue_task) + binder_enqueue_work_ilocked(&t->work, &node->async_todo); } trace_android_vh_binder_proc_transaction_finish(proc, t, @@ -3474,6 +3482,7 @@ static void binder_transaction(struct binder_proc *proc, t->buffer->target_node = target_node; t->buffer->clear_on_free = !!(t->flags & TF_CLEAR_BUF); trace_binder_transaction_alloc_buf(t->buffer); + trace_android_vh_alloc_oem_binder_struct(tr, t, target_proc); if (binder_alloc_copy_user_to_buffer( &target_proc->alloc, @@ -3978,6 +3987,9 @@ binder_free_buf(struct binder_proc *proc, struct binder_thread *thread, struct binder_buffer *buffer, bool is_failure) { + bool enqueue_task = true; + + trace_android_vh_binder_free_buf(proc, thread, buffer); binder_inner_proc_lock(proc); if (buffer->transaction) { buffer->transaction->buffer = NULL; @@ -3997,8 +4009,10 @@ binder_free_buf(struct binder_proc *proc, if (!w) { buf_node->has_async_transaction = false; } else { - binder_enqueue_work_ilocked( - w, &proc->todo); + trace_android_vh_binder_special_task(NULL, proc, thread, w, + &proc->todo, false, &enqueue_task); + if (enqueue_task) + binder_enqueue_work_ilocked(w, &proc->todo); binder_wakeup_proc_ilocked(proc); } binder_node_inner_unlock(buf_node); @@ -4940,6 +4954,7 @@ skip: ptr += trsize; trace_binder_transaction_received(t); + trace_android_vh_binder_transaction_received(t, proc, thread, cmd); binder_stat_br(proc, thread, cmd); binder_debug(BINDER_DEBUG_TRANSACTION, "%d:%d %s %d %d:%d, cmd %u size %zd-%zd ptr %016llx-%016llx\n", diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 104e4eb48ff9..a1bbaf5a33d1 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -329,3 +329,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_exit_check); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freeze_whether_wake); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_use_amu_fie); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_scan_abort_check_wmarks); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_oem_binder_struct); +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_binder_special_task); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_free_buf); diff --git a/include/trace/hooks/binder.h b/include/trace/hooks/binder.h index 991e9b1271a1..216b5645db73 100644 --- a/include/trace/hooks/binder.h +++ b/include/trace/hooks/binder.h @@ -11,7 +11,11 @@ * mechanism for vendor modules to hook and extend functionality */ struct binder_transaction; +struct binder_transaction_data; struct task_struct; +struct binder_work; +struct binder_buffer; + DECLARE_HOOK(android_vh_binder_transaction_init, TP_PROTO(struct binder_transaction *t), TP_ARGS(t)); @@ -93,6 +97,26 @@ DECLARE_HOOK(android_vh_binder_new_ref, DECLARE_HOOK(android_vh_binder_del_ref, TP_PROTO(struct task_struct *proc, uint32_t ref_desc), TP_ARGS(proc, ref_desc)); +DECLARE_HOOK(android_vh_alloc_oem_binder_struct, + TP_PROTO(struct binder_transaction_data *tr, struct binder_transaction *t, + struct binder_proc *proc), + TP_ARGS(tr, t, proc)); +DECLARE_HOOK(android_vh_binder_transaction_received, + TP_PROTO(struct binder_transaction *t, struct binder_proc *proc, + struct binder_thread *thread, uint32_t cmd), + TP_ARGS(t, proc, thread, cmd)); +DECLARE_HOOK(android_vh_free_oem_binder_struct, + TP_PROTO(struct binder_transaction *t), + TP_ARGS(t)); +DECLARE_HOOK(android_vh_binder_special_task, + TP_PROTO(struct binder_transaction *t, struct binder_proc *proc, + struct binder_thread *thread, struct binder_work *w, + struct list_head *head, bool sync, bool *special_task), + TP_ARGS(t, proc, thread, w, head, sync, special_task)); +DECLARE_HOOK(android_vh_binder_free_buf, + TP_PROTO(struct binder_proc *proc, struct binder_thread *thread, + struct binder_buffer *buffer), + TP_ARGS(proc, thread, buffer)); #endif /* _TRACE_HOOK_BINDER_H */ /* This part must be outside protection */ From a3cb85bffea164b19b0f650226207200a8439c54 Mon Sep 17 00:00:00 2001 From: lfc Date: Thu, 21 Sep 2023 14:29:03 +0800 Subject: [PATCH 31/99] ANDROID: ABI: Update oplus symbol list INFO: 5 function symbol(s) added 'int __traceiter_android_vh_alloc_oem_binder_struct(void*, struct binder_transaction_data*, struct binder_transaction*, struct binder_proc*)' 'int __traceiter_android_vh_binder_free_buf(void*, struct binder_proc*, struct binder_thread*, struct binder_buffer*)' 'int __traceiter_android_vh_binder_special_task(void*, struct binder_transaction*, struct binder_proc*, struct binder_thread*, struct binder_work*, struct list_head*, bool, bool*)' 'int __traceiter_android_vh_binder_transaction_received(void*, struct binder_transaction*, struct binder_proc*, struct binder_thread*, uint32_t)' 'int __traceiter_android_vh_free_oem_binder_struct(void*, struct binder_transaction*)' 5 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_alloc_oem_binder_struct' 'struct tracepoint __tracepoint_android_vh_binder_free_buf' 'struct tracepoint __tracepoint_android_vh_binder_special_task' 'struct tracepoint __tracepoint_android_vh_binder_transaction_received' 'struct tracepoint __tracepoint_android_vh_free_oem_binder_struct' Bug: 299328919 Change-Id: I3abb4eb46404ce7f68d1b86ac40cb972dfe48b33 Signed-off-by: lfc --- android/abi_gki_aarch64.stg | 142 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_oplus | 10 +++ 2 files changed, 152 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 227be236d819..e2d074a87b46 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -10558,6 +10558,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x5fd666ab } +pointer_reference { + id: 0x1d6b5d95 + kind: POINTER + pointee_type_id: 0x5fed90c9 +} pointer_reference { id: 0x1d6e33e5 kind: POINTER @@ -316448,6 +316453,27 @@ function { parameter_id: 0x02a8d0c9 parameter_id: 0x1d19a9d5 } +function { + id: 0x9ba26d2b + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x02a8d0c9 + parameter_id: 0x1f8dbf97 + parameter_id: 0x24373219 + parameter_id: 0x1d6b5d95 + parameter_id: 0x3e6239e1 + parameter_id: 0x6d7f5ff6 + parameter_id: 0x11cfee5a +} +function { + id: 0x9ba26d9c + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x02a8d0c9 + parameter_id: 0x1f8dbf97 + parameter_id: 0x24373219 + parameter_id: 0x1c3dbe5a +} function { id: 0x9ba2e939 return_type_id: 0x6720d32f @@ -317582,6 +317608,14 @@ function { parameter_id: 0x1c3dbe5a parameter_id: 0x1c898f28 } +function { + id: 0x9bd8639c + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1f8dbf97 + parameter_id: 0x24373219 + parameter_id: 0x38b368bf +} function { id: 0x9bd88151 return_type_id: 0x6720d32f @@ -318032,6 +318066,14 @@ function { parameter_id: 0x92233392 parameter_id: 0x92233392 } +function { + id: 0x9bec16df + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x10de2fab + parameter_id: 0x02a8d0c9 + parameter_id: 0x1f8dbf97 +} function { id: 0x9bee7944 return_type_id: 0x6720d32f @@ -333294,6 +333336,15 @@ elf_symbol { type_id: 0x9bd1d928 full_name: "__traceiter_android_vh_account_task_time" } +elf_symbol { + id: 0xd0b4a794 + name: "__traceiter_android_vh_alloc_oem_binder_struct" + is_defined: true + symbol_type: FUNCTION + crc: 0x72653196 + type_id: 0x9bec16df + full_name: "__traceiter_android_vh_alloc_oem_binder_struct" +} elf_symbol { id: 0x33f9278c name: "__traceiter_android_vh_alloc_pages_failure_bypass" @@ -333393,6 +333444,15 @@ elf_symbol { type_id: 0x9bdcd3ab full_name: "__traceiter_android_vh_binder_del_ref" } +elf_symbol { + id: 0xcb807696 + name: "__traceiter_android_vh_binder_free_buf" + is_defined: true + symbol_type: FUNCTION + crc: 0x71365aee + type_id: 0x9bd8639c + full_name: "__traceiter_android_vh_binder_free_buf" +} elf_symbol { id: 0xbebf7d98 name: "__traceiter_android_vh_binder_free_proc" @@ -333519,6 +333579,15 @@ elf_symbol { type_id: 0x9ba25f4a full_name: "__traceiter_android_vh_binder_set_priority" } +elf_symbol { + id: 0x6bce867e + name: "__traceiter_android_vh_binder_special_task" + is_defined: true + symbol_type: FUNCTION + crc: 0x93949f33 + type_id: 0x9ba26d2b + full_name: "__traceiter_android_vh_binder_special_task" +} elf_symbol { id: 0x4785a3dd name: "__traceiter_android_vh_binder_thread_read" @@ -333555,6 +333624,15 @@ elf_symbol { type_id: 0x9ba51920 full_name: "__traceiter_android_vh_binder_transaction_init" } +elf_symbol { + id: 0xcc2edef9 + name: "__traceiter_android_vh_binder_transaction_received" + is_defined: true + symbol_type: FUNCTION + crc: 0xffec96fd + type_id: 0x9ba26d9c + full_name: "__traceiter_android_vh_binder_transaction_received" +} elf_symbol { id: 0x61c82fb5 name: "__traceiter_android_vh_binder_wait_for_work" @@ -333879,6 +333957,15 @@ elf_symbol { type_id: 0x9a1e34e7 full_name: "__traceiter_android_vh_file_is_tiny_bypass" } +elf_symbol { + id: 0x9e91661b + name: "__traceiter_android_vh_free_oem_binder_struct" + is_defined: true + symbol_type: FUNCTION + crc: 0xe3c92b7e + type_id: 0x9ba51920 + full_name: "__traceiter_android_vh_free_oem_binder_struct" +} elf_symbol { id: 0xc189c2a7 name: "__traceiter_android_vh_free_one_page_bypass" @@ -336696,6 +336783,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_account_task_time" } +elf_symbol { + id: 0xd7f9868e + name: "__tracepoint_android_vh_alloc_oem_binder_struct" + is_defined: true + symbol_type: OBJECT + crc: 0xf8d28f05 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_alloc_oem_binder_struct" +} elf_symbol { id: 0x37776872 name: "__tracepoint_android_vh_alloc_pages_failure_bypass" @@ -336795,6 +336891,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_binder_del_ref" } +elf_symbol { + id: 0x19dded7c + name: "__tracepoint_android_vh_binder_free_buf" + is_defined: true + symbol_type: OBJECT + crc: 0xf64d3ead + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_binder_free_buf" +} elf_symbol { id: 0xf32898c6 name: "__tracepoint_android_vh_binder_free_proc" @@ -336921,6 +337026,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_binder_set_priority" } +elf_symbol { + id: 0xdda667b0 + name: "__tracepoint_android_vh_binder_special_task" + is_defined: true + symbol_type: OBJECT + crc: 0x46cb2346 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_binder_special_task" +} elf_symbol { id: 0x306b5ff7 name: "__tracepoint_android_vh_binder_thread_read" @@ -336957,6 +337071,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_binder_transaction_init" } +elf_symbol { + id: 0xabc729f7 + name: "__tracepoint_android_vh_binder_transaction_received" + is_defined: true + symbol_type: OBJECT + crc: 0x73e426b8 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_binder_transaction_received" +} elf_symbol { id: 0x75b174bb name: "__tracepoint_android_vh_binder_wait_for_work" @@ -337281,6 +337404,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_file_is_tiny_bypass" } +elf_symbol { + id: 0x901d0e89 + name: "__tracepoint_android_vh_free_oem_binder_struct" + is_defined: true + symbol_type: OBJECT + crc: 0xc924dc00 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_free_oem_binder_struct" +} elf_symbol { id: 0x04a824b5 name: "__tracepoint_android_vh_free_one_page_bypass" @@ -394139,6 +394271,7 @@ interface { symbol_id: 0xebcd0234 symbol_id: 0xa3af7947 symbol_id: 0x86527a4e + symbol_id: 0xd0b4a794 symbol_id: 0x33f9278c symbol_id: 0x2e343246 symbol_id: 0xa6e329cd @@ -394150,6 +394283,7 @@ interface { symbol_id: 0x528da532 symbol_id: 0x530ad17d symbol_id: 0x6e0b473c + symbol_id: 0xcb807696 symbol_id: 0xbebf7d98 symbol_id: 0x6935b08b symbol_id: 0xd595bd2c @@ -394164,10 +394298,12 @@ interface { symbol_id: 0xc6c9353c symbol_id: 0xd738b678 symbol_id: 0x2a9c6616 + symbol_id: 0x6bce867e symbol_id: 0x4785a3dd symbol_id: 0x25f13dbe symbol_id: 0xf6faffcb symbol_id: 0x5cf60b10 + symbol_id: 0xcc2edef9 symbol_id: 0x61c82fb5 symbol_id: 0x53fba77d symbol_id: 0xe479b209 @@ -394204,6 +394340,7 @@ interface { symbol_id: 0x1f554c2a symbol_id: 0x343adff1 symbol_id: 0x93a4717b + symbol_id: 0x9e91661b symbol_id: 0xc189c2a7 symbol_id: 0x5ecff02f symbol_id: 0xe3ce1f52 @@ -394517,6 +394654,7 @@ interface { symbol_id: 0xdcf22716 symbol_id: 0x4f980315 symbol_id: 0xe1489e0c + symbol_id: 0xd7f9868e symbol_id: 0x37776872 symbol_id: 0xfc735654 symbol_id: 0x1ebb872f @@ -394528,6 +394666,7 @@ interface { symbol_id: 0xfb7cdd24 symbol_id: 0xc8703937 symbol_id: 0x61b56472 + symbol_id: 0x19dded7c symbol_id: 0xf32898c6 symbol_id: 0x332635cd symbol_id: 0xf06625d6 @@ -394542,10 +394681,12 @@ interface { symbol_id: 0x57a9a36a symbol_id: 0x21d8d29a symbol_id: 0x2e04cb9c + symbol_id: 0xdda667b0 symbol_id: 0x306b5ff7 symbol_id: 0x2fce8f78 symbol_id: 0xec7035fd symbol_id: 0xa9d55136 + symbol_id: 0xabc729f7 symbol_id: 0x75b174bb symbol_id: 0x506628ab symbol_id: 0x0d3c7607 @@ -394582,6 +394723,7 @@ interface { symbol_id: 0x0d418d38 symbol_id: 0x2121385f symbol_id: 0x50a83025 + symbol_id: 0x901d0e89 symbol_id: 0x04a824b5 symbol_id: 0xe6918e09 symbol_id: 0x4d4fd1cc diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 1e638ea28886..6cc21d4eed88 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -174,6 +174,11 @@ __traceiter_task_rename __traceiter_android_vh_test_clear_look_around_ref __traceiter_android_vh_tune_swappiness + __traceiter_android_vh_alloc_oem_binder_struct + __traceiter_android_vh_binder_transaction_received + __traceiter_android_vh_free_oem_binder_struct + __traceiter_android_vh_binder_special_task + __traceiter_android_vh_binder_free_buf __tracepoint_android_rvh_post_init_entity_util_avg __tracepoint_android_rvh_rtmutex_force_update __tracepoint_android_vh_account_process_tick_gran @@ -256,6 +261,11 @@ __tracepoint_sched_stat_wait __tracepoint_sched_waking __tracepoint_task_rename + __tracepoint_android_vh_alloc_oem_binder_struct + __tracepoint_android_vh_binder_transaction_received + __tracepoint_android_vh_free_oem_binder_struct + __tracepoint_android_vh_binder_special_task + __tracepoint_android_vh_binder_free_buf __trace_puts try_to_free_mem_cgroup_pages typec_mux_get_drvdata From f451f4a59950135ea9a6ede218c58f10dbb3abaa Mon Sep 17 00:00:00 2001 From: xieliujie Date: Wed, 20 Sep 2023 09:20:21 +0800 Subject: [PATCH 32/99] ANDROID: vendor_hooks: Add hooks for oem percpu-rwsem optimaton Recently we have discovered many lag issues caused by percpu_rwsem lock-holding tasks not being scheduled for a long time. we need to identify them and provide appropriate scheduling protection in our oem scheduler. To support this, we add one hook below: trace_android_vh_percpu_rwsem_wq_add Bug: 301066838 Change-Id: Id770c1a7978842abfc62d3fa9aeb5ac7a1904972 Signed-off-by: xieliujie --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/dtask.h | 3 +++ kernel/locking/percpu-rwsem.c | 1 + 3 files changed, 5 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index a1bbaf5a33d1..0e922f2a8ab1 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -182,6 +182,7 @@ 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_pcpu_rwsem_starttime); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_percpu_rwsem_wq_add); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_core_rw_nx); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_init_rw_nx); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_module_permit_before_init); diff --git a/include/trace/hooks/dtask.h b/include/trace/hooks/dtask.h index 2d5b13dce01f..a63a2868e626 100644 --- a/include/trace/hooks/dtask.h +++ b/include/trace/hooks/dtask.h @@ -84,6 +84,9 @@ DECLARE_HOOK(android_vh_record_pcpu_rwsem_starttime, DECLARE_HOOK(android_vh_record_pcpu_rwsem_time_early, TP_PROTO(unsigned long settime_jiffies, struct percpu_rw_semaphore *sem), TP_ARGS(settime_jiffies, sem)); +DECLARE_HOOK(android_vh_percpu_rwsem_wq_add, + TP_PROTO(struct percpu_rw_semaphore *sem, bool reader), + TP_ARGS(sem, reader)); struct mutex_waiter; DECLARE_HOOK(android_vh_alter_mutex_list_add, diff --git a/kernel/locking/percpu-rwsem.c b/kernel/locking/percpu-rwsem.c index 8b64155ebb1f..549da829c954 100644 --- a/kernel/locking/percpu-rwsem.c +++ b/kernel/locking/percpu-rwsem.c @@ -181,6 +181,7 @@ static void percpu_rwsem_wait(struct percpu_rw_semaphore *sem, bool reader) if (wait) { wq_entry.flags |= WQ_FLAG_EXCLUSIVE | reader * WQ_FLAG_CUSTOM; __add_wait_queue_entry_tail(&sem->waiters, &wq_entry); + trace_android_vh_percpu_rwsem_wq_add(sem, reader); } spin_unlock_irq(&sem->waiters.lock); From 060ebb378d1c866874f745e9ccf4c424362af6c7 Mon Sep 17 00:00:00 2001 From: xieliujie Date: Wed, 20 Sep 2023 09:49:35 +0800 Subject: [PATCH 33/99] ANDROID: ABI: Update oplus symbol list INFO: 1 function symbol(s) added 'int __traceiter_android_vh_percpu_rwsem_wq_add(void*, struct percpu_rw_semaphore*, bool)' 1 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_percpu_rwsem_wq_add' Bug: 301066838 Change-Id: Ie6be06a6c19959a992555f65cf9b5edef5c86010 Signed-off-by: xieliujie --- android/abi_gki_aarch64.stg | 27 +++++++++++++++++++++++++++ android/abi_gki_aarch64_oplus | 2 ++ 2 files changed, 29 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index e2d074a87b46..74bb2ec6f063 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -318105,6 +318105,13 @@ function { return_type_id: 0x6720d32f parameter_id: 0x19c40476 } +function { + id: 0x9bf23070 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x11b57133 + parameter_id: 0x6d7f5ff6 +} function { id: 0x9bf37946 return_type_id: 0x6720d32f @@ -334497,6 +334504,15 @@ elf_symbol { type_id: 0x9bb7fe1c full_name: "__traceiter_android_vh_page_add_new_anon_rmap" } +elf_symbol { + id: 0xd14f3adb + name: "__traceiter_android_vh_percpu_rwsem_wq_add" + is_defined: true + symbol_type: FUNCTION + crc: 0xf0301f63 + type_id: 0x9bf23070 + full_name: "__traceiter_android_vh_percpu_rwsem_wq_add" +} elf_symbol { id: 0x5983841b name: "__traceiter_android_vh_post_image_save" @@ -337944,6 +337960,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_page_add_new_anon_rmap" } +elf_symbol { + id: 0x3d63616d + name: "__tracepoint_android_vh_percpu_rwsem_wq_add" + is_defined: true + symbol_type: OBJECT + crc: 0x036f4a0a + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_percpu_rwsem_wq_add" +} elf_symbol { id: 0xab37fc55 name: "__tracepoint_android_vh_post_image_save" @@ -394400,6 +394425,7 @@ interface { symbol_id: 0xe17999f4 symbol_id: 0x721b87b7 symbol_id: 0xacaadcc9 + symbol_id: 0xd14f3adb symbol_id: 0x5983841b symbol_id: 0x7d499dab symbol_id: 0xa09f7a4b @@ -394783,6 +394809,7 @@ interface { symbol_id: 0x76e879b6 symbol_id: 0xae5bbde9 symbol_id: 0x20d2ceb3 + symbol_id: 0x3d63616d symbol_id: 0xab37fc55 symbol_id: 0x49b95a49 symbol_id: 0xb194c4c5 diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 6cc21d4eed88..731ca5a89595 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -108,6 +108,7 @@ __traceiter_android_vh_futex_wake_up_q_finish __traceiter_android_vh_record_mutex_lock_starttime __traceiter_android_vh_record_pcpu_rwsem_starttime + __traceiter_android_vh_percpu_rwsem_wq_add __traceiter_android_vh_record_rtmutex_lock_starttime __traceiter_android_vh_record_rwsem_lock_starttime __traceiter_android_vh_alter_mutex_list_add @@ -231,6 +232,7 @@ __tracepoint_android_vh_mutex_unlock_slowpath __tracepoint_android_vh_record_mutex_lock_starttime __tracepoint_android_vh_record_pcpu_rwsem_starttime + __tracepoint_android_vh_percpu_rwsem_wq_add __tracepoint_android_vh_record_rtmutex_lock_starttime __tracepoint_android_vh_record_rwsem_lock_starttime __tracepoint_android_vh_rtmutex_waiter_prio From b548c046c7de4c427ac5a0d5008a995d5e304f9b Mon Sep 17 00:00:00 2001 From: Paolo Abeni Date: Fri, 7 Jul 2023 10:11:10 +0200 Subject: [PATCH 34/99] UPSTREAM: net: prevent skb corruption on frag list segmentation [ Upstream commit c329b261afe71197d9da83c1f18eb45a7e97e089 ] Ian reported several skb corruptions triggered by rx-gro-list, collecting different oops alike: [ 62.624003] BUG: kernel NULL pointer dereference, address: 00000000000000c0 [ 62.631083] #PF: supervisor read access in kernel mode [ 62.636312] #PF: error_code(0x0000) - not-present page [ 62.641541] PGD 0 P4D 0 [ 62.644174] Oops: 0000 [#1] PREEMPT SMP NOPTI [ 62.648629] CPU: 1 PID: 913 Comm: napi/eno2-79 Not tainted 6.4.0 #364 [ 62.655162] Hardware name: Supermicro Super Server/A2SDi-12C-HLN4F, BIOS 1.7a 10/13/2022 [ 62.663344] RIP: 0010:__udp_gso_segment (./include/linux/skbuff.h:2858 ./include/linux/udp.h:23 net/ipv4/udp_offload.c:228 net/ipv4/udp_offload.c:261 net/ipv4/udp_offload.c:277) [ 62.687193] RSP: 0018:ffffbd3a83b4f868 EFLAGS: 00010246 [ 62.692515] RAX: 00000000000000ce RBX: 0000000000000000 RCX: 0000000000000000 [ 62.699743] RDX: ffffa124def8a000 RSI: 0000000000000079 RDI: ffffa125952a14d4 [ 62.706970] RBP: ffffa124def8a000 R08: 0000000000000022 R09: 00002000001558c9 [ 62.714199] R10: 0000000000000000 R11: 00000000be554639 R12: 00000000000000e2 [ 62.721426] R13: ffffa125952a1400 R14: ffffa125952a1400 R15: 00002000001558c9 [ 62.728654] FS: 0000000000000000(0000) GS:ffffa127efa40000(0000) knlGS:0000000000000000 [ 62.736852] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 62.742702] CR2: 00000000000000c0 CR3: 00000001034b0000 CR4: 00000000003526e0 [ 62.749948] Call Trace: [ 62.752498] [ 62.779267] inet_gso_segment (net/ipv4/af_inet.c:1398) [ 62.787605] skb_mac_gso_segment (net/core/gro.c:141) [ 62.791906] __skb_gso_segment (net/core/dev.c:3403 (discriminator 2)) [ 62.800492] validate_xmit_skb (./include/linux/netdevice.h:4862 net/core/dev.c:3659) [ 62.804695] validate_xmit_skb_list (net/core/dev.c:3710) [ 62.809158] sch_direct_xmit (net/sched/sch_generic.c:330) [ 62.813198] __dev_queue_xmit (net/core/dev.c:3805 net/core/dev.c:4210) net/netfilter/core.c:626) [ 62.821093] br_dev_queue_push_xmit (net/bridge/br_forward.c:55) [ 62.825652] maybe_deliver (net/bridge/br_forward.c:193) [ 62.829420] br_flood (net/bridge/br_forward.c:233) [ 62.832758] br_handle_frame_finish (net/bridge/br_input.c:215) [ 62.837403] br_handle_frame (net/bridge/br_input.c:298 net/bridge/br_input.c:416) [ 62.851417] __netif_receive_skb_core.constprop.0 (net/core/dev.c:5387) [ 62.866114] __netif_receive_skb_list_core (net/core/dev.c:5570) [ 62.871367] netif_receive_skb_list_internal (net/core/dev.c:5638 net/core/dev.c:5727) [ 62.876795] napi_complete_done (./include/linux/list.h:37 ./include/net/gro.h:434 ./include/net/gro.h:429 net/core/dev.c:6067) [ 62.881004] ixgbe_poll (drivers/net/ethernet/intel/ixgbe/ixgbe_main.c:3191) [ 62.893534] __napi_poll (net/core/dev.c:6498) [ 62.897133] napi_threaded_poll (./include/linux/netpoll.h:89 net/core/dev.c:6640) [ 62.905276] kthread (kernel/kthread.c:379) [ 62.913435] ret_from_fork (arch/x86/entry/entry_64.S:314) [ 62.917119] In the critical scenario, rx-gro-list GRO-ed packets are fed, via a bridge, both to the local input path and to an egress device (tun). The segmentation of such packets unsafely writes to the cloned skbs with shared heads. This change addresses the issue by uncloning as needed the to-be-segmented skbs. Reported-by: Ian Kumlien Tested-by: Ian Kumlien Fixes: 3a1296a38d0c ("net: Support GRO/GSO fraglist chaining.") Change-Id: I6e79a4d19751becd42ec486233f1a8de4a0f3f7e Signed-off-by: Paolo Abeni Reviewed-by: Eric Dumazet Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/core/skbuff.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/core/skbuff.c b/net/core/skbuff.c index cd4b3a610961..732ea19927a4 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -4032,6 +4032,11 @@ struct sk_buff *skb_segment_list(struct sk_buff *skb, skb_push(skb, -skb_network_offset(skb) + offset); + /* Ensure the head is writeable before touching the shared info */ + err = skb_unclone(skb, GFP_ATOMIC); + if (err) + goto err_linearize; + skb_shinfo(skb)->frag_list = NULL; while (list_skb) { From ae5ea9043de17f2ec08a92317add206590784bd9 Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Mon, 25 Sep 2023 10:02:14 +0900 Subject: [PATCH 35/99] ANDROID: Move microdroid and crashdump defconfigs to common They don't have device-specific modules. They are just generic configs that are different from GKI. Bug: 301852599 Test: run following commands tools/bazel run //common:kernel_aarch64_microdroid_dist tools/bazel run //common:kernel_x86_64_microdroid_dist tools/bazel run //common:kernel_aarch64_microdroid_config -- menuconfig tools/bazel run //common:kernel_x86_64_microdroid_config -- menuconfig tools/bazel run //common:kernel_aarch64_crashdump_dist tools/bazel run //common:kernel_x86_64_crashdump_dist tools/bazel run //common:kernel_aarch64_crashdump_config -- menuconfig tools/bazel run //common:kernel_x86_64_crashdump_config -- menuconfig Change-Id: I8908a7499451ace0740979b694eb5fcc68398c61 Signed-off-by: Jiyong Park --- BUILD.bazel | 96 ++++++++ arch/arm64/configs/crashdump_defconfig | 81 +++++++ arch/arm64/configs/microdroid_defconfig | 216 ++++++++++++++++++ arch/x86/configs/crashdump_defconfig | 87 +++++++ arch/x86/configs/microdroid_defconfig | 290 ++++++++++++++++++++++++ build.config.crashdump | 1 + build.config.crashdump.aarch64 | 7 + build.config.crashdump.x86_64 | 7 + build.config.microdroid | 1 + build.config.microdroid.aarch64 | 7 + build.config.microdroid.x86_64 | 7 + 11 files changed, 800 insertions(+) create mode 100644 arch/arm64/configs/crashdump_defconfig create mode 100644 arch/arm64/configs/microdroid_defconfig create mode 100644 arch/x86/configs/crashdump_defconfig create mode 100644 arch/x86/configs/microdroid_defconfig create mode 100644 build.config.crashdump create mode 100644 build.config.crashdump.aarch64 create mode 100644 build.config.crashdump.x86_64 create mode 100644 build.config.microdroid create mode 100644 build.config.microdroid.aarch64 create mode 100644 build.config.microdroid.x86_64 diff --git a/BUILD.bazel b/BUILD.bazel index 35f2484b7940..1035027d3f17 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -4,6 +4,7 @@ load("@bazel_skylib//rules:write_file.bzl", "write_file") load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir") load("//build/kernel/kleaf:common_kernels.bzl", "define_common_kernels") +load("//build/kernel/kleaf:constants.bzl", "X86_64_OUTS") load( "//build/kernel/kleaf:kernel.bzl", "checkpatch", @@ -167,6 +168,101 @@ define_common_kernels(target_configs = { }, }) +# Microdroid is not a real device. The kernel image is built with special +# configs to reduce the size. Hence, not using mixed build. +kernel_build( + name = "kernel_aarch64_microdroid", + srcs = ["//common:kernel_aarch64_sources"], + outs = [ + "Image", + "System.map", + "modules.builtin", + "modules.builtin.modinfo", + "vmlinux", + "vmlinux.symvers", + ], + build_config = "build.config.microdroid.aarch64", + make_goals = [ + "Image", + ], +) + +copy_to_dist_dir( + name = "kernel_aarch64_microdroid_dist", + data = [ + ":kernel_aarch64_microdroid", + ], + dist_dir = "out/kernel_aarch64_microdroid/dist", + flat = True, + log = "info", +) + +# Microdroid is not a real device. The kernel image is built with special +# configs to reduce the size. Hence, not using mixed build. +kernel_build( + name = "kernel_x86_64_microdroid", + srcs = ["//common:kernel_x86_64_sources"], + outs = X86_64_OUTS, + arch = "x86_64", + build_config = "build.config.microdroid.x86_64", + make_goals = [ + "bzImage", + ], +) + +copy_to_dist_dir( + name = "kernel_x86_64_microdroid_dist", + data = [ + ":kernel_x86_64_microdroid", + ], + dist_dir = "out/kernel_x86_64_microdroid/dist", + flat = True, + log = "info", +) + +kernel_build( + name = "kernel_aarch64_crashdump", + srcs = ["//common:kernel_aarch64_sources"], + outs = [ + "Image", + ], + build_config = "build.config.crashdump.aarch64", + make_goals = [ + "Image", + ], +) + +copy_to_dist_dir( + name = "kernel_aarch64_crashdump_dist", + data = [ + ":kernel_aarch64_crashdump", + ], + dist_dir = "out/kernel_aarch64_crashdump/dist", + flat = True, + log = "info", +) + +kernel_build( + name = "kernel_x86_64_crashdump", + srcs = ["//common:kernel_x86_64_sources"], + outs = X86_64_OUTS, + arch = "x86_64", + build_config = "build.config.crashdump.x86_64", + make_goals = [ + "bzImage", + ], +) + +copy_to_dist_dir( + name = "kernel_x86_64_crashdump_dist", + data = [ + ":kernel_x86_64_crashdump", + ], + dist_dir = "out/kernel_x86_64_crashdump/dist", + flat = True, + log = "info", +) + _DB845C_MODULE_OUTS = [ # keep sorted "crypto/michael_mic.ko", diff --git a/arch/arm64/configs/crashdump_defconfig b/arch/arm64/configs/crashdump_defconfig new file mode 100644 index 000000000000..75866b00b403 --- /dev/null +++ b/arch/arm64/configs/crashdump_defconfig @@ -0,0 +1,81 @@ +# CONFIG_WERROR is not set +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_SWAP is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_NO_HZ_IDLE=y +CONFIG_PREEMPT=y +# CONFIG_CPU_ISOLATION is not set +CONFIG_LOG_BUF_SHIFT=15 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=10 +# CONFIG_UTS_NS is not set +# CONFIG_TIME_NS is not set +# CONFIG_PID_NS is not set +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_ZSTD is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB_MERGE_DEFAULT is not set +# CONFIG_SLUB_CPU_PARTIAL is not set +CONFIG_ARM64_VA_BITS_48=y +CONFIG_NR_CPUS=2 +CONFIG_CRASH_DUMP=y +# CONFIG_RODATA_FULL_DEFAULT_ENABLED is not set +# CONFIG_ARM64_TAGGED_ADDR_ABI is not set +# CONFIG_ARM64_SVE is not set +# CONFIG_EFI is not set +# CONFIG_SUSPEND is not set +CONFIG_JUMP_LABEL=y +# CONFIG_SECCOMP is not set +# CONFIG_STACKPROTECTOR is not set +# CONFIG_VMAP_STACK is not set +# CONFIG_MQ_IOSCHED_DEADLINE is not set +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_BINFMT_SCRIPT is not set +# CONFIG_SPECULATIVE_PAGE_FAULT is not set +CONFIG_PCI=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCI_ENDPOINT=y +CONFIG_DEVTMPFS=y +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +CONFIG_ARM_SCMI_PROTOCOL=y +# CONFIG_ARM_SMCCC_SOC_ID is not set +# CONFIG_BLK_DEV is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=1 +CONFIG_SERIAL_8250_RUNTIME_UARTS=1 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_VIRTIO_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_DEVMEM is not set +# CONFIG_HWMON is not set +# CONFIG_HID is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_VIRTIO_PCI=y +# CONFIG_VIRTIO_PCI_LEGACY is not set +# CONFIG_VHOST_MENU is not set +# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set +# CONFIG_FSL_ERRATUM_A008585 is not set +# CONFIG_HISILICON_ERRATUM_161010101 is not set +# CONFIG_ARM64_ERRATUM_858921 is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_XATTR=y +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_XZ_DEC=y +# CONFIG_SYMBOLIC_ERRNAME is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/arch/arm64/configs/microdroid_defconfig b/arch/arm64/configs/microdroid_defconfig new file mode 100644 index 000000000000..3f8fb833040c --- /dev/null +++ b/arch/arm64/configs/microdroid_defconfig @@ -0,0 +1,216 @@ +CONFIG_AUDIT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_PSI=y +CONFIG_RCU_EXPERT=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_NOCB_CPU=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_UTS_NS is not set +# CONFIG_TIME_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_ZSTD is not set +CONFIG_BOOT_CONFIG=y +CONFIG_PROFILING=y +CONFIG_SCHED_MC=y +CONFIG_NR_CPUS=32 +CONFIG_PARAVIRT_TIME_ACCOUNTING=y +CONFIG_KEXEC_FILE=y +CONFIG_ARM64_SW_TTBR0_PAN=y +CONFIG_RANDOMIZE_BASE=y +# CONFIG_RANDOMIZE_MODULE_REGION_FULL is not set +CONFIG_CMDLINE="stack_depot_disable=on kasan.stacktrace=off cgroup_disable=pressure ioremap_guard panic=-1 bootconfig" +CONFIG_CMDLINE_EXTEND=y +# CONFIG_EFI is not set +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_LIMIT=0 +# CONFIG_PM_WAKELOCKS_GC is not set +CONFIG_VIRTUALIZATION=y +CONFIG_JUMP_LABEL=y +CONFIG_SHADOW_CALL_STACK=y +CONFIG_CFI_CLANG=y +CONFIG_MODULES=y +CONFIG_BLK_DEV_ZONED=y +CONFIG_BLK_INLINE_ENCRYPTION=y +CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y +CONFIG_PARTITION_ADVANCED=y +# CONFIG_MSDOS_PARTITION is not set +CONFIG_IOSCHED_BFQ=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_MISC=y +# CONFIG_SLAB_MERGE_DEFAULT is not set +CONFIG_SLAB_FREELIST_RANDOM=y +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +# CONFIG_COMPAT_BRK is not set +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_ANON_VMA_NAME=y +CONFIG_USERFAULTFD=y +CONFIG_LRU_GEN=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_XFRM_INTERFACE=y +CONFIG_XFRM_MIGRATE=y +CONFIG_XFRM_STATISTICS=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_NET_IPIP=y +CONFIG_NET_IPGRE_DEMUX=y +CONFIG_NET_IPGRE=y +CONFIG_NET_IPVTI=y +CONFIG_INET_ESP=y +CONFIG_INET_UDP_DIAG=y +CONFIG_INET_DIAG_DESTROY=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_ESP=y +CONFIG_INET6_IPCOMP=y +CONFIG_IPV6_MIP6=y +CONFIG_IPV6_VTI=y +CONFIG_IPV6_GRE=y +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_VSOCKETS=y +CONFIG_VIRTIO_VSOCKETS=y +# CONFIG_WIRELESS is not set +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +CONFIG_PCI_IOV=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCIE_DW_PLAT_EP=y +CONFIG_PCIE_KIRIN=y +CONFIG_PCI_ENDPOINT=y +CONFIG_FW_LOADER_USER_HELPER=y +# CONFIG_FW_CACHE is not set +CONFIG_ARM_SCMI_PROTOCOL=y +# CONFIG_ARM_SCMI_POWER_DOMAIN is not set +CONFIG_ZRAM=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=16 +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_VIRTIO_BLK=y +CONFIG_OPEN_DICE=y +CONFIG_VCPU_STALL_DETECTOR=y +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y +CONFIG_DM_CRYPT=y +CONFIG_DM_INIT=y +CONFIG_DM_UEVENT=y +CONFIG_DM_VERITY=y +CONFIG_DM_VERITY_FEC=y +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_RUNTIME_UARTS=0 +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_NULL_TTY=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_CCTRNG=y +# CONFIG_DEVMEM is not set +# CONFIG_DEVPORT is not set +CONFIG_POWER_RESET_SYSCON=y +# CONFIG_HWMON is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_HID is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_EDAC=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_NVMEM is not set +CONFIG_RTC_DRV_PL030=y +CONFIG_RTC_DRV_PL031=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_SYSFS_STATS=y +CONFIG_UIO=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_STAGING=y +CONFIG_HWSPINLOCK=y +CONFIG_EXT4_FS=y +# CONFIG_EXT4_USE_FOR_EXT2 is not set +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_DNOTIFY is not set +CONFIG_FUSE_FS=y +CONFIG_TMPFS=y +CONFIG_EROFS_FS=y +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_UNICODE=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_STATIC_USERMODEHELPER=y +CONFIG_STATIC_USERMODEHELPER_PATH="" +CONFIG_SECURITY_SELINUX=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_ADIANTUM=y +CONFIG_CRYPTO_HCTR2=y +CONFIG_CRYPTO_CHACHA20POLY1305=y +CONFIG_CRYPTO_BLAKE2B=y +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_XCBC=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_ZSTD=y +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_TRACE_MMIO_ACCESS=y +CONFIG_XZ_DEC=y +CONFIG_DMA_RESTRICTED_POOL=y +CONFIG_PRINTK_TIME=y +CONFIG_PRINTK_CALLER=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_INFO_DWARF5=y +CONFIG_DEBUG_INFO_REDUCED=y +CONFIG_DEBUG_INFO_COMPRESSED=y +CONFIG_HEADERS_INSTALL=y +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_UBSAN=y +CONFIG_UBSAN_TRAP=y +CONFIG_UBSAN_LOCAL_BOUNDS=y +# CONFIG_UBSAN_SHIFT is not set +# CONFIG_UBSAN_BOOL is not set +# CONFIG_UBSAN_ENUM is not set +CONFIG_PAGE_OWNER=y +CONFIG_DEBUG_STACK_USAGE=y +CONFIG_KASAN=y +CONFIG_KASAN_HW_TAGS=y +CONFIG_PANIC_ON_OOPS=y +CONFIG_PANIC_TIMEOUT=-1 +CONFIG_SOFTLOCKUP_DETECTOR=y +CONFIG_WQ_WATCHDOG=y +CONFIG_SCHEDSTATS=y +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_BUG_ON_DATA_CORRUPTION=y +CONFIG_HIST_TRIGGERS=y +CONFIG_PID_IN_CONTEXTIDR=y +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/arch/x86/configs/crashdump_defconfig b/arch/x86/configs/crashdump_defconfig new file mode 100644 index 000000000000..5177d6e4619b --- /dev/null +++ b/arch/x86/configs/crashdump_defconfig @@ -0,0 +1,87 @@ +# CONFIG_WERROR is not set +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZ4=y +# CONFIG_SWAP is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_NO_HZ_IDLE=y +CONFIG_PREEMPT=y +CONFIG_LOG_BUF_SHIFT=12 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=12 +# CONFIG_UTS_NS is not set +# CONFIG_TIME_NS is not set +# CONFIG_PID_NS is not set +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_ZSTD is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB_MERGE_DEFAULT is not set +# CONFIG_RETPOLINE is not set +# CONFIG_X86_EXTENDED_PLATFORM is not set +# CONFIG_SCHED_OMIT_FRAME_POINTER is not set +# CONFIG_X86_MCE is not set +# CONFIG_PERF_EVENTS_AMD_UNCORE is not set +# CONFIG_X86_IOPL_IOPERM is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_5LEVEL is not set +# CONFIG_MTRR_SANITIZER is not set +# CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS is not set +CONFIG_CRASH_DUMP=y +CONFIG_PHYSICAL_START=0x100000 +# CONFIG_RANDOMIZE_BASE is not set +CONFIG_LEGACY_VSYSCALL_NONE=y +# CONFIG_SUSPEND is not set +# CONFIG_ACPI is not set +# CONFIG_VIRTUALIZATION is not set +CONFIG_JUMP_LABEL=y +# CONFIG_SECCOMP is not set +# CONFIG_STACKPROTECTOR is not set +# CONFIG_VMAP_STACK is not set +# CONFIG_MQ_IOSCHED_DEADLINE is not set +# CONFIG_MQ_IOSCHED_KYBER is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_BINFMT_SCRIPT is not set +# CONFIG_SPARSEMEM_VMEMMAP is not set +# CONFIG_COMPACTION is not set +CONFIG_PCI=y +CONFIG_PCI_ENDPOINT=y +CONFIG_DEVTMPFS=y +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +# CONFIG_DMIID is not set +# CONFIG_BLK_DEV is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO_I8042 is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=1 +CONFIG_SERIAL_8250_RUNTIME_UARTS=1 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_DEV_BUS=y +# CONFIG_SERIAL_DEV_CTRL_TTYPORT is not set +CONFIG_VIRTIO_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_DEVMEM is not set +# CONFIG_HWMON is not set +# CONFIG_HID is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_VIRTIO_PCI=y +# CONFIG_VIRTIO_PCI_LEGACY is not set +# CONFIG_VHOST_MENU is not set +# CONFIG_X86_PLATFORM_DEVICES is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +CONFIG_TMPFS=y +# CONFIG_MISC_FILESYSTEMS is not set +# CONFIG_PAGE_TABLE_ISOLATION is not set +# CONFIG_SYMBOLIC_ERRNAME is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +# CONFIG_RUNTIME_TESTING_MENU is not set diff --git a/arch/x86/configs/microdroid_defconfig b/arch/x86/configs/microdroid_defconfig new file mode 100644 index 000000000000..d2539f0adce9 --- /dev/null +++ b/arch/x86/configs/microdroid_defconfig @@ -0,0 +1,290 @@ +CONFIG_KERNEL_LZ4=y +CONFIG_AUDIT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_IRQ_TIME_ACCOUNTING=y +CONFIG_TASKSTATS=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_PSI=y +CONFIG_RCU_EXPERT=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_NOCB_CPU=y +CONFIG_UCLAMP_TASK=y +CONFIG_UCLAMP_BUCKETS_COUNT=20 +CONFIG_CGROUPS=y +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_SCHED=y +CONFIG_UCLAMP_TASK_GROUP=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_CPUACCT=y +# CONFIG_UTS_NS is not set +# CONFIG_TIME_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +CONFIG_BOOT_CONFIG=y +CONFIG_PROFILING=y +CONFIG_SMP=y +CONFIG_X86_X2APIC=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_TIME_ACCOUNTING=y +CONFIG_NR_CPUS=32 +# CONFIG_X86_MCE is not set +CONFIG_EFI=y +CONFIG_KEXEC_FILE=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="stack_depot_disable=on cgroup_disable=pressure ioremap_guard panic=-1 bootconfig acpi=noirq" +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_LIMIT=0 +# CONFIG_PM_WAKELOCKS_GC is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_TIMES=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_BLK_DEV_ZONED=y +CONFIG_BLK_CGROUP_IOCOST=y +CONFIG_BLK_INLINE_ENCRYPTION=y +CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y +CONFIG_PARTITION_ADVANCED=y +# CONFIG_MSDOS_PARTITION is not set +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_MISC=y +# CONFIG_SLAB_MERGE_DEFAULT is not set +CONFIG_SLAB_FREELIST_RANDOM=y +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +# CONFIG_COMPAT_BRK is not set +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_ANON_VMA_NAME=y +CONFIG_USERFAULTFD=y +CONFIG_LRU_GEN=y +CONFIG_DAMON=y +CONFIG_DAMON_PADDR=y +CONFIG_DAMON_RECLAIM=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_XFRM_INTERFACE=y +CONFIG_XFRM_MIGRATE=y +CONFIG_XFRM_STATISTICS=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_NET_IPIP=y +CONFIG_NET_IPGRE_DEMUX=y +CONFIG_NET_IPGRE=y +CONFIG_NET_IPVTI=y +CONFIG_INET_ESP=y +CONFIG_INET_UDP_DIAG=y +CONFIG_INET_DIAG_DESTROY=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_ESP=y +CONFIG_INET6_IPCOMP=y +CONFIG_IPV6_MIP6=y +CONFIG_IPV6_VTI=y +CONFIG_IPV6_GRE=y +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_VSOCKETS=y +CONFIG_VIRTIO_VSOCKETS=y +CONFIG_CGROUP_NET_PRIO=y +# CONFIG_WIRELESS is not set +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +CONFIG_PCI_MSI=y +CONFIG_PCI_IOV=y +CONFIG_PCIE_DW_PLAT_EP=y +CONFIG_PCI_ENDPOINT=y +CONFIG_FW_LOADER_USER_HELPER=y +# CONFIG_FW_CACHE is not set +CONFIG_OF=y +CONFIG_ZRAM=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=16 +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_VIRTIO_BLK=y +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y +CONFIG_DM_CRYPT=y +CONFIG_DM_INIT=y +CONFIG_DM_UEVENT=y +CONFIG_DM_VERITY=y +CONFIG_DM_VERITY_FEC=y +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_RUNTIME_UARTS=0 +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_NULL_TTY=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_VIRTIO=y +# CONFIG_DEVMEM is not set +# CONFIG_DEVPORT is not set +CONFIG_HPET=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_HWMON is not set +CONFIG_THERMAL_NETLINK=y +CONFIG_THERMAL_STATISTICS=y +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=100 +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_CPU_THERMAL=y +CONFIG_THERMAL_EMULATION=y +# CONFIG_X86_PKG_TEMP_THERMAL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +CONFIG_MFD_SYSCON=y +# CONFIG_HID is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_EDAC=y +CONFIG_RTC_CLASS=y +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_SYSFS_STATS=y +CONFIG_UIO=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_STAGING=y +CONFIG_LIBNVDIMM=y +CONFIG_EXT4_FS=y +# CONFIG_EXT4_USE_FOR_EXT2 is not set +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_DNOTIFY is not set +CONFIG_FUSE_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +# CONFIG_EFIVAR_FS is not set +CONFIG_EROFS_FS=y +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=y +CONFIG_NLS_CODEPAGE_775=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_CODEPAGE_852=y +CONFIG_NLS_CODEPAGE_855=y +CONFIG_NLS_CODEPAGE_857=y +CONFIG_NLS_CODEPAGE_860=y +CONFIG_NLS_CODEPAGE_861=y +CONFIG_NLS_CODEPAGE_862=y +CONFIG_NLS_CODEPAGE_863=y +CONFIG_NLS_CODEPAGE_864=y +CONFIG_NLS_CODEPAGE_865=y +CONFIG_NLS_CODEPAGE_866=y +CONFIG_NLS_CODEPAGE_869=y +CONFIG_NLS_CODEPAGE_936=y +CONFIG_NLS_CODEPAGE_950=y +CONFIG_NLS_CODEPAGE_932=y +CONFIG_NLS_CODEPAGE_949=y +CONFIG_NLS_CODEPAGE_874=y +CONFIG_NLS_ISO8859_8=y +CONFIG_NLS_CODEPAGE_1250=y +CONFIG_NLS_CODEPAGE_1251=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_2=y +CONFIG_NLS_ISO8859_3=y +CONFIG_NLS_ISO8859_4=y +CONFIG_NLS_ISO8859_5=y +CONFIG_NLS_ISO8859_6=y +CONFIG_NLS_ISO8859_7=y +CONFIG_NLS_ISO8859_9=y +CONFIG_NLS_ISO8859_13=y +CONFIG_NLS_ISO8859_14=y +CONFIG_NLS_ISO8859_15=y +CONFIG_NLS_KOI8_R=y +CONFIG_NLS_KOI8_U=y +CONFIG_NLS_MAC_ROMAN=y +CONFIG_NLS_MAC_CELTIC=y +CONFIG_NLS_MAC_CENTEURO=y +CONFIG_NLS_MAC_CROATIAN=y +CONFIG_NLS_MAC_CYRILLIC=y +CONFIG_NLS_MAC_GAELIC=y +CONFIG_NLS_MAC_GREEK=y +CONFIG_NLS_MAC_ICELAND=y +CONFIG_NLS_MAC_INUIT=y +CONFIG_NLS_MAC_ROMANIAN=y +CONFIG_NLS_MAC_TURKISH=y +CONFIG_NLS_UTF8=y +CONFIG_UNICODE=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_STATIC_USERMODEHELPER=y +CONFIG_STATIC_USERMODEHELPER_PATH="" +CONFIG_SECURITY_SELINUX=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_ADIANTUM=y +CONFIG_CRYPTO_HCTR2=y +CONFIG_CRYPTO_CHACHA20POLY1305=y +CONFIG_CRYPTO_BLAKE2B=y +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_XCBC=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_ZSTD=y +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRYPTO_AES_NI_INTEL=y +CONFIG_CRYPTO_POLYVAL_CLMUL_NI=y +CONFIG_CRYPTO_SHA256_SSSE3=y +CONFIG_CRYPTO_SHA512_SSSE3=y +CONFIG_CRC8=y +CONFIG_XZ_DEC=y +CONFIG_PRINTK_TIME=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_INFO_DWARF5=y +CONFIG_DEBUG_INFO_REDUCED=y +CONFIG_DEBUG_INFO_COMPRESSED=y +CONFIG_HEADERS_INSTALL=y +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_UBSAN=y +CONFIG_UBSAN_TRAP=y +CONFIG_UBSAN_LOCAL_BOUNDS=y +# CONFIG_UBSAN_SHIFT is not set +# CONFIG_UBSAN_BOOL is not set +# CONFIG_UBSAN_ENUM is not set +CONFIG_PAGE_OWNER=y +CONFIG_DEBUG_STACK_USAGE=y +CONFIG_KFENCE=y +CONFIG_KFENCE_SAMPLE_INTERVAL=500 +CONFIG_KFENCE_NUM_OBJECTS=63 +CONFIG_PANIC_ON_OOPS=y +CONFIG_PANIC_TIMEOUT=-1 +CONFIG_SOFTLOCKUP_DETECTOR=y +CONFIG_WQ_WATCHDOG=y +CONFIG_SCHEDSTATS=y +CONFIG_BUG_ON_DATA_CORRUPTION=y +CONFIG_HIST_TRIGGERS=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/build.config.crashdump b/build.config.crashdump new file mode 100644 index 000000000000..8a4214358308 --- /dev/null +++ b/build.config.crashdump @@ -0,0 +1 @@ +DEFCONFIG=crashdump_defconfig diff --git a/build.config.crashdump.aarch64 b/build.config.crashdump.aarch64 new file mode 100644 index 000000000000..20a8acc98912 --- /dev/null +++ b/build.config.crashdump.aarch64 @@ -0,0 +1,7 @@ +KERNEL_DIR=common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64 +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.crashdump + +# No modules +IN_KERNEL_MODULES= diff --git a/build.config.crashdump.x86_64 b/build.config.crashdump.x86_64 new file mode 100644 index 000000000000..18eed729a8c1 --- /dev/null +++ b/build.config.crashdump.x86_64 @@ -0,0 +1,7 @@ +KERNEL_DIR=common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.x86_64 +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.crashdump + +# No modules +IN_KERNEL_MODULES= diff --git a/build.config.microdroid b/build.config.microdroid new file mode 100644 index 000000000000..d31e0d5587f3 --- /dev/null +++ b/build.config.microdroid @@ -0,0 +1 @@ +DEFCONFIG=microdroid_defconfig diff --git a/build.config.microdroid.aarch64 b/build.config.microdroid.aarch64 new file mode 100644 index 000000000000..a8ffa55bc2ad --- /dev/null +++ b/build.config.microdroid.aarch64 @@ -0,0 +1,7 @@ +KERNEL_DIR=common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.aarch64 +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.microdroid + +# No modules +IN_KERNEL_MODULES= diff --git a/build.config.microdroid.x86_64 b/build.config.microdroid.x86_64 new file mode 100644 index 000000000000..10cd8b23a748 --- /dev/null +++ b/build.config.microdroid.x86_64 @@ -0,0 +1,7 @@ +KERNEL_DIR=common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.common +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.x86_64 +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.microdroid + +# No modules +IN_KERNEL_MODULES= From b374d94195756312b78fccd8104bcd52cfa486c6 Mon Sep 17 00:00:00 2001 From: Neill Kapron Date: Tue, 26 Sep 2023 21:35:42 +0000 Subject: [PATCH 36/99] Revert "BACKPORT: FROMGIT: usb: gadget: udc: Handle gadget_connect failure during bind operation" This reverts commit 251aa28d1640b0ece15c4d4bd074d0449e858f90. Reason for revert: b/301670242 The connect_lock mutex is not being released in error path. This patch was reverted upstream. Signed-off-by: Neill Kapron Change-Id: I802a9a8afc9f23b1bf91fa4df4bfb5d207373b04 --- drivers/usb/gadget/udc/core.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c index 93695ce5fef0..ed2129be43aa 100644 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c @@ -1099,16 +1099,12 @@ EXPORT_SYMBOL_GPL(usb_gadget_set_state); /* ------------------------------------------------------------------------- */ /* Acquire connect_lock before calling this function. */ -static int usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock) +static void usb_udc_connect_control_locked(struct usb_udc *udc) __must_hold(&udc->connect_lock) { - int ret; - if (udc->vbus) - ret = usb_gadget_connect_locked(udc->gadget); + usb_gadget_connect_locked(udc->gadget); else - ret = usb_gadget_disconnect_locked(udc->gadget); - - return ret; + usb_gadget_disconnect_locked(udc->gadget); } static void vbus_event_work(struct work_struct *work) @@ -1582,21 +1578,12 @@ static int gadget_bind_driver(struct device *dev) } usb_gadget_enable_async_callbacks(udc); udc->allow_connect = true; - ret = usb_udc_connect_control_locked(udc); - if (ret) - goto err_connect_control; - + usb_udc_connect_control_locked(udc); mutex_unlock(&udc->connect_lock); kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); return 0; - err_connect_control: - usb_gadget_disable_async_callbacks(udc); - if (gadget->irq) - synchronize_irq(gadget->irq); - usb_gadget_udc_stop_locked(udc); - err_start: driver->unbind(udc->gadget); From ea494b27163b1dc7a100e82230c7889485147d43 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Thu, 10 Aug 2023 12:54:18 -0700 Subject: [PATCH 37/99] UPSTREAM: ARM: ptrace: Restore syscall restart tracing Since commit 4e57a4ddf6b0 ("ARM: 9107/1: syscall: always store thread_info->abi_syscall"), the seccomp selftests "syscall_restart" has been broken. This was caused by the restart syscall not being stored to "abi_syscall" during restart setup before branching to the "local_restart" label. Tracers would see the wrong syscall, and scno would get overwritten while returning from the TIF_WORK path. Add the missing store. Cc: Russell King Cc: Arnd Bergmann Cc: Lecopzer Chen Cc: Oleg Nesterov Cc: linux-arm-kernel@lists.infradead.org Fixes: 4e57a4ddf6b0 ("ARM: 9107/1: syscall: always store thread_info->abi_syscall") Reviewed-by: Arnd Bergmann Link: https://lore.kernel.org/r/20230810195422.2304827-1-keescook@chromium.org Change-Id: If78d334ed46335cf8eff33a4bbcb1da5e86de016 Signed-off-by: Kees Cook (cherry picked from commit cf007647475b5090819c5fe8da771073145c7334) Bug: 289991100 Signed-off-by: Edward Liaw --- arch/arm/kernel/entry-common.S | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 405a607b754f..b413b541c3c7 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S @@ -103,6 +103,7 @@ slow_work_pending: cmp r0, #0 beq no_work_pending movlt scno, #(__NR_restart_syscall - __NR_SYSCALL_BASE) + str scno, [tsk, #TI_ABI_SYSCALL] @ make sure tracers see update ldmia sp, {r0 - r6} @ have to reload r0 - r6 b local_restart @ ... and off we go ENDPROC(ret_fast_syscall) From 709dc094e379ad4a51f49e88e105cb8cc993579e Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Thu, 10 Aug 2023 12:54:19 -0700 Subject: [PATCH 38/99] UPSTREAM: ARM: ptrace: Restore syscall skipping for tracers Since commit 4e57a4ddf6b0 ("ARM: 9107/1: syscall: always store thread_info->abi_syscall"), the seccomp selftests "syscall_errno" and "syscall_faked" have been broken. Both seccomp and PTRACE depend on using the special value of "-1" for skipping syscalls. This value wasn't working because it was getting masked by __NR_SYSCALL_MASK in both PTRACE_SET_SYSCALL and get_syscall_nr(). Explicitly test for -1 in PTRACE_SET_SYSCALL and get_syscall_nr(), leaving it exposed when present, allowing tracers to skip syscalls again. Cc: Russell King Cc: Arnd Bergmann Cc: Lecopzer Chen Cc: Oleg Nesterov Cc: linux-arm-kernel@lists.infradead.org Fixes: 4e57a4ddf6b0 ("ARM: 9107/1: syscall: always store thread_info->abi_syscall") Reviewed-by: Arnd Bergmann Link: https://lore.kernel.org/r/20230810195422.2304827-2-keescook@chromium.org Change-Id: I5b13c06a9cca85d13beec809a695198a7696df45 Signed-off-by: Kees Cook (cherry picked from commit 4697b5848bd933f68ebd04836362c8de0cacaf71) Bug: 289991100 Signed-off-by: Edward Liaw --- arch/arm/include/asm/syscall.h | 3 +++ arch/arm/kernel/ptrace.c | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/arm/include/asm/syscall.h b/arch/arm/include/asm/syscall.h index dfeed440254a..fe4326d938c1 100644 --- a/arch/arm/include/asm/syscall.h +++ b/arch/arm/include/asm/syscall.h @@ -25,6 +25,9 @@ static inline int syscall_get_nr(struct task_struct *task, if (IS_ENABLED(CONFIG_AEABI) && !IS_ENABLED(CONFIG_OABI_COMPAT)) return task_thread_info(task)->abi_syscall; + if (task_thread_info(task)->abi_syscall == -1) + return -1; + return task_thread_info(task)->abi_syscall & __NR_SYSCALL_MASK; } diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index bfe88c6e60d5..cef106913ab7 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c @@ -785,8 +785,9 @@ long arch_ptrace(struct task_struct *child, long request, break; case PTRACE_SET_SYSCALL: - task_thread_info(child)->abi_syscall = data & - __NR_SYSCALL_MASK; + if (data != -1) + data &= __NR_SYSCALL_MASK; + task_thread_info(child)->abi_syscall = data; ret = 0; break; From 7999b48d761edd5c4ce6b19355e31336f79e1db4 Mon Sep 17 00:00:00 2001 From: valis Date: Fri, 1 Sep 2023 12:22:37 -0400 Subject: [PATCH 39/99] UPSTREAM: net: sched: sch_qfq: Fix UAF in qfq_dequeue() [ Upstream commit 8fc134fee27f2263988ae38920bc03da416b03d8 ] When the plug qdisc is used as a class of the qfq qdisc it could trigger a UAF. This issue can be reproduced with following commands: tc qdisc add dev lo root handle 1: qfq tc class add dev lo parent 1: classid 1:1 qfq weight 1 maxpkt 512 tc qdisc add dev lo parent 1:1 handle 2: plug tc filter add dev lo parent 1: basic classid 1:1 ping -c1 127.0.0.1 and boom: [ 285.353793] BUG: KASAN: slab-use-after-free in qfq_dequeue+0xa7/0x7f0 [ 285.354910] Read of size 4 at addr ffff8880bad312a8 by task ping/144 [ 285.355903] [ 285.356165] CPU: 1 PID: 144 Comm: ping Not tainted 6.5.0-rc3+ #4 [ 285.357112] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014 [ 285.358376] Call Trace: [ 285.358773] [ 285.359109] dump_stack_lvl+0x44/0x60 [ 285.359708] print_address_description.constprop.0+0x2c/0x3c0 [ 285.360611] kasan_report+0x10c/0x120 [ 285.361195] ? qfq_dequeue+0xa7/0x7f0 [ 285.361780] qfq_dequeue+0xa7/0x7f0 [ 285.362342] __qdisc_run+0xf1/0x970 [ 285.362903] net_tx_action+0x28e/0x460 [ 285.363502] __do_softirq+0x11b/0x3de [ 285.364097] do_softirq.part.0+0x72/0x90 [ 285.364721] [ 285.365072] [ 285.365422] __local_bh_enable_ip+0x77/0x90 [ 285.366079] __dev_queue_xmit+0x95f/0x1550 [ 285.366732] ? __pfx_csum_and_copy_from_iter+0x10/0x10 [ 285.367526] ? __pfx___dev_queue_xmit+0x10/0x10 [ 285.368259] ? __build_skb_around+0x129/0x190 [ 285.368960] ? ip_generic_getfrag+0x12c/0x170 [ 285.369653] ? __pfx_ip_generic_getfrag+0x10/0x10 [ 285.370390] ? csum_partial+0x8/0x20 [ 285.370961] ? raw_getfrag+0xe5/0x140 [ 285.371559] ip_finish_output2+0x539/0xa40 [ 285.372222] ? __pfx_ip_finish_output2+0x10/0x10 [ 285.372954] ip_output+0x113/0x1e0 [ 285.373512] ? __pfx_ip_output+0x10/0x10 [ 285.374130] ? icmp_out_count+0x49/0x60 [ 285.374739] ? __pfx_ip_finish_output+0x10/0x10 [ 285.375457] ip_push_pending_frames+0xf3/0x100 [ 285.376173] raw_sendmsg+0xef5/0x12d0 [ 285.376760] ? do_syscall_64+0x40/0x90 [ 285.377359] ? __static_call_text_end+0x136578/0x136578 [ 285.378173] ? do_syscall_64+0x40/0x90 [ 285.378772] ? kasan_enable_current+0x11/0x20 [ 285.379469] ? __pfx_raw_sendmsg+0x10/0x10 [ 285.380137] ? __sock_create+0x13e/0x270 [ 285.380673] ? __sys_socket+0xf3/0x180 [ 285.381174] ? __x64_sys_socket+0x3d/0x50 [ 285.381725] ? entry_SYSCALL_64_after_hwframe+0x6e/0xd8 [ 285.382425] ? __rcu_read_unlock+0x48/0x70 [ 285.382975] ? ip4_datagram_release_cb+0xd8/0x380 [ 285.383608] ? __pfx_ip4_datagram_release_cb+0x10/0x10 [ 285.384295] ? preempt_count_sub+0x14/0xc0 [ 285.384844] ? __list_del_entry_valid+0x76/0x140 [ 285.385467] ? _raw_spin_lock_bh+0x87/0xe0 [ 285.386014] ? __pfx__raw_spin_lock_bh+0x10/0x10 [ 285.386645] ? release_sock+0xa0/0xd0 [ 285.387148] ? preempt_count_sub+0x14/0xc0 [ 285.387712] ? freeze_secondary_cpus+0x348/0x3c0 [ 285.388341] ? aa_sk_perm+0x177/0x390 [ 285.388856] ? __pfx_aa_sk_perm+0x10/0x10 [ 285.389441] ? check_stack_object+0x22/0x70 [ 285.390032] ? inet_send_prepare+0x2f/0x120 [ 285.390603] ? __pfx_inet_sendmsg+0x10/0x10 [ 285.391172] sock_sendmsg+0xcc/0xe0 [ 285.391667] __sys_sendto+0x190/0x230 [ 285.392168] ? __pfx___sys_sendto+0x10/0x10 [ 285.392727] ? kvm_clock_get_cycles+0x14/0x30 [ 285.393328] ? set_normalized_timespec64+0x57/0x70 [ 285.393980] ? _raw_spin_unlock_irq+0x1b/0x40 [ 285.394578] ? __x64_sys_clock_gettime+0x11c/0x160 [ 285.395225] ? __pfx___x64_sys_clock_gettime+0x10/0x10 [ 285.395908] ? _copy_to_user+0x3e/0x60 [ 285.396432] ? exit_to_user_mode_prepare+0x1a/0x120 [ 285.397086] ? syscall_exit_to_user_mode+0x22/0x50 [ 285.397734] ? do_syscall_64+0x71/0x90 [ 285.398258] __x64_sys_sendto+0x74/0x90 [ 285.398786] do_syscall_64+0x64/0x90 [ 285.399273] ? exit_to_user_mode_prepare+0x1a/0x120 [ 285.399949] ? syscall_exit_to_user_mode+0x22/0x50 [ 285.400605] ? do_syscall_64+0x71/0x90 [ 285.401124] entry_SYSCALL_64_after_hwframe+0x6e/0xd8 [ 285.401807] RIP: 0033:0x495726 [ 285.402233] Code: ff ff ff f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 11 b8 2c 00 00 00 0f 09 [ 285.404683] RSP: 002b:00007ffcc25fb618 EFLAGS: 00000246 ORIG_RAX: 000000000000002c [ 285.405677] RAX: ffffffffffffffda RBX: 0000000000000040 RCX: 0000000000495726 [ 285.406628] RDX: 0000000000000040 RSI: 0000000002518750 RDI: 0000000000000000 [ 285.407565] RBP: 00000000005205ef R08: 00000000005f8838 R09: 000000000000001c [ 285.408523] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000002517634 [ 285.409460] R13: 00007ffcc25fb6f0 R14: 0000000000000003 R15: 0000000000000000 [ 285.410403] [ 285.410704] [ 285.410929] Allocated by task 144: [ 285.411402] kasan_save_stack+0x1e/0x40 [ 285.411926] kasan_set_track+0x21/0x30 [ 285.412442] __kasan_slab_alloc+0x55/0x70 [ 285.412973] kmem_cache_alloc_node+0x187/0x3d0 [ 285.413567] __alloc_skb+0x1b4/0x230 [ 285.414060] __ip_append_data+0x17f7/0x1b60 [ 285.414633] ip_append_data+0x97/0xf0 [ 285.415144] raw_sendmsg+0x5a8/0x12d0 [ 285.415640] sock_sendmsg+0xcc/0xe0 [ 285.416117] __sys_sendto+0x190/0x230 [ 285.416626] __x64_sys_sendto+0x74/0x90 [ 285.417145] do_syscall_64+0x64/0x90 [ 285.417624] entry_SYSCALL_64_after_hwframe+0x6e/0xd8 [ 285.418306] [ 285.418531] Freed by task 144: [ 285.418960] kasan_save_stack+0x1e/0x40 [ 285.419469] kasan_set_track+0x21/0x30 [ 285.419988] kasan_save_free_info+0x27/0x40 [ 285.420556] ____kasan_slab_free+0x109/0x1a0 [ 285.421146] kmem_cache_free+0x1c2/0x450 [ 285.421680] __netif_receive_skb_core+0x2ce/0x1870 [ 285.422333] __netif_receive_skb_one_core+0x97/0x140 [ 285.423003] process_backlog+0x100/0x2f0 [ 285.423537] __napi_poll+0x5c/0x2d0 [ 285.424023] net_rx_action+0x2be/0x560 [ 285.424510] __do_softirq+0x11b/0x3de [ 285.425034] [ 285.425254] The buggy address belongs to the object at ffff8880bad31280 [ 285.425254] which belongs to the cache skbuff_head_cache of size 224 [ 285.426993] The buggy address is located 40 bytes inside of [ 285.426993] freed 224-byte region [ffff8880bad31280, ffff8880bad31360) [ 285.428572] [ 285.428798] The buggy address belongs to the physical page: [ 285.429540] page:00000000f4b77674 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0xbad31 [ 285.430758] flags: 0x100000000000200(slab|node=0|zone=1) [ 285.431447] page_type: 0xffffffff() [ 285.431934] raw: 0100000000000200 ffff88810094a8c0 dead000000000122 0000000000000000 [ 285.432757] raw: 0000000000000000 00000000800c000c 00000001ffffffff 0000000000000000 [ 285.433562] page dumped because: kasan: bad access detected [ 285.434144] [ 285.434320] Memory state around the buggy address: [ 285.434828] ffff8880bad31180: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc [ 285.435580] ffff8880bad31200: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc [ 285.436264] >ffff8880bad31280: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb [ 285.436777] ^ [ 285.437106] ffff8880bad31300: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc [ 285.437616] ffff8880bad31380: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc [ 285.438126] ================================================================== [ 285.438662] Disabling lock debugging due to kernel taint Fix this by: 1. Changing sch_plug's .peek handler to qdisc_peek_dequeued(), a function compatible with non-work-conserving qdiscs 2. Checking the return value of qdisc_dequeue_peeked() in sch_qfq. Bug: 300131820 Fixes: 462dbc9101ac ("pkt_sched: QFQ Plus: fair-queueing service at DRR cost") Reported-by: valis Signed-off-by: valis Signed-off-by: Jamal Hadi Salim Link: https://lore.kernel.org/r/20230901162237.11525-1-jhs@mojatatu.com Signed-off-by: Paolo Abeni Signed-off-by: Sasha Levin (cherry picked from commit a18349dc8d916a64d7c93f05da98953e3386d8e9) Signed-off-by: Lee Jones Change-Id: I2be4a7b7eb1448df8281c145ee2ca441bd746c9a --- net/sched/sch_plug.c | 2 +- net/sched/sch_qfq.c | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/net/sched/sch_plug.c b/net/sched/sch_plug.c index ea8c4a7174bb..35f49edf63db 100644 --- a/net/sched/sch_plug.c +++ b/net/sched/sch_plug.c @@ -207,7 +207,7 @@ static struct Qdisc_ops plug_qdisc_ops __read_mostly = { .priv_size = sizeof(struct plug_sched_data), .enqueue = plug_enqueue, .dequeue = plug_dequeue, - .peek = qdisc_peek_head, + .peek = qdisc_peek_dequeued, .init = plug_init, .change = plug_change, .reset = qdisc_reset_queue, diff --git a/net/sched/sch_qfq.c b/net/sched/sch_qfq.c index d5610e145da2..2a824c2a8037 100644 --- a/net/sched/sch_qfq.c +++ b/net/sched/sch_qfq.c @@ -966,10 +966,13 @@ static void qfq_update_eligible(struct qfq_sched *q) } /* Dequeue head packet of the head class in the DRR queue of the aggregate. */ -static void agg_dequeue(struct qfq_aggregate *agg, - struct qfq_class *cl, unsigned int len) +static struct sk_buff *agg_dequeue(struct qfq_aggregate *agg, + struct qfq_class *cl, unsigned int len) { - qdisc_dequeue_peeked(cl->qdisc); + struct sk_buff *skb = qdisc_dequeue_peeked(cl->qdisc); + + if (!skb) + return NULL; cl->deficit -= (int) len; @@ -979,6 +982,8 @@ static void agg_dequeue(struct qfq_aggregate *agg, cl->deficit += agg->lmax; list_move_tail(&cl->alist, &agg->active); } + + return skb; } static inline struct sk_buff *qfq_peek_skb(struct qfq_aggregate *agg, @@ -1124,11 +1129,18 @@ static struct sk_buff *qfq_dequeue(struct Qdisc *sch) if (!skb) return NULL; - qdisc_qstats_backlog_dec(sch, skb); sch->q.qlen--; + + skb = agg_dequeue(in_serv_agg, cl, len); + + if (!skb) { + sch->q.qlen++; + return NULL; + } + + qdisc_qstats_backlog_dec(sch, skb); qdisc_bstats_update(sch, skb); - agg_dequeue(in_serv_agg, cl, len); /* If lmax is lowered, through qfq_change_class, for a class * owning pending packets with larger size than the new value * of lmax, then the following condition may hold. From 6305df8009f950691451fc87e24822f9f78d9592 Mon Sep 17 00:00:00 2001 From: Xin Liu Date: Thu, 6 Apr 2023 20:26:22 +0800 Subject: [PATCH 40/99] UPSTREAM: bpf, sockmap: fix deadlocks in the sockhash and sockmap [ Upstream commit ed17aa92dc56b6d8883e4b7a8f1c6fbf5ed6cd29 ] When huang uses sched_switch tracepoint, the tracepoint does only one thing in the mounted ebpf program, which deletes the fixed elements in sockhash ([0]) It seems that elements in sockhash are rarely actively deleted by users or ebpf program. Therefore, we do not pay much attention to their deletion. Compared with hash maps, sockhash only provides spin_lock_bh protection. This causes it to appear to have self-locking behavior in the interrupt context. [0]:https://lore.kernel.org/all/CABcoxUayum5oOqFMMqAeWuS8+EzojquSOSyDA3J_2omY=2EeAg@mail.gmail.com/ Bug: 293551383 Reported-by: Hsin-Wei Hung Fixes: 604326b41a6f ("bpf, sockmap: convert to generic sk_msg interface") Signed-off-by: Xin Liu Acked-by: John Fastabend Link: https://lore.kernel.org/r/20230406122622.109978-1-liuxin350@huawei.com Signed-off-by: Alexei Starovoitov Signed-off-by: Sasha Levin (cherry picked from commit f333854dce4a079783f00c201869b9ee8f7ff3c3) Signed-off-by: Lee Jones Change-Id: I913aa014f16e294ab9f9fec04d3e63afb8aa803f --- net/core/sock_map.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/net/core/sock_map.c b/net/core/sock_map.c index d38267201892..7904811ff62d 100644 --- a/net/core/sock_map.c +++ b/net/core/sock_map.c @@ -414,8 +414,9 @@ static int __sock_map_delete(struct bpf_stab *stab, struct sock *sk_test, { struct sock *sk; int err = 0; + unsigned long flags; - raw_spin_lock_bh(&stab->lock); + raw_spin_lock_irqsave(&stab->lock, flags); sk = *psk; if (!sk_test || sk_test == sk) sk = xchg(psk, NULL); @@ -425,7 +426,7 @@ static int __sock_map_delete(struct bpf_stab *stab, struct sock *sk_test, else err = -EINVAL; - raw_spin_unlock_bh(&stab->lock); + raw_spin_unlock_irqrestore(&stab->lock, flags); return err; } @@ -923,11 +924,12 @@ static int sock_hash_delete_elem(struct bpf_map *map, void *key) struct bpf_shtab_bucket *bucket; struct bpf_shtab_elem *elem; int ret = -ENOENT; + unsigned long flags; hash = sock_hash_bucket_hash(key, key_size); bucket = sock_hash_select_bucket(htab, hash); - raw_spin_lock_bh(&bucket->lock); + raw_spin_lock_irqsave(&bucket->lock, flags); elem = sock_hash_lookup_elem_raw(&bucket->head, hash, key, key_size); if (elem) { hlist_del_rcu(&elem->node); @@ -935,7 +937,7 @@ static int sock_hash_delete_elem(struct bpf_map *map, void *key) sock_hash_free_elem(htab, elem); ret = 0; } - raw_spin_unlock_bh(&bucket->lock); + raw_spin_unlock_irqrestore(&bucket->lock, flags); return ret; } From c240f4ed005492fe9b3169c885cca876ed72718c Mon Sep 17 00:00:00 2001 From: Prakruthi Deepak Heragu Date: Tue, 19 Sep 2023 13:03:48 -0700 Subject: [PATCH 41/99] ANDROID: gunyah: Convert mutex_lock_interruptible to mutex_lock Crosvm thread can get interrupted while making a call to the Resource Manager. If we wait on mutext_lock_interruptible, the RM call might be incomplete and as part of the cleanup if there are further RM calls that need to be made, they will also return without making the RM call because there is a signal on the thread. Use mutex_lock while making the RM calls to ensure the RM call completes and only if there is a geniune error, we can clean up. Bug: 302322730 Change-Id: I961aa917588a72bb8733e6f80d80f3ceed179076 Signed-off-by: Prakruthi Deepak Heragu --- drivers/virt/gunyah/rsc_mgr.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/virt/gunyah/rsc_mgr.c b/drivers/virt/gunyah/rsc_mgr.c index dd6fe39f652d..170a2d37da68 100644 --- a/drivers/virt/gunyah/rsc_mgr.c +++ b/drivers/virt/gunyah/rsc_mgr.c @@ -567,10 +567,7 @@ static int gh_rm_send_request(struct gh_rm *rm, u32 message_id, hdr_template.seq = cpu_to_le16(connection->reply.seq); hdr_template.msg_id = cpu_to_le32(message_id); - ret = mutex_lock_interruptible(&rm->send_lock); - if (ret) - return ret; - + mutex_lock(&rm->send_lock); do { msg = kmem_cache_zalloc(rm->cache, GFP_KERNEL); if (!msg) { From 45fe413fdfdbcb6b206cb880fe0b10bfd72afbb4 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Thu, 28 Sep 2023 11:30:27 -0700 Subject: [PATCH 42/99] ANDROID: gki_defconfig: Enable CONFIG_BLK_CGROUP_IOPRIO Prepare for supporting I/O priority in the storage stack. Bug: 186902601 Change-Id: I387ac4792c89d88d131c5146b116a0393c01b096 Signed-off-by: Bart Van Assche --- arch/arm64/configs/gki_defconfig | 1 + arch/x86/configs/gki_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index ceaf2f1fdeab..abf7b41cdc85 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -95,6 +95,7 @@ CONFIG_MODPROBE_PATH="/system/bin/modprobe" CONFIG_BLK_DEV_ZONED=y CONFIG_BLK_DEV_THROTTLING=y CONFIG_BLK_CGROUP_IOCOST=y +CONFIG_BLK_CGROUP_IOPRIO=y CONFIG_BLK_INLINE_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y CONFIG_IOSCHED_BFQ=y diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 6307a0128691..34a85587c4f4 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -90,6 +90,7 @@ CONFIG_MODULE_SIG_PROTECT=y CONFIG_BLK_DEV_ZONED=y CONFIG_BLK_DEV_THROTTLING=y CONFIG_BLK_CGROUP_IOCOST=y +CONFIG_BLK_CGROUP_IOPRIO=y CONFIG_BLK_INLINE_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y CONFIG_IOSCHED_BFQ=y From 89815ec1031273755865c5573840b86a3dd1b03c Mon Sep 17 00:00:00 2001 From: Zichun Zheng Date: Wed, 27 Sep 2023 14:08:55 +0800 Subject: [PATCH 43/99] ANDROID: GKI: export symbols to do reverse mapping within memcg and modify lru stats Export the symbols below to modify LRU state: root_mem_cgroup __mod_lruvec_state mem_cgroup_update_lru_size folio_referenced Bug: 302230539 Change-Id: I27ac888f0fa09981ef4497bc04e4254318af7077 Signed-off-by: Zichun Zheng --- mm/memcontrol.c | 3 +++ mm/rmap.c | 1 + 2 files changed, 4 insertions(+) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 5879b5d6b483..cb9289925915 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -78,6 +78,7 @@ struct cgroup_subsys memory_cgrp_subsys __read_mostly; EXPORT_SYMBOL(memory_cgrp_subsys); struct mem_cgroup *root_mem_cgroup __read_mostly; +EXPORT_SYMBOL_GPL(root_mem_cgroup); /* Active memory cgroup to use from an interrupt context */ DEFINE_PER_CPU(struct mem_cgroup *, int_active_memcg); @@ -827,6 +828,7 @@ void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, if (!mem_cgroup_disabled()) __mod_memcg_lruvec_state(lruvec, idx, val); } +EXPORT_SYMBOL_GPL(__mod_lruvec_state); void __mod_lruvec_page_state(struct page *page, enum node_stat_item idx, int val) @@ -1392,6 +1394,7 @@ void mem_cgroup_update_lru_size(struct lruvec *lruvec, enum lru_list lru, if (nr_pages > 0) *lru_size += nr_pages; } +EXPORT_SYMBOL_GPL(mem_cgroup_update_lru_size); /** * mem_cgroup_margin - calculate chargeable space of a memory cgroup diff --git a/mm/rmap.c b/mm/rmap.c index d1603eb79818..707de1aa3ceb 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -936,6 +936,7 @@ int folio_referenced(struct folio *folio, int is_locked, return rwc.contended ? -1 : pra.referenced; } +EXPORT_SYMBOL_GPL(folio_referenced); static int page_vma_mkclean_one(struct page_vma_mapped_walk *pvmw) { From dce183489559069edea2c9b640f17dbf53df04a9 Mon Sep 17 00:00:00 2001 From: Zichun Zheng Date: Wed, 27 Sep 2023 14:22:32 +0800 Subject: [PATCH 44/99] ANDROID: ABI: Update oplus symbol list 7 function symbol(s) added 'void __mod_lruvec_state(struct lruvec*, enum node_stat_item, int)' 'void __mod_zone_page_state(struct zone*, enum zone_stat_item, long)' 'void folio_add_lru(struct folio*)' 'struct address_space* folio_mapping(struct folio*)' 'int folio_referenced(struct folio*, int, struct mem_cgroup*, unsigned long*)' 'void mem_cgroup_update_lru_size(struct lruvec*, enum lru_list, int, int)' 'void put_pages_list(struct list_head*)' 1 variable symbol(s) added 'struct mem_cgroup* root_mem_cgroup' Bug: 302230539 Change-Id: I34bf400a9f09aa593ccba4dad8a94e87c9b32468 Signed-off-by: Zichun Zheng --- android/abi_gki_aarch64.stg | 145 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_oplus | 8 ++ 2 files changed, 153 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 74bb2ec6f063..2b510f7b2a73 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -277949,6 +277949,36 @@ enumeration { } } } +enumeration { + id: 0x0d164218 + name: "lru_list" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "LRU_INACTIVE_ANON" + } + enumerator { + name: "LRU_ACTIVE_ANON" + value: 1 + } + enumerator { + name: "LRU_INACTIVE_FILE" + value: 2 + } + enumerator { + name: "LRU_ACTIVE_FILE" + value: 3 + } + enumerator { + name: "LRU_UNEVICTABLE" + value: 4 + } + enumerator { + name: "NR_LRU_LISTS" + value: 5 + } + } +} enumeration { id: 0x0b05beb9 name: "macsec_offload" @@ -287169,6 +287199,13 @@ function { parameter_id: 0x0258f96e parameter_id: 0x3e10b518 } +function { + id: 0x11584934 + return_type_id: 0x48b5725f + parameter_id: 0x0a63398f + parameter_id: 0xd9f550d1 + parameter_id: 0xfc0e1dbd +} function { id: 0x115a73a0 return_type_id: 0x48b5725f @@ -295721,6 +295758,13 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3ba261b0 } +function { + id: 0x1e768676 + return_type_id: 0x48b5725f + parameter_id: 0x39182992 + parameter_id: 0x2c456d6d + parameter_id: 0x6720d32f +} function { id: 0x1e7a9dc2 return_type_id: 0x48b5725f @@ -296151,6 +296195,14 @@ function { return_type_id: 0x48b5725f parameter_id: 0x39a4e83f } +function { + id: 0x1ef25648 + return_type_id: 0x48b5725f + parameter_id: 0x39182992 + parameter_id: 0x0d164218 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0x1ef27e10 return_type_id: 0x48b5725f @@ -300700,6 +300752,11 @@ function { parameter_id: 0x21003da7 parameter_id: 0x31b5a66f } +function { + id: 0x637004ab + return_type_id: 0x1582ab06 + parameter_id: 0x2170d06d +} function { id: 0x6408a046 return_type_id: 0x054f691a @@ -308164,6 +308221,14 @@ function { parameter_id: 0x234c60dd parameter_id: 0x4585663f } +function { + id: 0x94471ba6 + return_type_id: 0x6720d32f + parameter_id: 0x2170d06d + parameter_id: 0x6720d32f + parameter_id: 0x1d5bae2a + parameter_id: 0x064d6086 +} function { id: 0x944726c2 return_type_id: 0x6720d32f @@ -331174,6 +331239,24 @@ elf_symbol { type_id: 0x1655e07b full_name: "__mmdrop" } +elf_symbol { + id: 0x68d1b187 + name: "__mod_lruvec_state" + is_defined: true + symbol_type: FUNCTION + crc: 0x0ab46d8d + type_id: 0x1e768676 + full_name: "__mod_lruvec_state" +} +elf_symbol { + id: 0x9de4c040 + name: "__mod_zone_page_state" + is_defined: true + symbol_type: FUNCTION + crc: 0x0683f992 + type_id: 0x11584934 + full_name: "__mod_zone_page_state" +} elf_symbol { id: 0x89d01efd name: "__module_get" @@ -356471,6 +356554,33 @@ elf_symbol { type_id: 0xfdf39d0a full_name: "flush_work" } +elf_symbol { + id: 0x06c58be7 + name: "folio_add_lru" + is_defined: true + symbol_type: FUNCTION + crc: 0x42a88286 + type_id: 0x18c46588 + full_name: "folio_add_lru" +} +elf_symbol { + id: 0x159a69a3 + name: "folio_mapping" + is_defined: true + symbol_type: FUNCTION + crc: 0xad0ae85f + type_id: 0x637004ab + full_name: "folio_mapping" +} +elf_symbol { + id: 0x39840ab2 + name: "folio_referenced" + is_defined: true + symbol_type: FUNCTION + crc: 0x6114128f + type_id: 0x94471ba6 + full_name: "folio_referenced" +} elf_symbol { id: 0x3dca9a13 name: "folio_wait_bit" @@ -366042,6 +366152,15 @@ elf_symbol { type_id: 0x59f18b0b full_name: "mem_cgroup_from_id" } +elf_symbol { + id: 0x6da682ae + name: "mem_cgroup_update_lru_size" + is_defined: true + symbol_type: FUNCTION + crc: 0x351f9cbb + type_id: 0x1ef25648 + full_name: "mem_cgroup_update_lru_size" +} elf_symbol { id: 0x7f797603 name: "mem_dump_obj" @@ -374591,6 +374710,15 @@ elf_symbol { type_id: 0x1f796a1c full_name: "put_iova_domain" } +elf_symbol { + id: 0xb9bfc7b9 + name: "put_pages_list" + is_defined: true + symbol_type: FUNCTION + crc: 0xf0009fee + type_id: 0x1f00dfeb + full_name: "put_pages_list" +} elf_symbol { id: 0x1744651d name: "put_pid" @@ -377111,6 +377239,15 @@ elf_symbol { type_id: 0x100e6fc8 full_name: "root_device_unregister" } +elf_symbol { + id: 0xbd83c333 + name: "root_mem_cgroup" + is_defined: true + symbol_type: OBJECT + crc: 0x9ab36151 + type_id: 0x1d5bae2a + full_name: "root_mem_cgroup" +} elf_symbol { id: 0x7d858174 name: "root_task_group" @@ -394055,6 +394192,8 @@ interface { symbol_id: 0x0ba13d85 symbol_id: 0x479db511 symbol_id: 0x603dcc7d + symbol_id: 0x68d1b187 + symbol_id: 0x9de4c040 symbol_id: 0x89d01efd symbol_id: 0xf680e61c symbol_id: 0x4cfc63ca @@ -396865,6 +397004,9 @@ interface { symbol_id: 0xb290a148 symbol_id: 0x09d08108 symbol_id: 0x3c7c2553 + symbol_id: 0x06c58be7 + symbol_id: 0x159a69a3 + symbol_id: 0x39840ab2 symbol_id: 0x3dca9a13 symbol_id: 0x07508208 symbol_id: 0xcb14b5cc @@ -397928,6 +398070,7 @@ interface { symbol_id: 0xa848deda symbol_id: 0x8eadb5fd symbol_id: 0x140f40dd + symbol_id: 0x6da682ae symbol_id: 0x7f797603 symbol_id: 0x01e78001 symbol_id: 0x746374fa @@ -398878,6 +399021,7 @@ interface { symbol_id: 0x435b99c6 symbol_id: 0x5db8ecdc symbol_id: 0x01768311 + symbol_id: 0xb9bfc7b9 symbol_id: 0x1744651d symbol_id: 0x9103dd70 symbol_id: 0xffdd03be @@ -399158,6 +399302,7 @@ interface { symbol_id: 0x6af2dc93 symbol_id: 0x56f4af9c symbol_id: 0x93ee7a0f + symbol_id: 0xbd83c333 symbol_id: 0x7d858174 symbol_id: 0x0e66eaf7 symbol_id: 0x81bce56b diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 731ca5a89595..8976672a1927 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -20,6 +20,9 @@ down_read_trylock drm_crtc_vblank_waitqueue filp_close + folio_add_lru + folio_mapping + folio_referenced for_each_kernel_tracepoint freq_qos_add_notifier freq_qos_remove_notifier @@ -42,11 +45,14 @@ jiffies_64_to_clock_t kick_process ktime_get_coarse_real_ts64 + mem_cgroup_update_lru_size memory_cgrp_subsys memory_cgrp_subsys_enabled_key mem_cgroup_from_id mipi_dsi_generic_write mmc_wait_for_cmd + __mod_lruvec_state + __mod_zone_page_state nf_ct_attach nf_ct_delete nf_register_net_hook @@ -62,6 +68,7 @@ prepare_to_wait_exclusive proc_symlink public_key_verify_signature + put_pages_list radix_tree_lookup_slot radix_tree_replace_slot _raw_write_trylock @@ -69,6 +76,7 @@ register_tcf_proto_ops regulator_map_voltage_linear_range remove_proc_subtree + root_mem_cgroup rtc_read_alarm rtc_set_alarm __rtnl_link_unregister From 52824b718cd06f98f41359a2a8d874d3d07c6f62 Mon Sep 17 00:00:00 2001 From: Hou Tao Date: Fri, 28 Apr 2023 15:44:04 +0800 Subject: [PATCH 45/99] UPSTREAM: blk-ioprio: Introduce promote-to-rt policy Since commit a78418e6a04c ("block: Always initialize bio IO priority on submit"), bio->bi_ioprio will never be IOPRIO_CLASS_NONE when calling blkcg_set_ioprio(), so there will be no way to promote the io-priority of one cgroup to IOPRIO_CLASS_RT, because bi_ioprio will always be greater than or equals to IOPRIO_CLASS_RT. It seems possible to call blkcg_set_ioprio() first then try to initialize bi_ioprio later in bio_set_ioprio(), but this doesn't work for bio in which bi_ioprio is already initialized (e.g., direct-io), so introduce a new promote-to-rt policy to promote the iopriority of bio to IOPRIO_CLASS_RT if the ioprio is not already RT. For none-to-rt policy, although it doesn't work now, but considering that its purpose was also to override the io-priority to RT and allowing for a smoother transition, just keep it and treat it as an alias of the promote-to-rt policy. Acked-by: Tejun Heo Reviewed-by: Bart Van Assche Reviewed-by: Chaitanya Kulkarni Reviewed-by: Jan Kara Change-Id: I1f511e8dca604fdb3249562ea73adb69b93a8aec Signed-off-by: Hou Tao Reviewed-by: Bagas Sanjaya Link: https://lore.kernel.org/r/20230428074404.280532-1-houtao@huaweicloud.com Signed-off-by: Jens Axboe (cherry picked from commit ddf63516d8d37528dc6834c7f19b55084e956068) Bug: 186902601 Signed-off-by: Bart Van Assche --- Documentation/admin-guide/cgroup-v2.rst | 42 ++++++++++++++----------- block/blk-ioprio.c | 23 ++++++++++++-- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst index dc254a3cb956..632bba4e8a1d 100644 --- a/Documentation/admin-guide/cgroup-v2.rst +++ b/Documentation/admin-guide/cgroup-v2.rst @@ -2015,31 +2015,33 @@ that attribute: no-change Do not modify the I/O priority class. - none-to-rt - For requests that do not have an I/O priority class (NONE), - change the I/O priority class into RT. Do not modify - the I/O priority class of other requests. + promote-to-rt + For requests that have a non-RT I/O priority class, change it into RT. + Also change the priority level of these requests to 4. Do not modify + the I/O priority of requests that have priority class RT. restrict-to-be For requests that do not have an I/O priority class or that have I/O - priority class RT, change it into BE. Do not modify the I/O priority - class of requests that have priority class IDLE. + priority class RT, change it into BE. Also change the priority level + of these requests to 0. Do not modify the I/O priority class of + requests that have priority class IDLE. idle Change the I/O priority class of all requests into IDLE, the lowest I/O priority class. + none-to-rt + Deprecated. Just an alias for promote-to-rt. + The following numerical values are associated with the I/O priority policies: -+-------------+---+ -| no-change | 0 | -+-------------+---+ -| none-to-rt | 1 | -+-------------+---+ -| rt-to-be | 2 | -+-------------+---+ -| all-to-idle | 3 | -+-------------+---+ ++----------------+---+ +| no-change | 0 | ++----------------+---+ +| rt-to-be | 2 | ++----------------+---+ +| all-to-idle | 3 | ++----------------+---+ The numerical value that corresponds to each I/O priority class is as follows: @@ -2055,9 +2057,13 @@ The numerical value that corresponds to each I/O priority class is as follows: The algorithm to set the I/O priority class for a request is as follows: -- Translate the I/O priority class policy into a number. -- Change the request I/O priority class into the maximum of the I/O priority - class policy number and the numerical I/O priority class. +- If I/O priority class policy is promote-to-rt, change the request I/O + priority class to IOPRIO_CLASS_RT and change the request I/O priority + level to 4. +- If I/O priorityt class is not promote-to-rt, translate the I/O priority + class policy into a number, then change the request I/O priority class + into the maximum of the I/O priority class policy number and the numerical + I/O priority class. PID --- diff --git a/block/blk-ioprio.c b/block/blk-ioprio.c index 8bb6b8eba4ce..4eba569d4823 100644 --- a/block/blk-ioprio.c +++ b/block/blk-ioprio.c @@ -23,25 +23,28 @@ /** * enum prio_policy - I/O priority class policy. * @POLICY_NO_CHANGE: (default) do not modify the I/O priority class. - * @POLICY_NONE_TO_RT: modify IOPRIO_CLASS_NONE into IOPRIO_CLASS_RT. + * @POLICY_PROMOTE_TO_RT: modify no-IOPRIO_CLASS_RT to IOPRIO_CLASS_RT. * @POLICY_RESTRICT_TO_BE: modify IOPRIO_CLASS_NONE and IOPRIO_CLASS_RT into * IOPRIO_CLASS_BE. * @POLICY_ALL_TO_IDLE: change the I/O priority class into IOPRIO_CLASS_IDLE. + * @POLICY_NONE_TO_RT: an alias for POLICY_PROMOTE_TO_RT. * * See also . */ enum prio_policy { POLICY_NO_CHANGE = 0, - POLICY_NONE_TO_RT = 1, + POLICY_PROMOTE_TO_RT = 1, POLICY_RESTRICT_TO_BE = 2, POLICY_ALL_TO_IDLE = 3, + POLICY_NONE_TO_RT = 4, }; static const char *policy_name[] = { [POLICY_NO_CHANGE] = "no-change", - [POLICY_NONE_TO_RT] = "none-to-rt", + [POLICY_PROMOTE_TO_RT] = "promote-to-rt", [POLICY_RESTRICT_TO_BE] = "restrict-to-be", [POLICY_ALL_TO_IDLE] = "idle", + [POLICY_NONE_TO_RT] = "none-to-rt", }; static struct blkcg_policy ioprio_policy; @@ -189,6 +192,20 @@ void blkcg_set_ioprio(struct bio *bio) if (!blkcg || blkcg->prio_policy == POLICY_NO_CHANGE) return; + if (blkcg->prio_policy == POLICY_PROMOTE_TO_RT || + blkcg->prio_policy == POLICY_NONE_TO_RT) { + /* + * For RT threads, the default priority level is 4 because + * task_nice is 0. By promoting non-RT io-priority to RT-class + * and default level 4, those requests that are already + * RT-class but need a higher io-priority can use ioprio_set() + * to achieve this. + */ + if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) != IOPRIO_CLASS_RT) + bio->bi_ioprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT, 4); + return; + } + /* * Except for IOPRIO_CLASS_NONE, higher I/O priority numbers * correspond to a lower priority. Hence, the max_t() below selects From cf1ba6a102b6ef962d58eb1fe3ef67994a1a8ab2 Mon Sep 17 00:00:00 2001 From: Hugh Dickins Date: Tue, 22 Aug 2023 22:14:47 -0700 Subject: [PATCH 46/99] UPSTREAM: shmem: fix smaps BUG sleeping while atomic smaps_pte_hole_lookup() is calling shmem_partial_swap_usage() with page table lock held: but shmem_partial_swap_usage() does cond_resched_rcu() if need_resched(): "BUG: sleeping function called from invalid context". Since shmem_partial_swap_usage() is designed to count across a range, but smaps_pte_hole_lookup() only calls it for a single page slot, just break out of the loop on the last or only page, before checking need_resched(). Bug: 302977171 Link: https://lkml.kernel.org/r/6fe3b3ec-abdf-332f-5c23-6a3b3a3b11a9@google.com (cherry picked from commit e5548f85b4527c4c803b7eae7887c10bf8f90c97) Fixes: 230100321518 ("mm/smaps: simplify shmem handling of pte holes") Change-Id: I1b59341c954cb7eb31709ba0dcc65ec6e67c58c6 Signed-off-by: Hugh Dickins Acked-by: Peter Xu Cc: [5.16+] Signed-off-by: Andrew Morton --- mm/shmem.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index f5232a35f04d..90ffdfd35bc6 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -805,14 +805,16 @@ unsigned long shmem_partial_swap_usage(struct address_space *mapping, XA_STATE(xas, &mapping->i_pages, start); struct page *page; unsigned long swapped = 0; + unsigned long max = end - 1; rcu_read_lock(); - xas_for_each(&xas, page, end - 1) { + xas_for_each(&xas, page, max) { if (xas_retry(&xas, page)) continue; if (xa_is_value(page)) swapped++; - + if (xas.xa_index == max) + break; if (need_resched()) { xas_pause(&xas); cond_resched_rcu(); From 5cb3b26d79122cf2b8b876374190012ca5aee440 Mon Sep 17 00:00:00 2001 From: Will McVicker Date: Fri, 29 Sep 2023 14:58:03 -0700 Subject: [PATCH 47/99] ANDROID: ABI: Update the pixel symbol list and stg 23 function symbol(s) added 'int __traceiter_android_vh_typec_tcpm_modify_src_caps(void*, unsigned int*, u32(*)[0], bool*)' 'void* __xa_erase(struct xarray*, unsigned long)' 'void* __xa_store(struct xarray*, unsigned long, void*, gfp_t)' 'unsigned int cpumask_local_spread(unsigned int, int)' 'void devm_memunmap(struct device*, void*)' 'long dma_buf_set_name(struct dma_buf*, const char*)' 'void gether_cleanup(struct eth_dev*)' 'struct net_device* gether_connect(struct gether*)' 'void gether_disconnect(struct gether*)' 'int gether_get_dev_addr(struct net_device*, char*, int)' 'int gether_get_host_addr(struct net_device*, char*, int)' 'void gether_get_host_addr_u8(struct net_device*, u8*)' 'int gether_get_ifname(struct net_device*, char*, int)' 'unsigned int gether_get_qmult(struct net_device*)' 'int gether_register_netdev(struct net_device*)' 'int gether_set_dev_addr(struct net_device*, const char*)' 'void gether_set_gadget(struct net_device*, struct usb_gadget*)' 'int gether_set_host_addr(struct net_device*, const char*)' 'int gether_set_ifname(struct net_device*, const char*, int)' 'void gether_set_qmult(struct net_device*, unsigned int)' 'struct net_device* gether_setup_name_default(const char*)' 'void* xas_find(struct xa_state*, unsigned long)' 'void xas_pause(struct xa_state*)' 1 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_typec_tcpm_modify_src_caps' Adding the following symbols to the pixel symbol list: bpf_trace_run11 cleancache_register_ops cpu_hotplug_disable cpu_hotplug_enable cpuidle_driver_state_disabled cpuidle_get_driver cpumask_local_spread debugfs_create_file_unsafe dev_get_stats __devm_irq_alloc_descs devm_krealloc devm_memremap devm_memunmap __devm_regmap_init_spmi_ext devm_request_any_context_irq devm_thermal_of_zone_unregister dev_vprintk_emit dma_buf_set_name drm_add_edid_modes drm_atomic_bridge_chain_disable drm_atomic_bridge_chain_post_disable drm_atomic_get_new_private_obj_state drm_atomic_get_old_private_obj_state drm_atomic_helper_calc_timestamping_constants drm_atomic_helper_connector_destroy_state drm_atomic_helper_connector_duplicate_state drm_atomic_helper_connector_reset drm_atomic_helper_update_legacy_modeset_state drm_connector_update_edid_property drm_crtc_add_crc_entry __drm_crtc_commit_free drm_crtc_commit_wait drm_crtc_vblank_count __drm_debug drm_detect_monitor_audio __drm_dev_dbg drm_dev_printk drm_display_mode_from_cea_vic drm_do_get_edid drm_edid_duplicate drm_edid_get_monitor_name drm_edid_is_valid drm_edid_to_sad drm_get_edid drm_match_cea_mode drm_mode_copy drm_mode_destroy drm_modeset_lock_single_interruptible drm_object_property_set_value dw_pcie_find_capability dw_pcie_read_dbi dw_pcie_write_dbi __folio_lock fsnotify __fsnotify_parent gether_cleanup gether_connect gether_disconnect gether_get_dev_addr gether_get_host_addr gether_get_host_addr_u8 gether_get_ifname gether_get_qmult gether_register_netdev gether_set_dev_addr gether_set_gadget gether_set_host_addr gether_set_ifname gether_set_qmult gether_setup_name_default __get_task_comm i2c_add_adapter int_pow irq_domain_simple_ops irq_force_affinity memchr_inv mtree_load nf_register_net_hooks nf_unregister_net_hooks of_find_node_with_property proc_symlink rtnl_trylock sched_set_fifo sched_set_normal snd_pcm_hw_constraint_integer snd_soc_set_runtime_hwparams spmi_controller_add spmi_controller_alloc spmi_controller_remove __spmi_driver_register strnchr __tasklet_hi_schedule thermal_zone_get_temp thermal_zone_get_zone_by_name __traceiter_android_rvh_audio_usb_offload_disconnect __traceiter_android_rvh_cgroup_force_kthread_migration __traceiter_android_vh_audio_usb_offload_connect __traceiter_android_vh_typec_tcpm_modify_src_caps __tracepoint_android_rvh_audio_usb_offload_disconnect __tracepoint_android_rvh_cgroup_force_kthread_migration __tracepoint_android_vh_audio_usb_offload_connect __tracepoint_android_vh_typec_tcpm_modify_src_caps ufshcd_auto_hibern8_update usb_assign_descriptors usb_ep_alloc_request usb_ep_disable usb_ep_enable usb_ep_free_request usb_ep_queue usb_free_all_descriptors usb_gstrings_attach usb_os_desc_prepare_interf_dir usb_role_string vm_iomap_memory __xa_erase xas_find xas_pause __xa_store xhci_get_endpoint_index Bug: 269652215 Change-Id: I608904647b4983ab235522ebcebc40dd4c025d77 Signed-off-by: Will McVicker --- android/abi_gki_aarch64.stg | 700 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_pixel | 119 ++++++ 2 files changed, 819 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 2b510f7b2a73..f08da00b7d5d 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -4533,6 +4533,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1e9be71c } +pointer_reference { + id: 0x0d36eefe + kind: POINTER + pointee_type_id: 0x1e9b5d67 +} pointer_reference { id: 0x0d370eee kind: POINTER @@ -4778,6 +4783,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1fee56e5 } +pointer_reference { + id: 0x0d6c28a3 + kind: POINTER + pointee_type_id: 0x1ff04410 +} pointer_reference { id: 0x0d6cb897 kind: POINTER @@ -8408,6 +8418,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x668004f3 } +pointer_reference { + id: 0x13323bbb + kind: POINTER + pointee_type_id: 0x66880871 +} pointer_reference { id: 0x1333434c kind: POINTER @@ -11943,6 +11958,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa405746d } +pointer_reference { + id: 0x239187d3 + kind: POINTER + pointee_type_id: 0xa406f9d2 +} pointer_reference { id: 0x23947191 kind: POINTER @@ -13168,6 +13188,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x8d58e470 } +pointer_reference { + id: 0x29c64ab1 + kind: POINTER + pointee_type_id: 0x8d59cc59 +} pointer_reference { id: 0x29ccb7ed kind: POINTER @@ -19513,6 +19538,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x93907678 } +pointer_reference { + id: 0x2e747a05 + kind: POINTER + pointee_type_id: 0x93910e88 +} pointer_reference { id: 0x2e7505e0 kind: POINTER @@ -25868,6 +25898,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xca69055f } +pointer_reference { + id: 0x380c33d1 + kind: POINTER + pointee_type_id: 0xca7029d8 +} pointer_reference { id: 0x381472e2 kind: POINTER @@ -31298,6 +31333,11 @@ typedef { name: "xa_mark_t" referred_type_id: 0x4585663f } +typedef { + id: 0xa7efd65a + name: "xa_update_node_t" + referred_type_id: 0x0d6c28a3 +} typedef { id: 0x313397f7 name: "xfrm_address_t" @@ -58795,6 +58835,12 @@ member { type_id: 0x60ca2c23 offset: 32 } +member { + id: 0xbf43ebf0 + name: "cdc_filter" + type_id: 0x914dbfdc + offset: 1936 +} member { id: 0x058b41dc name: "cdev" @@ -61965,6 +62011,12 @@ member { type_id: 0x0e1719d7 offset: 64 } +member { + id: 0xcd7ec6ac + name: "close" + type_id: 0x0d36eefe + offset: 2304 +} member { id: 0xcd7edc4f name: "close" @@ -74287,6 +74339,12 @@ member { type_id: 0xd3c80119 offset: 832 } +member { + id: 0x770654c6 + name: "dev_mac" + type_id: 0xabf64f28 + offset: 1544 +} member { id: 0x31c5367f name: "dev_mapping" @@ -88754,6 +88812,18 @@ member { type_id: 0x6720d32f offset: 8032 } +member { + id: 0x7fd91e93 + name: "fixed_in_len" + type_id: 0xc9082b19 + offset: 2048 +} +member { + id: 0x09807f7a + name: "fixed_out_len" + type_id: 0xc9082b19 + offset: 2016 +} member { id: 0x2899a5e8 name: "fixed_rate" @@ -94029,6 +94099,12 @@ member { type_id: 0x25653b02 offset: 1728 } +member { + id: 0x1875f880 + name: "gadget" + type_id: 0x25653b02 + offset: 192 +} member { id: 0x2c80bff4 name: "gadget_driver" @@ -99115,6 +99191,18 @@ member { type_id: 0xc93e017b offset: 480 } +member { + id: 0x7a0a7faf + name: "header_len" + type_id: 0xc9082b19 + offset: 1952 +} +member { + id: 0x7a86fcdb + name: "header_len" + type_id: 0x4585663f + offset: 864 +} member { id: 0x7aa45c87 name: "header_len" @@ -100131,6 +100219,12 @@ member { type_id: 0x3654c061 offset: 448 } +member { + id: 0x4af00a54 + name: "host_mac" + type_id: 0xabf64f28 + offset: 1496 +} member { id: 0x0b5b9055 name: "host_no" @@ -104167,6 +104261,12 @@ member { type_id: 0x42201dce offset: 1376 } +member { + id: 0x41e064b8 + name: "ifname_set" + type_id: 0x6d7f5ff6 + offset: 1488 +} member { id: 0xe955f32e name: "ifr_ifrn" @@ -104810,6 +104910,12 @@ member { offset: 34 bitsize: 1 } +member { + id: 0x37e14132 + name: "in_ep" + type_id: 0x0e2680c2 + offset: 1792 +} member { id: 0xe760cbcd name: "in_epnum" @@ -108523,6 +108629,12 @@ member { type_id: 0x25eef749 offset: 64 } +member { + id: 0x694d3c49 + name: "ioport" + type_id: 0x29c64ab1 + offset: 1728 +} member { id: 0x695e350f name: "ioport" @@ -110189,6 +110301,12 @@ member { offset: 745 bitsize: 2 } +member { + id: 0x100aab74 + name: "is_fixed" + type_id: 0x6d7f5ff6 + offset: 1984 +} member { id: 0x3952b157 name: "is_frozen" @@ -110785,6 +110903,12 @@ member { type_id: 0x6d7f5ff6 offset: 168 } +member { + id: 0x56acdda7 + name: "is_zlp_ok" + type_id: 0x6d7f5ff6 + offset: 1920 +} member { id: 0xfa661c0d name: "isids" @@ -131706,6 +131830,12 @@ member { type_id: 0x0ca27481 offset: 704 } +member { + id: 0x723de0ca + name: "net" + type_id: 0x32a623d7 + offset: 128 +} member { id: 0x723dee2d name: "net" @@ -133600,6 +133730,12 @@ member { offset: 275 bitsize: 1 } +member { + id: 0x59c1c7cb + name: "no_skb_reserve" + type_id: 0x6d7f5ff6 + offset: 1480 +} member { id: 0xec4c530d name: "no_sleep" @@ -139858,6 +139994,12 @@ member { type_id: 0x11cfee5a offset: 960 } +member { + id: 0xadb9bed8 + name: "open" + type_id: 0x0d36eefe + offset: 2240 +} member { id: 0xadba96dc name: "open" @@ -141428,6 +141570,12 @@ member { type_id: 0x34d79405 offset: 128 } +member { + id: 0xbdac13df + name: "out_ep" + type_id: 0x0e2680c2 + offset: 1856 +} member { id: 0x4b42e885 name: "out_epnum" @@ -149661,6 +149809,12 @@ member { type_id: 0x2dde023d offset: 3648 } +member { + id: 0x4b911741 + name: "port_usb" + type_id: 0x380c33d1 + offset: 64 +} member { id: 0xabdfb454 name: "port_write_buf" @@ -155319,6 +155473,12 @@ member { name: "qmenu_int" type_id: 0x3f74bbde } +member { + id: 0x143073ec + name: "qmult" + type_id: 0x4585663f + offset: 832 +} member { id: 0x91da22df name: "qnbytes" @@ -162349,6 +162509,12 @@ member { type_id: 0x5e8dc7f4 offset: 704 } +member { + id: 0x41836813 + name: "req_lock" + type_id: 0xf313e71a + offset: 256 +} member { id: 0x41d7be50 name: "req_lock" @@ -167800,6 +167966,12 @@ member { type_id: 0x33756485 offset: 64 } +member { + id: 0xc2e1d78f + name: "rx_frames" + type_id: 0x578f9c2b + offset: 640 +} member { id: 0xa87a1b62 name: "rx_frames_delta" @@ -168145,6 +168317,12 @@ member { name: "rx_read" type_id: 0x2de3e088 } +member { + id: 0xd3d22e9f + name: "rx_reqs" + type_id: 0xd3c80119 + offset: 448 +} member { id: 0xb906969b name: "rx_reserved" @@ -184374,6 +184552,12 @@ member { offset: 130 bitsize: 1 } +member { + id: 0x07459e81 + name: "supports_multi_frame" + type_id: 0x6d7f5ff6 + offset: 2080 +} member { id: 0x2138b2e5 name: "supports_op" @@ -190452,6 +190636,12 @@ member { type_id: 0x24373219 offset: 512 } +member { + id: 0x896faa0d + name: "todo" + type_id: 0x33756485 + offset: 1408 +} member { id: 0x898f1b47 name: "todo" @@ -193792,6 +193982,12 @@ member { type_id: 0xc93e017b offset: 944 } +member { + id: 0x32c7bb3d + name: "tx_qlen" + type_id: 0x74d29cf1 + offset: 576 +} member { id: 0x580681a6 name: "tx_queue_len" @@ -193846,6 +194042,12 @@ member { type_id: 0x914dbfdc offset: 2320 } +member { + id: 0xafc385cf + name: "tx_reqs" + type_id: 0xd3c80119 + offset: 320 +} member { id: 0x5f95d285 name: "tx_reserved" @@ -197268,6 +197470,18 @@ member { type_id: 0x29b77961 offset: 11784 } +member { + id: 0x7f0a76c2 + name: "unwrap" + type_id: 0x2e747a05 + offset: 960 +} +member { + id: 0x7f0a7bae + name: "unwrap" + type_id: 0x2e747a05 + offset: 2176 +} member { id: 0xa37704a2 name: "unx" @@ -204560,6 +204774,12 @@ member { name: "work" type_id: 0x3835dcc0 } +member { + id: 0xd6e660a8 + name: "work" + type_id: 0x1f3c8679 + offset: 1024 +} member { id: 0xd6e661ca name: "work" @@ -205133,6 +205353,18 @@ member { type_id: 0x03913382 offset: 576 } +member { + id: 0xb361ca71 + name: "wrap" + type_id: 0x13323bbb + offset: 896 +} +member { + id: 0xb361ce95 + name: "wrap" + type_id: 0x13323bbb + offset: 2112 +} member { id: 0x48aef34d name: "wrap_around" @@ -206147,6 +206379,11 @@ member { type_id: 0x5d8155a5 offset: 1472 } +member { + id: 0x2d4312a7 + name: "xa" + type_id: 0x2aa0b9bb +} member { id: 0x2de9701e name: "xa" @@ -206164,6 +206401,12 @@ member { type_id: 0x80c20070 offset: 1216 } +member { + id: 0x4487c243 + name: "xa_alloc" + type_id: 0x3da0560e + offset: 256 +} member { id: 0x8c0b8c3b name: "xa_flags" @@ -206176,11 +206419,59 @@ member { type_id: 0x18bd6530 offset: 64 } +member { + id: 0x443272df + name: "xa_index" + type_id: 0x33756485 + offset: 64 +} member { id: 0x310049ee name: "xa_lock" type_id: 0xf313e71a } +member { + id: 0x13932b74 + name: "xa_lru" + type_id: 0x3dfac2ad + offset: 384 +} +member { + id: 0xa6e487bd + name: "xa_node" + type_id: 0x3da0560e + offset: 192 +} +member { + id: 0xade1378e + name: "xa_offset" + type_id: 0x5d8155a5 + offset: 144 +} +member { + id: 0xb6a1c909 + name: "xa_pad" + type_id: 0x5d8155a5 + offset: 152 +} +member { + id: 0xfbb0a625 + name: "xa_shift" + type_id: 0x5d8155a5 + offset: 128 +} +member { + id: 0xb55e6ff0 + name: "xa_sibs" + type_id: 0x5d8155a5 + offset: 136 +} +member { + id: 0x1ec9237c + name: "xa_update" + type_id: 0xa7efd65a + offset: 320 +} member { id: 0xdbe05ee6 name: "xacterrs" @@ -206997,6 +207288,12 @@ member { type_id: 0x6d7f5ff6 offset: 328 } +member { + id: 0xf36870ee + name: "zlp" + type_id: 0x6d7f5ff6 + offset: 1472 +} member { id: 0x8134c684 name: "zombie" @@ -226469,6 +226766,34 @@ struct_union { member_id: 0x1cd0b4f0 } } +struct_union { + id: 0x8d59cc59 + kind: STRUCT + name: "eth_dev" + definition { + bytesize: 200 + member_id: 0x2d1fec85 + member_id: 0x4b911741 + member_id: 0x723de0ca + member_id: 0x1875f880 + member_id: 0x41836813 + member_id: 0xafc385cf + member_id: 0xd3d22e9f + member_id: 0x32c7bb3d + member_id: 0xc2e1d78f + member_id: 0x143073ec + member_id: 0x7a86fcdb + member_id: 0xb361ca71 + member_id: 0x7f0a76c2 + member_id: 0xd6e660a8 + member_id: 0x896faa0d + member_id: 0xf36870ee + member_id: 0x59c1c7cb + member_id: 0x41e064b8 + member_id: 0x4af00a54 + member_id: 0x770654c6 + } +} struct_union { id: 0xed0cdc47 kind: STRUCT @@ -229909,6 +230234,29 @@ struct_union { member_id: 0xff8a9e7e } } +struct_union { + id: 0xca7029d8 + kind: STRUCT + name: "gether" + definition { + bytesize: 296 + member_id: 0x21a4123c + member_id: 0x694d3c49 + member_id: 0x37e14132 + member_id: 0xbdac13df + member_id: 0x56acdda7 + member_id: 0xbf43ebf0 + member_id: 0x7a0a7faf + member_id: 0x100aab74 + member_id: 0x09807f7a + member_id: 0x7fd91e93 + member_id: 0x07459e81 + member_id: 0xb361ce95 + member_id: 0x7f0a7bae + member_id: 0xadb9bed8 + member_id: 0xcd7ec6ac + } +} struct_union { id: 0x227d416d kind: STRUCT @@ -267197,6 +267545,24 @@ struct_union { member_id: 0x38c4c69b } } +struct_union { + id: 0xa406f9d2 + kind: STRUCT + name: "xa_state" + definition { + bytesize: 56 + member_id: 0x2d4312a7 + member_id: 0x443272df + member_id: 0xfbb0a625 + member_id: 0xb55e6ff0 + member_id: 0xade1378e + member_id: 0xb6a1c909 + member_id: 0xa6e487bd + member_id: 0x4487c243 + member_id: 0x1ec9237c + member_id: 0x13932b74 + } +} struct_union { id: 0x80c20070 kind: STRUCT @@ -292017,6 +292383,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x238b8721 } +function { + id: 0x187c3067 + return_type_id: 0x48b5725f + parameter_id: 0x239187d3 +} function { id: 0x187ccd99 return_type_id: 0x17b5cc93 @@ -293204,6 +293575,11 @@ function { parameter_id: 0x33756485 parameter_id: 0x7f7172c7 } +function { + id: 0x1ae9c33f + return_type_id: 0x48b5725f + parameter_id: 0x29c64ab1 +} function { id: 0x1ae9d1bd return_type_id: 0x48b5725f @@ -294010,6 +294386,12 @@ function { parameter_id: 0x02e98c8d parameter_id: 0x2e18f543 } +function { + id: 0x1c32c5f2 + return_type_id: 0x48b5725f + parameter_id: 0x32a623d7 + parameter_id: 0x00c72527 +} function { id: 0x1c362eb2 return_type_id: 0x48b5725f @@ -294328,6 +294710,12 @@ function { parameter_id: 0x914dbfdc parameter_id: 0x6720d32f } +function { + id: 0x1ca44d8a + return_type_id: 0x48b5725f + parameter_id: 0x32a623d7 + parameter_id: 0x25653b02 +} function { id: 0x1ca75909 return_type_id: 0x48b5725f @@ -295915,6 +296303,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3806390a } +function { + id: 0x1e9b5d67 + return_type_id: 0x48b5725f + parameter_id: 0x380c33d1 +} function { id: 0x1e9be71c return_type_id: 0xd5cc9c9a @@ -297025,6 +297418,11 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xa52a0930 } +function { + id: 0x1ff04410 + return_type_id: 0x48b5725f + parameter_id: 0x3da0560e +} function { id: 0x1ff204c3 return_type_id: 0x48b5725f @@ -300568,6 +300966,12 @@ function { parameter_id: 0xd0b3a203 parameter_id: 0x0087f4f8 } +function { + id: 0x5ebf0597 + return_type_id: 0x18bd6530 + parameter_id: 0x239187d3 + parameter_id: 0x33756485 +} function { id: 0x5ed273d9 return_type_id: 0x18bd6530 @@ -300860,6 +301264,12 @@ function { parameter_id: 0x6720d32f parameter_id: 0xf1a6dfed } +function { + id: 0x66880871 + return_type_id: 0x054f691a + parameter_id: 0x380c33d1 + parameter_id: 0x054f691a +} function { id: 0x66e18f45 return_type_id: 0x2c8c423d @@ -304032,6 +304442,13 @@ function { parameter_id: 0x0277bf8a parameter_id: 0x07dcdbe1 } +function { + id: 0x9122ac75 + return_type_id: 0x6720d32f + parameter_id: 0x32a623d7 + parameter_id: 0x0483e6f8 + parameter_id: 0x6720d32f +} function { id: 0x91239923 return_type_id: 0x6720d32f @@ -305056,6 +305473,13 @@ function { parameter_id: 0x32a623d7 parameter_id: 0x384c5795 } +function { + id: 0x91c8e13a + return_type_id: 0x6720d32f + parameter_id: 0x32a623d7 + parameter_id: 0x3e10b518 + parameter_id: 0x6720d32f +} function { id: 0x91ca11c2 return_type_id: 0x6720d32f @@ -307568,6 +307992,13 @@ function { parameter_id: 0x39a8be0c parameter_id: 0x1e8e5a79 } +function { + id: 0x93910e88 + return_type_id: 0x6720d32f + parameter_id: 0x380c33d1 + parameter_id: 0x054f691a + parameter_id: 0x1f73dead +} function { id: 0x9394f11e return_type_id: 0x6720d32f @@ -317332,6 +317763,14 @@ function { parameter_id: 0x1bf16028 parameter_id: 0x370ed8aa } +function { + id: 0x9bcdfb6a + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1bf16028 + parameter_id: 0x370ed8aa + parameter_id: 0x11cfee5a +} function { id: 0x9bcfc1f5 return_type_id: 0x6720d32f @@ -324717,6 +325156,12 @@ function { parameter_id: 0x391f15ea parameter_id: 0x2dec91ef } +function { + id: 0xa7ea77a4 + return_type_id: 0xfc0e1dbd + parameter_id: 0x00c83ba6 + parameter_id: 0x3e10b518 +} function { id: 0xa7f54c85 return_type_id: 0xfc0e1dbd @@ -325833,6 +326278,11 @@ function { parameter_id: 0x310ec01d parameter_id: 0x310ec01d } +function { + id: 0xc272f60e + return_type_id: 0x4585663f + parameter_id: 0x32a623d7 +} function { id: 0xc29f6b92 return_type_id: 0x3b399f9e @@ -327809,6 +328259,11 @@ function { parameter_id: 0x1b55a8f2 parameter_id: 0x4585663f } +function { + id: 0xf2708109 + return_type_id: 0x32a623d7 + parameter_id: 0x380c33d1 +} function { id: 0xf272e262 return_type_id: 0x6d7f5ff6 @@ -328075,6 +328530,11 @@ function { parameter_id: 0xd0b3a203 parameter_id: 0xd0b3a203 } +function { + id: 0xf3f7a0bb + return_type_id: 0x32a623d7 + parameter_id: 0x3e10b518 +} function { id: 0xf44fff9f return_type_id: 0x6d7f5ff6 @@ -335208,6 +335668,15 @@ elf_symbol { type_id: 0x9b538b4c full_name: "__traceiter_android_vh_typec_tcpm_log" } +elf_symbol { + id: 0x5ab5402f + name: "__traceiter_android_vh_typec_tcpm_modify_src_caps" + is_defined: true + symbol_type: FUNCTION + crc: 0xd505a0db + type_id: 0x9bcdfb6a + full_name: "__traceiter_android_vh_typec_tcpm_modify_src_caps" +} elf_symbol { id: 0xe31bb308 name: "__traceiter_android_vh_ufs_check_int_errors" @@ -338664,6 +339133,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_typec_tcpm_log" } +elf_symbol { + id: 0x1f1a25bd + name: "__tracepoint_android_vh_typec_tcpm_modify_src_caps" + is_defined: true + symbol_type: OBJECT + crc: 0x0c9ea609 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_typec_tcpm_modify_src_caps" +} elf_symbol { id: 0x609a86da name: "__tracepoint_android_vh_ufs_check_int_errors" @@ -339555,6 +340033,15 @@ elf_symbol { type_id: 0x97ce5a08 full_name: "__xa_alloc_cyclic" } +elf_symbol { + id: 0x4b52e164 + name: "__xa_erase" + is_defined: true + symbol_type: FUNCTION + crc: 0xe02c9c92 + type_id: 0x5cf34a0d + full_name: "__xa_erase" +} elf_symbol { id: 0xd6e3f912 name: "__xa_insert" @@ -339564,6 +340051,15 @@ elf_symbol { type_id: 0x97e0f111 full_name: "__xa_insert" } +elf_symbol { + id: 0x52069d2d + name: "__xa_store" + is_defined: true + symbol_type: FUNCTION + crc: 0xca9beaa4 + type_id: 0x5cf6a3cf + full_name: "__xa_store" +} elf_symbol { id: 0x640280c1 name: "__xdp_rxq_info_reg" @@ -345406,6 +345902,15 @@ elf_symbol { type_id: 0xc25cf5fc full_name: "cpumask_any_and_distribute" } +elf_symbol { + id: 0xd53a5822 + name: "cpumask_local_spread" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8a91f5b + type_id: 0xde26a438 + full_name: "cpumask_local_spread" +} elf_symbol { id: 0xb1469ae6 name: "cpumask_next_wrap" @@ -349156,6 +349661,15 @@ elf_symbol { type_id: 0x5468daf3 full_name: "devm_memremap" } +elf_symbol { + id: 0x86c1623f + name: "devm_memunmap" + is_defined: true + symbol_type: FUNCTION + crc: 0xd7fbf31f + type_id: 0x106c9a5c + full_name: "devm_memunmap" +} elf_symbol { id: 0x36e39cf6 name: "devm_mfd_add_devices" @@ -350304,6 +350818,15 @@ elf_symbol { type_id: 0x10aa5f7a full_name: "dma_buf_put" } +elf_symbol { + id: 0x77d18a9c + name: "dma_buf_set_name" + is_defined: true + symbol_type: FUNCTION + crc: 0x752c3098 + type_id: 0xa7ea77a4 + full_name: "dma_buf_set_name" +} elf_symbol { id: 0xd0deb542 name: "dma_buf_unmap_attachment" @@ -358204,6 +358727,141 @@ elf_symbol { type_id: 0x11a59ba3 full_name: "getboottime64" } +elf_symbol { + id: 0xa7339c42 + name: "gether_cleanup" + is_defined: true + symbol_type: FUNCTION + crc: 0x8878cfa6 + type_id: 0x1ae9c33f + full_name: "gether_cleanup" +} +elf_symbol { + id: 0x23fbc3f8 + name: "gether_connect" + is_defined: true + symbol_type: FUNCTION + crc: 0xea64e647 + type_id: 0xf2708109 + full_name: "gether_connect" +} +elf_symbol { + id: 0x46e18dbd + name: "gether_disconnect" + is_defined: true + symbol_type: FUNCTION + crc: 0x1bf99a25 + type_id: 0x1e9b5d67 + full_name: "gether_disconnect" +} +elf_symbol { + id: 0xf5970852 + name: "gether_get_dev_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0x557d0eb6 + type_id: 0x9122ac75 + full_name: "gether_get_dev_addr" +} +elf_symbol { + id: 0x0a3cdb4a + name: "gether_get_host_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0xb4ae8361 + type_id: 0x9122ac75 + full_name: "gether_get_host_addr" +} +elf_symbol { + id: 0xdb6a18dc + name: "gether_get_host_addr_u8" + is_defined: true + symbol_type: FUNCTION + crc: 0xf8b424a5 + type_id: 0x1c32c5f2 + full_name: "gether_get_host_addr_u8" +} +elf_symbol { + id: 0x412252a6 + name: "gether_get_ifname" + is_defined: true + symbol_type: FUNCTION + crc: 0x5bd0d402 + type_id: 0x9122ac75 + full_name: "gether_get_ifname" +} +elf_symbol { + id: 0x9c589482 + name: "gether_get_qmult" + is_defined: true + symbol_type: FUNCTION + crc: 0xb460cb61 + type_id: 0xc272f60e + full_name: "gether_get_qmult" +} +elf_symbol { + id: 0x0400c852 + name: "gether_register_netdev" + is_defined: true + symbol_type: FUNCTION + crc: 0x1d6ccbe0 + type_id: 0x91296bda + full_name: "gether_register_netdev" +} +elf_symbol { + id: 0xcdcde62d + name: "gether_set_dev_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0x3c2aa803 + type_id: 0x91d1290e + full_name: "gether_set_dev_addr" +} +elf_symbol { + id: 0xba5f9a53 + name: "gether_set_gadget" + is_defined: true + symbol_type: FUNCTION + crc: 0x95a29c7a + type_id: 0x1ca44d8a + full_name: "gether_set_gadget" +} +elf_symbol { + id: 0x8802e047 + name: "gether_set_host_addr" + is_defined: true + symbol_type: FUNCTION + crc: 0x0d98da0f + type_id: 0x91d1290e + full_name: "gether_set_host_addr" +} +elf_symbol { + id: 0xf7264f57 + name: "gether_set_ifname" + is_defined: true + symbol_type: FUNCTION + crc: 0xddaa7799 + type_id: 0x91c8e13a + full_name: "gether_set_ifname" +} +elf_symbol { + id: 0x370e3283 + name: "gether_set_qmult" + is_defined: true + symbol_type: FUNCTION + crc: 0xae8e571d + type_id: 0x1d27ccfe + full_name: "gether_set_qmult" +} +elf_symbol { + id: 0xe87161bc + name: "gether_setup_name_default" + is_defined: true + symbol_type: FUNCTION + crc: 0x5d7e340b + type_id: 0xf3f7a0bb + full_name: "gether_setup_name_default" +} elf_symbol { id: 0x112db471 name: "gf128mul_lle" @@ -393245,6 +393903,24 @@ elf_symbol { type_id: 0x5cf6a3cf full_name: "xa_store" } +elf_symbol { + id: 0xb5ba02d4 + name: "xas_find" + is_defined: true + symbol_type: FUNCTION + crc: 0x39c9d88c + type_id: 0x5ebf0597 + full_name: "xas_find" +} +elf_symbol { + id: 0x0fe35b07 + name: "xas_pause" + is_defined: true + symbol_type: FUNCTION + crc: 0x0fbc0c0e + type_id: 0x187c3067 + full_name: "xas_pause" +} elf_symbol { id: 0xebb799b4 name: "xdp_convert_zc_to_xdp_frame" @@ -394633,6 +395309,7 @@ interface { symbol_id: 0x9545623c symbol_id: 0x558490b1 symbol_id: 0x8af2b51e + symbol_id: 0x5ab5402f symbol_id: 0xe31bb308 symbol_id: 0x6a6dc806 symbol_id: 0xa56348c9 @@ -395017,6 +395694,7 @@ interface { symbol_id: 0x75a2f39e symbol_id: 0x7b5c377f symbol_id: 0x6436c788 + symbol_id: 0x1f1a25bd symbol_id: 0x609a86da symbol_id: 0x08a49528 symbol_id: 0xa03a7d43 @@ -395116,7 +395794,9 @@ interface { symbol_id: 0xcf1808d5 symbol_id: 0x01b711f3 symbol_id: 0xb0e141a3 + symbol_id: 0x4b52e164 symbol_id: 0xd6e3f912 + symbol_id: 0x52069d2d symbol_id: 0x640280c1 symbol_id: 0xb3b57b4d symbol_id: 0xda249832 @@ -395767,6 +396447,7 @@ interface { symbol_id: 0x9b056e94 symbol_id: 0x2061f0ca symbol_id: 0xd878ab56 + symbol_id: 0xd53a5822 symbol_id: 0xb1469ae6 symbol_id: 0x3afbe534 symbol_id: 0x2cc0b276 @@ -396184,6 +396865,7 @@ interface { symbol_id: 0x92b974cd symbol_id: 0x57498e16 symbol_id: 0x888f691d + symbol_id: 0x86c1623f symbol_id: 0x36e39cf6 symbol_id: 0x6e37c2ad symbol_id: 0x91f58d29 @@ -396310,6 +396992,7 @@ interface { symbol_id: 0xdcb8ed3c symbol_id: 0x4ec1de19 symbol_id: 0xe5cfd7ac + symbol_id: 0x77d18a9c symbol_id: 0xd0deb542 symbol_id: 0xe8233473 symbol_id: 0x710f1fc2 @@ -397187,6 +397870,21 @@ interface { symbol_id: 0x4ba4e06f symbol_id: 0xbac82e84 symbol_id: 0xa8319a8c + symbol_id: 0xa7339c42 + symbol_id: 0x23fbc3f8 + symbol_id: 0x46e18dbd + symbol_id: 0xf5970852 + symbol_id: 0x0a3cdb4a + symbol_id: 0xdb6a18dc + symbol_id: 0x412252a6 + symbol_id: 0x9c589482 + symbol_id: 0x0400c852 + symbol_id: 0xcdcde62d + symbol_id: 0xba5f9a53 + symbol_id: 0x8802e047 + symbol_id: 0xf7264f57 + symbol_id: 0x370e3283 + symbol_id: 0xe87161bc symbol_id: 0x112db471 symbol_id: 0xfe79963a symbol_id: 0xbc19d975 @@ -401081,6 +401779,8 @@ interface { symbol_id: 0xb91fc02e symbol_id: 0xaa425530 symbol_id: 0x9b05d33a + symbol_id: 0xb5ba02d4 + symbol_id: 0x0fe35b07 symbol_id: 0xebb799b4 symbol_id: 0xcaf4c4fe symbol_id: 0x11080b78 diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 4fe7be5b8bbe..94422c92358a 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -114,6 +114,7 @@ blocking_notifier_chain_unregister bpf_trace_run1 bpf_trace_run10 + bpf_trace_run11 bpf_trace_run2 bpf_trace_run3 bpf_trace_run4 @@ -148,6 +149,7 @@ class_interface_unregister __class_register class_unregister + cleancache_register_ops clear_page __ClearPageMovable clk_disable @@ -220,6 +222,8 @@ cpufreq_register_driver cpufreq_register_notifier cpufreq_table_index_unsorted + cpu_hotplug_disable + cpu_hotplug_enable __cpuhp_remove_state __cpuhp_setup_state __cpuhp_setup_state_cpuslocked @@ -227,9 +231,12 @@ __cpuhp_state_remove_instance cpuhp_tasks_frozen cpu_hwcaps + cpuidle_driver_state_disabled + cpuidle_get_driver cpu_latency_qos_add_request cpu_latency_qos_remove_request cpu_latency_qos_update_request + cpumask_local_spread cpu_number __cpu_online_mask cpu_pm_register_notifier @@ -282,6 +289,7 @@ debugfs_create_devm_seqfile debugfs_create_dir debugfs_create_file + debugfs_create_file_unsafe debugfs_create_size_t debugfs_create_symlink debugfs_create_u16 @@ -326,6 +334,7 @@ __dev_get_by_index dev_get_by_index dev_get_by_name + dev_get_stats device_add device_add_disk device_add_groups @@ -394,13 +403,17 @@ devm_ioremap_resource devm_ioremap_wc devm_iounmap + __devm_irq_alloc_descs devm_kasprintf devm_kfree devm_kmalloc devm_kmemdup + devm_krealloc devm_kstrdup devm_kstrdup_const devm_led_classdev_register_ext + devm_memremap + devm_memunmap devm_mfd_add_devices devm_nvmem_register __devm_of_phy_provider_register @@ -420,18 +433,21 @@ __devm_regmap_init __devm_regmap_init_i2c __devm_regmap_init_spi + __devm_regmap_init_spmi_ext devm_regulator_bulk_get devm_regulator_get devm_regulator_get_exclusive devm_regulator_get_optional devm_regulator_put devm_regulator_register + devm_request_any_context_irq __devm_request_region devm_request_threaded_irq devm_rtc_device_register devm_snd_soc_register_component devm_thermal_of_cooling_device_register devm_thermal_of_zone_register + devm_thermal_of_zone_unregister devm_usb_get_phy_by_phandle _dev_notice dev_pm_domain_attach_by_name @@ -459,6 +475,7 @@ __devres_alloc_node devres_free dev_set_name + dev_vprintk_emit _dev_warn disable_irq disable_irq_nosync @@ -486,6 +503,7 @@ dmabuf_page_pool_free dmabuf_page_pool_get_size dma_buf_put + dma_buf_set_name dma_buf_unmap_attachment dma_buf_vmap dma_buf_vunmap @@ -542,19 +560,25 @@ drain_workqueue driver_register driver_unregister + drm_add_edid_modes drm_add_modes_noedid drm_atomic_add_affected_connectors drm_atomic_add_affected_planes + drm_atomic_bridge_chain_disable + drm_atomic_bridge_chain_post_disable drm_atomic_commit drm_atomic_get_connector_state drm_atomic_get_crtc_state drm_atomic_get_new_connector_for_encoder + drm_atomic_get_new_private_obj_state drm_atomic_get_old_connector_for_encoder + drm_atomic_get_old_private_obj_state drm_atomic_get_plane_state drm_atomic_get_private_obj_state drm_atomic_helper_bridge_destroy_state drm_atomic_helper_bridge_duplicate_state drm_atomic_helper_bridge_reset + drm_atomic_helper_calc_timestamping_constants drm_atomic_helper_check_modeset drm_atomic_helper_check_planes drm_atomic_helper_check_plane_state @@ -567,7 +591,10 @@ drm_atomic_helper_commit_planes drm_atomic_helper_commit_tail __drm_atomic_helper_connector_destroy_state + drm_atomic_helper_connector_destroy_state __drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_connector_reset __drm_atomic_helper_crtc_destroy_state __drm_atomic_helper_crtc_duplicate_state __drm_atomic_helper_crtc_reset @@ -583,6 +610,7 @@ drm_atomic_helper_setup_commit drm_atomic_helper_shutdown drm_atomic_helper_swap_state + drm_atomic_helper_update_legacy_modeset_state drm_atomic_helper_update_plane drm_atomic_helper_wait_for_dependencies drm_atomic_helper_wait_for_flip_done @@ -610,12 +638,17 @@ drm_connector_list_iter_next drm_connector_register drm_connector_unregister + drm_connector_update_edid_property + drm_crtc_add_crc_entry drm_crtc_arm_vblank_event drm_crtc_cleanup + __drm_crtc_commit_free + drm_crtc_commit_wait drm_crtc_enable_color_mgmt drm_crtc_handle_vblank drm_crtc_init_with_planes drm_crtc_send_vblank_event + drm_crtc_vblank_count drm_crtc_vblank_count_and_time drm_crtc_vblank_get drm_crtc_vblank_off @@ -623,10 +656,20 @@ drm_crtc_vblank_put drm_crtc_wait_one_vblank ___drm_dbg + __drm_debug + drm_detect_monitor_audio + __drm_dev_dbg + drm_dev_printk drm_dev_put drm_dev_register drm_dev_unregister + drm_display_mode_from_cea_vic drm_display_mode_to_videomode + drm_do_get_edid + drm_edid_duplicate + drm_edid_get_monitor_name + drm_edid_is_valid + drm_edid_to_sad drm_encoder_cleanup drm_encoder_init __drm_err @@ -648,6 +691,7 @@ drm_gem_private_object_init drm_gem_vm_close drm_gem_vm_open + drm_get_edid drm_get_format_info drm_helper_mode_fill_fb_struct drm_helper_probe_single_connector_modes @@ -655,10 +699,13 @@ drm_kms_helper_hotplug_event drm_kms_helper_poll_fini drm_kms_helper_poll_init + drm_match_cea_mode drmm_kmalloc drmm_mode_config_init drm_mode_config_reset drm_mode_convert_to_umode + drm_mode_copy + drm_mode_destroy drm_mode_duplicate drm_mode_equal drm_mode_equal_no_clocks @@ -672,9 +719,11 @@ drm_modeset_drop_locks drm_modeset_lock drm_modeset_lock_all_ctx + drm_modeset_lock_single_interruptible drm_modeset_unlock drm_mode_vrefresh drm_object_attach_property + drm_object_property_set_value drm_open drm_panel_add drm_panel_disable @@ -724,10 +773,13 @@ dump_backtrace dump_stack dw_handle_msi_irq + dw_pcie_find_capability dw_pcie_host_init dw_pcie_read + dw_pcie_read_dbi dw_pcie_setup_rc dw_pcie_write + dw_pcie_write_dbi __dynamic_dev_dbg __dynamic_pr_debug em_cpu_get @@ -771,6 +823,7 @@ flush_delayed_work flush_work __flush_workqueue + __folio_lock __folio_put folio_wait_bit fortify_panic @@ -791,6 +844,8 @@ freq_qos_add_request freq_qos_remove_request freq_qos_update_request + fsnotify + __fsnotify_parent full_name_hash fwnode_get_name fwnode_gpiod_get_index @@ -823,6 +878,21 @@ get_cpu_iowait_time_us get_device __get_free_pages + gether_cleanup + gether_connect + gether_disconnect + gether_get_dev_addr + gether_get_host_addr + gether_get_host_addr_u8 + gether_get_ifname + gether_get_qmult + gether_register_netdev + gether_set_dev_addr + gether_set_gadget + gether_set_host_addr + gether_set_ifname + gether_set_qmult + gether_setup_name_default get_net_ns_by_fd get_net_ns_by_pid get_pid_task @@ -832,6 +902,7 @@ __get_random_u32_below get_random_u8 get_sg_io_hdr + __get_task_comm get_thermal_instance get_unused_fd_flags get_user_pages @@ -888,6 +959,7 @@ hwrng_register hwrng_unregister i2c_adapter_type + i2c_add_adapter i2c_add_numbered_adapter i2c_bus_type i2c_del_adapter @@ -965,6 +1037,7 @@ interval_tree_iter_first interval_tree_iter_next interval_tree_remove + int_pow int_sqrt int_to_scsilun iomem_resource @@ -1015,7 +1088,9 @@ irq_domain_get_irq_data irq_domain_remove irq_domain_set_info + irq_domain_simple_ops irq_domain_xlate_twocell + irq_force_affinity irq_get_irq_data irq_modify_status irq_of_parse_and_map @@ -1154,6 +1229,7 @@ mbox_request_channel mbox_send_message memchr + memchr_inv memcmp memcpy __memcpy_fromio @@ -1202,6 +1278,7 @@ __msecs_to_jiffies msleep msleep_interruptible + mtree_load __mutex_init mutex_is_locked mutex_lock @@ -1238,6 +1315,8 @@ netlink_unregister_notifier net_ns_type_operations net_ratelimit + nf_register_net_hooks + nf_unregister_net_hooks nla_find nla_memcpy __nla_parse @@ -1284,6 +1363,7 @@ of_find_node_by_phandle of_find_node_by_type of_find_node_opts_by_path + of_find_node_with_property of_find_property of_fwnode_ops of_genpd_add_provider_simple @@ -1503,6 +1583,7 @@ proc_mkdir proc_mkdir_data proc_remove + proc_symlink pskb_expand_head __pskb_pull_tail ___pskb_trim @@ -1668,9 +1749,12 @@ rt_mutex_unlock rtnl_is_locked rtnl_lock + rtnl_trylock rtnl_unlock sched_clock sched_setattr_nocheck + sched_set_fifo + sched_set_normal sched_setscheduler sched_setscheduler_nocheck sched_show_task @@ -1789,6 +1873,7 @@ snd_jack_set_key snd_pcm_format_physical_width snd_pcm_format_width + snd_pcm_hw_constraint_integer snd_pcm_hw_constraint_list snd_pcm_lib_free_pages snd_pcm_lib_ioctl @@ -1845,6 +1930,7 @@ snd_soc_register_card snd_soc_register_component snd_soc_runtime_set_dai_fmt + snd_soc_set_runtime_hwparams snd_soc_unregister_card snd_soc_unregister_component snprintf @@ -1867,6 +1953,10 @@ spi_sync spi_sync_locked spi_unregister_controller + spmi_controller_add + spmi_controller_alloc + spmi_controller_remove + __spmi_driver_register sprintf sprint_symbol srcu_init_notifier_head @@ -1892,6 +1982,7 @@ strlen strncasecmp strncat + strnchr strncmp strncpy strncpy_from_user @@ -1946,6 +2037,7 @@ system_wq sys_tz task_active_pid_ns + __tasklet_hi_schedule tasklet_init tasklet_kill __tasklet_schedule @@ -1973,6 +2065,8 @@ thermal_zone_device_register thermal_zone_device_unregister thermal_zone_device_update + thermal_zone_get_temp + thermal_zone_get_zone_by_name thread_group_cputime_adjusted time64_to_tm topology_update_thermal_pressure @@ -1986,7 +2080,10 @@ trace_event_raw_init trace_event_reg trace_handle_return + __traceiter_android_rvh_audio_usb_offload_disconnect + __traceiter_android_rvh_cgroup_force_kthread_migration __traceiter_android_rvh_typec_tcpci_get_vbus + __traceiter_android_vh_audio_usb_offload_connect __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit __traceiter_android_vh_enable_thermal_genl_check @@ -1997,6 +2094,7 @@ __traceiter_android_vh_typec_tcpci_override_toggling __traceiter_android_vh_typec_tcpm_get_timer __traceiter_android_vh_typec_tcpm_log + __traceiter_android_vh_typec_tcpm_modify_src_caps __traceiter_android_vh_ufs_check_int_errors __traceiter_android_vh_ufs_compl_command __traceiter_android_vh_ufs_fill_prdt @@ -2022,7 +2120,10 @@ __traceiter_workqueue_execute_end __traceiter_workqueue_execute_start trace_output_call + __tracepoint_android_rvh_audio_usb_offload_disconnect + __tracepoint_android_rvh_cgroup_force_kthread_migration __tracepoint_android_rvh_typec_tcpci_get_vbus + __tracepoint_android_vh_audio_usb_offload_connect __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit __tracepoint_android_vh_enable_thermal_genl_check @@ -2033,6 +2134,7 @@ __tracepoint_android_vh_typec_tcpci_override_toggling __tracepoint_android_vh_typec_tcpm_get_timer __tracepoint_android_vh_typec_tcpm_log + __tracepoint_android_vh_typec_tcpm_modify_src_caps __tracepoint_android_vh_ufs_check_int_errors __tracepoint_android_vh_ufs_compl_command __tracepoint_android_vh_ufs_fill_prdt @@ -2095,6 +2197,7 @@ uart_write_wakeup __udelay udp4_hwcsum + ufshcd_auto_hibern8_update ufshcd_bkops_ctrl ufshcd_hold ufshcd_pltfrm_init @@ -2134,25 +2237,35 @@ up_write usb_add_function usb_add_hcd + usb_assign_descriptors usb_copy_descriptors __usb_create_hcd usb_disabled usb_enable_autosuspend + usb_ep_alloc_request usb_ep_autoconfig + usb_ep_disable + usb_ep_enable + usb_ep_free_request + usb_ep_queue + usb_free_all_descriptors usb_function_register usb_function_unregister usb_gadget_activate usb_gadget_deactivate usb_gadget_set_state + usb_gstrings_attach usb_hcd_is_primary_hcd usb_hcd_platform_shutdown usb_hub_find_child usb_interface_id + usb_os_desc_prepare_interf_dir usb_otg_state_string usb_put_function_instance usb_put_hcd usb_register_notify usb_remove_hcd + usb_role_string usb_role_switch_get_drvdata usb_role_switch_register usb_role_switch_unregister @@ -2247,6 +2360,7 @@ vmalloc_user vmap vmf_insert_pfn_prot + vm_iomap_memory vprintk vprintk_emit vring_del_virtqueue @@ -2281,12 +2395,16 @@ __xa_alloc xa_clear_mark xa_destroy + __xa_erase xa_erase xa_find xa_find_after xa_get_mark xa_load xa_set_mark + xas_find + xas_pause + __xa_store __xfrm_state_destroy xfrm_state_lookup_byspi xfrm_stateonly_find @@ -2294,6 +2412,7 @@ xhci_bus_resume xhci_bus_suspend xhci_gen_setup + xhci_get_endpoint_index xhci_init_driver xhci_resume xhci_run From f7e7874d9b0df07072c021dfba37e25870fe6d93 Mon Sep 17 00:00:00 2001 From: RD Babiera Date: Tue, 5 Sep 2023 22:07:07 +0000 Subject: [PATCH 48/99] BACKPORT: usb: typec: bus: verify partner exists in typec_altmode_attention Some usb hubs will negotiate DisplayPort Alt mode with the device but will then negotiate a data role swap after entering the alt mode. The data role swap causes the device to unregister all alt modes, however the usb hub will still send Attention messages even after failing to reregister the Alt Mode. type_altmode_attention currently does not verify whether or not a device's altmode partner exists, which results in a NULL pointer error when dereferencing the typec_altmode and typec_altmode_ops belonging to the altmode partner. Verify the presence of a device's altmode partner before sending the Attention message to the Alt Mode driver. Fixes: 8a37d87d72f0 ("usb: typec: Bus type for alternate modes") Cc: stable@vger.kernel.org Signed-off-by: RD Babiera Reviewed-by: Heikki Krogerus Reviewed-by: Guenter Roeck Link: https://lore.kernel.org/r/20230814180559.923475-1-rdbabiera@google.com Signed-off-by: Greg Kroah-Hartman Bug: 288952921 (cherry picked from commit f23643306430f86e2f413ee2b986e0773e79da31) [rd: changed return type of typec_altmode_attention to void to not break kmi, moved tcpm_log from error return to typec_altmode_attention as dev_warn] Signed-off-by: RD Babiera (cherry picked from https://android-review.googlesource.com/q/commit:e23c89c0b76305f9f264ba113d647710b956a540) Merged-In: I054a6ef56b9b2d7c4e8167e8630a8c277910da88 Change-Id: I054a6ef56b9b2d7c4e8167e8630a8c277910da88 --- drivers/usb/typec/bus.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/bus.c b/drivers/usb/typec/bus.c index 31c2a3130cad..ef79217a903f 100644 --- a/drivers/usb/typec/bus.c +++ b/drivers/usb/typec/bus.c @@ -156,7 +156,20 @@ EXPORT_SYMBOL_GPL(typec_altmode_exit); */ void typec_altmode_attention(struct typec_altmode *adev, u32 vdo) { - struct typec_altmode *pdev = &to_altmode(adev)->partner->adev; + struct altmode *partner = to_altmode(adev)->partner; + struct typec_altmode *pdev; + + /* + * If partner is NULL then a NULL pointer error occurs when + * dereferencing pdev and its operations. The original upstream commit + * changes the return type so the tcpm can log when this occurs, but + * due to KMI restrictions we can only silently prevent the error for + * now. + */ + if (!partner) + return; + + pdev = &partner->adev; if (pdev->ops && pdev->ops->attention) pdev->ops->attention(pdev, vdo); From 5f8aa27248b346a256330928b006db1e1acbe1ef Mon Sep 17 00:00:00 2001 From: Amit Sunil Dhamne Date: Fri, 29 Sep 2023 16:25:05 -0700 Subject: [PATCH 49/99] ANDROID: Update the ABI symbol list Adding the following symbols: - device_get_named_child_node - tcpm_register_port - tcpm_tcpc_reset - tcpm_unregister_port Bug: 302578746 Change-Id: I1af3377667dc4cadacd20977298a9fe99628b5c0 Signed-off-by: Amit Sunil Dhamne --- android/abi_gki_aarch64_pixel | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 94422c92358a..1821dfa89e20 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -349,6 +349,7 @@ device_get_child_node_count device_get_dma_attr device_get_match_data + device_get_named_child_node device_get_next_child_node device_initialize device_link_add @@ -2054,8 +2055,11 @@ tcpm_pd_transmit_complete tcpm_port_clean tcpm_port_is_toggling + tcpm_register_port tcpm_sink_frs tcpm_sourcing_vbus + tcpm_tcpc_reset + tcpm_unregister_port tcpm_vbus_change thermal_cdev_update thermal_cooling_device_unregister From 2434dece1fcbd073c9a237201aa95ee9041d646c Mon Sep 17 00:00:00 2001 From: Prashanth K Date: Fri, 5 May 2023 14:48:37 +0530 Subject: [PATCH 50/99] FROMGIT: usb: gadget: u_serial: Add null pointer check in gserial_suspend Consider a case where gserial_disconnect has already cleared gser->ioport. And if gserial_suspend gets called afterwards, it will lead to accessing of gser->ioport and thus causing null pointer dereference. Avoid this by adding a null pointer check. Added a static spinlock to prevent gser->ioport from becoming null after the newly added null pointer check. Fixes: aba3a8d01d62 ("usb: gadget: u_serial: add suspend resume callbacks") Signed-off-by: Prashanth K Link: https://lore.kernel.org/r/1683278317-11774-1-git-send-email-quic_prashk@quicinc.com Signed-off-by: Greg Kroah-Hartman Bug: 285495243 (cherry picked from commit 2f6ecb89fe8feb2b60a53325b0eeb9866d88909a https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/ usb-next) Signed-off-by: Prashanth K Change-Id: I2c5b58eaaa1e3428952ffdbf7f1a39cad519cc5a (cherry picked from commit f51f079fe30f53aca027aca2c7a517e79c45b67f) --- drivers/usb/gadget/function/u_serial.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c index 0c429f25d0ac..8673b9a5ab53 100644 --- a/drivers/usb/gadget/function/u_serial.c +++ b/drivers/usb/gadget/function/u_serial.c @@ -1423,10 +1423,19 @@ EXPORT_SYMBOL_GPL(gserial_disconnect); void gserial_suspend(struct gserial *gser) { - struct gs_port *port = gser->ioport; + struct gs_port *port; unsigned long flags; - spin_lock_irqsave(&port->port_lock, flags); + spin_lock_irqsave(&serial_port_lock, flags); + port = gser->ioport; + + if (!port) { + spin_unlock_irqrestore(&serial_port_lock, flags); + return; + } + + spin_lock(&port->port_lock); + spin_unlock(&serial_port_lock); port->suspended = true; spin_unlock_irqrestore(&port->port_lock, flags); } From 648e13791289125f4447184856d1b211f32d5daf Mon Sep 17 00:00:00 2001 From: Matthias Maennich Date: Wed, 4 Oct 2023 08:56:10 +0000 Subject: [PATCH 51/99] Android Common Kernel: Initial commit Initial empty commit for AOSP's kernel/common project. Signed-off-by: Matthias Maennich From 4e10001b7cb5505e34933eaff1115910b0f4ad73 Mon Sep 17 00:00:00 2001 From: Rick Yiu Date: Tue, 3 Oct 2023 09:09:07 +0000 Subject: [PATCH 52/99] ANDROID: Update the ABI symbol list Adding the following symbols: - activate_task - arch_freq_scale - available_idle_cpu - balance_push_callback - bpf_trace_run12 - check_preempt_curr - __cpu_active_mask - cpufreq_add_update_util_hook - cpufreq_disable_fast_switch - cpufreq_driver_fast_switch - cpufreq_driver_resolve_freq - __cpufreq_driver_target - cpufreq_enable_fast_switch - cpufreq_policy_transition_delay_us - cpufreq_register_governor - cpufreq_remove_update_util_hook - cpufreq_this_cpu_can_update - cpufreq_update_util_data - cpupri_find_fitness - deactivate_task - find_task_by_vpid - get_governor_parent_kobj - get_task_cred - gov_attr_set_get - gov_attr_set_init - gov_attr_set_put - governor_sysfs_ops - have_governor_per_policy - irq_work_queue - irq_work_sync - kernfs_path_from_node - ns_capable - _printk_deferred - proc_douintvec_minmax - proc_set_size - push_cpu_stop - __put_cred - raw_spin_rq_lock_nested - raw_spin_rq_unlock - resched_curr - reweight_task - root_task_group - runqueues - sched_feat_keys - sched_uclamp_used - set_task_cpu - static_key_enable - stop_one_cpu_nowait - sysctl_sched_features - sysctl_sched_latency - task_rq_lock - teo_cpu_get_util_threshold - teo_cpu_set_util_threshold - thermal_pressure - __traceiter_android_rvh_attach_entity_load_avg - __traceiter_android_rvh_can_migrate_task - __traceiter_android_rvh_check_preempt_wakeup - __traceiter_android_rvh_cpu_overutilized - __traceiter_android_rvh_dequeue_task - __traceiter_android_rvh_dequeue_task_fair - __traceiter_android_rvh_detach_entity_load_avg - __traceiter_android_rvh_enqueue_task - __traceiter_android_rvh_enqueue_task_fair - __traceiter_android_rvh_find_lowest_rq - __traceiter_android_rvh_irqs_disable - __traceiter_android_rvh_irqs_enable - __traceiter_android_rvh_post_init_entity_util_avg - __traceiter_android_rvh_preempt_disable - __traceiter_android_rvh_preempt_enable - __traceiter_android_rvh_prepare_prio_fork - __traceiter_android_rvh_remove_entity_load_avg - __traceiter_android_rvh_rtmutex_prepare_setprio - __traceiter_android_rvh_sched_newidle_balance - __traceiter_android_rvh_select_task_rq_fair - __traceiter_android_rvh_select_task_rq_rt - __traceiter_android_rvh_set_cpus_allowed_by_task - __traceiter_android_rvh_set_iowait - __traceiter_android_rvh_setscheduler - __traceiter_android_rvh_set_task_cpu - __traceiter_android_rvh_set_user_nice - __traceiter_android_rvh_uclamp_eff_get - __traceiter_android_rvh_update_blocked_fair - __traceiter_android_rvh_update_load_avg - __traceiter_android_rvh_update_rt_rq_load_avg - __traceiter_android_vh_arch_set_freq_scale - __traceiter_android_vh_binder_restore_priority - __traceiter_android_vh_binder_set_priority - __traceiter_android_vh_dump_throttled_rt_tasks - __traceiter_android_vh_dup_task_struct - __traceiter_android_vh_setscheduler_uclamp - __traceiter_android_vh_uclamp_validate - __traceiter_android_vh_use_amu_fie - __traceiter_cpu_frequency - __traceiter_pelt_cfs_tp - __traceiter_pelt_dl_tp - __traceiter_pelt_irq_tp - __traceiter_pelt_rt_tp - __traceiter_pelt_se_tp - __traceiter_sched_cpu_capacity_tp - __traceiter_sched_overutilized_tp - __traceiter_sched_util_est_cfs_tp - __traceiter_sched_util_est_se_tp - __tracepoint_android_rvh_attach_entity_load_avg - __tracepoint_android_rvh_can_migrate_task - __tracepoint_android_rvh_check_preempt_wakeup - __tracepoint_android_rvh_cpu_overutilized - __tracepoint_android_rvh_dequeue_task - __tracepoint_android_rvh_dequeue_task_fair - __tracepoint_android_rvh_detach_entity_load_avg - __tracepoint_android_rvh_enqueue_task - __tracepoint_android_rvh_enqueue_task_fair - __tracepoint_android_rvh_find_lowest_rq - __tracepoint_android_rvh_irqs_disable - __tracepoint_android_rvh_irqs_enable - __tracepoint_android_rvh_post_init_entity_util_avg - __tracepoint_android_rvh_preempt_disable - __tracepoint_android_rvh_preempt_enable - __tracepoint_android_rvh_prepare_prio_fork - __tracepoint_android_rvh_remove_entity_load_avg - __tracepoint_android_rvh_rtmutex_prepare_setprio - __tracepoint_android_rvh_sched_newidle_balance - __tracepoint_android_rvh_select_task_rq_fair - __tracepoint_android_rvh_select_task_rq_rt - __tracepoint_android_rvh_set_cpus_allowed_by_task - __tracepoint_android_rvh_set_iowait - __tracepoint_android_rvh_setscheduler - __tracepoint_android_rvh_set_task_cpu - __tracepoint_android_rvh_set_user_nice - __tracepoint_android_rvh_uclamp_eff_get - __tracepoint_android_rvh_update_blocked_fair - __tracepoint_android_rvh_update_load_avg - __tracepoint_android_rvh_update_rt_rq_load_avg - __tracepoint_android_vh_arch_set_freq_scale - __tracepoint_android_vh_binder_restore_priority - __tracepoint_android_vh_binder_set_priority - __tracepoint_android_vh_dump_throttled_rt_tasks - __tracepoint_android_vh_dup_task_struct - __tracepoint_android_vh_setscheduler_uclamp - __tracepoint_android_vh_uclamp_validate - __tracepoint_android_vh_use_amu_fie - __tracepoint_cpu_frequency - __tracepoint_pelt_cfs_tp - __tracepoint_pelt_dl_tp - __tracepoint_pelt_irq_tp - __tracepoint_pelt_rt_tp - __tracepoint_pelt_se_tp - __tracepoint_sched_cpu_capacity_tp - __tracepoint_sched_overutilized_tp - __tracepoint_sched_util_est_cfs_tp - __tracepoint_sched_util_est_se_tp - uclamp_eff_value - ___update_load_avg - ___update_load_sum - update_rq_clock Bug: 299851672 Change-Id: I5460a1d6622df1ac74cce3a8f9faffcc0e275003 Signed-off-by: Rick Yiu --- android/abi_gki_aarch64.stg | 528 ++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_pixel | 154 ++++++++++ 2 files changed, 682 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index f08da00b7d5d..6460f2a5e90f 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -27633,6 +27633,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdb44b469 } +pointer_reference { + id: 0x3c417e01 + kind: POINTER + pointee_type_id: 0xdb451e9a +} pointer_reference { id: 0x3c41c19b kind: POINTER @@ -296873,6 +296878,12 @@ function { parameter_id: 0x3760766d parameter_id: 0x8167e73b } +function { + id: 0x1f45db81 + return_type_id: 0x48b5725f + parameter_id: 0x3c417e01 + parameter_id: 0x33756485 +} function { id: 0x1f4af633 return_type_id: 0x48b5725f @@ -313476,6 +313487,14 @@ function { parameter_id: 0x1e870478 parameter_id: 0xf017819f } +function { + id: 0x99e4a009 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x92233392 + parameter_id: 0x0ed82db2 + parameter_id: 0x082be49e +} function { id: 0x99e6ede5 return_type_id: 0x6720d32f @@ -313516,6 +313535,15 @@ function { parameter_id: 0x126add1c parameter_id: 0x3c2fe980 } +function { + id: 0x99ecdba4 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x92233392 + parameter_id: 0x2e029f76 + parameter_id: 0x1d19a9d5 + parameter_id: 0x6720d32f +} function { id: 0x99ed1149 return_type_id: 0x6720d32f @@ -316300,6 +316328,13 @@ function { parameter_id: 0x019e2530 parameter_id: 0x11cfee5a } +function { + id: 0x9b6eb2a8 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x33756485 + parameter_id: 0x33756485 +} function { id: 0x9b6eb620 return_type_id: 0x6720d32f @@ -316812,6 +316847,12 @@ function { parameter_id: 0x2a670b41 parameter_id: 0x0db25a6d } +function { + id: 0x9b94dad5 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x0ed82db2 +} function { id: 0x9b957b56 return_type_id: 0x6720d32f @@ -317783,6 +317824,14 @@ function { parameter_id: 0x1b2ca025 parameter_id: 0x21003da7 } +function { + id: 0x9bd01103 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d19a9d5 + parameter_id: 0x2e029f76 + parameter_id: 0x13580d6c +} function { id: 0x9bd01b5c return_type_id: 0x6720d32f @@ -317888,6 +317937,16 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x3332797f } +function { + id: 0x9bd44256 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x1d19a9d5 + parameter_id: 0x38bffa98 + parameter_id: 0x6d7f5ff6 + parameter_id: 0x13580d6c + parameter_id: 0x11cfee5a +} function { id: 0x9bd444ea return_type_id: 0x6720d32f @@ -325885,6 +325944,15 @@ function { parameter_id: 0x14b9453b parameter_id: 0x33756485 } +function { + id: 0xb9f52377 + return_type_id: 0x6720d32f + parameter_id: 0x92233392 + parameter_id: 0x3c417e01 + parameter_id: 0x33756485 + parameter_id: 0x33756485 + parameter_id: 0x6720d32f +} function { id: 0xba11bc6a return_type_id: 0x06835e9c @@ -329658,6 +329726,24 @@ elf_symbol { type_id: 0x95e66878 full_name: "___ratelimit" } +elf_symbol { + id: 0x98179c82 + name: "___update_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8b1b72f + type_id: 0x1f45db81 + full_name: "___update_load_avg" +} +elf_symbol { + id: 0xfa979d99 + name: "___update_load_sum" + is_defined: true + symbol_type: FUNCTION + crc: 0xd667f721 + type_id: 0xb9f52377 + full_name: "___update_load_sum" +} elf_symbol { id: 0x6e1bc82e name: "__alloc_pages" @@ -332860,6 +332946,15 @@ elf_symbol { type_id: 0x9ba7ef87 full_name: "__traceiter_android_rvh_arm64_serror_panic" } +elf_symbol { + id: 0x6d4cc1a2 + name: "__traceiter_android_rvh_attach_entity_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0xb9a0b097 + type_id: 0x9b96d02c + full_name: "__traceiter_android_rvh_attach_entity_load_avg" +} elf_symbol { id: 0x48420da9 name: "__traceiter_android_rvh_audio_usb_offload_disconnect" @@ -333022,6 +333117,15 @@ elf_symbol { type_id: 0x9b116af7 full_name: "__traceiter_android_rvh_dequeue_task_fair" } +elf_symbol { + id: 0xa0a77bb8 + name: "__traceiter_android_rvh_detach_entity_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0x477c169e + type_id: 0x9b96d02c + full_name: "__traceiter_android_rvh_detach_entity_load_avg" +} elf_symbol { id: 0xa3b41867 name: "__traceiter_android_rvh_die_kernel_fault" @@ -333256,6 +333360,24 @@ elf_symbol { type_id: 0x9b8019c6 full_name: "__traceiter_android_rvh_iommu_setup_dma_ops" } +elf_symbol { + id: 0xfc83b254 + name: "__traceiter_android_rvh_irqs_disable" + is_defined: true + symbol_type: FUNCTION + crc: 0x707d1f10 + type_id: 0x9b6eb2a8 + full_name: "__traceiter_android_rvh_irqs_disable" +} +elf_symbol { + id: 0x7e99bc71 + name: "__traceiter_android_rvh_irqs_enable" + is_defined: true + symbol_type: FUNCTION + crc: 0x7a345722 + type_id: 0x9b6eb2a8 + full_name: "__traceiter_android_rvh_irqs_enable" +} elf_symbol { id: 0x7c212080 name: "__traceiter_android_rvh_is_cpu_allowed" @@ -333346,6 +333468,24 @@ elf_symbol { type_id: 0x9b8f15f1 full_name: "__traceiter_android_rvh_post_init_entity_util_avg" } +elf_symbol { + id: 0x167fc668 + name: "__traceiter_android_rvh_preempt_disable" + is_defined: true + symbol_type: FUNCTION + crc: 0x1585c762 + type_id: 0x9b6eb2a8 + full_name: "__traceiter_android_rvh_preempt_disable" +} +elf_symbol { + id: 0xd6a514f5 + name: "__traceiter_android_rvh_preempt_enable" + is_defined: true + symbol_type: FUNCTION + crc: 0x3235e37a + type_id: 0x9b6eb2a8 + full_name: "__traceiter_android_rvh_preempt_enable" +} elf_symbol { id: 0xeccbc3c1 name: "__traceiter_android_rvh_prepare_prio_fork" @@ -333382,6 +333522,15 @@ elf_symbol { type_id: 0x9a1a471c full_name: "__traceiter_android_rvh_refrigerator" } +elf_symbol { + id: 0xc191b2f6 + name: "__traceiter_android_rvh_remove_entity_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0x4a7a0801 + type_id: 0x9b96d02c + full_name: "__traceiter_android_rvh_remove_entity_load_avg" +} elf_symbol { id: 0xe3e24295 name: "__traceiter_android_rvh_replace_next_task_fair" @@ -333661,6 +333810,15 @@ elf_symbol { type_id: 0x9bc07fe3 full_name: "__traceiter_android_rvh_set_gfp_zone_flags" } +elf_symbol { + id: 0x9c2c2d71 + name: "__traceiter_android_rvh_set_iowait" + is_defined: true + symbol_type: FUNCTION + crc: 0xd1ed6c7e + type_id: 0x9bd01103 + full_name: "__traceiter_android_rvh_set_iowait" +} elf_symbol { id: 0xcac6b03d name: "__traceiter_android_rvh_set_module_core_rw_nx" @@ -333823,6 +333981,15 @@ elf_symbol { type_id: 0x9bca85c1 full_name: "__traceiter_android_rvh_uclamp_eff_get" } +elf_symbol { + id: 0xa63eb82a + name: "__traceiter_android_rvh_update_blocked_fair" + is_defined: true + symbol_type: FUNCTION + crc: 0x0484f45c + type_id: 0x9b17b01e + full_name: "__traceiter_android_rvh_update_blocked_fair" +} elf_symbol { id: 0xcd824552 name: "__traceiter_android_rvh_update_cpu_capacity" @@ -333832,6 +333999,15 @@ elf_symbol { type_id: 0x9a32aa77 full_name: "__traceiter_android_rvh_update_cpu_capacity" } +elf_symbol { + id: 0xb6d1fa25 + name: "__traceiter_android_rvh_update_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0xa1719b21 + type_id: 0x99e4a009 + full_name: "__traceiter_android_rvh_update_load_avg" +} elf_symbol { id: 0x16809a5a name: "__traceiter_android_rvh_update_misfit_status" @@ -333841,6 +334017,15 @@ elf_symbol { type_id: 0x9bd01b5c full_name: "__traceiter_android_rvh_update_misfit_status" } +elf_symbol { + id: 0xfaa2e0a4 + name: "__traceiter_android_rvh_update_rt_rq_load_avg" + is_defined: true + symbol_type: FUNCTION + crc: 0x4748df7a + type_id: 0x99ecdba4 + full_name: "__traceiter_android_rvh_update_rt_rq_load_avg" +} elf_symbol { id: 0xc1ba0eb6 name: "__traceiter_android_rvh_update_thermal_stats" @@ -335677,6 +335862,15 @@ elf_symbol { type_id: 0x9bcdfb6a full_name: "__traceiter_android_vh_typec_tcpm_modify_src_caps" } +elf_symbol { + id: 0xaa213206 + name: "__traceiter_android_vh_uclamp_validate" + is_defined: true + symbol_type: FUNCTION + crc: 0xd05b7a41 + type_id: 0x9bd44256 + full_name: "__traceiter_android_vh_uclamp_validate" +} elf_symbol { id: 0xe31bb308 name: "__traceiter_android_vh_ufs_check_int_errors" @@ -335794,6 +335988,15 @@ elf_symbol { type_id: 0x9bcd4ff7 full_name: "__traceiter_android_vh_update_topology_flags_workfn" } +elf_symbol { + id: 0x08824ed3 + name: "__traceiter_android_vh_use_amu_fie" + is_defined: true + symbol_type: FUNCTION + crc: 0xb22c3cda + type_id: 0x9be885da + full_name: "__traceiter_android_vh_use_amu_fie" +} elf_symbol { id: 0xb0bf7fd6 name: "__traceiter_android_vh_watchdog_timer_softlockup" @@ -336109,6 +336312,33 @@ elf_symbol { type_id: 0x9bba87c7 full_name: "__traceiter_netif_rx" } +elf_symbol { + id: 0xbbfa35c3 + name: "__traceiter_pelt_cfs_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0x53dcc117 + type_id: 0x9b94dad5 + full_name: "__traceiter_pelt_cfs_tp" +} +elf_symbol { + id: 0x328bf22b + name: "__traceiter_pelt_dl_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0x977e9245 + type_id: 0x9b17b01e + full_name: "__traceiter_pelt_dl_tp" +} +elf_symbol { + id: 0xbdceccc2 + name: "__traceiter_pelt_irq_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0xb26f5140 + type_id: 0x9b17b01e + full_name: "__traceiter_pelt_irq_tp" +} elf_symbol { id: 0x3e69b303 name: "__traceiter_pelt_rt_tp" @@ -336154,6 +336384,15 @@ elf_symbol { type_id: 0x9b6cf0df full_name: "__traceiter_rwmmio_write" } +elf_symbol { + id: 0x1e8ffa55 + name: "__traceiter_sched_cpu_capacity_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0xf30b3e42 + type_id: 0x9b17b01e + full_name: "__traceiter_sched_cpu_capacity_tp" +} elf_symbol { id: 0xb614ca1f name: "__traceiter_sched_overutilized_tp" @@ -336226,6 +336465,24 @@ elf_symbol { type_id: 0x9b0e782a full_name: "__traceiter_sched_update_nr_running_tp" } +elf_symbol { + id: 0x00296361 + name: "__traceiter_sched_util_est_cfs_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0xa50436b4 + type_id: 0x9b94dad5 + full_name: "__traceiter_sched_util_est_cfs_tp" +} +elf_symbol { + id: 0xf574f9d9 + name: "__traceiter_sched_util_est_se_tp" + is_defined: true + symbol_type: FUNCTION + crc: 0xbbb17097 + type_id: 0x9b8f15f1 + full_name: "__traceiter_sched_util_est_se_tp" +} elf_symbol { id: 0x20097074 name: "__traceiter_sched_waking" @@ -336325,6 +336582,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_arm64_serror_panic" } +elf_symbol { + id: 0xc9400cec + name: "__tracepoint_android_rvh_attach_entity_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0x9476c5e4 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_attach_entity_load_avg" +} elf_symbol { id: 0xaf461bff name: "__tracepoint_android_rvh_audio_usb_offload_disconnect" @@ -336487,6 +336753,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_dequeue_task_fair" } +elf_symbol { + id: 0x5029bb46 + name: "__tracepoint_android_rvh_detach_entity_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0xb186a022 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_detach_entity_load_avg" +} elf_symbol { id: 0x11f903b1 name: "__tracepoint_android_rvh_die_kernel_fault" @@ -336721,6 +336996,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_iommu_setup_dma_ops" } +elf_symbol { + id: 0x4fd98142 + name: "__tracepoint_android_rvh_irqs_disable" + is_defined: true + symbol_type: OBJECT + crc: 0x44ac9f4b + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_irqs_disable" +} +elf_symbol { + id: 0x695c4baf + name: "__tracepoint_android_rvh_irqs_enable" + is_defined: true + symbol_type: OBJECT + crc: 0xc9d53b36 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_irqs_enable" +} elf_symbol { id: 0x99d57c12 name: "__tracepoint_android_rvh_is_cpu_allowed" @@ -336811,6 +337104,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_post_init_entity_util_avg" } +elf_symbol { + id: 0x817c415a + name: "__tracepoint_android_rvh_preempt_disable" + is_defined: true + symbol_type: OBJECT + crc: 0xb4ec0da4 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_preempt_disable" +} +elf_symbol { + id: 0x3fe8bcd7 + name: "__tracepoint_android_rvh_preempt_enable" + is_defined: true + symbol_type: OBJECT + crc: 0x86d490a6 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_preempt_enable" +} elf_symbol { id: 0x50605d97 name: "__tracepoint_android_rvh_prepare_prio_fork" @@ -336847,6 +337158,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_refrigerator" } +elf_symbol { + id: 0x5ac6bcbc + name: "__tracepoint_android_rvh_remove_entity_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0x6b69fe2c + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_remove_entity_load_avg" +} elf_symbol { id: 0x18bac297 name: "__tracepoint_android_rvh_replace_next_task_fair" @@ -337126,6 +337446,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_set_gfp_zone_flags" } +elf_symbol { + id: 0xbe9f9d4f + name: "__tracepoint_android_rvh_set_iowait" + is_defined: true + symbol_type: OBJECT + crc: 0x343470a7 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_set_iowait" +} elf_symbol { id: 0xda52fd4f name: "__tracepoint_android_rvh_set_module_core_rw_nx" @@ -337288,6 +337617,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_uclamp_eff_get" } +elf_symbol { + id: 0xc3add2dc + name: "__tracepoint_android_rvh_update_blocked_fair" + is_defined: true + symbol_type: OBJECT + crc: 0x6d3cb3aa + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_update_blocked_fair" +} elf_symbol { id: 0xdc2af26c name: "__tracepoint_android_rvh_update_cpu_capacity" @@ -337297,6 +337635,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_update_cpu_capacity" } +elf_symbol { + id: 0xcc5017b7 + name: "__tracepoint_android_rvh_update_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0x8ae1dc28 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_update_load_avg" +} elf_symbol { id: 0x1362c5b0 name: "__tracepoint_android_rvh_update_misfit_status" @@ -337306,6 +337653,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_rvh_update_misfit_status" } +elf_symbol { + id: 0xaa2da792 + name: "__tracepoint_android_rvh_update_rt_rq_load_avg" + is_defined: true + symbol_type: OBJECT + crc: 0x4bcdd224 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_rvh_update_rt_rq_load_avg" +} elf_symbol { id: 0x0e614ab0 name: "__tracepoint_android_rvh_update_thermal_stats" @@ -339142,6 +339498,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_typec_tcpm_modify_src_caps" } +elf_symbol { + id: 0xf09ef4d0 + name: "__tracepoint_android_vh_uclamp_validate" + is_defined: true + symbol_type: OBJECT + crc: 0xb9255a9f + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_uclamp_validate" +} elf_symbol { id: 0x609a86da name: "__tracepoint_android_vh_ufs_check_int_errors" @@ -339259,6 +339624,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_update_topology_flags_workfn" } +elf_symbol { + id: 0xe100c3ad + name: "__tracepoint_android_vh_use_amu_fie" + is_defined: true + symbol_type: OBJECT + crc: 0x8ea85bac + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_use_amu_fie" +} elf_symbol { id: 0x42dbeb24 name: "__tracepoint_android_vh_watchdog_timer_softlockup" @@ -339574,6 +339948,33 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_netif_rx" } +elf_symbol { + id: 0x0ab12991 + name: "__tracepoint_pelt_cfs_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x64f74abf + type_id: 0x18ccbd2c + full_name: "__tracepoint_pelt_cfs_tp" +} +elf_symbol { + id: 0x12df1a91 + name: "__tracepoint_pelt_dl_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x15c60a71 + type_id: 0x18ccbd2c + full_name: "__tracepoint_pelt_dl_tp" +} +elf_symbol { + id: 0x67e2af24 + name: "__tracepoint_pelt_irq_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x2200061c + type_id: 0x18ccbd2c + full_name: "__tracepoint_pelt_irq_tp" +} elf_symbol { id: 0xf3cb5921 name: "__tracepoint_pelt_rt_tp" @@ -339619,6 +340020,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_rwmmio_write" } +elf_symbol { + id: 0x191846a3 + name: "__tracepoint_sched_cpu_capacity_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x3b610584 + type_id: 0x18ccbd2c + full_name: "__tracepoint_sched_cpu_capacity_tp" +} elf_symbol { id: 0x2497fb4d name: "__tracepoint_sched_overutilized_tp" @@ -339691,6 +340101,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_sched_update_nr_running_tp" } +elf_symbol { + id: 0x2160e0b7 + name: "__tracepoint_sched_util_est_cfs_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x2c790d4a + type_id: 0x18ccbd2c + full_name: "__tracepoint_sched_util_est_cfs_tp" +} +elf_symbol { + id: 0xf586b3bb + name: "__tracepoint_sched_util_est_se_tp" + is_defined: true + symbol_type: OBJECT + crc: 0x3a74e484 + type_id: 0x18ccbd2c + full_name: "__tracepoint_sched_util_est_se_tp" +} elf_symbol { id: 0xa70e8cd2 name: "__tracepoint_sched_waking" @@ -375323,6 +375751,15 @@ elf_symbol { type_id: 0x910aa3e9 full_name: "public_key_verify_signature" } +elf_symbol { + id: 0xd38a2f2a + name: "push_cpu_stop" + is_defined: true + symbol_type: FUNCTION + crc: 0x99bd5133 + type_id: 0x9bafba63 + full_name: "push_cpu_stop" +} elf_symbol { id: 0x11d4227b name: "put_cmsg" @@ -377645,6 +378082,15 @@ elf_symbol { type_id: 0x47f7e87e full_name: "return_address" } +elf_symbol { + id: 0xd8c7c137 + name: "reweight_task" + is_defined: true + symbol_type: FUNCTION + crc: 0x3a6ca281 + type_id: 0x1642b8aa + full_name: "reweight_task" +} elf_symbol { id: 0xa3f52060 name: "rfkill_alloc" @@ -384288,6 +384734,15 @@ elf_symbol { type_id: 0x1b3aea40 full_name: "static_key_disable" } +elf_symbol { + id: 0x8ac195eb + name: "static_key_enable" + is_defined: true + symbol_type: FUNCTION + crc: 0x6b2b69f7 + type_id: 0x1b3aea40 + full_name: "static_key_enable" +} elf_symbol { id: 0xd09568e0 name: "static_key_slow_dec" @@ -384867,6 +385322,15 @@ elf_symbol { type_id: 0x4585663f full_name: "sysctl_sched_features" } +elf_symbol { + id: 0x87812861 + name: "sysctl_sched_latency" + is_defined: true + symbol_type: OBJECT + crc: 0xceee0cb7 + type_id: 0x4585663f + full_name: "sysctl_sched_latency" +} elf_symbol { id: 0x18d0dd21 name: "sysctl_vals" @@ -385533,6 +385997,24 @@ elf_symbol { type_id: 0x129c1f38 full_name: "tcpm_vbus_change" } +elf_symbol { + id: 0x7cfd9233 + name: "teo_cpu_get_util_threshold" + is_defined: true + symbol_type: FUNCTION + crc: 0x0482d3ad + type_id: 0x2864f998 + full_name: "teo_cpu_get_util_threshold" +} +elf_symbol { + id: 0xbd25c7d0 + name: "teo_cpu_set_util_threshold" + is_defined: true + symbol_type: FUNCTION + crc: 0xba6e00b6 + type_id: 0x099db0ca + full_name: "teo_cpu_set_util_threshold" +} elf_symbol { id: 0x5bbd3545 name: "thermal_cdev_update" @@ -394640,6 +395122,8 @@ interface { symbol_id: 0x5b94e7ac symbol_id: 0x41de13f7 symbol_id: 0xe284f532 + symbol_id: 0x98179c82 + symbol_id: 0xfa979d99 symbol_id: 0x6e1bc82e symbol_id: 0x9fa51b33 symbol_id: 0x228f3ab6 @@ -394997,6 +395481,7 @@ interface { symbol_id: 0xb42422d5 symbol_id: 0xb3d70eab symbol_id: 0x0b48afa1 + symbol_id: 0x6d4cc1a2 symbol_id: 0x48420da9 symbol_id: 0x144db0a1 symbol_id: 0x192bbbd5 @@ -395015,6 +395500,7 @@ interface { symbol_id: 0x8f1b1c1e symbol_id: 0xd6290b85 symbol_id: 0x3e4ab4f6 + symbol_id: 0xa0a77bb8 symbol_id: 0xa3b41867 symbol_id: 0x40034e11 symbol_id: 0x6e62463e @@ -395041,6 +395527,8 @@ interface { symbol_id: 0x7edcea8d symbol_id: 0x72c43156 symbol_id: 0x61e95c07 + symbol_id: 0xfc83b254 + symbol_id: 0x7e99bc71 symbol_id: 0x7c212080 symbol_id: 0x1ea5d323 symbol_id: 0xc1a482d8 @@ -395051,10 +395539,13 @@ interface { symbol_id: 0x88e9b222 symbol_id: 0x097e467e symbol_id: 0xfad1d9f5 + symbol_id: 0x167fc668 + symbol_id: 0xd6a514f5 symbol_id: 0xeccbc3c1 symbol_id: 0xbd2d27dc symbol_id: 0xe41b0c78 symbol_id: 0x13f466b7 + symbol_id: 0xc191b2f6 symbol_id: 0xe3e24295 symbol_id: 0xaedef3a2 symbol_id: 0xde725472 @@ -395086,6 +395577,7 @@ interface { symbol_id: 0xbe8d73f2 symbol_id: 0xaf658447 symbol_id: 0xe56edb7a + symbol_id: 0x9c2c2d71 symbol_id: 0xcac6b03d symbol_id: 0x4a5f5242 symbol_id: 0x08cd7e9d @@ -395104,8 +395596,11 @@ interface { symbol_id: 0x23097c08 symbol_id: 0xe3ee70ae symbol_id: 0xcce6f612 + symbol_id: 0xa63eb82a symbol_id: 0xcd824552 + symbol_id: 0xb6d1fa25 symbol_id: 0x16809a5a + symbol_id: 0xfaa2e0a4 symbol_id: 0xc1ba0eb6 symbol_id: 0x13c17b96 symbol_id: 0xebcd0234 @@ -395310,6 +395805,7 @@ interface { symbol_id: 0x558490b1 symbol_id: 0x8af2b51e symbol_id: 0x5ab5402f + symbol_id: 0xaa213206 symbol_id: 0xe31bb308 symbol_id: 0x6a6dc806 symbol_id: 0xa56348c9 @@ -395323,6 +395819,7 @@ interface { symbol_id: 0xcc8dcd0c symbol_id: 0xcb4d15f3 symbol_id: 0x6a8145ff + symbol_id: 0x08824ed3 symbol_id: 0xb0bf7fd6 symbol_id: 0xae5e5469 symbol_id: 0x6911084f @@ -395358,11 +395855,15 @@ interface { symbol_id: 0xc8ec671c symbol_id: 0x60c24c4f symbol_id: 0xa7548418 + symbol_id: 0xbbfa35c3 + symbol_id: 0x328bf22b + symbol_id: 0xbdceccc2 symbol_id: 0x3e69b303 symbol_id: 0x7f1a363f symbol_id: 0x2c11fea4 symbol_id: 0x45e62871 symbol_id: 0x85a11e58 + symbol_id: 0x1e8ffa55 symbol_id: 0xb614ca1f symbol_id: 0x2de60b3e symbol_id: 0x9cf075c5 @@ -395371,6 +395872,8 @@ interface { symbol_id: 0x41fdc249 symbol_id: 0x570f3032 symbol_id: 0xc42d0053 + symbol_id: 0x00296361 + symbol_id: 0xf574f9d9 symbol_id: 0x20097074 symbol_id: 0x863777a0 symbol_id: 0xcac5a7d5 @@ -395382,6 +395885,7 @@ interface { symbol_id: 0x4b7a8fd7 symbol_id: 0xcd36f539 symbol_id: 0x748c1fd7 + symbol_id: 0xc9400cec symbol_id: 0xaf461bff symbol_id: 0xd7757253 symbol_id: 0x1e8a7e23 @@ -395400,6 +395904,7 @@ interface { symbol_id: 0x3eb0f084 symbol_id: 0x832ab9cf symbol_id: 0xaa8affb8 + symbol_id: 0x5029bb46 symbol_id: 0x11f903b1 symbol_id: 0x25e320a3 symbol_id: 0xcd81b300 @@ -395426,6 +395931,8 @@ interface { symbol_id: 0x0991fcbf symbol_id: 0x693af5b0 symbol_id: 0x59d74b45 + symbol_id: 0x4fd98142 + symbol_id: 0x695c4baf symbol_id: 0x99d57c12 symbol_id: 0x3cb4db49 symbol_id: 0x3a6f3fb2 @@ -395436,10 +395943,13 @@ interface { symbol_id: 0x18752990 symbol_id: 0x448fc4e4 symbol_id: 0x121537db + symbol_id: 0x817c415a + symbol_id: 0x3fe8bcd7 symbol_id: 0x50605d97 symbol_id: 0xa5e991f6 symbol_id: 0x261c997e symbol_id: 0x3b6248c1 + symbol_id: 0x5ac6bcbc symbol_id: 0x18bac297 symbol_id: 0x1a849f34 symbol_id: 0x3f328d3c @@ -395471,6 +395981,7 @@ interface { symbol_id: 0x4bc6b114 symbol_id: 0x93751239 symbol_id: 0x70131d40 + symbol_id: 0xbe9f9d4f symbol_id: 0xda52fd4f symbol_id: 0x86f03c84 symbol_id: 0x498fea3f @@ -395489,8 +396000,11 @@ interface { symbol_id: 0xafe46ece symbol_id: 0xe445d254 symbol_id: 0x64e2c288 + symbol_id: 0xc3add2dc symbol_id: 0xdc2af26c + symbol_id: 0xcc5017b7 symbol_id: 0x1362c5b0 + symbol_id: 0xaa2da792 symbol_id: 0x0e614ab0 symbol_id: 0xa68c0f10 symbol_id: 0xdcf22716 @@ -395695,6 +396209,7 @@ interface { symbol_id: 0x7b5c377f symbol_id: 0x6436c788 symbol_id: 0x1f1a25bd + symbol_id: 0xf09ef4d0 symbol_id: 0x609a86da symbol_id: 0x08a49528 symbol_id: 0xa03a7d43 @@ -395708,6 +396223,7 @@ interface { symbol_id: 0xaf7a4dba symbol_id: 0x743ea36d symbol_id: 0xc09d36c9 + symbol_id: 0xe100c3ad symbol_id: 0x42dbeb24 symbol_id: 0xa13f65ff symbol_id: 0xf57e8f65 @@ -395743,11 +396259,15 @@ interface { symbol_id: 0x4a43bdfe symbol_id: 0xd224caa5 symbol_id: 0xcbc5fd52 + symbol_id: 0x0ab12991 + symbol_id: 0x12df1a91 + symbol_id: 0x67e2af24 symbol_id: 0xf3cb5921 symbol_id: 0xcb194ec9 symbol_id: 0x009c40ce symbol_id: 0x02473ce7 symbol_id: 0x65f99dde + symbol_id: 0x191846a3 symbol_id: 0x2497fb4d symbol_id: 0x37548d14 symbol_id: 0x6aa1a617 @@ -395756,6 +396276,8 @@ interface { symbol_id: 0x7d5529d3 symbol_id: 0xe10cee18 symbol_id: 0x477e3555 + symbol_id: 0x2160e0b7 + symbol_id: 0xf586b3bb symbol_id: 0xa70e8cd2 symbol_id: 0x5b327cd6 symbol_id: 0xe91cdbb3 @@ -399714,6 +400236,7 @@ interface { symbol_id: 0xb36e22d3 symbol_id: 0x683db5bf symbol_id: 0x177fa0e0 + symbol_id: 0xd38a2f2a symbol_id: 0x11d4227b symbol_id: 0x71551ba9 symbol_id: 0x435b99c6 @@ -399972,6 +400495,7 @@ interface { symbol_id: 0xd41c441b symbol_id: 0x8607d899 symbol_id: 0x1d945826 + symbol_id: 0xd8c7c137 symbol_id: 0xa3f52060 symbol_id: 0x001f1a24 symbol_id: 0x46d54e34 @@ -400710,6 +401234,7 @@ interface { symbol_id: 0xf304733e symbol_id: 0x153d2098 symbol_id: 0xc24d49e4 + symbol_id: 0x8ac195eb symbol_id: 0xd09568e0 symbol_id: 0xe4a0e986 symbol_id: 0x6dc2f0b4 @@ -400775,6 +401300,7 @@ interface { symbol_id: 0x2f857527 symbol_id: 0x3e5f4f82 symbol_id: 0xbf1515af + symbol_id: 0x87812861 symbol_id: 0x18d0dd21 symbol_id: 0x92705587 symbol_id: 0xdbe66171 @@ -400849,6 +401375,8 @@ interface { symbol_id: 0xfccd15d1 symbol_id: 0x591431f1 symbol_id: 0x6869c83d + symbol_id: 0x7cfd9233 + symbol_id: 0xbd25c7d0 symbol_id: 0x5bbd3545 symbol_id: 0xf4017fdd symbol_id: 0x2d1f2cdd diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 1821dfa89e20..7ea4e636d19b 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -1,4 +1,5 @@ [abi_symbol_list] + activate_task add_cpu add_timer add_timer_on @@ -30,6 +31,7 @@ __arch_clear_user __arch_copy_from_user __arch_copy_to_user + arch_freq_scale arch_timer_read_counter argv_free argv_split @@ -42,6 +44,7 @@ atomic_notifier_chain_register atomic_notifier_chain_unregister autoremove_wake_function + available_idle_cpu backlight_device_set_brightness badblocks_check badblocks_clear @@ -49,6 +52,7 @@ badblocks_init badblocks_set badblocks_show + balance_push_callback bcmp bdev_end_io_acct bdev_nr_zones @@ -115,6 +119,7 @@ bpf_trace_run1 bpf_trace_run10 bpf_trace_run11 + bpf_trace_run12 bpf_trace_run2 bpf_trace_run3 bpf_trace_run4 @@ -144,6 +149,7 @@ cdev_device_del cdev_init __check_object_size + check_preempt_curr __class_create class_destroy class_interface_unregister @@ -206,22 +212,34 @@ _copy_from_iter __copy_overflow _copy_to_iter + __cpu_active_mask cpu_all_bits cpu_bit_bitmap + cpufreq_add_update_util_hook cpufreq_cpu_get cpufreq_cpu_get_raw cpufreq_cpu_put + cpufreq_disable_fast_switch + cpufreq_driver_fast_switch + cpufreq_driver_resolve_freq + __cpufreq_driver_target cpufreq_driver_target + cpufreq_enable_fast_switch cpufreq_freq_transition_begin cpufreq_freq_transition_end cpufreq_frequency_table_verify cpufreq_generic_attr cpufreq_get cpufreq_get_policy + cpufreq_policy_transition_delay_us cpufreq_quick_get cpufreq_register_driver + cpufreq_register_governor cpufreq_register_notifier + cpufreq_remove_update_util_hook cpufreq_table_index_unsorted + cpufreq_this_cpu_can_update + cpufreq_update_util_data cpu_hotplug_disable cpu_hotplug_enable __cpuhp_remove_state @@ -243,6 +261,7 @@ cpu_pm_unregister_notifier __cpu_possible_mask __cpu_present_mask + cpupri_find_fitness cpu_scale cpus_read_lock cpus_read_unlock @@ -282,6 +301,7 @@ csum_partial csum_tcpudp_nofold _ctype + deactivate_task debugfs_attr_read debugfs_attr_write debugfs_create_atomic_t @@ -818,6 +838,7 @@ _find_next_bit _find_next_zero_bit find_pid_ns + find_task_by_vpid find_vma_intersection finish_wait flush_dcache_page @@ -879,6 +900,7 @@ get_cpu_iowait_time_us get_device __get_free_pages + get_governor_parent_kobj gether_cleanup gether_connect gether_disconnect @@ -904,6 +926,7 @@ get_random_u8 get_sg_io_hdr __get_task_comm + get_task_cred get_thermal_instance get_unused_fd_flags get_user_pages @@ -911,6 +934,10 @@ get_vaddr_frames gic_nonsecure_priorities glob_match + gov_attr_set_get + gov_attr_set_init + gov_attr_set_put + governor_sysfs_ops gpiochip_generic_config gpiochip_generic_free gpiochip_generic_request @@ -943,6 +970,7 @@ handle_simple_irq handle_sysrq hashlen_string + have_governor_per_policy hex2bin hex_dump_to_buffer hex_to_bin @@ -1103,6 +1131,8 @@ irq_set_irq_type irq_set_irq_wake irq_to_desc + irq_work_queue + irq_work_sync is_vmalloc_addr jiffies jiffies64_to_msecs @@ -1115,6 +1145,7 @@ kernel_param_lock kernel_param_unlock kernel_restart + kernfs_path_from_node key_create_or_update key_put keyring_alloc @@ -1332,6 +1363,7 @@ noop_llseek nr_cpu_ids nr_irqs + ns_capable nsec_to_clock_t ns_to_timespec64 __num_online_cpus @@ -1576,18 +1608,23 @@ prepare_to_wait_event print_hex_dump _printk + _printk_deferred proc_create proc_create_data proc_create_single_data proc_dointvec proc_dostring + proc_douintvec_minmax proc_mkdir proc_mkdir_data proc_remove + proc_set_size proc_symlink pskb_expand_head __pskb_pull_tail ___pskb_trim + push_cpu_stop + __put_cred put_device put_disk put_iova_domain @@ -1619,6 +1656,8 @@ _raw_spin_lock_bh _raw_spin_lock_irq _raw_spin_lock_irqsave + raw_spin_rq_lock_nested + raw_spin_rq_unlock _raw_spin_trylock _raw_spin_unlock _raw_spin_unlock_bh @@ -1716,7 +1755,9 @@ __request_percpu_irq __request_region request_threaded_irq + resched_curr return_address + reweight_task rfkill_alloc rfkill_blocked rfkill_destroy @@ -1733,6 +1774,7 @@ rht_bucket_nested_insert __root_device_register root_device_unregister + root_task_group round_jiffies round_jiffies_relative round_jiffies_up @@ -1752,13 +1794,16 @@ rtnl_lock rtnl_trylock rtnl_unlock + runqueues sched_clock + sched_feat_keys sched_setattr_nocheck sched_set_fifo sched_set_normal sched_setscheduler sched_setscheduler_nocheck sched_show_task + sched_uclamp_used schedule schedule_timeout schedule_timeout_interruptible @@ -1807,6 +1852,7 @@ set_page_dirty set_page_dirty_lock __SetPageMovable + set_task_cpu set_user_nice sg_alloc_table sg_alloc_table_from_pages_segment @@ -1967,9 +2013,11 @@ sscanf __stack_chk_fail static_key_disable + static_key_enable static_key_slow_dec static_key_slow_inc stop_machine + stop_one_cpu_nowait strcasecmp strcat strchr @@ -2009,6 +2057,8 @@ synchronize_net synchronize_rcu syscon_regmap_lookup_by_phandle + sysctl_sched_features + sysctl_sched_latency sysfs_add_file_to_group sysfs_add_link_to_group sysfs_create_file_ns @@ -2045,6 +2095,7 @@ tasklet_setup tasklet_unlock_wait __task_pid_nr_ns + task_rq_lock tcpci_get_tcpm_port tcpci_irq tcpci_register_port @@ -2061,9 +2112,12 @@ tcpm_tcpc_reset tcpm_unregister_port tcpm_vbus_change + teo_cpu_get_util_threshold + teo_cpu_set_util_threshold thermal_cdev_update thermal_cooling_device_unregister thermal_of_cooling_device_register + thermal_pressure thermal_zone_device_disable thermal_zone_device_enable thermal_zone_device_register @@ -2084,21 +2138,58 @@ trace_event_raw_init trace_event_reg trace_handle_return + __traceiter_android_rvh_attach_entity_load_avg __traceiter_android_rvh_audio_usb_offload_disconnect + __traceiter_android_rvh_can_migrate_task __traceiter_android_rvh_cgroup_force_kthread_migration + __traceiter_android_rvh_check_preempt_wakeup + __traceiter_android_rvh_cpu_overutilized + __traceiter_android_rvh_dequeue_task + __traceiter_android_rvh_dequeue_task_fair + __traceiter_android_rvh_detach_entity_load_avg + __traceiter_android_rvh_enqueue_task + __traceiter_android_rvh_enqueue_task_fair + __traceiter_android_rvh_find_lowest_rq + __traceiter_android_rvh_irqs_disable + __traceiter_android_rvh_irqs_enable + __traceiter_android_rvh_post_init_entity_util_avg + __traceiter_android_rvh_preempt_disable + __traceiter_android_rvh_preempt_enable + __traceiter_android_rvh_prepare_prio_fork + __traceiter_android_rvh_remove_entity_load_avg + __traceiter_android_rvh_rtmutex_prepare_setprio + __traceiter_android_rvh_sched_newidle_balance + __traceiter_android_rvh_select_task_rq_fair + __traceiter_android_rvh_select_task_rq_rt + __traceiter_android_rvh_set_cpus_allowed_by_task + __traceiter_android_rvh_set_iowait + __traceiter_android_rvh_setscheduler + __traceiter_android_rvh_set_task_cpu + __traceiter_android_rvh_set_user_nice __traceiter_android_rvh_typec_tcpci_get_vbus + __traceiter_android_rvh_uclamp_eff_get + __traceiter_android_rvh_update_blocked_fair + __traceiter_android_rvh_update_load_avg + __traceiter_android_rvh_update_rt_rq_load_avg + __traceiter_android_vh_arch_set_freq_scale __traceiter_android_vh_audio_usb_offload_connect + __traceiter_android_vh_binder_restore_priority + __traceiter_android_vh_binder_set_priority __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit + __traceiter_android_vh_dump_throttled_rt_tasks + __traceiter_android_vh_dup_task_struct __traceiter_android_vh_enable_thermal_genl_check __traceiter_android_vh_ipi_stop __traceiter_android_vh_scheduler_tick + __traceiter_android_vh_setscheduler_uclamp __traceiter_android_vh_sysrq_crash __traceiter_android_vh_typec_store_partner_src_caps __traceiter_android_vh_typec_tcpci_override_toggling __traceiter_android_vh_typec_tcpm_get_timer __traceiter_android_vh_typec_tcpm_log __traceiter_android_vh_typec_tcpm_modify_src_caps + __traceiter_android_vh_uclamp_validate __traceiter_android_vh_ufs_check_int_errors __traceiter_android_vh_ufs_compl_command __traceiter_android_vh_ufs_fill_prdt @@ -2108,7 +2199,9 @@ __traceiter_android_vh_ufs_send_uic_command __traceiter_android_vh_ufs_update_sdev __traceiter_android_vh_ufs_update_sysfs + __traceiter_android_vh_use_amu_fie __traceiter_clock_set_rate + __traceiter_cpu_frequency __traceiter_device_pm_callback_end __traceiter_device_pm_callback_start __traceiter_gpu_mem_total @@ -2119,26 +2212,72 @@ __traceiter_mmap_lock_acquire_returned __traceiter_mmap_lock_released __traceiter_mmap_lock_start_locking + __traceiter_pelt_cfs_tp + __traceiter_pelt_dl_tp + __traceiter_pelt_irq_tp + __traceiter_pelt_rt_tp + __traceiter_pelt_se_tp + __traceiter_sched_cpu_capacity_tp + __traceiter_sched_overutilized_tp __traceiter_sched_switch + __traceiter_sched_util_est_cfs_tp + __traceiter_sched_util_est_se_tp __traceiter_suspend_resume __traceiter_workqueue_execute_end __traceiter_workqueue_execute_start trace_output_call + __tracepoint_android_rvh_attach_entity_load_avg __tracepoint_android_rvh_audio_usb_offload_disconnect + __tracepoint_android_rvh_can_migrate_task __tracepoint_android_rvh_cgroup_force_kthread_migration + __tracepoint_android_rvh_check_preempt_wakeup + __tracepoint_android_rvh_cpu_overutilized + __tracepoint_android_rvh_dequeue_task + __tracepoint_android_rvh_dequeue_task_fair + __tracepoint_android_rvh_detach_entity_load_avg + __tracepoint_android_rvh_enqueue_task + __tracepoint_android_rvh_enqueue_task_fair + __tracepoint_android_rvh_find_lowest_rq + __tracepoint_android_rvh_irqs_disable + __tracepoint_android_rvh_irqs_enable + __tracepoint_android_rvh_post_init_entity_util_avg + __tracepoint_android_rvh_preempt_disable + __tracepoint_android_rvh_preempt_enable + __tracepoint_android_rvh_prepare_prio_fork + __tracepoint_android_rvh_remove_entity_load_avg + __tracepoint_android_rvh_rtmutex_prepare_setprio + __tracepoint_android_rvh_sched_newidle_balance + __tracepoint_android_rvh_select_task_rq_fair + __tracepoint_android_rvh_select_task_rq_rt + __tracepoint_android_rvh_set_cpus_allowed_by_task + __tracepoint_android_rvh_set_iowait + __tracepoint_android_rvh_setscheduler + __tracepoint_android_rvh_set_task_cpu + __tracepoint_android_rvh_set_user_nice __tracepoint_android_rvh_typec_tcpci_get_vbus + __tracepoint_android_rvh_uclamp_eff_get + __tracepoint_android_rvh_update_blocked_fair + __tracepoint_android_rvh_update_load_avg + __tracepoint_android_rvh_update_rt_rq_load_avg + __tracepoint_android_vh_arch_set_freq_scale __tracepoint_android_vh_audio_usb_offload_connect + __tracepoint_android_vh_binder_restore_priority + __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit + __tracepoint_android_vh_dump_throttled_rt_tasks + __tracepoint_android_vh_dup_task_struct __tracepoint_android_vh_enable_thermal_genl_check __tracepoint_android_vh_ipi_stop __tracepoint_android_vh_scheduler_tick + __tracepoint_android_vh_setscheduler_uclamp __tracepoint_android_vh_sysrq_crash __tracepoint_android_vh_typec_store_partner_src_caps __tracepoint_android_vh_typec_tcpci_override_toggling __tracepoint_android_vh_typec_tcpm_get_timer __tracepoint_android_vh_typec_tcpm_log __tracepoint_android_vh_typec_tcpm_modify_src_caps + __tracepoint_android_vh_uclamp_validate __tracepoint_android_vh_ufs_check_int_errors __tracepoint_android_vh_ufs_compl_command __tracepoint_android_vh_ufs_fill_prdt @@ -2148,7 +2287,9 @@ __tracepoint_android_vh_ufs_send_uic_command __tracepoint_android_vh_ufs_update_sdev __tracepoint_android_vh_ufs_update_sysfs + __tracepoint_android_vh_use_amu_fie __tracepoint_clock_set_rate + __tracepoint_cpu_frequency __tracepoint_device_pm_callback_end __tracepoint_device_pm_callback_start __tracepoint_gpu_mem_total @@ -2159,9 +2300,18 @@ __tracepoint_mmap_lock_acquire_returned __tracepoint_mmap_lock_released __tracepoint_mmap_lock_start_locking + __tracepoint_pelt_cfs_tp + __tracepoint_pelt_dl_tp + __tracepoint_pelt_irq_tp + __tracepoint_pelt_rt_tp + __tracepoint_pelt_se_tp tracepoint_probe_register tracepoint_probe_unregister + __tracepoint_sched_cpu_capacity_tp + __tracepoint_sched_overutilized_tp __tracepoint_sched_switch + __tracepoint_sched_util_est_cfs_tp + __tracepoint_sched_util_est_se_tp __tracepoint_suspend_resume __tracepoint_workqueue_execute_end __tracepoint_workqueue_execute_start @@ -2199,6 +2349,7 @@ uart_unregister_driver uart_update_timeout uart_write_wakeup + uclamp_eff_value __udelay udp4_hwcsum ufshcd_auto_hibern8_update @@ -2237,6 +2388,9 @@ unregister_virtio_driver up update_devfreq + ___update_load_avg + ___update_load_sum + update_rq_clock up_read up_write usb_add_function From 5c2855fbced4e4d18b8d050a3024c7fdbdba02ab Mon Sep 17 00:00:00 2001 From: JohnHsu Date: Mon, 25 Sep 2023 14:08:53 +0800 Subject: [PATCH 53/99] ANDROID: mm: Add vendor hook for compact pages work. To monitor the efficiency of each action about compaction. Add the vendor_hook function and call it in kcompactd_do_work() and try_to_compact_pages() ANDROID vendor hook android_vh_compaction_exit(int, int, const int) android_vh_compaction_try_to_compact_pages_exit(enum *compact result) Bug: 301044280 Change-Id: I4c3f94e77eb2b16ba154ba88a9f75095536de916 Signed-off-by: John Hsu --- drivers/android/vendor_hooks.c | 4 +++- include/trace/hooks/compaction.h | 20 ++++++++++++++++++++ mm/compaction.c | 5 ++++- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 include/trace/hooks/compaction.h diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 0e922f2a8ab1..3a00cc61e30a 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -67,7 +67,7 @@ #include #include #include - +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event * associated with them) to allow external modules to probe them. @@ -335,3 +335,5 @@ 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_binder_special_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_free_buf); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_exit); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_try_to_compact_pages_exit); diff --git a/include/trace/hooks/compaction.h b/include/trace/hooks/compaction.h new file mode 100644 index 000000000000..3286de01d58b --- /dev/null +++ b/include/trace/hooks/compaction.h @@ -0,0 +1,20 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM compaction + +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_COMPACTION_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_COMPACTION_H + +#include + +DECLARE_HOOK(android_vh_compaction_exit, + TP_PROTO(int node_id, int order, const int highest_zoneidx), + TP_ARGS(node_id, order, highest_zoneidx)); +enum compact_result; +DECLARE_HOOK(android_vh_compaction_try_to_compact_pages_exit, + TP_PROTO(enum compact_result *compact_result), + TP_ARGS(compact_result)); +#endif /* _TRACE_HOOK_COMPACTION_H */ +/* This part must be outside protection */ +#include diff --git a/mm/compaction.c b/mm/compaction.c index 2d9bc2ebfadf..4fd76f427e29 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -49,6 +49,8 @@ static inline void count_compact_events(enum vm_event_item item, long delta) #define CREATE_TRACE_POINTS #include +#undef CREATE_TRACE_POINTS +#include #define block_start_pfn(pfn, order) round_down(pfn, 1UL << (order)) #define block_end_pfn(pfn, order) ALIGN((pfn) + 1, 1UL << (order)) @@ -2655,7 +2657,7 @@ enum compact_result try_to_compact_pages(gfp_t gfp_mask, unsigned int order, || fatal_signal_pending(current)) break; } - + trace_android_vh_compaction_try_to_compact_pages_exit(&rc); return rc; } @@ -2902,6 +2904,7 @@ static void kcompactd_do_work(pg_data_t *pgdat) VM_BUG_ON(!list_empty(&cc.freepages)); VM_BUG_ON(!list_empty(&cc.migratepages)); } + trace_android_vh_compaction_exit(pgdat->node_id, cc.order, cc.highest_zoneidx); /* * Regardless of success, we are done until woken up next. But remember From 0deb7bb73e037de8816056a760694138d7dcdc6c Mon Sep 17 00:00:00 2001 From: JohnHsu Date: Mon, 25 Sep 2023 16:57:06 +0800 Subject: [PATCH 54/99] ANDROID: mm: Add vendor hooks for __alloc_pages_slowpath To monitor the efficiency of memory relciaming in __alloc_pages_slowpath, add vendor hooks in each stages of __alloc_pages_slowpath including __alloc_pages_may_oom and __alloc_pages_direct_reclaim. android_vh_mm_alloc_pages_direct_reclaim_enter() android_vh_mm_alloc_pages_direct_reclaim_exit(unsigned long, int) android_vh_mm_alloc_pages_may_oom_exit(struct oom_control *, unsigned long) Bug: 301044280 Change-Id: Ic5b5f1c2ad31b16e7339f539fcf54659e9acaba7 Signed-off-by: John Hsu --- drivers/android/vendor_hooks.c | 3 +++ include/trace/hooks/mm.h | 10 ++++++++++ mm/page_alloc.c | 7 ++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 3a00cc61e30a..5dcdb52ee06f 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -337,3 +337,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_special_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_free_buf); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_try_to_compact_pages_exit); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_direct_reclaim_enter); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_direct_reclaim_exit); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_may_oom_exit); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index e49cc31ea70d..254da451178e 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -141,6 +141,16 @@ DECLARE_HOOK(android_vh_look_around, struct vm_area_struct *vma, int *referenced), TP_ARGS(pvmw, folio, vma, referenced)); +DECLARE_HOOK(android_vh_mm_alloc_pages_direct_reclaim_enter, + TP_PROTO(unsigned int order), + TP_ARGS(order)); +DECLARE_HOOK(android_vh_mm_alloc_pages_direct_reclaim_exit, + TP_PROTO(unsigned long did_some_progress, int retry_times), + TP_ARGS(did_some_progress, retry_times)); +struct oom_control; +DECLARE_HOOK(android_vh_mm_alloc_pages_may_oom_exit, + TP_PROTO(struct oom_control *oc, unsigned long did_some_progress), + TP_ARGS(oc, did_some_progress)); #endif /* _TRACE_HOOK_MM_H */ /* This part must be outside protection */ diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d5ca46562e88..501d69ac8b95 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -4503,6 +4503,7 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, if (!mutex_trylock(&oom_lock)) { *did_some_progress = 1; schedule_timeout_uninterruptible(1); + trace_android_vh_mm_alloc_pages_may_oom_exit(&oc, *did_some_progress); return NULL; } @@ -4565,6 +4566,7 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order, } out: mutex_unlock(&oom_lock); + trace_android_vh_mm_alloc_pages_may_oom_exit(&oc, *did_some_progress); return page; } @@ -4868,10 +4870,12 @@ __alloc_pages_direct_reclaim(gfp_t gfp_mask, unsigned int order, unsigned int alloc_flags, const struct alloc_context *ac, unsigned long *did_some_progress) { + int retry_times = 0; struct page *page = NULL; unsigned long pflags; bool drained = false; + trace_android_vh_mm_alloc_pages_direct_reclaim_enter(order); psi_memstall_enter(&pflags); *did_some_progress = __perform_reclaim(gfp_mask, order, ac); if (unlikely(!(*did_some_progress))) @@ -4889,11 +4893,12 @@ retry: unreserve_highatomic_pageblock(ac, false); drain_all_pages(NULL); drained = true; + ++retry_times; goto retry; } out: psi_memstall_leave(&pflags); - + trace_android_vh_mm_alloc_pages_direct_reclaim_exit(*did_some_progress, retry_times); return page; } From 30d86f760c183e3acd3641e97d7ee8463477698b Mon Sep 17 00:00:00 2001 From: JohnHsu Date: Mon, 25 Sep 2023 17:28:48 +0800 Subject: [PATCH 55/99] ANDROID: mm: Add vendor hooks for recording when kswapd finishing the reclaim job To monitor the reclaiming ability of kswapd, add vendor hook recording when the kswapd finish the reclaiming job and the reclaim progress. android_vh_vmscan_kswpad_done(int, unsigned int, unsigned int, unsigned int) Bug: 301044280 Change-Id: Id6e0a97003f0a156cff4d0996bc38bcd89b1dc69 Signed-off-by: John Hsu --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/vmscan.h | 4 ++++ mm/vmscan.c | 2 ++ 3 files changed, 7 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 5dcdb52ee06f..a705333dc1b3 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -340,3 +340,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compaction_try_to_compact_pages_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_direct_reclaim_enter); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_direct_reclaim_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_may_oom_exit); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmscan_kswapd_done); diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index 625d30d75757..f9effdd2d03e 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -49,6 +49,10 @@ DECLARE_HOOK(android_vh_tune_swappiness, DECLARE_HOOK(android_vh_scan_abort_check_wmarks, TP_PROTO(bool *check_wmarks), TP_ARGS(check_wmarks)); +DECLARE_HOOK(android_vh_vmscan_kswapd_done, + TP_PROTO(int node_id, unsigned int highest_zoneidx, unsigned int alloc_order, + unsigned int reclaim_order), + TP_ARGS(node_id, highest_zoneidx, alloc_order, reclaim_order)); #endif /* _TRACE_HOOK_VMSCAN_H */ /* This part must be outside protection */ #include diff --git a/mm/vmscan.c b/mm/vmscan.c index d1b9313ef88f..de0a079c029f 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -7788,6 +7788,8 @@ kswapd_try_sleep: alloc_order); reclaim_order = balance_pgdat(pgdat, alloc_order, highest_zoneidx); + trace_android_vh_vmscan_kswapd_done(pgdat->node_id, highest_zoneidx, + alloc_order, reclaim_order); if (reclaim_order < alloc_order) goto kswapd_try_sleep; } From 324c8522f9cd2966429f11325d5b4f25d435d272 Mon Sep 17 00:00:00 2001 From: JohnHsu Date: Mon, 2 Oct 2023 11:17:40 +0800 Subject: [PATCH 56/99] ANDROID: Update symbol list for mtk 6 function symbol(s) added 'int __traceiter_android_vh_compaction_exit(void*, int, int, int)' 'int __traceiter_android_vh_compaction_try_to_compact_pages_exit(void*, enum compact_result*)' 'int __traceiter_android_vh_mm_alloc_pages_direct_reclaim_enter(void*, unsigned int)' 'int __traceiter_android_vh_mm_alloc_pages_direct_reclaim_exit(void*, unsigned long, int)' 'int __traceiter_android_vh_mm_alloc_pages_may_oom_exit(void*, struct oom_control*, unsigned long)' 'int __traceiter_android_vh_vmscan_kswapd_done(void*, int, unsigned int, unsigned int, unsigned int)' 6 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_compaction_exit' 'struct tracepoint __tracepoint_android_vh_compaction_try_to_compact_pages_exit' 'struct tracepoint __tracepoint_android_vh_mm_alloc_pages_direct_reclaim_enter' 'struct tracepoint __tracepoint_android_vh_mm_alloc_pages_direct_reclaim_exit' 'struct tracepoint __tracepoint_android_vh_mm_alloc_pages_may_oom_exit' 'struct tracepoint __tracepoint_android_vh_vmscan_kswapd_done' Bug: 301044280 Change-Id: Ie084b70571900e2e63e6f9d0b1aec4f630d9e6d2 Signed-off-by: john.hsu --- android/abi_gki_aarch64.stg | 306 ++++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_mtk | 12 ++ 2 files changed, 318 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 6460f2a5e90f..8565da52be9f 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -10863,6 +10863,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x5057492d } +pointer_reference { + id: 0x1e85f467 + kind: POINTER + pointee_type_id: 0x50573700 +} pointer_reference { id: 0x1e870478 kind: POINTER @@ -12518,6 +12523,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xb0090c73 } +pointer_reference { + id: 0x2696c21b + kind: POINTER + pointee_type_id: 0xb01beef1 +} pointer_reference { id: 0x269af4e9 kind: POINTER @@ -27743,6 +27753,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdbcfcd34 } +pointer_reference { + id: 0x3c692b7e + kind: POINTER + pointee_type_id: 0xdbe44b66 +} pointer_reference { id: 0x3c6a6bbc kind: POINTER @@ -60477,6 +60492,18 @@ member { type_id: 0x2b8f13b3 offset: 256 } +member { + id: 0x1024996f + name: "chosen" + type_id: 0x1d19a9d5 + offset: 320 +} +member { + id: 0x3d099644 + name: "chosen_points" + type_id: 0xfc0e1dbd + offset: 384 +} member { id: 0x697fbc8c name: "chrdev" @@ -64911,6 +64938,12 @@ member { type_id: 0x6720d32f offset: 384 } +member { + id: 0xaf3405ec + name: "constraint" + type_id: 0x6df42b18 + offset: 448 +} member { id: 0x02afc8a1 name: "constraint_set_flags" @@ -96287,6 +96320,12 @@ member { name: "gfp_mask" type_id: 0xf1a6dfed } +member { + id: 0xa4b05168 + name: "gfp_mask" + type_id: 0xe0785a59 + offset: 192 +} member { id: 0xa4b05766 name: "gfp_mask" @@ -134214,6 +134253,12 @@ member { type_id: 0x6d7f5ff6 offset: 8696 } +member { + id: 0x788bc17d + name: "nodemask" + type_id: 0x2fb2b385 + offset: 64 +} member { id: 0x8b5fc0c2 name: "nodename" @@ -141138,6 +141183,12 @@ member { type_id: 0x2360e10b offset: 256 } +member { + id: 0xb51c2507 + name: "order" + type_id: 0xc5d9d969 + offset: 224 +} member { id: 0xb53fd5a4 name: "order" @@ -191089,6 +191140,12 @@ member { type_id: 0x21d43a7b offset: 704 } +member { + id: 0x7248bb69 + name: "totalpages" + type_id: 0x33756485 + offset: 256 +} member { id: 0x0d628d12 name: "totalram" @@ -207364,6 +207421,11 @@ member { type_id: 0xc0a0d1f0 offset: 864 } +member { + id: 0x15c9fb88 + name: "zonelist" + type_id: 0x1e85f467 +} member { id: 0xc2f31ff3 name: "zpos" @@ -243566,6 +243628,23 @@ struct_union { member_id: 0x386c7184 } } +struct_union { + id: 0xdbe44b66 + kind: STRUCT + name: "oom_control" + definition { + bytesize: 64 + member_id: 0x15c9fb88 + member_id: 0x788bc17d + member_id: 0xc76cfce5 + member_id: 0xa4b05168 + member_id: 0xb51c2507 + member_id: 0x7248bb69 + member_id: 0x1024996f + member_id: 0x3d099644 + member_id: 0xaf3405ec + } +} struct_union { id: 0x95539d46 kind: STRUCT @@ -272544,6 +272623,48 @@ enumeration { } } } +enumeration { + id: 0xb01beef1 + name: "compact_result" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "COMPACT_NOT_SUITABLE_ZONE" + } + enumerator { + name: "COMPACT_SKIPPED" + value: 1 + } + enumerator { + name: "COMPACT_DEFERRED" + value: 2 + } + enumerator { + name: "COMPACT_NO_SUITABLE_PAGE" + value: 3 + } + enumerator { + name: "COMPACT_CONTINUE" + value: 4 + } + enumerator { + name: "COMPACT_COMPLETE" + value: 5 + } + enumerator { + name: "COMPACT_PARTIAL_SKIPPED" + value: 6 + } + enumerator { + name: "COMPACT_CONTENDED" + value: 7 + } + enumerator { + name: "COMPACT_SUCCESS" + value: 8 + } + } +} enumeration { id: 0x7bfd6d29 name: "conn_reasons" @@ -279695,6 +279816,28 @@ enumeration { } } } +enumeration { + id: 0x6df42b18 + name: "oom_constraint" + definition { + underlying_type_id: 0x4585663f + enumerator { + name: "CONSTRAINT_NONE" + } + enumerator { + name: "CONSTRAINT_CPUSET" + value: 1 + } + enumerator { + name: "CONSTRAINT_MEMORY_POLICY" + value: 2 + } + enumerator { + name: "CONSTRAINT_MEMCG" + value: 3 + } + } +} enumeration { id: 0xf7c61c85 name: "opp_table_access" @@ -313789,6 +313932,15 @@ function { parameter_id: 0x1dc3d428 parameter_id: 0x34a05394 } +function { + id: 0x9a235f02 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f + parameter_id: 0x4585663f + parameter_id: 0x4585663f + parameter_id: 0x4585663f +} function { id: 0x9a23bd25 return_type_id: 0xcc33625b @@ -313846,6 +313998,14 @@ function { parameter_id: 0x6720d32f parameter_id: 0x1d19a9d5 } +function { + id: 0x9a2b6d98 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0x9a2d8ab0 return_type_id: 0x6720d32f @@ -314644,6 +314804,12 @@ function { return_type_id: 0x6720d32f parameter_id: 0x1ce51dde } +function { + id: 0x9ab9affb + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x4585663f +} function { id: 0x9abc5077 return_type_id: 0x6720d32f @@ -315481,6 +315647,12 @@ function { parameter_id: 0x18bd6530 parameter_id: 0x26e55184 } +function { + id: 0x9b35e16b + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x2696c21b +} function { id: 0x9b37fa13 return_type_id: 0x6720d32f @@ -315892,6 +316064,13 @@ function { parameter_id: 0x1aeeade4 parameter_id: 0x1a5d0549 } +function { + id: 0x9b52c397 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x3c692b7e + parameter_id: 0x33756485 +} function { id: 0x9b5377a8 return_type_id: 0x6720d32f @@ -316567,6 +316746,13 @@ function { parameter_id: 0x6720d32f parameter_id: 0xfc0e1dbd } +function { + id: 0x9b7ba7c5 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x33756485 + parameter_id: 0x6720d32f +} function { id: 0x9b7bfb3b return_type_id: 0x6720d32f @@ -334485,6 +334671,24 @@ elf_symbol { type_id: 0x9b63bb96 full_name: "__traceiter_android_vh_cleanup_old_buffers_bypass" } +elf_symbol { + id: 0xa4527895 + name: "__traceiter_android_vh_compaction_exit" + is_defined: true + symbol_type: FUNCTION + crc: 0x5de850c2 + type_id: 0x9a2b6d98 + full_name: "__traceiter_android_vh_compaction_exit" +} +elf_symbol { + id: 0x3644fdcd + name: "__traceiter_android_vh_compaction_try_to_compact_pages_exit" + is_defined: true + symbol_type: FUNCTION + crc: 0xcca408f4 + type_id: 0x9b35e16b + full_name: "__traceiter_android_vh_compaction_try_to_compact_pages_exit" +} elf_symbol { id: 0x9247dcb1 name: "__traceiter_android_vh_cpu_idle_enter" @@ -335106,6 +335310,33 @@ elf_symbol { type_id: 0x9bb62df9 full_name: "__traceiter_android_vh_meminfo_proc_show" } +elf_symbol { + id: 0x295c28cd + name: "__traceiter_android_vh_mm_alloc_pages_direct_reclaim_enter" + is_defined: true + symbol_type: FUNCTION + crc: 0xe4da6100 + type_id: 0x9ab9affb + full_name: "__traceiter_android_vh_mm_alloc_pages_direct_reclaim_enter" +} +elf_symbol { + id: 0x10e93e46 + name: "__traceiter_android_vh_mm_alloc_pages_direct_reclaim_exit" + is_defined: true + symbol_type: FUNCTION + crc: 0x61d4882e + type_id: 0x9b7ba7c5 + full_name: "__traceiter_android_vh_mm_alloc_pages_direct_reclaim_exit" +} +elf_symbol { + id: 0x49cebcae + name: "__traceiter_android_vh_mm_alloc_pages_may_oom_exit" + is_defined: true + symbol_type: FUNCTION + crc: 0x91a9d265 + type_id: 0x9b52c397 + full_name: "__traceiter_android_vh_mm_alloc_pages_may_oom_exit" +} elf_symbol { id: 0xe44dacb1 name: "__traceiter_android_vh_mmap_region" @@ -335997,6 +336228,15 @@ elf_symbol { type_id: 0x9be885da full_name: "__traceiter_android_vh_use_amu_fie" } +elf_symbol { + id: 0xcbec9d66 + name: "__traceiter_android_vh_vmscan_kswapd_done" + is_defined: true + symbol_type: FUNCTION + crc: 0x96191a01 + type_id: 0x9a235f02 + full_name: "__traceiter_android_vh_vmscan_kswapd_done" +} elf_symbol { id: 0xb0bf7fd6 name: "__traceiter_android_vh_watchdog_timer_softlockup" @@ -338121,6 +338361,24 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_cleanup_old_buffers_bypass" } +elf_symbol { + id: 0x9d49459f + name: "__tracepoint_android_vh_compaction_exit" + is_defined: true + symbol_type: OBJECT + crc: 0x69025433 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_compaction_exit" +} +elf_symbol { + id: 0x759240ef + name: "__tracepoint_android_vh_compaction_try_to_compact_pages_exit" + is_defined: true + symbol_type: OBJECT + crc: 0x85c1c35f + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_compaction_try_to_compact_pages_exit" +} elf_symbol { id: 0x26324a1f name: "__tracepoint_android_vh_cpu_idle_enter" @@ -338742,6 +339000,33 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_meminfo_proc_show" } +elf_symbol { + id: 0xce7e7dff + name: "__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_enter" + is_defined: true + symbol_type: OBJECT + crc: 0xa744fbcb + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_enter" +} +elf_symbol { + id: 0x1a1d0854 + name: "__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_exit" + is_defined: true + symbol_type: OBJECT + crc: 0xaf85b82e + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_mm_alloc_pages_direct_reclaim_exit" +} +elf_symbol { + id: 0xf2890610 + name: "__tracepoint_android_vh_mm_alloc_pages_may_oom_exit" + is_defined: true + symbol_type: OBJECT + crc: 0xde5036e1 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_mm_alloc_pages_may_oom_exit" +} elf_symbol { id: 0xb6da564f name: "__tracepoint_android_vh_mmap_region" @@ -339633,6 +339918,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_use_amu_fie" } +elf_symbol { + id: 0x55476a7c + name: "__tracepoint_android_vh_vmscan_kswapd_done" + is_defined: true + symbol_type: OBJECT + crc: 0x46714dec + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_vmscan_kswapd_done" +} elf_symbol { id: 0x42dbeb24 name: "__tracepoint_android_vh_watchdog_timer_softlockup" @@ -395652,6 +395946,8 @@ interface { symbol_id: 0x005c7625 symbol_id: 0xf3accb84 symbol_id: 0xef7737f8 + symbol_id: 0xa4527895 + symbol_id: 0x3644fdcd symbol_id: 0x9247dcb1 symbol_id: 0xfd04e27a symbol_id: 0xa124d3e0 @@ -395721,6 +396017,9 @@ interface { symbol_id: 0x3431d426 symbol_id: 0x8c174a7d symbol_id: 0xea8ce2b0 + symbol_id: 0x295c28cd + symbol_id: 0x10e93e46 + symbol_id: 0x49cebcae symbol_id: 0xe44dacb1 symbol_id: 0x5612c9d1 symbol_id: 0xa77effd1 @@ -395820,6 +396119,7 @@ interface { symbol_id: 0xcb4d15f3 symbol_id: 0x6a8145ff symbol_id: 0x08824ed3 + symbol_id: 0xcbec9d66 symbol_id: 0xb0bf7fd6 symbol_id: 0xae5e5469 symbol_id: 0x6911084f @@ -396056,6 +396356,8 @@ interface { symbol_id: 0x5cc4ca5b symbol_id: 0x607a7f0a symbol_id: 0xca10f06e + symbol_id: 0x9d49459f + symbol_id: 0x759240ef symbol_id: 0x26324a1f symbol_id: 0x4ade2774 symbol_id: 0x704b9aae @@ -396125,6 +396427,9 @@ interface { symbol_id: 0xac62c748 symbol_id: 0xa2bd1edf symbol_id: 0xa5b4e5b2 + symbol_id: 0xce7e7dff + symbol_id: 0x1a1d0854 + symbol_id: 0xf2890610 symbol_id: 0xb6da564f symbol_id: 0x41c8d09b symbol_id: 0xe2ad11db @@ -396224,6 +396529,7 @@ interface { symbol_id: 0x743ea36d symbol_id: 0xc09d36c9 symbol_id: 0xe100c3ad + symbol_id: 0x55476a7c symbol_id: 0x42dbeb24 symbol_id: 0xa13f65ff symbol_id: 0xf57e8f65 diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index bac4ddf87c67..2dcdd2f1f94c 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -2645,12 +2645,17 @@ __traceiter_android_vh_check_bpf_syscall __traceiter_android_vh_check_file_open __traceiter_android_vh_check_mmap_file + __traceiter_android_vh_compaction_exit + __traceiter_android_vh_compaction_try_to_compact_pages_exit __traceiter_android_vh_cpufreq_fast_switch __traceiter_android_vh_cpu_idle_enter __traceiter_android_vh_cpu_idle_exit __traceiter_android_vh_iommu_iovad_alloc_iova __traceiter_android_vh_iommu_iovad_free_iova __traceiter_android_vh_is_fpsimd_save + __traceiter_android_vh_mm_alloc_pages_direct_reclaim_enter + __traceiter_android_vh_mm_alloc_pages_direct_reclaim_exit + __traceiter_android_vh_mm_alloc_pages_may_oom_exit __traceiter_android_vh_rwsem_init __traceiter_android_vh_rwsem_wake __traceiter_android_vh_rwsem_write_finished @@ -2661,6 +2666,7 @@ __traceiter_android_vh_show_suspend_epoch_val __traceiter_android_vh_syscall_prctl_finished __traceiter_android_vh_ufs_clock_scaling + __traceiter_android_vh_vmscan_kswapd_done __traceiter_cpu_frequency __traceiter_gpu_mem_total __traceiter_ipi_entry @@ -2740,12 +2746,17 @@ __tracepoint_android_vh_check_bpf_syscall __tracepoint_android_vh_check_file_open __tracepoint_android_vh_check_mmap_file + __tracepoint_android_vh_compaction_exit + __tracepoint_android_vh_compaction_try_to_compact_pages_exit __tracepoint_android_vh_cpufreq_fast_switch __tracepoint_android_vh_cpu_idle_enter __tracepoint_android_vh_cpu_idle_exit __tracepoint_android_vh_iommu_iovad_alloc_iova __tracepoint_android_vh_iommu_iovad_free_iova __tracepoint_android_vh_is_fpsimd_save + __tracepoint_android_vh_mm_alloc_pages_direct_reclaim_enter + __tracepoint_android_vh_mm_alloc_pages_direct_reclaim_exit + __tracepoint_android_vh_mm_alloc_pages_may_oom_exit __tracepoint_android_vh_rwsem_init __tracepoint_android_vh_rwsem_wake __tracepoint_android_vh_rwsem_write_finished @@ -2756,6 +2767,7 @@ __tracepoint_android_vh_show_suspend_epoch_val __tracepoint_android_vh_syscall_prctl_finished __tracepoint_android_vh_ufs_clock_scaling + __tracepoint_android_vh_vmscan_kswapd_done __tracepoint_cpu_frequency __tracepoint_gpu_mem_total __tracepoint_ipi_entry From 7d42260e5cbf4bb03a4973df08180769fefdb973 Mon Sep 17 00:00:00 2001 From: Junghoon Jang Date: Fri, 6 Oct 2023 08:33:58 +0000 Subject: [PATCH 57/99] ANDROID: Update the ABI symbol list Adding the following symbols: - reserve_iova Bug: 303000855 Change-Id: I84b0eeb179b4194d0d8294b789f2cecc388f0963 Signed-off-by: Junghoon Jang --- android/abi_gki_aarch64_pixel | 1 + 1 file changed, 1 insertion(+) diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 7ea4e636d19b..781dc1c30487 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -1756,6 +1756,7 @@ __request_region request_threaded_irq resched_curr + reserve_iova return_address reweight_task rfkill_alloc From f7d9c7d0b43d87d4f20d705f3ce4b9d614fa1697 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Sat, 14 Jan 2023 23:08:23 +0800 Subject: [PATCH 58/99] BACKPORT: erofs: simplify iloc() Actually we could pass in inodes directly to clean up all callers. Also rename iloc() as erofs_iloc(). Bug: 303691233 Link: https://lore.kernel.org/r/20230114150823.432069-1-xiang@kernel.org Reviewed-by: Yue Hu Reviewed-by: Jingbo Xu Reviewed-by: Chao Yu Signed-off-by: Gao Xiang (cherry picked from commit b780d3fc6107464dcc43631a6208c43b6421f1e6) [dhavale: resolved minor conflict in fs/erofs/zmap.c] Signed-off-by: Sandeep Dhavale Change-Id: Iea7a97040cebdc984e2956d421755230263c97ae --- fs/erofs/data.c | 9 +++------ fs/erofs/inode.c | 2 +- fs/erofs/internal.h | 16 +++++++++------- fs/erofs/xattr.c | 20 +++++++------------- fs/erofs/zmap.c | 13 +++++-------- include/trace/events/erofs.h | 4 ++-- 6 files changed, 27 insertions(+), 37 deletions(-) diff --git a/fs/erofs/data.c b/fs/erofs/data.c index a6cfb2ac1cd1..c7bed8ad7d06 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -95,11 +95,8 @@ static int erofs_map_blocks_flatmode(struct inode *inode, map->m_pa = blknr_to_addr(vi->raw_blkaddr) + map->m_la; map->m_plen = blknr_to_addr(lastblk) - offset; } else if (tailendpacking) { - /* 2 - inode inline B: inode, [xattrs], inline last blk... */ - struct erofs_sb_info *sbi = EROFS_SB(inode->i_sb); - - map->m_pa = iloc(sbi, vi->nid) + vi->inode_isize + - vi->xattr_isize + erofs_blkoff(map->m_la); + map->m_pa = erofs_iloc(inode) + vi->inode_isize + + vi->xattr_isize + erofs_blkoff(offset); map->m_plen = inode->i_size - offset; /* inline data should be located in the same meta block */ @@ -154,7 +151,7 @@ int erofs_map_blocks(struct inode *inode, unit = EROFS_BLOCK_MAP_ENTRY_SIZE; /* block map */ chunknr = map->m_la >> vi->chunkbits; - pos = ALIGN(iloc(EROFS_SB(sb), vi->nid) + vi->inode_isize + + pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, unit) + unit * chunknr; kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(pos), EROFS_KMAP); diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c index ad2a82f2eb4c..5aadc73d5765 100644 --- a/fs/erofs/inode.c +++ b/fs/erofs/inode.c @@ -14,7 +14,7 @@ static void *erofs_read_inode(struct erofs_buf *buf, struct super_block *sb = inode->i_sb; struct erofs_sb_info *sbi = EROFS_SB(sb); struct erofs_inode *vi = EROFS_I(inode); - const erofs_off_t inode_loc = iloc(sbi, vi->nid); + const erofs_off_t inode_loc = erofs_iloc(inode); erofs_blk_t blkaddr, nblks = 0; void *kaddr; diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 340bd56a5755..d8d09fc3ed65 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -273,11 +273,6 @@ struct erofs_buf { #define erofs_blkoff(addr) ((addr) % EROFS_BLKSIZ) #define blknr_to_addr(nr) ((erofs_off_t)(nr) * EROFS_BLKSIZ) -static inline erofs_off_t iloc(struct erofs_sb_info *sbi, erofs_nid_t nid) -{ - return blknr_to_addr(sbi->meta_blkaddr) + (nid << sbi->islotbits); -} - #define EROFS_FEATURE_FUNCS(name, compat, feature) \ static inline bool erofs_sb_has_##name(struct erofs_sb_info *sbi) \ { \ @@ -342,8 +337,15 @@ struct erofs_inode { struct inode vfs_inode; }; -#define EROFS_I(ptr) \ - container_of(ptr, struct erofs_inode, vfs_inode) +#define EROFS_I(ptr) container_of(ptr, struct erofs_inode, vfs_inode) + +static inline erofs_off_t erofs_iloc(struct inode *inode) +{ + struct erofs_sb_info *sbi = EROFS_I_SB(inode); + + return blknr_to_addr(sbi->meta_blkaddr) + + (EROFS_I(inode)->nid << sbi->islotbits); +} static inline unsigned long erofs_inode_datablocks(struct inode *inode) { diff --git a/fs/erofs/xattr.c b/fs/erofs/xattr.c index 8106bcb5a38d..a2776abf3698 100644 --- a/fs/erofs/xattr.c +++ b/fs/erofs/xattr.c @@ -22,8 +22,7 @@ static int init_inode_xattrs(struct inode *inode) struct xattr_iter it; unsigned int i; struct erofs_xattr_ibody_header *ih; - struct super_block *sb; - struct erofs_sb_info *sbi; + struct super_block *sb = inode->i_sb; int ret = 0; /* the most case is that xattrs of this inode are initialized. */ @@ -52,15 +51,14 @@ static int init_inode_xattrs(struct inode *inode) * undefined right now (maybe use later with some new sb feature). */ if (vi->xattr_isize == sizeof(struct erofs_xattr_ibody_header)) { - erofs_err(inode->i_sb, + erofs_err(sb, "xattr_isize %d of nid %llu is not supported yet", vi->xattr_isize, vi->nid); ret = -EOPNOTSUPP; goto out_unlock; } else if (vi->xattr_isize < sizeof(struct erofs_xattr_ibody_header)) { if (vi->xattr_isize) { - erofs_err(inode->i_sb, - "bogus xattr ibody @ nid %llu", vi->nid); + erofs_err(sb, "bogus xattr ibody @ nid %llu", vi->nid); DBG_BUGON(1); ret = -EFSCORRUPTED; goto out_unlock; /* xattr ondisk layout error */ @@ -69,11 +67,9 @@ static int init_inode_xattrs(struct inode *inode) goto out_unlock; } - sb = inode->i_sb; - sbi = EROFS_SB(sb); it.buf = __EROFS_BUF_INITIALIZER; - it.blkaddr = erofs_blknr(iloc(sbi, vi->nid) + vi->inode_isize); - it.ofs = erofs_blkoff(iloc(sbi, vi->nid) + vi->inode_isize); + it.blkaddr = erofs_blknr(erofs_iloc(inode) + vi->inode_isize); + it.ofs = erofs_blkoff(erofs_iloc(inode) + vi->inode_isize); /* read in shared xattr array (non-atomic, see kmalloc below) */ it.kaddr = erofs_read_metabuf(&it.buf, sb, it.blkaddr, EROFS_KMAP); @@ -159,7 +155,6 @@ static int inline_xattr_iter_begin(struct xattr_iter *it, struct inode *inode) { struct erofs_inode *const vi = EROFS_I(inode); - struct erofs_sb_info *const sbi = EROFS_SB(inode->i_sb); unsigned int xattr_header_sz, inline_xattr_ofs; xattr_header_sz = inlinexattr_header_size(inode); @@ -170,9 +165,8 @@ static int inline_xattr_iter_begin(struct xattr_iter *it, inline_xattr_ofs = vi->inode_isize + xattr_header_sz; - it->blkaddr = erofs_blknr(iloc(sbi, vi->nid) + inline_xattr_ofs); - it->ofs = erofs_blkoff(iloc(sbi, vi->nid) + inline_xattr_ofs); - + it->blkaddr = erofs_blknr(erofs_iloc(inode) + inline_xattr_ofs); + it->ofs = erofs_blkoff(erofs_iloc(inode) + inline_xattr_ofs); it->kaddr = erofs_read_metabuf(&it->buf, inode->i_sb, it->blkaddr, EROFS_KMAP_ATOMIC); if (IS_ERR(it->kaddr)) diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c index 3adab0d9cbe0..0337b70b2dac 100644 --- a/fs/erofs/zmap.c +++ b/fs/erofs/zmap.c @@ -55,8 +55,7 @@ static int z_erofs_fill_inode_lazy(struct inode *inode) if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) goto out_unlock; - pos = ALIGN(iloc(EROFS_SB(sb), vi->nid) + vi->inode_isize + - vi->xattr_isize, 8); + pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(pos), EROFS_KMAP); if (IS_ERR(kaddr)) { err = PTR_ERR(kaddr); @@ -169,10 +168,9 @@ static int legacy_load_cluster_from_disk(struct z_erofs_maprecorder *m, { struct inode *const inode = m->inode; struct erofs_inode *const vi = EROFS_I(inode); - const erofs_off_t ibase = iloc(EROFS_I_SB(inode), vi->nid); const erofs_off_t pos = - Z_EROFS_VLE_LEGACY_INDEX_ALIGN(ibase + vi->inode_isize + - vi->xattr_isize) + + Z_EROFS_VLE_LEGACY_INDEX_ALIGN(erofs_iloc(inode) + + vi->inode_isize + vi->xattr_isize) + lcn * sizeof(struct z_erofs_vle_decompressed_index); struct z_erofs_vle_decompressed_index *di; unsigned int advise, type; @@ -375,9 +373,8 @@ static int compacted_load_cluster_from_disk(struct z_erofs_maprecorder *m, { struct inode *const inode = m->inode; struct erofs_inode *const vi = EROFS_I(inode); - const erofs_off_t ebase = ALIGN(iloc(EROFS_I_SB(inode), vi->nid) + - vi->inode_isize + vi->xattr_isize, 8) + - sizeof(struct z_erofs_map_header); + const erofs_off_t ebase = sizeof(struct z_erofs_map_header) + + ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); const unsigned int totalidx = DIV_ROUND_UP(inode->i_size, EROFS_BLKSIZ); unsigned int compacted_4b_initial, compacted_2b; unsigned int amortizedshift; diff --git a/include/trace/events/erofs.h b/include/trace/events/erofs.h index 4f4c44ea3a65..e095d36db939 100644 --- a/include/trace/events/erofs.h +++ b/include/trace/events/erofs.h @@ -66,8 +66,8 @@ TRACE_EVENT(erofs_fill_inode, TP_fast_assign( __entry->dev = inode->i_sb->s_dev; __entry->nid = EROFS_I(inode)->nid; - __entry->blkaddr = erofs_blknr(iloc(EROFS_I_SB(inode), __entry->nid)); - __entry->ofs = erofs_blkoff(iloc(EROFS_I_SB(inode), __entry->nid)); + __entry->blkaddr = erofs_blknr(erofs_iloc(inode)); + __entry->ofs = erofs_blkoff(erofs_iloc(inode)); ), TP_printk("dev = (%d,%d), nid = %llu, blkaddr %u ofs %u", From cee0694362dc2ed50d72af6726265ae5d9f3359f Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Sat, 4 Feb 2023 17:30:35 +0800 Subject: [PATCH 59/99] BACKPORT: erofs: get rid of erofs_inode_datablocks() erofs_inode_datablocks() has the only one caller, let's just get rid of it entirely. No logic changes. Bug: 303691233 Change-Id: I15f4e5df8ddd53c570408cc80b255b6934c06fdb Reviewed-by: Yue Hu Reviewed-by: Jingbo Xu Reviewed-by: Chao Yu Change-Id: I96195a960204c313649c510766e6a54d49a01784 Signed-off-by: Gao Xiang Link: https://lore.kernel.org/r/20230204093040.97967-1-hsiangkao@linux.alibaba.com (cherry picked from commit 4efdec36dc9907628e590a68193d6d8e5e74d032) Signed-off-by: Sandeep Dhavale --- fs/erofs/internal.h | 6 ------ fs/erofs/namei.c | 18 +++++------------- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index d8d09fc3ed65..53e05d314181 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -347,12 +347,6 @@ static inline erofs_off_t erofs_iloc(struct inode *inode) (EROFS_I(inode)->nid << sbi->islotbits); } -static inline unsigned long erofs_inode_datablocks(struct inode *inode) -{ - /* since i_size cannot be changed */ - return DIV_ROUND_UP(inode->i_size, EROFS_BLKSIZ); -} - static inline unsigned int erofs_bitrange(unsigned int value, unsigned int bit, unsigned int bits) { diff --git a/fs/erofs/namei.c b/fs/erofs/namei.c index 0dc34721080c..6ecea7b19882 100644 --- a/fs/erofs/namei.c +++ b/fs/erofs/namei.c @@ -5,7 +5,6 @@ * Copyright (C) 2022, Alibaba Cloud */ #include "xattr.h" - #include struct erofs_qstr { @@ -87,19 +86,13 @@ static struct erofs_dirent *find_target_dirent(struct erofs_qstr *name, return ERR_PTR(-ENOENT); } -static void *find_target_block_classic(struct erofs_buf *target, - struct inode *dir, - struct erofs_qstr *name, - int *_ndirents) +static void *erofs_find_target_block(struct erofs_buf *target, + struct inode *dir, struct erofs_qstr *name, int *_ndirents) { - unsigned int startprfx, endprfx; - int head, back; + int head = 0, back = DIV_ROUND_UP(dir->i_size, EROFS_BLKSIZ) - 1; + unsigned int startprfx = 0, endprfx = 0; void *candidate = ERR_PTR(-ENOENT); - startprfx = endprfx = 0; - head = 0; - back = erofs_inode_datablocks(dir) - 1; - while (head <= back) { const int mid = head + (back - head) / 2; struct erofs_buf buf = __EROFS_BUF_INITIALIZER; @@ -180,8 +173,7 @@ int erofs_namei(struct inode *dir, const struct qstr *name, erofs_nid_t *nid, qn.end = name->name + name->len; ndirents = 0; - - de = find_target_block_classic(&buf, dir, &qn, &ndirents); + de = erofs_find_target_block(&buf, dir, &qn, &ndirents); if (IS_ERR(de)) return PTR_ERR(de); From 36496d09e89508e1823d476649cc02d8f3ad1739 Mon Sep 17 00:00:00 2001 From: Gao Xiang Date: Sat, 4 Feb 2023 17:30:39 +0800 Subject: [PATCH 60/99] BACKPORT: erofs: get rid of z_erofs_do_map_blocks() forward declaration The code can be neater without forward declarations. Let's get rid of z_erofs_do_map_blocks() forward declaration. Bug: 303691233 Change-Id: I689c2d2db5ab6b352821298ee480934df3002874 Reviewed-by: Yue Hu Reviewed-by: Chao Yu Change-Id: If6a6cde8179bef6e8aebcb27d4c956e7495724ad Signed-off-by: Gao Xiang Link: https://lore.kernel.org/r/20230204093040.97967-5-hsiangkao@linux.alibaba.com (cherry picked from commit 999f2f9a63f475192d837a2b8595eb0962984d21) Signed-off-by: Sandeep Dhavale --- fs/erofs/zmap.c | 242 ++++++++++++++++++++++++------------------------ 1 file changed, 119 insertions(+), 123 deletions(-) diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c index 0337b70b2dac..7455c16e36ef 100644 --- a/fs/erofs/zmap.c +++ b/fs/erofs/zmap.c @@ -7,10 +7,6 @@ #include #include -static int z_erofs_do_map_blocks(struct inode *inode, - struct erofs_map_blocks *map, - int flags); - int z_erofs_fill_inode(struct inode *inode) { struct erofs_inode *const vi = EROFS_I(inode); @@ -29,125 +25,6 @@ int z_erofs_fill_inode(struct inode *inode) return 0; } -static int z_erofs_fill_inode_lazy(struct inode *inode) -{ - struct erofs_inode *const vi = EROFS_I(inode); - struct super_block *const sb = inode->i_sb; - int err, headnr; - erofs_off_t pos; - struct erofs_buf buf = __EROFS_BUF_INITIALIZER; - void *kaddr; - struct z_erofs_map_header *h; - - if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) { - /* - * paired with smp_mb() at the end of the function to ensure - * fields will only be observed after the bit is set. - */ - smp_mb(); - return 0; - } - - if (wait_on_bit_lock(&vi->flags, EROFS_I_BL_Z_BIT, TASK_KILLABLE)) - return -ERESTARTSYS; - - err = 0; - if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) - goto out_unlock; - - pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); - kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(pos), EROFS_KMAP); - if (IS_ERR(kaddr)) { - err = PTR_ERR(kaddr); - goto out_unlock; - } - - h = kaddr + erofs_blkoff(pos); - /* - * if the highest bit of the 8-byte map header is set, the whole file - * is stored in the packed inode. The rest bits keeps z_fragmentoff. - */ - if (h->h_clusterbits >> Z_EROFS_FRAGMENT_INODE_BIT) { - vi->z_advise = Z_EROFS_ADVISE_FRAGMENT_PCLUSTER; - vi->z_fragmentoff = le64_to_cpu(*(__le64 *)h) ^ (1ULL << 63); - vi->z_tailextent_headlcn = 0; - goto done; - } - vi->z_advise = le16_to_cpu(h->h_advise); - vi->z_algorithmtype[0] = h->h_algorithmtype & 15; - vi->z_algorithmtype[1] = h->h_algorithmtype >> 4; - - headnr = 0; - if (vi->z_algorithmtype[0] >= Z_EROFS_COMPRESSION_MAX || - vi->z_algorithmtype[++headnr] >= Z_EROFS_COMPRESSION_MAX) { - erofs_err(sb, "unknown HEAD%u format %u for nid %llu, please upgrade kernel", - headnr + 1, vi->z_algorithmtype[headnr], vi->nid); - err = -EOPNOTSUPP; - goto out_put_metabuf; - } - - vi->z_logical_clusterbits = LOG_BLOCK_SIZE + (h->h_clusterbits & 7); - if (!erofs_sb_has_big_pcluster(EROFS_SB(sb)) && - vi->z_advise & (Z_EROFS_ADVISE_BIG_PCLUSTER_1 | - Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { - erofs_err(sb, "per-inode big pcluster without sb feature for nid %llu", - vi->nid); - err = -EFSCORRUPTED; - goto out_put_metabuf; - } - if (vi->datalayout == EROFS_INODE_FLAT_COMPRESSION && - !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1) ^ - !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { - erofs_err(sb, "big pcluster head1/2 of compact indexes should be consistent for nid %llu", - vi->nid); - err = -EFSCORRUPTED; - goto out_put_metabuf; - } - - if (vi->z_advise & Z_EROFS_ADVISE_INLINE_PCLUSTER) { - struct erofs_map_blocks map = { - .buf = __EROFS_BUF_INITIALIZER - }; - - vi->z_idata_size = le16_to_cpu(h->h_idata_size); - err = z_erofs_do_map_blocks(inode, &map, - EROFS_GET_BLOCKS_FINDTAIL); - erofs_put_metabuf(&map.buf); - - if (!map.m_plen || - erofs_blkoff(map.m_pa) + map.m_plen > EROFS_BLKSIZ) { - erofs_err(sb, "invalid tail-packing pclustersize %llu", - map.m_plen); - err = -EFSCORRUPTED; - } - if (err < 0) - goto out_put_metabuf; - } - - if (vi->z_advise & Z_EROFS_ADVISE_FRAGMENT_PCLUSTER && - !(h->h_clusterbits >> Z_EROFS_FRAGMENT_INODE_BIT)) { - struct erofs_map_blocks map = { - .buf = __EROFS_BUF_INITIALIZER - }; - - vi->z_fragmentoff = le32_to_cpu(h->h_fragmentoff); - err = z_erofs_do_map_blocks(inode, &map, - EROFS_GET_BLOCKS_FINDTAIL); - erofs_put_metabuf(&map.buf); - if (err < 0) - goto out_put_metabuf; - } -done: - /* paired with smp_mb() at the beginning of the function */ - smp_mb(); - set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); -out_put_metabuf: - erofs_put_metabuf(&buf); -out_unlock: - clear_and_wake_up_bit(EROFS_I_BL_Z_BIT, &vi->flags); - return err; -} - struct z_erofs_maprecorder { struct inode *inode; struct erofs_map_blocks *map; @@ -729,6 +606,125 @@ unmap_out: return err; } +static int z_erofs_fill_inode_lazy(struct inode *inode) +{ + struct erofs_inode *const vi = EROFS_I(inode); + struct super_block *const sb = inode->i_sb; + int err, headnr; + erofs_off_t pos; + struct erofs_buf buf = __EROFS_BUF_INITIALIZER; + void *kaddr; + struct z_erofs_map_header *h; + + if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) { + /* + * paired with smp_mb() at the end of the function to ensure + * fields will only be observed after the bit is set. + */ + smp_mb(); + return 0; + } + + if (wait_on_bit_lock(&vi->flags, EROFS_I_BL_Z_BIT, TASK_KILLABLE)) + return -ERESTARTSYS; + + err = 0; + if (test_bit(EROFS_I_Z_INITED_BIT, &vi->flags)) + goto out_unlock; + + pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); + kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(pos), EROFS_KMAP); + if (IS_ERR(kaddr)) { + err = PTR_ERR(kaddr); + goto out_unlock; + } + + h = kaddr + erofs_blkoff(pos); + /* + * if the highest bit of the 8-byte map header is set, the whole file + * is stored in the packed inode. The rest bits keeps z_fragmentoff. + */ + if (h->h_clusterbits >> Z_EROFS_FRAGMENT_INODE_BIT) { + vi->z_advise = Z_EROFS_ADVISE_FRAGMENT_PCLUSTER; + vi->z_fragmentoff = le64_to_cpu(*(__le64 *)h) ^ (1ULL << 63); + vi->z_tailextent_headlcn = 0; + goto done; + } + vi->z_advise = le16_to_cpu(h->h_advise); + vi->z_algorithmtype[0] = h->h_algorithmtype & 15; + vi->z_algorithmtype[1] = h->h_algorithmtype >> 4; + + headnr = 0; + if (vi->z_algorithmtype[0] >= Z_EROFS_COMPRESSION_MAX || + vi->z_algorithmtype[++headnr] >= Z_EROFS_COMPRESSION_MAX) { + erofs_err(sb, "unknown HEAD%u format %u for nid %llu, please upgrade kernel", + headnr + 1, vi->z_algorithmtype[headnr], vi->nid); + err = -EOPNOTSUPP; + goto out_put_metabuf; + } + + vi->z_logical_clusterbits = LOG_BLOCK_SIZE + (h->h_clusterbits & 7); + if (!erofs_sb_has_big_pcluster(EROFS_SB(sb)) && + vi->z_advise & (Z_EROFS_ADVISE_BIG_PCLUSTER_1 | + Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { + erofs_err(sb, "per-inode big pcluster without sb feature for nid %llu", + vi->nid); + err = -EFSCORRUPTED; + goto out_put_metabuf; + } + if (vi->datalayout == EROFS_INODE_FLAT_COMPRESSION && + !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1) ^ + !(vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { + erofs_err(sb, "big pcluster head1/2 of compact indexes should be consistent for nid %llu", + vi->nid); + err = -EFSCORRUPTED; + goto out_put_metabuf; + } + + if (vi->z_advise & Z_EROFS_ADVISE_INLINE_PCLUSTER) { + struct erofs_map_blocks map = { + .buf = __EROFS_BUF_INITIALIZER + }; + + vi->z_idata_size = le16_to_cpu(h->h_idata_size); + err = z_erofs_do_map_blocks(inode, &map, + EROFS_GET_BLOCKS_FINDTAIL); + erofs_put_metabuf(&map.buf); + + if (!map.m_plen || + erofs_blkoff(map.m_pa) + map.m_plen > EROFS_BLKSIZ) { + erofs_err(sb, "invalid tail-packing pclustersize %llu", + map.m_plen); + err = -EFSCORRUPTED; + } + if (err < 0) + goto out_put_metabuf; + } + + if (vi->z_advise & Z_EROFS_ADVISE_FRAGMENT_PCLUSTER && + !(h->h_clusterbits >> Z_EROFS_FRAGMENT_INODE_BIT)) { + struct erofs_map_blocks map = { + .buf = __EROFS_BUF_INITIALIZER + }; + + vi->z_fragmentoff = le32_to_cpu(h->h_fragmentoff); + err = z_erofs_do_map_blocks(inode, &map, + EROFS_GET_BLOCKS_FINDTAIL); + erofs_put_metabuf(&map.buf); + if (err < 0) + goto out_put_metabuf; + } +done: + /* paired with smp_mb() at the beginning of the function */ + smp_mb(); + set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); +out_put_metabuf: + erofs_put_metabuf(&buf); +out_unlock: + clear_and_wake_up_bit(EROFS_I_BL_Z_BIT, &vi->flags); + return err; +} + int z_erofs_map_blocks_iter(struct inode *inode, struct erofs_map_blocks *map, int flags) { From e84c93fd4232d9288e664e5d22220eaf9be51db3 Mon Sep 17 00:00:00 2001 From: Jingbo Xu Date: Mon, 13 Mar 2023 21:53:08 +0800 Subject: [PATCH 61/99] BACKPORT: erofs: avoid hardcoded blocksize for subpage block support As the first step of converting hardcoded blocksize to that specified in on-disk superblock, convert all call sites of hardcoded blocksize to sb->s_blocksize except for: 1) use sbi->blkszbits instead of sb->s_blocksize in erofs_superblock_csum_verify() since sb->s_blocksize has not been updated with the on-disk blocksize yet when the function is called. 2) use inode->i_blkbits instead of sb->s_blocksize in erofs_bread(), since the inode operated on may be an anonymous inode in fscache mode. Currently the anonymous inode is allocated from an anonymous mount maintained in erofs, while in the near future we may allocate anonymous inodes from a generic API directly and thus have no access to the anonymous inode's i_sb. Thus we keep the block size in i_blkbits for anonymous inodes in fscache mode. Be noted that this patch only gets rid of the hardcoded blocksize, in preparation for actually setting the on-disk block size in the following patch. The hard limit of constraining the block size to PAGE_SIZE still exists until the next patch. Bug: 303691233 Signed-off-by: Jingbo Xu Reviewed-by: Gao Xiang Reviewed-by: Yue Hu Reviewed-by: Chao Yu Link: https://lore.kernel.org/r/20230313135309.75269-2-jefflexu@linux.alibaba.com [ Gao Xiang: fold a patch to fix incorrect truncated offsets. ] Link: https://lore.kernel.org/r/20230413035734.15457-1-zhujia.zj@bytedance.com Signed-off-by: Gao Xiang (cherry picked from commit 3acea5fc335420ba7ef53947cf2d98d07fac39f7) [dhavale: resolved few conflicts due to missing other features] Signed-off-by: Sandeep Dhavale Change-Id: I4751529e42e4a646b1a2dda75981cdc41b39b6d4 --- fs/erofs/data.c | 50 +++++++++++++++++++----------------- fs/erofs/decompressor.c | 6 ++--- fs/erofs/decompressor_lzma.c | 4 +-- fs/erofs/dir.c | 22 ++++++++-------- fs/erofs/fscache.c | 7 +++-- fs/erofs/inode.c | 20 ++++++++------- fs/erofs/internal.h | 20 +++++---------- fs/erofs/namei.c | 14 +++++----- fs/erofs/super.c | 27 +++++++++++-------- fs/erofs/xattr.c | 40 ++++++++++++++--------------- fs/erofs/xattr.h | 10 ++++---- fs/erofs/zdata.c | 18 +++++++------ fs/erofs/zmap.c | 29 +++++++++++---------- include/trace/events/erofs.h | 4 +-- 14 files changed, 137 insertions(+), 134 deletions(-) diff --git a/fs/erofs/data.c b/fs/erofs/data.c index c7bed8ad7d06..83532525282e 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -29,11 +29,15 @@ void erofs_put_metabuf(struct erofs_buf *buf) buf->page = NULL; } +/* + * Derive the block size from inode->i_blkbits to make compatible with + * anonymous inode in fscache mode. + */ void *erofs_bread(struct erofs_buf *buf, struct inode *inode, erofs_blk_t blkaddr, enum erofs_kmap_type type) { + erofs_off_t offset = (erofs_off_t)blkaddr << inode->i_blkbits; struct address_space *const mapping = inode->i_mapping; - erofs_off_t offset = blknr_to_addr(blkaddr); pgoff_t index = offset >> PAGE_SHIFT; struct page *page = buf->page; struct folio *folio; @@ -84,33 +88,32 @@ static int erofs_map_blocks_flatmode(struct inode *inode, erofs_blk_t nblocks, lastblk; u64 offset = map->m_la; struct erofs_inode *vi = EROFS_I(inode); + struct super_block *sb = inode->i_sb; bool tailendpacking = (vi->datalayout == EROFS_INODE_FLAT_INLINE); - nblocks = DIV_ROUND_UP(inode->i_size, EROFS_BLKSIZ); + nblocks = erofs_iblks(inode); lastblk = nblocks - tailendpacking; /* there is no hole in flatmode */ map->m_flags = EROFS_MAP_MAPPED; - if (offset < blknr_to_addr(lastblk)) { - map->m_pa = blknr_to_addr(vi->raw_blkaddr) + map->m_la; - map->m_plen = blknr_to_addr(lastblk) - offset; + if (offset < erofs_pos(sb, lastblk)) { + map->m_pa = erofs_pos(sb, vi->raw_blkaddr) + map->m_la; + map->m_plen = erofs_pos(sb, lastblk) - offset; } else if (tailendpacking) { map->m_pa = erofs_iloc(inode) + vi->inode_isize + - vi->xattr_isize + erofs_blkoff(offset); + vi->xattr_isize + erofs_blkoff(sb, offset); map->m_plen = inode->i_size - offset; /* inline data should be located in the same meta block */ - if (erofs_blkoff(map->m_pa) + map->m_plen > EROFS_BLKSIZ) { - erofs_err(inode->i_sb, - "inline data cross block boundary @ nid %llu", + if (erofs_blkoff(sb, map->m_pa) + map->m_plen > sb->s_blocksize) { + erofs_err(sb, "inline data cross block boundary @ nid %llu", vi->nid); DBG_BUGON(1); return -EFSCORRUPTED; } map->m_flags |= EROFS_MAP_META; } else { - erofs_err(inode->i_sb, - "internal error @ nid: %llu (size %llu), m_la 0x%llx", + erofs_err(sb, "internal error @ nid: %llu (size %llu), m_la 0x%llx", vi->nid, inode->i_size, map->m_la); DBG_BUGON(1); return -EIO; @@ -154,29 +157,29 @@ int erofs_map_blocks(struct inode *inode, pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, unit) + unit * chunknr; - kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(pos), EROFS_KMAP); + kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(sb, pos), EROFS_KMAP); if (IS_ERR(kaddr)) { err = PTR_ERR(kaddr); goto out; } map->m_la = chunknr << vi->chunkbits; map->m_plen = min_t(erofs_off_t, 1UL << vi->chunkbits, - roundup(inode->i_size - map->m_la, EROFS_BLKSIZ)); + round_up(inode->i_size - map->m_la, sb->s_blocksize)); /* handle block map */ if (!(vi->chunkformat & EROFS_CHUNK_FORMAT_INDEXES)) { - __le32 *blkaddr = kaddr + erofs_blkoff(pos); + __le32 *blkaddr = kaddr + erofs_blkoff(sb, pos); if (le32_to_cpu(*blkaddr) == EROFS_NULL_ADDR) { map->m_flags = 0; } else { - map->m_pa = blknr_to_addr(le32_to_cpu(*blkaddr)); + map->m_pa = erofs_pos(sb, le32_to_cpu(*blkaddr)); map->m_flags = EROFS_MAP_MAPPED; } goto out_unlock; } /* parse chunk indexes */ - idx = kaddr + erofs_blkoff(pos); + idx = kaddr + erofs_blkoff(sb, pos); switch (le32_to_cpu(idx->blkaddr)) { case EROFS_NULL_ADDR: map->m_flags = 0; @@ -184,7 +187,7 @@ int erofs_map_blocks(struct inode *inode, default: map->m_deviceid = le16_to_cpu(idx->device_id) & EROFS_SB(sb)->device_id_mask; - map->m_pa = blknr_to_addr(le32_to_cpu(idx->blkaddr)); + map->m_pa = erofs_pos(sb, le32_to_cpu(idx->blkaddr)); map->m_flags = EROFS_MAP_MAPPED; break; } @@ -228,8 +231,8 @@ int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) if (!dif->mapped_blkaddr) continue; - startoff = blknr_to_addr(dif->mapped_blkaddr); - length = blknr_to_addr(dif->blocks); + startoff = erofs_pos(sb, dif->mapped_blkaddr); + length = erofs_pos(sb, dif->blocks); if (map->m_pa >= startoff && map->m_pa < startoff + length) { @@ -250,6 +253,7 @@ static int erofs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, unsigned int flags, struct iomap *iomap, struct iomap *srcmap) { int ret; + struct super_block *sb = inode->i_sb; struct erofs_map_blocks map; struct erofs_map_dev mdev; @@ -264,7 +268,7 @@ static int erofs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, .m_deviceid = map.m_deviceid, .m_pa = map.m_pa, }; - ret = erofs_map_dev(inode->i_sb, &mdev); + ret = erofs_map_dev(sb, &mdev); if (ret) return ret; @@ -290,11 +294,11 @@ static int erofs_iomap_begin(struct inode *inode, loff_t offset, loff_t length, struct erofs_buf buf = __EROFS_BUF_INITIALIZER; iomap->type = IOMAP_INLINE; - ptr = erofs_read_metabuf(&buf, inode->i_sb, - erofs_blknr(mdev.m_pa), EROFS_KMAP); + ptr = erofs_read_metabuf(&buf, sb, + erofs_blknr(sb, mdev.m_pa), EROFS_KMAP); if (IS_ERR(ptr)) return PTR_ERR(ptr); - iomap->inline_data = ptr + erofs_blkoff(mdev.m_pa); + iomap->inline_data = ptr + erofs_blkoff(sb, mdev.m_pa); iomap->private = buf.base; } else { iomap->type = IOMAP_MAPPED; diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 51b7ac7166d9..7021e2cf6146 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -42,7 +42,7 @@ int z_erofs_load_lz4_config(struct super_block *sb, if (!sbi->lz4.max_pclusterblks) { sbi->lz4.max_pclusterblks = 1; /* reserved case */ } else if (sbi->lz4.max_pclusterblks > - Z_EROFS_PCLUSTER_MAX_SIZE / EROFS_BLKSIZ) { + erofs_blknr(sb, Z_EROFS_PCLUSTER_MAX_SIZE)) { erofs_err(sb, "too large lz4 pclusterblks %u", sbi->lz4.max_pclusterblks); return -EINVAL; @@ -221,13 +221,13 @@ static int z_erofs_lz4_decompress_mem(struct z_erofs_lz4_decompress_ctx *ctx, support_0padding = true; ret = z_erofs_fixup_insize(rq, headpage + rq->pageofs_in, min_t(unsigned int, rq->inputsize, - EROFS_BLKSIZ - rq->pageofs_in)); + rq->sb->s_blocksize - rq->pageofs_in)); if (ret) { kunmap_atomic(headpage); return ret; } may_inplace = !((rq->pageofs_in + rq->inputsize) & - (EROFS_BLKSIZ - 1)); + (rq->sb->s_blocksize - 1)); } inputmargin = rq->pageofs_in; diff --git a/fs/erofs/decompressor_lzma.c b/fs/erofs/decompressor_lzma.c index 5cd612a8f858..2fd49091c1bb 100644 --- a/fs/erofs/decompressor_lzma.c +++ b/fs/erofs/decompressor_lzma.c @@ -166,8 +166,8 @@ int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, /* 1. get the exact LZMA compressed size */ kin = kmap(*rq->in); err = z_erofs_fixup_insize(rq, kin + rq->pageofs_in, - min_t(unsigned int, rq->inputsize, - EROFS_BLKSIZ - rq->pageofs_in)); + min_t(unsigned int, rq->inputsize, + rq->sb->s_blocksize - rq->pageofs_in)); if (err) { kunmap(*rq->in); return err; diff --git a/fs/erofs/dir.c b/fs/erofs/dir.c index ecf28f66b97d..966a88cc529e 100644 --- a/fs/erofs/dir.c +++ b/fs/erofs/dir.c @@ -67,9 +67,11 @@ static int erofs_readdir(struct file *f, struct dir_context *ctx) { struct inode *dir = file_inode(f); struct erofs_buf buf = __EROFS_BUF_INITIALIZER; + struct super_block *sb = dir->i_sb; + unsigned long bsz = sb->s_blocksize; const size_t dirsize = i_size_read(dir); - unsigned int i = ctx->pos / EROFS_BLKSIZ; - unsigned int ofs = ctx->pos % EROFS_BLKSIZ; + unsigned int i = erofs_blknr(sb, ctx->pos); + unsigned int ofs = erofs_blkoff(sb, ctx->pos); int err = 0; bool initial = true; @@ -79,32 +81,28 @@ static int erofs_readdir(struct file *f, struct dir_context *ctx) de = erofs_bread(&buf, dir, i, EROFS_KMAP); if (IS_ERR(de)) { - erofs_err(dir->i_sb, - "fail to readdir of logical block %u of nid %llu", + erofs_err(sb, "fail to readdir of logical block %u of nid %llu", i, EROFS_I(dir)->nid); err = PTR_ERR(de); break; } nameoff = le16_to_cpu(de->nameoff); - if (nameoff < sizeof(struct erofs_dirent) || - nameoff >= EROFS_BLKSIZ) { - erofs_err(dir->i_sb, - "invalid de[0].nameoff %u @ nid %llu", + if (nameoff < sizeof(struct erofs_dirent) || nameoff >= bsz) { + erofs_err(sb, "invalid de[0].nameoff %u @ nid %llu", nameoff, EROFS_I(dir)->nid); err = -EFSCORRUPTED; break; } - maxsize = min_t(unsigned int, - dirsize - ctx->pos + ofs, EROFS_BLKSIZ); + maxsize = min_t(unsigned int, dirsize - ctx->pos + ofs, bsz); /* search dirents at the arbitrary position */ if (initial) { initial = false; ofs = roundup(ofs, sizeof(struct erofs_dirent)); - ctx->pos = blknr_to_addr(i) + ofs; + ctx->pos = erofs_pos(sb, i) + ofs; if (ofs >= nameoff) goto skip_this; } @@ -114,7 +112,7 @@ static int erofs_readdir(struct file *f, struct dir_context *ctx) if (err) break; skip_this: - ctx->pos = blknr_to_addr(i) + maxsize; + ctx->pos = erofs_pos(sb, i) + maxsize; ++i; ofs = 0; } diff --git a/fs/erofs/fscache.c b/fs/erofs/fscache.c index 076cf8a149ef..7ce60ad121f0 100644 --- a/fs/erofs/fscache.c +++ b/fs/erofs/fscache.c @@ -282,8 +282,8 @@ static int erofs_fscache_data_read(struct address_space *mapping, void *src; /* For tail packing layout, the offset may be non-zero. */ - offset = erofs_blkoff(map.m_pa); - blknr = erofs_blknr(map.m_pa); + offset = erofs_blkoff(sb, map.m_pa); + blknr = erofs_blknr(sb, map.m_pa); size = map.m_llen; src = erofs_read_metabuf(&buf, sb, blknr, EROFS_KMAP); @@ -333,8 +333,6 @@ static int erofs_fscache_read_folio(struct file *file, struct folio *folio) bool unlock; int ret; - DBG_BUGON(folio_size(folio) != EROFS_BLKSIZ); - ret = erofs_fscache_data_read(folio_mapping(folio), folio_pos(folio), folio_size(folio), &unlock); if (unlock) { @@ -530,6 +528,7 @@ struct erofs_fscache *erofs_fscache_acquire_cookie(struct super_block *sb, inode->i_size = OFFSET_MAX; inode->i_mapping->a_ops = &erofs_fscache_meta_aops; mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS); + inode->i_blkbits = EROFS_SB(sb)->blkszbits; ctx->inode = inode; } diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c index 5aadc73d5765..785acda70764 100644 --- a/fs/erofs/inode.c +++ b/fs/erofs/inode.c @@ -23,8 +23,8 @@ static void *erofs_read_inode(struct erofs_buf *buf, unsigned int ifmt; int err; - blkaddr = erofs_blknr(inode_loc); - *ofs = erofs_blkoff(inode_loc); + blkaddr = erofs_blknr(sb, inode_loc); + *ofs = erofs_blkoff(sb, inode_loc); erofs_dbg("%s, reading inode nid %llu at %u of blkaddr %u", __func__, vi->nid, *ofs, blkaddr); @@ -58,11 +58,11 @@ static void *erofs_read_inode(struct erofs_buf *buf, case EROFS_INODE_LAYOUT_EXTENDED: vi->inode_isize = sizeof(struct erofs_inode_extended); /* check if the extended inode acrosses block boundary */ - if (*ofs + vi->inode_isize <= EROFS_BLKSIZ) { + if (*ofs + vi->inode_isize <= sb->s_blocksize) { *ofs += vi->inode_isize; die = (struct erofs_inode_extended *)dic; } else { - const unsigned int gotten = EROFS_BLKSIZ - *ofs; + const unsigned int gotten = sb->s_blocksize - *ofs; copied = kmalloc(vi->inode_isize, GFP_NOFS); if (!copied) { @@ -176,7 +176,7 @@ static void *erofs_read_inode(struct erofs_buf *buf, err = -EOPNOTSUPP; goto err_out; } - vi->chunkbits = LOG_BLOCK_SIZE + + vi->chunkbits = sb->s_blocksize_bits + (vi->chunkformat & EROFS_CHUNK_FORMAT_BLKBITS_MASK); } inode->i_mtime.tv_sec = inode->i_ctime.tv_sec; @@ -188,11 +188,12 @@ static void *erofs_read_inode(struct erofs_buf *buf, if (test_opt(&sbi->opt, DAX_ALWAYS) && S_ISREG(inode->i_mode) && vi->datalayout == EROFS_INODE_FLAT_PLAIN) inode->i_flags |= S_DAX; + if (!nblks) /* measure inode.i_blocks as generic filesystems */ - inode->i_blocks = roundup(inode->i_size, EROFS_BLKSIZ) >> 9; + inode->i_blocks = round_up(inode->i_size, sb->s_blocksize) >> 9; else - inode->i_blocks = nblks << LOG_SECTORS_PER_BLOCK; + inode->i_blocks = nblks << (sb->s_blocksize_bits - 9); return kaddr; bogusimode: @@ -210,11 +211,12 @@ static int erofs_fill_symlink(struct inode *inode, void *kaddr, unsigned int m_pofs) { struct erofs_inode *vi = EROFS_I(inode); + unsigned int bsz = i_blocksize(inode); char *lnk; /* if it cannot be handled with fast symlink scheme */ if (vi->datalayout != EROFS_INODE_FLAT_INLINE || - inode->i_size >= EROFS_BLKSIZ || inode->i_size < 0) { + inode->i_size >= bsz || inode->i_size < 0) { inode->i_op = &erofs_symlink_iops; return 0; } @@ -225,7 +227,7 @@ static int erofs_fill_symlink(struct inode *inode, void *kaddr, m_pofs += vi->xattr_isize; /* inline symlink data shouldn't cross block boundary */ - if (m_pofs + inode->i_size > EROFS_BLKSIZ) { + if (m_pofs + inode->i_size > bsz) { kfree(lnk); erofs_err(inode->i_sb, "inline data cross block boundary @ nid %llu", diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 53e05d314181..08628c64210e 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -145,8 +145,8 @@ struct erofs_sb_info { #endif u16 device_id_mask; /* valid bits of device id to be used */ - /* inode slot unit size in bit shift */ - unsigned char islotbits; + unsigned char islotbits; /* inode slot unit size in bit shift */ + unsigned char blkszbits; u32 sb_size; /* total superblock size */ u32 build_time_nsec; @@ -241,13 +241,6 @@ static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp) /* we strictly follow PAGE_SIZE and no buffer head yet */ #define LOG_BLOCK_SIZE PAGE_SHIFT - -#undef LOG_SECTORS_PER_BLOCK -#define LOG_SECTORS_PER_BLOCK (PAGE_SHIFT - 9) - -#undef SECTORS_PER_BLOCK -#define SECTORS_PER_BLOCK (1 << SECTORS_PER_BLOCK) - #define EROFS_BLKSIZ (1 << LOG_BLOCK_SIZE) #if (EROFS_BLKSIZ % 4096 || !EROFS_BLKSIZ) @@ -269,9 +262,10 @@ struct erofs_buf { #define ROOT_NID(sb) ((sb)->root_nid) -#define erofs_blknr(addr) ((addr) / EROFS_BLKSIZ) -#define erofs_blkoff(addr) ((addr) % EROFS_BLKSIZ) -#define blknr_to_addr(nr) ((erofs_off_t)(nr) * EROFS_BLKSIZ) +#define erofs_blknr(sb, addr) ((addr) >> (sb)->s_blocksize_bits) +#define erofs_blkoff(sb, addr) ((addr) & ((sb)->s_blocksize - 1)) +#define erofs_pos(sb, blk) ((erofs_off_t)(blk) << (sb)->s_blocksize_bits) +#define erofs_iblks(i) (round_up((i)->i_size, i_blocksize(i)) >> (i)->i_blkbits) #define EROFS_FEATURE_FUNCS(name, compat, feature) \ static inline bool erofs_sb_has_##name(struct erofs_sb_info *sbi) \ @@ -343,7 +337,7 @@ static inline erofs_off_t erofs_iloc(struct inode *inode) { struct erofs_sb_info *sbi = EROFS_I_SB(inode); - return blknr_to_addr(sbi->meta_blkaddr) + + return erofs_pos(inode->i_sb, sbi->meta_blkaddr) + (EROFS_I(inode)->nid << sbi->islotbits); } diff --git a/fs/erofs/namei.c b/fs/erofs/namei.c index 6ecea7b19882..cf56a8acafbb 100644 --- a/fs/erofs/namei.c +++ b/fs/erofs/namei.c @@ -89,7 +89,8 @@ static struct erofs_dirent *find_target_dirent(struct erofs_qstr *name, static void *erofs_find_target_block(struct erofs_buf *target, struct inode *dir, struct erofs_qstr *name, int *_ndirents) { - int head = 0, back = DIV_ROUND_UP(dir->i_size, EROFS_BLKSIZ) - 1; + unsigned int bsz = i_blocksize(dir); + int head = 0, back = erofs_iblks(dir) - 1; unsigned int startprfx = 0, endprfx = 0; void *candidate = ERR_PTR(-ENOENT); @@ -100,8 +101,7 @@ static void *erofs_find_target_block(struct erofs_buf *target, de = erofs_bread(&buf, dir, mid, EROFS_KMAP); if (!IS_ERR(de)) { - const int nameoff = nameoff_from_disk(de->nameoff, - EROFS_BLKSIZ); + const int nameoff = nameoff_from_disk(de->nameoff, bsz); const int ndirents = nameoff / sizeof(*de); int diff; unsigned int matched; @@ -121,11 +121,10 @@ static void *erofs_find_target_block(struct erofs_buf *target, dname.name = (u8 *)de + nameoff; if (ndirents == 1) - dname.end = (u8 *)de + EROFS_BLKSIZ; + dname.end = (u8 *)de + bsz; else dname.end = (u8 *)de + - nameoff_from_disk(de[1].nameoff, - EROFS_BLKSIZ); + nameoff_from_disk(de[1].nameoff, bsz); /* string comparison without already matched prefix */ diff = erofs_dirnamecmp(name, &dname, &matched); @@ -178,7 +177,8 @@ int erofs_namei(struct inode *dir, const struct qstr *name, erofs_nid_t *nid, return PTR_ERR(de); if (ndirents) - de = find_target_dirent(&qn, (u8 *)de, EROFS_BLKSIZ, ndirents); + de = find_target_dirent(&qn, (u8 *)de, i_blocksize(dir), + ndirents); if (!IS_ERR(de)) { *nid = le64_to_cpu(de->nid); diff --git a/fs/erofs/super.c b/fs/erofs/super.c index bd8bf8fc2f5d..b07c9d1deaf8 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -53,18 +53,21 @@ void _erofs_info(struct super_block *sb, const char *function, static int erofs_superblock_csum_verify(struct super_block *sb, void *sbdata) { + size_t len = 1 << EROFS_SB(sb)->blkszbits; struct erofs_super_block *dsb; u32 expected_crc, crc; - dsb = kmemdup(sbdata + EROFS_SUPER_OFFSET, - EROFS_BLKSIZ - EROFS_SUPER_OFFSET, GFP_KERNEL); + if (len > EROFS_SUPER_OFFSET) + len -= EROFS_SUPER_OFFSET; + + dsb = kmemdup(sbdata + EROFS_SUPER_OFFSET, len, GFP_KERNEL); if (!dsb) return -ENOMEM; expected_crc = le32_to_cpu(dsb->checksum); dsb->checksum = 0; /* to allow for x86 boot sectors and other oddities. */ - crc = crc32c(~0, dsb, EROFS_BLKSIZ - EROFS_SUPER_OFFSET); + crc = crc32c(~0, dsb, len); kfree(dsb); if (crc != expected_crc) { @@ -133,11 +136,11 @@ static void *erofs_read_metadata(struct super_block *sb, struct erofs_buf *buf, int len, i, cnt; *offset = round_up(*offset, 4); - ptr = erofs_read_metabuf(buf, sb, erofs_blknr(*offset), EROFS_KMAP); + ptr = erofs_read_metabuf(buf, sb, erofs_blknr(sb, *offset), EROFS_KMAP); if (IS_ERR(ptr)) return ptr; - len = le16_to_cpu(*(__le16 *)&ptr[erofs_blkoff(*offset)]); + len = le16_to_cpu(*(__le16 *)&ptr[erofs_blkoff(sb, *offset)]); if (!len) len = U16_MAX + 1; buffer = kmalloc(len, GFP_KERNEL); @@ -147,14 +150,15 @@ static void *erofs_read_metadata(struct super_block *sb, struct erofs_buf *buf, *lengthp = len; for (i = 0; i < len; i += cnt) { - cnt = min(EROFS_BLKSIZ - (int)erofs_blkoff(*offset), len - i); - ptr = erofs_read_metabuf(buf, sb, erofs_blknr(*offset), + cnt = min_t(int, sb->s_blocksize - erofs_blkoff(sb, *offset), + len - i); + ptr = erofs_read_metabuf(buf, sb, erofs_blknr(sb, *offset), EROFS_KMAP); if (IS_ERR(ptr)) { kfree(buffer); return ptr; } - memcpy(buffer + i, ptr + erofs_blkoff(*offset), cnt); + memcpy(buffer + i, ptr + erofs_blkoff(sb, *offset), cnt); *offset += cnt; } return buffer; @@ -229,10 +233,10 @@ static int erofs_init_device(struct erofs_buf *buf, struct super_block *sb, struct block_device *bdev; void *ptr; - ptr = erofs_read_metabuf(buf, sb, erofs_blknr(*pos), EROFS_KMAP); + ptr = erofs_read_metabuf(buf, sb, erofs_blknr(sb, *pos), EROFS_KMAP); if (IS_ERR(ptr)) return PTR_ERR(ptr); - dis = ptr + erofs_blkoff(*pos); + dis = ptr + erofs_blkoff(sb, *pos); if (!dif->path) { if (!dis->tag[0]) { @@ -724,6 +728,7 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) sbi->domain_id = ctx->domain_id; ctx->domain_id = NULL; + sbi->blkszbits = PAGE_SHIFT; if (erofs_is_fscache_mode(sb)) { sb->s_blocksize = EROFS_BLKSIZ; sb->s_blocksize_bits = LOG_BLOCK_SIZE; @@ -1059,7 +1064,7 @@ static int erofs_statfs(struct dentry *dentry, struct kstatfs *buf) id = huge_encode_dev(sb->s_bdev->bd_dev); buf->f_type = sb->s_magic; - buf->f_bsize = EROFS_BLKSIZ; + buf->f_bsize = sb->s_blocksize; buf->f_blocks = sbi->total_blocks; buf->f_bfree = buf->f_bavail = 0; diff --git a/fs/erofs/xattr.c b/fs/erofs/xattr.c index a2776abf3698..7c09ad1beb83 100644 --- a/fs/erofs/xattr.c +++ b/fs/erofs/xattr.c @@ -68,8 +68,8 @@ static int init_inode_xattrs(struct inode *inode) } it.buf = __EROFS_BUF_INITIALIZER; - it.blkaddr = erofs_blknr(erofs_iloc(inode) + vi->inode_isize); - it.ofs = erofs_blkoff(erofs_iloc(inode) + vi->inode_isize); + it.blkaddr = erofs_blknr(sb, erofs_iloc(inode) + vi->inode_isize); + it.ofs = erofs_blkoff(sb, erofs_iloc(inode) + vi->inode_isize); /* read in shared xattr array (non-atomic, see kmalloc below) */ it.kaddr = erofs_read_metabuf(&it.buf, sb, it.blkaddr, EROFS_KMAP); @@ -92,9 +92,9 @@ static int init_inode_xattrs(struct inode *inode) it.ofs += sizeof(struct erofs_xattr_ibody_header); for (i = 0; i < vi->xattr_shared_count; ++i) { - if (it.ofs >= EROFS_BLKSIZ) { + if (it.ofs >= sb->s_blocksize) { /* cannot be unaligned */ - DBG_BUGON(it.ofs != EROFS_BLKSIZ); + DBG_BUGON(it.ofs != sb->s_blocksize); it.kaddr = erofs_read_metabuf(&it.buf, sb, ++it.blkaddr, EROFS_KMAP); @@ -139,15 +139,15 @@ struct xattr_iter_handlers { static inline int xattr_iter_fixup(struct xattr_iter *it) { - if (it->ofs < EROFS_BLKSIZ) + if (it->ofs < it->sb->s_blocksize) return 0; - it->blkaddr += erofs_blknr(it->ofs); + it->blkaddr += erofs_blknr(it->sb, it->ofs); it->kaddr = erofs_read_metabuf(&it->buf, it->sb, it->blkaddr, EROFS_KMAP_ATOMIC); if (IS_ERR(it->kaddr)) return PTR_ERR(it->kaddr); - it->ofs = erofs_blkoff(it->ofs); + it->ofs = erofs_blkoff(it->sb, it->ofs); return 0; } @@ -165,8 +165,8 @@ static int inline_xattr_iter_begin(struct xattr_iter *it, inline_xattr_ofs = vi->inode_isize + xattr_header_sz; - it->blkaddr = erofs_blknr(erofs_iloc(inode) + inline_xattr_ofs); - it->ofs = erofs_blkoff(erofs_iloc(inode) + inline_xattr_ofs); + it->blkaddr = erofs_blknr(it->sb, erofs_iloc(inode) + inline_xattr_ofs); + it->ofs = erofs_blkoff(it->sb, erofs_iloc(inode) + inline_xattr_ofs); it->kaddr = erofs_read_metabuf(&it->buf, inode->i_sb, it->blkaddr, EROFS_KMAP_ATOMIC); if (IS_ERR(it->kaddr)) @@ -222,8 +222,8 @@ static int xattr_foreach(struct xattr_iter *it, processed = 0; while (processed < entry.e_name_len) { - if (it->ofs >= EROFS_BLKSIZ) { - DBG_BUGON(it->ofs > EROFS_BLKSIZ); + if (it->ofs >= it->sb->s_blocksize) { + DBG_BUGON(it->ofs > it->sb->s_blocksize); err = xattr_iter_fixup(it); if (err) @@ -231,7 +231,7 @@ static int xattr_foreach(struct xattr_iter *it, it->ofs = 0; } - slice = min_t(unsigned int, EROFS_BLKSIZ - it->ofs, + slice = min_t(unsigned int, it->sb->s_blocksize - it->ofs, entry.e_name_len - processed); /* handle name */ @@ -257,8 +257,8 @@ static int xattr_foreach(struct xattr_iter *it, } while (processed < value_sz) { - if (it->ofs >= EROFS_BLKSIZ) { - DBG_BUGON(it->ofs > EROFS_BLKSIZ); + if (it->ofs >= it->sb->s_blocksize) { + DBG_BUGON(it->ofs > it->sb->s_blocksize); err = xattr_iter_fixup(it); if (err) @@ -266,7 +266,7 @@ static int xattr_foreach(struct xattr_iter *it, it->ofs = 0; } - slice = min_t(unsigned int, EROFS_BLKSIZ - it->ofs, + slice = min_t(unsigned int, it->sb->s_blocksize - it->ofs, value_sz - processed); op->value(it, processed, it->kaddr + it->ofs, slice); it->ofs += slice; @@ -352,15 +352,14 @@ static int shared_getxattr(struct inode *inode, struct getxattr_iter *it) { struct erofs_inode *const vi = EROFS_I(inode); struct super_block *const sb = inode->i_sb; - struct erofs_sb_info *const sbi = EROFS_SB(sb); unsigned int i; int ret = -ENOATTR; for (i = 0; i < vi->xattr_shared_count; ++i) { erofs_blk_t blkaddr = - xattrblock_addr(sbi, vi->xattr_shared_xattrs[i]); + xattrblock_addr(sb, vi->xattr_shared_xattrs[i]); - it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]); + it->it.ofs = xattrblock_offset(sb, vi->xattr_shared_xattrs[i]); it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr, EROFS_KMAP_ATOMIC); if (IS_ERR(it->it.kaddr)) @@ -564,15 +563,14 @@ static int shared_listxattr(struct listxattr_iter *it) struct inode *const inode = d_inode(it->dentry); struct erofs_inode *const vi = EROFS_I(inode); struct super_block *const sb = inode->i_sb; - struct erofs_sb_info *const sbi = EROFS_SB(sb); unsigned int i; int ret = 0; for (i = 0; i < vi->xattr_shared_count; ++i) { erofs_blk_t blkaddr = - xattrblock_addr(sbi, vi->xattr_shared_xattrs[i]); + xattrblock_addr(sb, vi->xattr_shared_xattrs[i]); - it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]); + it->it.ofs = xattrblock_offset(sb, vi->xattr_shared_xattrs[i]); it->it.kaddr = erofs_read_metabuf(&it->it.buf, sb, blkaddr, EROFS_KMAP_ATOMIC); if (IS_ERR(it->it.kaddr)) diff --git a/fs/erofs/xattr.h b/fs/erofs/xattr.h index 0a43c9ee9f8f..f7a21aaa9755 100644 --- a/fs/erofs/xattr.h +++ b/fs/erofs/xattr.h @@ -19,21 +19,21 @@ static inline unsigned int inlinexattr_header_size(struct inode *inode) sizeof(u32) * EROFS_I(inode)->xattr_shared_count; } -static inline erofs_blk_t xattrblock_addr(struct erofs_sb_info *sbi, +static inline erofs_blk_t xattrblock_addr(struct super_block *sb, unsigned int xattr_id) { #ifdef CONFIG_EROFS_FS_XATTR - return sbi->xattr_blkaddr + - xattr_id * sizeof(__u32) / EROFS_BLKSIZ; + return EROFS_SB(sb)->xattr_blkaddr + + xattr_id * sizeof(__u32) / sb->s_blocksize; #else return 0; #endif } -static inline unsigned int xattrblock_offset(struct erofs_sb_info *sbi, +static inline unsigned int xattrblock_offset(struct super_block *sb, unsigned int xattr_id) { - return (xattr_id * sizeof(__u32)) % EROFS_BLKSIZ; + return (xattr_id * sizeof(__u32)) % sb->s_blocksize; } #ifdef CONFIG_EROFS_FS_XATTR diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index a08299d80ca1..bfb10ba74aab 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -618,7 +618,7 @@ static int z_erofs_register_pcluster(struct z_erofs_decompress_frontend *fe) if (ztailpacking) { pcl->obj.index = 0; /* which indicates ztailpacking */ - pcl->pageofs_in = erofs_blkoff(map->m_pa); + pcl->pageofs_in = erofs_blkoff(fe->inode->i_sb, map->m_pa); pcl->tailpacking_size = map->m_plen; } else { pcl->obj.index = map->m_pa >> PAGE_SHIFT; @@ -747,6 +747,7 @@ static int z_erofs_read_fragment(struct inode *inode, erofs_off_t pos, struct page *page, unsigned int pageofs, unsigned int len) { + struct super_block *sb = inode->i_sb; struct inode *packed_inode = EROFS_I_SB(inode)->packed_inode; struct erofs_buf buf = __EROFS_BUF_INITIALIZER; u8 *src, *dst; @@ -758,16 +759,16 @@ static int z_erofs_read_fragment(struct inode *inode, erofs_off_t pos, pos += EROFS_I(inode)->z_fragmentoff; for (i = 0; i < len; i += cnt) { cnt = min_t(unsigned int, len - i, - EROFS_BLKSIZ - erofs_blkoff(pos)); + sb->s_blocksize - erofs_blkoff(sb, pos)); src = erofs_bread(&buf, packed_inode, - erofs_blknr(pos), EROFS_KMAP); + erofs_blknr(sb, pos), EROFS_KMAP); if (IS_ERR(src)) { erofs_put_metabuf(&buf); return PTR_ERR(src); } dst = kmap_local_page(page); - memcpy(dst + pageofs + i, src + erofs_blkoff(pos), cnt); + memcpy(dst + pageofs + i, src + erofs_blkoff(sb, pos), cnt); kunmap_local(dst); pos += cnt; } @@ -825,7 +826,8 @@ repeat: void *mp; mp = erofs_read_metabuf(&fe->map.buf, inode->i_sb, - erofs_blknr(map->m_pa), EROFS_NO_KMAP); + erofs_blknr(inode->i_sb, map->m_pa), + EROFS_NO_KMAP); if (IS_ERR(mp)) { err = PTR_ERR(mp); erofs_err(inode->i_sb, @@ -1555,11 +1557,11 @@ static void z_erofs_submit_queue(struct z_erofs_decompress_frontend *f, /* no device id here, thus it will always succeed */ mdev = (struct erofs_map_dev) { - .m_pa = blknr_to_addr(pcl->obj.index), + .m_pa = erofs_pos(sb, pcl->obj.index), }; (void)erofs_map_dev(sb, &mdev); - cur = erofs_blknr(mdev.m_pa); + cur = erofs_blknr(sb, mdev.m_pa); end = cur + pcl->pclusterpages; do { @@ -1593,7 +1595,7 @@ submit_bio_retry: last_bdev = mdev.m_bdev; bio->bi_iter.bi_sector = (sector_t)cur << - LOG_SECTORS_PER_BLOCK; + (sb->s_blocksize_bits - 9); bio->bi_private = bi_private; if (f->readahead) bio->bi_opf |= REQ_RAHEAD; diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c index 7455c16e36ef..8973ccad707d 100644 --- a/fs/erofs/zmap.c +++ b/fs/erofs/zmap.c @@ -18,7 +18,7 @@ int z_erofs_fill_inode(struct inode *inode) vi->z_advise = 0; vi->z_algorithmtype[0] = 0; vi->z_algorithmtype[1] = 0; - vi->z_logical_clusterbits = LOG_BLOCK_SIZE; + vi->z_logical_clusterbits = inode->i_sb->s_blocksize_bits; set_bit(EROFS_I_Z_INITED_BIT, &vi->flags); } inode->i_mapping->a_ops = &z_erofs_aops; @@ -53,13 +53,13 @@ static int legacy_load_cluster_from_disk(struct z_erofs_maprecorder *m, unsigned int advise, type; m->kaddr = erofs_read_metabuf(&m->map->buf, inode->i_sb, - erofs_blknr(pos), EROFS_KMAP_ATOMIC); + erofs_blknr(inode->i_sb, pos), EROFS_KMAP_ATOMIC); if (IS_ERR(m->kaddr)) return PTR_ERR(m->kaddr); m->nextpackoff = pos + sizeof(struct z_erofs_vle_decompressed_index); m->lcn = lcn; - di = m->kaddr + erofs_blkoff(pos); + di = m->kaddr + erofs_blkoff(inode->i_sb, pos); advise = le16_to_cpu(di->di_advise); type = (advise >> Z_EROFS_VLE_DI_CLUSTER_TYPE_BIT) & @@ -160,7 +160,7 @@ static int unpack_compacted_index(struct z_erofs_maprecorder *m, (vcnt << amortizedshift); big_pcluster = vi->z_advise & Z_EROFS_ADVISE_BIG_PCLUSTER_1; encodebits = ((vcnt << amortizedshift) - sizeof(__le32)) * 8 / vcnt; - eofs = erofs_blkoff(pos); + eofs = erofs_blkoff(m->inode->i_sb, pos); base = round_down(eofs, vcnt << amortizedshift); in = m->kaddr + base; @@ -252,7 +252,7 @@ static int compacted_load_cluster_from_disk(struct z_erofs_maprecorder *m, struct erofs_inode *const vi = EROFS_I(inode); const erofs_off_t ebase = sizeof(struct z_erofs_map_header) + ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); - const unsigned int totalidx = DIV_ROUND_UP(inode->i_size, EROFS_BLKSIZ); + unsigned int totalidx = erofs_iblks(inode); unsigned int compacted_4b_initial, compacted_2b; unsigned int amortizedshift; erofs_off_t pos; @@ -290,7 +290,7 @@ static int compacted_load_cluster_from_disk(struct z_erofs_maprecorder *m, out: pos += lcn * (1 << amortizedshift); m->kaddr = erofs_read_metabuf(&m->map->buf, inode->i_sb, - erofs_blknr(pos), EROFS_KMAP_ATOMIC); + erofs_blknr(inode->i_sb, pos), EROFS_KMAP_ATOMIC); if (IS_ERR(m->kaddr)) return PTR_ERR(m->kaddr); return unpack_compacted_index(m, amortizedshift, pos, lookahead); @@ -360,6 +360,7 @@ static int z_erofs_extent_lookback(struct z_erofs_maprecorder *m, static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m, unsigned int initial_lcn) { + struct super_block *sb = m->inode->i_sb; struct erofs_inode *const vi = EROFS_I(m->inode); struct erofs_map_blocks *const map = m->map; const unsigned int lclusterbits = vi->z_logical_clusterbits; @@ -406,7 +407,7 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m, * if the 1st NONHEAD lcluster is actually PLAIN or HEAD type * rather than CBLKCNT, it's a 1 lcluster-sized pcluster. */ - m->compressedblks = 1 << (lclusterbits - LOG_BLOCK_SIZE); + m->compressedblks = 1 << (lclusterbits - sb->s_blocksize_bits); break; case Z_EROFS_VLE_CLUSTER_TYPE_NONHEAD: if (m->delta[0] != 1) @@ -422,7 +423,7 @@ static int z_erofs_get_extent_compressedlen(struct z_erofs_maprecorder *m, return -EFSCORRUPTED; } out: - map->m_plen = (u64)m->compressedblks << LOG_BLOCK_SIZE; + map->m_plen = erofs_pos(sb, m->compressedblks); return 0; err_bonus_cblkcnt: erofs_err(m->inode->i_sb, @@ -565,7 +566,7 @@ static int z_erofs_do_map_blocks(struct inode *inode, } else if (fragment && m.lcn == vi->z_tailextent_headlcn) { map->m_flags |= EROFS_MAP_FRAGMENT; } else { - map->m_pa = blknr_to_addr(m.pblk); + map->m_pa = erofs_pos(inode->i_sb, m.pblk); err = z_erofs_get_extent_compressedlen(&m, initial_lcn); if (err) goto unmap_out; @@ -592,7 +593,7 @@ static int z_erofs_do_map_blocks(struct inode *inode, if ((flags & EROFS_GET_BLOCKS_FIEMAP) || ((flags & EROFS_GET_BLOCKS_READMORE) && map->m_algorithmformat == Z_EROFS_COMPRESSION_LZMA && - map->m_llen >= EROFS_BLKSIZ)) { + map->m_llen >= i_blocksize(inode))) { err = z_erofs_get_extent_decompressedlen(&m); if (!err) map->m_flags |= EROFS_MAP_FULL_MAPPED; @@ -633,13 +634,13 @@ static int z_erofs_fill_inode_lazy(struct inode *inode) goto out_unlock; pos = ALIGN(erofs_iloc(inode) + vi->inode_isize + vi->xattr_isize, 8); - kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(pos), EROFS_KMAP); + kaddr = erofs_read_metabuf(&buf, sb, erofs_blknr(sb, pos), EROFS_KMAP); if (IS_ERR(kaddr)) { err = PTR_ERR(kaddr); goto out_unlock; } - h = kaddr + erofs_blkoff(pos); + h = kaddr + erofs_blkoff(sb, pos); /* * if the highest bit of the 8-byte map header is set, the whole file * is stored in the packed inode. The rest bits keeps z_fragmentoff. @@ -663,7 +664,7 @@ static int z_erofs_fill_inode_lazy(struct inode *inode) goto out_put_metabuf; } - vi->z_logical_clusterbits = LOG_BLOCK_SIZE + (h->h_clusterbits & 7); + vi->z_logical_clusterbits = sb->s_blocksize_bits + (h->h_clusterbits & 7); if (!erofs_sb_has_big_pcluster(EROFS_SB(sb)) && vi->z_advise & (Z_EROFS_ADVISE_BIG_PCLUSTER_1 | Z_EROFS_ADVISE_BIG_PCLUSTER_2)) { @@ -692,7 +693,7 @@ static int z_erofs_fill_inode_lazy(struct inode *inode) erofs_put_metabuf(&map.buf); if (!map.m_plen || - erofs_blkoff(map.m_pa) + map.m_plen > EROFS_BLKSIZ) { + erofs_blkoff(sb, map.m_pa) + map.m_plen > sb->s_blocksize) { erofs_err(sb, "invalid tail-packing pclustersize %llu", map.m_plen); err = -EFSCORRUPTED; diff --git a/include/trace/events/erofs.h b/include/trace/events/erofs.h index e095d36db939..01d0b8927376 100644 --- a/include/trace/events/erofs.h +++ b/include/trace/events/erofs.h @@ -66,8 +66,8 @@ TRACE_EVENT(erofs_fill_inode, TP_fast_assign( __entry->dev = inode->i_sb->s_dev; __entry->nid = EROFS_I(inode)->nid; - __entry->blkaddr = erofs_blknr(erofs_iloc(inode)); - __entry->ofs = erofs_blkoff(erofs_iloc(inode)); + __entry->blkaddr = erofs_blknr(inode->i_sb, erofs_iloc(inode)); + __entry->ofs = erofs_blkoff(inode->i_sb, erofs_iloc(inode)); ), TP_printk("dev = (%d,%d), nid = %llu, blkaddr %u ofs %u", From 3437652fa2f259148ffdf9f2cf183c31b14400e6 Mon Sep 17 00:00:00 2001 From: Jingbo Xu Date: Mon, 13 Mar 2023 21:53:09 +0800 Subject: [PATCH 62/99] BACKPORT: erofs: set block size to the on-disk block size Set the block size to that specified in on-disk superblock. Also remove the hard constraint of PAGE_SIZE block size for the uncompressed device backend. This constraint is temporarily remained for compressed device and fscache backend, as there is more work needed to handle the condition where the block size is not equal to PAGE_SIZE. It is worth noting that the on-disk block size is read prior to erofs_superblock_csum_verify(), as the read block size is needed in the latter. Besides, later we are going to make erofs refer to tar data blobs (which is 512-byte aligned) for OCI containers, where the block size is 512 bytes. In this case, the 512-byte block size may not be adequate for a directory to contain enough dirents. To fix this, we are also going to introduce directory block size independent on the block size. Due to we have already supported block size smaller than PAGE_SIZE now, disable all these images with such separated directory block size until we supported this feature later. Bug: 303691233 Signed-off-by: Jingbo Xu Reviewed-by: Gao Xiang Reviewed-by: Yue Hu Reviewed-by: Chao Yu Link: https://lore.kernel.org/r/20230313135309.75269-3-jefflexu@linux.alibaba.com [ Gao Xiang: update documentation. ] Signed-off-by: Gao Xiang (cherry picked from commit d3c4bdcc756e60b95365c66ff58844ce75d1c8f8) [dhavale: resolved minor conflict in Documentation/filesystems/erofs.rst] Signed-off-by: Sandeep Dhavale Change-Id: I9a46bfb7ec9f79751e0df8f9d6369192dc861736 --- Documentation/filesystems/erofs.rst | 10 +++++-- fs/erofs/erofs_fs.h | 5 ++-- fs/erofs/inode.c | 3 +- fs/erofs/internal.h | 10 +------ fs/erofs/super.c | 45 +++++++++++++++++++---------- 5 files changed, 43 insertions(+), 30 deletions(-) diff --git a/Documentation/filesystems/erofs.rst b/Documentation/filesystems/erofs.rst index 05e03d54af1a..df681e4391c0 100644 --- a/Documentation/filesystems/erofs.rst +++ b/Documentation/filesystems/erofs.rst @@ -34,8 +34,14 @@ Here is the main features of EROFS: - Little endian on-disk design; - - 4KiB block size and 32-bit block addresses, therefore 16TiB address space - at most for now; + - Block-based distribution and file-based distribution over fscache are + supported; + + - Support multiple devices to refer to external blobs, which can be used + for container images; + + - 32-bit block addresses for each device, therefore 16TiB address space at + most with 4KiB block size for now; - Two inode layouts for different requirements: diff --git a/fs/erofs/erofs_fs.h b/fs/erofs/erofs_fs.h index dbcd24371002..44876a97cabd 100644 --- a/fs/erofs/erofs_fs.h +++ b/fs/erofs/erofs_fs.h @@ -53,7 +53,7 @@ struct erofs_super_block { __le32 magic; /* file system magic number */ __le32 checksum; /* crc32c(super_block) */ __le32 feature_compat; - __u8 blkszbits; /* support block_size == PAGE_SIZE only */ + __u8 blkszbits; /* filesystem block size in bit shift */ __u8 sb_extslots; /* superblock size = 128 + sb_extslots * 16 */ __le16 root_nid; /* nid of root directory */ @@ -75,7 +75,8 @@ struct erofs_super_block { } __packed u1; __le16 extra_devices; /* # of devices besides the primary device */ __le16 devt_slotoff; /* startoff = devt_slotoff * devt_slotsize */ - __u8 reserved[6]; + __u8 dirblkbits; /* directory block size in bit shift */ + __u8 reserved[5]; __le64 packed_nid; /* nid of the special packed inode */ __u8 reserved2[24]; }; diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c index 785acda70764..db344ca0fcd3 100644 --- a/fs/erofs/inode.c +++ b/fs/erofs/inode.c @@ -290,7 +290,8 @@ static int erofs_fill_inode(struct inode *inode) } if (erofs_inode_is_data_compressed(vi->datalayout)) { - if (!erofs_is_fscache_mode(inode->i_sb)) + if (!erofs_is_fscache_mode(inode->i_sb) && + inode->i_sb->s_blocksize_bits == PAGE_SHIFT) err = z_erofs_fill_inode(inode); else err = -EOPNOTSUPP; diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 08628c64210e..1c03daf83a68 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -146,7 +146,7 @@ struct erofs_sb_info { u16 device_id_mask; /* valid bits of device id to be used */ unsigned char islotbits; /* inode slot unit size in bit shift */ - unsigned char blkszbits; + unsigned char blkszbits; /* filesystem block size in bit shift */ u32 sb_size; /* total superblock size */ u32 build_time_nsec; @@ -239,14 +239,6 @@ static inline int erofs_wait_on_workgroup_freezed(struct erofs_workgroup *grp) VAL != EROFS_LOCKED_MAGIC); } -/* we strictly follow PAGE_SIZE and no buffer head yet */ -#define LOG_BLOCK_SIZE PAGE_SHIFT -#define EROFS_BLKSIZ (1 << LOG_BLOCK_SIZE) - -#if (EROFS_BLKSIZ % 4096 || !EROFS_BLKSIZ) -#error erofs cannot be used in this platform -#endif - enum erofs_kmap_type { EROFS_NO_KMAP, /* don't map the buffer */ EROFS_KMAP, /* use kmap() to map the buffer */ diff --git a/fs/erofs/super.c b/fs/erofs/super.c index b07c9d1deaf8..b073b38c1c77 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -334,7 +334,6 @@ static int erofs_read_superblock(struct super_block *sb) struct erofs_sb_info *sbi; struct erofs_buf buf = __EROFS_BUF_INITIALIZER; struct erofs_super_block *dsb; - unsigned int blkszbits; void *data; int ret; @@ -353,6 +352,16 @@ static int erofs_read_superblock(struct super_block *sb) goto out; } + sbi->blkszbits = dsb->blkszbits; + if (sbi->blkszbits < 9 || sbi->blkszbits > PAGE_SHIFT) { + erofs_err(sb, "blkszbits %u isn't supported", sbi->blkszbits); + goto out; + } + if (dsb->dirblkbits) { + erofs_err(sb, "dirblkbits %u isn't supported", dsb->dirblkbits); + goto out; + } + sbi->feature_compat = le32_to_cpu(dsb->feature_compat); if (erofs_sb_has_sb_chksum(sbi)) { ret = erofs_superblock_csum_verify(sb, data); @@ -361,19 +370,11 @@ static int erofs_read_superblock(struct super_block *sb) } ret = -EINVAL; - blkszbits = dsb->blkszbits; - /* 9(512 bytes) + LOG_SECTORS_PER_BLOCK == LOG_BLOCK_SIZE */ - if (blkszbits != LOG_BLOCK_SIZE) { - erofs_err(sb, "blkszbits %u isn't supported on this platform", - blkszbits); - goto out; - } - if (!check_layout_compatibility(sb, dsb)) goto out; sbi->sb_size = 128 + dsb->sb_extslots * EROFS_SB_EXTSLOT_SIZE; - if (sbi->sb_size > EROFS_BLKSIZ) { + if (sbi->sb_size > PAGE_SIZE - EROFS_SUPER_OFFSET) { erofs_err(sb, "invalid sb_extslots %u (more than a fs block)", sbi->sb_size); goto out; @@ -730,8 +731,8 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) sbi->blkszbits = PAGE_SHIFT; if (erofs_is_fscache_mode(sb)) { - sb->s_blocksize = EROFS_BLKSIZ; - sb->s_blocksize_bits = LOG_BLOCK_SIZE; + sb->s_blocksize = PAGE_SIZE; + sb->s_blocksize_bits = PAGE_SHIFT; err = erofs_fscache_register_fs(sb); if (err) @@ -741,8 +742,8 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) if (err) return err; } else { - if (!sb_set_blocksize(sb, EROFS_BLKSIZ)) { - erofs_err(sb, "failed to set erofs blksize"); + if (!sb_set_blocksize(sb, PAGE_SIZE)) { + errorfc(fc, "failed to set initial blksize"); return -EINVAL; } @@ -755,12 +756,24 @@ static int erofs_fc_fill_super(struct super_block *sb, struct fs_context *fc) if (err) return err; - if (test_opt(&sbi->opt, DAX_ALWAYS)) { - BUILD_BUG_ON(EROFS_BLKSIZ != PAGE_SIZE); + if (sb->s_blocksize_bits != sbi->blkszbits) { + if (erofs_is_fscache_mode(sb)) { + errorfc(fc, "unsupported blksize for fscache mode"); + return -EINVAL; + } + if (!sb_set_blocksize(sb, 1 << sbi->blkszbits)) { + errorfc(fc, "failed to set erofs blksize"); + return -EINVAL; + } + } + if (test_opt(&sbi->opt, DAX_ALWAYS)) { if (!sbi->dax_dev) { errorfc(fc, "DAX unsupported by block device. Turning off DAX."); clear_opt(&sbi->opt, DAX_ALWAYS); + } else if (sbi->blkszbits != PAGE_SHIFT) { + errorfc(fc, "unsupported blocksize for DAX"); + clear_opt(&sbi->opt, DAX_ALWAYS); } } From 457e65696a45a985ae548d554fec213aa72e5789 Mon Sep 17 00:00:00 2001 From: Elliot Berman Date: Fri, 8 Sep 2023 15:49:15 -0700 Subject: [PATCH 63/99] BACKPORT: FROMGIT: sched/core: Remove ifdeffery for saved_state In preparation for freezer to also use saved_state, remove the CONFIG_PREEMPT_RT compilation guard around saved_state. On the arm64 platform I tested which did not have CONFIG_PREEMPT_RT, there was no statistically significant deviation by applying this patch. Test methodology: perf bench sched message -g 40 -l 40 Signed-off-by: Elliot Berman Signed-off-by: Peter Zijlstra (Intel) Signed-off-by: Ingo Molnar (cherry picked from commit fa14aa2c23d31eb39bc615feb920f28d32d2a87e https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core) Bug: 292064955 Change-Id: I9c11ab7ce31ba3b48b304229898d4c7c18a6cb2c [eberman: Use KABI reservation to preserve CRC/ABI of struct task_struct and preserved raw_spin_(un)lock instead of new guard(...) syntax in task_state_match] Signed-off-by: Elliot Berman --- include/linux/sched.h | 6 ++---- kernel/sched/core.c | 10 ++-------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/include/linux/sched.h b/include/linux/sched.h index 431cb079f6a9..cf3d130319cb 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -758,10 +758,8 @@ struct task_struct { #endif unsigned int __state; -#ifdef CONFIG_PREEMPT_RT /* saved state for "spinlock sleepers" */ - unsigned int saved_state; -#endif + /* moved to ANDROID_KABI_USE(1, unsigned int saved_state) */ /* * This begins the randomizable portion of task_struct. Only @@ -1548,7 +1546,7 @@ struct task_struct { */ union rv_task_monitor rv[RV_PER_TASK_MONITORS]; #endif - ANDROID_KABI_RESERVE(1); + ANDROID_KABI_USE(1, unsigned int saved_state); ANDROID_KABI_RESERVE(2); ANDROID_KABI_RESERVE(3); ANDROID_KABI_RESERVE(4); diff --git a/kernel/sched/core.c b/kernel/sched/core.c index c033651150cc..0f1a8b497672 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2255,17 +2255,15 @@ int __task_state_match(struct task_struct *p, unsigned int state) if (READ_ONCE(p->__state) & state) return 1; -#ifdef CONFIG_PREEMPT_RT if (READ_ONCE(p->saved_state) & state) return -1; -#endif + return 0; } static __always_inline int task_state_match(struct task_struct *p, unsigned int state) { -#ifdef CONFIG_PREEMPT_RT int match; /* @@ -2277,9 +2275,6 @@ int task_state_match(struct task_struct *p, unsigned int state) raw_spin_unlock_irq(&p->pi_lock); return match; -#else - return __task_state_match(p, state); -#endif } /* @@ -4068,7 +4063,6 @@ bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success) *success = !!(match = __task_state_match(p, state)); -#ifdef CONFIG_PREEMPT_RT /* * Saved state preserves the task state across blocking on * an RT lock. If the state matches, set p::saved_state to @@ -4084,7 +4078,7 @@ bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success) */ if (match < 0) p->saved_state = TASK_RUNNING; -#endif + return match > 0; } From 22cd8e0def4b56783ea66b10a619fbbc7a3bf634 Mon Sep 17 00:00:00 2001 From: Elliot Berman Date: Fri, 8 Sep 2023 15:49:16 -0700 Subject: [PATCH 64/99] FROMGIT: freezer,sched: Use saved_state to reduce some spurious wakeups After commit f5d39b020809 ("freezer,sched: Rewrite core freezer logic"), tasks that transition directly from TASK_FREEZABLE to TASK_FROZEN are always woken up on the thaw path. Prior to that commit, tasks could ask freezer to consider them "frozen enough" via freezer_do_not_count(). The commit replaced freezer_do_not_count() with a TASK_FREEZABLE state which allows freezer to immediately mark the task as TASK_FROZEN without waking up the task. This is efficient for the suspend path, but on the thaw path, the task is always woken up even if the task didn't need to wake up and goes back to its TASK_(UN)INTERRUPTIBLE state. Although these tasks are capable of handling of the wakeup, we can observe a power/perf impact from the extra wakeup. We observed on Android many tasks wait in the TASK_FREEZABLE state (particularly due to many of them being binder clients). We observed nearly 4x the number of tasks and a corresponding linear increase in latency and power consumption when thawing the system. The latency increased from ~15ms to ~50ms. Avoid the spurious wakeups by saving the state of TASK_FREEZABLE tasks. If the task was running before entering TASK_FROZEN state (__refrigerator()) or if the task received a wake up for the saved state, then the task is woken on thaw. saved_state from PREEMPT_RT locks can be re-used because freezer would not stomp on the rtlock wait flow: TASK_RTLOCK_WAIT isn't considered freezable. Reported-by: Prakash Viswalingam Signed-off-by: Elliot Berman Signed-off-by: Peter Zijlstra (Intel) Signed-off-by: Ingo Molnar (cherry picked from commit 8f0eed4a78a81668bc78923ea09f51a7a663c2b0) (cherry picked from commit e4d93065a5085dbb862aa4bd06fb3e51b02e8857 https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core) Bug: 292064955 Change-Id: I121cfff46536a13e59b5eb60842984aed0d73faa Signed-off-by: Elliot Berman --- kernel/freezer.c | 41 +++++++++++++++++++---------------------- kernel/sched/core.c | 23 ++++++++++++++--------- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/kernel/freezer.c b/kernel/freezer.c index b672c614b1e9..abd7f58cfe04 100644 --- a/kernel/freezer.c +++ b/kernel/freezer.c @@ -74,7 +74,11 @@ bool __refrigerator(bool check_kthr_stop) for (;;) { bool freeze; + raw_spin_lock_irq(¤t->pi_lock); set_current_state(TASK_FROZEN); + /* unstale saved_state so that __thaw_task() will wake us up */ + current->saved_state = TASK_RUNNING; + raw_spin_unlock_irq(¤t->pi_lock); spin_lock_irq(&freezer_lock); freeze = freezing(current) && !(check_kthr_stop && kthread_should_stop()); @@ -133,6 +137,7 @@ static int __set_task_frozen(struct task_struct *p, void *arg) WARN_ON_ONCE(debug_locks && p->lockdep_depth); #endif + p->saved_state = p->__state; WRITE_ONCE(p->__state, TASK_FROZEN); return TASK_FROZEN; } @@ -174,42 +179,34 @@ bool freeze_task(struct task_struct *p) } /* - * The special task states (TASK_STOPPED, TASK_TRACED) keep their canonical - * state in p->jobctl. If either of them got a wakeup that was missed because - * TASK_FROZEN, then their canonical state reflects that and the below will - * refuse to restore the special state and instead issue the wakeup. + * Restore the saved_state before the task entered freezer. For typical task + * in the __refrigerator(), saved_state == TASK_RUNNING so nothing happens + * here. For tasks which were TASK_NORMAL | TASK_FREEZABLE, their initial state + * is restored unless they got an expected wakeup (see ttwu_state_match()). + * Returns 1 if the task state was restored. */ -static int __set_task_special(struct task_struct *p, void *arg) +static int __restore_freezer_state(struct task_struct *p, void *arg) { - unsigned int state = 0; + unsigned int state = p->saved_state; - if (p->jobctl & JOBCTL_TRACED) - state = TASK_TRACED; - - else if (p->jobctl & JOBCTL_STOPPED) - state = TASK_STOPPED; - - if (state) + if (state != TASK_RUNNING) { WRITE_ONCE(p->__state, state); + return 1; + } - return state; + return 0; } void __thaw_task(struct task_struct *p) { - unsigned long flags, flags2; + unsigned long flags; spin_lock_irqsave(&freezer_lock, flags); if (WARN_ON_ONCE(freezing(p))) goto unlock; - if (lock_task_sighand(p, &flags2)) { - /* TASK_FROZEN -> TASK_{STOPPED,TRACED} */ - bool ret = task_call_func(p, __set_task_special, NULL); - unlock_task_sighand(p, &flags2); - if (ret) - goto unlock; - } + if (task_call_func(p, __restore_freezer_state, NULL)) + goto unlock; wake_up_state(p, TASK_FROZEN); unlock: diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 0f1a8b497672..16941a9cb5a9 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2267,8 +2267,8 @@ int task_state_match(struct task_struct *p, unsigned int state) int match; /* - * Serialize against current_save_and_set_rtlock_wait_state() and - * current_restore_rtlock_saved_state(). + * Serialize against current_save_and_set_rtlock_wait_state(), + * current_restore_rtlock_saved_state(), and __refrigerator(). */ raw_spin_lock_irq(&p->pi_lock); match = __task_state_match(p, state); @@ -4043,13 +4043,17 @@ static void ttwu_queue(struct task_struct *p, int cpu, int wake_flags) * The caller holds p::pi_lock if p != current or has preemption * disabled when p == current. * - * The rules of PREEMPT_RT saved_state: + * The rules of saved_state: * * The related locking code always holds p::pi_lock when updating * p::saved_state, which means the code is fully serialized in both cases. * - * The lock wait and lock wakeups happen via TASK_RTLOCK_WAIT. No other - * bits set. This allows to distinguish all wakeup scenarios. + * For PREEMPT_RT, the lock wait and lock wakeups happen via TASK_RTLOCK_WAIT. + * No other bits set. This allows to distinguish all wakeup scenarios. + * + * For FREEZER, the wakeup happens via TASK_FROZEN. No other bits set. This + * allows us to prevent early wakeup of tasks before they can be run on + * asymmetric ISA architectures (eg ARMv9). */ static __always_inline bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success) @@ -4065,10 +4069,11 @@ bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success) /* * Saved state preserves the task state across blocking on - * an RT lock. If the state matches, set p::saved_state to - * TASK_RUNNING, but do not wake the task because it waits - * for a lock wakeup. Also indicate success because from - * the regular waker's point of view this has succeeded. + * an RT lock or TASK_FREEZABLE tasks. If the state matches, + * set p::saved_state to TASK_RUNNING, but do not wake the task + * because it waits for a lock wakeup or __thaw_task(). Also + * indicate success because from the regular waker's point of + * view this has succeeded. * * After acquiring the lock the task will restore p::__state * from p::saved_state which ensures that the regular From 4301901382bf140592f6fe37c67db1729cfd5e3c Mon Sep 17 00:00:00 2001 From: Elliot Berman Date: Tue, 26 Sep 2023 08:46:33 -0700 Subject: [PATCH 65/99] ANDROID: Update STG for ANDROID_KABI_USE(1, unsigned int saved_state) Update STG for commit f5c2fe80d11f ("BACKPORT: FROMGIT: sched/core: Remove ifdeffery for saved_state"). type 'struct task_struct' changed member 'union { unsigned int saved_state; struct { u64 android_kabi_reserved1; }; union { }; }' was added member 'u64 android_kabi_reserved1' was removed Bug: 292064955 Change-Id: If3796ed8a5f7fb2be569c15b4f7c054ee786bc18 Signed-off-by: Elliot Berman --- android/abi_gki_aarch64.stg | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 8565da52be9f..dfb6d70cfbc4 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -38852,6 +38852,11 @@ member { type_id: 0x4f10779f offset: 192 } +member { + id: 0x3024ec51 + type_id: 0x4fbdc803 + offset: 28800 +} member { id: 0x302f914f type_id: 0x4f903dda @@ -45949,12 +45954,6 @@ member { type_id: 0x92233392 offset: 704 } -member { - id: 0x2d081767 - name: "android_kabi_reserved1" - type_id: 0x92233392 - offset: 28800 -} member { id: 0x2d0817b6 name: "android_kabi_reserved1" @@ -169956,6 +169955,11 @@ member { type_id: 0x92233392 offset: 64 } +member { + id: 0x653b6170 + name: "saved_state" + type_id: 0x4585663f +} member { id: 0x72f4c281 name: "saved_syn" @@ -211891,6 +211895,16 @@ struct_union { member_id: 0xca60e328 } } +struct_union { + id: 0x4fbdc803 + kind: UNION + definition { + bytesize: 8 + member_id: 0x653b6170 + member_id: 0x27000c61 + member_id: 0x36752b74 + } +} struct_union { id: 0x4fd8e877 kind: UNION @@ -257161,7 +257175,7 @@ struct_union { member_id: 0xedf50137 member_id: 0xd666cd53 member_id: 0x9a3ad7bf - member_id: 0x2d081767 + member_id: 0x3024ec51 member_id: 0x63760531 member_id: 0xac894e97 member_id: 0xe0f63fac From 1fe248991f9666211afd35762cbdd7811375326f Mon Sep 17 00:00:00 2001 From: Richard Chang Date: Fri, 6 Oct 2023 06:34:02 +0000 Subject: [PATCH 66/99] ANDROID: Update the ABI symbol list Adding the following symbols: - bio_add_page - bio_alloc_bioset - bio_chain - bio_init - bio_put - blk_check_plugged - blkdev_get_by_dev - blkdev_put - file_path - filp_close - filp_open_block - fs_bio_set - submit_bio - submit_bio_wait - zs_compact - zs_create_pool - zs_destroy_pool - zs_free - zs_get_total_pages - zs_huge_class_size - zs_malloc - zs_map_object - zs_pool_stats - zs_unmap_object Bug: 303159648 Change-Id: I948e48ccddbc3190ddf136a5c80874a0bb34e636 Signed-off-by: Richard Chang --- android/abi_gki_aarch64.stg | 55 +++++++++++++++++++++++++++++++++++ android/abi_gki_aarch64_pixel | 24 +++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index dfb6d70cfbc4..f534b4c47650 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -3543,6 +3543,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x1b77cf3e } +pointer_reference { + id: 0x0c5168e8 + kind: POINTER + pointee_type_id: 0x1b05453e +} pointer_reference { id: 0x0c55d62d kind: POINTER @@ -12913,6 +12918,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x88c7ff3b } +pointer_reference { + id: 0x28a3a74b + kind: POINTER + pointee_type_id: 0x88ce7bb2 +} pointer_reference { id: 0x28ac1164 kind: POINTER @@ -29528,6 +29538,11 @@ typedef { name: "blk_opf_t" referred_type_id: 0xe62ebf07 } +typedef { + id: 0x1684c624 + name: "blk_plug_cb_fn" + referred_type_id: 0x0c5168e8 +} typedef { id: 0x3cc4e4dd name: "blk_qc_t" @@ -57619,6 +57634,12 @@ member { name: "callback" type_id: 0x0ed1d747 } +member { + id: 0x56f376f1 + name: "callback" + type_id: 0x1684c624 + offset: 128 +} member { id: 0x56a72054 name: "callback_head" @@ -216754,6 +216775,17 @@ struct_union { member_id: 0xa06fe161 } } +struct_union { + id: 0x88ce7bb2 + kind: STRUCT + name: "blk_plug_cb" + definition { + bytesize: 32 + member_id: 0x7c00ef52 + member_id: 0x56f376f1 + member_id: 0xff8a91c0 + } +} struct_union { id: 0xbb19ab6d kind: STRUCT @@ -293787,6 +293819,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2e60a6b2 } +function { + id: 0x1b05453e + return_type_id: 0x48b5725f + parameter_id: 0x28a3a74b + parameter_id: 0x6d7f5ff6 +} function { id: 0x1b0d4d60 return_type_id: 0x48b5725f @@ -301438,6 +301476,13 @@ function { parameter_id: 0x380c33d1 parameter_id: 0x054f691a } +function { + id: 0x66cc4765 + return_type_id: 0x28a3a74b + parameter_id: 0x1684c624 + parameter_id: 0x18bd6530 + parameter_id: 0x6720d32f +} function { id: 0x66e18f45 return_type_id: 0x2c8c423d @@ -342495,6 +342540,15 @@ elf_symbol { type_id: 0xfc093226 full_name: "blk_bio_list_merge" } +elf_symbol { + id: 0x650319ec + name: "blk_check_plugged" + is_defined: true + symbol_type: FUNCTION + crc: 0xd27b25dd + type_id: 0x66cc4765 + full_name: "blk_check_plugged" +} elf_symbol { id: 0x4ffac461 name: "blk_crypto_keyslot_index" @@ -396828,6 +396882,7 @@ interface { symbol_id: 0x226328f4 symbol_id: 0x0b5d5f1c symbol_id: 0x1516f6b7 + symbol_id: 0x650319ec symbol_id: 0x4ffac461 symbol_id: 0xad8bab96 symbol_id: 0x528ef002 diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 781dc1c30487..639a0559d19e 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -58,8 +58,13 @@ bdev_nr_zones bdev_start_io_acct bin2hex + bio_add_page + bio_alloc_bioset + bio_chain bio_endio bio_end_io_acct_remapped + bio_init + bio_put bio_start_io_acct __bitmap_and __bitmap_andnot @@ -80,6 +85,9 @@ bitmap_zalloc blk_abort_request __blk_alloc_disk + blk_check_plugged + blkdev_get_by_dev + blkdev_put blk_execute_rq_nowait __blk_mq_alloc_disk blk_mq_alloc_tag_set @@ -828,6 +836,9 @@ __fdget fd_install fget + file_path + filp_close + filp_open_block find_extend_vma _find_first_and_bit _find_first_bit @@ -866,6 +877,7 @@ freq_qos_add_request freq_qos_remove_request freq_qos_update_request + fs_bio_set fsnotify __fsnotify_parent full_name_hash @@ -2045,6 +2057,8 @@ strsep strspn strstr + submit_bio + submit_bio_wait subsys_system_register suspend_set_ops __sw_hweight16 @@ -2576,3 +2590,13 @@ xhci_resume xhci_run xhci_suspend + zs_compact + zs_create_pool + zs_destroy_pool + zs_free + zs_get_total_pages + zs_huge_class_size + zs_malloc + zs_map_object + zs_pool_stats + zs_unmap_object From 4fcc13c1ff378fbf84f3b57c3d670cf48cb4250f Mon Sep 17 00:00:00 2001 From: Suren Baghdasaryan Date: Fri, 29 Sep 2023 16:08:21 -0700 Subject: [PATCH 67/99] ANDROID: mm: add missing check in the backport for handling faults under VMA lock While backporting, a check for vma locking inside do_wp_page() was missed. Add it. Fixes: 3ebafb7b468b ("BACKPORT: FROMGIT: mm: handle faults that merely update the accessed bit under the VMA lock") Bug: 293665307 Change-Id: Ibd7f21ae8fec7b8edc6e3d88954714b5fad41516 Signed-off-by: Suren Baghdasaryan --- mm/memory.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mm/memory.c b/mm/memory.c index 0f780a8dfaef..78d5312c0078 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3500,6 +3500,12 @@ reuse: return wp_page_shared(vmf); } copy: + if ((vmf->flags & FAULT_FLAG_VMA_LOCK) && !vma->anon_vma) { + pte_unmap_unlock(vmf->pte, vmf->ptl); + vma_end_read(vmf->vma); + return VM_FAULT_RETRY; + } + /* * Ok, we need to copy. Oh, well.. */ From 368b752997c762727adf7b15720b5c4ffadcb155 Mon Sep 17 00:00:00 2001 From: Prashanth K Date: Mon, 11 Sep 2023 14:34:15 +0530 Subject: [PATCH 68/99] FROMGIT: usb: typec: ucsi: Clear EVENT_PENDING bit if ucsi_send_command fails Currently if ucsi_send_command() fails, then we bail out without clearing EVENT_PENDING flag. So when the next connector change event comes, ucsi_connector_change() won't queue the con->work, because of which none of the new events will be processed. Fix this by clearing EVENT_PENDING flag if ucsi_send_command() fails. Cc: stable@vger.kernel.org # 5.16 Fixes: 512df95b9432 ("usb: typec: ucsi: Better fix for missing unplug events issue") Signed-off-by: Prashanth K Acked-by: Heikki Krogerus Link: https://lore.kernel.org/r/1694423055-8440-1-git-send-email-quic_prashk@quicinc.com Signed-off-by: Greg Kroah-Hartman Bug: 304466904 (cherry picked from commit a00e197daec52bcd955e118f5f57d706da5bfe50 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/ usb-linus) Signed-off-by: Prashanth K Change-Id: I4d3eef684a04e73b060cf242c5943c4ac7e05b2e --- drivers/usb/typec/ucsi/ucsi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index 47a2c73df342..dc2dea3768fb 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -785,6 +785,7 @@ static void ucsi_handle_connector_change(struct work_struct *work) if (ret < 0) { dev_err(ucsi->dev, "%s: GET_CONNECTOR_STATUS failed (%d)\n", __func__, ret); + clear_bit(EVENT_PENDING, &con->ucsi->flags); goto out_unlock; } From 2807a43b695459a848a5048df37cf0c3b6f0838f Mon Sep 17 00:00:00 2001 From: David Chiang Date: Wed, 11 Oct 2023 05:49:41 +0000 Subject: [PATCH 69/99] ANDROID: Update the ABI symbol list Adding the following symbols: - kmemdup_nul Bug: 304675894 Change-Id: Ib6ab20a2c034d3e8dc9aff7384876d10468cd15b Signed-off-by: David Chiang --- android/abi_gki_aarch64_pixel | 1 + 1 file changed, 1 insertion(+) diff --git a/android/abi_gki_aarch64_pixel b/android/abi_gki_aarch64_pixel index 639a0559d19e..d1af571b8452 100644 --- a/android/abi_gki_aarch64_pixel +++ b/android/abi_gki_aarch64_pixel @@ -1183,6 +1183,7 @@ kmem_cache_destroy kmem_cache_free kmemdup + kmemdup_nul kobject_add kobject_create_and_add kobject_del From 7d088a3e4fab73d48c2a1315e54b25bc4a8f89b6 Mon Sep 17 00:00:00 2001 From: Quang Le Date: Fri, 29 Sep 2023 00:44:13 +0700 Subject: [PATCH 70/99] UPSTREAM: fs/smb/client: Reset password pointer to NULL commit e6e43b8aa7cd3c3af686caf0c2e11819a886d705 upstream. Forget to reset ctx->password to NULL will lead to bug like double free Bug: 303146572 Cc: stable@vger.kernel.org Cc: Willy Tarreau Reviewed-by: Namjae Jeon Signed-off-by: Quang Le Signed-off-by: Steve French Signed-off-by: Greg Kroah-Hartman (cherry picked from commit f555a508087ab8210b4658120ac6413d6fe2b4c7) Signed-off-by: Lee Jones Change-Id: Iec1eb857124e3b6ffa6dbbeb5f796087a6194057 --- fs/cifs/fs_context.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/cifs/fs_context.c b/fs/cifs/fs_context.c index 89e810b27a4b..6bd713c6c869 100644 --- a/fs/cifs/fs_context.c +++ b/fs/cifs/fs_context.c @@ -1479,6 +1479,7 @@ static int smb3_fs_context_parse_param(struct fs_context *fc, cifs_parse_mount_err: kfree_sensitive(ctx->password); + ctx->password = NULL; return -EINVAL; } From 83ebd502359f37e9ac3c8356f078749b20dc4376 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 7 Sep 2023 08:22:33 +0200 Subject: [PATCH 71/99] UPSTREAM: netfilter: nf_tables: disallow rule removal from chain binding [ Upstream commit f15f29fd4779be8a418b66e9d52979bb6d6c2325 ] Chain binding only requires the rule addition/insertion command within the same transaction. Removal of rules from chain bindings within the same transaction makes no sense, userspace does not utilize this feature. Replace nft_chain_is_bound() check to nft_chain_binding() in rule deletion commands. Replace command implies a rule deletion, reject this command too. Rule flush command can also safely rely on this nft_chain_binding() check because unbound chains are not allowed since 62e1e94b246e ("netfilter: nf_tables: reject unbound chain set before commit phase"). Bug: 302085977 Fixes: d0e2c7de92c7 ("netfilter: nf_tables: add NFT_CHAIN_BINDING") Reported-by: Kevin Rich Signed-off-by: Pablo Neira Ayuso Signed-off-by: Sasha Levin (cherry picked from commit 9af8bb2afea3705b58fe930f97a39322f46e5b8b) Signed-off-by: Lee Jones Change-Id: I8b05dc37062824db4c2901000fdf701b38605d32 --- net/netfilter/nf_tables_api.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index d7ac35073c01..b3339741c32f 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -1322,7 +1322,7 @@ static int nft_flush_table(struct nft_ctx *ctx) if (!nft_is_active_next(ctx->net, chain)) continue; - if (nft_chain_is_bound(chain)) + if (nft_chain_binding(chain)) continue; ctx->chain = chain; @@ -1367,7 +1367,7 @@ static int nft_flush_table(struct nft_ctx *ctx) if (!nft_is_active_next(ctx->net, chain)) continue; - if (nft_chain_is_bound(chain)) + if (nft_chain_binding(chain)) continue; ctx->chain = chain; @@ -2684,6 +2684,9 @@ static int nf_tables_delchain(struct sk_buff *skb, const struct nfnl_info *info, return PTR_ERR(chain); } + if (nft_chain_binding(chain)) + return -EOPNOTSUPP; + if (info->nlh->nlmsg_flags & NLM_F_NONREC && chain->use > 0) return -EBUSY; @@ -3666,6 +3669,11 @@ static int nf_tables_newrule(struct sk_buff *skb, const struct nfnl_info *info, } if (info->nlh->nlmsg_flags & NLM_F_REPLACE) { + if (nft_chain_binding(chain)) { + err = -EOPNOTSUPP; + goto err_destroy_flow_rule; + } + err = nft_delrule(&ctx, old_rule); if (err < 0) goto err_destroy_flow_rule; @@ -3771,7 +3779,7 @@ static int nf_tables_delrule(struct sk_buff *skb, const struct nfnl_info *info, NL_SET_BAD_ATTR(extack, nla[NFTA_RULE_CHAIN]); return PTR_ERR(chain); } - if (nft_chain_is_bound(chain)) + if (nft_chain_binding(chain)) return -EOPNOTSUPP; } @@ -3801,7 +3809,7 @@ static int nf_tables_delrule(struct sk_buff *skb, const struct nfnl_info *info, list_for_each_entry(chain, &table->chains, list) { if (!nft_is_active_next(net, chain)) continue; - if (nft_chain_is_bound(chain)) + if (nft_chain_binding(chain)) continue; ctx.chain = chain; From 6334225e9b6fe0b8ffcbfb823ff6958fb8a8cfa5 Mon Sep 17 00:00:00 2001 From: Fuad Tabba Date: Tue, 10 Oct 2023 15:59:18 +0100 Subject: [PATCH 72/99] ANDROID: KVM: arm64: Allocate host fp/simd state later in initialization Allocate and map hyp memory to maintain the host's fp/simd state, which is also used for SVE and SME, later in the initialization process. The amount of memory needed to track the host's state varies depending on the number of cpus in the system, whether there's SVE support, as well as the SVE vector size. Much of the state needed to extract this information isn't initialized yet at kvm_hyp_reserve(). Fixes: 6dc9af85f767 ("ANDROID: KVM: arm64: Allocate host fp state at pkvm init rather than per cpu") Bug: 303684934 Signed-off-by: Fuad Tabba Change-Id: I744be685a107ddd92c6975bafb0149aebad7bb55 --- arch/arm64/include/asm/kvm_asm.h | 2 ++ arch/arm64/include/asm/kvm_pkvm.h | 6 ---- arch/arm64/kvm/arm.c | 39 ++++++++++++++++++++++++++ arch/arm64/kvm/hyp/include/nvhe/pkvm.h | 3 -- arch/arm64/kvm/hyp/nvhe/pkvm.c | 16 ++--------- arch/arm64/kvm/hyp/nvhe/setup.c | 23 +++++++++++---- arch/arm64/kvm/pkvm.c | 1 - 7 files changed, 60 insertions(+), 30 deletions(-) diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h index 6755a0d9f3f0..60e834c85ea7 100644 --- a/arch/arm64/include/asm/kvm_asm.h +++ b/arch/arm64/include/asm/kvm_asm.h @@ -259,6 +259,8 @@ extern unsigned long kvm_nvhe_sym(kvm_arm_hyp_percpu_base)[]; DECLARE_KVM_NVHE_SYM(__per_cpu_start); DECLARE_KVM_NVHE_SYM(__per_cpu_end); +extern unsigned long kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[]; + DECLARE_KVM_HYP_SYM(__bp_harden_hyp_vecs); #define __bp_harden_hyp_vecs CHOOSE_HYP_SYM(__bp_harden_hyp_vecs) diff --git a/arch/arm64/include/asm/kvm_pkvm.h b/arch/arm64/include/asm/kvm_pkvm.h index a1459fbe2d46..3077c2514a6d 100644 --- a/arch/arm64/include/asm/kvm_pkvm.h +++ b/arch/arm64/include/asm/kvm_pkvm.h @@ -414,10 +414,4 @@ static inline size_t pkvm_host_fp_state_size(void) return sizeof(struct user_fpsimd_state); } -static inline unsigned long hyp_host_fp_pages(unsigned long nr_cpus) -{ - return PAGE_ALIGN(size_mul(nr_cpus, pkvm_host_fp_state_size())) >> - PAGE_SHIFT; -} - #endif /* __ARM64_KVM_PKVM_H__ */ diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index c1d58bf4f76e..de68a5c2cfa2 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -1642,6 +1642,11 @@ static unsigned long nvhe_percpu_order(void) return size ? get_order(size) : 0; } +static inline size_t pkvm_host_fp_state_order(void) +{ + return get_order(pkvm_host_fp_state_size()); +} + /* A lookup table holding the hypervisor VA for each vector slot */ static void *hyp_spectre_vector_selector[BP_HARDEN_EL2_SLOTS]; @@ -2006,6 +2011,8 @@ static void teardown_hyp_mode(void) for_each_possible_cpu(cpu) { free_page(per_cpu(kvm_arm_hyp_stack_page, cpu)); free_pages(kvm_nvhe_sym(kvm_arm_hyp_percpu_base)[cpu], nvhe_percpu_order()); + free_pages(kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[cpu], + pkvm_host_fp_state_order()); } } @@ -2092,6 +2099,34 @@ static int kvm_hyp_init_protection(u32 hyp_va_bits) return 0; } +static int init_pkvm_host_fp_state(void) +{ + int cpu; + + if (!is_protected_kvm_enabled()) + return 0; + + /* Allocate pages for protected-mode host-fp state. */ + for_each_possible_cpu(cpu) { + struct page *page; + unsigned long addr; + + page = alloc_pages(GFP_KERNEL, pkvm_host_fp_state_order()); + if (!page) + return -ENOMEM; + + addr = (unsigned long)page_address(page); + kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[cpu] = addr; + } + + /* + * Don't map the pages in hyp since these are only used in protected + * mode, which will (re)create its own mapping when initialized. + */ + + return 0; +} + /** * Inits Hyp-mode on all online CPUs */ @@ -2259,6 +2294,10 @@ static int init_hyp_mode(void) cpu_prepare_hyp_mode(cpu); } + err = init_pkvm_host_fp_state(); + if (err) + goto out_err; + kvm_hyp_init_symbols(); /* TODO: Real .h interface */ diff --git a/arch/arm64/kvm/hyp/include/nvhe/pkvm.h b/arch/arm64/kvm/hyp/include/nvhe/pkvm.h index b11fd818fff9..943cf7fc7124 100644 --- a/arch/arm64/kvm/hyp/include/nvhe/pkvm.h +++ b/arch/arm64/kvm/hyp/include/nvhe/pkvm.h @@ -82,8 +82,6 @@ struct pkvm_hyp_vm { struct pkvm_hyp_vcpu *vcpus[]; }; -extern void *host_fp_state; - static inline struct pkvm_hyp_vm * pkvm_hyp_vcpu_to_hyp_vm(struct pkvm_hyp_vcpu *hyp_vcpu) { @@ -107,7 +105,6 @@ extern phys_addr_t pvmfw_base; extern phys_addr_t pvmfw_size; void pkvm_hyp_vm_table_init(void *tbl); -void pkvm_hyp_host_fp_init(void *host_fp); int __pkvm_init_vm(struct kvm *host_kvm, unsigned long vm_hva, unsigned long pgd_hva, unsigned long last_ran_hva); diff --git a/arch/arm64/kvm/hyp/nvhe/pkvm.c b/arch/arm64/kvm/hyp/nvhe/pkvm.c index bb25de654934..8a74afc5da5f 100644 --- a/arch/arm64/kvm/hyp/nvhe/pkvm.c +++ b/arch/arm64/kvm/hyp/nvhe/pkvm.c @@ -41,17 +41,11 @@ static DEFINE_PER_CPU(struct pkvm_hyp_vcpu *, loaded_hyp_vcpu); * * Only valid when (fp_state == FP_STATE_GUEST_OWNED) in the hyp vCPU structure. */ -void *host_fp_state; +unsigned long __ro_after_init kvm_arm_hyp_host_fp_state[NR_CPUS]; static void *__get_host_fpsimd_bytes(void) { - void *state = host_fp_state + - size_mul(pkvm_host_fp_state_size(), hyp_smp_processor_id()); - - if (state < host_fp_state) - return NULL; - - return state; + return kern_hyp_va((void *) kvm_arm_hyp_host_fp_state[hyp_smp_processor_id()]); } struct user_fpsimd_state *get_host_fpsimd_state(struct kvm_vcpu *vcpu) @@ -295,12 +289,6 @@ void pkvm_hyp_vm_table_init(void *tbl) vm_table = tbl; } -void pkvm_hyp_host_fp_init(void *host_fp) -{ - WARN_ON(host_fp_state); - host_fp_state = host_fp; -} - /* * Return the hyp vm structure corresponding to the handle. */ diff --git a/arch/arm64/kvm/hyp/nvhe/setup.c b/arch/arm64/kvm/hyp/nvhe/setup.c index c0f502c5edb2..ac3a0dc79083 100644 --- a/arch/arm64/kvm/hyp/nvhe/setup.c +++ b/arch/arm64/kvm/hyp/nvhe/setup.c @@ -34,7 +34,6 @@ static void *vm_table_base; static void *hyp_pgt_base; static void *host_s2_pgt_base; static void *ffa_proxy_pages; -static void *hyp_host_fp_base; static struct kvm_pgtable_mm_ops pkvm_pgtable_mm_ops; static struct hyp_pool hpool; @@ -69,10 +68,21 @@ static int divide_memory_pool(void *virt, unsigned long size) if (!ffa_proxy_pages) return -ENOMEM; - nr_pages = hyp_host_fp_pages(hyp_nr_cpus); - hyp_host_fp_base = hyp_early_alloc_contig(nr_pages); - if (!hyp_host_fp_base) - return -ENOMEM; + return 0; +} + +static int create_hyp_host_fp_mappings(void) +{ + void *start, *end; + int ret, i; + + for (i = 0; i < hyp_nr_cpus; i++) { + start = (void *)kern_hyp_va(kvm_arm_hyp_host_fp_state[i]); + end = start + PAGE_ALIGN(pkvm_host_fp_state_size()); + ret = pkvm_create_mappings(start, end, PAGE_HYP); + if (ret) + return ret; + } return 0; } @@ -164,6 +174,8 @@ static int recreate_hyp_mappings(phys_addr_t phys, unsigned long size, params->stack_hyp_va = hyp_addr + (2 * PAGE_SIZE); } + create_hyp_host_fp_mappings(); + /* * Map the host sections RO in the hypervisor, but transfer the * ownership from the host to the hypervisor itself to make sure they @@ -405,7 +417,6 @@ void __noreturn __pkvm_init_finalise(void) goto out; pkvm_hyp_vm_table_init(vm_table_base); - pkvm_hyp_host_fp_init(hyp_host_fp_base); out: /* * We tail-called to here from handle___pkvm_init() and will not return, diff --git a/arch/arm64/kvm/pkvm.c b/arch/arm64/kvm/pkvm.c index 789753790a28..1cff760b8f23 100644 --- a/arch/arm64/kvm/pkvm.c +++ b/arch/arm64/kvm/pkvm.c @@ -173,7 +173,6 @@ void __init kvm_hyp_reserve(void) hyp_mem_pages += hyp_vm_table_pages(); hyp_mem_pages += hyp_vmemmap_pages(STRUCT_HYP_PAGE_SIZE); hyp_mem_pages += hyp_ffa_proxy_pages(); - hyp_mem_pages += hyp_host_fp_pages(num_possible_cpus()); /* * Try to allocate a PMD-aligned region to reduce TLB pressure once From f4812c6864dce4c269f78ce3931fbee99515cbc8 Mon Sep 17 00:00:00 2001 From: Fuad Tabba Date: Wed, 11 Oct 2023 13:55:44 +0100 Subject: [PATCH 73/99] ANDROID: KVM: arm64: Store hyp address in the host fp state array Store the hyp address in kvm_arm_hyp_host_fp_state[], to avoid having to calculate it with kern_hyp_va() on every access. Bug: 303684934 Signed-off-by: Fuad Tabba Change-Id: I52902c297f9b957a8d035be942e3cbeb32fed0a2 --- arch/arm64/kvm/arm.c | 21 +++++++++++++++++++++ arch/arm64/kvm/hyp/nvhe/pkvm.c | 6 +++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index de68a5c2cfa2..c9428ce23d80 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -2127,6 +2127,20 @@ static int init_pkvm_host_fp_state(void) return 0; } +/* + * Finalizes the initialization of hyp mode, once everything else is initialized + * and the initialziation process cannot fail. + */ +static void finalize_init_hyp_mode(void) +{ + int cpu; + + for_each_possible_cpu(cpu) { + kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[cpu] = + kern_hyp_va(kvm_nvhe_sym(kvm_arm_hyp_host_fp_state)[cpu]); + } +} + /** * Inits Hyp-mode on all online CPUs */ @@ -2456,6 +2470,13 @@ int kvm_arch_init(void *opaque) kvm_info("Hyp mode initialized successfully\n"); } + /* + * This should be called after initialization is done and failure isn't + * possible anymore. + */ + if (!in_hyp_mode) + finalize_init_hyp_mode(); + return 0; out_hyp: diff --git a/arch/arm64/kvm/hyp/nvhe/pkvm.c b/arch/arm64/kvm/hyp/nvhe/pkvm.c index 8a74afc5da5f..b3acb60a2d6c 100644 --- a/arch/arm64/kvm/hyp/nvhe/pkvm.c +++ b/arch/arm64/kvm/hyp/nvhe/pkvm.c @@ -45,7 +45,11 @@ unsigned long __ro_after_init kvm_arm_hyp_host_fp_state[NR_CPUS]; static void *__get_host_fpsimd_bytes(void) { - return kern_hyp_va((void *) kvm_arm_hyp_host_fp_state[hyp_smp_processor_id()]); + /* + * The addresses in this array have been converted to hyp addresses + * in finalize_init_hyp_mode(). + */ + return (void *)kvm_arm_hyp_host_fp_state[hyp_smp_processor_id()]; } struct user_fpsimd_state *get_host_fpsimd_state(struct kvm_vcpu *vcpu) From 8b1bd879171b40e401b789b11288ec8571eabb73 Mon Sep 17 00:00:00 2001 From: Mostafa Saleh Date: Tue, 10 Oct 2023 08:25:06 +0000 Subject: [PATCH 74/99] ANDROID: KVM: arm64: Add missing hyp events for forwarded SMCs __kvm_hyp_host_forward_smc() forwards SMCs to EL3, which means we exit and enter the hypervisor without tracing those. Add missing hyp events. Bug: 304445720 Change-Id: I0b66c37f1521702764b12c038324c3fec3e499a6 Signed-off-by: Mostafa Saleh --- arch/arm64/kvm/hyp/nvhe/hyp-main.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c index 48e20ad5ff38..995c3a840010 100644 --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c @@ -1383,11 +1383,15 @@ static void handle_host_smc(struct kvm_cpu_context *host_ctxt) handled = kvm_host_ffa_handler(host_ctxt); if (!handled && smp_load_acquire(&default_host_smc_handler)) handled = default_host_smc_handler(host_ctxt); - if (!handled) - __kvm_hyp_host_forward_smc(host_ctxt); trace_host_smc(func_id, !handled); + if (!handled) { + trace_hyp_exit(); + __kvm_hyp_host_forward_smc(host_ctxt); + trace_hyp_enter(); + } + /* SMC was trapped, move ELR past the current PC. */ kvm_skip_host_instr(); } From acb072863888c916b539271c9a2c2e91fbfcceb6 Mon Sep 17 00:00:00 2001 From: Ray Chi Date: Mon, 7 Nov 2022 15:27:54 +0800 Subject: [PATCH 75/99] UPSTREAM: usb: core: stop USB enumeration if too many retries When a broken USB accessory connects to a USB host, usbcore might keep doing enumeration retries. If the host has a watchdog mechanism, the kernel panic will happen on the host. This patch provides an attribute early_stop to limit the numbers of retries for each port of a hub. If a port was marked with early_stop attribute, unsuccessful connection attempts will fail quickly. In addition, if an early_stop port has failed to initialize, it will ignore all future connection events until early_stop attribute is clear. Signed-off-by: Ray Chi Reviewed-by: Alan Stern Link: https://lore.kernel.org/r/20221107072754.3336357-1-raychi@google.com Signed-off-by: Greg Kroah-Hartman Bug: 282876796 Change-Id: I48eff1dbbc341ef893c8abc20953b7e9a62244da (cherry picked from commit 430d57f53eb1cdbf9ba9bbd397317912b3cd2de5) Signed-off-by: Ray Chi (cherry picked from commit 278999b347af30f37e67314d7a198478b89be2dc) --- Documentation/ABI/testing/sysfs-bus-usb | 11 +++++ drivers/usb/core/hub.c | 60 +++++++++++++++++++++++++ drivers/usb/core/hub.h | 4 ++ drivers/usb/core/port.c | 27 +++++++++++ 4 files changed, 102 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb index d71ce6cc1c7c..b93c5ad0cccd 100644 --- a/Documentation/ABI/testing/sysfs-bus-usb +++ b/Documentation/ABI/testing/sysfs-bus-usb @@ -264,6 +264,17 @@ Description: attached to the port will not be detected, initialized, or enumerated. +What: /sys/bus/usb/devices/...//port/early_stop +Date: Sep 2022 +Contact: Ray Chi +Description: + Some USB hosts have some watchdog mechanisms so that the device + may enter ramdump if it takes a long time during port initialization. + This attribute allows each port just has two attempts so that the + port initialization will be failed quickly. In addition, if a port + which is marked with early_stop has failed to initialize, it will ignore + all future connections until this attribute is clear. + What: /sys/bus/usb/devices/...//port/state Date: June 2023 Contact: Roy Luo diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 58e7d1e4430f..a739403a9e45 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -3098,6 +3098,48 @@ done: return status; } +/* + * hub_port_stop_enumerate - stop USB enumeration or ignore port events + * @hub: target hub + * @port1: port num of the port + * @retries: port retries number of hub_port_init() + * + * Return: + * true: ignore port actions/events or give up connection attempts. + * false: keep original behavior. + * + * This function will be based on retries to check whether the port which is + * marked with early_stop attribute would stop enumeration or ignore events. + * + * Note: + * This function didn't change anything if early_stop is not set, and it will + * prevent all connection attempts when early_stop is set and the attempts of + * the port are more than 1. + */ +static bool hub_port_stop_enumerate(struct usb_hub *hub, int port1, int retries) +{ + struct usb_port *port_dev = hub->ports[port1 - 1]; + + if (port_dev->early_stop) { + if (port_dev->ignore_event) + return true; + + /* + * We want unsuccessful attempts to fail quickly. + * Since some devices may need one failure during + * port initialization, we allow two tries but no + * more. + */ + if (retries < 2) + return false; + + port_dev->ignore_event = 1; + } else + port_dev->ignore_event = 0; + + return port_dev->ignore_event; +} + /* Check if a port is power on */ int usb_port_is_power_on(struct usb_hub *hub, unsigned int portstatus) { @@ -4813,6 +4855,11 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1, do_new_scheme = use_new_scheme(udev, retry_counter, port_dev); for (retries = 0; retries < GET_DESCRIPTOR_TRIES; (++retries, msleep(100))) { + if (hub_port_stop_enumerate(hub, port1, retries)) { + retval = -ENODEV; + break; + } + if (do_new_scheme) { struct usb_device_descriptor *buf; int r = 0; @@ -5263,6 +5310,11 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, status = 0; for (i = 0; i < PORT_INIT_TRIES; i++) { + if (hub_port_stop_enumerate(hub, port1, i)) { + status = -ENODEV; + break; + } + usb_lock_port(port_dev); mutex_lock(hcd->address0_mutex); retry_locked = true; @@ -5631,6 +5683,10 @@ static void port_event(struct usb_hub *hub, int port1) if (!pm_runtime_active(&port_dev->dev)) return; + /* skip port actions if ignore_event and early_stop are true */ + if (port_dev->ignore_event && port_dev->early_stop) + return; + if (hub_handle_remote_wakeup(hub, port1, portstatus, portchange)) connect_change = 1; @@ -5954,6 +6010,10 @@ static int usb_reset_and_verify_device(struct usb_device *udev) mutex_lock(hcd->address0_mutex); for (i = 0; i < PORT_INIT_TRIES; ++i) { + if (hub_port_stop_enumerate(parent_hub, port1, i)) { + ret = -ENODEV; + break; + } /* ep0 maxpacket size may change; let the HCD know about it. * Other endpoints will be handled by re-enumeration. */ diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h index f244cc475e3e..37897afd1b64 100644 --- a/drivers/usb/core/hub.h +++ b/drivers/usb/core/hub.h @@ -92,6 +92,8 @@ struct usb_hub { * @is_superspeed cache super-speed status * @usb3_lpm_u1_permit: whether USB3 U1 LPM is permitted. * @usb3_lpm_u2_permit: whether USB3 U2 LPM is permitted. + * @early_stop: whether port initialization will be stopped earlier. + * @ignore_event: whether events of the port are ignored. */ struct usb_port { struct usb_device *child; @@ -107,6 +109,8 @@ struct usb_port { u32 over_current_count; u8 portnum; u32 quirks; + unsigned int early_stop:1; + unsigned int ignore_event:1; unsigned int is_superspeed:1; unsigned int usb3_lpm_u1_permit:1; unsigned int usb3_lpm_u2_permit:1; diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c index e458ed17c7a1..b2cad06885b5 100644 --- a/drivers/usb/core/port.c +++ b/drivers/usb/core/port.c @@ -17,6 +17,32 @@ static int usb_port_block_power_off; static const struct attribute_group *port_dev_group[]; +static ssize_t early_stop_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct usb_port *port_dev = to_usb_port(dev); + + return sysfs_emit(buf, "%s\n", port_dev->early_stop ? "yes" : "no"); +} + +static ssize_t early_stop_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + struct usb_port *port_dev = to_usb_port(dev); + bool value; + + if (kstrtobool(buf, &value)) + return -EINVAL; + + if (value) + port_dev->early_stop = 1; + else + port_dev->early_stop = 0; + + return count; +} +static DEVICE_ATTR_RW(early_stop); + static ssize_t disable_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -247,6 +273,7 @@ static struct attribute *port_dev_attrs[] = { &dev_attr_quirks.attr, &dev_attr_over_current_count.attr, &dev_attr_disable.attr, + &dev_attr_early_stop.attr, NULL, }; From 4181951d218833ee49222ebf357f5210d28474e7 Mon Sep 17 00:00:00 2001 From: Jamal Hadi Salim Date: Tue, 14 Feb 2023 08:49:15 -0500 Subject: [PATCH 76/99] UPSTREAM: net/sched: Retire rsvp classifier commit 265b4da82dbf5df04bee5a5d46b7474b1aaf326a upstream. The rsvp classifier has served us well for about a quarter of a century but has has not been getting much maintenance attention due to lack of known users. Bug: 304913975 Signed-off-by: Jamal Hadi Salim Acked-by: Jiri Pirko Signed-off-by: Paolo Abeni Signed-off-by: Kyle Zeng Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 08569c92f7f339de21b7a68d43d6795fc0aa24f2) Signed-off-by: Lee Jones Change-Id: I4716954c5e8d5414a580eb34c699908028aa754b --- net/sched/Kconfig | 28 -- net/sched/Makefile | 2 - net/sched/cls_rsvp.c | 24 -- net/sched/cls_rsvp.h | 764 ------------------------------------------ net/sched/cls_rsvp6.c | 24 -- 5 files changed, 842 deletions(-) delete mode 100644 net/sched/cls_rsvp.c delete mode 100644 net/sched/cls_rsvp.h delete mode 100644 net/sched/cls_rsvp6.c diff --git a/net/sched/Kconfig b/net/sched/Kconfig index bcdd6e925343..24cf0bf7c80e 100644 --- a/net/sched/Kconfig +++ b/net/sched/Kconfig @@ -548,34 +548,6 @@ config CLS_U32_MARK help Say Y here to be able to use netfilter marks as u32 key. -config NET_CLS_RSVP - tristate "IPv4 Resource Reservation Protocol (RSVP)" - select NET_CLS - help - The Resource Reservation Protocol (RSVP) permits end systems to - request a minimum and maximum data flow rate for a connection; this - is important for real time data such as streaming sound or video. - - Say Y here if you want to be able to classify outgoing packets based - on their RSVP requests. - - To compile this code as a module, choose M here: the - module will be called cls_rsvp. - -config NET_CLS_RSVP6 - tristate "IPv6 Resource Reservation Protocol (RSVP6)" - select NET_CLS - help - The Resource Reservation Protocol (RSVP) permits end systems to - request a minimum and maximum data flow rate for a connection; this - is important for real time data such as streaming sound or video. - - Say Y here if you want to be able to classify outgoing packets based - on their RSVP requests and you are using the IPv6 protocol. - - To compile this code as a module, choose M here: the - module will be called cls_rsvp6. - config NET_CLS_FLOW tristate "Flow classifier" select NET_CLS diff --git a/net/sched/Makefile b/net/sched/Makefile index b7dbac5c519f..8a33a35fc50d 100644 --- a/net/sched/Makefile +++ b/net/sched/Makefile @@ -69,8 +69,6 @@ obj-$(CONFIG_NET_SCH_TAPRIO) += sch_taprio.o obj-$(CONFIG_NET_CLS_U32) += cls_u32.o obj-$(CONFIG_NET_CLS_ROUTE4) += cls_route.o obj-$(CONFIG_NET_CLS_FW) += cls_fw.o -obj-$(CONFIG_NET_CLS_RSVP) += cls_rsvp.o -obj-$(CONFIG_NET_CLS_RSVP6) += cls_rsvp6.o obj-$(CONFIG_NET_CLS_BASIC) += cls_basic.o obj-$(CONFIG_NET_CLS_FLOW) += cls_flow.o obj-$(CONFIG_NET_CLS_CGROUP) += cls_cgroup.o diff --git a/net/sched/cls_rsvp.c b/net/sched/cls_rsvp.c deleted file mode 100644 index de1c1d4da597..000000000000 --- a/net/sched/cls_rsvp.c +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * net/sched/cls_rsvp.c Special RSVP packet classifier for IPv4. - * - * Authors: Alexey Kuznetsov, - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define RSVP_DST_LEN 1 -#define RSVP_ID "rsvp" -#define RSVP_OPS cls_rsvp_ops - -#include "cls_rsvp.h" -MODULE_LICENSE("GPL"); diff --git a/net/sched/cls_rsvp.h b/net/sched/cls_rsvp.h deleted file mode 100644 index b00a7dbd0587..000000000000 --- a/net/sched/cls_rsvp.h +++ /dev/null @@ -1,764 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ -/* - * net/sched/cls_rsvp.h Template file for RSVPv[46] classifiers. - * - * Authors: Alexey Kuznetsov, - */ - -/* - Comparing to general packet classification problem, - RSVP needs only several relatively simple rules: - - * (dst, protocol) are always specified, - so that we are able to hash them. - * src may be exact, or may be wildcard, so that - we can keep a hash table plus one wildcard entry. - * source port (or flow label) is important only if src is given. - - IMPLEMENTATION. - - We use a two level hash table: The top level is keyed by - destination address and protocol ID, every bucket contains a list - of "rsvp sessions", identified by destination address, protocol and - DPI(="Destination Port ID"): triple (key, mask, offset). - - Every bucket has a smaller hash table keyed by source address - (cf. RSVP flowspec) and one wildcard entry for wildcard reservations. - Every bucket is again a list of "RSVP flows", selected by - source address and SPI(="Source Port ID" here rather than - "security parameter index"): triple (key, mask, offset). - - - NOTE 1. All the packets with IPv6 extension headers (but AH and ESP) - and all fragmented packets go to the best-effort traffic class. - - - NOTE 2. Two "port id"'s seems to be redundant, rfc2207 requires - only one "Generalized Port Identifier". So that for classic - ah, esp (and udp,tcp) both *pi should coincide or one of them - should be wildcard. - - At first sight, this redundancy is just a waste of CPU - resources. But DPI and SPI add the possibility to assign different - priorities to GPIs. Look also at note 4 about tunnels below. - - - NOTE 3. One complication is the case of tunneled packets. - We implement it as following: if the first lookup - matches a special session with "tunnelhdr" value not zero, - flowid doesn't contain the true flow ID, but the tunnel ID (1...255). - In this case, we pull tunnelhdr bytes and restart lookup - with tunnel ID added to the list of keys. Simple and stupid 8)8) - It's enough for PIMREG and IPIP. - - - NOTE 4. Two GPIs make it possible to parse even GRE packets. - F.e. DPI can select ETH_P_IP (and necessary flags to make - tunnelhdr correct) in GRE protocol field and SPI matches - GRE key. Is it not nice? 8)8) - - - Well, as result, despite its simplicity, we get a pretty - powerful classification engine. */ - - -struct rsvp_head { - u32 tmap[256/32]; - u32 hgenerator; - u8 tgenerator; - struct rsvp_session __rcu *ht[256]; - struct rcu_head rcu; -}; - -struct rsvp_session { - struct rsvp_session __rcu *next; - __be32 dst[RSVP_DST_LEN]; - struct tc_rsvp_gpi dpi; - u8 protocol; - u8 tunnelid; - /* 16 (src,sport) hash slots, and one wildcard source slot */ - struct rsvp_filter __rcu *ht[16 + 1]; - struct rcu_head rcu; -}; - - -struct rsvp_filter { - struct rsvp_filter __rcu *next; - __be32 src[RSVP_DST_LEN]; - struct tc_rsvp_gpi spi; - u8 tunnelhdr; - - struct tcf_result res; - struct tcf_exts exts; - - u32 handle; - struct rsvp_session *sess; - struct rcu_work rwork; -}; - -static inline unsigned int hash_dst(__be32 *dst, u8 protocol, u8 tunnelid) -{ - unsigned int h = (__force __u32)dst[RSVP_DST_LEN - 1]; - - h ^= h>>16; - h ^= h>>8; - return (h ^ protocol ^ tunnelid) & 0xFF; -} - -static inline unsigned int hash_src(__be32 *src) -{ - unsigned int h = (__force __u32)src[RSVP_DST_LEN-1]; - - h ^= h>>16; - h ^= h>>8; - h ^= h>>4; - return h & 0xF; -} - -#define RSVP_APPLY_RESULT() \ -{ \ - int r = tcf_exts_exec(skb, &f->exts, res); \ - if (r < 0) \ - continue; \ - else if (r > 0) \ - return r; \ -} - -static int rsvp_classify(struct sk_buff *skb, const struct tcf_proto *tp, - struct tcf_result *res) -{ - struct rsvp_head *head = rcu_dereference_bh(tp->root); - struct rsvp_session *s; - struct rsvp_filter *f; - unsigned int h1, h2; - __be32 *dst, *src; - u8 protocol; - u8 tunnelid = 0; - u8 *xprt; -#if RSVP_DST_LEN == 4 - struct ipv6hdr *nhptr; - - if (!pskb_network_may_pull(skb, sizeof(*nhptr))) - return -1; - nhptr = ipv6_hdr(skb); -#else - struct iphdr *nhptr; - - if (!pskb_network_may_pull(skb, sizeof(*nhptr))) - return -1; - nhptr = ip_hdr(skb); -#endif -restart: - -#if RSVP_DST_LEN == 4 - src = &nhptr->saddr.s6_addr32[0]; - dst = &nhptr->daddr.s6_addr32[0]; - protocol = nhptr->nexthdr; - xprt = ((u8 *)nhptr) + sizeof(struct ipv6hdr); -#else - src = &nhptr->saddr; - dst = &nhptr->daddr; - protocol = nhptr->protocol; - xprt = ((u8 *)nhptr) + (nhptr->ihl<<2); - if (ip_is_fragment(nhptr)) - return -1; -#endif - - h1 = hash_dst(dst, protocol, tunnelid); - h2 = hash_src(src); - - for (s = rcu_dereference_bh(head->ht[h1]); s; - s = rcu_dereference_bh(s->next)) { - if (dst[RSVP_DST_LEN-1] == s->dst[RSVP_DST_LEN - 1] && - protocol == s->protocol && - !(s->dpi.mask & - (*(u32 *)(xprt + s->dpi.offset) ^ s->dpi.key)) && -#if RSVP_DST_LEN == 4 - dst[0] == s->dst[0] && - dst[1] == s->dst[1] && - dst[2] == s->dst[2] && -#endif - tunnelid == s->tunnelid) { - - for (f = rcu_dereference_bh(s->ht[h2]); f; - f = rcu_dereference_bh(f->next)) { - if (src[RSVP_DST_LEN-1] == f->src[RSVP_DST_LEN - 1] && - !(f->spi.mask & (*(u32 *)(xprt + f->spi.offset) ^ f->spi.key)) -#if RSVP_DST_LEN == 4 - && - src[0] == f->src[0] && - src[1] == f->src[1] && - src[2] == f->src[2] -#endif - ) { - *res = f->res; - RSVP_APPLY_RESULT(); - -matched: - if (f->tunnelhdr == 0) - return 0; - - tunnelid = f->res.classid; - nhptr = (void *)(xprt + f->tunnelhdr - sizeof(*nhptr)); - goto restart; - } - } - - /* And wildcard bucket... */ - for (f = rcu_dereference_bh(s->ht[16]); f; - f = rcu_dereference_bh(f->next)) { - *res = f->res; - RSVP_APPLY_RESULT(); - goto matched; - } - return -1; - } - } - return -1; -} - -static void rsvp_replace(struct tcf_proto *tp, struct rsvp_filter *n, u32 h) -{ - struct rsvp_head *head = rtnl_dereference(tp->root); - struct rsvp_session *s; - struct rsvp_filter __rcu **ins; - struct rsvp_filter *pins; - unsigned int h1 = h & 0xFF; - unsigned int h2 = (h >> 8) & 0xFF; - - for (s = rtnl_dereference(head->ht[h1]); s; - s = rtnl_dereference(s->next)) { - for (ins = &s->ht[h2], pins = rtnl_dereference(*ins); ; - ins = &pins->next, pins = rtnl_dereference(*ins)) { - if (pins->handle == h) { - RCU_INIT_POINTER(n->next, pins->next); - rcu_assign_pointer(*ins, n); - return; - } - } - } - - /* Something went wrong if we are trying to replace a non-existent - * node. Mind as well halt instead of silently failing. - */ - BUG_ON(1); -} - -static void *rsvp_get(struct tcf_proto *tp, u32 handle) -{ - struct rsvp_head *head = rtnl_dereference(tp->root); - struct rsvp_session *s; - struct rsvp_filter *f; - unsigned int h1 = handle & 0xFF; - unsigned int h2 = (handle >> 8) & 0xFF; - - if (h2 > 16) - return NULL; - - for (s = rtnl_dereference(head->ht[h1]); s; - s = rtnl_dereference(s->next)) { - for (f = rtnl_dereference(s->ht[h2]); f; - f = rtnl_dereference(f->next)) { - if (f->handle == handle) - return f; - } - } - return NULL; -} - -static int rsvp_init(struct tcf_proto *tp) -{ - struct rsvp_head *data; - - data = kzalloc(sizeof(struct rsvp_head), GFP_KERNEL); - if (data) { - rcu_assign_pointer(tp->root, data); - return 0; - } - return -ENOBUFS; -} - -static void __rsvp_delete_filter(struct rsvp_filter *f) -{ - tcf_exts_destroy(&f->exts); - tcf_exts_put_net(&f->exts); - kfree(f); -} - -static void rsvp_delete_filter_work(struct work_struct *work) -{ - struct rsvp_filter *f = container_of(to_rcu_work(work), - struct rsvp_filter, - rwork); - rtnl_lock(); - __rsvp_delete_filter(f); - rtnl_unlock(); -} - -static void rsvp_delete_filter(struct tcf_proto *tp, struct rsvp_filter *f) -{ - tcf_unbind_filter(tp, &f->res); - /* all classifiers are required to call tcf_exts_destroy() after rcu - * grace period, since converted-to-rcu actions are relying on that - * in cleanup() callback - */ - if (tcf_exts_get_net(&f->exts)) - tcf_queue_work(&f->rwork, rsvp_delete_filter_work); - else - __rsvp_delete_filter(f); -} - -static void rsvp_destroy(struct tcf_proto *tp, bool rtnl_held, - struct netlink_ext_ack *extack) -{ - struct rsvp_head *data = rtnl_dereference(tp->root); - int h1, h2; - - if (data == NULL) - return; - - for (h1 = 0; h1 < 256; h1++) { - struct rsvp_session *s; - - while ((s = rtnl_dereference(data->ht[h1])) != NULL) { - RCU_INIT_POINTER(data->ht[h1], s->next); - - for (h2 = 0; h2 <= 16; h2++) { - struct rsvp_filter *f; - - while ((f = rtnl_dereference(s->ht[h2])) != NULL) { - rcu_assign_pointer(s->ht[h2], f->next); - rsvp_delete_filter(tp, f); - } - } - kfree_rcu(s, rcu); - } - } - kfree_rcu(data, rcu); -} - -static int rsvp_delete(struct tcf_proto *tp, void *arg, bool *last, - bool rtnl_held, struct netlink_ext_ack *extack) -{ - struct rsvp_head *head = rtnl_dereference(tp->root); - struct rsvp_filter *nfp, *f = arg; - struct rsvp_filter __rcu **fp; - unsigned int h = f->handle; - struct rsvp_session __rcu **sp; - struct rsvp_session *nsp, *s = f->sess; - int i, h1; - - fp = &s->ht[(h >> 8) & 0xFF]; - for (nfp = rtnl_dereference(*fp); nfp; - fp = &nfp->next, nfp = rtnl_dereference(*fp)) { - if (nfp == f) { - RCU_INIT_POINTER(*fp, f->next); - rsvp_delete_filter(tp, f); - - /* Strip tree */ - - for (i = 0; i <= 16; i++) - if (s->ht[i]) - goto out; - - /* OK, session has no flows */ - sp = &head->ht[h & 0xFF]; - for (nsp = rtnl_dereference(*sp); nsp; - sp = &nsp->next, nsp = rtnl_dereference(*sp)) { - if (nsp == s) { - RCU_INIT_POINTER(*sp, s->next); - kfree_rcu(s, rcu); - goto out; - } - } - - break; - } - } - -out: - *last = true; - for (h1 = 0; h1 < 256; h1++) { - if (rcu_access_pointer(head->ht[h1])) { - *last = false; - break; - } - } - - return 0; -} - -static unsigned int gen_handle(struct tcf_proto *tp, unsigned salt) -{ - struct rsvp_head *data = rtnl_dereference(tp->root); - int i = 0xFFFF; - - while (i-- > 0) { - u32 h; - - if ((data->hgenerator += 0x10000) == 0) - data->hgenerator = 0x10000; - h = data->hgenerator|salt; - if (!rsvp_get(tp, h)) - return h; - } - return 0; -} - -static int tunnel_bts(struct rsvp_head *data) -{ - int n = data->tgenerator >> 5; - u32 b = 1 << (data->tgenerator & 0x1F); - - if (data->tmap[n] & b) - return 0; - data->tmap[n] |= b; - return 1; -} - -static void tunnel_recycle(struct rsvp_head *data) -{ - struct rsvp_session __rcu **sht = data->ht; - u32 tmap[256/32]; - int h1, h2; - - memset(tmap, 0, sizeof(tmap)); - - for (h1 = 0; h1 < 256; h1++) { - struct rsvp_session *s; - for (s = rtnl_dereference(sht[h1]); s; - s = rtnl_dereference(s->next)) { - for (h2 = 0; h2 <= 16; h2++) { - struct rsvp_filter *f; - - for (f = rtnl_dereference(s->ht[h2]); f; - f = rtnl_dereference(f->next)) { - if (f->tunnelhdr == 0) - continue; - data->tgenerator = f->res.classid; - tunnel_bts(data); - } - } - } - } - - memcpy(data->tmap, tmap, sizeof(tmap)); -} - -static u32 gen_tunnel(struct rsvp_head *data) -{ - int i, k; - - for (k = 0; k < 2; k++) { - for (i = 255; i > 0; i--) { - if (++data->tgenerator == 0) - data->tgenerator = 1; - if (tunnel_bts(data)) - return data->tgenerator; - } - tunnel_recycle(data); - } - return 0; -} - -static const struct nla_policy rsvp_policy[TCA_RSVP_MAX + 1] = { - [TCA_RSVP_CLASSID] = { .type = NLA_U32 }, - [TCA_RSVP_DST] = { .len = RSVP_DST_LEN * sizeof(u32) }, - [TCA_RSVP_SRC] = { .len = RSVP_DST_LEN * sizeof(u32) }, - [TCA_RSVP_PINFO] = { .len = sizeof(struct tc_rsvp_pinfo) }, -}; - -static int rsvp_change(struct net *net, struct sk_buff *in_skb, - struct tcf_proto *tp, unsigned long base, - u32 handle, struct nlattr **tca, - void **arg, u32 flags, - struct netlink_ext_ack *extack) -{ - struct rsvp_head *data = rtnl_dereference(tp->root); - struct rsvp_filter *f, *nfp; - struct rsvp_filter __rcu **fp; - struct rsvp_session *nsp, *s; - struct rsvp_session __rcu **sp; - struct tc_rsvp_pinfo *pinfo = NULL; - struct nlattr *opt = tca[TCA_OPTIONS]; - struct nlattr *tb[TCA_RSVP_MAX + 1]; - struct tcf_exts e; - unsigned int h1, h2; - __be32 *dst; - int err; - - if (opt == NULL) - return handle ? -EINVAL : 0; - - err = nla_parse_nested_deprecated(tb, TCA_RSVP_MAX, opt, rsvp_policy, - NULL); - if (err < 0) - return err; - - err = tcf_exts_init(&e, net, TCA_RSVP_ACT, TCA_RSVP_POLICE); - if (err < 0) - return err; - err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &e, flags, - extack); - if (err < 0) - goto errout2; - - f = *arg; - if (f) { - /* Node exists: adjust only classid */ - struct rsvp_filter *n; - - if (f->handle != handle && handle) - goto errout2; - - n = kmemdup(f, sizeof(*f), GFP_KERNEL); - if (!n) { - err = -ENOMEM; - goto errout2; - } - - err = tcf_exts_init(&n->exts, net, TCA_RSVP_ACT, - TCA_RSVP_POLICE); - if (err < 0) { - kfree(n); - goto errout2; - } - - if (tb[TCA_RSVP_CLASSID]) { - n->res.classid = nla_get_u32(tb[TCA_RSVP_CLASSID]); - tcf_bind_filter(tp, &n->res, base); - } - - tcf_exts_change(&n->exts, &e); - rsvp_replace(tp, n, handle); - return 0; - } - - /* Now more serious part... */ - err = -EINVAL; - if (handle) - goto errout2; - if (tb[TCA_RSVP_DST] == NULL) - goto errout2; - - err = -ENOBUFS; - f = kzalloc(sizeof(struct rsvp_filter), GFP_KERNEL); - if (f == NULL) - goto errout2; - - err = tcf_exts_init(&f->exts, net, TCA_RSVP_ACT, TCA_RSVP_POLICE); - if (err < 0) - goto errout; - h2 = 16; - if (tb[TCA_RSVP_SRC]) { - memcpy(f->src, nla_data(tb[TCA_RSVP_SRC]), sizeof(f->src)); - h2 = hash_src(f->src); - } - if (tb[TCA_RSVP_PINFO]) { - pinfo = nla_data(tb[TCA_RSVP_PINFO]); - f->spi = pinfo->spi; - f->tunnelhdr = pinfo->tunnelhdr; - } - if (tb[TCA_RSVP_CLASSID]) - f->res.classid = nla_get_u32(tb[TCA_RSVP_CLASSID]); - - dst = nla_data(tb[TCA_RSVP_DST]); - h1 = hash_dst(dst, pinfo ? pinfo->protocol : 0, pinfo ? pinfo->tunnelid : 0); - - err = -ENOMEM; - if ((f->handle = gen_handle(tp, h1 | (h2<<8))) == 0) - goto errout; - - if (f->tunnelhdr) { - err = -EINVAL; - if (f->res.classid > 255) - goto errout; - - err = -ENOMEM; - if (f->res.classid == 0 && - (f->res.classid = gen_tunnel(data)) == 0) - goto errout; - } - - for (sp = &data->ht[h1]; - (s = rtnl_dereference(*sp)) != NULL; - sp = &s->next) { - if (dst[RSVP_DST_LEN-1] == s->dst[RSVP_DST_LEN-1] && - pinfo && pinfo->protocol == s->protocol && - memcmp(&pinfo->dpi, &s->dpi, sizeof(s->dpi)) == 0 && -#if RSVP_DST_LEN == 4 - dst[0] == s->dst[0] && - dst[1] == s->dst[1] && - dst[2] == s->dst[2] && -#endif - pinfo->tunnelid == s->tunnelid) { - -insert: - /* OK, we found appropriate session */ - - fp = &s->ht[h2]; - - f->sess = s; - if (f->tunnelhdr == 0) - tcf_bind_filter(tp, &f->res, base); - - tcf_exts_change(&f->exts, &e); - - fp = &s->ht[h2]; - for (nfp = rtnl_dereference(*fp); nfp; - fp = &nfp->next, nfp = rtnl_dereference(*fp)) { - __u32 mask = nfp->spi.mask & f->spi.mask; - - if (mask != f->spi.mask) - break; - } - RCU_INIT_POINTER(f->next, nfp); - rcu_assign_pointer(*fp, f); - - *arg = f; - return 0; - } - } - - /* No session found. Create new one. */ - - err = -ENOBUFS; - s = kzalloc(sizeof(struct rsvp_session), GFP_KERNEL); - if (s == NULL) - goto errout; - memcpy(s->dst, dst, sizeof(s->dst)); - - if (pinfo) { - s->dpi = pinfo->dpi; - s->protocol = pinfo->protocol; - s->tunnelid = pinfo->tunnelid; - } - sp = &data->ht[h1]; - for (nsp = rtnl_dereference(*sp); nsp; - sp = &nsp->next, nsp = rtnl_dereference(*sp)) { - if ((nsp->dpi.mask & s->dpi.mask) != s->dpi.mask) - break; - } - RCU_INIT_POINTER(s->next, nsp); - rcu_assign_pointer(*sp, s); - - goto insert; - -errout: - tcf_exts_destroy(&f->exts); - kfree(f); -errout2: - tcf_exts_destroy(&e); - return err; -} - -static void rsvp_walk(struct tcf_proto *tp, struct tcf_walker *arg, - bool rtnl_held) -{ - struct rsvp_head *head = rtnl_dereference(tp->root); - unsigned int h, h1; - - if (arg->stop) - return; - - for (h = 0; h < 256; h++) { - struct rsvp_session *s; - - for (s = rtnl_dereference(head->ht[h]); s; - s = rtnl_dereference(s->next)) { - for (h1 = 0; h1 <= 16; h1++) { - struct rsvp_filter *f; - - for (f = rtnl_dereference(s->ht[h1]); f; - f = rtnl_dereference(f->next)) { - if (!tc_cls_stats_dump(tp, arg, f)) - return; - } - } - } - } -} - -static int rsvp_dump(struct net *net, struct tcf_proto *tp, void *fh, - struct sk_buff *skb, struct tcmsg *t, bool rtnl_held) -{ - struct rsvp_filter *f = fh; - struct rsvp_session *s; - struct nlattr *nest; - struct tc_rsvp_pinfo pinfo; - - if (f == NULL) - return skb->len; - s = f->sess; - - t->tcm_handle = f->handle; - - nest = nla_nest_start_noflag(skb, TCA_OPTIONS); - if (nest == NULL) - goto nla_put_failure; - - if (nla_put(skb, TCA_RSVP_DST, sizeof(s->dst), &s->dst)) - goto nla_put_failure; - pinfo.dpi = s->dpi; - pinfo.spi = f->spi; - pinfo.protocol = s->protocol; - pinfo.tunnelid = s->tunnelid; - pinfo.tunnelhdr = f->tunnelhdr; - pinfo.pad = 0; - if (nla_put(skb, TCA_RSVP_PINFO, sizeof(pinfo), &pinfo)) - goto nla_put_failure; - if (f->res.classid && - nla_put_u32(skb, TCA_RSVP_CLASSID, f->res.classid)) - goto nla_put_failure; - if (((f->handle >> 8) & 0xFF) != 16 && - nla_put(skb, TCA_RSVP_SRC, sizeof(f->src), f->src)) - goto nla_put_failure; - - if (tcf_exts_dump(skb, &f->exts) < 0) - goto nla_put_failure; - - nla_nest_end(skb, nest); - - if (tcf_exts_dump_stats(skb, &f->exts) < 0) - goto nla_put_failure; - return skb->len; - -nla_put_failure: - nla_nest_cancel(skb, nest); - return -1; -} - -static void rsvp_bind_class(void *fh, u32 classid, unsigned long cl, void *q, - unsigned long base) -{ - struct rsvp_filter *f = fh; - - tc_cls_bind_class(classid, cl, q, &f->res, base); -} - -static struct tcf_proto_ops RSVP_OPS __read_mostly = { - .kind = RSVP_ID, - .classify = rsvp_classify, - .init = rsvp_init, - .destroy = rsvp_destroy, - .get = rsvp_get, - .change = rsvp_change, - .delete = rsvp_delete, - .walk = rsvp_walk, - .dump = rsvp_dump, - .bind_class = rsvp_bind_class, - .owner = THIS_MODULE, -}; - -static int __init init_rsvp(void) -{ - return register_tcf_proto_ops(&RSVP_OPS); -} - -static void __exit exit_rsvp(void) -{ - unregister_tcf_proto_ops(&RSVP_OPS); -} - -module_init(init_rsvp) -module_exit(exit_rsvp) diff --git a/net/sched/cls_rsvp6.c b/net/sched/cls_rsvp6.c deleted file mode 100644 index 64078846000e..000000000000 --- a/net/sched/cls_rsvp6.c +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * net/sched/cls_rsvp6.c Special RSVP packet classifier for IPv6. - * - * Authors: Alexey Kuznetsov, - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define RSVP_DST_LEN 4 -#define RSVP_ID "rsvp6" -#define RSVP_OPS cls_rsvp6_ops - -#include "cls_rsvp.h" -MODULE_LICENSE("GPL"); From 8c3b0a3493cd8f03161b9e0cbf8756fb0500c2d5 Mon Sep 17 00:00:00 2001 From: Kyle Zeng Date: Thu, 14 Sep 2023 22:12:57 -0700 Subject: [PATCH 77/99] UPSTREAM: ipv4: fix null-deref in ipv4_link_failure [ Upstream commit 0113d9c9d1ccc07f5a3710dac4aa24b6d711278c ] Currently, we assume the skb is associated with a device before calling __ip_options_compile, which is not always the case if it is re-routed by ipvs. When skb->dev is NULL, dev_net(skb->dev) will become null-dereference. This patch adds a check for the edge case and switch to use the net_device from the rtable when skb->dev is NULL. Bug: 304913674 Fixes: ed0de45a1008 ("ipv4: recompile ip options in ipv4_link_failure") Suggested-by: David Ahern Signed-off-by: Kyle Zeng Cc: Stephen Suryaputra Cc: Vadim Fedorenko Reviewed-by: David Ahern Signed-off-by: David S. Miller Signed-off-by: Sasha Levin (cherry picked from commit 2712545e535d7a2e4c53b9c9658a9c88c6055862) Signed-off-by: Lee Jones Change-Id: Ie840ff3351e487f7095c49fac4fdd1e81021a982 --- net/ipv4/route.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/ipv4/route.c b/net/ipv4/route.c index cd1fa9f70f1a..619fd88d920a 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -1213,6 +1213,7 @@ EXPORT_INDIRECT_CALLABLE(ipv4_dst_check); static void ipv4_send_dest_unreach(struct sk_buff *skb) { + struct net_device *dev; struct ip_options opt; int res; @@ -1230,7 +1231,8 @@ static void ipv4_send_dest_unreach(struct sk_buff *skb) opt.optlen = ip_hdr(skb)->ihl * 4 - sizeof(struct iphdr); rcu_read_lock(); - res = __ip_options_compile(dev_net(skb->dev), &opt, skb, NULL); + dev = skb->dev ? skb->dev : skb_rtable(skb)->dst.dev; + res = __ip_options_compile(dev_net(dev), &opt, skb, NULL); rcu_read_unlock(); if (res) From 132b47119ed056eda99fb6daece5c67f870c4698 Mon Sep 17 00:00:00 2001 From: Wander Lairson Costa Date: Fri, 1 Sep 2023 10:50:20 -0300 Subject: [PATCH 78/99] UPSTREAM: netfilter: nfnetlink_osf: avoid OOB read [ Upstream commit f4f8a7803119005e87b716874bec07c751efafec ] The opt_num field is controlled by user mode and is not currently validated inside the kernel. An attacker can take advantage of this to trigger an OOB read and potentially leak information. BUG: KASAN: slab-out-of-bounds in nf_osf_match_one+0xbed/0xd10 net/netfilter/nfnetlink_osf.c:88 Read of size 2 at addr ffff88804bc64272 by task poc/6431 CPU: 1 PID: 6431 Comm: poc Not tainted 6.0.0-rc4 #1 Call Trace: nf_osf_match_one+0xbed/0xd10 net/netfilter/nfnetlink_osf.c:88 nf_osf_find+0x186/0x2f0 net/netfilter/nfnetlink_osf.c:281 nft_osf_eval+0x37f/0x590 net/netfilter/nft_osf.c:47 expr_call_ops_eval net/netfilter/nf_tables_core.c:214 nft_do_chain+0x2b0/0x1490 net/netfilter/nf_tables_core.c:264 nft_do_chain_ipv4+0x17c/0x1f0 net/netfilter/nft_chain_filter.c:23 [..] Also add validation to genre, subtype and version fields. Bug: 304913642 Fixes: 11eeef41d5f6 ("netfilter: passive OS fingerprint xtables match") Reported-by: Lucas Leong Signed-off-by: Wander Lairson Costa Signed-off-by: Florian Westphal Signed-off-by: Sasha Levin (cherry picked from commit 7bb8d52b4271be7527b6e3120ae6ce4c6cdf6e34) Signed-off-by: Lee Jones Change-Id: If79c79e3f55de8c81b70c19661cb0084b02c3da2 --- net/netfilter/nfnetlink_osf.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/netfilter/nfnetlink_osf.c b/net/netfilter/nfnetlink_osf.c index ee6840bd5933..4cd0aae43a8b 100644 --- a/net/netfilter/nfnetlink_osf.c +++ b/net/netfilter/nfnetlink_osf.c @@ -315,6 +315,14 @@ static int nfnl_osf_add_callback(struct sk_buff *skb, f = nla_data(osf_attrs[OSF_ATTR_FINGER]); + if (f->opt_num > ARRAY_SIZE(f->opt)) + return -EINVAL; + + if (!memchr(f->genre, 0, MAXGENRELEN) || + !memchr(f->subtype, 0, MAXGENRELEN) || + !memchr(f->version, 0, MAXGENRELEN)) + return -EINVAL; + kf = kmalloc(sizeof(struct nf_osf_finger), GFP_KERNEL); if (!kf) return -ENOMEM; From 2176509c4d3c75e6c396cbef19fd2bdf15334f8f Mon Sep 17 00:00:00 2001 From: Wander Lairson Costa Date: Mon, 28 Aug 2023 10:21:07 -0300 Subject: [PATCH 79/99] UPSTREAM: netfilter: xt_u32: validate user space input commit 69c5d284f67089b4750d28ff6ac6f52ec224b330 upstream. The xt_u32 module doesn't validate the fields in the xt_u32 structure. An attacker may take advantage of this to trigger an OOB read by setting the size fields with a value beyond the arrays boundaries. Add a checkentry function to validate the structure. This was originally reported by the ZDI project (ZDI-CAN-18408). Bug: 304913716 Fixes: 1b50b8a371e9 ("[NETFILTER]: Add u32 match") Cc: stable@vger.kernel.org Signed-off-by: Wander Lairson Costa Signed-off-by: Pablo Neira Ayuso Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 1c164c1e9e93b0a72a03a7edb754e3857d4e4302) Signed-off-by: Lee Jones Change-Id: Ic2ff70b303f55f9c3c5db24295bcb223ed7175a7 --- net/netfilter/xt_u32.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/net/netfilter/xt_u32.c b/net/netfilter/xt_u32.c index 177b40d08098..117d4615d668 100644 --- a/net/netfilter/xt_u32.c +++ b/net/netfilter/xt_u32.c @@ -96,11 +96,32 @@ static bool u32_mt(const struct sk_buff *skb, struct xt_action_param *par) return ret ^ data->invert; } +static int u32_mt_checkentry(const struct xt_mtchk_param *par) +{ + const struct xt_u32 *data = par->matchinfo; + const struct xt_u32_test *ct; + unsigned int i; + + if (data->ntests > ARRAY_SIZE(data->tests)) + return -EINVAL; + + for (i = 0; i < data->ntests; ++i) { + ct = &data->tests[i]; + + if (ct->nnums > ARRAY_SIZE(ct->location) || + ct->nvalues > ARRAY_SIZE(ct->value)) + return -EINVAL; + } + + return 0; +} + static struct xt_match xt_u32_mt_reg __read_mostly = { .name = "u32", .revision = 0, .family = NFPROTO_UNSPEC, .match = u32_mt, + .checkentry = u32_mt_checkentry, .matchsize = sizeof(struct xt_u32), .me = THIS_MODULE, }; From e3e2ece8a09bf1c7ad0b74222e44912e532fbd26 Mon Sep 17 00:00:00 2001 From: Robin Hsu Date: Fri, 13 May 2022 10:19:50 +0800 Subject: [PATCH 80/99] ANDROID: mm: vh for compaction begin/end Add vendor hook for compaction begin/end. The first use would be to measure compaction durations. Bug: 229927848 Test: echo 1 > /proc/sys/vm/compact_memory and observe output change in /sys/kernel/pixel_stat/mm/compaction/mm_compaction_duration Signed-off-by: Robin Hsu Change-Id: I3d95434bf49b37199056dc9ddfc36a59a7de17b7 Signed-off-by: Richard Chang (cherry picked from commit 13b6bd38bb1f43bfffdb08c8f3a4a20d36ccd670) Signed-off-by: liangjlee --- drivers/android/vendor_hooks.c | 2 ++ include/trace/hooks/mm.h | 7 +++++++ mm/compaction.c | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index a705333dc1b3..0e9014adf5f6 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -341,3 +341,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_direct_reclaim_enter); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_direct_reclaim_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_may_oom_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmscan_kswapd_done); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_begin); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_end); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 254da451178e..7018cc8240c3 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -12,6 +12,7 @@ struct shmem_inode_info; struct folio; struct page_vma_mapped_walk; +struct compact_control; DECLARE_RESTRICTED_HOOK(android_rvh_shmem_get_folio, TP_PROTO(struct shmem_inode_info *info, struct folio **folio), @@ -106,6 +107,12 @@ DECLARE_HOOK(android_vh_madvise_cold_pageout_skip, TP_PROTO(struct vm_area_struct *vma, struct page *page, bool pageout, bool *need_skip), TP_ARGS(vma, page, pageout, need_skip)); +DECLARE_HOOK(android_vh_mm_compaction_begin, + TP_PROTO(struct compact_control *cc, long *vendor_ret), + TP_ARGS(cc, vendor_ret)); +DECLARE_HOOK(android_vh_mm_compaction_end, + TP_PROTO(struct compact_control *cc, long vendor_ret), + TP_ARGS(cc, vendor_ret)); struct mem_cgroup; DECLARE_HOOK(android_vh_mem_cgroup_alloc, TP_PROTO(struct mem_cgroup *memcg), diff --git a/mm/compaction.c b/mm/compaction.c index 4fd76f427e29..b9a67520d442 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -51,6 +51,7 @@ static inline void count_compact_events(enum vm_event_item item, long delta) #include #undef CREATE_TRACE_POINTS #include +#include #define block_start_pfn(pfn, order) round_down(pfn, 1UL << (order)) #define block_end_pfn(pfn, order) ALIGN((pfn) + 1, 1UL << (order)) @@ -2323,6 +2324,7 @@ compact_zone(struct compact_control *cc, struct capture_control *capc) const bool sync = cc->mode != MIGRATE_ASYNC; bool update_cached; unsigned int nr_succeeded = 0; + long vendor_ret; /* * These counters track activities during zone compaction. Initialize @@ -2393,6 +2395,7 @@ compact_zone(struct compact_control *cc, struct capture_control *capc) cc->zone->compact_cached_migrate_pfn[0] == cc->zone->compact_cached_migrate_pfn[1]; trace_mm_compaction_begin(cc, start_pfn, end_pfn, sync); + trace_android_vh_mm_compaction_begin(cc, &vendor_ret); /* lru_add_drain_all could be expensive with involving other CPUs */ lru_add_drain(); @@ -2518,6 +2521,7 @@ out: count_compact_events(COMPACTMIGRATE_SCANNED, cc->total_migrate_scanned); count_compact_events(COMPACTFREE_SCANNED, cc->total_free_scanned); + trace_android_vh_mm_compaction_end(cc, vendor_ret); trace_mm_compaction_end(cc, start_pfn, end_pfn, sync, ret); return ret; From fd2e98c6f55384fd08bd5dfeae6e2b943e1ef759 Mon Sep 17 00:00:00 2001 From: Nikita Zhandarovich Date: Tue, 18 Apr 2023 06:07:43 -0700 Subject: [PATCH 81/99] UPSTREAM: PM: domains: fix integer overflow issues in genpd_parse_state() Currently, while calculating residency and latency values, right operands may overflow if resulting values are big enough. To prevent this, albeit unlikely case, play it safe and convert right operands to left ones' type s64. Found by Linux Verification Center (linuxtesting.org) with static analysis tool SVACE. Bug: 296029082 Fixes: 30f604283e05 ("PM / Domains: Allow domain power states to be read from DT") Change-Id: Id0355d95ff18dc2273fca719aa64e2d32b1f9da5 Signed-off-by: Nikita Zhandarovich Acked-by: Ulf Hansson Signed-off-by: Rafael J. Wysocki (cherry picked from commit e5d1c8722083f0332dcd3c85fa1273d85fb6bed8) Signed-off-by: Daniel Mentz --- drivers/base/power/domain.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index b411201f75bf..b33fc322e092 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -2923,10 +2923,10 @@ static int genpd_parse_state(struct genpd_power_state *genpd_state, err = of_property_read_u32(state_node, "min-residency-us", &residency); if (!err) - genpd_state->residency_ns = 1000 * residency; + genpd_state->residency_ns = 1000LL * residency; - genpd_state->power_on_latency_ns = 1000 * exit_latency; - genpd_state->power_off_latency_ns = 1000 * entry_latency; + genpd_state->power_on_latency_ns = 1000LL * exit_latency; + genpd_state->power_off_latency_ns = 1000LL * entry_latency; genpd_state->fwnode = &state_node->fwnode; return 0; From a338830fde2ef1b16e6c94bf0b97b40f539c8099 Mon Sep 17 00:00:00 2001 From: Peter Wang Date: Wed, 27 Sep 2023 11:35:57 +0800 Subject: [PATCH 82/99] UPSTREAM: ufs: core: wlun send SSU timeout recovery When runtime pm send SSU times out, the SCSI core invokes eh_host_reset_handler, which hooks function ufshcd_eh_host_reset_handler schedule eh_work and stuck at wait flush_work(&hba->eh_work). However, ufshcd_err_handler hangs in wait rpm resume. Do link recovery only in this case. Below is IO hang stack dump in kernel-6.1 kworker/4:0 D __switch_to+0x180/0x344 __schedule+0x5ec/0xa14 schedule+0x78/0xe0 schedule_timeout+0xb0/0x15c io_schedule_timeout+0x48/0x70 do_wait_for_common+0x108/0x19c wait_for_completion_io_timeout+0x50/0x78 blk_execute_rq+0x1b8/0x218 scsi_execute_cmd+0x148/0x238 ufshcd_set_dev_pwr_mode+0xe8/0x244 __ufshcd_wl_resume+0x1e0/0x45c ufshcd_wl_runtime_resume+0x3c/0x174 scsi_runtime_resume+0x7c/0xc8 __rpm_callback+0xa0/0x410 rpm_resume+0x43c/0x67c __rpm_callback+0x1f0/0x410 rpm_resume+0x460/0x67c pm_runtime_work+0xa4/0xac process_one_work+0x208/0x598 worker_thread+0x228/0x438 kthread+0x104/0x1d4 ret_from_fork+0x10/0x20 scsi_eh_0 D __switch_to+0x180/0x344 __schedule+0x5ec/0xa14 schedule+0x78/0xe0 schedule_timeout+0x44/0x15c do_wait_for_common+0x108/0x19c wait_for_completion+0x48/0x64 __flush_work+0x260/0x2d0 flush_work+0x10/0x20 ufshcd_eh_host_reset_handler+0x88/0xcc scsi_try_host_reset+0x48/0xe0 scsi_eh_ready_devs+0x934/0xa40 scsi_error_handler+0x168/0x374 kthread+0x104/0x1d4 ret_from_fork+0x10/0x20 kworker/u16:5 D __switch_to+0x180/0x344 __schedule+0x5ec/0xa14 schedule+0x78/0xe0 rpm_resume+0x114/0x67c __pm_runtime_resume+0x70/0xb4 ufshcd_err_handler+0x1a0/0xe68 process_one_work+0x208/0x598 worker_thread+0x228/0x438 kthread+0x104/0x1d4 ret_from_fork+0x10/0x20 (cherry picked from commit 971237b900c38f50e7865289a2aecb77dc7f09f3) Link: https://lore.kernel.org/all/20230927033557.13801-1-peter.wang@mediatek.com/ Change-Id: I51d4ddec2be7ef71fd333ca7658539f38eeb8c31 Signed-off-by: Peter Wang Reviewed-by: Bart Van Assche Reviewed-by: Stanley Chu --- drivers/ufs/core/ufshcd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 430ae3d2fc8a..138edfe2c83e 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -7856,6 +7856,20 @@ static int ufshcd_eh_host_reset_handler(struct scsi_cmnd *cmd) hba = shost_priv(cmd->device->host); + /* + * If runtime pm send SSU and got timeout, scsi_error_handler + * stuck at this function to wait for flush_work(&hba->eh_work). + * And ufshcd_err_handler(eh_work) stuck at wait for runtime pm active. + * Do ufshcd_link_recovery instead schedule eh_work can prevent + * dead lock to happen. + */ + if (hba->pm_op_in_progress) { + if (ufshcd_link_recovery(hba)) + err = FAILED; + + return err; + } + spin_lock_irqsave(hba->host->host_lock, flags); hba->force_reset = true; ufshcd_schedule_eh_work(hba); From 1e6a9aeb1401983df157ed29e4ceda02997b49e1 Mon Sep 17 00:00:00 2001 From: Hoyoung Lee Date: Mon, 16 Oct 2023 13:33:31 +0900 Subject: [PATCH 83/99] ANDROID: GKI: add allowed list for Exynosauto SoC This patch adds GKI symbol list for Exynosauto SoC. We need to add below 3 function symbols and it required by DRM(Direct Rendering Manager) driver. 3 function symbol(s) added 'void display_timings_release(struct display_timings*)' 'struct display_timings* of_get_display_timings(const struct device_node*)' 'int videomode_from_timings(const struct display_timings*, struct videomode*, unsigned int)' Bug: 305126879 Change-Id: Ieaf3b82e18c0a3a90c274ed752af8ed84df5c150 Signed-off-by: Hoyoung Lee --- android/abi_gki_aarch64.stg | 95 ++ android/abi_gki_aarch64_exynosauto | 1398 +++++++++++++++++++++++++--- 2 files changed, 1366 insertions(+), 127 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index f534b4c47650..73b356cb3685 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -4153,6 +4153,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x19d93429 } +pointer_reference { + id: 0x0ce80834 + kind: POINTER + pointee_type_id: 0x19e0c64c +} pointer_reference { id: 0x0ce9a2bb kind: POINTER @@ -22343,6 +22348,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xebd0e7ee } +pointer_reference { + id: 0x3064f970 + kind: POINTER + pointee_type_id: 0xebd3035e +} pointer_reference { id: 0x30650ba6 kind: POINTER @@ -28038,6 +28048,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdf713fb7 } +pointer_reference { + id: 0x3d52d75b + kind: POINTER + pointee_type_id: 0xdf0bbbf0 +} pointer_reference { id: 0x3d551c03 kind: POINTER @@ -33738,6 +33753,11 @@ qualified { qualifier: CONST qualified_type_id: 0xdf042930 } +qualified { + id: 0xebd3035e + qualifier: CONST + qualified_type_id: 0xdf0bbbf0 +} qualified { id: 0xebd4c806 qualifier: CONST @@ -130704,6 +130724,12 @@ member { offset: 8135 bitsize: 1 } +member { + id: 0xf79a533a + name: "native_mode" + type_id: 0x4585663f + offset: 32 +} member { id: 0x24fa7507 name: "native_pcie_hotplug" @@ -137965,6 +137991,11 @@ member { offset: 1177 bitsize: 7 } +member { + id: 0x349420c4 + name: "num_timings" + type_id: 0x4585663f +} member { id: 0x8026d50a name: "num_total_plane" @@ -190276,6 +190307,12 @@ member { type_id: 0x5d8155a5 offset: 128 } +member { + id: 0x1f55657f + name: "timings" + type_id: 0x0ce80834 + offset: 64 +} member { id: 0x1f6734de name: "timings" @@ -222954,6 +222991,17 @@ struct_union { member_id: 0x2d0ec9dd } } +struct_union { + id: 0xdf0bbbf0 + kind: STRUCT + name: "display_timings" + definition { + bytesize: 16 + member_id: 0x349420c4 + member_id: 0xf79a533a + member_id: 0x1f55657f + } +} struct_union { id: 0x75bc7540 kind: STRUCT @@ -297496,6 +297544,11 @@ function { parameter_id: 0x5268af9d parameter_id: 0x6d7f5ff6 } +function { + id: 0x1fcce445 + return_type_id: 0x48b5725f + parameter_id: 0x3d52d75b +} function { id: 0x1fcd1693 return_type_id: 0x48b5725f @@ -299759,6 +299812,11 @@ function { parameter_id: 0x3c9a9fb2 parameter_id: 0x6720d32f } +function { + id: 0x4d744842 + return_type_id: 0x3d52d75b + parameter_id: 0x322c8c4b +} function { id: 0x4d878509 return_type_id: 0x21069feb @@ -305251,6 +305309,13 @@ function { parameter_id: 0x3de3f5a1 parameter_id: 0x268136e5 } +function { + id: 0x919a2688 + return_type_id: 0x6720d32f + parameter_id: 0x3064f970 + parameter_id: 0x04a6a89c + parameter_id: 0x4585663f +} function { id: 0x919a7322 return_type_id: 0x6720d32f @@ -351207,6 +351272,15 @@ elf_symbol { type_id: 0x1bd69e9e full_name: "disk_set_zoned" } +elf_symbol { + id: 0x80814925 + name: "display_timings_release" + is_defined: true + symbol_type: FUNCTION + crc: 0x3b4c240a + type_id: 0x1fcce445 + full_name: "display_timings_release" +} elf_symbol { id: 0x9c5fb17e name: "divider_get_val" @@ -370899,6 +370973,15 @@ elf_symbol { type_id: 0x91f5fad8 full_name: "of_get_display_timing" } +elf_symbol { + id: 0x824695bc + name: "of_get_display_timings" + is_defined: true + symbol_type: FUNCTION + crc: 0x98a67fd3 + type_id: 0x4d744842 + full_name: "of_get_display_timings" +} elf_symbol { id: 0x05a46d27 name: "of_get_drm_display_mode" @@ -393253,6 +393336,15 @@ elf_symbol { type_id: 0x1ed8d47c full_name: "videomode_from_timing" } +elf_symbol { + id: 0x6d215713 + name: "videomode_from_timings" + is_defined: true + symbol_type: FUNCTION + crc: 0x414d119a + type_id: 0x919a2688 + full_name: "videomode_from_timings" +} elf_symbol { id: 0x1bf9e9e5 name: "virtio_break_device" @@ -397846,6 +397938,7 @@ interface { symbol_id: 0xe5bfa8c8 symbol_id: 0xd48a6769 symbol_id: 0xdd957eaf + symbol_id: 0x80814925 symbol_id: 0x9c5fb17e symbol_id: 0xedd83590 symbol_id: 0x840989b2 @@ -400032,6 +400125,7 @@ interface { symbol_id: 0xe2b0e5a5 symbol_id: 0xb8036e9c symbol_id: 0xe36e392a + symbol_id: 0x824695bc symbol_id: 0x05a46d27 symbol_id: 0xe3de7018 symbol_id: 0x26fb2401 @@ -402516,6 +402610,7 @@ interface { symbol_id: 0xbd9fe5b6 symbol_id: 0x76ec943c symbol_id: 0x1a4e4142 + symbol_id: 0x6d215713 symbol_id: 0x1bf9e9e5 symbol_id: 0xec6b2b3d symbol_id: 0x4b519cf9 diff --git a/android/abi_gki_aarch64_exynosauto b/android/abi_gki_aarch64_exynosauto index a26228697242..8cf069ca2e0e 100644 --- a/android/abi_gki_aarch64_exynosauto +++ b/android/abi_gki_aarch64_exynosauto @@ -1,13 +1,33 @@ [abi_symbol_list] # commonly used symbols + __alloc_pages + __alloc_percpu alloc_workqueue alt_cb_patch_nops __arch_copy_from_user __arch_copy_to_user arm64_use_ng_mappings + __arm_smccc_smc + atomic_notifier_call_chain + atomic_notifier_chain_register + atomic_notifier_chain_unregister + __bitmap_and + bitmap_find_free_region + bitmap_release_region + __bitmap_weight blocking_notifier_call_chain blocking_notifier_chain_register + blocking_notifier_chain_unregister + bpf_trace_run1 + bpf_trace_run2 + bpf_trace_run3 + bpf_trace_run4 + bpf_trace_run6 + call_rcu + cancel_delayed_work cancel_delayed_work_sync + cancel_work_sync + cdev_init __check_object_size __class_create class_destroy @@ -23,84 +43,323 @@ clk_register_fixed_rate clk_set_rate clk_unprepare + cma_alloc + cma_release complete + complete_all __const_udelay + __copy_overflow + __cpuhp_setup_state cpu_hwcaps cpu_number + __cpu_online_mask + cpu_pm_register_notifier + __cpu_possible_mask + crc32_le debugfs_create_dir debugfs_create_file debugfs_create_u32 debugfs_remove default_llseek delayed_work_timer_fn + del_timer + del_timer_sync + destroy_workqueue + _dev_crit dev_driver_string + _dev_emerg _dev_err + dev_err_probe + dev_fwnode device_create device_create_file device_destroy device_for_each_child device_get_match_data + device_get_phy_mode + device_initialize + device_property_present + device_register device_remove_file device_set_wakeup_capable + device_unregister device_wakeup_disable device_wakeup_enable _dev_info + devm_add_action devm_clk_get devm_free_irq + devm_gen_pool_create + devm_gpiod_get + devm_gpiod_get_optional + devm_gpio_request_one devm_i2c_new_dummy_device devm_ioremap devm_ioremap_resource + devm_kasprintf devm_kfree devm_kmalloc + devm_kmemdup + devm_kstrdup devm_mfd_add_devices + devm_mipi_dsi_attach + devm_mipi_dsi_device_register_full + __devm_of_phy_provider_register + devm_phy_create + devm_phy_get devm_pinctrl_get + devm_platform_ioremap_resource + devm_platform_ioremap_resource_byname + __devm_regmap_init_i2c + devm_regulator_bulk_get devm_regulator_register devm_request_threaded_irq + __devm_reset_control_get + devm_snd_soc_register_card + devm_snd_soc_register_component + devm_thermal_of_zone_register + _dev_notice + devres_add + __devres_alloc_node + dev_set_name _dev_warn disable_irq disable_irq_nosync + display_timings_release dma_alloc_attrs + dma_buf_attach + dma_buf_begin_cpu_access + dma_buf_detach + dma_buf_end_cpu_access + dma_buf_export + dma_buf_get + dma_buf_map_attachment + dma_buf_put + dma_buf_unmap_attachment + dma_buf_vmap + dma_buf_vunmap + dma_fence_add_callback + dma_fence_context_alloc + dma_fence_init + dma_fence_release + dma_fence_remove_callback + dma_fence_signal + dma_fence_wait_timeout dma_free_attrs + dma_heap_buffer_alloc + dma_heap_find + dma_heap_put + dmam_alloc_attrs dma_map_page_attrs + dma_map_resource + dma_map_sgtable dma_release_channel dma_request_chan + dma_resv_iter_first + dma_resv_iter_next dma_set_coherent_mask dma_set_mask + dma_sync_sg_for_device + dma_sync_single_for_cpu + dma_sync_single_for_device dma_unmap_page_attrs + dma_unmap_resource + dma_unmap_sg_attrs + down_write + drm_add_edid_modes + drm_atomic_helper_bridge_destroy_state + drm_atomic_helper_bridge_duplicate_state + drm_atomic_helper_bridge_reset + drm_atomic_helper_connector_destroy_state + drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_connector_reset + drm_bridge_add + drm_bridge_remove + drm_compat_ioctl + drm_connector_attach_encoder + drm_connector_cleanup + drm_connector_init + drm_connector_list_iter_begin + drm_connector_list_iter_end + drm_connector_list_iter_next + drm_connector_register + drm_connector_unregister + drm_connector_update_edid_property + drm_crtc_add_crc_entry + drm_crtc_cleanup + __drm_crtc_commit_free + drm_crtc_send_vblank_event + drm_crtc_vblank_count + drm_crtc_vblank_off + drm_crtc_vblank_on + drm_crtc_vblank_put + ___drm_dbg + drm_debugfs_create_files + drm_detect_hdmi_monitor + __drm_dev_dbg + drm_dev_printk + drm_dev_put + drm_dev_register + drm_dev_unregister + drm_display_mode_from_videomode + drm_do_get_edid + drm_encoder_cleanup + drm_encoder_init + __drm_err + drm_framebuffer_cleanup + drm_framebuffer_init + drm_gem_handle_create + drm_gem_mmap + drm_gem_object_free + drm_gem_object_lookup + drm_gem_object_release + drm_gem_prime_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_private_object_init + drm_get_edid + drm_helper_connector_dpms + drm_helper_hpd_irq_event + drm_helper_mode_fill_fb_struct + drm_helper_probe_single_connector_modes + drm_ioctl + drm_kms_helper_hotplug_event + drm_kms_helper_poll_fini + drm_kms_helper_poll_init + drmm_mode_config_init + drm_mode_config_cleanup + drm_mode_copy + drm_mode_create + drm_mode_duplicate + drm_mode_object_put + drm_mode_probed_add + drm_modeset_lock + drm_modeset_unlock + drm_mode_vrefresh + drm_object_attach_property + drm_open + drm_poll + drm_prime_gem_destroy + drm_printf + drm_property_create_range + drm_read + drm_release + drm_vblank_init + dump_stack + dw_pcie_host_init + dw_pcie_own_conf_map_bus + dw_pcie_read + dw_pcie_setup_rc + dw_pcie_write enable_irq + fd_install + _find_first_bit + _find_next_bit + finish_wait + flush_delayed_work + flush_work + __flush_workqueue fortify_panic + fput free_irq + __free_pages + fwnode_handle_put + gcd + generic_file_llseek + generic_handle_irq + gen_pool_add_owner + gen_pool_alloc_algo_owner + gen_pool_avail + gen_pool_free_owner + gen_pool_size get_device + get_random_bytes + get_unused_fd_flags gic_nonsecure_priorities gpiod_direction_input gpiod_direction_output_raw gpiod_get_raw_value gpiod_set_raw_value + gpiod_set_value_cansleep + gpio_request_one gpio_to_desc + handle_edge_irq handle_level_irq + hrtimer_cancel + hrtimer_init + hrtimer_start_range_ns + i2c_add_adapter i2c_add_numbered_adapter + i2c_del_adapter i2c_del_driver i2c_register_driver + i2c_transfer i2c_unregister_device + ida_alloc_range + ida_free + __init_rwsem __init_swait_queue_head init_timer_key + init_wait_entry + __init_waitqueue_head + iomem_resource + iommu_get_domain_for_dev + iommu_register_device_fault_handler + iommu_unregister_device_fault_handler ioremap_prot iounmap + __irq_apply_affinity_hint + irq_chip_ack_parent + irq_chip_mask_parent + irq_chip_unmask_parent + irq_create_mapping_affinity + __irq_domain_add + irq_domain_get_irq_data + irq_domain_remove + irq_domain_set_info + irq_domain_update_bus_token irq_get_irq_data irq_modify_status irq_of_parse_and_map + __irq_resolve_mapping + irq_set_chained_handler_and_data irq_set_chip_and_handler_name irq_set_chip_data irq_set_irq_wake + irq_to_desc is_vmalloc_addr jiffies + jiffies_to_msecs + kasan_flag_enabled + kasprintf kfree + kimage_voffset __kmalloc kmalloc_caches + kmalloc_large kmalloc_trace + kmem_cache_alloc + kmem_cache_create + kmem_cache_destroy + kmem_cache_free + kmemdup + krealloc + kstrdup kstrtoint + kstrtoll + kstrtouint + kstrtoull + kthread_create_on_node + kthread_park + kthread_parkme + kthread_should_park + kthread_should_stop + kthread_stop + kthread_unpark ktime_get ktime_get_mono_fast_ns + ktime_get_real_ts64 + kvfree + kvmalloc_node __list_add_valid __list_del_entry_valid log_post_read_mmio @@ -108,125 +367,317 @@ log_read_mmio log_write_mmio loops_per_jiffy + mdiobus_read + mdiobus_write memcpy memdup_user + mem_section memset + memstart_addr + mipi_dsi_attach + mipi_dsi_detach + mipi_dsi_device_register_full + mipi_dsi_device_unregister + mipi_dsi_driver_register_full + mipi_dsi_driver_unregister + misc_register + mod_timer module_layout __msecs_to_jiffies msleep __mutex_init + mutex_is_locked mutex_lock + mutex_lock_interruptible + mutex_trylock mutex_unlock + netdev_err + netdev_info + netdev_warn + noop_llseek + nr_cpu_ids + ns_to_timespec64 + __num_online_cpus of_address_to_resource of_alias_get_id of_clk_add_provider + of_clk_get of_clk_src_onecell_get + of_count_phandle_with_args + of_device_get_match_data of_device_is_available + of_device_is_compatible of_find_compatible_node of_find_device_by_node of_find_matching_node_and_match + of_find_mipi_dsi_host_by_node of_find_node_by_name of_find_property of_get_child_by_name + of_get_display_timings of_get_named_gpio_flags of_get_next_child of_get_property of_get_regulator_init_data + of_graph_get_remote_node + of_graph_parse_endpoint of_iomap + of_match_device of_match_node + of_n_addr_cells + of_n_size_cells __of_parse_phandle_with_args + of_platform_populate + of_property_count_elems_of_size of_property_read_string of_property_read_string_helper + of_property_read_u32_index + of_property_read_variable_u16_array of_property_read_variable_u32_array + of_property_read_variable_u8_array + of_prop_next_string + of_prop_next_u32 + of_reserved_mem_device_init_by_idx + of_reserved_mem_device_release + of_reserved_mem_lookup of_root + oops_in_progress panic + panic_notifier_list param_ops_int + param_ops_string param_ops_uint + pcie_get_mps + pcie_set_mps + pci_find_bus + pci_generic_config_read + pci_generic_config_write + pci_get_device + pci_load_saved_state + pci_msi_create_irq_domain + pci_msi_mask_irq + pci_msi_unmask_irq + pci_rescan_bus + pci_restore_state + pci_save_state + pci_store_saved_state + __per_cpu_offset + perf_trace_buf_alloc + perf_trace_run_bpf_submit + phy_init_eee + phylink_create + phylink_generic_validate + phy_power_off + phy_power_on pinctrl_lookup_state pinctrl_select_state + platform_device_unregister __platform_driver_register platform_driver_unregister platform_get_irq + platform_get_irq_byname + platform_get_irq_byname_optional platform_get_irq_optional platform_get_resource platform_get_resource_byname __pm_runtime_disable pm_runtime_enable + pm_runtime_forbid + pm_runtime_force_resume + pm_runtime_force_suspend __pm_runtime_idle __pm_runtime_resume pm_runtime_set_autosuspend_delay + __pm_runtime_set_status __pm_runtime_suspend __pm_runtime_use_autosuspend + pm_wakeup_dev_event + preempt_schedule + preempt_schedule_notrace + prepare_to_wait_event + print_hex_dump _printk put_device __put_task_struct + put_unused_fd queue_delayed_work_on queue_work_on + ___ratelimit + _raw_read_lock_irqsave + _raw_read_unlock_irqrestore _raw_spin_lock + _raw_spin_lock_irq _raw_spin_lock_irqsave + _raw_spin_trylock _raw_spin_unlock + _raw_spin_unlock_irq _raw_spin_unlock_irqrestore + _raw_write_lock_irqsave + _raw_write_unlock_irqrestore + rcu_barrier rdev_get_drvdata rdev_get_id + refcount_warn_saturate + regcache_mark_dirty + regcache_sync + __register_chrdev + register_console register_pm_notifier register_syscore_ops regmap_read regmap_update_bits_base regmap_write + regulator_bulk_disable + regulator_bulk_enable regulator_disable regulator_enable regulator_list_voltage_linear regulator_map_voltage_linear + release_firmware + __release_region + request_firmware + __request_region + request_threaded_irq + reset_control_assert + reset_control_deassert sched_clock + schedule + schedule_timeout + scnprintf seq_lseek seq_printf + seq_putc seq_puts seq_read + sg_alloc_table + sg_free_table sg_init_table + sg_next + simple_attr_open + simple_attr_read + simple_attr_release + simple_attr_write simple_open simple_read_from_buffer simple_write_to_buffer single_open single_release + smp_call_on_cpu + snd_pcm_format_width + snd_soc_component_read + snd_soc_component_update_bits + snd_soc_component_write + snd_soc_dai_set_fmt + snd_soc_dai_set_tdm_slot + snd_soc_dai_set_tristate + snd_soc_dapm_add_routes + snd_soc_dapm_get_enum_double + snd_soc_dapm_put_enum_double + snd_soc_get_volsw + snd_soc_info_enum_double + snd_soc_info_volsw + snd_soc_of_get_dai_link_codecs + snd_soc_of_get_dai_name + snd_soc_of_parse_audio_routing + snd_soc_of_put_dai_link_codecs + snd_soc_put_volsw snprintf + sort + split_page sprintf sscanf __stack_chk_fail strcasecmp + strchr strcmp + strcpy strlcat strlen strncmp + strncpy strnlen strscpy + strsep strstr + __sw_hweight32 + sync_file_create syscon_regmap_lookup_by_phandle sysfs_create_group + sysfs_create_groups sysfs_emit + sysfs_remove_group system_wq + thermal_zone_device_update + trace_event_buffer_commit + trace_event_buffer_reserve + trace_event_printf + trace_event_raw_init + trace_event_reg + trace_handle_return + tracepoint_probe_register + trace_raw_output_prep + __trace_trigger_soft_disabled + ttm_bo_mmap_obj __udelay + __unregister_chrdev + up_write + __usecs_to_jiffies usleep_range_state + v4l2_device_register + v4l2_device_unregister + v4l2_fh_add + v4l2_fh_del + v4l2_fh_exit + v4l2_fh_init + vb2_buffer_done + vb2_dma_sg_memops + vb2_plane_cookie + vb2_queue_init + vfree + video_devdata + video_device_alloc + video_device_release + video_ioctl2 + videomode_from_timings + __video_register_device + video_unregister_device + vmalloc + vmap + vsnprintf + vunmap + wait_for_completion_interruptible_timeout wait_for_completion_timeout + __wake_up + wake_up_process __warn_printk + ww_mutex_lock + ww_mutex_unlock + +# required by adv7511.ko + cec_allocate_adapter + cec_delete_adapter + cec_received_msg_ts + cec_register_adapter + cec_s_phys_addr + cec_s_phys_addr_from_edid + cec_transmit_attempt_done_ts + cec_transmit_done_ts + cec_unregister_adapter + drm_bridge_hpd_notify + hdmi_avi_infoframe_init + hdmi_avi_infoframe_pack + i2c_new_ancillary_device + regmap_bulk_write + regmap_register_patch # required by cmupmucal.ko debugfs_create_x32 kernel_kobj kobject_create_and_add - kstrtouint of_find_node_by_type # required by dmatest.ko __dma_request_channel - finish_wait - get_random_bytes - init_wait_entry - __init_waitqueue_head - kmem_cache_create - kmem_cache_destroy - kthread_create_on_node - kthread_should_stop - kthread_stop mempool_alloc mempool_alloc_slab mempool_create @@ -236,44 +687,123 @@ param_get_bool param_get_string param_ops_bool - param_ops_string param_set_bool param_set_copystring - prepare_to_wait_event - refcount_warn_saturate - schedule - schedule_timeout set_freezable set_user_nice strim - __wake_up - wake_up_process + +# required by drm_display_helper.ko + devm_backlight_device_register + _dev_printk + drm_atomic_get_connector_state + drm_atomic_get_crtc_state + drm_atomic_get_new_private_obj_state + drm_atomic_get_old_private_obj_state + drm_atomic_get_private_obj_state + __drm_atomic_helper_private_obj_duplicate_state + drm_atomic_private_obj_fini + drm_atomic_private_obj_init + drm_crtc_commit_wait + drm_crtc_wait_one_vblank + __drm_debug + drm_detect_monitor_audio + drm_display_mode_from_cea_vic + drm_edid_duplicate + drm_edid_get_monitor_name + drm_modeset_lock_single_interruptible + drm_object_property_set_value + __drm_printfn_debug + memchr_inv + __sw_hweight8 + system_long_wq + +# required by drm_ttm_helper.ko + drm_print_bits + ttm_bo_vmap + ttm_bo_vunmap + +# required by dss.ko + android_debug_symbol + arch_timer_read_counter + console_suspend_enabled + copy_from_kernel_nofault + dump_backtrace + init_task + input_close_device + input_open_device + input_register_handle + input_register_handler + input_unregister_handle + kmsg_dump_get_line + kmsg_dump_rewind + kstat + nr_irqs + proc_create + register_die_notifier + register_restart_handler + return_address + rtc_time64_to_tm + sys_tz + time64_to_tm + touch_softlockup_watchdog + __traceiter_android_vh_ipi_stop + __traceiter_cpu_idle + __traceiter_device_pm_callback_end + __traceiter_device_pm_callback_start + __traceiter_hrtimer_expire_entry + __traceiter_hrtimer_expire_exit + __traceiter_irq_handler_entry + __traceiter_irq_handler_exit + __traceiter_rwmmio_post_read + __traceiter_rwmmio_read + __traceiter_rwmmio_write + __traceiter_sched_switch + __traceiter_suspend_resume + __traceiter_workqueue_execute_end + __traceiter_workqueue_execute_start + __tracepoint_android_vh_ipi_stop + __tracepoint_cpu_idle + __tracepoint_device_pm_callback_end + __tracepoint_device_pm_callback_start + __tracepoint_hrtimer_expire_entry + __tracepoint_hrtimer_expire_exit + __tracepoint_irq_handler_entry + __tracepoint_irq_handler_exit + __tracepoint_rwmmio_post_read + __tracepoint_rwmmio_read + __tracepoint_rwmmio_write + __tracepoint_sched_switch + __tracepoint_suspend_resume + __tracepoint_workqueue_execute_end + __tracepoint_workqueue_execute_start + __tty_alloc_driver + tty_driver_kref_put + tty_port_close + tty_port_destroy + tty_port_hangup + tty_port_init + tty_port_link_device + tty_port_open + tty_register_driver + tty_std_termios + tty_unregister_driver + unregister_console + vzalloc # required by dwc3-exynosauto-usb.ko - cancel_work_sync device_create_managed_software_node - device_property_present - devm_phy_get devm_regulator_get - of_match_device - of_platform_populate phy_exit phy_init - phy_power_off - phy_power_on platform_device_add platform_device_add_resources platform_device_alloc platform_device_del platform_device_put - platform_device_unregister - platform_get_irq_byname_optional __pm_relax pm_runtime_allow - pm_runtime_forbid - __pm_runtime_set_status __pm_stay_awake - sysfs_remove_group typec_register_partner typec_register_port typec_set_data_role @@ -287,16 +817,8 @@ wakeup_source_register wakeup_source_unregister -# required by ect_parser.ko - memstart_addr - of_reserved_mem_lookup - strcpy - vmap - # required by exynos-acme.ko - __bitmap_and bitmap_parselist - __bitmap_weight __cpu_active_mask cpufreq_cpu_get cpufreq_cpu_get_raw @@ -309,78 +831,177 @@ cpufreq_register_driver cpufreq_table_index_unsorted cpuhp_tasks_frozen - __cpu_online_mask dev_pm_opp_add - _find_first_bit freq_qos_add_request freq_qos_update_request get_cpu_device - nr_cpu_ids - scnprintf sysfs_create_file_ns system_state -# required by exynos-bts.ko - devm_kstrdup - _dev_notice +# required by exynos-adv-tracer-s2d.ko + simple_strtoul # required by exynos-chipid_v2.ko - kasprintf of_find_node_opts_by_path soc_device_register subsys_system_register +# required by exynos-coresight.ko + __cpuhp_setup_state_cpuslocked + cpu_pm_unregister_notifier + __cpu_present_mask + +# required by exynos-debug-test.ko + _ctype + remove_cpu + smp_call_function + smp_call_function_single + +# required by exynos-ehld.ko + sprint_symbol + +# required by exynos-itmon.ko + bitmap_print_to_pagebuf + free_pages + __get_free_pages + int_pow + # required by exynos-pd.ko - atomic_notifier_call_chain - kstrdup of_genpd_add_provider_simple pm_genpd_add_subdomain pm_genpd_init -# required by exynos-pd_el3.ko - __arm_smccc_smc +# required by exynos9drm.ko + add_wait_queue + bus_find_device + component_add + component_bind_all + component_del + component_master_add_with_match + component_master_del + component_unbind_all + console_trylock + console_unlock + debugfs_lookup + device_rename + dma_buf_mmap + drm_atomic_bridge_chain_enable + drm_atomic_bridge_chain_pre_enable + drm_atomic_helper_check + drm_atomic_helper_cleanup_planes + drm_atomic_helper_commit + drm_atomic_helper_commit_modeset_disables + drm_atomic_helper_commit_planes + __drm_atomic_helper_connector_destroy_state + __drm_atomic_helper_connector_duplicate_state + drm_atomic_helper_crtc_destroy_state + drm_atomic_helper_crtc_duplicate_state + drm_atomic_helper_crtc_reset + drm_atomic_helper_disable_plane + drm_atomic_helper_disable_planes_on_crtc + drm_atomic_helper_fake_vblank + drm_atomic_helper_page_flip + __drm_atomic_helper_plane_destroy_state + __drm_atomic_helper_plane_duplicate_state + __drm_atomic_helper_plane_reset + drm_atomic_helper_set_config + drm_atomic_helper_shutdown + drm_atomic_helper_update_plane + drm_atomic_helper_wait_for_vblanks + drm_bridge_attach + drm_crtc_arm_vblank_event + drm_crtc_handle_vblank + drm_crtc_init_with_planes + drm_crtc_vblank_get + drm_crtc_vblank_waitqueue + drm_dev_alloc + drm_display_mode_to_videomode + drm_flip_work_cleanup + drm_flip_work_commit + drm_flip_work_init + drm_flip_work_queue + drm_format_info + drm_gem_create_mmap_offset + drm_gem_vm_close + drm_gem_vm_open + drm_get_connector_status_name + drm_get_format_info + drm_mode_config_helper_resume + drm_mode_config_helper_suspend + drm_mode_config_reset + drm_mode_object_get + drm_of_component_match_add + drm_of_crtc_port_mask + drm_of_find_possible_crtcs + drm_panel_disable + drm_panel_enable + drm_panel_get_modes + drm_panel_prepare + drm_panel_unprepare + drm_plane_cleanup + drm_plane_create_alpha_property + drm_plane_create_blend_mode_property + drm_plane_create_zpos_immutable_property + drm_plane_create_zpos_property + __drm_printfn_info + drm_property_create + drm_property_create_blob + drm_rotation_simplify + drm_state_dump + drm_universal_plane_init + drm_writeback_connector_init + drm_writeback_queue_job + drm_writeback_signal_completion + gpiod_to_irq + kstrtobool + kstrtou8 + mipi_dsi_host_register + mipi_dsi_host_unregister + of_drm_find_bridge + of_drm_find_panel + of_find_i2c_device_by_node + of_graph_get_endpoint_by_regs + of_graph_get_next_endpoint + of_graph_get_port_by_id + of_graph_get_remote_port + of_graph_get_remote_port_parent + of_phandle_iterator_init + of_phandle_iterator_next + param_ops_long + platform_bus_type + platform_find_device_by_driver + seq_hex_dump + seq_release + strnstr + synchronize_irq + vmalloc_to_page -# required by exynos-pm-time.ko - jiffies_to_msecs - -# required by exynos-pm.ko - of_property_count_elems_of_size - -# required by exynos_acpm.ko - generic_file_llseek - simple_attr_open - simple_attr_read - simple_attr_release - simple_attr_write - wait_for_completion_interruptible_timeout +# required by exynos_mfc.ko + clk_get + clk_put + hex_dump_to_buffer + iommu_map + iommu_map_sg + iommu_unmap + __sw_hweight64 + _totalram_pages + vb2_dqbuf + vb2_plane_vaddr + vb2_poll + vb2_qbuf + vb2_querybuf + vb2_queue_release + vb2_reqbufs + vb2_streamoff + vb2_streamon # required by exynos_pm_qos.ko - blocking_notifier_chain_unregister kstrtoint_from_user - misc_register - noop_llseek - _raw_read_lock_irqsave - _raw_read_unlock_irqrestore - _raw_write_lock_irqsave - _raw_write_unlock_irqrestore - __usecs_to_jiffies # required by exynos_tty.ko - atomic_notifier_chain_register dma_get_slave_caps - dma_sync_single_for_cpu - dma_sync_single_for_device do_SAK handle_sysrq - iomem_resource - kmalloc_large - oops_in_progress - panic_notifier_list - _raw_spin_trylock - register_console - __release_region - __request_region - request_threaded_irq sysrq_mask tty_flip_buffer_push tty_insert_flip_string_fixed_flag @@ -401,28 +1022,48 @@ uart_write_wakeup # required by exynosauto_v920_thermal.ko - devm_thermal_of_zone_register devm_thermal_of_zone_unregister - of_device_is_compatible of_thermal_get_ntrips - strncpy - thermal_zone_device_update + +# required by gpu-sched.ko + mod_delayed_work_on + sched_set_fifo_low + wait_for_completion + __xa_alloc + xa_destroy + xa_erase + xa_find + xa_find_after + xa_store + +# required by hardlockup-watchdog.ko + cpus_read_lock + cpus_read_unlock + free_percpu + hrtimer_forward + hrtimer_try_to_cancel + +# required by hwmon.ko + __class_register + class_unregister + device_property_read_string + devres_free + devres_release + kobject_uevent_env + strpbrk + sysfs_notify # required by i2c-dev.ko bus_register_notifier bus_unregister_notifier cdev_device_add cdev_device_del - cdev_init - device_initialize - dev_set_name i2c_adapter_type i2c_bus_type i2c_for_each_dev i2c_get_adapter i2c_put_adapter i2c_smbus_xfer - i2c_transfer i2c_transfer_buffer_flags i2c_verify_client register_chrdev_region @@ -430,21 +1071,34 @@ # required by i2c-exynosauto.ko cpu_bit_bitmap - i2c_del_adapter - __irq_apply_affinity_hint + +# required by lontium-lt9611.ko + drm_hdmi_avi_infoframe_from_display_mode + platform_device_register_full + regmap_multi_reg_write + regulator_set_load + +# required by panel-samsung-dummy.ko + drm_panel_add + drm_panel_init + drm_panel_remove + +# required by panic-fingerprint.ko + stack_trace_save + +# required by pcs_xpcs.ko + mdiobus_modify_changed + phylink_mii_c22_pcs_decode_state + phylink_mii_c22_pcs_encode_advertisement # required by phy-exynosauto-usbdrd-super.ko __clk_is_enabled - __devm_of_phy_provider_register - devm_phy_create gpio_request # required by pinctrl-samsung-core.ko device_get_next_child_node devm_gpiochip_add_data_with_key - devm_kmemdup devm_pinctrl_register - fwnode_handle_put fwnode_property_present generic_handle_domain_irq gpiochip_generic_free @@ -452,18 +1106,9 @@ gpiochip_get_data gpiochip_lock_as_irq gpiochip_unlock_as_irq - handle_edge_irq - irq_create_mapping_affinity - __irq_domain_add - irq_domain_remove irq_domain_xlate_twocell - irq_set_chained_handler_and_data - kmemdup - krealloc - of_device_get_match_data of_fwnode_ops of_node_name_eq - of_prop_next_string pinctrl_add_gpio_range pinctrl_dev_get_drvdata pinctrl_remove_gpio_range @@ -471,35 +1116,52 @@ # required by pl330.ko amba_driver_register amba_driver_unregister - dev_err_probe - __devm_reset_control_get dma_async_device_register dma_async_device_unregister dma_async_tx_descriptor_init dmaengine_unmap_put dma_get_slave_channel - dma_map_resource - dma_unmap_resource of_dma_controller_free of_dma_controller_register - pm_runtime_force_resume - pm_runtime_force_suspend pm_runtime_irq_safe - reset_control_assert - reset_control_deassert - sg_next tasklet_kill __tasklet_schedule tasklet_setup # required by pwm-samsung.ko - devm_platform_ioremap_resource - of_prop_next_u32 pwmchip_add pwmchip_remove pwm_get_chip_data pwm_set_chip_data +# required by realtek.ko + __genphy_config_aneg + genphy_handle_interrupt_no_ack + genphy_read_abilities + genphy_read_mmd_unsupported + genphy_read_status + genphy_resume + genphy_soft_reset + genphy_suspend + genphy_update_link + genphy_write_mmd_unsupported + __mdiobus_read + __mdiobus_write + phy_basic_t1_features + phy_drivers_register + phy_drivers_unregister + phy_error + __phy_modify + phy_modify + phy_modify_changed + phy_modify_paged + phy_modify_paged_changed + phy_read_paged + phy_restore_page + phy_select_page + phy_trigger_machine + phy_write_paged + # required by rtc-s2vps02.ko devm_rtc_device_register pm_wakeup_ws_event @@ -507,13 +1169,350 @@ rtc_valid_tm # required by s2vps02-master-mfd.ko - destroy_workqueue __devm_irq_alloc_descs handle_nested_irq +# required by samsung-bridge-dummy.ko + drm_atomic_helper_bridge_propagate_bus_fmt + +# required by samsung-iommu-group-v9.ko + iommu_group_alloc + iommu_group_set_name + +# required by samsung-secure-iova.ko + gen_pool_create + gen_pool_destroy + gen_pool_first_fit_align + +# required by samsung_dma_heap.ko + adjust_managed_page_count + anon_inode_getfile + deferred_free + dma_buf_get_flags + dmabuf_page_pool_alloc + dmabuf_page_pool_create + dmabuf_page_pool_destroy + dmabuf_page_pool_free + dmabuf_page_pool_get_size + dma_heap_add + dma_heap_get_dev + dma_heap_get_drvdata + dma_heap_get_name + dma_sync_sg_for_cpu + is_dma_buf_file + iterate_fd + misc_deregister + remap_pfn_range + __sg_page_iter_next + __sg_page_iter_start + __traceiter_android_vh_show_mem + __tracepoint_android_vh_show_mem + +# required by samsung_iommu_v9.ko + device_link_add + device_link_del + iommu_alloc_resv_region + iommu_device_register + iommu_device_sysfs_add + iommu_device_sysfs_remove + iommu_device_unlink + iommu_device_unregister + iommu_fwspec_add_ids + iommu_fwspec_free + iommu_group_for_each_dev + iommu_group_get + iommu_group_get_iommudata + iommu_group_remove_device + iommu_group_set_iommudata + iommu_report_device_fault + of_find_node_with_property + +# required by scaler.ko + clk_set_parent + dma_fence_default_wait + dma_heap_buffer_free + sync_file_get_fence + v4l2_ctrl_handler_free + v4l2_ctrl_handler_init_class + v4l2_ctrl_handler_setup + v4l2_ctrl_new_custom + v4l2_ctrl_new_std + v4l2_m2m_buf_queue + v4l2_m2m_buf_remove + v4l2_m2m_ctx_init + v4l2_m2m_ctx_release + v4l2_m2m_dqbuf + v4l2_m2m_get_curr_priv + v4l2_m2m_get_vq + v4l2_m2m_init + v4l2_m2m_job_finish + v4l2_m2m_mmap + v4l2_m2m_next_buf + v4l2_m2m_poll + v4l2_m2m_qbuf + v4l2_m2m_querybuf + v4l2_m2m_release + v4l2_m2m_reqbufs + v4l2_m2m_streamoff + v4l2_m2m_streamon + v4l2_m2m_try_schedule + v4l_bound_align_image + work_busy + +# required by sgpu.ko + autoremove_wake_function + backlight_device_register + backlight_device_unregister + __bitmap_andnot + __bitmap_xor + bpf_trace_run5 + bpf_trace_run9 + capable + __devm_drm_dev_alloc + devm_iounmap + dma_buf_dynamic_attach + dma_buf_move_notify + dma_buf_pin + dma_buf_unpin + dma_fence_array_create + dma_fence_chain_ops + dma_fence_chain_walk + dma_fence_get_status + dma_fence_get_stub + dma_fence_signal_locked + dma_fence_wait_any_timeout + dma_get_required_mask + dma_resv_add_fence + dma_resv_get_fences + dma_resv_get_singleton + dma_resv_iter_first_unlocked + dma_resv_iter_next_unlocked + dma_resv_reserve_fences + dma_resv_test_signaled + dma_resv_wait_timeout + do_wait_intr + down_read_killable + down_read_trylock + drain_workqueue + drm_connector_attach_dp_subconnector_property + drm_connector_init_with_ddc + drm_crtc_helper_set_config + drm_crtc_helper_set_mode + drm_crtc_init + drm_crtc_vblank_helper_get_vblank_timestamp + drm_cvt_mode + drm_dev_enter + drm_dev_exit + drm_edid_header_is_valid + drm_edid_is_valid + drm_framebuffer_unregister_private + drm_gem_dmabuf_mmap + drm_gem_dmabuf_release + drm_gem_dmabuf_vmap + drm_gem_dmabuf_vunmap + drm_gem_fb_create_handle + drm_gem_fb_destroy + drm_gem_prime_export + drm_gem_prime_mmap + drm_handle_vblank + drm_helper_disable_unused_functions + drm_helper_force_disable_all + drm_is_current_master + drm_kms_helper_is_poll_worker + drm_kms_helper_poll_disable + drm_kms_helper_poll_enable + drm_mm_init + drm_mm_insert_node_in_range + drm_mm_print + drm_mm_remove_node + drm_mm_takedown + drm_mode_create_scaling_mode_property + drm_mode_crtc_set_gamma_size + drm_mode_set_crtcinfo + drm_mode_set_name + drm_prime_pages_to_sg + drm_prime_sg_to_dma_addr_array + __drm_printfn_seq_file + drm_property_create_enum + __drm_puts_seq_file + drm_syncobj_add_point + drm_syncobj_create + drm_syncobj_find + drm_syncobj_find_fence + drm_syncobj_free + drm_syncobj_get_fd + drm_syncobj_get_handle + drm_syncobj_replace_fence + __fdget + _find_first_zero_bit + __folio_put + __get_task_comm + handle_simple_irq + i2c_bit_add_bus + i2c_new_client_device + ida_destroy + idr_alloc + idr_destroy + idr_find + idr_for_each + idr_get_next + idr_remove + idr_replace + iommu_iova_to_phys + jiffies_to_usecs + ktime_get_ts64 + __memcpy_fromio + __memcpy_toio + memremap + memunmap + mmu_notifier_synchronize + nsecs_to_jiffies + page_pinner_inited + __page_pinner_put_page + param_ops_charp + param_ops_hexint + pci_alloc_irq_vectors_affinity + pci_assign_unassigned_bus_resources + pci_bus_resource_n + pci_clear_master + pcie_bandwidth_available + pcie_get_speed_cap + pci_enable_atomic_ops_to_root + pci_enable_pcie_error_reporting + pci_free_irq_vectors + pci_get_domain_bus_and_slot + pci_iomap + pci_iounmap + pci_irq_vector + pci_map_rom + pci_msix_vec_count + pci_read_config_word + pci_release_resource + pci_resize_resource + pci_set_master + pci_unmap_rom + pci_write_config_dword + pci_write_config_word + perf_pmu_unregister + pid_task + pin_user_pages_fast + pm_runtime_autosuspend_expiration + power_supply_is_system_supplied + __printk_ratelimit + radix_tree_tagged + __rb_erase_color + rb_first_postorder + __rb_insert_augmented + rb_next + rb_next_postorder + __rcu_read_lock + __rcu_read_unlock + seq_write + set_normalized_timespec64 + sg_alloc_table_from_pages_segment + si_meminfo + sysfs_create_files + sysfs_remove_files + __traceiter_gpu_mem_total + __tracepoint_gpu_mem_total + trace_print_array_seq + ttm_bo_init_reserved + ttm_bo_kmap + ttm_bo_kunmap + ttm_bo_lock_delayed_workqueue + ttm_bo_mem_space + ttm_bo_move_accel_cleanup + ttm_bo_move_memcpy + ttm_bo_move_to_lru_tail + ttm_bo_pin + ttm_bo_put + ttm_bo_set_bulk_move + ttm_bo_unlock_delayed_workqueue + ttm_bo_unpin + ttm_bo_validate + ttm_bo_vm_access + ttm_bo_vm_close + ttm_bo_vm_dummy_page + ttm_bo_vm_fault_reserved + ttm_bo_vm_open + ttm_bo_vm_reserve + ttm_device_fini + ttm_device_init + ttm_eu_backoff_reservation + ttm_eu_fence_buffer_objects + ttm_eu_reserve_buffers + ttm_glob + ttm_lru_bulk_move_tail + ttm_pool_alloc + ttm_pool_debugfs + ttm_pool_free + ttm_range_man_fini_nocheck + ttm_range_man_init_nocheck + ttm_resource_fini + ttm_resource_free + ttm_resource_init + ttm_resource_manager_evict_all + ttm_resource_manager_init + ttm_resource_manager_usage + ttm_sg_tt_init + ttm_tt_fini + unpin_user_page + up_read + vm_get_page_prot + __wake_up_locked + ww_mutex_lock_interruptible + ww_mutex_trylock + +# required by snd-soc-hdmi-codec.ko + hdmi_audio_infoframe_init + snd_ctl_add + snd_ctl_new1 + snd_pcm_add_chmap_ctls + snd_pcm_create_iec958_consumer_default + snd_pcm_fill_iec958_consumer + snd_pcm_fill_iec958_consumer_hw_params + snd_pcm_hw_constraint_eld + snd_soc_jack_report + +# required by snd-soc-samsung-abox-core.ko + __devm_regmap_init + __devm_regmap_init_mmio_clk + __devm_request_region + dma_mmap_attrs + irq_set_affinity + kthread_bind + __platform_register_drivers + platform_unregister_drivers + pm_runtime_no_callbacks + snd_ctl_enum_info + snd_pcm_hw_constraint_integer + snd_pcm_lib_free_pages + snd_pcm_lib_ioctl + snd_pcm_lib_malloc_pages + snd_pcm_lib_preallocate_free_for_all + snd_pcm_period_elapsed + snd_soc_add_component_controls + snd_soc_component_init_regmap + snd_soc_dapm_kcontrol_widget + snd_soc_dapm_mux_update_power + snd_soc_dapm_new_control + snd_soc_dapm_new_controls + snd_soc_set_runtime_hwparams + snd_soc_unregister_component + stpcpy + __tasklet_hi_schedule + +# required by snd-soc-tas6424.ko + regcache_cache_only + +# required by snd-soc-tlv320adcx140.ko + device_property_read_u8_array + gpiod_set_raw_value_cansleep + snd_soc_dapm_get_volsw + snd_soc_dapm_put_volsw + # required by spi-exynosauto.ko gpio_free - gpio_request_one __spi_alloc_controller spi_controller_resume spi_controller_suspend @@ -525,21 +1524,166 @@ # required by spidev.ko device_property_match_string driver_unregister - _raw_spin_lock_irq - _raw_spin_unlock_irq - __register_chrdev __spi_register_driver spi_setup spi_sync stream_open - __unregister_chrdev + +# required by stmmac-platform.ko + devm_clk_get_optional + of_get_mac_address + of_phy_is_fixed_link + +# required by stmmac.ko + bitmap_free + bitmap_zalloc + bpf_dispatcher_xdp_func + bpf_master_redirect_enabled_key + bpf_prog_put + bpf_stats_enabled_key + bpf_warn_invalid_xdp_action + consume_skb + debugfs_rename + dev_addr_mod + dev_close + device_set_wakeup_enable + __dev_kfree_skb_any + devm_alloc_etherdev_mqs + dev_open + do_trace_netlink_extack + dql_completed + dql_reset + eth_mac_addr + ethtool_convert_legacy_u32_to_link_mode + ethtool_convert_link_mode_to_legacy_u32 + ethtool_op_get_link + ethtool_op_get_ts_info + eth_type_trans + flow_block_cb_setup_simple + flow_rule_match_basic + flow_rule_match_ipv4_addrs + flow_rule_match_ports + flow_rule_match_vlan + fwnode_get_named_child_node + fwnode_get_phy_node + get_device_system_crosststamp + __local_bh_enable_ip + mdiobus_alloc_size + mdiobus_free + mdiobus_get_phy + mdiobus_unregister + mdio_device_create + mdio_device_free + __napi_alloc_skb + napi_complete_done + napi_disable + napi_enable + napi_gro_receive + __napi_schedule + napi_schedule_prep + netdev_alert + netdev_pick_tx + netdev_rss_key_fill + netdev_update_features + netif_carrier_off + netif_carrier_on + netif_device_attach + netif_device_detach + netif_napi_add_weight + __netif_napi_del + netif_schedule_queue + netif_set_real_num_rx_queues + netif_set_real_num_tx_queues + netif_tx_wake_queue + net_ratelimit + __of_mdiobus_register + page_pool_alloc_pages + page_pool_create + page_pool_destroy + page_pool_put_defragged_page + page_pool_release_page + phy_attached_info + phylink_connect_phy + phylink_destroy + phylink_disconnect_phy + phylink_ethtool_get_eee + phylink_ethtool_get_pauseparam + phylink_ethtool_get_wol + phylink_ethtool_ksettings_get + phylink_ethtool_ksettings_set + phylink_ethtool_nway_reset + phylink_ethtool_set_eee + phylink_ethtool_set_pauseparam + phylink_ethtool_set_wol + phylink_expects_phy + phylink_fwnode_phy_connect + phylink_get_eee_err + phylink_mii_ioctl + phylink_resume + phylink_speed_down + phylink_speed_up + phylink_start + phylink_stop + phylink_suspend + pinctrl_pm_select_default_state + pinctrl_pm_select_sleep_state + ptp_clock_event + ptp_clock_index + ptp_clock_register + ptp_clock_unregister + _raw_spin_lock_bh + _raw_spin_unlock_bh + register_netdev + register_netdevice_notifier + reset_control_reset + rtnl_lock + rtnl_unlock + skb_add_rx_frag + skb_pull + skb_put + skb_tstamp_tx + synchronize_net + synchronize_rcu + __traceiter_xdp_exception + __tracepoint_xdp_exception + unregister_netdev + unregister_netdevice_notifier + xdp_convert_zc_to_xdp_frame + xdp_do_flush + xdp_do_redirect + xdp_master_redirect + xdp_return_frame + xdp_return_frame_rx_napi + xdp_rxq_info_is_reg + __xdp_rxq_info_reg + xdp_rxq_info_reg_mem_model + xdp_rxq_info_unreg + xdp_rxq_info_unreg_mem_model + xdp_warn + xp_alloc + xp_dma_map + xp_dma_sync_for_cpu_slow + xp_dma_sync_for_device_slow + xp_dma_unmap + xp_free + xp_raw_get_dma + xp_set_rxq_info + xsk_clear_rx_need_wakeup + xsk_get_pool_from_qid + xsk_set_rx_need_wakeup + xsk_set_tx_need_wakeup + xsk_tx_completed + xsk_tx_peek_desc + xsk_tx_release + xsk_uses_need_wakeup + +# required by sxgmac.ko + alloc_chrdev_region + cdev_add + gpiod_direction_output + gpiod_set_value # required by ufs-exynosauto-core.ko - _find_next_bit - flush_work - kstrtoull - of_property_read_variable_u16_array - of_property_read_variable_u8_array scsi_dma_unmap scsi_done ufshcd_auto_hibern8_update From bf51ba7b3c9f770c458547b26f2fffb272bf244c Mon Sep 17 00:00:00 2001 From: Jindong Yue Date: Tue, 26 Sep 2023 13:33:56 +0800 Subject: [PATCH 84/99] ANDROID: ABI: Update symbol list for imx 1 function symbol(s) added 'long schedule_timeout_idle(long)' Bug: 283014063 Signed-off-by: Jindong Yue Change-Id: I252020da470046ed5562ead6dec5aee0a5e111ab --- android/abi_gki_aarch64.stg | 10 ++++++++++ android/abi_gki_aarch64_imx | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 73b356cb3685..18a793dbdf27 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -379787,6 +379787,15 @@ elf_symbol { type_id: 0x9823bcf6 full_name: "schedule_timeout" } +elf_symbol { + id: 0x3bc1cc84 + name: "schedule_timeout_idle" + is_defined: true + symbol_type: FUNCTION + crc: 0x7807f0f8 + type_id: 0x9823bcf6 + full_name: "schedule_timeout_idle" +} elf_symbol { id: 0xb05cd7bd name: "schedule_timeout_interruptible" @@ -401104,6 +401113,7 @@ interface { symbol_id: 0x11ca9115 symbol_id: 0xf4841d33 symbol_id: 0x34a94ed3 + symbol_id: 0x3bc1cc84 symbol_id: 0xb05cd7bd symbol_id: 0xf41c5e13 symbol_id: 0xafbfe5ff diff --git a/android/abi_gki_aarch64_imx b/android/abi_gki_aarch64_imx index 478cb5cab475..53edd1d3b5d7 100644 --- a/android/abi_gki_aarch64_imx +++ b/android/abi_gki_aarch64_imx @@ -492,6 +492,9 @@ dma_get_sgtable_attrs dma_get_slave_channel dma_heap_add + dma_heap_buffer_alloc + dma_heap_buffer_free + dma_heap_find dma_heap_get_dev dma_heap_get_drvdata dma_heap_get_name @@ -1164,6 +1167,8 @@ kvfree kvfree_call_rcu kvmalloc_node + led_classdev_register_ext + led_classdev_unregister led_init_default_state_get __list_add_valid __list_del_entry_valid @@ -1820,6 +1825,7 @@ schedule schedule_hrtimeout schedule_timeout + schedule_timeout_idle schedule_timeout_uninterruptible scmi_driver_register scmi_driver_unregister From 7c793b4d8fff95a9ce4774a20381f18048f4fc93 Mon Sep 17 00:00:00 2001 From: Ashay Jaiswal Date: Tue, 17 Oct 2023 11:09:53 +0530 Subject: [PATCH 85/99] ANDROID: abi_gki_aarch64_qcom: update abi symbols add android_vh_alter_mutex_list_add symbol to support manipulation of mutex waiter list. Symbols added: __traceiter_android_vh_alter_mutex_list_add __tracepoint_android_vh_alter_mutex_list_add Bug: 305864342 Change-Id: Ic423dc37b5cbe7bb3345c95cdbe8ebb4445dfa85 Signed-off-by: Ashay Jaiswal --- android/abi_gki_aarch64_qcom | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 73632e9e1b31..1797eebd2db0 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -3380,6 +3380,7 @@ __traceiter_android_rvh_update_thermal_stats __traceiter_android_rvh_util_est_update __traceiter_android_rvh_wake_up_new_task + __traceiter_android_vh_alter_mutex_list_add __traceiter_android_vh_audio_usb_offload_connect __traceiter_android_vh_binder_restore_priority __traceiter_android_vh_binder_set_priority @@ -3526,6 +3527,7 @@ __tracepoint_android_rvh_update_thermal_stats __tracepoint_android_rvh_util_est_update __tracepoint_android_rvh_wake_up_new_task + __tracepoint_android_vh_alter_mutex_list_add __tracepoint_android_vh_audio_usb_offload_connect __tracepoint_android_vh_binder_restore_priority __tracepoint_android_vh_binder_set_priority From e5f37a2c46a0dbf896f9d42c1aa369d2591f6dc6 Mon Sep 17 00:00:00 2001 From: Vlad Buslov Date: Mon, 12 Jun 2023 09:57:12 +0200 Subject: [PATCH 86/99] UPSTREAM: selftests/tc-testing: Remove configs that no longer exist Some qdiscs and classifiers have recently been retired from kernel. However, tc-testing config is still cluttered with them which causes noise when using merge_config.sh script to update existing config for tc-testing compatibility. Remove the config settings for affected qdiscs and classifiers. Bug: 254441685 Fixes: fb38306ceb9e ("net/sched: Retire ATM qdisc") Fixes: 051d44209842 ("net/sched: Retire CBQ qdisc") Fixes: bbe77c14ee61 ("net/sched: Retire dsmark qdisc") Fixes: 265b4da82dbf ("net/sched: Retire rsvp classifier") Fixes: 8c710f75256b ("net/sched: Retire tcindex classifier") Signed-off-by: Vlad Buslov Reviewed-by: Pedro Tammela Signed-off-by: Jakub Kicinski (cherry picked from commit 11b8b2e70a9b4a1b60eefc0cd79cd2d3c08545f1) Signed-off-by: Lee Jones Change-Id: Ifd5de69f462686075f43c7c98937eb7999a4bd17 --- tools/testing/selftests/tc-testing/config | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tools/testing/selftests/tc-testing/config b/tools/testing/selftests/tc-testing/config index 4638c63a339f..e36fc6824201 100644 --- a/tools/testing/selftests/tc-testing/config +++ b/tools/testing/selftests/tc-testing/config @@ -12,14 +12,11 @@ CONFIG_NET_SCHED=y # # Queueing/Scheduling # -CONFIG_NET_SCH_ATM=m CONFIG_NET_SCH_CAKE=m -CONFIG_NET_SCH_CBQ=m CONFIG_NET_SCH_CBS=m CONFIG_NET_SCH_CHOKE=m CONFIG_NET_SCH_CODEL=m CONFIG_NET_SCH_DRR=m -CONFIG_NET_SCH_DSMARK=m CONFIG_NET_SCH_ETF=m CONFIG_NET_SCH_FQ=m CONFIG_NET_SCH_FQ_CODEL=m @@ -57,8 +54,6 @@ CONFIG_NET_CLS_FLOW=m CONFIG_NET_CLS_FLOWER=m CONFIG_NET_CLS_MATCHALL=m CONFIG_NET_CLS_ROUTE4=m -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_TCINDEX=m CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_STACK=32 CONFIG_NET_EMATCH_CMP=m From 87cd3d689e0075a3eba9e3a805b3a7385345e2cf Mon Sep 17 00:00:00 2001 From: Su Hui Date: Thu, 8 Jun 2023 10:19:34 +0800 Subject: [PATCH 87/99] UPSTREAM: iommu/amd: Fix possible memory leak of 'domain' Move allocation code down to avoid memory leak. Bug: 254441685 Fixes: 29f54745f245 ("iommu/amd: Add missing domain type checks") Signed-off-by: Su Hui Reviewed-by: Jason Gunthorpe Reviewed-by: Jerry Snitselaar Reviewed-by: Vasant Hegde Link: https://lore.kernel.org/r/20230608021933.856045-1-suhui@nfschina.com Signed-off-by: Joerg Roedel (cherry picked from commit 5b00369fcf6d1ff9050b94800dc596925ff3623f) Signed-off-by: Lee Jones Change-Id: If78fac206bfdc899bed14335ed46eda3946591a2 --- drivers/iommu/amd/iommu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index d7676008ff57..34674cc428e5 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2055,10 +2055,6 @@ static struct protection_domain *protection_domain_alloc(unsigned int type) int mode = DEFAULT_PGTABLE_LEVEL; int ret; - domain = kzalloc(sizeof(*domain), GFP_KERNEL); - if (!domain) - return NULL; - /* * Force IOMMU v1 page table when iommu=pt and * when allocating domain for pass-through devices. @@ -2074,6 +2070,10 @@ static struct protection_domain *protection_domain_alloc(unsigned int type) return NULL; } + domain = kzalloc(sizeof(*domain), GFP_KERNEL); + if (!domain) + return NULL; + switch (pgtable) { case AMD_IOMMU_V1: ret = protection_domain_init_v1(domain, mode); From 1c904089319512706985e379d992f9bf05bfc645 Mon Sep 17 00:00:00 2001 From: Yu Zhao Date: Mon, 19 Jun 2023 13:38:21 -0600 Subject: [PATCH 88/99] UPSTREAM: mm/mglru: make memcg_lru->lock irq safe lru_gen_rotate_memcg() can happen in softirq if memory.soft_limit_in_bytes is set. This requires memcg_lru->lock to be irq safe. Lockdep warns on this. This problem only affects memcg v1. Bug: 254441685 Link: https://lkml.kernel.org/r/20230619193821.2710944-1-yuzhao@google.com Fixes: e4dde56cd208 ("mm: multi-gen LRU: per-node lru_gen_folio lists") Signed-off-by: Yu Zhao Reported-by: syzbot+87c490fd2be656269b6a@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=87c490fd2be656269b6a Reviewed-by: Yosry Ahmed Cc: Signed-off-by: Andrew Morton (cherry picked from commit 814bc1de03ea4361101408e63a68e4b82aef22cb) Signed-off-by: Lee Jones Change-Id: I8ae02e92135faad78be6509c3bf18109b0f97a13 --- mm/vmscan.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index de0a079c029f..001767ecf169 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4702,10 +4702,11 @@ static void lru_gen_rotate_memcg(struct lruvec *lruvec, int op) { int seg; int old, new; + unsigned long flags; int bin = get_random_u32_below(MEMCG_NR_BINS); struct pglist_data *pgdat = lruvec_pgdat(lruvec); - spin_lock(&pgdat->memcg_lru.lock); + spin_lock_irqsave(&pgdat->memcg_lru.lock, flags); VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list)); @@ -4740,7 +4741,7 @@ static void lru_gen_rotate_memcg(struct lruvec *lruvec, int op) if (!pgdat->memcg_lru.nr_memcgs[old] && old == get_memcg_gen(pgdat->memcg_lru.seq)) WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1); - spin_unlock(&pgdat->memcg_lru.lock); + spin_unlock_irqrestore(&pgdat->memcg_lru.lock, flags); } void lru_gen_online_memcg(struct mem_cgroup *memcg) @@ -4753,7 +4754,7 @@ void lru_gen_online_memcg(struct mem_cgroup *memcg) struct pglist_data *pgdat = NODE_DATA(nid); struct lruvec *lruvec = get_lruvec(memcg, nid); - spin_lock(&pgdat->memcg_lru.lock); + spin_lock_irq(&pgdat->memcg_lru.lock); VM_WARN_ON_ONCE(!hlist_nulls_unhashed(&lruvec->lrugen.list)); @@ -4764,7 +4765,7 @@ void lru_gen_online_memcg(struct mem_cgroup *memcg) lruvec->lrugen.gen = gen; - spin_unlock(&pgdat->memcg_lru.lock); + spin_unlock_irq(&pgdat->memcg_lru.lock); } } @@ -4788,7 +4789,7 @@ void lru_gen_release_memcg(struct mem_cgroup *memcg) struct pglist_data *pgdat = NODE_DATA(nid); struct lruvec *lruvec = get_lruvec(memcg, nid); - spin_lock(&pgdat->memcg_lru.lock); + spin_lock_irq(&pgdat->memcg_lru.lock); VM_WARN_ON_ONCE(hlist_nulls_unhashed(&lruvec->lrugen.list)); @@ -4800,7 +4801,7 @@ void lru_gen_release_memcg(struct mem_cgroup *memcg) if (!pgdat->memcg_lru.nr_memcgs[gen] && gen == get_memcg_gen(pgdat->memcg_lru.seq)) WRITE_ONCE(pgdat->memcg_lru.seq, pgdat->memcg_lru.seq + 1); - spin_unlock(&pgdat->memcg_lru.lock); + spin_unlock_irq(&pgdat->memcg_lru.lock); } } From fadd5042067c41ecdc73058ca12ddd3894640745 Mon Sep 17 00:00:00 2001 From: Wander Lairson Costa Date: Mon, 28 Aug 2023 19:12:55 -0300 Subject: [PATCH 89/99] UPSTREAM: netfilter: xt_sctp: validate the flag_info count commit e99476497687ef9e850748fe6d232264f30bc8f9 upstream. sctp_mt_check doesn't validate the flag_count field. An attacker can take advantage of that to trigger a OOB read and leak memory information. Add the field validation in the checkentry function. Bug: 304913898 Fixes: 2e4e6a17af35 ("[NETFILTER] x_tables: Abstraction layer for {ip,ip6,arp}_tables") Cc: stable@vger.kernel.org Reported-by: Lucas Leong Signed-off-by: Wander Lairson Costa Signed-off-by: Pablo Neira Ayuso Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 4921f9349b66da7c5a2b6418fe45e9ae0ae72924) Signed-off-by: Lee Jones Change-Id: Ife4e69f6218fdaca2a8647b5ed00d875a5ed0d34 --- net/netfilter/xt_sctp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/netfilter/xt_sctp.c b/net/netfilter/xt_sctp.c index 680015ba7cb6..d4bf089c9e3f 100644 --- a/net/netfilter/xt_sctp.c +++ b/net/netfilter/xt_sctp.c @@ -150,6 +150,8 @@ static int sctp_mt_check(const struct xt_mtchk_param *par) { const struct xt_sctp_info *info = par->matchinfo; + if (info->flag_count > ARRAY_SIZE(info->flag_info)) + return -EINVAL; if (info->flags & ~XT_SCTP_VALID_FLAGS) return -EINVAL; if (info->invflags & ~XT_SCTP_VALID_FLAGS) From 2fff9f7cd4985ec2831c03666f59d195b45d5baa Mon Sep 17 00:00:00 2001 From: Venkata Rao Kakani Date: Mon, 16 Oct 2023 12:37:39 +0530 Subject: [PATCH 90/99] ANDROID: vendor hooks: Enable Vendor hook to register smmu driver to dedicated iommu bus defined by vendor. Current implementation of iommu busses driver has temporarily enforce global restriction to a single driver. This was already the de-facto behaviour, since any possible combination of existing drivers would compete for at least the PCI or platform bus. Due to this restriction we are not able to probe SMMU v3 driver for PCI bus. There is an ongoing work in upstream(https://lore.kernel.org/linux-iommu/cover.1696253096.git.robin.murphy@arm.com/#t) to fix this but we can't backport now as still review in progress. However, Some of our targets have both SMMU v2 (used by all peripherals except PCIe) and SMMU v3 (PCie) and they are expected to co-exit in current kernel version. To cater this requirement, we have implemented a vendor hook, which will skip the pci bus probe for smmuv2 and in smmuv3 skips all iommu buses execept pcie bus. Bug: 305648820 Signed-off-by: Venkata Rao Kakani Change-Id: I9304962a7fc7afad93295cc08b3c68f8e340ffe8 --- drivers/android/vendor_hooks.c | 1 + drivers/iommu/iommu.c | 9 ++++++++- include/trace/hooks/iommu.h | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 0e9014adf5f6..c7b6b1553b30 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -343,3 +343,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_alloc_pages_may_oom_exit); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vmscan_kswapd_done); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_begin); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_compaction_end); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_bus_iommu_probe); diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index fc7286d801db..eebba280512f 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "dma-iommu.h" @@ -223,7 +224,8 @@ int iommu_device_register(struct iommu_device *iommu, * already the de-facto behaviour, since any possible combination of * existing drivers would compete for at least the PCI or platform bus. */ - if (iommu_buses[0]->iommu_ops && iommu_buses[0]->iommu_ops != ops) + if (iommu_buses[0]->iommu_ops && iommu_buses[0]->iommu_ops != ops + && !trace_android_vh_bus_iommu_probe_enabled()) return -EBUSY; iommu->ops = ops; @@ -235,6 +237,11 @@ int iommu_device_register(struct iommu_device *iommu, spin_unlock(&iommu_device_lock); for (int i = 0; i < ARRAY_SIZE(iommu_buses) && !err; i++) { + bool skip = false; + + trace_android_vh_bus_iommu_probe(iommu, iommu_buses[i], &skip); + if (skip) + continue; iommu_buses[i]->iommu_ops = ops; err = bus_iommu_probe(iommu_buses[i]); } diff --git a/include/trace/hooks/iommu.h b/include/trace/hooks/iommu.h index d36446f0dd40..604dbf00cf6a 100644 --- a/include/trace/hooks/iommu.h +++ b/include/trace/hooks/iommu.h @@ -15,6 +15,7 @@ DECLARE_RESTRICTED_HOOK(android_rvh_iommu_setup_dma_ops, struct iova_domain; struct iova; +struct iommu_device; DECLARE_RESTRICTED_HOOK(android_rvh_iommu_alloc_insert_iova, TP_PROTO(struct iova_domain *iovad, unsigned long size, @@ -40,6 +41,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_iommu_limit_align_shift, unsigned long *shift), TP_ARGS(iovad, size, shift), 1); +DECLARE_HOOK(android_vh_bus_iommu_probe, + TP_PROTO(struct iommu_device *iommu, struct bus_type *bus, bool *skip), + TP_ARGS(iommu, bus, skip)); + #endif /* _TRACE_HOOK_IOMMU_H */ /* This part must be outside protection */ From f82e0808101f93c089e3e24a20ad22b3268a65cb Mon Sep 17 00:00:00 2001 From: Venkata Rao Kakani Date: Wed, 18 Oct 2023 12:04:27 +0530 Subject: [PATCH 91/99] ANDROID: abi_gki_aarch64_qcom: update abi symbols add android_vh_bus_iommu_probe symbol to support manipulation of iommu device register for smmu devices. Symbols added: __traceiter_android_vh_bus_iommu_probe __tracepoint_android_vh_bus_iommu_probe Bug: 305648820 Signed-off-by: Venkata Rao Kakani Change-Id: I6ba84f05bb786c06a946ffd3a755e0605441e115 --- android/abi_gki_aarch64.stg | 28 ++++++++++++++++++++++++++++ android/abi_gki_aarch64_qcom | 2 ++ 2 files changed, 30 insertions(+) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 18a793dbdf27..dfe46101aa18 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -316209,6 +316209,14 @@ function { parameter_id: 0x3e10b518 parameter_id: 0x11cfee5a } +function { + id: 0x9b54acf0 + return_type_id: 0x6720d32f + parameter_id: 0x18bd6530 + parameter_id: 0x3ee88c45 + parameter_id: 0x03ce74cd + parameter_id: 0x11cfee5a +} function { id: 0x9b54b215 return_type_id: 0x6720d32f @@ -334705,6 +334713,15 @@ elf_symbol { type_id: 0x9a1a471c full_name: "__traceiter_android_vh_build_sched_domains" } +elf_symbol { + id: 0x31a78b8a + name: "__traceiter_android_vh_bus_iommu_probe" + is_defined: true + symbol_type: FUNCTION + crc: 0x61426ce9 + type_id: 0x9b54acf0 + full_name: "__traceiter_android_vh_bus_iommu_probe" +} elf_symbol { id: 0xa9225bf8 name: "__traceiter_android_vh_cgroup_attach" @@ -338395,6 +338412,15 @@ elf_symbol { type_id: 0x18ccbd2c full_name: "__tracepoint_android_vh_build_sched_domains" } +elf_symbol { + id: 0x527423dc + name: "__tracepoint_android_vh_bus_iommu_probe" + is_defined: true + symbol_type: OBJECT + crc: 0xa5acc533 + type_id: 0x18ccbd2c + full_name: "__tracepoint_android_vh_bus_iommu_probe" +} elf_symbol { id: 0xd3845a12 name: "__tracepoint_android_vh_cgroup_attach" @@ -396105,6 +396131,7 @@ interface { symbol_id: 0x61c82fb5 symbol_id: 0x53fba77d symbol_id: 0xe479b209 + symbol_id: 0x31a78b8a symbol_id: 0xa9225bf8 symbol_id: 0x33c527ab symbol_id: 0x5012fcd8 @@ -396515,6 +396542,7 @@ interface { symbol_id: 0x75b174bb symbol_id: 0x506628ab symbol_id: 0x0d3c7607 + symbol_id: 0x527423dc symbol_id: 0xd3845a12 symbol_id: 0x6f146fe1 symbol_id: 0x678bb5ba diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 1797eebd2db0..e428418c102e 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -3386,6 +3386,7 @@ __traceiter_android_vh_binder_set_priority __traceiter_android_vh_binder_wakeup_ilocked __traceiter_android_vh_build_sched_domains + __traceiter_android_vh_bus_iommu_probe __traceiter_android_vh_check_hibernation_swap __traceiter_android_vh_check_uninterrupt_tasks __traceiter_android_vh_check_uninterrupt_tasks_done @@ -3533,6 +3534,7 @@ __tracepoint_android_vh_binder_set_priority __tracepoint_android_vh_binder_wakeup_ilocked __tracepoint_android_vh_build_sched_domains + __tracepoint_android_vh_bus_iommu_probe __tracepoint_android_vh_check_hibernation_swap __tracepoint_android_vh_check_uninterrupt_tasks __tracepoint_android_vh_check_uninterrupt_tasks_done From fffe3966fa735fa5b94b8f36b9ace8e99eb32a82 Mon Sep 17 00:00:00 2001 From: JohnHsu Date: Fri, 20 Oct 2023 18:09:52 +0800 Subject: [PATCH 92/99] FROMGIT: maple_tree: add GFP_KERNEL to allocations in mas_expected_entries() Users complained about OOM errors during fork without triggering compaction. This can be fixed by modifying the flags used in mas_expected_entries() so that the compaction will be triggered in low memory situations. Since mas_expected_entries() is only used during fork, the extra argument does not need to be passed through. Additionally, the two test_maple_tree test cases and one benchmark test were altered to use the correct locking type so that allocations would not trigger sleeping and thus fail. Testing was completed with lockdep atomic sleep detection. The additional locking change requires rwsem support additions to the tools/ directory through the use of pthreads pthread_rwlock_t. With this change test_maple_tree works in userspace, as a module, and in-kernel. Users may notice that the system gave up early on attempting to start new processes instead of attempting to reclaim memory. Link: https://lore.kernel.org/linux-mm/20231012155233.2272446-1-Liam.Howlett@oracle.com/ Fixes: 54a611b60590 ("Maple Tree: add new data structure") Cc: Cc: jason.sim@samsung.com Cc: Peng Zhang Signed-off-by: Liam R. Howlett (cherry picked from commit 099d7439ce03d0e7bc8f0c3d7878b562f3a48d3d https: //git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable) Bug: 305860603 Bug: 308052647 Change-Id: I1ea250b37198fb3234136da4737b75c6ee3d9817 Signed-off-by: john.hsu (cherry picked from commit 2dd1c535d11634999d74906ac08ea12b996ea7d6) --- lib/maple_tree.c | 2 +- lib/test_maple_tree.c | 35 ++++++++++++++++++++++---------- tools/include/linux/rwsem.h | 40 +++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 12 deletions(-) create mode 100644 tools/include/linux/rwsem.h diff --git a/lib/maple_tree.c b/lib/maple_tree.c index b0a828f863c3..e60c3e3f32ab 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5894,7 +5894,7 @@ int mas_expected_entries(struct ma_state *mas, unsigned long nr_entries) /* Internal nodes */ nr_nodes += DIV_ROUND_UP(nr_nodes, nonleaf_cap); /* Add working room for split (2 nodes) + new parents */ - mas_node_count(mas, nr_nodes + 3); + mas_node_count_gfp(mas, nr_nodes + 3, GFP_KERNEL); /* Detect if allocations run out */ mas->mas_flags |= MA_STATE_PREALLOC; diff --git a/lib/test_maple_tree.c b/lib/test_maple_tree.c index f7364b9fee93..b4c3807a310d 100644 --- a/lib/test_maple_tree.c +++ b/lib/test_maple_tree.c @@ -9,6 +9,7 @@ #include #include +#include #define MTREE_ALLOC_MAX 0x2000000000000Ul #ifndef CONFIG_DEBUG_MAPLE_TREE @@ -1678,17 +1679,21 @@ static noinline void check_forking(struct maple_tree *mt) void *val; MA_STATE(mas, mt, 0, 0); MA_STATE(newmas, mt, 0, 0); + struct rw_semaphore newmt_lock; + + init_rwsem(&newmt_lock); for (i = 0; i <= nr_entries; i++) mtree_store_range(mt, i*10, i*10 + 5, xa_mk_value(i), GFP_KERNEL); mt_set_non_kernel(99999); - mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE); + mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN); + mt_set_external_lock(&newmt, &newmt_lock); newmas.tree = &newmt; mas_reset(&newmas); mas_reset(&mas); - mas_lock(&newmas); + down_write(&newmt_lock); mas.index = 0; mas.last = 0; if (mas_expected_entries(&newmas, nr_entries)) { @@ -1703,10 +1708,10 @@ static noinline void check_forking(struct maple_tree *mt) } rcu_read_unlock(); mas_destroy(&newmas); - mas_unlock(&newmas); mt_validate(&newmt); mt_set_non_kernel(0); - mtree_destroy(&newmt); + __mt_destroy(&newmt); + up_write(&newmt_lock); } static noinline void check_mas_store_gfp(struct maple_tree *mt) @@ -1750,6 +1755,10 @@ static noinline void bench_forking(struct maple_tree *mt) void *val; MA_STATE(mas, mt, 0, 0); MA_STATE(newmas, mt, 0, 0); + struct rw_semaphore newmt_lock; + + init_rwsem(&newmt_lock); + mt_set_external_lock(&newmt, &newmt_lock); for (i = 0; i <= nr_entries; i++) mtree_store_range(mt, i*10, i*10 + 5, @@ -1764,7 +1773,7 @@ static noinline void bench_forking(struct maple_tree *mt) mas.index = 0; mas.last = 0; rcu_read_lock(); - mas_lock(&newmas); + down_write(&newmt_lock); if (mas_expected_entries(&newmas, nr_entries)) { printk("OOM!"); BUG_ON(1); @@ -1775,11 +1784,11 @@ static noinline void bench_forking(struct maple_tree *mt) mas_store(&newmas, val); } mas_destroy(&newmas); - mas_unlock(&newmas); rcu_read_unlock(); mt_validate(&newmt); mt_set_non_kernel(0); - mtree_destroy(&newmt); + __mt_destroy(&newmt); + up_write(&newmt_lock); } } #endif @@ -2380,6 +2389,10 @@ static noinline void check_dup_gaps(struct maple_tree *mt, void *tmp; MA_STATE(mas, mt, 0, 0); MA_STATE(newmas, &newmt, 0, 0); + struct rw_semaphore newmt_lock; + + init_rwsem(&newmt_lock); + mt_set_external_lock(&newmt, &newmt_lock); if (!zero_start) i = 1; @@ -2389,9 +2402,9 @@ static noinline void check_dup_gaps(struct maple_tree *mt, mtree_store_range(mt, i*10, (i+1)*10 - gap, xa_mk_value(i), GFP_KERNEL); - mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE); + mt_init_flags(&newmt, MT_FLAGS_ALLOC_RANGE | MT_FLAGS_LOCK_EXTERN); mt_set_non_kernel(99999); - mas_lock(&newmas); + down_write(&newmt_lock); ret = mas_expected_entries(&newmas, nr_entries); mt_set_non_kernel(0); MT_BUG_ON(mt, ret != 0); @@ -2404,9 +2417,9 @@ static noinline void check_dup_gaps(struct maple_tree *mt, } rcu_read_unlock(); mas_destroy(&newmas); - mas_unlock(&newmas); - mtree_destroy(&newmt); + __mt_destroy(&newmt); + up_write(&newmt_lock); } /* Duplicate many sizes of trees. Mainly to test expected entry values */ diff --git a/tools/include/linux/rwsem.h b/tools/include/linux/rwsem.h new file mode 100644 index 000000000000..83971b3cbfce --- /dev/null +++ b/tools/include/linux/rwsem.h @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +#ifndef _TOOLS__RWSEM_H +#define _TOOLS__RWSEM_H + +#include + +struct rw_semaphore { + pthread_rwlock_t lock; +}; + +static inline int init_rwsem(struct rw_semaphore *sem) +{ + return pthread_rwlock_init(&sem->lock, NULL); +} + +static inline int exit_rwsem(struct rw_semaphore *sem) +{ + return pthread_rwlock_destroy(&sem->lock); +} + +static inline int down_read(struct rw_semaphore *sem) +{ + return pthread_rwlock_rdlock(&sem->lock); +} + +static inline int up_read(struct rw_semaphore *sem) +{ + return pthread_rwlock_unlock(&sem->lock); +} + +static inline int down_write(struct rw_semaphore *sem) +{ + return pthread_rwlock_wrlock(&sem->lock); +} + +static inline int up_write(struct rw_semaphore *sem) +{ + return pthread_rwlock_unlock(&sem->lock); +} +#endif /* _TOOLS_RWSEM_H */ From 46e7588d47ddefcd99e2ae9b74efa3d16f71c7f2 Mon Sep 17 00:00:00 2001 From: Suren Baghdasaryan Date: Tue, 13 Jun 2023 17:35:31 -0700 Subject: [PATCH 93/99] Revert "FROMLIST: BACKPORT: maple_tree: Refine mas_preallocate() node calculations" This reverts commit 133fbad5bd3f9168d58cbf1da71f3008beefc4b1. Replacing the patch with a newer version improving performance: https://lore.kernel.org/all/20230612203953.2093911-15-Liam.Howlett@oracle.com/ Bug: 274059236 Change-Id: I0a924698c908e00d2addb9b7c90e573e72c8ba59 Signed-off-by: Suren Baghdasaryan (cherry picked from commit d766c8399b39830d3b8fdfff701588b13470db77) --- lib/maple_tree.c | 48 +----------------------------------------------- 1 file changed, 1 insertion(+), 47 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 66e116d84c4e..fc3afb545439 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5721,55 +5721,9 @@ EXPORT_SYMBOL_GPL(mas_store_prealloc); */ int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp) { - MA_WR_STATE(wr_mas, mas, entry); - unsigned char node_size; - int request = 1; int ret; - - if (unlikely(!mas->index && mas->last == ULONG_MAX)) - goto ask_now; - - mas_wr_store_setup(&wr_mas); - wr_mas.content = mas_start(mas); - /* Root expand */ - if (unlikely(mas_is_none(mas) || mas_is_ptr(mas))) - goto ask_now; - - if (unlikely(!mas_wr_walk(&wr_mas))) { - /* Spanning store, use worst case for now */ - request = 1 + mas_mt_height(mas) * 3; - goto ask_now; - } - - /* At this point, we are at the leaf node that needs to be altered. */ - /* Exact fit, no nodes needed. */ - if (wr_mas.r_min == mas->index && wr_mas.r_max == mas->last) - return 0; - - mas_wr_end_piv(&wr_mas); - node_size = mas_wr_node_size(&wr_mas); - if (node_size >= mt_slots[wr_mas.type]) { - /* Slot store is possible in some cases */ - if ((node_size == mt_slots[wr_mas.type]) && - (wr_mas.r_min == mas->index || wr_mas.r_max == mas->last)) - goto ask_now; - /* Split, worst case for now. */ - request = 1 + mas_mt_height(mas) * 2; - goto ask_now; - } - - /* New root needs a singe node */ - if (unlikely(mte_is_root(mas->node))) - goto ask_now; - - /* Potential spanning rebalance collapsing a node, use worst-case */ - if (node_size - 1 <= mt_min_slots[wr_mas.type]) - request = mas_mt_height(mas) * 2 - 1; - - /* node store, slot store needs one node */ -ask_now: - mas_node_count_gfp(mas, request, gfp); + mas_node_count_gfp(mas, 1 + mas_mt_height(mas) * 3, gfp); mas->mas_flags |= MA_STATE_PREALLOC; if (likely(!mas_is_err(mas))) return 0; From 2583158d90ee9cdc654f4c95ad22055cce0acd87 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Mon, 12 Jun 2023 16:39:51 -0400 Subject: [PATCH 94/99] FROMLIST: BACKPORT: maple_tree: Refine mas_preallocate() node calculations Calculate the number of nodes based on the pending write action instead of assuming the worst case. This addresses a performance regression introduced in platforms that have longer allocation timing. Signed-off-by: Liam R. Howlett Link: https://lore.kernel.org/all/20230612203953.2093911-15-Liam.Howlett@oracle.com/ [surenb: replace mas_wr_new_end with mas_wr_node_size] Bug: 274059236 Change-Id: I8fc22bca45fa005acf767722034a260242a4da52 Signed-off-by: Suren Baghdasaryan (cherry picked from commit 708234485a504292a47081194128ff706936b040) --- lib/maple_tree.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index fc3afb545439..2a08df4bf89c 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5721,9 +5721,55 @@ EXPORT_SYMBOL_GPL(mas_store_prealloc); */ int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp) { + MA_WR_STATE(wr_mas, mas, entry); + unsigned char node_size; + int request = 1; int ret; - mas_node_count_gfp(mas, 1 + mas_mt_height(mas) * 3, gfp); + + if (unlikely(!mas->index && mas->last == ULONG_MAX)) + goto ask_now; + + mas_wr_store_setup(&wr_mas); + wr_mas.content = mas_start(mas); + /* Root expand */ + if (unlikely(mas_is_none(mas) || mas_is_ptr(mas))) + goto ask_now; + + if (unlikely(!mas_wr_walk(&wr_mas))) { + /* Spanning store, use worst case for now */ + request = 1 + mas_mt_height(mas) * 3; + goto ask_now; + } + + /* At this point, we are at the leaf node that needs to be altered. */ + /* Exact fit, no nodes needed. */ + if (wr_mas.r_min == mas->index && wr_mas.r_max == mas->last) + return 0; + + mas_wr_end_piv(&wr_mas); + node_size = mas_wr_node_size(&wr_mas); + /* Slot store can avoid using any nodes */ + if (node_size == wr_mas.node_end && wr_mas.offset_end - mas->offset == 1) + return 0; + + if (node_size >= mt_slots[wr_mas.type]) { + /* Split, worst case for now. */ + request = 1 + mas_mt_height(mas) * 2; + goto ask_now; + } + + /* Appending does not need any nodes */ + if (node_size == wr_mas.node_end + 1 && mas->offset == wr_mas.node_end) + return 0; + + /* Potential spanning rebalance collapsing a node, use worst-case */ + if (node_size - 1 <= mt_min_slots[wr_mas.type]) + request = mas_mt_height(mas) * 2 - 1; + + /* node store needs one node */ +ask_now: + mas_node_count_gfp(mas, request, gfp); mas->mas_flags |= MA_STATE_PREALLOC; if (likely(!mas_is_err(mas))) return 0; From 9f7325d3abfe2804f0abe361755210b603749e1e Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Mon, 12 Jun 2023 16:39:52 -0400 Subject: [PATCH 95/99] FROMLIST: maple_tree: Reduce resets during store setup mas_prealloc() may walk partially down the tree before finding that a split or spanning store is needed. When the write occurs, relax the logic on resetting the walk so that partial walks will not restart, but walks that have gone too far (a store that affects beyond the current node) should be restarted. Signed-off-by: Liam R. Howlett Link: https://lore.kernel.org/all/20230612203953.2093911-16-Liam.Howlett@oracle.com/ Bug: 274059236 Change-Id: I87dedebae085f067b08caeaf1bd19bb343ff305f Signed-off-by: Suren Baghdasaryan (cherry picked from commit e835ffdfbc9365ff0d33dd5a09fe384d8e6d4ce3) --- lib/maple_tree.c | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 2a08df4bf89c..fd22bcde2ce4 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -5609,20 +5609,34 @@ static inline void mte_destroy_walk(struct maple_enode *enode, static void mas_wr_store_setup(struct ma_wr_state *wr_mas) { + if (mas_is_start(wr_mas->mas)) + return; + if (unlikely(mas_is_paused(wr_mas->mas))) - mas_reset(wr_mas->mas); + goto reset; - if (!mas_is_start(wr_mas->mas)) { - if (mas_is_none(wr_mas->mas)) { - mas_reset(wr_mas->mas); - } else { - wr_mas->r_max = wr_mas->mas->max; - wr_mas->type = mte_node_type(wr_mas->mas->node); - if (mas_is_span_wr(wr_mas)) - mas_reset(wr_mas->mas); - } - } + if (unlikely(mas_is_none(wr_mas->mas))) + goto reset; + /* + * A less strict version of mas_is_span_wr() where we allow spanning + * writes within this node. This is to stop partial walks in + * mas_prealloc() from being reset. + */ + if (wr_mas->mas->last > wr_mas->mas->max) + goto reset; + + if (wr_mas->entry) + return; + + if (mte_is_leaf(wr_mas->mas->node) && + wr_mas->mas->last == wr_mas->mas->max) + goto reset; + + return; + +reset: + mas_reset(wr_mas->mas); } /* Interface */ From 77ef0ea8b53f81c1dbee3847ca42581531d40c22 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Mon, 12 Jun 2023 16:39:45 -0400 Subject: [PATCH 96/99] FROMLIST: maple_tree: Adjust node allocation on mas_rebalance() mas_rebalance() is called to rebalance an insufficient node into a single node or two sufficient nodes. The preallocation estimate is always too many in this case as the height of the tree will never grow and there is no possibility to have a three way split in this case, so revise the node allocation count. Change-Id: I04ba0674da381c06d4f8077f9f59d64b7d1a8312 Signed-off-by: Liam R. Howlett Link: https://lore.kernel.org/all/20230612203953.2093911-9-Liam.Howlett@oracle.com/ Bug: 274059236 Signed-off-by: Suren Baghdasaryan (cherry picked from commit 8f5a2209750e001015f5b1a286b5f4ae51328d6b) --- lib/maple_tree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index fd22bcde2ce4..b0a828f863c3 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -3189,7 +3189,7 @@ static inline int mas_rebalance(struct ma_state *mas, * tries to combine the data in the same way. If one node contains the * entire range of the tree, then that node is used as a new root node. */ - mas_node_count(mas, 1 + empty_count * 3); + mas_node_count(mas, empty_count * 2 - 1); if (mas_is_err(mas)) return 0; From 032714d3a20d66fed3c2fa8176f92228e9186964 Mon Sep 17 00:00:00 2001 From: Ruihan Li Date: Sun, 16 Apr 2023 16:14:04 +0800 Subject: [PATCH 97/99] UPSTREAM: bluetooth: Perform careful capability checks in hci_sock_ioctl() commit 25c150ac103a4ebeed0319994c742a90634ddf18 upstream. Previously, capability was checked using capable(), which verified that the caller of the ioctl system call had the required capability. In addition, the result of the check would be stored in the HCI_SOCK_TRUSTED flag, making it persistent for the socket. However, malicious programs can abuse this approach by deliberately sharing an HCI socket with a privileged task. The HCI socket will be marked as trusted when the privileged task occasionally makes an ioctl call. This problem can be solved by using sk_capable() to check capability, which ensures that not only the current task but also the socket opener has the specified capability, thus reducing the risk of privilege escalation through the previously identified vulnerability. Bug: 286456284 Cc: stable@vger.kernel.org Fixes: f81f5b2db869 ("Bluetooth: Send control open and close messages for HCI raw sockets") Signed-off-by: Ruihan Li Signed-off-by: Luiz Augusto von Dentz Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 47e6893a5b0ad14c0b1c25983a1facb1cf667b6e) Signed-off-by: Lee Jones Change-Id: I9a4b20c7b1e9b4e6bbd6371264aec039770a52ff (cherry picked from commit 04b6079eae6f7f7b98ec3c97060e0ec9f7ede700) --- net/bluetooth/hci_sock.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index 06581223238c..f597fe0db9f8 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c @@ -1003,7 +1003,14 @@ static int hci_sock_ioctl(struct socket *sock, unsigned int cmd, if (hci_sock_gen_cookie(sk)) { struct sk_buff *skb; - if (capable(CAP_NET_ADMIN)) + /* Perform careful checks before setting the HCI_SOCK_TRUSTED + * flag. Make sure that not only the current task but also + * the socket opener has the required capability, since + * privileged programs can be tricked into making ioctl calls + * on HCI sockets, and the socket should not be marked as + * trusted simply because the ioctl caller is privileged. + */ + if (sk_capable(sk, CAP_NET_ADMIN)) hci_sock_set_flag(sk, HCI_SOCK_TRUSTED); /* Send event to monitor */ From 7be2da90f2b357f7db379139b6c9bada3c1dbc95 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Wed, 12 Apr 2023 15:49:23 +1000 Subject: [PATCH 98/99] UPSTREAM: xfs: verify buffer contents when we skip log replay commit 22ed903eee23a5b174e240f1cdfa9acf393a5210 upstream. syzbot detected a crash during log recovery: XFS (loop0): Mounting V5 Filesystem bfdc47fc-10d8-4eed-a562-11a831b3f791 XFS (loop0): Torn write (CRC failure) detected at log block 0x180. Truncating head block from 0x200. XFS (loop0): Starting recovery (logdev: internal) ================================================================== BUG: KASAN: slab-out-of-bounds in xfs_btree_lookup_get_block+0x15c/0x6d0 fs/xfs/libxfs/xfs_btree.c:1813 Read of size 8 at addr ffff88807e89f258 by task syz-executor132/5074 CPU: 0 PID: 5074 Comm: syz-executor132 Not tainted 6.2.0-rc1-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1b1/0x290 lib/dump_stack.c:106 print_address_description+0x74/0x340 mm/kasan/report.c:306 print_report+0x107/0x1f0 mm/kasan/report.c:417 kasan_report+0xcd/0x100 mm/kasan/report.c:517 xfs_btree_lookup_get_block+0x15c/0x6d0 fs/xfs/libxfs/xfs_btree.c:1813 xfs_btree_lookup+0x346/0x12c0 fs/xfs/libxfs/xfs_btree.c:1913 xfs_btree_simple_query_range+0xde/0x6a0 fs/xfs/libxfs/xfs_btree.c:4713 xfs_btree_query_range+0x2db/0x380 fs/xfs/libxfs/xfs_btree.c:4953 xfs_refcount_recover_cow_leftovers+0x2d1/0xa60 fs/xfs/libxfs/xfs_refcount.c:1946 xfs_reflink_recover_cow+0xab/0x1b0 fs/xfs/xfs_reflink.c:930 xlog_recover_finish+0x824/0x920 fs/xfs/xfs_log_recover.c:3493 xfs_log_mount_finish+0x1ec/0x3d0 fs/xfs/xfs_log.c:829 xfs_mountfs+0x146a/0x1ef0 fs/xfs/xfs_mount.c:933 xfs_fs_fill_super+0xf95/0x11f0 fs/xfs/xfs_super.c:1666 get_tree_bdev+0x400/0x620 fs/super.c:1282 vfs_get_tree+0x88/0x270 fs/super.c:1489 do_new_mount+0x289/0xad0 fs/namespace.c:3145 do_mount fs/namespace.c:3488 [inline] __do_sys_mount fs/namespace.c:3697 [inline] __se_sys_mount+0x2d3/0x3c0 fs/namespace.c:3674 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd RIP: 0033:0x7f89fa3f4aca Code: 83 c4 08 5b 5d c3 66 2e 0f 1f 84 00 00 00 00 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fffd5fb5ef8 EFLAGS: 00000206 ORIG_RAX: 00000000000000a5 RAX: ffffffffffffffda RBX: 00646975756f6e2c RCX: 00007f89fa3f4aca RDX: 0000000020000100 RSI: 0000000020009640 RDI: 00007fffd5fb5f10 RBP: 00007fffd5fb5f10 R08: 00007fffd5fb5f50 R09: 000000000000970d R10: 0000000000200800 R11: 0000000000000206 R12: 0000000000000004 R13: 0000555556c6b2c0 R14: 0000000000200800 R15: 00007fffd5fb5f50 The fuzzed image contains an AGF with an obviously garbage agf_refcount_level value of 32, and a dirty log with a buffer log item for that AGF. The ondisk AGF has a higher LSN than the recovered log item. xlog_recover_buf_commit_pass2 reads the buffer, compares the LSNs, and decides to skip replay because the ondisk buffer appears to be newer. Unfortunately, the ondisk buffer is corrupt, but recovery just read the buffer with no buffer ops specified: error = xfs_buf_read(mp->m_ddev_targp, buf_f->blf_blkno, buf_f->blf_len, buf_flags, &bp, NULL); Skipping the buffer leaves its contents in memory unverified. This sets us up for a kernel crash because xfs_refcount_recover_cow_leftovers reads the buffer (which is still around in XBF_DONE state, so no read verification) and creates a refcountbt cursor of height 32. This is impossible so we run off the end of the cursor object and crash. Fix this by invoking the verifier on all skipped buffers and aborting log recovery if the ondisk buffer is corrupt. It might be smarter to force replay the log item atop the buffer and then see if it'll pass the write verifier (like ext4 does) but for now let's go with the conservative option where we stop immediately. Bug: 284409747 Link: https://syzkaller.appspot.com/bug?extid=7e9494b8b399902e994e Signed-off-by: Darrick J. Wong Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner Reported-by: Danila Chernetsov Link: https://lore.kernel.org/linux-xfs/20230601164439.15404-1-listdansp@mail.ru Signed-off-by: Amir Goldstein Acked-by: Darrick J. Wong Signed-off-by: Greg Kroah-Hartman (cherry picked from commit a2961463d74f5c86a8dda3b41c484c28ccc4c289) Signed-off-by: Lee Jones Change-Id: Ie5e156221966323a9cb7cc261b4ed17593cfaabd (cherry picked from commit 8aea35f10913dbc3bcb88fa45ad4a9119de9d6f9) --- fs/xfs/xfs_buf_item_recover.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fs/xfs/xfs_buf_item_recover.c b/fs/xfs/xfs_buf_item_recover.c index ffa94102094d..43167f543afc 100644 --- a/fs/xfs/xfs_buf_item_recover.c +++ b/fs/xfs/xfs_buf_item_recover.c @@ -943,6 +943,16 @@ xlog_recover_buf_commit_pass2( if (lsn && lsn != -1 && XFS_LSN_CMP(lsn, current_lsn) >= 0) { trace_xfs_log_recover_buf_skip(log, buf_f); xlog_recover_validate_buf_type(mp, bp, buf_f, NULLCOMMITLSN); + + /* + * We're skipping replay of this buffer log item due to the log + * item LSN being behind the ondisk buffer. Verify the buffer + * contents since we aren't going to run the write verifier. + */ + if (bp->b_ops) { + bp->b_ops->verify_read(bp); + error = bp->b_error; + } goto out_release; } From 8cfb5cd1f998a2f62af88270674e1adf9af0b6de Mon Sep 17 00:00:00 2001 From: Zheng Wang Date: Wed, 8 Mar 2023 00:43:38 +0800 Subject: [PATCH 99/99] UPSTREAM: memstick: r592: Fix UAF bug in r592_remove due to race condition [ Upstream commit 63264422785021704c39b38f65a78ab9e4a186d7 ] In r592_probe, dev->detect_timer was bound with r592_detect_timer. In r592_irq function, the timer function will be invoked by mod_timer. If we remove the module which will call hantro_release to make cleanup, there may be a unfinished work. The possible sequence is as follows, which will cause a typical UAF bug. Fix it by canceling the work before cleanup in r592_remove. CPU0 CPU1 |r592_detect_timer r592_remove | memstick_free_host| put_device; | kfree(host); | | | queue_work | &host->media_checker //use Bug: 287729043 Signed-off-by: Zheng Wang Link: https://lore.kernel.org/r/20230307164338.1246287-1-zyytlz.wz@163.com Signed-off-by: Ulf Hansson Signed-off-by: Sasha Levin (cherry picked from commit 9a342d4eb9fb8e52f7d1afe088a79513f3f9a9a5) Signed-off-by: Lee Jones Change-Id: Idb15f593287ebaeec294b3e276126306fa6743ba (cherry picked from commit 1c4d2aa0c7120ab303d98f5fdacefd13a4e8ced2) --- drivers/memstick/host/r592.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/memstick/host/r592.c b/drivers/memstick/host/r592.c index 1d35d147552d..42bfc46842b8 100644 --- a/drivers/memstick/host/r592.c +++ b/drivers/memstick/host/r592.c @@ -829,7 +829,7 @@ static void r592_remove(struct pci_dev *pdev) /* Stop the processing thread. That ensures that we won't take any more requests */ kthread_stop(dev->io_thread); - + del_timer_sync(&dev->detect_timer); r592_enable_device(dev, false); while (!error && dev->req) {