summaryrefslogtreecommitdiff
path: root/sys/dev/pci/drm/radeon
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/pci/drm/radeon')
-rw-r--r--sys/dev/pci/drm/radeon/r100.c13
-rw-r--r--sys/dev/pci/drm/radeon/radeon_device.c6
-rw-r--r--sys/dev/pci/drm/radeon/radeon_display.c28
-rw-r--r--sys/dev/pci/drm/radeon/radeon_irq_kms.c58
-rw-r--r--sys/dev/pci/drm/radeon/radeon_kms.c12
-rw-r--r--sys/dev/pci/drm/radeon/radeon_object.c6
-rw-r--r--sys/dev/pci/drm/radeon/radeon_sa.c20
-rw-r--r--sys/dev/pci/drm/radeon/radeon_ttm.c6
8 files changed, 86 insertions, 63 deletions
diff --git a/sys/dev/pci/drm/radeon/r100.c b/sys/dev/pci/drm/radeon/r100.c
index f26029c7ed1..38d9dc8e035 100644
--- a/sys/dev/pci/drm/radeon/r100.c
+++ b/sys/dev/pci/drm/radeon/r100.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: r100.c,v 1.8 2014/07/12 18:48:52 tedu Exp $ */
+/* $OpenBSD: r100.c,v 1.9 2015/02/10 10:50:49 jsg Exp $ */
/*
* Copyright 2008 Advanced Micro Devices, Inc.
* Copyright 2008 Red Hat Inc.
@@ -4196,14 +4196,15 @@ uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg,
return bus_space_read_4(rdev->memt, rdev->rmmio, reg);
else {
+ unsigned long flags;
uint32_t ret;
- mtx_enter(&rdev->mmio_idx_lock);
+ spin_lock_irqsave(&rdev->mmio_idx_lock, flags);
bus_space_write_4(rdev->memt, rdev->rmmio,
RADEON_MM_INDEX, reg);
ret = bus_space_read_4(rdev->memt, rdev->rmmio,
RADEON_MM_DATA);
- mtx_leave(&rdev->mmio_idx_lock);
+ spin_unlock_irqrestore(&rdev->mmio_idx_lock, flags);
return ret;
}
@@ -4215,12 +4216,14 @@ void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v,
if (reg < rdev->rmmio_size && !always_indirect)
bus_space_write_4(rdev->memt, rdev->rmmio, reg, v);
else {
- mtx_enter(&rdev->mmio_idx_lock);
+ unsigned long flags;
+
+ spin_lock_irqsave(&rdev->mmio_idx_lock, flags);
bus_space_write_4(rdev->memt, rdev->rmmio,
RADEON_MM_INDEX, reg);
bus_space_write_4(rdev->memt, rdev->rmmio,
RADEON_MM_DATA, v);
- mtx_leave(&rdev->mmio_idx_lock);
+ spin_unlock_irqrestore(&rdev->mmio_idx_lock, flags);
}
}
diff --git a/sys/dev/pci/drm/radeon/radeon_device.c b/sys/dev/pci/drm/radeon/radeon_device.c
index 5e095dbbeb2..b476e5e4db7 100644
--- a/sys/dev/pci/drm/radeon/radeon_device.c
+++ b/sys/dev/pci/drm/radeon/radeon_device.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: radeon_device.c,v 1.7 2015/02/10 06:19:36 jsg Exp $ */
+/* $OpenBSD: radeon_device.c,v 1.8 2015/02/10 10:50:49 jsg Exp $ */
/*
* Copyright 2008 Advanced Micro Devices, Inc.
* Copyright 2008 Red Hat Inc.
@@ -986,9 +986,9 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev)
struct drm_device *dev = pci_get_drvdata(pdev);
bool can_switch;
- mtx_enter(&dev->count_lock);
+ spin_lock(&dev->count_lock);
can_switch = (dev->open_count == 0);
- mtx_leave(&dev->count_lock);
+ spin_unlock(&dev->count_lock);
return can_switch;
}
diff --git a/sys/dev/pci/drm/radeon/radeon_display.c b/sys/dev/pci/drm/radeon/radeon_display.c
index 17b2f9bb367..b634e82630b 100644
--- a/sys/dev/pci/drm/radeon/radeon_display.c
+++ b/sys/dev/pci/drm/radeon/radeon_display.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: radeon_display.c,v 1.8 2015/01/27 03:17:36 dlg Exp $ */
+/* $OpenBSD: radeon_display.c,v 1.9 2015/02/10 10:50:49 jsg Exp $ */
/*
* Copyright 2007-8 Advanced Micro Devices, Inc.
* Copyright 2008 Red Hat Inc.
@@ -275,15 +275,16 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
struct radeon_unpin_work *work;
struct drm_pending_vblank_event *e;
struct timeval now;
+ unsigned long flags;
struct drm_file *file_priv;
u32 update_pending;
int vpos, hpos;
- mtx_enter(&rdev->ddev->event_lock);
+ spin_lock_irqsave(&rdev->ddev->event_lock, flags);
work = radeon_crtc->unpin_work;
if (work == NULL ||
(work->fence && !radeon_fence_signaled(work->fence))) {
- mtx_leave(&rdev->ddev->event_lock);
+ spin_unlock_irqrestore(&rdev->ddev->event_lock, flags);
return;
}
/* New pageflip, or just completion of a previous one? */
@@ -322,7 +323,7 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
* next vblank irq.
*/
radeon_crtc->deferred_flip_completion = 1;
- mtx_leave(&rdev->ddev->event_lock);
+ spin_unlock_irqrestore(&rdev->ddev->event_lock, flags);
return;
}
@@ -340,7 +341,7 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
wakeup(&file_priv->evlist);
selwakeup(&file_priv->rsel);
}
- mtx_leave(&rdev->ddev->event_lock);
+ spin_unlock_irqrestore(&rdev->ddev->event_lock, flags);
drm_vblank_put(rdev->ddev, radeon_crtc->crtc_id);
radeon_fence_unref(&work->fence);
@@ -360,6 +361,7 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc,
struct drm_gem_object *obj;
struct radeon_bo *rbo;
struct radeon_unpin_work *work;
+ unsigned long flags;
u32 tiling_flags, pitch_pixels;
u64 base;
int r;
@@ -382,15 +384,15 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc,
obj = new_radeon_fb->obj;
rbo = gem_to_radeon_bo(obj);
- mtx_enter(&rbo->tbo.bdev->fence_lock);
+ spin_lock(&rbo->tbo.bdev->fence_lock);
if (rbo->tbo.sync_obj)
work->fence = radeon_fence_ref(rbo->tbo.sync_obj);
- mtx_leave(&rbo->tbo.bdev->fence_lock);
+ spin_unlock(&rbo->tbo.bdev->fence_lock);
task_set(&work->task, radeon_unpin_work_func, work);
/* We borrow the event spin lock for protecting unpin_work */
- mtx_enter(&dev->event_lock);
+ spin_lock_irqsave(&dev->event_lock, flags);
if (radeon_crtc->unpin_work) {
DRM_DEBUG_DRIVER("flip queue: crtc already busy\n");
r = -EBUSY;
@@ -398,7 +400,7 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc,
}
radeon_crtc->unpin_work = work;
radeon_crtc->deferred_flip_completion = 0;
- mtx_leave(&dev->event_lock);
+ spin_unlock_irqrestore(&dev->event_lock, flags);
/* pin the new buffer */
DRM_DEBUG_DRIVER("flip-ioctl() cur_fbo = %p, cur_bbo = %p\n",
@@ -457,9 +459,9 @@ static int radeon_crtc_page_flip(struct drm_crtc *crtc,
base &= ~7;
}
- mtx_enter(&dev->event_lock);
+ spin_lock_irqsave(&dev->event_lock, flags);
work->new_crtc_base = base;
- mtx_leave(&dev->event_lock);
+ spin_unlock_irqrestore(&dev->event_lock, flags);
/* update crtc fb */
crtc->fb = fb;
@@ -486,10 +488,10 @@ pflip_cleanup1:
radeon_bo_unreserve(rbo);
pflip_cleanup:
- mtx_enter(&dev->event_lock);
+ spin_lock_irqsave(&dev->event_lock, flags);
radeon_crtc->unpin_work = NULL;
unlock_free:
- mtx_leave(&dev->event_lock);
+ spin_unlock_irqrestore(&dev->event_lock, flags);
drm_gem_object_unreference_unlocked(old_radeon_fb->obj);
radeon_fence_unref(&work->fence);
kfree(work);
diff --git a/sys/dev/pci/drm/radeon/radeon_irq_kms.c b/sys/dev/pci/drm/radeon/radeon_irq_kms.c
index affdcfd95de..31754dd2114 100644
--- a/sys/dev/pci/drm/radeon/radeon_irq_kms.c
+++ b/sys/dev/pci/drm/radeon/radeon_irq_kms.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: radeon_irq_kms.c,v 1.5 2015/01/27 03:17:36 dlg Exp $ */
+/* $OpenBSD: radeon_irq_kms.c,v 1.6 2015/02/10 10:50:49 jsg Exp $ */
/*
* Copyright 2008 Advanced Micro Devices, Inc.
* Copyright 2008 Red Hat Inc.
@@ -102,9 +102,10 @@ radeon_hotplug_work_func(void *arg1)
void radeon_driver_irq_preinstall_kms(struct drm_device *dev)
{
struct radeon_device *rdev = dev->dev_private;
+ unsigned long irqflags;
unsigned i;
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
/* Disable *all* interrupts */
for (i = 0; i < RADEON_NUM_RINGS; i++)
atomic_set(&rdev->irq.ring_int[i], 0);
@@ -116,7 +117,7 @@ void radeon_driver_irq_preinstall_kms(struct drm_device *dev)
rdev->irq.afmt[i] = false;
}
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
/* Clear bits */
radeon_irq_process(rdev);
}
@@ -145,12 +146,13 @@ int radeon_driver_irq_postinstall_kms(struct drm_device *dev)
void radeon_driver_irq_uninstall_kms(struct drm_device *dev)
{
struct radeon_device *rdev = dev->dev_private;
+ unsigned long irqflags;
unsigned i;
if (rdev == NULL) {
return;
}
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
/* Disable *all* interrupts */
for (i = 0; i < RADEON_NUM_RINGS; i++)
atomic_set(&rdev->irq.ring_int[i], 0);
@@ -162,7 +164,7 @@ void radeon_driver_irq_uninstall_kms(struct drm_device *dev)
rdev->irq.afmt[i] = false;
}
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
/**
@@ -315,13 +317,15 @@ void radeon_irq_kms_fini(struct radeon_device *rdev)
*/
void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring)
{
+ unsigned long irqflags;
+
if (!rdev->ddev->irq_enabled)
return;
if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) {
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
}
@@ -337,13 +341,15 @@ void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring)
*/
void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring)
{
+ unsigned long irqflags;
+
if (!rdev->ddev->irq_enabled)
return;
if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) {
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
}
@@ -358,6 +364,8 @@ void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring)
*/
void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc)
{
+ unsigned long irqflags;
+
if (crtc < 0 || crtc >= rdev->num_crtc)
return;
@@ -365,9 +373,9 @@ void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc)
return;
if (atomic_inc_return(&rdev->irq.pflip[crtc]) == 1) {
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
}
@@ -382,6 +390,8 @@ void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc)
*/
void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc)
{
+ unsigned long irqflags;
+
if (crtc < 0 || crtc >= rdev->num_crtc)
return;
@@ -389,9 +399,9 @@ void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc)
return;
if (atomic_dec_and_test(&rdev->irq.pflip[crtc])) {
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
}
@@ -405,13 +415,15 @@ void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc)
*/
void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block)
{
+ unsigned long irqflags;
+
if (!rdev->ddev->irq_enabled)
return;
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
rdev->irq.afmt[block] = true;
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
@@ -425,13 +437,15 @@ void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block)
*/
void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block)
{
+ unsigned long irqflags;
+
if (!rdev->ddev->irq_enabled)
return;
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
rdev->irq.afmt[block] = false;
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
/**
@@ -444,16 +458,17 @@ void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block)
*/
void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask)
{
+ unsigned long irqflags;
int i;
if (!rdev->ddev->irq_enabled)
return;
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
for (i = 0; i < RADEON_MAX_HPD_PINS; ++i)
rdev->irq.hpd[i] |= !!(hpd_mask & (1 << i));
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
/**
@@ -466,15 +481,16 @@ void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask)
*/
void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask)
{
+ unsigned long irqflags;
int i;
if (!rdev->ddev->irq_enabled)
return;
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
for (i = 0; i < RADEON_MAX_HPD_PINS; ++i)
rdev->irq.hpd[i] &= !(hpd_mask & (1 << i));
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
diff --git a/sys/dev/pci/drm/radeon/radeon_kms.c b/sys/dev/pci/drm/radeon/radeon_kms.c
index 700c510e486..05a6a359db8 100644
--- a/sys/dev/pci/drm/radeon/radeon_kms.c
+++ b/sys/dev/pci/drm/radeon/radeon_kms.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: radeon_kms.c,v 1.33 2015/02/10 01:39:32 jsg Exp $ */
+/* $OpenBSD: radeon_kms.c,v 1.34 2015/02/10 10:50:49 jsg Exp $ */
/*
* Copyright 2008 Advanced Micro Devices, Inc.
* Copyright 2008 Red Hat Inc.
@@ -1235,6 +1235,7 @@ u32 radeon_get_vblank_counter_kms(struct drm_device *dev, int crtc)
int radeon_enable_vblank_kms(struct drm_device *dev, int crtc)
{
struct radeon_device *rdev = dev->dev_private;
+ unsigned long irqflags;
int r;
if (crtc < 0 || crtc >= rdev->num_crtc) {
@@ -1242,10 +1243,10 @@ int radeon_enable_vblank_kms(struct drm_device *dev, int crtc)
return -EINVAL;
}
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
rdev->irq.crtc_vblank_int[crtc] = true;
r = radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
return r;
}
@@ -1260,16 +1261,17 @@ int radeon_enable_vblank_kms(struct drm_device *dev, int crtc)
void radeon_disable_vblank_kms(struct drm_device *dev, int crtc)
{
struct radeon_device *rdev = dev->dev_private;
+ unsigned long irqflags;
if (crtc < 0 || crtc >= rdev->num_crtc) {
DRM_ERROR("Invalid crtc %d\n", crtc);
return;
}
- mtx_enter(&rdev->irq.lock);
+ spin_lock_irqsave(&rdev->irq.lock, irqflags);
rdev->irq.crtc_vblank_int[crtc] = false;
radeon_irq_set(rdev);
- mtx_leave(&rdev->irq.lock);
+ spin_unlock_irqrestore(&rdev->irq.lock, irqflags);
}
/**
diff --git a/sys/dev/pci/drm/radeon/radeon_object.c b/sys/dev/pci/drm/radeon/radeon_object.c
index deb435fd547..e34be49f99f 100644
--- a/sys/dev/pci/drm/radeon/radeon_object.c
+++ b/sys/dev/pci/drm/radeon/radeon_object.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: radeon_object.c,v 1.6 2015/02/10 06:19:36 jsg Exp $ */
+/* $OpenBSD: radeon_object.c,v 1.7 2015/02/10 10:50:49 jsg Exp $ */
/*
* Copyright 2009 Jerome Glisse.
* All Rights Reserved.
@@ -632,12 +632,12 @@ int radeon_bo_wait(struct radeon_bo *bo, u32 *mem_type, bool no_wait)
r = ttm_bo_reserve(&bo->tbo, true, no_wait, false, 0);
if (unlikely(r != 0))
return r;
- mtx_enter(&bo->tbo.bdev->fence_lock);
+ spin_lock(&bo->tbo.bdev->fence_lock);
if (mem_type)
*mem_type = bo->tbo.mem.mem_type;
if (bo->tbo.sync_obj)
r = ttm_bo_wait(&bo->tbo, true, true, no_wait);
- mtx_leave(&bo->tbo.bdev->fence_lock);
+ spin_unlock(&bo->tbo.bdev->fence_lock);
ttm_bo_unreserve(&bo->tbo);
return r;
}
diff --git a/sys/dev/pci/drm/radeon/radeon_sa.c b/sys/dev/pci/drm/radeon/radeon_sa.c
index 55682dfd9ce..e43b2608ddb 100644
--- a/sys/dev/pci/drm/radeon/radeon_sa.c
+++ b/sys/dev/pci/drm/radeon/radeon_sa.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: radeon_sa.c,v 1.4 2014/02/09 23:57:04 jsg Exp $ */
+/* $OpenBSD: radeon_sa.c,v 1.5 2015/02/10 10:50:49 jsg Exp $ */
/*
* Copyright 2011 Red Hat Inc.
* All Rights Reserved.
@@ -342,7 +342,7 @@ int radeon_sa_bo_new(struct radeon_device *rdev,
INIT_LIST_HEAD(&(*sa_bo)->olist);
INIT_LIST_HEAD(&(*sa_bo)->flist);
- mtx_enter(&sa_manager->wq_lock);
+ spin_lock(&sa_manager->wq_lock);
do {
for (i = 0; i < RADEON_NUM_RINGS; ++i) {
fences[i] = NULL;
@@ -354,16 +354,16 @@ int radeon_sa_bo_new(struct radeon_device *rdev,
if (radeon_sa_bo_try_alloc(sa_manager, *sa_bo,
size, align)) {
- mtx_leave(&sa_manager->wq_lock);
+ spin_unlock(&sa_manager->wq_lock);
return 0;
}
/* see if we can skip over some allocations */
} while (radeon_sa_bo_next_hole(sa_manager, fences, tries));
- mtx_leave(&sa_manager->wq_lock);
+ spin_unlock(&sa_manager->wq_lock);
r = radeon_fence_wait_any(rdev, fences, false);
- mtx_enter(&sa_manager->wq_lock);
+ spin_lock(&sa_manager->wq_lock);
/* if we have nothing to wait for block */
if (r == -ENOENT && block) {
r = 0;
@@ -383,7 +383,7 @@ int radeon_sa_bo_new(struct radeon_device *rdev,
} while (!r);
- mtx_leave(&sa_manager->wq_lock);
+ spin_unlock(&sa_manager->wq_lock);
kfree(*sa_bo);
*sa_bo = NULL;
return r;
@@ -399,7 +399,7 @@ void radeon_sa_bo_free(struct radeon_device *rdev, struct radeon_sa_bo **sa_bo,
}
sa_manager = (*sa_bo)->manager;
- mtx_enter(&sa_manager->wq_lock);
+ spin_lock(&sa_manager->wq_lock);
if (fence && !radeon_fence_signaled(fence)) {
(*sa_bo)->fence = radeon_fence_ref(fence);
list_add_tail(&(*sa_bo)->flist,
@@ -408,7 +408,7 @@ void radeon_sa_bo_free(struct radeon_device *rdev, struct radeon_sa_bo **sa_bo,
radeon_sa_bo_remove_locked(*sa_bo);
}
wakeup(&sa_manager->wq);
- mtx_leave(&sa_manager->wq_lock);
+ spin_unlock(&sa_manager->wq_lock);
*sa_bo = NULL;
}
@@ -418,7 +418,7 @@ void radeon_sa_bo_dump_debug_info(struct radeon_sa_manager *sa_manager,
{
struct radeon_sa_bo *i;
- mtx_enter(&sa_manager->wq.lock);
+ spin_lock(&sa_manager->wq_lock);
list_for_each_entry(i, &sa_manager->olist, olist) {
if (&i->olist == sa_manager->hole) {
seq_printf(m, ">");
@@ -433,6 +433,6 @@ void radeon_sa_bo_dump_debug_info(struct radeon_sa_manager *sa_manager,
}
seq_printf(m, "\n");
}
- mtx_leave(&sa_manager->wq.lock);
+ spin_unlock(&sa_manager->wq_lock);
}
#endif
diff --git a/sys/dev/pci/drm/radeon/radeon_ttm.c b/sys/dev/pci/drm/radeon/radeon_ttm.c
index ba223e7db5d..925bf63f376 100644
--- a/sys/dev/pci/drm/radeon/radeon_ttm.c
+++ b/sys/dev/pci/drm/radeon/radeon_ttm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: radeon_ttm.c,v 1.8 2015/02/10 06:19:36 jsg Exp $ */
+/* $OpenBSD: radeon_ttm.c,v 1.9 2015/02/10 10:50:49 jsg Exp $ */
/*
* Copyright 2009 Jerome Glisse.
* All Rights Reserved.
@@ -944,9 +944,9 @@ static int radeon_mm_dump_table(struct seq_file *m, void *data)
int ret;
struct ttm_bo_global *glob = rdev->mman.bdev.glob;
- mtx_enter(&glob->lru_lock);
+ spin_lock(&glob->lru_lock);
ret = drm_mm_dump_table(m, mm);
- mtx_leave(&glob->lru_lock);
+ spin_unlock(&glob->lru_lock);
return ret;
}
#endif