Bug 42992 - oops in sungem on powerpc
Summary: oops in sungem on powerpc
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: Network (show other bugs)
Hardware: PPC-32 Linux
: P1 normal
Assignee: drivers_network@kernel-bugs.osdl.org
URL: https://bugs.gentoo.org/show_bug.cgi?...
Keywords:
Depends on:
Blocks:
 
Reported: 2012-03-25 13:24 UTC by seraph@xs4all.nl
Modified: 2016-03-19 17:18 UTC (History)
2 users (show)

See Also:
Kernel Version: 3.2.12
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description seraph@xs4all.nl 2012-03-25 13:24:00 UTC
On my PowerBook G4, if I boot a 3.2.12 kernel (or anything after 3.1, the last working version was 3.0.6) while the system is on AC, the kernel oopses when the init scripts try to configure the sungem ethernet device. Curiously, nothing unusual happens if the system is on battery during boot, even if the AC is plugged in later.

Here is the oops (this is for a 3.2.1 kernel with Gentoo patches, but the one for a vanilla 3.2.12 kernel looks exactly the same apart from the kernel version):

Oops: Machine check, sig: 7 [#1]
PowerMac
Modules linked in: snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss reiserfs ext3 jbd dm_mod loop generic_nvram apm_emu apm_emulation usbhid hid appletouch cryptomgr crypto_hash aead pcompress crypto_blkcipher arc4 crypto_algapi nouveau b43 mac80211 snd_aoa_codec_tas snd_aoa_fabric_layout snd_aoa cfg80211 crypto rng_core ttm fbcon font bitblit softcursor ochi_hcd drm_kms_helper drm evdev firewire_ohci snd_aoa_i2sbus rtc_generic firewire_core sungem snd_pcm i2c_powermac sr_mod sungem_phy ehci_hcd crc_itu_t pmac_zilog cdrom serial_core snd_timer usbcore snd_page_alloc snd fb hwmon soundcore backlight snd_aoa_soundbus i2c_algo_bit usb_common i2c_core ssb nls_base cfbcopyarea cfbimgblt cfbfillrect uninorth_agp agpart unix ext2 sd_mod pata_macio libata scsi_mod
NIP: f199c53c LR: f199c63c CTR: f199c5cc
REGS: efb85ce0 TRAP: 0200  Not tainted (3.2.1-gentoo-r2)
MSR: 00149030 <EE,ME,IR,DR>  CR: 42002022  XER: 20000000
TASK = eebb5200[1332] 'mii-tool' THREAD: efb84000
GPR00: a9b520f5 efb85d90 eebb5200 c10ed3c0 60020000 00000000 0000000c 00000001
GPR08: 00000000 f1a0620c 00000002 00000006 80000022 1001b198 00000040 00000000
GPR16: 100bc358 00000040 1089f210 108a8800 100c0000 ffffffff 100131b0 00000000
GPR24: bfe51618 00000000 00000000 efb85e00 f19a1754 efb85e00 c10ed000 c10ed3c0
NIP [f199c53c] __phy_read+0x44/0xd4 [sungem]
LR [f199c63c] gem_ioctl+0x70/0xc4 [sungem]
Call trace:
[efb85d90] [c02c77ac] 0xc02c77ac (unreliable)
[efb85db0] [f199c63c] gem_ioctl+0x70/0xc4 [sungem]
[efb85dc0] [c01bca38] dev_ifsioc+0x1a8/0x3c8
[efb85df0] [c01bd150] dev_ioctl+0x4f8/0x768
[efb85e80] [c01a5fb4] sock_ioctl+0x90/0x2b8
[efb85ea0] [c00cc9c8] do_vfs_ioctl+0xa4/0x754
[efb85f10] [c00cd0b8] sys_ioctl+0x40/0x88
[efb85f40] [c0011a3c] ret_from_syscall+0x0/0x38
--- Exception: c01 at 0xff68b1c
    LR = 0xff68a84
Instruction dump:
7c842b78 93e1001c 7c7f1b78 90010024 81230000 3929620c 7c0004ac 7c804d2c
81230000 3929620c 7c0004ac 7c004c2c <0c000000> 4c00012c 74090001 40820050
---[ end trace 0f53d7bba7f41b67 ]---


After this, the system becomes unusable; it still responds somewhat, but doesn't work correctly and never finishes running the init scripts.

This bug is also filed with Gentoo as bug #401577.
Comment 1 seraph@xs4all.nl 2012-04-28 15:08:42 UTC
I have performed bisection on this bug, here are the final results:

commit fe09bb619096a0aa139210748ddc668c2dbe2308
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date:   Wed Jun 1 17:17:10 2011 +1000

    sungem: Spring cleaning and GRO support
    
    This patch simplifies the logic and locking in sungem significantly:
    
     - LLTX is gone, all private locks are gone, mutex is gone
     - We don't poll the PHY while the interface is down
     - The above allowed me to get rid of a pile of state flags
       using the proper interface state provided by the networking
       stack when needed and overall simplify the driver a lot
     - Allocate the bulk of RX skbs at init time using GFP_KERNEL
     - Fix a bug where the dev->features were set after register_netdev()
     - Added GRO while at it
    
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
Comment 2 seraph@xs4all.nl 2012-04-28 15:18:47 UTC
Oops, the copy-paste in my previous comment missed a few lines. Here is the full thing:

fe09bb619096a0aa139210748ddc668c2dbe2308 is the first bad commit
commit fe09bb619096a0aa139210748ddc668c2dbe2308
Author: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date:   Wed Jun 1 17:17:10 2011 +1000

    sungem: Spring cleaning and GRO support
    
    This patch simplifies the logic and locking in sungem significantly:
    
     - LLTX is gone, all private locks are gone, mutex is gone
     - We don't poll the PHY while the interface is down
     - The above allowed me to get rid of a pile of state flags
       using the proper interface state provided by the networking
       stack when needed and overall simplify the driver a lot
     - Allocate the bulk of RX skbs at init time using GFP_KERNEL
     - Fix a bug where the dev->features were set after register_netdev()
     - Added GRO while at it
    
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

:040000 040000 e35e115d43f35bec92ace63e399535f149d6e6a4 1b992391e32179c137d3f42148ffa10c62aec65c M      drivers

Note You need to log in before you can comment on or make changes to this bug.