[PATCH 3/7] drm/xe/vsec: Use correct pm state get
"Michael J. Ruhl" <[email protected]>
| Newsgroups | org.kernel.vger.platform-driver-x86,org.freedesktop.lists.intel-xe |
|---|---|
| Message-ID | <[email protected]> |
Crashlog needs to be collected at all times. The current pm check assumes telemetry only. Update read path to enable device for crashlog instances. Signed-off-by: Michael J. Ruhl <[email protected]> Fixes: 2c402a801c19 ("platform/x86/intel/pmt: support BMG crashlog") --- drivers/gpu/drm/xe/xe_vsec.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c index a9baf0bfe572..f9b519f2b91f 100644 --- a/drivers/gpu/drm/xe/xe_vsec.c +++ b/drivers/gpu/drm/xe/xe_vsec.c @@ -145,6 +145,7 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse { struct xe_device *xe = kdev_to_xe_device(dev); void __iomem *telem_addr = xe->mmio.regs + BMG_TELEMETRY_OFFSET; + u32 cap_type = FIELD_GET(GUID_CAP_TYPE, guid); u32 mem_region; u32 offset; int ret; @@ -160,9 +161,18 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse if (!xe->soc_remapper.set_telem_region) return -ENODEV; - /* indicate that we are not at an appropriate power level */ - if (!xe_pm_runtime_get_if_active(xe)) - return -ENODATA; + /* make sure that we are not at an inappropriate power level */ + switch (cap_type) { + case CRASHLOG: + xe_pm_runtime_get(xe); + break; + case TELEMETRY: + if (!xe_pm_runtime_get_if_active(xe)) + return -ENODATA; + break; + case WATCHER: + return -EINVAL; + } /* set SoC re-mapper index register based on GUID memory region */ xe->soc_remapper.set_telem_region(xe, mem_region); -- 2.43.0