nouveau: Do not BUG_ON(!spin_is_locked()) on UP
Subsystems (3)
PATCH 1/3 nouveau: Do not BUG_ON(!spin_is_locked()) on UP
On !SMP systems spinlocks do not exist. Thus checking of they are active will always fail.
Use
assert_spin_locked(lock);
instead of
BUG_ON(!spin_is_locked(lock));
to not BUG() on all UP systems.
---
See also fdo bug #87552
drivers/gpu/drm/nouveau/core/core/event.c | 4 ++-- drivers/gpu/drm/nouveau/core/core/notify.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
drivers/gpu/drm/nouveau/core/core/event.c +2 -2
@@ -26,7 +26,7 @@void nvkm_event_put (struct nvkm_event *event,u32 types,int index) { -BUG_ON (!spin_is_locked (&event->refs_lock)); +assert_spin_locked (&event->refs_lock);while (types) {int type =__ffs (types); types &= ~(1 << type);if (--event->refs[index * event->types_nr + type] ==0 ) {
@@ -39,7 +39,7 @@ nvkm_event_put(struct nvkm_event *event, u32 types, int index)void nvkm_event_get (struct nvkm_event *event,u32 types,int index) { -BUG_ON (!spin_is_locked (&event->refs_lock)); +assert_spin_locked (&event->refs_lock);while (types) {int type =__ffs (types); types &= ~(1 << type);if (++event->refs[index * event->types_nr + type] ==1 ) {
drivers/gpu/drm/nouveau/core/core/notify.c +1 -1
@@ -98,7 +98,7 @@ nvkm_notify_send(struct nvkm_notify *notify, void *data, u32 size)struct nvkm_event *event = notify->event;unsigned long flags; -BUG_ON (!spin_is_locked (&event->list_lock)); +assert_spin_locked (&event->list_lock);BUG_ON (size != notify->size);spin_lock_irqsave (&event->refs_lock, flags);
Signature · 6 lines
1.8.1.5 _______________________________________________ dri-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/dri-devel
Hi Greg, stable team,
Please apply this patch to stable (3.18 and 3.17).
It is commit ff4c0d5213b015e60aa87c1352604f10ba9c3e12 in linus's tree:
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff4c0d5213b015e60aa87c1352604f10ba9c3e12
Thanks,
Bruno
Quoted 52 lines · On Sun, 21 December 2014 Bruno Prémont wrote:
On !SMP systems spinlocks do not exist. Thus checking of they are active will always fail.
Use
assert_spin_locked(lock);
instead of
BUG_ON(!spin_is_locked(lock));
to notBUG()on all UP systems.Signed-off-by Bruno Prémont <[email protected]>---
See also fdo bug #87552drivers/gpu/drm/nouveau/core/core/event.c | 4 ++-- drivers/gpu/drm/nouveau/core/core/notify.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)drivers/gpu/drm/nouveau/core/core/event.c +2
-2@@ -26,7 +26,7 @@void nvkm_event_put (struct nvkm_event *event,u32 types,int index) { -BUG_ON (!spin_is_locked (&event->refs_lock)); +assert_spin_locked (&event->refs_lock);while (types) {int type =__ffs (types); types &= ~(1 << type);if (--event->refs[index * event->types_nr + type] ==0 ) {@@ -39,7 +39,7 @@ nvkm_event_put(struct nvkm_event *event, u32 types, int index)void nvkm_event_get (struct nvkm_event *event,u32 types,int index) { -BUG_ON (!spin_is_locked (&event->refs_lock)); +assert_spin_locked (&event->refs_lock);while (types) {int type =__ffs (types); types &= ~(1 << type);if (++event->refs[index * event->types_nr + type] ==1 ) {drivers/gpu/drm/nouveau/core/core/notify.c +1
-1@@ -98,7 +98,7 @@ nvkm_notify_send(struct nvkm_notify *notify, void *data, u32 size)struct nvkm_event *event = notify->event;unsigned long flags; -BUG_ON (!spin_is_locked (&event->list_lock)); +assert_spin_locked (&event->list_lock);BUG_ON (size != notify->size);spin_lock_irqsave (&event->refs_lock, flags);