intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock
@ 2023-04-06 14:31 José Roberto de Souza
  2023-04-06 14:31 ` [Intel-gfx] [PATCH v2 rebased 2/6] drm/i915: Initialize dkl_phy spin lock from display code path José Roberto de Souza
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: José Roberto de Souza @ 2023-04-06 14:31 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx

dsparb_lock it not used anymore, nuke it.

Cc: intel-gfx@lists.freedesktop.org
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_core.h | 3 ---
 drivers/gpu/drm/i915/i915_driver.c                | 1 -
 2 files changed, 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index cc058eb303ee8..d2346d43d1162 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -266,9 +266,6 @@ struct intel_wm {
 	 */
 	struct mutex wm_mutex;
 
-	/* protects DSPARB registers on pre-g4x/vlv/chv */
-	spinlock_t dsparb_lock;
-
 	bool ipc_enabled;
 };
 
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index 066d79c2069c4..ea2cc56d18a6e 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -214,7 +214,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
 	spin_lock_init(&dev_priv->irq_lock);
 	spin_lock_init(&dev_priv->gpu_error.lock);
 	spin_lock_init(&dev_priv->display.fb_tracking.lock);
-	spin_lock_init(&dev_priv->display.wm.dsparb_lock);
 	mutex_init(&dev_priv->display.backlight.lock);
 
 	mutex_init(&dev_priv->sb_lock);
-- 
2.40.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [Intel-gfx] [PATCH v2 rebased 2/6] drm/i915: Initialize dkl_phy spin lock from display code path
  2023-04-06 14:31 [Intel-gfx] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock José Roberto de Souza
@ 2023-04-06 14:31 ` José Roberto de Souza
  2023-04-10 15:33   ` Rodrigo Vivi
  2023-04-06 14:31 ` [Intel-gfx] [PATCH v2 rebased 3/6] drm/i915: Only initialize dlk phy lock in display 12 and newer José Roberto de Souza
  2023-04-06 20:38 ` [Intel-gfx] [Intel-xe] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock Rodrigo Vivi
  2 siblings, 1 reply; 13+ messages in thread
From: José Roberto de Souza @ 2023-04-06 14:31 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Rodrigo Vivi

Start to move the initialization of some lock from
i915_driver_early_probe().
This will also fix a warning in Xe kmd:

[  201.894839] xe 0000:00:02.0: [drm] [ENCODER:235:DDI A/PHY A] failed to retrieve link info, disabling eDP
[  202.136336] xe 0000:00:02.0: [drm] *ERROR* Failed to write source OUI
[  202.175346] INFO: trying to register non-static key.
[  202.175347] irq event stamp: 754060
[  202.175359] hardirqs last  enabled at (754059): [<ffffffff8122cf79>] tick_nohz_idle_enter+0x59/0x80
[  202.180294] The code is fine but needs lockdep annotation, or maybe
[  202.183774] hardirqs last disabled at (754060): [<ffffffff811a5539>] do_idle+0x99/0x230
[  202.192734] you didn't initialize this object before use?
[  202.198951] softirqs last  enabled at (753948): [<ffffffff8114abae>] irq_exit_rcu+0xbe/0x130
[  202.206882] turning off the locking correctness validator.
[  202.212236] softirqs last disabled at (753943): [<ffffffff8114abae>] irq_exit_rcu+0xbe/0x130
[  202.220592] CPU: 2 PID: 1415 Comm: modprobe Tainted: G        W          6.3.0-rc4+zeh-xe+ #909
[  202.243002] Hardware name: Intel Corporation Raptor Lake Client Platform/RaptorLake-P LP5 RVP, BIOS RPLPFWI1.R00.3361.A14.2211151548 11/15/2022
[  202.255737] Call Trace:
[  202.258179]  <TASK>
[  202.260275]  dump_stack_lvl+0x58/0xc0
[  202.263922]  register_lock_class+0x756/0x7d0
[  202.268165]  ? find_held_lock+0x2b/0x80
[  202.271975]  __lock_acquire+0x72/0x28b0
[  202.275786]  ? debug_object_free+0xb4/0x160
[  202.279946]  lock_acquire+0xd1/0x2d0
[  202.283503]  ? intel_dkl_phy_read+0x18/0x60 [xe]
[  202.288181]  _raw_spin_lock+0x2a/0x40
[  202.291825]  ? intel_dkl_phy_read+0x18/0x60 [xe]
[  202.296475]  intel_dkl_phy_read+0x18/0x60 [xe]
[  202.300949]  icl_aux_power_well_enable+0x2bd/0x400 [xe]
[  202.306202]  ? intel_display_power_grab_async_put_ref+0x75/0x120 [xe]
[  202.312649]  intel_power_well_enable+0x1c/0x70 [xe]
[  202.317543]  __intel_display_power_get_domain.part.0+0x4d/0x70 [xe]
[  202.323812]  intel_display_power_get+0x43/0x70 [xe]
[  202.328708]  intel_tc_port_init+0x199/0x2a0 [xe]
[  202.333363]  intel_ddi_init+0x6ad/0xb00 [xe]
[  202.337678]  intel_modeset_init_nogem+0x536/0x6d0 [xe]
[  202.342838]  xe_display_init_noaccel+0x19/0x40 [xe]
[  202.347743]  xe_device_probe+0x1f5/0x2a0 [xe]
[  202.352127]  xe_pci_probe+0x28c/0x480 [xe]
[  202.356260]  pci_device_probe+0x9d/0x150
[  202.360164]  really_probe+0x19a/0x400
[  202.363809]  ? __pfx___driver_attach+0x10/0x10
[  202.368226]  __driver_probe_device+0x73/0x170
[  202.372558]  driver_probe_device+0x1a/0x90
[  202.376632]  __driver_attach+0xcd/0x1c0
[  202.380442]  bus_for_each_dev+0x72/0xc0
[  202.384253]  bus_add_driver+0x110/0x210
[  202.388063]  driver_register+0x50/0x100
[  202.391873]  ? __pfx_init_module+0x10/0x10 [xe]
[  202.396431]  do_one_initcall+0x55/0x260
[  202.400245]  ? rcu_is_watching+0xd/0x40
[  202.404058]  ? kmalloc_trace+0xa0/0xb0
[  202.407786]  do_init_module+0x45/0x1e0
[  202.411512]  __do_sys_finit_module+0xac/0x120
[  202.415838]  do_syscall_64+0x37/0x90
[  202.419397]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
[  202.424409] RIP: 0033:0x7fd11291ea3d
[  202.427967] Code: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d c3 a3 0f 00 f7 d8 64 89 01 48
[  202.446530] RSP: 002b:00007ffffde11368 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[  202.454031] RAX: ffffffffffffffda RBX: 00005616a617f210 RCX: 00007fd11291ea3d
[  202.461106] RDX: 0000000000000000 RSI: 00005616a617fe60 RDI: 000000000000000e
[  202.468182] RBP: 0000000000040000 R08: 0000000000000000 R09: 0000000000000002
[  202.475250] R10: 000000000000000e R11: 0000000000000246 R12: 00005616a617fe60
[  202.482319] R13: 00005616a617f340 R14: 0000000000000000 R15: 00005616a6180650
[  202.489396]  </TASK>

Cc: intel-gfx@lists.freedesktop.org
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 3 +++
 drivers/gpu/drm/i915/display/intel_dkl_phy.c | 6 ++++++
 drivers/gpu/drm/i915/display/intel_dkl_phy.h | 2 ++
 drivers/gpu/drm/i915/i915_driver.c           | 1 -
 4 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 2d59330ff5abd..92e1b535b2798 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -85,6 +85,7 @@
 #include "intel_display_debugfs.h"
 #include "intel_display_power.h"
 #include "intel_display_types.h"
+#include "intel_dkl_phy.h"
 #include "intel_dmc.h"
 #include "intel_dp.h"
 #include "intel_dp_link_training.h"
@@ -7890,6 +7891,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 	if (!HAS_DISPLAY(dev_priv))
 		return;
 
+	intel_dkl_phy_init(dev_priv);
+
 	if (IS_DG2(dev_priv)) {
 		intel_ddi_init(dev_priv, PORT_A);
 		intel_ddi_init(dev_priv, PORT_B);
diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.c b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
index 57cc3edba0163..5bce7b5b27bc7 100644
--- a/drivers/gpu/drm/i915/display/intel_dkl_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
@@ -104,3 +104,9 @@ intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_r
 
 	spin_unlock(&i915->display.dkl.phy_lock);
 }
+
+void
+intel_dkl_phy_init(struct drm_i915_private *i915)
+{
+	spin_lock_init(&i915->display.dkl.phy_lock);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.h b/drivers/gpu/drm/i915/display/intel_dkl_phy.h
index 570ee36f9386f..615429b6392c5 100644
--- a/drivers/gpu/drm/i915/display/intel_dkl_phy.h
+++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.h
@@ -20,5 +20,7 @@ void
 intel_dkl_phy_rmw(struct drm_i915_private *i915, struct intel_dkl_phy_reg reg, u32 clear, u32 set);
 void
 intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_reg reg);
+void
+intel_dkl_phy_init(struct drm_i915_private *i915);
 
 #endif /* __INTEL_DKL_PHY_H__ */
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index ea2cc56d18a6e..617b3d0da267d 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -223,7 +223,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
 	mutex_init(&dev_priv->display.wm.wm_mutex);
 	mutex_init(&dev_priv->display.pps.mutex);
 	mutex_init(&dev_priv->display.hdcp.comp_mutex);
-	spin_lock_init(&dev_priv->display.dkl.phy_lock);
 
 	i915_memcpy_init_early(dev_priv);
 	intel_runtime_pm_init_early(&dev_priv->runtime_pm);
-- 
2.40.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [Intel-gfx] [PATCH v2 rebased 3/6] drm/i915: Only initialize dlk phy lock in display 12 and newer
  2023-04-06 14:31 [Intel-gfx] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock José Roberto de Souza
  2023-04-06 14:31 ` [Intel-gfx] [PATCH v2 rebased 2/6] drm/i915: Initialize dkl_phy spin lock from display code path José Roberto de Souza
