2014-06-30 15:05:07

by Paul Bolle

[permalink] [raw]
Subject: drm: i915: "plane B assertion failure, should be off on pipe B but is still active"

Kernels v3.16-rc2 and v3.16-rc3 trigger a new (for me) warning. (I never
booted v3.16-rc1). Machine is a, rather outdated, ThinkPad X41 (ie,
single core i686).

WARNING: CPU: 0 PID: 221 at drivers/gpu/drm/i915/intel_display.c:1274 assert_planes_disabled+0xf9/0x100 [i915]()
plane B assertion failure, should be off on pipe B but is still active
Modules linked in: tg3 i915(+) i2c_algo_bit drm_kms_helper ptp drm ata_generic pata_acpi yenta_socket i2c_core pps_core video
CPU: 0 PID: 221 Comm: systemd-udevd Not tainted 3.16.0-0.rc3.1.local0.fc20.i686 #1
Hardware name: IBM 2525FAG/2525FAG, BIOS 74ET64WW (2.09 ) 12/14/2006
c0c87907 add7c490 00000000 f652b9ac c09fdab7 f652b9ec f652b9dc c045008e
f830c6cc f652ba0c 000000dd f830c634 000004fa f82b4d59 f82b4d59 f6728000
00000001 f65a8c00 f652b9f8 c04500ee 00000009 f652b9ec f830c6cc f652ba0c
Call Trace:
[<c09fdab7>] dump_stack+0x41/0x52
[<c045008e>] warn_slowpath_common+0x7e/0xa0
[<f82b4d59>] ? assert_planes_disabled+0xf9/0x100 [i915]
[<f82b4d59>] ? assert_planes_disabled+0xf9/0x100 [i915]
[<c04500ee>] warn_slowpath_fmt+0x3e/0x60
[<f82b4d59>] assert_planes_disabled+0xf9/0x100 [i915]
[<f82bd8d6>] intel_disable_pipe+0x26/0xb0 [i915]
[<f82aec40>] ? gen4_read8+0xc0/0xc0 [i915]
[<f82c25d3>] i9xx_crtc_disable+0x93/0x3d0 [i915]
[<f82c91bc>] intel_modeset_setup_hw_state+0x7ac/0xbc0 [i915]
[<f82aec40>] ? gen4_read8+0xc0/0xc0 [i915]
[<f815bc7c>] ? drm_modeset_lock_all_crtcs+0x3c/0x50 [drm]
[<f82c9d04>] intel_modeset_init+0x734/0x1220 [i915]
[<f82a2edb>] ? i915_enable_pipestat+0xab/0x120 [i915]
[<f82a34c4>] ? i915_irq_postinstall+0x104/0x110 [i915]
[<f8146ba9>] ? drm_irq_install+0xa9/0x170 [drm]
[<f82f4016>] i915_driver_load+0xa76/0xe70 [i915]
[<f82f13d0>] ? i915_switcheroo_set_state+0x90/0x90 [i915]
[<c06b5880>] ? cleanup_uevent_env+0x10/0x10
[<c05d8243>] ? sysfs_add_file+0x23/0x30
[<c07a4034>] ? get_device+0x14/0x30
[<c07a8e52>] ? klist_class_dev_get+0x12/0x20
[<c09f73ce>] ? klist_node_init+0x2e/0x50
[<c09f7487>] ? klist_add_tail+0x27/0x30
[<c07a5506>] ? device_add+0x1d6/0x5a0
[<f814ca8a>] ? drm_sysfs_device_add+0xba/0x100 [drm]
[<f81496ee>] drm_dev_register+0x8e/0xe0 [drm]
[<f814bca9>] drm_get_pci_dev+0x79/0x1c0 [drm]
[<f8274415>] i915_pci_probe+0x35/0x60 [i915]
[<c06f0baf>] pci_device_probe+0x6f/0xc0
[<c05d8625>] ? sysfs_create_link+0x25/0x40
[<c07a8093>] driver_probe_device+0x93/0x3a0
[<c05d8357>] ? sysfs_create_dir_ns+0x37/0x80
[<c06f0af1>] ? pci_match_device+0xc1/0xe0
[<c07a8451>] __driver_attach+0x71/0x80
[<c07a83e0>] ? __device_attach+0x40/0x40
[<c07a64c7>] bus_for_each_dev+0x57/0xa0
[<c07a7bbe>] driver_attach+0x1e/0x20
[<c07a83e0>] ? __device_attach+0x40/0x40
[<c07a7807>] bus_add_driver+0x157/0x230
[<f7fc8000>] ? 0xf7fc7fff
[<f7fc8000>] ? 0xf7fc7fff
[<c07a8b39>] driver_register+0x59/0xe0
[<c0564f56>] ? __kmalloc_track_caller+0x46/0x1f0
[<c06ef722>] __pci_register_driver+0x32/0x40
[<f814bed5>] drm_pci_init+0xe5/0x110 [drm]
[<f7fc8000>] ? 0xf7fc7fff
[<f7fc8088>] i915_init+0x88/0x8a [i915]
[<f7fc8000>] ? 0xf7fc7fff
[<c0400492>] do_one_initcall+0xc2/0x1f0
[<f7fc8000>] ? 0xf7fc7fff
[<c05624dd>] ? kfree+0xdd/0x120
[<c05524ef>] ? __vunmap+0x8f/0xe0
[<c05524ef>] ? __vunmap+0x8f/0xe0
[<c05524ef>] ? __vunmap+0x8f/0xe0
[<c04bee92>] load_module+0x1a92/0x23b0
[<c04bbd69>] ? copy_module_from_fd.isra.46+0x109/0x1a0
[<c04bf94d>] SyS_finit_module+0x8d/0xd0
[<c0538f43>] ? vm_mmap_pgoff+0x93/0xb0
[<c0a045df>] sysenter_do_call+0x12/0x16

