From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755550AbbAFOv2 (ORCPT ); Tue, 6 Jan 2015 09:51:28 -0500 Received: from 8bytes.org ([81.169.241.247]:37843 "EHLO theia.8bytes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755399AbbAFOvS (ORCPT ); Tue, 6 Jan 2015 09:51:18 -0500 From: Joerg Roedel To: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Konrad Rzeszutek Wilk Cc: x86@kernel.org, linux-kernel@vger.kernel.org, Joerg Roedel , Joerg Roedel Subject: [PATCH 1/3] swiotlb: Warn on allocation failure in swiotlb_alloc_coherent Date: Tue, 6 Jan 2015 15:51:12 +0100 Message-Id: <1420555874-11506-2-git-send-email-joro@8bytes.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1420555874-11506-1-git-send-email-joro@8bytes.org> References: <1420555874-11506-1-git-send-email-joro@8bytes.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joerg Roedel Print a warning when all allocation tries have been failed and the function is about to return NULL. This prepares for calling the function with __GFP_NOWARN to suppress allocation failure warnings before all fall-backs have failed. Signed-off-by: Joerg Roedel Acked-by: Konrad Rzeszutek Wilk --- lib/swiotlb.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/swiotlb.c b/lib/swiotlb.c index 4abda07..e0e9212 100644 --- a/lib/swiotlb.c +++ b/lib/swiotlb.c @@ -655,7 +655,7 @@ swiotlb_alloc_coherent(struct device *hwdev, size_t size, */ phys_addr_t paddr = map_single(hwdev, 0, size, DMA_FROM_DEVICE); if (paddr == SWIOTLB_MAP_ERROR) - return NULL; + goto err_warn; ret = phys_to_virt(paddr); dev_addr = phys_to_dma(hwdev, paddr); @@ -669,7 +669,7 @@ swiotlb_alloc_coherent(struct device *hwdev, size_t size, /* DMA_TO_DEVICE to avoid memcpy in unmap_single */ swiotlb_tbl_unmap_single(hwdev, paddr, size, DMA_TO_DEVICE); - return NULL; + goto err_warn; } } @@ -677,6 +677,13 @@ swiotlb_alloc_coherent(struct device *hwdev, size_t size, memset(ret, 0, size); return ret; + +err_warn: + pr_warn("swiotlb: coherent allocation failed for device %s size=%zu\n", + dev_name(hwdev), size); + dump_stack(); + + return NULL; } EXPORT_SYMBOL(swiotlb_alloc_coherent); -- 1.9.1