Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

iommu.c File Reference

#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/malloc.h>
#include <asm/pgtable.h>
#include <asm/sbus.h>
#include <asm/io.h>
#include <asm/mxcc.h>
#include <asm/mbus.h>

Include dependency graph for iommu.c:

Go to the source code of this file.

Defines

#define flush_page_for_dma(page)   BTFIXUP_CALL(flush_page_for_dma)(page)
#define IOPERM   (IOPTE_CACHE | IOPTE_WRITE | IOPTE_VALID)
#define MKIOPTE(phys)   (((((phys)>>4) & IOPTE_PAGE) | IOPERM) & ~IOPTE_WAZ)

Functions

void viking_flush_page (unsigned long page)
void viking_mxcc_flush_page (unsigned long page)
static void iommu_map_dvma_pages_for_iommu (struct iommu_struct *iommu)
 __initfunc (void iommu_init(int iommund, struct linux_sbus *sbus))
static __u32 iommu_get_scsi_one_noflush (char *vaddr, unsigned long len, struct linux_sbus *sbus)
static __u32 iommu_get_scsi_one_gflush (char *vaddr, unsigned long len, struct linux_sbus *sbus)
static __u32 iommu_get_scsi_one_pflush (char *vaddr, unsigned long len, struct linux_sbus *sbus)
static void iommu_get_scsi_sgl_noflush (struct mmu_sglist *sg, int sz, struct linux_sbus *sbus)
static void iommu_get_scsi_sgl_gflush (struct mmu_sglist *sg, int sz, struct linux_sbus *sbus)
static void iommu_get_scsi_sgl_pflush (struct mmu_sglist *sg, int sz, struct linux_sbus *sbus)
static void iommu_release_scsi_one (__u32 vaddr, unsigned long len, struct linux_sbus *sbus)
static void iommu_release_scsi_sgl (struct mmu_sglist *sg, int sz, struct linux_sbus *sbus)
static char * iommu_lockarea (char *vaddr, unsigned long len)
static void iommu_unlockarea (char *vaddr, unsigned long len)
 __initfunc (void ld_mmu_iommu(void))

Variables

int viking_mxcc_present
int flush_page_for_dma_global
static int viking_flush = 0


Define Documentation

#define flush_page_for_dma page   )     BTFIXUP_CALL(flush_page_for_dma)(page)
 

Definition at line 24 of file iommu.c.

Referenced by __initfunc(), iommu_get_scsi_one_gflush(), iommu_get_scsi_one_pflush(), iommu_get_scsi_sgl_gflush(), and iommu_get_scsi_sgl_pflush().

#define IOPERM   (IOPTE_CACHE | IOPTE_WRITE | IOPTE_VALID)
 

Definition at line 31 of file iommu.c.

#define MKIOPTE phys   )     (((((phys)>>4) & IOPTE_PAGE) | IOPERM) & ~IOPTE_WAZ)
 

Definition at line 32 of file iommu.c.


Function Documentation

__initfunc void   ld_mmu_iommu(void)  ) 
 

Definition at line 283 of file iommu.c.

References BTFIXUPCALL_NOP, BTFIXUPCALL_NORM, BTFIXUPCALL_RETO0, BTFIXUPSET_CALL, BTFIXUPVAL_CALL, flush_page_for_dma, flush_page_for_dma_global, iommu_get_scsi_one_gflush(), iommu_get_scsi_one_noflush(), iommu_get_scsi_one_pflush(), iommu_get_scsi_sgl_gflush(), iommu_get_scsi_sgl_noflush(), iommu_get_scsi_sgl_pflush(), iommu_lockarea(), iommu_release_scsi_one(), iommu_release_scsi_sgl(), iommu_unlockarea(), long, mmu_get_scsi_one, mmu_get_scsi_sgl, mmu_lockarea, mmu_map_dma_area, mmu_release_scsi_one, mmu_release_scsi_sgl, mmu_unlockarea, viking_flush, and viking_flush_page.

Here is the call graph for this function:

__initfunc void   iommu_init(int iommund, struct linux_sbus *sbus)  ) 
 

Definition at line 48 of file iommu.c.

References __get_free_pages(), iommu_regs::base, iommu_regs::control, end, iommu_struct::end, flush_cache_all, flush_tlb_all, i, linux_sbus::iommu, IOMMU_CTRL_ENAB, IOMMU_CTRL_IMPL, IOMMU_CTRL_RNGE, IOMMU_CTRL_VERS, iommu_invalidate(), iommu_map_dvma_pages_for_iommu(), IOMMU_RNGE_1GB, IOMMU_RNGE_256MB, IOMMU_RNGE_2GB, IOMMU_RNGE_512MB, kmalloc(), long, iommu_struct::lowest, memset, page_offset, PAGE_SHIFT, PAGE_SIZE, iommu_struct::page_table, panic(), iommu_struct::plow, printk, prom_getproperty(), prom_halt(), prom_printf, iommu_struct::regs, sparc_alloc_io(), start, iommu_struct::start, tmp, viking_flush, viking_flush_page, viking_mxcc_flush_page(), viking_mxcc_present, and x0.

Here is the call graph for this function:

static __u32 iommu_get_scsi_one_gflush char *  vaddr,
unsigned long  len,
struct linux_sbus sbus
[static]
 

Definition at line 146 of file iommu.c.

References flush_page_for_dma.

Referenced by __initfunc().

static __u32 iommu_get_scsi_one_noflush char *  vaddr,
unsigned long  len,
struct linux_sbus sbus
[static]
 

Definition at line 141 of file iommu.c.

Referenced by __initfunc().

static __u32 iommu_get_scsi_one_pflush char *  vaddr,
unsigned long  len,
struct linux_sbus sbus
[static]
 

Definition at line 152 of file iommu.c.

References flush_page_for_dma, long, page, PAGE_MASK, and PAGE_SIZE.

Referenced by __initfunc().

static void iommu_get_scsi_sgl_gflush struct mmu_sglist sg,
int  sz,
struct linux_sbus sbus
[static]
 

Definition at line 169 of file iommu.c.

References mmu_sglist::addr, mmu_sglist::dvma_addr, and flush_page_for_dma.

Referenced by __initfunc().

static void iommu_get_scsi_sgl_noflush struct mmu_sglist sg,
int  sz,
struct linux_sbus sbus
[static]
 

Definition at line 163 of file iommu.c.

Referenced by __initfunc().

static void iommu_get_scsi_sgl_pflush struct mmu_sglist sg,
int  sz,
struct linux_sbus sbus
[static]
 

Definition at line 176 of file iommu.c.

References mmu_sglist::addr, mmu_sglist::dvma_addr, flush_page_for_dma, mmu_sglist::len, long, page, PAGE_MASK, and PAGE_SIZE.

Referenced by __initfunc().

static char* iommu_lockarea char *  vaddr,
unsigned long  len
[static]
 

Definition at line 274 of file iommu.c.

Referenced by __initfunc().

static void iommu_map_dvma_pages_for_iommu struct iommu_struct iommu  )  [inline, static]
 

Definition at line 34 of file iommu.c.

References first, high_memory, last, long, MKIOPTE, page_offset, PAGE_SHIFT, and PAGE_SIZE.

Referenced by __initfunc().

static void iommu_release_scsi_one __u32  vaddr,
unsigned long  len,
struct linux_sbus sbus
[static]
 

Definition at line 194 of file iommu.c.

Referenced by __initfunc().

static void iommu_release_scsi_sgl struct mmu_sglist sg,
int  sz,
struct linux_sbus sbus
[static]
 

Definition at line 198 of file iommu.c.

Referenced by __initfunc().

static void iommu_unlockarea char *  vaddr,
unsigned long  len
[static]
 

Definition at line 279 of file iommu.c.

Referenced by __initfunc().

void viking_flush_page unsigned long  page  ) 
 

void viking_mxcc_flush_page unsigned long  page  ) 
 

Referenced by __initfunc().


Variable Documentation

int flush_page_for_dma_global
 

Definition at line 79 of file srmmu.c.

Referenced by __initfunc().

int viking_flush = 0 [static]
 

Definition at line 26 of file iommu.c.

Referenced by __initfunc().

int viking_mxcc_present
 

Definition at line 116 of file srmmu.c.

Referenced by __initfunc().