diff options
| author | Dave Airlie <airlied@redhat.com> | 2012-05-31 08:53:56 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2012-05-31 08:53:56 -0400 |
| commit | 93b4cc56aa09df24dc011ab9fc1d3a1c3f86ba1a (patch) | |
| tree | a64e270ec2ab8f3f27e264d5581b9f0569b302f3 | |
| parent | bc42aabc6a01b92b0f961d65671564e0e1cd7592 (diff) | |
cirrus: avoid crash if driver fails to load
If we haven't inited the mm code, don't try and tear it down.
Signed-off-by: Dave Airlie <airlied@redhat.com>
| -rw-r--r-- | drivers/gpu/drm/cirrus/cirrus_drv.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/cirrus/cirrus_ttm.c | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.h b/drivers/gpu/drm/cirrus/cirrus_drv.h index 21bdfa8836f7..64ea597cb6d3 100644 --- a/drivers/gpu/drm/cirrus/cirrus_drv.h +++ b/drivers/gpu/drm/cirrus/cirrus_drv.h | |||
| @@ -145,7 +145,7 @@ struct cirrus_device { | |||
| 145 | struct ttm_bo_device bdev; | 145 | struct ttm_bo_device bdev; |
| 146 | atomic_t validate_sequence; | 146 | atomic_t validate_sequence; |
| 147 | } ttm; | 147 | } ttm; |
| 148 | 148 | bool mm_inited; | |
| 149 | }; | 149 | }; |
| 150 | 150 | ||
| 151 | 151 | ||
diff --git a/drivers/gpu/drm/cirrus/cirrus_ttm.c b/drivers/gpu/drm/cirrus/cirrus_ttm.c index 2ebcd11a5023..50e170f879de 100644 --- a/drivers/gpu/drm/cirrus/cirrus_ttm.c +++ b/drivers/gpu/drm/cirrus/cirrus_ttm.c | |||
| @@ -275,12 +275,17 @@ int cirrus_mm_init(struct cirrus_device *cirrus) | |||
| 275 | pci_resource_len(dev->pdev, 0), | 275 | pci_resource_len(dev->pdev, 0), |
| 276 | DRM_MTRR_WC); | 276 | DRM_MTRR_WC); |
| 277 | 277 | ||
| 278 | cirrus->mm_inited = true; | ||
| 278 | return 0; | 279 | return 0; |
| 279 | } | 280 | } |
| 280 | 281 | ||
| 281 | void cirrus_mm_fini(struct cirrus_device *cirrus) | 282 | void cirrus_mm_fini(struct cirrus_device *cirrus) |
| 282 | { | 283 | { |
| 283 | struct drm_device *dev = cirrus->dev; | 284 | struct drm_device *dev = cirrus->dev; |
| 285 | |||
| 286 | if (!cirrus->mm_inited) | ||
| 287 | return; | ||
| 288 | |||
| 284 | ttm_bo_device_release(&cirrus->ttm.bdev); | 289 | ttm_bo_device_release(&cirrus->ttm.bdev); |
| 285 | 290 | ||
| 286 | cirrus_ttm_global_release(cirrus); | 291 | cirrus_ttm_global_release(cirrus); |
