• Konrad Rzeszutek Wilk's avatar
    xen/swiotlb: Use page alignment for early buffer allocation. · 63a74175
    Konrad Rzeszutek Wilk authored
    This fixes an odd bug found on a Dell PowerEdge 1850/0RC130
    (BIOS A05 01/09/2006) where all of the modules doing pci_set_dma_mask
    would fail with:
    
    ata_piix 0000:00:1f.1: enabling device (0005 -> 0007)
    ata_piix 0000:00:1f.1: can't derive routing for PCI INT A
    ata_piix 0000:00:1f.1: BMDMA: failed to set dma mask, falling back to PIO
    
    The issue was the Xen-SWIOTLB was allocated such as that the end of
    buffer was stradling a page (and also above 4GB). The fix was
    spotted by Kalev Leonid  which was to piggyback on git commit
    e79f86b2 "swiotlb: Use page alignment
    for early buffer allocation" which:
    
    	We could call free_bootmem_late() if swiotlb is not used, and
    	it will shrink to page alignment.
    
    	So alloc them with page alignment at first, to avoid lose two pages
    
    And doing that fixes the outstanding issue.
    
    CC: stable@kernel.org
    Suggested-by: default avatar"Kalev, Leonid" <Leonid.Kalev@ca.com>
    Reported-and-Tested-by: default avatar"Taylor, Neal E" <Neal.Taylor@ca.com>
    Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    63a74175
swiotlb-xen.c 15.4 KB