From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/5] dmaengine: bcm2835: Fix interrupt race on RT From: Vinod Koul Message-Id: <20190107070003.GZ13372@vkoul-mobl.Dlink> Date: Mon, 7 Jan 2019 12:30:03 +0530 To: Lukas Wunner Cc: Eric Anholt , Stefan Wahren , Frank Pavlic , Martin Sperl , Florian Meier , dmaengine@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, Tiejun Chen , linux-rt-users@vger.kernel.org List-ID: SGkgTHVrYXMsCgpPbiAyMi0xMi0xOCwgMDg6MjgsIEx1a2FzIFd1bm5lciB3cm90ZToKPiBJZiBJ UlEgaGFuZGxlcnMgYXJlIHRocmVhZGVkIChlaXRoZXIgYmVjYXVzZSBDT05GSUdfUFJFRU1QVF9S VF9CQVNFIGlzCj4gZW5hYmxlZCBvciAidGhyZWFkaXJxcyIgd2FzIHBhc3NlZCBvbiB0aGUgY29t bWFuZCBsaW5lKSBhbmQgaWYgc3lzdGVtCj4gbG9hZCBpcyBzdWZmaWNpZW50bHkgaGlnaCB0aGF0 IHdha2V1cCBsYXRlbmN5IG9mIElSUSB0aHJlYWRzIGRlZ3JhZGVzLAo+IFNQSSBETUEgdHJhbnNh Y3Rpb25zIG9uIHRoZSBCQ00yODM1IG9jY2FzaW9uYWxseSBicmVhayBsaWtlIHRoaXM6Cj4gCj4g a3M4ODUxIHNwaTAuMDogU1BJIHRyYW5zZmVyIHRpbWVkIG91dAo+IGJjbTI4MzUtZG1hIDNmMDA3 MDAwLmRtYTogRE1BIHRyYW5zZmVyIGNvdWxkIG5vdCBiZSB0ZXJtaW5hdGVkCj4ga3M4ODUxIHNw aTAuMCBldGgyOiBrczg4NTFfcmRmaWZvOiBzcGlfc3luYygpIGZhaWxlZAo+IAo+IFRoZSByb290 IGNhdXNlIGlzIGFuIGFzc3VtcHRpb24gbWFkZSBieSB0aGUgRE1BIGRyaXZlciB3aGljaCBpcwo+ IGRvY3VtZW50ZWQgaW4gYSBjb2RlIGNvbW1lbnQgaW4gYmNtMjgzNV9kbWFfdGVybWluYXRlX2Fs bCgpOgo+IAo+IC8qCj4gICogU3RvcCBETUEgYWN0aXZpdHk6IHdlIGFzc3VtZSB0aGUgY2FsbGJh Y2sgd2lsbCBub3QgYmUgY2FsbGVkCj4gICogYWZ0ZXIgYmNtX2RtYV9hYm9ydCgpIHJldHVybnMg KGV2ZW4gaWYgaXQgZG9lcywgaXQgd2lsbCBzZWUKPiAgKiBjLT5kZXNjIGlzIE5VTEwgYW5kIGV4 aXQuKQo+ICAqLwo+IAo+IFRoYXQgYXNzdW1wdGlvbiBmYWxscyBhcGFydCBpZiB0aGUgSVJRIGhh bmRsZXIgYmNtMjgzNV9kbWFfY2FsbGJhY2soKSBpcwo+IHRocmVhZGVkOiAgQSBjbGllbnQgbWF5 IHRlcm1pbmF0ZSBhIGRlc2NyaXB0b3IgYW5kIGlzc3VlIGEgbmV3IG9uZQo+IGJlZm9yZSB0aGUg SVJRIGhhbmRsZXIgaGFkIGEgY2hhbmNlIHRvIHJ1bi4gIEluIGZhY3QgdGhlIElSUSBoYW5kbGVy IG1heQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eCj4g bWlzcyBhbiAqYXJiaXRyYXJ5KiBudW1iZXIgb2YgZGVzY3JpcHRvcnMuICBUaGUgcmVzdWx0IGlz IHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Xl5eXl4KdGhpcyBoYXMgZG91YmxlIHNwYWNlcyBpbiBmZXcgcGxhY2VzIHBscyBmaXgKCj4gcmFj ZSBjb25kaXRpb246Cj4gCj4gMS4gQSBkZXNjcmlwdG9yIGZpbmlzaGVzLCBpdHMgaW50ZXJydXB0 IGlzIGRlZmVycmVkIHRvIHRoZSBJUlEgdGhyZWFkLgo+IDIuIEEgY2xpZW50IGNhbGxzIGRtYV90 ZXJtaW5hdGVfYXN5bmMoKSB3aGljaCBzZXRzIGNoYW5uZWwtPmRlc2MgPSBOVUxMLgo+IDMuIFRo ZSBjbGllbnQgaXNzdWVzIGEgbmV3IGRlc2NyaXB0b3IuICBCZWNhdXNlIGNoYW5uZWwtPmRlc2Mg aXMgTlVMTCwKPiAgICBiY20yODM1X2RtYV9pc3N1ZV9wZW5kaW5nKCkgaW1tZWRpYXRlbHkgc3Rh cnRzIHRoZSBkZXNjcmlwdG9yLgo+IDQuIEZpbmFsbHkgdGhlIElSUSB0aHJlYWQgcnVucyBhbmQg d3JpdGVzIEJDTTI4MzVfRE1BX0lOVCB0byB0aGUgQ1MKPiAgICByZWdpc3RlciB0byBhY2tub3ds ZWRnZSB0aGUgaW50ZXJydXB0LiAgVGhpcyBjbGVhcnMgdGhlIEFDVElWRSBmbGFnLAo+ICAgIHNv IHRoZSBuZXdseSBpc3N1ZWQgZGVzY3JpcHRvciBpcyBwYXVzZWQgaW4gdGhlIG1pZGRsZSBvZiB0 aGUKPiAgICB0cmFuc2FjdGlvbi4gIEJlY2F1c2UgY2hhbm5lbC0+ZGVzYyBpcyBub3QgTlVMTCwg dGhlIElSUSB0aHJlYWQKPiAgICBmaW5hbGl6ZXMgdGhlIGRlc2NyaXB0b3IgYW5kIHRyaWVzIHRv IHN0YXJ0IHRoZSBuZXh0IG9uZS4KPiAKPiBJIHNlZSB0d28gcG9zc2libGUgc29sdXRpb25zOiAg VGhlIGZpcnN0IGlzIHRvIGNhbGwgc3luY2hyb25pemVfaXJxKCkKPiBpbiBiY20yODM1X2RtYV9p c3N1ZV9wZW5kaW5nKCkgdG8gd2FpdCB1bnRpbCB0aGUgSVJRIHRocmVhZCBoYXMKPiBmaW5pc2hl ZCBiZWZvcmUgaXNzdWluZyBhIG5ldyBkZXNjcmlwdG9yLiAgVGhlIGRvd25zaWRlIG9mIHRoaXMg YXBwcm9hY2gKPiBpcyB1bm5lY2Vzc2FyeSBsYXRlbmN5IGlmIGNsaWVudHMgZGVzaXJlIHJhcGlk bHkgdGVybWluYXRpbmcgYW5kCj4gcmUtaXNzdWluZyBkZXNjcmlwdG9ycyBhbmQgZG9uJ3QgaGF2 ZSBhbnkgdXNlIGZvciBhbiBJUlEgY2FsbGJhY2suCj4gKFRoZSBTUEkgVFggRE1BIGNoYW5uZWwg aXMgYSBjYXNlIGluIHBvaW50LikKPiAKPiBBIGJldHRlciBhbHRlcm5hdGl2ZSBpcyB0byBtYWtl IHRoZSBJUlEgdGhyZWFkIHJlY29nbml6ZSB0aGF0IGl0IGhhcwo+IG1pc3NlZCBkZXNjcmlwdG9y cyBhbmQgYXZvaWQgZmluYWxpemluZyB0aGUgbmV3bHkgaXNzdWVkIGRlc2NyaXB0b3IuCj4gVGhl cmVmb3JlLCBvbmx5IGZpbmFsaXplIGEgZGVzY3JpcHRvciBpZiB0aGUgRU5EIGZsYWcgaXMgc2V0 IGluIHRoZSBDUwo+IHJlZ2lzdGVyLiAgQ2xlYXIgdGhlIGZsYWcgd2hlbiBzdGFydGluZyBhIG5l dyBkZXNjcmlwdG9yLiAgUGVyZm9ybSBib3RoCj4gb3BlcmF0aW9ucyB1bmRlciB0aGUgdmNoYW4g bG9jay4gIFRoYXQgd2F5LCB0aGVyZSBpcyBwcmFjdGljYWxseSBubwo+IGltcGFjdCBvbiBsYXRl bmN5IGFuZCB0aHJvdWdocHV0IGlmIHRoZSBjbGllbnQgZG9lc24ndCBjYXJlIGZvciB0aGUKPiBp bnRlcnJ1cHQ6ICBPbmx5IG1pbmltYWwgYWRkaXRpb25hbCBvdmVyaGVhZCBpcyBpbnRyb2R1Y2Vk IGFzIG9uZQo+IGZ1cnRoZXIgTU1JTyByZWFkIGlzIG5lY2Vzc2FyeSBwZXIgaW50ZXJydXB0Lgo+ IAo+IFRoYXQgTU1JTyByZWFkIGlzIG5lZWRlZCB0byB3cml0ZSB0aGUgc2FtZSB2YWx1ZSB0byB0 aGUgQ1MgcmVnaXN0ZXIgdGhhdAo+IGl0IGN1cnJlbnRseSBoYXMsIHRoZXJlYnkgcHJlc2Vydmlu ZyB0aGUgQUNUSVZFIGZsYWcgd2hpbGUgY2xlYXJpbmcgdGhlCj4gSU5UIGFuZCBFTkQgZmxhZ3Mu ICBOb3RlIHRoYXQgdGhlIHRyYW5zYWN0aW9uIG1heSBmaW5pc2ggYmV0d2VlbiByZWFkaW5nCj4g YW5kIHdyaXRpbmcgdGhlIENTIHJlZ2lzdGVyLCBhbmQgaW4gdGhhdCBjYXNlIHRoZSB3cml0ZSBj aGFuZ2VzIHRoZQo+IEFDVElWRSBmbGFnIGZyb20gMCB0byAxLiAgQnV0IHRoYXQncyBoYXJtbGVz cywgdGhlIGNoaXAgd2lsbCBub3RpY2UgdGhhdAo+IE5FWFRDT05CSyBpcyAwIGFuZCBzZWxmLWNs ZWFyIHRoZSBBQ1RJVkUgZmxhZyBhZ2Fpbi4KPiAKPiBGaXhlczogOTYyODZiNTc2NjkwICgiZG1h ZW5naW5lOiBBZGQgc3VwcG9ydCBmb3IgQkNNMjgzNSIpCj4gU2lnbmVkLW9mZi1ieTogTHVrYXMg V3VubmVyIDxsdWthc0B3dW5uZXIuZGU+Cj4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcgIyB2 My4xNCsKPiBDYzogRnJhbmsgUGF2bGljIDxmLnBhdmxpY0BrdW5idXMuZGU+Cj4gQ2M6IE1hcnRp biBTcGVybCA8a2VybmVsQG1hcnRpbi5zcGVybC5vcmc+Cj4gQ2M6IEZsb3JpYW4gTWVpZXIgPGZs b3JpYW4ubWVpZXJAa29hbG8uZGU+Cj4gLS0tCj4gIGRyaXZlcnMvZG1hL2JjbTI4MzUtZG1hLmMg fCAyMCArKysrKysrKysrKystLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9u cygrKSwgOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvYmNtMjgz NS1kbWEuYyBiL2RyaXZlcnMvZG1hL2JjbTI4MzUtZG1hLmMKPiBpbmRleCAxYTQ0YzgwODZkNzcu LmU5NGY0MWM1Njk3NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2RtYS9iY20yODM1LWRtYS5jCj4g KysrIGIvZHJpdmVycy9kbWEvYmNtMjgzNS1kbWEuYwo+IEBAIC00NTYsNyArNDU2LDggQEAgc3Rh dGljIHZvaWQgYmNtMjgzNV9kbWFfc3RhcnRfZGVzYyhzdHJ1Y3QgYmNtMjgzNV9jaGFuICpjKQo+ ICAJYy0+ZGVzYyA9IGQgPSB0b19iY20yODM1X2RtYV9kZXNjKCZ2ZC0+dHgpOwo+ICAKPiAgCXdy aXRlbChkLT5jYl9saXN0WzBdLnBhZGRyLCBjLT5jaGFuX2Jhc2UgKyBCQ00yODM1X0RNQV9BRERS KTsKPiAtCXdyaXRlbChCQ00yODM1X0RNQV9BQ1RJVkUsIGMtPmNoYW5fYmFzZSArIEJDTTI4MzVf RE1BX0NTKTsKPiArCXdyaXRlbChCQ00yODM1X0RNQV9BQ1RJVkUgfCBCQ00yODM1X0RNQV9FTkQs Cj4gKwkgICAgICAgYy0+Y2hhbl9iYXNlICsgQkNNMjgzNV9ETUFfQ1MpOwoKY2FuIHlvdSBleHBs YWluIHRoaXMgY2hhbmdlIHBsZWFzZT8gc28gZXZlcnkgZGVzY3JpcHRvciBpcyB3cml0dGVuIHdp dGgKQkNNMjgzNV9ETUFfRU5EPwoKCj4gIH0KPiAgCj4gIHN0YXRpYyBpcnFyZXR1cm5fdCBiY20y ODM1X2RtYV9jYWxsYmFjayhpbnQgaXJxLCB2b2lkICpkYXRhKQo+IEBAIC00NjQsNiArNDY1LDcg QEAgc3RhdGljIGlycXJldHVybl90IGJjbTI4MzVfZG1hX2NhbGxiYWNrKGludCBpcnEsIHZvaWQg KmRhdGEpCj4gIAlzdHJ1Y3QgYmNtMjgzNV9jaGFuICpjID0gZGF0YTsKPiAgCXN0cnVjdCBiY20y ODM1X2Rlc2MgKmQ7Cj4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsJdTMyIGNzOwo+ICAKPiAg CS8qIGNoZWNrIHRoZSBzaGFyZWQgaW50ZXJydXB0ICovCj4gIAlpZiAoYy0+aXJxX2ZsYWdzICYg SVJRRl9TSEFSRUQpIHsKPiBAQCAtNDc3LDExICs0NzksMTcgQEAgc3RhdGljIGlycXJldHVybl90 IGJjbTI4MzVfZG1hX2NhbGxiYWNrKGludCBpcnEsIHZvaWQgKmRhdGEpCj4gIAlzcGluX2xvY2tf aXJxc2F2ZSgmYy0+dmMubG9jaywgZmxhZ3MpOwo+ICAKPiAgCS8qIEFja25vd2xlZGdlIGludGVy cnVwdCAqLwo+IC0Jd3JpdGVsKEJDTTI4MzVfRE1BX0lOVCwgYy0+Y2hhbl9iYXNlICsgQkNNMjgz NV9ETUFfQ1MpOwo+ICsJY3MgPSByZWFkbChjLT5jaGFuX2Jhc2UgKyBCQ00yODM1X0RNQV9DUyk7 Cj4gKwl3cml0ZWwoY3MsIGMtPmNoYW5fYmFzZSArIEJDTTI4MzVfRE1BX0NTKTsKClNvIGlkZWEg aXMgdG8gYWNrIHRoZSBpbnRlcnJ1cHRzIGFzc2VydGVkIHdoaWxlIHRoaXMgaXMgcnVubmluZywg cmlnaHQ/CgoKPiAgCj4gIAlkID0gYy0+ZGVzYzsKPiAgCj4gLQlpZiAoZCkgewo+ICsJLyoKPiAr CSAqIElmIHRoaXMgSVJRIGhhbmRsZXIgaXMgdGhyZWFkZWQsIGNsaWVudHMgbWF5IHRlcm1pbmF0 ZSBkZXNjcmlwdG9ycwo+ICsJICogYW5kIGlzc3VlIG5ldyBvbmVzIGJlZm9yZSB0aGUgSVJRIGhh bmRsZXIgcnVucy4gIEF2b2lkIGZpbmFsaXppbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eCnRoaXMgYXMgd2VsbC4uCgoKPiArCSAq IHN1Y2ggYSBuZXdseSBpc3N1ZWQgZGVzY3JpcHRvciBieSBjaGVja2luZyB0aGUgRU5EIGZsYWcu Cj4gKwkgKi8KPiArCWlmIChkICYmIGNzICYgQkNNMjgzNV9ETUFfRU5EKSB7Cj4gIAkJaWYgKGQt PmN5Y2xpYykgewo+ICAJCQkvKiBjYWxsIHRoZSBjeWNsaWMgY2FsbGJhY2sgKi8KPiAgCQkJdmNo YW5fY3ljbGljX2NhbGxiYWNrKCZkLT52ZCk7Cj4gQEAgLTc4OSwxMSArNzk3LDcgQEAgc3RhdGlj IGludCBiY20yODM1X2RtYV90ZXJtaW5hdGVfYWxsKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKPiAg CWxpc3RfZGVsX2luaXQoJmMtPm5vZGUpOwo+ICAJc3Bpbl91bmxvY2soJmQtPmxvY2spOwo+ICAK PiAtCS8qCj4gLQkgKiBTdG9wIERNQSBhY3Rpdml0eTogd2UgYXNzdW1lIHRoZSBjYWxsYmFjayB3 aWxsIG5vdCBiZSBjYWxsZWQKPiAtCSAqIGFmdGVyIGJjbV9kbWFfYWJvcnQoKSByZXR1cm5zIChl dmVuIGlmIGl0IGRvZXMsIGl0IHdpbGwgc2VlCj4gLQkgKiBjLT5kZXNjIGlzIE5VTEwgYW5kIGV4 aXQuKQo+IC0JICovCj4gKwkvKiBzdG9wIERNQSBhY3Rpdml0eSAqLwo+ICAJaWYgKGMtPmRlc2Mp IHsKPiAgCQl2Y2hhbl90ZXJtaW5hdGVfdmRlc2MoJmMtPmRlc2MtPnZkKTsKPiAgCQljLT5kZXNj ID0gTlVMTDsKPiAtLSAKPiAyLjE5LjIK