I fixed the fence issue in patch #3. Raised the dev_info to a dev_warn in patch #4 and moved the trace into the functions in #5. Any objects or can I get your rb for the whole series? Thanks, Christian. Am 11.01.2018 um 06:50 schrieb Chunming Zhou: > Except some small nitpicks in patch #3, #4, #5, the series looks ok to > me, Reviewed-by: Chunming Zhou <david1.zhou at amd.com> > > > Regards, > David Zhou > On 2018å¹´01æ??10æ?¥ 20:54, Christian König wrote: >> Print that extra information on GMC v8. >> >> Signed-off-by: Christian König <christian.koenig at amd.com> >> --- >>  drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 13 +++++++------ >>  1 file changed, 7 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c >> b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c >> index 287228315b76..5b4f6c1f0993 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c >> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c >> @@ -962,21 +962,21 @@ static void gmc_v8_0_gart_fini(struct >> amdgpu_device *adev) >>   * >>   * Print human readable fault information (CIK). >>   */ >> -static void gmc_v8_0_vm_decode_fault(struct amdgpu_device *adev, >> -                    u32 status, u32 addr, u32 mc_client) >> +static void gmc_v8_0_vm_decode_fault(struct amdgpu_device *adev, u32 >> status, >> +                    u32 addr, u32 mc_client, unsigned pasid) >>  { >> -   u32 mc_id; >>      u32 vmid = REG_GET_FIELD(status, >> VM_CONTEXT1_PROTECTION_FAULT_STATUS, VMID); >>      u32 protections = REG_GET_FIELD(status, >> VM_CONTEXT1_PROTECTION_FAULT_STATUS, >>                      PROTECTIONS); >>      char block[5] = { mc_client >> 24, (mc_client >> 16) & 0xff, >>          (mc_client >> 8) & 0xff, mc_client & 0xff, 0 }; >> +   u32 mc_id; >>       mc_id = REG_GET_FIELD(status, >> VM_CONTEXT1_PROTECTION_FAULT_STATUS, >>                    MEMORY_CLIENT_ID); >>  -   dev_err(adev->dev, "VM fault (0x%02x, vmid %d) at page %u, %s >> from '%s' (0x%08x) (%d)\n", >> -          protections, vmid, addr, >> +   dev_err(adev->dev, "VM fault (0x%02x, vmid %d, pasid %d) at page >> %u, %s from '%s' (0x%08x) (%d)\n", >> +          protections, vmid, pasid, addr, >>             REG_GET_FIELD(status, VM_CONTEXT1_PROTECTION_FAULT_STATUS, >>                   MEMORY_CLIENT_RW) ? >>             "write" : "read", block, mc_client, mc_id); >> @@ -1404,7 +1404,8 @@ static int gmc_v8_0_process_interrupt(struct >> amdgpu_device *adev, >>              addr); >>          dev_err(adev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS >> 0x%08X\n", >>              status); >> -       gmc_v8_0_vm_decode_fault(adev, status, addr, mc_client); >> +       gmc_v8_0_vm_decode_fault(adev, status, addr, mc_client, >> +                    entry->pasid); >>      } >>       return 0; >