Re: [Nouveau] [PATCH] drm/nouveau: split nouveau_drm_postclose back in pre/postclose

2017-07-12 Thread Tobias Klausmann

Mike,

sorry i forgot to add: Can you plase test this patch?


Thanks,

tobias

On 7/12/17 11:56 PM, Tobias Klausmann wrote:

This patch brings back the old nouveau_drm_preclose and nouveau_drm_postclose
functions for closing down a drm device

Signed-off-by: Tobias Klausmann 
---
  drivers/gpu/drm/nouveau/nouveau_drm.c | 8 +++-
  1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c 
b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 90757af9bc73..0ca2b65bdc4f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -877,7 +877,7 @@ nouveau_drm_open(struct drm_device *dev, struct drm_file 
*fpriv)
  }
  
  static void

-nouveau_drm_postclose(struct drm_device *dev, struct drm_file *fpriv)
+nouveau_drm_preclose(struct drm_device *dev, struct drm_file *fpriv)
  {
struct nouveau_cli *cli = nouveau_cli(fpriv);
struct nouveau_drm *drm = nouveau_drm(dev);
@@ -892,7 +892,12 @@ nouveau_drm_postclose(struct drm_device *dev, struct 
drm_file *fpriv)
mutex_lock(&drm->client.mutex);
list_del(&cli->head);
mutex_unlock(&drm->client.mutex);
+}
  
+static void

