From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael Chan" Subject: Re: 2.6.27-rc1-git4 BUG: sched while atomic Date: Mon, 04 Aug 2008 07:20:40 -0700 Message-ID: <1217859640.6746.2.camel@HP1> References: <20080804094835.da083484.randy.dunlap@oracle.com> <20080804101712.659780ef@extreme> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: "Randy Dunlap" , netdev To: "Stephen Hemminger" Return-path: Received: from mms2.broadcom.com ([216.31.210.18]:1784 "EHLO mms2.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758485AbYHDSVQ (ORCPT ); Mon, 4 Aug 2008 14:21:16 -0400 In-Reply-To: <20080804101712.659780ef@extreme> Sender: netdev-owner@vger.kernel.org List-ID: On Mon, 2008-08-04 at 10:17 -0700, Stephen Hemminger wrote: > > In 2.6.27-rc1-git4, I now see this (39 times): > > > > BUG: scheduling while atomic: ifconfig/16971/0x00000100 > > Modules linked in: parport_pc lp parport tg3 lpfc cciss ehci_hcd > ohci_hcd uhci_hcd > > Pid: 16971, comm: ifconfig Not tainted 2.6.27-rc1-git4 #1 > > > > Call Trace: > > [] ? page_add_new_anon_rmap+0x20/0x22 > > [] __schedule_bug+0x62/0x66 > > [] schedule+0x99/0x759 > > [] ? __mod_timer+0xc1/0xd3 > > [] ? do_page_fault+0x473/0x7dd > > [] schedule_timeout+0x8d/0xb4 > > [] ? process_timeout+0x0/0xb > > [] ? schedule_timeout+0x88/0xb4 > > [] schedule_timeout_uninterruptible+0x19/0x1b > > [] msleep+0x14/0x1e > > [] pci_set_power_state+0x1cd/0x292 > > [] ? pci_bus_write_config_dword+0x64/0x73 > > [] tg3_set_power_state+0x58/0x884 [tg3] > > [] ? __mutex_lock_slowpath+0x1d8/0x1e5 > > [] tg3_open+0x46/0x6cc [tg3] > > [] ? __mutex_lock_slowpath+0x1d8/0x1e5 > > [] dev_open+0x73/0xa8 > > [] dev_change_flags+0xab/0x167 > > [] devinet_ioctl+0x269/0x5da > > [] ? unlock_page+0x2d/0x32 > > [] inet_ioctl+0x92/0xaa > > [] sock_ioctl+0x1d1/0x1fb > > [] vfs_ioctl+0x2a/0x77 > > [] do_vfs_ioctl+0x255/0x272 > > [] ? do_page_fault+0x473/0x7dd > > [] sys_ioctl+0x42/0x67 > > [] system_call_fastpath+0x16/0x1b > > This is a bug. > This was introduced by: tg3: adapt tg3 to use reworked PCI PM code Adapt the tg3 driver to use the reworked PCI PM and make it use the exported PCI PM core functions instead of accessing the PCI PM registers directly by itself. Signed-off-by: Rafael J. Wysocki Signed-off-by: Andrew Morton Signed-off-by: David S. Miller In the original tg3 code, we used udelay() when switching to D0 state since we were inside tg3_full_lock().