Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Oct 2000 10:29:27 -0500 (CDT)
From:      Jonathan Lemon <jlemon@flugsvamp.com>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/21773: panic w/nexus + ata (ivar problem)
Message-ID:  <200010031529.e93FTRY18629@prism.flugsvamp.com>

next in thread | raw e-mail | index | archive | help

>Number:         21773
>Category:       kern
>Synopsis:       panic w/nexus + ata (ivar problem)
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Oct 05 09:40:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Jonathan Lemon
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
>Environment:

	-current as of Tue, Oct 2, 2000

>Description:

	After the nexus/ivar change around Sep 28, my kernel no longer
	boots.  This seems to be a disagreement over how ivars are used
	in the kernel.  Within nexus_alloc_resource(), we have the 
	following:

#define DEVTONX(dev)       ((struct nexus_device *)device_get_ivars(dev))
		struct nexus_device *ndev = DEVTONX(child);

	where ``child'' happens to be ata1.  However, within ata/ata-all.c,
	There is the following statement:

		device_set_ivars(child, (void *)(uintptr_t) unit);

	So when nexus_alloc_resource() is called, it ends up treating the
	unit as a pointer.  I'm not sure what the new world order mandates
	here; what is the legal usage of ivar?

	Additional debug infromation from the nexus_alloc_resource()
	stack frame:

(kgdb) p *dev
$4 = {ops = 0xc0a57000, link = {tqe_next = 0x0, tqe_prev = 0xc0721410}, 
  parent = 0xc0721400, children = {tqh_first = 0xc0a6f300, 
    tqh_last = 0xc0a6f184}, driver = 0xc02fb38c, devclass = 0xc0725300, 
  unit = 0, nameunit = 0xc071d640 "nexus0", desc = 0x0, busy = 0, 
  state = DS_ALIVE, devflags = 0, flags = 19, order = 0 '\000', 
  pad = 0 '\000', ivars = 0x0, softc = 0xc071d620}
(kgdb) p *child
$5 = {ops = 0xc0a43000, link = {tqe_next = 0x0, tqe_prev = 0xc0a70804}, 
  parent = 0xc0a70f00, children = {tqh_first = 0x0, tqh_last = 0xc0a70790}, 
  driver = 0xc02f5ce4, devclass = 0xc0718ce0, unit = 1, 
  nameunit = 0xc071d390 "ata1", desc = 0x0, busy = 0, state = DS_NOTPRESENT, 
  devflags = 0, flags = 3, order = 0 '\000', pad = 0 '\000', ivars = 0x1, 
  softc = 0xc0a70680}


>How-To-Repeat:

	

>Fix:

	


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200010031529.e93FTRY18629>