From 8846927a0240573859426b83419d93b9a95a0719 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 16:47:12 +0800 Subject: [PATCH 01/10] ANDROID: GKI: rockchip: Enable symbols for dwc2 Functions changes summary: 0 Removed, 0 Changed, 2 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 2 Added functions: [A] 'function void usb_hcd_unmap_urb_for_dma(usb_hcd*, urb*)' [A] 'function unsigned int usb_wakeup_enabled_descendants(usb_device*)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: Ibf2f79ee3fb4e8b77792cab766afcc998aaf963c --- android/abi_gki_aarch64.xml | 11 ++++++++ android/abi_gki_aarch64_rockchip | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 60b1b19bdeea..20375547fd6d 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -5087,6 +5087,7 @@ + @@ -5134,6 +5135,7 @@ + @@ -139906,6 +139908,11 @@ + + + + + @@ -140127,6 +140134,10 @@ + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 5981963cf68d..647dc22324f7 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -687,6 +687,52 @@ watchdog_set_restart_priority watchdog_unregister_device +# required by dwc2.ko + __bitmap_clear + bitmap_find_next_zero_area_off + dev_driver_string + device_set_wakeup_capable + device_wakeup_enable + devm_usb_get_phy + dma_sync_single_for_cpu + dma_sync_single_for_device + hrtimer_cancel + hrtimer_init + hrtimer_start_range_ns + is_vmalloc_addr + phy_reset + _raw_spin_trylock + synchronize_irq + usb_add_gadget_udc + usb_add_hcd + usb_calc_bus_time + usb_create_hcd + usb_debug_root + usb_del_gadget_udc + usb_disabled + usb_ep_set_maxpacket_limit + usb_gadget_giveback_request + usb_gadget_map_request + usb_gadget_set_state + usb_gadget_unmap_request + usb_get_dr_mode + usb_hcd_check_unlink_urb + usb_hcd_giveback_urb + usb_hcd_link_urb_to_ep + usb_hcd_map_urb_for_dma + usb_hcd_resume_root_hub + usb_hcd_unlink_urb_from_ep + usb_hcd_unmap_urb_for_dma + usb_hub_clear_tt_buffer + usb_phy_set_charger_current + usb_put_hcd + usb_remove_hcd + usb_role_switch_get_drvdata + usb_role_switch_register + usb_role_switch_unregister + usb_speed_string + usb_wakeup_enabled_descendants + # required by fan53555.ko gpiod_get_raw_value gpiod_set_raw_value From dfdc93d7c416a9aa16026218fd6b7c1801904da7 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 18:14:34 +0800 Subject: [PATCH 02/10] ANDROID: GKI: rockchip: Enable symbols for iommu No symbols need updating. Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I1bfcdb40193b021d0c19f81c407b78ff1bf09b35 --- android/abi_gki_aarch64_rockchip | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 647dc22324f7..1fbcaa5b6540 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -1188,6 +1188,24 @@ regmap_del_irq_chip regmap_irq_get_domain +# required by rockchip-iommu.ko + bus_set_iommu + device_link_add + device_link_del + get_zeroed_page + iommu_device_register + iommu_device_sysfs_add + iommu_device_sysfs_remove + iommu_get_dma_cookie + iommu_group_alloc + iommu_group_put + iommu_group_ref_get + iommu_put_dma_cookie + platform_bus_type + platform_irq_count + report_iommu_fault + strstr + # required by rockchip-rng.ko devm_hwrng_register devm_of_iomap From f0ad57ddd71bdbeee116f9717f3d2de59730ece1 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Tue, 28 Sep 2021 08:52:49 +0800 Subject: [PATCH 03/10] ANDROID: GKI: rockchip: Enable symbols for rockchip-drm Functions changes summary: 0 Removed, 0 Changed, 14 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 14 Added functions: [A] 'function int __drm_atomic_helper_disable_plane(drm_plane*, drm_plane_state*)' [A] 'function void drm_connector_list_update(drm_connector*)' [A] 'function dma_buf* drm_gem_dmabuf_export(drm_device*, dma_buf_export_info*)' [A] 'function int drm_gem_dmabuf_get_uuid(dma_buf*, uuid_t*)' [A] 'function int drm_gem_dumb_map_offset(drm_file*, drm_device*, u32, u64*)' [A] 'function int drm_gem_fb_afbc_init(drm_device*, const drm_mode_fb_cmd2*, drm_afbc_framebuffer*)' [A] 'function int drm_gem_fb_init_with_funcs(drm_device*, drm_framebuffer*, drm_file*, const drm_mode_fb_cmd2*, const drm_framebuffer_funcs*)' [A] 'function int drm_mode_create_tv_properties(drm_device*, unsigned int, const char* const*)' [A] 'function void drm_mode_prune_invalid(drm_device*, list_head*, bool)' [A] 'function drm_mode_status drm_mode_validate_driver(drm_device*, const drm_display_mode*)' [A] 'function drm_mode_status drm_mode_validate_size(const drm_display_mode*, int, int)' [A] 'function drm_mode_status drm_mode_validate_ycbcr420(const drm_display_mode*, drm_connector*)' [A] 'function unsigned long int drm_prime_get_contiguous_size(sg_table*)' [A] 'function drm_property* drm_property_create_object(drm_device*, u32, const char*, uint32_t)' Bug: 194515348 Signed-off-by: Kever Yang Signed-off-by: Greg Kroah-Hartman Change-Id: I9d72fe58cd354b4727e08d733b1c246aed2e48c0 --- android/abi_gki_aarch64.xml | 118 +++++++++++++++++ android/abi_gki_aarch64_rockchip | 220 +++++++++++++++++++++++++++++++ 2 files changed, 338 insertions(+) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 20375547fd6d..230bd921104e 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -83,6 +83,7 @@ + @@ -1772,6 +1773,7 @@ + @@ -1894,15 +1896,20 @@ + + + + + @@ -1987,6 +1994,7 @@ + @@ -2002,9 +2010,13 @@ + + + + @@ -2046,6 +2058,7 @@ + @@ -2056,6 +2069,7 @@ + @@ -14884,6 +14898,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -28175,6 +28212,7 @@ + @@ -87619,6 +87657,7 @@ + @@ -113261,6 +113300,11 @@ + + + + + @@ -122954,6 +122998,10 @@ + + + + @@ -123583,6 +123631,16 @@ + + + + + + + + + + @@ -123607,6 +123665,19 @@ + + + + + + + + + + + + + @@ -123628,6 +123699,14 @@ + + + + + + + + @@ -124043,6 +124122,12 @@ + + + + + + @@ -124121,6 +124206,12 @@ + + + + + + @@ -124134,6 +124225,22 @@ + + + + + + + + + + + + + + + + @@ -124335,6 +124442,10 @@ + + + + @@ -124398,6 +124509,13 @@ + + + + + + + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index 1fbcaa5b6540..d8abdb83d439 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -1285,6 +1285,226 @@ thermal_zone_device_enable thermal_zone_device_update +# required by rockchipdrm.ko + adjust_managed_page_count + clk_is_match + clk_set_parent + component_add + component_bind_all + component_del + component_master_add_with_match + component_master_del + component_match_add_release + component_unbind_all + devm_of_phy_get_by_index + dma_buf_attach + dma_buf_detach + dma_buf_map_attachment + dma_buf_unmap_attachment + dma_get_sgtable_attrs + dma_mmap_attrs + drm_add_modes_noedid + drm_atomic_commit + drm_atomic_get_connector_state + drm_atomic_get_crtc_state + drm_atomic_get_plane_state + drm_atomic_helper_check + drm_atomic_helper_check_plane_state + drm_atomic_helper_cleanup_planes + drm_atomic_helper_commit + drm_atomic_helper_commit_hw_done + drm_atomic_helper_commit_modeset_disables + drm_atomic_helper_commit_modeset_enables + drm_atomic_helper_commit_planes + __drm_atomic_helper_connector_destroy_state + __drm_atomic_helper_connector_duplicate_state + __drm_atomic_helper_connector_reset + __drm_atomic_helper_crtc_destroy_state + __drm_atomic_helper_crtc_duplicate_state + drm_atomic_helper_dirtyfb + __drm_atomic_helper_disable_plane + drm_atomic_helper_duplicate_state + drm_atomic_helper_fake_vblank + drm_atomic_helper_page_flip + __drm_atomic_helper_plane_destroy_state + __drm_atomic_helper_plane_duplicate_state + drm_atomic_helper_set_config + drm_atomic_helper_shutdown + drm_atomic_helper_swap_state + drm_atomic_helper_wait_for_vblanks + drm_atomic_set_crtc_for_connector + drm_atomic_set_crtc_for_plane + drm_atomic_set_fb_for_plane + drm_atomic_set_mode_for_crtc + drm_atomic_state_alloc + __drm_atomic_state_free + drm_bridge_attach + drm_compat_ioctl + drm_connector_init_with_ddc + drm_connector_list_iter_begin + drm_connector_list_iter_end + drm_connector_list_iter_next + drm_connector_list_update + drm_connector_unregister + drm_crtc_cleanup + drm_crtc_enable_color_mgmt + drm_crtc_from_index + drm_crtc_handle_vblank + drm_crtc_init_with_planes + drm_crtc_send_vblank_event + drm_crtc_vblank_get + drm_crtc_vblank_off + drm_crtc_vblank_on + drm_crtc_vblank_put + __drm_dbg + drm_debugfs_create_files + drm_detect_monitor_audio + drm_dev_alloc + drm_dev_dbg + drm_dev_printk + drm_dev_put + drm_dev_register + drm_dev_unregister + drm_do_get_edid + drm_dp_bw_code_to_link_rate + drm_dp_channel_eq_ok + drm_encoder_cleanup + drm_encoder_init + drm_event_reserve_init_locked + drm_flip_work_cleanup + drm_flip_work_commit + drm_flip_work_init + drm_flip_work_queue + drm_format_info + drm_framebuffer_cleanup + drm_framebuffer_init + drm_gem_cma_vm_ops + drm_gem_dmabuf_export + drm_gem_dmabuf_get_uuid + drm_gem_dmabuf_mmap + drm_gem_dmabuf_release + drm_gem_dmabuf_vmap + drm_gem_dmabuf_vunmap + drm_gem_dumb_map_offset + drm_gem_fb_afbc_init + drm_gem_fb_create_handle + drm_gem_fb_init_with_funcs + drm_gem_get_pages + drm_gem_handle_create + drm_gem_map_attach + drm_gem_map_detach + drm_gem_map_dma_buf + drm_gem_mmap + drm_gem_mmap_obj + drm_gem_object_free + drm_gem_object_init + drm_gem_object_lookup + drm_gem_object_put_locked + drm_gem_object_release + drm_gem_prime_fd_to_handle + drm_gem_prime_handle_to_fd + drm_gem_put_pages + drm_gem_unmap_dma_buf + drm_gem_vm_close + drm_get_format_info + drm_get_format_name + drm_hdmi_vendor_infoframe_from_display_mode + drm_helper_mode_fill_fb_struct + drm_ioctl + drm_kms_helper_hotplug_event + drm_kms_helper_poll_enable + drm_kms_helper_poll_fini + drm_kms_helper_poll_init + drm_match_cea_mode + drm_mm_init + drm_mm_insert_node_in_range + drmm_mode_config_init + drm_mm_print + drm_mm_remove_node + drm_mm_takedown + drm_mode_config_cleanup + drm_mode_config_helper_resume + drm_mode_config_helper_suspend + drm_mode_config_reset + drm_mode_copy + drm_mode_create_tv_properties + drm_mode_crtc_set_gamma_size + drm_mode_debug_printmodeline + drm_mode_object_get + drm_mode_object_put + drm_mode_prune_invalid + drm_mode_set_crtcinfo + drm_modeset_lock_all + drm_modeset_unlock_all + drm_mode_sort + drm_mode_validate_driver + drm_mode_validate_size + drm_mode_validate_ycbcr420 + drm_object_attach_property + drm_of_crtc_port_mask + drm_of_encoder_active_endpoint + drm_of_find_panel_or_bridge + drm_open + drm_panel_bridge_add_typed + drm_panel_bridge_remove + drm_panel_enable + drm_panel_get_modes + drm_panel_prepare + drm_plane_cleanup + drm_plane_create_alpha_property + drm_plane_create_blend_mode_property + drm_plane_create_rotation_property + drm_plane_create_zpos_property + drm_poll + drm_prime_gem_destroy + drm_prime_get_contiguous_size + drm_prime_pages_to_sg + drm_prime_sg_to_page_addr_arrays + __drm_printfn_seq_file + drm_property_create_bitmask + drm_property_create_object + drm_property_create_range + __drm_puts_seq_file + drm_read + drm_release + drm_send_event_locked + drm_simple_encoder_init + drm_universal_plane_init + drm_vblank_init + drm_writeback_connector_init + drm_writeback_queue_job + drm_writeback_signal_completion + hdmi_infoframe_pack + iommu_attach_device + iommu_detach_device + iommu_domain_alloc + iommu_domain_free + iommu_map + iommu_map_sg + iommu_set_fault_handler + iommu_unmap + memblock_free + ns_to_timespec64 + of_graph_get_next_endpoint + of_graph_get_port_by_id + of_graph_get_remote_port + of_graph_get_remote_port_parent + of_property_match_string + of_reserved_mem_device_init_by_idx + platform_device_unregister + platform_find_device_by_driver + __platform_register_drivers + platform_unregister_drivers + release_firmware + request_firmware + sort + __sw_hweight32 + __sw_hweight8 + system_unbound_wq + __vmalloc + vm_get_page_prot + vm_map_pages + # required by rtc-rk808.ko _bcd2bin _bin2bcd From 2b411f1257895f5d05ad2e221c856893af010012 Mon Sep 17 00:00:00 2001 From: Jaegeuk Kim Date: Thu, 30 Sep 2021 11:12:50 -0700 Subject: [PATCH 04/10] BACKPORT: FROMGIT: scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION Commit 57d104c153d3 ("ufs: add UFS power management support") made the UFS driver submit a REQUEST SENSE command before submitting a power management command to a WLUN to clear the POWER ON unit attention. Instead of submitting a REQUEST SENSE command before submitting a power management command, retry the power management command until it succeeds. This is the preparation to get rid of all UNIT ATTENTION code which should be handled by users. Bug: 194712579 Link: https://lore.kernel.org/r/20211001182015.1347587-2-jaegeuk@kernel.org (cherry picked from commit af21c3fd5b3ec540a97b367a70b26616ff7e0c55 git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next) Cc: Adrian Hunter Reviewed-by: Bart Van Assche Signed-off-by: Jaegeuk Kim Signed-off-by: Martin K. Petersen Change-Id: I7e639d89ae9fbd5ff0f1b3a6e5cbe77682ebefc0 --- drivers/scsi/ufs/ufshcd.c | 12 +++++++++--- include/scsi/scsi.h | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index f160d0fcdc59..d47c32510bd3 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -8573,7 +8573,7 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba, struct scsi_sense_hdr sshdr; struct scsi_device *sdp; unsigned long flags; - int ret; + int ret, retries; spin_lock_irqsave(hba->host->host_lock, flags); sdp = hba->sdev_ufs_device; @@ -8607,8 +8607,14 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba, * callbacks hence set the RQF_PM flag so that it doesn't resume the * already suspended childs. */ - ret = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr, - START_STOP_TIMEOUT, 0, 0, RQF_PM, NULL); + for (retries = 3; retries > 0; --retries) { + ret = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr, + START_STOP_TIMEOUT, 0, 0, RQF_PM, NULL); + if (!scsi_status_is_check_condition(ret) || + !scsi_sense_valid(&sshdr) || + sshdr.sense_key != UNIT_ATTENTION) + break; + } if (ret) { sdev_printk(KERN_WARNING, sdp, "START_STOP failed for power mode: %d, result %x\n", diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h index 5339baadc082..ef3345119b29 100644 --- a/include/scsi/scsi.h +++ b/include/scsi/scsi.h @@ -88,6 +88,21 @@ static inline int scsi_is_wlun(u64 lun) return (lun & 0xff00) == SCSI_W_LUN_BASE; } +/** + * scsi_status_is_check_condition - check the status return. + * + * @status: the status passed up from the driver (including host and + * driver components) + * + * This returns true if the status code is SAM_STAT_CHECK_CONDITION. + */ +static inline int scsi_status_is_check_condition(int status) +{ + if (status < 0) + return false; + status &= 0xfe; + return status == SAM_STAT_CHECK_CONDITION; +} /* * MESSAGE CODES From d5aea3dbfb3ecf401d3956e3012c1ad5380ec55c Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Thu, 23 Sep 2021 13:11:42 -0700 Subject: [PATCH 05/10] BACKPORT: FROMGIT: scsi: ufs: core: Stop clearing unit attentions Commit aa53f580e67b ("scsi: ufs: Minor adjustments to error handling") introduced a ufshcd_clear_ua_wluns() call in ufshcd_err_handling_unprepare(). As explained in detail by Adrian Hunter, this can trigger a deadlock. Avoid that deadlock by removing the code that clears the unit attention. This is safe because the only software that relies on clearing unit attentions is the Android Trusty software and because support for handling unit attentions has been added in the Trusty software. See also https://lore.kernel.org/linux-scsi/20210930124224.114031-2-adrian.hunter@intel.com/ Note that, should apply "scsi: ufs: retry START_STOP on UNIT_ATTENTION" before this patch, since this patch gives UNIT ATTENTION to scsi_execute(START_STOP). Bug: 194712579 (cherry picked from commit edc0596cc04bf0ac3a69c66e994d3ff8b650ff71 git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next) Link: https://lore.kernel.org/r/20211001182015.1347587-3-jaegeuk@kernel.org Fixes: aa53f580e67b ("scsi: ufs: Minor adjustments to error handling") Cc: Adrian Hunter Signed-off-by: Bart Van Assche Signed-off-by: Jaegeuk Kim Signed-off-by: Martin K. Petersen Change-Id: I73656b8b6773558dc7a552700d283c1ae6dc25f7 --- drivers/scsi/ufs/ufshcd.c | 97 --------------------------------------- 1 file changed, 97 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index d47c32510bd3..e161805fe136 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -226,7 +226,6 @@ static int ufshcd_reset_and_restore(struct ufs_hba *hba); static int ufshcd_eh_host_reset_handler(struct scsi_cmnd *cmd); static int ufshcd_clear_tm_cmd(struct ufs_hba *hba, int tag); static void ufshcd_hba_exit(struct ufs_hba *hba); -static int ufshcd_clear_ua_wluns(struct ufs_hba *hba); static int ufshcd_probe_hba(struct ufs_hba *hba, bool async); static int ufshcd_setup_clocks(struct ufs_hba *hba, bool on); static inline void ufshcd_add_delay_before_dme_cmd(struct ufs_hba *hba); @@ -4087,8 +4086,6 @@ int ufshcd_link_recovery(struct ufs_hba *hba) if (ret) dev_err(hba->dev, "%s: link recovery failed, err %d", __func__, ret); - else - ufshcd_clear_ua_wluns(hba); return ret; } @@ -5950,7 +5947,6 @@ static void ufshcd_err_handling_unprepare(struct ufs_hba *hba) ufshcd_release(hba); if (ufshcd_is_clkscaling_supported(hba)) ufshcd_clk_scaling_suspend(hba, false); - ufshcd_clear_ua_wluns(hba); pm_runtime_put(hba->dev); } @@ -7862,8 +7858,6 @@ static int ufshcd_add_lus(struct ufs_hba *hba) if (ret) goto out; - ufshcd_clear_ua_wluns(hba); - /* Initialize devfreq after UFS device is detected */ if (ufshcd_is_clkscaling_supported(hba)) { memcpy(&hba->clk_scaling.saved_pwr_info.info, @@ -7889,63 +7883,6 @@ out: return ret; } -static int -ufshcd_send_request_sense(struct ufs_hba *hba, struct scsi_device *sdp); - -static int ufshcd_clear_ua_wlun(struct ufs_hba *hba, u8 wlun) -{ - struct scsi_device *sdp; - unsigned long flags; - int ret = 0; - - spin_lock_irqsave(hba->host->host_lock, flags); - if (wlun == UFS_UPIU_UFS_DEVICE_WLUN) - sdp = hba->sdev_ufs_device; - else if (wlun == UFS_UPIU_RPMB_WLUN) - sdp = hba->sdev_rpmb; - else - BUG(); - if (sdp) { - ret = scsi_device_get(sdp); - if (!ret && !scsi_device_online(sdp)) { - ret = -ENODEV; - scsi_device_put(sdp); - } - } else { - ret = -ENODEV; - } - spin_unlock_irqrestore(hba->host->host_lock, flags); - if (ret) - goto out_err; - - ret = ufshcd_send_request_sense(hba, sdp); - scsi_device_put(sdp); -out_err: - if (ret) - dev_err(hba->dev, "%s: UAC clear LU=%x ret = %d\n", - __func__, wlun, ret); - return ret; -} - -static int ufshcd_clear_ua_wluns(struct ufs_hba *hba) -{ - int ret = 0; - - if (!hba->wlun_dev_clr_ua) - goto out; - - ret = ufshcd_clear_ua_wlun(hba, UFS_UPIU_UFS_DEVICE_WLUN); - if (!ret) - ret = ufshcd_clear_ua_wlun(hba, UFS_UPIU_RPMB_WLUN); - if (!ret) - hba->wlun_dev_clr_ua = false; -out: - if (ret) - dev_err(hba->dev, "%s: Failed to clear UAC WLUNS ret = %d\n", - __func__, ret); - return ret; -} - /** * ufshcd_probe_hba - probe hba to detect device and initialize * @hba: per-adapter instance @@ -7999,7 +7936,6 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool async) /* UFS device is also active now */ ufshcd_set_ufs_dev_active(hba); ufshcd_force_reset_auto_bkops(hba); - hba->wlun_dev_clr_ua = true; /* Gear up to HS gear if supported */ if (hba->max_pwr_info.is_valid) { @@ -8528,35 +8464,6 @@ static void ufshcd_hba_exit(struct ufs_hba *hba) } } -static int -ufshcd_send_request_sense(struct ufs_hba *hba, struct scsi_device *sdp) -{ - unsigned char cmd[6] = {REQUEST_SENSE, - 0, - 0, - 0, - UFS_SENSE_SIZE, - 0}; - char *buffer; - int ret; - - buffer = kzalloc(UFS_SENSE_SIZE, GFP_KERNEL); - if (!buffer) { - ret = -ENOMEM; - goto out; - } - - ret = scsi_execute(sdp, cmd, DMA_FROM_DEVICE, buffer, - UFS_SENSE_SIZE, NULL, NULL, - msecs_to_jiffies(1000), 3, 0, RQF_PM, NULL); - if (ret) - pr_err("%s: failed with err %d\n", __func__, ret); - - kfree(buffer); -out: - return ret; -} - /** * ufshcd_set_dev_pwr_mode - sends START STOP UNIT command to set device * power mode @@ -8598,7 +8505,6 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba, * handling context. */ hba->host->eh_noresume = 1; - ufshcd_clear_ua_wluns(hba); cmd[4] = pwr_mode << 4; @@ -8927,7 +8833,6 @@ enable_gating: hba->clk_gating.is_suspended = false; hba->dev_info.b_rpm_dev_flush_capable = false; - ufshcd_clear_ua_wluns(hba); ufshcd_release(hba); ufshpb_resume(hba); out: @@ -9036,8 +8941,6 @@ static int ufshcd_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op) cancel_delayed_work(&hba->rpm_dev_flush_recheck_work); } - ufshcd_clear_ua_wluns(hba); - /* Schedule clock gating in case of no access to UFS device yet */ ufshcd_release(hba); From fc90aa522f6b8fd61bff57beeaa79b3230a87e4d Mon Sep 17 00:00:00 2001 From: Prasad Sodagudi Date: Wed, 6 Oct 2021 13:33:36 -0700 Subject: [PATCH 06/10] ANDROID: tracing: fix register tracing spam on memcpy Disable register read/write tracing for memcpy and memset APIs to avoid flood of read/write trace events. Bug: 202309221 Fixes: 4373261be0bc ("ANDROID: tracing: Add generic flag for register tracing disable") Change-Id: Ic860ee3a86b4664f3c5edd79a9c432dede87733e Signed-off-by: Prasad Sodagudi --- arch/arm64/kernel/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile index 2262f0392857..64e84b7ece3d 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile @@ -8,6 +8,7 @@ CFLAGS_armv8_deprecated.o := -I$(src) CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE) CFLAGS_REMOVE_insn.o = $(CC_FLAGS_FTRACE) CFLAGS_REMOVE_return_address.o = $(CC_FLAGS_FTRACE) +CFLAGS_io.o := -D__DISABLE_TRACE_MMIO__ # Object file lists. obj-y := debug-monitors.o entry.o irq.o fpsimd.o \ From b01ae5f1b48e330c045c4190172344132b44e31d Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Mon, 27 Sep 2021 14:23:02 +0800 Subject: [PATCH 07/10] ANDROID: GKI: rockchip: Enable dummy_irq_chip for pcie Leaf changes summary: 1 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 1 Added variable 1 Added variable: [A] 'irq_chip dummy_irq_chip' Bug: 194515348 Signed-off-by: Kever Yang Change-Id: I9366d807c3041353af4b7304b481ac72d13fbb3b --- android/abi_gki_aarch64.xml | 2 ++ android/abi_gki_aarch64_rockchip | 32 ++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 230bd921104e..855498beacfc 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -5893,6 +5893,7 @@ + @@ -124770,6 +124771,7 @@ + diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip index d8abdb83d439..1be34e9ce144 100644 --- a/android/abi_gki_aarch64_rockchip +++ b/android/abi_gki_aarch64_rockchip @@ -139,9 +139,11 @@ devm_of_clk_add_hw_provider __devm_of_phy_provider_register devm_phy_create + devm_phy_get devm_pinctrl_get devm_platform_get_and_ioremap_resource devm_platform_ioremap_resource + devm_platform_ioremap_resource_byname devm_power_supply_register devm_pwm_get __devm_regmap_init_i2c @@ -188,6 +190,7 @@ drm_display_info_set_bus_formats drm_get_edid drm_mode_vrefresh + dummy_irq_chip enable_irq extcon_get_edev_by_phandle extcon_get_state @@ -205,6 +208,7 @@ fwnode_property_present fwnode_property_read_string fwnode_property_read_u32_array + generic_handle_irq get_device gic_nonsecure_priorities gpiochip_add_pin_range @@ -219,6 +223,7 @@ gpiod_set_consumer_name gpiod_set_value gpiod_set_value_cansleep + handle_simple_irq hid_debug hid_hw_close hid_hw_open @@ -258,10 +263,17 @@ input_set_abs_params __ioremap iounmap + __irq_domain_add + irq_domain_remove + irq_find_mapping irq_get_irq_data + irq_set_chained_handler_and_data + irq_set_chip_and_handler_name + irq_set_chip_data irq_set_irq_wake jiffies kasan_flag_enabled + kasprintf kernel_neon_begin kernel_neon_end kfree @@ -308,6 +320,7 @@ nr_cpu_ids nvmem_cell_put nvmem_cell_read + of_address_to_resource of_alias_get_id of_clk_add_provider of_clk_del_provider @@ -349,6 +362,10 @@ param_ops_uint __per_cpu_offset pfn_valid + phy_exit + phy_init + phy_power_off + phy_power_on pinctrl_dev_get_drvdata pinctrl_lookup_state pinctrl_select_state @@ -356,6 +373,7 @@ __platform_driver_register platform_driver_unregister platform_get_irq + platform_get_irq_byname platform_get_resource platform_get_resource_byname pm_power_off @@ -746,16 +764,12 @@ gpiod_count # required by gpio-rockchip.ko - generic_handle_irq gpiochip_add_data_with_key gpiochip_remove handle_edge_irq handle_level_irq __irq_alloc_domain_generic_chips irq_create_mapping_affinity - __irq_domain_add - irq_domain_remove - irq_find_mapping irq_gc_ack_set_bit irq_gc_mask_clr_bit irq_gc_mask_set_bit @@ -763,8 +777,6 @@ irq_generic_chip_ops irq_get_domain_generic_chip irq_of_parse_and_map - irq_set_chained_handler_and_data - of_address_to_resource of_pinctrl_get # required by grf.ko @@ -903,7 +915,6 @@ ida_destroy ida_free init_srcu_struct - kasprintf kobject_uevent_env ktime_get_with_offset list_sort @@ -1088,7 +1099,6 @@ v4l2_subdev_init # required by phy-rockchip-inno-dsidphy.ko - devm_platform_ioremap_resource_byname phy_mipi_dphy_config_validate # required by phy-rockchip-inno-hdmi-phy.ko @@ -1254,7 +1264,6 @@ input_unregister_handle __memset_io of_devfreq_cooling_register_power - platform_get_irq_byname # required by rockchip_dmc_common.ko down_write_trylock @@ -1515,11 +1524,6 @@ rtc_update_irq # required by sdhci-of-arasan.ko - devm_phy_get - phy_exit - phy_init - phy_power_off - phy_power_on __sdhci_add_host sdhci_cleanup_host sdhci_cqe_disable From befb2a75ab47e45eef5b9950bf011a7f254531cb Mon Sep 17 00:00:00 2001 From: Guangming Cao Date: Thu, 30 Sep 2021 16:32:27 +0800 Subject: [PATCH 08/10] ANDROID: iommu: vendor_hook: remove the obsolete code Remove the obsolete #if .. #else .. #endif Bug: 201255968 Change-Id: I1e00f0ac0dfb30150fea6004b5da81e470fdce93 Signed-off-by: Guangming Cao --- include/trace/hooks/iommu.h | 8 -------- 1 file changed, 8 deletions(-) diff --git a/include/trace/hooks/iommu.h b/include/trace/hooks/iommu.h index d4fbeec3844b..b53d0b8769ac 100644 --- a/include/trace/hooks/iommu.h +++ b/include/trace/hooks/iommu.h @@ -12,8 +12,6 @@ #include #include -#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS) - DECLARE_HOOK(android_vh_iommu_setup_dma_ops, TP_PROTO(struct device *dev, u64 dma_base, u64 size), TP_ARGS(dev, dma_base, size)); @@ -25,13 +23,7 @@ DECLARE_HOOK(android_vh_iommu_alloc_iova, DECLARE_HOOK(android_vh_iommu_free_iova, TP_PROTO(dma_addr_t iova, size_t size), TP_ARGS(iova, size)); -#else -#define trace_android_vh_iommu_setup_dma_ops(dev, dma_base, size) -#define trace_android_vh_iommu_alloc_iova(dev, iova, size) -#define trace_android_vh_iommu_free_iova(iova, size) - -#endif #endif /* _TRACE_HOOK_IOMMU_H */ From dccb021dc4189754342a955725acb07ae02670bc Mon Sep 17 00:00:00 2001 From: Guangming Cao Date: Wed, 29 Sep 2021 15:10:09 +0800 Subject: [PATCH 09/10] ANDROID: iommu: Add vendor hook to tracing iova alloc & free in iova_domain Add struct (iova_domain *) in iova alloc & free vendor hook by create a new vendor hook. Thus we can know the iova we are operating belongs to which iova domain. Bug: 201255968 Change-Id: I7df419650af2e85a3b2b8c3d6995247694bdc953 Signed-off-by: Chao Hao Signed-off-by: Guangming Cao --- drivers/android/vendor_hooks.c | 2 ++ drivers/iommu/dma-iommu.c | 2 ++ include/trace/hooks/iommu.h | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index b7f23ab2dec7..07c97e495629 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -202,7 +202,9 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_mem_abort); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_sp_pc_abort); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_alloc_iova); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_iovad_alloc_iova); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_free_iova); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_iovad_free_iova); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pick_next_entity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cma_alloc_start); diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index 7bbccb680c2b..3a6deab3144c 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -488,6 +488,7 @@ static dma_addr_t iommu_dma_alloc_iova(struct iommu_domain *domain, true); trace_android_vh_iommu_alloc_iova(dev, (dma_addr_t)iova << shift, size); + trace_android_vh_iommu_iovad_alloc_iova(dev, iovad, (dma_addr_t)iova << shift, size); return (dma_addr_t)iova << shift; } @@ -508,6 +509,7 @@ static void iommu_dma_free_iova(struct iommu_dma_cookie *cookie, size >> iova_shift(iovad)); trace_android_vh_iommu_free_iova(iova, size); + trace_android_vh_iommu_iovad_free_iova(iovad, iova, size); } static void __iommu_dma_unmap(struct device *dev, dma_addr_t dma_addr, diff --git a/include/trace/hooks/iommu.h b/include/trace/hooks/iommu.h index b53d0b8769ac..dd54a50b3aa4 100644 --- a/include/trace/hooks/iommu.h +++ b/include/trace/hooks/iommu.h @@ -20,10 +20,20 @@ DECLARE_HOOK(android_vh_iommu_alloc_iova, TP_PROTO(struct device *dev, dma_addr_t iova, size_t size), TP_ARGS(dev, iova, size)); +struct iova_domain; + +DECLARE_HOOK(android_vh_iommu_iovad_alloc_iova, + TP_PROTO(struct device *dev, struct iova_domain *iovad, dma_addr_t iova, size_t size), + TP_ARGS(dev, iovad, iova, size)); + DECLARE_HOOK(android_vh_iommu_free_iova, TP_PROTO(dma_addr_t iova, size_t size), TP_ARGS(iova, size)); +DECLARE_HOOK(android_vh_iommu_iovad_free_iova, + TP_PROTO(struct iova_domain *iovad, dma_addr_t iova, size_t size), + TP_ARGS(iovad, iova, size)); + #endif /* _TRACE_HOOK_IOMMU_H */ From 0a7cdb7fe40ccd770787eaef5211b959a1401fc1 Mon Sep 17 00:00:00 2001 From: Guangming Cao Date: Sat, 9 Oct 2021 10:01:13 +0800 Subject: [PATCH 10/10] ANDROID: Update symbol list for mtk 1. Generated with: BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update 2. Leaf changes summary: 4 artifact changed (2 filtered out) Changed leaf types summary: 0 (2 filtered out) leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 2 Added variables 2 Added functions: [A] 'function int __traceiter_android_vh_iommu_iovad_alloc_iova(struct device *, struct iova_domain *, dma_addr_t, size_t )' [A] 'function int __traceiter_android_vh_iommu_iovad_free_iova(struct iova_domain *, dma_addr_t, size_t )' 2 Added variables: [A] 'tracepoint __tracepoint_android_vh_iommu_iovad_alloc_iova' [A] 'tracepoint __tracepoint_android_vh_iommu_iovad_free_iova' Bug: 201255968 Change-Id: I480fbbd4b7a37c31e073d4008dbfa633309101bf Signed-off-by: Guangming Cao --- android/abi_gki_aarch64.xml | 263 +++++++++++++++++++----------------- android/abi_gki_aarch64_mtk | 4 + 2 files changed, 146 insertions(+), 121 deletions(-) diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 855498beacfc..c862b911aa68 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -412,6 +412,8 @@ + + @@ -5691,6 +5693,8 @@ + + @@ -115288,24 +115292,39 @@ - - - - - + + + + + - + + + + + + + + + - - - - - + + + + + + + + + + + + @@ -116308,9 +116327,11 @@ - - - + + + + + @@ -139161,48 +139182,48 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - - - + + + + + - - - - - - + + + + + + @@ -139212,13 +139233,13 @@ - - - + + + - - + + @@ -139227,31 +139248,31 @@ - - + + - - + + - - - + + + - - + + - - + + - - - - + + + + @@ -139283,91 +139304,91 @@ - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index 13db90146503..37eeb6f8b5f2 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -1928,7 +1928,9 @@ __traceiter_android_vh_freq_qos_update_request __traceiter_android_vh_freq_qos_remove_request __traceiter_android_vh_iommu_alloc_iova + __traceiter_android_vh_iommu_iovad_alloc_iova __traceiter_android_vh_iommu_free_iova + __traceiter_android_vh_iommu_iovad_free_iova __traceiter_android_vh_ipv6_gen_linklocal_addr __traceiter_android_vh_logbuf __traceiter_android_vh_override_creds @@ -2004,7 +2006,9 @@ __tracepoint_android_vh_freq_qos_update_request __tracepoint_android_vh_freq_qos_remove_request __tracepoint_android_vh_iommu_alloc_iova + __tracepoint_android_vh_iommu_iovad_alloc_iova __tracepoint_android_vh_iommu_free_iova + __tracepoint_android_vh_iommu_iovad_free_iova __tracepoint_android_vh_ipv6_gen_linklocal_addr __tracepoint_android_vh_logbuf __tracepoint_android_vh_override_creds