Merge branch 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes

nouveau fixes.

* 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6:
drm/gm107/gr: bump attrib cb size quite a bit
drm/nouveau: fix another lock unbalance in nouveau_crtc_page_flip
drm/nouveau/bios: fix shadowing from PROM on big-endian systems
drm/nouveau/acpi: allow non-optimus setups to load vbios from acpi

+10 -9
+3 -1
drivers/gpu/drm/nouveau/core/engine/graph/ctxgm107.c
··· 863 { 864 mmio_data(0x003000, 0x0100, NV_MEM_ACCESS_RW | NV_MEM_ACCESS_SYS); 865 mmio_data(0x008000, 0x0100, NV_MEM_ACCESS_RW | NV_MEM_ACCESS_SYS); 866 - mmio_data(0x060000, 0x1000, NV_MEM_ACCESS_RW); 867 868 mmio_list(0x40800c, 0x00000000, 8, 1); 869 mmio_list(0x408010, 0x80000000, 0, 0); ··· 876 mmio_list(0x408008, 0x80000030, 0, 0); 877 mmio_list(0x418e24, 0x00000000, 8, 0); 878 mmio_list(0x418e28, 0x80000030, 0, 0); 879 880 mmio_list(0x418810, 0x80000000, 12, 2); 881 mmio_list(0x419848, 0x10000000, 12, 2);
··· 863 { 864 mmio_data(0x003000, 0x0100, NV_MEM_ACCESS_RW | NV_MEM_ACCESS_SYS); 865 mmio_data(0x008000, 0x0100, NV_MEM_ACCESS_RW | NV_MEM_ACCESS_SYS); 866 + mmio_data(0x200000, 0x1000, NV_MEM_ACCESS_RW); 867 868 mmio_list(0x40800c, 0x00000000, 8, 1); 869 mmio_list(0x408010, 0x80000000, 0, 0); ··· 876 mmio_list(0x408008, 0x80000030, 0, 0); 877 mmio_list(0x418e24, 0x00000000, 8, 0); 878 mmio_list(0x418e28, 0x80000030, 0, 0); 879 + 880 + mmio_list(0x4064c8, 0x018002c0, 0, 0); 881 882 mmio_list(0x418810, 0x80000000, 12, 2); 883 mmio_list(0x419848, 0x10000000, 12, 2);
+6 -4
drivers/gpu/drm/nouveau/core/subdev/bios/base.c
··· 168 */ 169 i = 16; 170 do { 171 - if ((nv_rd32(bios, 0x300000) & 0xffff) == 0xaa55) 172 break; 173 } while (i--); 174 ··· 177 goto out; 178 179 /* read entire bios image to system memory */ 180 - bios->size = ((nv_rd32(bios, 0x300000) >> 16) & 0xff) * 512; 181 if (!bios->size) 182 goto out; 183 184 bios->data = kmalloc(bios->size, GFP_KERNEL); 185 if (bios->data) { 186 - for (i = 0; i < bios->size; i+=4) 187 - nv_wo32(bios, i, nv_rd32(bios, 0x300000 + i)); 188 } 189 190 /* check the PCI record header */
··· 168 */ 169 i = 16; 170 do { 171 + u32 data = le32_to_cpu(nv_rd32(bios, 0x300000)) & 0xffff; 172 + if (data == 0xaa55) 173 break; 174 } while (i--); 175 ··· 176 goto out; 177 178 /* read entire bios image to system memory */ 179 + bios->size = (le32_to_cpu(nv_rd32(bios, 0x300000)) >> 16) & 0xff; 180 + bios->size = bios->size * 512; 181 if (!bios->size) 182 goto out; 183 184 bios->data = kmalloc(bios->size, GFP_KERNEL); 185 if (bios->data) { 186 + for (i = 0; i < bios->size; i += 4) 187 + ((u32 *)bios->data)[i/4] = nv_rd32(bios, 0x300000 + i); 188 } 189 190 /* check the PCI record header */
-3
drivers/gpu/drm/nouveau/nouveau_acpi.c
··· 389 acpi_status status; 390 acpi_handle dhandle, rom_handle; 391 392 - if (!nouveau_dsm_priv.dsm_detected && !nouveau_dsm_priv.optimus_detected) 393 - return false; 394 - 395 dhandle = ACPI_HANDLE(&pdev->dev); 396 if (!dhandle) 397 return false;
··· 389 acpi_status status; 390 acpi_handle dhandle, rom_handle; 391 392 dhandle = ACPI_HANDLE(&pdev->dev); 393 if (!dhandle) 394 return false;
+1 -1
drivers/gpu/drm/nouveau/nouveau_display.c
··· 764 } 765 766 ret = nouveau_page_flip_emit(chan, old_bo, new_bo, s, &fence); 767 - mutex_unlock(&chan->cli->mutex); 768 if (ret) 769 goto fail_unreserve; 770 771 /* Update the crtc struct and cleanup */ 772 crtc->primary->fb = fb;
··· 764 } 765 766 ret = nouveau_page_flip_emit(chan, old_bo, new_bo, s, &fence); 767 if (ret) 768 goto fail_unreserve; 769 + mutex_unlock(&chan->cli->mutex); 770 771 /* Update the crtc struct and cleanup */ 772 crtc->primary->fb = fb;