diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-07-29 05:54:24 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-29 05:54:24 -0400 |
commit | 3825c9e8d01e4310c40a3903a354c433c32a7b6f (patch) | |
tree | 87c94a8076bbb38bd2cf20ab9bc23d6f74f6a0a8 /arch/sparc/include/asm/iommu_64.h | |
parent | 5d7b605245b1aa1a9cd6549b1f57d69273eb0c37 (diff) | |
parent | 6e86841d05f371b5b9b86ce76c02aaee83352298 (diff) |
Merge commit 'v2.6.27-rc1' into x86/microcode
Conflicts:
arch/x86/kernel/microcode.c
Manual resolutions:
arch/x86/kernel/microcode_amd.c
arch/x86/kernel/microcode_intel.c
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/sparc/include/asm/iommu_64.h')
-rw-r--r-- | arch/sparc/include/asm/iommu_64.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/arch/sparc/include/asm/iommu_64.h b/arch/sparc/include/asm/iommu_64.h new file mode 100644 index 000000000000..d7b9afcba08b --- /dev/null +++ b/arch/sparc/include/asm/iommu_64.h | |||
@@ -0,0 +1,62 @@ | |||
1 | /* iommu.h: Definitions for the sun5 IOMMU. | ||
2 | * | ||
3 | * Copyright (C) 1996, 1999, 2007 David S. Miller (davem@davemloft.net) | ||
4 | */ | ||
5 | #ifndef _SPARC64_IOMMU_H | ||
6 | #define _SPARC64_IOMMU_H | ||
7 | |||
8 | /* The format of an iopte in the page tables. */ | ||
9 | #define IOPTE_VALID 0x8000000000000000UL | ||
10 | #define IOPTE_64K 0x2000000000000000UL | ||
11 | #define IOPTE_STBUF 0x1000000000000000UL | ||
12 | #define IOPTE_INTRA 0x0800000000000000UL | ||
13 | #define IOPTE_CONTEXT 0x07ff800000000000UL | ||
14 | #define IOPTE_PAGE 0x00007fffffffe000UL | ||
15 | #define IOPTE_CACHE 0x0000000000000010UL | ||
16 | #define IOPTE_WRITE 0x0000000000000002UL | ||
17 | |||
18 | #define IOMMU_NUM_CTXS 4096 | ||
19 | |||
20 | struct iommu_arena { | ||
21 | unsigned long *map; | ||
22 | unsigned int hint; | ||
23 | unsigned int limit; | ||
24 | }; | ||
25 | |||
26 | struct iommu { | ||
27 | spinlock_t lock; | ||
28 | struct iommu_arena arena; | ||
29 | void (*flush_all)(struct iommu *); | ||
30 | iopte_t *page_table; | ||
31 | u32 page_table_map_base; | ||
32 | unsigned long iommu_control; | ||
33 | unsigned long iommu_tsbbase; | ||
34 | unsigned long iommu_flush; | ||
35 | unsigned long iommu_flushinv; | ||
36 | unsigned long iommu_tags; | ||
37 | unsigned long iommu_ctxflush; | ||
38 | unsigned long write_complete_reg; | ||
39 | unsigned long dummy_page; | ||
40 | unsigned long dummy_page_pa; | ||
41 | unsigned long ctx_lowest_free; | ||
42 | DECLARE_BITMAP(ctx_bitmap, IOMMU_NUM_CTXS); | ||
43 | u32 dma_addr_mask; | ||
44 | }; | ||
45 | |||
46 | struct strbuf { | ||
47 | int strbuf_enabled; | ||
48 | unsigned long strbuf_control; | ||
49 | unsigned long strbuf_pflush; | ||
50 | unsigned long strbuf_fsync; | ||
51 | unsigned long strbuf_ctxflush; | ||
52 | unsigned long strbuf_ctxmatch_base; | ||
53 | unsigned long strbuf_flushflag_pa; | ||
54 | volatile unsigned long *strbuf_flushflag; | ||
55 | volatile unsigned long __flushflag_buf[(64+(64-1)) / sizeof(long)]; | ||
56 | }; | ||
57 | |||
58 | extern int iommu_table_init(struct iommu *iommu, int tsbsize, | ||
59 | u32 dma_offset, u32 dma_addr_mask, | ||
60 | int numa_node); | ||
61 | |||
62 | #endif /* !(_SPARC64_IOMMU_H) */ | ||