@ 2023-04-06 14:31 ` José Roberto de Souza
  2023-04-10 15:37   ` [Intel-gfx] [Intel-xe] " Rodrigo Vivi
  2023-04-06 20:38 ` [Intel-gfx] [Intel-xe] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock Rodrigo Vivi
  2 siblings, 1 reply; 13+ messages in thread
From: José Roberto de Souza @ 2023-04-06 14:31 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx

This spin lock will not be used in older display versions, so no need
to initialize it.

Cc: intel-gfx@lists.freedesktop.org
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dkl_phy.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.c b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
index 5bce7b5b27bc7..1c5d410b74e5d 100644
--- a/drivers/gpu/drm/i915/display/intel_dkl_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
@@ -108,5 +108,6 @@ intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_r
 void
 intel_dkl_phy_init(struct drm_i915_private *i915)
 {
-	spin_lock_init(&i915->display.dkl.phy_lock);
+	if (DISPLAY_VER(i915) >= 12)
+		spin_lock_init(&i915->display.dkl.phy_lock);
 }
-- 
2.40.0


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [Intel-xe] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock
  2023-04-06 14:31 [Intel-gfx] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock José Roberto de Souza
  2023-04-06 14:31 ` [Intel-gfx] [PATCH v2 rebased 2/6] drm/i915: Initialize dkl_phy spin lock from display code path José Roberto de Souza
  2023-04-06 14:31 ` [Intel-gfx] [PATCH v2 rebased 3/6] drm/i915: Only initialize dlk phy lock in display 12 and newer José Roberto de Souza
@ 2023-04-06 20:38 ` Rodrigo Vivi
  2023-04-10 14:43   ` Souza, Jose
  2 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2023-04-06 20:38 UTC (permalink / raw)
  To: José Roberto de Souza; +Cc: intel-gfx, intel-xe

On Thu, Apr 06, 2023 at 07:31:28AM -0700, José Roberto de Souza wrote:
> dsparb_lock it not used anymore, nuke it.

Well, this doesn't exist in our drm-tip baseline, so it would be good
if this patch is a fixup! to whatever patch is adding this back here.

Take a look to the Jani series I just pushed:

https://lists.freedesktop.org/archives/intel-xe/2023-April/002000.html

I believe you should make this series on something more like that.
so on a next step I run a rebase --autosquash and we get cleaner patches.

Also, I believe this series here might conflict with that, so I'm
afraid you will have to rebase it anyway. Sorry about that...

> 
> Cc: intel-gfx@lists.freedesktop.org
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display_core.h | 3 ---
>  drivers/gpu/drm/i915/i915_driver.c                | 1 -
>  2 files changed, 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> index cc058eb303ee8..d2346d43d1162 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -266,9 +266,6 @@ struct intel_wm {
>  	 */
>  	struct mutex wm_mutex;
>  
> -	/* protects DSPARB registers on pre-g4x/vlv/chv */
> -	spinlock_t dsparb_lock;
> -
>  	bool ipc_enabled;
>  };
>  
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index 066d79c2069c4..ea2cc56d18a6e 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -214,7 +214,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
>  	spin_lock_init(&dev_priv->irq_lock);
>  	spin_lock_init(&dev_priv->gpu_error.lock);
>  	spin_lock_init(&dev_priv->display.fb_tracking.lock);
> -	spin_lock_init(&dev_priv->display.wm.dsparb_lock);
>  	mutex_init(&dev_priv->display.backlight.lock);
>  
>  	mutex_init(&dev_priv->sb_lock);
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [Intel-xe] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock
  2023-04-06 20:38 ` [Intel-gfx] [Intel-xe] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock Rodrigo Vivi
@ 2023-04-10 14:43   ` Souza, Jose
  2023-04-10 15:26     ` Rodrigo Vivi
  0 siblings, 1 reply; 13+ messages in thread
From: Souza, Jose @ 2023-04-10 14:43 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx, intel-xe

