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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5A8AC433EF for ; Thu, 30 Sep 2021 13:11:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8F5E3619E7 for ; Thu, 30 Sep 2021 13:11:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349876AbhI3NM7 (ORCPT ); Thu, 30 Sep 2021 09:12:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:35752 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234439AbhI3NM5 (ORCPT ); Thu, 30 Sep 2021 09:12:57 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 4EE5B619EB for ; Thu, 30 Sep 2021 13:11:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1633007475; bh=IPmaOclIoeWRYsf5R3sAnuGbfHT7SkzOGvJojBMY7Mg=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=IA3LmBzjoJioOLIhjb24zJA8UHxuN7BBoQoBblKfOq5pnGPVGfwKupJjYGFxoPWU5 NBReojWLhUXsjqIdym7CeCUc5PBSOZYz99kMBOUs2TQDn1NHcVC1wxvyJpYRXy+ecx IVdToCIDxOvgRTehz1wpW3UZ5aQVQlB3FRNcCB02bgsp89oiBz82uBPdfsfSsSJHhT KHO+wm20VPp02OpYfVTqw6jy8yefOCLNtVQ+693K17bua5AlI1wtIqrqJgt93e0qP0 Xb//UV5w3l+MPbOfJb2JVwK4FHJy4Qe/92qbtRytvv2frisYEt0aK1gwPRawQOiuOJ HeA6EZU81jciA== Received: by mail-ed1-f49.google.com with SMTP id bd28so21821793edb.9 for ; Thu, 30 Sep 2021 06:11:15 -0700 (PDT) X-Gm-Message-State: AOAM530v6bfJu016KMA4kI/4OZ0XVUwG0TxHq1vPgUWtQte90cOETg9q MsGc7A0KQDm6MTaZjBklfw5v2B9TTjDSUGD+Qg== X-Google-Smtp-Source: ABdhPJyBLu5cCwIDZ89ApNeKQU8a74FbPUJTL2QbRzeJ3b6AakIQWNpnxzwBoCNj0EC1GofBryeZzOUZ67VTWdVNNmc= X-Received: by 2002:a05:6402:40c5:: with SMTP id z5mr3938186edb.272.1633007473094; Thu, 30 Sep 2021 06:11:13 -0700 (PDT) MIME-Version: 1.0 References: <20210930024704.6966-1-jason-jh.lin@mediatek.com> <20210930024704.6966-2-jason-jh.lin@mediatek.com> In-Reply-To: From: Chun-Kuang Hu Date: Thu, 30 Sep 2021 21:11:01 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [v2 PATCH 1/3] drm/mediatek: Fix crash at using pkt->cl->chan in cmdq_pkt_finalize To: Enric Balletbo Serra Cc: "jason-jh.lin" , Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger , Yongqiang Niu , dri-devel , "moderated list:ARM/Mediatek SoC support" , Linux ARM , linux-kernel , Hsin-Yi Wang , fshao@chromium.org, "Nancy.Lin" , singo.chang@mediatek.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Enric: Enric Balletbo Serra =E6=96=BC 2021=E5=B9=B49=E6=9C= =8830=E6=97=A5 =E9=80=B1=E5=9B=9B =E4=B8=8B=E5=8D=883:12=E5=AF=AB=E9=81=93= =EF=BC=9A > > Hi Jason, > > > Missatge de jason-jh.lin del dia dj., 30 > de set. 2021 a les 4:47: > > > > Because mtk_drm_crtc_create_pkt didn't assign pkt->cl, it will > > crash at using pkt->cl->chan in cmdq_pkt_finalize. > > > > So add struct cmdq_client and let mtk_drm_crtc instance define > > cmdq_client as: > > > > struct mtk_drm_crtc { > > /* client instance data */ > > struct cmdq_client cmdq_client; > > }; > > > > and in rx_callback function can use pkt->cl to get > > struct cmdq_client. > > > > Fixes: f4be17cd5b14 ("drm/mediatek: Remove struct cmdq_client") > > Looking at this patchset looks like you're fixing the above commit by > reintroducing the 'struct cmdq_client' again, which makes the above > commit as a non-sense commit. That's confusing and not clear. I'm > wondering if it wouldn't be more clear if you can just revert that > patch. Then if there are more changes that need to be done do it with > a follow up patch and really explain why these changes are needed. The patch f4be17cd5b14 ("drm/mediatek: Remove struct cmdq_client") does two things. One is to remove struct cmdq_client, another one is to embed cmdq_cl in mtk_drm_crtc (This means the pointer of cmdq_cl could be used to find the pointer of mtk_drm_crtc). The correct way to fix that patch is to remove the access to cmdq_client in cmdq_pkt_finalize(), but that would be a long term process. The simple way is to revert that patch, but the other patches depend on embedding cmdq_cl in mtk_drm_crtc. So this patch just revert the removing of struct cmdq_client but keep embedding cmdq_cl in mtk_drm_crtc. Regards, Chun-Kuang. > > Thanks, > Enric > > > > Signed-off-by: jason-jh.lin > > --- > > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 73 +++++++++++++------------ > > 1 file changed, 38 insertions(+), 35 deletions(-) > > > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/= mediatek/mtk_drm_crtc.c > > index 5f81489fc60c..411d99fcbb8f 100644 > > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > > @@ -52,8 +52,7 @@ struct mtk_drm_crtc { > > bool pending_async_planes; > > > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > - struct mbox_client cmdq_cl; > > - struct mbox_chan *cmdq_chan; > > + struct cmdq_client cmdq_client; > > struct cmdq_pkt cmdq_handle; > > u32 cmdq_event; > > u32 cmdq_vblank_cnt; > > @@ -227,8 +226,8 @@ struct mtk_ddp_comp *mtk_drm_ddp_comp_for_plane(str= uct drm_crtc *crtc, > > } > > > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > -static int mtk_drm_cmdq_pkt_create(struct mbox_chan *chan, struct cmdq= _pkt *pkt, > > - size_t size) > > +static int mtk_drm_cmdq_pkt_create(struct cmdq_client *client, struct = cmdq_pkt *pkt, > > + size_t size) > > { > > struct device *dev; > > dma_addr_t dma_addr; > > @@ -239,8 +238,9 @@ static int mtk_drm_cmdq_pkt_create(struct mbox_chan= *chan, struct cmdq_pkt *pkt, > > return -ENOMEM; > > } > > pkt->buf_size =3D size; > > + pkt->cl =3D (void *)client; > > > > - dev =3D chan->mbox->dev; > > + dev =3D client->chan->mbox->dev; > > dma_addr =3D dma_map_single(dev, pkt->va_base, pkt->buf_size, > > DMA_TO_DEVICE); > > if (dma_mapping_error(dev, dma_addr)) { > > @@ -255,9 +255,11 @@ static int mtk_drm_cmdq_pkt_create(struct mbox_cha= n *chan, struct cmdq_pkt *pkt, > > return 0; > > } > > > > -static void mtk_drm_cmdq_pkt_destroy(struct mbox_chan *chan, struct cm= dq_pkt *pkt) > > +static void mtk_drm_cmdq_pkt_destroy(struct cmdq_pkt *pkt) > > { > > - dma_unmap_single(chan->mbox->dev, pkt->pa_base, pkt->buf_size, > > + struct cmdq_client *client =3D (struct cmdq_client *)pkt->cl; > > + > > + dma_unmap_single(client->chan->mbox->dev, pkt->pa_base, pkt->bu= f_size, > > DMA_TO_DEVICE); > > kfree(pkt->va_base); > > kfree(pkt); > > @@ -265,8 +267,9 @@ static void mtk_drm_cmdq_pkt_destroy(struct mbox_ch= an *chan, struct cmdq_pkt *pk > > > > static void ddp_cmdq_cb(struct mbox_client *cl, void *mssg) > > { > > - struct mtk_drm_crtc *mtk_crtc =3D container_of(cl, struct mtk_d= rm_crtc, cmdq_cl); > > struct cmdq_cb_data *data =3D mssg; > > + struct cmdq_client *cmdq_cl =3D container_of(cl, struct cmdq_cl= ient, client); > > + struct mtk_drm_crtc *mtk_crtc =3D container_of(cmdq_cl, struct = mtk_drm_crtc, cmdq_client); > > struct mtk_crtc_state *state; > > unsigned int i; > > > > @@ -299,7 +302,7 @@ static void ddp_cmdq_cb(struct mbox_client *cl, voi= d *mssg) > > } > > > > mtk_crtc->cmdq_vblank_cnt =3D 0; > > - mtk_drm_cmdq_pkt_destroy(mtk_crtc->cmdq_chan, data->pkt); > > + mtk_drm_cmdq_pkt_destroy(data->pkt); > > } > > #endif > > > > @@ -550,24 +553,24 @@ static void mtk_drm_crtc_update_config(struct mtk= _drm_crtc *mtk_crtc, > > mtk_mutex_release(mtk_crtc->mutex); > > } > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > - if (mtk_crtc->cmdq_chan) { > > - mbox_flush(mtk_crtc->cmdq_chan, 2000); > > + if (mtk_crtc->cmdq_client.chan) { > > + mbox_flush(mtk_crtc->cmdq_client.chan, 2000); > > cmdq_handle->cmd_buf_size =3D 0; > > cmdq_pkt_clear_event(cmdq_handle, mtk_crtc->cmdq_event)= ; > > cmdq_pkt_wfe(cmdq_handle, mtk_crtc->cmdq_event, false); > > mtk_crtc_ddp_config(crtc, cmdq_handle); > > cmdq_pkt_finalize(cmdq_handle); > > - dma_sync_single_for_device(mtk_crtc->cmdq_chan->mbox->d= ev, > > - cmdq_handle->pa_base, > > - cmdq_handle->cmd_buf_size, > > - DMA_TO_DEVICE); > > + dma_sync_single_for_device(mtk_crtc->cmdq_client.chan->= mbox->dev, > > + cmdq_handle->pa_base, > > + cmdq_handle->cmd_buf_size, > > + DMA_TO_DEVICE); > > /* > > * CMDQ command should execute in next vblank, > > * If it fail to execute in next 2 vblank, timeout happ= en. > > */ > > mtk_crtc->cmdq_vblank_cnt =3D 2; > > - mbox_send_message(mtk_crtc->cmdq_chan, cmdq_handle); > > - mbox_client_txdone(mtk_crtc->cmdq_chan, 0); > > + mbox_send_message(mtk_crtc->cmdq_client.chan, cmdq_hand= le); > > + mbox_client_txdone(mtk_crtc->cmdq_client.chan, 0); > > } > > #endif > > mtk_crtc->config_updating =3D false; > > @@ -581,7 +584,7 @@ static void mtk_crtc_ddp_irq(void *data) > > struct mtk_drm_private *priv =3D crtc->dev->dev_private; > > > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > - if (!priv->data->shadow_register && !mtk_crtc->cmdq_chan) > > + if (!priv->data->shadow_register && !mtk_crtc->cmdq_client.chan= ) > > mtk_crtc_ddp_config(crtc, NULL); > > else if (mtk_crtc->cmdq_vblank_cnt > 0 && --mtk_crtc->cmdq_vbla= nk_cnt =3D=3D 0) > > DRM_ERROR("mtk_crtc %d CMDQ execute command timeout!\n"= , > > @@ -924,20 +927,20 @@ int mtk_drm_crtc_create(struct drm_device *drm_de= v, > > mutex_init(&mtk_crtc->hw_lock); > > > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > - mtk_crtc->cmdq_cl.dev =3D mtk_crtc->mmsys_dev; > > - mtk_crtc->cmdq_cl.tx_block =3D false; > > - mtk_crtc->cmdq_cl.knows_txdone =3D true; > > - mtk_crtc->cmdq_cl.rx_callback =3D ddp_cmdq_cb; > > - mtk_crtc->cmdq_chan =3D > > - mbox_request_channel(&mtk_crtc->cmdq_cl, > > - drm_crtc_index(&mtk_crtc-= >base)); > > - if (IS_ERR(mtk_crtc->cmdq_chan)) { > > + mtk_crtc->cmdq_client.client.dev =3D mtk_crtc->mmsys_dev; > > + mtk_crtc->cmdq_client.client.tx_block =3D false; > > + mtk_crtc->cmdq_client.client.knows_txdone =3D true; > > + mtk_crtc->cmdq_client.client.rx_callback =3D ddp_cmdq_cb; > > + mtk_crtc->cmdq_client.chan =3D > > + mbox_request_channel(&mtk_crtc->cmdq_client.cli= ent, > > + drm_crtc_index(&mtk_crtc->= base)); > > + if (IS_ERR(mtk_crtc->cmdq_client.chan)) { > > dev_dbg(dev, "mtk_crtc %d failed to create mailbox clie= nt, writing register by CPU now\n", > > drm_crtc_index(&mtk_crtc->base)); > > - mtk_crtc->cmdq_chan =3D NULL; > > + mtk_crtc->cmdq_client.chan =3D NULL; > > } > > > > - if (mtk_crtc->cmdq_chan) { > > + if (mtk_crtc->cmdq_client.chan) { > > ret =3D of_property_read_u32_index(priv->mutex_node, > > "mediatek,gce-events", > > drm_crtc_index(&mtk_cr= tc->base), > > @@ -945,17 +948,17 @@ int mtk_drm_crtc_create(struct drm_device *drm_de= v, > > if (ret) { > > dev_dbg(dev, "mtk_crtc %d failed to get mediate= k,gce-events property\n", > > drm_crtc_index(&mtk_crtc->base)); > > - mbox_free_channel(mtk_crtc->cmdq_chan); > > - mtk_crtc->cmdq_chan =3D NULL; > > + mbox_free_channel(mtk_crtc->cmdq_client.chan); > > + mtk_crtc->cmdq_client.chan =3D NULL; > > } else { > > - ret =3D mtk_drm_cmdq_pkt_create(mtk_crtc->cmdq_= chan, > > - &mtk_crtc->cmdq_= handle, > > - PAGE_SIZE); > > + ret =3D mtk_drm_cmdq_pkt_create(&mtk_crtc->cmdq= _client, > > + &mtk_crtc->cmdq_h= andle, > > + PAGE_SIZE); > > if (ret) { > > dev_dbg(dev, "mtk_crtc %d failed to cre= ate cmdq packet\n", > > drm_crtc_index(&mtk_crtc->base)= ); > > - mbox_free_channel(mtk_crtc->cmdq_chan); > > - mtk_crtc->cmdq_chan =3D NULL; > > + mbox_free_channel(mtk_crtc->cmdq_client= .chan); > > + mtk_crtc->cmdq_client.chan =3D NULL; > > } > > } > > } > > -- > > 2.18.0 > > 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8B5EDC433F5 for ; Thu, 30 Sep 2021 13:11:17 +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 4F1BA6126A for ; Thu, 30 Sep 2021 13:11:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 4F1BA6126A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 249046EB86; Thu, 30 Sep 2021 13:11:16 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C5096EB86 for ; Thu, 30 Sep 2021 13:11:15 +0000 (UTC) Received: by mail.kernel.org (Postfix) with ESMTPSA id F31076187A for ; Thu, 30 Sep 2021 13:11:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1633007475; bh=IPmaOclIoeWRYsf5R3sAnuGbfHT7SkzOGvJojBMY7Mg=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=IA3LmBzjoJioOLIhjb24zJA8UHxuN7BBoQoBblKfOq5pnGPVGfwKupJjYGFxoPWU5 NBReojWLhUXsjqIdym7CeCUc5PBSOZYz99kMBOUs2TQDn1NHcVC1wxvyJpYRXy+ecx IVdToCIDxOvgRTehz1wpW3UZ5aQVQlB3FRNcCB02bgsp89oiBz82uBPdfsfSsSJHhT KHO+wm20VPp02OpYfVTqw6jy8yefOCLNtVQ+693K17bua5AlI1wtIqrqJgt93e0qP0 Xb//UV5w3l+MPbOfJb2JVwK4FHJy4Qe/92qbtRytvv2frisYEt0aK1gwPRawQOiuOJ HeA6EZU81jciA== Received: by mail-ed1-f53.google.com with SMTP id r18so21778859edv.12 for ; Thu, 30 Sep 2021 06:11:14 -0700 (PDT) X-Gm-Message-State: AOAM532aLuHjWkI/lv7aeXBtoMJIidChvrbenQZK0HgdSlEgDM0SEVKN xHjWFPxCtuvhECbwn/qcytwimlbIkhWBiA1I3w== X-Google-Smtp-Source: ABdhPJyBLu5cCwIDZ89ApNeKQU8a74FbPUJTL2QbRzeJ3b6AakIQWNpnxzwBoCNj0EC1GofBryeZzOUZ67VTWdVNNmc= X-Received: by 2002:a05:6402:40c5:: with SMTP id z5mr3938186edb.272.1633007473094; Thu, 30 Sep 2021 06:11:13 -0700 (PDT) MIME-Version: 1.0 References: <20210930024704.6966-1-jason-jh.lin@mediatek.com> <20210930024704.6966-2-jason-jh.lin@mediatek.com> In-Reply-To: From: Chun-Kuang Hu Date: Thu, 30 Sep 2021 21:11:01 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [v2 PATCH 1/3] drm/mediatek: Fix crash at using pkt->cl->chan in cmdq_pkt_finalize To: Enric Balletbo Serra Cc: "jason-jh.lin" , Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger , Yongqiang Niu , dri-devel , "moderated list:ARM/Mediatek SoC support" , Linux ARM , linux-kernel , Hsin-Yi Wang , fshao@chromium.org, "Nancy.Lin" , singo.chang@mediatek.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi, Enric: Enric Balletbo Serra =E6=96=BC 2021=E5=B9=B49=E6=9C= =8830=E6=97=A5 =E9=80=B1=E5=9B=9B =E4=B8=8B=E5=8D=883:12=E5=AF=AB=E9=81=93= =EF=BC=9A > > Hi Jason, > > > Missatge de jason-jh.lin del dia dj., 30 > de set. 2021 a les 4:47: > > > > Because mtk_drm_crtc_create_pkt didn't assign pkt->cl, it will > > crash at using pkt->cl->chan in cmdq_pkt_finalize. > > > > So add struct cmdq_client and let mtk_drm_crtc instance define > > cmdq_client as: > > > > struct mtk_drm_crtc { > > /* client instance data */ > > struct cmdq_client cmdq_client; > > }; > > > > and in rx_callback function can use pkt->cl to get > > struct cmdq_client. > > > > Fixes: f4be17cd5b14 ("drm/mediatek: Remove struct cmdq_client") > > Looking at this patchset looks like you're fixing the above commit by > reintroducing the 'struct cmdq_client' again, which makes the above > commit as a non-sense commit. That's confusing and not clear. I'm > wondering if it wouldn't be more clear if you can just revert that > patch. Then if there are more changes that need to be done do it with > a follow up patch and really explain why these changes are needed. The patch f4be17cd5b14 ("drm/mediatek: Remove struct cmdq_client") does two things. One is to remove struct cmdq_client, another one is to embed cmdq_cl in mtk_drm_crtc (This means the pointer of cmdq_cl could be used to find the pointer of mtk_drm_crtc). The correct way to fix that patch is to remove the access to cmdq_client in cmdq_pkt_finalize(), but that would be a long term process. The simple way is to revert that patch, but the other patches depend on embedding cmdq_cl in mtk_drm_crtc. So this patch just revert the removing of struct cmdq_client but keep embedding cmdq_cl in mtk_drm_crtc. Regards, Chun-Kuang. > > Thanks, > Enric > > > > Signed-off-by: jason-jh.lin > > --- > > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 73 +++++++++++++------------ > > 1 file changed, 38 insertions(+), 35 deletions(-) > > > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/= mediatek/mtk_drm_crtc.c > > index 5f81489fc60c..411d99fcbb8f 100644 > > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > > @@ -52,8 +52,7 @@ struct mtk_drm_crtc { > > bool pending_async_planes; > > > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > - struct mbox_client cmdq_cl; > > - struct mbox_chan *cmdq_chan; > > + struct cmdq_client cmdq_client; > > struct cmdq_pkt cmdq_handle; > > u32 cmdq_event; > > u32 cmdq_vblank_cnt; > > @@ -227,8 +226,8 @@ struct mtk_ddp_comp *mtk_drm_ddp_comp_for_plane(str= uct drm_crtc *crtc, > > } > > > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > -static int mtk_drm_cmdq_pkt_create(struct mbox_chan *chan, struct cmdq= _pkt *pkt, > > - size_t size) > > +static int mtk_drm_cmdq_pkt_create(struct cmdq_client *client, struct = cmdq_pkt *pkt, > > + size_t size) > > { > > struct device *dev; > > dma_addr_t dma_addr; > > @@ -239,8 +238,9 @@ static int mtk_drm_cmdq_pkt_create(struct mbox_chan= *chan, struct cmdq_pkt *pkt, > > return -ENOMEM; > > } > > pkt->buf_size =3D size; > > + pkt->cl =3D (void *)client; > > > > - dev =3D chan->mbox->dev; > > + dev =3D client->chan->mbox->dev; > > dma_addr =3D dma_map_single(dev, pkt->va_base, pkt->buf_size, > > DMA_TO_DEVICE); > > if (dma_mapping_error(dev, dma_addr)) { > > @@ -255,9 +255,11 @@ static int mtk_drm_cmdq_pkt_create(struct mbox_cha= n *chan, struct cmdq_pkt *pkt, > > return 0; > > } > > > > -static void mtk_drm_cmdq_pkt_destroy(struct mbox_chan *chan, struct cm= dq_pkt *pkt) > > +static void mtk_drm_cmdq_pkt_destroy(struct cmdq_pkt *pkt) > > { > > - dma_unmap_single(chan->mbox->dev, pkt->pa_base, pkt->buf_size, > > + struct cmdq_client *client =3D (struct cmdq_client *)pkt->cl; > > + > > + dma_unmap_single(client->chan->mbox->dev, pkt->pa_base, pkt->bu= f_size, > > DMA_TO_DEVICE); > > kfree(pkt->va_base); > > kfree(pkt); > > @@ -265,8 +267,9 @@ static void mtk_drm_cmdq_pkt_destroy(struct mbox_ch= an *chan, struct cmdq_pkt *pk > > > > static void ddp_cmdq_cb(struct mbox_client *cl, void *mssg) > > { > > - struct mtk_drm_crtc *mtk_crtc =3D container_of(cl, struct mtk_d= rm_crtc, cmdq_cl); > > struct cmdq_cb_data *data =3D mssg; > > + struct cmdq_client *cmdq_cl =3D container_of(cl, struct cmdq_cl= ient, client); > > + struct mtk_drm_crtc *mtk_crtc =3D container_of(cmdq_cl, struct = mtk_drm_crtc, cmdq_client); > > struct mtk_crtc_state *state; > > unsigned int i; > > > > @@ -299,7 +302,7 @@ static void ddp_cmdq_cb(struct mbox_client *cl, voi= d *mssg) > > } > > > > mtk_crtc->cmdq_vblank_cnt =3D 0; > > - mtk_drm_cmdq_pkt_destroy(mtk_crtc->cmdq_chan, data->pkt); > > + mtk_drm_cmdq_pkt_destroy(data->pkt); > > } > > #endif > > > > @@ -550,24 +553,24 @@ static void mtk_drm_crtc_update_config(struct mtk= _drm_crtc *mtk_crtc, > > mtk_mutex_release(mtk_crtc->mutex); > > } > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > - if (mtk_crtc->cmdq_chan) { > > - mbox_flush(mtk_crtc->cmdq_chan, 2000); > > + if (mtk_crtc->cmdq_client.chan) { > > + mbox_flush(mtk_crtc->cmdq_client.chan, 2000); > > cmdq_handle->cmd_buf_size =3D 0; > > cmdq_pkt_clear_event(cmdq_handle, mtk_crtc->cmdq_event)= ; > > cmdq_pkt_wfe(cmdq_handle, mtk_crtc->cmdq_event, false); > > mtk_crtc_ddp_config(crtc, cmdq_handle); > > cmdq_pkt_finalize(cmdq_handle); > > - dma_sync_single_for_device(mtk_crtc->cmdq_chan->mbox->d= ev, > > - cmdq_handle->pa_base, > > - cmdq_handle->cmd_buf_size, > > - DMA_TO_DEVICE); > > + dma_sync_single_for_device(mtk_crtc->cmdq_client.chan->= mbox->dev, > > + cmdq_handle->pa_base, > > + cmdq_handle->cmd_buf_size, > > + DMA_TO_DEVICE); > > /* > > * CMDQ command should execute in next vblank, > > * If it fail to execute in next 2 vblank, timeout happ= en. > > */ > > mtk_crtc->cmdq_vblank_cnt =3D 2; > > - mbox_send_message(mtk_crtc->cmdq_chan, cmdq_handle); > > - mbox_client_txdone(mtk_crtc->cmdq_chan, 0); > > + mbox_send_message(mtk_crtc->cmdq_client.chan, cmdq_hand= le); > > + mbox_client_txdone(mtk_crtc->cmdq_client.chan, 0); > > } > > #endif > > mtk_crtc->config_updating =3D false; > > @@ -581,7 +584,7 @@ static void mtk_crtc_ddp_irq(void *data) > > struct mtk_drm_private *priv =3D crtc->dev->dev_private; > > > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > - if (!priv->data->shadow_register && !mtk_crtc->cmdq_chan) > > + if (!priv->data->shadow_register && !mtk_crtc->cmdq_client.chan= ) > > mtk_crtc_ddp_config(crtc, NULL); > > else if (mtk_crtc->cmdq_vblank_cnt > 0 && --mtk_crtc->cmdq_vbla= nk_cnt =3D=3D 0) > > DRM_ERROR("mtk_crtc %d CMDQ execute command timeout!\n"= , > > @@ -924,20 +927,20 @@ int mtk_drm_crtc_create(struct drm_device *drm_de= v, > > mutex_init(&mtk_crtc->hw_lock); > > > > #if IS_REACHABLE(CONFIG_MTK_CMDQ) > > - mtk_crtc->cmdq_cl.dev =3D mtk_crtc->mmsys_dev; > > - mtk_crtc->cmdq_cl.tx_block =3D false; > > - mtk_crtc->cmdq_cl.knows_txdone =3D true; > > - mtk_crtc->cmdq_cl.rx_callback =3D ddp_cmdq_cb; > > - mtk_crtc->cmdq_chan =3D > > - mbox_request_channel(&mtk_crtc->cmdq_cl, > > - drm_crtc_index(&mtk_crtc-= >base)); > > - if (IS_ERR(mtk_crtc->cmdq_chan)) { > > + mtk_crtc->cmdq_client.client.dev =3D mtk_crtc->mmsys_dev; > > + mtk_crtc->cmdq_client.client.tx_block =3D false; > > + mtk_crtc->cmdq_client.client.knows_txdone =3D true; > > + mtk_crtc->cmdq_client.client.rx_callback =3D ddp_cmdq_cb; > > + mtk_crtc->cmdq_client.chan =3D > > + mbox_request_channel(&mtk_crtc->cmdq_client.cli= ent, > > + drm_crtc_index(&mtk_crtc->= base)); > > + if (IS_ERR(mtk_crtc->cmdq_client.chan)) { > > dev_dbg(dev, "mtk_crtc %d failed to create mailbox clie= nt, writing register by CPU now\n", > > drm_crtc_index(&mtk_crtc->base)); > > - mtk_crtc->cmdq_chan =3D NULL; > > + mtk_crtc->cmdq_client.chan =3D NULL; > > } > > > > - if (mtk_crtc->cmdq_chan) { > > + if (mtk_crtc->cmdq_client.chan) { > > ret =3D of_property_read_u32_index(priv->mutex_node, > > "mediatek,gce-events", > > drm_crtc_index(&mtk_cr= tc->base), > > @@ -945,17 +948,17 @@ int mtk_drm_crtc_create(struct drm_device *drm_de= v, > > if (ret) { > > dev_dbg(dev, "mtk_crtc %d failed to get mediate= k,gce-events property\n", > > drm_crtc_index(&mtk_crtc->base)); > > - mbox_free_channel(mtk_crtc->cmdq_chan); > > - mtk_crtc->cmdq_chan =3D NULL; > > + mbox_free_channel(mtk_crtc->cmdq_client.chan); > > + mtk_crtc->cmdq_client.chan =3D NULL; > > } else { > > - ret =3D mtk_drm_cmdq_pkt_create(mtk_crtc->cmdq_= chan, > > - &mtk_crtc->cmdq_= handle, > > - PAGE_SIZE); > > + ret =3D mtk_drm_cmdq_pkt_create(&mtk_crtc->cmdq= _client, > > + &mtk_crtc->cmdq_h= andle, > > + PAGE_SIZE); > > if (ret) { > > dev_dbg(dev, "mtk_crtc %d failed to cre= ate cmdq packet\n", > > drm_crtc_index(&mtk_crtc->base)= ); > > - mbox_free_channel(mtk_crtc->cmdq_chan); > > - mtk_crtc->cmdq_chan =3D NULL; > > + mbox_free_channel(mtk_crtc->cmdq_client= .chan); > > + mtk_crtc->cmdq_client.chan =3D NULL; > > } > > } > > } > > -- > > 2.18.0 > > 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 47A6EC433EF for ; Thu, 30 Sep 2021 13:16:47 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 05F1D6023F for ; Thu, 30 Sep 2021 13:16:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 05F1D6023F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=PvavUYMmUDnYCWMcyOTYNZfqM9HvWt8eByuPgLXhakE=; b=RSKNM6dUQEmkc2 /NAq3lBn1vz0UGJ03MuT4CnX7SwzlIz4Ki+21P10F8NhEsLFd0aX978UdQppNpFW/Yvuta2iOPKtu VKZgDLlWR8vQzvsB6gmrR5AiJt1KDFzxDKss51gOhlWn5+vOQJYrucASkuY/zZgly3pQ31T5nsdLm Bx0Tq21LfnSAjHvfUZ8zUxb2DfLcWrOMU2/2nseRp6Pjit/NAWyt8ANefk8aH6vitVrzuhWQe1qV1 rWi/W1PVptY08SjrT9Yco/9RqaDS5r1dQ/Hewtk5Ys8wcqnugNcbg/6SOBjr8FUZSlJFS17pJeLwf OhItPZlC0YufEeddOLew==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVvvK-00EPC9-RN; Thu, 30 Sep 2021 13:16:30 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVvqH-00ENgh-Ik; Thu, 30 Sep 2021 13:11:19 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 97521619F8; Thu, 30 Sep 2021 13:11:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1633007476; bh=IPmaOclIoeWRYsf5R3sAnuGbfHT7SkzOGvJojBMY7Mg=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=K5OjOfSE9CMA3QySzNeNnQWoR4E9PJlaMFZgRBsNFXfkpZlfZAuyMDf10Cci+ztu+ AzNc+utT7Zfly4otn0ASlTRfzjsT0yfYkqMxJaNdGYoqYfF9qihjfQ6ldxCmRuGwnE lrTBfwPlI5P7TNsQRUT8Kh51/Npzf+IX8l0p5t/F8mXW+VKLb+jICZMcPpwMt7mWIE NXqQihtDP3bTxsKoz92FkvlrKjMfw0QFOW5bddKW33C5noouQaCDVMk0zAbwzh9eJr fcUGJwTIF2i/iZhVVgcFECGjhfieytwYZLuS6SsEWxk5PY42/4UlHo3Mfb9g8Wz+D5 1aHQZuUOcO6bw== Received: by mail-ed1-f50.google.com with SMTP id s17so21687246edd.8; Thu, 30 Sep 2021 06:11:16 -0700 (PDT) X-Gm-Message-State: AOAM531yFoXJyvD0a2c4IsgkDMI2naO1E+LsCsL7aVXl+ZiUFKWtpEHy ClI1tzYJArVNp+86f82WDNPKBfik702DeGp8LQ== X-Google-Smtp-Source: ABdhPJyBLu5cCwIDZ89ApNeKQU8a74FbPUJTL2QbRzeJ3b6AakIQWNpnxzwBoCNj0EC1GofBryeZzOUZ67VTWdVNNmc= X-Received: by 2002:a05:6402:40c5:: with SMTP id z5mr3938186edb.272.1633007473094; Thu, 30 Sep 2021 06:11:13 -0700 (PDT) MIME-Version: 1.0 References: <20210930024704.6966-1-jason-jh.lin@mediatek.com> <20210930024704.6966-2-jason-jh.lin@mediatek.com> In-Reply-To: From: Chun-Kuang Hu Date: Thu, 30 Sep 2021 21:11:01 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [v2 PATCH 1/3] drm/mediatek: Fix crash at using pkt->cl->chan in cmdq_pkt_finalize To: Enric Balletbo Serra Cc: "jason-jh.lin" , Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger , Yongqiang Niu , dri-devel , "moderated list:ARM/Mediatek SoC support" , Linux ARM , linux-kernel , Hsin-Yi Wang , fshao@chromium.org, "Nancy.Lin" , singo.chang@mediatek.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210930_061117_736633_BB29668B X-CRM114-Status: GOOD ( 34.14 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org SGksIEVucmljOgoKRW5yaWMgQmFsbGV0Ym8gU2VycmEgPGViYWxsZXRib0BnbWFpbC5jb20+IOaW vCAyMDIx5bm0OeaciDMw5pelIOmAseWbmyDkuIvljYgzOjEy5a+r6YGT77yaCj4KPiBIaSBKYXNv biwKPgo+Cj4gTWlzc2F0Z2UgZGUgamFzb24tamgubGluIDxqYXNvbi1qaC5saW5AbWVkaWF0ZWsu Y29tPiBkZWwgZGlhIGRqLiwgMzAKPiBkZSBzZXQuIDIwMjEgYSBsZXMgNDo0NzoKPiA+Cj4gPiBC ZWNhdXNlIG10a19kcm1fY3J0Y19jcmVhdGVfcGt0IGRpZG4ndCBhc3NpZ24gcGt0LT5jbCwgaXQg d2lsbAo+ID4gY3Jhc2ggYXQgdXNpbmcgcGt0LT5jbC0+Y2hhbiBpbiBjbWRxX3BrdF9maW5hbGl6 ZS4KPiA+Cj4gPiBTbyBhZGQgc3RydWN0IGNtZHFfY2xpZW50IGFuZCBsZXQgbXRrX2RybV9jcnRj IGluc3RhbmNlIGRlZmluZQo+ID4gY21kcV9jbGllbnQgYXM6Cj4gPgo+ID4gc3RydWN0IG10a19k cm1fY3J0YyB7Cj4gPiAgICAgICAgIC8qIGNsaWVudCBpbnN0YW5jZSBkYXRhICovCj4gPiAgICAg ICAgIHN0cnVjdCBjbWRxX2NsaWVudCBjbWRxX2NsaWVudDsKPiA+IH07Cj4gPgo+ID4gYW5kIGlu IHJ4X2NhbGxiYWNrIGZ1bmN0aW9uIGNhbiB1c2UgcGt0LT5jbCB0byBnZXQKPiA+IHN0cnVjdCBj bWRxX2NsaWVudC4KPiA+Cj4gPiBGaXhlczogZjRiZTE3Y2Q1YjE0ICgiZHJtL21lZGlhdGVrOiBS ZW1vdmUgc3RydWN0IGNtZHFfY2xpZW50IikKPgo+IExvb2tpbmcgYXQgdGhpcyBwYXRjaHNldCBs b29rcyBsaWtlIHlvdSdyZSBmaXhpbmcgdGhlIGFib3ZlIGNvbW1pdCBieQo+IHJlaW50cm9kdWNp bmcgdGhlICdzdHJ1Y3QgY21kcV9jbGllbnQnIGFnYWluLCB3aGljaCBtYWtlcyB0aGUgYWJvdmUK PiBjb21taXQgYXMgYSBub24tc2Vuc2UgY29tbWl0LiBUaGF0J3MgY29uZnVzaW5nIGFuZCBub3Qg Y2xlYXIuIEknbQo+IHdvbmRlcmluZyBpZiBpdCB3b3VsZG4ndCBiZSBtb3JlIGNsZWFyIGlmIHlv dSBjYW4ganVzdCByZXZlcnQgdGhhdAo+IHBhdGNoLiBUaGVuIGlmIHRoZXJlIGFyZSBtb3JlIGNo YW5nZXMgdGhhdCBuZWVkIHRvIGJlIGRvbmUgZG8gaXQgd2l0aAo+IGEgZm9sbG93IHVwIHBhdGNo IGFuZCByZWFsbHkgZXhwbGFpbiB3aHkgdGhlc2UgY2hhbmdlcyBhcmUgbmVlZGVkLgoKVGhlIHBh dGNoIGY0YmUxN2NkNWIxNCAoImRybS9tZWRpYXRlazogUmVtb3ZlIHN0cnVjdCBjbWRxX2NsaWVu dCIpCmRvZXMgdHdvIHRoaW5ncy4gT25lIGlzIHRvIHJlbW92ZSBzdHJ1Y3QgY21kcV9jbGllbnQs IGFub3RoZXIgb25lIGlzCnRvIGVtYmVkIGNtZHFfY2wKaW4gbXRrX2RybV9jcnRjIChUaGlzIG1l YW5zIHRoZSBwb2ludGVyIG9mIGNtZHFfY2wgY291bGQgYmUgdXNlZCB0bwpmaW5kIHRoZSBwb2lu dGVyIG9mIG10a19kcm1fY3J0YykuIFRoZSBjb3JyZWN0IHdheSB0byBmaXggdGhhdCBwYXRjaApp cyB0byByZW1vdmUgdGhlIGFjY2VzcyB0byBjbWRxX2NsaWVudCBpbiBjbWRxX3BrdF9maW5hbGl6 ZSgpLCBidXQKdGhhdCB3b3VsZCBiZSBhIGxvbmcgdGVybSBwcm9jZXNzLiBUaGUgc2ltcGxlIHdh eSBpcyB0byByZXZlcnQgdGhhdApwYXRjaCwgYnV0IHRoZSBvdGhlciBwYXRjaGVzIGRlcGVuZCBv biBlbWJlZGRpbmcgY21kcV9jbCBpbgptdGtfZHJtX2NydGMuIFNvIHRoaXMgcGF0Y2gganVzdCBy ZXZlcnQgdGhlIHJlbW92aW5nIG9mIHN0cnVjdApjbWRxX2NsaWVudCBidXQga2VlcCBlbWJlZGRp bmcgY21kcV9jbCBpbiBtdGtfZHJtX2NydGMuCgpSZWdhcmRzLApDaHVuLUt1YW5nLgoKPgo+IFRo YW5rcywKPiAgIEVucmljCj4KPgo+ID4gU2lnbmVkLW9mZi1ieTogamFzb24tamgubGluIDxqYXNv bi1qaC5saW5AbWVkaWF0ZWsuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1fY3J0Yy5jIHwgNzMgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ID4gIDEg ZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKPiA+Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jIGIvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jCj4gPiBpbmRleCA1ZjgxNDg5ZmM2 MGMuLjQxMWQ5OWZjYmI4ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHJtX2NydGMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fY3J0Yy5jCj4gPiBAQCAtNTIsOCArNTIsNyBAQCBzdHJ1Y3QgbXRrX2RybV9jcnRjIHsKPiA+ ICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nX2FzeW5jX3Bs YW5lczsKPiA+Cj4gPiAgI2lmIElTX1JFQUNIQUJMRShDT05GSUdfTVRLX0NNRFEpCj4gPiAtICAg ICAgIHN0cnVjdCBtYm94X2NsaWVudCAgICAgICAgICAgICAgY21kcV9jbDsKPiA+IC0gICAgICAg c3RydWN0IG1ib3hfY2hhbiAgICAgICAgICAgICAgICAqY21kcV9jaGFuOwo+ID4gKyAgICAgICBz dHJ1Y3QgY21kcV9jbGllbnQgICAgICAgICAgICAgIGNtZHFfY2xpZW50Owo+ID4gICAgICAgICBz dHJ1Y3QgY21kcV9wa3QgICAgICAgICAgICAgICAgIGNtZHFfaGFuZGxlOwo+ID4gICAgICAgICB1 MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHFfZXZlbnQ7Cj4gPiAgICAgICAgIHUz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kcV92YmxhbmtfY250Owo+ID4gQEAgLTIy Nyw4ICsyMjYsOCBAQCBzdHJ1Y3QgbXRrX2RkcF9jb21wICptdGtfZHJtX2RkcF9jb21wX2Zvcl9w bGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgfQo+ID4KPiA+ICAjaWYgSVNfUkVBQ0hB QkxFKENPTkZJR19NVEtfQ01EUSkKPiA+IC1zdGF0aWMgaW50IG10a19kcm1fY21kcV9wa3RfY3Jl YXRlKHN0cnVjdCBtYm94X2NoYW4gKmNoYW4sIHN0cnVjdCBjbWRxX3BrdCAqcGt0LAo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCj4gPiArc3RhdGlj IGludCBtdGtfZHJtX2NtZHFfcGt0X2NyZWF0ZShzdHJ1Y3QgY21kcV9jbGllbnQgKmNsaWVudCwg c3RydWN0IGNtZHFfcGt0ICpwa3QsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBzaXplKQo+ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGRldmljZSAqZGV2Owo+ ID4gICAgICAgICBkbWFfYWRkcl90IGRtYV9hZGRyOwo+ID4gQEAgLTIzOSw4ICsyMzgsOSBAQCBz dGF0aWMgaW50IG10a19kcm1fY21kcV9wa3RfY3JlYXRlKHN0cnVjdCBtYm94X2NoYW4gKmNoYW4s IHN0cnVjdCBjbWRxX3BrdCAqcGt0LAo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVN Owo+ID4gICAgICAgICB9Cj4gPiAgICAgICAgIHBrdC0+YnVmX3NpemUgPSBzaXplOwo+ID4gKyAg ICAgICBwa3QtPmNsID0gKHZvaWQgKiljbGllbnQ7Cj4gPgo+ID4gLSAgICAgICBkZXYgPSBjaGFu LT5tYm94LT5kZXY7Cj4gPiArICAgICAgIGRldiA9IGNsaWVudC0+Y2hhbi0+bWJveC0+ZGV2Owo+ ID4gICAgICAgICBkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKGRldiwgcGt0LT52YV9iYXNlLCBw a3QtPmJ1Zl9zaXplLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9U T19ERVZJQ0UpOwo+ID4gICAgICAgICBpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfYWRk cikpIHsKPiA+IEBAIC0yNTUsOSArMjU1LDExIEBAIHN0YXRpYyBpbnQgbXRrX2RybV9jbWRxX3Br dF9jcmVhdGUoc3RydWN0IG1ib3hfY2hhbiAqY2hhbiwgc3RydWN0IGNtZHFfcGt0ICpwa3QsCj4g PiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIHZvaWQgbXRrX2RybV9j bWRxX3BrdF9kZXN0cm95KHN0cnVjdCBtYm94X2NoYW4gKmNoYW4sIHN0cnVjdCBjbWRxX3BrdCAq cGt0KQo+ID4gK3N0YXRpYyB2b2lkIG10a19kcm1fY21kcV9wa3RfZGVzdHJveShzdHJ1Y3QgY21k cV9wa3QgKnBrdCkKPiA+ICB7Cj4gPiAtICAgICAgIGRtYV91bm1hcF9zaW5nbGUoY2hhbi0+bWJv eC0+ZGV2LCBwa3QtPnBhX2Jhc2UsIHBrdC0+YnVmX3NpemUsCj4gPiArICAgICAgIHN0cnVjdCBj bWRxX2NsaWVudCAqY2xpZW50ID0gKHN0cnVjdCBjbWRxX2NsaWVudCAqKXBrdC0+Y2w7Cj4gPiAr Cj4gPiArICAgICAgIGRtYV91bm1hcF9zaW5nbGUoY2xpZW50LT5jaGFuLT5tYm94LT5kZXYsIHBr dC0+cGFfYmFzZSwgcGt0LT5idWZfc2l6ZSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICBE TUFfVE9fREVWSUNFKTsKPiA+ICAgICAgICAga2ZyZWUocGt0LT52YV9iYXNlKTsKPiA+ICAgICAg ICAga2ZyZWUocGt0KTsKPiA+IEBAIC0yNjUsOCArMjY3LDkgQEAgc3RhdGljIHZvaWQgbXRrX2Ry bV9jbWRxX3BrdF9kZXN0cm95KHN0cnVjdCBtYm94X2NoYW4gKmNoYW4sIHN0cnVjdCBjbWRxX3Br dCAqcGsKPiA+Cj4gPiAgc3RhdGljIHZvaWQgZGRwX2NtZHFfY2Ioc3RydWN0IG1ib3hfY2xpZW50 ICpjbCwgdm9pZCAqbXNzZykKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBtdGtfZHJtX2NydGMg Km10a19jcnRjID0gY29udGFpbmVyX29mKGNsLCBzdHJ1Y3QgbXRrX2RybV9jcnRjLCBjbWRxX2Ns KTsKPiA+ICAgICAgICAgc3RydWN0IGNtZHFfY2JfZGF0YSAqZGF0YSA9IG1zc2c7Cj4gPiArICAg ICAgIHN0cnVjdCBjbWRxX2NsaWVudCAqY21kcV9jbCA9IGNvbnRhaW5lcl9vZihjbCwgc3RydWN0 IGNtZHFfY2xpZW50LCBjbGllbnQpOwo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2RybV9jcnRjICpt dGtfY3J0YyA9IGNvbnRhaW5lcl9vZihjbWRxX2NsLCBzdHJ1Y3QgbXRrX2RybV9jcnRjLCBjbWRx X2NsaWVudCk7Cj4gPiAgICAgICAgIHN0cnVjdCBtdGtfY3J0Y19zdGF0ZSAqc3RhdGU7Cj4gPiAg ICAgICAgIHVuc2lnbmVkIGludCBpOwo+ID4KPiA+IEBAIC0yOTksNyArMzAyLDcgQEAgc3RhdGlj IHZvaWQgZGRwX2NtZHFfY2Ioc3RydWN0IG1ib3hfY2xpZW50ICpjbCwgdm9pZCAqbXNzZykKPiA+ ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgbXRrX2NydGMtPmNtZHFfdmJsYW5rX2NudCA9IDA7 Cj4gPiAtICAgICAgIG10a19kcm1fY21kcV9wa3RfZGVzdHJveShtdGtfY3J0Yy0+Y21kcV9jaGFu LCBkYXRhLT5wa3QpOwo+ID4gKyAgICAgICBtdGtfZHJtX2NtZHFfcGt0X2Rlc3Ryb3koZGF0YS0+ cGt0KTsKPiA+ICB9Cj4gPiAgI2VuZGlmCj4gPgo+ID4gQEAgLTU1MCwyNCArNTUzLDI0IEBAIHN0 YXRpYyB2b2lkIG10a19kcm1fY3J0Y191cGRhdGVfY29uZmlnKHN0cnVjdCBtdGtfZHJtX2NydGMg Km10a19jcnRjLAo+ID4gICAgICAgICAgICAgICAgIG10a19tdXRleF9yZWxlYXNlKG10a19jcnRj LT5tdXRleCk7Cj4gPiAgICAgICAgIH0KPiA+ICAjaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19NVEtf Q01EUSkKPiA+IC0gICAgICAgaWYgKG10a19jcnRjLT5jbWRxX2NoYW4pIHsKPiA+IC0gICAgICAg ICAgICAgICBtYm94X2ZsdXNoKG10a19jcnRjLT5jbWRxX2NoYW4sIDIwMDApOwo+ID4gKyAgICAg ICBpZiAobXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4pIHsKPiA+ICsgICAgICAgICAgICAgICBt Ym94X2ZsdXNoKG10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuLCAyMDAwKTsKPiA+ICAgICAgICAg ICAgICAgICBjbWRxX2hhbmRsZS0+Y21kX2J1Zl9zaXplID0gMDsKPiA+ICAgICAgICAgICAgICAg ICBjbWRxX3BrdF9jbGVhcl9ldmVudChjbWRxX2hhbmRsZSwgbXRrX2NydGMtPmNtZHFfZXZlbnQp Owo+ID4gICAgICAgICAgICAgICAgIGNtZHFfcGt0X3dmZShjbWRxX2hhbmRsZSwgbXRrX2NydGMt PmNtZHFfZXZlbnQsIGZhbHNlKTsKPiA+ICAgICAgICAgICAgICAgICBtdGtfY3J0Y19kZHBfY29u ZmlnKGNydGMsIGNtZHFfaGFuZGxlKTsKPiA+ICAgICAgICAgICAgICAgICBjbWRxX3BrdF9maW5h bGl6ZShjbWRxX2hhbmRsZSk7Cj4gPiAtICAgICAgICAgICAgICAgZG1hX3N5bmNfc2luZ2xlX2Zv cl9kZXZpY2UobXRrX2NydGMtPmNtZHFfY2hhbi0+bWJveC0+ZGV2LAo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRxX2hhbmRsZS0+cGFfYmFzZSwKPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kcV9oYW5kbGUt PmNtZF9idWZfc2l6ZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRE1BX1RPX0RFVklDRSk7Cj4gPiArICAgICAgICAgICAgICAgZG1hX3N5bmNfc2luZ2xl X2Zvcl9kZXZpY2UobXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4tPm1ib3gtPmRldiwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRxX2hhbmRsZS0+cGFf YmFzZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRx X2hhbmRsZS0+Y21kX2J1Zl9zaXplLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERNQV9UT19ERVZJQ0UpOwo+ID4gICAgICAgICAgICAgICAgIC8qCj4gPiAg ICAgICAgICAgICAgICAgICogQ01EUSBjb21tYW5kIHNob3VsZCBleGVjdXRlIGluIG5leHQgdmJs YW5rLAo+ID4gICAgICAgICAgICAgICAgICAqIElmIGl0IGZhaWwgdG8gZXhlY3V0ZSBpbiBuZXh0 IDIgdmJsYW5rLCB0aW1lb3V0IGhhcHBlbi4KPiA+ICAgICAgICAgICAgICAgICAgKi8KPiA+ICAg ICAgICAgICAgICAgICBtdGtfY3J0Yy0+Y21kcV92YmxhbmtfY250ID0gMjsKPiA+IC0gICAgICAg ICAgICAgICBtYm94X3NlbmRfbWVzc2FnZShtdGtfY3J0Yy0+Y21kcV9jaGFuLCBjbWRxX2hhbmRs ZSk7Cj4gPiAtICAgICAgICAgICAgICAgbWJveF9jbGllbnRfdHhkb25lKG10a19jcnRjLT5jbWRx X2NoYW4sIDApOwo+ID4gKyAgICAgICAgICAgICAgIG1ib3hfc2VuZF9tZXNzYWdlKG10a19jcnRj LT5jbWRxX2NsaWVudC5jaGFuLCBjbWRxX2hhbmRsZSk7Cj4gPiArICAgICAgICAgICAgICAgbWJv eF9jbGllbnRfdHhkb25lKG10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuLCAwKTsKPiA+ICAgICAg ICAgfQo+ID4gICNlbmRpZgo+ID4gICAgICAgICBtdGtfY3J0Yy0+Y29uZmlnX3VwZGF0aW5nID0g ZmFsc2U7Cj4gPiBAQCAtNTgxLDcgKzU4NCw3IEBAIHN0YXRpYyB2b2lkIG10a19jcnRjX2RkcF9p cnEodm9pZCAqZGF0YSkKPiA+ICAgICAgICAgc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqcHJpdiA9 IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gPgo+ID4gICNpZiBJU19SRUFDSEFCTEUoQ09ORklH X01US19DTURRKQo+ID4gLSAgICAgICBpZiAoIXByaXYtPmRhdGEtPnNoYWRvd19yZWdpc3RlciAm JiAhbXRrX2NydGMtPmNtZHFfY2hhbikKPiA+ICsgICAgICAgaWYgKCFwcml2LT5kYXRhLT5zaGFk b3dfcmVnaXN0ZXIgJiYgIW10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuKQo+ID4gICAgICAgICAg ICAgICAgIG10a19jcnRjX2RkcF9jb25maWcoY3J0YywgTlVMTCk7Cj4gPiAgICAgICAgIGVsc2Ug aWYgKG10a19jcnRjLT5jbWRxX3ZibGFua19jbnQgPiAwICYmIC0tbXRrX2NydGMtPmNtZHFfdmJs YW5rX2NudCA9PSAwKQo+ID4gICAgICAgICAgICAgICAgIERSTV9FUlJPUigibXRrX2NydGMgJWQg Q01EUSBleGVjdXRlIGNvbW1hbmQgdGltZW91dCFcbiIsCj4gPiBAQCAtOTI0LDIwICs5MjcsMjAg QEAgaW50IG10a19kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCj4g PiAgICAgICAgIG11dGV4X2luaXQoJm10a19jcnRjLT5od19sb2NrKTsKPiA+Cj4gPiAgI2lmIElT X1JFQUNIQUJMRShDT05GSUdfTVRLX0NNRFEpCj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2Ns LmRldiA9IG10a19jcnRjLT5tbXN5c19kZXY7Cj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2Ns LnR4X2Jsb2NrID0gZmFsc2U7Cj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2NsLmtub3dzX3R4 ZG9uZSA9IHRydWU7Cj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2NsLnJ4X2NhbGxiYWNrID0g ZGRwX2NtZHFfY2I7Cj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2NoYW4gPQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgbWJveF9yZXF1ZXN0X2NoYW5uZWwoJm10a19jcnRjLT5jbWRxX2Ns LAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9j cnRjX2luZGV4KCZtdGtfY3J0Yy0+YmFzZSkpOwo+ID4gLSAgICAgICBpZiAoSVNfRVJSKG10a19j cnRjLT5jbWRxX2NoYW4pKSB7Cj4gPiArICAgICAgIG10a19jcnRjLT5jbWRxX2NsaWVudC5jbGll bnQuZGV2ID0gbXRrX2NydGMtPm1tc3lzX2RldjsKPiA+ICsgICAgICAgbXRrX2NydGMtPmNtZHFf Y2xpZW50LmNsaWVudC50eF9ibG9jayA9IGZhbHNlOwo+ID4gKyAgICAgICBtdGtfY3J0Yy0+Y21k cV9jbGllbnQuY2xpZW50Lmtub3dzX3R4ZG9uZSA9IHRydWU7Cj4gPiArICAgICAgIG10a19jcnRj LT5jbWRxX2NsaWVudC5jbGllbnQucnhfY2FsbGJhY2sgPSBkZHBfY21kcV9jYjsKPiA+ICsgICAg ICAgbXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4gPQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgbWJveF9yZXF1ZXN0X2NoYW5uZWwoJm10a19jcnRjLT5jbWRxX2NsaWVudC5jbGllbnQsCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm1fY3J0Y19p bmRleCgmbXRrX2NydGMtPmJhc2UpKTsKPiA+ICsgICAgICAgaWYgKElTX0VSUihtdGtfY3J0Yy0+ Y21kcV9jbGllbnQuY2hhbikpIHsKPiA+ICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIm10 a19jcnRjICVkIGZhaWxlZCB0byBjcmVhdGUgbWFpbGJveCBjbGllbnQsIHdyaXRpbmcgcmVnaXN0 ZXIgYnkgQ1BVIG5vd1xuIiwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9jcnRjX2lu ZGV4KCZtdGtfY3J0Yy0+YmFzZSkpOwo+ID4gLSAgICAgICAgICAgICAgIG10a19jcnRjLT5jbWRx X2NoYW4gPSBOVUxMOwo+ID4gKyAgICAgICAgICAgICAgIG10a19jcnRjLT5jbWRxX2NsaWVudC5j aGFuID0gTlVMTDsKPiA+ICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgaWYgKG10a19jcnRjLT5j bWRxX2NoYW4pIHsKPiA+ICsgICAgICAgaWYgKG10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuKSB7 Cj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgocHJp di0+bXV0ZXhfbm9kZSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAibWVkaWF0ZWssZ2NlLWV2ZW50cyIsCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJtX2NydGNfaW5kZXgoJm10a19jcnRjLT5i YXNlKSwKPiA+IEBAIC05NDUsMTcgKzk0OCwxNyBAQCBpbnQgbXRrX2RybV9jcnRjX2NyZWF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwKPiA+ICAgICAgICAgICAgICAgICBpZiAocmV0KSB7 Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIm10a19jcnRjICVkIGZh aWxlZCB0byBnZXQgbWVkaWF0ZWssZ2NlLWV2ZW50cyBwcm9wZXJ0eVxuIiwKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZHJtX2NydGNfaW5kZXgoJm10a19jcnRjLT5iYXNlKSk7 Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBtYm94X2ZyZWVfY2hhbm5lbChtdGtfY3J0Yy0+ Y21kcV9jaGFuKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIG10a19jcnRjLT5jbWRxX2No YW4gPSBOVUxMOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbWJveF9mcmVlX2NoYW5uZWwo bXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg bXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4gPSBOVUxMOwo+ID4gICAgICAgICAgICAgICAgIH0g ZWxzZSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBtdGtfZHJtX2NtZHFfcGt0 X2NyZWF0ZShtdGtfY3J0Yy0+Y21kcV9jaGFuLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtdGtfY3J0Yy0+Y21kcV9oYW5kbGUsCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UEFHRV9TSVpFKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IG10a19kcm1fY21k cV9wa3RfY3JlYXRlKCZtdGtfY3J0Yy0+Y21kcV9jbGllbnQsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbXRrX2NydGMtPmNtZHFfaGFu ZGxlLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUEFHRV9TSVpFKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQpIHsK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyhkZXYsICJtdGtfY3J0 YyAlZCBmYWlsZWQgdG8gY3JlYXRlIGNtZHEgcGFja2V0XG4iLAo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9jcnRjX2luZGV4KCZtdGtfY3J0Yy0+YmFzZSkp Owo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYm94X2ZyZWVfY2hhbm5lbCht dGtfY3J0Yy0+Y21kcV9jaGFuKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bXRrX2NydGMtPmNtZHFfY2hhbiA9IE5VTEw7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1ib3hfZnJlZV9jaGFubmVsKG10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuKTsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRrX2NydGMtPmNtZHFfY2xpZW50LmNo YW4gPSBOVUxMOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICAgICAg ICAgIH0KPiA+ICAgICAgICAgfQo+ID4gLS0KPiA+IDIuMTguMAo+ID4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LW1lZGlhdGVrIG1haWxpbmcg bGlzdApMaW51eC1tZWRpYXRla0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbWVkaWF0ZWsK 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A690C433EF for ; Thu, 30 Sep 2021 13:17:36 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 19C7E61555 for ; Thu, 30 Sep 2021 13:17:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 19C7E61555 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=3RM38LU7v6si5ytxJ2hffv7FIgyzRoV3sBeUDopYeyQ=; b=WC86rQekdstzjn gC0BAGgExxPN6zmZF1DSwix0t2wMLS82TuiSYOsnM0CRMXiEk5eI2X/qOl8Uv/7YIvFZIgbPLDLh5 RW6bkNHiOxmweSR2VItnMovLNhwQQqCoYQvuFGb0mtyPBys3GOTB92tBFu4UfcRCWb67yl1BNULXd T4ziMOTdTefZkLcH1uLRY15A0uQlTBI2a9z/JWoK1Fzr0zKo/+8HOV3bc0eD2Hys9LKX6m25RfIJV 9pZltAI0uiU1qLQ+23vHeSFiph938Z7zC8mITLf2p9k6qBe5m/FfN8tbBbmL4YJ3kkvL6XATDkAvY GlKkjXzphiv1l5StyzIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVvtf-00EOdV-2z; Thu, 30 Sep 2021 13:14:48 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVvqH-00ENgh-Ik; Thu, 30 Sep 2021 13:11:19 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 97521619F8; Thu, 30 Sep 2021 13:11:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1633007476; bh=IPmaOclIoeWRYsf5R3sAnuGbfHT7SkzOGvJojBMY7Mg=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=K5OjOfSE9CMA3QySzNeNnQWoR4E9PJlaMFZgRBsNFXfkpZlfZAuyMDf10Cci+ztu+ AzNc+utT7Zfly4otn0ASlTRfzjsT0yfYkqMxJaNdGYoqYfF9qihjfQ6ldxCmRuGwnE lrTBfwPlI5P7TNsQRUT8Kh51/Npzf+IX8l0p5t/F8mXW+VKLb+jICZMcPpwMt7mWIE NXqQihtDP3bTxsKoz92FkvlrKjMfw0QFOW5bddKW33C5noouQaCDVMk0zAbwzh9eJr fcUGJwTIF2i/iZhVVgcFECGjhfieytwYZLuS6SsEWxk5PY42/4UlHo3Mfb9g8Wz+D5 1aHQZuUOcO6bw== Received: by mail-ed1-f50.google.com with SMTP id s17so21687246edd.8; Thu, 30 Sep 2021 06:11:16 -0700 (PDT) X-Gm-Message-State: AOAM531yFoXJyvD0a2c4IsgkDMI2naO1E+LsCsL7aVXl+ZiUFKWtpEHy ClI1tzYJArVNp+86f82WDNPKBfik702DeGp8LQ== X-Google-Smtp-Source: ABdhPJyBLu5cCwIDZ89ApNeKQU8a74FbPUJTL2QbRzeJ3b6AakIQWNpnxzwBoCNj0EC1GofBryeZzOUZ67VTWdVNNmc= X-Received: by 2002:a05:6402:40c5:: with SMTP id z5mr3938186edb.272.1633007473094; Thu, 30 Sep 2021 06:11:13 -0700 (PDT) MIME-Version: 1.0 References: <20210930024704.6966-1-jason-jh.lin@mediatek.com> <20210930024704.6966-2-jason-jh.lin@mediatek.com> In-Reply-To: From: Chun-Kuang Hu Date: Thu, 30 Sep 2021 21:11:01 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [v2 PATCH 1/3] drm/mediatek: Fix crash at using pkt->cl->chan in cmdq_pkt_finalize To: Enric Balletbo Serra Cc: "jason-jh.lin" , Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger , Yongqiang Niu , dri-devel , "moderated list:ARM/Mediatek SoC support" , Linux ARM , linux-kernel , Hsin-Yi Wang , fshao@chromium.org, "Nancy.Lin" , singo.chang@mediatek.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210930_061117_736633_BB29668B X-CRM114-Status: GOOD ( 34.14 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksIEVucmljOgoKRW5yaWMgQmFsbGV0Ym8gU2VycmEgPGViYWxsZXRib0BnbWFpbC5jb20+IOaW vCAyMDIx5bm0OeaciDMw5pelIOmAseWbmyDkuIvljYgzOjEy5a+r6YGT77yaCj4KPiBIaSBKYXNv biwKPgo+Cj4gTWlzc2F0Z2UgZGUgamFzb24tamgubGluIDxqYXNvbi1qaC5saW5AbWVkaWF0ZWsu Y29tPiBkZWwgZGlhIGRqLiwgMzAKPiBkZSBzZXQuIDIwMjEgYSBsZXMgNDo0NzoKPiA+Cj4gPiBC ZWNhdXNlIG10a19kcm1fY3J0Y19jcmVhdGVfcGt0IGRpZG4ndCBhc3NpZ24gcGt0LT5jbCwgaXQg d2lsbAo+ID4gY3Jhc2ggYXQgdXNpbmcgcGt0LT5jbC0+Y2hhbiBpbiBjbWRxX3BrdF9maW5hbGl6 ZS4KPiA+Cj4gPiBTbyBhZGQgc3RydWN0IGNtZHFfY2xpZW50IGFuZCBsZXQgbXRrX2RybV9jcnRj IGluc3RhbmNlIGRlZmluZQo+ID4gY21kcV9jbGllbnQgYXM6Cj4gPgo+ID4gc3RydWN0IG10a19k cm1fY3J0YyB7Cj4gPiAgICAgICAgIC8qIGNsaWVudCBpbnN0YW5jZSBkYXRhICovCj4gPiAgICAg ICAgIHN0cnVjdCBjbWRxX2NsaWVudCBjbWRxX2NsaWVudDsKPiA+IH07Cj4gPgo+ID4gYW5kIGlu IHJ4X2NhbGxiYWNrIGZ1bmN0aW9uIGNhbiB1c2UgcGt0LT5jbCB0byBnZXQKPiA+IHN0cnVjdCBj bWRxX2NsaWVudC4KPiA+Cj4gPiBGaXhlczogZjRiZTE3Y2Q1YjE0ICgiZHJtL21lZGlhdGVrOiBS ZW1vdmUgc3RydWN0IGNtZHFfY2xpZW50IikKPgo+IExvb2tpbmcgYXQgdGhpcyBwYXRjaHNldCBs b29rcyBsaWtlIHlvdSdyZSBmaXhpbmcgdGhlIGFib3ZlIGNvbW1pdCBieQo+IHJlaW50cm9kdWNp bmcgdGhlICdzdHJ1Y3QgY21kcV9jbGllbnQnIGFnYWluLCB3aGljaCBtYWtlcyB0aGUgYWJvdmUK PiBjb21taXQgYXMgYSBub24tc2Vuc2UgY29tbWl0LiBUaGF0J3MgY29uZnVzaW5nIGFuZCBub3Qg Y2xlYXIuIEknbQo+IHdvbmRlcmluZyBpZiBpdCB3b3VsZG4ndCBiZSBtb3JlIGNsZWFyIGlmIHlv dSBjYW4ganVzdCByZXZlcnQgdGhhdAo+IHBhdGNoLiBUaGVuIGlmIHRoZXJlIGFyZSBtb3JlIGNo YW5nZXMgdGhhdCBuZWVkIHRvIGJlIGRvbmUgZG8gaXQgd2l0aAo+IGEgZm9sbG93IHVwIHBhdGNo IGFuZCByZWFsbHkgZXhwbGFpbiB3aHkgdGhlc2UgY2hhbmdlcyBhcmUgbmVlZGVkLgoKVGhlIHBh dGNoIGY0YmUxN2NkNWIxNCAoImRybS9tZWRpYXRlazogUmVtb3ZlIHN0cnVjdCBjbWRxX2NsaWVu dCIpCmRvZXMgdHdvIHRoaW5ncy4gT25lIGlzIHRvIHJlbW92ZSBzdHJ1Y3QgY21kcV9jbGllbnQs IGFub3RoZXIgb25lIGlzCnRvIGVtYmVkIGNtZHFfY2wKaW4gbXRrX2RybV9jcnRjIChUaGlzIG1l YW5zIHRoZSBwb2ludGVyIG9mIGNtZHFfY2wgY291bGQgYmUgdXNlZCB0bwpmaW5kIHRoZSBwb2lu dGVyIG9mIG10a19kcm1fY3J0YykuIFRoZSBjb3JyZWN0IHdheSB0byBmaXggdGhhdCBwYXRjaApp cyB0byByZW1vdmUgdGhlIGFjY2VzcyB0byBjbWRxX2NsaWVudCBpbiBjbWRxX3BrdF9maW5hbGl6 ZSgpLCBidXQKdGhhdCB3b3VsZCBiZSBhIGxvbmcgdGVybSBwcm9jZXNzLiBUaGUgc2ltcGxlIHdh eSBpcyB0byByZXZlcnQgdGhhdApwYXRjaCwgYnV0IHRoZSBvdGhlciBwYXRjaGVzIGRlcGVuZCBv biBlbWJlZGRpbmcgY21kcV9jbCBpbgptdGtfZHJtX2NydGMuIFNvIHRoaXMgcGF0Y2gganVzdCBy ZXZlcnQgdGhlIHJlbW92aW5nIG9mIHN0cnVjdApjbWRxX2NsaWVudCBidXQga2VlcCBlbWJlZGRp bmcgY21kcV9jbCBpbiBtdGtfZHJtX2NydGMuCgpSZWdhcmRzLApDaHVuLUt1YW5nLgoKPgo+IFRo YW5rcywKPiAgIEVucmljCj4KPgo+ID4gU2lnbmVkLW9mZi1ieTogamFzb24tamgubGluIDxqYXNv bi1qaC5saW5AbWVkaWF0ZWsuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1fY3J0Yy5jIHwgNzMgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ID4gIDEg ZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKPiA+Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jIGIvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jCj4gPiBpbmRleCA1ZjgxNDg5ZmM2 MGMuLjQxMWQ5OWZjYmI4ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHJtX2NydGMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fY3J0Yy5jCj4gPiBAQCAtNTIsOCArNTIsNyBAQCBzdHJ1Y3QgbXRrX2RybV9jcnRjIHsKPiA+ ICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nX2FzeW5jX3Bs YW5lczsKPiA+Cj4gPiAgI2lmIElTX1JFQUNIQUJMRShDT05GSUdfTVRLX0NNRFEpCj4gPiAtICAg ICAgIHN0cnVjdCBtYm94X2NsaWVudCAgICAgICAgICAgICAgY21kcV9jbDsKPiA+IC0gICAgICAg c3RydWN0IG1ib3hfY2hhbiAgICAgICAgICAgICAgICAqY21kcV9jaGFuOwo+ID4gKyAgICAgICBz dHJ1Y3QgY21kcV9jbGllbnQgICAgICAgICAgICAgIGNtZHFfY2xpZW50Owo+ID4gICAgICAgICBz dHJ1Y3QgY21kcV9wa3QgICAgICAgICAgICAgICAgIGNtZHFfaGFuZGxlOwo+ID4gICAgICAgICB1 MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHFfZXZlbnQ7Cj4gPiAgICAgICAgIHUz MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kcV92YmxhbmtfY250Owo+ID4gQEAgLTIy Nyw4ICsyMjYsOCBAQCBzdHJ1Y3QgbXRrX2RkcF9jb21wICptdGtfZHJtX2RkcF9jb21wX2Zvcl9w bGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgfQo+ID4KPiA+ICAjaWYgSVNfUkVBQ0hB QkxFKENPTkZJR19NVEtfQ01EUSkKPiA+IC1zdGF0aWMgaW50IG10a19kcm1fY21kcV9wa3RfY3Jl YXRlKHN0cnVjdCBtYm94X2NoYW4gKmNoYW4sIHN0cnVjdCBjbWRxX3BrdCAqcGt0LAo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCj4gPiArc3RhdGlj IGludCBtdGtfZHJtX2NtZHFfcGt0X2NyZWF0ZShzdHJ1Y3QgY21kcV9jbGllbnQgKmNsaWVudCwg c3RydWN0IGNtZHFfcGt0ICpwa3QsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBzaXplKQo+ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IGRldmljZSAqZGV2Owo+ ID4gICAgICAgICBkbWFfYWRkcl90IGRtYV9hZGRyOwo+ID4gQEAgLTIzOSw4ICsyMzgsOSBAQCBz dGF0aWMgaW50IG10a19kcm1fY21kcV9wa3RfY3JlYXRlKHN0cnVjdCBtYm94X2NoYW4gKmNoYW4s IHN0cnVjdCBjbWRxX3BrdCAqcGt0LAo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVN Owo+ID4gICAgICAgICB9Cj4gPiAgICAgICAgIHBrdC0+YnVmX3NpemUgPSBzaXplOwo+ID4gKyAg ICAgICBwa3QtPmNsID0gKHZvaWQgKiljbGllbnQ7Cj4gPgo+ID4gLSAgICAgICBkZXYgPSBjaGFu LT5tYm94LT5kZXY7Cj4gPiArICAgICAgIGRldiA9IGNsaWVudC0+Y2hhbi0+bWJveC0+ZGV2Owo+ ID4gICAgICAgICBkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKGRldiwgcGt0LT52YV9iYXNlLCBw a3QtPmJ1Zl9zaXplLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9U T19ERVZJQ0UpOwo+ID4gICAgICAgICBpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfYWRk cikpIHsKPiA+IEBAIC0yNTUsOSArMjU1LDExIEBAIHN0YXRpYyBpbnQgbXRrX2RybV9jbWRxX3Br dF9jcmVhdGUoc3RydWN0IG1ib3hfY2hhbiAqY2hhbiwgc3RydWN0IGNtZHFfcGt0ICpwa3QsCj4g PiAgICAgICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiAtc3RhdGljIHZvaWQgbXRrX2RybV9j bWRxX3BrdF9kZXN0cm95KHN0cnVjdCBtYm94X2NoYW4gKmNoYW4sIHN0cnVjdCBjbWRxX3BrdCAq cGt0KQo+ID4gK3N0YXRpYyB2b2lkIG10a19kcm1fY21kcV9wa3RfZGVzdHJveShzdHJ1Y3QgY21k cV9wa3QgKnBrdCkKPiA+ICB7Cj4gPiAtICAgICAgIGRtYV91bm1hcF9zaW5nbGUoY2hhbi0+bWJv eC0+ZGV2LCBwa3QtPnBhX2Jhc2UsIHBrdC0+YnVmX3NpemUsCj4gPiArICAgICAgIHN0cnVjdCBj bWRxX2NsaWVudCAqY2xpZW50ID0gKHN0cnVjdCBjbWRxX2NsaWVudCAqKXBrdC0+Y2w7Cj4gPiAr Cj4gPiArICAgICAgIGRtYV91bm1hcF9zaW5nbGUoY2xpZW50LT5jaGFuLT5tYm94LT5kZXYsIHBr dC0+cGFfYmFzZSwgcGt0LT5idWZfc2l6ZSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICBE TUFfVE9fREVWSUNFKTsKPiA+ICAgICAgICAga2ZyZWUocGt0LT52YV9iYXNlKTsKPiA+ICAgICAg ICAga2ZyZWUocGt0KTsKPiA+IEBAIC0yNjUsOCArMjY3LDkgQEAgc3RhdGljIHZvaWQgbXRrX2Ry bV9jbWRxX3BrdF9kZXN0cm95KHN0cnVjdCBtYm94X2NoYW4gKmNoYW4sIHN0cnVjdCBjbWRxX3Br dCAqcGsKPiA+Cj4gPiAgc3RhdGljIHZvaWQgZGRwX2NtZHFfY2Ioc3RydWN0IG1ib3hfY2xpZW50 ICpjbCwgdm9pZCAqbXNzZykKPiA+ICB7Cj4gPiAtICAgICAgIHN0cnVjdCBtdGtfZHJtX2NydGMg Km10a19jcnRjID0gY29udGFpbmVyX29mKGNsLCBzdHJ1Y3QgbXRrX2RybV9jcnRjLCBjbWRxX2Ns KTsKPiA+ICAgICAgICAgc3RydWN0IGNtZHFfY2JfZGF0YSAqZGF0YSA9IG1zc2c7Cj4gPiArICAg ICAgIHN0cnVjdCBjbWRxX2NsaWVudCAqY21kcV9jbCA9IGNvbnRhaW5lcl9vZihjbCwgc3RydWN0 IGNtZHFfY2xpZW50LCBjbGllbnQpOwo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2RybV9jcnRjICpt dGtfY3J0YyA9IGNvbnRhaW5lcl9vZihjbWRxX2NsLCBzdHJ1Y3QgbXRrX2RybV9jcnRjLCBjbWRx X2NsaWVudCk7Cj4gPiAgICAgICAgIHN0cnVjdCBtdGtfY3J0Y19zdGF0ZSAqc3RhdGU7Cj4gPiAg ICAgICAgIHVuc2lnbmVkIGludCBpOwo+ID4KPiA+IEBAIC0yOTksNyArMzAyLDcgQEAgc3RhdGlj IHZvaWQgZGRwX2NtZHFfY2Ioc3RydWN0IG1ib3hfY2xpZW50ICpjbCwgdm9pZCAqbXNzZykKPiA+ ICAgICAgICAgfQo+ID4KPiA+ICAgICAgICAgbXRrX2NydGMtPmNtZHFfdmJsYW5rX2NudCA9IDA7 Cj4gPiAtICAgICAgIG10a19kcm1fY21kcV9wa3RfZGVzdHJveShtdGtfY3J0Yy0+Y21kcV9jaGFu LCBkYXRhLT5wa3QpOwo+ID4gKyAgICAgICBtdGtfZHJtX2NtZHFfcGt0X2Rlc3Ryb3koZGF0YS0+ cGt0KTsKPiA+ICB9Cj4gPiAgI2VuZGlmCj4gPgo+ID4gQEAgLTU1MCwyNCArNTUzLDI0IEBAIHN0 YXRpYyB2b2lkIG10a19kcm1fY3J0Y191cGRhdGVfY29uZmlnKHN0cnVjdCBtdGtfZHJtX2NydGMg Km10a19jcnRjLAo+ID4gICAgICAgICAgICAgICAgIG10a19tdXRleF9yZWxlYXNlKG10a19jcnRj LT5tdXRleCk7Cj4gPiAgICAgICAgIH0KPiA+ICAjaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19NVEtf Q01EUSkKPiA+IC0gICAgICAgaWYgKG10a19jcnRjLT5jbWRxX2NoYW4pIHsKPiA+IC0gICAgICAg ICAgICAgICBtYm94X2ZsdXNoKG10a19jcnRjLT5jbWRxX2NoYW4sIDIwMDApOwo+ID4gKyAgICAg ICBpZiAobXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4pIHsKPiA+ICsgICAgICAgICAgICAgICBt Ym94X2ZsdXNoKG10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuLCAyMDAwKTsKPiA+ICAgICAgICAg ICAgICAgICBjbWRxX2hhbmRsZS0+Y21kX2J1Zl9zaXplID0gMDsKPiA+ICAgICAgICAgICAgICAg ICBjbWRxX3BrdF9jbGVhcl9ldmVudChjbWRxX2hhbmRsZSwgbXRrX2NydGMtPmNtZHFfZXZlbnQp Owo+ID4gICAgICAgICAgICAgICAgIGNtZHFfcGt0X3dmZShjbWRxX2hhbmRsZSwgbXRrX2NydGMt PmNtZHFfZXZlbnQsIGZhbHNlKTsKPiA+ICAgICAgICAgICAgICAgICBtdGtfY3J0Y19kZHBfY29u ZmlnKGNydGMsIGNtZHFfaGFuZGxlKTsKPiA+ICAgICAgICAgICAgICAgICBjbWRxX3BrdF9maW5h bGl6ZShjbWRxX2hhbmRsZSk7Cj4gPiAtICAgICAgICAgICAgICAgZG1hX3N5bmNfc2luZ2xlX2Zv cl9kZXZpY2UobXRrX2NydGMtPmNtZHFfY2hhbi0+bWJveC0+ZGV2LAo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRxX2hhbmRsZS0+cGFfYmFzZSwKPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kcV9oYW5kbGUt PmNtZF9idWZfc2l6ZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRE1BX1RPX0RFVklDRSk7Cj4gPiArICAgICAgICAgICAgICAgZG1hX3N5bmNfc2luZ2xl X2Zvcl9kZXZpY2UobXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4tPm1ib3gtPmRldiwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRxX2hhbmRsZS0+cGFf YmFzZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRx X2hhbmRsZS0+Y21kX2J1Zl9zaXplLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERNQV9UT19ERVZJQ0UpOwo+ID4gICAgICAgICAgICAgICAgIC8qCj4gPiAg ICAgICAgICAgICAgICAgICogQ01EUSBjb21tYW5kIHNob3VsZCBleGVjdXRlIGluIG5leHQgdmJs YW5rLAo+ID4gICAgICAgICAgICAgICAgICAqIElmIGl0IGZhaWwgdG8gZXhlY3V0ZSBpbiBuZXh0 IDIgdmJsYW5rLCB0aW1lb3V0IGhhcHBlbi4KPiA+ICAgICAgICAgICAgICAgICAgKi8KPiA+ICAg ICAgICAgICAgICAgICBtdGtfY3J0Yy0+Y21kcV92YmxhbmtfY250ID0gMjsKPiA+IC0gICAgICAg ICAgICAgICBtYm94X3NlbmRfbWVzc2FnZShtdGtfY3J0Yy0+Y21kcV9jaGFuLCBjbWRxX2hhbmRs ZSk7Cj4gPiAtICAgICAgICAgICAgICAgbWJveF9jbGllbnRfdHhkb25lKG10a19jcnRjLT5jbWRx X2NoYW4sIDApOwo+ID4gKyAgICAgICAgICAgICAgIG1ib3hfc2VuZF9tZXNzYWdlKG10a19jcnRj LT5jbWRxX2NsaWVudC5jaGFuLCBjbWRxX2hhbmRsZSk7Cj4gPiArICAgICAgICAgICAgICAgbWJv eF9jbGllbnRfdHhkb25lKG10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuLCAwKTsKPiA+ICAgICAg ICAgfQo+ID4gICNlbmRpZgo+ID4gICAgICAgICBtdGtfY3J0Yy0+Y29uZmlnX3VwZGF0aW5nID0g ZmFsc2U7Cj4gPiBAQCAtNTgxLDcgKzU4NCw3IEBAIHN0YXRpYyB2b2lkIG10a19jcnRjX2RkcF9p cnEodm9pZCAqZGF0YSkKPiA+ICAgICAgICAgc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqcHJpdiA9 IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gPgo+ID4gICNpZiBJU19SRUFDSEFCTEUoQ09ORklH X01US19DTURRKQo+ID4gLSAgICAgICBpZiAoIXByaXYtPmRhdGEtPnNoYWRvd19yZWdpc3RlciAm JiAhbXRrX2NydGMtPmNtZHFfY2hhbikKPiA+ICsgICAgICAgaWYgKCFwcml2LT5kYXRhLT5zaGFk b3dfcmVnaXN0ZXIgJiYgIW10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuKQo+ID4gICAgICAgICAg ICAgICAgIG10a19jcnRjX2RkcF9jb25maWcoY3J0YywgTlVMTCk7Cj4gPiAgICAgICAgIGVsc2Ug aWYgKG10a19jcnRjLT5jbWRxX3ZibGFua19jbnQgPiAwICYmIC0tbXRrX2NydGMtPmNtZHFfdmJs YW5rX2NudCA9PSAwKQo+ID4gICAgICAgICAgICAgICAgIERSTV9FUlJPUigibXRrX2NydGMgJWQg Q01EUSBleGVjdXRlIGNvbW1hbmQgdGltZW91dCFcbiIsCj4gPiBAQCAtOTI0LDIwICs5MjcsMjAg QEAgaW50IG10a19kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCj4g PiAgICAgICAgIG11dGV4X2luaXQoJm10a19jcnRjLT5od19sb2NrKTsKPiA+Cj4gPiAgI2lmIElT X1JFQUNIQUJMRShDT05GSUdfTVRLX0NNRFEpCj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2Ns LmRldiA9IG10a19jcnRjLT5tbXN5c19kZXY7Cj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2Ns LnR4X2Jsb2NrID0gZmFsc2U7Cj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2NsLmtub3dzX3R4 ZG9uZSA9IHRydWU7Cj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2NsLnJ4X2NhbGxiYWNrID0g ZGRwX2NtZHFfY2I7Cj4gPiAtICAgICAgIG10a19jcnRjLT5jbWRxX2NoYW4gPQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgbWJveF9yZXF1ZXN0X2NoYW5uZWwoJm10a19jcnRjLT5jbWRxX2Ns LAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9j cnRjX2luZGV4KCZtdGtfY3J0Yy0+YmFzZSkpOwo+ID4gLSAgICAgICBpZiAoSVNfRVJSKG10a19j cnRjLT5jbWRxX2NoYW4pKSB7Cj4gPiArICAgICAgIG10a19jcnRjLT5jbWRxX2NsaWVudC5jbGll bnQuZGV2ID0gbXRrX2NydGMtPm1tc3lzX2RldjsKPiA+ICsgICAgICAgbXRrX2NydGMtPmNtZHFf Y2xpZW50LmNsaWVudC50eF9ibG9jayA9IGZhbHNlOwo+ID4gKyAgICAgICBtdGtfY3J0Yy0+Y21k cV9jbGllbnQuY2xpZW50Lmtub3dzX3R4ZG9uZSA9IHRydWU7Cj4gPiArICAgICAgIG10a19jcnRj LT5jbWRxX2NsaWVudC5jbGllbnQucnhfY2FsbGJhY2sgPSBkZHBfY21kcV9jYjsKPiA+ICsgICAg ICAgbXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4gPQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgbWJveF9yZXF1ZXN0X2NoYW5uZWwoJm10a19jcnRjLT5jbWRxX2NsaWVudC5jbGllbnQsCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm1fY3J0Y19p bmRleCgmbXRrX2NydGMtPmJhc2UpKTsKPiA+ICsgICAgICAgaWYgKElTX0VSUihtdGtfY3J0Yy0+ Y21kcV9jbGllbnQuY2hhbikpIHsKPiA+ICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIm10 a19jcnRjICVkIGZhaWxlZCB0byBjcmVhdGUgbWFpbGJveCBjbGllbnQsIHdyaXRpbmcgcmVnaXN0 ZXIgYnkgQ1BVIG5vd1xuIiwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9jcnRjX2lu ZGV4KCZtdGtfY3J0Yy0+YmFzZSkpOwo+ID4gLSAgICAgICAgICAgICAgIG10a19jcnRjLT5jbWRx X2NoYW4gPSBOVUxMOwo+ID4gKyAgICAgICAgICAgICAgIG10a19jcnRjLT5jbWRxX2NsaWVudC5j aGFuID0gTlVMTDsKPiA+ICAgICAgICAgfQo+ID4KPiA+IC0gICAgICAgaWYgKG10a19jcnRjLT5j bWRxX2NoYW4pIHsKPiA+ICsgICAgICAgaWYgKG10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuKSB7 Cj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgocHJp di0+bXV0ZXhfbm9kZSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAibWVkaWF0ZWssZ2NlLWV2ZW50cyIsCj4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJtX2NydGNfaW5kZXgoJm10a19jcnRjLT5i YXNlKSwKPiA+IEBAIC05NDUsMTcgKzk0OCwxNyBAQCBpbnQgbXRrX2RybV9jcnRjX2NyZWF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwKPiA+ICAgICAgICAgICAgICAgICBpZiAocmV0KSB7 Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIm10a19jcnRjICVkIGZh aWxlZCB0byBnZXQgbWVkaWF0ZWssZ2NlLWV2ZW50cyBwcm9wZXJ0eVxuIiwKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZHJtX2NydGNfaW5kZXgoJm10a19jcnRjLT5iYXNlKSk7 Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBtYm94X2ZyZWVfY2hhbm5lbChtdGtfY3J0Yy0+ Y21kcV9jaGFuKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIG10a19jcnRjLT5jbWRxX2No YW4gPSBOVUxMOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbWJveF9mcmVlX2NoYW5uZWwo bXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4pOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg bXRrX2NydGMtPmNtZHFfY2xpZW50LmNoYW4gPSBOVUxMOwo+ID4gICAgICAgICAgICAgICAgIH0g ZWxzZSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBtdGtfZHJtX2NtZHFfcGt0 X2NyZWF0ZShtdGtfY3J0Yy0+Y21kcV9jaGFuLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtdGtfY3J0Yy0+Y21kcV9oYW5kbGUsCj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UEFHRV9TSVpFKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IG10a19kcm1fY21k cV9wa3RfY3JlYXRlKCZtdGtfY3J0Yy0+Y21kcV9jbGllbnQsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbXRrX2NydGMtPmNtZHFfaGFu ZGxlLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUEFHRV9TSVpFKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQpIHsK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyhkZXYsICJtdGtfY3J0 YyAlZCBmYWlsZWQgdG8gY3JlYXRlIGNtZHEgcGFja2V0XG4iLAo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9jcnRjX2luZGV4KCZtdGtfY3J0Yy0+YmFzZSkp Owo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYm94X2ZyZWVfY2hhbm5lbCht dGtfY3J0Yy0+Y21kcV9jaGFuKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bXRrX2NydGMtPmNtZHFfY2hhbiA9IE5VTEw7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1ib3hfZnJlZV9jaGFubmVsKG10a19jcnRjLT5jbWRxX2NsaWVudC5jaGFuKTsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRrX2NydGMtPmNtZHFfY2xpZW50LmNo YW4gPSBOVUxMOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gICAgICAgICAgICAg ICAgIH0KPiA+ICAgICAgICAgfQo+ID4gLS0KPiA+IDIuMTguMAo+ID4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK