Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751100AbdCQKwv (ORCPT ); Fri, 17 Mar 2017 06:52:51 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:44688 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750899AbdCQKwu (ORCPT ); Fri, 17 Mar 2017 06:52:50 -0400 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_cf12d9630a516056c6cbe349018d0386" Date: Fri, 17 Mar 2017 03:51:19 -0700 From: Sodagudi Prasad To: Thomas Gleixner Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, james.morse@arm.com, will.deacon@arm.com, catalin.marinas@arm.com Subject: Re: Schedule affinity_notify work while migrating IRQs during hot plug In-Reply-To: References: <05102c455476941d37904f8c6f387452@codeaurora.org> <36fe90bcca0a9c6283c4012412ed2924@codeaurora.org> Message-ID: <559ce4c1fef10c45eab12f65c4e0f0d9@codeaurora.org> User-Agent: Roundcube Webmail/1.2.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6843 Lines: 127 --=_cf12d9630a516056c6cbe349018d0386 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2017-03-13 13:19, Thomas Gleixner wrote: > On Mon, 13 Mar 2017, Sodagudi Prasad wrote: >> On 2017-02-27 09:21, Thomas Gleixner wrote: >> > On Mon, 27 Feb 2017, Sodagudi Prasad wrote: >> > > So I am thinking that, adding following sched_work() would notify clients. >> > >> > And break the world and some more. >> > >> > > diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c >> > > index 6b66959..5e4766b 100644 >> > > --- a/kernel/irq/manage.c >> > > +++ b/kernel/irq/manage.c >> > > @@ -207,6 +207,7 @@ int irq_do_set_affinity(struct irq_data *data, const >> > > struct cpumask *mask, >> > > case IRQ_SET_MASK_OK_DONE: >> > > cpumask_copy(desc->irq_common_data.affinity, mask); >> > > case IRQ_SET_MASK_OK_NOCOPY: >> > > + schedule_work(&desc->affinity_notify->work); >> > > irq_set_thread_affinity(desc); >> > > ret = 0; >> > >> > You cannot do that unconditionally and just slap that schedule_work() call >> > into the code. Aside of that schedule_work() would be invoked twice for all >> > calls which come via irq_set_affinity_locked() .... >> Hi Tglx, >> >> Yes. I agree with you, schedule_work() gets invoked twice with >> previous >> change. >> >> How about calling irq_set_notify_locked() instead of >> irq_do_set_notify()? > > Is this a quiz? > > Can you actually see the difference between these functions? There is a > damned good reason WHY this calls irq_do_set_affinity(). Other option is that, adding an argument to irq_do_set_affinity() and queue work to notify when that new parameter set. I have attached patch for the same. I tested this change on arm64 bit platform and observed that clients drivers are getting notified during cpu hot plug. > Thanks, > > tglx -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, Linux Foundation Collaborative Project --=_cf12d9630a516056c6cbe349018d0386 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-genirq-Notify-clients-whenever-there-is-change-in-af.patch Content-Disposition: attachment; filename=0001-genirq-Notify-clients-whenever-there-is-change-in-af.patch; size=3321 RnJvbSA1NGI4ZDUxNjQxMjZmYmRmMTRkMWE5NTg2MzQyYjk3MmE2ZWI1NTM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQcmFzYWQgU29kYWd1ZGkgPHBzb2RhZ3VkQGNvZGVhdXJvcmEu b3JnPgpEYXRlOiBUaHUsIDE2IE1hciAyMDE3IDIzOjQ0OjQ0IC0wNzAwClN1YmplY3Q6IFtQQVRD SF0gZ2VuaXJxOiBOb3RpZnkgY2xpZW50cyB3aGVuZXZlciB0aGVyZSBpcyBjaGFuZ2UgaW4gYWZm aW5pdHkKCkR1cmluZyB0aGUgY3B1IGhvdHBsdWcsIGlycSBhcmUgZ2V0dGluZyBtaWdyYXRlZCBm cm9tCmhvdHBsdWdnaW5nIGNvcmUgYnV0IG5vdCBnZXR0aW5nIG5vdGl0ZmllZCB0byBjbGllbnQK ZHJpdmVycy4gU28gYWRkIHBhcmFtZXRlciB0byBpcnFfZG9fc2V0X2FmZmluaXR5KCksCnRvIGNo ZWNrIGFuZCBub3RpZnkgY2xpZW50IGRyaXZlcnMgZHVyaW5nIHRoZSBjcHUgaG90cGx1Zy4KClNp Z25lZC1vZmYtYnk6IFByYXNhZCBTb2RhZ3VkaSA8cHNvZGFndWRAY29kZWF1cm9yYS5vcmc+Ci0t LQoga2VybmVsL2lycS9jcHVob3RwbHVnLmMgfCAyICstCiBrZXJuZWwvaXJxL2ludGVybmFscy5o ICB8IDIgKy0KIGtlcm5lbC9pcnEvbWFuYWdlLmMgICAgIHwgOSArKysrKystLS0KIDMgZmlsZXMg Y2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2tl cm5lbC9pcnEvY3B1aG90cGx1Zy5jIGIva2VybmVsL2lycS9jcHVob3RwbHVnLmMKaW5kZXggMDEx ZjhjNC4uZTI5M2Q5YiAxMDA2NDQKLS0tIGEva2VybmVsL2lycS9jcHVob3RwbHVnLmMKKysrIGIv a2VybmVsL2lycS9jcHVob3RwbHVnLmMKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGJvb2wgbWln cmF0ZV9vbmVfaXJxKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykKIAlpZiAoIWMtPmlycV9zZXRfYWZm aW5pdHkpIHsKIAkJcHJfZGVidWcoIklSUSV1OiB1bmFibGUgdG8gc2V0IGFmZmluaXR5XG4iLCBk LT5pcnEpOwogCX0gZWxzZSB7Ci0JCWludCByID0gaXJxX2RvX3NldF9hZmZpbml0eShkLCBhZmZp bml0eSwgZmFsc2UpOworCQlpbnQgciA9IGlycV9kb19zZXRfYWZmaW5pdHkoZCwgYWZmaW5pdHks IGZhbHNlLCB0cnVlKTsKIAkJaWYgKHIpCiAJCQlwcl93YXJuX3JhdGVsaW1pdGVkKCJJUlEldTog c2V0IGFmZmluaXR5IGZhaWxlZCglZCkuXG4iLAogCQkJCQkgICAgZC0+aXJxLCByKTsKZGlmZiAt LWdpdCBhL2tlcm5lbC9pcnEvaW50ZXJuYWxzLmggYi9rZXJuZWwvaXJxL2ludGVybmFscy5oCmlu ZGV4IGJjMjI2ZTcuLjZhYmRlNDggMTAwNjQ0Ci0tLSBhL2tlcm5lbC9pcnEvaW50ZXJuYWxzLmgK KysrIGIva2VybmVsL2lycS9pbnRlcm5hbHMuaApAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCB1bnJlZ2lzdGVyX2hhbmRsZXJfcHJvYyh1bnNpZ25lZCBpbnQgaXJxLAogZXh0 ZXJuIHZvaWQgaXJxX3NldF90aHJlYWRfYWZmaW5pdHkoc3RydWN0IGlycV9kZXNjICpkZXNjKTsK IAogZXh0ZXJuIGludCBpcnFfZG9fc2V0X2FmZmluaXR5KHN0cnVjdCBpcnFfZGF0YSAqZGF0YSwK LQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqZGVzdCwgYm9vbCBmb3JjZSk7CisJCWNv bnN0IHN0cnVjdCBjcHVtYXNrICpkZXN0LCBib29sIGZvcmNlLCBib29sIG5vdGlmeSk7CiAKIC8q IElubGluZSBmdW5jdGlvbnMgZm9yIHN1cHBvcnQgb2YgaXJxIGNoaXBzIG9uIHNsb3cgYnVzc2Vz ICovCiBzdGF0aWMgaW5saW5lIHZvaWQgY2hpcF9idXNfbG9jayhzdHJ1Y3QgaXJxX2Rlc2MgKmRl c2MpCmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL21hbmFnZS5jIGIva2VybmVsL2lycS9tYW5hZ2Uu YwppbmRleCBhNGFmZTVjLi5hZWY4YTk2IDEwMDY0NAotLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5j CisrKyBiL2tlcm5lbC9pcnEvbWFuYWdlLmMKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgaXJxX21vdmVfcGVuZGluZyhzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpCiAjZW5kaWYK IAogaW50IGlycV9kb19zZXRfYWZmaW5pdHkoc3RydWN0IGlycV9kYXRhICpkYXRhLCBjb25zdCBz dHJ1Y3QgY3B1bWFzayAqbWFzaywKLQkJCWJvb2wgZm9yY2UpCisJCQlib29sIGZvcmNlLCBib29s IG5vdGlmeSkKIHsKIAlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MgPSBpcnFfZGF0YV90b19kZXNjKGRh dGEpOwogCXN0cnVjdCBpcnFfY2hpcCAqY2hpcCA9IGlycV9kYXRhX2dldF9pcnFfY2hpcChkYXRh KTsKQEAgLTIwOSw2ICsyMDksOSBAQCBpbnQgaXJxX2RvX3NldF9hZmZpbml0eShzdHJ1Y3QgaXJx X2RhdGEgKmRhdGEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLAogCWNhc2UgSVJRX1NFVF9N QVNLX09LX0RPTkU6CiAJCWNwdW1hc2tfY29weShkZXNjLT5pcnFfY29tbW9uX2RhdGEuYWZmaW5p dHksIG1hc2spOwogCWNhc2UgSVJRX1NFVF9NQVNLX09LX05PQ09QWToKKwkJaWYgKG5vdGlmeSkK KwkJCXNjaGVkdWxlX3dvcmsoJmRlc2MtPmFmZmluaXR5X25vdGlmeS0+d29yayk7CisKIAkJaXJx X3NldF90aHJlYWRfYWZmaW5pdHkoZGVzYyk7CiAJCXJldCA9IDA7CiAJfQpAQCAtMjI3LDcgKzIz MCw3IEBAIGludCBpcnFfc2V0X2FmZmluaXR5X2xvY2tlZChzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEs IGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLAogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWlmIChp cnFfY2FuX21vdmVfcGNudHh0KGRhdGEpKSB7Ci0JCXJldCA9IGlycV9kb19zZXRfYWZmaW5pdHko ZGF0YSwgbWFzaywgZm9yY2UpOworCQlyZXQgPSBpcnFfZG9fc2V0X2FmZmluaXR5KGRhdGEsIG1h c2ssIGZvcmNlLCBmYWxzZSk7CiAJfSBlbHNlIHsKIAkJaXJxZF9zZXRfbW92ZV9wZW5kaW5nKGRh dGEpOwogCQlpcnFfY29weV9wZW5kaW5nKGRlc2MsIG1hc2spOwpAQCAtMzc1LDcgKzM3OCw3IEBA IHN0YXRpYyBpbnQgc2V0dXBfYWZmaW5pdHkoc3RydWN0IGlycV9kZXNjICpkZXNjLCBzdHJ1Y3Qg Y3B1bWFzayAqbWFzaykKIAkJaWYgKGNwdW1hc2tfaW50ZXJzZWN0cyhtYXNrLCBub2RlbWFzaykp CiAJCQljcHVtYXNrX2FuZChtYXNrLCBtYXNrLCBub2RlbWFzayk7CiAJfQotCWlycV9kb19zZXRf YWZmaW5pdHkoJmRlc2MtPmlycV9kYXRhLCBtYXNrLCBmYWxzZSk7CisJaXJxX2RvX3NldF9hZmZp bml0eSgmZGVzYy0+aXJxX2RhdGEsIG1hc2ssIGZhbHNlLCB0cnVlKTsKIAlyZXR1cm4gMDsKIH0K ICNlbHNlCi0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1i ZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLFxuYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9y YXRpdmUgUHJvamVjdAoK --=_cf12d9630a516056c6cbe349018d0386--