Re: mss.c pcm fix to ' attach returned 6 ' load failure for v5.x acpi and up

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Mon, 11 Jul 2005 13:58:46 -0400
On Monday 11 July 2005 01:30 pm, Harry Coin wrote:
> John,
>
> The verbose dmesg doesn't tell you enough.  What was needed was debug
> writes in the pnp and non pnp  mss.c probe routines that displayed the
> parent device id and the probed device id.  That solved it because there
> you could see the acpi parent calling the non-pnp isa mss probe routine
> (mss_probe) which would _accept_ the probe, wrongly, on a few various
> attempts, only to have the non pnp mss_attach fail for lack of resources.

Well, that would be helpful to see as well. :)  It would be helpful to dump 
the name of the parent device via device_get_nameunit(device_get_parent(dev)) 
if you aren't already.

> I haven't looked into the newbus logic enough to know for sure but my hunch
> is that the current mss.c call to detect pnp and so avoid to use the non
> pnp probe code (isa_get_logicalid) didn't get mapped through the
> acpi_isa_xxx but instead the isa routine directly-- which returned a zero
> in the context of an ACPI parent bus-- signaling not-a-pnp device -- while
> the acpi version would not have done.  Hence the directive in the manual to
> use the ISA_PNP_PROBE even on non-PNP probe routines.

Well, isa_get_logicalid() just asks the parent device for the ISA logical ID 
IVAR which maps to a call to bus_read_ivar().  For the non-ACPI case, it is 
implemented by returning the id read by the PnP code in in isa_read_ivar() in 
sys/isa/isa_common.c.  However, for devices that are children of acpi0, they 
call acpi_read_ivar() which does end up calling acpi_isa_get_logicalid():

static int
acpi_read_ivar(device_t dev, device_t child, int index, uintptr_t *result)
{
    ...
    case ISA_IVAR_LOGICALID:
	*(int *)result = acpi_isa_get_logicalid(child);
	break;
    ...
    return (0);
}

So, you see, isa_get_logicalid() should work fine, and it's actually something 
that many ISA device drivers use to avoid probing PnP devices, so the root 
problem needs to be fixed if acpi_isa_get_logicalid() has a bug.

-- 
John Baldwin <jhb_at_FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
Received on Mon Jul 11 2005 - 16:04:48 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:38 UTC