From owner-freebsd-sparc64@FreeBSD.ORG Sat Mar 31 02:37:53 2012 Return-Path: Delivered-To: freebsd-sparc64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 96087106566B for ; Sat, 31 Mar 2012 02:37:53 +0000 (UTC) (envelope-from dcrosstech@gmail.com) Received: from mail-wg0-f50.google.com (mail-wg0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id F2BBF8FC20 for ; Sat, 31 Mar 2012 02:37:52 +0000 (UTC) Received: by wgbds12 with SMTP id ds12so1048021wgb.31 for ; Fri, 30 Mar 2012 19:37:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=889epm2FGYz9SGaXQrvtxD9B9+vp0CSHTXyKzqcWF5k=; b=RORgKfC4Ou0WXMXM0sK5hmoYG1gckeYjskBREXmqEsTBFpz7LTFypTpLjA8TSSecnN +7EjVNJZlaLz9sdU/KzsnMIvdpTZJ6mWVxf2ElJeLirlTIon5QN1WBPtpdEU+w5iLK9g 6a3P28BMa+RD7vNOYefvBTxB/aFTK8evavaokpYDUL/ATf/+hCm3/eyc+DtmTBc5F1Hn hIbOCzkq0zZZuXeXwP5K2wV4uyX+q9sCpOzmXUU4k2LMqhhgC4NvEV3X8f2JOVyhXl/P vFKzTED1PUIyN0H3d3bPDillefxm7xUAutio/WFXFd0oe1flpKx9gI/oXo32rMSCDtrO ho5Q== MIME-Version: 1.0 Received: by 10.180.102.3 with SMTP id fk3mr2270797wib.9.1333161471804; Fri, 30 Mar 2012 19:37:51 -0700 (PDT) Received: by 10.223.78.208 with HTTP; Fri, 30 Mar 2012 19:37:51 -0700 (PDT) In-Reply-To: References: Date: Fri, 30 Mar 2012 22:37:51 -0400 Message-ID: From: David Cross To: freebsd-sparc64@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Re: 9.0-RELEASE, SPARC64, Ultra10, dummynet hard hang X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Mar 2012 02:37:53 -0000 Ok.. to follow up on my own question, I have tracked it down! So, the problem is an unalligned memory access in the "burst" parameter of dn_link. A printf of it on my system gives: &(p->burst)=0x0xfffff80002c48f7c burst is an uint64_t.. that isn't 64bit aligned. This raises a few questions: 1) Why isn't it being autoaligned, doesn't gcc do this (I am almost positive it does (or it should) (I have no /etc/make.conf, completely stock options) 2) Why is this causing a _deadlock_? (note kernel debugger _does_ work.. which was a boon in getting to "close" to where the problem was in the first place) 3) Since it does cause a deadlock, it means that a bus-fault handler is being called that _doesn't_ panic.. and doesn't return correctly? 4) since its not tripping a RED error, its not looping the handler. and 5) given all of the above.. what's the fix? I am modifying dn_link to be 64 bit aligned (manually).. but this feels like the wrong approach (though it will hopefully get me what I want for 'now'. -- David E. Cross On Tue, Mar 20, 2012 at 10:38 AM, David Cross wrote: > I will provide my kernel config in a second updated message, but I don't > believe it will be needed; I am reasonably sure this affects all builds. > > In short I have a SPARC Ultra10 running 9.0-RELEASE (with the > ofw_printf/ofw_panic patches obviously) running a custom kernel that has > dummynet, ipfw, and ipsec compiled into it. It has been running month+ > with no issues. Last night I did: > > ipfw pipe 1 config bw 200KByte/sec > > and then it hard hung, no response to ping, no response to console, didn't > even get it to bind to a ruleset. > > I reset it and did the same command again, same result. > > Any ideas on this? > > -- > David E. Cross