diff --git a/packages/linux/patches/nouveau-8628f55e551ba2d19b25d9d8ab5a62b1a42ed05d.diff b/packages/linux/patches/nouveau-8628f55e551ba2d19b25d9d8ab5a62b1a42ed05d.diff new file mode 100644 index 0000000000..8a2e4b0b4b --- /dev/null +++ b/packages/linux/patches/nouveau-8628f55e551ba2d19b25d9d8ab5a62b1a42ed05d.diff @@ -0,0 +1,31 @@ +From 8628f55e551ba2d19b25d9d8ab5a62b1a42ed05d Mon Sep 17 00:00:00 2001 +From: Francisco Jerez +Date: Thu, 14 Oct 2010 19:55:23 +0000 +Subject: drm/nouveau: Use lazy fence waits when doing software interchannel sync. + +Signed-off-by: Francisco Jerez +--- +diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.c b/drivers/gpu/drm/nouveau/nouveau_fence.c +index 5f9f66f..0a22955 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_fence.c ++++ b/drivers/gpu/drm/nouveau/nouveau_fence.c +@@ -390,7 +390,7 @@ nouveau_fence_sync(struct nouveau_fence *fence, + if (!sema) { + /* Early card or broken userspace, fall back to + * software sync. */ +- return nouveau_fence_wait(fence, NULL, false, false); ++ return nouveau_fence_wait(fence, NULL, true, false); + } + + /* try to take chan's mutex, if we can't take it right away +@@ -399,7 +399,7 @@ nouveau_fence_sync(struct nouveau_fence *fence, + */ + if (!mutex_trylock(&chan->mutex)) { + free_semaphore(&sema->ref); +- return nouveau_fence_wait(fence, NULL, false, false); ++ return nouveau_fence_wait(fence, NULL, true, false); + } + + /* Make wchan wait until it gets signalled */ +-- +cgit v0.8.3-6-g21f6 diff --git a/packages/linux/patches/nouveau-e4de0c7b8333ad4e18d09041aa3db307e637afd5.diff b/packages/linux/patches/nouveau-e4de0c7b8333ad4e18d09041aa3db307e637afd5.diff new file mode 100644 index 0000000000..d8964fa530 --- /dev/null +++ b/packages/linux/patches/nouveau-e4de0c7b8333ad4e18d09041aa3db307e637afd5.diff @@ -0,0 +1,43 @@ +From e4de0c7b8333ad4e18d09041aa3db307e637afd5 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs +Date: Mon, 18 Oct 2010 02:34:04 +0000 +Subject: drm/nv50: remove some unnecessary PDISPLAY init + +Signed-off-by: Ben Skeggs +--- +diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c +index 11d366a..de5ca17 100644 +--- a/drivers/gpu/drm/nouveau/nv50_display.c ++++ b/drivers/gpu/drm/nouveau/nv50_display.c +@@ -218,9 +218,9 @@ nv50_display_init(struct drm_device *dev) + struct nouveau_gpio_engine *pgpio = &dev_priv->engine.gpio; + struct nouveau_channel *evo = dev_priv->evo; + struct drm_connector *connector; +- uint32_t val, ram_amount; +- uint64_t start; + int ret, i; ++ u64 start; ++ u32 val; + + NV_DEBUG_KMS(dev, "\n"); + +@@ -262,17 +262,6 @@ nv50_display_init(struct drm_device *dev) + nv_wr32(dev, NV50_PDISPLAY_DAC_CLK_CTRL1(i), 0x00000001); + } + +- /* This used to be in crtc unblank, but seems out of place there. */ +- nv_wr32(dev, NV50_PDISPLAY_UNK_380, 0); +- /* RAM is clamped to 256 MiB. */ +- ram_amount = dev_priv->vram_size; +- NV_DEBUG_KMS(dev, "ram_amount %d\n", ram_amount); +- if (ram_amount > 256*1024*1024) +- ram_amount = 256*1024*1024; +- nv_wr32(dev, NV50_PDISPLAY_RAM_AMOUNT, ram_amount - 1); +- nv_wr32(dev, NV50_PDISPLAY_UNK_388, 0x150000); +- nv_wr32(dev, NV50_PDISPLAY_UNK_38C, 0); +- + /* The precise purpose is unknown, i suspect it has something to do + * with text mode. + */ +-- +cgit v0.8.3-6-g21f6 diff --git a/packages/linux/patches/nouveau-f81788f1e998ee262fca83b88e3db79bafa3c13c.diff b/packages/linux/patches/nouveau-f81788f1e998ee262fca83b88e3db79bafa3c13c.diff new file mode 100644 index 0000000000..217599ca4a --- /dev/null +++ b/packages/linux/patches/nouveau-f81788f1e998ee262fca83b88e3db79bafa3c13c.diff @@ -0,0 +1,31 @@ +From f81788f1e998ee262fca83b88e3db79bafa3c13c Mon Sep 17 00:00:00 2001 +From: Francisco Jerez +Date: Thu, 14 Oct 2010 18:37:56 +0000 +Subject: drm/nouveau: Leave BO eviction synchronization for later. + +The pushbuf ioctl syncs after validation, no need for this anymore. + +Signed-off-by: Francisco Jerez +--- +diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c +index c663e87..0c35d38 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_bo.c ++++ b/drivers/gpu/drm/nouveau/nouveau_bo.c +@@ -483,15 +483,8 @@ nouveau_bo_move_accel_cleanup(struct nouveau_channel *chan, + if (ret) + return ret; + +- if (nvbo->channel) { +- ret = nouveau_fence_sync(fence, nvbo->channel); +- if (ret) +- goto out; +- } +- + ret = ttm_bo_move_accel_cleanup(&nvbo->bo, fence, NULL, evict, + no_wait_reserve, no_wait_gpu, new_mem); +-out: + nouveau_fence_unref((void *)&fence); + return ret; + } +-- +cgit v0.8.3-6-g21f6