Skip to contentSkip to conversation

PROBLEM: Possible problem in i915_dma_cleanup function in i915_dma.c module

DISCUSSION Dmitry Dmitriev 1 participant 1 message Aug 4, 2011

lore
Share & tools
lore
#0 lore raw

Hello!

This problem is found in 3.0 kernel.

In i915_dma_cleanup function(drivers/gpu/drm/i915/i915_dma.c module) I found following:
 135static int i915_dma_cleanup(struct drm_device * dev)
 136{
.......
 152        /* Clear the HWS virtual address at teardown */
 153        if (I915_NEED_GFX_HWS(dev))
 154                i915_free_hws(dev);
.......
 157}

2102int i915_driver_unload(struct drm_device *dev) 2103{
........
2174                if (!I915_NEED_GFX_HWS(dev)) 2175                        i915_free_hws(dev);
........
2190}

I.e. in one case i915_free_hws function is called when (I915_NEED_GFX_HWS(dev)) condition is true(i915_dma_cleanup), but in other case it called when (!I915_NEED_GFX_HWS(dev)) condition is true(in i915_driver_unload function). This is intentional?

Corresponding init function is called only when (!I915_NEED_GFX_HWS(dev)) condition is true(in i915_driver_load function). Therefore I guess that if condition is wrong in i915_dma_cleanup function.

Thanks,
Dmitry