Re: [Intel-gfx] [PATCH v2 1/1] drm/i915: Do RPM Wake during GuC/HuC status read
On Mon, Feb 06, 2017 at 10:34:31AM +0530, Kamble, Sagar A wrote: > > > On 2/4/2017 7:40 PM, Arkadiusz Hiler wrote: > > On Fri, Feb 03, 2017 at 01:58:33PM +0530, Sagar Arun Kamble wrote: > > > HUC_STATUS, GUC_STATUS, SOFT_SCRATCH registers are read in debugfs > > > and getparam ioctl. This patch covers those accesses by RPM get/put. > > > > > > v2: Covering access in i915_getparam(I915_PARAM_HUC_STATUS) (ChrisW) > > > > > > Cc: Arkadiusz Hiler> > > Cc: Anusha Srivatsa > > > Cc: Fiedorowicz, Lukasz > > > Signed-off-by: Sagar Arun Kamble > > > --- > > > drivers/gpu/drm/i915/i915_debugfs.c | 6 ++ > > > drivers/gpu/drm/i915/i915_drv.c | 5 ++--- > > > 2 files changed, 8 insertions(+), 3 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c > > > b/drivers/gpu/drm/i915/i915_debugfs.c > > > index 3ae0656..639ed12 100644 > > > --- a/drivers/gpu/drm/i915/i915_debugfs.c > > > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > > > @@ -2374,7 +2374,9 @@ static int i915_huc_load_status_info(struct > > > seq_file *m, void *data) > > > seq_printf(m, "\tRSA: offset is %d; size = %d\n", > > > huc_fw->rsa_offset, huc_fw->rsa_size); > > > + intel_runtime_pm_get(dev_priv); > > > seq_printf(m, "\nHuC status 0x%08x:\n", I915_READ(HUC_STATUS2)); > > > + intel_runtime_pm_put(dev_priv); > > > return 0; > > > } > > Are you sure that HUC_STATUS2 requires RPM get for reading? > > > > I remember trying reading it with device forcefully asleep and it > > succeed just fine. > Hi Arek, > > Faced following warning with device runtime_status=suspended. > Also this register lies in media forcewake range and should have similar RPM > get/put needs as other registers unless this has special behavior I am not > aware of. Reviewed-by: Arkadiusz Hiler -- Cheers, Arek ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH v2 1/1] drm/i915: Do RPM Wake during GuC/HuC status read
On 2/4/2017 7:40 PM, Arkadiusz Hiler wrote: On Fri, Feb 03, 2017 at 01:58:33PM +0530, Sagar Arun Kamble wrote: HUC_STATUS, GUC_STATUS, SOFT_SCRATCH registers are read in debugfs and getparam ioctl. This patch covers those accesses by RPM get/put. v2: Covering access in i915_getparam(I915_PARAM_HUC_STATUS) (ChrisW) Cc: Arkadiusz HilerCc: Anusha Srivatsa Cc: Fiedorowicz, Lukasz Signed-off-by: Sagar Arun Kamble --- drivers/gpu/drm/i915/i915_debugfs.c | 6 ++ drivers/gpu/drm/i915/i915_drv.c | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 3ae0656..639ed12 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -2374,7 +2374,9 @@ static int i915_huc_load_status_info(struct seq_file *m, void *data) seq_printf(m, "\tRSA: offset is %d; size = %d\n", huc_fw->rsa_offset, huc_fw->rsa_size); + intel_runtime_pm_get(dev_priv); seq_printf(m, "\nHuC status 0x%08x:\n", I915_READ(HUC_STATUS2)); + intel_runtime_pm_put(dev_priv); return 0; } Are you sure that HUC_STATUS2 requires RPM get for reading? I remember trying reading it with device forcefully asleep and it succeed just fine. Hi Arek, Faced following warning with device runtime_status=suspended. Also this register lies in media forcewake range and should have similar RPM get/put needs as other registers unless this has special behavior I am not aware of. [ 153.923576] WARNING: CPU: 1 PID: 1859 at drivers/gpu/drm/i915/intel_drv.h:1698 gen9_decoupled_read32+0x1a1/0x1c0 [i915] [ 153.923578] Device suspended during HW access [ 153.923580] Modules linked in: spi_pxa2xx_platform 8250_dw i2c_designware_platform i2c_designware_core intel_rapl intel_telemetry_debugfs intel_telemetry_pltdrv intel_punit_ipc intel_telemetry_core x86_pkg_temp_thermal binfmt_misc coretemp kvm_intel snd_soc_skl kvm snd_soc_rt298 snd_soc_skl_ipc snd_soc_rt286 snd_soc_sst_ipc snd_soc_rl6347a snd_soc_sst_dsp snd_hda_ext_core snd_soc_sst_match irqbypass nls_iso8859_1 crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc snd_hda_codec_hdmi snd_hda_intel snd_hda_codec snd_hda_core snd_soc_core snd_hwdep aesni_intel snd_compress aes_x86_64 ac97_bus crypto_simd snd_pcm_dmaengine glue_helper cryptd snd_pcm intel_rapl_perf snd_seq_midi snd_seq_midi_event wdat_wdt snd_rawmidi input_leds serio_raw snd_seq pwm_lpss_pci pwm_lpss snd_seq_device snd_timer idma64 [ 153.923671] virt_dma intel_lpss_pci intel_lpss snd hid_sensor_accel_3d hid_sensor_magn_3d hid_sensor_als hid_sensor_gyro_3d hid_sensor_incl_3d hid_sensor_rotation hid_sensor_press hid_sensor_trigger mei_me industrialio_triggered_buffer kfifo_buf hid_sensor_iio_common industrialio mei soundcore shpchp rfkill_gpio soc_button_array intel_vbtn tpm_crb ucsi intel_hid intel_pmc_ipc sparse_keymap mac_hid autofs4 hid_generic usbhid hid_sensor_custom hid_sensor_hub intel_ishtp_hid i915(E) drm_kms_helper syscopyarea psmouse igb sysfillrect sdhci_pci sysimgblt fb_sys_fops sdhci dca ptp drm pps_core ahci intel_ish_ipc i2c_algo_bit libahci intel_ishtp i2c_hid hid video fjes pinctrl_broxton pinctrl_intel [ 153.923768] CPU: 1 PID: 1859 Comm: cat Tainted: G U W E 4.10.0-rc6-ww5.5mainlinestaging #12 [ 153.923771] Hardware name: Intel Corp. Broxton P/Apollolake RVP1C, BIOS APLIRVPA.X64.0151.B24.1609210905 09/21/2016 [ 153.923773] Call Trace: [ 153.923785] dump_stack+0x63/0x90 [ 153.923791] __warn+0xd1/0xf0 [ 153.923795] warn_slowpath_fmt+0x4f/0x60 [ 153.923803] ? seq_vprintf+0x35/0x50 [ 153.923893] gen9_decoupled_read32+0x1a1/0x1c0 [i915] [ 153.923969] i915_huc_load_status_info+0x132/0x150 [i915] [ 153.923974] seq_read+0x119/0x3e0 [ 153.923981] full_proxy_read+0x51/0x80 [ 153.923988] __vfs_read+0x28/0x130 [ 153.923993] ? security_file_permission+0x9d/0xc0 [ 153.923998] ? rw_verify_area+0x4e/0xb0 [ 153.924003] vfs_read+0x93/0x130 [ 153.924009] SyS_read+0x46/0xa0 [ 153.924015] entry_SYSCALL_64_fastpath+0x1e/0xad [ 153.924019] RIP: 0033:0x7fe18cd44680 [ 153.924022] RSP: 002b:7ffe7d991eb8 EFLAGS: 0246 ORIG_RAX: [ 153.924027] RAX: ffda RBX: 7fe18d011b20 RCX: 7fe18cd44680 [ 153.924030] RDX: 0002 RSI: 7fe18d1fb000 RDI: 0003 [ 153.924032] RBP: 00021010 R08: R09: [ 153.924035] R10: 037b R11: 0246 R12: 00022000 [ 153.924037] R13: 7fe18d011b78 R14: 1000 R15: 0002 [ 153.924042] ---[ end trace 6529f5b46f5753d0 ]--- [ 153.974135] [drm:__gen9_decoupled_mmio_access [i915]] *ERROR* Decoupled MMIO wait timed out ___ Intel-gfx mailing list
Re: [Intel-gfx] [PATCH v2 1/1] drm/i915: Do RPM Wake during GuC/HuC status read
On Fri, Feb 03, 2017 at 01:58:33PM +0530, Sagar Arun Kamble wrote: > HUC_STATUS, GUC_STATUS, SOFT_SCRATCH registers are read in debugfs > and getparam ioctl. This patch covers those accesses by RPM get/put. > > v2: Covering access in i915_getparam(I915_PARAM_HUC_STATUS) (ChrisW) > > Cc: Arkadiusz Hiler> Cc: Anusha Srivatsa > Cc: Fiedorowicz, Lukasz > Signed-off-by: Sagar Arun Kamble > --- > drivers/gpu/drm/i915/i915_debugfs.c | 6 ++ > drivers/gpu/drm/i915/i915_drv.c | 5 ++--- > 2 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c > b/drivers/gpu/drm/i915/i915_debugfs.c > index 3ae0656..639ed12 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -2374,7 +2374,9 @@ static int i915_huc_load_status_info(struct seq_file > *m, void *data) > seq_printf(m, "\tRSA: offset is %d; size = %d\n", > huc_fw->rsa_offset, huc_fw->rsa_size); > > + intel_runtime_pm_get(dev_priv); > seq_printf(m, "\nHuC status 0x%08x:\n", I915_READ(HUC_STATUS2)); > + intel_runtime_pm_put(dev_priv); > > return 0; > } Are you sure that HUC_STATUS2 requires RPM get for reading? I remember trying reading it with device forcefully asleep and it succeed just fine. -- Cheers, Arek ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH v2 1/1] drm/i915: Do RPM Wake during GuC/HuC status read
HUC_STATUS, GUC_STATUS, SOFT_SCRATCH registers are read in debugfs and getparam ioctl. This patch covers those accesses by RPM get/put. v2: Covering access in i915_getparam(I915_PARAM_HUC_STATUS) (ChrisW) Cc: Arkadiusz HilerCc: Anusha Srivatsa Cc: Fiedorowicz, Lukasz Signed-off-by: Sagar Arun Kamble --- drivers/gpu/drm/i915/i915_debugfs.c | 6 ++ drivers/gpu/drm/i915/i915_drv.c | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 3ae0656..639ed12 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -2374,7 +2374,9 @@ static int i915_huc_load_status_info(struct seq_file *m, void *data) seq_printf(m, "\tRSA: offset is %d; size = %d\n", huc_fw->rsa_offset, huc_fw->rsa_size); + intel_runtime_pm_get(dev_priv); seq_printf(m, "\nHuC status 0x%08x:\n", I915_READ(HUC_STATUS2)); + intel_runtime_pm_put(dev_priv); return 0; } @@ -2406,6 +2408,8 @@ static int i915_guc_load_status_info(struct seq_file *m, void *data) seq_printf(m, "\tRSA: offset is %d; size = %d\n", guc_fw->rsa_offset, guc_fw->rsa_size); + intel_runtime_pm_get(dev_priv); + tmp = I915_READ(GUC_STATUS); seq_printf(m, "\nGuC status 0x%08x:\n", tmp); @@ -2419,6 +2423,8 @@ static int i915_guc_load_status_info(struct seq_file *m, void *data) for (i = 0; i < 16; i++) seq_printf(m, "\t%2d: \t0x%x\n", i, I915_READ(SOFT_SCRATCH(i))); + intel_runtime_pm_put(dev_priv); + return 0; } diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 4790182..cd228b3 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -319,10 +319,9 @@ static int i915_getparam(struct drm_device *dev, void *data, value = INTEL_INFO(dev_priv)->sseu.min_eu_in_pool; break; case I915_PARAM_HUC_STATUS: - /* The register is already force-woken. We dont need -* any rpm here -*/ + intel_runtime_pm_get(dev_priv); value = I915_READ(HUC_STATUS2) & HUC_FW_VERIFIED; + intel_runtime_pm_put(dev_priv); break; case I915_PARAM_MMAP_GTT_VERSION: /* Though we've started our numbering from 1, and so class all -- 1.9.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx