[SPARC64]: Consolidate {sbus,pci}_iommu_arena.
Move to asm-sparc64/iommu.h and rename to plain "iommu_arena". Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
711b360d64
commit
9b3627f389
5 changed files with 23 additions and 29 deletions
|
@ -77,7 +77,7 @@ static inline void iopte_make_dummy(struct pci_iommu *iommu, iopte_t *iopte)
|
|||
/* Based largely upon the ppc64 iommu allocator. */
|
||||
static long pci_arena_alloc(struct pci_iommu *iommu, unsigned long npages)
|
||||
{
|
||||
struct pci_iommu_arena *arena = &iommu->arena;
|
||||
struct iommu_arena *arena = &iommu->arena;
|
||||
unsigned long n, i, start, end, limit;
|
||||
int pass;
|
||||
|
||||
|
@ -116,7 +116,7 @@ static long pci_arena_alloc(struct pci_iommu *iommu, unsigned long npages)
|
|||
return n;
|
||||
}
|
||||
|
||||
static void pci_arena_free(struct pci_iommu_arena *arena, unsigned long base, unsigned long npages)
|
||||
static void pci_arena_free(struct iommu_arena *arena, unsigned long base, unsigned long npages)
|
||||
{
|
||||
unsigned long i;
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ static inline long pci_iommu_batch_end(void)
|
|||
return pci_iommu_batch_flush(p);
|
||||
}
|
||||
|
||||
static long pci_arena_alloc(struct pci_iommu_arena *arena, unsigned long npages)
|
||||
static long pci_arena_alloc(struct iommu_arena *arena, unsigned long npages)
|
||||
{
|
||||
unsigned long n, i, start, end, limit;
|
||||
int pass;
|
||||
|
@ -149,7 +149,7 @@ static long pci_arena_alloc(struct pci_iommu_arena *arena, unsigned long npages)
|
|||
return n;
|
||||
}
|
||||
|
||||
static void pci_arena_free(struct pci_iommu_arena *arena, unsigned long base, unsigned long npages)
|
||||
static void pci_arena_free(struct iommu_arena *arena, unsigned long base, unsigned long npages)
|
||||
{
|
||||
unsigned long i;
|
||||
|
||||
|
@ -707,7 +707,7 @@ static void pci_sun4v_scan_bus(struct pci_controller_info *p)
|
|||
static unsigned long probe_existing_entries(struct pci_pbm_info *pbm,
|
||||
struct pci_iommu *iommu)
|
||||
{
|
||||
struct pci_iommu_arena *arena = &iommu->arena;
|
||||
struct iommu_arena *arena = &iommu->arena;
|
||||
unsigned long i, cnt = 0;
|
||||
u32 devhandle;
|
||||
|
||||
|
|
|
@ -26,16 +26,10 @@
|
|||
|
||||
#define MAP_BASE ((u32)0xc0000000)
|
||||
|
||||
struct sbus_iommu_arena {
|
||||
unsigned long *map;
|
||||
unsigned int hint;
|
||||
unsigned int limit;
|
||||
};
|
||||
|
||||
struct sbus_iommu {
|
||||
spinlock_t lock;
|
||||
|
||||
struct sbus_iommu_arena arena;
|
||||
struct iommu_arena arena;
|
||||
|
||||
iopte_t *page_table;
|
||||
unsigned long strbuf_regs;
|
||||
|
@ -123,7 +117,7 @@ static void sbus_strbuf_flush(struct sbus_iommu *iommu, u32 base, unsigned long
|
|||
/* Based largely upon the ppc64 iommu allocator. */
|
||||
static long sbus_arena_alloc(struct sbus_iommu *iommu, unsigned long npages)
|
||||
{
|
||||
struct sbus_iommu_arena *arena = &iommu->arena;
|
||||
struct iommu_arena *arena = &iommu->arena;
|
||||
unsigned long n, i, start, end, limit;
|
||||
int pass;
|
||||
|
||||
|
@ -162,7 +156,7 @@ static long sbus_arena_alloc(struct sbus_iommu *iommu, unsigned long npages)
|
|||
return n;
|
||||
}
|
||||
|
||||
static void sbus_arena_free(struct sbus_iommu_arena *arena, unsigned long base, unsigned long npages)
|
||||
static void sbus_arena_free(struct iommu_arena *arena, unsigned long base, unsigned long npages)
|
||||
{
|
||||
unsigned long i;
|
||||
|
||||
|
|
|
@ -7,15 +7,21 @@
|
|||
#define _SPARC64_IOMMU_H
|
||||
|
||||
/* The format of an iopte in the page tables. */
|
||||
#define IOPTE_VALID 0x8000000000000000UL /* IOPTE is valid */
|
||||
#define IOPTE_64K 0x2000000000000000UL /* IOPTE is for 64k page */
|
||||
#define IOPTE_STBUF 0x1000000000000000UL /* DVMA can use streaming buffer */
|
||||
#define IOPTE_INTRA 0x0800000000000000UL /* SBUS slot-->slot direct transfer*/
|
||||
#define IOPTE_CONTEXT 0x07ff800000000000UL /* Context number */
|
||||
#define IOPTE_PAGE 0x00007fffffffe000UL /* Physical page number (PA[42:13])*/
|
||||
#define IOPTE_CACHE 0x0000000000000010UL /* Cached (in UPA E-cache) */
|
||||
#define IOPTE_WRITE 0x0000000000000002UL /* Writeable */
|
||||
#define IOPTE_VALID 0x8000000000000000UL
|
||||
#define IOPTE_64K 0x2000000000000000UL
|
||||
#define IOPTE_STBUF 0x1000000000000000UL
|
||||
#define IOPTE_INTRA 0x0800000000000000UL
|
||||
#define IOPTE_CONTEXT 0x07ff800000000000UL
|
||||
#define IOPTE_PAGE 0x00007fffffffe000UL
|
||||
#define IOPTE_CACHE 0x0000000000000010UL
|
||||
#define IOPTE_WRITE 0x0000000000000002UL
|
||||
|
||||
#define IOMMU_NUM_CTXS 4096
|
||||
|
||||
struct iommu_arena {
|
||||
unsigned long *map;
|
||||
unsigned int hint;
|
||||
unsigned int limit;
|
||||
};
|
||||
|
||||
#endif /* !(_SPARC_IOMMU_H) */
|
||||
|
|
|
@ -35,19 +35,13 @@ struct pci_controller_info;
|
|||
/* This contains the software state necessary to drive a PCI
|
||||
* controller's IOMMU.
|
||||
*/
|
||||
struct pci_iommu_arena {
|
||||
unsigned long *map;
|
||||
unsigned int hint;
|
||||
unsigned int limit;
|
||||
};
|
||||
|
||||
struct pci_iommu {
|
||||
/* This protects the controller's IOMMU and all
|
||||
* streaming buffers underneath.
|
||||
*/
|
||||
spinlock_t lock;
|
||||
|
||||
struct pci_iommu_arena arena;
|
||||
struct iommu_arena arena;
|
||||
|
||||
/* IOMMU page table, a linear array of ioptes. */
|
||||
iopte_t *page_table; /* The page table itself. */
|
||||
|
|
Loading…
Reference in a new issue