On Thu, 2023-04-06 at 16:38 -0400, Rodrigo Vivi wrote:
> On Thu, Apr 06, 2023 at 07:31:28AM -0700, José Roberto de Souza wrote:
> > dsparb_lock it not used anymore, nuke it.
> 
> Well, this doesn't exist in our drm-tip baseline, so it would be good
> if this patch is a fixup! to whatever patch is adding this back here.
> 
> Take a look to the Jani series I just pushed:
> 
> https://lists.freedesktop.org/archives/intel-xe/2023-April/002000.html
> 
> I believe you should make this series on something more like that.
> so on a next step I run a rebase --autosquash and we get cleaner patches.
> 
> Also, I believe this series here might conflict with that, so I'm
> afraid you will have to rebase it anyway. Sorry about that...

Will skip this patch then, it will probably be gone in next rebase.

Can you please take a look at the other 5 patches before I send a new version?

> 
> > 
> > Cc: intel-gfx@lists.freedesktop.org
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_display_core.h | 3 ---
> >  drivers/gpu/drm/i915/i915_driver.c                | 1 -
> >  2 files changed, 4 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> > index cc058eb303ee8..d2346d43d1162 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> > @@ -266,9 +266,6 @@ struct intel_wm {
> >  	 */
> >  	struct mutex wm_mutex;
> >  
> > -	/* protects DSPARB registers on pre-g4x/vlv/chv */
> > -	spinlock_t dsparb_lock;
> > -
> >  	bool ipc_enabled;
> >  };
> >  
> > diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> > index 066d79c2069c4..ea2cc56d18a6e 100644
> > --- a/drivers/gpu/drm/i915/i915_driver.c
> > +++ b/drivers/gpu/drm/i915/i915_driver.c
> > @@ -214,7 +214,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
> >  	spin_lock_init(&dev_priv->irq_lock);
> >  	spin_lock_init(&dev_priv->gpu_error.lock);
> >  	spin_lock_init(&dev_priv->display.fb_tracking.lock);
> > -	spin_lock_init(&dev_priv->display.wm.dsparb_lock);
> >  	mutex_init(&dev_priv->display.backlight.lock);
> >  
> >  	mutex_init(&dev_priv->sb_lock);
> > -- 
> > 2.40.0
> > 


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [Intel-xe] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock
  2023-04-10 14:43   ` Souza, Jose
@ 2023-04-10 15:26     ` Rodrigo Vivi
  2023-04-10 15:45       ` Rodrigo Vivi
  0 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2023-04-10 15:26 UTC (permalink / raw)
  To: Souza, Jose; +Cc: intel-gfx, intel-xe

On Mon, Apr 10, 2023 at 10:43:12AM -0400, Souza, Jose wrote:
> On Thu, 2023-04-06 at 16:38 -0400, Rodrigo Vivi wrote:
> > On Thu, Apr 06, 2023 at 07:31:28AM -0700, José Roberto de Souza wrote:
> > > dsparb_lock it not used anymore, nuke it.
> > 
> > Well, this doesn't exist in our drm-tip baseline, so it would be good
> > if this patch is a fixup! to whatever patch is adding this back here.
> > 
> > Take a look to the Jani series I just pushed:
> > 
> > https://lists.freedesktop.org/archives/intel-xe/2023-April/002000.html
> > 
> > I believe you should make this series on something more like that.
> > so on a next step I run a rebase --autosquash and we get cleaner patches.
> > 
> > Also, I believe this series here might conflict with that, so I'm
> > afraid you will have to rebase it anyway. Sorry about that...
> 
> Will skip this patch then, it will probably be gone in next rebase.

no. we do need to remove it. But the right way is with a
fixup! drm/i915/display: Remaining changes to make xe compile

A patch that removes this dsparb_lock from the patch that is now incorrectly
addding it in our xe tree.

> 
> Can you please take a look at the other 5 patches before I send a new version?

I will take a look one by one...

> 
> > 
> > > 
> > > Cc: intel-gfx@lists.freedesktop.org
> > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_display_core.h | 3 ---
> > >  drivers/gpu/drm/i915/i915_driver.c                | 1 -
> > >  2 files changed, 4 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> > > index cc058eb303ee8..d2346d43d1162 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> > > @@ -266,9 +266,6 @@ struct intel_wm {
> > >  	 */
> > >  	struct mutex wm_mutex;
> > >  
> > > -	/* protects DSPARB registers on pre-g4x/vlv/chv */
> > > -	spinlock_t dsparb_lock;
> > > -
> > >  	bool ipc_enabled;
> > >  };
> > >  
> > > diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> > > index 066d79c2069c4..ea2cc56d18a6e 100644
> > > --- a/drivers/gpu/drm/i915/i915_driver.c
> > > +++ b/drivers/gpu/drm/i915/i915_driver.c
> > > @@ -214,7 +214,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
> > >  	spin_lock_init(&dev_priv->irq_lock);
> > >  	spin_lock_init(&dev_priv->gpu_error.lock);
> > >  	spin_lock_init(&dev_priv->display.fb_tracking.lock);
> > > -	spin_lock_init(&dev_priv->display.wm.dsparb_lock);
> > >  	mutex_init(&dev_priv->display.backlight.lock);
> > >  
> > >  	mutex_init(&dev_priv->sb_lock);
> > > -- 
> > > 2.40.0
> > > 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [PATCH v2 rebased 2/6] drm/i915: Initialize dkl_phy spin lock from display code path
  2023-04-06 14:31 ` [Intel-gfx] [PATCH v2 rebased 2/6] drm/i915: Initialize dkl_phy spin lock from display code path José Roberto de Souza
@ 2023-04-10 15:33   ` Rodrigo Vivi
  2023-04-10 17:07     ` Souza, Jose
  0 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2023-04-10 15:33 UTC (permalink / raw)
  To: José Roberto de Souza; +Cc: intel-gfx, intel-xe

