From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mikulas Patocka Date: Sun, 03 Jun 2018 14:41:14 +0000 Subject: [PATCH 21/21] udlfb: use spin_lock_irq instead of spin_lock_irqsave Message-Id: <20180603144226.532332020@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/video/fbdev/udlfb.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) Index: linux-4.17-rc7/drivers/video/fbdev/udlfb.c =================================--- linux-4.17-rc7.orig/drivers/video/fbdev/udlfb.c 2018-06-03 13:17:46.000000000 +0200 +++ linux-4.17-rc7/drivers/video/fbdev/udlfb.c 2018-06-03 13:17:46.000000000 +0200 @@ -1855,18 +1855,17 @@ static void dlfb_free_urb_list(struct dl struct list_head *node; struct urb_node *unode; struct urb *urb; - unsigned long flags; /* keep waiting and freeing, until we've got 'em all */ while (count--) { down(&dlfb->urbs.limit_sem); - spin_lock_irqsave(&dlfb->urbs.lock, flags); + spin_lock_irq(&dlfb->urbs.lock); node = dlfb->urbs.list.next; /* have reserved one with sem */ list_del_init(node); - spin_unlock_irqrestore(&dlfb->urbs.lock, flags); + spin_unlock_irq(&dlfb->urbs.lock); unode = list_entry(node, struct urb_node, entry); urb = unode->urb; @@ -1944,7 +1943,6 @@ static struct urb *dlfb_get_urb(struct d int ret; struct list_head *entry; struct urb_node *unode; - unsigned long flags; /* Wait for an in-flight buffer to complete and get re-queued */ ret = down_timeout(&dlfb->urbs.limit_sem, GET_URB_TIMEOUT); @@ -1956,14 +1954,14 @@ static struct urb *dlfb_get_urb(struct d return NULL; } - spin_lock_irqsave(&dlfb->urbs.lock, flags); + spin_lock_irq(&dlfb->urbs.lock); BUG_ON(list_empty(&dlfb->urbs.list)); /* reserved one with limit_sem */ entry = dlfb->urbs.list.next; list_del_init(entry); dlfb->urbs.available--; - spin_unlock_irqrestore(&dlfb->urbs.lock, flags); + spin_unlock_irq(&dlfb->urbs.lock); unode = list_entry(entry, struct urb_node, entry); return unode->urb; From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mikulas Patocka Subject: [PATCH 21/21] udlfb: use spin_lock_irq instead of spin_lock_irqsave Date: Sun, 03 Jun 2018 16:41:14 +0200 Message-ID: <20180603144226.532332020@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 124CF6E2AE for ; Sun, 3 Jun 2018 15:20:00 +0000 (UTC) Content-Disposition: inline; filename=udl-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+CgotLS0KIGRyaXZlcnMvdmlkZW8vZmJkZXYvdWRsZmIuYyB8ICAgMTAgKysrKy0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCklu ZGV4OiBsaW51eC00LjE3LXJjNy9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3VkbGZiLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gbGludXgtNC4xNy1yYzcub3JpZy9kcml2ZXJzL3ZpZGVvL2ZiZGV2L3VkbGZiLmMJMjAx OC0wNi0wMyAxMzoxNzo0Ni4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTQuMTctcmM3L2RyaXZl cnMvdmlkZW8vZmJkZXYvdWRsZmIuYwkyMDE4LTA2LTAzIDEzOjE3OjQ2LjAwMDAwMDAwMCArMDIw MApAQCAtMTg1NSwxOCArMTg1NSwxNyBAQCBzdGF0aWMgdm9pZCBkbGZiX2ZyZWVfdXJiX2xpc3Qo c3RydWN0IGRsCiAJc3RydWN0IGxpc3RfaGVhZCAqbm9kZTsKIAlzdHJ1Y3QgdXJiX25vZGUgKnVu b2RlOwogCXN0cnVjdCB1cmIgKnVyYjsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJLyoga2Vl cCB3YWl0aW5nIGFuZCBmcmVlaW5nLCB1bnRpbCB3ZSd2ZSBnb3QgJ2VtIGFsbCAqLwogCXdoaWxl IChjb3VudC0tKSB7CiAJCWRvd24oJmRsZmItPnVyYnMubGltaXRfc2VtKTsKIAotCQlzcGluX2xv Y2tfaXJxc2F2ZSgmZGxmYi0+dXJicy5sb2NrLCBmbGFncyk7CisJCXNwaW5fbG9ja19pcnEoJmRs ZmItPnVyYnMubG9jayk7CiAKIAkJbm9kZSA9IGRsZmItPnVyYnMubGlzdC5uZXh0OyAvKiBoYXZl IHJlc2VydmVkIG9uZSB3aXRoIHNlbSAqLwogCQlsaXN0X2RlbF9pbml0KG5vZGUpOwogCi0JCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmRsZmItPnVyYnMubG9jaywgZmxhZ3MpOworCQlzcGluX3Vu bG9ja19pcnEoJmRsZmItPnVyYnMubG9jayk7CiAKIAkJdW5vZGUgPSBsaXN0X2VudHJ5KG5vZGUs IHN0cnVjdCB1cmJfbm9kZSwgZW50cnkpOwogCQl1cmIgPSB1bm9kZS0+dXJiOwpAQCAtMTk0NCw3 ICsxOTQzLDYgQEAgc3RhdGljIHN0cnVjdCB1cmIgKmRsZmJfZ2V0X3VyYihzdHJ1Y3QgZAogCWlu dCByZXQ7CiAJc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7CiAJc3RydWN0IHVyYl9ub2RlICp1bm9k ZTsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJLyogV2FpdCBmb3IgYW4gaW4tZmxpZ2h0IGJ1 ZmZlciB0byBjb21wbGV0ZSBhbmQgZ2V0IHJlLXF1ZXVlZCAqLwogCXJldCA9IGRvd25fdGltZW91 dCgmZGxmYi0+dXJicy5saW1pdF9zZW0sIEdFVF9VUkJfVElNRU9VVCk7CkBAIC0xOTU2LDE0ICsx OTU0LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgdXJiICpkbGZiX2dldF91cmIoc3RydWN0IGQKIAkJcmV0 dXJuIE5VTEw7CiAJfQogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRsZmItPnVyYnMubG9jaywgZmxh Z3MpOworCXNwaW5fbG9ja19pcnEoJmRsZmItPnVyYnMubG9jayk7CiAKIAlCVUdfT04obGlzdF9l bXB0eSgmZGxmYi0+dXJicy5saXN0KSk7IC8qIHJlc2VydmVkIG9uZSB3aXRoIGxpbWl0X3NlbSAq LwogCWVudHJ5ID0gZGxmYi0+dXJicy5saXN0Lm5leHQ7CiAJbGlzdF9kZWxfaW5pdChlbnRyeSk7 CiAJZGxmYi0+dXJicy5hdmFpbGFibGUtLTsKIAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRs ZmItPnVyYnMubG9jaywgZmxhZ3MpOworCXNwaW5fdW5sb2NrX2lycSgmZGxmYi0+dXJicy5sb2Nr KTsKIAogCXVub2RlID0gbGlzdF9lbnRyeShlbnRyeSwgc3RydWN0IHVyYl9ub2RlLCBlbnRyeSk7 CiAJcmV0dXJuIHVub2RlLT51cmI7CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK