From: Darren Hart <dvhart@infradead.org>
To: "Li, Aubrey" <aubrey.li@linux.intel.com>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>,
qipeng.zha@intel.com, platform-driver-x86@vger.kernel.org,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] platform:x86 decouple telemetry driver from the optional IPC resources
Date: Thu, 14 Apr 2016 22:05:53 -0700 [thread overview]
Message-ID: <20160415050553.GF3232@f23x64.localdomain> (raw)
In-Reply-To: <57104F92.9060908@linux.intel.com>
On Fri, Apr 15, 2016 at 10:18:58AM +0800, Li, Aubrey wrote:
Hi Aubrey,
> >>>> res = platform_get_resource(pdev, IORESOURCE_MEM,
> >>>> PLAT_RESOURCE_ISP_DATA_INDEX);
> >>>> - if (!res) {
> >>>> - dev_err(&pdev->dev, "Failed to get res of punit ISP data\n");
> >>>> - return -ENXIO;
> >>>> + ++punit_res;
> >>>> + if (res) {
> >>>> + *punit_res = *res;
> >>>> + dev_info(&pdev->dev, "punit ISP data res: %pR\n", res);
> >>>
> >>> Okay, what if you re-arrange this to some helper first
> >>>
> >>
> >> Thanks for the idea, but I don't like a helper here, did you see
> >> anything harmful of the current implementation?
> >
> > In both arguments, we need to identify the WHY.
> >
> > I imagine Andy is trying to reduce the copy and paste potential for error as
> > well as error introduction in future patches. There are... 7 or so cases with
> > near identical usage, that's a compelling argument for a refactor such as the
> > helper Andy suggests.
> >
> > Aubrey, you said you don't like it. Why is that? Will it not save enough lines
> > of code to be worth it? Are you concerned about revalidating the change?
>
> dev_info with different strings makes the helper useless, or more
> complex than desired if we have to write a helper here.
>
> Also, we have necessary resource above, which returns directly if there
> is a error. For the coding style consistency in a routine, I really
> don't like we call platform_get_resource() directly at first and then
> put it into a helper later. The current implementation is
> straightforward and clean.
Both of those could be addressed with arguments, macros, etc. However, that
becomes subjective quickly, and I appreciate the incremental functional fix
here. I think this bit is fine as is.
...
> >>>> diff --git a/drivers/platform/x86/intel_punit_ipc.c b/drivers/platform/x86/intel_punit_ipc.c
> >>>> index bd87540..a47a41f 100644
> >>>> --- a/drivers/platform/x86/intel_punit_ipc.c
> >>>> +++ b/drivers/platform/x86/intel_punit_ipc.c
> >>>> @@ -227,6 +227,11 @@ static int intel_punit_get_bars(struct platform_device *pdev)
> >>>> struct resource *res;
> >>>> void __iomem *addr;
> >>>>
> >>>> + /*
> >>>> + * The following resources are required
> >>>> + * - BIOS_IPC BASE_DATA
> >>>> + * - BIOS_IPC BASE_IFACE
> >>>> + */
> >>>> res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> >>>> addr = devm_ioremap_resource(&pdev->dev, res);
> >>>> if (IS_ERR(addr))
> >>>> @@ -239,29 +244,40 @@ static int intel_punit_get_bars(struct platform_device *pdev)
> >>>> return PTR_ERR(addr);
> >>>> punit_ipcdev->base[BIOS_IPC][BASE_IFACE] = addr;
> >>>>
> >>>> + /*
> >>>> + * The following resources are optional
> >>>> + * - ISPDRIVER_IPC BASE_DATA
> >>>> + * - ISPDRIVER_IPC BASE_IFACE
> >>>> + * - GTDRIVER_IPC BASE_DATA
> >>>> + * - GTDRIVER_IPC BASE_IFACE
> >>>> + */
> >>>> res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
> >>>> - addr = devm_ioremap_resource(&pdev->dev, res);
> >>>> - if (IS_ERR(addr))
> >>>> - return PTR_ERR(addr);
> >>>> - punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr;
> >>>> + if (res) {
> >>>> + addr = devm_ioremap_resource(&pdev->dev, res);
> >>>> + if (!IS_ERR(addr))
> >>>> + punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr;
> >>>> + }
> >>>
> >>> And here, what about just replacing return to dev_warn()?
> >>
> >> I don't think we need to continue the subsequent ops if an error address
> >> returns.
> >
> > Why is that? Will the driver fail to provide any functionality? Or could it be
> > the other IFACEs could still be of some use?
> >
> > This one does need a justification.
> >
> We discussed this.
> - For the necessary resources, if we obtain an error address, we should
> return immediately.
> - For the optional resources, we keep quiet if we don't get them, that
> is, not throwing a warning out.
Andy, he's checking for "res" now too, which is a good extra check since
devm_ioremap_resource will issue a dev_err "invalid resource" if it's NULL, even
though in our case, that's expected for an optional resource. This adds the
extra nesting, and a dev_warn wouldn't be appropriate for an option resource.
I'm happy to queue this to fixes at this point. Andy, are you OK with the
resolution here?
--
Darren Hart
Intel Open Source Technology Center
next prev parent reply other threads:[~2016-04-15 5:05 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-31 19:28 Aubrey Li
2016-04-10 2:45 ` Darren Hart
2016-04-11 2:04 ` Zha, Qipeng
2016-04-11 4:04 ` Chakravarty, Souvik K
2016-04-11 6:48 ` Darren Hart
2016-04-11 7:05 ` Li, Aubrey
2016-04-10 13:17 ` Andy Shevchenko
2016-04-10 13:46 ` Li, Aubrey
2016-04-15 0:32 ` Darren Hart
2016-04-15 2:18 ` Li, Aubrey
2016-04-15 5:05 ` Darren Hart [this message]
2016-04-21 21:13 ` Andy Shevchenko
2016-04-19 21:17 ` Darren Hart
2016-04-21 21:10 ` Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160415050553.GF3232@f23x64.localdomain \
--to=dvhart@infradead.org \
--cc=andy.shevchenko@gmail.com \
--cc=aubrey.li@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=qipeng.zha@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®