|
@@ -545,7 +545,7 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id,
|
|
|
static void iommu_print_event(struct amd_iommu *iommu, void *__evt)
|
|
|
{
|
|
|
struct device *dev = iommu->iommu.dev;
|
|
|
- int type, devid, pasid, flags;
|
|
|
+ int type, devid, pasid, flags, tag;
|
|
|
volatile u32 *event = __evt;
|
|
|
int count = 0;
|
|
|
u64 address;
|
|
@@ -610,6 +610,14 @@ retry:
|
|
|
PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid),
|
|
|
pasid, address, flags);
|
|
|
break;
|
|
|
+ case EVENT_TYPE_INV_PPR_REQ:
|
|
|
+ pasid = ((event[0] >> 16) & 0xFFFF)
|
|
|
+ | ((event[1] << 6) & 0xF0000);
|
|
|
+ tag = event[1] & 0x03FF;
|
|
|
+ dev_err(dev, "INVALID_PPR_REQUEST device=%02x:%02x.%x pasid=0x%05x address=0x%016llx flags=0x%04x]\n",
|
|
|
+ PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid),
|
|
|
+ pasid, address, flags);
|
|
|
+ break;
|
|
|
default:
|
|
|
dev_err(dev, "UNKNOWN event[0]=0x%08x event[1]=0x%08x event[2]=0x%08x event[3]=0x%08x\n",
|
|
|
event[0], event[1], event[2], event[3]);
|