Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933234AbbLGQUS (ORCPT ); Mon, 7 Dec 2015 11:20:18 -0500 Received: from smtp02.citrix.com ([66.165.176.63]:42284 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932818AbbLGQUO (ORCPT ); Mon, 7 Dec 2015 11:20:14 -0500 X-IronPort-AV: E=Sophos;i="5.20,395,1444694400"; d="scan'208";a="323180810" From: Stefano Stabellini To: CC: , , , , Stefano Stabellini , , , Subject: [PATCH RFC 1/3] xen: export xen_phys_to_bus, xen_bus_to_phys and xen_virt_to_bus Date: Mon, 7 Dec 2015 16:19:41 +0000 Message-ID: <1449505183-29740-1-git-send-email-stefano.stabellini@eu.citrix.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-DLP: MIA1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2995 Lines: 105 Signed-off-by: Stefano Stabellini CC: konrad.wilk@oracle.com CC: boris.ostrovsky@oracle.com CC: david.vrabel@citrix.com --- drivers/xen/swiotlb-xen.c | 31 ------------------------------- include/xen/swiotlb-xen.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c index 79bc493..56014d5 100644 --- a/drivers/xen/swiotlb-xen.c +++ b/drivers/xen/swiotlb-xen.c @@ -75,37 +75,6 @@ static unsigned long xen_io_tlb_nslabs; static u64 start_dma_addr; -/* - * Both of these functions should avoid PFN_PHYS because phys_addr_t - * can be 32bit when dma_addr_t is 64bit leading to a loss in - * information if the shift is done before casting to 64bit. - */ -static inline dma_addr_t xen_phys_to_bus(phys_addr_t paddr) -{ - unsigned long bfn = pfn_to_bfn(PFN_DOWN(paddr)); - dma_addr_t dma = (dma_addr_t)bfn << PAGE_SHIFT; - - dma |= paddr & ~PAGE_MASK; - - return dma; -} - -static inline phys_addr_t xen_bus_to_phys(dma_addr_t baddr) -{ - unsigned long pfn = bfn_to_pfn(PFN_DOWN(baddr)); - dma_addr_t dma = (dma_addr_t)pfn << PAGE_SHIFT; - phys_addr_t paddr = dma; - - paddr |= baddr & ~PAGE_MASK; - - return paddr; -} - -static inline dma_addr_t xen_virt_to_bus(void *address) -{ - return xen_phys_to_bus(virt_to_phys(address)); -} - static int check_pages_physically_contiguous(unsigned long pfn, unsigned int offset, size_t length) diff --git a/include/xen/swiotlb-xen.h b/include/xen/swiotlb-xen.h index 8b2eb93..d55aee8 100644 --- a/include/xen/swiotlb-xen.h +++ b/include/xen/swiotlb-xen.h @@ -3,9 +3,41 @@ #include #include +#include extern int xen_swiotlb_init(int verbose, bool early); +/* + * Both of these functions should avoid PFN_PHYS because phys_addr_t + * can be 32bit when dma_addr_t is 64bit leading to a loss in + * information if the shift is done before casting to 64bit. + */ +static inline dma_addr_t xen_phys_to_bus(phys_addr_t paddr) +{ + unsigned long bfn = pfn_to_bfn(PFN_DOWN(paddr)); + dma_addr_t dma = (dma_addr_t)bfn << PAGE_SHIFT; + + dma |= paddr & ~PAGE_MASK; + + return dma; +} + +static inline phys_addr_t xen_bus_to_phys(dma_addr_t baddr) +{ + unsigned long pfn = bfn_to_pfn(PFN_DOWN(baddr)); + dma_addr_t dma = (dma_addr_t)pfn << PAGE_SHIFT; + phys_addr_t paddr = dma; + + paddr |= baddr & ~PAGE_MASK; + + return paddr; +} + +static inline dma_addr_t xen_virt_to_bus(void *address) +{ + return xen_phys_to_bus(virt_to_phys(address)); +} + extern void *xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size, dma_addr_t *dma_handle, gfp_t flags, -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/