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: edac: thunderx: Replace pci_alloc_msix_exact From: Jan Glauber Message-Id: <20170518091546.GA25620@hc> Date: Thu, 18 May 2017 11:15:46 +0200 To: Sergei Temerkhanov Cc: Borislav Petkov , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Gleixner List-ID: T24gVGh1LCBNYXkgMTgsIDIwMTcgYXQgMDI6NTI6NTRBTSArMDMwMCwgU2VyZ2VpIFRlbWVya2hh bm92IHdyb3RlOgo+IE9uIFdlZCwgTWF5IDE3LCAyMDE3IGF0IDg6MjMgUE0sIEphbiBHbGF1YmVy Cj4gPGphbi5nbGF1YmVyQGNhdml1bW5ldHdvcmtzLmNvbT4gd3JvdGU6Cj4gPiBPbiBXZWQsIE1h eSAxNywgMjAxNyBhdCAwNjozNTowNVBNICswMzAwLCBTZXJnZWkgVGVtZXJraGFub3Ygd3JvdGU6 Cj4gPj4gQ0lMLi4uCj4gPj4KPiA+PiBPbiBUdWUsIE1heSAxNiwgMjAxNyBhdCAxMjo1NCBQTSwg SmFuIEdsYXViZXIgPGpnbGF1YmVyQGNhdml1bS5jb20+IHdyb3RlOgo+ID4+ID4gUmVwbGFjZSB0 aGUgZGVwcmVjYXRlZCBwY2lfYWxsb2NfbXNpeF9leGFjdCgpIHdpdGgKPiA+PiA+IHBjaV9hbGxv Y19pcnFfdmVjdG9ycygpLgo+ID4+ID4KPiA+PiA+IEF2b2lkIHRoZSBjb250YWluZXJfb2YgdXNh Z2UgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyCj4gPj4gPiBieSBzaW1wbHkgcGFzc2luZyB0aGUg cmVxdWlyZWQgc3RydWN0IGFzIGRhdGEgdG8gdGhlIGludGVycnVwdAo+ID4+ID4gaGFuZGxlci4K PiA+PiA+Cj4gPj4gPiBTaWduZWQtb2ZmLWJ5OiBKYW4gR2xhdWJlciA8amdsYXViZXJAY2F2aXVt LmNvbT4KPiA+PiA+IC0tLQo+ID4+ID4gIGRyaXZlcnMvZWRhYy90aHVuZGVyeF9lZGFjLmMgfCA5 MSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+ID4gIDEg ZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKPiA+PiA+Cj4g Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL3RodW5kZXJ4X2VkYWMuYyBiL2RyaXZlcnMv ZWRhYy90aHVuZGVyeF9lZGFjLmMKPiA+PiA+IGluZGV4IDg2ZDU4NWMuLmRhMTI4MDQgMTAwNjQ0 Cj4gPj4gPiAtLS0gYS9kcml2ZXJzL2VkYWMvdGh1bmRlcnhfZWRhYy5jCj4gPj4gPiArKysgYi9k cml2ZXJzL2VkYWMvdGh1bmRlcnhfZWRhYy5jCj4gPj4gPiBAQCAtMTgzLDcgKzE4Myw2IEBAIHN0 cnVjdCBsbWNfZXJyX2N0eCB7Cj4gPj4gPiAgc3RydWN0IHRodW5kZXJ4X2xtYyB7Cj4gPj4gPiAg ICAgICAgIHZvaWQgX19pb21lbSAqcmVnczsKPiA+PiA+ICAgICAgICAgc3RydWN0IHBjaV9kZXYg KnBkZXY7Cj4gPj4gPiAtICAgICAgIHN0cnVjdCBtc2l4X2VudHJ5IG1zaXhfZW50Owo+ID4+ID4K PiA+PiA+ICAgICAgICAgYXRvbWljX3QgZWNjX2ludDsKPiA+PiA+Cj4gPj4gPiBAQCAtNzM4LDE4 ICs3MzcsMTcgQEAgc3RhdGljIGludCB0aHVuZGVyeF9sbWNfcHJvYmUoc3RydWN0IHBjaV9kZXYg KnBkZXYsCj4gPj4gPiAgICAgICAgIG1jaS0+c2NydWJfbW9kZSA9IFNDUlVCX05PTkU7Cj4gPj4g Pgo+ID4+ID4gICAgICAgICBsbWMtPnBkZXYgPSBwZGV2Owo+ID4+ID4gLSAgICAgICBsbWMtPm1z aXhfZW50LmVudHJ5ID0gMDsKPiA+PiA+Cj4gPj4gPiAgICAgICAgIGxtYy0+cmluZ19oZWFkID0g MDsKPiA+PiA+ICAgICAgICAgbG1jLT5yaW5nX3RhaWwgPSAwOwo+ID4+ID4KPiA+PiA+IC0gICAg ICAgcmV0ID0gcGNpX2VuYWJsZV9tc2l4X2V4YWN0KHBkZXYsICZsbWMtPm1zaXhfZW50LCAxKTsK PiA+PiA+IC0gICAgICAgaWYgKHJldCkgewo+ID4+ID4gKyAgICAgICByZXQgPSBwY2lfYWxsb2Nf aXJxX3ZlY3RvcnMocGRldiwgMSwgMSwgUENJX0lSUV9NU0lYKTsKPiA+PiA+ICsgICAgICAgaWYg KHJldCA8IDApIHsKPiA+PiA+ICAgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJD YW5ub3QgZW5hYmxlIGludGVycnVwdDogJWRcbiIsIHJldCk7Cj4gPj4gPiAgICAgICAgICAgICAg ICAgZ290byBlcnJfZnJlZTsKPiA+PiA+ICAgICAgICAgfQo+ID4+ID4KPiA+PiA+IC0gICAgICAg cmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgmcGRldi0+ZGV2LCBsbWMtPm1zaXhfZW50 LnZlY3RvciwKPiA+PiA+ICsgICAgICAgcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgm cGRldi0+ZGV2LCBwY2lfaXJxX3ZlY3RvcihwZGV2LCAwKSwKPiA+PiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aHVuZGVyeF9sbWNfZXJyX2lzciwKPiA+PiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHVuZGVyeF9sbWNfdGhyZWFk ZWRfaXNyLCAwLAo+ID4+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJbRURBQ10gVGh1bmRlclggTE1DIiwgbWNpKTsKPiA+PiA+IEBAIC0xMDc5LDcgKzEwNzcsNiBA QCBzdHJ1Y3QgdGh1bmRlcnhfb2N4IHsKPiA+PiA+ICAgICAgICAgc3RydWN0IGVkYWNfZGV2aWNl X2N0bF9pbmZvICplZGFjX2RldjsKPiA+PiA+Cj4gPj4gPiAgICAgICAgIHN0cnVjdCBkZW50cnkg KmRlYnVnZnM7Cj4gPj4gPiAtICAgICAgIHN0cnVjdCBtc2l4X2VudHJ5IG1zaXhfZW50W09DWF9J TlRTXTsKPiA+PiA+Cj4gPj4gPiAgICAgICAgIHN0cnVjdCBvY3hfY29tX2Vycl9jdHggY29tX2Vy cl9jdHhbUklOR19FTlRSSUVTXTsKPiA+PiA+ICAgICAgICAgc3RydWN0IG9jeF9saW5rX2Vycl9j dHggbGlua19lcnJfY3R4W1JJTkdfRU5UUklFU107Cj4gPj4gPiBAQCAtMTA5NSwxMiArMTA5Miw5 IEBAIHN0cnVjdCB0aHVuZGVyeF9vY3ggewo+ID4+ID4gICNkZWZpbmUgT0NYX09USEVSX1NJWkUg ICAgICAgICAoNTAgKiBBUlJBWV9TSVpFKG9jeF9jb21fbGlua19lcnJvcnMpKQo+ID4+ID4KPiA+ PiA+ICAvKiBUaGlzIGhhbmRsZXIgaXMgdGhyZWFkZWQgKi8KPiA+PiA+IC1zdGF0aWMgaXJxcmV0 dXJuX3QgdGh1bmRlcnhfb2N4X2NvbV9pc3IoaW50IGlycSwgdm9pZCAqaXJxX2lkKQo+ID4+ID4g K3N0YXRpYyBpcnFyZXR1cm5fdCB0aHVuZGVyeF9vY3hfY29tX2lzcihpbnQgaXJxLCB2b2lkICpk ZXZfaWQpCj4gPj4gPiAgewo+ID4+ID4gLSAgICAgICBzdHJ1Y3QgbXNpeF9lbnRyeSAqbXNpeCA9 IGlycV9pZDsKPiA+PiA+IC0gICAgICAgc3RydWN0IHRodW5kZXJ4X29jeCAqb2N4ID0gY29udGFp bmVyX29mKG1zaXgsIHN0cnVjdCB0aHVuZGVyeF9vY3gsCj4gPj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2l4X2VudFttc2l4LT5lbnRyeV0pOwo+ ID4+ID4gLQo+ID4+ID4gKyAgICAgICBzdHJ1Y3QgdGh1bmRlcnhfb2N4ICpvY3ggPSAoc3RydWN0 IHRodW5kZXJ4X29jeCAqKSBkZXZfaWQ7Cj4gPj4gPiAgICAgICAgIGludCBsYW5lOwo+ID4+ID4g ICAgICAgICB1bnNpZ25lZCBsb25nIGhlYWQgPSByaW5nX3BvcyhvY3gtPmNvbV9yaW5nX2hlYWQs Cj4gPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUo b2N4LT5jb21fZXJyX2N0eCkpOwo+ID4+ID4gQEAgLTExMjQsMTIgKzExMTgsOSBAQCBzdGF0aWMg aXJxcmV0dXJuX3QgdGh1bmRlcnhfb2N4X2NvbV9pc3IoaW50IGlycSwgdm9pZCAqaXJxX2lkKQo+ ID4+ID4gICAgICAgICByZXR1cm4gSVJRX1dBS0VfVEhSRUFEOwo+ID4+ID4gIH0KPiA+PiA+Cj4g Pj4gPiAtc3RhdGljIGlycXJldHVybl90IHRodW5kZXJ4X29jeF9jb21fdGhyZWFkZWRfaXNyKGlu dCBpcnEsIHZvaWQgKmlycV9pZCkKPiA+PiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgdGh1bmRlcnhf b2N4X2NvbV90aHJlYWRlZF9pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKQo+ID4+ID4gIHsKPiA+ PiA+IC0gICAgICAgc3RydWN0IG1zaXhfZW50cnkgKm1zaXggPSBpcnFfaWQ7Cj4gPj4gPiAtICAg ICAgIHN0cnVjdCB0aHVuZGVyeF9vY3ggKm9jeCA9IGNvbnRhaW5lcl9vZihtc2l4LCBzdHJ1Y3Qg dGh1bmRlcnhfb2N4LAo+ID4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbXNpeF9lbnRbbXNpeC0+ZW50cnldKTsKPiA+PiA+IC0KPiA+PiA+ICsgICAg ICAgc3RydWN0IHRodW5kZXJ4X29jeCAqb2N4ID0gKHN0cnVjdCB0aHVuZGVyeF9vY3ggKikgZGV2 X2lkOwo+ID4+ID4gICAgICAgICBpcnFyZXR1cm5fdCByZXQgPSBJUlFfTk9ORTsKPiA+PiA+Cj4g Pj4gPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdGFpbDsKPiA+PiA+IEBAIC0xMTg4LDE2ICsxMTc5 LDE0IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB0aHVuZGVyeF9vY3hfY29tX3RocmVhZGVkX2lzcihp bnQgaXJxLCB2b2lkICppcnFfaWQpCj4gPj4gPiAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4gPiAg fQo+ID4+ID4KPiA+PiA+IC1zdGF0aWMgaXJxcmV0dXJuX3QgdGh1bmRlcnhfb2N4X2xua19pc3Io aW50IGlycSwgdm9pZCAqaXJxX2lkKQo+ID4+ID4gK3N0YXRpYyBpcnFyZXR1cm5fdCB0aHVuZGVy eF9vY3hfbG5rX2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4gPj4gPiAgewo+ID4+ID4gLSAg ICAgICBzdHJ1Y3QgbXNpeF9lbnRyeSAqbXNpeCA9IGlycV9pZDsKPiA+PiA+IC0gICAgICAgc3Ry dWN0IHRodW5kZXJ4X29jeCAqb2N4ID0gY29udGFpbmVyX29mKG1zaXgsIHN0cnVjdCB0aHVuZGVy eF9vY3gsCj4gPj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtc2l4X2VudFttc2l4LT5lbnRyeV0pOwo+ID4+ID4gKyAgICAgICBzdHJ1Y3QgdGh1bmRl cnhfb2N4ICpvY3ggPSAoc3RydWN0IHRodW5kZXJ4X29jeCAqKSBkZXZfaWQ7Cj4gPj4gPiAgICAg ICAgIHVuc2lnbmVkIGxvbmcgaGVhZCA9IHJpbmdfcG9zKG9jeC0+bGlua19yaW5nX2hlYWQsCj4g Pj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUob2N4 LT5saW5rX2Vycl9jdHgpKTsKPiA+PiA+ICAgICAgICAgc3RydWN0IG9jeF9saW5rX2Vycl9jdHgg KmN0eCA9ICZvY3gtPmxpbmtfZXJyX2N0eFtoZWFkXTsKPiA+PiA+Cj4gPj4gPiAtICAgICAgIGN0 eC0+bGluayA9IG1zaXgtPmVudHJ5Owo+ID4+ID4gKyAgICAgICBjdHgtPmxpbmsgPSBpcnEgLSBw Y2lfaXJxX3ZlY3RvcihvY3gtPnBkZXYsIDApOwo+ID4+Cj4gPj4gVGhpcyBhc3N1bWVzIE1TSVgg dmVjdG9ycyBhcmUgYWxsb2NhdGVkIHNlcXVlbnRpYWxseSwgYXMgZmFyIGFzIEkgY2FuCj4gPj4g dGVsbC4gSXMgdGhpcyBiZWhhdmlvciBndWFyYW50ZWVkPwo+ID4KPiA+IEZyb20gbG9va2luZyBh dCB0aGUgaW1wbGVtZW50YXRpb24gaW4gcGNpX2lycV92ZWN0b3IgSSB3b3VsZCBzYXkgaXQgaXMu Cj4gCj4gV2hhdCBpZiB0aGUgaW1wbGVtZW50YXRpb24gY2hhbmdlcz8KCk1heWJlIFRob21hcyBj YW4gY29tbWVudCBpZiB0aGlzIGFzc3VtcHRpb24gY2FuIGJlIG1hZGUgb3Igc2hvdWxkIGJlCmF2 b2lkZWQuLi4KCj4gPgo+ID4+IEFzIGEgcHJlY2F1dGlvbiwgYSBjaGVjayBmb3IgMCA8PSBjdHgt PmxpbmsgPD0gMiBtaWdodCBuZWVkIHRvIGJlIGFkZGVkIGhlcmUuCj4gPj4KPiA+PiA+ICAgICAg ICAgY3R4LT5yZWdfY29tX2xpbmtfaW50ID0gcmVhZHEob2N4LT5yZWdzICsgT0NYX0NPTV9MSU5L WF9JTlQoY3R4LT5saW5rKSk7Cj4gPj4gPgo+ID4+ID4gICAgICAgICB3cml0ZXEoY3R4LT5yZWdf Y29tX2xpbmtfaW50LCBvY3gtPnJlZ3MgKyBPQ1hfQ09NX0xJTktYX0lOVChjdHgtPmxpbmspKTsK PiA+PiA+IEBAIC0xMjA3LDExICsxMTk2LDkgQEAgc3RhdGljIGlycXJldHVybl90IHRodW5kZXJ4 X29jeF9sbmtfaXNyKGludCBpcnEsIHZvaWQgKmlycV9pZCkKPiA+PiA+ICAgICAgICAgcmV0dXJu IElSUV9XQUtFX1RIUkVBRDsKPiA+PiA+ICB9Cj4gPj4gPgo+ID4+ID4gLXN0YXRpYyBpcnFyZXR1 cm5fdCB0aHVuZGVyeF9vY3hfbG5rX3RocmVhZGVkX2lzcihpbnQgaXJxLCB2b2lkICppcnFfaWQp Cj4gPj4gPiArc3RhdGljIGlycXJldHVybl90IHRodW5kZXJ4X29jeF9sbmtfdGhyZWFkZWRfaXNy KGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiA+PiA+ICB7Cj4gPj4gPiAtICAgICAgIHN0cnVjdCBt c2l4X2VudHJ5ICptc2l4ID0gaXJxX2lkOwo+ID4+ID4gLSAgICAgICBzdHJ1Y3QgdGh1bmRlcnhf b2N4ICpvY3ggPSBjb250YWluZXJfb2YobXNpeCwgc3RydWN0IHRodW5kZXJ4X29jeCwKPiA+PiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zaXhfZW50 W21zaXgtPmVudHJ5XSk7Cj4gPj4gPiArICAgICAgIHN0cnVjdCB0aHVuZGVyeF9vY3ggKm9jeCA9 IChzdHJ1Y3QgdGh1bmRlcnhfb2N4ICopIGRldl9pZDsKPiA+PiA+ICAgICAgICAgaXJxcmV0dXJu X3QgcmV0ID0gSVJRX05PTkU7Cj4gPj4gPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdGFpbDsKPiA+ PiA+ICAgICAgICAgc3RydWN0IG9jeF9saW5rX2Vycl9jdHggKmN0eDsKPiA+PiA+IEBAIC0xNDEw LDIwICsxMzk3LDE1IEBAIHN0YXRpYyBpbnQgdGh1bmRlcnhfb2N4X3Byb2JlKHN0cnVjdCBwY2lf ZGV2ICpwZGV2LAo+ID4+ID4KPiA+PiA+ICAgICAgICAgb2N4LT5wZGV2ID0gcGRldjsKPiA+PiA+ Cj4gPj4gPiAtICAgICAgIGZvciAoaSA9IDA7IGkgPCBPQ1hfSU5UUzsgaSsrKSB7Cj4gPj4gPiAt ICAgICAgICAgICAgICAgb2N4LT5tc2l4X2VudFtpXS5lbnRyeSA9IGk7Cj4gPj4gPiAtICAgICAg ICAgICAgICAgb2N4LT5tc2l4X2VudFtpXS52ZWN0b3IgPSAwOwo+ID4+ID4gLSAgICAgICB9Cj4g Pj4gPiAtCj4gPj4gPiAtICAgICAgIHJldCA9IHBjaV9lbmFibGVfbXNpeF9leGFjdChwZGV2LCBv Y3gtPm1zaXhfZW50LCBPQ1hfSU5UUyk7Cj4gPj4gPiAtICAgICAgIGlmIChyZXQpIHsKPiA+PiA+ ICsgICAgICAgcmV0ID0gcGNpX2FsbG9jX2lycV92ZWN0b3JzKHBkZXYsIDEsIE9DWF9JTlRTLCBQ Q0lfSVJRX01TSVgpOwo+ID4+ID4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ID4+ID4gICAgICAg ICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwgIkNhbm5vdCBlbmFibGUgaW50ZXJydXB0OiAl ZFxuIiwgcmV0KTsKPiA+PiA+ICAgICAgICAgICAgICAgICBnb3RvIGVycl9mcmVlOwo+ID4+ID4g ICAgICAgICB9Cj4gPj4KPiA+PiBXaGF0IGhhcHBlbnMgaWYgbGVzcyB0aGFuIE9DWF9JTlRTIHZl Y3RvcnMgYXJlIGFsbG9jYXRlZD8KPiA+Pgo+ID4KPiA+IFRoZSBzYW1lIGJlaGF2aW91ciBhcyBi ZWZvcmUsIGl0IGlzIGlnbm9yZWQuCj4gCj4gTm8sIHBjaV9lbmFibGVfbXNpeF9leGFjdCgpIGZh aWxzIHdoZW4gaXQgY2Fubm90IGVuYWJsZSB0aGUgc3BlY2lmaWVkCj4gbnVtYmVyIG9mIGludGVy cnVwdHMuCgpJIGFncmVlLCBJIG1pc3JlYWQgdGhhdCAobWF5YmUgdGhhdCBpcyB0aGUgcmVhc29u IGZvciB0aGUgYWRkZWQgX2V4YWN0KS4KCj4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQgd2l0aCBwY2lf YWxsb2NfaXJxX3ZlY3RvcnMocGRldiwgT0NYX0lOVFMsCj4gT0NYX0lOVFMsIFBDSV9JUlFfTVNJ WCkKClllcy4gVGhhbmtzIGZvciBzcG90dGluZyB0aGlzLgoKPiA+Cj4gPiBSZWdhcmRzLAo+ID4g SmFuCj4gPgo+ID4+ID4KPiA+PiA+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IE9DWF9JTlRTOyBp KyspIHsKPiA+PiA+ICAgICAgICAgICAgICAgICByZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRf aXJxKCZwZGV2LT5kZXYsCj4gPj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvY3gtPm1zaXhfZW50W2ldLnZlY3RvciwKPiA+PiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9pcnFfdmVjdG9yKHBkZXYs IGkpLAo+ID4+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGkgPT0gMykgPwo+ID4+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRodW5kZXJ4X29jeF9jb21faXNyIDoKPiA+PiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHVuZGVyeF9vY3hfbG5rX2lzciwK PiA+PiA+IEBAIC0xNDMxLDcgKzE0MTMsNyBAQCBzdGF0aWMgaW50IHRodW5kZXJ4X29jeF9wcm9i ZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKPiA+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aHVuZGVyeF9vY3hfY29tX3RocmVhZGVkX2lzciA6Cj4g Pj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGh1 bmRlcnhfb2N4X2xua190aHJlYWRlZF9pc3IsCj4gPj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAiW0VEQUNdIFRodW5kZXJYIE9DWCIsCj4gPj4g PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2N4LT5t c2l4X2VudFtpXSk7Cj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvY3gpOwo+ID4+ID4gICAgICAgICAgICAgICAgIGlmIChyZXQpCj4gPj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9mcmVlOwo+ID4+ID4gICAgICAgICB9Cj4g Pj4gPiBAQCAtMTc3MywxOSArMTc1NSwxNCBAQCBzdHJ1Y3QgdGh1bmRlcnhfbDJjIHsKPiA+PiA+ Cj4gPj4gPiAgICAgICAgIGludCBpbmRleDsKPiA+PiA+Cj4gPj4gPiAtICAgICAgIHN0cnVjdCBt c2l4X2VudHJ5IG1zaXhfZW50Owo+ID4+ID4gLQo+ID4+ID4gICAgICAgICBzdHJ1Y3QgbDJjX2Vy cl9jdHggZXJyX2N0eFtSSU5HX0VOVFJJRVNdOwo+ID4+ID4gICAgICAgICB1bnNpZ25lZCBsb25n IHJpbmdfaGVhZDsKPiA+PiA+ICAgICAgICAgdW5zaWduZWQgbG9uZyByaW5nX3RhaWw7Cj4gPj4g PiAgfTsKPiA+PiA+Cj4gPj4gPiAtc3RhdGljIGlycXJldHVybl90IHRodW5kZXJ4X2wyY190YWRf aXNyKGludCBpcnEsIHZvaWQgKmlycV9pZCkKPiA+PiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgdGh1 bmRlcnhfbDJjX3RhZF9pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKQo+ID4+ID4gIHsKPiA+PiA+ IC0gICAgICAgc3RydWN0IG1zaXhfZW50cnkgKm1zaXggPSBpcnFfaWQ7Cj4gPj4gPiAtICAgICAg IHN0cnVjdCB0aHVuZGVyeF9sMmMgKnRhZCA9IGNvbnRhaW5lcl9vZihtc2l4LCBzdHJ1Y3QgdGh1 bmRlcnhfbDJjLAo+ID4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbXNpeF9lbnQpOwo+ID4+ID4gLQo+ID4+ID4gKyAgICAgICBzdHJ1Y3QgdGh1bmRl cnhfbDJjICp0YWQgPSAoc3RydWN0IHRodW5kZXJ4X2wyYyAqKSBkZXZfaWQ7Cj4gPj4gPiAgICAg ICAgIHVuc2lnbmVkIGxvbmcgaGVhZCA9IHJpbmdfcG9zKHRhZC0+cmluZ19oZWFkLCBBUlJBWV9T SVpFKHRhZC0+ZXJyX2N0eCkpOwo+ID4+ID4gICAgICAgICBzdHJ1Y3QgbDJjX2Vycl9jdHggKmN0 eCA9ICZ0YWQtPmVycl9jdHhbaGVhZF07Cj4gPj4gPgo+ID4+ID4gQEAgLTE4MTIsMTIgKzE3ODks OSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdGh1bmRlcnhfbDJjX3RhZF9pc3IoaW50IGlycSwgdm9p ZCAqaXJxX2lkKQo+ID4+ID4gICAgICAgICByZXR1cm4gSVJRX1dBS0VfVEhSRUFEOwo+ID4+ID4g IH0KPiA+PiA+Cj4gPj4gPiAtc3RhdGljIGlycXJldHVybl90IHRodW5kZXJ4X2wyY19jYmNfaXNy KGludCBpcnEsIHZvaWQgKmlycV9pZCkKPiA+PiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgdGh1bmRl cnhfbDJjX2NiY19pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKQo+ID4+ID4gIHsKPiA+PiA+IC0g ICAgICAgc3RydWN0IG1zaXhfZW50cnkgKm1zaXggPSBpcnFfaWQ7Cj4gPj4gPiAtICAgICAgIHN0 cnVjdCB0aHVuZGVyeF9sMmMgKmNiYyA9IGNvbnRhaW5lcl9vZihtc2l4LCBzdHJ1Y3QgdGh1bmRl cnhfbDJjLAo+ID4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbXNpeF9lbnQpOwo+ID4+ID4gLQo+ID4+ID4gKyAgICAgICBzdHJ1Y3QgdGh1bmRlcnhf bDJjICpjYmMgPSAoc3RydWN0IHRodW5kZXJ4X2wyYyAqKSBkZXZfaWQ7Cj4gPj4gPiAgICAgICAg IHVuc2lnbmVkIGxvbmcgaGVhZCA9IHJpbmdfcG9zKGNiYy0+cmluZ19oZWFkLCBBUlJBWV9TSVpF KGNiYy0+ZXJyX2N0eCkpOwo+ID4+ID4gICAgICAgICBzdHJ1Y3QgbDJjX2Vycl9jdHggKmN0eCA9 ICZjYmMtPmVycl9jdHhbaGVhZF07Cj4gPj4gPgo+ID4+ID4gQEAgLTE4NDEsMTIgKzE4MTUsOSBA QCBzdGF0aWMgaXJxcmV0dXJuX3QgdGh1bmRlcnhfbDJjX2NiY19pc3IoaW50IGlycSwgdm9pZCAq aXJxX2lkKQo+ID4+ID4gICAgICAgICByZXR1cm4gSVJRX1dBS0VfVEhSRUFEOwo+ID4+ID4gIH0K PiA+PiA+Cj4gPj4gPiAtc3RhdGljIGlycXJldHVybl90IHRodW5kZXJ4X2wyY19tY2lfaXNyKGlu dCBpcnEsIHZvaWQgKmlycV9pZCkKPiA+PiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgdGh1bmRlcnhf bDJjX21jaV9pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKQo+ID4+ID4gIHsKPiA+PiA+IC0gICAg ICAgc3RydWN0IG1zaXhfZW50cnkgKm1zaXggPSBpcnFfaWQ7Cj4gPj4gPiAtICAgICAgIHN0cnVj dCB0aHVuZGVyeF9sMmMgKm1jaSA9IGNvbnRhaW5lcl9vZihtc2l4LCBzdHJ1Y3QgdGh1bmRlcnhf bDJjLAo+ID4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbXNpeF9lbnQpOwo+ID4+ID4gLQo+ID4+ID4gKyAgICAgICBzdHJ1Y3QgdGh1bmRlcnhfbDJj ICptY2kgPSAoc3RydWN0IHRodW5kZXJ4X2wyYyAqKSBkZXZfaWQ7Cj4gPj4gPiAgICAgICAgIHVu c2lnbmVkIGxvbmcgaGVhZCA9IHJpbmdfcG9zKG1jaS0+cmluZ19oZWFkLCBBUlJBWV9TSVpFKG1j aS0+ZXJyX2N0eCkpOwo+ID4+ID4gICAgICAgICBzdHJ1Y3QgbDJjX2Vycl9jdHggKmN0eCA9ICZt Y2ktPmVycl9jdHhbaGVhZF07Cj4gPj4gPgo+ID4+ID4gQEAgLTE4NjIsMTIgKzE4MzMsOSBAQCBz dGF0aWMgaXJxcmV0dXJuX3QgdGh1bmRlcnhfbDJjX21jaV9pc3IoaW50IGlycSwgdm9pZCAqaXJx X2lkKQo+ID4+ID4gICAgICAgICByZXR1cm4gSVJRX1dBS0VfVEhSRUFEOwo+ID4+ID4gIH0KPiA+ PiA+Cj4gPj4gPiAtc3RhdGljIGlycXJldHVybl90IHRodW5kZXJ4X2wyY190aHJlYWRlZF9pc3Io aW50IGlycSwgdm9pZCAqaXJxX2lkKQo+ID4+ID4gK3N0YXRpYyBpcnFyZXR1cm5fdCB0aHVuZGVy eF9sMmNfdGhyZWFkZWRfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiA+PiA+ICB7Cj4gPj4g PiAtICAgICAgIHN0cnVjdCBtc2l4X2VudHJ5ICptc2l4ID0gaXJxX2lkOwo+ID4+ID4gLSAgICAg ICBzdHJ1Y3QgdGh1bmRlcnhfbDJjICpsMmMgPSBjb250YWluZXJfb2YobXNpeCwgc3RydWN0IHRo dW5kZXJ4X2wyYywKPiA+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1zaXhfZW50KTsKPiA+PiA+IC0KPiA+PiA+ICsgICAgICAgc3RydWN0IHRodW5k ZXJ4X2wyYyAqbDJjID0gKHN0cnVjdCB0aHVuZGVyeF9sMmMgKikgZGV2X2lkOwo+ID4+ID4gICAg ICAgICB1bnNpZ25lZCBsb25nIHRhaWwgPSByaW5nX3BvcyhsMmMtPnJpbmdfdGFpbCwgQVJSQVlf U0laRShsMmMtPmVycl9jdHgpKTsKPiA+PiA+ICAgICAgICAgc3RydWN0IGwyY19lcnJfY3R4ICpj dHggPSAmbDJjLT5lcnJfY3R4W3RhaWxdOwo+ID4+ID4gICAgICAgICBpcnFyZXR1cm5fdCByZXQg PSBJUlFfTk9ORTsKPiA+PiA+IEBAIC0yMDQ5LDIwICsyMDE3LDE3IEBAIHN0YXRpYyBpbnQgdGh1 bmRlcnhfbDJjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAo+ID4+ID4gICAgICAgICBsMmMt PnJpbmdfaGVhZCA9IDA7Cj4gPj4gPiAgICAgICAgIGwyYy0+cmluZ190YWlsID0gMDsKPiA+PiA+ Cj4gPj4gPiAtICAgICAgIGwyYy0+bXNpeF9lbnQuZW50cnkgPSAwOwo+ID4+ID4gLSAgICAgICBs MmMtPm1zaXhfZW50LnZlY3RvciA9IDA7Cj4gPj4gPiAtCj4gPj4gPiAtICAgICAgIHJldCA9IHBj aV9lbmFibGVfbXNpeF9leGFjdChwZGV2LCAmbDJjLT5tc2l4X2VudCwgMSk7Cj4gPj4gPiAtICAg ICAgIGlmIChyZXQpIHsKPiA+PiA+ICsgICAgICAgcmV0ID0gcGNpX2FsbG9jX2lycV92ZWN0b3Jz KHBkZXYsIDEsIDEsIFBDSV9JUlFfTVNJWCk7Cj4gPj4gPiArICAgICAgIGlmIChyZXQgPCAwKSB7 Cj4gPj4gPiAgICAgICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiQ2Fubm90IGVuYWJs ZSBpbnRlcnJ1cHQ6ICVkXG4iLCByZXQpOwo+ID4+ID4gICAgICAgICAgICAgICAgIGdvdG8gZXJy X2ZyZWU7Cj4gPj4gPiAgICAgICAgIH0KPiA+PiA+Cj4gPj4gPiAtICAgICAgIHJldCA9IGRldm1f cmVxdWVzdF90aHJlYWRlZF9pcnEoJnBkZXYtPmRldiwgbDJjLT5tc2l4X2VudC52ZWN0b3IsCj4g Pj4gPiArICAgICAgIHJldCA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoJnBkZXYtPmRldiwg cGNpX2lycV92ZWN0b3IocGRldiwgMCksCj4gPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGh1bmRlcnhfbDJjX2lzciwKPiA+PiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aHVuZGVyeF9sMmNfdGhyZWFkZWRfaXNyLAo+ID4+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICJbRURBQ10gVGh1bmRl clggTDJDIiwKPiA+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm bDJjLT5tc2l4X2VudCk7Cj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbDJjKTsKPiA+PiA+ICAgICAgICAgaWYgKHJldCkKPiA+PiA+ICAgICAgICAgICAgICAg ICBnb3RvIGVycl9mcmVlOwo+ID4+ID4KPiA+PiA+IC0tCj4gPj4gPiAxLjkuMQo+ID4+ID4KPiA+ Pgo+ID4+IFJlZ2FyZHMsCj4gPj4gU2VyZ2V5Ci0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMg bGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtZWRhYyIgaW4KdGhlIGJvZHkg b2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8g aW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755147AbdERJQF (ORCPT ); Thu, 18 May 2017 05:16:05 -0400 Received: from mail-bn3nam01on0042.outbound.protection.outlook.com ([104.47.33.42]:56000 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752689AbdERJQB (ORCPT ); Thu, 18 May 2017 05:16:01 -0400 Authentication-Results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=caviumnetworks.com; Date: Thu, 18 May 2017 11:15:46 +0200 From: Jan Glauber To: Sergei Temerkhanov Cc: Borislav Petkov , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Gleixner Subject: Re: [PATCH] edac: thunderx: Replace pci_alloc_msix_exact Message-ID: <20170518091546.GA25620@hc> References: <1494928456-7166-1-git-send-email-jglauber@cavium.com> <20170517172318.GA22379@hc> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [88.67.130.225] X-ClientProxiedBy: VI1P18901CA0022.EURP189.PROD.OUTLOOK.COM (10.173.66.160) To CO2PR07MB2582.namprd07.prod.outlook.com (10.166.201.21) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO2PR07MB2582: X-MS-Office365-Filtering-Correlation-Id: d1804835-5bbe-4f2e-ac3d-08d49dce7eb2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CO2PR07MB2582; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;3:XGQFXNa/2TzZOgbeqf3pw8ylL+7Avv43EIftW0N/dk5YShIG32i0FsrzVEGPYrw6Tf/mXobYi0U/rIIODn06/IzxGLRnb/taw+w/45mzULVWhaFV8YV2M81EgGMv3Fn3wj9kQ0rBe+Ci2flrJBLoMHfiiHmuBxcvfcMM7bQ2My7GOAtwnSItObRug3tXRxbQaaLrdmuligZG96BrXxUZ37nbwuPnMc9dk04FLIBsRmhXOxQnyr9VUY0iDVCVkfi1CZ8kChLCZd0KJK5l9Oml2E4mXMEiSgenK6ZnLvrl0tEDJZ8xmlVODRMcxStjz/CcxaWJZG3TwzdSivIMYokbIA==;25:ijSMSI4zUpeeANX88DzbuN3CWoxezxvgqaXrvN5yo2IaiciXH6R577Spzy75Xbj7FATbFQ0tSC8myZOkZKqe1M7dwAuLmjFMmdHARm09I2F7qOcPprDCittlGVnVWJFFQrGCGNnGuNICKlSLg+pKBBtvvT21028/dbQsjIkcnscZnugTPak7Hf3sqssPabKXi80n92HtxWXAxc7J+UI/XMKTq/w1y2COHjVIgjJQ6n7rHb7L5THorq92BV/aIoLF08j2fdpW2PeNDBA+jOw6xahEe1rlV6D4rbS6H75uq/evWFUSxSw8oCHiSyz5b088imGZrdfWC2QvvrM0seSROyI2pNmldpe8qNEvnMo0b7zvwku0ZnGlmJzwcU2Rhp2r8/f6YJrAV/AJF2of9Q+w/xrK6GlXnDY+IsGCVjvSZ0L3FY+5g4rlo1dO+o36aMe94Q8mKuOKCq4Y1vUnXtWlVMW4EPNB8ens4AYRYIzNpQc= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;31:ewSuCUPNY1yYX+bq+bnWkmap63fl0KCrgCYIUU4t7lEAg+zFqt8s1mZj20pHbImpnEC0YgP1wS+rL3lh4dxVisV82CIcwH6eFmX8+ndNfPDI9RqG/OZXSmltXEzDIzgVptRVT4HBQ/Vnw5/H1/etFhFTyK6tZvbGGL3Kv3uPGO3gaD+ljrXy/2fcsoTCzaqJqYch1gZ8WSX4PBB7OXO5fUhATBDg42j7/812jm8z330HWx0ySUNaG1FtAnV19Eif2+4rE+weebk0th8OJmPmKw==;20:+le9AWMBx1j5cKSogN/1WeNqnAtUA8Ll9oeOh68oqaXe12h8x4Ni8BgZo6xQDIOk9KthEygAEsku/9E8W+xGzy8scEkuayoiP6tSgEZi5AhV9IyuNJeDBx6bqJ1pU2B3z9x7lQoK6wR5oe5QJyQb8aYwsJV+0Aq9rYoI+EEiDGE3JDNknRc16xQ+NucvWwnztpcNqsLC+qGoX9lTcBCuWIfnNe9Z5TP8K7B7nWFmqysBxXLQgOy59Vz2J4XcgwyQTd5/HfZ8mpdA+Tm5sQeK/klztf6IpE7Jt14ZIxLiDBixjZZ1rIghV32vhmVjYGQuzt8uKXGAPIB7v1IZJvA381FZ+QBSkHYcleMhauq14FTVtCkm8mL+BaNbwyH+1SooxgVW4GFWUEpGxAfqoEV4m8zagwRWE9zIAqCkaojlKPWco4wp00yOLDSQRMa3KMQE3Qrkpb6a+j42gJvhkB4vfYqRFQX8mMgfikSTwrWqpTp6voevvT7tE+ulr13FA2u8rvbFejj3Lj2LH57oKaC49UX9lJAsdxvlftsb5pMzn7U1f1YPxsoiMunjbSq7SyYy3+Z0uvqabbDkADDbhBmzASvrOPnsfgZ4pg8+dOPZFaA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123560025)(20161123562025)(20161123564025)(6072148);SRVR:CO2PR07MB2582;BCL:0;PCL:0;RULEID:;SRVR:CO2PR07MB2582; X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;4:1h2PPhSjYZ0FPtMIFXTzSzvV4zcMx9+zl4LurVfXdI2PaqI8ZrOI1fkcIvjWbp+1rERMXtcp1Mu2MZksjgy279c60M15GLM4xfwNIuKgYT75ganHpKHYYkG6Sx3+mLxiyaoKuYv2OPJI2ggxaLKO1VgMyF+sQBUvSOFIljW85xk5RYTWtPqfd4YVnW3KVg65yiY6kPJfSQyw8tpu8ZXge9HjOA9LUZp7vIJc5XP67b8/+HE6NcN//osOFJ5R4riP3BK0RMa6/7y6wrjdo1AvvWHeCFx9mrbPXF5JRwgL1LQlIICPbbymqnlhVW8yh7ro36URBTuM8p2lTR+nd9Ag24JqgKKCEjsiXQhR8d7/CDGzAigsuxqQnjlj43ED8x8Tlb6rLHrELhyi8hmwcJA0ZdmlNzfcffmZuVCUepjqH8PCPb5S6nHWJZshyJ9ADKeHa3xXaRBuV4blG/kt7U56AXpQtW1IGQpierfXnxGt/6AedoegMcVRJ4CCw1nbL6M1Cjoe5YfBraT4yZzzkK5wJljrRtfS9N/4SamnbGEZy9RUE7o/3OP86fcIeXn8ANqC1E60lC2CHQ/v1jQLzP1vZ/n6UrN3wb/oHQuHardHnNFfI6E2rA83aOHKcH1puCiF2Nn/2hGkNpRFOmrN2286NPQlh324weLotF6x/tnOMlykFqRAsAK7/zYfTcHyUcIAOtZSOrnZPnYB4nKAn+dFheMNzyWvy/f6EMBRIBFGQrPWYhQHYPIE2IhOMRmkVQY4C5QSeVEEaobzEvPt7270uTxUXWCxCmB94TodjtcYuOB6Qc9I9MOpZx1hJnlxCkLl X-Forefront-PRVS: 0311124FA9 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39840400002)(39410400002)(39450400003)(39400400002)(39850400002)(377454003)(24454002)(7736002)(6916009)(23726003)(42882006)(2950100002)(33716001)(42186005)(66066001)(4001350100001)(54906002)(72206003)(8676002)(81166006)(83506001)(5660300001)(6666003)(3846002)(6116002)(93886004)(189998001)(1076002)(9686003)(55016002)(4326008)(50986999)(54356999)(76176999)(110136004)(6496005)(38730400002)(229853002)(25786009)(53546009)(33656002)(478600001)(53936002)(6246003)(50466002)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:CO2PR07MB2582;H:hc;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CO2PR07MB2582;23:w2gCqlVpYb45EM4xrFoVJJTxZNfpFiQBudx8s75hK?= =?us-ascii?Q?fv8itdl+ok7FTU8zNIiApHGKMut09ro9nTs8jJPorF5JsH1pGA9BktHIvt/f?= =?us-ascii?Q?uDgCRnk+E/1TlUyp+Pr4GdfMhYXq9cdHbElPqS0z+8QRL4aFkZiGLH4wW7tv?= =?us-ascii?Q?Z6/8SoJtpBfFBtHw+0CYxvMoiT31XLGVBj/nG9bNIqWJOPqu/IK9PUzz0mFK?= =?us-ascii?Q?rkYPuKHuLd7WEb3WsevoRlWXT10w4Y0wbwTNS/eTe7OwKkMpcIhyuJupF1W+?= =?us-ascii?Q?CeI+woM5wOz1ibgiKQ3bHHnm085oRo6ZaMEKlxI0YDgHIchCC+w+l2pl1EjH?= =?us-ascii?Q?PgKeGXpueEBh2pcENCH4GxBZxcGR6fk2H7enemAxAdvcwrLbWDfwTu1XYaHG?= =?us-ascii?Q?z/+tI73hNaw2k/rUm8dne6Jso2c1lBuFB+AOhmvJrcLsZIII9c4ux1aF1lbX?= =?us-ascii?Q?gYzyggsCzPvSbwYPD4GUjMZHjG5mOrAxC34rjOvNVoEtXX+BjvuddV/RcuZz?= =?us-ascii?Q?OdxK/ytrKjzVivoHYzk26ZjdCeQ31JyM9A/rrSyD0R3sjIhKkVLggJyGujXr?= =?us-ascii?Q?Z1LMT59ofhOVzXeZc03I8gx9RGbBrCb+mczVQV1of6Uy6uFY5JN4yfg0TVZe?= =?us-ascii?Q?PRu6L+Ry/6ouvosxoxQFnn253t6KtImsM0WYlAjV3rM5j2AKST6oT3qq689y?= =?us-ascii?Q?/MSdtDinBedrWuhLXATS+V289RkMHSeAw1v8ZaBeaJdIw1VsTlxaQWdeao/6?= =?us-ascii?Q?jFfyaB8ny7bIxHCE3uwtVOmdU2knGz/Kbd/F0iq8UO4Ka7zFDQspn/D+5Y3y?= =?us-ascii?Q?tsUbo3ZJ3vd1S+EN1BMq6KhHr5DzS3tdqQNzxfNUrMTlfXZqtujMh5eQUVvd?= =?us-ascii?Q?wdrWq7u4UTMvQB/WCda6CYDaD0f8S/oV+YueYPSzH9wzZD/g40LIsG2oWwWO?= =?us-ascii?Q?CEIKE6CabuHCLqzCSpHM+XonejvoeGGNOrzK00FjteNQvldQneWMbNIyxkVj?= =?us-ascii?Q?VKK+Ljqa42WmOI8iTRKofWi3ZmRoOVoeuakD9HqQpt9iStF8pyv26FqEsOGL?= =?us-ascii?Q?sqSVXLMGMU7NKBBvu+4jESDog4nO+WaQmT+G/7MzwZhvkqDrwCKHnipj2qWP?= =?us-ascii?Q?ERQHhL+xhqyWdxqk6jRKkbnGhzrQgEZc1bj5Xmmpc4IOFSF31ntFjL56o3mz?= =?us-ascii?Q?i1Heah0ANuLwqw5+/oi05OJDq3BD16y7Ot1?= X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;6:QQseU805PyH4e4LbPt/mlHh00ti3OBXRDtp0pBAN5WQgFP5TsvRI5he7iZiMS5SHJsxpHnaGEO75FBrycqQwODf4Fc6kKYUoftmqToXHeoEc1FqOiDBPIpW3tDf0bYoxZOhtF9KE5BAIhkX4QF5FJZ3O1RCdwkH9K3k7YxgJfXTmJ2/+WvrQSZME5fH5oSpraBaJZPhX9zjOmZx0k4CmqHLgXLI+DgC2RMnJA4hkyGY47gas6aWAjtyL/jra8mVlPKcUQElSkSzq5INfxHciH7PccDyeeKwBwYO1r815zBuyLrEJ326vkpTwXtasWf5WC5wJNnw+C0CZm9PYs07uVelVkoGxb0c/GZzwtRxgYFMFJEF0MJRzDv8U574JEz6lIrlAjheJzUf8w5/E+y2crsyNwzDOc8hS79+1K2nYZPUQEzi//nokECQXk0DL7c3zC2F2vt94AauIH0wcKgdhFSEb7puZQIHZ7SnX1hjyIDCGbARHUTmgEo9FpPm+/9raCb6ZiMz2/blyxGR6SRXizw==;5:nJg5wFEzuw/KVZl5lLDdilIWJwTCwtHTixPJ5s7WdV0qumV4jZ0f/QwqNU3oT9LkVBhasV16S9CXY5w9XsgtCl7IKIAQmlfALItQOagsGn4zMj54gx1kd1iR7k8rDf2ue4veU5SC7/hE0KLU7gurq0L6uLqSWhriFOiJBjNTzAQ=;24:zZutF84B39rO6L4MkHv98tGSddEvh1jPJlyLAO9BFUJLayCVmwlogy8vNSOyPZCUBHhVL2oByPe2B1VLYYY2bp3s4qfHxzYVY0iGuQ6Jx6E= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CO2PR07MB2582;7:rm+VkQPTAHJ0ogEp6vawkEWT4Tl8nX4kUr8ux6R7sdNQYLKI1T17GHE2SxHnRKzya0WR+L9pZoBBaFSrRVN76FRK28fTT+U2jcc5mxIb6AE86LUTuPm5974BhCulIKM0om6+qd8N0oX08zrS65kdKESaB7NoDdorwPUkR0cW9aePghHHraujFdd373lor3KE4j/4OfG1lrJb2/jejoJtRsA43Ysdb2cYneu2oimE/biCzpAeO2ew6k8asqUt+4kC6M9o6z0wmF3UN/E02G6gIKYVvdNp378DL4hBZhen7Ta3uk7aScZh/IooBs4jpm0ZWjUtpJh75nmoo9aWQDARyw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2017 09:15:56.5232 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR07MB2582 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, May 18, 2017 at 02:52:54AM +0300, Sergei Temerkhanov wrote: > On Wed, May 17, 2017 at 8:23 PM, Jan Glauber > wrote: > > On Wed, May 17, 2017 at 06:35:05PM +0300, Sergei Temerkhanov wrote: > >> CIL... > >> > >> On Tue, May 16, 2017 at 12:54 PM, Jan Glauber wrote: > >> > Replace the deprecated pci_alloc_msix_exact() with > >> > pci_alloc_irq_vectors(). > >> > > >> > Avoid the container_of usage in the interrupt handler > >> > by simply passing the required struct as data to the interrupt > >> > handler. > >> > > >> > Signed-off-by: Jan Glauber > >> > --- > >> > drivers/edac/thunderx_edac.c | 91 ++++++++++++++------------------------------ > >> > 1 file changed, 28 insertions(+), 63 deletions(-) > >> > > >> > diff --git a/drivers/edac/thunderx_edac.c b/drivers/edac/thunderx_edac.c > >> > index 86d585c..da12804 100644 > >> > --- a/drivers/edac/thunderx_edac.c > >> > +++ b/drivers/edac/thunderx_edac.c > >> > @@ -183,7 +183,6 @@ struct lmc_err_ctx { > >> > struct thunderx_lmc { > >> > void __iomem *regs; > >> > struct pci_dev *pdev; > >> > - struct msix_entry msix_ent; > >> > > >> > atomic_t ecc_int; > >> > > >> > @@ -738,18 +737,17 @@ static int thunderx_lmc_probe(struct pci_dev *pdev, > >> > mci->scrub_mode = SCRUB_NONE; > >> > > >> > lmc->pdev = pdev; > >> > - lmc->msix_ent.entry = 0; > >> > > >> > lmc->ring_head = 0; > >> > lmc->ring_tail = 0; > >> > > >> > - ret = pci_enable_msix_exact(pdev, &lmc->msix_ent, 1); > >> > - if (ret) { > >> > + ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSIX); > >> > + if (ret < 0) { > >> > dev_err(&pdev->dev, "Cannot enable interrupt: %d\n", ret); > >> > goto err_free; > >> > } > >> > > >> > - ret = devm_request_threaded_irq(&pdev->dev, lmc->msix_ent.vector, > >> > + ret = devm_request_threaded_irq(&pdev->dev, pci_irq_vector(pdev, 0), > >> > thunderx_lmc_err_isr, > >> > thunderx_lmc_threaded_isr, 0, > >> > "[EDAC] ThunderX LMC", mci); > >> > @@ -1079,7 +1077,6 @@ struct thunderx_ocx { > >> > struct edac_device_ctl_info *edac_dev; > >> > > >> > struct dentry *debugfs; > >> > - struct msix_entry msix_ent[OCX_INTS]; > >> > > >> > struct ocx_com_err_ctx com_err_ctx[RING_ENTRIES]; > >> > struct ocx_link_err_ctx link_err_ctx[RING_ENTRIES]; > >> > @@ -1095,12 +1092,9 @@ struct thunderx_ocx { > >> > #define OCX_OTHER_SIZE (50 * ARRAY_SIZE(ocx_com_link_errors)) > >> > > >> > /* This handler is threaded */ > >> > -static irqreturn_t thunderx_ocx_com_isr(int irq, void *irq_id) > >> > +static irqreturn_t thunderx_ocx_com_isr(int irq, void *dev_id) > >> > { > >> > - struct msix_entry *msix = irq_id; > >> > - struct thunderx_ocx *ocx = container_of(msix, struct thunderx_ocx, > >> > - msix_ent[msix->entry]); > >> > - > >> > + struct thunderx_ocx *ocx = (struct thunderx_ocx *) dev_id; > >> > int lane; > >> > unsigned long head = ring_pos(ocx->com_ring_head, > >> > ARRAY_SIZE(ocx->com_err_ctx)); > >> > @@ -1124,12 +1118,9 @@ static irqreturn_t thunderx_ocx_com_isr(int irq, void *irq_id) > >> > return IRQ_WAKE_THREAD; > >> > } > >> > > >> > -static irqreturn_t thunderx_ocx_com_threaded_isr(int irq, void *irq_id) > >> > +static irqreturn_t thunderx_ocx_com_threaded_isr(int irq, void *dev_id) > >> > { > >> > - struct msix_entry *msix = irq_id; > >> > - struct thunderx_ocx *ocx = container_of(msix, struct thunderx_ocx, > >> > - msix_ent[msix->entry]); > >> > - > >> > + struct thunderx_ocx *ocx = (struct thunderx_ocx *) dev_id; > >> > irqreturn_t ret = IRQ_NONE; > >> > > >> > unsigned long tail; > >> > @@ -1188,16 +1179,14 @@ static irqreturn_t thunderx_ocx_com_threaded_isr(int irq, void *irq_id) > >> > return ret; > >> > } > >> > > >> > -static irqreturn_t thunderx_ocx_lnk_isr(int irq, void *irq_id) > >> > +static irqreturn_t thunderx_ocx_lnk_isr(int irq, void *dev_id) > >> > { > >> > - struct msix_entry *msix = irq_id; > >> > - struct thunderx_ocx *ocx = container_of(msix, struct thunderx_ocx, > >> > - msix_ent[msix->entry]); > >> > + struct thunderx_ocx *ocx = (struct thunderx_ocx *) dev_id; > >> > unsigned long head = ring_pos(ocx->link_ring_head, > >> > ARRAY_SIZE(ocx->link_err_ctx)); > >> > struct ocx_link_err_ctx *ctx = &ocx->link_err_ctx[head]; > >> > > >> > - ctx->link = msix->entry; > >> > + ctx->link = irq - pci_irq_vector(ocx->pdev, 0); > >> > >> This assumes MSIX vectors are allocated sequentially, as far as I can > >> tell. Is this behavior guaranteed? > > > > From looking at the implementation in pci_irq_vector I would say it is. > > What if the implementation changes? Maybe Thomas can comment if this assumption can be made or should be avoided... > > > >> As a precaution, a check for 0 <= ctx->link <= 2 might need to be added here. > >> > >> > ctx->reg_com_link_int = readq(ocx->regs + OCX_COM_LINKX_INT(ctx->link)); > >> > > >> > writeq(ctx->reg_com_link_int, ocx->regs + OCX_COM_LINKX_INT(ctx->link)); > >> > @@ -1207,11 +1196,9 @@ static irqreturn_t thunderx_ocx_lnk_isr(int irq, void *irq_id) > >> > return IRQ_WAKE_THREAD; > >> > } > >> > > >> > -static irqreturn_t thunderx_ocx_lnk_threaded_isr(int irq, void *irq_id) > >> > +static irqreturn_t thunderx_ocx_lnk_threaded_isr(int irq, void *dev_id) > >> > { > >> > - struct msix_entry *msix = irq_id; > >> > - struct thunderx_ocx *ocx = container_of(msix, struct thunderx_ocx, > >> > - msix_ent[msix->entry]); > >> > + struct thunderx_ocx *ocx = (struct thunderx_ocx *) dev_id; > >> > irqreturn_t ret = IRQ_NONE; > >> > unsigned long tail; > >> > struct ocx_link_err_ctx *ctx; > >> > @@ -1410,20 +1397,15 @@ static int thunderx_ocx_probe(struct pci_dev *pdev, > >> > > >> > ocx->pdev = pdev; > >> > > >> > - for (i = 0; i < OCX_INTS; i++) { > >> > - ocx->msix_ent[i].entry = i; > >> > - ocx->msix_ent[i].vector = 0; > >> > - } > >> > - > >> > - ret = pci_enable_msix_exact(pdev, ocx->msix_ent, OCX_INTS); > >> > - if (ret) { > >> > + ret = pci_alloc_irq_vectors(pdev, 1, OCX_INTS, PCI_IRQ_MSIX); > >> > + if (ret < 0) { > >> > dev_err(&pdev->dev, "Cannot enable interrupt: %d\n", ret); > >> > goto err_free; > >> > } > >> > >> What happens if less than OCX_INTS vectors are allocated? > >> > > > > The same behaviour as before, it is ignored. > > No, pci_enable_msix_exact() fails when it cannot enable the specified > number of interrupts. I agree, I misread that (maybe that is the reason for the added _exact). > This can be achieved with pci_alloc_irq_vectors(pdev, OCX_INTS, > OCX_INTS, PCI_IRQ_MSIX) Yes. Thanks for spotting this. > > > > Regards, > > Jan > > > >> > > >> > for (i = 0; i < OCX_INTS; i++) { > >> > ret = devm_request_threaded_irq(&pdev->dev, > >> > - ocx->msix_ent[i].vector, > >> > + pci_irq_vector(pdev, i), > >> > (i == 3) ? > >> > thunderx_ocx_com_isr : > >> > thunderx_ocx_lnk_isr, > >> > @@ -1431,7 +1413,7 @@ static int thunderx_ocx_probe(struct pci_dev *pdev, > >> > thunderx_ocx_com_threaded_isr : > >> > thunderx_ocx_lnk_threaded_isr, > >> > 0, "[EDAC] ThunderX OCX", > >> > - &ocx->msix_ent[i]); > >> > + ocx); > >> > if (ret) > >> > goto err_free; > >> > } > >> > @@ -1773,19 +1755,14 @@ struct thunderx_l2c { > >> > > >> > int index; > >> > > >> > - struct msix_entry msix_ent; > >> > - > >> > struct l2c_err_ctx err_ctx[RING_ENTRIES]; > >> > unsigned long ring_head; > >> > unsigned long ring_tail; > >> > }; > >> > > >> > -static irqreturn_t thunderx_l2c_tad_isr(int irq, void *irq_id) > >> > +static irqreturn_t thunderx_l2c_tad_isr(int irq, void *dev_id) > >> > { > >> > - struct msix_entry *msix = irq_id; > >> > - struct thunderx_l2c *tad = container_of(msix, struct thunderx_l2c, > >> > - msix_ent); > >> > - > >> > + struct thunderx_l2c *tad = (struct thunderx_l2c *) dev_id; > >> > unsigned long head = ring_pos(tad->ring_head, ARRAY_SIZE(tad->err_ctx)); > >> > struct l2c_err_ctx *ctx = &tad->err_ctx[head]; > >> > > >> > @@ -1812,12 +1789,9 @@ static irqreturn_t thunderx_l2c_tad_isr(int irq, void *irq_id) > >> > return IRQ_WAKE_THREAD; > >> > } > >> > > >> > -static irqreturn_t thunderx_l2c_cbc_isr(int irq, void *irq_id) > >> > +static irqreturn_t thunderx_l2c_cbc_isr(int irq, void *dev_id) > >> > { > >> > - struct msix_entry *msix = irq_id; > >> > - struct thunderx_l2c *cbc = container_of(msix, struct thunderx_l2c, > >> > - msix_ent); > >> > - > >> > + struct thunderx_l2c *cbc = (struct thunderx_l2c *) dev_id; > >> > unsigned long head = ring_pos(cbc->ring_head, ARRAY_SIZE(cbc->err_ctx)); > >> > struct l2c_err_ctx *ctx = &cbc->err_ctx[head]; > >> > > >> > @@ -1841,12 +1815,9 @@ static irqreturn_t thunderx_l2c_cbc_isr(int irq, void *irq_id) > >> > return IRQ_WAKE_THREAD; > >> > } > >> > > >> > -static irqreturn_t thunderx_l2c_mci_isr(int irq, void *irq_id) > >> > +static irqreturn_t thunderx_l2c_mci_isr(int irq, void *dev_id) > >> > { > >> > - struct msix_entry *msix = irq_id; > >> > - struct thunderx_l2c *mci = container_of(msix, struct thunderx_l2c, > >> > - msix_ent); > >> > - > >> > + struct thunderx_l2c *mci = (struct thunderx_l2c *) dev_id; > >> > unsigned long head = ring_pos(mci->ring_head, ARRAY_SIZE(mci->err_ctx)); > >> > struct l2c_err_ctx *ctx = &mci->err_ctx[head]; > >> > > >> > @@ -1862,12 +1833,9 @@ static irqreturn_t thunderx_l2c_mci_isr(int irq, void *irq_id) > >> > return IRQ_WAKE_THREAD; > >> > } > >> > > >> > -static irqreturn_t thunderx_l2c_threaded_isr(int irq, void *irq_id) > >> > +static irqreturn_t thunderx_l2c_threaded_isr(int irq, void *dev_id) > >> > { > >> > - struct msix_entry *msix = irq_id; > >> > - struct thunderx_l2c *l2c = container_of(msix, struct thunderx_l2c, > >> > - msix_ent); > >> > - > >> > + struct thunderx_l2c *l2c = (struct thunderx_l2c *) dev_id; > >> > unsigned long tail = ring_pos(l2c->ring_tail, ARRAY_SIZE(l2c->err_ctx)); > >> > struct l2c_err_ctx *ctx = &l2c->err_ctx[tail]; > >> > irqreturn_t ret = IRQ_NONE; > >> > @@ -2049,20 +2017,17 @@ static int thunderx_l2c_probe(struct pci_dev *pdev, > >> > l2c->ring_head = 0; > >> > l2c->ring_tail = 0; > >> > > >> > - l2c->msix_ent.entry = 0; > >> > - l2c->msix_ent.vector = 0; > >> > - > >> > - ret = pci_enable_msix_exact(pdev, &l2c->msix_ent, 1); > >> > - if (ret) { > >> > + ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSIX); > >> > + if (ret < 0) { > >> > dev_err(&pdev->dev, "Cannot enable interrupt: %d\n", ret); > >> > goto err_free; > >> > } > >> > > >> > - ret = devm_request_threaded_irq(&pdev->dev, l2c->msix_ent.vector, > >> > + ret = devm_request_threaded_irq(&pdev->dev, pci_irq_vector(pdev, 0), > >> > thunderx_l2c_isr, > >> > thunderx_l2c_threaded_isr, > >> > 0, "[EDAC] ThunderX L2C", > >> > - &l2c->msix_ent); > >> > + l2c); > >> > if (ret) > >> > goto err_free; > >> > > >> > -- > >> > 1.9.1 > >> > > >> > >> Regards, > >> Sergey