+nouveau_drm_postclose(struct drm_device *dev, struct drm_file *fpriv)
+{
+   struct nouveau_cli *cli = nouveau_cli(fpriv);
nouveau_cli_fini(cli);
kfree(cli);
pm_runtime_mark_last_busy(dev->dev);
@@ -964,6 +969,7 @@ driver_stub = {
.load = nouveau_drm_load,
.unload = nouveau_drm_unload,
.open = nouveau_drm_open,
+   .preclose = nouveau_drm_preclose,
.postclose = nouveau_drm_postclose,
.lastclose = nouveau_vga_lastclose,
  

___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [PATCH] drm/nouveau: split nouveau_drm_postclose back in pre/postclose

2017-07-12 Thread Tobias Klausmann
This patch brings back the old nouveau_drm_preclose and nouveau_drm_postclose
functions for closing down a drm device

Signed-off-by: Tobias Klausmann 
---
 drivers/gpu/drm/nouveau/nouveau_drm.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c 
b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 90757af9bc73..0ca2b65bdc4f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -877,7 +877,7 @@ nouveau_drm_open(struct drm_device *dev, struct drm_file 
*fpriv)
 }
 
 static void
-nouveau_drm_postclose(struct drm_device *dev, struct drm_file *fpriv)
+nouveau_drm_preclose(struct drm_device *dev, struct drm_file *fpriv)
 {
struct nouveau_cli *cli = nouveau_cli(fpriv);
struct nouveau_drm *drm = nouveau_drm(dev);
@@ -892,7 +892,12 @@ nouveau_drm_postclose(struct drm_device *dev, struct 
drm_file *fpriv)
mutex_lock(&drm->client.mutex);
list_del(&cli->head);
mutex_unlock(&drm->client.mutex);
+}
 
+static void
+nouveau_drm_postclose(struct drm_device *dev, struct drm_file *fpriv)
+{
+   struct nouveau_cli *cli = nouveau_cli(fpriv);
nouveau_cli_fini(cli);
kfree(cli);
pm_runtime_mark_last_busy(dev->dev);
@@ -964,6 +969,7 @@ driver_stub = {
.load = nouveau_drm_load,
.unload = nouveau_drm_unload,
.open = nouveau_drm_open,
+   .preclose = nouveau_drm_preclose,
.postclose = nouveau_drm_postclose,
.lastclose = nouveau_vga_lastclose,
 
-- 
2.13.2

___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [PATCH] drm/nouveau: honor return type of nvif_mthd, trivial

2017-07-12 Thread Tobias Klausmann
nvif_mthd() returns an int, so provide that for return checking

Signed-off-by: Tobias Klausmann 
---
 drivers/gpu/drm/nouveau/nouveau_display.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c 
b/drivers/gpu/drm/nouveau/nouveau_display.c
index 8d1df5678eaa..f8f555e2e912 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -113,10 +113,11 @@ nouveau_display_scanoutpos_head(struct drm_crtc *crtc, 
int *vpos, int *hpos,
struct drm_vblank_crtc *vblank = 
&crtc->dev->vblank[drm_crtc_index(crtc)];
int retry = 20;
bool ret = false;
+   int method_ret;
 
do {
-   ret = nvif_mthd(&disp->disp, 0, &args, sizeof(args));
-   if (ret != 0)
+   int method_ret = nvif_mthd(&disp->disp, 0, &args, sizeof(args));
+   if (method_ret != 0)
return false;
 
if (args.scan.vline) {
-- 
2.13.2

___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


Re: [Nouveau] [regression drm/noveau] suspend to ram -> BOOM: exception RIP: drm_calc_vbltimestamp_from_scanoutpos+335

2017-07-12 Thread Tobias Klausmann


On 7/12/17 7:19 PM, Mike Galbraith wrote:

On Wed, 2017-07-12 at 07:37 -0400, Ilia Mirkin wrote:

On Wed, Jul 12, 2017 at 7:25 AM, Mike Galbraith  wrote:

On Wed, 2017-07-12 at 11:55 +0200, Mike Galbraith wrote:

On Tue, 2017-07-11 at 14:22 -0400, Ilia Mirkin wrote:

Some display stuff did change for 4.13 for GM20x+ boards. If it's not
too much trouble, a bisect would be pretty useful.

Bisection seemingly went fine, but the result is odd.

e98c58e55f68f8785aebfab1f8c9a03d8de0afe1 is the first bad commit

But it really really is bad.  Looking at gitk fork in the road leading
to it...

52d9d38c183b drm/sti:fix spelling mistake: "compoment" -> "component" - good
e4e818cc2d7c drm: make drm_panel.h self-contained - good
9cf8f5802f39 drm: add missing declaration to drm_blend.h  - good

Before the git highway splits, all is well.  The lane with commits
works fine at both ends, but e98c58e55f68 is busted.  Merge arfifact?

Hmmm... that tree does not appear to have gotten a v4.12 backmerge at
any point. The last backmerge from Linus as far as I can tell was
v4.11-rc7. Could be an interaction with some out-of-tree change.

FWIW, checking out the fingered commit then..

git log --oneline 52d9d38c183b..e98c58e55f68|grep nouveau and reverting
the lot helped not at all.

Checking out 6b7781b42dc9 and reverting the fingered commit did.  Given
the nouveau bits reverted are mostly the vblank changes, CC to Daniel,
maybe he'll know why both GTX 980 and GeForce 8600 GT get all upset.

Either I'm damn lucky, both of my nvidia equipped boxen going boom 100%
repeatably, or there are a lot of folks out there who haven't yet tried
suspend with our latest/greatest kernel.  I suspect the later.

-Mike



I should have had a look at my inbox, would have save me a log of work 
bisecting. Yet i come to the same conclusion:


# first bad commit: [e98c58e55f68f8785aebfab1f8c9a03d8de0afe1] Merge tag 
'drm-misc-next-2017-05-16' of git://anongit.freedesktop.org/git/drm-misc 
into drm-next



I suspect it is some vblank change as it shows up in every trace i have 
seen while bisecting, but that is just a wild guess...


Greetings,

Tobias

___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 101764] [regression] eaa2c988033b breaks GTX1050TI (GP107 / NV137)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=101764

--- Comment #8 from Rhys Kidd  ---
Looks to be a duplicate of https://bugs.freedesktop.org/show_bug.cgi?id=100228

Was going to mark as such, but wanted to hear the thoughts of imirkin or others
more experienced with nouveau first.

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 101764] [regression] eaa2c988033b breaks GTX1050TI (GP107 / NV137)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=101764

--- Comment #7 from Carlo Caione  ---
Created attachment 132636
  --> https://bugs.freedesktop.org/attachment.cgi?id=132636&action=edit
GP107_runpm

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 101764] [regression] eaa2c988033b breaks GTX1050TI (GP107 / NV137)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=101764

--- Comment #6 from Carlo Caione  ---
Created attachment 132635
  --> https://bugs.freedesktop.org/attachment.cgi?id=132635&action=edit
GP107_noaccel

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 101764] [regression] eaa2c988033b breaks GTX1050TI (GP107 / NV137)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=101764

--- Comment #5 from Carlo Caione  ---
> So it's having trouble loading the firmware. Please confirm that you have the 
> latest firmware for gp107 (as there was a window of time when linux-firmware 
> contained bad firmware for gp107 -- some time ago now already, but you could 
> have a bad snapshot).
The firmware is the latest one shipped in the linux-firmware git repo

>>> nouveau.noaccel=1 (see attachment)
In this case the nouveau module is correct probed and I do not get any WARNING
in the journal (even though a bit noisy on the PM part).

>>> only pcie_port_pm=off
The system hangs before reaching Xorg

>>> nouveau.runpm=0 (with or without pcie_port_pm=off) (see attachment)
Interestingly I can still reach Xorg but in the journal I have a lot of
WARNINGs

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 101764] [regression] eaa2c988033b breaks GTX1050TI (GP107 / NV137)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=101764

--- Comment #4 from Ilia Mirkin  ---
Er, pcie_port_pm=off

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 101764] [regression] eaa2c988033b breaks GTX1050TI (GP107 / NV137)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=101764

