The wrong state emission routines were being called for G550, and
consistent maps weren't correctly mapped...
Signed-off-by: Dave Airlie <airlied@linux.ie>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
 
        offset   = address - vma->vm_start;
        i = (unsigned long)map->handle + offset;
-       page = vmalloc_to_page((void *)i);
+       page = (map->type == _DRM_CONSISTENT) ?
+               virt_to_page((void *)i) : vmalloc_to_page((void *)i);
        if (!page)
                return NOPAGE_OOM;
        get_page(page);
 
 #define MGA_EMIT_STATE( dev_priv, dirty )                              \
 do {                                                                   \
        if ( (dirty) & ~MGA_UPLOAD_CLIPRECTS ) {                        \
-               if ( dev_priv->chipset == MGA_CARD_TYPE_G400 ) {        \
+               if ( dev_priv->chipset >= MGA_CARD_TYPE_G400 ) {        \
                        mga_g400_emit_state( dev_priv );                \
                } else {                                                \
                        mga_g200_emit_state( dev_priv );                \
 
 
        /* Force reset of DWGCTL on G400 (eliminates clip disable bit).
         */
-       if (dev_priv->chipset == MGA_CARD_TYPE_G400) {
+       if (dev_priv->chipset >= MGA_CARD_TYPE_G400) {
                DMA_BLOCK(MGA_DWGCTL, ctx->dwgctl,
                          MGA_LEN + MGA_EXEC, 0x80000000,
                          MGA_DWGCTL, ctx->dwgctl,