NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-mac68k/37611: macs with cuda adb don't boot -current



The following reply was made to PR port-mac68k/37611; it has been noted by 
GNATS.

From: Martin Husemann <martin%duskware.de@localhost>
To: Scott Reynolds <scottr%NetBSD.org@localhost>
Cc: gnats-bugs%NetBSD.org@localhost
Subject: Re: port-mac68k/37611: macs with cuda adb don't boot -current
Date: Tue, 1 Apr 2008 14:13:09 +0200

 On Tue, Apr 01, 2008 at 12:44:22AM -0500, Scott Reynolds wrote:
 > The completion routine is called at interrupt time with the a2  
 > register set to the completion data buffer.
 
 See below for why this does not currently work. Minor nit: shouldn't
 it do a
 
        movl #1,%a2@
 
 instead? We pass an int pointer, and after the command is done the flag
 value is 0x00010000 ;-)
 
 > There is another case in adb_op_sync() similar to the one you see in  
 > adb_read_date_time(). The adb_op_sync() version times out, though.
 
 Ok, I copied over the timeout code, and now it only warns loud if something
 goes wrong, but does not hang the whole kernel any more. Way more conveninent
 while debugging the root cause.
 
 I traced where this all fails: we end up in adb_pass_up(), comprout and 
 compdata are still correct. We then defer to the softint handler - but since
 the caller is busy waiting, we have no chance to ever run that handler before
 we timeout. Setting adb_polling=1 during this call makes it work early in
 boot, but unfortunately later hangs the whole kernel when running ntpdate
 (can't even break into ddb) - so I guess that does something very bad to the
 adb bus (which I otherwise do not use, I have serial console).
 
 Maybe adb commands should have a per command flag that indicates we are 
 polling for the result, in addition to the global flag? Or I just did
 something wrong when playing with the global flag.
 
 
 Martin
 


Home | Main Index | Thread Index | Old Index