From 7a7d36f5feb491cb47f5c6894cbe1efe5b098898 Mon Sep 17 00:00:00 2001 From: Kevin VanMaren Date: Fri, 3 Feb 2006 21:51:32 +0100 Subject: [PATCH] --- yaml --- r: 19778 b: refs/heads/master c: a1002a48e1af5ff8d02bfe79536e6fce3a0ec369 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86_64/kernel/pci-gart.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 9b82b661d5bb..6ee042aae470 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1de6bf33bc4601d856c286ad5c7d515468e24bbb +refs/heads/master: a1002a48e1af5ff8d02bfe79536e6fce3a0ec369 diff --git a/trunk/arch/x86_64/kernel/pci-gart.c b/trunk/arch/x86_64/kernel/pci-gart.c index c37fc7726ba6..9188b25fad2a 100644 --- a/trunk/arch/x86_64/kernel/pci-gart.c +++ b/trunk/arch/x86_64/kernel/pci-gart.c @@ -457,9 +457,12 @@ int gart_map_sg(struct device *dev, struct scatterlist *sg, int nents, int dir) error: flush_gart(NULL); gart_unmap_sg(dev, sg, nents, dir); - /* When it was forced try again unforced */ - if (force_iommu) - return dma_map_sg_nonforce(dev, sg, nents, dir); + /* When it was forced or merged try again in a dumb way */ + if (force_iommu || iommu_merge) { + out = dma_map_sg_nonforce(dev, sg, nents, dir); + if (out > 0) + return out; + } if (panic_on_overflow) panic("dma_map_sg: overflow on %lu pages\n", pages); iommu_full(dev, pages << PAGE_SHIFT, dir);