On Thu, Apr 06, 2023 at 07:31:29AM -0700, José Roberto de Souza wrote:
> Start to move the initialization of some lock from
> i915_driver_early_probe().
> This will also fix a warning in Xe kmd:
> 
> [  201.894839] xe 0000:00:02.0: [drm] [ENCODER:235:DDI A/PHY A] failed to retrieve link info, disabling eDP
> [  202.136336] xe 0000:00:02.0: [drm] *ERROR* Failed to write source OUI
> [  202.175346] INFO: trying to register non-static key.
> [  202.175347] irq event stamp: 754060
> [  202.175359] hardirqs last  enabled at (754059): [<ffffffff8122cf79>] tick_nohz_idle_enter+0x59/0x80
> [  202.180294] The code is fine but needs lockdep annotation, or maybe
> [  202.183774] hardirqs last disabled at (754060): [<ffffffff811a5539>] do_idle+0x99/0x230
> [  202.192734] you didn't initialize this object before use?
> [  202.198951] softirqs last  enabled at (753948): [<ffffffff8114abae>] irq_exit_rcu+0xbe/0x130
> [  202.206882] turning off the locking correctness validator.
> [  202.212236] softirqs last disabled at (753943): [<ffffffff8114abae>] irq_exit_rcu+0xbe/0x130
> [  202.220592] CPU: 2 PID: 1415 Comm: modprobe Tainted: G        W          6.3.0-rc4+zeh-xe+ #909
> [  202.243002] Hardware name: Intel Corporation Raptor Lake Client Platform/RaptorLake-P LP5 RVP, BIOS RPLPFWI1.R00.3361.A14.2211151548 11/15/2022
> [  202.255737] Call Trace:
> [  202.258179]  <TASK>
> [  202.260275]  dump_stack_lvl+0x58/0xc0
> [  202.263922]  register_lock_class+0x756/0x7d0
> [  202.268165]  ? find_held_lock+0x2b/0x80
> [  202.271975]  __lock_acquire+0x72/0x28b0
> [  202.275786]  ? debug_object_free+0xb4/0x160
> [  202.279946]  lock_acquire+0xd1/0x2d0
> [  202.283503]  ? intel_dkl_phy_read+0x18/0x60 [xe]
> [  202.288181]  _raw_spin_lock+0x2a/0x40
> [  202.291825]  ? intel_dkl_phy_read+0x18/0x60 [xe]
> [  202.296475]  intel_dkl_phy_read+0x18/0x60 [xe]
> [  202.300949]  icl_aux_power_well_enable+0x2bd/0x400 [xe]
> [  202.306202]  ? intel_display_power_grab_async_put_ref+0x75/0x120 [xe]
> [  202.312649]  intel_power_well_enable+0x1c/0x70 [xe]
> [  202.317543]  __intel_display_power_get_domain.part.0+0x4d/0x70 [xe]
> [  202.323812]  intel_display_power_get+0x43/0x70 [xe]
> [  202.328708]  intel_tc_port_init+0x199/0x2a0 [xe]
> [  202.333363]  intel_ddi_init+0x6ad/0xb00 [xe]
> [  202.337678]  intel_modeset_init_nogem+0x536/0x6d0 [xe]
> [  202.342838]  xe_display_init_noaccel+0x19/0x40 [xe]
> [  202.347743]  xe_device_probe+0x1f5/0x2a0 [xe]
> [  202.352127]  xe_pci_probe+0x28c/0x480 [xe]
> [  202.356260]  pci_device_probe+0x9d/0x150
> [  202.360164]  really_probe+0x19a/0x400
> [  202.363809]  ? __pfx___driver_attach+0x10/0x10
> [  202.368226]  __driver_probe_device+0x73/0x170
> [  202.372558]  driver_probe_device+0x1a/0x90
> [  202.376632]  __driver_attach+0xcd/0x1c0
> [  202.380442]  bus_for_each_dev+0x72/0xc0
> [  202.384253]  bus_add_driver+0x110/0x210
> [  202.388063]  driver_register+0x50/0x100
> [  202.391873]  ? __pfx_init_module+0x10/0x10 [xe]
> [  202.396431]  do_one_initcall+0x55/0x260
> [  202.400245]  ? rcu_is_watching+0xd/0x40
> [  202.404058]  ? kmalloc_trace+0xa0/0xb0
> [  202.407786]  do_init_module+0x45/0x1e0
> [  202.411512]  __do_sys_finit_module+0xac/0x120
> [  202.415838]  do_syscall_64+0x37/0x90
> [  202.419397]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
> [  202.424409] RIP: 0033:0x7fd11291ea3d
> [  202.427967] Code: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d c3 a3 0f 00 f7 d8 64 89 01 48
> [  202.446530] RSP: 002b:00007ffffde11368 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
> [  202.454031] RAX: ffffffffffffffda RBX: 00005616a617f210 RCX: 00007fd11291ea3d
> [  202.461106] RDX: 0000000000000000 RSI: 00005616a617fe60 RDI: 000000000000000e
> [  202.468182] RBP: 0000000000040000 R08: 0000000000000000 R09: 0000000000000002
> [  202.475250] R10: 000000000000000e R11: 0000000000000246 R12: 00005616a617fe60
> [  202.482319] R13: 00005616a617f340 R14: 0000000000000000 R15: 00005616a6180650
> [  202.489396]  </TASK>
> 
> Cc: intel-gfx@lists.freedesktop.org
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 3 +++
>  drivers/gpu/drm/i915/display/intel_dkl_phy.c | 6 ++++++
>  drivers/gpu/drm/i915/display/intel_dkl_phy.h | 2 ++
>  drivers/gpu/drm/i915/i915_driver.c           | 1 -
>  4 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 2d59330ff5abd..92e1b535b2798 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -85,6 +85,7 @@
>  #include "intel_display_debugfs.h"
>  #include "intel_display_power.h"
>  #include "intel_display_types.h"
> +#include "intel_dkl_phy.h"
>  #include "intel_dmc.h"
>  #include "intel_dp.h"
>  #include "intel_dp_link_training.h"
> @@ -7890,6 +7891,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)

I'm afraid this is too late. Since dkl phy read can happen on some get hw state
which can occur in wm and power_domain code...

>  	if (!HAS_DISPLAY(dev_priv))
>  		return;
>  
> +	intel_dkl_phy_init(dev_priv);
> +
>  	if (IS_DG2(dev_priv)) {
>  		intel_ddi_init(dev_priv, PORT_A);
>  		intel_ddi_init(dev_priv, PORT_B);
> diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.c b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> index 57cc3edba0163..5bce7b5b27bc7 100644
> --- a/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> +++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> @@ -104,3 +104,9 @@ intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_r
>  
>  	spin_unlock(&i915->display.dkl.phy_lock);
>  }
> +
> +void
> +intel_dkl_phy_init(struct drm_i915_private *i915)
> +{
> +	spin_lock_init(&i915->display.dkl.phy_lock);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.h b/drivers/gpu/drm/i915/display/intel_dkl_phy.h
> index 570ee36f9386f..615429b6392c5 100644
> --- a/drivers/gpu/drm/i915/display/intel_dkl_phy.h
> +++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.h
> @@ -20,5 +20,7 @@ void
>  intel_dkl_phy_rmw(struct drm_i915_private *i915, struct intel_dkl_phy_reg reg, u32 clear, u32 set);
>  void
>  intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_reg reg);
> +void
> +intel_dkl_phy_init(struct drm_i915_private *i915);
>  
>  #endif /* __INTEL_DKL_PHY_H__ */
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index ea2cc56d18a6e..617b3d0da267d 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -223,7 +223,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
>  	mutex_init(&dev_priv->display.wm.wm_mutex);
>  	mutex_init(&dev_priv->display.pps.mutex);
>  	mutex_init(&dev_priv->display.hdcp.comp_mutex);
> -	spin_lock_init(&dev_priv->display.dkl.phy_lock);
>  
>  	i915_memcpy_init_early(dev_priv);
>  	intel_runtime_pm_init_early(&dev_priv->runtime_pm);
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [Intel-xe] [PATCH v2 rebased 3/6] drm/i915: Only initialize dlk phy lock in display 12 and newer
  2023-04-06 14:31 ` [Intel-gfx] [PATCH v2 rebased 3/6] drm/i915: Only initialize dlk phy lock in display 12 and newer José Roberto de Souza
@ 2023-04-10 15:37   ` Rodrigo Vivi
  2023-04-10 17:10     ` Souza, Jose
  0 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2023-04-10 15:37 UTC (permalink / raw)
  To: José Roberto de Souza; +Cc: intel-gfx, intel-xe

On Thu, Apr 06, 2023 at 07:31:30AM -0700, José Roberto de Souza wrote:
> This spin lock will not be used in older display versions, so no need
> to initialize it.

Should we add some warn_on(disp_ver < 12) on the dkl phy functions?

Anyway:

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>


> 
> Cc: intel-gfx@lists.freedesktop.org
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dkl_phy.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.c b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> index 5bce7b5b27bc7..1c5d410b74e5d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> +++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> @@ -108,5 +108,6 @@ intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_r
>  void
>  intel_dkl_phy_init(struct drm_i915_private *i915)
>  {
> -	spin_lock_init(&i915->display.dkl.phy_lock);
> +	if (DISPLAY_VER(i915) >= 12)
> +		spin_lock_init(&i915->display.dkl.phy_lock);
>  }
> -- 
> 2.40.0
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [Intel-xe] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock
  2023-04-10 15:26     ` Rodrigo Vivi
