From owner-freebsd-mips@FreeBSD.ORG Mon Jan 25 20:41:34 2010 Return-Path: Delivered-To: freebsd-mips@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 89A74106568F for ; Mon, 25 Jan 2010 20:41:34 +0000 (UTC) (envelope-from neelnatu@yahoo.com) Received: from web34404.mail.mud.yahoo.com (web34404.mail.mud.yahoo.com [66.163.178.153]) by mx1.freebsd.org (Postfix) with SMTP id 3F9A88FC1C for ; Mon, 25 Jan 2010 20:41:34 +0000 (UTC) Received: (qmail 5659 invoked by uid 60001); 25 Jan 2010 20:41:33 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1264452093; bh=kG9kTr7ADIZhSLni3K8owhB2FTuPEkws1MlUy5CUbUc=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=zwOOOvUAUEEcDJrU3mHLLbdWwEfZLfPsckwnhRNzRw8unv5E8F4k43XhzKUlN829lCi2aUZVa2Ky3wDWvNP+dyn0Qqywf50EJv6LLoHkp6UZ/fP6zQH3sn8Iyf2/KIquPCwEvXwkjXT2OsZR9Thq1JZYaxRaxdkrOKGE2XLuPbs= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=I6TnPzJ22H2MTmFnY0QGgHCjEyz/5LZjnmzS2kEm5PWRenS64pSshbcfZObxsz+peo2zqDncWtUOFXVOyKfPX9tunr1MkpgnuG09a72lbextETLB4DinIvHDv4hdB/vYUvVaQrwV6OzDNEblr5HPWDiJQwQUfcF1OJFtVNz4ztE=; Message-ID: <832529.2466.qm@web34404.mail.mud.yahoo.com> X-YMail-OSG: BdVgsQkVM1mudnNr3klOQCn5REhSe7rBl188LzKGThlApPHuYqspc4b4uq0GbFqz5Twgz24e2IiCFQbvAN.YNqd_wGVEpsV76SBoyxrKxpHR88zjlXDYAajmKU6kRPMgBqMTiVgz6HNA6..nzqY42qJ7Hnk79Rlhv0jg8LSSv.ciLuuDa7rJC39hc9slDOIH6aZt_cZDd.AS9UNHcscbvl17Oc71cI.AqBCjnNUVMowBrje34W.DYfwsZXFpUhlaDloD34JRGHqsoKStByX2n95.cgSZ760Sbwy0zrZ6592WFjcpUHsNRxNNtg_PM4JGQjwayEc8QFRsS2JuE5tMA8DXVQSA8UzfpvilBNFI6WtpKFMbgDJcjKOevVUJHEVyCTS4Jn_Gf0V06PbSF7AaF6v00_syahV6XRQvwAEgr8fT Received: from [198.95.226.228] by web34404.mail.mud.yahoo.com via HTTP; Mon, 25 Jan 2010 12:41:33 PST X-Mailer: YahooMailClassic/9.1.10 YahooMailWebService/0.8.100.260964 Date: Mon, 25 Jan 2010 12:41:33 -0800 (PST) From: Neelkanth Natu To: "M. Warner Losh" In-Reply-To: <20100125.093125.200754749998835802.imp@bsdimp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: freebsd-mips@FreeBSD.org Subject: Re: AR71XX RTC X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2010 20:41:34 -0000 Hi Warner, The patch looks good. Please commit it. The reason we started seeing this recently is because of this: http://svn.freebsd.org/viewvc/base/head/sys/kern/sched_4bsd.c?r1=202889&r2=202888&pathrev=202889 In particular the call to thread_block_lock() will point 'td_lock' to 'blocked_lock' and if we don't switch it back in cpu_switch() then anybody trying to call thread_lock() on the thread will panic. best Neel --- On Mon, 1/25/10, M. Warner Losh wrote: > From: M. Warner Losh > Subject: Re: AR71XX RTC > To: neelnatu@yahoo.com > Cc: gonzo@bluezbox.com, smeagle@bsdler.de, freebsd-mips@FreeBSD.org > Date: Monday, January 25, 2010, 8:31 AM > In message: <434364.57659.qm@web34405.mail.mud.yahoo.com> > Neelkanth Natu > > writes: > : Hi Flo, > : > : Can you try the following patch and see if it helps with > the > : hang-followed-by-trap problem? > : > : I am seeing a similar problem on the Sibyte and this > patch gets me > : past it. > : > : best > : Neel > : > : Index: swtch.S > : > =================================================================== > : --- swtch.S (revision 202961) > : +++ swtch.S (working copy) > : @@ -323,7 +323,7 @@ > : * to be saved with > the other registers do so here. > : */ > : > : - sw a3, > TD_LOCK(a0) > # Switchout td_lock > : + sw a2, > TD_LOCK(a3) > # Switchout td_lock > : > : mips_sw1: > : #if defined(SMP) && defined(SCHED_ULE) > > I really like this patch. For the OCTEON I went from > having all kinds > of head-scratcher problems on boot that I was about to look > at > instruction traces in the simulator to try to track down to > an > immediate mountroot> prompt. So after reading the > code, my first > reaction is "how the heck did the old code work as well as > it did?" > and my second reaction is "This is obviously the right fix > since a3 is > a saved copy of a0, and a0 points to the pcb at this point, > not the > old thread." > > I've touched up the comments a bit. Maybe the > register assignments is > a bit of overkill, but this is a complicated function > that's very > tricky. What do you think of this patch: > > Index: sys/mips/mips/swtch.S > =================================================================== > --- sys/mips/mips/swtch.S (revision > 202867) > +++ sys/mips/mips/swtch.S (working copy) > @@ -282,9 +282,10 @@ > END(mips_cpu_throw) > > /* > - *XXX Fixme: should be written to new > interface that requires lock > - * storage. We > fake it for now. > - * cpu_switch(struct thread *old, struct thread *new); > + * cpu_switch(struct thread *old, struct thread *new, > struct mutex *mtx); > + * a0 - old > + * a1 - new > + * a2 - mtx > * Find the highest priority process and resume it. > */ > NON_LEAF(cpu_switch, STAND_FRAME_SIZE, ra) > @@ -323,7 +324,7 @@ > * to be saved with the other > registers do so here. > */ > > - sw a3, > TD_LOCK(a0) > # Switchout td_lock > + sw a2, > TD_LOCK(a3) > # Switchout td_lock > > mips_sw1: > #if defined(SMP) && defined(SCHED_ULE) > > > Thanks for saving me hours of debugging. :) > > Warner > > > : --- On Sun, 1/24/10, Florian Kruegl > wrote: > : > : > From: Florian Kruegl > : > Subject: Re: AR71XX RTC > : > To: "Oleksandr Tymoshenko" > : > Cc: freebsd-mips@freebsd.org > : > Date: Sunday, January 24, 2010, 8:52 AM > : > Hi, > : > > : > On Sun, 2010-01-24 at 02:41 +0100, Florian Kruegl > wrote: > : > > On Sat, 2010-01-23 at 16:53 -0800, Oleksandr > : > Tymoshenko wrote: > : > > > On 2010-01-23, at 4:44 PM, Florian Kruegl > wrote: > : > > > > : > > > > Hi, > : > > > > > : > > > > On Sat, 2010-01-23 at 16:21 -0800, > Oleksandr > : > Tymoshenko wrote: > : > > > >> On 2010-01-23, at 4:00 PM, > Florian > : > Kruegl wrote: > : > > > >> > : > > > >>> Hi, > : > > > >>> > : > > > >>> anyone working on pfc2123 > driver for > : > RouterStation Pro? > : > > > >>> Seems quite well documented, > one > : > issue might be CS hack, but the rest > : > > > >>> should be straight. > : > > > >> Driver was commited > : > yesterday: > : > > > >> http://svn.freebsd.org/viewvc/base?view=revision&revision=202839 > : > > > >> > : > > > >> And yes, CS hack is the problem. > I'm > : > trying to figure out how to fit it into FreeBSD > : > > > >> SPI framework. > : > > > > > : > > > > sounds good, will do an update as > soon as i > : > removed me work from code. > : > > > > My CS "solution" was more than crude, > but > : > the frames simply didn't > : > > > > fit... so I am looking forward for a > : > different one :) > : > > > > : > > > Yeah, my CS solution was > : > dirty hack too. If for "didn't fit" you mean missing > last > : > > > byte of frame then this problem was solved > to. > : > Bug was in AR71XX SPI code: falling > : > > > edge was not provided for last byte in > transfer > : > in time and RTC chip acts of falling edge. > : > > > Fix was committed before driver. > : > > > > : > > > > : > > > > : > > > : > > code looks similar, can't tell much about > result as > : > kernel hangs for a > : > > while before getting this: > : > > > : > > <<<<<<<<<<<<<<<<<<<<<<<<<<< > : > schnipp > : > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > : > > Trap cause = 2 (TLB miss (load or instr. fetch) > - > : > kernel mode) > : > > [thread pid 4 tid 100009 ] > : > > Stopped at > : > _thread_lock_flags+0x150: > : > lw v0,60(a3) > : > > db> bt > : > > Tracing pid 4 tid 100009 td 0xc0c47270 > : > > db_trace_thread+30 (?,?,?,?) ra 800a6c10 sz 24 > : > > 800a6af4+11c (0,?,ffffffff,?) ra 800a6604 sz > 32 > : > > 800a6270+394 (?,?,?,?) ra 800a6794 sz 168 > : > > db_command_loop+78 (?,?,?,?) ra 800a8e68 sz 24 > : > > 800a8d60+108 (?,?,?,?) ra 80215ff8 sz 424 > : > > kdb_trap+f8 (?,?,?,?) ra 80474350 sz 32 > : > > trap+134c (?,?,?,?) ra 8046b7fc sz 176 > : > > MipsKernGenException+100 > (b,173,804d5de8,deadc0d8) ra > : > 801c593c sz 200 > : > > _thread_lock_flags+130 (?,?,?,?) ra 80221f18 sz > 56 > : > > sleepq_broadcast+ac (?,?,?,?) ra 801e5f20 sz > 40 > : > > wakeup+2c (?,?,?,?) ra 8016de18 sz 32 > : > > g_io_deliver+198 (?,?,?,?) ra 8016bbd4 sz 80 > : > > 8016b590+644 (?,?,?,?) ra 8016e184 sz 104 > : > > g_io_schedule_down+2ec (?,?,?,?) ra 8016eb94 sz > 64 > : > > 8016eb18+7c (?,?,?,?) ra 801a331c sz 24 > : > > fork_exit+a0 (?,?,?,?) ra 80478f10 sz 48 > : > > fork_trampoline+10 (?,?,?,?) ra 0 sz 0 > : > > pid 4 > : > > > : > > <<<<<<<<<<<<<<<<<<<<<<<<<<< > : > schnapp > : > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > : > > > : > > will use AR71XX as config file tomorrow, mine > has many > : > additional devs > : > > configured for booting from usb devices. > : > > > : > [...] > : > > : > seems to make no difference. removed all mini pci > : > devs and most code > : > changes. kernel hangs during bootup for a while. > then gets > : > a trap. > : > > : > Source Info: > : > > : > -------------------------- schnipp > : > -------------------------- > : > brain:head> svn info > : > Path: . > : > URL: svn://svn.freebsd.org/base/head > : > Repository Root: svn://svn.freebsd.org/base > : > Repository UUID: > ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f > : > Revision: 202904 > : > Node Kind: directory > : > Schedule: normal > : > Last Changed Author: marcel > : > Last Changed Rev: 202904 > : > Last Changed Date: 2010-01-24 00:16:50 +0100 (Sun, > 24 Jan > : > 2010) > : > -------------------------- schnapp > : > -------------------------- > : > > : > -------------------------- schnipp > : > -------------------------- > : > brain:head> svn stat > : > ? GRTAGS > : > ? GSYMS > : > ? GTAGS > : > ? GPATH > : > M sys/kern/vfs_mount.c > : > M sys/mips/conf/AR71XX > : > ? sys/dev/pfc2123 > : > -------------------------- schnapp > : > -------------------------- > : > > : > - vfs_mount should be far away. > : > - sys/dev/pfc2123 is no longer used. > : > - sys/mips/conf/AR71XX altered to include > pfc2123_rtc > : > > : > > : > -------------------------- schnipp > : > -------------------------- > : > FreeBSD 9.0-CURRENT #1: Sun Jan 24 15:58:37 UTC > 2010 > : > > : > root@pinky.lan.terror.local:/home/smeagle/obj/mips/mips/home/smeagle/src/freebsd/head/sys/AR71XX > : > mips > : > real memory = 134217728 (131072K bytes) > : > avail memory = 125689856 (119MB) > : > nexus0: > : > clock0: on nexus0 > : > clock0: [FILTER] > : > apb0 at irq 4 on nexus0 > : > apb0: [FILTER] > : > uart0: <16550 or compatible> on apb0 > : > uart0: [FILTER] > : > uart0: console (115200,n,8,1) > : > pcib0 at irq 0 on nexus0 > : > pcib0: [FILTER] > : > pci0: on pcib0 > : > pci0: at device > 0.0 (no > : > driver attached) > : > pci0: at device 17.0 (no driver > : > attached) > : > arge0: interface> > : > at mem > : > 0x19000000-0x19000fff irq 2 on nexus0 > : > miibus0: on arge0 > : > ukphy0: > PHY 4 > : > on miibus0 > : > ukphy0: 10baseT, 10baseT-FDX, 100baseTX, > : > 100baseTX-FDX, 1000baseT-FDX, > : > auto > : > arge0: Ethernet address: 00:00:00:00:46:61 > : > arge0: [FILTER+ITHREAD] > : > arge1: interface> > : > at mem > : > 0x1a000000-0x1a000fff irq 3 on nexus0 > : > arge1: Ethernet address: 00:00:00:00:46:62 > : > arge1: [FILTER+ITHREAD] > : > spi0: at mem > 0x1f000000-0x1f00000f on > : > nexus0 > : > spibus0: on spi0 > : > mx25l0: at cs 0 on > spibus0 > : > mx25l0: mx25ll128, sector 65536 bytes, 256 sectors > : > ar71xx_wdog0: > on > : > nexus0 > : > Timecounter "MIPS32" frequency 360000000 Hz quality > 800 > : > Timecounters tick every 1.000 msec > : > bootpc_init: wired to interface 'arge0' > : > Sending DHCP Discover packet from interface arge0 > : > (00:00:00:00:46:61) > : > arge0: link state changed to DOWN > : > Trap cause = 2 (TLB miss (load or instr. fetch) - > kernel > : > mode) > : > [thread pid 4 tid 100008 ] > : > Stopped at > : > _thread_lock_flags+0x150: > : > lw v0,60(a3) > : > db> bt > : > Tracing pid 4 tid 100008 td 0xc0c414e0 > : > db_trace_thread+30 (?,?,?,?) ra 80055900 sz 24 > : > 800557e4+11c (0,?,ffffffff,?) ra 800552f4 sz 32 > : > 80054f60+394 (?,?,?,?) ra 80055484 sz 168 > : > db_command_loop+78 (?,?,?,?) ra 80057b58 sz 24 > : > 80057a50+108 (?,?,?,?) ra 8017b7d8 sz 424 > : > kdb_trap+f8 (?,?,?,?) ra 8035ab40 sz 32 > : > trap+134c (?,?,?,?) ra 80351fec sz 176 > : > MipsKernGenException+100 (b,173,8039ce74,deadc0d8) > ra > : > 8012c92c sz 200 > : > _thread_lock_flags+130 (?,?,?,?) ra 801876f8 sz 56 > : > sleepq_broadcast+ac (?,?,?,?) ra 8014b700 sz 40 > : > wakeup+2c (?,?,?,?) ra 800d6ba8 sz 32 > : > g_io_deliver+198 (?,?,?,?) ra 800d4964 sz 80 > : > 800d4320+644 (?,?,?,?) ra 800d6f14 sz 104 > : > g_io_schedule_down+2ec (?,?,?,?) ra 800d7924 sz 64 > : > 800d78a8+7c (?,?,?,?) ra 8010c0ac sz 24 > : > fork_exit+a0 (?,?,?,?) ra 8035f700 sz 48 > : > fork_trampoline+10 (?,?,?,?) ra 0 sz 0 > : > pid 4 > : > -------------------------- schnapp > : > -------------------------- > : > > : > > : > > : > > : > Flo > : > > : > _______________________________________________ > : > freebsd-mips@freebsd.org > : > mailing list > : > http://lists.freebsd.org/mailman/listinfo/freebsd-mips > : > To unsubscribe, send any mail to "freebsd-mips-unsubscribe@freebsd.org" > : > > : > : > : > : _______________________________________________ > : freebsd-mips@freebsd.org > mailing list > : http://lists.freebsd.org/mailman/listinfo/freebsd-mips > : To unsubscribe, send any mail to "freebsd-mips-unsubscribe@freebsd.org" > : > : >