Comment 4 for bug 525273

Revision history for this message
In , Phelps (phelps) wrote :

I'm seeing what might be the same problem with an NV4E (a GeForce 6150 which is built into my ASUS M2NPV-VM motherboard) running in a 64-bit environment. I have a work-around, but it doesn't make any sense to me.

I've managed to track my issue down to the TTM interface changes:

    77bce8e drm/nouveau: fix for ttm interface changes, and
    ad49f50 drm/ttm/radeon: add dma32 support.

If I force the last argument to ttm_bo_device_init to false then the GPU channel is successfully created and 2D acceleration works. I'm currently using the following patch:

diff --git a/drivers/gpu/drm/nouveau/nouveau_mem.c b/drivers/gpu/drm/nouveau/nouveau_mem.c
index 8f3a12f..10d1663 100644
--- a/drivers/gpu/drm/nouveau/nouveau_mem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_mem.c
@@ -590,7 +590,7 @@ nouveau_mem_init(struct drm_device *dev)
        ret = ttm_bo_device_init(&dev_priv->ttm.bdev,
                                 dev_priv->ttm.bo_global_ref.ref.object,
                                 &nouveau_bo_driver, DRM_FILE_PAGE_OFFSET,
- dma_bits <= 32 ? true : false);
+ /* dma_bits <= 32 ? true : */ false);
        if (ret) {
                NV_ERROR(dev, "Error initialising bo driver: %d\n", ret);
                return ret;

The bit that I find most confusing is that I can't just force dma_bits to be 40 (or 64, for that matter) -- it apparently must be 32.

To summarize, this only works for me if: dma_bits=32 and TTM_PAGE_FLAG_DMA32 is not in bdev's flags.

I hope this means something to someone...

Thanks,
-Ted