• Benjamin Herrenschmidt's avatar
    [PATCH] ppc32: Fix Apple Xserve G4 PCI probing · 60f299da
    Benjamin Herrenschmidt authored
    When pci_assign_all_busses is set, the common code will re-assign all
    the bus numbers, which we still need to do one various pmacs, at least
    until XFree/XOrg understands PCI domains properly.  However, this
    process triggers a bug if during this renumbering, on a given segment, a
    P2P bridge not yet renumbered has conflicting downstream bus range with
    a P2P bridge just renumbered.  The probing will just behave randomly and
    either miss devices, show duplicates, or just lockup in some
    circumstances.  This is typically triggered on Apple Xserve G4s who have
    at least 2 P2P bridges built-in on the same segment of the first PCI
    (non-AGP) domain
    
    The "workaround" we use on pmac that was in my tree for a while but got
    "lost" during the big merge a while ago is to offset the bus numbers
    between domains by 16.  This avoids the above collision scenario in all
    practical cases.
    
    The long term solution of course is to stop renumbering and make sure
    that all drivers are domain safe (there may be a couple issue remaining
    in the code that matches PCI / OF devices on ppc32) and XFree/XOrg has
    to be fixed.
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    60f299da
pmac_pci.c 32.1 KB