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=-14.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=unavailable 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 CECE9C433E6 for ; Thu, 4 Mar 2021 15:08:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A0A7364F97 for ; Thu, 4 Mar 2021 15:08:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233887AbhCDPHc (ORCPT ); Thu, 4 Mar 2021 10:07:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42494 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233092AbhCDPHD (ORCPT ); Thu, 4 Mar 2021 10:07:03 -0500 Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 02F9EC061756; Thu, 4 Mar 2021 07:06:23 -0800 (PST) Received: by mail-pf1-x434.google.com with SMTP id t29so19118577pfg.11; Thu, 04 Mar 2021 07:06:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=/QrIaJJECqAQuVCu6ecLBggrZjnStxzCneNlAu9rQH0=; b=WNrllo6qutFLtKmW2zMn9wyg58xipjSAugZEZVwBPLSd5w6dwxFM/fup2Vjfwx9NA0 7+y+dS5WOKHFqlsZg/BPmT/boSCvksDlz1+HSCjWJ0OOli1cfXyC4KG3R2SxyLpP2yU0 JJY/U1O8I//nVi2vBqFJuI4/+Z70tJHzxs0xj2U2bMMsrfk1B9DrNXa5IbzwXgiuoE/z FVoo3Cul2tkebCvyEVoxB9T/wtCM5W/FVi9clMKAe2iD6r+y84XgeizcKAXJg8n0+8dI iAPOxLlQzQGrpicjAYGG0iGhVHbObg/8FD2hkfzqbTz4PDgtR76CDUHMyk5C7KnbqD1x BypA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=/QrIaJJECqAQuVCu6ecLBggrZjnStxzCneNlAu9rQH0=; b=BSbcFtdJHAZfVuiYnvHppExLhfRfGiUSYl/uoDNKgYL4iMrWja8WxJ6b/d2mG7hVGK UojdkCYVkXPNNOoZDxmub+slWjPt4m+zdWwUffpV9k3BZ6LOT709RcZ/KmRxe5nXlR0p pM/w2MC0cdtUAeZivHGs8ys51NQn4ng+nVn5OD84OXeB6QtY5RlqoT36lbYo79r3yLO9 QfuJ0Kvoxl4kRgApAyOs9LjthN7wuZPIR/hk+zT7twJ0AJ4EmfpATfol4rsuYlD7hHzw mpgffHIqv86bW+WtCEf1oYV88AbjTp3PEo/W/KMkH+BAT9FrZLDV6j6KQoJigzIePqk2 iBlQ== X-Gm-Message-State: AOAM533Ir6RkMG1QE+GttXc+LanT9DRjbJ03kepbpDNWaB6LjkXyxvDZ WpRh2mJ2D+RhfrywcSUTMtM= X-Google-Smtp-Source: ABdhPJyhYfIzEnbnLJQBpi6jN7iB+nLoCLGnVtstYnd8ZUUyttHXqjaIk2Afe9h8M1lyqLaJ3yZ/bw== X-Received: by 2002:a62:2746:0:b029:1ec:df4a:3a8 with SMTP id n67-20020a6227460000b02901ecdf4a03a8mr4199041pfn.15.1614870382377; Thu, 04 Mar 2021 07:06:22 -0800 (PST) Received: from [172.30.1.19] ([14.32.163.5]) by smtp.gmail.com with ESMTPSA id a9sm9838656pjq.17.2021.03.04.07.06.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Mar 2021 07:06:21 -0800 (PST) Subject: Re: [PATCH] devfreq: Register devfreq as a cooling device To: Daniel Lezcano , kyungmin.park@samsung.com, myungjoo.ham@samsung.com Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Chanwoo Choi , Qiang Yu , David Airlie , Daniel Vetter , Rob Clark , Sean Paul , Rob Herring , Tomeu Vizoso , Steven Price , Alyssa Rosenzweig , "open list:DRM DRIVERS FOR LIMA" , "moderated list:DRM DRIVERS FOR LIMA" , "open list:DRM DRIVER FOR MSM ADRENO GPU" , "open list:DRM DRIVER FOR MSM ADRENO GPU" References: <20210304125034.28404-1-daniel.lezcano@linaro.org> From: Chanwoo Choi Message-ID: <97e495cb-c685-e163-0909-0311530a5332@gmail.com> Date: Fri, 5 Mar 2021 00:06:13 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <20210304125034.28404-1-daniel.lezcano@linaro.org> 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 Hi Daniel, As Lukasz's comment, actually some devfreq devices like memory bus might not affect the thermal critically. In the mainline, there are four types devfreq as following: 1. GPU 2. UFS Storage 3. DMC (Memory Controller) 4. Memory bus like AMBA AXI I think that you can specify this devfreq device will be used for cooling device by editing the devfreq_dev_profile structure. diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index bf3047896e41..77966a17d03f 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -935,6 +935,13 @@ struct devfreq *devfreq_add_device(struct device *dev, mutex_unlock(&devfreq_list_lock); + if (devfreq->profile->is_cooling_device) { + devfreq->cdev = devfreq_cooling_em_register(devfreq, NULL); + if (IS_ERR(devfreq->cdev)) + dev_info(dev, + "Failed to register devfreq cooling device\n"); + } + return devfreq; err_init: diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h index 26ea0850be9b..26dc69f1047b 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h @@ -103,6 +103,7 @@ struct devfreq_dev_profile { unsigned long initial_freq; unsigned int polling_ms; enum devfreq_timer timer; + bool is_cooling_device; int (*target)(struct device *dev, unsigned long *freq, u32 flags); int (*get_dev_status)(struct device *dev, Thanks Chanwoo Choi On 21. 3. 4. 오후 9:50, Daniel Lezcano wrote: > Currently the default behavior is to manually having the devfreq > backend to register themselves as a devfreq cooling device. > > There are no so many and actually it makes more sense to register the > devfreq device when adding it. > > Consequently, every devfreq becomes a cooling device like cpufreq is. > > Having a devfreq being registered as a cooling device can not mitigate > a thermal zone if it is not bound to this one. Thus, the current > configurations are not impacted by this change. > > Signed-off-by: Daniel Lezcano > --- > drivers/devfreq/devfreq.c | 8 ++++++++ > drivers/gpu/drm/lima/lima_devfreq.c | 13 ------------- > drivers/gpu/drm/lima/lima_devfreq.h | 2 -- > drivers/gpu/drm/msm/msm_gpu.c | 11 ----------- > drivers/gpu/drm/msm/msm_gpu.h | 2 -- > drivers/gpu/drm/panfrost/panfrost_devfreq.c | 13 ------------- > include/linux/devfreq.h | 3 +++ > 7 files changed, 11 insertions(+), 41 deletions(-) > > diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c > index b6d63f02d293..19149b31b000 100644 > --- a/drivers/devfreq/devfreq.c > +++ b/drivers/devfreq/devfreq.c > @@ -11,6 +11,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -26,6 +27,7 @@ > #include > #include > #include > +#include > #include > #include "governor.h" > > @@ -935,6 +937,10 @@ struct devfreq *devfreq_add_device(struct device *dev, > > mutex_unlock(&devfreq_list_lock); > > + devfreq->cdev = devfreq_cooling_em_register(devfreq, NULL); > + if (IS_ERR(devfreq->cdev)) > + dev_info(dev, "Failed to register devfreq cooling device\n"); > + > return devfreq; > > err_init: > @@ -960,6 +966,8 @@ int devfreq_remove_device(struct devfreq *devfreq) > if (!devfreq) > return -EINVAL; > > + thermal_cooling_device_unregister(devfreq->cdev); > + > if (devfreq->governor) { > devfreq->governor->event_handler(devfreq, > DEVFREQ_GOV_STOP, NULL); > diff --git a/drivers/gpu/drm/lima/lima_devfreq.c b/drivers/gpu/drm/lima/lima_devfreq.c > index 5686ad4aaf7c..a696eff1642c 100644 > --- a/drivers/gpu/drm/lima/lima_devfreq.c > +++ b/drivers/gpu/drm/lima/lima_devfreq.c > @@ -7,7 +7,6 @@ > */ > #include > #include > -#include > #include > #include > #include > @@ -90,11 +89,6 @@ void lima_devfreq_fini(struct lima_device *ldev) > { > struct lima_devfreq *devfreq = &ldev->devfreq; > > - if (devfreq->cooling) { > - devfreq_cooling_unregister(devfreq->cooling); > - devfreq->cooling = NULL; > - } > - > if (devfreq->devfreq) { > devm_devfreq_remove_device(ldev->dev, devfreq->devfreq); > devfreq->devfreq = NULL; > @@ -110,7 +104,6 @@ void lima_devfreq_fini(struct lima_device *ldev) > > int lima_devfreq_init(struct lima_device *ldev) > { > - struct thermal_cooling_device *cooling; > struct device *dev = ldev->dev; > struct opp_table *opp_table; > struct devfreq *devfreq; > @@ -173,12 +166,6 @@ int lima_devfreq_init(struct lima_device *ldev) > > ldevfreq->devfreq = devfreq; > > - cooling = of_devfreq_cooling_register(dev->of_node, devfreq); > - if (IS_ERR(cooling)) > - dev_info(dev, "Failed to register cooling device\n"); > - else > - ldevfreq->cooling = cooling; > - > return 0; > > err_fini: > diff --git a/drivers/gpu/drm/lima/lima_devfreq.h b/drivers/gpu/drm/lima/lima_devfreq.h > index 2d9b3008ce77..c43a2069e5d3 100644 > --- a/drivers/gpu/drm/lima/lima_devfreq.h > +++ b/drivers/gpu/drm/lima/lima_devfreq.h > @@ -9,7 +9,6 @@ > > struct devfreq; > struct opp_table; > -struct thermal_cooling_device; > > struct lima_device; > > @@ -17,7 +16,6 @@ struct lima_devfreq { > struct devfreq *devfreq; > struct opp_table *clkname_opp_table; > struct opp_table *regulators_opp_table; > - struct thermal_cooling_device *cooling; > > ktime_t busy_time; > ktime_t idle_time; > diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c > index ab7c167b0623..d7f80ebfe9df 100644 > --- a/drivers/gpu/drm/msm/msm_gpu.c > +++ b/drivers/gpu/drm/msm/msm_gpu.c > @@ -14,7 +14,6 @@ > #include > #include > #include > -#include > #include > #include > > @@ -112,14 +111,6 @@ static void msm_devfreq_init(struct msm_gpu *gpu) > } > > devfreq_suspend_device(gpu->devfreq.devfreq); > - > - gpu->cooling = of_devfreq_cooling_register(gpu->pdev->dev.of_node, > - gpu->devfreq.devfreq); > - if (IS_ERR(gpu->cooling)) { > - DRM_DEV_ERROR(&gpu->pdev->dev, > - "Couldn't register GPU cooling device\n"); > - gpu->cooling = NULL; > - } > } > > static int enable_pwrrail(struct msm_gpu *gpu) > @@ -1056,6 +1047,4 @@ void msm_gpu_cleanup(struct msm_gpu *gpu) > if (gpu->worker) { > kthread_destroy_worker(gpu->worker); > } > - > - devfreq_cooling_unregister(gpu->cooling); > } > diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h > index d7cd02cd2109..93419368bac8 100644 > --- a/drivers/gpu/drm/msm/msm_gpu.h > +++ b/drivers/gpu/drm/msm/msm_gpu.h > @@ -155,8 +155,6 @@ struct msm_gpu { > struct msm_gpu_state *crashstate; > /* True if the hardware supports expanded apriv (a650 and newer) */ > bool hw_apriv; > - > - struct thermal_cooling_device *cooling; > }; > > static inline struct msm_gpu *dev_to_gpu(struct device *dev) > diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c > index 56b3f5935703..2cb6300de1f1 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c > +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c > @@ -3,7 +3,6 @@ > > #include > #include > -#include > #include > #include > > @@ -90,7 +89,6 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) > struct device *dev = &pfdev->pdev->dev; > struct devfreq *devfreq; > struct opp_table *opp_table; > - struct thermal_cooling_device *cooling; > struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq; > > opp_table = dev_pm_opp_set_regulators(dev, pfdev->comp->supply_names, > @@ -139,12 +137,6 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) > } > pfdevfreq->devfreq = devfreq; > > - cooling = devfreq_cooling_em_register(devfreq, NULL); > - if (IS_ERR(cooling)) > - DRM_DEV_INFO(dev, "Failed to register cooling device\n"); > - else > - pfdevfreq->cooling = cooling; > - > return 0; > > err_fini: > @@ -156,11 +148,6 @@ void panfrost_devfreq_fini(struct panfrost_device *pfdev) > { > struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq; > > - if (pfdevfreq->cooling) { > - devfreq_cooling_unregister(pfdevfreq->cooling); > - pfdevfreq->cooling = NULL; > - } > - > if (pfdevfreq->opp_of_table_added) { > dev_pm_opp_of_remove_table(&pfdev->pdev->dev); > pfdevfreq->opp_of_table_added = false; > diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h > index 26ea0850be9b..690bd4affe18 100644 > --- a/include/linux/devfreq.h > +++ b/include/linux/devfreq.h > @@ -198,6 +198,9 @@ struct devfreq { > > struct srcu_notifier_head transition_notifier_list; > > + /* Pointer to the cooling device if used for thermal mitigation */ > + struct thermal_cooling_device *cdev; > + > struct notifier_block nb_min; > struct notifier_block nb_max; > }; > 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=-12.0 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham 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 A5E06C433DB for ; Thu, 4 Mar 2021 15:06:25 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 65F0164DD1 for ; Thu, 4 Mar 2021 15:06:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 65F0164DD1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5EB896E4AF; Thu, 4 Mar 2021 15:06:24 +0000 (UTC) Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) by gabe.freedesktop.org (Postfix) with ESMTPS id 645286E0DC; Thu, 4 Mar 2021 15:06:23 +0000 (UTC) Received: by mail-pf1-x42e.google.com with SMTP id a188so1703810pfb.4; Thu, 04 Mar 2021 07:06:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=/QrIaJJECqAQuVCu6ecLBggrZjnStxzCneNlAu9rQH0=; b=WNrllo6qutFLtKmW2zMn9wyg58xipjSAugZEZVwBPLSd5w6dwxFM/fup2Vjfwx9NA0 7+y+dS5WOKHFqlsZg/BPmT/boSCvksDlz1+HSCjWJ0OOli1cfXyC4KG3R2SxyLpP2yU0 JJY/U1O8I//nVi2vBqFJuI4/+Z70tJHzxs0xj2U2bMMsrfk1B9DrNXa5IbzwXgiuoE/z FVoo3Cul2tkebCvyEVoxB9T/wtCM5W/FVi9clMKAe2iD6r+y84XgeizcKAXJg8n0+8dI iAPOxLlQzQGrpicjAYGG0iGhVHbObg/8FD2hkfzqbTz4PDgtR76CDUHMyk5C7KnbqD1x BypA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=/QrIaJJECqAQuVCu6ecLBggrZjnStxzCneNlAu9rQH0=; b=ixOkU8VH+TEbbCSnyfpDKGQrsiHB0V4IZ7cW/VakMKgoNvYQ4jkZ+XlJCcxXtkPogt M3QljBBlXu53PLcbbKRYJdAXPCgCmAmQbtf1ELRwSANwPFO3lemRBQB7sPpk1ipEEzyx 3DXZqlrRzm7GAyaqNMZ9+Ju7SQXhY9pxTRIGVoQfsKvprAKb3dK8m95KKjwc2oIxkf8u uKZOu75tinvTkhqIkeUH8QbpF2ccA5X4NfOPdoFp4thv2psmIljzXMBcuQeAVDnBoJJa x5XUxu88n7lt0qHEkwc/Z3pZJiV0jZ49PbdBfxhHAJgN0SMnz5ms45SfAAHguFqQSu/c 8aaw== X-Gm-Message-State: AOAM533zd7DiL1Ogkqhhkp1duEDW22Cfq8F/q8Mu5v0WlHGJDHdmY6fj moWhoi/z/zA37aVtIt5X+IvtUbI308muVw== X-Google-Smtp-Source: ABdhPJyhYfIzEnbnLJQBpi6jN7iB+nLoCLGnVtstYnd8ZUUyttHXqjaIk2Afe9h8M1lyqLaJ3yZ/bw== X-Received: by 2002:a62:2746:0:b029:1ec:df4a:3a8 with SMTP id n67-20020a6227460000b02901ecdf4a03a8mr4199041pfn.15.1614870382377; Thu, 04 Mar 2021 07:06:22 -0800 (PST) Received: from [172.30.1.19] ([14.32.163.5]) by smtp.gmail.com with ESMTPSA id a9sm9838656pjq.17.2021.03.04.07.06.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Mar 2021 07:06:21 -0800 (PST) Subject: Re: [PATCH] devfreq: Register devfreq as a cooling device To: Daniel Lezcano , kyungmin.park@samsung.com, myungjoo.ham@samsung.com References: <20210304125034.28404-1-daniel.lezcano@linaro.org> From: Chanwoo Choi Message-ID: <97e495cb-c685-e163-0909-0311530a5332@gmail.com> Date: Fri, 5 Mar 2021 00:06:13 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <20210304125034.28404-1-daniel.lezcano@linaro.org> Content-Language: en-US X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "moderated list:DRM DRIVERS FOR LIMA" , Tomeu Vizoso , linux-pm@vger.kernel.org, David Airlie , "open list:DRM DRIVER FOR MSM ADRENO GPU" , linux-kernel@vger.kernel.org, "open list:DRM DRIVERS FOR LIMA" , Steven Price , Chanwoo Choi , Qiang Yu , "open list:DRM DRIVER FOR MSM ADRENO GPU" , Sean Paul , Alyssa Rosenzweig Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SGkgRGFuaWVsLAoKQXMgTHVrYXN6J3MgY29tbWVudCwgYWN0dWFsbHkgc29tZSBkZXZmcmVxIGRl dmljZXMgbGlrZSBtZW1vcnkgYnVzCm1pZ2h0IG5vdCBhZmZlY3QgdGhlIHRoZXJtYWwgY3JpdGlj YWxseS4gSW4gdGhlIG1haW5saW5lLAp0aGVyZSBhcmUgZm91ciB0eXBlcyBkZXZmcmVxIGFzIGZv bGxvd2luZzoKMS4gR1BVCjIuIFVGUyBTdG9yYWdlCjMuIERNQyAoTWVtb3J5IENvbnRyb2xsZXIp CjQuIE1lbW9yeSBidXMgbGlrZSBBTUJBIEFYSQoKSSB0aGluayB0aGF0IHlvdSBjYW4gc3BlY2lm eSB0aGlzIGRldmZyZXEgZGV2aWNlIHdpbGwgYmUgdXNlZApmb3IgY29vbGluZyBkZXZpY2UgYnkg ZWRpdGluZyB0aGUgZGV2ZnJlcV9kZXZfcHJvZmlsZSBzdHJ1Y3R1cmUuCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9kZXZmcmVxL2RldmZyZXEuYyBiL2RyaXZlcnMvZGV2ZnJlcS9kZXZmcmVxLmMKaW5k ZXggYmYzMDQ3ODk2ZTQxLi43Nzk2NmExN2QwM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZGV2ZnJl cS9kZXZmcmVxLmMKKysrIGIvZHJpdmVycy9kZXZmcmVxL2RldmZyZXEuYwpAQCAtOTM1LDYgKzkz NSwxMyBAQCBzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJlcV9hZGRfZGV2aWNlKHN0cnVjdCBkZXZpY2Ug KmRldiwKCiAgICAgICAgIG11dGV4X3VubG9jaygmZGV2ZnJlcV9saXN0X2xvY2spOwoKKyAgICAg ICBpZiAoZGV2ZnJlcS0+cHJvZmlsZS0+aXNfY29vbGluZ19kZXZpY2UpIHsKKyAgICAgICAgICAg ICAgIGRldmZyZXEtPmNkZXYgPSBkZXZmcmVxX2Nvb2xpbmdfZW1fcmVnaXN0ZXIoZGV2ZnJlcSwg TlVMTCk7CisgICAgICAgICAgICAgICBpZiAoSVNfRVJSKGRldmZyZXEtPmNkZXYpKQorICAgICAg ICAgICAgICAgICAgICAgICBkZXZfaW5mbyhkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIkZhaWxlZCB0byByZWdpc3RlciBkZXZmcmVxIGNvb2xpbmcgCmRldmljZVxuIik7Cisg ICAgICAgfQorCiAgICAgICAgIHJldHVybiBkZXZmcmVxOwoKICBlcnJfaW5pdDoKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgvZGV2ZnJlcS5oIGIvaW5jbHVkZS9saW51eC9kZXZmcmVxLmgKaW5k ZXggMjZlYTA4NTBiZTliLi4yNmRjNjlmMTA0N2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgv ZGV2ZnJlcS5oCisrKyBiL2luY2x1ZGUvbGludXgvZGV2ZnJlcS5oCkBAIC0xMDMsNiArMTAzLDcg QEAgc3RydWN0IGRldmZyZXFfZGV2X3Byb2ZpbGUgewogICAgICAgICB1bnNpZ25lZCBsb25nIGlu aXRpYWxfZnJlcTsKICAgICAgICAgdW5zaWduZWQgaW50IHBvbGxpbmdfbXM7CiAgICAgICAgIGVu dW0gZGV2ZnJlcV90aW1lciB0aW1lcjsKKyAgICAgICBib29sIGlzX2Nvb2xpbmdfZGV2aWNlOwoK ICAgICAgICAgaW50ICgqdGFyZ2V0KShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcg KmZyZXEsIHUzMiBmbGFncyk7CiAgICAgICAgIGludCAoKmdldF9kZXZfc3RhdHVzKShzdHJ1Y3Qg ZGV2aWNlICpkZXYsCgoKVGhhbmtzCkNoYW53b28gQ2hvaQoKT24gMjEuIDMuIDQuIOyYpO2bhCA5 OjUwLCBEYW5pZWwgTGV6Y2FubyB3cm90ZToKPiBDdXJyZW50bHkgdGhlIGRlZmF1bHQgYmVoYXZp b3IgaXMgdG8gbWFudWFsbHkgaGF2aW5nIHRoZSBkZXZmcmVxCj4gYmFja2VuZCB0byByZWdpc3Rl ciB0aGVtc2VsdmVzIGFzIGEgZGV2ZnJlcSBjb29saW5nIGRldmljZS4KPiAKPiBUaGVyZSBhcmUg bm8gc28gbWFueSBhbmQgYWN0dWFsbHkgaXQgbWFrZXMgbW9yZSBzZW5zZSB0byByZWdpc3RlciB0 aGUKPiBkZXZmcmVxIGRldmljZSB3aGVuIGFkZGluZyBpdC4KPiAKPiBDb25zZXF1ZW50bHksIGV2 ZXJ5IGRldmZyZXEgYmVjb21lcyBhIGNvb2xpbmcgZGV2aWNlIGxpa2UgY3B1ZnJlcSBpcy4KPiAK PiBIYXZpbmcgYSBkZXZmcmVxIGJlaW5nIHJlZ2lzdGVyZWQgYXMgYSBjb29saW5nIGRldmljZSBj YW4gbm90IG1pdGlnYXRlCj4gYSB0aGVybWFsIHpvbmUgaWYgaXQgaXMgbm90IGJvdW5kIHRvIHRo aXMgb25lLiBUaHVzLCB0aGUgY3VycmVudAo+IGNvbmZpZ3VyYXRpb25zIGFyZSBub3QgaW1wYWN0 ZWQgYnkgdGhpcyBjaGFuZ2UuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIExlemNhbm8gPGRh bmllbC5sZXpjYW5vQGxpbmFyby5vcmc+Cj4gLS0tCj4gICBkcml2ZXJzL2RldmZyZXEvZGV2ZnJl cS5jICAgICAgICAgICAgICAgICAgIHwgIDggKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9s aW1hL2xpbWFfZGV2ZnJlcS5jICAgICAgICAgfCAxMyAtLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vbGltYS9saW1hX2RldmZyZXEuaCAgICAgICAgIHwgIDIgLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dwdS5jICAgICAgICAgICAgICAgfCAxMSAtLS0tLS0tLS0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmggICAgICAgICAgICAgICB8ICAyIC0tCj4gICBk cml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZGV2ZnJlcS5jIHwgMTMgLS0tLS0tLS0t LS0tLQo+ICAgaW5jbHVkZS9saW51eC9kZXZmcmVxLmggICAgICAgICAgICAgICAgICAgICB8ICAz ICsrKwo+ICAgNyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL2RldmZyZXEuYyBiL2RyaXZlcnMv ZGV2ZnJlcS9kZXZmcmVxLmMKPiBpbmRleCBiNmQ2M2YwMmQyOTMuLjE5MTQ5YjMxYjAwMCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2RldmZyZXEvZGV2ZnJlcS5jCj4gKysrIGIvZHJpdmVycy9kZXZm cmVxL2RldmZyZXEuYwo+IEBAIC0xMSw2ICsxMSw3IEBACj4gICAjaW5jbHVkZSA8bGludXgva21v ZC5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvZGVi dWdmcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvZGV2ZnJlcV9jb29saW5nLmg+Cj4gICAjaW5jbHVk ZSA8bGludXgvZXJybm8uaD4KPiAgICNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiAgICNpbmNsdWRl IDxsaW51eC9pbml0Lmg+Cj4gQEAgLTI2LDYgKzI3LDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9o cnRpbWVyLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvb2YuaD4KPiAgICNpbmNsdWRlIDxsaW51eC9w bV9xb3MuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3RoZXJtYWwuaD4KPiAgICNpbmNsdWRlIDxsaW51 eC91bml0cy5oPgo+ICAgI2luY2x1ZGUgImdvdmVybm9yLmgiCj4gICAKPiBAQCAtOTM1LDYgKzkz NywxMCBAQCBzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJlcV9hZGRfZGV2aWNlKHN0cnVjdCBkZXZpY2Ug KmRldiwKPiAgIAo+ICAgCW11dGV4X3VubG9jaygmZGV2ZnJlcV9saXN0X2xvY2spOwo+ICAgCj4g KwlkZXZmcmVxLT5jZGV2ID0gZGV2ZnJlcV9jb29saW5nX2VtX3JlZ2lzdGVyKGRldmZyZXEsIE5V TEwpOwo+ICsJaWYgKElTX0VSUihkZXZmcmVxLT5jZGV2KSkKPiArCQlkZXZfaW5mbyhkZXYsICJG YWlsZWQgdG8gcmVnaXN0ZXIgZGV2ZnJlcSBjb29saW5nIGRldmljZVxuIik7Cj4gKwo+ICAgCXJl dHVybiBkZXZmcmVxOwo+ICAgCj4gICBlcnJfaW5pdDoKPiBAQCAtOTYwLDYgKzk2Niw4IEBAIGlu dCBkZXZmcmVxX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGRldmZyZXEgKmRldmZyZXEpCj4gICAJaWYg KCFkZXZmcmVxKQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAo+ICsJdGhlcm1hbF9jb29saW5n X2RldmljZV91bnJlZ2lzdGVyKGRldmZyZXEtPmNkZXYpOwo+ICsKPiAgIAlpZiAoZGV2ZnJlcS0+ Z292ZXJub3IpIHsKPiAgIAkJZGV2ZnJlcS0+Z292ZXJub3ItPmV2ZW50X2hhbmRsZXIoZGV2ZnJl cSwKPiAgIAkJCQkJCSBERVZGUkVRX0dPVl9TVE9QLCBOVUxMKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2xpbWEvbGltYV9kZXZmcmVxLmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9s aW1hX2RldmZyZXEuYwo+IGluZGV4IDU2ODZhZDRhYWY3Yy4uYTY5NmVmZjE2NDJjIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZGV2ZnJlcS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2xpbWEvbGltYV9kZXZmcmVxLmMKPiBAQCAtNyw3ICs3LDYgQEAKPiAgICAqLwo+ ICAgI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L2RldmZyZXEuaD4K PiAtI2luY2x1ZGUgPGxpbnV4L2RldmZyZXFfY29vbGluZy5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4 L2RldmljZS5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICAgI2lu Y2x1ZGUgPGxpbnV4L3BtX29wcC5oPgo+IEBAIC05MCwxMSArODksNiBAQCB2b2lkIGxpbWFfZGV2 ZnJlcV9maW5pKHN0cnVjdCBsaW1hX2RldmljZSAqbGRldikKPiAgIHsKPiAgIAlzdHJ1Y3QgbGlt YV9kZXZmcmVxICpkZXZmcmVxID0gJmxkZXYtPmRldmZyZXE7Cj4gICAKPiAtCWlmIChkZXZmcmVx LT5jb29saW5nKSB7Cj4gLQkJZGV2ZnJlcV9jb29saW5nX3VucmVnaXN0ZXIoZGV2ZnJlcS0+Y29v bGluZyk7Cj4gLQkJZGV2ZnJlcS0+Y29vbGluZyA9IE5VTEw7Cj4gLQl9Cj4gLQo+ICAgCWlmIChk ZXZmcmVxLT5kZXZmcmVxKSB7Cj4gICAJCWRldm1fZGV2ZnJlcV9yZW1vdmVfZGV2aWNlKGxkZXYt PmRldiwgZGV2ZnJlcS0+ZGV2ZnJlcSk7Cj4gICAJCWRldmZyZXEtPmRldmZyZXEgPSBOVUxMOwo+ IEBAIC0xMTAsNyArMTA0LDYgQEAgdm9pZCBsaW1hX2RldmZyZXFfZmluaShzdHJ1Y3QgbGltYV9k ZXZpY2UgKmxkZXYpCj4gICAKPiAgIGludCBsaW1hX2RldmZyZXFfaW5pdChzdHJ1Y3QgbGltYV9k ZXZpY2UgKmxkZXYpCj4gICB7Cj4gLQlzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY29v bGluZzsKPiAgIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBsZGV2LT5kZXY7Cj4gICAJc3RydWN0IG9w cF90YWJsZSAqb3BwX3RhYmxlOwo+ICAgCXN0cnVjdCBkZXZmcmVxICpkZXZmcmVxOwo+IEBAIC0x NzMsMTIgKzE2Niw2IEBAIGludCBsaW1hX2RldmZyZXFfaW5pdChzdHJ1Y3QgbGltYV9kZXZpY2Ug KmxkZXYpCj4gICAKPiAgIAlsZGV2ZnJlcS0+ZGV2ZnJlcSA9IGRldmZyZXE7Cj4gICAKPiAtCWNv b2xpbmcgPSBvZl9kZXZmcmVxX2Nvb2xpbmdfcmVnaXN0ZXIoZGV2LT5vZl9ub2RlLCBkZXZmcmVx KTsKPiAtCWlmIChJU19FUlIoY29vbGluZykpCj4gLQkJZGV2X2luZm8oZGV2LCAiRmFpbGVkIHRv IHJlZ2lzdGVyIGNvb2xpbmcgZGV2aWNlXG4iKTsKPiAtCWVsc2UKPiAtCQlsZGV2ZnJlcS0+Y29v bGluZyA9IGNvb2xpbmc7Cj4gLQo+ICAgCXJldHVybiAwOwo+ICAgCj4gICBlcnJfZmluaToKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9kZXZmcmVxLmggYi9kcml2ZXJz L2dwdS9kcm0vbGltYS9saW1hX2RldmZyZXEuaAo+IGluZGV4IDJkOWIzMDA4Y2U3Ny4uYzQzYTIw NjllNWQzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZGV2ZnJlcS5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9kZXZmcmVxLmgKPiBAQCAtOSw3ICs5 LDYgQEAKPiAgIAo+ICAgc3RydWN0IGRldmZyZXE7Cj4gICBzdHJ1Y3Qgb3BwX3RhYmxlOwo+IC1z dHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZTsKPiAgIAo+ICAgc3RydWN0IGxpbWFfZGV2aWNl Owo+ICAgCj4gQEAgLTE3LDcgKzE2LDYgQEAgc3RydWN0IGxpbWFfZGV2ZnJlcSB7Cj4gICAJc3Ry dWN0IGRldmZyZXEgKmRldmZyZXE7Cj4gICAJc3RydWN0IG9wcF90YWJsZSAqY2xrbmFtZV9vcHBf dGFibGU7Cj4gICAJc3RydWN0IG9wcF90YWJsZSAqcmVndWxhdG9yc19vcHBfdGFibGU7Cj4gLQlz dHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY29vbGluZzsKPiAgIAo+ICAgCWt0aW1lX3Qg YnVzeV90aW1lOwo+ICAgCWt0aW1lX3QgaWRsZV90aW1lOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9ncHUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jCj4g aW5kZXggYWI3YzE2N2IwNjIzLi5kN2Y4MGViZmU5ZGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZ3B1LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUu Ywo+IEBAIC0xNCw3ICsxNCw2IEBACj4gICAjaW5jbHVkZSA8Z2VuZXJhdGVkL3V0c3JlbGVhc2Uu aD4KPiAgICNpbmNsdWRlIDxsaW51eC9zdHJpbmdfaGVscGVycy5oPgo+ICAgI2luY2x1ZGUgPGxp bnV4L2RldmZyZXEuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L2RldmZyZXFfY29vbGluZy5oPgo+ICAg I2luY2x1ZGUgPGxpbnV4L2RldmNvcmVkdW1wLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvc2NoZWQv dGFzay5oPgo+ICAgCj4gQEAgLTExMiwxNCArMTExLDYgQEAgc3RhdGljIHZvaWQgbXNtX2RldmZy ZXFfaW5pdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1KQo+ICAgCX0KPiAgIAo+ICAgCWRldmZyZXFfc3Vz cGVuZF9kZXZpY2UoZ3B1LT5kZXZmcmVxLmRldmZyZXEpOwo+IC0KPiAtCWdwdS0+Y29vbGluZyA9 IG9mX2RldmZyZXFfY29vbGluZ19yZWdpc3RlcihncHUtPnBkZXYtPmRldi5vZl9ub2RlLAo+IC0J CQlncHUtPmRldmZyZXEuZGV2ZnJlcSk7Cj4gLQlpZiAoSVNfRVJSKGdwdS0+Y29vbGluZykpIHsK PiAtCQlEUk1fREVWX0VSUk9SKCZncHUtPnBkZXYtPmRldiwKPiAtCQkJCSJDb3VsZG4ndCByZWdp c3RlciBHUFUgY29vbGluZyBkZXZpY2VcbiIpOwo+IC0JCWdwdS0+Y29vbGluZyA9IE5VTEw7Cj4g LQl9Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgZW5hYmxlX3B3cnJhaWwoc3RydWN0IG1zbV9n cHUgKmdwdSkKPiBAQCAtMTA1Niw2ICsxMDQ3LDQgQEAgdm9pZCBtc21fZ3B1X2NsZWFudXAoc3Ry dWN0IG1zbV9ncHUgKmdwdSkKPiAgIAlpZiAoZ3B1LT53b3JrZXIpIHsKPiAgIAkJa3RocmVhZF9k ZXN0cm95X3dvcmtlcihncHUtPndvcmtlcik7Cj4gICAJfQo+IC0KPiAtCWRldmZyZXFfY29vbGlu Z191bnJlZ2lzdGVyKGdwdS0+Y29vbGluZyk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dwdS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmgKPiBp bmRleCBkN2NkMDJjZDIxMDkuLjkzNDE5MzY4YmFjOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9ncHUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5o Cj4gQEAgLTE1NSw4ICsxNTUsNiBAQCBzdHJ1Y3QgbXNtX2dwdSB7Cj4gICAJc3RydWN0IG1zbV9n cHVfc3RhdGUgKmNyYXNoc3RhdGU7Cj4gICAJLyogVHJ1ZSBpZiB0aGUgaGFyZHdhcmUgc3VwcG9y dHMgZXhwYW5kZWQgYXByaXYgKGE2NTAgYW5kIG5ld2VyKSAqLwo+ICAgCWJvb2wgaHdfYXByaXY7 Cj4gLQo+IC0Jc3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKmNvb2xpbmc7Cj4gICB9Owo+ ICAgCj4gICBzdGF0aWMgaW5saW5lIHN0cnVjdCBtc21fZ3B1ICpkZXZfdG9fZ3B1KHN0cnVjdCBk ZXZpY2UgKmRldikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZy b3N0X2RldmZyZXEuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kZXZmcmVx LmMKPiBpbmRleCA1NmIzZjU5MzU3MDMuLjJjYjYzMDBkZTFmMSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZGV2ZnJlcS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2RldmZyZXEuYwo+IEBAIC0zLDcgKzMsNiBAQAo+ICAg Cj4gICAjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvZGV2ZnJlcS5o Pgo+IC0jaW5jbHVkZSA8bGludXgvZGV2ZnJlcV9jb29saW5nLmg+Cj4gICAjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvcG1fb3BwLmg+Cj4gICAK PiBAQCAtOTAsNyArODksNiBAQCBpbnQgcGFuZnJvc3RfZGV2ZnJlcV9pbml0KHN0cnVjdCBwYW5m cm9zdF9kZXZpY2UgKnBmZGV2KQo+ICAgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZmRldi0+cGRl di0+ZGV2Owo+ICAgCXN0cnVjdCBkZXZmcmVxICpkZXZmcmVxOwo+ICAgCXN0cnVjdCBvcHBfdGFi bGUgKm9wcF90YWJsZTsKPiAtCXN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICpjb29saW5n Owo+ICAgCXN0cnVjdCBwYW5mcm9zdF9kZXZmcmVxICpwZmRldmZyZXEgPSAmcGZkZXYtPnBmZGV2 ZnJlcTsKPiAgIAo+ICAgCW9wcF90YWJsZSA9IGRldl9wbV9vcHBfc2V0X3JlZ3VsYXRvcnMoZGV2 LCBwZmRldi0+Y29tcC0+c3VwcGx5X25hbWVzLAo+IEBAIC0xMzksMTIgKzEzNyw2IEBAIGludCBw YW5mcm9zdF9kZXZmcmVxX2luaXQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYpCj4gICAJ fQo+ICAgCXBmZGV2ZnJlcS0+ZGV2ZnJlcSA9IGRldmZyZXE7Cj4gICAKPiAtCWNvb2xpbmcgPSBk ZXZmcmVxX2Nvb2xpbmdfZW1fcmVnaXN0ZXIoZGV2ZnJlcSwgTlVMTCk7Cj4gLQlpZiAoSVNfRVJS KGNvb2xpbmcpKQo+IC0JCURSTV9ERVZfSU5GTyhkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgY29v bGluZyBkZXZpY2VcbiIpOwo+IC0JZWxzZQo+IC0JCXBmZGV2ZnJlcS0+Y29vbGluZyA9IGNvb2xp bmc7Cj4gLQo+ICAgCXJldHVybiAwOwo+ICAgCj4gICBlcnJfZmluaToKPiBAQCAtMTU2LDExICsx NDgsNiBAQCB2b2lkIHBhbmZyb3N0X2RldmZyZXFfZmluaShzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNl ICpwZmRldikKPiAgIHsKPiAgIAlzdHJ1Y3QgcGFuZnJvc3RfZGV2ZnJlcSAqcGZkZXZmcmVxID0g JnBmZGV2LT5wZmRldmZyZXE7Cj4gICAKPiAtCWlmIChwZmRldmZyZXEtPmNvb2xpbmcpIHsKPiAt CQlkZXZmcmVxX2Nvb2xpbmdfdW5yZWdpc3RlcihwZmRldmZyZXEtPmNvb2xpbmcpOwo+IC0JCXBm ZGV2ZnJlcS0+Y29vbGluZyA9IE5VTEw7Cj4gLQl9Cj4gLQo+ICAgCWlmIChwZmRldmZyZXEtPm9w cF9vZl90YWJsZV9hZGRlZCkgewo+ICAgCQlkZXZfcG1fb3BwX29mX3JlbW92ZV90YWJsZSgmcGZk ZXYtPnBkZXYtPmRldik7Cj4gICAJCXBmZGV2ZnJlcS0+b3BwX29mX3RhYmxlX2FkZGVkID0gZmFs c2U7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2ZnJlcS5oIGIvaW5jbHVkZS9saW51 eC9kZXZmcmVxLmgKPiBpbmRleCAyNmVhMDg1MGJlOWIuLjY5MGJkNGFmZmUxOCAxMDA2NDQKPiAt LS0gYS9pbmNsdWRlL2xpbnV4L2RldmZyZXEuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvZGV2ZnJl cS5oCj4gQEAgLTE5OCw2ICsxOTgsOSBAQCBzdHJ1Y3QgZGV2ZnJlcSB7Cj4gICAKPiAgIAlzdHJ1 Y3Qgc3JjdV9ub3RpZmllcl9oZWFkIHRyYW5zaXRpb25fbm90aWZpZXJfbGlzdDsKPiAgIAo+ICsJ LyogUG9pbnRlciB0byB0aGUgY29vbGluZyBkZXZpY2UgaWYgdXNlZCBmb3IgdGhlcm1hbCBtaXRp Z2F0aW9uICovCj4gKwlzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY2RldjsKPiArCj4g ICAJc3RydWN0IG5vdGlmaWVyX2Jsb2NrIG5iX21pbjsKPiAgIAlzdHJ1Y3Qgbm90aWZpZXJfYmxv Y2sgbmJfbWF4Owo+ICAgfTsKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==