From mboxrd@z Thu Jan 1 00:00:00 1970 From: majianpeng Subject: [PATCH 4/4] raid1: Rewrite the implementation of iobarrier. Date: Wed, 28 Aug 2013 19:40:54 +0800 Message-ID: <201308281940511854138@gmail.com> Reply-To: majianpeng Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64 Return-path: Sender: linux-raid-owner@vger.kernel.org To: NeilBrown Cc: linux-raid List-Id: linux-raid.ids VGhlcmUgaXMgYSBpb2JhcnJpZXIgaW4gcmFpZDEgYmVjYXVzZSB0aGUgY29udGVuZCBiZXR3ZWVu IG5vcm1hbElPIGFuZA0KcmVzeW5jSU8uSXQgc3VzcGVuZCBhbGwgbm9ybWFsIElPIHdoZW4gcmV5 c3luYy4NCkJ1dCBpZiBub3JtYWxJTyBpcyBvdXRyYW5nZSB0aGUgcmVzeW5jIHdpbmR3b3MsdGhl cmUgaXMgbm8gY29udGVuZC4NClNvIEkgcmV3cml0ZSB0aGUgaW9iYXJyaWVyLg0KDQpJIHBhdGl0 aW9uIHRoZSB3aG9sZSBzcGFjZSBpbnRvIGZpdmUgcGFydHMuDQp8LS0tLS0tLS0tfC0tLS0tLS0t LS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18DQogICAgICAgICBQYSAg ICBuZXh0X3Jlc3luYyAgIHN0YXJ0X25leHRfd2luZG93ICAgICAgUGINCg0KRmlyc3RseSBpIGlu dHJvZHVjZSBzb21lIGNvbmNlcHRzOg0KMTpSRVNZTkNfV0lORE9XOiBGb3IgcmVzeW5jLCB0aGVy ZSBhcmUgMzIgc3luYyByZXF1ZXN0cyBhdCBtb3N0LkEgc3luYw0KcmVxdWVzdCBpcyBSRVNZTkNf QkxPQ0tfU0laRSg2NCoxMDI0KS5TbyB0aGUgUkVTWU5DX1dJTkRPVyBpcyAzMiAqDQpSRVNZTkNf QkxPQ0tfU0laRSwgdGhhdCBpcyAyTUIuDQoyOk5FWFRfTk9STUFMSU9fRElTVEFOQ0U6IGl0IGlu ZGljYXRlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5leHRfcmVzeW5jDQphbmQgc3RhcnRfbmV4dF93 aW5kb3cuSXQgYWxzbyBpbmRpY2F0ZSB0aGUgZGlzdGFuY2UgYmV0d2Vlbg0Kc3RhcnRfbmV4dF93 aW5kb3cgYW5kIFBiLk5vdyBpdCBpcyAzICogUkVTWU5DX1dJTkRPV19TSVpFLkl0IGNhbiB0dW5l Lg0KMzpuZXh0X3Jlc3luYyBtZWFuIHRoZSBuZXh0IHN0YXJ0IHNlY3RvciB3aGljaCB3aWxsIGJl aW5nIGRvIHN5bmMuDQo0OlBhIG1lYW5zIGEgcG9zaXRpb24gd2hpY2ggYmVmb3JlIFJFU1lOQ19X SU5ET1cgZGlzdGFuY2UgZnJvbQ0KbmV4dF9yZXN5bmMuDQo1OnN0YXJ0X25leHRfd2luZG93IG1l YW5zIGEgcG9zaXRpb24gd2hpY2ggYWZ0ZXIgTkVYVF9OT1JNQUxJT19ESVNUQU5DRSBkaXN0YW5j ZSBmcm9tDQpuZXh0X3Jlc3luYy5Gb3Igbm9ybWFsaW8gYWZ0ZXIgdGhpcyBwb3NpdGlvbixpdCBj YW4ndCB3YWl0IHJlc3luY2lvDQo2OlBiIG1lYW5zIGEgcG9zaXRpb24gd2hpY2ggYWZ0ZXIgMiAq IE5FWFRfTk9STUFMSU9fRElTVEFOQ0UgZGlzdGFuY2UgZnJvbQ0KbmV4dF9yZXN5bmMuDQo3OmN1 cnJlbnRfd2luZG93X3JlcXVlc3RzIG1lYW5zIHRoZSBjb3VudCBvZiBub3JtYWxJTyBiZXR3ZWVu IFBiIGFuZA0Kc3RhcnRfbmV4dF93aW5kb3cuDQo4Om5leHRfd2luZG93X3JlcXVlc3RzIG1lYW5z IHRoZSBjb3VudCBvZiBub25tYWxJTyBhZnRlciBQYi4NCg0KTm9ybWFsSU8gd2lsbCBiZSBwYXJ0 aXRpb25lZCBpbnRvIGZvdXIgdHlwZXM6DQpOb0lPMTogaXQgbWVhbnMgdGhlIGVuZCBzZWN0b3Ig b2YgYmlvIGlzIHNtYWxsZXIgb3IgZXF1YWwgdGhlIFBhLg0KTm9JTzI6IGl0IG1lYW5zIHRoZSBz dGFydCBzZWN0b3Igb2YgYmlvIGxhcmdlciBvciBlcXVhbCBQYg0KTm9JTzM6IGl0IG1lYW5zIHRo ZSBzdGFydCBzZWN0b3Igb2YgYmlvIGxhcmdlciBvciBlcXVhbAlzdGFydF9uZXh0X3dpbmRvdy4N Ck5vSU80OiBpdCBtZWFucyB0aGUgbG9jYXRpb24gYmV0d2VlbiBQYSBhbmQgc3RhcnRfbmV4dF93 aW5kb3cNCg0KRm9yIE5vSU8xLGl0IGRvbid0IHVzZSBpb2JhcnJpZXIuDQpGb3IgTm9JTzQsaXQg dXNlZCB0aGUgb3JpZ2luYWwgaW9iYXJyaWVyIG1lY2hhbmlzbS5UaGUgbm9ybmFsSU8gYW5kDQpz eW5jSU8gbXVzdCBiZSBjb250ZW5kLg0KRm9yIE5vSU8yLzMsIGkgYWRkIHR3byBmaWxlZCBpbiBz dHJ1Y3QgcjFjb25mICJjdXJyZW50X3dpbmRvd19yZXF1ZXN0cywNCm5leHRfd2luZG93X3JlcXVl c3RzIi5UaGV5IGluZGljYXRlIHRoZSBjb3VudCBvZiB0d28gdHlwZXMuDQpGb3IgdGhvc2UsIHRo ZXkgZG9uJ3Qgd2FpdC5UaGV5IG9ubHkgYWRkIHRoZSByZWxldmFudCBwYXJhbWV0ZXIuDQoNCkZv ciByZXN5bmMgYWN0aW9uLCBpZiB0aGVyZSBhcmUgTm9JTzRzLCBpdCBtdXN0IGJlIHdhaXQuSWYg bm90LGl0DQpmb3J3YXJkLkJ1dCBpZiBjdXJyZW50X3dpbmRvd19yZXF1ZXN0cyA+IDAgYW5kIHN5 bmMgYWN0aW9uIHJlYWNoZWQgdG8gdGhlDQpzdGFydF9uZXh0X3dpbmRvdyxpdCBtdXN0IHdhaXQg dW50aWwgdGhlIGN1cnJlbnRfd2luZG93X3JlcXVlc3RzIGJlY2FtZQ0KemVyby5JZiBjdXJyZW50 X3dpbmRvd19yZXF1ZXN0cyBiZWNhbWUgemVybyx0aGUgc3RhcnRfbmV4dF93aW5kb3cgYWxzbw0K Zm9yd2FyZC4gVGhlIGN1cnJlbnRfd2luZG93X3JlcXVlc3RzIHdpbGwgcmVwbGFjZWQgYnkNCm5l eHRfd2luZG93X3JlcXVlc3RzLg0KDQpUaGVyZSBpcyBhIHByb2JsZW0gd2hpY2ggd2hlbiBhbmQg aG93IHRvIGNoYW5nZSBmcm9tIE5vSU8yIHRvIE5vSU8zLk9ubHkNCnNvLCB0aGUgc3luYyBhY3Rp b24gY2FuIGZvcndhcmQuDQoNCkkgYWRkIGEgZmlsZWQgaW4gc3RydWN0IHIxY29uZiAic3RhcnRf bmV4dF93aW5kb3ciLi5XaGF0IGNvbmRpdGlvbiB3aWxsIGNoYW5nZT8NCkE6IGlmIHN0YXJ0X25l eHRfd2luZG93ID09IE1heFNlY3RvciwgaXQgbWVhbnMgdGhlcmUgYXJlIG5vIE5vSU8yLzMuDQog ICBTbyBzdGFydF9uZXh0X3dpbmRvdyA9IG5leHRfcmVzeW5jICsgTkVYVF9OT1JNQUxJT19ESVNU QU5DRQ0KQjogaWYgY3VycmVudF93aW5kb3dfcmVxdWVzdHMgPT0gMCAmJiBuZXh0X3dpbmRvd19y ZXF1ZXN0cyAhPSAwLCBpdA0KICAgbWVhbnMgc3RhcnRfbmV4dF93aW5kb3cgbW92ZSB0byBQYg0K DQpUaGVyZSBpcyBhbnRob3IgcHJvYmxlbSB3aGljaCBob3cgdG8gZGlmZmVyZW50aWF0ZSB3aGVu IE5vSU8yIGJlY2FtZQ0KTm9JTzMuDQpGb3IgZXhhbXBsZSwgdGhlcmUgYXJlIG1hbnkgYmlvcyB3 aGljaCBhcmUgTm9JTzIgYW5kIGEgYmlvIHdoaWNoIGlzDQpOb0lPMy4gTm9JTzMgZmlyc3RseSBj b21wbGV0ZWQsc28gdGhlIGJpb3Mgb2YgTm9JTzIgYmVjYW1lIE5vSU8zLg0KQXQgZ2VuZXJpbCx3 ZSBzaG91bGQgdXNlIGZsYWdzIGFuZCBsaXN0X2hlYWQuIFRoZSBjb2RlcyBzaG91bGQ6DQo+bGlz dF9zcGxpY2VfaW5pdChOb0lPMiwgTm9JTzMpOw0KPmN1cnJlbnRfd2luZG93X3JlcXVlc3RzID0g bmV4dF93aW5kb3dfcmVxdWVzdHM7DQo+bmV4dF93aW5kb3dfcmVxdWVzdHMgPSAwOw0KPmxpc3Rf Zm9yX2VhY2hfZW50cnkoTm9JTzMpew0KPiAgICAgICBjbGVhcl9iaXQoTm9JTzJfRkxBRyksDQo+ ICAgICAgIHNldF9iaXQoTm9JTzNfRkxBRywNCj59DQpJZiB0aGVyZSBhcmUgbWFueSBOb0lPMiwg aXQgd2lsbCB0YWtlIHRvbyBsb25nIGluIGxpc3RfZm9yX2VhY2hfZW50cnkuDQpBdm9pZCB0aGlz LCBpIGFkZCBhIGZpbGVkIGluIHN0cnVjdCByMWJpbyAic3RhcnRfbmV4dF93aW5kb3ciLg0KSSB1 c2VkIHRoaXMgdG8gcmVjb3JkIHRoZSBwb3NpdGlvbiBjb25mLT5zdGFydF9uZXh0X3dpbmRvdyB3 aGVuIGNhbGwgd2FpdF9iYXJyaWVyIGluIGZ1bmMNCm1ha2VfcmVxdWVzdC4NCkZvciBOb0lPMS80 LCB0aGUgdmFsdWUgaXMgemVyby4NCkluIGZ1bmMgYWxsb3dfYmFycmllciwgaXQgY2hlY2sgdGhl IGNvbmYtPnN0YXJ0X25leHRfd2luZG93DQpJZiByMWJpby0+c3RhdF9uZXh0X3dpbmRvdyA9PSBj b25mLT5zdGFydF9uZXh0X3dpbmRvdyxpdCBtZWFuDQp0aGVyZSBpcyBubyB0cmFuc2l0aW9uIHdo aWNoIE5vSU8yIHRvIE5vSU8zLkluIHRoaXMgY29uZHRpb24NCiBpZiBiaW8tPmJpX3NlY3RvciA+ IGNvbmYtPnN0YXJ0X25leHRfd2luZG93ICsgTkVYVF9OT1JNQUxJT19ESVNUQU5DRQ0KICAgIGl0 IG1lYW5zIHRoZSBiaW8gaXMgTm9JTzI7DQogZWxzZQ0KICAgIGl0IG1lYW5zIHRoZSBiaW8gc2kg Tm9JTzMuDQoNCklmIHIxYmlvLT5zdGFydF9uZXh0X3dpbmRvdyAhPSBjb25mLT5zdGFydF9uZXh0 X3dpbmRvdyxpdCBtZWFuDQp0aGVyZSBpcyBhIHRybmFzaXRvbiB3aGljaCBOb0lPMiB0byBOb0lP My5CZWNhdXNlIHRoZXJlIGlzIGF0IG1vc3Qgb25lDQp0cmFuc3Rpb25zLlNvIGl0IG9ubHkgbWVh bnMgdGhlIGJpbyBpcyBOb0lPMi4NCg0KRm9yIG9uZSBiaW8sdGhlcmUgYXJlIG1hbnkgcjFiaW8u U28gd2UgbWFrZSBzdXJlIHRoZQ0KcjFiaW8tPnN0YXJ0X25leHRfd2luZG93IGlzIHRoZSBzYW1l IHZhbHVlLg0KSWYgd2UgbWV0IGJsb2NrZWRfZGV2LCBpdCBtdXN0IGNhbGwgYWxsb3dfYmFycmll ciBhbmQgd2FpdF9iYXJyaWVyLg0KU28gdGhlIGZpcnN0IGFuZCB0aGUgc2Vjb25kIHZhbHVlIG9m IGNvbmYtPnN0YXJ0X25leHRfd2luZG93IHdpbGwNCmNoYW5nZS5JZiB0aGVyZSBhcmUgbWFueSBy MWJpbydzIHdpdGggZGlmZmVybmV0IHN0YXJ0X25leHRfd2luZG93Lg0KRm9yIHRoZSByZWxldmFu dCBiaW8sIGl0IGRlcGVudCBvbiB0aGUgbGFzdCB2YWx1ZSBvZiByMWJpby4NCkl0IHdpbGwgY2F1 c2UgZXJyb3IuVG8gYXZvaWQgdGhpcywgd2UgbXVzdCB3YWl0IHByZXZpb3VzIHIxYmlvcyBjb21w bGV0ZXMuDQoNClNpZ25lZC1vZmYtYnk6IEppYW5wZW5nIE1hIDxtYWppYW5wZW5nQGdtYWlsLmNv bT4NCi0tLQ0KIGRyaXZlcnMvbWQvcmFpZDEuYyB8IDEyMCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQ0KIGRyaXZlcnMvbWQvcmFpZDEuaCB8ICAx NCArKysrKysrDQogMiBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRp b25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQxLmMgYi9kcml2ZXJzL21kL3Jh aWQxLmMNCmluZGV4IDA4ZjA3NmEuLjQ0OTk4NzAgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21kL3Jh aWQxLmMNCisrKyBiL2RyaXZlcnMvbWQvcmFpZDEuYw0KQEAgLTY2LDcgKzY2LDggQEANCiAgKi8N CiBzdGF0aWMgaW50IG1heF9xdWV1ZWRfcmVxdWVzdHMgPSAxMDI0Ow0KIA0KLXN0YXRpYyB2b2lk IGFsbG93X2JhcnJpZXIoc3RydWN0IHIxY29uZiAqY29uZik7DQorc3RhdGljIHZvaWQgYWxsb3df YmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mLCBzZWN0b3JfdCBzdGFydF9uZXh0X3dpbmRvdywN CisJCQkJc2VjdG9yX3QgYmlfc2VjdG9yKTsNCiBzdGF0aWMgdm9pZCBsb3dlcl9iYXJyaWVyKHN0 cnVjdCByMWNvbmYgKmNvbmYpOw0KIA0KIHN0YXRpYyB2b2lkICogcjFiaW9fcG9vbF9hbGxvYyhn ZnBfdCBnZnBfZmxhZ3MsIHZvaWQgKmRhdGEpDQpAQCAtMjI3LDYgKzIyOCw4IEBAIHN0YXRpYyB2 b2lkIGNhbGxfYmlvX2VuZGlvKHN0cnVjdCByMWJpbyAqcjFfYmlvKQ0KIAlzdHJ1Y3QgYmlvICpi aW8gPSByMV9iaW8tPm1hc3Rlcl9iaW87DQogCWludCBkb25lOw0KIAlzdHJ1Y3QgcjFjb25mICpj b25mID0gcjFfYmlvLT5tZGRldi0+cHJpdmF0ZTsNCisJc2VjdG9yX3Qgc3RhcnRfbmV4dF93aW5k b3cgPSByMV9iaW8tPnN0YXJ0X25leHRfd2luZG93Ow0KKwlzZWN0b3JfdCBiaV9zZWN0b3IgPSBi aW8tPmJpX3NlY3RvcjsNCiANCiAJaWYgKGJpby0+YmlfcGh5c19zZWdtZW50cykgew0KIAkJdW5z aWduZWQgbG9uZyBmbGFnczsNCkBAIC0yMzQsNiArMjM3LDExIEBAIHN0YXRpYyB2b2lkIGNhbGxf YmlvX2VuZGlvKHN0cnVjdCByMWJpbyAqcjFfYmlvKQ0KIAkJYmlvLT5iaV9waHlzX3NlZ21lbnRz LS07DQogCQlkb25lID0gKGJpby0+YmlfcGh5c19zZWdtZW50cyA9PSAwKTsNCiAJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmNvbmYtPmRldmljZV9sb2NrLCBmbGFncyk7DQorCQkvKg0KKwkJICog bWFrZV9yZXF1ZXN0IG1pZ2h0IGJlIHdhaXRpbmcgZm9yDQorCQkgKiBiaV9waHlzX3NlY3RvcnMg dG8gZGVjcmVhc2UNCisJCSAqLw0KKwkJd2FrZV91cCgmY29uZi0+d2FpdF9iYXJyaWVyKTsNCiAJ fSBlbHNlDQogCQlkb25lID0gMTsNCiANCkBAIC0yNDUsNyArMjUzLDcgQEAgc3RhdGljIHZvaWQg Y2FsbF9iaW9fZW5kaW8oc3RydWN0IHIxYmlvICpyMV9iaW8pDQogCQkgKiBXYWtlIHVwIGFueSBw b3NzaWJsZSByZXN5bmMgdGhyZWFkIHRoYXQgd2FpdHMgZm9yIHRoZSBkZXZpY2UNCiAJCSAqIHRv IGdvIGlkbGUuDQogCQkgKi8NCi0JCWFsbG93X2JhcnJpZXIoY29uZik7DQorCQlhbGxvd19iYXJy aWVyKGNvbmYsIHN0YXJ0X25leHRfd2luZG93LCBiaV9zZWN0b3IpOw0KIAl9DQogfQ0KIA0KQEAg LTgyNywxMCArODM1LDE5IEBAIHN0YXRpYyB2b2lkIHJhaXNlX2JhcnJpZXIoc3RydWN0IHIxY29u ZiAqY29uZikNCiAJLyogYmxvY2sgYW55IG5ldyBJTyBmcm9tIHN0YXJ0aW5nICovDQogCWNvbmYt PmJhcnJpZXIrKzsNCiANCi0JLyogTm93IHdhaXQgZm9yIGFsbCBwZW5kaW5nIElPIHRvIGNvbXBs ZXRlICovDQorCS8qIEZvciB0aG9zZSBjb25kaXRpb25zLCB3ZSBtdXN0IHdhaXQNCisJKiBBOmFy cmF5IGlzIGluIGZyb3plbiBzdGF0ZS4NCisJKiBCOmNvbmYtPm5yX3BlbmRpbmcgPiAwIG1lYW4g aW4gc3luYyB3aW5kb3cgdGhlcmUgYXJlIG5vcm1hbCBiaW9zLg0KKwkqIEM6dG90YWwgYmFycmll ciBhcmUgbW9yZSB0aGFuIFJFU1lOQ19ERVBUSA0KKwkqIEQ6Y29uZi0+bmV4dF9yZXN5bmMgKyBS RVNZTkNfU0VDVE9SUyA+IGNvbmYtPnN0YXJ0X25leHRfd2luZG93DQorCSogICBtZWFuIHRoZSBu ZXh0IG5vcm5hbElPIHdpbmRvdyBub3QgY2xlYXIgYW5kIG5leHQgc3luY0lPIHdpbGwgYmUgaW50 bw0KKwkqICAgdGhpcyB3aW5kb3cuDQorCSovDQogCXdhaXRfZXZlbnRfbG9ja19pcnEoY29uZi0+ d2FpdF9iYXJyaWVyLA0KIAkJCSAgICAhY29uZi0+YXJyYXlfZnJvemVuICYmIA0KLQkJCSAgICAh Y29uZi0+bnJfcGVuZGluZyAmJiBjb25mLT5iYXJyaWVyIDwgUkVTWU5DX0RFUFRILA0KKwkJCSAg ICAhY29uZi0+bnJfcGVuZGluZyAmJiBjb25mLT5iYXJyaWVyIDwgUkVTWU5DX0RFUFRIICYmDQor CQkJICAgIChjb25mLT5uZXh0X3Jlc3luYyArIFJFU1lOQ19TRUNUT1JTDQorCQkJCSAgICA8PSBj b25mLT5zdGFydF9uZXh0X3dpbmRvdyksDQogCQkJICAgIGNvbmYtPnJlc3luY19sb2NrKTsNCiAN CiAJc3Bpbl91bmxvY2tfaXJxKCZjb25mLT5yZXN5bmNfbG9jayk7DQpAQCAtODQ2LDEwICs4NjMs NDMgQEAgc3RhdGljIHZvaWQgbG93ZXJfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mKQ0KIAl3 YWtlX3VwKCZjb25mLT53YWl0X2JhcnJpZXIpOw0KIH0NCiANCi1zdGF0aWMgdm9pZCB3YWl0X2Jh cnJpZXIoc3RydWN0IHIxY29uZiAqY29uZikNCitzdGF0aWMgYm9vbCBuZWVkX3RvX3dhaXRfZm9y X3N5bmMoc3RydWN0IHIxY29uZiAqY29uZiwgc3RydWN0IGJpbyAqYmlvKQ0KIHsNCisJYm9vbCB3 YWl0ID0gZmFsc2U7DQorDQorCWlmIChjb25mLT5hcnJheV9mcm96ZW4gfHwgIWJpbykNCisJCXdh aXQgPSB0cnVlOw0KKwllbHNlIGlmIChjb25mLT5iYXJyaWVyICYmIGJpb19kYXRhX2RpcihiaW8p ID09IFdSSVRFKSB7DQorCQlpZiAoY29uZi0+bmV4dF9yZXN5bmMgPCBSRVNZTkNfV0lORE9XX1NF Q1RPUlMpDQorCQkJd2FpdCA9IHRydWU7DQorCQllbHNlIGlmIChjb25mLT5uZXh0X3Jlc3luYyAt IFJFU1lOQ19XSU5ET1dfU0VDVE9SUyA+PQ0KKwkJCQliaW9fZW5kX3NlY3RvcihiaW8pKQ0KKwkJ CXdhaXQgPSBmYWxzZTsNCisJCWVsc2UgaWYgKGNvbmYtPm5leHRfcmVzeW5jICsgTkVYVF9OT1JN QUxJT19ESVNUQU5DRQ0KKwkJCQk8PSBiaW8tPmJpX3NlY3Rvcikgew0KKwkJCWlmIChjb25mLT5z dGFydF9uZXh0X3dpbmRvdyA9PSBNYXhTZWN0b3IpDQorCQkJCWNvbmYtPnN0YXJ0X25leHRfd2lu ZG93ID0NCisJCQkJCWNvbmYtPm5leHRfcmVzeW5jICsNCisJCQkJCQlORVhUX05PUk1BTElPX0RJ U1RBTkNFOw0KKw0KKwkJCWlmICgoY29uZi0+c3RhcnRfbmV4dF93aW5kb3cgKyBORVhUX05PUk1B TElPX0RJU1RBTkNFKQ0KKwkJCQk8PSBiaW8tPmJpX3NlY3RvcikNCisJCQkJY29uZi0+bmV4dF93 aW5kb3dfcmVxdWVzdHMrKzsNCisJCQllbHNlDQorCQkJCWNvbmYtPmN1cnJlbnRfd2luZG93X3Jl cXVlc3RzKys7DQorCQl9IGVsc2UNCisJCQl3YWl0ID0gdHJ1ZTsNCisJfQ0KKw0KKwlyZXR1cm4g d2FpdDsNCit9DQorDQorc3RhdGljIHNlY3Rvcl90IHdhaXRfYmFycmllcihzdHJ1Y3QgcjFjb25m ICpjb25mLCBzdHJ1Y3QgYmlvICpiaW8pDQorew0KKwlzZWN0b3JfdCBzZWN0b3IgPSAwOw0KKw0K IAlzcGluX2xvY2tfaXJxKCZjb25mLT5yZXN5bmNfbG9jayk7DQotCWlmIChjb25mLT5iYXJyaWVy KSB7DQorCWlmIChuZWVkX3RvX3dhaXRfZm9yX3N5bmMoY29uZiwgYmlvKSkgew0KIAkJY29uZi0+ bnJfd2FpdGluZysrOw0KIAkJLyogV2FpdCBmb3IgdGhlIGJhcnJpZXIgdG8gZHJvcC4NCiAJCSAq IEhvd2V2ZXIgaWYgdGhlcmUgYXJlIGFscmVhZHkgcGVuZGluZw0KQEAgLTg2OCwxNiArOTE4LDQy IEBAIHN0YXRpYyB2b2lkIHdhaXRfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mKQ0KIAkJCQkg ICAgICFiaW9fbGlzdF9lbXB0eShjdXJyZW50LT5iaW9fbGlzdCkpKSwNCiAJCQkJICAgIGNvbmYt PnJlc3luY19sb2NrKTsNCiAJCWNvbmYtPm5yX3dhaXRpbmctLTsNCi0JfQ0KKwl9IGVsc2UgaWYg KGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFICYmDQorCQkJYmlvLT5iaV9zZWN0b3IgPj0gY29u Zi0+c3RhcnRfbmV4dF93aW5kb3cpDQorCQlzZWN0b3IgPSBjb25mLT5zdGFydF9uZXh0X3dpbmRv dzsNCiAJY29uZi0+bnJfcGVuZGluZysrOw0KIAlzcGluX3VubG9ja19pcnEoJmNvbmYtPnJlc3lu Y19sb2NrKTsNCisJcmV0dXJuIHNlY3RvcjsNCiB9DQogDQotc3RhdGljIHZvaWQgYWxsb3dfYmFy cmllcihzdHJ1Y3QgcjFjb25mICpjb25mKQ0KK3N0YXRpYyB2b2lkIGFsbG93X2JhcnJpZXIoc3Ry dWN0IHIxY29uZiAqY29uZiwgc2VjdG9yX3Qgc3RhcnRfbmV4dF93aW5kb3csDQorCQkJCXNlY3Rv cl90IGJpX3NlY3RvcikNCiB7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQorDQogCXNwaW5fbG9j a19pcnFzYXZlKCZjb25mLT5yZXN5bmNfbG9jaywgZmxhZ3MpOw0KIAljb25mLT5ucl9wZW5kaW5n LS07DQorCWlmIChzdGFydF9uZXh0X3dpbmRvdykgew0KKwkJaWYgKHN0YXJ0X25leHRfd2luZG93 ID09IGNvbmYtPnN0YXJ0X25leHRfd2luZG93KSB7DQorCQkJaWYgKGNvbmYtPnN0YXJ0X25leHRf d2luZG93ICsgTkVYVF9OT1JNQUxJT19ESVNUQU5DRQ0KKwkJCQk8PSBiaV9zZWN0b3IpDQorCQkJ CWNvbmYtPm5leHRfd2luZG93X3JlcXVlc3RzLS07DQorCQkJZWxzZQ0KKwkJCQljb25mLT5jdXJy ZW50X3dpbmRvd19yZXF1ZXN0cy0tOw0KKwkJfSBlbHNlDQorCQkJY29uZi0+Y3VycmVudF93aW5k b3dfcmVxdWVzdHMtLTsNCisNCisJCWlmICghY29uZi0+Y3VycmVudF93aW5kb3dfcmVxdWVzdHMp IHsNCisJCQlpZiAoY29uZi0+bmV4dF93aW5kb3dfcmVxdWVzdHMpIHsNCisJCQkJY29uZi0+Y3Vy cmVudF93aW5kb3dfcmVxdWVzdHMgPQ0KKwkJCQkJY29uZi0+bmV4dF93aW5kb3dfcmVxdWVzdHM7 DQorCQkJCWNvbmYtPm5leHRfd2luZG93X3JlcXVlc3RzID0gMDsNCisJCQkJY29uZi0+c3RhcnRf bmV4dF93aW5kb3cgKz0NCisJCQkJCU5FWFRfTk9STUFMSU9fRElTVEFOQ0U7DQorCQkJfSBlbHNl DQorCQkJCWNvbmYtPnN0YXJ0X25leHRfd2luZG93ID0gTWF4U2VjdG9yOw0KKwkJfQ0KKwl9DQog CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNvbmYtPnJlc3luY19sb2NrLCBmbGFncyk7DQogCXdh a2VfdXAoJmNvbmYtPndhaXRfYmFycmllcik7DQogfQ0KQEAgLTEwMTIsNiArMTA4OCw3IEBAIHN0 YXRpYyB2b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICog YmlvKQ0KIAlpbnQgZmlyc3RfY2xvbmU7DQogCWludCBzZWN0b3JzX2hhbmRsZWQ7DQogCWludCBt YXhfc2VjdG9yczsNCisJc2VjdG9yX3Qgc3RhcnRfbmV4dF93aW5kb3c7DQogDQogCS8qDQogCSAq IFJlZ2lzdGVyIHRoZSBuZXcgcmVxdWVzdCBhbmQgd2FpdCBpZiB0aGUgcmVjb25zdHJ1Y3Rpb24N CkBAIC0xMDQxLDcgKzExMTgsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1k ZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykNCiAJCWZpbmlzaF93YWl0KCZjb25mLT53YWl0 X2JhcnJpZXIsICZ3KTsNCiAJfQ0KIA0KLQl3YWl0X2JhcnJpZXIoY29uZik7DQorCXN0YXJ0X25l eHRfd2luZG93ID0gd2FpdF9iYXJyaWVyKGNvbmYsIGJpbyk7DQogDQogCWJpdG1hcCA9IG1kZGV2 LT5iaXRtYXA7DQogDQpAQCAtMTE2Miw2ICsxMjM5LDcgQEAgcmVhZF9hZ2FpbjoNCiANCiAJZGlz a3MgPSBjb25mLT5yYWlkX2Rpc2tzICogMjsNCiAgcmV0cnlfd3JpdGU6DQorCXIxX2Jpby0+c3Rh cnRfbmV4dF93aW5kb3cgPSBzdGFydF9uZXh0X3dpbmRvdzsNCiAJYmxvY2tlZF9yZGV2ID0gTlVM TDsNCiAJcmN1X3JlYWRfbG9jaygpOw0KIAltYXhfc2VjdG9ycyA9IHIxX2Jpby0+c2VjdG9yczsN CkBAIC0xMjMwLDE0ICsxMzA4LDI0IEBAIHJlYWRfYWdhaW46DQogCWlmICh1bmxpa2VseShibG9j a2VkX3JkZXYpKSB7DQogCQkvKiBXYWl0IGZvciB0aGlzIGRldmljZSB0byBiZWNvbWUgdW5ibG9j a2VkICovDQogCQlpbnQgajsNCisJCXNlY3Rvcl90IG9sZCA9IHN0YXJ0X25leHRfd2luZG93Ow0K IA0KIAkJZm9yIChqID0gMDsgaiA8IGk7IGorKykNCiAJCQlpZiAocjFfYmlvLT5iaW9zW2pdKQ0K IAkJCQlyZGV2X2RlY19wZW5kaW5nKGNvbmYtPm1pcnJvcnNbal0ucmRldiwgbWRkZXYpOw0KIAkJ cjFfYmlvLT5zdGF0ZSA9IDA7DQotCQlhbGxvd19iYXJyaWVyKGNvbmYpOw0KKwkJYWxsb3dfYmFy cmllcihjb25mLCBzdGFydF9uZXh0X3dpbmRvdywgYmlvLT5iaV9zZWN0b3IpOw0KIAkJbWRfd2Fp dF9mb3JfYmxvY2tlZF9yZGV2KGJsb2NrZWRfcmRldiwgbWRkZXYpOw0KLQkJd2FpdF9iYXJyaWVy KGNvbmYpOw0KKwkJc3RhcnRfbmV4dF93aW5kb3cgPSB3YWl0X2JhcnJpZXIoY29uZiwgYmlvKTsN CisJCS8qDQorCQkgKiBXZSBtdXN0IG1ha2Ugc3VyZSB0aGUgbXVsdGkgcjFiaW9zIG9mIGJpbyBo YXZlDQorCQkgKiB0aGUgc2FtZSB2YWx1ZSBvZiBhZnRlcl90aHJlZXRpbWVzX3Jlc3luY19zZWN0 b3INCisJCSAqLw0KKwkJaWYgKGJpby0+YmlfcGh5c19zZWdtZW50cyAmJiBvbGQgJiYNCisJCQlv bGQgIT0gc3RhcnRfbmV4dF93aW5kb3cpDQorCQkJLyp3YWl0IHRoZSBmb3JtZXIgcjFiaW8ocykg Y29tcGxldGVkKi8NCisJCQl3YWl0X2V2ZW50KGNvbmYtPndhaXRfYmFycmllciwNCisJCQkJCWJp by0+YmlfcGh5c19zZWdtZW50cyA9PSAxKTsNCiAJCWdvdG8gcmV0cnlfd3JpdGU7DQogCX0NCiAN CkBAIC0xNDM3LDExICsxNTI1LDE0IEBAIHN0YXRpYyB2b2lkIHByaW50X2NvbmYoc3RydWN0IHIx Y29uZiAqY29uZikNCiANCiBzdGF0aWMgdm9pZCBjbG9zZV9zeW5jKHN0cnVjdCByMWNvbmYgKmNv bmYpDQogew0KLQl3YWl0X2JhcnJpZXIoY29uZik7DQotCWFsbG93X2JhcnJpZXIoY29uZik7DQor CXdhaXRfYmFycmllcihjb25mLCBOVUxMKTsNCisJYWxsb3dfYmFycmllcihjb25mLCAwLCAwKTsN CiANCiAJbWVtcG9vbF9kZXN0cm95KGNvbmYtPnIxYnVmX3Bvb2wpOw0KIAljb25mLT5yMWJ1Zl9w b29sID0gTlVMTDsNCisNCisJY29uZi0+bmV4dF9yZXN5bmMgPSAwOw0KKwljb25mLT5zdGFydF9u ZXh0X3dpbmRvdyA9IE1heFNlY3RvcjsNCiB9DQogDQogc3RhdGljIGludCByYWlkMV9zcGFyZV9h Y3RpdmUoc3RydWN0IG1kZGV2ICptZGRldikNCkBAIC0yNzEyLDYgKzI4MDMsOSBAQCBzdGF0aWMg c3RydWN0IHIxY29uZiAqc2V0dXBfY29uZihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQ0KIAljb25mLT5w ZW5kaW5nX2NvdW50ID0gMDsNCiAJY29uZi0+cmVjb3ZlcnlfZGlzYWJsZWQgPSBtZGRldi0+cmVj b3ZlcnlfZGlzYWJsZWQgLSAxOw0KIA0KKwljb25mLT5zdGFydF9uZXh0X3dpbmRvdyA9IE1heFNl Y3RvcjsNCisJY29uZi0+Y3VycmVudF93aW5kb3dfcmVxdWVzdHMgPSBjb25mLT5uZXh0X3dpbmRv d19yZXF1ZXN0cyA9IDA7DQorDQogCWVyciA9IC1FSU87DQogCWZvciAoaSA9IDA7IGkgPCBjb25m LT5yYWlkX2Rpc2tzICogMjsgaSsrKSB7DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9yYWlk MS5oIGIvZHJpdmVycy9tZC9yYWlkMS5oDQppbmRleCAzMzFhOThhLi4wNzQyNWExIDEwMDY0NA0K LS0tIGEvZHJpdmVycy9tZC9yYWlkMS5oDQorKysgYi9kcml2ZXJzL21kL3JhaWQxLmgNCkBAIC00 MSw2ICs0MSwxOSBAQCBzdHJ1Y3QgcjFjb25mIHsNCiAJICovDQogCXNlY3Rvcl90CQluZXh0X3Jl c3luYzsNCiANCisJLyp3aGVuIHJhaWQxIHN0YXJ0IHJlc3luYyx3ZSBkaXZpZGUgcmFpZCBpbnRv IGZvdXIgcGFydGl0aW9ucw0KKwkgKiB8LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0t LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfA0KKwkgKiAgICAgICAgbmV4dF9yZXN5bmMgICBz dGFydF9uZXh0X3dpbmRvdyAgICAgICAgUGMNCisJICogTm93IHN0YXJ0X25leHRfd2luZG93ID0g bmV4dF9yZXN5bmMgKyBORVhUX05PUk1BTElPX0RJU1RBTkNFDQorCSAqIFBjID0gc3RhcnRfbmV4 dF93aW5kb3cgKyBORVhUX05PUk1BTElPX0RJU1RBTkNFDQorCSAqIGN1cnJlbnRfd2luZG93X3Jl cXVlc3RzIG1lYW5zIHRoZSBjb3VudCBvZiBub3JtYWxJTyBiZXR3ZWVuDQorCSAqIHN0YXJ0X25l eHRfd2luZG93IGFuZCBQYy4NCisJICogbmV4dF93aW5kb3dfcmVxdWVzdHMgbWVhbnMgdGhlIGNv dW50IG9mIG5vcm5hbElPIGFmdGVyIFBjLg0KKwkgKiAqLw0KKwlzZWN0b3JfdAkJc3RhcnRfbmV4 dF93aW5kb3c7DQorCWludAkJCWN1cnJlbnRfd2luZG93X3JlcXVlc3RzOw0KKwlpbnQJCQluZXh0 X3dpbmRvd19yZXF1ZXN0czsNCisNCiAJc3BpbmxvY2tfdAkJZGV2aWNlX2xvY2s7DQogDQogCS8q IGxpc3Qgb2YgJ3N0cnVjdCByMWJpbycgdGhhdCBuZWVkIHRvIGJlIHByb2Nlc3NlZCBieSByYWlk MWQsDQpAQCAtMTEyLDYgKzEyNSw3IEBAIHN0cnVjdCByMWJpbyB7DQogCQkJCQkJICogaW4gdGhp cyBCZWhpbmRJTyByZXF1ZXN0DQogCQkJCQkJICovDQogCXNlY3Rvcl90CQlzZWN0b3I7DQorCXNl Y3Rvcl90CQlzdGFydF9uZXh0X3dpbmRvdzsNCiAJaW50CQkJc2VjdG9yczsNCiAJdW5zaWduZWQg bG9uZwkJc3RhdGU7DQogCXN0cnVjdCBtZGRldgkJKm1kZGV2Ow0KLS0gDQoxLjguMS4yDQo=