diff options
| author | Gary R Hook <gary.hook@amd.com> | 2018-05-01 15:53:00 -0400 |
|---|---|---|
| committer | Joerg Roedel <jroedel@suse.de> | 2018-05-03 10:33:18 -0400 |
| commit | e7f63ffc1bf19c607a1ad7b89c1389004ee6e9c4 (patch) | |
| tree | 17b77d3be112440e93819f9da473248b07493f14 /drivers/iommu | |
| parent | d64c0486ed50900a3b3b1e22192dc07ad3ad5a8a (diff) | |
iommu/amd: Update logging information for new event type
A new events have been defined in the AMD IOMMU spec:
0x09 - "invalid PPR request"
Add support for logging this type of event.
Signed-off-by: Gary R Hook <gary.hook@amd.com>
~
~
~
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu')
| -rw-r--r-- | drivers/iommu/amd_iommu.c | 10 | ||||
| -rw-r--r-- | drivers/iommu/amd_iommu_types.h | 1 |
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index aecc49aa6fdb..5fef2466da15 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c | |||
| @@ -545,7 +545,7 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id, | |||
| 545 | static void iommu_print_event(struct amd_iommu *iommu, void *__evt) | 545 | static void iommu_print_event(struct amd_iommu *iommu, void *__evt) |
| 546 | { | 546 | { |
| 547 | struct device *dev = iommu->iommu.dev; | 547 | struct device *dev = iommu->iommu.dev; |
| 548 | int type, devid, pasid, flags; | 548 | int type, devid, pasid, flags, tag; |
| 549 | volatile u32 *event = __evt; | 549 | volatile u32 *event = __evt; |
| 550 | int count = 0; | 550 | int count = 0; |
| 551 | u64 address; | 551 | u64 address; |
| @@ -610,6 +610,14 @@ retry: | |||
| 610 | PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), | 610 | PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), |
| 611 | pasid, address, flags); | 611 | pasid, address, flags); |
| 612 | break; | 612 | break; |
| 613 | case EVENT_TYPE_INV_PPR_REQ: | ||
| 614 | pasid = ((event[0] >> 16) & 0xFFFF) | ||
| 615 | | ((event[1] << 6) & 0xF0000); | ||
| 616 | tag = event[1] & 0x03FF; | ||
| 617 | dev_err(dev, "INVALID_PPR_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n", | ||
| 618 | PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid), | ||
| 619 | pasid, address, flags); | ||
| 620 | break; | ||
| 613 | default: | 621 | default: |
| 614 | dev_err(dev, "UNKNOWN event[0]=0x%08x event[1]=0x%08x event[2]=0x%08x event[3]=0x%08x\n", | 622 | dev_err(dev, "UNKNOWN event[0]=0x%08x event[1]=0x%08x event[2]=0x%08x event[3]=0x%08x\n", |
| 615 | event[0], event[1], event[2], event[3]); | 623 | event[0], event[1], event[2], event[3]); |
diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h index 1c9b080276c9..986cbe0cc189 100644 --- a/drivers/iommu/amd_iommu_types.h +++ b/drivers/iommu/amd_iommu_types.h | |||
| @@ -133,6 +133,7 @@ | |||
| 133 | #define EVENT_TYPE_CMD_HARD_ERR 0x6 | 133 | #define EVENT_TYPE_CMD_HARD_ERR 0x6 |
| 134 | #define EVENT_TYPE_IOTLB_INV_TO 0x7 | 134 | #define EVENT_TYPE_IOTLB_INV_TO 0x7 |
| 135 | #define EVENT_TYPE_INV_DEV_REQ 0x8 | 135 | #define EVENT_TYPE_INV_DEV_REQ 0x8 |
| 136 | #define EVENT_TYPE_INV_PPR_REQ 0x9 | ||
| 136 | #define EVENT_DEVID_MASK 0xffff | 137 | #define EVENT_DEVID_MASK 0xffff |
| 137 | #define EVENT_DEVID_SHIFT 0 | 138 | #define EVENT_DEVID_SHIFT 0 |
| 138 | #define EVENT_DOMID_MASK 0xffff | 139 | #define EVENT_DOMID_MASK 0xffff |