Feel free to prod me for further details.


Paul Bolle


2014-07-01 09:18:16

by Jani Nikula

[permalink] [raw]
Subject: Re: drm: i915: "plane B assertion failure, should be off on pipe B but is still active"

On Mon, 30 Jun 2014, Paul Bolle <[email protected]> wrote:
> Kernels v3.16-rc2 and v3.16-rc3 trigger a new (for me) warning. (I never
> booted v3.16-rc1). Machine is a, rather outdated, ThinkPad X41 (ie,
> single core i686).
>
> WARNING: CPU: 0 PID: 221 at drivers/gpu/drm/i915/intel_display.c:1274 assert_planes_disabled+0xf9/0x100 [i915]()
> plane B assertion failure, should be off on pipe B but is still active
> Modules linked in: tg3 i915(+) i2c_algo_bit drm_kms_helper ptp drm ata_generic pata_acpi yenta_socket i2c_core pps_core video
> CPU: 0 PID: 221 Comm: systemd-udevd Not tainted 3.16.0-0.rc3.1.local0.fc20.i686 #1
> Hardware name: IBM 2525FAG/2525FAG, BIOS 74ET64WW (2.09 ) 12/14/2006
> c0c87907 add7c490 00000000 f652b9ac c09fdab7 f652b9ec f652b9dc c045008e
> f830c6cc f652ba0c 000000dd f830c634 000004fa f82b4d59 f82b4d59 f6728000
> 00000001 f65a8c00 f652b9f8 c04500ee 00000009 f652b9ec f830c6cc f652ba0c
> Call Trace:
> [<c09fdab7>] dump_stack+0x41/0x52
> [<c045008e>] warn_slowpath_common+0x7e/0xa0
> [<f82b4d59>] ? assert_planes_disabled+0xf9/0x100 [i915]
> [<f82b4d59>] ? assert_planes_disabled+0xf9/0x100 [i915]
> [<c04500ee>] warn_slowpath_fmt+0x3e/0x60
> [<f82b4d59>] assert_planes_disabled+0xf9/0x100 [i915]
> [<f82bd8d6>] intel_disable_pipe+0x26/0xb0 [i915]
> [<f82aec40>] ? gen4_read8+0xc0/0xc0 [i915]
> [<f82c25d3>] i9xx_crtc_disable+0x93/0x3d0 [i915]
> [<f82c91bc>] intel_modeset_setup_hw_state+0x7ac/0xbc0 [i915]
> [<f82aec40>] ? gen4_read8+0xc0/0xc0 [i915]
> [<f815bc7c>] ? drm_modeset_lock_all_crtcs+0x3c/0x50 [drm]
> [<f82c9d04>] intel_modeset_init+0x734/0x1220 [i915]
> [<f82a2edb>] ? i915_enable_pipestat+0xab/0x120 [i915]
> [<f82a34c4>] ? i915_irq_postinstall+0x104/0x110 [i915]
> [<f8146ba9>] ? drm_irq_install+0xa9/0x170 [drm]
> [<f82f4016>] i915_driver_load+0xa76/0xe70 [i915]
> [<f82f13d0>] ? i915_switcheroo_set_state+0x90/0x90 [i915]
> [<c06b5880>] ? cleanup_uevent_env+0x10/0x10
> [<c05d8243>] ? sysfs_add_file+0x23/0x30
> [<c07a4034>] ? get_device+0x14/0x30
> [<c07a8e52>] ? klist_class_dev_get+0x12/0x20
> [<c09f73ce>] ? klist_node_init+0x2e/0x50
> [<c09f7487>] ? klist_add_tail+0x27/0x30
> [<c07a5506>] ? device_add+0x1d6/0x5a0
> [<f814ca8a>] ? drm_sysfs_device_add+0xba/0x100 [drm]
> [<f81496ee>] drm_dev_register+0x8e/0xe0 [drm]
> [<f814bca9>] drm_get_pci_dev+0x79/0x1c0 [drm]
> [<f8274415>] i915_pci_probe+0x35/0x60 [i915]
> [<c06f0baf>] pci_device_probe+0x6f/0xc0
> [<c05d8625>] ? sysfs_create_link+0x25/0x40
> [<c07a8093>] driver_probe_device+0x93/0x3a0
> [<c05d8357>] ? sysfs_create_dir_ns+0x37/0x80
> [<c06f0af1>] ? pci_match_device+0xc1/0xe0
> [<c07a8451>] __driver_attach+0x71/0x80
> [<c07a83e0>] ? __device_attach+0x40/0x40
> [<c07a64c7>] bus_for_each_dev+0x57/0xa0
> [<c07a7bbe>] driver_attach+0x1e/0x20
> [<c07a83e0>] ? __device_attach+0x40/0x40
> [<c07a7807>] bus_add_driver+0x157/0x230
> [<f7fc8000>] ? 0xf7fc7fff
> [<f7fc8000>] ? 0xf7fc7fff
> [<c07a8b39>] driver_register+0x59/0xe0
> [<c0564f56>] ? __kmalloc_track_caller+0x46/0x1f0
> [<c06ef722>] __pci_register_driver+0x32/0x40
> [<f814bed5>] drm_pci_init+0xe5/0x110 [drm]
> [<f7fc8000>] ? 0xf7fc7fff
> [<f7fc8088>] i915_init+0x88/0x8a [i915]
> [<f7fc8000>] ? 0xf7fc7fff
> [<c0400492>] do_one_initcall+0xc2/0x1f0
> [<f7fc8000>] ? 0xf7fc7fff
> [<c05624dd>] ? kfree+0xdd/0x120
> [<c05524ef>] ? __vunmap+0x8f/0xe0
> [<c05524ef>] ? __vunmap+0x8f/0xe0
> [<c05524ef>] ? __vunmap+0x8f/0xe0
> [<c04bee92>] load_module+0x1a92/0x23b0
> [<c04bbd69>] ? copy_module_from_fd.isra.46+0x109/0x1a0
> [<c04bf94d>] SyS_finit_module+0x8d/0xd0
> [<c0538f43>] ? vm_mmap_pgoff+0x93/0xb0
> [<c0a045df>] sysenter_do_call+0x12/0x16
>
> Feel free to prod me for further details.