@ 2023-04-10 15:45       ` Rodrigo Vivi
  0 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2023-04-10 15:45 UTC (permalink / raw)
  To: Souza, Jose; +Cc: intel-gfx, intel-xe

On Mon, Apr 10, 2023 at 11:26:57AM -0400, Rodrigo Vivi wrote:
> On Mon, Apr 10, 2023 at 10:43:12AM -0400, Souza, Jose wrote:
> > On Thu, 2023-04-06 at 16:38 -0400, Rodrigo Vivi wrote:
> > > On Thu, Apr 06, 2023 at 07:31:28AM -0700, José Roberto de Souza wrote:
> > > > dsparb_lock it not used anymore, nuke it.
> > > 
> > > Well, this doesn't exist in our drm-tip baseline, so it would be good
> > > if this patch is a fixup! to whatever patch is adding this back here.
> > > 
> > > Take a look to the Jani series I just pushed:
> > > 
> > > https://lists.freedesktop.org/archives/intel-xe/2023-April/002000.html
> > > 
> > > I believe you should make this series on something more like that.
> > > so on a next step I run a rebase --autosquash and we get cleaner patches.
> > > 
> > > Also, I believe this series here might conflict with that, so I'm
> > > afraid you will have to rebase it anyway. Sorry about that...
> > 
> > Will skip this patch then, it will probably be gone in next rebase.
> 
> no. we do need to remove it. But the right way is with a
> fixup! drm/i915/display: Remaining changes to make xe compile
> 
> A patch that removes this dsparb_lock from the patch that is now incorrectly
> addding it in our xe tree.
> 
> > 
> > Can you please take a look at the other 5 patches before I send a new version?
> 
> I will take a look one by one...

done, but the i915 patches should first land in drm-intel-next and then
we backport them here or get on a rebase.

> 
> > 
> > > 
> > > > 
> > > > Cc: intel-gfx@lists.freedesktop.org
> > > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_display_core.h | 3 ---
> > > >  drivers/gpu/drm/i915/i915_driver.c                | 1 -
> > > >  2 files changed, 4 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> > > > index cc058eb303ee8..d2346d43d1162 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> > > > +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> > > > @@ -266,9 +266,6 @@ struct intel_wm {
> > > >  	 */
> > > >  	struct mutex wm_mutex;
> > > >  
> > > > -	/* protects DSPARB registers on pre-g4x/vlv/chv */
> > > > -	spinlock_t dsparb_lock;
> > > > -
> > > >  	bool ipc_enabled;
> > > >  };
> > > >  
> > > > diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> > > > index 066d79c2069c4..ea2cc56d18a6e 100644
> > > > --- a/drivers/gpu/drm/i915/i915_driver.c
> > > > +++ b/drivers/gpu/drm/i915/i915_driver.c
> > > > @@ -214,7 +214,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
> > > >  	spin_lock_init(&dev_priv->irq_lock);
> > > >  	spin_lock_init(&dev_priv->gpu_error.lock);
> > > >  	spin_lock_init(&dev_priv->display.fb_tracking.lock);
> > > > -	spin_lock_init(&dev_priv->display.wm.dsparb_lock);
> > > >  	mutex_init(&dev_priv->display.backlight.lock);
> > > >  
> > > >  	mutex_init(&dev_priv->sb_lock);
> > > > -- 
> > > > 2.40.0
> > > > 
> > 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [PATCH v2 rebased 2/6] drm/i915: Initialize dkl_phy spin lock from display code path
  2023-04-10 15:33   ` Rodrigo Vivi
@ 2023-04-10 17:07     ` Souza, Jose
  2023-04-10 17:20       ` [Intel-gfx] [Intel-xe] " Rodrigo Vivi
  0 siblings, 1 reply; 13+ messages in thread
From: Souza, Jose @ 2023-04-10 17:07 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx, intel-xe

