Date: Mon, 11 Jul 2005 11:45:20 -0400 From: John Baldwin <jhb@FreeBSD.org> To: freebsd-current@freebsd.org Cc: Harry Coin <harrycoin@qconline.com> Subject: Re: mss.c pcm fix to ' attach returned 6 ' load failure for v5.x acpi and up Message-ID: <200507111145.21467.jhb@FreeBSD.org> In-Reply-To: <4.3.2.7.2.20050711100325.01f2a108@mail.qconline.com> References: <4.3.2.7.2.20050711100325.01f2a108@mail.qconline.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 11 July 2005 11:15 am, Harry Coin wrote: > The architecture / driver manual has this item: > > "That means that absolutely every driver, even the ones not supporting any > PnP devices must call ISA_PNP_PROBE(), at least with an empty PnP ID table > to return failure on unknown PnP > devices." > (http://www.google.com/search?num=100&hl=en&lr=&newwindow=1&q=freebsd+archi >tect+isa+driver) > > However in mss.c, routine mss_probe we have in the non pnp device detection > routine > > if (isa_get_logicalid(dev)) return ENXIO; > > which causes the acpi driver to fail to attach multiple times, and to > ratchet up x in the pcmx device before giving up. Often this leads to the > isa routine not calling the pnp version of the probe routine and the whole > pcm load fails or loads the first and only sound driver on a pcm number > like 3 or 6. Booting without ACPI gives normal results. > > The fix in mss.c is: > > static struct isa_pnp_id mss_ids[] = { > {0} > }; > > static int > mss_probe(device_t dev) > { > u_char tmp, tmpx; > int flags, irq, drq, result = ENXIO, setres = 0; > struct mss_info *mss; > result = ISA_PNP_PROBE(device_get_parent(dev), dev, mss_ids); > if (result!=ENOENT) return ENXIO; /* only continue if the device > is not pnp */ > /* old way- not so good for ACPI: if (isa_get_logicalid(dev)) > return ENXIO; */ > > Sincerely, > > Harry Coin If this is broken then there are a lot of drivers that need fixing. It sounds like ACPI needs fixing instead. I don't see why pcm's unit number would go up, however, as a device reverts back to 'unknown' with a unit of -1 when a probe() function fails. Can you provide more details such as a verbose dmesg for both the ACPI and non-ACPI cases without your change? -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200507111145.21467.jhb>