From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurence Oberman Subject: Re: Issue with fc_exch_alloc failing initiated by fc_queuecommand on NUMA or large configurations with Intel ixgbe running FCOE Date: Sun, 9 Oct 2016 11:52:44 -0400 (EDT) Message-ID: <141863610.848432.1476028364025.JavaMail.zimbra@redhat.com> References: <209207528.804499.1475931430678.JavaMail.zimbra@redhat.com> <2d30ad34-7a5e-b2ba-05f4-b0d831944f4c@suse.de> <1360350390.815966.1475949181371.JavaMail.zimbra@redhat.com> <1271455655.818631.1475955856691.JavaMail.zimbra@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1271455655.818631.1475955856691.JavaMail.zimbra-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: fcoe-devel-bounces-s9riP+hp16TNLxjTenLetw@public.gmane.org Sender: "fcoe-devel" To: Hannes Reinecke Cc: fcoe-devel-s9riP+hp16TNLxjTenLetw@public.gmane.org, "Curtis Taylor (cjt-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org)" , Bud Brown , Linux SCSI Mailinglist List-Id: linux-scsi@vger.kernel.org CgotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCj4gRnJvbTogIkxhdXJlbmNlIE9iZXJtYW4i IDxsb2Jlcm1hbkByZWRoYXQuY29tPgo+IFRvOiAiSGFubmVzIFJlaW5lY2tlIiA8aGFyZUBzdXNl LmRlPgo+IENjOiAiTGludXggU0NTSSBNYWlsaW5nbGlzdCIgPGxpbnV4LXNjc2lAdmdlci5rZXJu ZWwub3JnPiwgZmNvZS1kZXZlbEBvcGVuLWZjb2Uub3JnLCAiQ3VydGlzIFRheWxvciAoY2p0QHVz LmlibS5jb20pIgo+IDxjanRAdXMuaWJtLmNvbT4sICJCdWQgQnJvd24iIDxidWJyb3duQHJlZGhh dC5jb20+Cj4gU2VudDogU2F0dXJkYXksIE9jdG9iZXIgOCwgMjAxNiAzOjQ0OjE2IFBNCj4gU3Vi amVjdDogUmU6IFtPcGVuLUZDb0VdIElzc3VlIHdpdGggZmNfZXhjaF9hbGxvYyBmYWlsaW5nIGlu aXRpYXRlZCBieSBmY19xdWV1ZWNvbW1hbmQgb24gTlVNQSBvciBsYXJnZQo+IGNvbmZpZ3VyYXRp b25zIHdpdGggSW50ZWwgaXhnYmUgcnVubmluZyBGQ09FCj4gCj4gCj4gCj4gLS0tLS0gT3JpZ2lu YWwgTWVzc2FnZSAtLS0tLQo+ID4gRnJvbTogIkxhdXJlbmNlIE9iZXJtYW4iIDxsb2Jlcm1hbkBy ZWRoYXQuY29tPgo+ID4gVG86ICJIYW5uZXMgUmVpbmVja2UiIDxoYXJlQHN1c2UuZGU+Cj4gPiBD YzogIkxpbnV4IFNDU0kgTWFpbGluZ2xpc3QiIDxsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZz4s Cj4gPiBmY29lLWRldmVsQG9wZW4tZmNvZS5vcmcsICJDdXJ0aXMgVGF5bG9yIChjanRAdXMuaWJt LmNvbSkiCj4gPiA8Y2p0QHVzLmlibS5jb20+LCAiQnVkIEJyb3duIiA8YnVicm93bkByZWRoYXQu Y29tPgo+ID4gU2VudDogU2F0dXJkYXksIE9jdG9iZXIgOCwgMjAxNiAxOjUzOjAxIFBNCj4gPiBT dWJqZWN0OiBSZTogW09wZW4tRkNvRV0gSXNzdWUgd2l0aCBmY19leGNoX2FsbG9jIGZhaWxpbmcg aW5pdGlhdGVkIGJ5Cj4gPiBmY19xdWV1ZWNvbW1hbmQgb24gTlVNQSBvciBsYXJnZQo+ID4gY29u ZmlndXJhdGlvbnMgd2l0aCBJbnRlbCBpeGdiZSBydW5uaW5nIEZDT0UKPiA+IAo+ID4gCj4gPiAK PiA+IC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KPiA+ID4gRnJvbTogIkhhbm5lcyBSZWlu ZWNrZSIgPGhhcmVAc3VzZS5kZT4KPiA+ID4gVG86ICJMYXVyZW5jZSBPYmVybWFuIiA8bG9iZXJt YW5AcmVkaGF0LmNvbT4sICJMaW51eCBTQ1NJIE1haWxpbmdsaXN0Igo+ID4gPiA8bGludXgtc2Nz aUB2Z2VyLmtlcm5lbC5vcmc+LAo+ID4gPiBmY29lLWRldmVsQG9wZW4tZmNvZS5vcmcKPiA+ID4g Q2M6ICJDdXJ0aXMgVGF5bG9yIChjanRAdXMuaWJtLmNvbSkiIDxjanRAdXMuaWJtLmNvbT4sICJC dWQgQnJvd24iCj4gPiA+IDxidWJyb3duQHJlZGhhdC5jb20+Cj4gPiA+IFNlbnQ6IFNhdHVyZGF5 LCBPY3RvYmVyIDgsIDIwMTYgMTozNToxOSBQTQo+ID4gPiBTdWJqZWN0OiBSZTogW09wZW4tRkNv RV0gSXNzdWUgd2l0aCBmY19leGNoX2FsbG9jIGZhaWxpbmcgaW5pdGlhdGVkIGJ5Cj4gPiA+IGZj X3F1ZXVlY29tbWFuZCBvbiBOVU1BIG9yIGxhcmdlCj4gPiA+IGNvbmZpZ3VyYXRpb25zIHdpdGgg SW50ZWwgaXhnYmUgcnVubmluZyBGQ09FCj4gPiA+IAo+ID4gPiBPbiAxMC8wOC8yMDE2IDAyOjU3 IFBNLCBMYXVyZW5jZSBPYmVybWFuIHdyb3RlOgo+ID4gPiA+IEhlbGxvCj4gPiA+ID4KPiA+ID4g PiBUaGlzIGhhcyBiZWVuIGEgdG91Z2ggcHJvYmxlbSB0byBjaGFzZSBkb3duIGJ1dCB3YXMgZmlu YWxseSByZXByb2R1Y2VkLgo+ID4gPiA+IFRoaXMgaXNzdWUgaXMgYXBwYXJlbnQgb24gUkhFTCBr ZXJuZWxzIGFuZCB1cHN0cmVhbSBzbyBqdXN0aWZpZWQKPiA+ID4gPiByZXBvcnRpbmcKPiA+ID4g PiBoZXJlLgo+ID4gPiA+Cj4gPiA+ID4gSXRzIG91dCB0aGVyZSBhbmQgc29tZSBtYXkgbm90IGJl IGF3YXJlIGl0cyBldmVuIGhhcHBlbmluZyBvdGhlciB0aGFuCj4gPiA+ID4gdmVyeQo+ID4gPiA+ IHNsb3cKPiA+ID4gID4gcGVyZm9ybWFuY2UgdXNpbmcgaXhnYmUgYW5kIHNvZnR3YXJlIEZDT0Ug b24gbGFyZ2UgY29uZmlndXJhdGlvbnMuCj4gPiA+ID4KPiA+ID4gPiBVcHN0cmVhbSBLZXJuZWwg dXNlZCBmb3IgcmVwcm9kdWNpbmcgaXMgNC44LjAKPiA+ID4gPgo+ID4gPiA+IEkvTyBwZXJmb3Jt YW5jZSB3YXMgbm90ZWQgdG8gYmUgdmVyeSBpbXBhY3RlZCBvbiBhIGxhcmdlIE5VTUEgdGVzdAo+ ID4gPiA+IHN5c3RlbQo+ID4gPiA+ICg2NCBDUFVTIDQgTlVNQSBub2RlcykgcnVubmluZyB0aGUg c29mdHdhcmUgZmNvZSBzdGFjayB3aXRoIEludGVsIGl4Z2JlCj4gPiA+ID4gaW50ZXJmYWNlcy4K PiA+ID4gPiBBZnRlciBjYXB0dXJpbmcgYmxrdHJhY2VzIHdlIHNhdyBmb3IgZXZlcnkgSS9PIHRo ZXJlIHdhcyBhdCBsZWFzdCBvbmUKPiA+ID4gPiBibGtfcmVxdWV1ZV9yZXF1ZXN0IGFuZCBzb21l dGltZXMgaHVuZHJlZHMgb3IgbW9yZS4KPiA+ID4gPiBUaGlzIHJlc3VsdGVkIGluIElPUFMgcmF0 ZXMgYmVpbmcgbWFyZ2luYWwgYXQgYmVzdCB3aXRoIHF1ZXVpbmcgYW5kCj4gPiA+ID4gaGlnaAo+ ID4gPiA+IHdhaXQgdGltZXMuCj4gPiA+ID4gQWZ0ZXIgbmFycm93aW5nIHRoaXMgZG93biB3aXRo IHN5c3RlbXRhcCBhbmQgdHJhY2UtY21kIHdlIGFkZGVkIGZ1cnRoZXIKPiA+ID4gPiBkZWJ1ZyBh bmQgaXQgd2FzIGFwcGFyZW50IHRoaXMgd2FzIGR1ZXMgdG8gU0NTSV9NTFFVRVVFX0hPU1RfQlVT WSBiZWluZwo+ID4gPiA+IHJldHVybmVkLgo+ID4gPiA+IFNvIEkvTyBwYXNzZXMgYnV0IHZlcnkg c2xvd2x5IGFzIGl0IGNvbnN0YW50bHkgaGF2aW5nIHRvIGJlIHJlcXVldWVkLgo+ID4gPiA+Cj4g PiA+ID4gVGhlIGlkZW50aWNhbCBjb25maWd1cmF0aW9uIGluIG91ciBsYWIgd2l0aCBhIHNpbmds ZSBOVU1BIG5vZGUgYW5kIDQKPiA+ID4gPiBDUFVTCj4gPiA+ID4gZG9lcyBub3Qgc2VlIHRoaXMg aXNzdWUgYXQgYWxsLgo+ID4gPiA+IFRoZSBzYW1lIGxhcmdlIHN5c3RlbSB0aGF0IHJlcHJvZHVj ZXMgdGhpcyB3YXMgYm9vdGVkIHdpdGggbnVtYT1vZmYgYW5kCj4gPiA+ID4gc3RpbGwgc2VlcyB0 aGUgaXNzdWUuCj4gPiA+ID4KPiA+ID4gSGF2ZSB5b3UgdGVzdGVkIHdpdGggbXkgRkNvRSBmaXhl cz8KPiA+ID4gSSd2ZSBkb25lIHF1aXRlIHNvbWUgZml4ZXMgZm9yIGxpYmZjL2Zjb2UsIGFuZCBp dCB3b3VsZCBiZSBuaWNlIHRvIHNlZQo+ID4gPiBob3cgdGhlIHBhdGNoZXMgYmVoYXZlIHdpdGgg dGhpcyBzZXR1cC4KPiA+ID4gCj4gPiA+ID4gVGhlIGZsb3cgaXMgYXMgZm9sbG93czoKPiA+ID4g Pgo+ID4gPiA+IEZyb20gd2l0aCBmY19xdWV1ZWNvbW1hbmQKPiA+ID4gPiAgICAgICAgICAgZmNf ZmNwX3BrdF9zZW5kKCkgY2FsbHMgZmNfZmNwX2NtZF9zZW5kKCkgY2FsbHMKPiA+ID4gPiAgICAg ICAgICAgdHQuZXhjaF9zZXFfc2VuZCgpIHdoaWNoIGNhbGxzIGZjX2V4Y2hfc2VxX3NlbmQKPiA+ ID4gPgo+ID4gPiA+IHRoaXMgZmFpbHMgYW5kIHJldHVybnMgTlVMTCBpbiBmY19leGNoX2FsbG9j KCkgYXMgdGhlIGxpc3QgdHJhdmVyYWwKPiA+ID4gPiBuZXZlcgo+ID4gPiA+IGNyZWF0ZXMgYSBt YXRjaC4KPiA+ID4gPgo+ID4gPiA+IHN0YXRpYyBzdHJ1Y3QgZmNfc2VxICpmY19leGNoX3NlcV9z ZW5kKHN0cnVjdCBmY19scG9ydCAqbHBvcnQsCj4gPiA+ID4gCQkJCSAgICAgICBzdHJ1Y3QgZmNf ZnJhbWUgKmZwLAo+ID4gPiA+IAkJCQkgICAgICAgdm9pZCAoKnJlc3ApKHN0cnVjdCBmY19zZXEg KiwKPiA+ID4gPiAJCQkJCQkgICAgc3RydWN0IGZjX2ZyYW1lICpmcCwKPiA+ID4gPiAJCQkJCQkg ICAgdm9pZCAqYXJnKSwKPiA+ID4gPiAJCQkJICAgICAgIHZvaWQgKCpkZXN0cnVjdG9yKShzdHJ1 Y3QgZmNfc2VxICosCj4gPiA+ID4gCQkJCQkJCSAgdm9pZCAqKSwKPiA+ID4gPiAJCQkJICAgICAg IHZvaWQgKmFyZywgdTMyIHRpbWVyX21zZWMpCj4gPiA+ID4gewo+ID4gPiA+IAlzdHJ1Y3QgZmNf ZXhjaCAqZXA7Cj4gPiA+ID4gCXN0cnVjdCBmY19zZXEgKnNwID0gTlVMTDsKPiA+ID4gPiAJc3Ry dWN0IGZjX2ZyYW1lX2hlYWRlciAqZmg7Cj4gPiA+ID4gCXN0cnVjdCBmY19mY3BfcGt0ICpmc3Ag PSBOVUxMOwo+ID4gPiA+IAlpbnQgcmMgPSAxOwo+ID4gPiA+Cj4gPiA+ID4gCWVwID0gZmNfZXhj aF9hbGxvYyhscG9ydCwgZnApOyAgICAgKioqKiogQ2FsbGVkIEhlcmUgYW5kIGZhaWxzCj4gPiA+ ID4gCWlmICghZXApIHsKPiA+ID4gPiAJCWZjX2ZyYW1lX2ZyZWUoZnApOwo+ID4gPiA+IAkJcHJp bnRrKCJSSERFQlVHOiBJbiBmY19leGNoX3NlcV9zZW5kIHJldHVybmVkIE5VTEwgYmVjYXVzZSAh ZXAgd2l0aAo+ID4gPiA+IAkJZXAKPiA+ID4gPiAJCT0KPiA+ID4gPiAJCSVwXG4iLGVwKTsKPiA+ ID4gPiAJCXJldHVybiBOVUxMOwo+ID4gPiA+IAl9Cj4gPiA+ID4gLi4KPiA+ID4gPiAuLgo+ID4g PiA+IF0KPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gIGZjX2V4Y2hfYWxsb2MoKSAtIEFsbG9jYXRl IGFuIGV4Y2hhbmdlIGZyb20gYW4gRU0gb24gYQo+ID4gPiA+ICAqCS8qKgo+ID4gPiA+ICAqCSAg ICAgbG9jYWwgcG9ydCdzIGxpc3Qgb2YgRU1zLgo+ID4gPiA+ICAqIEBscG9ydDogVGhlIGxvY2Fs IHBvcnQgdGhhdCB3aWxsIG93biB0aGUgZXhjaGFuZ2UKPiA+ID4gPiAgKiBAZnA6CSAgIFRoZSBG QyBmcmFtZSB0aGF0IHRoZSBleGNoYW5nZSB3aWxsIGJlIGZvcgo+ID4gPiA+ICAqCj4gPiA+ID4g ICogVGhpcyBmdW5jdGlvbiB3YWxrcyB0aGUgbGlzdCBvZiBleGNoYW5nZSBtYW5hZ2VyKEVNKQo+ ID4gPiA+ICAqIGFuY2hvcnMgdG8gc2VsZWN0IGFuIEVNIGZvciBhIG5ldyBleGNoYW5nZSBhbGxv Y2F0aW9uLiBUaGUKPiA+ID4gPiAgKiBFTSBpcyBzZWxlY3RlZCB3aGVuIGEgTlVMTCBtYXRjaCBm dW5jdGlvbiBwb2ludGVyIGlzIGVuY291bnRlcmVkCj4gPiA+ID4gICogb3Igd2hlbiBhIGNhbGwg dG8gYSBtYXRjaCBmdW5jdGlvbiByZXR1cm5zIHRydWUuCj4gPiA+ID4gICovCj4gPiA+ID4gc3Rh dGljIGlubGluZSBzdHJ1Y3QgZmNfZXhjaCAqZmNfZXhjaF9hbGxvYyhzdHJ1Y3QgZmNfbHBvcnQg Kmxwb3J0LAo+ID4gPiA+IAkJCQkJICAgIHN0cnVjdCBmY19mcmFtZSAqZnApCj4gPiA+ID4gewo+ ID4gPiA+IAlzdHJ1Y3QgZmNfZXhjaF9tZ3JfYW5jaG9yICplbWE7Cj4gPiA+ID4KPiA+ID4gPiAJ bGlzdF9mb3JfZWFjaF9lbnRyeShlbWEsICZscG9ydC0+ZW1hX2xpc3QsIGVtYV9saXN0KQo+ID4g PiA+IAkJaWYgKCFlbWEtPm1hdGNoIHx8IGVtYS0+bWF0Y2goZnApKQo+ID4gPiA+IAkJCXJldHVy biBmY19leGNoX2VtX2FsbG9jKGxwb3J0LCBlbWEtPm1wKTsKPiA+ID4gPiAJcmV0dXJuIE5VTEw7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiogTmV2ZXIgbWF0Y2hlcyBzbwo+ ID4gPiA+IAlyZXR1cm5zIE5VTEwKPiA+ID4gPiB9Cj4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IFJI REVCVUc6IEluIGZjX2V4Y2hfc2VxX3NlbmQgcmV0dXJuZWQgTlVMTCBiZWNhdXNlICFlcCB3aXRo IGVwID0gKG51bGwpCj4gPiA+ID4gUkhERUJVRzogcmMgLTEgd2l0aCAhc2VxID0gKG51bGwpIGFm dGVyIGNhbGxpbmcgdHQuZXhjaF9zZXFfc2VuZAo+ID4gPiA+IHdpdGhpbgo+ID4gPiA+IGZjX2Zj cF9jbWRfc2VuZAo+ID4gPiA+IFJIREVCVUc6IHJjIG5vbiB6ZXJvIGluIDp1bmxvY2sgd2l0aGlu IGZjX2ZjcF9jbWRfc2VuZCA9IC0xCj4gPiA+ID4gUkhERUJVRzogSW4gZmNfZmNwX3BrdF9zZW5k LCB3ZSByZXR1cm5lZCBmcm9tICByYyA9Cj4gPiA+ID4gbHBvcnQtPnR0LmZjcF9jbWRfc2VuZAo+ ID4gPiA+IHdpdGggcmMgPSAtMQo+ID4gPiA+Cj4gPiA+ID4gUkhERUJVRzogV2UgaGl0IFNDU0lf TUxRVUVVRV9IT1NUX0JVU1kgaW4gZmNfcXVldWVjb21tYW5kIHdpdGggcnZhbCBpbgo+ID4gPiA+ IGZjX2ZjcF9wa3Rfc2VuZD0tMQo+ID4gPiA+Cj4gPiA+ID4gSSBhbSB0cnlpbmcgdG8gZ2V0IG15 IGhlYWQgYXJvdW5kIHdoeSBhIGxhcmdlIG11bHRpLW5vZGUgc3lzdGVtIHNlZXMKPiA+ID4gPiB0 aGlzCj4gPiA+ID4gaXNzdWUgZXZlbiB3aXRoIE5VTUEgZGlzYWJsZWQuCj4gPiA+ID4gSGFzIGFu eWJvZHkgc2VlbiB0aGlzIG9yIGlzIGF3YXJlIG9mIHRoaXMgd2l0aCBjb25maWd1cmF0aW9ucyAo dXNpbmcKPiA+ID4gPiBmY19xdWV1ZWNvbW1hbmQpCj4gPiA+ID4KPiA+ID4gPiBJIGFtIGNvbnRp bnVpbmcgdG8gYWRkIGRlYnVnIHRvIG5hcnJvdyB0aGlzIGRvd24uCj4gPiA+ID4KPiA+ID4gWW91 IG1pZ2h0IGFjdHVhbGx5IGJlIGhpdHRpbmcgYSBsaW1pdGF0aW9uIGluIHRoZSBleGNoYW5nZSBt YW5hZ2VyIGNvZGUuCj4gPiA+IFRoZSBsaWJmYyBleGNoYW5nZSBtYW5hZ2VyIHRyaWVzIHRvIGJl IHJlYWxseSBjbGV2ZXIgYW5kIHdpbGwgYXNzaWduIGEKPiA+ID4gcGVyLWNwdSBleGNoYW5nZSBt YW5hZ2VyIChwcm9iYWJseSB0byBpbmNyZWFzZSBsb2NhbGl0eSkuIEhvd2V2ZXIsIHdlCj4gPiA+ IG9ubHkgaGF2ZSBhIGxpbWl0ZWQgbnVtYmVyIG9mIGV4Y2hhbmdlcywgc28gb24gbGFyZ2Ugc3lz dGVtcyB3ZSBtaWdodAo+ID4gPiBhY3R1YWxseSBydW4gaW50byBhIGV4Y2hhbmdlIHN0YXJ2YXRp b24gcHJvYmxlbSwgd2hlcmUgd2UgaGF2ZSBpbiB0aGVvcnkKPiA+ID4gZW5vdWdoIGZyZWUgZXhj aGFuZ2VzLCBidXQgbm9uZSBmb3IgdGhlIHN1Ym1pdHRpbmcgY3B1Lgo+ID4gPiAKPiA+ID4gKFBl cnNvbmFsbHksIHRoZSBleGNoYW5nZSBtYW5hZ2VyIGNvZGUgaXMgaW4gdXJnZW50IG5lZWQgb2Yg cmV3b3JraW5nLgo+ID4gPiBJdCBzaG91bGQgYmUgcmVwbGFjZWQgYnkgdGhlIHNiaXRtYXAgY29k ZSBmcm9tIE9tYXIpLgo+ID4gPiAKPiA+ID4gRG8gY2hlY2sgaG93IG1hbnkgZnJlZSBleGNoYW5n ZXMgYXJlIGFjdHVhbGx5IHByZXNlbnQgZm9yIHRoZSBzdGFsbGluZwo+ID4gPiBDUFU7IGl0IG1p Z2h0IGJlIHRoYXQgeW91IHJ1biBpbnRvIGEgc3RhcnZhdGlvbiBpc3N1ZS4KPiA+ID4gCj4gPiA+ IENoZWVycywKPiA+ID4gCj4gPiA+IEhhbm5lcwo+ID4gPiAtLQo+ID4gPiBEci4gSGFubmVzIFJl aW5lY2tlCQkgICAgICB6U2VyaWVzICYgU3RvcmFnZQo+ID4gPiBoYXJlQHN1c2UuZGUJCQkgICAg ICArNDkgOTExIDc0MDUzIDY4OAo+ID4gPiBTVVNFIExJTlVYIFByb2R1Y3RzIEdtYkgsIE1heGZl bGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZwo+ID4gPiBHRjogSi4gSGF3biwgSi4gR3VpbGQsIEYu IEltZW5kw7ZyZmZlciwgSFJCIDE2NzQ2IChBRyBOw7xybmJlcmcpCj4gPiA+IAo+ID4gSGkgSGFu bmVzLAo+ID4gVGhhbmtzIGZvciByZXNwb25kaW5nCj4gPiAKPiA+IEkgYW0gYWRkaW5nIGFkZGl0 aW9uYWwgZGVidWcgYXMgSSB0eXBlIHRoaXMuCj4gPiAKPiA+IEkgYW0gdXNpbmcgbGF0ZXN0IGxp bnV4LW5leHQsIEkgYXNzdW1lIHlvdXIgbGF0ZXN0IEZDT0UgYXJlIG5vdCBpbiB0aGVyZQo+ID4g eWV0Lgo+ID4gV2hhdCBpcyBwdXp6bGluZyBoZXJlIGlzIGEgaWRlbnRpY2FsIGtlcm5lbCB3aXRo IDEgbnVtYSBub2RlIGFuZCBvbmx5IDhHQgo+ID4gbWVtb3J5IGRvZXMgbm90IHNlZSB0aGlzLgo+ ID4gU3VyZWx5IGlmIEkgd2FzIHJ1bm5pbmcgb3V0IG9mIGV4Y2hhbmdlcyB0aGF0IHdvdWxkIHNo b3cgdXAgb24gdGhlIHNtYWxsZXIKPiA+IHN5c3RlbSBhcyB3ZWxsLgo+ID4gSSBhbSBhYmxlIHRv IGdldCB0byAxNTAwIElPUFMvc2VjIHdpdGggdGhlIHNhbWUgSS9PIGV4ZXJjaXNlciBvbiB0aGUK PiA+IHNtYWxsZXIKPiA+IHN5c3RlbSB3aXRoIFpFUk8gYmxrX3JlcXVldWVfcmVxdWVzdCgpIGNh bGxzLgo+ID4gQWdhaW4sIHNhbWUga2VybmVsLCBzYW1lIGl4Z2JlIHNhbWUgRkNPRSBzd2l0Y2gg ZXRjLgo+ID4gCj4gPiBJIHRyYWNlZCBzcGVjaWZpY2FsbHkgdGhvc2UgaW5pdGlhbGx5IGJlY2F1 c2Ugd2Ugc2F3IGl0IGluIHRoZSBibGt0cmFjZS4KPiA+IAo+ID4gSSBkb250IHVuZGVyc3RhbmQg dGhlIG1hdGNoIHN0dWZmIGdvaW5nIG9uIGluIHRoZSBsaXN0IHJldmVyc2FsIHN0dWZmIGhlcmUK PiA+IHZlcnkgd2VsbCwgc3RpbGwgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvZGUgZmxvdy4K PiA+IHRoZSBib29sIG1hdGNoKCkgSSBhbHNvIGNhbm5vdCBmaWd1cmUgb3V0IGZyb20gdGhlIGNv ZGUuCj4gPiBJdCBydW5zIHRoZSBmY19leGNoX2VtX2FsbG9jKCkgaWYgZXRoZXIgYm9vbCAqbWF0 Y2ggaXMgZmFsc2Ugb3IgKm1hdGNoKGZwKQo+ID4gSSBjYW4ndCBmaW5kIHRoZSBhY3R1YWwgY29k ZSBmb3IgdGhlIG1hdGNoLCB3aWxsIGhhdmUgdG8gZ2V0IGEgdm1jb3JlIHRvCj4gPiBmaW5kCj4g PiBpdC4KPiA+IAo+ID4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZjX2V4Y2ggKmZjX2V4Y2hfYWxs b2Moc3RydWN0IGZjX2xwb3J0ICpscG9ydCwKPiA+ICAJCQkJCSAgICBzdHJ1Y3QgZmNfZnJhbWUg KmZwKQo+ID4gIHsKPiA+IAlzdHJ1Y3QgZmNfZXhjaF9tZ3JfYW5jaG9yICplbWE7Cj4gPiAKPiA+ ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShlbWEsICZscG9ydC0+ZW1hX2xpc3QsIGVtYV9saXN0KQo+ ID4gIAkJaWYgKCFlbWEtPm1hdGNoIHx8IGVtYS0+bWF0Y2goZnApKQo+ID4gIAkJCXJldHVybiBm Y19leGNoX2VtX2FsbG9jKGxwb3J0LCBlbWEtPm1wKTsKPiA+ICAJcmV0dXJuIE5VTEw7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKiogTmV2ZXIgbWF0Y2hlcyBzbwo+ID4gCXJl dHVybnMgTlVMTAo+ID4gIH0KPiA+IAo+ID4gV2lsbCByZXBsYXkgYWZ0ZXIgc29tZSBmaW5lciBk ZWJ1ZyBoYXMgYmVlbiBhZGRlZAo+ID4gCj4gPiBBZ2FpbiBzcGVjaWZpYyB0byBmY19xdWV1ZWNv bW1hbmQgYW5kIFMvVyBGQ09FLCBub3QgYW4gaXNzdWUgd2l0aCB0aGUgRi9DCj4gPiBxdWV1ZWNv bW1hbmQgaW4gdGhlIEhCQSB0ZW1wbGF0ZXMgZnJvIGV4YW1wbGUgbHBmYyBvciBxbGEyeHh4IGFu ZCBhbG9zIG5vdAo+ID4gYXBwbGljYWJsZSB0byBmdWxsIG9mZmxvYWQgRkNPRSBsaWtlIHRoZSBF bXVsZXggY2FyZHMuCj4gPiBUaGFua3MKPiA+IExhdXJlbmNlCj4gPiAtLQo+ID4gVG8gdW5zdWJz Y3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXNj c2kiIGluCj4gPiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVs Lm9yZwo+ID4gTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9t YWpvcmRvbW8taW5mby5odG1sCj4gPiAKPiBIaSBIYW5uZXMKPiAKPiBSZXBseWluZyB0byBteSBv d24gcHJpb3IgbWVzc2FnZS4KPiBBZGRlZCB0aGUgYWRkaXRpb25hbCBkZWJ1Zwo+IAo+IFJIREVC VUc6IGluIGZjX2V4Y2hfZW1fYWxsb2M6IHJldHVybmluZyBOVUxMIGluIGVycjogcGF0aCBqdW1w ZWQgZnJvbQo+IGFsbG9jYXRlIG5ldyBleGNoIGZyb20gcG9vbCBiZWNhdXNlIGluZGV4ID09IHBv b2wtPm5leHRfaW5kZXgKPiBSSERFQlVHOiBJbiBmY19leGNoX3NlcV9zZW5kIHJldHVybmVkIE5V TEwgYmVjYXVzZSAhZXAgd2l0aCBlcCA9Cj4gKG51bGwpCj4gUkhERUJVRzogcmMgLTEgd2l0aCAh c2VxID0gICAgICAgICAgIChudWxsKSBhZnRlciBjYWxsaW5nIHR0LmV4Y2hfc2VxX3NlbmQKPiB3 aXRoaW4gZmNfZmNwX2NtZF9zZW5kCj4gUkhERUJVRzogcmMgbm9uIHplcm8gaW4gOnVubG9jayB3 aXRoaW4gZmNfZmNwX2NtZF9zZW5kID0gLTEKPiBSSERFQlVHOiBJbiBmY19mY3BfcGt0X3NlbmQs IHdlIHJldHVybmVkIGZyb20gIHJjID0gbHBvcnQtPnR0LmZjcF9jbWRfc2VuZAo+IHdpdGggcmMg PSAtMQo+IFJIREVCVUc6IFdlIGhpdCBTQ1NJX01MUVVFVUVfSE9TVF9CVVNZIGluIGZjX3F1ZXVl Y29tbWFuZCB3aXRoIHJ2YWwgaW4KPiBmY19mY3BfcGt0X3NlbmQ9LTEKPiAKPiBTbyB3ZSBhcmUg YWN0dWFsbHkgZmFpbGluZyBpbiBmY19leGNoX2VtX2FsbG9jIHdpdGggaW5kZXggPT0KPiBwb29s LT5uZXh0X2luZGV4LCBub3QgaW4gdGhlIGxpc3QgdHJhdmVyc2FsIGFzIEkgb3JpZ2luYWxseSB0 aG91Z2h0Lgo+IAo+IFRoaXMgc2VlbXMgdG8gdGhlbiBtYXRjaCB3aGF0IHlvdXIgc2FpZCwgd2Ug YXJlIHJ1bm5pbmcgb3V0IG9mIGV4Y2hhbmdlcy4KPiAKPiBEdXJpbmcgbXkgdGVzdGluZywgaWYg SSBzdGFydCBtdWx0aXBsZSBkZCdzIGFuZCByYW1wIHRoZW0gdXAsIGZvciBleGFtcGxlIDEwMAo+ IHBhcmFsbGVsIGRkJ3Mgd2l0aCA2NCBDUFVTIEkgc2VlIHRoaXMuCj4gT24gdGhlIDQgQ1BVIHN5 c3RlbSBpdCBkb2VzIG5vdCBoYXBwZW4uCj4gCj4gLyoqCj4gICogZmNfZXhjaF9lbV9hbGxvYygp IC0gQWxsb2NhdGUgYW4gZXhjaGFuZ2UgZnJvbSBhIHNwZWNpZmllZCBFTS4KPiAgKiBAbHBvcnQ6 IFRoZSBsb2NhbCBwb3J0IHRoYXQgdGhlIGV4Y2hhbmdlIGlzIGZvcgo+ICAqIEBtcDogICAgVGhl IGV4Y2hhbmdlIG1hbmFnZXIgdGhhdCB3aWxsIGFsbG9jYXRlIHRoZSBleGNoYW5nZQo+ICAqCj4g ICogUmV0dXJucyBwb2ludGVyIHRvIGFsbG9jYXRlZCBmY19leGNoIHdpdGggZXhjaCBsb2NrIGhl bGQuCj4gICovCj4gc3RhdGljIHN0cnVjdCBmY19leGNoICpmY19leGNoX2VtX2FsbG9jKHN0cnVj dCBmY19scG9ydCAqbHBvcnQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBmY19leGNoX21nciAqbXApCj4gewo+ICAgICAgICAgc3RydWN0IGZjX2V4Y2gg KmVwOwo+ICAgICAgICAgdW5zaWduZWQgaW50IGNwdTsKPiAgICAgICAgIHUxNiBpbmRleDsKPiAg ICAgICAgIHN0cnVjdCBmY19leGNoX3Bvb2wgKnBvb2w7Cj4gCj4gICAgICAgICAvKiBhbGxvY2F0 ZSBtZW1vcnkgZm9yIGV4Y2hhbmdlICovCj4gICAgICAgICBlcCA9IG1lbXBvb2xfYWxsb2MobXAt PmVwX3Bvb2wsIEdGUF9BVE9NSUMpOwo+ICAgICAgICAgaWYgKCFlcCkgewo+ICAgICAgICAgICAg ICAgICBhdG9taWNfaW5jKCZtcC0+c3RhdHMubm9fZnJlZV9leGNoKTsKPiAgICAgICAgICAgICAg ICAgZ290byBvdXQ7Cj4gICAgICAgICB9Cj4gICAgICAgICBtZW1zZXQoZXAsIDAsIHNpemVvZigq ZXApKTsKPiAKPiAgICAgICAgIGNwdSA9IGdldF9jcHUoKTsKPiAgICAgICAgIHBvb2wgPSBwZXJf Y3B1X3B0cihtcC0+cG9vbCwgY3B1KTsKPiAgICAgICAgIHNwaW5fbG9ja19iaCgmcG9vbC0+bG9j ayk7Cj4gICAgICAgICBwdXRfY3B1KCk7Cj4gCj4gICAgICAgICAvKiBwZWVrIGNhY2hlIG9mIGZy ZWUgc2xvdCAqLwo+ICAgICAgICAgaWYgKHBvb2wtPmxlZnQgIT0gRkNfWElEX1VOS05PV04pIHsK PiAgICAgICAgICAgICAgICAgaW5kZXggPSBwb29sLT5sZWZ0Owo+ICAgICAgICAgICAgICAgICBw b29sLT5sZWZ0ID0gRkNfWElEX1VOS05PV047Cj4gICAgICAgICAgICAgICAgIGdvdG8gaGl0Owo+ ICAgICAgICAgfQo+ICAgICAgICAgaWYgKHBvb2wtPnJpZ2h0ICE9IEZDX1hJRF9VTktOT1dOKSB7 Cj4gICAgICAgICAgICAgICAgIGluZGV4ID0gcG9vbC0+cmlnaHQ7Cj4gICAgICAgICAgICAgICAg IHBvb2wtPnJpZ2h0ID0gRkNfWElEX1VOS05PV047Cj4gICAgICAgICAgICAgICAgIGdvdG8gaGl0 Owo+ICAgICAgICAgfQo+IAo+ICAgICAgICAgaW5kZXggPSBwb29sLT5uZXh0X2luZGV4Owo+ICAg ICAgICAgLyogYWxsb2NhdGUgbmV3IGV4Y2ggZnJvbSBwb29sICovCj4gICAgICAgICB3aGlsZSAo ZmNfZXhjaF9wdHJfZ2V0KHBvb2wsIGluZGV4KSkgewo+ICAgICAgICAgICAgICAgICBpbmRleCA9 IGluZGV4ID09IG1wLT5wb29sX21heF9pbmRleCA/IDAgOiBpbmRleCArIDE7Cj4gICAgICAgICAg ICAgICAgIGlmIChpbmRleCA9PSBwb29sLT5uZXh0X2luZGV4KQo+ICAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gZXJyOwo+IAo+IEkgd2lsbCBhcHBseSB5b3VyIGxhdGVzdCBGQ09FIHBhdGNo ZXMsIGNhbiB5b3UgcHJvdmlkZSBhIGxpbmsgdG8geW91ciB0cmVlLgo+IAo+IFRoYW5rcwo+IExh dXJlbmNlCj4gClJlcGx5aW5nIHRvIG15IG93biBtZXNzYWdlLgoKV2UgZmFpbCB3aGVuIGluZGV4 PTAgYW5kIHBvb2wtPm5leHRfaW5kZXg9MAoKUkhERUJVRzogaW4gZmNfZXhjaF9lbV9hbGxvYzog aW5kZXg9MCBwb29sLT5uZXh0X2luZGV4KSA9IDAKUkhERUJVRzogaW4gZmNfZXhjaF9lbV9hbGxv YzogcmV0dXJuaW5nIE5VTEwgaW4gZXJyOiBwYXRoIGp1bXBlZCBmcm9tICBhbGxvY2F0ZSBuZXcg ZXhjaCBmcm9tIHBvb2wgYmVjYXVzZSBpbmRleCA9PSBwb29sLT5uZXh0X2luZGV4ClJIREVCVUc6 IEluIGZjX2V4Y2hfc2VxX3NlbmQgcmV0dXJuZWQgTlVMTCBiZWNhdXNlICFlcCB3aXRoIGVwID0g ICAgICAgICAgIChudWxsKQpSSERFQlVHOiByYyAtMSB3aXRoICFzZXEgPSAgICAgICAgICAgKG51 bGwpIGFmdGVyIGNhbGxpbmcgdHQuZXhjaF9zZXFfc2VuZCAgd2l0aGluIGZjX2ZjcF9jbWRfc2Vu ZApSSERFQlVHOiByYyBub24gemVybyBpbiA6dW5sb2NrIHdpdGhpbiBmY19mY3BfY21kX3NlbmQg PSAtMQpSSERFQlVHOiBJbiBmY19mY3BfcGt0X3NlbmQsIHdlIHJldHVybmVkIGZyb20gIHJjID0g bHBvcnQtPnR0LmZjcF9jbWRfc2VuZCB3aXRoIHJjID0gLTEKClNvbWUgYWRkaXRpb25hbCBpbmZv cm1hdGlvbi4KCkRvZXMgbm90IGhhcHBlbiB3aXRoIEYvQyBhZGFwdGVycyB3aXRoIHNhbWUgbG9h ZCB0byBzYW1lIGFycmF5LCBqdXN0IHZpYSBscGZjIGFuZCBxbGEyeHh4LgpIb3dldmVyIHdlIGtu b3cgdGhhdCB0aG9zZSBoYXZlIHRoZWlyIG93biBxdWV1ZWNvbW1hbmQgaW4gdGhlaXIgc2NzaV90 ZW1wbGF0ZQoKSSBjYXBwZWQgdGhlIG51bWJlciBvZiBDUFVTIHRvIDQgYW5kIHJ1bm5pbmcgZW5v dWdoIHBhcmFsbGVsIGRkJ3MgSSBjYW4gc3RpbGwgdHJpZ2dlciB0aGlzLgoKW3Jvb3RAZmNvZS10 ZXN0LXJoZWw2IH5dIyBudW1hY3RsIC0taGFyZHdhcmUKYXZhaWxhYmxlOiAxIG5vZGVzICgwKQpu b2RlIDAgY3B1czogMCAxIDIgMwpub2RlIDAgc2l6ZTogMTQ3NDQ1IE1CCm5vZGUgMCBmcmVlOiAx NDM2NzYgTUIKbm9kZSBkaXN0YW5jZXM6Cm5vZGUgICAwCiAgMDogIDEwIAogICAgCkl0cyBzdGls bCBhIHB1enpsZSB3aHkgdGhlIHNtYWxsZXIgc3lzdGVtIGluIG15IGxhYiBuZXZlciBzZWVzIHRo aXMgd2l0aCBzYW1lIGlkZW50aWNhbCBjb25maWd1cmF0aW9uLgoKUnVubmluZyAKZm9yIGkgaW4g YHNlcSAxIDMwYDsgZG8gZGQgaWY9L2Rldi9zZHQgb2Y9L2Rldi9udWxsIGJzPTUxMmsgaWZsYWc9 ZGlyZWN0IGNvdW50PTEwICYgZG9uZSAgICoqKiBEb2VzIG5vdCB0cmlnZ2VyCgpJbmNyZW1lbnQg dG8gNDAKZm9yIGkgaW4gYHNlcSAxIDQwYDsgZG8gZGQgaWY9L2Rldi9zZHQgb2Y9L2Rldi9udWxs IGJzPTUxMmsgaWZsYWc9ZGlyZWN0IGNvdW50PTEwICYgZG9uZSAgICoqKiBUcmlnZ2VycyB0aGUg Y29uZGl0aW9uCgpJIHN1c3BlY3Qgd2UgaGF2ZSBtYW55IGNvbmZpZ3VyYXRpb25zIG91dCB0aGVy ZSBydW5uaW5nIHRoZSBpeGdiZSBhbmQgc29mdHdhcmUgZGVmaW5lIEZDT0Ugc3RhY2tzIHRoYXQg YXJlIG5vdCBldmVuIGF3YXJlIHRoZXkgYXJlIHNlZWluZyB0aGlzIGlzc3VlLgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmNvZS1kZXZlbCBtYWlsaW5n IGxpc3QKZmNvZS1kZXZlbEBvcGVuLWZjb2Uub3JnCmh0dHA6Ly9saXN0cy5vcGVuLWZjb2Uub3Jn L21haWxtYW4vbGlzdGluZm8vZmNvZS1kZXZlbAo=