linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: dmitry.torokhov@gmail.com (Dmitry Torokhov)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/4] tty/serial: sh-sci: remove uneeded IS_ERR_OR_NULL calls
Date: Thu, 23 Mar 2017 12:58:04 -0700	[thread overview]
Message-ID: <20170323195804.GA2502@dtor-ws> (raw)
In-Reply-To: <20170323191020.nrstp2cfh7cuqvf3@pengutronix.de>

On Thu, Mar 23, 2017 at 08:10:20PM +0100, Uwe Kleine-K?nig wrote:
> On Thu, Mar 23, 2017 at 08:44:41AM -0700, Dmitry Torokhov wrote:
> > On Thu, Mar 23, 2017 at 07:43:25AM -0700, Dmitry Torokhov wrote:
> > > On Thu, Mar 23, 2017 at 02:41:53PM +0100, Linus Walleij wrote:
> > > > On Thu, Mar 23, 2017 at 1:34 PM, Uwe Kleine-K?nig
> > > > <u.kleine-koenig@pengutronix.de> wrote:
> > > > 
> > > > > Maybe we can make gpiod_get_optional look like this:
> > > > >
> > > > >         if (!dev->of_node && isnt_a_acpi_device(dev) && !IS_ENABLED(GPIOLIB))
> > > > >                 return NULL;
> > > > >         else
> > > > >                 return -ENOSYS;
> > > > >
> > > > > I don't know how isnt_a_acpi_device looks like, probably it involves
> > > > > CONFIG_ACPI and/or dev->acpi_node.
> > > > >
> > > > > This should be safe and still comfortable for legacy platforms, isn't it?
> > > > 
> > > > I like the looks of this.
> > > > 
> > > > Can we revert Dmitry's patch and apply something like this instead?
> > > > 
> > > > Dmitry, how do you feel about this?
> > > 
> > > I frankly do not see the point. It still makes driver code more complex
> 
> Note that this code is in the gpio header, and not in driver code. So
> the driver just does
> 
> 	gpiod = gpiod_get_optional(...)
> 	if (IS_ERR(gpiod))
> 		return PTR_ERR(gpiod);
> 
> (as it is supposed to do now). I think that's nice.

Except that it breaks if !CONFIG_GPIOLIB which is legitimate config in
many cases. Can I have a DT platform or ACPI platform that does not
expose any GPIOs for kernel to control and thus want to disable GPIOLIB?
I can't see why not.

> 
> > > for no good reason. I also think that not having optional GPIO is not an
> > > error, so returning value from error space is not correct. NULL is value
> > > from another space altogether.
> 
> It seems you didn't understand my concern.

Likewise.

> 
> > > Uwe seems to be concerned about case that I find extremely unlikely. We
> > > are talking about a system that does not have GPIO support and behaves
> > > just fine, with the exception that it actually has (physically) a
> > > *single* GPIO, and that GPIO happens to be optional in a single driver,
> > > but in this particular system is actually needed (but that need
> > > manifests in a non-obvious way). And we have system integrator that has
> > > no idea what they are doing (no schematic, etc).
> 
> IMHO this is not an excuse to have lax error checking.

IMO it is not an error altogether, so there is no lax checking.

> 
> > > I think that if there is one optional GPIO there will be mandatiry GPIOs
> > > in such system as well and selection of GPIOLIB will be forced early on
> > > in board bringup.
> > 
> > One more thing: if we keep reporting -ENOSYS in case of !CONFIG_GPIOLIB,
> > then most of the non platform-sepcific drivers will eventually gain code
> > silently coping with this -ENOSYS:
> > 
> > 	data->gpiod = gpiod_getptional(...);
> > 	if (IS_ERR(data->gpiod)) {
> > 		error = PTR_ERR(data->gpiod);
> > 		if (error != -ENOSYS)
> > 			return error;
> > 
> > 		data->gpiod = NULL; /* This GPIO _is_ optional */
> 
> Do you agree that this is wrong? Yes, it behaves right for most cases.
> But there are cases where it behaves wrong and so it needs fixing.

I think by now it should be obvious that I do not find it wrong. In fact
that is what I, as a maintainer of drivers that supposed to work on
multitude of platforms, will be forced to do, if the change to stop
reporting -ENOSYS gets reverted. A generic driver has no way to know
that kernel configuration or firmware configuration is wrong and should
not be trusted (except for piling up horrendous DMI hacks in some
cases on X86).

Thanks.

-- 
Dmitry

  reply	other threads:[~2017-03-23 19:58 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-03 14:22 [PATCH 4/4] tty/serial: sh-sci: remove uneeded IS_ERR_OR_NULL calls Richard Genoud
2017-03-03 18:58 ` Geert Uytterhoeven
2017-03-03 19:12   ` Uwe Kleine-König
2017-03-03 19:21     ` Geert Uytterhoeven
2017-03-03 19:44       ` Uwe Kleine-König
2017-03-04 15:35         ` Geert Uytterhoeven
2017-03-04 17:48           ` Uwe Kleine-König
2017-03-06  8:49             ` Geert Uytterhoeven
2017-03-06  8:58               ` Uwe Kleine-König
2017-03-06  9:09                 ` Geert Uytterhoeven
2017-03-06  9:30                   ` Uwe Kleine-König
2017-03-06  9:53                     ` Geert Uytterhoeven
2017-03-06 10:02                       ` Uwe Kleine-König
2017-03-14 15:32                         ` Linus Walleij
2017-03-16 15:18                         ` Linus Walleij
2017-03-16 16:37                           ` Uwe Kleine-König
2017-03-16 16:38                           ` Geert Uytterhoeven
2017-03-20  9:56                             ` Geert Uytterhoeven
2017-03-20 10:03                               ` Geert Uytterhoeven
2017-03-20 10:31                               ` Uwe Kleine-König
2017-03-20 10:38                                 ` Geert Uytterhoeven
2017-03-20 11:07                                   ` Uwe Kleine-König
2017-03-23  9:32                                     ` Linus Walleij
2017-03-23 10:10                                       ` Uwe Kleine-König
2017-03-23 10:20                                         ` Geert Uytterhoeven
2017-03-23 11:11                                           ` Uwe Kleine-König
2017-03-23 12:03                                             ` Geert Uytterhoeven
2017-03-23 12:34                                               ` Uwe Kleine-König
2017-03-23 12:44                                                 ` Geert Uytterhoeven
2017-03-23 13:41                                                 ` Linus Walleij
2017-03-23 14:43                                                   ` Dmitry Torokhov
2017-03-23 15:44                                                     ` Dmitry Torokhov
2017-03-23 19:10                                                       ` Uwe Kleine-König
2017-03-23 19:58                                                         ` Dmitry Torokhov [this message]
2017-03-24  8:00                                                           ` Uwe Kleine-König
2017-03-24  8:29                                                             ` Geert Uytterhoeven
2017-03-24  8:39                                                               ` Uwe Kleine-König
2017-03-24  8:59                                                                 ` Geert Uytterhoeven
2017-03-24  9:15                                                                   ` Uwe Kleine-König
2017-03-24  9:44                                                                     ` Geert Uytterhoeven
2017-03-24 10:01                                                                       ` Uwe Kleine-König
2017-03-24  8:58                                                         ` Linus Walleij
2017-03-23 15:55                                             ` Dmitry Torokhov
2017-03-23 13:37                                         ` Linus Walleij

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=20170323195804.GA2502@dtor-ws \
    --to=dmitry.torokhov@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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;
as well as URLs for NNTP newsgroup(s).