From dfc650bd80da28b430b65cd26a1bf418074e2086 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 9 Jun 2005 21:18:56 +0000 Subject: Completely re-initialize DMA settings There were two problems. First, the 'warp' and 'primary' pointers weren't cleared, so mga_do_cleanup_dma, which gets called multiple times, would try to ioremapfree them multiple times. This resulted in the new error messages to syslog. The second problem was the, since the dev_private structure isn't reallocated and cleaned out in mga_do_init_dma, when the server is reloaded idle-waits would wait for impossible values. I have given this patch some more riggorous testing. This includes: - Load module, start server, run GL app, stop server, unload module. - Load module, start server, run GL app, stop server, unload module, reload module, restart server, run GL app. - Load module, start server, run GL app, stop server, restart server, run GL app, stop server, unload module. In all three cases, everything worked as expected. Please let me know if there are any further regressions with this patch. Xorg bug: 3408 Reported by: Chris Rankin --- bsd-core/mga_drv.c | 1 + 1 file changed, 1 insertion(+) (limited to 'bsd-core/mga_drv.c') diff --git a/bsd-core/mga_drv.c b/bsd-core/mga_drv.c index 6034212c..efb7cc99 100644 --- a/bsd-core/mga_drv.c +++ b/bsd-core/mga_drv.c @@ -60,6 +60,7 @@ static void mga_configure(drm_device_t *dev) dev->irq_uninstall = mga_driver_irq_uninstall; dev->irq_handler = mga_driver_irq_handler; dev->dma_ioctl = mga_dma_buffers; + dev->pretakedown = mga_driver_pretakedown; dev->dma_quiescent = mga_driver_dma_quiescent; dev->device_is_agp = mga_driver_device_is_agp; -- cgit v1.2.3