From mboxrd@z Thu Jan 1 00:00:00 1970 From: Helge Deller Subject: Re: pci 0000:01:04.0: BAR 0: no parent found for of device Date: Tue, 10 Nov 2009 22:55:05 +0100 Message-ID: <4AF9E139.7000002@gmx.de> References: <4AF099F7.10903@gmx.de> <20091106062234.GC4574@lackof.org> <4AF4890B.4050700@gmx.de> <20091106235405.GC5262@lackof.org> <20091106235525.GD5262@lackof.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Cc: linux-parisc@vger.kernel.org To: Grant Grundler Return-path: In-Reply-To: <20091106235525.GD5262@lackof.org> List-ID: List-Id: linux-parisc.vger.kernel.org On 11/07/2009 12:55 AM, Grant Grundler wrote: > On Fri, Nov 06, 2009 at 04:54:05PM -0700, Grant Grundler wrote: >> On Fri, Nov 06, 2009 at 09:37:31PM +0100, Helge Deller wrote: >>>> IIRC, the graphics frame buffers are routed by every Elroy ELMMIO register >>>> on all 4 Elroys. If you can get the machine to NOT HPMC, >>>> ELMMIO resources should be listed in /proc/iomem for workstations. >>> >>> Ok, the good thing is, that it doesn't HPMCs. >>> But sadly I have no clue about what you write above :-( >> >> Heh...Here is a short and probably inadequate explanation. >> >> Elroy has 3 MMIO range registers that determine which physical >> addresses will get routed down to the PCI bus: >> LMMIO 32-bit MMIO address range >> ELMMIO "Extra" 32-bit MMIO address range >> GMMIO 64-bit MMIO address range >> >> The Astro that is upstream (via ropes) is also programmed to route >> specific addresses to specific Elroy devices. Including the ELMMIO >> and GMMIO ranges. >> >> The upstream routing is essentially the negative decoding of the >> downstream routing. So if f9000000-f9ffffff is routed down to >> elroy with PCI01, then any addresses generated by the PCI devices >> OUTSIDE of that range will get routed upstream since Elroy >> is designed to believe there is no device on that bus that will >> respond to addresses outside that range. >> >> It might be easiest to think of each MMIO transaction (read or write) >> as a network packet traversing a fabric and the MMIO address is >> the equivalent to an IP address. Each component in the path has >> a "routing table" (one or more MMIO range registers) to decide >> what to do with the packet. >> >>> >>> Syslog says: >>> SBA found Astro 2.1 at 0xfed00000 >>> Elroy version TR4.0 (0x5) found at 0xfed30000 >>> PCI: Enabled native mode for NS87415 (pif=0x8f) >>> Elroy version TR4.0 (0x5) found at 0xfed32000 >>> pci 0000:01:04.0: BAR 0: no parent found for of device [0xfa000000-0xfbffffff] >>> iosapic: hpa not registered for 0000:01:04.0 >>> iosapic: hpa not registered for 0000:01:05.0 >>> Elroy version TR4.0 (0x5) found at 0xfed38000 >>> Elroy version TR4.0 (0x5) found at 0xfed3c000 >>> iosapic: hpa not registered for 0000:03:02.0 >>> powersw: Soft power switch at 0xf0400804 enabled. >>> >>> >>> Maybe it's important, that 2 Elroys are detected before the BAR0 message and 2 afterwards? >> >> Yes, I think it is. There are two ELMMIO ranges being routed to PCI01 and >> PCI03. Need to determine if those are the right PCI busses (ergo Elroy) >> for those devices and that the same resources are available in the kernel >> that is failing to boot. Just hack lba_pci.c to dump more info about >> the address routing while it's booting. I added the patch from Matthew from http://lkml.org/lkml/2009/8/2/106. Here is the log. Does this helps? Elroy version TR4.0 (0x5) found at 0xfed30000 PCI: Enabled native mode for NS87415 (pif=0x8f) Inserting resource 0000:00:0c.0 [0x1000-0x107f] (BAR 0) inside resource PCI00 Ports [0x00-0x1fff] Inserting resource 0000:00:0c.0 [0xf2008000-0xf20083ff] (BAR 1) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0c.0 [0xf2040000-0xf207ffff] (BAR 6) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0d.0 [0xf200c000-0xf200c1ff] (BAR 0) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0d.0 [0xf200b000-0xf200b00f] (BAR 1) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0d.0 [0xf200a000-0xf200a00f] (BAR 2) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0d.0 [0xf2009000-0xf200900f] (BAR 3) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0e.0 [0xf00-0xf07] (BAR 0) inside resource PCI00 Ports [0x00-0x1fff] Inserting resource 0000:00:0e.0 [0xe00-0xe03] (BAR 1) inside resource PCI00 Ports [0x00-0x1fff] Inserting resource 0000:00:0e.0 [0xd00-0xd07] (BAR 2) inside resource PCI00 Ports [0x00-0x1fff] Inserting resource 0000:00:0e.0 [0xb00-0xb03] (BAR 3) inside resource PCI00 Ports [0x00-0x1fff] Inserting resource 0000:00:0e.0 [0xa00-0xa0f] (BAR 4) inside resource PCI00 Ports [0x00-0x1fff] Inserting resource 0000:00:0e.2 [0xf2007000-0xf2007fff] (BAR 0) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0e.2 [0xf2006000-0xf2006fff] (BAR 1) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0f.0 [0x900-0x9ff] (BAR 0) inside resource PCI00 Ports [0x00-0x1fff] Inserting resource 0000:00:0f.0 [0xf2005000-0xf20053ff] (BAR 1) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0f.0 [0xf2002000-0xf2003fff] (BAR 3) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0f.1 [0x800-0x8ff] (BAR 0) inside resource PCI00 Ports [0x00-0x1fff] Inserting resource 0000:00:0f.1 [0xf2004000-0xf20043ff] (BAR 1) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Inserting resource 0000:00:0f.1 [0xf2000000-0xf2001fff] (BAR 3) inside resource PCI00 LMMIO [0xf2000000-0xf23fffff] Elroy version TR4.0 (0x5) found at 0xfed32000 No parent found for resource 0000:01:04.0 [0xfa000000-0xfbffffff] pci 0000:01:04.0: BAR 0: no parent found for of device [0xfa000000-0xfbffffff] Inserting resource 0000:01:04.0 [0xf2400000-0xf240ffff] (BAR 6) inside resource PCI01 LMMIO [0xf2400000-0xf27fffff] iosapic: hpa not registered for 0000:01:04.0 Inserting resource 0000:01:05.0 [0xf9000000-0xf9ffffff] (BAR 0) inside resource PCI01 ELMMIO [0xf9000000-0xf9ffffff] iosapic: hpa not registered for 0000:01:05.0 Elroy version TR4.0 (0x5) found at 0xfed38000 Inserting resource 0000:02:01.0 [0xf3000000-0xf3003fff] (BAR 0) inside resource PCI02 LMMIO [0xf3000000-0xf33fffff] Inserting resource 0000:02:03.0 [0x28000-0x2807f] (BAR 0) inside resource PCI02 Ports [0x28000-0x29fff] Inserting resource 0000:02:03.0 [0xf3004000-0xf300407f] (BAR 1) inside resource PCI02 LMMIO [0xf3000000-0xf33fffff] Inserting resource 0000:02:03.0 [0xf3040000-0xf307ffff] (BAR 6) inside resource PCI02 LMMIO [0xf3000000-0xf33fffff] Elroy version TR4.0 (0x5) found at 0xfed3c000 Inserting resource 0000:03:02.0 [0xf6000000-0xf7ffffff] (BAR 0) inside resource PCI03 ELMMIO [0xf6000000-0xf7ffffff] Inserting resource 0000:03:02.0 [0xf3800000-0xf39fffff] (BAR 6) inside resource PCI03 LMMIO [0xf3800000-0xf3bfffff] iosapic: hpa not registered for 0000:03:02.0 >>> and here is /proc/iomem: >>> root@c3000:~# cat /proc/iomem >>> 00000000-7fffffff : System RAM >>> 00000000-000009ff : PDC data (Page Zero) >>> 00100000-00602fff : Kernel code >>> 00603000-0073bfff : Kernel data >>> f05d0000-f05d0000 : lcd_data >>> f05d0008-f05d0008 : lcd_cmd >>> f2000000-f23fffff : PCI00 LMMIO >>> f2000000-f2001fff : 0000:00:0f.1 >>> f2000000-f2001fff : sym53c8xx >>> f2002000-f2003fff : 0000:00:0f.0 >>> f2002000-f2003fff : sym53c8xx >>> f2004000-f20043ff : 0000:00:0f.1 >>> f2004000-f20043ff : sym53c8xx >>> f2005000-f20053ff : 0000:00:0f.0 >>> f2005000-f20053ff : sym53c8xx >>> f2006000-f2006fff : 0000:00:0e.2 >>> f2007000-f2007fff : 0000:00:0e.2 >>> f2007000-f2007fff : ohci_hcd >>> f2008000-f20083ff : 0000:00:0c.0 >>> f2008000-f20083ff : tulip >>> f2009000-f200900f : 0000:00:0d.0 >>> f200a000-f200a00f : 0000:00:0d.0 >>> f200b000-f200b00f : 0000:00:0d.0 >>> f200c000-f200c1ff : 0000:00:0d.0 >>> f2040000-f207ffff : 0000:00:0c.0 >>> f2400000-f27fffff : PCI01 LMMIO >>> f2400000-f240ffff : 0000:01:04.0 >>> f3000000-f33fffff : PCI02 LMMIO >>> f3000000-f3003fff : 0000:02:01.0 >>> f3004000-f300407f : 0000:02:03.0 >>> f3004000-f300407f : tulip >>> f3040000-f307ffff : 0000:02:03.0 >>> f3800000-f3bfffff : PCI03 LMMIO >>> f3800000-f39fffff : 0000:03:02.0 >>> f6000000-f7ffffff : PCI03 ELMMIO >>> f6000000-f7ffffff : 0000:03:02.0 >>> f9000000-f9ffffff : PCI01 ELMMIO >>> f9000000-f9ffffff : 0000:01:05.0 >> >> I suspect how these are parented has changed. >> IIRC, Astro already "owns" this resource - but they aren't PCI devices. >> I don't recall offhand how the resource is (if at all) advertised and >> which Elroy's can even claim specific MMIO ranges. >> >> If the "fb at f6000000 (32 MB)" is coming from the PCI03 Elroy, then >> you can be sure the MMIO resource is not being advertised correctly. >> But the output below suggests its from PCI bus 1 (== PCI01 ? need to check). >> >> hth, >> grant >> >>> fed00000-fed00fff : 10 >>> fed30000-fed30fff : 10:0 >>> fed32000-fed32fff : 10:1 >>> fed38000-fed38fff : 10:4 >>> fed3c000-fed3cfff : 10:6 >>> fef00000-feffffff : Astro Intr Ack >>> fff80000-fffaffff : Central Bus >>> fffa0000-fffa0fff : 32 >>> fffb0000-fffdffff : Local Broadcast >>> fffe0000-ffffffff : Global Broadcast >>> >>> >>> >>>>> ... >>>>> STI GSC/PCI core graphics driver Version 0.9a >>>>> sti 0000:01:04.0: device not available because of BAR 0 [0xfa000000-0xfbffffff] collisions >>>>> sti 0000:01:04.0: Cannot enable PCI device >>>>> ^^^ HERE >>>>> sti: probe of 0000:01:04.0 failed with error -22 >>>>> STI PCI graphic ROM found at f3800000 (2048 kB), fb at f6000000 (32 MB) >>>>> id 35acda30-9a02587, conforms to spec rev. 8.0d >>>>> graphics card name: A1262A >>>>> sticon: Initializing STI text console. >>>>> Console: switching to colour STI console 128x48 >>>>> stifb: 'A1262A' (id: 0x35acda30) not supported. >>>>> Linux agpgart interface v0.103 >>>>> .... >>>>> >>>>> Hopefully someone of you has an idea what caused this change? >>>> >>>> The automatic resource parenting code has changed a few times back >>>> and forth over the last 2-3 major releases. I've lost track >>>> but suspect it's probably easier to just look at what the >>>> LBA range registers say (set up by PDC) and then get the PCI subsystem >>>> to advertise those resources in a reasonable way. >>> >>> How can I see/check the LBA range registers? >>> Where is the advertising done? >>> Sorry, but I have no clue about PCI/LBA/Elroy/... ? >>> >>>> TBH, I'd rather spent a few hours this weekend debugging the PCI-PCI bridge >>>> support on PAT machines. >>> >>> Understood. >>> Any hints or untested patches would be great though... >>> >>>> hth, >>>> grant >>> >>> Thanks, >>> Helge >>> >>> >>>> >>>>> >>>>> lspci reports: >>>>> 01:04.0 Display controller: Hewlett-Packard Company A4977A Visualize EG (rev 03) >>>>> Flags: 66MHz, medium devsel >>>>> Memory at fa000000 (32-bit, non-prefetchable) [size=32M] >>>>> Expansion ROM at f2400000 [disabled] [size=64K] >