Fw: usb problems - try this patch

Paul Horechuk phorechuk at docucom.ca
Fri Sep 26 04:53:41 PDT 2003


The patch worked great. Thanks.

----- Original Message ----- 
From: "Paul Horechuk" <phorechuk at docucom.ca>
To: "Andrew Atrens" <atrens at nortelnetworks.com>
Sent: September 25, 2003 7:47 AM
Subject: Re: usb problems - try this patch


> Thanks, I'll check it out tonight.
>
> ----- Original Message ----- 
> From: "Andrew Atrens" <atrens at nortelnetworks.com>
> To: "Paul Horechuk" <phorechuk at docucom.ca>
> Sent: September 25, 2003 12:02 AM
> Subject: usb problems - try this patch
>
>
> >
> > Hi Paul,
> >
> > The patch is attached.  Works for me... Let me know if it works
for
> you ...
> >
> > Cheers,
> >
> > Andrew.
> >
>
>
> --------------------------------------------------------------------
--
> ----------
>
>
> > --- dev/usb.old/usb.c Mon Aug 25 21:22:33 2003
> > +++ dev/usb/usb.c Wed Sep 24 23:22:56 2003
> > @@ -243,11 +243,24 @@
> >   * Turning this code off will delay attachment of USB devices
> >   * until the USB event thread is running, which means that
> >   * the keyboard will not work until after cold boot.
> > + *
> > + * On nForce2/ohci interrupts get enabled while use_polling
> > + * is set to true. When this happens the cpu spins servicing
> > + * the interrupt routine repeatedly and the restart locks
> > + * solid. This appears to be a race condition as it only
> > + * happens when devices are connected prior to boot - indeed
> > + * with no devices attached the lockup doesn't happen.
> > + *
> > + * Don't take any chances and use splusb() to make sure we
> > + * don't start receiving interrupts before we are ready for
> > + * them ...
> >   */
> >   if (cold) {
> > +                 int s = splusb();
> >   sc->sc_bus->use_polling++;
> >   dev->hub->explore(sc->sc_bus->root_hub);
> >   sc->sc_bus->use_polling--;
> > + splx( s );
> >   }
> >  #endif
> >   } else {
> >
>



More information about the freebsd-stable mailing list