This does not ring any bells to me (but that doesn't prove anything). A
bisect result would be awesome.

BR,
Jani.




--
Jani Nikula, Intel Open Source Technology Center

2014-07-02 08:53:28

by Paul Bolle

[permalink] [raw]
Subject: Re: drm: i915: "plane B assertion failure, should be off on pipe B but is still active"

On Tue, 2014-07-01 at 12:17 +0300, Jani Nikula wrote:
> This does not ring any bells to me (but that doesn't prove anything). A
> bisect result would be awesome.

Too bad.

Unless someone else has a better idea I hope to start bisecting one of
these days (that might take quite some time, especially since I can't
yet narrow the bisect to changes in drivers/gpu/drm/i915/, can I?).
Don't expect results before v3.16-rc4.

Feel free to remind me if I stay silent on this subject for too long.


Paul Bolle

2014-07-13 20:32:49

by Paul Bolle

[permalink] [raw]
Subject: Re: drm: i915: "plane B assertion failure, should be off on pipe B but is still active"

Paul Bolle schreef op wo 02-07-2014 om 10:53 [+0200]:
> On Tue, 2014-07-01 at 12:17 +0300, Jani Nikula wrote:
> > This does not ring any bells to me (but that doesn't prove anything). A
> > bisect result would be awesome.

The bisect (which took me quite some time) points at commit 98ec77397a5c
("drm/i915: Make primary_enabled match the actual hardware state"). The
bisect log is pasted at the end of this message.

Commit 98ec77397a5c reverts cleanly on top of v3.16-rc4. Booting
v3.16-rc4 with that revert added makes the WARNING go away. But note
that I have no idea whether that revert actually is a proper fix here.

Feel free to prod me for further testing, etc.


Paul Bolle

# bad: [7171511eaec5bf23fb06078f59784a3a0626b38f] Linux 3.16-rc1
# good: [1860e379875dfe7271c649058aeddffe5afd9d0d] Linux 3.15
git bisect start 'v3.16-rc1' 'v3.15'
# good: [aaeb2554337217dfa4eac2fcc90da7be540b9a73] Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media into next
git bisect good aaeb2554337217dfa4eac2fcc90da7be540b9a73
# good: [16b9057804c02e2d351e9c8f606e909b43cbd9e7] Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
git bisect good 16b9057804c02e2d351e9c8f606e909b43cbd9e7
# good: [249c8b8d7e2d1bf9505dc46458537e77326c24fd] i40evf: remove unnecessary log messages
git bisect good 249c8b8d7e2d1bf9505dc46458537e77326c24fd
# bad: [1ae5a62bb8b6b544bdfac7bdcb15c9eb22dd6620] drm/nouveau/disp/dp: fix tmds passthrough on dp connector
git bisect bad 1ae5a62bb8b6b544bdfac7bdcb15c9eb22dd6620
# bad: [cea165c34502052cb2aafc7e6bb36fe2036a19df] drm/i915: Wait for vblank in hsw_enable_ips()
git bisect bad cea165c34502052cb2aafc7e6bb36fe2036a19df
# good: [e6069ca84dfafbfdbd0d429445b5858ec5b090ac] drm/i915: sanitize enable_rc6 option
git bisect good e6069ca84dfafbfdbd0d429445b5858ec5b090ac
# bad: [aff10b30a1d3edd1e31f536648772da85e33f655] drm/i915: Don't drop pinned fences
git bisect bad aff10b30a1d3edd1e31f536648772da85e33f655
# bad: [3f1d896c61e889e5b1a0cc0c0211574fa76feefb] drm/i915/chv: Enable aliasing PPGTT for CHV
git bisect bad 3f1d896c61e889e5b1a0cc0c0211574fa76feefb
# good: [0d116a29a8f80260380f608c033dba42240e26a8] drm/i915: vlv: init only needed state during early power well enabling
git bisect good 0d116a29a8f80260380f608c033dba42240e26a8
# bad: [894ed1ec4818ad12e5254de33de2fe5cf2ab987b] drm/i915/crt: Remove ->mode_set callback
git bisect bad 894ed1ec4818ad12e5254de33de2fe5cf2ab987b
# bad: [912b0e2dc6779d70a549dc90b0884face3b2540a] drm/i915/dvo: Remove ->mode_set callback
git bisect bad 912b0e2dc6779d70a549dc90b0884face3b2540a
# good: [024a43e12cccd13b7336fc71ab2067a19ade1857] drm/i915: Move ring_begin to signal()
git bisect good 024a43e12cccd13b7336fc71ab2067a19ade1857
# bad: [0d56bf0b65e6930ea00060d4107414b8d74c9055] drm/i915: Make encoder->mode_set callbacks optional
git bisect bad 0d56bf0b65e6930ea00060d4107414b8d74c9055
# bad: [98ec77397a5c68ce753dc283aaa6f4742328bcdd] drm/i915: Make primary_enabled match the actual hardware state
git bisect bad 98ec77397a5c68ce753dc283aaa6f4742328bcdd
# first bad commit: [98ec77397a5c68ce753dc283aaa6f4742328bcdd] drm/i915: Make primary_enabled match the actual hardware state

2014-07-14 06:56:14

by Daniel Vetter

[permalink] [raw]
Subject: Re: drm: i915: "plane B assertion failure, should be off on pipe B but is still active"

On Sun, Jul 13, 2014 at 10:32:41PM +0200, Paul Bolle wrote:
> Paul Bolle schreef op wo 02-07-2014 om 10:53 [+0200]:
> > On Tue, 2014-07-01 at 12:17 +0300, Jani Nikula wrote:
> > > This does not ring any bells to me (but that doesn't prove anything). A
> > > bisect result would be awesome.
>
> The bisect (which took me quite some time) points at commit 98ec77397a5c
> ("drm/i915: Make primary_enabled match the actual hardware state"). The
> bisect log is pasted at the end of this message.
>
> Commit 98ec77397a5c reverts cleanly on top of v3.16-rc4. Booting
> v3.16-rc4 with that revert added makes the WARNING go away. But note
> that I have no idea whether that revert actually is a proper fix here.
>
> Feel free to prod me for further testing, etc.

Please test the below patch, thanks.
-Daniel

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 82e7d57f0a8a..f0be855ddf45 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11914,6 +11914,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc)
* ... */
plane = crtc->plane;
crtc->plane = !plane;
+ crtc->primary_enabled = true;
dev_priv->display.crtc_disable(&crtc->base);
crtc->plane = plane;

--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

2014-07-14 07:13:50

by Paul Bolle

[permalink] [raw]
Subject: Re: drm: i915: "plane B assertion failure, should be off on pipe B but is still active"

On Mon, 2014-07-14 at 08:56 +0200, Daniel Vetter wrote:
> Please test the below patch, thanks.
> -Daniel
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 82e7d57f0a8a..f0be855ddf45 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -11914,6 +11914,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc)
> * ... */
> plane = crtc->plane;
> crtc->plane = !plane;
> + crtc->primary_enabled = true;
> dev_priv->display.crtc_disable(&crtc->base);
> crtc->plane = plane;
>

Instead of the revert or on top of the revert?

Thanks,


Paul Bolle

2014-07-14 07:18:21

by Daniel Vetter

[permalink] [raw]
Subject: Re: drm: i915: "plane B assertion failure, should be off on pipe B but is still active"

On Mon, Jul 14, 2014 at 09:13:40AM +0200, Paul Bolle wrote:
> On Mon, 2014-07-14 at 08:56 +0200, Daniel Vetter wrote:
> > Please test the below patch, thanks.
> > -Daniel
> >
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index 82e7d57f0a8a..f0be855ddf45 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -11914,6 +11914,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc)
> > * ... */
> > plane = crtc->plane;
> > crtc->plane = !plane;
> > + crtc->primary_enabled = true;
> > dev_priv->display.crtc_disable(&crtc->base);
> > crtc->plane = plane;
> >
>
> Instead of the revert or on top of the revert?

Instead of the revert as an attempt at a proper bugfix. If it doesn't work
my theory about what's going on on your machine is all wrong ;-)
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

2014-07-14 16:47:48

by Paul Bolle

[permalink] [raw]
Subject: Re: drm: i915: "plane B assertion failure, should be off on pipe B but is still active"

Daniel Vetter schreef op ma 14-07-2014 om 09:18 [+0200]:
> On Mon, Jul 14, 2014 at 09:13:40AM +0200, Paul Bolle wrote:
> > On Mon, 2014-07-14 at 08:56 +0200, Daniel Vetter wrote:
> > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > > index 82e7d57f0a8a..f0be855ddf45 100644
> > > --- a/drivers/gpu/drm/i915/intel_display.c
> > > +++ b/drivers/gpu/drm/i915/intel_display.c
> > > @@ -11914,6 +11914,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc)
> > > * ... */
> > > plane = crtc->plane;
> > > crtc->plane = !plane;
> > > + crtc->primary_enabled = true;
> > > dev_priv->display.crtc_disable(&crtc->base);
> > > crtc->plane = plane;
> > >
> >
> > Instead of the revert or on top of the revert?
>
> Instead of the revert as an attempt at a proper bugfix. If it doesn't work
> my theory about what's going on on your machine is all wrong ;-)

v3.16-rc5 with that "attempt at a proper bugfix" applied doesn't show
the WARNING anymore.

Please note that I didn't actually bother to test whether v3.16-rc5 by
itself, somehow, fixed things. I guess that's rather unlikely. But if
you'd like to be sure I'll even build and boot v3.16-rc5 without your
attempt at a bugfix.

Thanks!


Paul Bolle