PCI changes 2.6.26 => 2.6.28
Kumar Gala
galak at kernel.crashing.org
Wed Apr 22 08:38:28 EST 2009
On Apr 21, 2009, at 5:22 PM, Gary Thomas wrote:
> Gary Thomas wrote:
>> Kumar Gala wrote:
>>> On Apr 21, 2009, at 3:30 PM, Gary Thomas wrote:
>>>
>>>> The [two] big differences I see are that the video card (00:0d.0)
>>>> is being assigned 0xC0000000, which lspci marks as "virtual".
>>>> I think I've had trouble in the past with memory regions which
>>>> started at 0 relative to the PCI space. Also "virtual" concerns
>>>> me.
>>>>
>>>> Does this spark any ideas from anyone?
>>> Doesn't ring any bells. What does cat /proc/iomem look like
>>> between the
>>> two kernels.
>>
>> About what I gleaned from lspci. The working 2.6.26 kernel has
>> space mapped in the controller (exposed memory window, I think)
>> and the video card got moved down accordingly.
>>
>> ---------------------------------- 2.6.26
>> c0000000-cfffffff : /pci at ff008500
>> c0000000-c7ffffff : 0000:00:00.0
>> c8000000-cbffffff : 0000:00:0c.0
>> c8000000-cbffffff : CoralP_fb
>> cc000000-cc0fffff : 0000:00:00.0
>> cc100000-cc11ffff : 0000:00:0b.0
>> cc120000-cc12ffff : 0000:00:0a.0
>> cc130000-cc13ffff : 0000:00:0a.0
>> cc140000-cc140fff : 0000:00:0b.0
>> cc140000-cc140fff : sata_promise
>> cc141000-cc141fff : 0000:00:0d.0
>> cc141000-cc141fff : ohci_hcd
>> cc142000-cc142fff : 0000:00:0d.1
>> cc142000-cc142fff : ohci_hcd
>> cc143000-cc1430ff : 0000:00:0d.2
>> cc143000-cc1430ff : ehci_hcd
>> cc143100-cc143100 : 0000:00:00.0
>> f0000000-f1ffffff : f0000000.flash
>> ff000200-ff0002ff : wdt
>> ff003000-ff0030ff : i2c
>> ff003100-ff0031ff : i2c
>> ff004500-ff004507 : serial
>> ff004600-ff004607 : serial
>> ff022000-ff022fff : usb
>> ff022000-ff022fff : ehci_hcd
>> ff023000-ff023fff : usb
>> ff023000-ff023fff : usb
>> ff023000-ff023fff : ehci_hcd
>> ff024000-ff024fff : ethernet
>> ff024520-ff02453f : mdio
>> ff025000-ff025fff : ethernet
>>
>> ---------------------------------- 2.6.28
>> c0000000-cfffffff : /pci at ff008500
>> c0000000-c3ffffff : 0000:00:0c.0
>> c0000000-c3ffffff : CoralP_fb
>> c4000000-c401ffff : 0000:00:0b.0
>> c4020000-c402ffff : 0000:00:0a.0
>> c4030000-c403ffff : 0000:00:0a.0
>> c4040000-c4040fff : 0000:00:0b.0
>> c4040000-c4040fff : sata_promise
>> c4041000-c4041fff : 0000:00:0d.0
>> c4041000-c4041fff : ohci_hcd
>> c4042000-c4042fff : 0000:00:0d.1
>> c4042000-c4042fff : ohci_hcd
>> c4043000-c40430ff : 0000:00:0d.2
>> c4043000-c40430ff : ehci_hcd
>> f0000000-f1ffffff : f0000000.flash
>> ff004500-ff004507 : serial
>> ff004600-ff004607 : serial
>> ff022000-ff022fff : usb
>> ff022000-ff022fff : ehci_hcd
>> ff023000-ff023fff : usb
>> ff023000-ff023fff : usb
>> ff023000-ff023fff : ehci_hcd
>> ff024000-ff024fff : ethernet
>> ff024520-ff02453f : mdio
>> ff025000-ff025fff : ethernet
>>
>> I'm still looking into how the PCI address register for the video
>> card did not get written, even though the system obviously thinks
>> it did (hence "virtual")
>>
>
> It most definitely has something to do with 0xC0000000 being
> assigned to the video card. I changed my DTS to move everything
> up (started the whole space at 0xC4000000) and the video card
> came to life! Of course, I'm not interested in this hack,
> so the simplest thing would be to figure out why 2.6.26 allocated
> that outgoing window and 2.6.28 doesn't
So I think the difference is due to the change in PCI code between
2.6.26 and .28 for 83xx. If you notice we exclude the FSL device in .
26 you have:
>> c0000000-c7ffffff : 0000:00:00.0
and in .28 its gone. This accounts for the allocation differences.
What I don't get is why the behavior would vary based on address.
Can you dump out the PCI inbound/outbound registers. I have a theory
as to what's going on and want to confirm it.
- k
More information about the Linuxppc-dev
mailing list