diff -Nurp xf86-video-nouveau/src/nv_dma.c xf86-video-nouveau-pcigart/src/nv_dma.c --- xf86-video-nouveau/src/nv_dma.c 2008-02-08 18:23:00.000000000 +0900 +++ xf86-video-nouveau-pcigart/src/nv_dma.c 2008-02-08 18:42:54.000000000 +0900 @@ -119,12 +119,12 @@ static void NVInitDmaCB(ScrnInfoPtr pScr /* I'm not bothering to check for failures here, the DRM will fall back * on defaults if anything's wrong (ie. out of AGP, invalid sizes) */ -#ifndef __powerpc__ + /* WARNING: on ppc at least, putting cmdbuf in MEM_FB results in DMA hangs */ if (pNv->GART) cb_location = NOUVEAU_MEM_AGP | NOUVEAU_MEM_PCI_ACCEPTABLE; else -#endif - cb_location = NOUVEAU_MEM_FB; + cb_location = NOUVEAU_MEM_FB; + if((s = (char *)xf86GetOptValString(pNv->Options, OPTION_CMDBUF_LOCATION))) { if(!xf86NameCmp(s, "AGP")) cb_location = NOUVEAU_MEM_AGP; diff -Nurp xf86-video-nouveau/src/nv_driver.c xf86-video-nouveau-pcigart/src/nv_driver.c --- xf86-video-nouveau/src/nv_driver.c 2008-02-08 18:23:00.000000000 +0900 +++ xf86-video-nouveau-pcigart/src/nv_driver.c 2008-02-08 18:42:54.000000000 +0900 @@ -1717,13 +1717,11 @@ NVMapMem(ScrnInfoPtr pScrn) gart_scratch_size >> 10); } -#ifndef __powerpc__ if (nouveau_bo_new(pNv->dev, NOUVEAU_BO_GART | NOUVEAU_BO_PIN, 0, gart_scratch_size, &pNv->GART)) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to allocate GART memory\n"); } -#endif if (pNv->GART) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "GART: Allocated %dMiB as a scratch buffer\n",