Am 04.07.2016 um 22:13 schrieb Sean Young: > On Wed, May 18, 2016 at 10:29:41PM +0200, Heiner Kallweit wrote: >> This chip has a 32 byte HW FIFO only. Therefore the default fifo size >> of 512 raw events is not needed and can be significantly decreased. >> >> Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx> > > The 32 byte hardware queue is read from an interrupt handler and added > to the kfifo. The kfifo is read by the decoders in a seperate kthread > (in ir_raw_event_thread). If we have a long IR (e.g. nec which has > 66 edges) and the kthread is not scheduled in time (e.g. high load), will > we not end up with an overflow in the kfifo and unable to decode it? > The interrupt handler is triggered latest when 24 bytes have been read. (at least that's how the chip gets configured at the moment) This gives the decoder thread at least 8 bytes time to process the kfifo. This should be sufficient even under high load. If somebody configures the driver the generate an interrupt after 32 bytes only then there are possible issues under high load or with longer code pieces with interrupts disabled anyway: Then the next byte might arrive (and make the chip fifo overrun) before the interrupt handler can read the chip fifo. Heiner > > Sean > >> --- >> drivers/media/rc/nuvoton-cir.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c >> index 99b303b..e98c955 100644 >> --- a/drivers/media/rc/nuvoton-cir.c >> +++ b/drivers/media/rc/nuvoton-cir.c >> @@ -1186,6 +1186,7 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id) >> rdev->priv = nvt; >> rdev->driver_type = RC_DRIVER_IR_RAW; >> rdev->allowed_protocols = RC_BIT_ALL; >> + rdev->raw_fifo_size = RX_BUF_LEN; >> rdev->open = nvt_open; >> rdev->close = nvt_close; >> rdev->tx_ir = nvt_tx_ir; >> -- >> 2.8.2 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-media" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html