From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCE27C433E6 for ; Wed, 10 Mar 2021 03:05:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A483764FFE for ; Wed, 10 Mar 2021 03:05:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231571AbhCJDFC (ORCPT ); Tue, 9 Mar 2021 22:05:02 -0500 Received: from m42-2.mailgun.net ([69.72.42.2]:34745 "EHLO m42-2.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232129AbhCJDEm (ORCPT ); Tue, 9 Mar 2021 22:04:42 -0500 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1615345482; h=Content-Transfer-Encoding: Content-Type: In-Reply-To: MIME-Version: Date: Message-ID: References: Cc: To: From: Subject: Sender; bh=c8TPvkuC6D3HD+AHTD1J8XQ9WFs/eIyayuhYOYnv5cI=; b=rajvJVeuyl3/TUV6PhwFhIwZULMurAoNcMCRc127rhJ4WgFU7mfZyGcrLK742neUUBMCAxQp VTkOSlQygp+ccJl2WS+wLkZCCnYDS6AH/rNeeEgSj/BwTku5X8mfcrFyEiX4HBs5x7ALyzPc QQLdX3i7qxGyA8EtVoL+ytPh0wI= X-Mailgun-Sending-Ip: 69.72.42.2 X-Mailgun-Sid: WyI1MzIzYiIsICJsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZyIsICJiZTllNGEiXQ== Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n01.prod.us-west-2.postgun.com with SMTP id 60483749fa6ebd85e8c51d85 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 10 Mar 2021 03:04:41 GMT Sender: asutoshd=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 7E4C1C4346D; Wed, 10 Mar 2021 03:04:40 +0000 (UTC) Received: from [192.168.8.168] (cpe-70-95-149-85.san.res.rr.com [70.95.149.85]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: asutoshd) by smtp.codeaurora.org (Postfix) with ESMTPSA id 1D77BC433CA; Wed, 10 Mar 2021 03:04:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 1D77BC433CA Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=asutoshd@codeaurora.org Subject: Re: [PATCH v10 1/2] scsi: ufs: Enable power management for wlun From: "Asutosh Das (asd)" To: Alan Stern , Bart Van Assche , Adrian Hunter Cc: "Rafael J. Wysocki" , cang@codeaurora.org, "Martin K. Petersen" , "open list:TARGET SUBSYSTEM" , linux-arm-msm , Alim Akhtar , Avri Altman , "James E.J. Bottomley" , Krzysztof Kozlowski , Stanley Chu , Andy Gross , Bjorn Andersson , Steven Rostedt , Ingo Molnar , Matthias Brugger , Kiwoong Kim , Bean Huo , Lee Jones , Wei Yongjun , Dinghao Liu , "Gustavo A. R. Silva" , Tomas Winkler , Jaegeuk Kim , Satya Tangirala , open list , "moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES" , "open list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES" , "moderated list:UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER..." , Linux-PM mailing list References: <0576d6eae15486740c25767e2d8805f7e94eb79d.1614725302.git.asutoshd@codeaurora.org> <85086647-7292-b0a2-d842-290818bd2858@intel.com> <6e98724d-2e75-d1fe-188f-a7010f86c509@codeaurora.org> <20210306161616.GC74411@rowland.harvard.edu> Message-ID: <2bd90336-18a9-9acd-5abb-5b52b27fc535@codeaurora.org> Date: Tue, 9 Mar 2021 19:04:34 -0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On 3/9/2021 7:56 AM, Asutosh Das (asd) wrote: > On 3/8/2021 9:17 AM, Rafael J. Wysocki wrote: >> On Mon, Mar 8, 2021 at 5:21 PM Rafael J. Wysocki >> wrote: >>> >>> On Sat, Mar 6, 2021 at 5:17 PM Alan Stern >>> wrote: >>>> >>>> On Fri, Mar 05, 2021 at 06:54:24PM -0800, Asutosh Das (asd) wrote: >>>> >>>>> Now during my testing I see a weird issue sometimes (1 in 7). >>>>> Scenario - bootups >>>>> >>>>> Issue: >>>>> The supplier 'ufs_device_wlun 0:0:0:49488' goes into runtime >>>>> suspend even >>>>> when one/more of its consumers are in RPM_ACTIVE state. >>>>> >>>>> *Log: >>>>> [   10.056379][  T206] sd 0:0:0:1: [sdb] Synchronizing SCSI cache >>>>> [   10.062497][  T113] sd 0:0:0:5: [sdf] Synchronizing SCSI cache >>>>> [   10.356600][   T32] sd 0:0:0:7: [sdh] Synchronizing SCSI cache >>>>> [   10.362944][  T174] sd 0:0:0:3: [sdd] Synchronizing SCSI cache >>>>> [   10.696627][   T83] sd 0:0:0:2: [sdc] Synchronizing SCSI cache >>>>> [   10.704562][  T170] sd 0:0:0:6: [sdg] Synchronizing SCSI cache >>>>> [   10.980602][    T5] sd 0:0:0:0: [sda] Synchronizing SCSI cache >>>>> >>>>> /** Printing all the consumer nodes of supplier **/ >>>>> [   10.987327][    T5] ufs_device_wlun 0:0:0:49488: usage-count @ >>>>> suspend: 0 >>>>> <-- this is the usage_count >>>>> [   10.994440][    T5] ufs_rpmb_wlun 0:0:0:49476: PM state - 2 >>>>> [   11.000402][    T5] scsi 0:0:0:49456: PM state - 2 >>>>> [   11.005453][    T5] sd 0:0:0:0: PM state - 2 >>>>> [   11.009958][    T5] sd 0:0:0:1: PM state - 2 >>>>> [   11.014469][    T5] sd 0:0:0:2: PM state - 2 >>>>> [   11.019072][    T5] sd 0:0:0:3: PM state - 2 >>>>> [   11.023595][    T5] sd 0:0:0:4: PM state - 0 << RPM_ACTIVE >>>>> [   11.353298][    T5] sd 0:0:0:5: PM state - 2 >>>>> [   11.357726][    T5] sd 0:0:0:6: PM state - 2 >>>>> [   11.362155][    T5] sd 0:0:0:7: PM state - 2 >>>>> [   11.366584][    T5] ufshcd-qcom 1d84000.ufshc: >>>>> __ufshcd_wl_suspend - 8709 >>>>> [   11.374366][    T5] ufs_device_wlun 0:0:0:49488: >>>>> __ufshcd_wl_suspend - >>>>> (0) has rpm_active flags >>> >>> Do you mean that rpm_active of the link between the consumer and the >>> supplier is greater than 0 at this point and the consumer is >> >> I mean is rpm_active of the link greater than 1 (because 1 means "no >> active references to the supplier")? > Hi Rafael: > No - it is not greater than 1. > > I'm trying to understand what's going on in it; will update when I've > something. > >> >>> RPM_ACTIVE, but the supplier suspends successfully nevertheless? >>> >>>>> [   11.383376][    T5] ufs_device_wlun 0:0:0:49488: >>>>> ufshcd_wl_runtime_suspend <-- Supplier suspends fine. >>>>> [   12.977318][  T174] sd 0:0:0:4: [sde] Synchronizing SCSI cache >>>>> >>>>> And the the suspend of sde is stuck now: >>>>> schedule+0x9c/0xe0 >>>>> schedule_timeout+0x40/0x128 >>>>> io_schedule_timeout+0x44/0x68 >>>>> wait_for_common_io+0x7c/0x100 >>>>> wait_for_completion_io+0x14/0x20 >>>>> blk_execute_rq+0x90/0xcc >>>>> __scsi_execute+0x104/0x1c4 >>>>> sd_sync_cache+0xf8/0x2a0 >>>>> sd_suspend_common+0x74/0x11c >>>>> sd_suspend_runtime+0x14/0x20 >>>>> scsi_runtime_suspend+0x64/0x94 >>>>> __rpm_callback+0x80/0x2a4 >>>>> rpm_suspend+0x308/0x614 >>>>> pm_runtime_work+0x98/0xa8 >>>>> >>>>> I added 'DL_FLAG_RPM_ACTIVE' while creating links. >>>>>        if (hba->sdev_ufs_device) { >>>>>                link = device_link_add(&sdev->sdev_gendev, >>>>>                                    &hba->sdev_ufs_device->sdev_gendev, >>>>> >>>>> DL_FLAG_PM_RUNTIME|DL_FLAG_RPM_ACTIVE); >>>>> I didn't expect this to resolve the issue anyway and it didn't. >>>>> >>>>> Another interesting point here is when I resume any of the above >>>>> suspended >>>>> consumers, it all goes back to normal, which is kind of expected. I >>>>> tried >>>>> resuming the consumer and the supplier is resumed and the supplier is >>>>> suspended when all the consumers are suspended. >>>>> >>>>> Any pointers on this issue please? >>>>> >>>>> @Bart/@Alan - Do you've any pointers please? >>>> >>>> It's very noticeable that although you seem to have isolated a bug in >>>> the power management subsystem (supplier goes into runtime suspend >>>> even when one of its consumers is still active), you did not CC the >>>> power management maintainer or mailing list. >>>> >>>> I have added the appropriate CC's. >>> >>> Thanks Alan! > > Hello I & Can (thanks CanG) debugged this further: Looks like this issue can occur if the sd probe is asynchronous. Essentially, the sd_probe() is done asynchronously and driver_probe_device() invokes pm_runtime_get_suppliers() before invoking sd_probe(). But scsi_probe_and_add_lun() runs in a separate context. So the scsi_autopm_put_device() invoked from scsi_scan_host() context reduces the link->rpm_active to 1. And sd_probe() invokes scsi_autopm_put_device() and starts a timer. And then driver_probe_device() invoked from __device_attach_async_helper context reduces the link->rpm_active to 1 thus enabling the supplier to suspend before the consumer suspends. So if: Context T1: [1] scsi_probe_and_add_lun() [2] |- scsi_autopm_put_device() - reduce the link->rpm_active to 1 Context T2: __device_attach_async_helper() |- driver_probe_device() |- sd_probe() In between [1] and [2] say, driver_probe_device() -> sd_probe() is invoked in a separate context from __device_attach_async_helper(). The driver_probe_device() -> pm_runtime_get_suppliers() but [2] would reduce link->rpm_active to 1. Then sd_probe() would invoke rpm_resume() and proceed as is. When sd_probe() invokes scsi_autopm_put_device() it'd start a timer, dev->power.timer_autosuspends = 1. Now then, pm_runtime_put_suppliers() is invoked from driver_probe_device() and that makes the link->rpm_active = 1. But by now, the corresponding 'sd dev' (consumer) usage_count = 0, state = RPM_ACTIVE and link->rpm_active = 1. At this point of time, all other 'sd dev' (consumers) _may_ be suspended or active but would have the link->rpm_active = 1. Since the supplier has 0 auto-suspend delay, it now suspends! Context [T1] Call trace: dump_backtrace+0x0/0x1d4 show_stack+0x18/0x24 dump_stack+0xc4/0x144 __pm_runtime_idle+0xb4/0x184 scsi_autopm_put_device+0x18/0x24 scsi_sysfs_add_sdev+0x26c/0x278 scsi_probe_and_add_lun+0xbac/0xd48 __scsi_scan_target+0x38c/0x510 scsi_scan_host_selected+0x14c/0x1e4 scsi_scan_host+0x1e0/0x228 ufshcd_async_scan+0x39c/0x408 async_run_entry_fn+0x48/0x128 process_one_work+0x1f0/0x470 worker_thread+0x26c/0x4c8 kthread+0x13c/0x320 ret_from_fork+0x10/0x18 Context [T2] Call trace: dump_backtrace+0x0/0x1d4 show_stack+0x18/0x24 dump_stack+0xc4/0x144 rpm_get_suppliers+0x48/0x1ac __rpm_callback+0x58/0x12c rpm_resume+0x3a4/0x618 __pm_runtime_resume+0x50/0x80 scsi_autopm_get_device+0x20/0x54 sd_probe+0x40/0x3d0 really_probe+0x1bc/0x4a0 driver_probe_device+0x84/0xf0 __device_attach_driver+0x114/0x138 bus_for_each_drv+0x84/0xd0 __device_attach_async_helper+0x7c/0xf0 async_run_entry_fn+0x48/0x128 process_one_work+0x1f0/0x470 worker_thread+0x26c/0x4c8 kthread+0x13c/0x320 ret_from_fork+0x10/0x18 Below prints show how link->rpm_active becomes 1 for sd 0:0:0:4 [ 7.574654][ T212] Call trace: [ 7.574657][ T212] dump_backtrace+0x0/0x1d4 [ 7.574661][ T212] show_stack+0x18/0x24 [ 7.574665][ T212] dump_stack+0xc4/0x144 [ 7.574668][ T212] __pm_runtime_idle+0xb4/0x184 [ 7.574671][ T212] scsi_autopm_put_device+0x18/0x24 [ 7.574675][ T212] sd_probe+0x314/0x3d0 [ 7.574677][ T212] really_probe+0x1bc/0x4a0 [ 7.574680][ T212] driver_probe_device+0x84/0xf0 [ 7.574683][ T212] __device_attach_driver+0x114/0x138 [ 7.574686][ T212] bus_for_each_drv+0x84/0xd0 [ 7.574689][ T212] __device_attach_async_helper+0x7c/0xf0 [ 7.574692][ T212] async_run_entry_fn+0x48/0x128 [ 7.574695][ T212] process_one_work+0x1f0/0x470 [ 7.574698][ T212] worker_thread+0x26c/0x4c8 [ 7.574700][ T212] kthread+0x13c/0x320 [ 7.574703][ T212] ret_from_fork+0x10/0x18 [ 7.574706][ T212] sd 0:0:0:4: scsi_runtime_idle [ 7.574712][ T212] sd 0:0:0:4: __pm_runtime_idle: aft: [UFSDBG]: pwr.timer_autosuspends: 1 pwr.request_pending: 0 retval: -16 pwr.request: 0 usage_count: 0 rpm_status: 0 link-rpm_active:2 [ 7.574715][ T212] sd 0:0:0:4: sd_probe: [UFSDBG]: Exit [ 7.574738][ T212] sd 0:0:0:4: __pm_runtime_idle: b4: [UFSDBG]: pwr.request: 0 usage_count: 0 rpm_status: 0 link-rpm_active:2 [ 7.574752][ T212] Workqueue: events_unbound async_run_entry_fn [ 7.574754][ T212] Call trace: [ 7.574758][ T212] dump_backtrace+0x0/0x1d4 [ 7.574761][ T212] show_stack+0x18/0x24 [ 7.574765][ T212] dump_stack+0xc4/0x144 [ 7.574767][ T212] __pm_runtime_idle+0xb4/0x184 [ 7.574770][ T212] driver_probe_device+0x94/0xf0 [ 7.574773][ T212] __device_attach_driver+0x114/0x138 [ 7.574775][ T212] bus_for_each_drv+0x84/0xd0 [ 7.574778][ T212] __device_attach_async_helper+0x7c/0xf0 [ 7.574781][ T212] async_run_entry_fn+0x48/0x128 [ 7.574783][ T212] process_one_work+0x1f0/0x470 [ 7.574786][ T212] worker_thread+0x26c/0x4c8 [ 7.574788][ T212] kthread+0x13c/0x320 [ 7.574791][ T212] ret_from_fork+0x10/0x18 [ 7.574848][ T80] sd 0:0:0:4: scsi_runtime_idle [ 7.574858][ T212] sd 0:0:0:4: __pm_runtime_idle: aft: [UFSDBG]: pwr.timer_autosuspends: 1 pwr.request_pending: 0 retval: 0 pwr.request: 0 usage_count: 0 rpm_status: 0 link-rpm_active:2 [ 7.574863][ T212] sd 0:0:0:4: pm_runtime_put_suppliers: [UFSDBG]: rpm_status: 0 link-rpm_active:1 [ 7.574866][ T212] sd 0:0:0:4: async probe completed [ 7.574870][ T212] sd 0:0:0:4: __pm_runtime_idle: b4: [UFSDBG]: pwr.request: 0 usage_count: 0 rpm_status: 0 link-rpm_active:1 So, from the above it looks like when async probe is enabled this is a possibility. I don't see a way around this. Please let me know if you (@Alan/@Bart/@Adrian) have any thoughts on this. Thanks, -asd -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, Linux Foundation Collaborative Project From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8078DC4332B for ; Wed, 10 Mar 2021 03:05:34 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E846964FE8 for ; Wed, 10 Mar 2021 03:05:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E846964FE8 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:References: Cc:To:From:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=v0us0u+PkU6BDCTOIN7sdSAAWaVgV/tZOVaKUln8bTw=; b=hYBq5zNtr7/ROac1KTlcmYtq2 ijN8vA4k4bjeZEmCjLi5U9G6c3b2SCp3RLYZtd4XCtkqjMWDE6xtUtg5qjVVgL1wq9lVATTpGLlL2 jNqKuW4vqDWg4OMCyACeAjH8n6QqDK7Y8yq6Q+IPhxC8KvzsLG/JiC7CUxd9ukZohG9nkzw0/F644 V6aMrrlfkuvkGWLBOLDy9mKCrEIfCG6r/0NG8QlPD5pAnLEXdXDFN9Lc9rKT1lkrf7jz5KLVezQMh hMFvUfbMtyIv4loGPY5449EMSsuQOoZcIgYPfJuXwPGTG4zyyf1v+aIYENGgBVl0zFCZW3ZvEhq9J NkSQ46weg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lJp9w-005sCx-SX; Wed, 10 Mar 2021 03:05:17 +0000 Received: from z11.mailgun.us ([104.130.96.11]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lJp9c-005s73-LU for linux-mediatek@lists.infradead.org; Wed, 10 Mar 2021 03:05:10 +0000 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1615345498; h=Content-Transfer-Encoding: Content-Type: In-Reply-To: MIME-Version: Date: Message-ID: References: Cc: To: From: Subject: Sender; bh=c8TPvkuC6D3HD+AHTD1J8XQ9WFs/eIyayuhYOYnv5cI=; b=JEs95xmiwZ0w8bQ/8OSuhLdNSL3hK0iexfnSPguk+Vii0wpeYO9rtAZx7A9oWndGMhPy2ria 12/gXDzeSGZcDD8nWyarT79nasfnCm26mvOS933z+ozQ8W6rZWplNjZoUEiy8IT1t6T3Vy4x wqFRuEgf3XEpPYkzlky2RH4qNzs= X-Mailgun-Sending-Ip: 104.130.96.11 X-Mailgun-Sid: WyI0ZDIyMyIsICJsaW51eC1tZWRpYXRla0BsaXN0cy5pbmZyYWRlYWQub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n02.prod.us-east-1.postgun.com with SMTP id 60483749d3a53bc38fd6acdf (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 10 Mar 2021 03:04:41 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 7B34EC4346E; Wed, 10 Mar 2021 03:04:40 +0000 (UTC) Received: from [192.168.8.168] (cpe-70-95-149-85.san.res.rr.com [70.95.149.85]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: asutoshd) by smtp.codeaurora.org (Postfix) with ESMTPSA id 1D77BC433CA; Wed, 10 Mar 2021 03:04:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 1D77BC433CA Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=asutoshd@codeaurora.org Subject: Re: [PATCH v10 1/2] scsi: ufs: Enable power management for wlun From: "Asutosh Das (asd)" To: Alan Stern , Bart Van Assche , Adrian Hunter Cc: "Rafael J. Wysocki" , cang@codeaurora.org, "Martin K. Petersen" , "open list:TARGET SUBSYSTEM" , linux-arm-msm , Alim Akhtar , Avri Altman , "James E.J. Bottomley" , Krzysztof Kozlowski , Stanley Chu , Andy Gross , Bjorn Andersson , Steven Rostedt , Ingo Molnar , Matthias Brugger , Kiwoong Kim , Bean Huo , Lee Jones , Wei Yongjun , Dinghao Liu , "Gustavo A. R. Silva" , Tomas Winkler , Jaegeuk Kim , Satya Tangirala , open list , "moderated list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES" , "open list:ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES" , "moderated list:UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER..." , Linux-PM mailing list References: <0576d6eae15486740c25767e2d8805f7e94eb79d.1614725302.git.asutoshd@codeaurora.org> <85086647-7292-b0a2-d842-290818bd2858@intel.com> <6e98724d-2e75-d1fe-188f-a7010f86c509@codeaurora.org> <20210306161616.GC74411@rowland.harvard.edu> Message-ID: <2bd90336-18a9-9acd-5abb-5b52b27fc535@codeaurora.org> Date: Tue, 9 Mar 2021 19:04:34 -0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210310_030458_824914_22CA7A67 X-CRM114-Status: GOOD ( 28.17 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org T24gMy85LzIwMjEgNzo1NiBBTSwgQXN1dG9zaCBEYXMgKGFzZCkgd3JvdGU6Cj4gT24gMy84LzIw MjEgOToxNyBBTSwgUmFmYWVsIEouIFd5c29ja2kgd3JvdGU6Cj4+IE9uIE1vbiwgTWFyIDgsIDIw MjEgYXQgNToyMSBQTSBSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsQGtlcm5lbC5vcmc+IAo+PiB3 cm90ZToKPj4+Cj4+PiBPbiBTYXQsIE1hciA2LCAyMDIxIGF0IDU6MTcgUE0gQWxhbiBTdGVybiA8 c3Rlcm5Acm93bGFuZC5oYXJ2YXJkLmVkdT4gCj4+PiB3cm90ZToKPj4+Pgo+Pj4+IE9uIEZyaSwg TWFyIDA1LCAyMDIxIGF0IDA2OjU0OjI0UE0gLTA4MDAsIEFzdXRvc2ggRGFzIChhc2QpIHdyb3Rl Ogo+Pj4+Cj4+Pj4+IE5vdyBkdXJpbmcgbXkgdGVzdGluZyBJIHNlZSBhIHdlaXJkIGlzc3VlIHNv bWV0aW1lcyAoMSBpbiA3KS4KPj4+Pj4gU2NlbmFyaW8gLSBib290dXBzCj4+Pj4+Cj4+Pj4+IElz c3VlOgo+Pj4+PiBUaGUgc3VwcGxpZXIgJ3Vmc19kZXZpY2Vfd2x1biAwOjA6MDo0OTQ4OCcgZ29l cyBpbnRvIHJ1bnRpbWUgCj4+Pj4+IHN1c3BlbmQgZXZlbgo+Pj4+PiB3aGVuIG9uZS9tb3JlIG9m IGl0cyBjb25zdW1lcnMgYXJlIGluIFJQTV9BQ1RJVkUgc3RhdGUuCj4+Pj4+Cj4+Pj4+ICpMb2c6 Cj4+Pj4+IFvCoMKgIDEwLjA1NjM3OV1bwqAgVDIwNl0gc2QgMDowOjA6MTogW3NkYl0gU3luY2hy b25pemluZyBTQ1NJIGNhY2hlCj4+Pj4+IFvCoMKgIDEwLjA2MjQ5N11bwqAgVDExM10gc2QgMDow OjA6NTogW3NkZl0gU3luY2hyb25pemluZyBTQ1NJIGNhY2hlCj4+Pj4+IFvCoMKgIDEwLjM1NjYw MF1bwqDCoCBUMzJdIHNkIDA6MDowOjc6IFtzZGhdIFN5bmNocm9uaXppbmcgU0NTSSBjYWNoZQo+ Pj4+PiBbwqDCoCAxMC4zNjI5NDRdW8KgIFQxNzRdIHNkIDA6MDowOjM6IFtzZGRdIFN5bmNocm9u aXppbmcgU0NTSSBjYWNoZQo+Pj4+PiBbwqDCoCAxMC42OTY2MjddW8KgwqAgVDgzXSBzZCAwOjA6 MDoyOiBbc2RjXSBTeW5jaHJvbml6aW5nIFNDU0kgY2FjaGUKPj4+Pj4gW8KgwqAgMTAuNzA0NTYy XVvCoCBUMTcwXSBzZCAwOjA6MDo2OiBbc2RnXSBTeW5jaHJvbml6aW5nIFNDU0kgY2FjaGUKPj4+ Pj4gW8KgwqAgMTAuOTgwNjAyXVvCoMKgwqAgVDVdIHNkIDA6MDowOjA6IFtzZGFdIFN5bmNocm9u aXppbmcgU0NTSSBjYWNoZQo+Pj4+Pgo+Pj4+PiAvKiogUHJpbnRpbmcgYWxsIHRoZSBjb25zdW1l ciBub2RlcyBvZiBzdXBwbGllciAqKi8KPj4+Pj4gW8KgwqAgMTAuOTg3MzI3XVvCoMKgwqAgVDVd IHVmc19kZXZpY2Vfd2x1biAwOjA6MDo0OTQ4ODogdXNhZ2UtY291bnQgQCAKPj4+Pj4gc3VzcGVu ZDogMAo+Pj4+PiA8LS0gdGhpcyBpcyB0aGUgdXNhZ2VfY291bnQKPj4+Pj4gW8KgwqAgMTAuOTk0 NDQwXVvCoMKgwqAgVDVdIHVmc19ycG1iX3dsdW4gMDowOjA6NDk0NzY6IFBNIHN0YXRlIC0gMgo+ Pj4+PiBbwqDCoCAxMS4wMDA0MDJdW8KgwqDCoCBUNV0gc2NzaSAwOjA6MDo0OTQ1NjogUE0gc3Rh dGUgLSAyCj4+Pj4+IFvCoMKgIDExLjAwNTQ1M11bwqDCoMKgIFQ1XSBzZCAwOjA6MDowOiBQTSBz dGF0ZSAtIDIKPj4+Pj4gW8KgwqAgMTEuMDA5OTU4XVvCoMKgwqAgVDVdIHNkIDA6MDowOjE6IFBN IHN0YXRlIC0gMgo+Pj4+PiBbwqDCoCAxMS4wMTQ0NjldW8KgwqDCoCBUNV0gc2QgMDowOjA6Mjog UE0gc3RhdGUgLSAyCj4+Pj4+IFvCoMKgIDExLjAxOTA3Ml1bwqDCoMKgIFQ1XSBzZCAwOjA6MDoz OiBQTSBzdGF0ZSAtIDIKPj4+Pj4gW8KgwqAgMTEuMDIzNTk1XVvCoMKgwqAgVDVdIHNkIDA6MDow OjQ6IFBNIHN0YXRlIC0gMCA8PCBSUE1fQUNUSVZFCj4+Pj4+IFvCoMKgIDExLjM1MzI5OF1bwqDC oMKgIFQ1XSBzZCAwOjA6MDo1OiBQTSBzdGF0ZSAtIDIKPj4+Pj4gW8KgwqAgMTEuMzU3NzI2XVvC oMKgwqAgVDVdIHNkIDA6MDowOjY6IFBNIHN0YXRlIC0gMgo+Pj4+PiBbwqDCoCAxMS4zNjIxNTVd W8KgwqDCoCBUNV0gc2QgMDowOjA6NzogUE0gc3RhdGUgLSAyCj4+Pj4+IFvCoMKgIDExLjM2NjU4 NF1bwqDCoMKgIFQ1XSB1ZnNoY2QtcWNvbSAxZDg0MDAwLnVmc2hjOiAKPj4+Pj4gX191ZnNoY2Rf d2xfc3VzcGVuZCAtIDg3MDkKPj4+Pj4gW8KgwqAgMTEuMzc0MzY2XVvCoMKgwqAgVDVdIHVmc19k ZXZpY2Vfd2x1biAwOjA6MDo0OTQ4ODogCj4+Pj4+IF9fdWZzaGNkX3dsX3N1c3BlbmQgLQo+Pj4+ PiAoMCkgaGFzIHJwbV9hY3RpdmUgZmxhZ3MKPj4+Cj4+PiBEbyB5b3UgbWVhbiB0aGF0IHJwbV9h Y3RpdmUgb2YgdGhlIGxpbmsgYmV0d2VlbiB0aGUgY29uc3VtZXIgYW5kIHRoZQo+Pj4gc3VwcGxp ZXIgaXMgZ3JlYXRlciB0aGFuIDAgYXQgdGhpcyBwb2ludCBhbmQgdGhlIGNvbnN1bWVyIGlzCj4+ Cj4+IEkgbWVhbiBpcyBycG1fYWN0aXZlIG9mIHRoZSBsaW5rIGdyZWF0ZXIgdGhhbiAxIChiZWNh dXNlIDEgbWVhbnMgIm5vCj4+IGFjdGl2ZSByZWZlcmVuY2VzIHRvIHRoZSBzdXBwbGllciIpPwo+ IEhpIFJhZmFlbDoKPiBObyAtIGl0IGlzIG5vdCBncmVhdGVyIHRoYW4gMS4KPiAKPiBJJ20gdHJ5 aW5nIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uIGluIGl0OyB3aWxsIHVwZGF0ZSB3aGVu IEkndmUgCj4gc29tZXRoaW5nLgo+IAo+Pgo+Pj4gUlBNX0FDVElWRSwgYnV0IHRoZSBzdXBwbGll ciBzdXNwZW5kcyBzdWNjZXNzZnVsbHkgbmV2ZXJ0aGVsZXNzPwo+Pj4KPj4+Pj4gW8KgwqAgMTEu MzgzMzc2XVvCoMKgwqAgVDVdIHVmc19kZXZpY2Vfd2x1biAwOjA6MDo0OTQ4ODoKPj4+Pj4gdWZz aGNkX3dsX3J1bnRpbWVfc3VzcGVuZCA8LS0gU3VwcGxpZXIgc3VzcGVuZHMgZmluZS4KPj4+Pj4g W8KgwqAgMTIuOTc3MzE4XVvCoCBUMTc0XSBzZCAwOjA6MDo0OiBbc2RlXSBTeW5jaHJvbml6aW5n IFNDU0kgY2FjaGUKPj4+Pj4KPj4+Pj4gQW5kIHRoZSB0aGUgc3VzcGVuZCBvZiBzZGUgaXMgc3R1 Y2sgbm93Ogo+Pj4+PiBzY2hlZHVsZSsweDljLzB4ZTAKPj4+Pj4gc2NoZWR1bGVfdGltZW91dCsw eDQwLzB4MTI4Cj4+Pj4+IGlvX3NjaGVkdWxlX3RpbWVvdXQrMHg0NC8weDY4Cj4+Pj4+IHdhaXRf Zm9yX2NvbW1vbl9pbysweDdjLzB4MTAwCj4+Pj4+IHdhaXRfZm9yX2NvbXBsZXRpb25faW8rMHgx NC8weDIwCj4+Pj4+IGJsa19leGVjdXRlX3JxKzB4OTAvMHhjYwo+Pj4+PiBfX3Njc2lfZXhlY3V0 ZSsweDEwNC8weDFjNAo+Pj4+PiBzZF9zeW5jX2NhY2hlKzB4ZjgvMHgyYTAKPj4+Pj4gc2Rfc3Vz cGVuZF9jb21tb24rMHg3NC8weDExYwo+Pj4+PiBzZF9zdXNwZW5kX3J1bnRpbWUrMHgxNC8weDIw Cj4+Pj4+IHNjc2lfcnVudGltZV9zdXNwZW5kKzB4NjQvMHg5NAo+Pj4+PiBfX3JwbV9jYWxsYmFj aysweDgwLzB4MmE0Cj4+Pj4+IHJwbV9zdXNwZW5kKzB4MzA4LzB4NjE0Cj4+Pj4+IHBtX3J1bnRp bWVfd29yaysweDk4LzB4YTgKPj4+Pj4KPj4+Pj4gSSBhZGRlZCAnRExfRkxBR19SUE1fQUNUSVZF JyB3aGlsZSBjcmVhdGluZyBsaW5rcy4KPj4+Pj4gwqDCoMKgwqDCoMKgIGlmIChoYmEtPnNkZXZf dWZzX2RldmljZSkgewo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxpbmsgPSBk ZXZpY2VfbGlua19hZGQoJnNkZXYtPnNkZXZfZ2VuZGV2LAo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmaGJh LT5zZGV2X3Vmc19kZXZpY2UtPnNkZXZfZ2VuZGV2LAo+Pj4+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCj4+Pj4+IERMX0ZMQUdfUE1fUlVOVElNRXxETF9GTEFHX1JQTV9BQ1RJ VkUpOwo+Pj4+PiBJIGRpZG4ndCBleHBlY3QgdGhpcyB0byByZXNvbHZlIHRoZSBpc3N1ZSBhbnl3 YXkgYW5kIGl0IGRpZG4ndC4KPj4+Pj4KPj4+Pj4gQW5vdGhlciBpbnRlcmVzdGluZyBwb2ludCBo ZXJlIGlzIHdoZW4gSSByZXN1bWUgYW55IG9mIHRoZSBhYm92ZSAKPj4+Pj4gc3VzcGVuZGVkCj4+ Pj4+IGNvbnN1bWVycywgaXQgYWxsIGdvZXMgYmFjayB0byBub3JtYWwsIHdoaWNoIGlzIGtpbmQg b2YgZXhwZWN0ZWQuIEkgCj4+Pj4+IHRyaWVkCj4+Pj4+IHJlc3VtaW5nIHRoZSBjb25zdW1lciBh bmQgdGhlIHN1cHBsaWVyIGlzIHJlc3VtZWQgYW5kIHRoZSBzdXBwbGllciBpcwo+Pj4+PiBzdXNw ZW5kZWQgd2hlbiBhbGwgdGhlIGNvbnN1bWVycyBhcmUgc3VzcGVuZGVkLgo+Pj4+Pgo+Pj4+PiBB bnkgcG9pbnRlcnMgb24gdGhpcyBpc3N1ZSBwbGVhc2U/Cj4+Pj4+Cj4+Pj4+IEBCYXJ0L0BBbGFu IC0gRG8geW91J3ZlIGFueSBwb2ludGVycyBwbGVhc2U/Cj4+Pj4KPj4+PiBJdCdzIHZlcnkgbm90 aWNlYWJsZSB0aGF0IGFsdGhvdWdoIHlvdSBzZWVtIHRvIGhhdmUgaXNvbGF0ZWQgYSBidWcgaW4K Pj4+PiB0aGUgcG93ZXIgbWFuYWdlbWVudCBzdWJzeXN0ZW0gKHN1cHBsaWVyIGdvZXMgaW50byBy dW50aW1lIHN1c3BlbmQKPj4+PiBldmVuIHdoZW4gb25lIG9mIGl0cyBjb25zdW1lcnMgaXMgc3Rp bGwgYWN0aXZlKSwgeW91IGRpZCBub3QgQ0MgdGhlCj4+Pj4gcG93ZXIgbWFuYWdlbWVudCBtYWlu dGFpbmVyIG9yIG1haWxpbmcgbGlzdC4KPj4+Pgo+Pj4+IEkgaGF2ZSBhZGRlZCB0aGUgYXBwcm9w cmlhdGUgQ0Mncy4KPj4+Cj4+PiBUaGFua3MgQWxhbiEKPiAKPiAKCkhlbGxvCkkgJiBDYW4gKHRo YW5rcyBDYW5HKSBkZWJ1Z2dlZCB0aGlzIGZ1cnRoZXI6CgpMb29rcyBsaWtlIHRoaXMgaXNzdWUg Y2FuIG9jY3VyIGlmIHRoZSBzZCBwcm9iZSBpcyBhc3luY2hyb25vdXMuCgpFc3NlbnRpYWxseSwg dGhlIHNkX3Byb2JlKCkgaXMgZG9uZSBhc3luY2hyb25vdXNseSBhbmQgCmRyaXZlcl9wcm9iZV9k ZXZpY2UoKSBpbnZva2VzIHBtX3J1bnRpbWVfZ2V0X3N1cHBsaWVycygpIGJlZm9yZSBpbnZva2lu ZyAKc2RfcHJvYmUoKS4KCkJ1dCBzY3NpX3Byb2JlX2FuZF9hZGRfbHVuKCkgcnVucyBpbiBhIHNl cGFyYXRlIGNvbnRleHQuClNvIHRoZSBzY3NpX2F1dG9wbV9wdXRfZGV2aWNlKCkgaW52b2tlZCBm cm9tIHNjc2lfc2Nhbl9ob3N0KCkgY29udGV4dCAKcmVkdWNlcyB0aGUgbGluay0+cnBtX2FjdGl2 ZSB0byAxLiBBbmQgc2RfcHJvYmUoKSBpbnZva2VzIApzY3NpX2F1dG9wbV9wdXRfZGV2aWNlKCkg YW5kIHN0YXJ0cyBhIHRpbWVyLiBBbmQgdGhlbiAKZHJpdmVyX3Byb2JlX2RldmljZSgpIGludm9r ZWQgZnJvbSBfX2RldmljZV9hdHRhY2hfYXN5bmNfaGVscGVyIGNvbnRleHQgCnJlZHVjZXMgdGhl IGxpbmstPnJwbV9hY3RpdmUgdG8gMSB0aHVzIGVuYWJsaW5nIHRoZSBzdXBwbGllciB0byBzdXNw ZW5kIApiZWZvcmUgdGhlIGNvbnN1bWVyIHN1c3BlbmRzLgoKU28gaWY6CkNvbnRleHQgVDE6Clsx XSBzY3NpX3Byb2JlX2FuZF9hZGRfbHVuKCkKWzJdCXwtIHNjc2lfYXV0b3BtX3B1dF9kZXZpY2Uo KSAtIHJlZHVjZSB0aGUgbGluay0+cnBtX2FjdGl2ZSB0byAxCgpDb250ZXh0IFQyOgpfX2Rldmlj ZV9hdHRhY2hfYXN5bmNfaGVscGVyKCkKCXwtIGRyaXZlcl9wcm9iZV9kZXZpY2UoKQoJCXwtIHNk X3Byb2JlKCkKSW4gYmV0d2VlbiBbMV0gYW5kIFsyXSBzYXksIGRyaXZlcl9wcm9iZV9kZXZpY2Uo KSAtPiBzZF9wcm9iZSgpIGlzIAppbnZva2VkIGluIGEgc2VwYXJhdGUgY29udGV4dCBmcm9tIF9f ZGV2aWNlX2F0dGFjaF9hc3luY19oZWxwZXIoKS4KVGhlIGRyaXZlcl9wcm9iZV9kZXZpY2UoKSAt PiBwbV9ydW50aW1lX2dldF9zdXBwbGllcnMoKSBidXQgWzJdIHdvdWxkIApyZWR1Y2UgbGluay0+ cnBtX2FjdGl2ZSB0byAxLgpUaGVuIHNkX3Byb2JlKCkgd291bGQgaW52b2tlIHJwbV9yZXN1bWUo KSBhbmQgcHJvY2VlZCBhcyBpcy4KV2hlbiBzZF9wcm9iZSgpIGludm9rZXMgc2NzaV9hdXRvcG1f cHV0X2RldmljZSgpIGl0J2Qgc3RhcnQgYSB0aW1lciwgCmRldi0+cG93ZXIudGltZXJfYXV0b3N1 c3BlbmRzID0gMS4KCk5vdyB0aGVuLCBwbV9ydW50aW1lX3B1dF9zdXBwbGllcnMoKSBpcyBpbnZv a2VkIGZyb20gCmRyaXZlcl9wcm9iZV9kZXZpY2UoKSBhbmQgdGhhdCBtYWtlcyB0aGUgbGluay0+ cnBtX2FjdGl2ZSA9IDEuCkJ1dCBieSBub3csIHRoZSBjb3JyZXNwb25kaW5nICdzZCBkZXYnIChj b25zdW1lcikgdXNhZ2VfY291bnQgPSAwLCBzdGF0ZSAKPSBSUE1fQUNUSVZFIGFuZCBsaW5rLT5y cG1fYWN0aXZlID0gMS4KQXQgdGhpcyBwb2ludCBvZiB0aW1lLCBhbGwgb3RoZXIgJ3NkIGRldicg KGNvbnN1bWVycykgX21heV8gYmUgc3VzcGVuZGVkIApvciBhY3RpdmUgYnV0IHdvdWxkIGhhdmUg dGhlIGxpbmstPnJwbV9hY3RpdmUgPSAxLgoKU2luY2UgdGhlIHN1cHBsaWVyIGhhcyAwIGF1dG8t c3VzcGVuZCBkZWxheSwgaXQgbm93IHN1c3BlbmRzIQoKCkNvbnRleHQgW1QxXQpDYWxsIHRyYWNl OgpkdW1wX2JhY2t0cmFjZSsweDAvMHgxZDQKc2hvd19zdGFjaysweDE4LzB4MjQKZHVtcF9zdGFj aysweGM0LzB4MTQ0Cl9fcG1fcnVudGltZV9pZGxlKzB4YjQvMHgxODQKc2NzaV9hdXRvcG1fcHV0 X2RldmljZSsweDE4LzB4MjQKc2NzaV9zeXNmc19hZGRfc2RldisweDI2Yy8weDI3OApzY3NpX3By b2JlX2FuZF9hZGRfbHVuKzB4YmFjLzB4ZDQ4Cl9fc2NzaV9zY2FuX3RhcmdldCsweDM4Yy8weDUx MApzY3NpX3NjYW5faG9zdF9zZWxlY3RlZCsweDE0Yy8weDFlNApzY3NpX3NjYW5faG9zdCsweDFl MC8weDIyOAp1ZnNoY2RfYXN5bmNfc2NhbisweDM5Yy8weDQwOAphc3luY19ydW5fZW50cnlfZm4r MHg0OC8weDEyOApwcm9jZXNzX29uZV93b3JrKzB4MWYwLzB4NDcwCndvcmtlcl90aHJlYWQrMHgy NmMvMHg0YzgKa3RocmVhZCsweDEzYy8weDMyMApyZXRfZnJvbV9mb3JrKzB4MTAvMHgxOAoKCkNv bnRleHQgW1QyXQpDYWxsIHRyYWNlOgpkdW1wX2JhY2t0cmFjZSsweDAvMHgxZDQKc2hvd19zdGFj aysweDE4LzB4MjQKZHVtcF9zdGFjaysweGM0LzB4MTQ0CnJwbV9nZXRfc3VwcGxpZXJzKzB4NDgv MHgxYWMKX19ycG1fY2FsbGJhY2srMHg1OC8weDEyYwpycG1fcmVzdW1lKzB4M2E0LzB4NjE4Cl9f cG1fcnVudGltZV9yZXN1bWUrMHg1MC8weDgwCnNjc2lfYXV0b3BtX2dldF9kZXZpY2UrMHgyMC8w eDU0CnNkX3Byb2JlKzB4NDAvMHgzZDAKcmVhbGx5X3Byb2JlKzB4MWJjLzB4NGEwCmRyaXZlcl9w cm9iZV9kZXZpY2UrMHg4NC8weGYwCl9fZGV2aWNlX2F0dGFjaF9kcml2ZXIrMHgxMTQvMHgxMzgK YnVzX2Zvcl9lYWNoX2RydisweDg0LzB4ZDAKX19kZXZpY2VfYXR0YWNoX2FzeW5jX2hlbHBlcisw eDdjLzB4ZjAKYXN5bmNfcnVuX2VudHJ5X2ZuKzB4NDgvMHgxMjgKcHJvY2Vzc19vbmVfd29yaysw eDFmMC8weDQ3MAp3b3JrZXJfdGhyZWFkKzB4MjZjLzB4NGM4Cmt0aHJlYWQrMHgxM2MvMHgzMjAK cmV0X2Zyb21fZm9yaysweDEwLzB4MTgKCkJlbG93IHByaW50cyBzaG93IGhvdyBsaW5rLT5ycG1f YWN0aXZlIGJlY29tZXMgMSBmb3Igc2QgMDowOjA6NApbICAgIDcuNTc0NjU0XVsgIFQyMTJdIENh bGwgdHJhY2U6ClsgICAgNy41NzQ2NTddWyAgVDIxMl0gIGR1bXBfYmFja3RyYWNlKzB4MC8weDFk NApbICAgIDcuNTc0NjYxXVsgIFQyMTJdICBzaG93X3N0YWNrKzB4MTgvMHgyNApbICAgIDcuNTc0 NjY1XVsgIFQyMTJdICBkdW1wX3N0YWNrKzB4YzQvMHgxNDQKWyAgICA3LjU3NDY2OF1bICBUMjEy XSAgX19wbV9ydW50aW1lX2lkbGUrMHhiNC8weDE4NApbICAgIDcuNTc0NjcxXVsgIFQyMTJdICBz Y3NpX2F1dG9wbV9wdXRfZGV2aWNlKzB4MTgvMHgyNApbICAgIDcuNTc0Njc1XVsgIFQyMTJdICBz ZF9wcm9iZSsweDMxNC8weDNkMApbICAgIDcuNTc0Njc3XVsgIFQyMTJdICByZWFsbHlfcHJvYmUr MHgxYmMvMHg0YTAKWyAgICA3LjU3NDY4MF1bICBUMjEyXSAgZHJpdmVyX3Byb2JlX2RldmljZSsw eDg0LzB4ZjAKWyAgICA3LjU3NDY4M11bICBUMjEyXSAgX19kZXZpY2VfYXR0YWNoX2RyaXZlcisw eDExNC8weDEzOApbICAgIDcuNTc0Njg2XVsgIFQyMTJdICBidXNfZm9yX2VhY2hfZHJ2KzB4ODQv MHhkMApbICAgIDcuNTc0Njg5XVsgIFQyMTJdICBfX2RldmljZV9hdHRhY2hfYXN5bmNfaGVscGVy KzB4N2MvMHhmMApbICAgIDcuNTc0NjkyXVsgIFQyMTJdICBhc3luY19ydW5fZW50cnlfZm4rMHg0 OC8weDEyOApbICAgIDcuNTc0Njk1XVsgIFQyMTJdICBwcm9jZXNzX29uZV93b3JrKzB4MWYwLzB4 NDcwClsgICAgNy41NzQ2OThdWyAgVDIxMl0gIHdvcmtlcl90aHJlYWQrMHgyNmMvMHg0YzgKWyAg ICA3LjU3NDcwMF1bICBUMjEyXSAga3RocmVhZCsweDEzYy8weDMyMApbICAgIDcuNTc0NzAzXVsg IFQyMTJdICByZXRfZnJvbV9mb3JrKzB4MTAvMHgxOApbICAgIDcuNTc0NzA2XVsgIFQyMTJdIHNk IDA6MDowOjQ6IHNjc2lfcnVudGltZV9pZGxlClsgICAgNy41NzQ3MTJdWyAgVDIxMl0gc2QgMDow OjA6NDogX19wbV9ydW50aW1lX2lkbGU6IGFmdDogW1VGU0RCR106IApwd3IudGltZXJfYXV0b3N1 c3BlbmRzOiAxIHB3ci5yZXF1ZXN0X3BlbmRpbmc6IDAgcmV0dmFsOiAtMTYgCnB3ci5yZXF1ZXN0 OiAwIHVzYWdlX2NvdW50OiAwIHJwbV9zdGF0dXM6IDAgbGluay1ycG1fYWN0aXZlOjIKWyAgICA3 LjU3NDcxNV1bICBUMjEyXSBzZCAwOjA6MDo0OiBzZF9wcm9iZTogW1VGU0RCR106IEV4aXQKWyAg ICA3LjU3NDczOF1bICBUMjEyXSBzZCAwOjA6MDo0OiBfX3BtX3J1bnRpbWVfaWRsZTogYjQ6IFtV RlNEQkddOiAKcHdyLnJlcXVlc3Q6IDAgdXNhZ2VfY291bnQ6IDAgcnBtX3N0YXR1czogMCBsaW5r LXJwbV9hY3RpdmU6MgoKWyAgICA3LjU3NDc1Ml1bICBUMjEyXSBXb3JrcXVldWU6IGV2ZW50c191 bmJvdW5kIGFzeW5jX3J1bl9lbnRyeV9mbgpbICAgIDcuNTc0NzU0XVsgIFQyMTJdIENhbGwgdHJh Y2U6ClsgICAgNy41NzQ3NThdWyAgVDIxMl0gIGR1bXBfYmFja3RyYWNlKzB4MC8weDFkNApbICAg IDcuNTc0NzYxXVsgIFQyMTJdICBzaG93X3N0YWNrKzB4MTgvMHgyNApbICAgIDcuNTc0NzY1XVsg IFQyMTJdICBkdW1wX3N0YWNrKzB4YzQvMHgxNDQKWyAgICA3LjU3NDc2N11bICBUMjEyXSAgX19w bV9ydW50aW1lX2lkbGUrMHhiNC8weDE4NApbICAgIDcuNTc0NzcwXVsgIFQyMTJdICBkcml2ZXJf cHJvYmVfZGV2aWNlKzB4OTQvMHhmMApbICAgIDcuNTc0NzczXVsgIFQyMTJdICBfX2RldmljZV9h dHRhY2hfZHJpdmVyKzB4MTE0LzB4MTM4ClsgICAgNy41NzQ3NzVdWyAgVDIxMl0gIGJ1c19mb3Jf ZWFjaF9kcnYrMHg4NC8weGQwClsgICAgNy41NzQ3NzhdWyAgVDIxMl0gIF9fZGV2aWNlX2F0dGFj aF9hc3luY19oZWxwZXIrMHg3Yy8weGYwClsgICAgNy41NzQ3ODFdWyAgVDIxMl0gIGFzeW5jX3J1 bl9lbnRyeV9mbisweDQ4LzB4MTI4ClsgICAgNy41NzQ3ODNdWyAgVDIxMl0gIHByb2Nlc3Nfb25l X3dvcmsrMHgxZjAvMHg0NzAKWyAgICA3LjU3NDc4Nl1bICBUMjEyXSAgd29ya2VyX3RocmVhZCsw eDI2Yy8weDRjOApbICAgIDcuNTc0Nzg4XVsgIFQyMTJdICBrdGhyZWFkKzB4MTNjLzB4MzIwClsg ICAgNy41NzQ3OTFdWyAgVDIxMl0gIHJldF9mcm9tX2ZvcmsrMHgxMC8weDE4ClsgICAgNy41NzQ4 NDhdWyAgIFQ4MF0gc2QgMDowOjA6NDogc2NzaV9ydW50aW1lX2lkbGUKWyAgICA3LjU3NDg1OF1b ICBUMjEyXSBzZCAwOjA6MDo0OiBfX3BtX3J1bnRpbWVfaWRsZTogYWZ0OiBbVUZTREJHXTogCnB3 ci50aW1lcl9hdXRvc3VzcGVuZHM6IDEgcHdyLnJlcXVlc3RfcGVuZGluZzogMCByZXR2YWw6IDAg cHdyLnJlcXVlc3Q6IAowIHVzYWdlX2NvdW50OiAwIHJwbV9zdGF0dXM6IDAgbGluay1ycG1fYWN0 aXZlOjIKWyAgICA3LjU3NDg2M11bICBUMjEyXSBzZCAwOjA6MDo0OiBwbV9ydW50aW1lX3B1dF9z dXBwbGllcnM6IFtVRlNEQkddOiAKcnBtX3N0YXR1czogMCBsaW5rLXJwbV9hY3RpdmU6MQpbICAg IDcuNTc0ODY2XVsgIFQyMTJdIHNkIDA6MDowOjQ6IGFzeW5jIHByb2JlIGNvbXBsZXRlZApbICAg IDcuNTc0ODcwXVsgIFQyMTJdIHNkIDA6MDowOjQ6IF9fcG1fcnVudGltZV9pZGxlOiBiNDogW1VG U0RCR106IApwd3IucmVxdWVzdDogMCB1c2FnZV9jb3VudDogMCBycG1fc3RhdHVzOiAwIGxpbmst cnBtX2FjdGl2ZToxCgoKU28sIGZyb20gdGhlIGFib3ZlIGl0IGxvb2tzIGxpa2Ugd2hlbiBhc3lu YyBwcm9iZSBpcyBlbmFibGVkIHRoaXMgaXMgYSAKcG9zc2liaWxpdHkuCgpJIGRvbid0IHNlZSBh IHdheSBhcm91bmQgdGhpcy4gUGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdSAKKEBBbGFuL0BCYXJ0 L0BBZHJpYW4pIGhhdmUgYW55IHRob3VnaHRzIG9uIHRoaXMuCgpUaGFua3MsCi1hc2QKCi0tIApU aGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENv ZGUgQXVyb3JhIEZvcnVtLApMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbWVk aWF0ZWsgbWFpbGluZyBsaXN0CkxpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tZWRpYXRlawo=