aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iommu
diff options
context:
space:
mode:
authorGary R Hook <gary.hook@amd.com>2018-05-01 15:53:00 -0400
committerJoerg Roedel <jroedel@suse.de>2018-05-03 10:33:18 -0400
commite7f63ffc1bf19c607a1ad7b89c1389004ee6e9c4 (patch)
tree17b77d3be112440e93819f9da473248b07493f14 /drivers/iommu
parentd64c0486ed50900a3b3b1e22192dc07ad3ad5a8a (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.c10
-rw-r--r--drivers/iommu/amd_iommu_types.h1
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,
545static void iommu_print_event(struct amd_iommu *iommu, void *__evt) 545static 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