It seems it was only locking up in the context of
nouveau_hw_save_vga_fonts, when it actually did something (because
the console wasn't already in graphics mode).

Signed-off-by: Francisco Jerez <[email protected]>
---
 drivers/gpu/drm/nouveau/nouveau_hw.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_hw.c 
b/drivers/gpu/drm/nouveau/nouveau_hw.c
index 6f55f55..d270d6f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_hw.c
+++ b/drivers/gpu/drm/nouveau/nouveau_hw.c
@@ -87,8 +87,17 @@ NVSetOwner(struct drm_device *dev, int owner)
        if (owner == 1)
                owner *= 3;
 
+       if (dev_priv->chipset == 0x11) {
+               /* This might seem stupid, but the blob does it and
+                * omitting it often locks the system up.
+                */
+               NVReadVgaCrtc(dev, 0, NV_CIO_SR_LOCK_INDEX);
+               NVReadVgaCrtc(dev, 1, NV_CIO_SR_LOCK_INDEX);
+       }
+
        /* CR44 is always changed on CRTC0 */
        NVWriteVgaCrtc(dev, 0, NV_CIO_CRE_44, owner);
+
        if (dev_priv->chipset == 0x11) {        /* set me harder */
                NVWriteVgaCrtc(dev, 0, NV_CIO_CRE_2E, owner);
                NVWriteVgaCrtc(dev, 0, NV_CIO_CRE_2E, owner);
-- 
1.6.3.3

_______________________________________________
Nouveau mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to