On Fri, 2010-04-30 at 22:03 -0600, Bjorn Helgaas wrote: > Pavel wrote: > > i am playing with old PIII computer (HP Vectra VE) and ISA soundcards. > > Soundcars are PNP(yamaha,opti,ess,...) and no PNP (multisound). > > Machine > > is old, but ACPI compilant - old BIOS. > > > > Computer booting OK. PNP0 devices allocate resources OK, but PNP1 > > devices (one ISA slot) not. PNP soundcard driver is not correctly > > loaded > > - soundcard device not created. > > I think this is a regression, i.e., 2.6.33 worked, but 2.6.34-rc6 does > not. Right? Even worse, I think it's my fault :-( If this is a > regression, we should open a bugzilla at http://bugzilla.kernel.org and > assign it to me. 2.6.33 kernel working without problem. > > Here's the problem (I think): > > pnp 00:01: parse allocated resources > pnp 00:01: add [bus 00-ff flags 0x1000] > pnp 00:01: add [io 0x0000-0x0cf7 flags 0x200101] > pnp 00:01: Plug and Play ACPI device, IDs PNP0a03 (active) > > This PNP0a03 PCI host bridge has a window [io 0x0000-0x0cf7] that is > forwarded to the PCI bridge. This is perfectly normal, but in 2.6.33, > PNPACPI ignored that window, so it didn't appear as a PNP resource of > the bridge. > > cmi8330 01:01.00: pnp_assign_resources, try dependent set 0 > cmi8330 01:01.00: trying to assign [??? 0x00000530-0x00000537 flags 0x40000001] > cmi8330 01:01.00: check whether [??? 0x00000530-0x00000537 flags 0x40000001] is available > cmi8330 01:01.00: conflict with 00:01 resource 1 [io 0x0000-0x0cf7 flags 0x200101] > cmi8330 01:01.00: couldn't assign io 0 (min 0x530 max 0x530) > > Now we come along and try to assign [io 0x0530-0x0537] to the cmi8330 > device. The last piece of pnp_check_port() checks it against all > resources of other PNP devices, including the PNP0a03 host bridge > window. We should ignore windows, because the bridge doesn't *consume* > that range, it only *forwards* it, so it's still available for devices > to use. > > I'd like to rework PNP resource management to make it more similar to > PCI's, or even integrate them somehow. But we only have time for the > most minimal fix for 2.6.34. Can you try the patch below, please? Yes, with your patch is soundcard working. More in attachment. > > Bjorn Pavel > > > diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c > index 2e54e6a..e3446ab 100644 > --- a/drivers/pnp/resource.c > +++ b/drivers/pnp/resource.c > @@ -211,6 +211,8 @@ int pnp_check_port(struct pnp_dev *dev, struct resource *res) > if (tres->flags & IORESOURCE_IO) { > if (cannot_compare(tres->flags)) > continue; > + if (tres->flags & IORESOURCE_WINDOW) > + continue; > tport = &tres->start; > tend = &tres->end; > if (ranged_conflict(port, end, tport, tend)) > @@ -271,6 +273,8 @@ int pnp_check_mem(struct pnp_dev *dev, struct resource *res) > if (tres->flags & IORESOURCE_MEM) { > if (cannot_compare(tres->flags)) > continue; > + if (tres->flags & IORESOURCE_WINDOW) > + continue; > taddr = &tres->start; > tend = &tres->end; > if (ranged_conflict(addr, end, taddr, tend)) > >
Attachment:
dmesg.gz
Description: GNU Zip compressed data