Skip to content
  • Yinghai Lu's avatar
    PCI: Retry on IORESOURCE_IO type allocations · 0c5be0cb
    Yinghai Lu authored
    When enabling pci reallocation for a pci bridge, we clear the small size
    in in bridge and re-assign with requested + optional size for first
    several tries, but Ram mention could have problem with one case:
    	https://bugzilla.kernel.org/show_bug.cgi?id=15960
    
    After checking the booting log in
    	https://lkml.org/lkml/2010/4/19/44
    	[regression, bisected] Xonar DX invalid PCI I/O range since 977d17bb
    
    
    
    We should not stop too early for io ports.
    	Apr 19 10:19:38 [kernel] pci 0000:04:00.0: BAR 7: can't assign io (size 0x4000)
    	Apr 19 10:19:38 [kernel] pci 0000:05:01.0: BAR 8: assigned [mem 0x80400000-0x805fffff]
    	Apr 19 10:19:38 [kernel] pci 0000:05:01.0: BAR 7: can't assign io (size 0x2000)
    	Apr 19 10:19:38 [kernel] pci 0000:05:02.0: BAR 7: can't assign io (size 0x1000)
    	Apr 19 10:19:38 [kernel] pci 0000:05:03.0: BAR 7: can't assign io (size 0x1000)
    	Apr 19 10:19:38 [kernel] pci 0000:08:00.0: BAR 7: can't assign io (size 0x1000)
    	Apr 19 10:19:38 [kernel] pci 0000:09:04.0: BAR 0: can't assign io (size 0x100)
    and clear 00:1c.0 to retry again.
    
    This patch removes IORESOUCE_IO checking, and tries one more time.  It
    gives us a chance to get an allocation for the 00:1c.0 io port range
    because the range from 0x4000 to 0x8000 will be freed and we can use it.
    
    Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    0c5be0cb