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=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED 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 4E790C43219 for ; Wed, 1 May 2019 05:55:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E046C20866 for ; Wed, 1 May 2019 05:55:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=jms.id.au header.i=@jms.id.au header.b="POuz/+h9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726173AbfEAFzU (ORCPT ); Wed, 1 May 2019 01:55:20 -0400 Received: from mail-qt1-f194.google.com ([209.85.160.194]:41853 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726071AbfEAFzT (ORCPT ); Wed, 1 May 2019 01:55:19 -0400 Received: by mail-qt1-f194.google.com with SMTP id f25so19051974qtc.8 for ; Tue, 30 Apr 2019 22:55:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jms.id.au; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=vh2Ozgk0VmlPQd7PW8aAJh/gHpZAsKkiYtAyIwnbr/E=; b=POuz/+h9A6e9HtZJ2mOy0y+TPu6sTG1JgVQfIh14dO+62rxifGgdHrT5qY81Ewd3yW jkgCoBr2ZZQDjWi8yXm4oBs5jadxHRAJDp8ciLb15BxwZ1tP3xT3u2/RAbwk/VZVmbmo +fwMoqpJ5hGr2IudZxWQIe5RprBgIJjGqGFHo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=vh2Ozgk0VmlPQd7PW8aAJh/gHpZAsKkiYtAyIwnbr/E=; b=Dbb0UEi6wpFtARviTXFjnvKbmXx9wbg5Q2A5i+rMSOuifsp+ZlBwqHvtzvdDO6BOp+ t3dY4HPSmAr+xG+EVDFlP2128VnRTd3pI47StuZueQXc94O5cBs1MWCTTJdLbN7NZFmi MTPh+2lOaVjAvCj7O2qABItS5XUF9JSRVh5lLXQkN2bWptc60M9O805Ax+dt3A3hwGe7 pd46sJxwSfQJGCRizlpyBqGRceTcNhOiAKBXJmHSm8Ip4P2k3FHr4bJttBxdK7ZduVxg eS7PQWClN/Y4U5rogfVnPIiqSKHkpN3sJ2NTjZapf/1I56mRs9WbicAl4AOzmYxv3ZCD AeDw== X-Gm-Message-State: APjAAAWZOqcJ/Mscj4iaORzii0Pb7sBnlPSzDiHk9qVZ9R2K0JCTysQf p36ou/OcJMvlwN6Q3001SQ2tcSAuBTf5VNqNUHw= X-Google-Smtp-Source: APXvYqxonRKsHrdfDd26bCtYo5fYsPcn3rMvyjaIMrcN1fbhQt90CyHYfzk0ETV5lzOVeHWMy1Qs006deJEcWgUr4oU= X-Received: by 2002:a0c:948e:: with SMTP id j14mr27304455qvj.245.1556690118487; Tue, 30 Apr 2019 22:55:18 -0700 (PDT) MIME-Version: 1.0 References: <20190116220154.1026171-1-vijaykhemka@fb.com> <1547787502.2061444.1637712576.1F1E21B4@webmail.messagingengine.com> In-Reply-To: From: Joel Stanley Date: Wed, 1 May 2019 05:55:07 +0000 Message-ID: Subject: Re: [PATCH v2] misc: aspeed-lpc-ctrl: make parameter optional To: Vijay Khemka , Greg Kroah-Hartman Cc: Andrew Jeffery , Arnd Bergmann , "linux-arm-kernel@lists.infradead.org" , "linux-aspeed@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" , "openbmc @ lists . ozlabs . org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 18 Jan 2019 at 20:12, Vijay Khemka wrote: > > Hi Andrew, > Thanks for this review, I will have a follow up patch for this return val= ues. Did you send a follow up patch to fix the return values? Greg, is there any reason why you did not merge this one? 5.2 will have device trees that depend on this patch's behavior. Cheers, Joel > =EF=BB=BFOn 1/17/19, 8:58 PM, "Andrew Jeffery" wrote: > > Hi Vijay, > > Thanks for doing the work to fix the driver. Some minor queries/point= s > below. > > On Thu, 17 Jan 2019, at 08:31, Vijay Khemka wrote: > > Makiing memory-region and flash as optional parameter in device > > tree if user needs to use these parameter through ioctl then > > need to define in devicetree. > > > > Signed-off-by: Vijay Khemka > > --- > > drivers/misc/aspeed-lpc-ctrl.c | 58 +++++++++++++++++++++---------= ---- > > 1 file changed, 36 insertions(+), 22 deletions(-) > > > > diff --git a/drivers/misc/aspeed-lpc-ctrl.c b/drivers/misc/aspeed-l= pc- > > ctrl.c > > index a024f8042259..332210e06e98 100644 > > --- a/drivers/misc/aspeed-lpc-ctrl.c > > +++ b/drivers/misc/aspeed-lpc-ctrl.c > > @@ -68,6 +68,7 @@ static long aspeed_lpc_ctrl_ioctl(struct file *fi= le, > > unsigned int cmd, > > unsigned long param) > > { > > struct aspeed_lpc_ctrl *lpc_ctrl =3D file_aspeed_lpc_ctrl(file); > > + struct device *dev =3D file->private_data; > > void __user *p =3D (void __user *)param; > > struct aspeed_lpc_ctrl_mapping map; > > u32 addr; > > @@ -90,6 +91,12 @@ static long aspeed_lpc_ctrl_ioctl(struct file *f= ile, > > unsigned int cmd, > > if (map.window_id !=3D 0) > > return -EINVAL; > > > > + /* If memory-region is not described in device tree */ > > + if (!lpc_ctrl->mem_size) { > > + dev_err(dev, "Didn't find reserved memory\n"); > > + return -EINVAL; > > I feel like EINVAL isn't quite right - it's pretty generic, and the p= arameter > value changes its validity with the devicetree context. My gut instin= ct > would be to use EINVAL for parameter values that violate assumptions > of the driver rather than violate configuration of the driver. Maybe = ENXIO > ("No such device or address") is an improvement: "I can't map that de= vice > because there's no such device or address"? > > > + } > > + > > map.size =3D lpc_ctrl->mem_size; > > > > return copy_to_user(p, &map, sizeof(map)) ? -EFAULT : 0; > > @@ -126,9 +133,18 @@ static long aspeed_lpc_ctrl_ioctl(struct file > > *file, unsigned int cmd, > > return -EINVAL; > > > > if (map.window_type =3D=3D ASPEED_LPC_CTRL_WINDOW_FLASH) = { > > + if (!lpc_ctrl->pnor_size) { > > + dev_err(dev, "Didn't find host pnor flash= \n"); > > + return -EINVAL; > > See the error code discussion above. Also, this is userspace's error = not > the kernel's, so I think dev_err() is a bit harsh. Probably best to j= ust let > userspace log the error if it thinks the it is concerning. > > > + } > > addr =3D lpc_ctrl->pnor_base; > > size =3D lpc_ctrl->pnor_size; > > } else if (map.window_type =3D=3D ASPEED_LPC_CTRL_WINDOW_= MEMORY) { > > + /* If memory-region is not described in device tr= ee */ > > + if (!lpc_ctrl->mem_size) { > > + dev_err(dev, "Didn't find reserved memory= \n"); > > + return -EINVAL; > > as above. > > > + } > > addr =3D lpc_ctrl->mem_base; > > size =3D lpc_ctrl->mem_size; > > } else { > > @@ -196,17 +212,17 @@ static int aspeed_lpc_ctrl_probe(struct > > platform_device *pdev) > > if (!lpc_ctrl) > > return -ENOMEM; > > > > + /* If flash is described in device tree then store */ > > node =3D of_parse_phandle(dev->of_node, "flash", 0); > > if (!node) { > > - dev_err(dev, "Didn't find host pnor flash node\n"); > > - return -ENODEV; > > - } > > - > > - rc =3D of_address_to_resource(node, 1, &resm); > > - of_node_put(node); > > - if (rc) { > > - dev_err(dev, "Couldn't address to resource for flash\n"); > > - return rc; > > + dev_dbg(dev, "Didn't find host pnor flash node\n"); > > + } else { > > + rc =3D of_address_to_resource(node, 1, &resm); > > + of_node_put(node); > > + if (rc) { > > + dev_err(dev, "Couldn't address to resource for fl= ash\n"); > > + return rc; > > + } > > } > > > > lpc_ctrl->pnor_size =3D resource_size(&resm); > > @@ -214,22 +230,22 @@ static int aspeed_lpc_ctrl_probe(struct > > platform_device *pdev) > > > > dev_set_drvdata(&pdev->dev, lpc_ctrl); > > > > + /* If memory-region is described in device tree then store */ > > node =3D of_parse_phandle(dev->of_node, "memory-region", 0); > > if (!node) { > > - dev_err(dev, "Didn't find reserved memory\n"); > > - return -EINVAL; > > - } > > + dev_dbg(dev, "Didn't find reserved memory\n"); > > + } else { > > + rc =3D of_address_to_resource(node, 0, &resm); > > + of_node_put(node); > > + if (rc) { > > + dev_err(dev, "Couldn't address to resource for re= served memory\n"); > > + return -ENOMEM; > > Wow, I think this is an abuse of ENOMEM. Its description is "Out of m= emory" > which doesn't really reflect the problem here. > > Not really your fault though, maybe we'll fix that with some follow-u= p patches. > > Cheers, > > Andrew > > > + } > > > > - rc =3D of_address_to_resource(node, 0, &resm); > > - of_node_put(node); > > - if (rc) { > > - dev_err(dev, "Couldn't address to resource for reserved m= emory\n"); > > - return -ENOMEM; > > + lpc_ctrl->mem_size =3D resource_size(&resm); > > + lpc_ctrl->mem_base =3D resm.start; > > } > > > > - lpc_ctrl->mem_size =3D resource_size(&resm); > > - lpc_ctrl->mem_base =3D resm.start; > > - > > lpc_ctrl->regmap =3D syscon_node_to_regmap( > > pdev->dev.parent->of_node); > > if (IS_ERR(lpc_ctrl->regmap)) { > > @@ -258,8 +274,6 @@ static int aspeed_lpc_ctrl_probe(struct > > platform_device *pdev) > > goto err; > > } > > > > - dev_info(dev, "Loaded at %pr\n", &resm); > > - > > return 0; > > > > err: > > -- > > 2.17.1 > > > > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Authentication-Results: lists.ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::841; helo=mail-qt1-x841.google.com; envelope-from=joel.stan@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=jms.id.au Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; secure) header.d=jms.id.au header.i=@jms.id.au header.b="POuz/+h9"; dkim-atps=neutral Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 44v70V2cKJzDqC0; Wed, 1 May 2019 15:55:22 +1000 (AEST) Received: by mail-qt1-x841.google.com with SMTP id c35so19097951qtk.3; Tue, 30 Apr 2019 22:55:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jms.id.au; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=vh2Ozgk0VmlPQd7PW8aAJh/gHpZAsKkiYtAyIwnbr/E=; b=POuz/+h9A6e9HtZJ2mOy0y+TPu6sTG1JgVQfIh14dO+62rxifGgdHrT5qY81Ewd3yW jkgCoBr2ZZQDjWi8yXm4oBs5jadxHRAJDp8ciLb15BxwZ1tP3xT3u2/RAbwk/VZVmbmo +fwMoqpJ5hGr2IudZxWQIe5RprBgIJjGqGFHo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=vh2Ozgk0VmlPQd7PW8aAJh/gHpZAsKkiYtAyIwnbr/E=; b=ANNGWB9UDXTWxC6EHoFE+uWuEDWSpSkwUWg8ytIT9Pn50XNtRBvd0ovUqzgP4PDF5K nCTkZSb84j4GHEC6v+6fpfAu+Phxd5RNnx2SRLRDaiI0PkD1MxqGExb3vY+cNUTa3JVl oTFQdW3qWqgMxT+EZqaatvoixqP9v3Y9YrQ59PQQeHnwyB7okKeNI85NWzRWQPNhKLPd PCSI1odHkxr9L2A9etLCsrQs4iapzroHG98+qEIik5rXZ3NaOYSzLMJmi1Ey5aY8CdDD kvM5vJkj2nLWOrgks0MZ4FHX9jreJo0I3dQ9GoKXTwry7Xb+y4awdEErIBCrFUfDY/Id wcIQ== X-Gm-Message-State: APjAAAVgoLYr2adHO7ox8emiBwNQxGnM52/JzrAJG06smv9Mm1JqGO4v ZTnAMajl4J2aVuw0L+xdIArIFIllju2F/H6zRRg= X-Google-Smtp-Source: APXvYqxonRKsHrdfDd26bCtYo5fYsPcn3rMvyjaIMrcN1fbhQt90CyHYfzk0ETV5lzOVeHWMy1Qs006deJEcWgUr4oU= X-Received: by 2002:a0c:948e:: with SMTP id j14mr27304455qvj.245.1556690118487; Tue, 30 Apr 2019 22:55:18 -0700 (PDT) MIME-Version: 1.0 References: <20190116220154.1026171-1-vijaykhemka@fb.com> <1547787502.2061444.1637712576.1F1E21B4@webmail.messagingengine.com> In-Reply-To: From: Joel Stanley Date: Wed, 1 May 2019 05:55:07 +0000 Message-ID: Subject: Re: [PATCH v2] misc: aspeed-lpc-ctrl: make parameter optional To: Vijay Khemka , Greg Kroah-Hartman Cc: Andrew Jeffery , Arnd Bergmann , "linux-arm-kernel@lists.infradead.org" , "linux-aspeed@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" , "openbmc @ lists . ozlabs . org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: openbmc@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development list for OpenBMC List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 May 2019 05:55:23 -0000 On Fri, 18 Jan 2019 at 20:12, Vijay Khemka wrote: > > Hi Andrew, > Thanks for this review, I will have a follow up patch for this return val= ues. Did you send a follow up patch to fix the return values? Greg, is there any reason why you did not merge this one? 5.2 will have device trees that depend on this patch's behavior. Cheers, Joel > =EF=BB=BFOn 1/17/19, 8:58 PM, "Andrew Jeffery" wrote: > > Hi Vijay, > > Thanks for doing the work to fix the driver. Some minor queries/point= s > below. > > On Thu, 17 Jan 2019, at 08:31, Vijay Khemka wrote: > > Makiing memory-region and flash as optional parameter in device > > tree if user needs to use these parameter through ioctl then > > need to define in devicetree. > > > > Signed-off-by: Vijay Khemka > > --- > > drivers/misc/aspeed-lpc-ctrl.c | 58 +++++++++++++++++++++---------= ---- > > 1 file changed, 36 insertions(+), 22 deletions(-) > > > > diff --git a/drivers/misc/aspeed-lpc-ctrl.c b/drivers/misc/aspeed-l= pc- > > ctrl.c > > index a024f8042259..332210e06e98 100644 > > --- a/drivers/misc/aspeed-lpc-ctrl.c > > +++ b/drivers/misc/aspeed-lpc-ctrl.c > > @@ -68,6 +68,7 @@ static long aspeed_lpc_ctrl_ioctl(struct file *fi= le, > > unsigned int cmd, > > unsigned long param) > > { > > struct aspeed_lpc_ctrl *lpc_ctrl =3D file_aspeed_lpc_ctrl(file); > > + struct device *dev =3D file->private_data; > > void __user *p =3D (void __user *)param; > > struct aspeed_lpc_ctrl_mapping map; > > u32 addr; > > @@ -90,6 +91,12 @@ static long aspeed_lpc_ctrl_ioctl(struct file *f= ile, > > unsigned int cmd, > > if (map.window_id !=3D 0) > > return -EINVAL; > > > > + /* If memory-region is not described in device tree */ > > + if (!lpc_ctrl->mem_size) { > > + dev_err(dev, "Didn't find reserved memory\n"); > > + return -EINVAL; > > I feel like EINVAL isn't quite right - it's pretty generic, and the p= arameter > value changes its validity with the devicetree context. My gut instin= ct > would be to use EINVAL for parameter values that violate assumptions > of the driver rather than violate configuration of the driver. Maybe = ENXIO > ("No such device or address") is an improvement: "I can't map that de= vice > because there's no such device or address"? > > > + } > > + > > map.size =3D lpc_ctrl->mem_size; > > > > return copy_to_user(p, &map, sizeof(map)) ? -EFAULT : 0; > > @@ -126,9 +133,18 @@ static long aspeed_lpc_ctrl_ioctl(struct file > > *file, unsigned int cmd, > > return -EINVAL; > > > > if (map.window_type =3D=3D ASPEED_LPC_CTRL_WINDOW_FLASH) = { > > + if (!lpc_ctrl->pnor_size) { > > + dev_err(dev, "Didn't find host pnor flash= \n"); > > + return -EINVAL; > > See the error code discussion above. Also, this is userspace's error = not > the kernel's, so I think dev_err() is a bit harsh. Probably best to j= ust let > userspace log the error if it thinks the it is concerning. > > > + } > > addr =3D lpc_ctrl->pnor_base; > > size =3D lpc_ctrl->pnor_size; > > } else if (map.window_type =3D=3D ASPEED_LPC_CTRL_WINDOW_= MEMORY) { > > + /* If memory-region is not described in device tr= ee */ > > + if (!lpc_ctrl->mem_size) { > > + dev_err(dev, "Didn't find reserved memory= \n"); > > + return -EINVAL; > > as above. > > > + } > > addr =3D lpc_ctrl->mem_base; > > size =3D lpc_ctrl->mem_size; > > } else { > > @@ -196,17 +212,17 @@ static int aspeed_lpc_ctrl_probe(struct > > platform_device *pdev) > > if (!lpc_ctrl) > > return -ENOMEM; > > > > + /* If flash is described in device tree then store */ > > node =3D of_parse_phandle(dev->of_node, "flash", 0); > > if (!node) { > > - dev_err(dev, "Didn't find host pnor flash node\n"); > > - return -ENODEV; > > - } > > - > > - rc =3D of_address_to_resource(node, 1, &resm); > > - of_node_put(node); > > - if (rc) { > > - dev_err(dev, "Couldn't address to resource for flash\n"); > > - return rc; > > + dev_dbg(dev, "Didn't find host pnor flash node\n"); > > + } else { > > + rc =3D of_address_to_resource(node, 1, &resm); > > + of_node_put(node); > > + if (rc) { > > + dev_err(dev, "Couldn't address to resource for fl= ash\n"); > > + return rc; > > + } > > } > > > > lpc_ctrl->pnor_size =3D resource_size(&resm); > > @@ -214,22 +230,22 @@ static int aspeed_lpc_ctrl_probe(struct > > platform_device *pdev) > > > > dev_set_drvdata(&pdev->dev, lpc_ctrl); > > > > + /* If memory-region is described in device tree then store */ > > node =3D of_parse_phandle(dev->of_node, "memory-region", 0); > > if (!node) { > > - dev_err(dev, "Didn't find reserved memory\n"); > > - return -EINVAL; > > - } > > + dev_dbg(dev, "Didn't find reserved memory\n"); > > + } else { > > + rc =3D of_address_to_resource(node, 0, &resm); > > + of_node_put(node); > > + if (rc) { > > + dev_err(dev, "Couldn't address to resource for re= served memory\n"); > > + return -ENOMEM; > > Wow, I think this is an abuse of ENOMEM. Its description is "Out of m= emory" > which doesn't really reflect the problem here. > > Not really your fault though, maybe we'll fix that with some follow-u= p patches. > > Cheers, > > Andrew > > > + } > > > > - rc =3D of_address_to_resource(node, 0, &resm); > > - of_node_put(node); > > - if (rc) { > > - dev_err(dev, "Couldn't address to resource for reserved m= emory\n"); > > - return -ENOMEM; > > + lpc_ctrl->mem_size =3D resource_size(&resm); > > + lpc_ctrl->mem_base =3D resm.start; > > } > > > > - lpc_ctrl->mem_size =3D resource_size(&resm); > > - lpc_ctrl->mem_base =3D resm.start; > > - > > lpc_ctrl->regmap =3D syscon_node_to_regmap( > > pdev->dev.parent->of_node); > > if (IS_ERR(lpc_ctrl->regmap)) { > > @@ -258,8 +274,6 @@ static int aspeed_lpc_ctrl_probe(struct > > platform_device *pdev) > > goto err; > > } > > > > - dev_info(dev, "Loaded at %pr\n", &resm); > > - > > return 0; > > > > err: > > -- > > 2.17.1 > > > > 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=-7.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED 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 D5D51C43219 for ; Wed, 1 May 2019 05:55:28 +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 9C8FC20866 for ; Wed, 1 May 2019 05:55:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="YIeqhky5"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=jms.id.au header.i=@jms.id.au header.b="POuz/+h9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9C8FC20866 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=jms.id.au Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id: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=MsEw7PteEPoozul/JYo/YWNXYLxQ1XQIoD5Rtv7uAus=; b=YIeqhky5XWhU3v TMauBvLhNUoKGcvg/1ispMZv773PyDaEwSyd9lemex4lxDwHkXZbcEZ7Ks1ZcWi4JYZks9mL83Iej n2y/krDmyakCGUhbpL2GMzBaSFQWsfs4/nsYWBwzhvSBcs4ssnSKby9sTKHHp14NP6UEU1MnrMqa7 ZnuX/O+Awn2G+GJLDvfZj+lvOEkOMdqDRO8zMlrHsf2dSOPJvrzggf61DCjrgDsc9v/2Ox1O2afOP CWHnwjmvhGj/wAPL2SsedasV7bMQeLzL9ypdKIHTTJ2tbXWlpS8g4SnxXhfbB7j7a76EG5GvTu170 9JEKwYP9lvk2C5WLp4ag==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hLiDD-00065S-FD; Wed, 01 May 2019 05:55:23 +0000 Received: from mail-qt1-x843.google.com ([2607:f8b0:4864:20::843]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hLiDA-000657-49 for linux-arm-kernel@lists.infradead.org; Wed, 01 May 2019 05:55:21 +0000 Received: by mail-qt1-x843.google.com with SMTP id c35so19097950qtk.3 for ; Tue, 30 Apr 2019 22:55:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jms.id.au; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=vh2Ozgk0VmlPQd7PW8aAJh/gHpZAsKkiYtAyIwnbr/E=; b=POuz/+h9A6e9HtZJ2mOy0y+TPu6sTG1JgVQfIh14dO+62rxifGgdHrT5qY81Ewd3yW jkgCoBr2ZZQDjWi8yXm4oBs5jadxHRAJDp8ciLb15BxwZ1tP3xT3u2/RAbwk/VZVmbmo +fwMoqpJ5hGr2IudZxWQIe5RprBgIJjGqGFHo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=vh2Ozgk0VmlPQd7PW8aAJh/gHpZAsKkiYtAyIwnbr/E=; b=gXV2pt+UN/NGGgVW+7UeREivcN2KhzNRgQLqrF+Nk49QfHADVeugjRGyN/fv+kfP+q M+/RJAkswxx0wpngO24JZ8ajJIgIIfO1l1Ox96ZbEYsicEMqeOhUMp7KrpTu02xUsyA9 1O5r9MBYIqicjU9KG1V6jms/0o7roEeXTPEyFyxd950A7MNmtfFwImihsLRe36xm+7Xo NZ+O9cpQVqpBi1YnMJnC0/iZPzyUvvW36AI/A3ZAgbVsacJvR11ldfaPDkV54scrdPL+ dIilKHIFG1vvg8j3ghVIlqEWPScA/YUmCJALyjtWSTtP39beOgaKLIaJe/z8GTx7d+Jt TcLQ== X-Gm-Message-State: APjAAAW8d3mxCwmkURtH8FvNRFafN1zhSuQq6qDUgHQZPx64nLvgBgHU vrP5xjhZaE+IwatuoMVDsKA7HBU32FIOKVDzezE= X-Google-Smtp-Source: APXvYqxonRKsHrdfDd26bCtYo5fYsPcn3rMvyjaIMrcN1fbhQt90CyHYfzk0ETV5lzOVeHWMy1Qs006deJEcWgUr4oU= X-Received: by 2002:a0c:948e:: with SMTP id j14mr27304455qvj.245.1556690118487; Tue, 30 Apr 2019 22:55:18 -0700 (PDT) MIME-Version: 1.0 References: <20190116220154.1026171-1-vijaykhemka@fb.com> <1547787502.2061444.1637712576.1F1E21B4@webmail.messagingengine.com> In-Reply-To: From: Joel Stanley Date: Wed, 1 May 2019 05:55:07 +0000 Message-ID: Subject: Re: [PATCH v2] misc: aspeed-lpc-ctrl: make parameter optional To: Vijay Khemka , Greg Kroah-Hartman X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190430_225520_225829_200393F5 X-CRM114-Status: GOOD ( 27.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Arnd Bergmann , "linux-aspeed@lists.ozlabs.org" , Andrew Jeffery , "openbmc @ lists . ozlabs . org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCAxOCBKYW4gMjAxOSBhdCAyMDoxMiwgVmlqYXkgS2hlbWthIDx2aWpheWtoZW1rYUBm Yi5jb20+IHdyb3RlOgo+Cj4gSGkgQW5kcmV3LAo+IFRoYW5rcyBmb3IgdGhpcyByZXZpZXcsIEkg d2lsbCBoYXZlIGEgZm9sbG93IHVwIHBhdGNoIGZvciB0aGlzIHJldHVybiB2YWx1ZXMuCgpEaWQg eW91IHNlbmQgYSBmb2xsb3cgdXAgcGF0Y2ggdG8gZml4IHRoZSByZXR1cm4gdmFsdWVzPwoKR3Jl ZywgaXMgdGhlcmUgYW55IHJlYXNvbiB3aHkgeW91IGRpZCBub3QgbWVyZ2UgdGhpcyBvbmU/IDUu MiB3aWxsCmhhdmUgZGV2aWNlIHRyZWVzIHRoYXQgZGVwZW5kIG9uIHRoaXMgcGF0Y2gncyBiZWhh dmlvci4KCkNoZWVycywKCkpvZWwKCj4g77u/T24gMS8xNy8xOSwgODo1OCBQTSwgIkFuZHJldyBK ZWZmZXJ5IiA8YW5kcmV3QGFqLmlkLmF1PiB3cm90ZToKPgo+ICAgICBIaSBWaWpheSwKPgo+ICAg ICBUaGFua3MgZm9yIGRvaW5nIHRoZSB3b3JrIHRvIGZpeCB0aGUgZHJpdmVyLiBTb21lIG1pbm9y IHF1ZXJpZXMvcG9pbnRzCj4gICAgIGJlbG93Lgo+Cj4gICAgIE9uIFRodSwgMTcgSmFuIDIwMTks IGF0IDA4OjMxLCBWaWpheSBLaGVta2Egd3JvdGU6Cj4gICAgID4gTWFraWluZyBtZW1vcnktcmVn aW9uIGFuZCBmbGFzaCBhcyBvcHRpb25hbCBwYXJhbWV0ZXIgaW4gZGV2aWNlCj4gICAgID4gdHJl ZSBpZiB1c2VyIG5lZWRzIHRvIHVzZSB0aGVzZSBwYXJhbWV0ZXIgdGhyb3VnaCBpb2N0bCB0aGVu Cj4gICAgID4gbmVlZCB0byBkZWZpbmUgaW4gZGV2aWNldHJlZS4KPiAgICAgPgo+ICAgICA+IFNp Z25lZC1vZmYtYnk6IFZpamF5IEtoZW1rYSA8dmlqYXlraGVta2FAZmIuY29tPgo+ICAgICA+IC0t LQo+ICAgICA+ICBkcml2ZXJzL21pc2MvYXNwZWVkLWxwYy1jdHJsLmMgfCA1OCArKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gICAgID4gIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNl cnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKPiAgICAgPgo+ICAgICA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21pc2MvYXNwZWVkLWxwYy1jdHJsLmMgYi9kcml2ZXJzL21pc2MvYXNwZWVkLWxwYy0K PiAgICAgPiBjdHJsLmMKPiAgICAgPiBpbmRleCBhMDI0ZjgwNDIyNTkuLjMzMjIxMGUwNmU5OCAx MDA2NDQKPiAgICAgPiAtLS0gYS9kcml2ZXJzL21pc2MvYXNwZWVkLWxwYy1jdHJsLmMKPiAgICAg PiArKysgYi9kcml2ZXJzL21pc2MvYXNwZWVkLWxwYy1jdHJsLmMKPiAgICAgPiBAQCAtNjgsNiAr NjgsNyBAQCBzdGF0aWMgbG9uZyBhc3BlZWRfbHBjX2N0cmxfaW9jdGwoc3RydWN0IGZpbGUgKmZp bGUsCj4gICAgID4gdW5zaWduZWQgaW50IGNtZCwKPiAgICAgPiAgICAgICAgICAgdW5zaWduZWQg bG9uZyBwYXJhbSkKPiAgICAgPiAgewo+ICAgICA+ICAgc3RydWN0IGFzcGVlZF9scGNfY3RybCAq bHBjX2N0cmwgPSBmaWxlX2FzcGVlZF9scGNfY3RybChmaWxlKTsKPiAgICAgPiArIHN0cnVjdCBk ZXZpY2UgKmRldiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKPiAgICAgPiAgIHZvaWQgX191c2VyICpw ID0gKHZvaWQgX191c2VyICopcGFyYW07Cj4gICAgID4gICBzdHJ1Y3QgYXNwZWVkX2xwY19jdHJs X21hcHBpbmcgbWFwOwo+ICAgICA+ICAgdTMyIGFkZHI7Cj4gICAgID4gQEAgLTkwLDYgKzkxLDEy IEBAIHN0YXRpYyBsb25nIGFzcGVlZF9scGNfY3RybF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwK PiAgICAgPiB1bnNpZ25lZCBpbnQgY21kLAo+ICAgICA+ICAgICAgICAgICBpZiAobWFwLndpbmRv d19pZCAhPSAwKQo+ICAgICA+ICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICAg ICA+Cj4gICAgID4gKyAgICAgICAgIC8qIElmIG1lbW9yeS1yZWdpb24gaXMgbm90IGRlc2NyaWJl ZCBpbiBkZXZpY2UgdHJlZSAqLwo+ICAgICA+ICsgICAgICAgICBpZiAoIWxwY19jdHJsLT5tZW1f c2l6ZSkgewo+ICAgICA+ICsgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRGlkbid0IGZp bmQgcmVzZXJ2ZWQgbWVtb3J5XG4iKTsKPiAgICAgPiArICAgICAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKPgo+ICAgICBJIGZlZWwgbGlrZSBFSU5WQUwgaXNuJ3QgcXVpdGUgcmlnaHQgLSBp dCdzIHByZXR0eSBnZW5lcmljLCBhbmQgdGhlIHBhcmFtZXRlcgo+ICAgICB2YWx1ZSBjaGFuZ2Vz IGl0cyB2YWxpZGl0eSB3aXRoIHRoZSBkZXZpY2V0cmVlIGNvbnRleHQuIE15IGd1dCBpbnN0aW5j dAo+ICAgICB3b3VsZCBiZSB0byB1c2UgRUlOVkFMIGZvciBwYXJhbWV0ZXIgdmFsdWVzIHRoYXQg dmlvbGF0ZSBhc3N1bXB0aW9ucwo+ICAgICBvZiB0aGUgZHJpdmVyIHJhdGhlciB0aGFuIHZpb2xh dGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZHJpdmVyLiBNYXliZSBFTlhJTwo+ICAgICAoIk5vIHN1 Y2ggZGV2aWNlIG9yIGFkZHJlc3MiKSBpcyBhbiBpbXByb3ZlbWVudDogIkkgY2FuJ3QgbWFwIHRo YXQgZGV2aWNlCj4gICAgIGJlY2F1c2UgdGhlcmUncyBubyBzdWNoIGRldmljZSBvciBhZGRyZXNz Ij8KPgo+ICAgICA+ICsgICAgICAgICB9Cj4gICAgID4gKwo+ICAgICA+ICAgICAgICAgICBtYXAu c2l6ZSA9IGxwY19jdHJsLT5tZW1fc2l6ZTsKPiAgICAgPgo+ICAgICA+ICAgICAgICAgICByZXR1 cm4gY29weV90b191c2VyKHAsICZtYXAsIHNpemVvZihtYXApKSA/IC1FRkFVTFQgOiAwOwo+ICAg ICA+IEBAIC0xMjYsOSArMTMzLDE4IEBAIHN0YXRpYyBsb25nIGFzcGVlZF9scGNfY3RybF9pb2N0 bChzdHJ1Y3QgZmlsZQo+ICAgICA+ICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLAo+ICAgICA+ICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICAgICA+Cj4gICAgID4gICAgICAgICAg IGlmIChtYXAud2luZG93X3R5cGUgPT0gQVNQRUVEX0xQQ19DVFJMX1dJTkRPV19GTEFTSCkgewo+ ICAgICA+ICsgICAgICAgICAgICAgICAgIGlmICghbHBjX2N0cmwtPnBub3Jfc2l6ZSkgewo+ICAg ICA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJEaWRuJ3QgZmluZCBo b3N0IHBub3IgZmxhc2hcbiIpOwo+ICAgICA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4KPiAgICAgU2VlIHRoZSBlcnJvciBjb2RlIGRpc2N1c3Npb24gYWJvdmUu IEFsc28sIHRoaXMgaXMgdXNlcnNwYWNlJ3MgZXJyb3Igbm90Cj4gICAgIHRoZSBrZXJuZWwncywg c28gSSB0aGluayBkZXZfZXJyKCkgaXMgYSBiaXQgaGFyc2guIFByb2JhYmx5IGJlc3QgdG8ganVz dCBsZXQKPiAgICAgdXNlcnNwYWNlIGxvZyB0aGUgZXJyb3IgaWYgaXQgdGhpbmtzIHRoZSBpdCBp cyBjb25jZXJuaW5nLgo+Cj4gICAgID4gKyAgICAgICAgICAgICAgICAgfQo+ICAgICA+ICAgICAg ICAgICAgICAgICAgIGFkZHIgPSBscGNfY3RybC0+cG5vcl9iYXNlOwo+ICAgICA+ICAgICAgICAg ICAgICAgICAgIHNpemUgPSBscGNfY3RybC0+cG5vcl9zaXplOwo+ICAgICA+ICAgICAgICAgICB9 IGVsc2UgaWYgKG1hcC53aW5kb3dfdHlwZSA9PSBBU1BFRURfTFBDX0NUUkxfV0lORE9XX01FTU9S WSkgewo+ICAgICA+ICsgICAgICAgICAgICAgICAgIC8qIElmIG1lbW9yeS1yZWdpb24gaXMgbm90 IGRlc2NyaWJlZCBpbiBkZXZpY2UgdHJlZSAqLwo+ICAgICA+ICsgICAgICAgICAgICAgICAgIGlm ICghbHBjX2N0cmwtPm1lbV9zaXplKSB7Cj4gICAgID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKGRldiwgIkRpZG4ndCBmaW5kIHJlc2VydmVkIG1lbW9yeVxuIik7Cj4gICAgID4g KyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPgo+ICAgICBhcyBhYm92 ZS4KPgo+ICAgICA+ICsgICAgICAgICAgICAgICAgIH0KPiAgICAgPiAgICAgICAgICAgICAgICAg ICBhZGRyID0gbHBjX2N0cmwtPm1lbV9iYXNlOwo+ICAgICA+ICAgICAgICAgICAgICAgICAgIHNp emUgPSBscGNfY3RybC0+bWVtX3NpemU7Cj4gICAgID4gICAgICAgICAgIH0gZWxzZSB7Cj4gICAg ID4gQEAgLTE5NiwxNyArMjEyLDE3IEBAIHN0YXRpYyBpbnQgYXNwZWVkX2xwY19jdHJsX3Byb2Jl KHN0cnVjdAo+ICAgICA+IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgICAgPiAgIGlmICghbHBj X2N0cmwpCj4gICAgID4gICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICAgICA+Cj4gICAgID4g KyAvKiBJZiBmbGFzaCBpcyBkZXNjcmliZWQgaW4gZGV2aWNlIHRyZWUgdGhlbiBzdG9yZSAqLwo+ ICAgICA+ICAgbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAiZmxhc2giLCAw KTsKPiAgICAgPiAgIGlmICghbm9kZSkgewo+ICAgICA+IC0gICAgICAgICBkZXZfZXJyKGRldiwg IkRpZG4ndCBmaW5kIGhvc3QgcG5vciBmbGFzaCBub2RlXG4iKTsKPiAgICAgPiAtICAgICAgICAg cmV0dXJuIC1FTk9ERVY7Cj4gICAgID4gLSB9Cj4gICAgID4gLQo+ICAgICA+IC0gcmMgPSBvZl9h ZGRyZXNzX3RvX3Jlc291cmNlKG5vZGUsIDEsICZyZXNtKTsKPiAgICAgPiAtIG9mX25vZGVfcHV0 KG5vZGUpOwo+ICAgICA+IC0gaWYgKHJjKSB7Cj4gICAgID4gLSAgICAgICAgIGRldl9lcnIoZGV2 LCAiQ291bGRuJ3QgYWRkcmVzcyB0byByZXNvdXJjZSBmb3IgZmxhc2hcbiIpOwo+ICAgICA+IC0g ICAgICAgICByZXR1cm4gcmM7Cj4gICAgID4gKyAgICAgICAgIGRldl9kYmcoZGV2LCAiRGlkbid0 IGZpbmQgaG9zdCBwbm9yIGZsYXNoIG5vZGVcbiIpOwo+ICAgICA+ICsgfSBlbHNlIHsKPiAgICAg PiArICAgICAgICAgcmMgPSBvZl9hZGRyZXNzX3RvX3Jlc291cmNlKG5vZGUsIDEsICZyZXNtKTsK PiAgICAgPiArICAgICAgICAgb2Zfbm9kZV9wdXQobm9kZSk7Cj4gICAgID4gKyAgICAgICAgIGlm IChyYykgewo+ICAgICA+ICsgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiQ291bGRuJ3Qg YWRkcmVzcyB0byByZXNvdXJjZSBmb3IgZmxhc2hcbiIpOwo+ICAgICA+ICsgICAgICAgICAgICAg ICAgIHJldHVybiByYzsKPiAgICAgPiArICAgICAgICAgfQo+ICAgICA+ICAgfQo+ICAgICA+Cj4g ICAgID4gICBscGNfY3RybC0+cG5vcl9zaXplID0gcmVzb3VyY2Vfc2l6ZSgmcmVzbSk7Cj4gICAg ID4gQEAgLTIxNCwyMiArMjMwLDIyIEBAIHN0YXRpYyBpbnQgYXNwZWVkX2xwY19jdHJsX3Byb2Jl KHN0cnVjdAo+ICAgICA+IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgICAgPgo+ICAgICA+ICAg ZGV2X3NldF9kcnZkYXRhKCZwZGV2LT5kZXYsIGxwY19jdHJsKTsKPiAgICAgPgo+ICAgICA+ICsg LyogSWYgbWVtb3J5LXJlZ2lvbiBpcyBkZXNjcmliZWQgaW4gZGV2aWNlIHRyZWUgdGhlbiBzdG9y ZSAqLwo+ICAgICA+ICAgbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAibWVt b3J5LXJlZ2lvbiIsIDApOwo+ICAgICA+ICAgaWYgKCFub2RlKSB7Cj4gICAgID4gLSAgICAgICAg IGRldl9lcnIoZGV2LCAiRGlkbid0IGZpbmQgcmVzZXJ2ZWQgbWVtb3J5XG4iKTsKPiAgICAgPiAt ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gICAgID4gLSB9Cj4gICAgID4gKyAgICAgICAgIGRl dl9kYmcoZGV2LCAiRGlkbid0IGZpbmQgcmVzZXJ2ZWQgbWVtb3J5XG4iKTsKPiAgICAgPiArIH0g ZWxzZSB7Cj4gICAgID4gKyAgICAgICAgIHJjID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShub2Rl LCAwLCAmcmVzbSk7Cj4gICAgID4gKyAgICAgICAgIG9mX25vZGVfcHV0KG5vZGUpOwo+ICAgICA+ ICsgICAgICAgICBpZiAocmMpIHsKPiAgICAgPiArICAgICAgICAgICAgICAgICBkZXZfZXJyKGRl diwgIkNvdWxkbid0IGFkZHJlc3MgdG8gcmVzb3VyY2UgZm9yIHJlc2VydmVkIG1lbW9yeVxuIik7 Cj4gICAgID4gKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4KPiAgICAgV293LCBJ IHRoaW5rIHRoaXMgaXMgYW4gYWJ1c2Ugb2YgRU5PTUVNLiBJdHMgZGVzY3JpcHRpb24gaXMgIk91 dCBvZiBtZW1vcnkiCj4gICAgIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IHJlZmxlY3QgdGhlIHByb2Js ZW0gaGVyZS4KPgo+ICAgICBOb3QgcmVhbGx5IHlvdXIgZmF1bHQgdGhvdWdoLCBtYXliZSB3ZSds bCBmaXggdGhhdCB3aXRoIHNvbWUgZm9sbG93LXVwIHBhdGNoZXMuCj4KPiAgICAgQ2hlZXJzLAo+ Cj4gICAgIEFuZHJldwo+Cj4gICAgID4gKyAgICAgICAgIH0KPiAgICAgPgo+ICAgICA+IC0gcmMg PSBvZl9hZGRyZXNzX3RvX3Jlc291cmNlKG5vZGUsIDAsICZyZXNtKTsKPiAgICAgPiAtIG9mX25v ZGVfcHV0KG5vZGUpOwo+ICAgICA+IC0gaWYgKHJjKSB7Cj4gICAgID4gLSAgICAgICAgIGRldl9l cnIoZGV2LCAiQ291bGRuJ3QgYWRkcmVzcyB0byByZXNvdXJjZSBmb3IgcmVzZXJ2ZWQgbWVtb3J5 XG4iKTsKPiAgICAgPiAtICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gICAgID4gKyAgICAgICAg IGxwY19jdHJsLT5tZW1fc2l6ZSA9IHJlc291cmNlX3NpemUoJnJlc20pOwo+ICAgICA+ICsgICAg ICAgICBscGNfY3RybC0+bWVtX2Jhc2UgPSByZXNtLnN0YXJ0Owo+ICAgICA+ICAgfQo+ICAgICA+ Cj4gICAgID4gLSBscGNfY3RybC0+bWVtX3NpemUgPSByZXNvdXJjZV9zaXplKCZyZXNtKTsKPiAg ICAgPiAtIGxwY19jdHJsLT5tZW1fYmFzZSA9IHJlc20uc3RhcnQ7Cj4gICAgID4gLQo+ICAgICA+ ICAgbHBjX2N0cmwtPnJlZ21hcCA9IHN5c2Nvbl9ub2RlX3RvX3JlZ21hcCgKPiAgICAgPiAgICAg ICAgICAgICAgICAgICBwZGV2LT5kZXYucGFyZW50LT5vZl9ub2RlKTsKPiAgICAgPiAgIGlmIChJ U19FUlIobHBjX2N0cmwtPnJlZ21hcCkpIHsKPiAgICAgPiBAQCAtMjU4LDggKzI3NCw2IEBAIHN0 YXRpYyBpbnQgYXNwZWVkX2xwY19jdHJsX3Byb2JlKHN0cnVjdAo+ICAgICA+IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiAgICAgPiAgICAgICAgICAgZ290byBlcnI7Cj4gICAgID4gICB9Cj4gICAg ID4KPiAgICAgPiAtIGRldl9pbmZvKGRldiwgIkxvYWRlZCBhdCAlcHJcbiIsICZyZXNtKTsKPiAg ICAgPiAtCj4gICAgID4gICByZXR1cm4gMDsKPiAgICAgPgo+ICAgICA+ICBlcnI6Cj4gICAgID4g LS0KPiAgICAgPiAyLjE3LjEKPiAgICAgPgo+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK