diff options
author | Ohad Ben-Cohen <ohad@wizery.com> | 2011-09-13 15:25:23 -0400 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2011-09-14 09:35:36 -0400 |
commit | 4f3f8d9db359bbc780d482849f2a9c8b12f910b6 (patch) | |
tree | 4875209af7bc93421e9f7541ff0182c5aa5d97c3 /drivers | |
parent | 5e1b612cb16f446996398bd23b6cd59ea0206938 (diff) |
iommu/core: Add fault reporting mechanism
Add iommu fault report mechanism to the IOMMU API, so implementations
could report about mmu faults (translation errors, hardware errors,
etc..).
Fault reports can be used in several ways:
- mere logging
- reset the device that accessed the faulting address (may be necessary
in case the device is a remote processor for example)
- implement dynamic PTE/TLB loading
A dedicated iommu_set_fault_handler() API has been added to allow
users, who are interested to receive such reports, to provide
their handler.
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/iommu/iommu.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 6e6b6a11b3ce..b75d9fb2fa91 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c | |||
@@ -39,6 +39,19 @@ bool iommu_found(void) | |||
39 | } | 39 | } |
40 | EXPORT_SYMBOL_GPL(iommu_found); | 40 | EXPORT_SYMBOL_GPL(iommu_found); |
41 | 41 | ||
42 | /** | ||
43 | * iommu_set_fault_handler() - set a fault handler for an iommu domain | ||
44 | * @domain: iommu domain | ||
45 | * @handler: fault handler | ||
46 | */ | ||
47 | void iommu_set_fault_handler(struct iommu_domain *domain, | ||
48 | iommu_fault_handler_t handler) | ||
49 | { | ||
50 | BUG_ON(!domain); | ||
51 | |||
52 | domain->handler = handler; | ||
53 | } | ||
54 | |||
42 | struct iommu_domain *iommu_domain_alloc(void) | 55 | struct iommu_domain *iommu_domain_alloc(void) |
43 | { | 56 | { |
44 | struct iommu_domain *domain; | 57 | struct iommu_domain *domain; |