* Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc [not found] ` <6DFB5723-0042-46FE-811F-BF372B068014@mac.com> @ 2005-10-19 17:48 ` Kyle Moffett 2005-10-19 22:13 ` Benjamin Herrenschmidt 0 siblings, 1 reply; 7+ messages in thread From: Kyle Moffett @ 2005-10-19 17:48 UTC (permalink / raw) To: Benjamin Herrenschmidt Cc: Andrew Morton, Bartlomiej Zolnierkiewicz, LKML Kernel Do you have any other ideas WRT this bug? I've been browsing around in the code a bit, and I plan to try diffing my 2.6.8.1 version of the files against the latest Debian to see what changed, although I suspect it will be a relatively fat hunk of changes. Thanks for your help! On Oct 17, 2005, at 10:35:07, Kyle Moffett wrote: > On Oct 17, 2005, at 04:08:01, Benjamin Herrenschmidt wrote: > > >>> I'm trying to upgrade the kernel in a Samba fileserver from a >>> custom- >>> compiled 2.6.8.1 to a stock Debian 2.8.12-1-powerpc and running into >>> an issue with my Sonnet Tempo ATA/100 [The card is a rebranded >>> FirmTek UltraTek/100 which is _actually_ a Promise PDC20268 with >>> Mac- >>> bootable firmware ROM]. I'm getting the following BUG() output >>> [NOTE: This was hand-copied from the screen after panic, so there >>> may >>> be typos despite me being careful to avoid them]: >>> >>> >> >> What is the machine ? >> >> > > An aging PowerMac G4 400MHz [AGP graphics]. > > > >>> PDC20268: IDE controller at PCI slot 0001:11:02.0 >>> PDC20268: chipset revision 2 >>> PDC20268: ROM enabled at 0x80090000 >>> PDC20268: 100% native mode on irq 52 >>> ide2: PDC20268 Bus-Master DMA disabled (BIOS) >>> >>> >> >> The above is probably the cause of your problem. That is, on one >> side, the code in setup-pci.c will consider your chip has disabled >> DMA (which it probably doesn't have but we'll try to figure that >> out later) and on the other side, the ide core blows up when it >> gets a disabled DMA ... There is something wrong here between ide/ >> setup-pci.c and ide/ide-dma.c ... >> >> > > I noticed that and started browsing around in the code but I don't > know it well enough to do much other than find where the log > statements are printed :-D. > > > >> Now, why does it consider your stuff disabled ? Well, that is the >> interesting thing ... >> >> Looking at the code, it could be ide_get_or_set_dma_base() >> returning 0 though I fail to see how. It's not the pci_set_master >> () call failing or we would see that printk: >> >> printk(KERN_ERR "%s: %s error updating PCICMD\n", >> hwif->name, d->name); >> >> If it was dma_base = pci_resource_start(dev, 4); then we would get >> another printk as well that we didn't get ... >> >> Can you try adding printk's yourself around there to check what >> exactly is going on here and why it's thinking DMA is not available ? >> >> > > Hmm, this will need to wait till thanksgiving week for me to be > around the machine to run tests. > > > >> Also, send the output of lspci -vv as root for this device. >> >> > > Appended; thanks! > > Cheers, > Kyle Moffett > > 0001:02:02.0 Mass storage controller: Promise Technology, Inc. > PDC20268 (Ultra100 TX2) (rev 02) (prog-if 85) > Subsystem: Promise Technology, Inc.: Unknown device ad68 > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- > ParErr- Stepping- SERR- FastB2B- > Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow > >TAbort- <TAbort- <MAbort- >SERR- <PERR- > Latency: 16 (1000ns min, 4500ns max), Cache Line Size: 0x08 > (32 bytes) > Interrupt: pin A routed to IRQ 52 > Region 0: I/O ports at 1440 [size=8] > Region 1: I/O ports at 1430 [size=4] > Region 2: I/O ports at 1420 [size=8] > Region 3: I/O ports at 1410 [size=4] > Region 4: I/O ports at 1400 [size=16] > Region 5: Memory at 800a0000 (32-bit, non-prefetchable) > [size=64K] > Expansion ROM at 80090000 [disabled] [size=64K] > Capabilities: [60] Power Management version 1 > Flags: PMEClk- DSI+ D1+ D2- AuxCurrent=0mA PME > (D0-,D1-,D2-,D3hot-,D3cold-) > Status: D0 PME-Enable- DSel=0 DScale=0 PME- > 00: 5a 10 68 4d 07 00 30 04 02 85 80 01 08 10 00 00 > 10: 41 14 00 00 31 14 00 00 21 14 00 00 11 14 00 00 > 20: 01 14 00 00 00 00 0a 80 00 00 00 00 5a 10 68 ad > 30: 01 00 09 80 60 00 00 00 00 00 00 00 34 01 04 12 > 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > 60: 01 00 21 02 00 00 00 00 00 00 00 00 00 00 00 00 > 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc 2005-10-19 17:48 ` [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc Kyle Moffett @ 2005-10-19 22:13 ` Benjamin Herrenschmidt 2005-10-19 23:14 ` Kyle Moffett 0 siblings, 1 reply; 7+ messages in thread From: Benjamin Herrenschmidt @ 2005-10-19 22:13 UTC (permalink / raw) To: Kyle Moffett; +Cc: Andrew Morton, Bartlomiej Zolnierkiewicz, LKML Kernel On Wed, 2005-10-19 at 13:48 -0400, Kyle Moffett wrote: > Do you have any other ideas WRT this bug? I've been browsing around > in the code a bit, and I plan to try diffing my 2.6.8.1 version of > the files against the latest Debian to see what changed, although I > suspect it will be a relatively fat hunk of changes. Thanks for your > help! Nope. The lspci output looks perfectly normal. I looks like a mixture of issues with BM DMA being disabled for a reason I haven't figured out and then the code crashing because it doesn't like BM-DMA being disabled ... Again, best is you pour printk's all over setup-pci.c and ide-dma.c to figure out what's going on... Ben ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc 2005-10-19 22:13 ` Benjamin Herrenschmidt @ 2005-10-19 23:14 ` Kyle Moffett 2005-10-20 1:36 ` Benjamin Herrenschmidt 0 siblings, 1 reply; 7+ messages in thread From: Kyle Moffett @ 2005-10-19 23:14 UTC (permalink / raw) To: Benjamin Herrenschmidt Cc: Andrew Morton, Bartlomiej Zolnierkiewicz, LKML Kernel On Oct 19, 2005, at 18:13:44, Benjamin Herrenschmidt wrote: > On Wed, 2005-10-19 at 13:48 -0400, Kyle Moffett wrote: > >> Do you have any other ideas WRT this bug? I've been browsing >> around in the code a bit, and I plan to try diffing my 2.6.8.1 >> version of the files against the latest Debian to see what >> changed, although I suspect it will be a relatively fat hunk of >> changes. Thanks for your >> help! >> > > Nope. The lspci output looks perfectly normal. I looks like a > mixture of issues with BM DMA being disabled for a reason I haven't > figured out and then the code crashing because it doesn't like BM- > DMA being disabled ... BusMaster-DMA definitely should be enabled on that card. After a lot of looking through icky IDE code, I've determined that the reason for the crash is that if there is a "mate", or another IDE bus on the same card, then hwif->dma_master is set to hwif->mate->dma_base on the secondary channel. Since DMA explicitly wasn't enabled on the primary channel, hwif->dma_master on the secondary is 0 even though dma is enabled, and therefore we hit that BUG(). Therefore it seems that the only issue is ide_get_or_set_dma_base is returning 0 when it should return a valid DMA base. In that function, the only ways that function can even theoretically return 0 without printing any weird error messages is "if (hwif->mmio)" or "if (hwif->mate && hwif->mate->dma_base)". The latter can't happen before hwif->mate is set up (since the problem is while initializing the primary). Could hwif->mmio be nonzero somehow? The only drivers that seem to set it are pci/sgiioc4, pci/siimage, ppc/pmac, and a couple misc arch drivers. I see a couple theoretical possibilities: * hwif->mate and hwif->mate->dma_base are set for the primary while still initializing it (before any secondary is set up. * hwif->mmio is set somehow even though it shouldn't be, is the value ever pre-initialized to 0? > Again, best is you pour printk's all over setup-pci.c and ide-dma.c > to figure out what's going on... I wish I could but the machine is remote and in-production, so it's hard to have time to do much with it. I'm trying as best I can to walk through the sources by hand, specifically with regards to changes between the two. I'm hoping I can come up with a good enough guess by Thanksgiving, so that when I have a week near the server to test things out I can make significant progress. Cheers, Kyle Moffett -- I have yet to see any problem, however complicated, which, when you looked at it in the right way, did not become still more complicated. -- Poul Anderson ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc 2005-10-19 23:14 ` Kyle Moffett @ 2005-10-20 1:36 ` Benjamin Herrenschmidt 2005-11-20 18:29 ` Kyle Moffett 0 siblings, 1 reply; 7+ messages in thread From: Benjamin Herrenschmidt @ 2005-10-20 1:36 UTC (permalink / raw) To: Kyle Moffett; +Cc: Andrew Morton, Bartlomiej Zolnierkiewicz, LKML Kernel > BusMaster-DMA definitely should be enabled on that card. After a lot > of looking through icky IDE code, I've determined that the reason for > the crash is that if there is a "mate", or another IDE bus on the > same card, then hwif->dma_master is set to hwif->mate->dma_base on > the secondary channel. Since DMA explicitly wasn't enabled on the > primary channel, hwif->dma_master on the secondary is 0 even though > dma is enabled, and therefore we hit that BUG(). > > Therefore it seems that the only issue is ide_get_or_set_dma_base is > returning 0 when it should return a valid DMA base. In that > function, the only ways that function can even theoretically return 0 > without printing any weird error messages is "if (hwif->mmio)" or "if > (hwif->mate && hwif->mate->dma_base)". The latter can't happen > before hwif->mate is set up (since the problem is while initializing > the primary). Could hwif->mmio be nonzero somehow? The only drivers > that seem to set it are pci/sgiioc4, pci/siimage, ppc/pmac, and a > couple misc arch drivers. > > I see a couple theoretical possibilities: > * hwif->mate and hwif->mate->dma_base are set for the primary > while still initializing it (before any secondary is set up. > * hwif->mmio is set somehow even though it shouldn't be, is the > value ever pre-initialized to 0? Maybe there is some fighting going on between ppc/pmac.c and that driver over the hwif's and you end up with mmio inadvertently set ? > > Again, best is you pour printk's all over setup-pci.c and ide-dma.c > > to figure out what's going on... > > I wish I could but the machine is remote and in-production, so it's > hard to have time to do much with it. I'm trying as best I can to > walk through the sources by hand, specifically with regards to > changes between the two. I'm hoping I can come up with a good enough > guess by Thanksgiving, so that when I have a week near the server to > test things out I can make significant progress. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc 2005-10-20 1:36 ` Benjamin Herrenschmidt @ 2005-11-20 18:29 ` Kyle Moffett 2005-11-20 21:00 ` Benjamin Herrenschmidt 0 siblings, 1 reply; 7+ messages in thread From: Kyle Moffett @ 2005-11-20 18:29 UTC (permalink / raw) To: Benjamin Herrenschmidt Cc: Andrew Morton, Bartlomiej Zolnierkiewicz, LKML Kernel On Oct 19, 2005, at 21:36:44, Benjamin Herrenschmidt wrote: > Kyle Moffett wrote: > >> BusMaster-DMA definitely should be enabled on that card. After a >> lot of looking through icky IDE code, I've determined that the >> reason for the crash is that if there is a "mate", or another IDE >> bus on the same card, then hwif->dma_master is set to hwif->mate- >> >dma_base on the secondary channel. Since DMA explicitly wasn't >> enabled on the primary channel, hwif->dma_master on the secondary >> is 0 even though dma is enabled, and therefore we hit that BUG(). >> This is verified by adding printks to the code. This is exactly where it crashes. >> Therefore it seems that the only issue is ide_get_or_set_dma_base >> is returning 0 when it should return a valid DMA base. In that >> function, the only ways that function can even theoretically >> return 0 without printing any weird error messages is "if (hwif- >> >mmio)" or "if (hwif->mate && hwif->mate->dma_base)". The latter >> can't happen before hwif->mate is set up (since the problem is >> while initializing the primary). Could hwif->mmio be nonzero >> somehow? The only drivers that seem to set it are pci/sgiioc4, pci/ >> siimage, ppc/pmac, and a couple misc arch drivers. >> With heavy printk debugging, I have identified that the hwif->mmio is getting set to 2 somewhere (even though the PDC driver never touches it). I added an extra line in the PDC init code to explicitly zero hwif->mmio, but I get the same result, so something else is mashing on the PDC hwif. > Maybe there is some fighting going on between ppc/pmac.c and that > driver over the hwif's and you end up with mmio inadvertently set ? > This is the only possibility that I can think of, but I'm having a hard time getting enough lines of pre-BUG output. Is there any way to turn off the BUG() lines and just show the printks before that point? Cheers, Kyle Moffett ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc 2005-11-20 18:29 ` Kyle Moffett @ 2005-11-20 21:00 ` Benjamin Herrenschmidt 2005-11-21 21:21 ` Bug in promise_new ide conteroller (was: Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc) Kasper Sandberg 0 siblings, 1 reply; 7+ messages in thread From: Benjamin Herrenschmidt @ 2005-11-20 21:00 UTC (permalink / raw) To: Kyle Moffett; +Cc: Andrew Morton, Bartlomiej Zolnierkiewicz, LKML Kernel > This is the only possibility that I can think of, but I'm having a > hard time getting enough lines of pre-BUG output. Is there any way > to turn off the BUG() lines and just show the printks before that point? There is a patch from Thibault that fixes it, it should be in 2.6.15-rc2 Ben. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Bug in promise_new ide conteroller (was: Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc) 2005-11-20 21:00 ` Benjamin Herrenschmidt @ 2005-11-21 21:21 ` Kasper Sandberg 0 siblings, 0 replies; 7+ messages in thread From: Kasper Sandberg @ 2005-11-21 21:21 UTC (permalink / raw) To: Benjamin Herrenschmidt Cc: Kyle Moffett, Andrew Morton, Bartlomiej Zolnierkiewicz, LKML Kernel i have a promise controller and it fails too, but only some times (never during startup).. i get the following errors: hdf: dma_intr: bad DMA status (dma_stat=75) hdf: dma_intr: status=0x50 { DriveReady SeekComplete } ide: failed opcode was: unknown hdf: dma_timer_expiry: dma status == 0x60 hdf: DMA timeout retry PDC202XX: Primary channel reset. hdf: timeout waiting for DMA and i know for a fact it isnt the indidual controller, as i tried with 2 other brand new ones, and i know it isnt the drives/cables/computer, since i tried switching it all around, and it keeps happening. if it does this while reading/writing the system hardlocks.. i wrote promise technical support, which said it could be caused by sharing interrupts, so i checked, and it did share with my NIC, so i switched to another pci slot, and now it has its own interrupt, YET it still keeps doing this.. i would greatly apreciate any help On Mon, 2005-11-21 at 08:00 +1100, Benjamin Herrenschmidt wrote: > > This is the only possibility that I can think of, but I'm having a > > hard time getting enough lines of pre-BUG output. Is there any way > > to turn off the BUG() lines and just show the printks before that point? > > There is a patch from Thibault that fixes it, it should be in 2.6.15-rc2 > > Ben. > > > - > 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/ > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2005-11-21 21:21 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20051017005855.132266ac.akpm@osdl.org>
[not found] ` <1129536482.7620.76.camel@gaston>
[not found] ` <6DFB5723-0042-46FE-811F-BF372B068014@mac.com>
2005-10-19 17:48 ` [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc Kyle Moffett
2005-10-19 22:13 ` Benjamin Herrenschmidt
2005-10-19 23:14 ` Kyle Moffett
2005-10-20 1:36 ` Benjamin Herrenschmidt
2005-11-20 18:29 ` Kyle Moffett
2005-11-20 21:00 ` Benjamin Herrenschmidt
2005-11-21 21:21 ` Bug in promise_new ide conteroller (was: Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc) Kasper Sandberg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox