Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
amd_iommu.c File Reference
#include <linux/ratelimit.h>
#include <linux/pci.h>
#include <linux/pci-ats.h>
#include <linux/bitmap.h>
#include <linux/slab.h>
#include <linux/debugfs.h>
#include <linux/scatterlist.h>
#include <linux/dma-mapping.h>
#include <linux/iommu-helper.h>
#include <linux/iommu.h>
#include <linux/delay.h>
#include <linux/amd-iommu.h>
#include <linux/notifier.h>
#include <linux/export.h>
#include <linux/irq.h>
#include <linux/msi.h>
#include <asm/irq_remapping.h>
#include <asm/io_apic.h>
#include <asm/apic.h>
#include <asm/hw_irq.h>
#include <asm/msidef.h>
#include <asm/proto.h>
#include <asm/iommu.h>
#include <asm/gart.h>
#include <asm/dma.h>
#include "amd_iommu_proto.h"
#include "amd_iommu_types.h"
#include "irq_remapping.h"

Go to the source code of this file.

Data Structures

struct  iommu_cmd
 

Macros

#define CMD_SET_TYPE(cmd, t)   ((cmd)->data[1] |= ((t) << 28))
 
#define LOOP_TIMEOUT   100000
 
#define AMD_IOMMU_PGSIZES   (~0xFFFUL)
 
#define REQ_ACS_FLAGS   (PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF)
 
#define PCI_PRI_TLP_OFF   (1 << 15)
 

Functions

 LIST_HEAD (ioapic_map)
 
 LIST_HEAD (hpet_map)
 
void __init amd_iommu_uninit_devices (void)
 
int __init amd_iommu_init_devices (void)
 
irqreturn_t amd_iommu_int_thread (int irq, void *data)
 
irqreturn_t amd_iommu_int_handler (int irq, void *data)
 
void iommu_flush_all_caches (struct amd_iommu *iommu)
 
void amd_iommu_init_notifier (void)
 
void __init amd_iommu_init_api (void)
 
int __init amd_iommu_init_dma_ops (void)
 
int __init amd_iommu_init_passthrough (void)
 
int amd_iommu_register_ppr_notifier (struct notifier_block *nb)
 
 EXPORT_SYMBOL (amd_iommu_register_ppr_notifier)
 
int amd_iommu_unregister_ppr_notifier (struct notifier_block *nb)
 
 EXPORT_SYMBOL (amd_iommu_unregister_ppr_notifier)
 
void amd_iommu_domain_direct_map (struct iommu_domain *dom)
 
 EXPORT_SYMBOL (amd_iommu_domain_direct_map)
 
int amd_iommu_domain_enable_v2 (struct iommu_domain *dom, int pasids)
 
 EXPORT_SYMBOL (amd_iommu_domain_enable_v2)
 
int amd_iommu_flush_page (struct iommu_domain *dom, int pasid, u64 address)
 
 EXPORT_SYMBOL (amd_iommu_flush_page)
 
int amd_iommu_flush_tlb (struct iommu_domain *dom, int pasid)
 
 EXPORT_SYMBOL (amd_iommu_flush_tlb)
 
int amd_iommu_domain_set_gcr3 (struct iommu_domain *dom, int pasid, unsigned long cr3)
 
 EXPORT_SYMBOL (amd_iommu_domain_set_gcr3)
 
int amd_iommu_domain_clear_gcr3 (struct iommu_domain *dom, int pasid)
 
 EXPORT_SYMBOL (amd_iommu_domain_clear_gcr3)
 
int amd_iommu_complete_ppr (struct pci_dev *pdev, int pasid, int status, int tag)
 
 EXPORT_SYMBOL (amd_iommu_complete_ppr)
 
struct iommu_domainamd_iommu_get_v2_domain (struct pci_dev *pdev)
 
 EXPORT_SYMBOL (amd_iommu_get_v2_domain)
 
void amd_iommu_enable_device_erratum (struct pci_dev *pdev, u32 erratum)
 
 EXPORT_SYMBOL (amd_iommu_enable_device_erratum)
 
int amd_iommu_device_info (struct pci_dev *pdev, struct amd_iommu_device_info *info)
 
 EXPORT_SYMBOL (amd_iommu_device_info)
 

Variables

int amd_iommu_max_glx_val = -1
 
struct kmem_cacheamd_iommu_irq_cache
 

Macro Definition Documentation

#define AMD_IOMMU_PGSIZES   (~0xFFFUL)

Definition at line 70 of file amd_iommu.c.

