From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754142AbbFEKaK (ORCPT ); Fri, 5 Jun 2015 06:30:10 -0400 Received: from 8bytes.org ([81.169.241.247]:57043 "EHLO theia.8bytes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750820AbbFEKaG (ORCPT ); Fri, 5 Jun 2015 06:30:06 -0400 From: Joerg Roedel To: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Borislav Petkov Cc: Konrad Rzeszutek Wilk , Vivek Goyal , Dave Young , Baoquan He , x86@kernel.org, kexec@lists.infradead.org, joro@8bytes.org, jroedel@suse.de, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] swiotlb: Warn on allocation failure in swiotlb_alloc_coherent Date: Fri, 5 Jun 2015 12:30:00 +0200 Message-Id: <1433500202-25531-2-git-send-email-joro@8bytes.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1433500202-25531-1-git-send-email-joro@8bytes.org> References: <1433500202-25531-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. Acked-by: Konrad Rzeszutek Wilk Acked-by: Baoquan He Signed-off-by: Joerg Roedel --- 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