2.6.13 PowerBook boot hang (was Re: 2.6.13-rc7-git2 crashes on iBook)

Subsystems: pci subsystem, the rest

2 messages, 2 authors, 2005-08-29 · open the first message on its own page

2.6.13 PowerBook boot hang (was Re: 2.6.13-rc7-git2 crashes on iBook)

From: Sean Neakums <hidden>
Date: 2005-08-29 10:56:20

Andreas Schwab [off-list ref] writes:
The last change to drivers/pci/setup-res.c (Ignore disabled ROM resources
at setup) is breaking radeonfb on iBook G3 (with Radeon Mobility M6 LY).
It crashes in pci_map_rom when called from radeonfb_map_ROM.  This is
probably a dormant bug that was just uncovered by the change.
2.6.13 hangs on boot on my PowerBook 5.4, reverting the disabled ROM
patch (appended for confirmation) fixes it.  2.6.13-rc7 was fine.


diff-tree 755528c860b05fcecda1c88a2bdaffcb50760a7f (from 26aad69e3dd854abe9028ca873fb40b410a39dd7)
Author: Linus Torvalds [off-list ref]
Date:   Fri Aug 26 10:49:22 2005 -0700

    Ignore disabled ROM resources at setup
    
    Writing even a disabled value seems to mess up some matrox graphics
    cards.  It may be a card-related issue, but we may also be writing
    reserved low bits in the result.
    
    This was a fall-out of switching x86 over to the generic PCI resource
    allocation code, and needs more debugging.  In particular, the old x86
    code defaulted to not doing any resource allocations at all for ROM
    resources.
    
    In the meantime, this has been reported to make X happier by Helge
    Hafting [off-list ref].
    
    Signed-off-by: Linus Torvalds [off-list ref]
diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
--- a/drivers/pci/setup-res.c
+++ b/drivers/pci/setup-res.c
@@ -53,7 +53,9 @@ pci_update_resource(struct pci_dev *dev,
 	if (resno < 6) {
 		reg = PCI_BASE_ADDRESS_0 + 4 * resno;
 	} else if (resno == PCI_ROM_RESOURCE) {
-		new |= res->flags & IORESOURCE_ROM_ENABLE;
+		if (!(res->flags & IORESOURCE_ROM_ENABLE))
+			return;
+		new |= PCI_ROM_ADDRESS_ENABLE;
 		reg = dev->rom_base_reg;
 	} else {
 		/* Hmm, non-standard resource. */

Re: 2.6.13 PowerBook boot hang (was Re: 2.6.13-rc7-git2 crashes on iBook)

From: Mikael Pettersson <hidden>
Date: 2005-08-29 18:17:56

Sean Neakums writes:
 > Andreas Schwab [off-list ref] writes:
 > 
 > > The last change to drivers/pci/setup-res.c (Ignore disabled ROM resources
 > > at setup) is breaking radeonfb on iBook G3 (with Radeon Mobility M6 LY).
 > > It crashes in pci_map_rom when called from radeonfb_map_ROM.  This is
 > > probably a dormant bug that was just uncovered by the change.
 > 
 > 2.6.13 hangs on boot on my PowerBook 5.4, reverting the disabled ROM
 > patch (appended for confirmation) fixes it.  2.6.13-rc7 was fine.

Same here, on an Apple eMac with Radeon graphics. 2.6.13-rc7 worked fine,
2.6.13 vanilla hangs early in the boot when radeonfb is about to take over
from OF. Reverting the patch below eliminates the hang.

/Mikael

 > diff-tree 755528c860b05fcecda1c88a2bdaffcb50760a7f (from 26aad69e3dd854abe9028ca873fb40b410a39dd7)
 > Author: Linus Torvalds [off-list ref]
 > Date:   Fri Aug 26 10:49:22 2005 -0700
 > 
 >     Ignore disabled ROM resources at setup
 >     
 >     Writing even a disabled value seems to mess up some matrox graphics
 >     cards.  It may be a card-related issue, but we may also be writing
 >     reserved low bits in the result.
 >     
 >     This was a fall-out of switching x86 over to the generic PCI resource
 >     allocation code, and needs more debugging.  In particular, the old x86
 >     code defaulted to not doing any resource allocations at all for ROM
 >     resources.
 >     
 >     In the meantime, this has been reported to make X happier by Helge
 >     Hafting [off-list ref].
 >     
 >     Signed-off-by: Linus Torvalds [off-list ref]
 > 
 > diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
 > --- a/drivers/pci/setup-res.c
 > +++ b/drivers/pci/setup-res.c
 > @@ -53,7 +53,9 @@ pci_update_resource(struct pci_dev *dev,
 >  	if (resno < 6) {
 >  		reg = PCI_BASE_ADDRESS_0 + 4 * resno;
 >  	} else if (resno == PCI_ROM_RESOURCE) {
 > -		new |= res->flags & IORESOURCE_ROM_ENABLE;
 > +		if (!(res->flags & IORESOURCE_ROM_ENABLE))
 > +			return;
 > +		new |= PCI_ROM_ADDRESS_ENABLE;
 >  		reg = dev->rom_base_reg;
 >  	} else {
 >  		/* Hmm, non-standard resource. */
 > -
 > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
 > the body of a message to majordomo@vger.kernel.org
 > More majordomo info at  http://vger.kernel.org/majordomo-info.html
 > Please read the FAQ at  http://www.tux.org/lkml/
 > 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help