mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
Documentation: move DMA-mapping.txt to Doc/PCI/
Move DMA-mapping.txt to Documentation/PCI/. DMA-mapping.txt was supposed to be moved from Documentation/ to Documentation/PCI/. The 00-INDEX files in those two directories were updated, along with a few other text files, but the file itself somehow escaped being moved, so move it and update more text files and source files with its new location. Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Acked-by: Greg Kroah-Hartman <gregkh@suse.de> cc: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ca493d171b
commit
5872fb94f8
12 changed files with 35 additions and 33 deletions
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
This document describes the DMA API. For a more gentle introduction
|
This document describes the DMA API. For a more gentle introduction
|
||||||
phrased in terms of the pci_ equivalents (and actual examples) see
|
phrased in terms of the pci_ equivalents (and actual examples) see
|
||||||
DMA-mapping.txt
|
Documentation/PCI/PCI-DMA-mapping.txt.
|
||||||
|
|
||||||
This API is split into two pieces. Part I describes the API and the
|
This API is split into two pieces. Part I describes the API and the
|
||||||
corresponding pci_ API. Part II describes the extensions to the API
|
corresponding pci_ API. Part II describes the extensions to the API
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[ NOTE: The virt_to_bus() and bus_to_virt() functions have been
|
[ NOTE: The virt_to_bus() and bus_to_virt() functions have been
|
||||||
superseded by the functionality provided by the PCI DMA
|
superseded by the functionality provided by the PCI DMA interface
|
||||||
interface (see Documentation/DMA-mapping.txt). They continue
|
(see Documentation/PCI/PCI-DMA-mapping.txt). They continue
|
||||||
to be documented below for historical purposes, but new code
|
to be documented below for historical purposes, but new code
|
||||||
must not use them. --davidm 00/12/12 ]
|
must not use them. --davidm 00/12/12 ]
|
||||||
|
|
||||||
|
|
|
@ -186,8 +186,9 @@ a virtual address mapping (unlike the earlier scheme of virtual address
|
||||||
do not have a corresponding kernel virtual address space mapping) and
|
do not have a corresponding kernel virtual address space mapping) and
|
||||||
low-memory pages.
|
low-memory pages.
|
||||||
|
|
||||||
Note: Please refer to DMA-mapping.txt for a discussion on PCI high mem DMA
|
Note: Please refer to Documentation/PCI/PCI-DMA-mapping.txt for a discussion
|
||||||
aspects and mapping of scatter gather lists, and support for 64 bit PCI.
|
on PCI high mem DMA aspects and mapping of scatter gather lists, and support
|
||||||
|
for 64 bit PCI.
|
||||||
|
|
||||||
Special handling is required only for cases where i/o needs to happen on
|
Special handling is required only for cases where i/o needs to happen on
|
||||||
pages at physical memory addresses beyond what the device can support. In these
|
pages at physical memory addresses beyond what the device can support. In these
|
||||||
|
|
|
@ -6,8 +6,9 @@ in the kernel usb programming guide (kerneldoc, from the source code).
|
||||||
API OVERVIEW
|
API OVERVIEW
|
||||||
|
|
||||||
The big picture is that USB drivers can continue to ignore most DMA issues,
|
The big picture is that USB drivers can continue to ignore most DMA issues,
|
||||||
though they still must provide DMA-ready buffers (see DMA-mapping.txt).
|
though they still must provide DMA-ready buffers (see
|
||||||
That's how they've worked through the 2.4 (and earlier) kernels.
|
Documentation/PCI/PCI-DMA-mapping.txt). That's how they've worked through
|
||||||
|
the 2.4 (and earlier) kernels.
|
||||||
|
|
||||||
OR: they can now be DMA-aware.
|
OR: they can now be DMA-aware.
|
||||||
|
|
||||||
|
@ -62,8 +63,8 @@ and effects like cache-trashing can impose subtle penalties.
|
||||||
force a consistent memory access ordering by using memory barriers. It's
|
force a consistent memory access ordering by using memory barriers. It's
|
||||||
not using a streaming DMA mapping, so it's good for small transfers on
|
not using a streaming DMA mapping, so it's good for small transfers on
|
||||||
systems where the I/O would otherwise thrash an IOMMU mapping. (See
|
systems where the I/O would otherwise thrash an IOMMU mapping. (See
|
||||||
Documentation/DMA-mapping.txt for definitions of "coherent" and "streaming"
|
Documentation/PCI/PCI-DMA-mapping.txt for definitions of "coherent" and
|
||||||
DMA mappings.)
|
"streaming" DMA mappings.)
|
||||||
|
|
||||||
Asking for 1/Nth of a page (as well as asking for N pages) is reasonably
|
Asking for 1/Nth of a page (as well as asking for N pages) is reasonably
|
||||||
space-efficient.
|
space-efficient.
|
||||||
|
@ -93,7 +94,7 @@ WORKING WITH EXISTING BUFFERS
|
||||||
Existing buffers aren't usable for DMA without first being mapped into the
|
Existing buffers aren't usable for DMA without first being mapped into the
|
||||||
DMA address space of the device. However, most buffers passed to your
|
DMA address space of the device. However, most buffers passed to your
|
||||||
driver can safely be used with such DMA mapping. (See the first section
|
driver can safely be used with such DMA mapping. (See the first section
|
||||||
of DMA-mapping.txt, titled "What memory is DMA-able?")
|
of Documentation/PCI/PCI-DMA-mapping.txt, titled "What memory is DMA-able?")
|
||||||
|
|
||||||
- When you're using scatterlists, you can map everything at once. On some
|
- When you're using scatterlists, you can map everything at once. On some
|
||||||
systems, this kicks in an IOMMU and turns the scatterlists into single
|
systems, this kicks in an IOMMU and turns the scatterlists into single
|
||||||
|
|
|
@ -906,7 +906,7 @@ sba_mark_invalid(struct ioc *ioc, dma_addr_t iova, size_t byte_cnt)
|
||||||
* @dir: R/W or both.
|
* @dir: R/W or both.
|
||||||
* @attrs: optional dma attributes
|
* @attrs: optional dma attributes
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
dma_addr_t
|
dma_addr_t
|
||||||
sba_map_single_attrs(struct device *dev, void *addr, size_t size, int dir,
|
sba_map_single_attrs(struct device *dev, void *addr, size_t size, int dir,
|
||||||
|
@ -1024,7 +1024,7 @@ sba_mark_clean(struct ioc *ioc, dma_addr_t iova, size_t size)
|
||||||
* @dir: R/W or both.
|
* @dir: R/W or both.
|
||||||
* @attrs: optional dma attributes
|
* @attrs: optional dma attributes
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
void sba_unmap_single_attrs(struct device *dev, dma_addr_t iova, size_t size,
|
void sba_unmap_single_attrs(struct device *dev, dma_addr_t iova, size_t size,
|
||||||
int dir, struct dma_attrs *attrs)
|
int dir, struct dma_attrs *attrs)
|
||||||
|
@ -1102,7 +1102,7 @@ EXPORT_SYMBOL(sba_unmap_single_attrs);
|
||||||
* @size: number of bytes mapped in driver buffer.
|
* @size: number of bytes mapped in driver buffer.
|
||||||
* @dma_handle: IOVA of new buffer.
|
* @dma_handle: IOVA of new buffer.
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
void *
|
void *
|
||||||
sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flags)
|
sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flags)
|
||||||
|
@ -1165,7 +1165,7 @@ sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp
|
||||||
* @vaddr: virtual address IOVA of "consistent" buffer.
|
* @vaddr: virtual address IOVA of "consistent" buffer.
|
||||||
* @dma_handler: IO virtual address of "consistent" buffer.
|
* @dma_handler: IO virtual address of "consistent" buffer.
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
void sba_free_coherent (struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle)
|
void sba_free_coherent (struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle)
|
||||||
{
|
{
|
||||||
|
@ -1420,7 +1420,7 @@ sba_coalesce_chunks(struct ioc *ioc, struct device *dev,
|
||||||
* @dir: R/W or both.
|
* @dir: R/W or both.
|
||||||
* @attrs: optional dma attributes
|
* @attrs: optional dma attributes
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
int sba_map_sg_attrs(struct device *dev, struct scatterlist *sglist, int nents,
|
int sba_map_sg_attrs(struct device *dev, struct scatterlist *sglist, int nents,
|
||||||
int dir, struct dma_attrs *attrs)
|
int dir, struct dma_attrs *attrs)
|
||||||
|
@ -1512,7 +1512,7 @@ EXPORT_SYMBOL(sba_map_sg_attrs);
|
||||||
* @dir: R/W or both.
|
* @dir: R/W or both.
|
||||||
* @attrs: optional dma attributes
|
* @attrs: optional dma attributes
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist,
|
void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist,
|
||||||
int nents, int dir, struct dma_attrs *attrs)
|
int nents, int dir, struct dma_attrs *attrs)
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/scatterlist.h>
|
#include <asm/scatterlist.h>
|
||||||
|
|
||||||
/* See Documentation/DMA-mapping.txt */
|
/* See Documentation/PCI/PCI-DMA-mapping.txt */
|
||||||
struct hppa_dma_ops {
|
struct hppa_dma_ops {
|
||||||
int (*dma_supported)(struct device *dev, u64 mask);
|
int (*dma_supported)(struct device *dev, u64 mask);
|
||||||
void *(*alloc_consistent)(struct device *dev, size_t size, dma_addr_t *iova, gfp_t flag);
|
void *(*alloc_consistent)(struct device *dev, size_t size, dma_addr_t *iova, gfp_t flag);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
** PARISC 1.1 Dynamic DMA mapping support.
|
** PARISC 1.1 Dynamic DMA mapping support.
|
||||||
** This implementation is for PA-RISC platforms that do not support
|
** This implementation is for PA-RISC platforms that do not support
|
||||||
** I/O TLBs (aka DMA address translation hardware).
|
** I/O TLBs (aka DMA address translation hardware).
|
||||||
** See Documentation/DMA-mapping.txt for interface definitions.
|
** See Documentation/PCI/PCI-DMA-mapping.txt for interface definitions.
|
||||||
**
|
**
|
||||||
** (c) Copyright 1999,2000 Hewlett-Packard Company
|
** (c) Copyright 1999,2000 Hewlett-Packard Company
|
||||||
** (c) Copyright 2000 Grant Grundler
|
** (c) Copyright 2000 Grant Grundler
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
#define _ASM_X86_DMA_MAPPING_H
|
#define _ASM_X86_DMA_MAPPING_H
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IOMMU interface. See Documentation/DMA-mapping.txt and DMA-API.txt for
|
* IOMMU interface. See Documentation/PCI/PCI-DMA-mapping.txt and
|
||||||
* documentation.
|
* Documentation/DMA-API.txt for documentation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/scatterlist.h>
|
#include <linux/scatterlist.h>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* This allows to use PCI devices that only support 32bit addresses on systems
|
* This allows to use PCI devices that only support 32bit addresses on systems
|
||||||
* with more than 4GB.
|
* with more than 4GB.
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt for the interface specification.
|
* See Documentation/PCI/PCI-DMA-mapping.txt for the interface specification.
|
||||||
*
|
*
|
||||||
* Copyright 2002 Andi Kleen, SuSE Labs.
|
* Copyright 2002 Andi Kleen, SuSE Labs.
|
||||||
* Subject to the GNU General Public License v2 only.
|
* Subject to the GNU General Public License v2 only.
|
||||||
|
|
|
@ -668,7 +668,7 @@ sba_mark_invalid(struct ioc *ioc, dma_addr_t iova, size_t byte_cnt)
|
||||||
* @dev: instance of PCI owned by the driver that's asking
|
* @dev: instance of PCI owned by the driver that's asking
|
||||||
* @mask: number of address bits this PCI device can handle
|
* @mask: number of address bits this PCI device can handle
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
static int sba_dma_supported( struct device *dev, u64 mask)
|
static int sba_dma_supported( struct device *dev, u64 mask)
|
||||||
{
|
{
|
||||||
|
@ -680,8 +680,8 @@ static int sba_dma_supported( struct device *dev, u64 mask)
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Documentation/DMA-mapping.txt tells drivers to try 64-bit first,
|
/* Documentation/PCI/PCI-DMA-mapping.txt tells drivers to try 64-bit
|
||||||
* then fall back to 32-bit if that fails.
|
* first, then fall back to 32-bit if that fails.
|
||||||
* We are just "encouraging" 32-bit DMA masks here since we can
|
* We are just "encouraging" 32-bit DMA masks here since we can
|
||||||
* never allow IOMMU bypass unless we add special support for ZX1.
|
* never allow IOMMU bypass unless we add special support for ZX1.
|
||||||
*/
|
*/
|
||||||
|
@ -706,7 +706,7 @@ static int sba_dma_supported( struct device *dev, u64 mask)
|
||||||
* @size: number of bytes to map in driver buffer.
|
* @size: number of bytes to map in driver buffer.
|
||||||
* @direction: R/W or both.
|
* @direction: R/W or both.
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
static dma_addr_t
|
static dma_addr_t
|
||||||
sba_map_single(struct device *dev, void *addr, size_t size,
|
sba_map_single(struct device *dev, void *addr, size_t size,
|
||||||
|
@ -785,7 +785,7 @@ sba_map_single(struct device *dev, void *addr, size_t size,
|
||||||
* @size: number of bytes mapped in driver buffer.
|
* @size: number of bytes mapped in driver buffer.
|
||||||
* @direction: R/W or both.
|
* @direction: R/W or both.
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size,
|
sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size,
|
||||||
|
@ -861,7 +861,7 @@ sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size,
|
||||||
* @size: number of bytes mapped in driver buffer.
|
* @size: number of bytes mapped in driver buffer.
|
||||||
* @dma_handle: IOVA of new buffer.
|
* @dma_handle: IOVA of new buffer.
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
static void *sba_alloc_consistent(struct device *hwdev, size_t size,
|
static void *sba_alloc_consistent(struct device *hwdev, size_t size,
|
||||||
dma_addr_t *dma_handle, gfp_t gfp)
|
dma_addr_t *dma_handle, gfp_t gfp)
|
||||||
|
@ -892,7 +892,7 @@ static void *sba_alloc_consistent(struct device *hwdev, size_t size,
|
||||||
* @vaddr: virtual address IOVA of "consistent" buffer.
|
* @vaddr: virtual address IOVA of "consistent" buffer.
|
||||||
* @dma_handler: IO virtual address of "consistent" buffer.
|
* @dma_handler: IO virtual address of "consistent" buffer.
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
sba_free_consistent(struct device *hwdev, size_t size, void *vaddr,
|
sba_free_consistent(struct device *hwdev, size_t size, void *vaddr,
|
||||||
|
@ -927,7 +927,7 @@ int dump_run_sg = 0;
|
||||||
* @nents: number of entries in list
|
* @nents: number of entries in list
|
||||||
* @direction: R/W or both.
|
* @direction: R/W or both.
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||||
|
@ -1011,7 +1011,7 @@ sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||||
* @nents: number of entries in list
|
* @nents: number of entries in list
|
||||||
* @direction: R/W or both.
|
* @direction: R/W or both.
|
||||||
*
|
*
|
||||||
* See Documentation/DMA-mapping.txt
|
* See Documentation/PCI/PCI-DMA-mapping.txt
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||||
|
|
|
@ -531,7 +531,7 @@ static int __devinit dma_test(struct ape_dev *ape, struct pci_dev *dev)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* allocate and map coherently-cached memory for a DMA-able buffer */
|
/* allocate and map coherently-cached memory for a DMA-able buffer */
|
||||||
/* @see 2.6.26.2/Documentation/DMA-mapping.txt line 318 */
|
/* @see Documentation/PCI/PCI-DMA-mapping.txt, near line 318 */
|
||||||
buffer_virt = (u8 *)pci_alloc_consistent(dev, PAGE_SIZE * 4, &buffer_bus);
|
buffer_virt = (u8 *)pci_alloc_consistent(dev, PAGE_SIZE * 4, &buffer_bus);
|
||||||
if (!buffer_virt) {
|
if (!buffer_virt) {
|
||||||
printk(KERN_DEBUG "Could not allocate coherent DMA buffer.\n");
|
printk(KERN_DEBUG "Could not allocate coherent DMA buffer.\n");
|
||||||
|
@ -846,7 +846,7 @@ static int __devinit probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
|
|
||||||
#if 1 // @todo For now, disable 64-bit, because I do not understand the implications (DAC!)
|
#if 1 // @todo For now, disable 64-bit, because I do not understand the implications (DAC!)
|
||||||
/* query for DMA transfer */
|
/* query for DMA transfer */
|
||||||
/* @see Documentation/DMA-mapping.txt */
|
/* @see Documentation/PCI/PCI-DMA-mapping.txt */
|
||||||
if (!pci_set_dma_mask(dev, DMA_64BIT_MASK)) {
|
if (!pci_set_dma_mask(dev, DMA_64BIT_MASK)) {
|
||||||
pci_set_consistent_dma_mask(dev, DMA_64BIT_MASK);
|
pci_set_consistent_dma_mask(dev, DMA_64BIT_MASK);
|
||||||
/* use 64-bit DMA */
|
/* use 64-bit DMA */
|
||||||
|
|
|
@ -49,7 +49,7 @@ struct scatterlist* videobuf_pages_to_sg(struct page **pages, int nr_pages,
|
||||||
* does memory allocation too using vmalloc_32().
|
* does memory allocation too using vmalloc_32().
|
||||||
*
|
*
|
||||||
* videobuf_dma_*()
|
* videobuf_dma_*()
|
||||||
* see Documentation/DMA-mapping.txt, these functions to
|
* see Documentation/PCI/PCI-DMA-mapping.txt, these functions to
|
||||||
* basically the same. The map function does also build a
|
* basically the same. The map function does also build a
|
||||||
* scatterlist for the buffer (and unmap frees it ...)
|
* scatterlist for the buffer (and unmap frees it ...)
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue