Re: /dev/gpiochipX event filtering throws away wanted events

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Linus,

On Mon, Aug 20, 2018 at 01:40:54PM +0200, Linus Walleij wrote:
> On Sun, Aug 19, 2018 at 7:22 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote:
> 
> > While your concern is real I think that our approach is mostly fine -
> > we try to read the value as soon as we can in the interrupt handler.
> >
> > What we could do however for some theoretical improvement is use
> > gpiod_get_value() since we're in non-sleeping context and maybe even
> > call it as the very first operation - even before calling
> > ktime_get_real_ns().
> 
> We can call *get_value() directly in the hard interrupt handler
> lineevent_irq_handler() if and only if the IRQ handler does not
> sleep, such as MMIO GPIO, but not on I2C expanders for example.
> 
> The code is written to deal with any cases and assuming the
> worst so right now it is just timestamping in the hop half.
> 
> But we could check if .can_sleep() is set on the struct gpio_chip
> and if it isn't, just read the value directly in the hardirq handler.

Yeah, I thought about that already, too.

This doesn't fix however that there are events suppressed that are valid
and event are reported that did never happen. To fix this, my patch is
needed.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux