#7973 BLOC 8.2.0 (: libertas unknown event IDs and hang

Zarro Boogs per Child bugtracker at laptop.org
Fri Aug 15 14:25:40 EDT 2008


#7973: libertas unknown event IDs and hang
------------------------+---------------------------------------------------
   Reporter:  cjb       |       Owner:  dsaxena             
       Type:  defect    |      Status:  new                 
   Priority:  blocker   |   Milestone:  8.2.0 (was Update.2)
  Component:  kernel    |     Version:  not specified       
 Resolution:            |    Keywords:                      
Next_action:  diagnose  |    Verified:  0                   
  Blockedby:            |    Blocking:                      
------------------------+---------------------------------------------------

Comment(by dsaxena):

 Replying to [comment:10 wmb at firmworks.com]:
 > I think it's nearly certain that the event IDs listed in the original
 description are bogus.  The legitimate event IDs are small integers
 between 0 and 48 (0x30) or thereabouts.
 >
 > The offending event ID, represented in hex, are 0x500, 0x3202, 0x9007,
 0xa000, 0xb000, 0x6fd5, 0x72f5, 0x8000.  Those numbers just don't look
 anything like the real IDs, not even with a few high bits set.
 >
 > So I dsaxena's suggestion that either the wireless FW is going nuts or
 the driver's FIFO is getting corrupted.  I'd bet on the former, but it's
 very easy to eliminate the latter, just to make sure.  Just modify the
 driver to check the event ID before putting it in the queue, logging a
 message if the ID value exceeds the largest known ID value.

 I'm not sure how, but I completely misread something in the driver
 yesterday. I've been looking at a variety of bugs so I may have miss-
 merged two pieces of information.

 We don't store the events in a FIFO but just process them as they come in.
 An event is received via an URB packet and the USB I/F drives copies it
 (u32) before the URB is discarded then pokes a bit to let the main thread
 know there is an event pending. The main thread just reads the event from
 the USB driver. The variable storing the event in USB driver is only
 written to in one place in the driver so what we process is what we're
 getting from HW unless we have memory corruption which I'm going to
 completely rule out as a possibility given that we can reproduce this on
 multiple laptops.

 You can do "echo 0x00020000 > /sys/module/libertas/parameters" to enable
 USB debug and see the "EVENT" flags come in (along with lots of other
 debug info).

-- 
Ticket URL: <http://dev.laptop.org/ticket/7973#comment:11>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system


More information about the Bugs mailing list