On Mon, 2023-04-10 at 11:33 -0400, Rodrigo Vivi wrote:
> On Thu, Apr 06, 2023 at 07:31:29AM -0700, José Roberto de Souza wrote:
> > Start to move the initialization of some lock from
> > i915_driver_early_probe().
> > This will also fix a warning in Xe kmd:
> > 
> > [  201.894839] xe 0000:00:02.0: [drm] [ENCODER:235:DDI A/PHY A] failed to retrieve link info, disabling eDP
> > [  202.136336] xe 0000:00:02.0: [drm] *ERROR* Failed to write source OUI
> > [  202.175346] INFO: trying to register non-static key.
> > [  202.175347] irq event stamp: 754060
> > [  202.175359] hardirqs last  enabled at (754059): [<ffffffff8122cf79>] tick_nohz_idle_enter+0x59/0x80
> > [  202.180294] The code is fine but needs lockdep annotation, or maybe
> > [  202.183774] hardirqs last disabled at (754060): [<ffffffff811a5539>] do_idle+0x99/0x230
> > [  202.192734] you didn't initialize this object before use?
> > [  202.198951] softirqs last  enabled at (753948): [<ffffffff8114abae>] irq_exit_rcu+0xbe/0x130
> > [  202.206882] turning off the locking correctness validator.
> > [  202.212236] softirqs last disabled at (753943): [<ffffffff8114abae>] irq_exit_rcu+0xbe/0x130
> > [  202.220592] CPU: 2 PID: 1415 Comm: modprobe Tainted: G        W          6.3.0-rc4+zeh-xe+ #909
> > [  202.243002] Hardware name: Intel Corporation Raptor Lake Client Platform/RaptorLake-P LP5 RVP, BIOS RPLPFWI1.R00.3361.A14.2211151548 11/15/2022
> > [  202.255737] Call Trace:
> > [  202.258179]  <TASK>
> > [  202.260275]  dump_stack_lvl+0x58/0xc0
> > [  202.263922]  register_lock_class+0x756/0x7d0
> > [  202.268165]  ? find_held_lock+0x2b/0x80
> > [  202.271975]  __lock_acquire+0x72/0x28b0
> > [  202.275786]  ? debug_object_free+0xb4/0x160
> > [  202.279946]  lock_acquire+0xd1/0x2d0
> > [  202.283503]  ? intel_dkl_phy_read+0x18/0x60 [xe]
> > [  202.288181]  _raw_spin_lock+0x2a/0x40
> > [  202.291825]  ? intel_dkl_phy_read+0x18/0x60 [xe]
> > [  202.296475]  intel_dkl_phy_read+0x18/0x60 [xe]
> > [  202.300949]  icl_aux_power_well_enable+0x2bd/0x400 [xe]
> > [  202.306202]  ? intel_display_power_grab_async_put_ref+0x75/0x120 [xe]
> > [  202.312649]  intel_power_well_enable+0x1c/0x70 [xe]
> > [  202.317543]  __intel_display_power_get_domain.part.0+0x4d/0x70 [xe]
> > [  202.323812]  intel_display_power_get+0x43/0x70 [xe]
> > [  202.328708]  intel_tc_port_init+0x199/0x2a0 [xe]
> > [  202.333363]  intel_ddi_init+0x6ad/0xb00 [xe]
> > [  202.337678]  intel_modeset_init_nogem+0x536/0x6d0 [xe]
> > [  202.342838]  xe_display_init_noaccel+0x19/0x40 [xe]
> > [  202.347743]  xe_device_probe+0x1f5/0x2a0 [xe]
> > [  202.352127]  xe_pci_probe+0x28c/0x480 [xe]
> > [  202.356260]  pci_device_probe+0x9d/0x150
> > [  202.360164]  really_probe+0x19a/0x400
> > [  202.363809]  ? __pfx___driver_attach+0x10/0x10
> > [  202.368226]  __driver_probe_device+0x73/0x170
> > [  202.372558]  driver_probe_device+0x1a/0x90
> > [  202.376632]  __driver_attach+0xcd/0x1c0
> > [  202.380442]  bus_for_each_dev+0x72/0xc0
> > [  202.384253]  bus_add_driver+0x110/0x210
> > [  202.388063]  driver_register+0x50/0x100
> > [  202.391873]  ? __pfx_init_module+0x10/0x10 [xe]
> > [  202.396431]  do_one_initcall+0x55/0x260
> > [  202.400245]  ? rcu_is_watching+0xd/0x40
> > [  202.404058]  ? kmalloc_trace+0xa0/0xb0
> > [  202.407786]  do_init_module+0x45/0x1e0
> > [  202.411512]  __do_sys_finit_module+0xac/0x120
> > [  202.415838]  do_syscall_64+0x37/0x90
> > [  202.419397]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
> > [  202.424409] RIP: 0033:0x7fd11291ea3d
> > [  202.427967] Code: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d c3 a3 0f 00 f7 d8 64 89 01 48
> > [  202.446530] RSP: 002b:00007ffffde11368 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
> > [  202.454031] RAX: ffffffffffffffda RBX: 00005616a617f210 RCX: 00007fd11291ea3d
> > [  202.461106] RDX: 0000000000000000 RSI: 00005616a617fe60 RDI: 000000000000000e
> > [  202.468182] RBP: 0000000000040000 R08: 0000000000000000 R09: 0000000000000002
> > [  202.475250] R10: 000000000000000e R11: 0000000000000246 R12: 00005616a617fe60
> > [  202.482319] R13: 00005616a617f340 R14: 0000000000000000 R15: 00005616a6180650
> > [  202.489396]  </TASK>
> > 
> > Cc: intel-gfx@lists.freedesktop.org
> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_display.c | 3 +++
> >  drivers/gpu/drm/i915/display/intel_dkl_phy.c | 6 ++++++
> >  drivers/gpu/drm/i915/display/intel_dkl_phy.h | 2 ++
> >  drivers/gpu/drm/i915/i915_driver.c           | 1 -
> >  4 files changed, 11 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > index 2d59330ff5abd..92e1b535b2798 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -85,6 +85,7 @@
> >  #include "intel_display_debugfs.h"
> >  #include "intel_display_power.h"
> >  #include "intel_display_types.h"
> > +#include "intel_dkl_phy.h"
> >  #include "intel_dmc.h"
> >  #include "intel_dp.h"
> >  #include "intel_dp_link_training.h"
> > @@ -7890,6 +7891,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
> 
> I'm afraid this is too late. Since dkl phy read can happen on some get hw state
> which can occur in wm and power_domain code...


Double checked in:
intel_power_domains_init()
intel_power_domains_init_hw()
intel_wm_init()
intel_modeset_init_hw()

And none of those places call any dkl function.

The closest is:
intel_power_domains_init_hw() -> icl_display_core_init() -> intel_combo_phy_init() -> icl_combo_phys_init()
but it is only over combo phys.

But I can move it to intel_modeset_init_noirq(), before intel_power_domains_init() is you think is better to be safer.

> 
> >  	if (!HAS_DISPLAY(dev_priv))
> >  		return;
> >  
> > +	intel_dkl_phy_init(dev_priv);
> > +
> >  	if (IS_DG2(dev_priv)) {
> >  		intel_ddi_init(dev_priv, PORT_A);
> >  		intel_ddi_init(dev_priv, PORT_B);
> > diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.c b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > index 57cc3edba0163..5bce7b5b27bc7 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > @@ -104,3 +104,9 @@ intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_r
> >  
> >  	spin_unlock(&i915->display.dkl.phy_lock);
> >  }
> > +
> > +void
> > +intel_dkl_phy_init(struct drm_i915_private *i915)
> > +{
> > +	spin_lock_init(&i915->display.dkl.phy_lock);
> > +}
> > diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.h b/drivers/gpu/drm/i915/display/intel_dkl_phy.h
> > index 570ee36f9386f..615429b6392c5 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dkl_phy.h
> > +++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.h
> > @@ -20,5 +20,7 @@ void
> >  intel_dkl_phy_rmw(struct drm_i915_private *i915, struct intel_dkl_phy_reg reg, u32 clear, u32 set);
> >  void
> >  intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_reg reg);
> > +void
> > +intel_dkl_phy_init(struct drm_i915_private *i915);
> >  
> >  #endif /* __INTEL_DKL_PHY_H__ */
> > diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> > index ea2cc56d18a6e..617b3d0da267d 100644
> > --- a/drivers/gpu/drm/i915/i915_driver.c
> > +++ b/drivers/gpu/drm/i915/i915_driver.c
> > @@ -223,7 +223,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
> >  	mutex_init(&dev_priv->display.wm.wm_mutex);
> >  	mutex_init(&dev_priv->display.pps.mutex);
> >  	mutex_init(&dev_priv->display.hdcp.comp_mutex);
> > -	spin_lock_init(&dev_priv->display.dkl.phy_lock);
> >  
> >  	i915_memcpy_init_early(dev_priv);
> >  	intel_runtime_pm_init_early(&dev_priv->runtime_pm);
> > -- 
> > 2.40.0
> > 


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [Intel-xe] [PATCH v2 rebased 3/6] drm/i915: Only initialize dlk phy lock in display 12 and newer
  2023-04-10 15:37   ` [Intel-gfx] [Intel-xe] " Rodrigo Vivi
@ 2023-04-10 17:10     ` Souza, Jose
  2023-04-10 17:19       ` Rodrigo Vivi
  0 siblings, 1 reply; 13+ messages in thread
From: Souza, Jose @ 2023-04-10 17:10 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx, intel-xe

On Mon, 2023-04-10 at 11:37 -0400, Rodrigo Vivi wrote:
> On Thu, Apr 06, 2023 at 07:31:30AM -0700, José Roberto de Souza wrote:
> > This spin lock will not be used in older display versions, so no need
> > to initialize it.
> 
> Should we add some warn_on(disp_ver < 12) on the dkl phy functions?

If called in platforms with display version older than 12 we will get warnings about spink lock functions being called in a non initialized spinlock_t
anyways.

> 
> Anyway:
> 
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> 
> 
> > 
> > Cc: intel-gfx@lists.freedesktop.org
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_dkl_phy.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.c b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > index 5bce7b5b27bc7..1c5d410b74e5d 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > @@ -108,5 +108,6 @@ intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_r
> >  void
> >  intel_dkl_phy_init(struct drm_i915_private *i915)
> >  {
> > -	spin_lock_init(&i915->display.dkl.phy_lock);
> > +	if (DISPLAY_VER(i915) >= 12)
> > +		spin_lock_init(&i915->display.dkl.phy_lock);
> >  }
> > -- 
> > 2.40.0
> > 


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [Intel-xe] [PATCH v2 rebased 3/6] drm/i915: Only initialize dlk phy lock in display 12 and newer
  2023-04-10 17:10     ` Souza, Jose
