[pvrusb2] Ability to fully reset a PVRUSB2 Device

Mike Isely isely at isely.net
Sat Sep 21 20:30:33 CDT 2019


On Sat, 21 Sep 2019, Diego Rivera wrote:

> Thanks for the update!
> It occurred to me: what if for #3, instead of the driver not handling the error, it's simply
> expecting a different/new (type of) error to be raised in order to go through a code path that leads
> to it not getting borked? Bah ... I'm sure you've thought of this ☺
> Cheers!

Well anything is possible.  However EIO is generally understood to mean 
"I/O error" which in fact this is.

I just added a dump_stack() call after detecting the error, and the 
guilty component is the I2C IR chip-level driver (the thing that watches 
the IR port and figures out what buttons you press on the remote).  
It's coming from a call to get_key_haup_common() which is in 
ir-kbd-i2c.c. That code is not written with any loop, but it pretty 
clearly itself returns -EIO to its caller if the I2C transfer attempt 
fails (for any reason).  The caller can only be get_key_haup() but it 
looks like the compiler optimized that away so it isn't showing up in 
the stack trace.  Stack frames above that point "look" like it might be 
coming from userspace, so - on the Ubuntu system where I'm playing with 
this, a userspace IR daemon might be in play here.  It might be the 
thing pounding on the pvrusb2 driver - in this scenario.

I'm not familiar with that i2c kbd driver but there are a lot of avenues 
to look at here.  For example, I can probably disable away that whole 
thing so I can turn my attention to #1.  I also have several different 
pvrusb2 devices here and they each have different IR designs which may 
cause different upstream behavior.  Like I said, a number of avenues 
here.

  -Mike

-- 

Mike Isely
isely @ isely (dot) net
PGP: 03 54 43 4D 75 E5 CC 92 71 16 01 E2 B5 F5 C1 E8


More information about the pvrusb2 mailing list