--- Comment #3 from Ilia Mirkin  ---
Jul 11 16:14:59 endless kernel: nouveau :01:00.0: bus: MMIO read of
 FAULT at 409800 [ TIMEOUT ]
Jul 11 16:15:01 endless kernel: [ cut here ]
Jul 11 16:15:01 endless kernel: WARNING: CPU: 1 PID: 11134 at
/usr/src/packages/BUILD/linux-4.11.0/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c:1499
gf100_gr_init_ctxctl_ext+0x3cc/0x7f0 [nouveau]
Jul 11 16:15:01 endless kernel: nouveau :01:00.0: timeout

So it's having trouble loading the firmware. Please confirm that you have the
latest firmware for gp107 (as there was a window of time when linux-firmware
contained bad firmware for gp107 -- some time ago now already, but you could
have a bad snapshot).

I believe I've seen this before though, also on a laptop. I see that it's using
the fancy new thing instead of ACPI DSM for powering it on:

Jul 11 16:14:58 endless kernel: VGA switcheroo: detected Optimus DSM method
\_SB_.PCI0.PEG0.PEGP handle
Jul 11 16:14:58 endless kernel: nouveau: detected PR support, will not use DSM

Can you try to boot in a way that forces the ACPI stuff to be used? I think
pcie_pm_port=off is the thing. And nouveau.runpm=0 for good measure.

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


Re: [Nouveau] [regression drm/noveau] suspend to ram -> BOOM: exception RIP: drm_calc_vbltimestamp_from_scanoutpos+335

2017-07-12 Thread Ilia Mirkin
On Wed, Jul 12, 2017 at 7:25 AM, Mike Galbraith  wrote:
> On Wed, 2017-07-12 at 11:55 +0200, Mike Galbraith wrote:
>> On Tue, 2017-07-11 at 14:22 -0400, Ilia Mirkin wrote:
>> >
>> > Some display stuff did change for 4.13 for GM20x+ boards. If it's not
>> > too much trouble, a bisect would be pretty useful.
>>
>> Bisection seemingly went fine, but the result is odd.
>>
>> e98c58e55f68f8785aebfab1f8c9a03d8de0afe1 is the first bad commit
>
> But it really really is bad.  Looking at gitk fork in the road leading
> to it...
>
> 52d9d38c183b drm/sti:fix spelling mistake: "compoment" -> "component" - good
> e4e818cc2d7c drm: make drm_panel.h self-contained - good
> 9cf8f5802f39 drm: add missing declaration to drm_blend.h  - good
>
> Before the git highway splits, all is well.  The lane with commits
> works fine at both ends, but e98c58e55f68 is busted.  Merge arfifact?