@ 2023-04-10 17:19       ` Rodrigo Vivi
  0 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2023-04-10 17:19 UTC (permalink / raw)
  To: Souza, Jose; +Cc: intel-gfx, intel-xe

On Mon, Apr 10, 2023 at 05:10:01PM +0000, Souza, Jose wrote:
> On Mon, 2023-04-10 at 11:37 -0400, Rodrigo Vivi wrote:
> > On Thu, Apr 06, 2023 at 07:31:30AM -0700, José Roberto de Souza wrote:
> > > This spin lock will not be used in older display versions, so no need
> > > to initialize it.
> > 
> > Should we add some warn_on(disp_ver < 12) on the dkl phy functions?
> 
> If called in platforms with display version older than 12 we will get warnings about spink lock functions being called in a non initialized spinlock_t
> anyways.

indeed! we are good then...

> 
> > 
> > Anyway:
> > 
> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > 
> > 
> > > 
> > > Cc: intel-gfx@lists.freedesktop.org
> > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_dkl_phy.c | 3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.c b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > > index 5bce7b5b27bc7..1c5d410b74e5d 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > > @@ -108,5 +108,6 @@ intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_r
> > >  void
> > >  intel_dkl_phy_init(struct drm_i915_private *i915)
> > >  {
> > > -	spin_lock_init(&i915->display.dkl.phy_lock);
> > > +	if (DISPLAY_VER(i915) >= 12)
> > > +		spin_lock_init(&i915->display.dkl.phy_lock);
> > >  }
> > > -- 
> > > 2.40.0
> > > 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Intel-gfx] [Intel-xe] [PATCH v2 rebased 2/6] drm/i915: Initialize dkl_phy spin lock from display code path
  2023-04-10 17:07     ` Souza, Jose
