From owner-cvs-src@FreeBSD.ORG Tue Dec 27 23:41:28 2005 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3898E16A41F; Tue, 27 Dec 2005 23:41:28 +0000 (GMT) (envelope-from scottl@samsco.org) Received: from pooker.samsco.org (pooker.samsco.org [168.103.85.57]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9174043D58; Tue, 27 Dec 2005 23:41:25 +0000 (GMT) (envelope-from scottl@samsco.org) Received: from [192.168.254.14] (imini.samsco.home [192.168.254.14]) (authenticated bits=0) by pooker.samsco.org (8.13.4/8.13.4) with ESMTP id jBRNfLWX017818; Tue, 27 Dec 2005 16:41:21 -0700 (MST) (envelope-from scottl@samsco.org) Message-ID: <43B1D121.1080309@samsco.org> Date: Tue, 27 Dec 2005 16:41:21 -0700 From: Scott Long User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.7) Gecko/20050416 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Nate Lawson References: <20051222090955.E621416A4D5@hub.freebsd.org> <43B1CE9E.1060602@root.org> In-Reply-To: <43B1CE9E.1060602@root.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.4 required=3.8 tests=ALL_TRUSTED autolearn=failed version=3.1.0 X-Spam-Checker-Version: SpamAssassin 3.1.0 (2005-09-13) on pooker.samsco.org Cc: cvs-src@FreeBSD.org, Gleb Smirnoff , cvs-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: cvs commit: src/sys/dev/em if_em.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Dec 2005 23:41:28 -0000 Nate Lawson wrote: > Gleb Smirnoff wrote: > >> glebius 2005-12-22 09:09:39 UTC >> >> FreeBSD src repository >> >> Modified files: >> sys/dev/em if_em.c Log: >> Add a quirk to fix resume on some laptops. >> Reported by: joe >> Reported by: Huang wen hui >> Reported by: Jacques Garrigue >> PR: kern/89825 >> Revision Changes Path >> 1.94 +9 -0 src/sys/dev/em/if_em.c >> >> >> Index: src/sys/dev/em/if_em.c >> diff -u src/sys/dev/em/if_em.c:1.93 src/sys/dev/em/if_em.c:1.94 >> --- src/sys/dev/em/if_em.c:1.93 Sun Dec 18 18:24:26 2005 >> +++ src/sys/dev/em/if_em.c Thu Dec 22 09:09:39 2005 >> @@ -1048,6 +1048,15 @@ >> else if (reg_icr == 0) >> break; >> >> + /* >> + * XXX: some laptops trigger several spurious interrupts >> + * on em(4) when in the resume cycle. The ICR register >> + * reports all-ones value in this case. Processing such >> + * interrupts would lead to a freeze. I don't know why. >> + */ >> + if (reg_icr == 0xffffffff) >> + break; >> + >> if (ifp->if_drv_flags & IFF_DRV_RUNNING) { >> em_process_receive_interrupts(adapter, -1); >> em_clean_transmit_interrupts(adapter); > > > This probably means that the PCI memory space isn't fully initialized > but an interrupt has been triggered. If you then go and try to poke the > hardware, then you can hang the system. > I can believe your first statement, but not your second. Hanging the system on an aborted memory read cycle (as opposed to just throwing a #SERR) would indicate a highly highly broken chipset. In any case, if we ever implement PCI hotplug then we'll have to deal with the effects of aborted PCI transfers anyways. Scott