Hmmm... that tree does not appear to have gotten a v4.12 backmerge at
any point. The last backmerge from Linus as far as I can tell was
v4.11-rc7. Could be an interaction with some out-of-tree change.
___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 101764] [regression] eaa2c988033b breaks GTX1050TI (GP107 / NV137)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=101764

--- Comment #2 from Carlo Caione  ---
> The real issue is something else, but this should give you at least 
> a working setup again.

Thank you, but since I have the hardware in my availability for the next week
or so I really would like if possible to help to debug better this issue and
maybe come up with a proper fix :)

Let me know if there is anything else I can provide that can help to debug this
issue.

Thanks.

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 101764] [regression] eaa2c988033b breaks GTX1050TI (GP107 / NV137)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=101764

--- Comment #1 from Karol Herbst  ---
(In reply to Carlo Caione from comment #0)
> Created attachment 132629 [details]
> GP107_regression_oops_log
> 
> Hi,
> we have verified that commit eaa2c988033b ("drm/nouveau/gr/gp107: initial
> support") is actually breaking the GTX1050TI on an Acer laptop.
> It's not possible to reach Xorg anymore and the journal is filled with Oops
> as shown in the attachment.
> 
> Thanks,

in that commit initial acceleration support for GP107 GPUs were added which
means there are more places to mess up. As a workaround you can boot with
nouveau.modeset=0 or nouveau.noaccel=1.

The real issue is something else, but this should give you at least a working
setup again.

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 101764] New: [regression] eaa2c988033b breaks GTX1050TI (GP107 / NV137)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=101764

Bug ID: 101764
   Summary: [regression] eaa2c988033b breaks GTX1050TI (GP107 /
NV137)
   Product: xorg
   Version: unspecified
  Hardware: Other
OS: All
Status: NEW
  Severity: normal
  Priority: medium
 Component: Driver/nouveau
  Assignee: nouveau@lists.freedesktop.org
  Reporter: ca...@caione.org
QA Contact: xorg-t...@lists.x.org

Created attachment 132629
  --> https://bugs.freedesktop.org/attachment.cgi?id=132629&action=edit
GP107_regression_oops_log

Hi,
we have verified that commit eaa2c988033b ("drm/nouveau/gr/gp107: initial
support") is actually breaking the GTX1050TI on an Acer laptop.
It's not possible to reach Xorg anymore and the journal is filled with Oops as
shown in the attachment.

Thanks,

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [Bug 94990] [GM204] GTX 970 + 4GB VRAM fails at secboot (v4.6+)

2017-07-12 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=94990

--- Comment #126 from Yann Golanski  ---
Has anyone tried it with a fresh Fedora 26 install?…

-- 
You are receiving this mail because:
You are the assignee for the bug.___
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau


[Nouveau] [PATCH 15/16] drm/nouveau: Convert nouveau to use new iterator macros

2017-07-12 Thread Maarten Lankhorst
Use the new atomic iterator macros, the old ones are about to be
removed. With the new macros, it's more easy to get old and new state so
get them from the macros instead of from obj->state.

Signed-off-by: Maarten Lankhorst 
Cc: Ben Skeggs 
Cc: nouveau@lists.freedesktop.org
---
 drivers/gpu/drm/nouveau/nv50_display.c | 71 +-
 1 file changed, 36 insertions(+), 35 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nv50_display.c 
b/drivers/gpu/drm/nouveau/nv50_display.c
index 42a85c14aea0..b1ce8f1f58dc 100644
--- a/drivers/gpu/drm/nouveau/nv50_display.c
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
@@ -2103,7 +2103,7 @@ nv50_head_atomic_check(struct drm_crtc *crtc, struct 
drm_crtc_state *state)
 
NV_ATOMIC(drm, "%s atomic_check %d\n", crtc->name, asyh->state.active);
if (asyh->state.active) {
-   for_each_connector_in_state(asyh->state.state, conn, conns, i) {
+   for_each_new_connector_in_state(asyh->state.state, conn, conns, 
i) {
if (conns->crtc == crtc) {
asyc = nouveau_conn_atom(conns);
break;
@@ -3904,9 +3904,9 @@ static void
 nv50_disp_atomic_commit_tail(struct drm_atomic_state *state)
 {
struct drm_device *dev = state->dev;
-   struct drm_crtc_state *crtc_state;
+   struct drm_crtc_state *new_crtc_state;
struct drm_crtc *crtc;
-   struct drm_plane_state *plane_state;
+   struct drm_plane_state *new_plane_state;
struct drm_plane *plane;
struct nouveau_drm *drm = nouveau_drm(dev);
struct nv50_disp *disp = nv50_disp(dev);
@@ -3925,8 +3925,8 @@ nv50_disp_atomic_commit_tail(struct drm_atomic_state 
*state)
mutex_lock(&disp->mutex);
 
/* Disable head(s). */
-   for_each_crtc_in_state(state, crtc, crtc_state, i) {
-   struct nv50_head_atom *asyh = nv50_head_atom(crtc->state);
+   for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
+   struct nv50_head_atom *asyh = nv50_head_atom(new_crtc_state);
struct nv50_head *head = nv50_head(crtc);
 
NV_ATOMIC(drm, "%s: clr %04x (set %04x)\n", crtc->name,
@@ -3939,8 +3939,8 @@ nv50_disp_atomic_commit_tail(struct drm_atomic_state 
*state)
}
 
/* Disable plane(s). */
-   for_each_plane_in_state(state, plane, plane_state, i) {
-   struct nv50_wndw_atom *asyw = nv50_wndw_atom(plane->state);
+   for_each_new_plane_in_state(state, plane, new_plane_state, i) {
+   struct nv50_wndw_atom *asyw = nv50_wndw_atom(new_plane_state);
struct nv50_wndw *wndw = nv50_wndw(plane);
 
NV_ATOMIC(drm, "%s: clr %02x (set %02x)\n", plane->name,
@@ -4005,8 +4005,8 @@ nv50_disp_atomic_commit_tail(struct drm_atomic_state 
*state)
}
 
/* Update head(s). */
-   for_each_crtc_in_state(state, crtc, crtc_state, i) {
-   struct nv50_head_atom *asyh = nv50_head_atom(crtc->state);
+   for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
+   struct nv50_head_atom *asyh = nv50_head_atom(new_crtc_state);
struct nv50_head *head = nv50_head(crtc);
 
NV_ATOMIC(drm, "%s: set %04x (clr %04x)\n", crtc->name,
@@ -4018,14 +4018,14 @@ nv50_disp_atomic_commit_tail(struct drm_atomic_state 
*state)
}
}
 
-   for_each_crtc_in_state(state, crtc, crtc_state, i) {
-   if (crtc->state->event)
+   for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
+   if (new_crtc_state->event)
drm_crtc_vblank_get(crtc);
}
 
/* Update plane(s). */
-   for_each_plane_in_state(state, plane, plane_state, i) {
-   struct nv50_wndw_atom *asyw = nv50_wndw_atom(plane->state);
+   for_each_new_plane_in_state(state, plane, new_plane_state, i) {
+   struct nv50_wndw_atom *asyw = nv50_wndw_atom(new_plane_state);
struct nv50_wndw *wndw = nv50_wndw(plane);
 
NV_ATOMIC(drm, "%s: set %02x (clr %02x)\n", plane->name,
@@ -4055,23 +4055,23 @@ nv50_disp_atomic_commit_tail(struct drm_atomic_state 
*state)
mutex_unlock(&disp->mutex);
 
/* Wait for HW to signal completion. */
-   for_each_plane_in_state(state, plane, plane_state, i) {
-   struct nv50_wndw_atom *asyw = nv50_wndw_atom(plane->state);
+   for_each_new_plane_in_state(state, plane, new_plane_state, i) {
+   struct nv50_wndw_atom *asyw = nv50_wndw_atom(new_plane_state);
struct nv50_wndw *wndw = nv50_wndw(plane);
int ret = nv50_wndw_wait_armed(wndw, asyw);
if (ret)
NV_ERROR(drm, "%s: timeout\n", plane->name);
}
 
-   for_each_crtc_in_state(state, crtc, crtc_state, i) {
-   if (crtc->state->event) {
+   for_each_n