From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavel Roskin Date: Thu, 11 Mar 2010 02:56:55 -0500 Subject: [ath9k-devel] AR5008 hanging computer In-Reply-To: <20100305230438.GA4942@lazo.ca> References: <20100218203126.GA22471@lazo.ca> <20100218215812.GA2904@lazo.ca> <1266543366.5200.17.camel@mj> <20100305230438.GA4942@lazo.ca> Message-ID: <1268294215.4089.10.camel@mj> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: ath9k-devel@lists.ath9k.org On Fri, 2010-03-05 at 15:04 -0800, Mark Sutton wrote: > Is it possible this is a hardware issue? It looks like a hardware issue, but maybe it can be worked around. > BUG: soft lockup - CPU#0 stuck for 61s! [phy0:604] > Modules linked in: usbhid hid nvidia(P) acpi_cpufreq cpufreq_stats cpufreq_userspace cpufreq_ondemand cpufreq_powersave freq_table cpufreq_conservative lm90 adm1021 arc4 ecb snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm ath9k pcmcia snd_seq mac80211 snd_timer yenta_socket snd_seq_device ath fan rsrc_nonstatic uhci_hcd thermal cfg80211 video snd processor toshiba_acpi pcmcia_core ehci_hcd thermal_sys led_class rtc_cmos e100 soundcore rtc_core battery ac evdev hwmon mii rtc_lib output rfkill snd_page_alloc intel_agp usbcore psmouse agpgart button > > Pid: 604, comm: phy0 Tainted: P (2.6.32.7 #4) Portable PC > EIP: 0060:[] EFLAGS: 00000296 CPU: 0 > EIP is at ioread32+0x32/0x40 > EAX: 00000000 EBX: edc40000 ECX: f0c40000 EDX: f0c48258 > ESI: edc40000 EDI: 00001000 EBP: 00000000 ESP: ed899d24 > DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 > CR0: 8005003b CR2: b7868000 CR3: 27fc7000 CR4: 000006d0 > DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 > DR6: ffff0ff0 DR7: 00000400 > Call Trace: > [] ? ath9k_hw_procmibevent+0x36/0x140 [ath9k] I believe the register number is in DX. Register 0x8258 is AR_SLP_MIB_CTRL, and it's indeed being read in ath9k_hw_procmibevent(). Somehow reading that register causes a CPU lockup. An easy workaround would be to comment out this line in ani.c: if (!(REG_READ(ah, AR_SLP_MIB_CTRL) & AR_SLP_MIB_PENDING)) Leave the new line so that the register is cleared unconditionally. -- Regards, Pavel Roskin