lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.00.0903302213120.32052@skynet.skynet.ie>
Date:	Mon, 30 Mar 2009 22:13:26 +0100 (IST)
From:	Dave Airlie <airlied@...ux.ie>
To:	Jeremy Fitzhardinge <jeremy@...p.org>
cc:	"H. Peter Anvin" <hpa@...or.com>,
	the arch/x86 maintainers <x86@...nel.org>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	Xen-devel <xen-devel@...ts.xensource.com>,
	Jeremy Fitzhardinge <jeremy.fitzhardinge@...rix.com>
Subject: Re: [PATCH 26/27] agp: use more dma-ops-like operations for agp
 memory

> From: Jeremy Fitzhardinge <jeremy.fitzhardinge@...rix.com>
> 
> When using AGP under Xen, we need to be careful to
> 1) properly translate between physical and machine addresses, and
> 2) make sure memory is physically contigious when the hardware expects it
> 
> This change uses swiotlb_phys_to_bus/bus_to_phys to do the phys<->gart
> conversion, since they already do the right thing, and dma_alloc_coherent
> for gatt allocations.  This should work equally well running native.
> 
> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@...rix.com>
> Cc: David Airlie <airlied@...ux.ie>

Acked-by: David Airlie <airlied@...ux.ie>

> ---
>  arch/x86/include/asm/agp.h |   15 ++++++++++-----
>  lib/swiotlb.c              |    2 ++
>  2 files changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/include/asm/agp.h b/arch/x86/include/asm/agp.h
> index 9825cd6..7ba2639 100644
> --- a/arch/x86/include/asm/agp.h
> +++ b/arch/x86/include/asm/agp.h
> @@ -1,8 +1,11 @@
>  #ifndef _ASM_X86_AGP_H
>  #define _ASM_X86_AGP_H
>  
> +#include <linux/swiotlb.h>
> +
>  #include <asm/pgtable.h>
>  #include <asm/cacheflush.h>
> +#include <asm/dma-mapping.h>
>  
>  /*
>   * Functions to keep the agpgart mappings coherent with the MMU. The
> @@ -23,13 +26,15 @@
>  #define flush_agp_cache() wbinvd()
>  
>  /* Convert a physical address to an address suitable for the GART. */
> -#define phys_to_gart(x) (x)
> -#define gart_to_phys(x) (x)
> +#define phys_to_gart(x) swiotlb_phys_to_bus(NULL, (x))
> +#define gart_to_phys(x) swiotlb_bus_to_phys(x)
>  
>  /* GATT allocation. Returns/accepts GATT kernel virtual address. */
> -#define alloc_gatt_pages(order)		\
> -	((char *)__get_free_pages(GFP_KERNEL, (order)))
> +#define alloc_gatt_pages(order)	({                                          \
> +	char *_t; dma_addr_t _d;                                            \
> +	_t = dma_alloc_coherent(NULL,PAGE_SIZE<<(order),&_d,GFP_KERNEL);    \
> +	_t; })
>  #define free_gatt_pages(table, order)	\
> -	free_pages((unsigned long)(table), (order))
> +	dma_free_coherent(NULL,PAGE_SIZE<<(order),(table),virt_to_bus(table))
>  
>  #endif /* _ASM_X86_AGP_H */
> diff --git a/lib/swiotlb.c b/lib/swiotlb.c
> index 8e6f6c8..98fb7d3 100644
> --- a/lib/swiotlb.c
> +++ b/lib/swiotlb.c
> @@ -128,11 +128,13 @@ dma_addr_t __weak swiotlb_phys_to_bus(struct device *hwdev, phys_addr_t paddr)
>  {
>  	return paddr;
>  }
> +EXPORT_SYMBOL_GPL(swiotlb_phys_to_bus);
>  
>  phys_addr_t __weak swiotlb_bus_to_phys(dma_addr_t baddr)
>  {
>  	return baddr;
>  }
> +EXPORT_SYMBOL_GPL(swiotlb_bus_to_phys);
>  
>  static dma_addr_t swiotlb_virt_to_bus(struct device *hwdev,
>  				      volatile void *address)
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