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

[Xen-devel] nFroce SATA lockup - problem location tracked down

  • To: xen-devel@xxxxxxxxxxxxxxxxxxxxx
  • From: Milan Holzäpfel <lists@xxxxxxxx>
  • Date: Wed, 1 Dec 2004 21:37:05 +0100
  • Delivery-date: Wed, 01 Dec 2004 20:38:34 +0000
  • List-id: List for Xen developers <xen-devel.lists.sourceforge.net>

Hash: SHA1


I finally did some more tests with system with nForce3-250Gb SATA
controller, whose driver locks the system at boot time when inside xen.

The following was used:
 - mobo with nForce3-250 Gb chipset, which has got a S-ATA controller
 - sata_nv from 2.6.10-rc2-bk11 pushed into vanilla 2.6.9, patched with 
   Xen and reiser4
 - some Xen stable bk snapshot from a few days ago

Files: <URL:http://mjh.name/misc-files/xen-caps-20041130/>

 - cap.*: captures from serial console
 - cap.linux.*: native linux bootup
 - cap.xenolinux.*: linux inside xen bootup
 - cap.*.dbg.*: kernel command line option "debug" passed
 - cap.*.nd-dbg: libata debug enabled (ATA_DEBUG, ATA_VERBOSE_DEBUG, 
 - also the are two kernel .config files, and lspci output 
   (from native linux)
 - cap.xenolinux.extra-dbg:  log output with some extra dbg options
   added by me
 - driver/scsi/libata-core.c, include/linux/libata.h, kernel/sched.c:
   files with my extra stuff added

The lockup takes place in drivers/scsi/libata-core.c, in function
ata_dev_set_xfermode().  The call which does not return is
wait_for_completion(&wait) (line 1837).

Inside wait_for_completion(), which is defined in kernel/sched.c, the
last call of this function is schedule(), line 2862.  I added some extra
debug output into wait_for_completion() and schedule(), which shows that
schedule() runs on and on, checking some stuff each few moments.  I'd
assume that schedule() checks whether the thread locked by
wait_for_completion should get unlocked, but this condition never seems
to be fulfilled, maybe because of some address glibberish or whatever.

At the site mentioned above you can also find my modified version of
libata-core.c, libata.h and sched.c, and the boot output when using
these versions (cap.xenolinux.extra-dbg).

Now I'd hope that this information will help you to get a closer view of
the problem, and maybe even get an idea of a solution, since the deeper
I dig into all this code, the more other code I have to read to get an
idea of what's actually going on.  (and hey, I am by no means sth. like
a experienced C programmer ;) ) 

I'd be happy to provide whatever other information might be useful,


- -- 

                   Milan Holzäpfel alias jagdfalke alias jag

Antworten direkt an mich                             Answers directly to me
gehen bitte an eine Addresse,                        go to an address one
die man hier finden kann:                            can find here, please:

Kontaktinfos sowie                                   Contact infos as well as
Öff GnuPG-Schlüssel    <URL:http://con.mjh.name/>    GnuPG Public Key
GnuPG Fingerabdruck     4C8A 5FAF 5D32 6125 89D1     GnuPG Fingerprint
                        0CE5 DB0C AF4F 6583 7966


Version: GnuPG v1.2.6 (GNU/Linux)


SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.