cvs commit: src/sys/i386/i386 bios.c
John Baldwin
jhb at FreeBSD.org
Thu Jun 17 20:16:16 GMT 2004
On Thursday 17 June 2004 03:43 pm, M. Warner Losh wrote:
> In message: <200406171538.08813.jhb at FreeBSD.org>
>
> John Baldwin <jhb at FreeBSD.org> writes:
> : On Thursday 17 June 2004 03:25 pm, M. Warner Losh wrote:
> : > In message: <200406171247.04461.jhb at FreeBSD.org>
> : >
> : > John Baldwin <jhb at FreeBSD.org> writes:
> : > : On Tuesday 15 June 2004 11:02 pm, M. Warner Losh wrote:
> : > : > In message: <200406152008.50656.jhb at FreeBSD.org>
> : > : >
> : > : > John Baldwin <jhb at freebsd.org> writes:
> : > : > : On Monday 14 June 2004 10:12 pm, Nate Lawson wrote:
> : > : > : > njl 2004-06-15 02:12:12 UTC
> : > : > : >
> : > : > : > FreeBSD src repository
> : > : > : >
> : > : > : > Modified files:
> : > : > : > sys/i386/i386 bios.c
> : > : > : > Log:
> : > : > : > We only need the devclass_find() result, not the softc.
> : > : > :
> : > : > : The devclass still exists if there is no acpi0 device due to 'set
> : > : > : hint.acpi.0.disabled=1'. Perhaps devclass_get_device() is more
> : > : > : appropriate than devclass_get_softc() though.
> : > : >
> : > : > The hint is insufficient to create the devclass, I believe. It
> : > : > exists because there's a node in the tree or could be a node in the
> : > : > tree. devclass_get_device() and checking to see if it is attached
> : > : > might be even better.
> : > :
> : > : The devclass exists even if there is no acpi0 device is my point. If
> : > : acpi.ko is loaded or compiled into the kernel, then the driver is
> : > : going to be loaded and the devclass added to the kernel's list.
> : >
> : > I think we're saying basically the same thing and arguing over how it
> : > gets there :-)
> : >
> : > Fetching the softc likely isn't the right answer.
> : > device_is_attached(dev) is likely a better way to go.
> :
> : Yes, using that instead of getting the softc would be fine. However, it
> : would need to check that the passed in dev is NULL in that case. You
> : would need to do:
> :
> : device_t acpidev;
> :
> : acpidev = devclass_get_device(devclass_find("acpi"), 0);
> : if (acpidev != NULL && device_is_attached(acpidev))
> : return;
> :
> : rather than:
> :
> : if (devclass_get_softc(devclass_find("acpi"), 0) != NULL)
> : return;
>
> True.
>
> : Which requires an extra variable, etc. If device_is_attached() checked
> : for NULL argument you could do:
> :
> : if (device_is_attached(devclass_get_device(devclass_find("acpi"), 0)))
> : return;
>
> Easy enough to arrange...
I went ahead and did this, I just haven't compiled or booted with it yet:
>Index: bios.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/i386/bios.c,v
retrieving revision 1.69
diff -u -r1.69 bios.c
--- bios.c 17 Jun 2004 17:27:37 -0000 1.69
+++ bios.c 17 Jun 2004 20:14:19 -0000
@@ -555,8 +555,9 @@
if (pt == NULL)
return;
- /* ACPI already active */
- if (devclass_get_softc(devclass_find("acpi"), 0) != NULL)
+ /* Check to see if ACPI is already active. */
+ dev = devclass_get_device(devclass_find("acpi"), 0);
+ if (dev != NULL && device_is_attached(dev))
return;
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the cvs-src
mailing list