cvs commit: src/sys/dev/acpica acpi.c

Warner Losh imp at harmony.village.org
Sun Dec 5 14:29:10 PST 2004


From: Nate Lawson <nate at root.org>
Subject: Re: cvs commit: src/sys/dev/acpica acpi.c
Date: Sun, 05 Dec 2004 14:16:38 -0800

> M. Warner Losh wrote:
> > In message: <200412050135.iB51ZJJl040909 at repoman.freebsd.org>
> >             Nate Lawson <njl at FreeBSD.org> writes:
> > :   If we are resuming non-MPSAFE drivers, they need Giant held for them.
> > 
> > Generally, when walking the device tree, one must have Giant.  I've
> > been meaning to add asserts for this in the tree...  I think that we
> > have enough things giant is pushed out of that it is time...
> 
> I'd like that.  I think the GIANT_REQUIRED asserts should go in the 
> root_bus suspend/resume/shutdown methods, not in acpi.  This will cover 
> everyone unless a driver drops Giant and doesn't reacquire it (unlikely).

Agreed.  I'm moving stuff in as soon as I verify that it works, or has
a high likelood of succeeding.  There's a few other places I want to
add them as well, and will do so over the coming weeks.

Drivers aren't allowed to drop Giant in these calls.  Giant is used to
control the layout of the device tree at the moment, and if you drop
Giant, then you can get back into the code that changes the layout of
the tree.  I plan on fixing this in the future, but at the moment, you
must not drop Giant.  And you also should have Giant on any calls to
device_get_children and hold it until just before the free of the
child list.

Once I have all the Giant asserts in place, I plan on moving forward
with removing the need for Giant, but right now the restrictions are
what they are...

Warner


More information about the cvs-all mailing list