From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mikulas Patocka Date: Sun, 03 Jun 2018 14:41:02 +0000 Subject: [PATCH 09/21] udl-kms: use spin_lock_irq instead of spin_lock_irqsave Message-Id: <20180603144222.335724006@twibright.com> List-Id: References: <20180603144053.875668929@twibright.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Mikulas Patocka , Bartlomiej Zolnierkiewicz , Dave Airlie , Bernie Thompson , Ladislav Michl Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org spin_lock_irqsave and spin_unlock_irqrestore is inteded to be called from a context where it is unknown if interrupts are enabled or disabled (such as interrupt handlers). From a process context, we should call spin_lock_irq and spin_unlock_irq, that avoids the costly pushf and popf instructions. Signed-off-by: Mikulas Patocka --- drivers/gpu/drm/udl/udl_main.c | 10 ++++------ drivers/gpu/drm/udl/udl_modeset.c | 5 ++--- 2 files changed, 6 insertions(+), 9 deletions(-) Index: linux-4.16.12/drivers/gpu/drm/udl/udl_main.c =================================--- linux-4.16.12.orig/drivers/gpu/drm/udl/udl_main.c 2018-05-31 11:17:01.000000000 +0200 +++ linux-4.16.12/drivers/gpu/drm/udl/udl_main.c 2018-05-31 11:17:01.000000000 +0200 @@ -170,7 +170,6 @@ static void udl_free_urb_list(struct drm struct list_head *node; struct urb_node *unode; struct urb *urb; - unsigned long flags; DRM_DEBUG("Waiting for completes and freeing all render urbs\n"); @@ -178,12 +177,12 @@ static void udl_free_urb_list(struct drm while (count--) { down(&udl->urbs.limit_sem); - spin_lock_irqsave(&udl->urbs.lock, flags); + spin_lock_irq(&udl->urbs.lock); node = udl->urbs.list.next; /* have reserved one with sem */ list_del_init(node); - spin_unlock_irqrestore(&udl->urbs.lock, flags); + spin_unlock_irq(&udl->urbs.lock); unode = list_entry(node, struct urb_node, entry); urb = unode->urb; @@ -268,7 +267,6 @@ struct urb *udl_get_urb(struct drm_devic struct list_head *entry; struct urb_node *unode; struct urb *urb = NULL; - unsigned long flags; /* Wait for an in-flight buffer to complete and get re-queued */ ret = down_timeout(&udl->urbs.limit_sem, GET_URB_TIMEOUT); @@ -279,14 +277,14 @@ struct urb *udl_get_urb(struct drm_devic goto error; } - spin_lock_irqsave(&udl->urbs.lock, flags); + spin_lock_irq(&udl->urbs.lock); BUG_ON(list_empty(&udl->urbs.list)); /* reserved one with limit_sem */ entry = udl->urbs.list.next; list_del_init(entry); udl->urbs.available--; - spin_unlock_irqrestore(&udl->urbs.lock, flags); + spin_unlock_irq(&udl->urbs.lock); unode = list_entry(entry, struct urb_node, entry); urb = unode->urb; Index: linux-4.16.12/drivers/gpu/drm/udl/udl_modeset.c =================================--- linux-4.16.12.orig/drivers/gpu/drm/udl/udl_modeset.c 2018-05-31 11:17:01.000000000 +0200 +++ linux-4.16.12/drivers/gpu/drm/udl/udl_modeset.c 2018-05-31 11:17:01.000000000 +0200 @@ -366,7 +366,6 @@ static int udl_crtc_page_flip(struct drm { struct udl_framebuffer *ufb = to_udl_fb(fb); struct drm_device *dev = crtc->dev; - unsigned long flags; struct drm_framebuffer *old_fb = crtc->primary->fb; if (old_fb) { @@ -377,10 +376,10 @@ static int udl_crtc_page_flip(struct drm udl_handle_damage(ufb, 0, 0, fb->width, fb->height); - spin_lock_irqsave(&dev->event_lock, flags); + spin_lock_irq(&dev->event_lock); if (event) drm_crtc_send_vblank_event(crtc, event); - spin_unlock_irqrestore(&dev->event_lock, flags); + spin_unlock_irq(&dev->event_lock); crtc->primary->fb = fb; return 0; From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mikulas Patocka Subject: [PATCH 09/21] udl-kms: use spin_lock_irq instead of spin_lock_irqsave Date: Sun, 03 Jun 2018 16:41:02 +0200 Message-ID: <20180603144222.335724006@twibright.com> References: <20180603144053.875668929@twibright.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from leontynka.twibright.com (109-183-129-149.tmcz.cz [109.183.129.149]) by gabe.freedesktop.org (Postfix) with ESMTPS id 20C796E285 for ; Sun, 3 Jun 2018 15:19:16 +0000 (UTC) Content-Disposition: inline; filename=udlkms-spin-lock-irq.patch List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mikulas Patocka , Bartlomiej Zolnierkiewicz , Dave Airlie , Bernie Thompson , Ladislav Michl Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org c3Bpbl9sb2NrX2lycXNhdmUgYW5kIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUgaXMgaW50ZWRlZCB0 byBiZSBjYWxsZWQgZnJvbQphIGNvbnRleHQgd2hlcmUgaXQgaXMgdW5rbm93biBpZiBpbnRlcnJ1 cHRzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIChzdWNoCmFzIGludGVycnVwdCBoYW5kbGVycyku IEZyb20gYSBwcm9jZXNzIGNvbnRleHQsIHdlIHNob3VsZCBjYWxsCnNwaW5fbG9ja19pcnEgYW5k IHNwaW5fdW5sb2NrX2lycSwgdGhhdCBhdm9pZHMgdGhlIGNvc3RseSBwdXNoZiBhbmQgcG9wZgpp bnN0cnVjdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBNaWt1bGFzIFBhdG9ja2EgPG1wYXRvY2thQHJl ZGhhdC5jb20+CgotLS0KIGRyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21haW4uYyAgICB8ICAgMTAg KysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbW9kZXNldC5jIHwgICAgNSArKy0t LQogMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpJbmRl eDogbGludXgtNC4xNi4xMi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tYWluLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gbGludXgtNC4xNi4xMi5vcmlnL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21haW4uYwky MDE4LTA1LTMxIDExOjE3OjAxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtNC4xNi4xMi9kcml2 ZXJzL2dwdS9kcm0vdWRsL3VkbF9tYWluLmMJMjAxOC0wNS0zMSAxMToxNzowMS4wMDAwMDAwMDAg KzAyMDAKQEAgLTE3MCw3ICsxNzAsNiBAQCBzdGF0aWMgdm9pZCB1ZGxfZnJlZV91cmJfbGlzdChz dHJ1Y3QgZHJtCiAJc3RydWN0IGxpc3RfaGVhZCAqbm9kZTsKIAlzdHJ1Y3QgdXJiX25vZGUgKnVu b2RlOwogCXN0cnVjdCB1cmIgKnVyYjsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJRFJNX0RF QlVHKCJXYWl0aW5nIGZvciBjb21wbGV0ZXMgYW5kIGZyZWVpbmcgYWxsIHJlbmRlciB1cmJzXG4i KTsKIApAQCAtMTc4LDEyICsxNzcsMTIgQEAgc3RhdGljIHZvaWQgdWRsX2ZyZWVfdXJiX2xpc3Qo c3RydWN0IGRybQogCXdoaWxlIChjb3VudC0tKSB7CiAJCWRvd24oJnVkbC0+dXJicy5saW1pdF9z ZW0pOwogCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZ1ZGwtPnVyYnMubG9jaywgZmxhZ3MpOworCQlz cGluX2xvY2tfaXJxKCZ1ZGwtPnVyYnMubG9jayk7CiAKIAkJbm9kZSA9IHVkbC0+dXJicy5saXN0 Lm5leHQ7IC8qIGhhdmUgcmVzZXJ2ZWQgb25lIHdpdGggc2VtICovCiAJCWxpc3RfZGVsX2luaXQo bm9kZSk7CiAKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWRsLT51cmJzLmxvY2ssIGZsYWdz KTsKKwkJc3Bpbl91bmxvY2tfaXJxKCZ1ZGwtPnVyYnMubG9jayk7CiAKIAkJdW5vZGUgPSBsaXN0 X2VudHJ5KG5vZGUsIHN0cnVjdCB1cmJfbm9kZSwgZW50cnkpOwogCQl1cmIgPSB1bm9kZS0+dXJi OwpAQCAtMjY4LDcgKzI2Nyw2IEBAIHN0cnVjdCB1cmIgKnVkbF9nZXRfdXJiKHN0cnVjdCBkcm1f ZGV2aWMKIAlzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeTsKIAlzdHJ1Y3QgdXJiX25vZGUgKnVub2Rl OwogCXN0cnVjdCB1cmIgKnVyYiA9IE5VTEw7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCS8q IFdhaXQgZm9yIGFuIGluLWZsaWdodCBidWZmZXIgdG8gY29tcGxldGUgYW5kIGdldCByZS1xdWV1 ZWQgKi8KIAlyZXQgPSBkb3duX3RpbWVvdXQoJnVkbC0+dXJicy5saW1pdF9zZW0sIEdFVF9VUkJf VElNRU9VVCk7CkBAIC0yNzksMTQgKzI3NywxNCBAQCBzdHJ1Y3QgdXJiICp1ZGxfZ2V0X3VyYihz dHJ1Y3QgZHJtX2RldmljCiAJCWdvdG8gZXJyb3I7CiAJfQogCi0Jc3Bpbl9sb2NrX2lycXNhdmUo JnVkbC0+dXJicy5sb2NrLCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycSgmdWRsLT51cmJzLmxvY2sp OwogCiAJQlVHX09OKGxpc3RfZW1wdHkoJnVkbC0+dXJicy5saXN0KSk7IC8qIHJlc2VydmVkIG9u ZSB3aXRoIGxpbWl0X3NlbSAqLwogCWVudHJ5ID0gdWRsLT51cmJzLmxpc3QubmV4dDsKIAlsaXN0 X2RlbF9pbml0KGVudHJ5KTsKIAl1ZGwtPnVyYnMuYXZhaWxhYmxlLS07CiAKLQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZ1ZGwtPnVyYnMubG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycSgm dWRsLT51cmJzLmxvY2spOwogCiAJdW5vZGUgPSBsaXN0X2VudHJ5KGVudHJ5LCBzdHJ1Y3QgdXJi X25vZGUsIGVudHJ5KTsKIAl1cmIgPSB1bm9kZS0+dXJiOwpJbmRleDogbGludXgtNC4xNi4xMi9k cml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tb2Rlc2V0LmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgtNC4x Ni4xMi5vcmlnL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVzZXQuYwkyMDE4LTA1LTMxIDEx OjE3OjAxLjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtNC4xNi4xMi9kcml2ZXJzL2dwdS9kcm0v dWRsL3VkbF9tb2Rlc2V0LmMJMjAxOC0wNS0zMSAxMToxNzowMS4wMDAwMDAwMDAgKzAyMDAKQEAg LTM2Niw3ICszNjYsNiBAQCBzdGF0aWMgaW50IHVkbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJt CiB7CiAJc3RydWN0IHVkbF9mcmFtZWJ1ZmZlciAqdWZiID0gdG9fdWRsX2ZiKGZiKTsKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAK IAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIgPSBjcnRjLT5wcmltYXJ5LT5mYjsKIAlp ZiAob2xkX2ZiKSB7CkBAIC0zNzcsMTAgKzM3NiwxMCBAQCBzdGF0aWMgaW50IHVkbF9jcnRjX3Bh Z2VfZmxpcChzdHJ1Y3QgZHJtCiAKIAl1ZGxfaGFuZGxlX2RhbWFnZSh1ZmIsIDAsIDAsIGZiLT53 aWR0aCwgZmItPmhlaWdodCk7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9sb2Nr LCBmbGFncyk7CisJc3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKIAlpZiAoZXZlbnQp CiAJCWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIGV2ZW50KTsKLQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKKwlzcGluX3VubG9ja19pcnEo JmRldi0+ZXZlbnRfbG9jayk7CiAJY3J0Yy0+cHJpbWFyeS0+ZmIgPSBmYjsKIAogCXJldHVybiAw OwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==