@ 2023-04-10 17:20       ` Rodrigo Vivi
  0 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2023-04-10 17:20 UTC (permalink / raw)
  To: Souza, Jose; +Cc: intel-gfx, intel-xe

On Mon, Apr 10, 2023 at 05:07:57PM +0000, Souza, Jose wrote:
> On Mon, 2023-04-10 at 11:33 -0400, Rodrigo Vivi wrote:
> > On Thu, Apr 06, 2023 at 07:31:29AM -0700, José Roberto de Souza wrote:
> > > Start to move the initialization of some lock from
> > > i915_driver_early_probe().
> > > This will also fix a warning in Xe kmd:
> > > 
> > > [  201.894839] xe 0000:00:02.0: [drm] [ENCODER:235:DDI A/PHY A] failed to retrieve link info, disabling eDP
> > > [  202.136336] xe 0000:00:02.0: [drm] *ERROR* Failed to write source OUI
> > > [  202.175346] INFO: trying to register non-static key.
> > > [  202.175347] irq event stamp: 754060
> > > [  202.175359] hardirqs last  enabled at (754059): [<ffffffff8122cf79>] tick_nohz_idle_enter+0x59/0x80
> > > [  202.180294] The code is fine but needs lockdep annotation, or maybe
> > > [  202.183774] hardirqs last disabled at (754060): [<ffffffff811a5539>] do_idle+0x99/0x230
> > > [  202.192734] you didn't initialize this object before use?
> > > [  202.198951] softirqs last  enabled at (753948): [<ffffffff8114abae>] irq_exit_rcu+0xbe/0x130
> > > [  202.206882] turning off the locking correctness validator.
> > > [  202.212236] softirqs last disabled at (753943): [<ffffffff8114abae>] irq_exit_rcu+0xbe/0x130
> > > [  202.220592] CPU: 2 PID: 1415 Comm: modprobe Tainted: G        W          6.3.0-rc4+zeh-xe+ #909
> > > [  202.243002] Hardware name: Intel Corporation Raptor Lake Client Platform/RaptorLake-P LP5 RVP, BIOS RPLPFWI1.R00.3361.A14.2211151548 11/15/2022
> > > [  202.255737] Call Trace:
> > > [  202.258179]  <TASK>
> > > [  202.260275]  dump_stack_lvl+0x58/0xc0
> > > [  202.263922]  register_lock_class+0x756/0x7d0
> > > [  202.268165]  ? find_held_lock+0x2b/0x80
> > > [  202.271975]  __lock_acquire+0x72/0x28b0
> > > [  202.275786]  ? debug_object_free+0xb4/0x160
> > > [  202.279946]  lock_acquire+0xd1/0x2d0
> > > [  202.283503]  ? intel_dkl_phy_read+0x18/0x60 [xe]
> > > [  202.288181]  _raw_spin_lock+0x2a/0x40
> > > [  202.291825]  ? intel_dkl_phy_read+0x18/0x60 [xe]
> > > [  202.296475]  intel_dkl_phy_read+0x18/0x60 [xe]
> > > [  202.300949]  icl_aux_power_well_enable+0x2bd/0x400 [xe]
> > > [  202.306202]  ? intel_display_power_grab_async_put_ref+0x75/0x120 [xe]
> > > [  202.312649]  intel_power_well_enable+0x1c/0x70 [xe]
> > > [  202.317543]  __intel_display_power_get_domain.part.0+0x4d/0x70 [xe]
> > > [  202.323812]  intel_display_power_get+0x43/0x70 [xe]
> > > [  202.328708]  intel_tc_port_init+0x199/0x2a0 [xe]
> > > [  202.333363]  intel_ddi_init+0x6ad/0xb00 [xe]
> > > [  202.337678]  intel_modeset_init_nogem+0x536/0x6d0 [xe]
> > > [  202.342838]  xe_display_init_noaccel+0x19/0x40 [xe]
> > > [  202.347743]  xe_device_probe+0x1f5/0x2a0 [xe]
> > > [  202.352127]  xe_pci_probe+0x28c/0x480 [xe]
> > > [  202.356260]  pci_device_probe+0x9d/0x150
> > > [  202.360164]  really_probe+0x19a/0x400
> > > [  202.363809]  ? __pfx___driver_attach+0x10/0x10
> > > [  202.368226]  __driver_probe_device+0x73/0x170
> > > [  202.372558]  driver_probe_device+0x1a/0x90
> > > [  202.376632]  __driver_attach+0xcd/0x1c0
> > > [  202.380442]  bus_for_each_dev+0x72/0xc0
> > > [  202.384253]  bus_add_driver+0x110/0x210
> > > [  202.388063]  driver_register+0x50/0x100
> > > [  202.391873]  ? __pfx_init_module+0x10/0x10 [xe]
> > > [  202.396431]  do_one_initcall+0x55/0x260
> > > [  202.400245]  ? rcu_is_watching+0xd/0x40
> > > [  202.404058]  ? kmalloc_trace+0xa0/0xb0
> > > [  202.407786]  do_init_module+0x45/0x1e0
> > > [  202.411512]  __do_sys_finit_module+0xac/0x120
> > > [  202.415838]  do_syscall_64+0x37/0x90
> > > [  202.419397]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
> > > [  202.424409] RIP: 0033:0x7fd11291ea3d
> > > [  202.427967] Code: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d c3 a3 0f 00 f7 d8 64 89 01 48
> > > [  202.446530] RSP: 002b:00007ffffde11368 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
> > > [  202.454031] RAX: ffffffffffffffda RBX: 00005616a617f210 RCX: 00007fd11291ea3d
> > > [  202.461106] RDX: 0000000000000000 RSI: 00005616a617fe60 RDI: 000000000000000e
> > > [  202.468182] RBP: 0000000000040000 R08: 0000000000000000 R09: 0000000000000002
> > > [  202.475250] R10: 000000000000000e R11: 0000000000000246 R12: 00005616a617fe60
> > > [  202.482319] R13: 00005616a617f340 R14: 0000000000000000 R15: 00005616a6180650
> > > [  202.489396]  </TASK>
> > > 
> > > Cc: intel-gfx@lists.freedesktop.org
> > > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_display.c | 3 +++
> > >  drivers/gpu/drm/i915/display/intel_dkl_phy.c | 6 ++++++
> > >  drivers/gpu/drm/i915/display/intel_dkl_phy.h | 2 ++
> > >  drivers/gpu/drm/i915/i915_driver.c           | 1 -
> > >  4 files changed, 11 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > > index 2d59330ff5abd..92e1b535b2798 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > @@ -85,6 +85,7 @@
> > >  #include "intel_display_debugfs.h"
> > >  #include "intel_display_power.h"
> > >  #include "intel_display_types.h"
> > > +#include "intel_dkl_phy.h"
> > >  #include "intel_dmc.h"
> > >  #include "intel_dp.h"
> > >  #include "intel_dp_link_training.h"
> > > @@ -7890,6 +7891,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
> > 
> > I'm afraid this is too late. Since dkl phy read can happen on some get hw state
> > which can occur in wm and power_domain code...
> 
> 
> Double checked in:
> intel_power_domains_init()
> intel_power_domains_init_hw()
> intel_wm_init()
> intel_modeset_init_hw()
> 
> And none of those places call any dkl function.
> 
> The closest is:
> intel_power_domains_init_hw() -> icl_display_core_init() -> intel_combo_phy_init() -> icl_combo_phys_init()
> but it is only over combo phys.
> 
> But I can move it to intel_modeset_init_noirq(), before intel_power_domains_init() is you think is better to be safer.

we are probably safe then... but let's send to intel-gfx and see what Jani and Ville think...

> 
> > 
> > >  	if (!HAS_DISPLAY(dev_priv))
> > >  		return;
> > >  
> > > +	intel_dkl_phy_init(dev_priv);
> > > +
> > >  	if (IS_DG2(dev_priv)) {
> > >  		intel_ddi_init(dev_priv, PORT_A);
> > >  		intel_ddi_init(dev_priv, PORT_B);
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.c b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > > index 57cc3edba0163..5bce7b5b27bc7 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.c
> > > @@ -104,3 +104,9 @@ intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_r
> > >  
> > >  	spin_unlock(&i915->display.dkl.phy_lock);
> > >  }
> > > +
> > > +void
> > > +intel_dkl_phy_init(struct drm_i915_private *i915)
> > > +{
> > > +	spin_lock_init(&i915->display.dkl.phy_lock);
> > > +}
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dkl_phy.h b/drivers/gpu/drm/i915/display/intel_dkl_phy.h
> > > index 570ee36f9386f..615429b6392c5 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dkl_phy.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_dkl_phy.h
> > > @@ -20,5 +20,7 @@ void
> > >  intel_dkl_phy_rmw(struct drm_i915_private *i915, struct intel_dkl_phy_reg reg, u32 clear, u32 set);
> > >  void
> > >  intel_dkl_phy_posting_read(struct drm_i915_private *i915, struct intel_dkl_phy_reg reg);
> > > +void
> > > +intel_dkl_phy_init(struct drm_i915_private *i915);
> > >  
> > >  #endif /* __INTEL_DKL_PHY_H__ */
> > > diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> > > index ea2cc56d18a6e..617b3d0da267d 100644
> > > --- a/drivers/gpu/drm/i915/i915_driver.c
> > > +++ b/drivers/gpu/drm/i915/i915_driver.c
> > > @@ -223,7 +223,6 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
> > >  	mutex_init(&dev_priv->display.wm.wm_mutex);
> > >  	mutex_init(&dev_priv->display.pps.mutex);
> > >  	mutex_init(&dev_priv->display.hdcp.comp_mutex);
> > > -	spin_lock_init(&dev_priv->display.dkl.phy_lock);
> > >  
> > >  	i915_memcpy_init_early(dev_priv);
> > >  	intel_runtime_pm_init_early(&dev_priv->runtime_pm);
> > > -- 
> > > 2.40.0
> > > 
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-04-10 17:21 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-06 14:31 [Intel-gfx] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock José Roberto de Souza
2023-04-06 14:31 ` [Intel-gfx] [PATCH v2 rebased 2/6] drm/i915: Initialize dkl_phy spin lock from display code path José Roberto de Souza
2023-04-10 15:33   ` Rodrigo Vivi
2023-04-10 17:07     ` Souza, Jose
2023-04-10 17:20       ` [Intel-gfx] [Intel-xe] " Rodrigo Vivi
2023-04-06 14:31 ` [Intel-gfx] [PATCH v2 rebased 3/6] drm/i915: Only initialize dlk phy lock in display 12 and newer José Roberto de Souza
2023-04-10 15:37   ` [Intel-gfx] [Intel-xe] " Rodrigo Vivi
2023-04-10 17:10     ` Souza, Jose
2023-04-10 17:19       ` Rodrigo Vivi
2023-04-06 20:38 ` [Intel-gfx] [Intel-xe] [PATCH v2 rebased 1/6] drm/i915: Nuke unused dsparb_lock Rodrigo Vivi
2023-04-10 14:43   ` Souza, Jose
2023-04-10 15:26     ` Rodrigo Vivi
2023-04-10 15:45       ` Rodrigo Vivi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).