#define CMD_SET_TYPE (   cmd,
  t 
)    ((cmd)->data[1] |= ((t) << 28))

Definition at line 50 of file amd_iommu.c.

#define LOOP_TIMEOUT   100000

Definition at line 52 of file amd_iommu.c.

#define PCI_PRI_TLP_OFF   (1 << 15)

Definition at line 2180 of file amd_iommu.c.

#define REQ_ACS_FLAGS   (PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF)

Definition at line 277 of file amd_iommu.c.

Function Documentation

int amd_iommu_complete_ppr ( struct pci_dev pdev,
int  pasid,
int  status,
int  tag 
)

Definition at line 3698 of file amd_iommu.c.

int amd_iommu_device_info ( struct pci_dev pdev,
struct amd_iommu_device_info *  info 
)

Definition at line 3745 of file amd_iommu.c.

int amd_iommu_domain_clear_gcr3 ( struct iommu_domain dom,
int  pasid 
)

Definition at line 3684 of file amd_iommu.c.

void amd_iommu_domain_direct_map ( struct iommu_domain dom)

Definition at line 3435 of file amd_iommu.c.

int amd_iommu_domain_enable_v2 ( struct iommu_domain dom,
int  pasids 
)

Definition at line 3456 of file amd_iommu.c.

int amd_iommu_domain_set_gcr3 ( struct iommu_domain dom,
int  pasid,
unsigned long  cr3 
)

Definition at line 3669 of file amd_iommu.c.

void amd_iommu_enable_device_erratum ( struct pci_dev pdev,
u32  erratum 
)

Definition at line 3733 of file amd_iommu.c.

int amd_iommu_flush_page ( struct iommu_domain dom,
int  pasid,
u64  address 
)

Definition at line 3567 of file amd_iommu.c.

int amd_iommu_flush_tlb ( struct iommu_domain dom,
int  pasid 
)

Definition at line 3590 of file amd_iommu.c.

struct iommu_domain* amd_iommu_get_v2_domain ( struct pci_dev pdev)
read

Definition at line 3717 of file amd_iommu.c.

void __init amd_iommu_init_api ( void  )

Definition at line 3048 of file amd_iommu.c.

int __init amd_iommu_init_devices ( void  )

Definition at line 419 of file amd_iommu.c.

int __init amd_iommu_init_dma_ops ( void  )

Definition at line 3053 of file amd_iommu.c.

void amd_iommu_init_notifier ( void  )

Definition at line 2413 of file amd_iommu.c.

int __init amd_iommu_init_passthrough ( void  )

Definition at line 3387 of file amd_iommu.c.

irqreturn_t amd_iommu_int_handler ( int  irq,
void data 
)

Definition at line 730 of file amd_iommu.c.

irqreturn_t amd_iommu_int_thread ( int  irq,
void data 
)

Definition at line 718 of file amd_iommu.c.

int amd_iommu_register_ppr_notifier ( struct notifier_block nb)

Definition at line 3423 of file amd_iommu.c.

void __init amd_iommu_uninit_devices ( void  )

Definition at line 401 of file amd_iommu.c.

int amd_iommu_unregister_ppr_notifier ( struct notifier_block nb)

Definition at line 3429 of file amd_iommu.c.

EXPORT_SYMBOL ( amd_iommu_register_ppr_notifier  )
EXPORT_SYMBOL ( amd_iommu_unregister_ppr_notifier  )
EXPORT_SYMBOL ( amd_iommu_domain_direct_map  )
EXPORT_SYMBOL ( amd_iommu_domain_enable_v2  )
EXPORT_SYMBOL ( amd_iommu_flush_page  )
EXPORT_SYMBOL ( amd_iommu_flush_tlb  )
EXPORT_SYMBOL ( amd_iommu_domain_set_gcr3  )
EXPORT_SYMBOL ( amd_iommu_domain_clear_gcr3  )
EXPORT_SYMBOL ( amd_iommu_complete_ppr  )
EXPORT_SYMBOL ( amd_iommu_get_v2_domain  )
EXPORT_SYMBOL ( amd_iommu_enable_device_erratum  )
EXPORT_SYMBOL ( amd_iommu_device_info  )
void iommu_flush_all_caches ( struct amd_iommu iommu)

Definition at line 1061 of file amd_iommu.c.

LIST_HEAD ( ioapic_map  )
LIST_HEAD ( hpet_map  )

Variable Documentation

struct kmem_cache* amd_iommu_irq_cache

Definition at line 105 of file amd_iommu.c.

int amd_iommu_max_glx_val = -1

Definition at line 94 of file amd_iommu.c.