mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 22:52:35 +02:00
drm/nouveau/fbcon: using nv_two_heads is not a good idea
commit 9bd0c15fcf upstream.
nv_two_heads() was never meant to be used outside of pre-nv50 code. The
code checks for >= NV_10 for 2 CRTCs, then downgrades a few specific
chipsets to 1 CRTC based on (pci_device & 0x0ff0).
The breakage example seen is on GTX 560Ti, with a pciid of 0x1200, which
gets detected as an NV20 (0x020x) with 1 CRTC by nv_two_heads(), causing
memory corruption because there's actually 2 CRTCs..
This switches fbcon to use the CRTC count directly from the mode_config
structure, which will also fix the same issue on Kepler boards which have
4 CRTCs.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d25d7c8f99
commit
46f82ddcd3
|
|
@ -487,7 +487,7 @@ int nouveau_fbcon_init(struct drm_device *dev)
|
|||
nfbdev->helper.funcs = &nouveau_fbcon_helper_funcs;
|
||||
|
||||
ret = drm_fb_helper_init(dev, &nfbdev->helper,
|
||||
nv_two_heads(dev) ? 2 : 1, 4);
|
||||
dev->mode_config.num_crtc, 4);
|
||||
if (ret) {
|
||||
kfree(nfbdev);
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user