• Gabriel Krisman Bertazi's avatar
    drm/i915: Handle msr read failure gracefully · d38014ea
    Gabriel Krisman Bertazi authored
    When reading the i915_energy_uJ debugfs file, it tries to fetch
    MSR_RAPL_POWER_UNIT, which might not be available, like in a vm
    environment, causing the exception shown below.
    
    We can easily prevent it by doing a rdmsrl_safe read instead, which will
    handle the exception, allowing us to abort the debugfs file read.
    
    This was caught by the new igt@debugfs_test@read_all_entries testcase in
    the CI.
    
      unchecked MSR access error: RDMSR from 0x606 at rIP:0xffffffffa0078f66
        (i915_energy_uJ+0x36/0xb0 [i915])
      Call Trace:
       seq_read+0xdc/0x3a0
       full_proxy_read+0x4f/0x70
       __vfs_read+0x23/0x120
       ? putname+0x4f/0x60
       ? rcu_read_lock_sched_held+0x75/0x80
       ? entry_SYSCALL_64_fastpath+0x5/0xb1
       vfs_read+0xa0/0x150
       SyS_read+0x44/0xb0
       entry_SYSCALL_64_fastpath+0x1c/0xb1
      RIP: 0033:0x7f1f5e9f4500
      RSP: 002b:00007ffc77e65cf8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000
      RAX: ffffffffffffffda RBX: ffffffff8146e003 RCX: 00007f1f5e9f4500
      RDX: 0000000000000200 RSI: 00007ffc77e65d10 RDI: 0000000000000006
      RBP: ffffc900007abf88 R08: 0000000001eaff20 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      R13: 0000000000000006 R14: 0000000000000005 R15: 0000000001eb94db
       ? __this_cpu_preempt_check+0x13/0x20
    
    v2:
     - Drop unsigned long long cast and improve calculation (Chris)
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101901Signed-off-by: default avatarGabriel Krisman Bertazi <krisman@collabora.co.uk>
    Link: https://patchwork.freedesktop.org/patch/msgid/87o9s7zrx3.fsf@dilma.collabora.co.ukReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    d38014ea
i915_debugfs.c 139 KB