mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
dd97c0f28467458a61fd3ceabc193fec46a0136e
1055029 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
dd97c0f284 |
ANDROID: abi_gki_aarch64_qcom: Update qcom abi symbol list
Leaf changes summary: 54 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 54 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 54 Added functions: [A] 'function dentry* debugfs_rename(dentry*, dentry*, dentry*, const char*)' [A] 'function int device_get_phy_mode(device*)' [A] 'function net_device* devm_alloc_etherdev_mqs(device*, int, unsigned int, unsigned int)' [A] 'function int flow_block_cb_setup_simple(flow_block_offload*, list_head*, flow_setup_cb_t*, void*, void*, bool)' [A] 'function void flow_rule_match_basic(const flow_rule*, flow_match_basic*)' [A] 'function void flow_rule_match_ipv4_addrs(const flow_rule*, flow_match_ipv4_addrs*)' [A] 'function void flow_rule_match_ports(const flow_rule*, flow_match_ports*)' [A] 'function void flow_rule_match_vlan(const flow_rule*, flow_match_vlan*)' [A] 'function int inet6_ioctl(socket*, unsigned int, unsigned long int)' [A] 'function int inet_ioctl(socket*, unsigned int, unsigned long int)' [A] 'function mdio_device* mdio_device_create(mii_bus*, int)' [A] 'function void mdio_device_free(mdio_device*)' [A] 'function void netdev_rss_key_fill(void*, size_t)' [A] 'function void page_pool_destroy(page_pool*)' [A] 'function void page_pool_release_page(page_pool*, page*)' [A] 'function void phy_ethtool_get_wol(phy_device*, ethtool_wolinfo*)' [A] 'function int phy_ethtool_set_wol(phy_device*, ethtool_wolinfo*)' [A] 'function void phylink_disconnect_phy(phylink*)' [A] 'function int phylink_ethtool_get_eee(phylink*, ethtool_eee*)' [A] 'function void phylink_ethtool_get_pauseparam(phylink*, ethtool_pauseparam*)' [A] 'function void phylink_ethtool_get_wol(phylink*, ethtool_wolinfo*)' [A] 'function int phylink_ethtool_ksettings_get(phylink*, ethtool_link_ksettings*)' [A] 'function int phylink_ethtool_ksettings_set(phylink*, const ethtool_link_ksettings*)' [A] 'function int phylink_ethtool_nway_reset(phylink*)' [A] 'function int phylink_ethtool_set_eee(phylink*, ethtool_eee*)' [A] 'function int phylink_ethtool_set_pauseparam(phylink*, ethtool_pauseparam*)' [A] 'function int phylink_ethtool_set_wol(phylink*, ethtool_wolinfo*)' [A] 'function int phylink_get_eee_err(phylink*)' [A] 'function void phylink_mac_change(phylink*, bool)' [A] 'function int phylink_mii_ioctl(phylink*, ifreq*, int)' [A] 'function void phylink_resume(phylink*)' [A] 'function void phylink_set_pcs(phylink*, phylink_pcs*)' [A] 'function int phylink_speed_down(phylink*, bool)' [A] 'function int phylink_speed_up(phylink*)' [A] 'function void phylink_stop(phylink*)' [A] 'function void phylink_suspend(phylink*, bool)' [A] 'function bool xdp_rxq_info_is_reg(xdp_rxq_info*)' [A] 'function void xdp_rxq_info_unreg_mem_model(xdp_rxq_info*)' [A] 'function xdp_buff* xp_alloc(xsk_buff_pool*)' [A] 'function int xp_dma_map(xsk_buff_pool*, device*, unsigned long int, page**, u32)' [A] 'function void xp_dma_sync_for_cpu_slow(xdp_buff_xsk*)' [A] 'function void xp_dma_sync_for_device_slow(xsk_buff_pool*, dma_addr_t, size_t)' [A] 'function void xp_dma_unmap(xsk_buff_pool*, unsigned long int)' [A] 'function void xp_free(xdp_buff_xsk*)' [A] 'function dma_addr_t xp_raw_get_dma(xsk_buff_pool*, u64)' [A] 'function void xp_set_rxq_info(xsk_buff_pool*, xdp_rxq_info*)' [A] 'function void xsk_clear_rx_need_wakeup(xsk_buff_pool*)' [A] 'function xsk_buff_pool* xsk_get_pool_from_qid(net_device*, u16)' [A] 'function void xsk_set_rx_need_wakeup(xsk_buff_pool*)' [A] 'function void xsk_set_tx_need_wakeup(xsk_buff_pool*)' [A] 'function void xsk_tx_completed(xsk_buff_pool*, u32)' [A] 'function bool xsk_tx_peek_desc(xsk_buff_pool*, xdp_desc*)' [A] 'function void xsk_tx_release(xsk_buff_pool*)' [A] 'function bool xsk_uses_need_wakeup(xsk_buff_pool*)' Bug: 211744078 Change-Id: Ibe62ced922b992c56c6457fdf2c4ba20dfe874b4 Signed-off-by: Gokul krishna Krishnakumar <quic_gokukris@quicinc.com> |
||
|
|
7ec90fc9de |
FROMGIT: scsi: ufs: core: scsi_get_lba() error fix
When ufs initializes without scmd->device->sector_size set, scsi_get_lba()
will get a wrong shift number and trigger an ubsan error. The shift
exponent 4294967286 is too large for the 64-bit type 'sector_t' (aka
'unsigned long long').
Call scsi_get_lba() only when opcode is READ_10/WRITE_10/UNMAP.
Link: https://lore.kernel.org/r/20220307111752.10465-1-peter.wang@mediatek.com
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit
|
||
|
|
6c55ca2cae |
ANDROID: Add flag to indicate compiling against ACK
Add a flag: __ANDROID_COMMON_KERNEL__ which out-of-tree vendor drivers can use to check if they are compiling against an Android Common Kernel. These out-of-tree vendor drivers can use this flag + LINUX_KERNEL_VERSION to determine if a feature has been backported. Bug: 229953929 Change-Id: I832344d63f3639479784753edfb7ac405068312f Signed-off-by: Elliot Berman <quic_eberman@quicinc.com> |
||
|
|
a322e22ea7 |
ANDROID: GKI: Update abi_gki_aarch64_qcom with symbols for mem-offline
Add the symbols that are needed for the mem-offline driver. Leaf changes summary: 5 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 5 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 5 Added functions: [A] 'function unsigned long int get_pfnblock_flags_mask(const page*, unsigned long int, unsigned long int)' [A] 'function unsigned long int isolate_and_split_free_page(page*, list_head*)' [A] 'function int isolate_anon_lru_page(page*)' [A] 'function int migrate_pages(list_head*, new_page_t*, free_page_t*, unsigned long int, migrate_mode, int, unsigned int*)' [A] 'function void putback_movable_pages(list_head*)' Bug: 201263307 Change-Id: Ia6c5c617f004dec5e7ca2df9aac2a50714c48b22 Signed-off-by: Georgi Djakov <quic_c_gdjako@quicinc.com> |
||
|
|
b6eb5c7512 |
ANDROID: GKI: Add symbol list for exynos
- Add Initial ABI Symbol list for Exynos SOC BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update Leaf changes summary: 170 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 159 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 11 Added variables 159 Added functions: [A] 'function void __do_once_done(bool*, static_key_true*, unsigned long int*, module*)' [A] 'function bool __do_once_start(bool*, unsigned long int*)' [A] 'function void __rb_erase_color(rb_node*, rb_root*, void (rb_node*, rb_node*)*)' [A] 'function void __rb_insert_augmented(rb_node*, rb_root*, void (rb_node*, rb_node*)*)' [A] 'function int __traceiter_android_rvh_can_migrate_task(void*, task_struct*, int, int*)' [A] 'function int __traceiter_android_rvh_cpu_cgroup_can_attach(void*, cgroup_taskset*, int*)' [A] 'function int __traceiter_android_rvh_cpufreq_transition(void*, cpufreq_policy*)' [A] 'function int __traceiter_android_rvh_find_lowest_rq(void*, task_struct*, cpumask*, int, int*)' [A] 'function int __traceiter_android_rvh_find_new_ilb(void*, cpumask*, int*)' [A] 'function int __traceiter_android_rvh_replace_next_task_fair(void*, rq*, task_struct**, sched_entity**, bool*, bool, task_struct*)' [A] 'function int __traceiter_android_rvh_sched_fork_init(void*, task_struct*)' [A] 'function int __traceiter_android_rvh_sched_nohz_balancer_kick(void*, rq*, unsigned int*, int*)' [A] 'function int __traceiter_android_rvh_sched_rebalance_domains(void*, rq*, int*)' [A] 'function int __traceiter_android_rvh_schedule(void*, task_struct*, task_struct*, rq*)' [A] 'function int __traceiter_android_rvh_select_fallback_rq(void*, int, task_struct*, int*)' [A] 'function int __traceiter_android_rvh_set_task_cpu(void*, task_struct*, unsigned int)' [A] 'function int __traceiter_android_vh_gic_set_affinity(void*, irq_data*, const cpumask*, bool, u8*, void*)' [A] 'function int __traceiter_android_vh_gic_v3_set_affinity(void*, irq_data*, const cpumask*, u64*, bool, void*)' [A] 'function int __traceiter_android_vh_logbuf_pr_cont(void*, printk_record*, size_t)' [A] 'function int __traceiter_ipi_entry(void*, const char*)' [A] 'function int __traceiter_ipi_exit(void*, const char*)' [A] 'function int __traceiter_ipi_raise(void*, const cpumask*, const char*)' [A] 'function void __wake_up_locked_key(wait_queue_head*, unsigned int, void*)' [A] 'function void* __xa_erase(xarray*, unsigned long int)' [A] 'function void* __xa_store(xarray*, unsigned long int, void*, gfp_t)' [A] 'function void _dev_alert(const device*, const char*, ...)' [A] 'function int _raw_write_trylock(rwlock_t*)' [A] 'function int class_create_file_ns(class*, const class_attribute*, void*)' [A] 'function cpuidle_driver* cpuidle_get_cpu_driver(cpuidle_device*)' [A] 'function int dapm_pinctrl_event(snd_soc_dapm_widget*, snd_kcontrol*, int)' [A] 'function void debugfs_create_file_size(const char*, umode_t, dentry*, void*, const file_operations*, loff_t)' [A] 'function ssize_t device_show_int(device*, device_attribute*, char*)' [A] 'function ssize_t device_store_int(device*, device_attribute*, const char*, size_t)' [A] 'function dma_buf_attachment* dma_buf_dynamic_attach(dma_buf*, device*, const dma_buf_attach_ops*, void*)' [A] 'function int dma_buf_get_flags(dma_buf*, unsigned long int*)' [A] 'function void dma_buf_move_notify(dma_buf*)' [A] 'function int dma_buf_pin(dma_buf_attachment*)' [A] 'function void dma_buf_unpin(dma_buf_attachment*)' [A] 'function void dma_fence_chain_init(dma_fence_chain*, dma_fence*, dma_fence*, uint64_t)' [A] 'function dma_fence* dma_fence_chain_walk(dma_fence*)' [A] 'function dma_fence* dma_fence_get_stub()' [A] 'function long int dma_fence_wait_any_timeout(dma_fence**, uint32_t, bool, long int, uint32_t*)' [A] 'function u64 dma_get_required_mask(device*)' [A] 'function int dma_resv_get_fences(dma_resv*, dma_fence**, unsigned int*, dma_fence***)' [A] 'function int do_wait_intr(wait_queue_head_t*, wait_queue_entry_t*)' [A] 'function int down_read_killable(rw_semaphore*)' [A] 'function int down_write_trylock(rw_semaphore*)' [A] 'function bool drm_any_plane_has_format(drm_device*, u32, u64)' [A] 'function void drm_atomic_bridge_chain_disable(drm_bridge*, drm_atomic_state*)' [A] 'function void drm_connector_attach_dp_subconnector_property(drm_connector*)' [A] 'function int drm_crtc_helper_set_config(drm_mode_set*, drm_modeset_acquire_ctx*)' [A] 'function bool drm_crtc_helper_set_mode(drm_crtc*, drm_display_mode*, int, int, drm_framebuffer*)' [A] 'function int drm_crtc_init(drm_device*, drm_crtc*, const drm_crtc_funcs*)' [A] 'function void drm_dp_set_subconnector_property(drm_connector*, drm_connector_status, const u8*, const u8*)' [A] 'function int drm_edid_header_is_valid(const u8*)' [A] 'function bool drm_edid_is_valid(edid*)' [A] 'function int drm_edid_to_speaker_allocation(edid*, u8**)' [A] 'function void drm_framebuffer_unregister_private(drm_framebuffer*)' [A] 'function void drm_helper_disable_unused_functions(drm_device*)' [A] 'function int drm_helper_force_disable_all(drm_device*)' [A] 'function void drm_helper_resume_force_mode(drm_device*)' [A] 'function bool drm_kms_helper_is_poll_worker()' [A] 'function int drm_mm_reserve_node(drm_mm*, drm_mm_node*)' [A] 'function int drm_mode_create_scaling_mode_property(drm_device*)' [A] 'function bool drm_mode_match(const drm_display_mode*, const drm_display_mode*, unsigned int)' [A] 'function int drm_prime_sg_to_dma_addr_array(sg_table*, dma_addr_t*, int)' [A] 'function void drm_print_bits(drm_printer*, unsigned long int, const char* const*, unsigned int)' [A] 'function int drm_syncobj_create(drm_syncobj**, uint32_t, dma_fence*)' [A] 'function int drm_syncobj_get_fd(drm_syncobj*, int*)' [A] 'function int drm_syncobj_get_handle(drm_file*, drm_syncobj*, u32*)' [A] 'function void drm_wait_one_vblank(drm_device*, unsigned int)' [A] 'function char* get_options(const char*, int, int*)' [A] 'function ssize_t hdmi_drm_infoframe_pack_only(const hdmi_drm_infoframe*, void*, size_t)' [A] 'function int i2c_bit_add_bus(i2c_adapter*)' [A] 'function int i3c_master_defslvs_locked(i3c_master_controller*)' [A] 'function int irq_force_affinity(unsigned int, const cpumask*)' [A] 'function int irq_set_handler_data(unsigned int, void*)' [A] 'function kobject* kobject_get(kobject*)' [A] 'function bool mem_encrypt_active()' [A] 'function void mmu_notifier_synchronize()' [A] 'function resource* pci_bus_resource_n(const pci_bus*, int)' [A] 'function int pci_enable_atomic_ops_to_root(pci_dev*, u32)' [A] 'function void* pci_map_rom(pci_dev*, size_t*)' [A] 'function int pci_msix_vec_count(pci_dev*)' [A] 'function u32 pci_rebar_get_possible_sizes(pci_dev*, int)' [A] 'function void pci_release_resource(pci_dev*, int)' [A] 'function int pci_resize_resource(pci_dev*, int, int)' [A] 'function void pci_unmap_rom(pci_dev*, void*)' [A] 'function int pci_wait_for_pending_transaction(pci_dev*)' [A] 'function pinctrl* pinctrl_get(device*)' [A] 'function bool printk_timed_ratelimit(unsigned long int*, unsigned int)' [A] 'function void proc_set_size(proc_dir_entry*, loff_t)' [A] 'function proc_dir_entry* proc_symlink(const char*, proc_dir_entry*, const char*)' [A] 'function rb_node* rb_first_postorder(const rb_root*)' [A] 'function rb_node* rb_next_postorder(const rb_node*)' [A] 'function reciprocal_value reciprocal_value(u32)' [A] 'function void refresh_frequency_limits(cpufreq_policy*)' [A] 'function int rtc_set_time(rtc_device*, rtc_time*)' [A] 'function void scsi_dma_unmap(scsi_cmnd*)' [A] 'function void scsi_eh_ready_devs(Scsi_Host*, list_head*, list_head*)' [A] 'function void smp_call_function_many(const cpumask*, smp_call_func_t, void*, bool)' [A] 'function int snd_hwdep_new(snd_card*, char*, int, snd_hwdep**)' [A] 'function unsigned int snd_pcm_rate_range_to_bits(unsigned int, unsigned int)' [A] 'function void snd_soc_component_async_complete(snd_soc_component*)' [A] 'function int snd_soc_component_update_bits_async(snd_soc_component*, unsigned int, unsigned int, unsigned int)' [A] 'function int snd_soc_dapm_get_pin_status(snd_soc_dapm_context*, const char*)' [A] 'function int snd_soc_dapm_weak_routes(snd_soc_dapm_context*, const snd_soc_dapm_route*, int)' [A] 'function snd_soc_dai* snd_soc_find_dai_with_mutex(const snd_soc_dai_link_component*)' [A] 'function int snd_soc_get_xr_sx(snd_kcontrol*, snd_ctl_elem_value*)' [A] 'function int snd_soc_put_xr_sx(snd_kcontrol*, snd_ctl_elem_value*)' [A] 'function const cpumask* system_32bit_el0_cpumask()' [A] 'function int tcp_register_congestion_control(tcp_congestion_ops*)' [A] 'function void tcp_reno_cong_avoid(sock*, u32, u32)' [A] 'function u32 tcp_reno_ssthresh(sock*)' [A] 'function u32 tcp_reno_undo_cwnd(sock*)' [A] 'function u32 tcp_slow_start(tcp_sock*, u32)' [A] 'function void tcp_unregister_congestion_control(tcp_congestion_ops*)' [A] 'function void ttm_bo_bulk_move_lru_tail(ttm_lru_bulk_move*)' [A] 'function bool ttm_bo_eviction_valuable(ttm_buffer_object*, const ttm_place*)' [A] 'function int ttm_bo_init_reserved(ttm_device*, ttm_buffer_object*, size_t, ttm_bo_type, ttm_placement*, uint32_t, ttm_operation_ctx*, sg_table*, dma_resv*, void (ttm_buffer_object*)*)' [A] 'function int ttm_bo_kmap(ttm_buffer_object*, unsigned long int, unsigned long int, ttm_bo_kmap_obj*)' [A] 'function void ttm_bo_kunmap(ttm_bo_kmap_obj*)' [A] 'function int ttm_bo_lock_delayed_workqueue(ttm_device*)' [A] 'function int ttm_bo_mem_space(ttm_buffer_object*, ttm_placement*, ttm_resource**, ttm_operation_ctx*)' [A] 'function int ttm_bo_mmap_obj(vm_area_struct*, ttm_buffer_object*)' [A] 'function int ttm_bo_move_accel_cleanup(ttm_buffer_object*, dma_fence*, bool, bool, ttm_resource*)' [A] 'function int ttm_bo_move_memcpy(ttm_buffer_object*, ttm_operation_ctx*, ttm_resource*)' [A] 'function void ttm_bo_move_to_lru_tail(ttm_buffer_object*, ttm_resource*, ttm_lru_bulk_move*)' [A] 'function void ttm_bo_put(ttm_buffer_object*)' [A] 'function void ttm_bo_unlock_delayed_workqueue(ttm_device*, int)' [A] 'function int ttm_bo_validate(ttm_buffer_object*, ttm_placement*, ttm_operation_ctx*)' [A] 'function int ttm_bo_vm_access(vm_area_struct*, unsigned long int, void*, int, int)' [A] 'function void ttm_bo_vm_close(vm_area_struct*)' [A] 'function vm_fault_t ttm_bo_vm_dummy_page(vm_fault*, pgprot_t)' [A] 'function vm_fault_t ttm_bo_vm_fault_reserved(vm_fault*, pgprot_t, unsigned long int)' [A] 'function void ttm_bo_vm_open(vm_area_struct*)' [A] 'function vm_fault_t ttm_bo_vm_reserve(ttm_buffer_object*, vm_fault*)' [A] 'function int ttm_bo_vmap(ttm_buffer_object*, dma_buf_map*)' [A] 'function void ttm_bo_vunmap(ttm_buffer_object*, dma_buf_map*)' [A] 'function int ttm_bo_wait(ttm_buffer_object*, bool, bool)' [A] 'function void ttm_device_fini(ttm_device*)' [A] 'function int ttm_device_init(ttm_device*, ttm_device_funcs*, device*, address_space*, drm_vma_offset_manager*, bool, bool)' [A] 'function void ttm_eu_backoff_reservation(ww_acquire_ctx*, list_head*)' [A] 'function void ttm_eu_fence_buffer_objects(ww_acquire_ctx*, list_head*, dma_fence*)' [A] 'function int ttm_eu_reserve_buffers(ww_acquire_ctx*, list_head*, bool, list_head*)' [A] 'function int ttm_pool_alloc(ttm_pool*, ttm_tt*, ttm_operation_ctx*)' [A] 'function int ttm_pool_debugfs(ttm_pool*, seq_file*)' [A] 'function void ttm_pool_free(ttm_pool*, ttm_tt*)' [A] 'function int ttm_range_man_fini(ttm_device*, unsigned int)' [A] 'function int ttm_range_man_init(ttm_device*, unsigned int, bool, unsigned long int)' [A] 'function void ttm_resource_free(ttm_buffer_object*, ttm_resource**)' [A] 'function void ttm_resource_init(ttm_buffer_object*, const ttm_place*, ttm_resource*)' [A] 'function int ttm_resource_manager_evict_all(ttm_device*, ttm_resource_manager*)' [A] 'function void ttm_resource_manager_init(ttm_resource_manager*, unsigned long int)' [A] 'function int ttm_sg_tt_init(ttm_tt*, ttm_buffer_object*, uint32_t, ttm_caching)' [A] 'function void ttm_tt_destroy_common(ttm_device*, ttm_tt*)' [A] 'function void ttm_tt_fini(ttm_tt*)' [A] 'function int usb_choose_configuration(usb_device*)' [A] 'function bool v4l2_match_dv_timings(const v4l2_dv_timings*, const v4l2_dv_timings*, unsigned int, bool)' 11 Added variables: [A] 'tracepoint __tracepoint_android_rvh_cpu_cgroup_can_attach' [A] 'tracepoint __tracepoint_android_rvh_cpufreq_transition' [A] 'tracepoint __tracepoint_android_rvh_find_new_ilb' [A] 'tracepoint __tracepoint_android_rvh_sched_rebalance_domains' [A] 'tracepoint __tracepoint_android_rvh_select_fallback_rq' [A] 'tracepoint __tracepoint_android_vh_gic_set_affinity' [A] 'tracepoint __tracepoint_android_vh_gic_v3_set_affinity' [A] 'tracepoint __tracepoint_ipi_exit' [A] 'const dma_fence_ops dma_fence_chain_ops' [A] 'const kernel_param_ops param_ops_hexint' [A] 'ttm_global ttm_glob' Bug: 230443745 Signed-off-by: Hajun Sung <hajun.sung@samsung.com> Change-Id: I427fbcedbaaaf87f11d8f104d6140ee4a69fb5f7 |
||
|
|
d49a012b57 |
ANDROID: abi_gki_aarch64_qcom: Update qcom abi symbol list
Leaf changes summary: 8 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 6 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 2 Added variables 6 Added functions: [A] 'function int extcon_set_state(extcon_dev*, unsigned int, bool)' [A] 'function bool kmsg_dump_get_buffer(kmsg_dump_iter*, bool, char*, size_t, size_t*)' [A] 'function int kmsg_dump_register(kmsg_dumper*)' [A] 'function void kmsg_dump_rewind(kmsg_dump_iter*)' [A] 'function int kmsg_dump_unregister(kmsg_dumper*)' [A] 'function const cpumask* system_32bit_el0_cpumask()' 2 Added variables: [A] 'tracepoint __tracepoint_android_vh_check_uninterruptible_tasks' [A] 'tracepoint __tracepoint_android_vh_check_uninterruptible_tasks_dn' Bug: 211744078 Change-Id: I575f1fef5c40a9622a3468bb7ca70eddbfc4d73f Signed-off-by: Gokul krishna Krishnakumar <quic_gokukris@quicinc.com> |
||
|
|
a6ebc737af |
ANDROID: usb: export tracepoint for usb gadget connect/disconnect
There are two tracepoints in usb_gadget_connect() and
usb_gadget_disconnect(). This patch will export the tracepoints so that
vendor modules can use them.
Bug: 189130101
Change-Id: I73ace6ad7a29a835431879162cb5e5ff3d6b2239
Signed-off-by: fengmingli <mingli.feng@vivo.com>
(cherry picked from commit
|
||
|
|
def3ff8c55 |
ANDROID: sched/rt: Only enable RT sync for SMP targets
The rt sync wakeup support has a condition which relies on a field that
exists only when CONFIG_SMP is defined, causing a compilation issue.
Since sync wakeup has no real meaning on a non-SMP system, we can just
drop the CONFIG_RT_GROUP_SCHED part of the #ifdef.
Fixes:
|
||
|
|
a7133dd750 |
ANDROID: sched/rt: Add support for rt sync wakeups
Some rt tasks undergo sync wakeup. Currently, these tasks will be placed on other, often sleeping or otherwise idle CPUs, which can lead to unnecessary power hits. Bug: 157906395 Change-Id: I48864d0847bbe4f7813c842032880ad3f3b8b06b Signed-off-by: J. Avila <elavila@google.com> [quic_dickey@quicinc.com: Port to 5.15] Signed-off-by: Stephen Dickey <quic_dickey@quicinc.com> |
||
|
|
9f7014a6d2 |
ANDROID: irq: manage: Export irq_do_set_affinity symbol
Vendor kernel modules may implement irq balancers, which could
take irq desc lock of an irq and then based on current affinity
mask or affinity hint, reconfigure the affinity of that irq.
For example : For an irq, for which affinity is broken i.e. all
the cpus in its affinity mask have gone offline. For such irqs,
we might want to reset the affinity, when the original set of
affined cpus, come back online. desc->affinity_hint can be used
for figuring out the original affinity. So, the sequence for doing
this becomes:
desc = irq_to_desc(i);
raw_spin_lock(&desc->lock);
affinity = desc->affinity_hint;
raw_spin_unlock(&desc->lock);
irq_set_affinity_hint(i, affinity);
Here, we need to release the desc lock before calling the exported
api irq_set_affinity_hint(). This creates a window where, after
unlocking desc lock and before calling irq_set_affinity_hint(),
where this setting can race with other irq_set_affinity_hint()
callers. So, export irq_do_set_affinity() symbol to provide an
api, which can be called with desc lock held.
Bug: 187157600
Change-Id: Ifad88bfaa1e7eec09c3fe5a9dd7d1d421362b41e
Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
(cherry picked from commit
|
||
|
|
fdb0133879 |
ANDROID: gic-v3: Update vendor hook to set affinity in GIC v3
GIC provides implementation specific registers, to configure
affinity of a SPI. Update the existing affinity hook to allow
vendors to configure those implementation defined settings.
Bug: 180471389
Change-Id: I273035da65eaeb346c0d8b303a722f4d8d7918d6
Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
(cherry picked from commit
|
||
|
|
3ccc4b2705 |
FROMGIT: scsi: ufs: core: Exclude UECxx from SFR dump list
Some devices may return invalid or zeroed data during an UIC error condition. In addition, reading these SFRs will clear them. This means the subsequent error handling will not be able to see them and therefore no error handling will be scheduled. Skip reading these SFRs in ufshcd_dump_regs(). Bug: 230521674 Change-Id: Idc62842c79f948580107f95c65a14e34630a0017 (cherry picked from commit |
||
|
|
94816d9fd6 |
ANDROID: GKI: add initial symbol list for Exynos Auto SoC
This adds initial symbol list for Exynos Auto SoC. Below functions / variables are newly added. Leaf changes summary: 93 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 84 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 9 Added variables 84 Added functions: [A] 'function int __traceiter_cpu_idle(void*, unsigned int, unsigned int)' [A] 'function int __traceiter_hrtimer_expire_entry(void*, hrtimer*, ktime_t*)' [A] 'function int __traceiter_hrtimer_expire_exit(void*, hrtimer*)' [A] 'function int __traceiter_irq_handler_entry(void*, int, irqaction*)' [A] 'function int __traceiter_irq_handler_exit(void*, int, irqaction*, int)' [A] 'function int __traceiter_rwmmio_post_read(void*, unsigned long int, u64, u8, const volatile void*)' [A] 'function int __traceiter_rwmmio_read(void*, unsigned long int, u8, const volatile void*)' [A] 'function int __traceiter_rwmmio_write(void*, unsigned long int, u64, u8, volatile void*)' [A] 'function int __traceiter_workqueue_execute_end(void*, work_struct*, work_func_t)' [A] 'function int __traceiter_workqueue_execute_start(void*, work_struct*)' [A] 'function void blk_ksm_init_passthrough(blk_keyslot_manager*)' [A] 'function long int copy_from_user_nofault(void*, void*, size_t)' [A] 'function int device_property_read_u8_array(device*, const char*, u8*, size_t)' [A] 'function void display_timings_release(display_timings*)' [A] 'function dma_status dma_sync_wait(dma_chan*, dma_cookie_t)' [A] 'function dmaengine_unmap_data* dmaengine_get_unmap_data(device*, int, gfp_t)' [A] 'function void drm_atomic_bridge_chain_enable(drm_bridge*, drm_atomic_state*)' [A] 'function void drm_atomic_bridge_chain_pre_enable(drm_bridge*, drm_atomic_state*)' [A] 'function int drm_connector_set_path_property(drm_connector*, const char*)' [A] 'function u64 drm_crtc_vblank_count(drm_crtc*)' [A] 'function wait_queue_head_t* drm_crtc_vblank_waitqueue(drm_crtc*)' [A] 'function int drm_dp_check_act_status(drm_dp_mst_topology_mgr*)' [A] 'function void drm_dp_downstream_debug(seq_file*, const u8*, const u8*, const edid*, drm_dp_aux*)' [A] 'function u8 drm_dp_dsc_sink_line_buf_depth(const u8*)' [A] 'function u8 drm_dp_dsc_sink_max_slice_count(const u8*, bool)' [A] 'function int drm_dp_find_vcpi_slots(drm_dp_mst_topology_mgr*, int)' [A] 'function bool drm_dp_mst_allocate_vcpi(drm_dp_mst_topology_mgr*, drm_dp_mst_port*, int, int)' [A] 'function void drm_dp_mst_deallocate_vcpi(drm_dp_mst_topology_mgr*, drm_dp_mst_port*)' [A] 'function int drm_dp_mst_detect_port(drm_connector*, drm_modeset_acquire_ctx*, drm_dp_mst_topology_mgr*, drm_dp_mst_port*)' [A] 'function int drm_dp_mst_hpd_irq(drm_dp_mst_topology_mgr*, u8*, bool*)' [A] 'function void drm_dp_mst_reset_vcpi_slots(drm_dp_mst_topology_mgr*, drm_dp_mst_port*)' [A] 'function int drm_dp_mst_topology_mgr_init(drm_dp_mst_topology_mgr*, drm_device*, drm_dp_aux*, int, int, int, int, int)' [A] 'function int drm_dp_mst_topology_mgr_set_mst(drm_dp_mst_topology_mgr*, bool)' [A] 'function int drm_dp_update_payload_part1(drm_dp_mst_topology_mgr*)' [A] 'function int drm_dp_update_payload_part2(drm_dp_mst_topology_mgr*)' [A] 'function int drm_dsc_compute_rc_parameters(drm_dsc_config*)' [A] 'function void drm_dsc_pps_payload_pack(drm_dsc_picture_parameter_set*, const drm_dsc_config*)' [A] 'function int drm_helper_connector_dpms(drm_connector*, int)' [A] 'function int drm_helper_probe_detect(drm_connector*, drm_modeset_acquire_ctx*, bool)' [A] 'function uint32_t drm_of_crtc_port_mask(drm_device*, device_node*)' [A] 'function int dw_pcie_ep_init(dw_pcie_ep*)' [A] 'function void* dw_pcie_own_conf_map_bus(pci_bus*, unsigned int, int)' [A] 'function pid* get_task_pid(task_struct*, pid_type)' [A] 'function bool kmsg_dump_get_line(kmsg_dump_iter*, bool, char*, size_t, size_t*)' [A] 'function void kmsg_dump_rewind(kmsg_dump_iter*)' [A] 'function phy_device* mdiobus_get_phy(mii_bus*, int)' [A] 'function void netdev_alert(const net_device*, const char*, ...)' [A] 'function display_timings* of_get_display_timings(const device_node*)' [A] 'function int of_graph_get_endpoint_count(const device_node*)' [A] 'function device_node* of_graph_get_remote_port(const device_node*)' [A] 'function int param_get_string(char*, const kernel_param*)' [A] 'function int param_set_copystring(const char*, const kernel_param*)' [A] 'function int pci_epc_map_addr(pci_epc*, u8, u8, phys_addr_t, u64, size_t)' [A] 'function void* pci_epc_mem_alloc_addr(pci_epc*, phys_addr_t*, size_t)' [A] 'function void pci_epc_mem_free_addr(pci_epc*, phys_addr_t, void*, size_t)' [A] 'function int pci_epc_set_bar(pci_epc*, u8, u8, pci_epf_bar*)' [A] 'function void pci_epc_unmap_addr(pci_epc*, u8, u8, phys_addr_t)' [A] 'function int pci_generic_config_read(pci_bus*, unsigned int, int, int, u32*)' [A] 'function int pci_generic_config_write(pci_bus*, unsigned int, int, int, u32)' [A] 'function int pci_num_vf(pci_dev*)' [A] 'function int pcie_get_mps(pci_dev*)' [A] 'function int pcie_set_mps(pci_dev*, int)' [A] 'function void phy_ethtool_ksettings_get(phy_device*, ethtool_link_ksettings*)' [A] 'function int phy_ethtool_ksettings_set(phy_device*, const ethtool_link_ksettings*)' [A] 'function int phy_get_eee_err(phy_device*)' [A] 'function void phy_mac_interrupt(phy_device*)' [A] 'function int phy_resume(phy_device*)' [A] 'function int phylink_connect_phy(phylink*, phy_device*)' [A] 'function phylink* phylink_create(phylink_config*, fwnode_handle*, phy_interface_t, const phylink_mac_ops*)' [A] 'function void phylink_destroy(phylink*)' [A] 'function int phylink_of_phy_connect(phylink*, device_node*, u32)' [A] 'function void phylink_set_port_modes(unsigned long int*)' [A] 'function void phylink_start(phylink*)' [A] 'function void prandom_bytes(void*, size_t)' [A] 'function void* pwm_get_chip_data(pwm_device*)' [A] 'function int pwm_set_chip_data(pwm_device*, void*)' [A] 'function void scsi_schedule_eh(Scsi_Host*)' [A] 'function int snd_soc_dai_set_tristate(snd_soc_dai*, int)' [A] 'function snd_soc_dapm_widget* snd_soc_dapm_new_control(snd_soc_dapm_context*, const snd_soc_dapm_widget*)' [A] 'function void snd_soc_of_put_dai_link_codecs(snd_soc_dai_link*)' [A] 'function void start_backtrace(stackframe*, unsigned long int, unsigned long int)' [A] 'function int v4l2_m2m_mmap(file*, v4l2_m2m_ctx*, vm_area_struct*)' [A] 'function __poll_t v4l2_m2m_poll(file*, v4l2_m2m_ctx*, poll_table_struct*)' [A] 'function int videomode_from_timings(const display_timings*, videomode*, unsigned int)' 9 Added variables: [A] 'tracepoint __tracepoint_hrtimer_expire_entry' [A] 'tracepoint __tracepoint_hrtimer_expire_exit' [A] 'tracepoint __tracepoint_irq_handler_entry' [A] 'tracepoint __tracepoint_irq_handler_exit' [A] 'tracepoint __tracepoint_rwmmio_post_read' [A] 'tracepoint __tracepoint_rwmmio_read' [A] 'tracepoint __tracepoint_rwmmio_write' [A] 'tracepoint __tracepoint_workqueue_execute_end' [A] 'tracepoint __tracepoint_workqueue_execute_start' Bug: 230559582 Signed-off-by: Chanho Park <chanho61.park@samsung.com> Change-Id: I75ef1594d3cdb6769ce23dc2774d4e821f5e81a9 |
||
|
|
6f741e863c |
ANDROID: arm64: Auto-enroll MMIO guard on protected vms
Set the MMIO guard flag for protected vms prior to entering the guest for the first time. Bug: 216798684 Signed-off-by: Sebastian Ene <sebastianene@google.com> Change-Id: I1448102ae85176d495ae7f8d6d20de4092049f0d |
||
|
|
898049a684 |
ANDROID: mm: Export vmalloc_nr_pages
Export vmalloc_nr_pages which is used as part of meminfo collection from minidump module. Bug: 199236943 Change-Id: I4c80fe2a0712658ec46b49064fda670da84b3732 Signed-off-by: Vijayanand Jitta <quic_vjitta@quicinc.com> |
||
|
|
d48a14d37f |
ANDROID: mm: Export pcpu_nr_pages
Export pcpu_nr_pages symbol which is used as part of meminfo collection from minidump module. Bug: 199236943 Change-Id: I08262ec95a3f1be8322b9b8d2d9c4098518fc408 Signed-off-by: Vijayanand Jitta <quic_vjitta@quicinc.com> |
||
|
|
c978fa20fd |
UPSTREAM: f2fs: should not truncate blocks during roll-forward recovery
If the file preallocated blocks and fsync'ed, we should not truncate them during roll-forward recovery which will recover i_size correctly back. Bug: 223740163 Fixes: |
||
|
|
d7f3794b34 |
ANDROID: add gki_module headers to .gitignore file
In commit |
||
|
|
4b7b7a96e4 |
ANDROID: usb: add EXPORT_TRACE_SYMBOL to export tracepoint
To use the tracepoint in kernel module, add EXPORT_TRACE_SYMBOL_GPL to
export the dwc3_ctrl_req tracepoint
Bug: 189130101
Change-Id: Ie3245474fbd0cc18c6d41036dcf17c7bbe460814
Signed-off-by: fengmingli <mingli.feng@vivo.com>
(cherry picked from commit
|
||
|
|
455b1ae0b4 |
ANDROID: abi_gki_aarch64_qcom: Update qcom abi symbol list
Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 1 Added function: [A] 'function int kswapd(void*)' 1 Added variable: [A] 'tracepoint __tracepoint_android_vh_kswapd_per_node' Bug: 184707700 Change-Id: Ia5d5bd08f81ec4d9a957636d7fc580b79ce9fba2 Signed-off-by: Vijayanand Jitta <quic_vjitta@quicinc.com> |
||
|
|
61b109251b |
ANDROID: usb: add EXPORT_TRACE_SYMBOL to export tracepoint
To use the tracepoint in kernel module, add EXPORT_TRACE_SYMBOL_GPL to
export the dwc3_event tracepoint.
Bug: 189130101
Change-Id: I3a917af82c9d8c19a085c5fc1a30c1b9af4b6885
Signed-off-by: fengmingli <mingli.feng@vivo.com>
(cherry picked from commit
|
||
|
|
ec1a28c7c0 |
Merge 5.15.35 into android13-5.15
Changes in 5.15.35
drm/amd/display: Add pstate verification and recovery for DCN31
drm/amd/display: Fix p-state allow debug index on dcn31
hamradio: defer 6pack kfree after unregister_netdev
hamradio: remove needs_free_netdev to avoid UAF
cpuidle: PSCI: Move the `has_lpi` check to the beginning of the function
ACPI: processor idle: Check for architectural support for LPI
ACPI: processor idle: Allow playing dead in C3 state
ACPI: processor: idle: fix lockup regression on 32-bit ThinkPad T40
btrfs: remove unused parameter nr_pages in add_ra_bio_pages()
btrfs: remove no longer used counter when reading data page
btrfs: remove unused variable in btrfs_{start,write}_dirty_block_groups()
soc: qcom: aoss: Expose send for generic usecase
dt-bindings: net: qcom,ipa: add optional qcom,qmp property
net: ipa: request IPA register values be retained
btrfs: release correct delalloc amount in direct IO write path
ALSA: core: Add snd_card_free_on_error() helper
ALSA: sis7019: Fix the missing error handling
ALSA: ali5451: Fix the missing snd_card_free() call at probe error
ALSA: als300: Fix the missing snd_card_free() call at probe error
ALSA: als4000: Fix the missing snd_card_free() call at probe error
ALSA: atiixp: Fix the missing snd_card_free() call at probe error
ALSA: au88x0: Fix the missing snd_card_free() call at probe error
ALSA: aw2: Fix the missing snd_card_free() call at probe error
ALSA: azt3328: Fix the missing snd_card_free() call at probe error
ALSA: bt87x: Fix the missing snd_card_free() call at probe error
ALSA: ca0106: Fix the missing snd_card_free() call at probe error
ALSA: cmipci: Fix the missing snd_card_free() call at probe error
ALSA: cs4281: Fix the missing snd_card_free() call at probe error
ALSA: cs5535audio: Fix the missing snd_card_free() call at probe error
ALSA: echoaudio: Fix the missing snd_card_free() call at probe error
ALSA: emu10k1x: Fix the missing snd_card_free() call at probe error
ALSA: ens137x: Fix the missing snd_card_free() call at probe error
ALSA: es1938: Fix the missing snd_card_free() call at probe error
ALSA: es1968: Fix the missing snd_card_free() call at probe error
ALSA: fm801: Fix the missing snd_card_free() call at probe error
ALSA: galaxy: Fix the missing snd_card_free() call at probe error
ALSA: hdsp: Fix the missing snd_card_free() call at probe error
ALSA: hdspm: Fix the missing snd_card_free() call at probe error
ALSA: ice1724: Fix the missing snd_card_free() call at probe error
ALSA: intel8x0: Fix the missing snd_card_free() call at probe error
ALSA: intel_hdmi: Fix the missing snd_card_free() call at probe error
ALSA: korg1212: Fix the missing snd_card_free() call at probe error
ALSA: lola: Fix the missing snd_card_free() call at probe error
ALSA: lx6464es: Fix the missing snd_card_free() call at probe error
ALSA: maestro3: Fix the missing snd_card_free() call at probe error
ALSA: oxygen: Fix the missing snd_card_free() call at probe error
ALSA: riptide: Fix the missing snd_card_free() call at probe error
ALSA: rme32: Fix the missing snd_card_free() call at probe error
ALSA: rme9652: Fix the missing snd_card_free() call at probe error
ALSA: rme96: Fix the missing snd_card_free() call at probe error
ALSA: sc6000: Fix the missing snd_card_free() call at probe error
ALSA: sonicvibes: Fix the missing snd_card_free() call at probe error
ALSA: via82xx: Fix the missing snd_card_free() call at probe error
ALSA: usb-audio: Cap upper limits of buffer/period bytes for implicit fb
ALSA: nm256: Don't call card private_free at probe error path
drm/msm: Add missing put_task_struct() in debugfs path
firmware: arm_scmi: Remove clear channel call on the TX channel
memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe
Revert "ath11k: mesh: add support for 256 bitmap in blockack frames in 11ax"
firmware: arm_scmi: Fix sorting of retrieved clock rates
media: rockchip/rga: do proper error checking in probe
SUNRPC: Fix the svc_deferred_event trace class
net/sched: flower: fix parsing of ethertype following VLAN header
veth: Ensure eth header is in skb's linear part
gpiolib: acpi: use correct format characters
cifs: release cached dentries only if mount is complete
net: mdio: don't defer probe forever if PHY IRQ provider is missing
mlxsw: i2c: Fix initialization error flow
net/sched: fix initialization order when updating chain 0 head
net: dsa: felix: suppress -EPROBE_DEFER errors
net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link
net/sched: taprio: Check if socket flags are valid
cfg80211: hold bss_lock while updating nontrans_list
netfilter: nft_socket: make cgroup match work in input too
drm/msm: Fix range size vs end confusion
drm/msm/dsi: Use connector directly in msm_dsi_manager_connector_init()
drm/msm/dp: add fail safe mode outside of event_mutex context
net/smc: Fix NULL pointer dereference in smc_pnet_find_ib()
scsi: pm80xx: Mask and unmask upper interrupt vectors 32-63
scsi: pm80xx: Enable upper inbound, outbound queues
scsi: iscsi: Move iscsi_ep_disconnect()
scsi: iscsi: Fix offload conn cleanup when iscsid restarts
scsi: iscsi: Fix endpoint reuse regression
scsi: iscsi: Fix conn cleanup and stop race during iscsid restart
scsi: iscsi: Fix unbound endpoint error handling
sctp: Initialize daddr on peeled off socket
netfilter: nf_tables: nft_parse_register can return a negative value
ALSA: ad1889: Fix the missing snd_card_free() call at probe error
ALSA: mtpav: Don't call card private_free at probe error path
io_uring: move io_uring_rsrc_update2 validation
io_uring: verify that resv2 is 0 in io_uring_rsrc_update2
io_uring: verify pad field is 0 in io_get_ext_arg
testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu set
ALSA: usb-audio: Increase max buffer size
ALSA: usb-audio: Limit max buffer and period sizes per time
perf tools: Fix misleading add event PMU debug message
macvlan: Fix leaking skb in source mode with nodst option
net: ftgmac100: access hardware register after clock ready
nfc: nci: add flush_workqueue to prevent uaf
cifs: potential buffer overflow in handling symlinks
dm mpath: only use ktime_get_ns() in historical selector
vfio/pci: Fix vf_token mechanism when device-specific VF drivers are used
net: bcmgenet: Revert "Use stronger register read/writes to assure ordering"
block: fix offset/size check in bio_trim()
drm/amd: Add USBC connector ID
btrfs: fix fallocate to use file_modified to update permissions consistently
btrfs: do not warn for free space inode in cow_file_range
drm/amdgpu: conduct a proper cleanup of PDB bo
drm/amdgpu/gmc: use PCI BARs for APUs in passthrough
drm/amd/display: fix audio format not updated after edid updated
drm/amd/display: FEC check in timing validation
drm/amd/display: Update VTEM Infopacket definition
drm/amdkfd: Fix Incorrect VMIDs passed to HWS
drm/amdgpu/vcn: improve vcn dpg stop procedure
drm/amdkfd: Check for potential null return of kmalloc_array()
Drivers: hv: vmbus: Deactivate sysctl_record_panic_msg by default in isolated guests
PCI: hv: Propagate coherence from VMbus device to PCI device
Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer
scsi: target: tcmu: Fix possible page UAF
scsi: lpfc: Fix queue failures when recovering from PCI parity error
scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024
net: micrel: fix KS8851_MLL Kconfig
ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs
gpu: ipu-v3: Fix dev_dbg frequency output
regulator: wm8994: Add an off-on delay for WM8994 variant
arm64: alternatives: mark patch_alternative() as `noinstr`
tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry
net: axienet: setup mdio unconditionally
Drivers: hv: balloon: Disable balloon and hot-add accordingly
net: usb: aqc111: Fix out-of-bounds accesses in RX fixup
myri10ge: fix an incorrect free for skb in myri10ge_sw_tso
spi: cadence-quadspi: fix protocol setup for non-1-1-X operations
drm/amd/display: Enable power gating before init_pipes
drm/amd/display: Revert FEC check in validation
drm/amd/display: Fix allocate_mst_payload assert on resume
drbd: set QUEUE_FLAG_STABLE_WRITES
scsi: mpt3sas: Fail reset operation if config request timed out
scsi: mvsas: Add PCI ID of RocketRaid 2640
scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan
drivers: net: slip: fix NPD bug in sl_tx_timeout()
io_uring: zero tag on rsrc removal
io_uring: use nospec annotation for more indexes
perf/imx_ddr: Fix undefined behavior due to shift overflowing the constant
mm/secretmem: fix panic when growing a memfd_secret
mm, page_alloc: fix build_zonerefs_node()
mm: fix unexpected zeroed page mapping with zram swap
mm: kmemleak: take a full lowmem check in kmemleak_*_phys()
KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded
SUNRPC: Fix NFSD's request deferral on RDMA transports
memory: renesas-rpc-if: fix platform-device leak in error path
gcc-plugins: latent_entropy: use /dev/urandom
cifs: verify that tcon is valid before dereference in cifs_kill_sb
ath9k: Properly clear TX status area before reporting to mac80211
ath9k: Fix usage of driver-private space in tx_info
btrfs: fix root ref counts in error handling in btrfs_get_root_ref
btrfs: mark resumed async balance as writing
ALSA: hda/realtek: Add quirk for Clevo PD50PNT
ALSA: hda/realtek: add quirk for Lenovo Thinkpad X12 speakers
ALSA: pcm: Test for "silence" field in struct "pcm_format_data"
nl80211: correctly check NL80211_ATTR_REG_ALPHA2 size
ipv6: fix panic when forwarding a pkt with no in6 dev
drm/amd/display: don't ignore alpha property on pre-multiplied mode
drm/amdgpu: Enable gfxoff quirk on MacBook Pro
x86/tsx: Use MSR_TSX_CTRL to clear CPUID bits
x86/tsx: Disable TSX development mode at boot
genirq/affinity: Consider that CPUs on nodes can be unbalanced
tick/nohz: Use WARN_ON_ONCE() to prevent console saturation
ARM: davinci: da850-evm: Avoid NULL pointer dereference
dm integrity: fix memory corruption when tag_size is less than digest size
i2c: dev: check return value when calling dev_set_name()
smp: Fix offline cpu check in flush_smp_call_function_queue()
i2c: pasemi: Wait for write xfers to finish
dt-bindings: net: snps: remove duplicate name
timers: Fix warning condition in __run_timers()
dma-direct: avoid redundant memory sync for swiotlb
drm/i915: Sunset igpu legacy mmap support based on GRAPHICS_VER_FULL
cpu/hotplug: Remove the 'cpu' member of cpuhp_cpu_state
soc: qcom: aoss: Fix missing put_device call in qmp_get
net: ipa: fix a build dependency
cpufreq: intel_pstate: ITMT support for overclocked system
ax25: add refcount in ax25_dev to avoid UAF bugs
ax25: fix reference count leaks of ax25_dev
ax25: fix UAF bugs of net_device caused by rebinding operation
ax25: Fix refcount leaks caused by ax25_cb_del()
ax25: fix UAF bug in ax25_send_control()
ax25: fix NPD bug in ax25_disconnect
ax25: Fix NULL pointer dereferences in ax25 timers
ax25: Fix UAF bugs in ax25 timers
Linux 5.15.35
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I0dd9eaea7f977df42b0a5b9cb9043c879f62718b
|
||
|
|
34c16f1a20 |
Revert "gpio: Restrict usage of GPIO chip irq members before initialization"
This reverts commit
|
||
|
|
ee5fed1cef |
Revert "opp: Expose of-node's name in debugfs"
This reverts commit
|
||
|
|
fa4df40307 |
ANDROID: GKI: remove CONFIG_UBSAN_OBJECT_SIZE from gki_defconfig
In commit |
||
|
|
33f5d1daec |
Merge 5.15.34 into android13-5.15
Changes in 5.15.34
lib/logic_iomem: correct fallback config references
um: fix and optimize xor select template for CONFIG64 and timetravel mode
rtc: wm8350: Handle error for wm8350_register_irq
nbd: add error handling support for add_disk()
nbd: Fix incorrect error handle when first_minor is illegal in nbd_dev_add
nbd: Fix hungtask when nbd_config_put
nbd: fix possible overflow on 'first_minor' in nbd_dev_add()
kfence: count unexpectedly skipped allocations
kfence: move saving stack trace of allocations into __kfence_alloc()
kfence: limit currently covered allocations when pool nearly full
KVM: x86/pmu: Use different raw event masks for AMD and Intel
KVM: SVM: Fix kvm_cache_regs.h inclusions for is_guest_mode()
KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRs
KVM: x86/pmu: Fix and isolate TSX-specific performance event logic
KVM: x86/emulator: Emulate RDPID only if it is enabled in guest
drm: Add orientation quirk for GPD Win Max
ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111
drm/amd/display: Add signal type check when verify stream backends same
drm/amd/amdgpu/amdgpu_cs: fix refcount leak of a dma_fence obj
drm/amd/display: Fix memory leak
drm/amd/display: Use PSR version selected during set_psr_caps
usb: gadget: tegra-xudc: Do not program SPARAM
usb: gadget: tegra-xudc: Fix control endpoint's definitions
usb: cdnsp: fix cdnsp_decode_trb function to properly handle ret value
ptp: replace snprintf with sysfs_emit
drm/amdkfd: Don't take process mutex for svm ioctls
powerpc: dts: t104xrdb: fix phy type for FMAN 4/5
ath11k: fix kernel panic during unload/load ath11k modules
ath11k: pci: fix crash on suspend if board file is not found
ath11k: mhi: use mhi_sync_power_up()
net/smc: Send directly when TCP_CORK is cleared
drm/bridge: Add missing pm_runtime_put_sync
bpf: Make dst_port field in struct bpf_sock 16-bit wide
scsi: mvsas: Replace snprintf() with sysfs_emit()
scsi: bfa: Replace snprintf() with sysfs_emit()
drm/v3d: fix missing unlock
power: supply: axp20x_battery: properly report current when discharging
mt76: mt7921: fix crash when startup fails.
mt76: dma: initialize skip_unmap in mt76_dma_rx_fill
cfg80211: don't add non transmitted BSS to 6GHz scanned channels
libbpf: Fix build issue with llvm-readelf
ipv6: make mc_forwarding atomic
net: initialize init_net earlier
powerpc: Set crashkernel offset to mid of RMA region
drm/amdgpu: Fix recursive locking warning
scsi: smartpqi: Fix kdump issue when controller is locked up
PCI: aardvark: Fix support for MSI interrupts
iommu/arm-smmu-v3: fix event handling soft lockup
usb: ehci: add pci device support for Aspeed platforms
PCI: endpoint: Fix alignment fault error in copy tests
tcp: Don't acquire inet_listen_hashbucket::lock with disabled BH.
PCI: pciehp: Add Qualcomm quirk for Command Completed erratum
scsi: mpi3mr: Fix reporting of actual data transfer size
scsi: mpi3mr: Fix memory leaks
powerpc/set_memory: Avoid spinlock recursion in change_page_attr()
power: supply: axp288-charger: Set Vhold to 4.4V
net/mlx5e: Disable TX queues before registering the netdev
usb: dwc3: pci: Set the swnode from inside dwc3_pci_quirks()
iwlwifi: mvm: Correctly set fragmented EBS
iwlwifi: mvm: move only to an enabled channel
drm/msm/dsi: Remove spurious IRQF_ONESHOT flag
ipv4: Invalidate neighbour for broadcast address upon address addition
dm ioctl: prevent potential spectre v1 gadget
dm: requeue IO if mapping table not yet available
drm/amdkfd: make CRAT table missing message informational only
vfio/pci: Stub vfio_pci_vga_rw when !CONFIG_VFIO_PCI_VGA
scsi: pm8001: Fix pm80xx_pci_mem_copy() interface
scsi: pm8001: Fix pm8001_mpi_task_abort_resp()
scsi: pm8001: Fix task leak in pm8001_send_abort_all()
scsi: pm8001: Fix tag leaks on error
scsi: pm8001: Fix memory leak in pm8001_chip_fw_flash_update_req()
mt76: mt7915: fix injected MPDU transmission to not use HW A-MSDU
powerpc/64s/hash: Make hash faults work in NMI context
mt76: mt7615: Fix assigning negative values to unsigned variable
scsi: aha152x: Fix aha152x_setup() __setup handler return value
scsi: hisi_sas: Free irq vectors in order for v3 HW
scsi: hisi_sas: Limit users changing debugfs BIST count value
net/smc: correct settings of RMB window update limit
mips: ralink: fix a refcount leak in ill_acc_of_setup()
macvtap: advertise link netns via netlink
tuntap: add sanity checks about msg_controllen in sendmsg
Bluetooth: Fix not checking for valid hdev on bt_dev_{info,warn,err,dbg}
Bluetooth: use memset avoid memory leaks
bnxt_en: Eliminate unintended link toggle during FW reset
PCI: endpoint: Fix misused goto label
MIPS: fix fortify panic when copying asm exception handlers
powerpc/64e: Tie PPC_BOOK3E_64 to PPC_FSL_BOOK3E
powerpc/secvar: fix refcount leak in format_show()
scsi: libfc: Fix use after free in fc_exch_abts_resp()
can: isotp: set default value for N_As to 50 micro seconds
can: etas_es58x: es58x_fd_rx_event_msg(): initialize rx_event_msg before calling es58x_check_msg_len()
riscv: Fixed misaligned memory access. Fixed pointer comparison.
net: account alternate interface name memory
net: limit altnames to 64k total
net/mlx5e: Remove overzealous validations in netlink EEPROM query
net: sfp: add 2500base-X quirk for Lantech SFP module
usb: dwc3: omap: fix "unbalanced disables for smps10_out1" on omap5evm
mt76: fix monitor mode crash with sdio driver
xtensa: fix DTC warning unit_address_format
MIPS: ingenic: correct unit node address
Bluetooth: Fix use after free in hci_send_acl
netfilter: conntrack: revisit gc autotuning
netlabel: fix out-of-bounds memory accesses
ceph: fix inode reference leakage in ceph_get_snapdir()
ceph: fix memory leak in ceph_readdir when note_last_dentry returns error
lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option
init/main.c: return 1 from handled __setup() functions
minix: fix bug when opening a file with O_DIRECT
clk: si5341: fix reported clk_rate when output divider is 2
staging: vchiq_arm: Avoid NULL ptr deref in vchiq_dump_platform_instances
staging: vchiq_core: handle NULL result of find_service_by_handle
phy: amlogic: phy-meson-gxl-usb2: fix shared reset controller use
phy: amlogic: meson8b-usb2: Use dev_err_probe()
phy: amlogic: meson8b-usb2: fix shared reset control use
clk: rockchip: drop CLK_SET_RATE_PARENT from dclk_vop* on rk3568
cpufreq: CPPC: Fix performance/frequency conversion
opp: Expose of-node's name in debugfs
staging: wfx: fix an error handling in wfx_init_common()
w1: w1_therm: fixes w1_seq for ds28ea00 sensors
NFSv4.2: fix reference count leaks in _nfs42_proc_copy_notify()
NFSv4: Protect the state recovery thread against direct reclaim
habanalabs: fix possible memory leak in MMU DR fini
xen: delay xen_hvm_init_time_ops() if kdump is boot on vcpu>=32
clk: ti: Preserve node in ti_dt_clocks_register()
clk: Enforce that disjoints limits are invalid
SUNRPC/call_alloc: async tasks mustn't block waiting for memory
SUNRPC/xprt: async tasks mustn't block waiting for memory
SUNRPC: remove scheduling boost for "SWAPPER" tasks.
NFS: swap IO handling is slightly different for O_DIRECT IO
NFS: swap-out must always use STABLE writes.
x86: Annotate call_on_stack()
x86/Kconfig: Do not allow CONFIG_X86_X32_ABI=y with llvm-objcopy
serial: samsung_tty: do not unlock port->lock for uart_write_wakeup()
virtio_console: eliminate anonymous module_init & module_exit
jfs: prevent NULL deref in diFree
SUNRPC: Fix socket waits for write buffer space
NFS: nfsiod should not block forever in mempool_alloc()
NFS: Avoid writeback threads getting stuck in mempool_alloc()
selftests: net: Add tls config dependency for tls selftests
parisc: Fix CPU affinity for Lasi, WAX and Dino chips
parisc: Fix patch code locking and flushing
mm: fix race between MADV_FREE reclaim and blkdev direct IO read
rtc: mc146818-lib: change return values of mc146818_get_time()
rtc: Check return value from mc146818_get_time()
rtc: mc146818-lib: fix RTC presence check
drm/amdgpu: fix off by one in amdgpu_gfx_kiq_acquire()
Drivers: hv: vmbus: Fix potential crash on module unload
Revert "NFSv4: Handle the special Linux file open access mode"
NFSv4: fix open failure with O_ACCMODE flag
scsi: sr: Fix typo in CDROM(CLOSETRAY|EJECT) handling
scsi: core: Fix sbitmap depth in scsi_realloc_sdev_budget_map()
scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one()
vdpa/mlx5: Rename control VQ workqueue to vdpa wq
vdpa/mlx5: Propagate link status from device to vdpa driver
vdpa: mlx5: prevent cvq work from hogging CPU
net: sfc: add missing xdp queue reinitialization
net/tls: fix slab-out-of-bounds bug in decrypt_internal
vrf: fix packet sniffing for traffic originating from ip tunnels
skbuff: fix coalescing for page_pool fragment recycling
ice: Clear default forwarding VSI during VSI release
mctp: Fix check for dev_hard_header() result
net: ipv4: fix route with nexthop object delete warning
net: stmmac: Fix unset max_speed difference between DT and non-DT platforms
drm/imx: imx-ldb: Check for null pointer after calling kmemdup
drm/imx: Fix memory leak in imx_pd_connector_get_modes
drm/imx: dw_hdmi-imx: Fix bailout in error cases of probe
regulator: rtq2134: Fix missing active_discharge_on setting
regulator: atc260x: Fix missing active_discharge_on setting
arch/arm64: Fix topology initialization for core scheduling
bnxt_en: Synchronize tx when xdp redirects happen on same ring
bnxt_en: reserve space inside receive page for skb_shared_info
bnxt_en: Prevent XDP redirect from running when stopping TX queue
sfc: Do not free an empty page_ring
RDMA/mlx5: Don't remove cache MRs when a delay is needed
RDMA/mlx5: Add a missing update of cache->last_add
IB/cm: Cancel mad on the DREQ event when the state is MRA_REP_RCVD
IB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition
sctp: count singleton chunks in assoc user stats
dpaa2-ptp: Fix refcount leak in dpaa2_ptp_probe
ice: Set txq_teid to ICE_INVAL_TEID on ring creation
ice: Do not skip not enabled queues in ice_vc_dis_qs_msg
ipv6: Fix stats accounting in ip6_pkt_drop
ice: synchronize_rcu() when terminating rings
ice: xsk: fix VSI state check in ice_xsk_wakeup()
net: openvswitch: don't send internal clone attribute to the userspace.
net: ethernet: mv643xx: Fix over zealous checking of_get_mac_address()
net: openvswitch: fix leak of nested actions
rxrpc: fix a race in rxrpc_exit_net()
net: sfc: fix using uninitialized xdp tx_queue
net: phy: mscc-miim: reject clause 45 register accesses
qede: confirm skb is allocated before using
spi: bcm-qspi: fix MSPI only access with bcm_qspi_exec_mem_op()
bpf: Support dual-stack sockets in bpf_tcp_check_syncookie
drbd: Fix five use after free bugs in get_initial_state
scsi: ufs: ufshpb: Fix a NULL check on list iterator
io_uring: nospec index for tags on files update
io_uring: don't touch scm_fp_list after queueing skb
SUNRPC: Handle ENOMEM in call_transmit_status()
SUNRPC: Handle low memory situations in call_status()
SUNRPC: svc_tcp_sendmsg() should handle errors from xdr_alloc_bvec()
iommu/omap: Fix regression in probe for NULL pointer dereference
perf: arm-spe: Fix perf report --mem-mode
perf tools: Fix perf's libperf_print callback
perf session: Remap buf if there is no space for event
arm64: Add part number for Arm Cortex-A78AE
scsi: mpt3sas: Fix use after free in _scsih_expander_node_remove()
scsi: ufs: ufs-pci: Add support for Intel MTL
Revert "mmc: sdhci-xenon: fix annoying 1.8V regulator warning"
mmc: block: Check for errors after write on SPI
mmc: mmci: stm32: correctly check all elements of sg list
mmc: renesas_sdhi: don't overwrite TAP settings when HS400 tuning is complete
mmc: core: Fixup support for writeback-cache for eMMC and SD
lz4: fix LZ4_decompress_safe_partial read out of bound
highmem: fix checks in __kmap_local_sched_{in,out}
mmmremap.c: avoid pointless invalidate_range_start/end on mremap(old_size=0)
mm/mempolicy: fix mpol_new leak in shared_policy_replace
io_uring: don't check req->file in io_fsync_prep()
io_uring: defer splice/tee file validity check until command issue
io_uring: implement compat handling for IORING_REGISTER_IOWQ_AFF
io_uring: fix race between timeout flush and removal
x86/pm: Save the MSR validity status at context setup
x86/speculation: Restore speculation related MSRs during S3 resume
perf/x86/intel: Update the FRONTEND MSR mask on Sapphire Rapids
btrfs: fix qgroup reserve overflow the qgroup limit
btrfs: prevent subvol with swapfile from being deleted
spi: core: add dma_map_dev for __spi_unmap_msg()
arm64: patch_text: Fixup last cpu should be master
RDMA/hfi1: Fix use-after-free bug for mm struct
gpio: Restrict usage of GPIO chip irq members before initialization
x86/msi: Fix msi message data shadow struct
x86/mm/tlb: Revert retpoline avoidance approach
perf/x86/intel: Don't extend the pseudo-encoding to GP counters
ata: sata_dwc_460ex: Fix crash due to OOB write
perf: qcom_l2_pmu: fix an incorrect NULL check on list iterator
perf/core: Inherit event_caps
irqchip/gic-v3: Fix GICR_CTLR.RWP polling
fbdev: Fix unregistering of framebuffers without device
amd/display: set backlight only if required
SUNRPC: Prevent immediate close+reconnect
drm/panel: ili9341: fix optional regulator handling
drm/amdgpu/display: change pipe policy for DCN 2.1
drm/amdgpu/smu10: fix SoC/fclk units in auto mode
drm/amdgpu/vcn: Fix the register setting for vcn1
drm/nouveau/pmu: Add missing callbacks for Tegra devices
drm/amdkfd: Create file descriptor after client is added to smi_clients list
drm/amdgpu: don't use BACO for reset in S3
KVM: SVM: Allow AVIC support on system w/ physical APIC ID > 255
net/smc: send directly on setting TCP_NODELAY
Revert "selftests: net: Add tls config dependency for tls selftests"
bpf: Make remote_port field in struct bpf_sk_lookup 16-bit wide
selftests/bpf: Fix u8 narrow load checks for bpf_sk_lookup remote_port
rtc: mc146818-lib: fix signedness bug in mc146818_get_time()
SUNRPC: Don't call connect() more than once on a TCP socket
Revert "nbd: fix possible overflow on 'first_minor' in nbd_dev_add()"
perf build: Don't use -ffat-lto-objects in the python feature test when building with clang-13
perf python: Fix probing for some clang command line options
tools build: Filter out options and warnings not supported by clang
tools build: Use $(shell ) instead of `` to get embedded libperl's ccopts
dmaengine: Revert "dmaengine: shdma: Fix runtime PM imbalance on error"
KVM: avoid NULL pointer dereference in kvm_dirty_ring_push
Revert "net/mlx5: Accept devlink user input after driver initialization complete"
ubsan: remove CONFIG_UBSAN_OBJECT_SIZE
selftests: cgroup: Make cg_create() use 0755 for permission instead of 0644
selftests: cgroup: Test open-time credential usage for migration checks
selftests: cgroup: Test open-time cgroup namespace usage for migration checks
mm: don't skip swap entry even if zap_details specified
Drivers: hv: vmbus: Replace smp_store_mb() with virt_store_mb()
x86/bug: Prevent shadowing in __WARN_FLAGS
sched: Teach the forced-newidle balancer about CPU affinity limitation.
x86,static_call: Fix __static_call_return0 for i386
irqchip/gic-v4: Wait for GICR_VPENDBASER.Dirty to clear before descheduling
powerpc/64: Fix build failure with allyesconfig in book3s_64_entry.S
irqchip/gic, gic-v3: Prevent GSI to SGI translations
mm/sparsemem: fix 'mem_section' will never be NULL gcc 12 warning
static_call: Don't make __static_call_return0 static
powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit
stacktrace: move filter_irq_stacks() to kernel/stacktrace.c
Linux 5.15.34
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I98049d0d8ebd427296418d31085bfde482ad30e7
|
||
|
|
7f5325b5bb |
ANDROID: GKI: add vendor hook for mmc
UNISOC's solution allows more requests to be issued to improve read and write performance, so vendor hooks are added to support this function. Bug: 229920089 Signed-off-by: Wenchao Chen <wenchao.chen@unisoc.com> Change-Id: Ic9423b651884111d286646d0d66a033fce3b44d7 |
||
|
|
96e0181952 |
ANDROID: GKI: Add initial symbol list for imx
Update imx symbol list and abi.xml, and add imx entry in build.config.gki.aarch64. Leaf changes summary: 326 artifacts changed (1 filtered out) Changed leaf types summary: 0 (1 filtered out) leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 321 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 5 Added variables 321 Added functions: [A] 'function int __bitmap_and(unsigned long int*, const unsigned long int*, const unsigned long int*, unsigned int)' [A] 'function void __bitmap_complement(unsigned long int*, const unsigned long int*, unsigned int)' [A] 'function void __bitmap_replace(unsigned long int*, const unsigned long int*, const unsigned long int*, const unsigned long int*, unsigned int)' [A] 'function void __bitmap_xor(unsigned long int*, const unsigned long int*, const unsigned long int*, unsigned int)' [A] 'function clk_hw* __clk_hw_register_divider(device*, device_node*, const char*, const char*, const clk_hw*, const clk_parent_data*, unsigned long int, void*, u8, u8, u8, const clk_div_table*, spinlock_t*)' [A] 'function clk_hw* __clk_hw_register_fixed_rate(device*, device_node*, const char*, const char*, const clk_hw*, const clk_parent_data*, unsigned long int, unsigned long int, unsigned long int, unsigned long int)' [A] 'function clk_hw* __clk_hw_register_gate(device*, device_node*, const char*, const char*, const clk_hw*, const clk_parent_data*, unsigned long int, void*, u8, u8, spinlock_t*)' [A] 'function clk_hw* __clk_hw_register_mux(device*, device_node*, const char*, u8, const char* const*, const clk_hw**, const clk_parent_data*, unsigned long int, void*, u8, u32, u8, u32*, spinlock_t*)' [A] 'function int __device_reset(device*, bool)' [A] 'function int __devm_irq_alloc_descs(device*, int, unsigned int, unsigned int, int, module*, const irq_affinity_desc*)' [A] 'function void* __drmm_simple_encoder_alloc(drm_device*, size_t, size_t, int)' [A] 'function int __genphy_config_aneg(phy_device*, bool)' [A] 'function void __irq_set_handler(unsigned int, irq_flow_handler_t, int, const char*)' [A] 'function int __mdiobus_read(mii_bus*, int, u32)' [A] 'function int __mdiobus_write(mii_bus*, int, u32, u16)' [A] 'function int __phy_modify(phy_device*, u32, u16, u16)' [A] 'function regmap* __regmap_init_mmio_clk(device*, const char*, void*, const regmap_config*, lock_class_key*, const char*)' [A] 'function int __v4l2_ctrl_s_ctrl_int64(v4l2_ctrl*, s64)' [A] 'function int _vb2_fop_release(file*, mutex*)' [A] 'function backing_dev_info* bdi_alloc(int)' [A] 'function void bdi_put(backing_dev_info*)' [A] 'function int bdi_register(backing_dev_info*, const char*, ...)' [A] 'function unsigned long int* bitmap_alloc(unsigned int, gfp_t)' [A] 'function void cec_fill_conn_info_from_drm(cec_connector_info*, const drm_connector*)' [A] 'function cec_notifier* cec_notifier_cec_adap_register(device*, const char*, cec_adapter*)' [A] 'function void cec_notifier_cec_adap_unregister(cec_notifier*, cec_adapter*)' [A] 'function cec_notifier* cec_notifier_conn_register(device*, const char*, const cec_connector_info*)' [A] 'function void cec_notifier_conn_unregister(cec_notifier*)' [A] 'function void cec_notifier_set_phys_addr(cec_notifier*, u16)' [A] 'function void cec_notifier_set_phys_addr_from_edid(cec_notifier*, const edid*)' [A] 'function void cec_s_phys_addr_from_edid(cec_adapter*, const edid*)' [A] 'function void cfg80211_report_wowlan_wakeup(wireless_dev*, cfg80211_wowlan_wakeup*, gfp_t)' [A] 'function void clk_bulk_put(int, clk_bulk_data*)' [A] 'function clk_hw* clk_hw_register_composite(device*, const char*, const char* const*, int, clk_hw*, const clk_ops*, clk_hw*, const clk_ops*, clk_hw*, const clk_ops*, unsigned long int)' [A] 'function clk_hw* clk_hw_register_fixed_factor(device*, const char*, const char*, unsigned long int, unsigned int, unsigned int)' [A] 'function bool clk_is_match(const clk*, const clk*)' [A] 'function unsigned int clk_mux_index_to_val(u32*, unsigned int, u8)' [A] 'function void clk_unregister(clk*)' [A] 'function void deactivate_locked_super(super_block*)' [A] 'function unsigned long int dev_pm_opp_get_max_transition_latency(device*)' [A] 'function int dev_pm_opp_get_sharing_cpus(device*, cpumask*)' [A] 'function unsigned long int dev_pm_opp_get_suspend_opp_freq(device*)' [A] 'function void dev_pm_opp_put_supported_hw(opp_table*)' [A] 'function opp_table* dev_pm_opp_set_supported_hw(device*, const u32*, unsigned int)' [A] 'function int dev_pm_set_wake_irq(device*, int)' [A] 'function i3c_device* dev_to_i3cdev(device*)' [A] 'function int device_for_each_child_reverse(device*, void*, int (device*, void*)*)' [A] 'function drm_bridge* devm_drm_panel_bridge_add(device*, drm_panel*)' [A] 'function clk* devm_get_clk_from_child(device*, device_node*, const char*)' [A] 'function irq_chip_generic* devm_irq_alloc_generic_chip(device*, const char*, int, unsigned int, void*, irq_flow_handler_t)' [A] 'function int devm_irq_setup_generic_chip(device*, irq_chip_generic*, u32, irq_gc_flags, unsigned int, unsigned int)' [A] 'function char* devm_kvasprintf(device*, gfp_t, const char*, va_list)' [A] 'function phy* devm_of_phy_get(device*, device_node*, const char*)' [A] 'function phy* devm_phy_optional_get(device*, const char*)' [A] 'function int devm_pwmchip_add(device*, pwm_chip*)' [A] 'function void devm_remove_action(device*, void (void*)*, void*)' [A] 'function int devm_snd_dmaengine_pcm_register(device*, const snd_dmaengine_pcm_config*, unsigned int)' [A] 'function spi_mem_dirmap_desc* devm_spi_mem_dirmap_create(device*, spi_mem*, const spi_mem_dirmap_info*)' [A] 'function int dmaenginem_async_device_register(dma_device*)' [A] 'function int down_killable(semaphore*)' [A] 'function drm_bridge_state* drm_atomic_get_new_bridge_state(drm_atomic_state*, drm_bridge*)' [A] 'function u32* drm_atomic_helper_bridge_propagate_bus_fmt(drm_bridge*, drm_bridge_state*, drm_crtc_state*, drm_connector_state*, u32, unsigned int*)' [A] 'function void drm_atomic_helper_disable_planes_on_crtc(drm_crtc_state*, bool)' [A] 'function void drm_bridge_chain_enable(drm_bridge*)' [A] 'function void drm_bridge_connector_disable_hpd(drm_connector*)' [A] 'function void drm_bridge_connector_enable_hpd(drm_connector*)' [A] 'function drm_connector* drm_bridge_connector_init(drm_device*, drm_encoder*)' [A] 'function void drm_bus_flags_from_videomode(const videomode*, u32*)' [A] 'function bool drm_connector_atomic_hdr_metadata_equal(drm_connector_state*, drm_connector_state*)' [A] 'function int drm_connector_attach_hdr_output_metadata_property(drm_connector*)' [A] 'function int drm_connector_attach_max_bpc_property(drm_connector*, int, int)' [A] 'function int drm_connector_set_panel_orientation(drm_connector*, drm_panel_orientation)' [A] 'function hdmi_quantization_range drm_default_rgb_quant_range(const drm_display_mode*)' [A] 'function int drm_display_info_set_bus_formats(drm_display_info*, const u32*, unsigned int)' [A] 'function drm_gem_cma_object* drm_fb_cma_get_gem_obj(drm_framebuffer*, unsigned int)' [A] 'function const char* drm_get_connector_status_name(drm_connector_status)' [A] 'function void drm_hdmi_avi_infoframe_colorspace(hdmi_avi_infoframe*, const drm_connector_state*)' [A] 'function void drm_hdmi_avi_infoframe_quant_range(hdmi_avi_infoframe*, const drm_connector*, const drm_display_mode*, hdmi_quantization_range)' [A] 'function int drm_hdmi_infoframe_set_hdr_metadata(hdmi_drm_infoframe*, const drm_connector_state*)' [A] 'function int drm_hdmi_vendor_infoframe_from_display_mode(hdmi_vendor_infoframe*, const drm_connector*, const drm_display_mode*)' [A] 'function int drm_mode_create_hdmi_colorspace_property(drm_connector*)' [A] 'function drm_display_mode* drm_mode_find_dmt(drm_device*, int, int, int, bool)' [A] 'function bool drm_mode_is_420_also(const drm_display_info*, const drm_display_mode*)' [A] 'function bool drm_mode_is_420_only(const drm_display_info*, const drm_display_mode*)' [A] 'function int drm_of_encoder_active_endpoint(device_node*, drm_encoder*, of_endpoint*)' [A] 'function uint32_t drm_of_find_possible_crtcs(drm_device*, device_node*)' [A] 'function int drm_panel_dp_aux_backlight(drm_panel*, drm_dp_aux*)' [A] 'function int drm_panel_of_backlight(drm_panel*)' [A] 'function int drm_plane_create_scaling_filter_property(drm_plane*, unsigned int)' [A] 'function void drm_property_destroy(drm_device*, drm_property*)' [A] 'function ssize_t drm_scdc_read(i2c_adapter*, u8, void*, size_t)' [A] 'function bool drm_scdc_set_high_tmds_clock_ratio(i2c_adapter*, bool)' [A] 'function bool drm_scdc_set_scrambling(i2c_adapter*, bool)' [A] 'function ssize_t drm_scdc_write(i2c_adapter*, u8, void*, size_t)' [A] 'function void drm_self_refresh_helper_cleanup(drm_crtc*)' [A] 'function int drm_self_refresh_helper_init(drm_crtc*)' [A] 'function u8 dw_pcie_find_capability(dw_pcie*, u8)' [A] 'function u16 dw_pcie_find_ext_capability(dw_pcie*, u8)' [A] 'function int dw_pcie_link_up(dw_pcie*)' [A] 'function int ehci_handshake(ehci_hcd*, void*, u32, u32, int)' [A] 'function int ehci_hub_control(usb_hcd*, u16, u16, u16, char*, u16)' [A] 'function void ehci_init_driver(hc_driver*, const ehci_driver_overrides*)' [A] 'function int ehci_setup(usb_hcd*)' [A] 'function int ethnl_cable_test_fault_length(phy_device*, u8, u32)' [A] 'function int ethnl_cable_test_result(phy_device*, u8, u8)' [A] 'function int fb_get_options(const char*, char**)' [A] 'function loff_t fixed_size_llseek(file*, loff_t, int, loff_t)' [A] 'function void generic_shutdown_super(super_block*)' [A] 'function irqreturn_t genphy_handle_interrupt_no_ack(phy_device*)' [A] 'function int genphy_read_abilities(phy_device*)' [A] 'function int genphy_read_lpa(phy_device*)' [A] 'function int genphy_read_mmd_unsupported(phy_device*, int, u16)' [A] 'function int genphy_read_status(phy_device*)' [A] 'function int genphy_restart_aneg(phy_device*)' [A] 'function int genphy_soft_reset(phy_device*)' [A] 'function int genphy_suspend(phy_device*)' [A] 'function int genphy_update_link(phy_device*)' [A] 'function int genphy_write_mmd_unsupported(phy_device*, int, u16, u16)' [A] 'function int gpiod_set_array_value_cansleep(unsigned int, gpio_desc**, gpio_array*, unsigned long int*)' [A] 'function int hdmi_avi_infoframe_check(hdmi_avi_infoframe*)' [A] 'function void hdmi_avi_infoframe_init(hdmi_avi_infoframe*)' [A] 'function ssize_t hdmi_avi_infoframe_pack(hdmi_avi_infoframe*, void*, size_t)' [A] 'function ssize_t hdmi_drm_infoframe_pack(hdmi_drm_infoframe*, void*, size_t)' [A] 'function ssize_t hdmi_vendor_infoframe_pack(hdmi_vendor_infoframe*, void*, size_t)' [A] 'function int i3c_device_do_priv_xfers(i3c_device*, i3c_priv_xfer*, int)' [A] 'function const i3c_device_id* i3c_device_match_id(i3c_device*, const i3c_device_id*)' [A] 'function int i3c_driver_register_with_owner(i3c_driver*, module*)' [A] 'function void i3c_driver_unregister(i3c_driver*)' [A] 'function int iio_device_claim_direct_mode(iio_dev*)' [A] 'function void iio_device_release_direct_mode(iio_dev*)' [A] 'function int iio_push_event(iio_dev*, u64, s64)' [A] 'function int iio_read_mount_matrix(device*, iio_mount_matrix*)' [A] 'function ssize_t iio_show_mount_matrix(iio_dev*, uintptr_t, const iio_chan_spec*, char*)' [A] 'function int ir_raw_event_store_edge(rc_dev*, bool)' [A] 'function irq_domain* irq_domain_add_legacy(device_node*, unsigned int, unsigned int, irq_hw_number_t, const irq_domain_ops*, void*)' [A] 'function void irq_gc_ack_set_bit(irq_data*)' [A] 'function void irq_gc_mask_clr_bit(irq_data*)' [A] 'function void irq_gc_mask_set_bit(irq_data*)' [A] 'function int iw_handler_get_spy(net_device*, iw_request_info*, iwreq_data*, char*)' [A] 'function int iw_handler_get_thrspy(net_device*, iw_request_info*, iwreq_data*, char*)' [A] 'function int iw_handler_set_spy(net_device*, iw_request_info*, iwreq_data*, char*)' [A] 'function int iw_handler_set_thrspy(net_device*, iw_request_info*, iwreq_data*, char*)' [A] 'function char* iwe_stream_add_event(iw_request_info*, char*, char*, iw_event*, int)' [A] 'function char* iwe_stream_add_point(iw_request_info*, char*, char*, iw_event*, char*)' [A] 'function char* iwe_stream_add_value(iw_request_info*, char*, char*, char*, iw_event*, int)' [A] 'function void lockref_get(lockref*)' [A] 'function void logfc(fc_log*, const char*, char, const char*, ...)' [A] 'function int lookup_bdev(const char*, dev_t*)' [A] 'function void mctrl_gpio_disable_ms(mctrl_gpios*)' [A] 'function void mctrl_gpio_enable_ms(mctrl_gpios*)' [A] 'function unsigned int mctrl_gpio_get(mctrl_gpios*, unsigned int*)' [A] 'function mctrl_gpios* mctrl_gpio_init(uart_port*, unsigned int)' [A] 'function void mctrl_gpio_set(mctrl_gpios*, unsigned int)' [A] 'function void mdio_device_reset(mdio_device*, int)' [A] 'function bool mdiobus_is_registered_device(mii_bus*, int)' [A] 'function int mdiobus_read(mii_bus*, int, u32)' [A] 'function int mdiobus_write(mii_bus*, int, u32, u16)' [A] 'function void media_graph_walk_cleanup(media_graph*)' [A] 'function int media_graph_walk_init(media_graph*, media_device*)' [A] 'function int mipi_dsi_dcs_enter_sleep_mode(mipi_dsi_device*)' [A] 'function int mipi_dsi_dcs_exit_sleep_mode(mipi_dsi_device*)' [A] 'function int mipi_dsi_dcs_get_display_brightness(mipi_dsi_device*, u16*)' [A] 'function int mipi_dsi_dcs_set_display_off(mipi_dsi_device*)' [A] 'function int mipi_dsi_dcs_set_display_on(mipi_dsi_device*)' [A] 'function int mipi_dsi_dcs_set_pixel_format(mipi_dsi_device*, u8)' [A] 'function int mipi_dsi_dcs_set_tear_on(mipi_dsi_device*, mipi_dsi_dcs_tear_mode)' [A] 'function int mipi_dsi_dcs_set_tear_scanline(mipi_dsi_device*, u16)' [A] 'function int mipi_dsi_dcs_soft_reset(mipi_dsi_device*)' [A] 'function int mmc_gpio_set_cd_wake(mmc_host*, bool)' [A] 'function int mmc_hw_reset(mmc_host*)' [A] 'function int mmc_of_parse_voltage(mmc_host*, u32*)' [A] 'function int mmc_pwrseq_register(mmc_pwrseq*)' [A] 'function void mmc_pwrseq_unregister(mmc_pwrseq*)' [A] 'function void mmc_retune_timer_stop(mmc_host*)' [A] 'function nvmem_device* nvmem_register(const nvmem_config*)' [A] 'function void nvmem_unregister(nvmem_device*)' [A] 'function int of_drm_get_panel_orientation(const device_node*, drm_panel_orientation*)' [A] 'function gen_pool* of_gen_pool_get(device_node*, const char*, int)' [A] 'function int of_get_display_timing(const device_node*, const char*, display_timing*)' [A] 'function int of_get_phy_mode(device_node*, phy_interface_t*)' [A] 'function int of_get_videomode(device_node*, videomode*, int)' [A] 'function device_node* of_graph_get_port_by_id(device_node*, u32)' [A] 'function int of_mdiobus_register(mii_bus*, device_node*)' [A] 'function phy_device* of_phy_connect(net_device*, device_node*, void (net_device*)*, u32, phy_interface_t)' [A] 'function void of_phy_deregister_fixed_link(device_node*)' [A] 'function phy_device* of_phy_find_device(device_node*)' [A] 'function bool of_phy_is_fixed_link(device_node*)' [A] 'function int of_phy_register_fixed_link(device_node*)' [A] 'function pwm_device* of_pwm_xlate_with_flags(pwm_chip*, const of_phandle_args*)' [A] 'function int of_regulator_match(device*, device_node*, of_regulator_match*, unsigned int)' [A] 'function usb_phy_interface of_usb_get_phy_mode(device_node*)' [A] 'function int of_usb_update_otg_caps(device_node*, usb_otg_caps*)' [A] 'function int pci_msi_enabled()' [A] 'function int phy_drivers_register(phy_driver*, int, module*)' [A] 'function void phy_drivers_unregister(phy_driver*, int)' [A] 'function void phy_error(phy_device*)' [A] 'function int phy_ethtool_get_eee(phy_device*, ethtool_eee*)' [A] 'function int phy_ethtool_set_eee(phy_device*, ethtool_eee*)' [A] 'function int phy_init_eee(phy_device*, bool)' [A] 'function int phy_init_hw(phy_device*)' [A] 'function int phy_mipi_dphy_get_default_config(unsigned long int, unsigned int, unsigned int, phy_configure_opts_mipi_dphy*)' [A] 'function int phy_modify(phy_device*, u32, u16, u16)' [A] 'function int phy_modify_changed(phy_device*, u32, u16, u16)' [A] 'function int phy_modify_mmd(phy_device*, int, u32, u16, u16)' [A] 'function int phy_modify_paged(phy_device*, int, u32, u16, u16)' [A] 'function int phy_modify_paged_changed(phy_device*, int, u32, u16, u16)' [A] 'function int phy_read_mmd(phy_device*, int, u32)' [A] 'function int phy_read_paged(phy_device*, int, u32)' [A] 'function void phy_remove_link_mode(phy_device*, u32)' [A] 'function int phy_reset_after_clk_enable(phy_device*)' [A] 'function void phy_resolve_aneg_pause(phy_device*)' [A] 'function int phy_restore_page(phy_device*, int, int)' [A] 'function int phy_select_page(phy_device*, int)' [A] 'function int phy_set_max_speed(phy_device*, u32)' [A] 'function void phy_set_sym_pause(phy_device*, bool, bool, bool)' [A] 'function int phy_start_aneg(phy_device*)' [A] 'function void phy_support_sym_pause(phy_device*)' [A] 'function void phy_trigger_machine(phy_device*)' [A] 'function int phy_validate(phy*, phy_mode, int, phy_configure_opts*)' [A] 'function int phy_write_mmd(phy_device*, int, u32, u16)' [A] 'function int phy_write_paged(phy_device*, int, u32, u16)' [A] 'function group_desc* pinctrl_generic_get_group(pinctrl_dev*, unsigned int)' [A] 'function power_supply* power_supply_get_by_phandle(device_node*, const char*)' [A] 'function void ptp_clock_event(ptp_clock*, ptp_clock_event*)' [A] 'function int ptp_clock_index(ptp_clock*)' [A] 'function ptp_clock* ptp_clock_register(ptp_clock_info*, device*)' [A] 'function int ptp_clock_unregister(ptp_clock*)' [A] 'function int regmap_add_irq_chip(regmap*, int, int, int, const regmap_irq_chip*, regmap_irq_chip_data**)' [A] 'function int regmap_attach_dev(device*, regmap*, const regmap_config*)' [A] 'function void regmap_del_irq_chip(int, regmap_irq_chip_data*)' [A] 'function int regmap_reinit_cache(regmap*, const regmap_config*)' [A] 'function void regulator_bulk_free(int, regulator_bulk_data*)' [A] 'function int regulator_desc_list_voltage_linear_range(const regulator_desc*, unsigned int)' [A] 'function int regulator_map_voltage_ascend(regulator_dev*, int, int)' [A] 'function int regulator_set_ramp_delay_regmap(regulator_dev*, int)' [A] 'function void reset_controller_unregister(reset_controller_dev*)' [A] 'function void* rproc_da_to_va(rproc*, u64, size_t, bool*)' [A] 'function resource_table* rproc_elf_find_loaded_rsc_table(rproc*, const firmware*)' [A] 'function int rproc_elf_load_rsc_table(rproc*, const firmware*)' [A] 'function int rproc_elf_load_segments(rproc*, const firmware*)' [A] 'function int rproc_elf_sanity_check(rproc*, const firmware*)' [A] 'function int rproc_of_parse_firmware(device*, int, const char**)' [A] 'function void sdhci_dumpregs(sdhci_host*)' [A] 'function int sdhci_execute_tuning(mmc_host*, u32)' [A] 'function int sdhci_resume_host(sdhci_host*)' [A] 'function int sdhci_suspend_host(sdhci_host*)' [A] 'function scatterlist* sg_last(scatterlist*, unsigned int)' [A] 'function super_block* sget_fc(fs_context*, int (super_block*, fs_context*)*, int (super_block*, fs_context*)*)' [A] 'function int snd_compr_malloc_pages(snd_compr_stream*, size_t)' [A] 'function int snd_dmaengine_pcm_prepare_slave_config(snd_pcm_substream*, snd_pcm_hw_params*, dma_slave_config*)' [A] 'function int snd_dmaengine_pcm_refine_runtime_hwparams(snd_pcm_substream*, snd_dmaengine_dai_dma_data*, snd_pcm_hardware*, dma_chan*)' [A] 'function void snd_dmaengine_pcm_set_config_from_dai_data(const snd_pcm_substream*, const snd_dmaengine_dai_dma_data*, dma_slave_config*)' [A] 'function int snd_hwparams_to_dma_slave_config(const snd_pcm_substream*, const snd_pcm_hw_params*, dma_slave_config*)' [A] 'function int snd_interval_ranges(snd_interval*, unsigned int, const snd_interval*, unsigned int)' [A] 'function int snd_pcm_format_big_endian(snd_pcm_format_t)' [A] 'function int snd_pcm_format_linear(snd_pcm_format_t)' [A] 'function int snd_pcm_format_unsigned(snd_pcm_format_t)' [A] 'function int snd_pcm_hw_constraint_ratnums(snd_pcm_runtime*, unsigned int, snd_pcm_hw_param_t, const snd_pcm_hw_constraint_ratnums*)' [A] 'function int snd_pcm_set_managed_buffer(snd_pcm_substream*, int, device*, size_t, size_t)' [A] 'function int snd_soc_bytes_get(snd_kcontrol*, snd_ctl_elem_value*)' [A] 'function int snd_soc_bytes_info(snd_kcontrol*, snd_ctl_elem_info*)' [A] 'function int snd_soc_bytes_put(snd_kcontrol*, snd_ctl_elem_value*)' [A] 'function int snd_soc_dai_active(snd_soc_dai*)' [A] 'function int snd_soc_dai_set_bclk_ratio(snd_soc_dai*, unsigned int)' [A] 'function int snd_soc_dapm_disable_pin_unlocked(snd_soc_dapm_context*, const char*)' [A] 'function int snd_soc_dapm_force_bias_level(snd_soc_dapm_context*, snd_soc_bias_level)' [A] 'function int snd_soc_dapm_force_enable_pin_unlocked(snd_soc_dapm_context*, const char*)' [A] 'function int snd_soc_dapm_sync_unlocked(snd_soc_dapm_context*)' [A] 'function snd_pcm_substream* snd_soc_dpcm_get_substream(snd_soc_pcm_runtime*, int)' [A] 'function snd_soc_dai* snd_soc_find_dai(const snd_soc_dai_link_component*)' [A] 'function int snd_soc_get_dai_name(const of_phandle_args*, const char**)' [A] 'function snd_soc_pcm_runtime* snd_soc_get_pcm_runtime(snd_soc_card*, snd_soc_dai_link*)' [A] 'function int snd_soc_info_xr_sx(snd_kcontrol*, snd_ctl_elem_info*)' [A] 'function int snd_soc_jack_add_gpios(snd_soc_jack*, int, snd_soc_jack_gpio*)' [A] 'function void snd_soc_jack_notifier_register(snd_soc_jack*, notifier_block*)' [A] 'function int snd_soc_limit_volume(snd_soc_card*, const char*, int)' [A] 'function snd_soc_component* snd_soc_lookup_component(device*, const char*)' [A] 'function snd_soc_component* snd_soc_lookup_component_nolocked(device*, const char*)' [A] 'function void snd_soc_of_parse_node_prefix(device_node*, snd_soc_codec_conf*, device_node*, const char*)' [A] 'function int snd_soc_params_to_frame_size(snd_pcm_hw_params*)' [A] 'function int snd_soc_runtime_calc_hw(snd_soc_pcm_runtime*, snd_pcm_hardware*, int)' [A] 'function int snd_soc_tplg_component_load(snd_soc_component*, snd_soc_tplg_ops*, const firmware*)' [A] 'function int snd_soc_tplg_component_remove(snd_soc_component*)' [A] 'function int snd_soc_tplg_widget_bind_event(snd_soc_dapm_widget*, const snd_soc_tplg_widget_events*, int, u16)' [A] 'function const soc_device_attribute* soc_device_match(const soc_device_attribute*)' [A] 'function int spi_mem_adjust_op_size(spi_mem*, spi_mem_op*)' [A] 'function bool spi_mem_default_supports_op(spi_mem*, const spi_mem_op*)' [A] 'function ssize_t spi_mem_dirmap_read(spi_mem_dirmap_desc*, u64, size_t, void*)' [A] 'function ssize_t spi_mem_dirmap_write(spi_mem_dirmap_desc*, u64, size_t, void*)' [A] 'function int spi_mem_driver_register_with_owner(spi_mem_driver*, module*)' [A] 'function void spi_mem_driver_unregister(spi_mem_driver*)' [A] 'function bool spi_mem_dtr_supports_op(spi_mem*, const spi_mem_op*)' [A] 'function int spi_mem_exec_op(spi_mem*, const spi_mem_op*)' [A] 'function const char* spi_mem_get_name(spi_mem*)' [A] 'function bool spi_mem_supports_op(spi_mem*, const spi_mem_op*)' [A] 'function int thermal_zone_bind_cooling_device(thermal_zone_device*, int, thermal_cooling_device*, unsigned long int, unsigned long int, unsigned int)' [A] 'function void touchscreen_parse_properties(input_dev*, bool, touchscreen_properties*)' [A] 'function void touchscreen_report_pos(input_dev*, const touchscreen_properties*, unsigned int, unsigned int, bool)' [A] 'function void tso_build_data(const sk_buff*, tso_t*, int)' [A] 'function void tso_build_hdr(const sk_buff*, char*, tso_t*, int, bool)' [A] 'function int tso_count_descs(const sk_buff*)' [A] 'function int tso_start(sk_buff*, tso_t*)' [A] 'function int uart_get_rs485_mode(uart_port*)' [A] 'function void uart_handle_cts_change(uart_port*, unsigned int)' [A] 'function void uart_handle_dcd_change(uart_port*, unsigned int)' [A] 'function int usb_ep_clear_halt(usb_ep*)' [A] 'function void usb_ep_fifo_flush(usb_ep*)' [A] 'function void usb_gadget_unmap_request_by_dev(device*, usb_request*, int)' [A] 'function int usb_gadget_vbus_connect(usb_gadget*)' [A] 'function int usb_gadget_vbus_disconnect(usb_gadget*)' [A] 'function irqreturn_t usb_hcd_irq(int, void*)' [A] 'function void usb_phy_set_event(usb_phy*, unsigned long int)' [A] 'function void usb_udc_vbus_handler(usb_gadget*, bool)' [A] 'function int v4l2_event_dequeue(v4l2_fh*, v4l2_event*, int)' [A] 'function int v4l2_event_pending(v4l2_fh*)' [A] 'function int v4l2_g_parm_cap(video_device*, v4l2_subdev*, v4l2_streamparm*)' [A] 'function int v4l2_s_parm_cap(video_device*, v4l2_subdev*, v4l2_streamparm*)' [A] 'function int vb2_create_bufs(vb2_queue*, v4l2_create_buffers*)' [A] 'function int vb2_expbuf(vb2_queue*, v4l2_exportbuffer*)' [A] 'function int vb2_prepare_buf(vb2_queue*, media_device*, v4l2_buffer*)' [A] 'function size_t vb2_read(vb2_queue*, char*, size_t, loff_t*, int)' 5 Added variables: [A] 'const clk_ops clk_fractional_divider_ops' [A] 'unsigned int hrtimer_resolution' [A] 'const kernel_param_ops param_ops_ullong' [A] 'unsigned long int phy_basic_t1_features[2]' [A] 'void ()* pm_power_off_prepare' Bug: 229646648 Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com> Change-Id: Ib810e197c441525349d41027bf1ee43805b2c10a |
||
|
|
fde6251d1f |
ANDROID: KVM: arm64: s2mpu: Allow r/o access to control regs
To ease debugging, allow the host to read the state of S2MPU's control registers. These values do not need to be kept secret from the host. Bug: 190463801 Signed-off-by: David Brazdil <dbrazdil@google.com> Change-Id: Ib9e5be443f38a0ae8fb0d4f5820017d728adf64b |
||
|
|
520d88005f |
ANDROID: KVM: arm64: s2mpu: Allow reading MPTC entries
The state of the S2MPU does not need to be kept secret from the host as it merely reflects the permissions that the host has and knows about. To make debugging DMA issues easier, allow the host to query entries from the MPTC cache. This involves writing the set and way IDs of the query to the READ_MPTC register and then reading the MPTC entry information from READ_MPTC_TAG_PPN/TAG_OTHERS/DATA. Modify the S2MPU DABT handler to allow this register access pattern. Bug: 190463801 Bug: 229793579 Signed-off-by: David Brazdil <dbrazdil@google.com> Change-Id: I6bbcafa6b21c541774932c3b197d2888fd50202c |
||
|
|
fdfed49bf7 |
ANDROID: KVM: arm64: s2mpu: Allow L1ENTRY_* r/o access
Allow read-only access to L1ENTRY_ATTR and L1ENTRY_L2TABLE S2MPU registers. This allows the host to dump the register state for debugging purposes. It is safe because the state of the S2MPU is known to the host anyway. Bug: 190463801 Signed-off-by: David Brazdil <dbrazdil@google.com> Change-Id: I4fbcc3f7fac3f51ed47ba85ee4eb408fbf154e2d |
||
|
|
e62f59e567 |
ANDROID: KVM: arm64: s2mpu: Refactor DABT handler
In preparation for adding more entries to the list of S2MPU registers accessible to the host, refactor the code to use a switch instead of a series of ifs. No functional change intended. Bug: 190463801 Signed-off-by: David Brazdil <dbrazdil@google.com> Change-Id: I70afa8f755d6d96916cdc1f813e6506e97e761c0 |
||
|
|
28632d7a23 |
ANDROID: KVM: arm64: s2mpu: Extract L1ENTRY_* consts
Extract the L1ENTRY_ATTR_{PRON,GRAN}_MASK constants out of macros that
create the corresponding constants. This will allow EL1 users to use the
masks to get the fields out of register values. Also extract
L1ENTRY_L2TABLE_ADDR_SHIFT for adjusting the L2 table address.
Bug: 190463801
Signed-off-by: David Brazdil <dbrazdil@google.com>
Change-Id: I45578857694ca39266fe45b3c00dbea33738167f
|
||
|
|
71e7a059a0 |
ANDROID: Suppress build.sh deprecation warnings.
build.sh will continued to be supported in android13-* branches. To avoid confusion, suppress the deprecation warnings when executing build.sh on android13-*. This change also avoids the time delay for inferring the equivalent Bazel command. It is still encouraged to migrate build.sh to Bazel. Test: manually execute build.sh, no deprecation warnings Bug: 222074706 Change-Id: I8b62a442cb154f43375a9dae6593340c79ba556c Signed-off-by: Yifan Hong <elsk@google.com> |
||
|
|
64e9c6784d |
ANDROID: GKI: 4/20/2022 KMI update
Set KMI_GENERATION=4 for 4/20 KMI update
Leaf changes summary: 3764 artifacts changed
Changed leaf types summary: 9 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 3690 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 65 Changed, 0 Added variable
3690 functions with some sub-type change:
[C] 'function block_device* I_BDEV(inode*)' at bdev.c:42:1 has some sub-type changes:
CRC (modversions) changed from 0x1d77cd33 to 0xc064ebfb
[C] 'function void* PDE_DATA(const inode*)' at generic.c:794:1 has some sub-type changes:
CRC (modversions) changed from 0x6a6d7264 to 0x4a14ef3
[C] 'function void __ClearPageMovable(page*)' at compaction.c:138:1 has some sub-type changes:
CRC (modversions) changed from 0x2500d324 to 0x52304186
... 3687 omitted; 3690 symbols have only CRC changes
65 Changed variables:
[C] 'pglist_data contig_page_data' was changed at memblock.c:96:1:
size of symbol changed from 5760 to 6976
CRC (modversions) changed from 0x42a6e924 to 0xb67ab666
type of variable changed:
type size changed from 46080 to 55808 (in bits)
1 data member insertion:
'lru_gen_mm_walk mm_walk', at offset 51456 (in bits) at mmzone.h:1109:1
there are data member changes:
type 'struct lruvec' of 'pglist_data::__lruvec' changed:
type size changed from 1152 to 9664 (in bits)
2 data member insertions:
'lru_gen_struct lrugen', at offset 1088 (in bits) at mmzone.h:518:1
'lru_gen_mm_state mm_state', at offset 8640 (in bits) at mmzone.h:520:1
there are data member changes:
'pglist_data* pgdat' offset changed (by +8512 bits)
4087 impacted interfaces
'unsigned long int flags' offset changed (by +8512 bits)
3 ('zone_padding _pad2_' .. 'atomic_long_t vm_stat[40]') offsets changed (by +9728 bits)
4087 impacted interfaces
[C] 'task_struct init_task' was changed at init_task.c:64:1:
CRC (modversions) changed from 0xfb2dd432 to 0xbb41e5e8
type of variable changed:
type size hasn't changed
1 data member insertion:
'unsigned int in_lru_fault', at offset 10500 (in bits) at sched.h:919:1
there are data member changes:
6 ('unsigned int no_cgroup_migration' .. 'unsigned int in_eventfd_signal') offsets changed (by +1 bits)
4087 impacted interfaces
[C] 'bus_type amba_bustype' was changed at bus.c:313:1:
CRC (modversions) changed from 0x76bb3c03 to 0x1059aefa
[C] 'neigh_table arp_tbl' was changed at arp.c:152:1:
CRC (modversions) changed from 0x272a2c02 to 0x321ac83d
[C] 'const address_space_operations balloon_aops' was changed at balloon_compaction.c:253:1:
CRC (modversions) changed from 0x502add75 to 0xce92e8cd
... 60 omitted; 63 symbols have only CRC changes
'struct lruvec at mmzone.h:299:1' changed:
details were reported earlier
'struct mem_cgroup at memcontrol.h:237:1' changed:
type size changed from 30720 to 31232 (in bits)
1 data member insertion:
'lru_gen_mm_list mm_list', at offset 30656 (in bits) at memcontrol.h:353:1
there are data member changes:
'mem_cgroup_per_node* nodeinfo[]' offset changed (by +192 bits)
4087 impacted interfaces
'struct mem_cgroup_per_node at memcontrol.h:137:1' changed:
type size changed from 7872 to 16384 (in bits)
there are data member changes:
type 'struct lruvec' of 'mem_cgroup_per_node::lruvec' changed, as reported earlier
9 ('lruvec_stats_percpu* lruvec_stats_percpu' .. 'mem_cgroup* memcg') offsets changed (by +8512 bits)
4087 impacted interfaces
'struct mm_struct at mm_types.h:432:1' changed:
type size changed from 7360 to 7616 (in bits)
there are data member changes:
anonymous data member at offset 0 (in bits) changed from:
struct {vm_area_struct* mmap; rb_root mm_rb; u64 vmacache_seqnum; unsigned long int (file*, unsigned long int, unsigned long int, unsigned long int, unsigned long int)* get_unmapped_area; unsigned long int mmap_base; unsigned long int mmap_legacy_base; unsigned long int task_size; unsigned long int highest_vm_end; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; rw_semaphore mmap_lock; unsigned long int mmap_seq; list_head mmlist; unsigned long int hiwater_rss; unsigned long int hiwater_vm; unsigned long int total_vm; unsigned long int locked_vm; atomic64_t pinned_vm; unsigned long int data_vm; unsigned long int exec_vm; unsigned long int stack_vm; unsigned long int def_flags; seqcount_t write_protect_seq; spinlock_t arg_lock; unsigned long int start_code; unsigned long int end_code; unsigned long int start_data; unsigned long int end_data; unsigned long int start_brk; unsigned long int brk; unsigned long int start_stack; unsigned long int arg_start; unsigned long int arg_end; unsigned long int env_start; unsigned long int env_end; unsigned long int saved_auxv[46]; mm_rss_stat rss_stat; linux_binfmt* binfmt; mm_context_t context; unsigned long int flags; core_state* core_state; spinlock_t ioctx_lock; kioctx_table* ioctx_table; task_struct* owner; user_namespace* user_ns; file* exe_file; mmu_notifier_subscriptions* notifier_subscriptions; percpu_rw_semaphore* mmu_notifier_lock; atomic_t tlb_flush_pending; uprobes_state uprobes_state; work_struct async_put_work; u32 pasid;}
to:
struct {vm_area_struct* mmap; rb_root mm_rb; u64 vmacache_seqnum; unsigned long int (file*, unsigned long int, unsigned long int, unsigned long int, unsigned long int)* get_unmapped_area; unsigned long int mmap_base; unsigned long int mmap_legacy_base; unsigned long int task_size; unsigned long int highest_vm_end; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; rw_semaphore mmap_lock; unsigned long int mmap_seq; list_head mmlist; unsigned long int hiwater_rss; unsigned long int hiwater_vm; unsigned long int total_vm; unsigned long int locked_vm; atomic64_t pinned_vm; unsigned long int data_vm; unsigned long int exec_vm; unsigned long int stack_vm; unsigned long int def_flags; seqcount_t write_protect_seq; spinlock_t arg_lock; unsigned long int start_code; unsigned long int end_code; unsigned long int start_data; unsigned long int end_data; unsigned long int start_brk; unsigned long int brk; unsigned long int start_stack; unsigned long int arg_start; unsigned long int arg_end; unsigned long int env_start; unsigned long int env_end; unsigned long int saved_auxv[46]; mm_rss_stat rss_stat; linux_binfmt* binfmt; mm_context_t context; unsigned long int flags; core_state* core_state; spinlock_t ioctx_lock; kioctx_table* ioctx_table; task_struct* owner; user_namespace* user_ns; file* exe_file; mmu_notifier_subscriptions* notifier_subscriptions; percpu_rw_semaphore* mmu_notifier_lock; atomic_t tlb_flush_pending; uprobes_state uprobes_state; work_struct async_put_work; u32 pasid; struct {list_head list; mem_cgroup* memcg; nodemask_t nodes;} lru_gen;}
and size changed from 7360 to 7616 (in bits) (by +256 bits)
'unsigned long int cpu_bitmap[]' offset changed (by +256 bits)
4087 impacted interfaces
'struct pglist_data at mmzone.h:802:1' changed:
details were reported earlier
'struct reclaim_state at swap.h:140:1' changed:
type size changed from 64 to 128 (in bits)
1 data member insertion:
'lru_gen_mm_walk* mm_walk', at offset 64 (in bits) at swap.h:144:1
4087 impacted interfaces
'struct task_struct at sched.h:726:1' changed:
details were reported earlier
'struct ufs_hba_variant_ops at ufshcd.h:324:1' changed:
type size hasn't changed
there are data member changes:
type 'int (ufs_hba*, enum ufs_pm_op)*' of 'ufs_hba_variant_ops::suspend' changed:
pointer type changed from: 'int (ufs_hba*, enum ufs_pm_op)*' to: 'int (ufs_hba*, enum ufs_pm_op, enum ufs_notify_change_status)*'
35 impacted interfaces
'struct usb_phy at phy.h:88:1' changed:
type size changed from 2688 to 2752 (in bits)
1 data member insertion:
'u64 android_vendor_data1', at offset 2688 (in bits) at phy.h:160:1
43 impacted interfaces
Bug: 229750431
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: I723c22f89d3e85556b1246498ee96993e2151691
|
||
|
|
457758d86c |
ANDROID: update is_cpu_allowed hook prototype
Vendor module needs access to the task structure through is_cpu_allowed tracehook to better assess whether the chosen cpu can be allowed. Update the existing is_cpu_allowed tracehook to pass the task struct of the task currently being handled. Bug: 228392842 Change-Id: I882b593ccb77da0755e076c7e636db304ee74b42 Signed-off-by: Stephen Dickey <quic_dickey@quicinc.com> |
||
|
|
07c3480a9d |
UPSTREAM: scsi: ufs: mediatek: Support vops pre suspend to disable auto-hibern8
Mediatek UFS needs auto-hibern8 disabled before suspend. Introduce a solution to do pre-suspend before SSU (sleep). Link: https://lore.kernel.org/r/20211006054705.21885-1-peter.wang@mediatek.com Reviewed-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Bean Huo <beanhuo@micron.com> Signed-off-by: Peter Wang <peter.wang@mediatek.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Bug: 204438323 (cherry picked from commit |
||
|
|
5134c3ba7c |
ANDROID: USB: Add vendor specified variables to phy.h
This data is used by Android vendor for specific purpose. Bug: 227706139 Signed-off-by: Surong Pang <surong.pang@unisoc.com> Change-Id: I8aff33d894aad790474375eb1d897207e4964d3c |
||
|
|
deb6937be6 |
ANDROID: GKI: build multi-gen LRU
CONFIG_LRU_GEN=y to build multi-gen LRU. To enable it, echo y >/sys/kernel/mm/lru_gen/enabled. Bug: 227651406 Signed-off-by: Yu Zhao <yuzhao@google.com> Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Change-Id: If5f6ece8373f1da2eb1eb96d809a2e216ebc0fbc |
||
|
|
763ca9270f |
FROMLIST: mm: multi-gen LRU: design doc
Add a design doc. Link: https://lore.kernel.org/lkml/20220309021230.721028-15-yuzhao@google.com/ Signed-off-by: Yu Zhao <yuzhao@google.com> Acked-by: Brian Geffon <bgeffon@google.com> Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org> Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name> Acked-by: Steven Barrett <steven@liquorix.net> Acked-by: Suleiman Souhlal <suleiman@google.com> Tested-by: Daniel Byrne <djbyrne@mtu.edu> Tested-by: Donald Carr <d@chaos-reins.com> Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com> Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru> Tested-by: Shuang Zhai <szhai2@cs.rochester.edu> Tested-by: Sofia Trinh <sofia.trinh@edi.works> Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com> Bug: 227651406 Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Change-Id: I1d66302e618416291ebf9647e20625fb76613c89 |
||
|
|
6e815a6f34 |
FROMLIST: mm: multi-gen LRU: admin guide
Add an admin guide. Link: https://lore.kernel.org/lkml/20220309021230.721028-14-yuzhao@google.com/ Signed-off-by: Yu Zhao <yuzhao@google.com> Acked-by: Brian Geffon <bgeffon@google.com> Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org> Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name> Acked-by: Steven Barrett <steven@liquorix.net> Acked-by: Suleiman Souhlal <suleiman@google.com> Tested-by: Daniel Byrne <djbyrne@mtu.edu> Tested-by: Donald Carr <d@chaos-reins.com> Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com> Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru> Tested-by: Shuang Zhai <szhai2@cs.rochester.edu> Tested-by: Sofia Trinh <sofia.trinh@edi.works> Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com> Bug: 227651406 Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Change-Id: I6fafbd7eb3ef6819cfcd30376459f14893f17c63 |
||
|
|
3d18c9ea72 |
FROMLIST: mm: multi-gen LRU: debugfs interface
Add /sys/kernel/debug/lru_gen for working set estimation and proactive reclaim. These features are required to optimize job scheduling (bin packing) in data centers [1][2]. Compared with the page table-based approach and the PFN-based approach, e.g., mm/damon/[vp]addr.c, this lruvec-based approach has the following advantages: 1. It offers better choices because it is aware of memcgs, NUMA nodes, shared mappings and unmapped page cache. 2. It is more scalable because it is O(nr_hot_pages), whereas the PFN-based approach is O(nr_total_pages). Add /sys/kernel/debug/lru_gen_full for debugging. [1] https://dl.acm.org/doi/10.1145/3297858.3304053 [2] https://dl.acm.org/doi/10.1145/3503222.3507731 Link: https://lore.kernel.org/lkml/20220309021230.721028-13-yuzhao@google.com/ Signed-off-by: Yu Zhao <yuzhao@google.com> Acked-by: Brian Geffon <bgeffon@google.com> Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org> Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name> Acked-by: Steven Barrett <steven@liquorix.net> Acked-by: Suleiman Souhlal <suleiman@google.com> Tested-by: Daniel Byrne <djbyrne@mtu.edu> Tested-by: Donald Carr <d@chaos-reins.com> Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com> Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru> Tested-by: Shuang Zhai <szhai2@cs.rochester.edu> Tested-by: Sofia Trinh <sofia.trinh@edi.works> Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com> Bug: 227651406 Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Change-Id: Ie558098e0a24a647f77f4eacc4d72576173fc0b8 |
||
|
|
e8507816d1 |
FROMLIST: mm: multi-gen LRU: thrashing prevention
Add /sys/kernel/mm/lru_gen/min_ttl_ms for thrashing prevention, as requested by many desktop users [1]. When set to value N, it prevents the working set of N milliseconds from getting evicted. The OOM killer is triggered if this working set cannot be kept in memory. Based on the average human detectable lag (~100ms), N=1000 usually eliminates intolerable lags due to thrashing. Larger values like N=3000 make lags less noticeable at the risk of premature OOM kills. Compared with the size-based approach, e.g., [2], this time-based approach has the following advantages: 1. It is easier to configure because it is agnostic to applications and memory sizes. 2. It is more reliable because it is directly wired to the OOM killer. [1] https://lore.kernel.org/lkml/Ydza%2FzXKY9ATRoh6@google.com/ [2] https://lore.kernel.org/lkml/20211130201652.2218636d@mail.inbox.lv/ Link: https://lore.kernel.org/lkml/20220309021230.721028-12-yuzhao@google.com/ Signed-off-by: Yu Zhao <yuzhao@google.com> Acked-by: Brian Geffon <bgeffon@google.com> Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org> Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name> Acked-by: Steven Barrett <steven@liquorix.net> Acked-by: Suleiman Souhlal <suleiman@google.com> Tested-by: Daniel Byrne <djbyrne@mtu.edu> Tested-by: Donald Carr <d@chaos-reins.com> Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com> Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru> Tested-by: Shuang Zhai <szhai2@cs.rochester.edu> Tested-by: Sofia Trinh <sofia.trinh@edi.works> Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com> Bug: 227651406 Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Change-Id: I482d33f3beaf7723d2f3eeaaa5b4f12bcb9b48a1 |
||
|
|
76f7f07cbf |
FROMLIST: mm: multi-gen LRU: kill switch
Add /sys/kernel/mm/lru_gen/enabled as a kill switch. Components that
can be disabled include:
0x0001: the multi-gen LRU core
0x0002: walking page table, when arch_has_hw_pte_young() returns
true
0x0004: clearing the accessed bit in non-leaf PMD entries, when
CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG=y
[yYnN]: apply to all the components above
E.g.,
echo y >/sys/kernel/mm/lru_gen/enabled
cat /sys/kernel/mm/lru_gen/enabled
0x0007
echo 5 >/sys/kernel/mm/lru_gen/enabled
cat /sys/kernel/mm/lru_gen/enabled
0x0005
NB: the page table walks happen on the scale of seconds under heavy
memory pressure, in which case the mmap_lock contention is a lesser
concern, compared with the LRU lock contention and the I/O congestion.
So far the only well-known case of the mmap_lock contention happens on
Android, due to Scudo [1] which allocates several thousand VMAs for
merely a few hundred MBs. The SPF and the Maple Tree also have
provided their own assessments [2][3]. However, if walking page tables
does worsen the mmap_lock contention, the kill switch can be used to
disable it. In this case the multi-gen LRU will suffer a minor
performance degradation, as shown previously.
Clearing the accessed bit in non-leaf PMD entries can also be
disabled, since this behavior was not tested on x86 varieties other
than Intel and AMD.
[1] https://source.android.com/devices/tech/debug/scudo
[2] https://lore.kernel.org/lkml/20220128131006.67712-1-michel@lespinasse.org/
[3] https://lore.kernel.org/lkml/20220202024137.2516438-1-Liam.Howlett@oracle.com/
Link: https://lore.kernel.org/lkml/20220309021230.721028-11-yuzhao@google.com/
Signed-off-by: Yu Zhao <yuzhao@google.com>
Acked-by: Brian Geffon <bgeffon@google.com>
Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Acked-by: Steven Barrett <steven@liquorix.net>
Acked-by: Suleiman Souhlal <suleiman@google.com>
Tested-by: Daniel Byrne <djbyrne@mtu.edu>
Tested-by: Donald Carr <d@chaos-reins.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Tested-by: Shuang Zhai <szhai2@cs.rochester.edu>
Tested-by: Sofia Trinh <sofia.trinh@edi.works>
Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com>
Bug: 227651406
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Change-Id: I71801d9470a2588cad8bfd14fbcfafc7b010aa03
|
||
|
|
4d905e91d4 |
FROMLIST: mm: multi-gen LRU: optimize multiple memcgs
When multiple memcgs are available, it is possible to make better
choices based on generations and tiers and therefore improve the
overall performance under global memory pressure. This patch adds a
rudimentary optimization to select memcgs that can drop single-use
unmapped clean pages first. Doing so reduces the chance of going into
the aging path or swapping. These two operations can be costly.
A typical example that benefits from this optimization is a server
running mixed types of workloads, e.g., heavy anon workload in one
memcg and heavy buffered I/O workload in the other.
Though this optimization can be applied to both kswapd and direct
reclaim, it is only added to kswapd to keep the patchset manageable.
Later improvements will cover the direct reclaim path.
Server benchmark results:
Mixed workloads:
fio (buffered I/O): -[23, 25]%
IOPS BW
patch1-8: 2960k 11.3GiB/s
patch1-9: 2248k 8783MiB/s
memcached (anon): +[210, 214]%
Ops/sec KB/sec
patch1-8: 606940.09 23576.89
patch1-9: 1895197.49 73619.93
Mixed workloads:
fio (buffered I/O): -[4, 6]%
IOPS BW
5.18-ed4643521e6a: 2369k 9255MiB/s
patch1-9: 2248k 8783MiB/s
memcached (anon): +[510, 516]%
Ops/sec KB/sec
5.18-ed4643521e6a: 309189.58 12010.61
patch1-9: 1895197.49 73619.93
Configurations:
(changes since patch 6)
cat mixed.sh
modprobe brd rd_nr=2 rd_size=56623104
swapoff -a
mkswap /dev/ram0
swapon /dev/ram0
mkfs.ext4 /dev/ram1
mount -t ext4 /dev/ram1 /mnt
memtier_benchmark -S /var/run/memcached/memcached.sock \
-P memcache_binary -n allkeys --key-minimum=1 \
--key-maximum=50000000 --key-pattern=P:P -c 1 -t 36 \
--ratio 1:0 --pipeline 8 -d 2000
fio -name=mglru --numjobs=36 --directory=/mnt --size=1408m \
--buffered=1 --ioengine=io_uring --iodepth=128 \
--iodepth_batch_submit=32 --iodepth_batch_complete=32 \
--rw=randread --random_distribution=random --norandommap \
--time_based --ramp_time=10m --runtime=90m --group_reporting &
pid=$!
sleep 200
memtier_benchmark -S /var/run/memcached/memcached.sock \
-P memcache_binary -n allkeys --key-minimum=1 \
--key-maximum=50000000 --key-pattern=R:R -c 1 -t 36 \
--ratio 0:1 --pipeline 8 --randomize --distinct-client-seed
kill -INT $pid
wait
Client benchmark results:
no change (CONFIG_MEMCG=n)
Link: https://lore.kernel.org/lkml/20220309021230.721028-10-yuzhao@google.com/
Signed-off-by: Yu Zhao <yuzhao@google.com>
Acked-by: Brian Geffon <bgeffon@google.com>
Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Acked-by: Steven Barrett <steven@liquorix.net>
Acked-by: Suleiman Souhlal <suleiman@google.com>
Tested-by: Daniel Byrne <djbyrne@mtu.edu>
Tested-by: Donald Carr <d@chaos-reins.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Tested-by: Shuang Zhai <szhai2@cs.rochester.edu>
Tested-by: Sofia Trinh <sofia.trinh@edi.works>
Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com>
Bug: 227651406
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Change-Id: I0641467dbd7c5ba0645602cec7fe8d6fdb750edb
|
||
|
|
5280d76d38 |
FROMLIST: mm: multi-gen LRU: support page table walks
To further exploit spatial locality, the aging prefers to walk page
tables to search for young PTEs and promote hot pages. A kill switch
will be added in the next patch to disable this behavior. When
disabled, the aging relies on the rmap only.
NB: this behavior has nothing similar with the page table scanning in
the 2.4 kernel [1], which searches page tables for old PTEs, adds cold
pages to swapcache and unmaps them.
To avoid confusion, the term "iteration" specifically means the
traversal of an entire mm_struct list; the term "walk" will be applied
to page tables and the rmap, as usual.
An mm_struct list is maintained for each memcg, and an mm_struct
follows its owner task to the new memcg when this task is migrated.
Given an lruvec, the aging iterates lruvec_memcg()->mm_list and calls
walk_page_range() with each mm_struct on this list to promote hot
pages before it increments max_seq.
When multiple page table walkers iterate the same list, each of them
gets a unique mm_struct; therefore they can run concurrently. Page
table walkers ignore any misplaced pages, e.g., if an mm_struct was
migrated, pages it left in the previous memcg will not be promoted
when its current memcg is under reclaim. Similarly, page table walkers
will not promote pages from nodes other than the one under reclaim.
This patch uses the following optimizations when walking page tables:
1. It tracks the usage of mm_struct's between context switches so that
page table walkers can skip processes that have been sleeping since
the last iteration.
2. It uses generational Bloom filters to record populated branches so
that page table walkers can reduce their search space based on the
query results, e.g., to skip page tables containing mostly holes or
misplaced pages.
3. It takes advantage of the accessed bit in non-leaf PMD entries when
CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG=y.
4. It does not zigzag between a PGD table and the same PMD table
spanning multiple VMAs. IOW, it finishes all the VMAs within the
range of the same PMD table before it returns to a PGD table. This
improves the cache performance for workloads that have large
numbers of tiny VMAs [2], especially when CONFIG_PGTABLE_LEVELS=5.
Server benchmark results:
Single workload:
fio (buffered I/O): no change
Single workload:
memcached (anon): +[5.5, 7.5]%
Ops/sec KB/sec
patch1-7: 1014393.57 39455.42
patch1-8: 1078507.59 41949.15
Configurations:
no change
Client benchmark results:
kswapd profiles:
patch1-7
45.54% lzo1x_1_do_compress (real work)
9.56% page_vma_mapped_walk
6.70% _raw_spin_unlock_irq
2.78% ptep_clear_flush
2.47% do_raw_spin_lock
2.22% __zram_bvec_write
1.87% lru_gen_look_around
1.78% memmove
1.77% obj_malloc
1.44% free_unref_page_list
patch1-8
47.02% lzo1x_1_do_compress (real work)
6.73% page_vma_mapped_walk
6.14% _raw_spin_unlock_irq
3.39% walk_pte_range
2.63% ptep_clear_flush
2.29% __zram_bvec_write
2.10% do_raw_spin_lock
1.81% memmove
1.73% obj_malloc
1.53% free_unref_page_list
Configurations:
no change
[1] https://lwn.net/Articles/23732/
[2] https://source.android.com/devices/tech/debug/scudo
Link: https://lore.kernel.org/lkml/20220309021230.721028-9-yuzhao@google.com/
Signed-off-by: Yu Zhao <yuzhao@google.com>
Acked-by: Brian Geffon <bgeffon@google.com>
Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Acked-by: Steven Barrett <steven@liquorix.net>
Acked-by: Suleiman Souhlal <suleiman@google.com>
Tested-by: Daniel Byrne <djbyrne@mtu.edu>
Tested-by: Donald Carr <d@chaos-reins.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Tested-by: Shuang Zhai <szhai2@cs.rochester.edu>
Tested-by: Sofia Trinh <sofia.trinh@edi.works>
Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com>
Bug: 227651406
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Change-Id: I5a3c97cf8ebf8d65d5f9528cd979a637c190053e
|
||
|
|
afd94c9ef9 |
FROMLIST: mm: multi-gen LRU: exploit locality in rmap
Searching the rmap for PTEs mapping each page on an LRU list (to test
and clear the accessed bit) can be expensive because pages from
different VMAs (PA space) are not cache friendly to the rmap (VA
space). For workloads mostly using mapped pages, the rmap has a high
CPU cost in the reclaim path.
This patch exploits spatial locality to reduce the trips into the
rmap. When shrink_page_list() walks the rmap and finds a young PTE, a
new function lru_gen_look_around() scans at most BITS_PER_LONG-1
adjacent PTEs. On finding another young PTE, it clears the accessed
bit and updates the gen counter of the page mapped by this PTE to
(max_seq%MAX_NR_GENS)+1.
Server benchmark results:
Single workload:
fio (buffered I/O): no change
Single workload:
memcached (anon): +[4, 6]%
Ops/sec KB/sec
patch1-6: 964656.80 37520.88
patch1-7: 1014393.57 39455.42
Configurations:
no change
Client benchmark results:
kswapd profiles:
patch1-6
36.13% lzo1x_1_do_compress (real work)
19.16% page_vma_mapped_walk
6.55% _raw_spin_unlock_irq
4.02% do_raw_spin_lock
2.32% anon_vma_interval_tree_iter_first
2.11% ptep_clear_flush
1.76% __zram_bvec_write
1.64% folio_referenced_one
1.40% memmove
1.35% obj_malloc
patch1-7
45.54% lzo1x_1_do_compress (real work)
9.56% page_vma_mapped_walk
6.70% _raw_spin_unlock_irq
2.78% ptep_clear_flush
2.47% do_raw_spin_lock
2.22% __zram_bvec_write
1.87% lru_gen_look_around
1.78% memmove
1.77% obj_malloc
1.44% free_unref_page_list
Configurations:
no change
Link: https://lore.kernel.org/lkml/20220309021230.721028-8-yuzhao@google.com/
Signed-off-by: Yu Zhao <yuzhao@google.com>
Acked-by: Brian Geffon <bgeffon@google.com>
Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Acked-by: Steven Barrett <steven@liquorix.net>
Acked-by: Suleiman Souhlal <suleiman@google.com>
Tested-by: Daniel Byrne <djbyrne@mtu.edu>
Tested-by: Donald Carr <d@chaos-reins.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Tested-by: Shuang Zhai <szhai2@cs.rochester.edu>
Tested-by: Sofia Trinh <sofia.trinh@edi.works>
Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com>
Bug: 227651406
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Change-Id: I9a290343840f3cf925c891c8e360c7cdc24ffb9c
|
||
|
|
a1537a68c5 |
FROMLIST: mm: multi-gen LRU: minimal implementation
To avoid confusion, the terms "promotion" and "demotion" will be
applied to the multi-gen LRU, as a new convention; the terms
"activation" and "deactivation" will be applied to the active/inactive
LRU, as usual.
The aging produces young generations. Given an lruvec, it increments
max_seq when max_seq-min_seq+1 approaches MIN_NR_GENS. The aging
promotes hot pages to the youngest generation when it finds them
accessed through page tables; the demotion of cold pages happens
consequently when it increments max_seq. The aging has the complexity
O(nr_hot_pages), since it is only interested in hot pages. Promotion
in the aging path does not require any LRU list operations, only the
updates of the gen counter and lrugen->nr_pages[]; demotion, unless as
the result of the increment of max_seq, requires LRU list operations,
e.g., lru_deactivate_fn().
The eviction consumes old generations. Given an lruvec, it increments
min_seq when the lists indexed by min_seq%MAX_NR_GENS become empty. A
feedback loop modeled after the PID controller monitors refaults over
anon and file types and decides which type to evict when both types
are available from the same generation.
Each generation is divided into multiple tiers. Tiers represent
different ranges of numbers of accesses through file descriptors. A
page accessed N times through file descriptors is in tier
order_base_2(N). Tiers do not have dedicated lrugen->lists[], only
bits in page->flags. In contrast to moving across generations, which
requires the LRU lock, moving across tiers only involves operations on
page->flags. The feedback loop also monitors refaults over all tiers
and decides when to protect pages in which tiers (N>1), using the
first tier (N=0,1) as a baseline. The first tier contains single-use
unmapped clean pages, which are most likely the best choices. The
eviction moves a page to the next generation, i.e., min_seq+1, if the
feedback loop decides so. This approach has the following advantages:
1. It removes the cost of activation in the buffered access path by
inferring whether pages accessed multiple times through file
descriptors are statistically hot and thus worth protecting in the
eviction path.
2. It takes pages accessed through page tables into account and avoids
overprotecting pages accessed multiple times through file
descriptors. (Pages accessed through page tables are in the first
tier, since N=0.)
3. More tiers provide better protection for pages accessed more than
twice through file descriptors, when under heavy buffered I/O
workloads.
Server benchmark results:
Single workload:
fio (buffered I/O): +[38, 40]%
IOPS BW
5.18-ed4643521e6a: 2547k 9989MiB/s
patch1-6: 3540k 13.5GiB/s
Single workload:
memcached (anon): +[103, 107]%
Ops/sec KB/sec
5.18-ed4643521e6a: 469048.66 18243.91
patch1-6: 964656.80 37520.88
Configurations:
CPU: two Xeon 6154
Mem: total 256G
Node 1 was only used as a ram disk to reduce the variance in the
results.
patch drivers/block/brd.c <<EOF
99,100c99,100
< gfp_flags = GFP_NOIO | __GFP_ZERO | __GFP_HIGHMEM;
< page = alloc_page(gfp_flags);
---
> gfp_flags = GFP_NOIO | __GFP_ZERO | __GFP_HIGHMEM | __GFP_THISNODE;
> page = alloc_pages_node(1, gfp_flags, 0);
EOF
cat >>/etc/systemd/system.conf <<EOF
CPUAffinity=numa
NUMAPolicy=bind
NUMAMask=0
EOF
cat >>/etc/memcached.conf <<EOF
-m 184320
-s /var/run/memcached/memcached.sock
-a 0766
-t 36
-B binary
EOF
cat fio.sh
modprobe brd rd_nr=1 rd_size=113246208
swapoff -a
mkfs.ext4 /dev/ram0
mount -t ext4 /dev/ram0 /mnt
mkdir /sys/fs/cgroup/user.slice/test
echo 38654705664 >/sys/fs/cgroup/user.slice/test/memory.max
echo $$ >/sys/fs/cgroup/user.slice/test/cgroup.procs
fio -name=mglru --numjobs=72 --directory=/mnt --size=1408m \
--buffered=1 --ioengine=io_uring --iodepth=128 \
--iodepth_batch_submit=32 --iodepth_batch_complete=32 \
--rw=randread --random_distribution=random --norandommap \
--time_based --ramp_time=10m --runtime=5m --group_reporting
cat memcached.sh
modprobe brd rd_nr=1 rd_size=113246208
swapoff -a
mkswap /dev/ram0
swapon /dev/ram0
memtier_benchmark -S /var/run/memcached/memcached.sock \
-P memcache_binary -n allkeys --key-minimum=1 \
--key-maximum=65000000 --key-pattern=P:P -c 1 -t 36 \
--ratio 1:0 --pipeline 8 -d 2000
memtier_benchmark -S /var/run/memcached/memcached.sock \
-P memcache_binary -n allkeys --key-minimum=1 \
--key-maximum=65000000 --key-pattern=R:R -c 1 -t 36 \
--ratio 0:1 --pipeline 8 --randomize --distinct-client-seed
Client benchmark results:
kswapd profiles:
5.18-ed4643521e6a
39.56% page_vma_mapped_walk
19.32% lzo1x_1_do_compress (real work)
7.18% do_raw_spin_lock
4.23% _raw_spin_unlock_irq
2.26% vma_interval_tree_subtree_search
2.12% vma_interval_tree_iter_next
2.11% folio_referenced_one
1.90% anon_vma_interval_tree_iter_first
1.47% ptep_clear_flush
0.97% __anon_vma_interval_tree_subtree_search
patch1-6
36.13% lzo1x_1_do_compress (real work)
19.16% page_vma_mapped_walk
6.55% _raw_spin_unlock_irq
4.02% do_raw_spin_lock
2.32% anon_vma_interval_tree_iter_first
2.11% ptep_clear_flush
1.76% __zram_bvec_write
1.64% folio_referenced_one
1.40% memmove
1.35% obj_malloc
Configurations:
CPU: single Snapdragon 7c
Mem: total 4G
Chrome OS MemoryPressure [1]
[1] https://chromium.googlesource.com/chromiumos/platform/tast-tests/
Link: https://lore.kernel.org/lkml/20220309021230.721028-7-yuzhao@google.com/
Signed-off-by: Yu Zhao <yuzhao@google.com>
Acked-by: Brian Geffon <bgeffon@google.com>
Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Acked-by: Steven Barrett <steven@liquorix.net>
Acked-by: Suleiman Souhlal <suleiman@google.com>
Tested-by: Daniel Byrne <djbyrne@mtu.edu>
Tested-by: Donald Carr <d@chaos-reins.com>
Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com>
Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Tested-by: Shuang Zhai <szhai2@cs.rochester.edu>
Tested-by: Sofia Trinh <sofia.trinh@edi.works>
Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com>
Bug: 227651406
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
Change-Id: I3fe4850006d7984cd9f4fd46134b826609dc2f86
|
||
|
|
f88ed5a3d3 |
FROMLIST: mm: multi-gen LRU: groundwork
Evictable pages are divided into multiple generations for each lruvec. The youngest generation number is stored in lrugen->max_seq for both anon and file types as they are aged on an equal footing. The oldest generation numbers are stored in lrugen->min_seq[] separately for anon and file types as clean file pages can be evicted regardless of swap constraints. These three variables are monotonically increasing. Generation numbers are truncated into order_base_2(MAX_NR_GENS+1) bits in order to fit into the gen counter in page->flags. Each truncated generation number is an index to lrugen->lists[]. The sliding window technique is used to track at least MIN_NR_GENS and at most MAX_NR_GENS generations. The gen counter stores a value within [1, MAX_NR_GENS] while a page is on one of lrugen->lists[]. Otherwise it stores 0. There are two conceptually independent procedures: "the aging", which produces young generations, and "the eviction", which consumes old generations. They form a closed-loop system, i.e., "the page reclaim". Both procedures can be invoked from userspace for the purposes of working set estimation and proactive reclaim. These features are required to optimize job scheduling (bin packing) in data centers. The variable size of the sliding window is designed for such use cases [1][2]. To avoid confusion, the terms "hot" and "cold" will be applied to the multi-gen LRU, as a new convention; the terms "active" and "inactive" will be applied to the active/inactive LRU, as usual. The protection of hot pages and the selection of cold pages are based on page access channels and patterns. There are two access channels: one through page tables and the other through file descriptors. The protection of the former channel is by design stronger because: 1. The uncertainty in determining the access patterns of the former channel is higher due to the approximation of the accessed bit. 2. The cost of evicting the former channel is higher due to the TLB flushes required and the likelihood of encountering the dirty bit. 3. The penalty of underprotecting the former channel is higher because applications usually do not prepare themselves for major page faults like they do for blocked I/O. E.g., GUI applications commonly use dedicated I/O threads to avoid blocking the rendering threads. There are also two access patterns: one with temporal locality and the other without. For the reasons listed above, the former channel is assumed to follow the former pattern unless VM_SEQ_READ or VM_RAND_READ is present; the latter channel is assumed to follow the latter pattern unless outlying refaults have been observed [3][4]. The next patch will address the "outlying refaults". Three macros, i.e., LRU_REFS_WIDTH, LRU_REFS_PGOFF and LRU_REFS_MASK, used later are added in this patch to make the entire patchset less diffy. A page is added to the youngest generation on faulting. The aging needs to check the accessed bit at least twice before handing this page over to the eviction. The first check takes care of the accessed bit set on the initial fault; the second check makes sure this page has not been used since then. This protocol, AKA second chance, requires a minimum of two generations, hence MIN_NR_GENS. [1] https://dl.acm.org/doi/10.1145/3297858.3304053 [2] https://dl.acm.org/doi/10.1145/3503222.3507731 [3] https://lwn.net/Articles/495543/ [4] https://lwn.net/Articles/815342/ Link: https://lore.kernel.org/lkml/20220309021230.721028-6-yuzhao@google.com/ Signed-off-by: Yu Zhao <yuzhao@google.com> Acked-by: Brian Geffon <bgeffon@google.com> Acked-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org> Acked-by: Oleksandr Natalenko <oleksandr@natalenko.name> Acked-by: Steven Barrett <steven@liquorix.net> Acked-by: Suleiman Souhlal <suleiman@google.com> Tested-by: Daniel Byrne <djbyrne@mtu.edu> Tested-by: Donald Carr <d@chaos-reins.com> Tested-by: Holger Hoffstätte <holger@applied-asynchrony.com> Tested-by: Konstantin Kharlamov <Hi-Angel@yandex.ru> Tested-by: Shuang Zhai <szhai2@cs.rochester.edu> Tested-by: Sofia Trinh <sofia.trinh@edi.works> Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com> Bug: 227651406 Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Change-Id: I333ec6a1d2abfa60d93d6adc190ed3eefe441512 |
||
|
|
d896bcb2a8 |
FROMLIST: Revert "include/linux/mm_inline.h: fold __update_lru_size() into its sole caller"
This patch undoes the following refactor:
commit
|