Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
swiotlb: use coherent_dma_mask in alloc_coherent
MAINTAINERS: remove me as RAID maintainer

+7 -5
-2
MAINTAINERS
··· 3928 S: Maintained 3929 3930 SOFTWARE RAID (Multiple Disks) SUPPORT 3931 - P: Ingo Molnar 3932 - M: mingo@redhat.com 3933 P: Neil Brown 3934 M: neilb@suse.de 3935 L: linux-raid@vger.kernel.org
··· 3928 S: Maintained 3929 3930 SOFTWARE RAID (Multiple Disks) SUPPORT 3931 P: Neil Brown 3932 M: neilb@suse.de 3933 L: linux-raid@vger.kernel.org
+7 -3
lib/swiotlb.c
··· 467 dma_addr_t dev_addr; 468 void *ret; 469 int order = get_order(size); 470 471 ret = (void *)__get_free_pages(flags, order); 472 - if (ret && address_needs_mapping(hwdev, virt_to_bus(ret), size)) { 473 /* 474 * The allocated memory isn't reachable by the device. 475 * Fall back on swiotlb_map_single(). ··· 497 dev_addr = virt_to_bus(ret); 498 499 /* Confirm address can be DMA'd by device */ 500 - if (address_needs_mapping(hwdev, dev_addr, size)) { 501 printk("hwdev DMA mask = 0x%016Lx, dev_addr = 0x%016Lx\n", 502 - (unsigned long long)*hwdev->dma_mask, 503 (unsigned long long)dev_addr); 504 505 /* DMA_TO_DEVICE to avoid memcpy in unmap_single */
··· 467 dma_addr_t dev_addr; 468 void *ret; 469 int order = get_order(size); 470 + u64 dma_mask = DMA_32BIT_MASK; 471 + 472 + if (hwdev && hwdev->coherent_dma_mask) 473 + dma_mask = hwdev->coherent_dma_mask; 474 475 ret = (void *)__get_free_pages(flags, order); 476 + if (ret && !is_buffer_dma_capable(dma_mask, virt_to_bus(ret), size)) { 477 /* 478 * The allocated memory isn't reachable by the device. 479 * Fall back on swiotlb_map_single(). ··· 493 dev_addr = virt_to_bus(ret); 494 495 /* Confirm address can be DMA'd by device */ 496 + if (!is_buffer_dma_capable(dma_mask, dev_addr, size)) { 497 printk("hwdev DMA mask = 0x%016Lx, dev_addr = 0x%016Lx\n", 498 + (unsigned long long)dma_mask, 499 (unsigned long long)dev_addr); 500 501 /* DMA_TO_DEVICE to avoid memcpy in unmap_single */