Re: [Intel-gfx] [PATCH 11/11] drm/i915/guc: Restore GuC interrupts across suspend/reset if enabled
On 10/19/2017 4:33 PM, Tvrtko Ursulin wrote: On 18/10/2017 07:47, Sagar Arun Kamble wrote: In order to override the disable/enable control of GuC interrupts during suspend/reset cycle we are creating two new functions suspend/restore guc_interrupts which check if interrupts were enabled and disable them on suspend and enable them on resume. They are used to restore interrupts across reset as well. Signed-off-by: Sagar Arun Kamble Cc: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Tvrtko Ursulin Cc: Chris Wilson Cc: Joonas Lahtinen --- drivers/gpu/drm/i915/intel_display.c | 2 ++ drivers/gpu/drm/i915/intel_guc.c | 40 drivers/gpu/drm/i915/intel_guc.h | 2 ++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 897fe7e..742ab5e 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -3768,8 +3768,10 @@ void intel_finish_reset(struct drm_i915_private *dev_priv) * The display has been reset as well, * so need a full re-initialization. */ + intel_suspend_guc_interrupts(&dev_priv->guc); intel_runtime_pm_disable_interrupts(dev_priv); intel_runtime_pm_enable_interrupts(dev_priv); + intel_restore_guc_interrupts(&dev_priv->guc); intel_pps_unlock_regs_wa(dev_priv); intel_modeset_init_hw(dev); diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c index fbd27ea..1e5abf2 100644 --- a/drivers/gpu/drm/i915/intel_guc.c +++ b/drivers/gpu/drm/i915/intel_guc.c @@ -261,6 +261,25 @@ int intel_guc_auth_huc(struct intel_guc *guc, u32 rsa_offset) return intel_guc_send(guc, action, ARRAY_SIZE(action)); } +void intel_suspend_guc_interrupts(struct intel_guc *guc) +{ + struct drm_i915_private *dev_priv = guc_to_i915(guc); + + spin_lock_irq(&dev_priv->irq_lock); + + if (!guc->interrupt_clients) { + spin_unlock_irq(&dev_priv->irq_lock); + return; + } + + gen6_disable_pm_irq(dev_priv, dev_priv->pm_guc_events); + + spin_unlock_irq(&dev_priv->irq_lock); + synchronize_irq(dev_priv->drm.irq); + + intel_reset_guc_interrupts(guc); +} Looks awfully similar to intel_put_guc_interrupts, minus the guc->interrupt_clients handling and single bit vs all. I am thinking if it could be consolidated somehow... Maybe add __intel_put_guc_interrupts which does not touch guc->interrupt_clients and takes in a bitmask of all interrupt clients? void __intel_put_guc_interrupts(..., unsigned long mask) { assert_lock_held... if ((mask & guc->interrupt_clients) != guc->interrupt_clients) return; ... do the irq disable stuff.. } void intel_suspend_guc_interrupts(...) { spin_lock... __intel_put_guc_interrupts(.., guc->interrupt_clients); spin_unlock... } void intel_put_guc_interrupts(..., id) { spin_lock... __intel_put_guc_interrupts(.., BIT(id)); __clear_bit(guc->interrupt_clients, id); spin_unlock... } Maybe some logic mistakes here, beware. :) Sure. will update. + /** * intel_guc_suspend() - notify GuC entering suspend state * @dev_priv: i915 device private @@ -274,8 +293,7 @@ int intel_guc_suspend(struct drm_i915_private *dev_priv) if (guc->fw.load_status != INTEL_UC_FIRMWARE_SUCCESS) return 0; - if (i915_modparams.guc_log_level >= 0) - intel_put_guc_interrupts(guc, GUC_INTR_CLIENT_LOG); + intel_suspend_guc_interrupts(guc); ctx = dev_priv->kernel_context; @@ -289,6 +307,21 @@ int intel_guc_suspend(struct drm_i915_private *dev_priv) return intel_guc_send(guc, data, ARRAY_SIZE(data)); } +void intel_restore_guc_interrupts(struct intel_guc *guc) +{ + struct drm_i915_private *dev_priv = guc_to_i915(guc); + + spin_lock_irq(&dev_priv->irq_lock); + + if (guc->interrupt_clients) { + WARN_ON_ONCE(I915_READ(gen6_pm_iir(dev_priv)) & + dev_priv->pm_guc_events); + gen6_enable_pm_irq(dev_priv, dev_priv->pm_guc_events); + } + + spin_unlock_irq(&dev_priv->irq_lock); +} And ofc something similar like the above to consolidate the get/restore as well. Yes. + /** * intel_guc_resume() - notify GuC resuming from suspend state * @dev_priv: i915 device private @@ -302,8 +335,7 @@ int intel_guc_resume(struct drm_i915_private *dev_priv) if (guc->fw.load_status != INTEL_UC_FIRMWARE_SUCCESS) return 0; - if (i915_modparams.guc_log_level >= 0) - intel_get_guc_interrupts(guc, GUC_INTR_CLIENT_LOG); + intel_restore_guc_interrupts(guc); ctx = dev_priv->kernel_context; diff --git a/drivers/gpu/drm/i915/intel_guc.h b/drivers/gpu/drm/i915/intel_guc.h index 4d58bf7..c55dcba 100644 --- a/drivers/gpu/drm/i915/intel_guc.h +++ b/drivers/gpu/drm/i915/intel_guc.h @@ -125,5 +125,7 @@ static inli
Re: [Intel-gfx] [PATCH 10/11] drm/i915/guc: Skip interrupt enabling if logging is already enabled
On 10/19/2017 4:01 PM, Tvrtko Ursulin wrote: On 18/10/2017 07:47, Sagar Arun Kamble wrote: To balance the GuC interrupt references we don't allow enabling interrupts If logging was enabled earlier with different verbosity. I've noticed in a couple of your previous commits words in the middle of sentences starting with upper case which is a tiny bit distracting when reading. Sorry. Will fix those. I hope it is okay to start words like "GuC"/"IRQ" or acronyms with upper case. We allow request to change log parameters to be sent to GuC though as user may want to just update the verbosity level at runtime. Signed-off-by: Sagar Arun Kamble Cc: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Tvrtko Ursulin Cc: Chris Wilson Cc: Joonas Lahtinen --- drivers/gpu/drm/i915/intel_guc_log.c | 5 + 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c index 8c41d9a..90b8caf 100644 --- a/drivers/gpu/drm/i915/intel_guc_log.c +++ b/drivers/gpu/drm/i915/intel_guc_log.c @@ -613,6 +613,11 @@ int i915_guc_log_control(struct drm_i915_private *dev_priv, u64 control_val) } if (log_param.logging_enabled) { + if (i915_modparams.guc_log_level >= 0) { + i915_modparams.guc_log_level = log_param.verbosity; + return 0; + } Ok this will change if you go for the refactoring of how modparam is used mentioned earlier in the series. Yes. will update. + i915_modparams.guc_log_level = log_param.verbosity; /* If log_level was set as -1 at boot time, then the relay channel file Regards, Tvrtko ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 09/11] drm/i915/guc: Fix GuC interrupts disabling with Logging
On 10/19/2017 3:54 PM, Tvrtko Ursulin wrote: On 18/10/2017 07:47, Sagar Arun Kamble wrote: With guc_log_unregister disabling runtime logging and interrupts there is no need to disable interrupts during uc_fini_hw hence it is removed. With GuC CT buffer mechanism, interrupt disabling can be added at a point where CT mechanism ceases. Signed-off-by: Sagar Arun Kamble Cc: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Tvrtko Ursulin Cc: Chris Wilson Cc: Joonas Lahtinen --- drivers/gpu/drm/i915/intel_uc.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c index d96c847..9715eda 100644 --- a/drivers/gpu/drm/i915/intel_uc.c +++ b/drivers/gpu/drm/i915/intel_uc.c @@ -287,9 +287,6 @@ void intel_uc_fini_hw(struct drm_i915_private *dev_priv) guc_disable_communication(&dev_priv->guc); - if (i915_modparams.guc_log_level >= 0) - intel_put_guc_interrupts(&dev_priv->guc, GUC_INTR_CLIENT_LOG); - And this hasn't became wrong in this series right? So normally I think you would remove the bug before refactoring patches, just so we don't have to read and review in a previous patch the lines which get removed in the next. Sure. Will remove this upfront. if (i915_modparams.enable_guc_submission) i915_guc_submission_fini(dev_priv); Regards, Tvrtko ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 08/11] drm/i915/guc: Add client support to enable/disable GuC interrupts
On 10/19/2017 3:49 PM, Tvrtko Ursulin wrote: On 18/10/2017 07:46, Sagar Arun Kamble wrote: This patch adds support to enable/disable GuC interrupts for different features without impacting others needs. Currently GuC log capture and CT buffer receive mechanisms use the GuC interrupts. GuC interrupts are currently enabled and disabled in different Logging scenarios all gated by log level. v2: Rebase with all GuC interrupt handlers moved to intel_guc.c. Handling multiple clients for GuC interrupts enable/disable. (Michal Wajdeczko) Signed-off-by: Sagar Arun Kamble Cc: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Tvrtko Ursulin Cc: Chris Wilson Cc: Joonas Lahtinen --- drivers/gpu/drm/i915/i915_debugfs.c | 8 drivers/gpu/drm/i915/intel_guc.c | 21 ++--- drivers/gpu/drm/i915/intel_guc.h | 11 --- drivers/gpu/drm/i915/intel_guc_log.c | 6 +++--- drivers/gpu/drm/i915/intel_uc.c | 6 +++--- 5 files changed, 36 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 0bb6e01..bd421da 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -2531,6 +2531,14 @@ static int i915_guc_info(struct seq_file *m, void *data) struct drm_i915_private *dev_priv = node_to_i915(m->private); const struct intel_guc *guc = &dev_priv->guc; + seq_puts(m, "GuC Interrupt Clients: "); + spin_lock_irq(&dev_priv->irq_lock); + if (guc->interrupt_clients & BIT(GUC_INTR_CLIENT_LOG)) Could use test_bit. Yes. will update Also, spinlock not required here apart from documentation purposes? Yes. Given the frequency of enable/disable of interrupts this spin_lock is not so important. + seq_puts(m, "GuC Logging\n"); + else + seq_puts(m, "None\n"); + spin_unlock_irq(&dev_priv->irq_lock); + if (!check_guc_submission(m)) return 0; diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c index 959057a..fbd27ea 100644 --- a/drivers/gpu/drm/i915/intel_guc.c +++ b/drivers/gpu/drm/i915/intel_guc.c @@ -275,7 +275,7 @@ int intel_guc_suspend(struct drm_i915_private *dev_priv) return 0; if (i915_modparams.guc_log_level >= 0) - intel_disable_guc_interrupts(guc); + intel_put_guc_interrupts(guc, GUC_INTR_CLIENT_LOG); ctx = dev_priv->kernel_context; @@ -303,7 +303,7 @@ int intel_guc_resume(struct drm_i915_private *dev_priv) return 0; if (i915_modparams.guc_log_level >= 0) - intel_enable_guc_interrupts(guc); + intel_get_guc_interrupts(guc, GUC_INTR_CLIENT_LOG); ctx = dev_priv->kernel_context; @@ -378,26 +378,33 @@ void intel_reset_guc_interrupts(struct intel_guc *guc) spin_unlock_irq(&dev_priv->irq_lock); } -void intel_enable_guc_interrupts(struct intel_guc *guc) +void intel_get_guc_interrupts(struct intel_guc *guc, enum guc_intr_client id) { struct drm_i915_private *dev_priv = guc_to_i915(guc); spin_lock_irq(&dev_priv->irq_lock); - if (!dev_priv->guc.interrupts_enabled) { + if (!guc->interrupt_clients) { WARN_ON_ONCE(I915_READ(gen6_pm_iir(dev_priv)) & dev_priv->pm_guc_events); - dev_priv->guc.interrupts_enabled = true; gen6_enable_pm_irq(dev_priv, dev_priv->pm_guc_events); } + set_bit(id, &guc->interrupt_clients); Can use __set_bit to save one atomic since it is already under the spinlock. Yes. + spin_unlock_irq(&dev_priv->irq_lock); } -void intel_disable_guc_interrupts(struct intel_guc *guc) +void intel_put_guc_interrupts(struct intel_guc *guc, enum guc_intr_client id) { struct drm_i915_private *dev_priv = guc_to_i915(guc); spin_lock_irq(&dev_priv->irq_lock); - dev_priv->guc.interrupts_enabled = false; + + clear_bit(id, &guc->interrupt_clients); Equally as above __clear_bit would work. Yes. + + if (guc->interrupt_clients) { + spin_unlock_irq(&dev_priv->irq_lock); + return; + } gen6_disable_pm_irq(dev_priv, dev_priv->pm_guc_events); diff --git a/drivers/gpu/drm/i915/intel_guc.h b/drivers/gpu/drm/i915/intel_guc.h index e89b4ae..4d58bf7 100644 --- a/drivers/gpu/drm/i915/intel_guc.h +++ b/drivers/gpu/drm/i915/intel_guc.h @@ -34,6 +34,11 @@ #include "i915_guc_reg.h" #include "i915_vma.h" +enum guc_intr_client { + GUC_INTR_CLIENT_LOG = 0, + GUC_INTR_CLIENT_COUNT +}; + /* * Top level structure of GuC. It handles firmware loading and manages client * pool and doorbells. intel_guc owns a i915_guc_client to replace the legacy @@ -48,7 +53,7 @@ struct intel_guc { struct drm_i915_gem_object *load_err_log; /* intel_guc_recv interrupt related state */ - bool interrupts_enabled; + unsigned long interrupt_clients; struct i915_vma *ads_vma; struct i915_vma *stage_desc_pool; @@ -117,8 +122,8
[Intel-gfx] How To install?
How to install graphic card on kali linux with "00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)". i dont know what the steps to install. please help me. Thanks :) ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.IGT: failure for HAX: ignore fbcon entirely. ;D
== Series Details == Series: HAX: ignore fbcon entirely. ;D URL : https://patchwork.freedesktop.org/series/32367/ State : failure == Summary == Test kms_plane_multiple: Subgroup atomic-pipe-C-tiling-none: pass -> INCOMPLETE (shard-hsw) Test pm_rpm: Subgroup pm-tiling: pass -> SKIP (shard-hsw) Test kms_plane_lowres: Subgroup pipe-A-tiling-x: pass -> SKIP (shard-hsw) Subgroup pipe-A-tiling-none: pass -> SKIP (shard-hsw) Test kms_frontbuffer_tracking: Subgroup fbc-1p-primscrn-spr-indfb-draw-pwrite: pass -> SKIP (shard-hsw) Subgroup fbc-1p-primscrn-spr-indfb-fullscreen: pass -> FAIL (shard-hsw) Test gem_userptr_blits: Subgroup map-fixed-invalidate-gup: pass -> INCOMPLETE (shard-hsw) Test gem_eio: Subgroup in-flight: pass -> FAIL (shard-hsw) Subgroup in-flight-contexts: pass -> FAIL (shard-hsw) Test kms_sysfs_edid_timing: pass -> FAIL (shard-hsw) fdo#100047 Test gem_mmap_wc: Subgroup set-cache-level: pass -> SKIP (shard-hsw) Test kms_busy: Subgroup extended-modeset-hang-oldfb-with-reset-render-A: dmesg-warn -> PASS (shard-hsw) fdo#102249 fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047 fdo#102249 https://bugs.freedesktop.org/show_bug.cgi?id=102249 shard-hswtotal:2426 pass:1347 dwarn:1 dfail:0 fail:13 skip:1063 time:8638s == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6135/shards.html ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.IGT: failure for HAX: Do not restore mode through fbcon (rev2)
== Series Details == Series: HAX: Do not restore mode through fbcon (rev2) URL : https://patchwork.freedesktop.org/series/31893/ State : failure == Summary == Test gem_mmap_wc: Subgroup set-cache-level: pass -> SKIP (shard-hsw) Test kms_sysfs_edid_timing: pass -> FAIL (shard-hsw) fdo#100047 Test kms_chv_cursor_fail: Subgroup pipe-B-256x256-left-edge: pass -> INCOMPLETE (shard-hsw) Test kms_plane_multiple: Subgroup atomic-pipe-C-tiling-none: pass -> INCOMPLETE (shard-hsw) Test gem_userptr_blits: Subgroup map-fixed-invalidate-overlap-gup: pass -> DMESG-WARN (shard-hsw) Subgroup map-fixed-invalidate-gup: pass -> INCOMPLETE (shard-hsw) Test kms_setmode: Subgroup basic: fail -> PASS (shard-hsw) fdo#99912 Test kms_plane_lowres: Subgroup pipe-A-tiling-x: pass -> SKIP (shard-hsw) Subgroup pipe-A-tiling-none: pass -> SKIP (shard-hsw) Test kms_frontbuffer_tracking: Subgroup fbc-1p-primscrn-spr-indfb-fullscreen: pass -> FAIL (shard-hsw) fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047 fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912 shard-hswtotal:2361 pass:1309 dwarn:3 dfail:0 fail:10 skip:1036 time:8344s == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6134/shards.html ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 07/11] drm/i915/guc: Grab RPM wakelock while disabling GuC interrupts
On 10/19/2017 3:39 PM, Tvrtko Ursulin wrote: On 18/10/2017 07:46, Sagar Arun Kamble wrote: Disabling GuC interrupts involves access to GuC IRQ control registers hence ensure device is RPM awake. v2: Add comment about need to synchronize flush work and log runtime destroy Signed-off-by: Sagar Arun Kamble Cc: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Tvrtko Ursulin Cc: Chris Wilson Cc: Joonas Lahtinen --- drivers/gpu/drm/i915/intel_guc_log.c | 11 ++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c index f87e9f5..ed239cb 100644 --- a/drivers/gpu/drm/i915/intel_guc_log.c +++ b/drivers/gpu/drm/i915/intel_guc_log.c @@ -656,8 +656,17 @@ void i915_guc_log_unregister(struct drm_i915_private *dev_priv) { mutex_lock(&dev_priv->drm.struct_mutex); /* GuC logging is currently the only user of Guc2Host interrupts */ - if (i915_modparams.guc_log_level >= 0) + if (i915_modparams.guc_log_level >= 0) { + intel_runtime_pm_get(dev_priv); intel_disable_guc_interrupts(&dev_priv->guc); + intel_runtime_pm_put(dev_priv); Is it possible to trigger the assert from I915_WRITE today and if so which test case? drv_module_reload/basic-reload + } + /* + * TODO: Need to synchronize access to relay channel from flush work + * and release here if interrupt stays enabled from hereon. + * Possibly with GuC CT recv. interrupts will stay enabled until GEM + * suspend/unload. + */ I think we normally don't put such reminders in code. Regardless if it is going away in this patch series or not it looks equally pointless to me. Ok. Will remove this. Will need to be noted when we add CT buf recv support. guc_log_runtime_destroy(&dev_priv->guc); Ha right, this is how the cleanup happens what I was wondering in the previous patch. So intel_guc_log_destroy is pretty pointless now since it effectively does only this. Or I missed something? Yes. Part of intel_guc_log_destroy to unpin and release log vma is needed during uc_fini_hw. Will remove this function then as it is only used during init failure and we can open code there. mutex_unlock(&dev_priv->drm.struct_mutex); } Regards, Tvrtko ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] ✗ Fi.CI.BAT: failure for HAX: ignore fbcon entirely. ;D
== Series Details == Series: HAX: ignore fbcon entirely. ;D URL : https://patchwork.freedesktop.org/series/32367/ State : failure == Summary == Series 32367v1 HAX: ignore fbcon entirely. ;D https://patchwork.freedesktop.org/api/1.0/series/32367/revisions/1/mbox/ Test chamelium: Subgroup dp-crc-fast: fail -> PASS (fi-kbl-7500u) fdo#102514 Subgroup hdmi-crc-fast: pass -> DMESG-WARN (fi-skl-6700k) fdo#103019 Subgroup common-hpd-after-suspend: dmesg-warn -> PASS (fi-kbl-7500u) fdo#102505 Test debugfs_test: Subgroup read_all_entries: pass -> DMESG-WARN (fi-ilk-650) Test gem_exec_basic: Subgroup readonly-bsd1: pass -> INCOMPLETE (fi-skl-6770hq) Test gem_exec_parallel: Subgroup basic: pass -> INCOMPLETE (fi-bxt-dsi) Test gem_exec_store: Subgroup basic-bsd2: pass -> INCOMPLETE (fi-kbl-7567u) Test gem_exec_suspend: Subgroup basic-s3: dmesg-warn -> PASS (fi-cfl-s) fdo#103186 Test gem_ringfill: Subgroup basic-default-hang: dmesg-warn -> PASS (fi-blb-e6850) fdo#101600 +1 Test kms_addfb_basic: Subgroup bad-pitch-999: pass -> INCOMPLETE (fi-skl-6260u) Subgroup no-handle: pass -> INCOMPLETE (fi-kbl-r) Test kms_cursor_legacy: Subgroup basic-busy-flip-before-cursor-legacy: pass -> FAIL (fi-gdg-551) fdo#102618 Subgroup basic-flip-after-cursor-atomic: pass -> INCOMPLETE (fi-glk-1) Test kms_pipe_crc_basic: Subgroup nonblocking-crc-pipe-a-frame-sequence: pass -> INCOMPLETE (fi-skl-6700hq) Subgroup suspend-read-crc-pipe-a: pass -> DMESG-WARN (fi-byt-n2820) Subgroup suspend-read-crc-pipe-b: dmesg-warn -> PASS (fi-byt-n2820) fdo#101705 Test drv_module_reload: Subgroup basic-reload: dmesg-warn -> PASS (fi-gdg-551) fdo#102707 fdo#102514 https://bugs.freedesktop.org/show_bug.cgi?id=102514 fdo#103019 https://bugs.freedesktop.org/show_bug.cgi?id=103019 fdo#102505 https://bugs.freedesktop.org/show_bug.cgi?id=102505 fdo#103186 https://bugs.freedesktop.org/show_bug.cgi?id=103186 fdo#101600 https://bugs.freedesktop.org/show_bug.cgi?id=101600 fdo#102618 https://bugs.freedesktop.org/show_bug.cgi?id=102618 fdo#101705 https://bugs.freedesktop.org/show_bug.cgi?id=101705 fdo#102707 https://bugs.freedesktop.org/show_bug.cgi?id=102707 fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:431s fi-bdw-gvtdvmtotal:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:438s fi-blb-e6850 total:289 pass:224 dwarn:0 dfail:0 fail:0 skip:65 time:357s fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:542s fi-bwr-2160 total:289 pass:183 dwarn:0 dfail:0 fail:0 skip:106 time:245s fi-bxt-dsi total:78 pass:60 dwarn:0 dfail:0 fail:0 skip:17 fi-byt-j1900 total:289 pass:253 dwarn:1 dfail:0 fail:0 skip:35 time:495s fi-byt-n2820 total:289 pass:249 dwarn:1 dfail:0 fail:0 skip:39 time:476s fi-cfl-s total:289 pass:254 dwarn:3 dfail:0 fail:0 skip:32 time:547s fi-elk-e7500 total:289 pass:229 dwarn:0 dfail:0 fail:0 skip:60 time:400s fi-gdg-551 total:289 pass:178 dwarn:0 dfail:0 fail:2 skip:109 time:242s fi-glk-1 total:211 pass:188 dwarn:0 dfail:0 fail:0 skip:22 fi-hsw-4770 total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:434s fi-hsw-4770r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:419s fi-ilk-650 total:289 pass:227 dwarn:1 dfail:0 fail:0 skip:61 time:414s fi-ivb-3520m total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:447s fi-ivb-3770 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:447s fi-kbl-7500u total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:471s fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:531s fi-kbl-7567u total:113 pass:100 dwarn:0 dfail:0 fail:0 skip:12 fi-kbl-r total:196 pass:175 dwarn:0 dfail:0 fail:0 skip:20 fi-pnv-d510 total:289 pass:223 dwarn:0 dfail:0 fail:0 skip:66 time:521s fi-skl-6260u total:184 pass:171 dwarn:0 dfail:0 fail:0 skip:12 fi-skl-6700hqtotal:234 pass:209 dwarn:0 dfail:0 fail:0 skip:24 fi-skl-6700k total:289 pass:264 dwarn:1 dfail:0 fail:0 skip:24 time:519s fi-skl-6770hqtotal:49 pass:39 dwarn:0 dfail:0 fail:0 skip:9 fi-skl-gvtdvmtotal:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:453s fi-snb-2520m total:289 pass:250 dwarn:0 dfail:0 fail:0
[Intel-gfx] ✗ Fi.CI.BAT: failure for HAX: Do not restore mode through fbcon (rev2)
== Series Details == Series: HAX: Do not restore mode through fbcon (rev2) URL : https://patchwork.freedesktop.org/series/31893/ State : failure == Summary == Series 31893v2 HAX: Do not restore mode through fbcon https://patchwork.freedesktop.org/api/1.0/series/31893/revisions/2/mbox/ Test chamelium: Subgroup dp-crc-fast: fail -> PASS (fi-kbl-7500u) fdo#102514 Subgroup hdmi-crc-fast: pass -> INCOMPLETE (fi-skl-6700k) fdo#103019 Subgroup common-hpd-after-suspend: dmesg-warn -> PASS (fi-kbl-7500u) fdo#102505 Test debugfs_test: Subgroup read_all_entries: pass -> DMESG-WARN (fi-ilk-650) Test gem_exec_nop: Subgroup basic-parallel: pass -> INCOMPLETE (fi-bxt-j4205) Test gem_exec_parse: Subgroup basic-allowed: skip -> INCOMPLETE (fi-skl-gvtdvm) Test gem_exec_store: Subgroup basic-bsd: pass -> INCOMPLETE (fi-cfl-s) Subgroup basic-render: pass -> INCOMPLETE (fi-kbl-7567u) Test gem_exec_suspend: Subgroup basic-s3: pass -> DMESG-FAIL (fi-kbl-7560u) fdo#103039 Subgroup basic-s4-devices: pass -> DMESG-WARN (fi-byt-n2820) pass -> DMESG-FAIL (fi-kbl-7560u) fdo#102846 +1 Test gem_flink_basic: Subgroup bad-flink: pass -> DMESG-WARN (fi-kbl-7560u) fdo#103049 +4 Test gem_mmap: Subgroup basic: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-small-bo: pass -> DMESG-WARN (fi-kbl-7560u) Test gem_mmap_gtt: Subgroup basic: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-copy: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-read: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-read-no-prefault: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-read-write: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-read-write-distinct: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-short: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-small-bo: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-small-bo-tiledx: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-small-bo-tiledy: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-small-copy: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-small-copy-xy: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-wc: pass -> DMESG-WARN (fi-kbl-7560u) Subgroup basic-write: pass -> INCOMPLETE (fi-kbl-7560u) Test gem_ringfill: Subgroup basic-default-hang: dmesg-warn -> PASS (fi-blb-e6850) fdo#101600 +1 Test kms_addfb_basic: Subgroup addfb25-x-tiled: pass -> INCOMPLETE (fi-skl-6770hq) Subgroup invalid-set-prop: pass -> INCOMPLETE (fi-skl-6260u) Test kms_pipe_crc_basic: Subgroup suspend-read-crc-pipe-b: dmesg-warn -> PASS (fi-byt-n2820) fdo#101705 Test drv_module_reload: Subgroup basic-reload: dmesg-warn -> PASS (fi-gdg-551) fdo#102707 fdo#102514 https://bugs.freedesktop.org/show_bug.cgi?id=102514 fdo#103019 https://bugs.freedesktop.org/show_bug.cgi?id=103019 fdo#102505 https://bugs.freedesktop.org/show_bug.cgi?id=102505 fdo#103039 https://bugs.freedesktop.org/show_bug.cgi?id=103039 fdo#102846 https://bugs.freedesktop.org/show_bug.cgi?id=102846 fdo#103049 https://bugs.freedesktop.org/show_bug.cgi?id=103049 fdo#101600 https://bugs.freedesktop.org/show_bug.cgi?id=101600 fdo#101705 https://bugs.freedesktop.org/show_bug.cgi?id=101705 fdo#102707 https://bugs.freedesktop.org/show_bug.cgi?id=102707 fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:438s fi-bdw-gvtdvmtotal:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:438s fi-blb-e6850 total:289 pass:224 dwarn:0 dfail:0 fail:0 skip:65 time:363s fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:547s fi-bwr-2160 total:289 pass:183 dwarn:0 dfail:0 fail:0 skip:106 time:248s fi-bxt-dsi total:289 pass:259 dwarn:0 dfail:0 fail:0 skip:30 time:515s fi-bxt-j4205 total:76 pass:59 dwarn:0 dfail:0 fail:0 skip:16 fi-byt-j1900 total:289 pass:253 dwarn:1 dfail:0 fail:0 skip:35 time:508s WARNING: Long output truncated fcd4cd0d6182714b9ab0b5bb9139a06e6378b8ce drm-tip: 2017y-10m-20d-23h-22m-54s UTC integration manifest d5527e25b92a HAX: Do not restore mode t
Re: [Intel-gfx] [PATCH 04/11] drm/i915/guc: Sanitize module parameter guc_log_level
On 10/19/2017 12:52 PM, Tvrtko Ursulin wrote: On 18/10/2017 16:50, Sagar Arun Kamble wrote: On 10/18/2017 6:29 PM, Tvrtko Ursulin wrote: On 18/10/2017 07:46, Sagar Arun Kamble wrote: Parameter guc_log_level needs to be sanitized based on GuC support and enable_guc_loading parameter since it depends on them like enable_guc_submission. This will make GuC logging paths independent of enable_guc_submission parameter in further patches. v2: Added documentation to intel_guc_log.c and param description about GuC loading dependency. (Michal Wajdeczko) Signed-off-by: Sagar Arun Kamble Cc: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Tvrtko Ursulin Cc: Chris Wilson Cc: Joonas Lahtinen --- drivers/gpu/drm/i915/i915_params.c | 4 +++- drivers/gpu/drm/i915/intel_guc_log.c | 1 + drivers/gpu/drm/i915/intel_uc.c | 10 +++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c index b4faeb6..774c56e 100644 --- a/drivers/gpu/drm/i915/i915_params.c +++ b/drivers/gpu/drm/i915/i915_params.c @@ -171,7 +171,9 @@ struct i915_params i915_modparams __read_mostly = { "(-1=auto, 0=never [default], 1=if available, 2=required)"); i915_param_named(guc_log_level, int, 0400, - "GuC firmware logging level (-1:disabled (default), 0-3:enabled)"); + "GuC firmware logging level. This takes effect only if GuC is to be " + "loaded (depends on enable_guc_loading) (-1:disabled (default), " + "0-3:enabled)"); i915_param_named_unsafe(guc_firmware_path, charp, 0400, "GuC firmware path to use instead of the default one"); diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c index f53c663..200f0a1 100644 --- a/drivers/gpu/drm/i915/intel_guc_log.c +++ b/drivers/gpu/drm/i915/intel_guc_log.c @@ -34,6 +34,7 @@ * DOC: GuC firmware log * * Firmware log is enabled by setting i915.guc_log_level to non-negative level. + * This takes effect only if GuC is to be loaded based on enable_guc_loading. * Log data is printed out via reading debugfs i915_guc_log_dump. Reading from * i915_guc_load_status will print out firmware loading status and scratch * registers value. diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c index 62738ad..8feefcd 100644 --- a/drivers/gpu/drm/i915/intel_uc.c +++ b/drivers/gpu/drm/i915/intel_uc.c @@ -51,11 +51,13 @@ void intel_uc_sanitize_options(struct drm_i915_private *dev_priv) { if (!HAS_GUC(dev_priv)) { if (i915_modparams.enable_guc_loading > 0 || - i915_modparams.enable_guc_submission > 0) + i915_modparams.enable_guc_submission > 0 || + i915_modparams.guc_log_level > 0) DRM_INFO("Ignoring GuC options, no hardware\n"); Hm, this won't fire on <=gen8 once enable_guc_submission starts to default to one? Or we can worry about that when we get there... This will fire for <=gen8 for +ve values which is expected. i915_modparams.enable_guc_loading = 0; i915_modparams.enable_guc_submission = 0; + i915_modparams.guc_log_level = -1; return; } @@ -72,9 +74,11 @@ void intel_uc_sanitize_options(struct drm_i915_private *dev_priv) i915_modparams.enable_guc_loading = 0; } - /* Can't enable guc submission without guc loaded */ - if (!i915_modparams.enable_guc_loading) + /* Can't enable guc submission and logging without guc loaded */ + if (!i915_modparams.enable_guc_loading) { i915_modparams.enable_guc_submission = 0; + i915_modparams.guc_log_level = -1; Hm2, how does this interact with the changes which are removing enable_guc_loading? Or it is a race? It interacts. Will race. I think I should pause this series till the other one gets merged. Okay, it's your call (as in you guys who are refactoring GuC heavily at the moment). Should I continue to the end of this one then? It is not that big so I just as well can. Thanks for the review. Will address all the inputs and post after Sujaritha's series as there will be some conflict. I had thought of having this review in parallel as patches are largely independent but still there is some conflict so I will defer next rev. for some more time. Regards, Tvrtko ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH 06/11] drm/i915/guc: Only release GuC log object during submission_fini
On 10/19/2017 12:48 PM, Tvrtko Ursulin wrote: On 18/10/2017 17:04, Sagar Arun Kamble wrote: On 10/18/2017 6:42 PM, Tvrtko Ursulin wrote: On 18/10/2017 07:46, Sagar Arun Kamble wrote: GuC log runtime/relay channel data is released during i915 unregister, So only GuC log vma needs to be released during submission_fini. Signed-off-by: Sagar Arun Kamble Cc: Michal Wajdeczko Cc: Daniele Ceraolo Spurio Cc: Tvrtko Ursulin Cc: Chris Wilson Cc: Joonas Lahtinen --- drivers/gpu/drm/i915/i915_guc_submission.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c index a2e8114..c360b37 100644 --- a/drivers/gpu/drm/i915/i915_guc_submission.c +++ b/drivers/gpu/drm/i915/i915_guc_submission.c @@ -1021,7 +1021,7 @@ void i915_guc_submission_fini(struct drm_i915_private *dev_priv) ida_destroy(&guc->stage_ids); guc_ads_destroy(guc); - intel_guc_log_destroy(guc); + i915_vma_unpin_and_release(&guc->log.vma); i915_gem_object_unpin_map(guc->stage_desc_pool->obj); i915_vma_unpin_and_release(&guc->stage_desc_pool); } Doesn't it make more sense to hide the logging implementation details from this call site? Yes right. Will need to separate logging from submission cleanup here. And I can't find the remaining caller of the intel_guc_log_destroy in the current codebase? Unless it was added in one of the previous patches? It is called during submission_init on failure and that too will need to be changed as we separate logging from submission. But never gets to run on driver unload? By design or oversight? Oversight. Never gets to run on driver unload. Regards, Tvrtko ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx