Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
iova.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2006, Intel Corporation.
3
*
4
* This file is released under the GPLv2.
5
*
6
* Copyright (C) 2006-2008 Intel Corporation
7
* Author: Anil S Keshavamurthy <
[email protected]
>
8
*
9
*/
10
11
#ifndef _IOVA_H_
12
#define _IOVA_H_
13
14
#include <linux/types.h>
15
#include <linux/kernel.h>
16
#include <linux/rbtree.h>
17
#include <
linux/dma-mapping.h
>
18
19
/* IO virtual address start page frame number */
20
#define IOVA_START_PFN (1)
21
22
/* iova structure */
23
struct
iova
{
24
struct
rb_node
node
;
25
unsigned
long
pfn_hi
;
/* IOMMU dish out addr hi */
26
unsigned
long
pfn_lo
;
/* IOMMU dish out addr lo */
27
};
28
29
/* holds all the iova translations for a domain */
30
struct
iova_domain
{
31
spinlock_t
iova_rbtree_lock
;
/* Lock to protect update of rbtree */
32
struct
rb_root
rbroot
;
/* iova domain rbtree root */
33
struct
rb_node
*
cached32_node
;
/* Save last alloced node */
34
unsigned
long
dma_32bit_pfn
;
35
};
36
37
struct
iova
*
alloc_iova_mem
(
void
);
38
void
free_iova_mem
(
struct
iova
*
iova
);
39
void
free_iova
(
struct
iova_domain
*iovad,
unsigned
long
pfn);
40
void
__free_iova
(
struct
iova_domain
*iovad,
struct
iova
*
iova
);
41
struct
iova
*
alloc_iova
(
struct
iova_domain
*iovad,
unsigned
long
size
,
42
unsigned
long
limit_pfn,
43
bool
size_aligned);
44
struct
iova
*
reserve_iova
(
struct
iova_domain
*iovad,
unsigned
long
pfn_lo
,
45
unsigned
long
pfn_hi
);
46
void
copy_reserved_iova
(
struct
iova_domain
*
from
,
struct
iova_domain
*to);
47
void
init_iova_domain
(
struct
iova_domain
*iovad,
unsigned
long
pfn_32bit);
48
struct
iova
*
find_iova
(
struct
iova_domain
*iovad,
unsigned
long
pfn);
49
void
put_iova_domain
(
struct
iova_domain
*iovad);
50
51
#endif
Generated on Thu Jan 10 2013 14:51:39 for Linux Kernel by
1.8.2