Re: Kernel Oops with 2.6.21.1 on an AMD K7 machine

Uwe Bugla
2007-05-22T11:32:10Z

Am Dienstag, 22. Mai 2007 13:18 schrieben Sie:
> Am Dienstag, 22. Mai 2007 00:54 schrieben Sie:
> > On Tue, 22 May 2007 00:28:57 +0200
> >
> > "Uwe Bugla" <uwe.bugla@gmx.de> wrote:
> > > kernel 2.6.21.1 makes my machine Oops about 20 seconds after KDE 3,5 is
> > > brought up showing its graphical login (kdm):
> >
> > We're completely blind unless we can see that oops info.
>
> Yes.
>
> And I am completely blind if I even once rely on some v4l "maintainer" who:
>
> a. has absolutely ZERO knowledge about DVB issues
> b. is not ready to share power and competence with a second or a third
> maintainer
> c. smashes down democratic votes (there have been 4 traditional highly
> experienced DVB maintainers voting for one person to resolve that issue -
> one of them was the "old rock" Ralph Metzler)
> d. reviews code that he absolutely has no idea about and signs it off
> e. gives stupid replies on specific questions due to his proven
> incompetence
>
> Would you call this man helpful and honest? My answer you can easily guess!
>
> > If it reached
> > /var/log/messages then please send it.
> >
> > If it didn't please set up netconsole
> > (Documentation/networking/netconsole.txt)
> >
> > If for some reason that isn't possible then you couldry switching to
> > the vga concole (alt-ctl-F1) before the ooops and see if the output
> > is visible on the VGA screen. If it is there, a digital photo will suit
> > (you can email it to me and I can stick it on a server somewhere if
> > you like). The last option is to write the oops info down with a
> > pencil and type it in again, but that's painful (all the hex addresses
> > in the stack backtrace can be omitted)
> >
> > Thanks.
>
> OK, back to the AMD K7 oops issue now:
>
> I in fact never could believe that a simple buggy NIC driver could ever
> hang up a whole machine!
>
> So, if someone could be kind enough to explain to me in how far that can
> happen I'd be very thankful.
>
> The solution for the 2.6.21.1 oops issue is the following patch, who needs
> to flow into vanilla mainline of 2.6.21.x as quick as possible:
>
> --- a/drivers/net/sis900.c
> +++ b/drivers/net/sis900.c
> @@ -1754,6 +1754,7 @@ static int sis900_rx(struct net_device *
> sis_priv->rx_ring[entry].cmdsts = RX_BUF_SIZE;
> } else {
> struct sk_buff * skb;
> + struct sk_buff * rx_skb;
>
> pci_unmap_single(sis_priv->pci_dev,
> sis_priv->rx_ring[entry].bufptr, RX_BUF_SIZE,
> @@ -1787,10 +1788,10 @@ static int sis900_rx(struct net_device *
> }
>
> /* give the socket buffer to upper layers */
> - skb = sis_priv->rx_skbuff[entry];
> - skb_put(skb, rx_size);
> - skb->protocol = eth_type_trans(skb, net_dev);
> - netif_rx(skb);
> + rx_skb = sis_priv->rx_skbuff[entry];
> + skb_put(rx_skb, rx_size);
> + rx_skb->protocol = eth_type_trans(rx_skb, net_dev);
> + netif_rx(rx_skb);
>
> /* some network statistics */
> if ((rx_status & BCAST) == MCAST)
>
> Lots of thanks for Andrew Morton's helpful explanations how to store oops
> infos. Lots of thanks to all the other people trying to help.
> I love to learn! :)
>
> Best Regards
>
> Uwe

Sorry, I forgot to Cc vger.kernel.org - mea culpa!