From mboxrd@z Thu Jan 1 00:00:00 1970 From: majianpeng Subject: [PATCH 3/3] raid1: Rewrite the implementation of iobarrier. Date: Mon, 19 Aug 2013 19:58:07 +0800 Message-ID: <201308191958041664556@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 IG5vcm5hbElPIGFuZA0KcmVzeW5jSU8uSXQgc3VzcGVuZCBhbGwgbm9ybmFsIElPIHdoZW4gcmV5 c3luYy4NCkJ1dCBpZiBub3JuYWwgSU8gaXMgb3V0cmFuZ2UgdGhlIHJlc3luYyB3aW5kd29zLHRo ZXJlIGlzIG5vIGNvbnRlbmQuDQpTbyBJIHJld3JpdGUgdGhlIGlvYmFycmllci4NCg0KSSBwYXRp dGlvbiB0aGUgd2hvbGUgc3BhY2UgaW50byB0aHJlZSBwYXJ0cy4NCg0KfC0tLS0tLS0tLXwtLS0t LS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLQ0KCSAgICAgUGEgCSAg IG5leHRfcmVzeW5jCSAgIFBiCSAgICAgICBQYw0KDQpGaXJ0bHkgaSBpbnRyb2R1Y2Ugc29tZSBj b25jZXB0Og0KMTpSRVNZTkNfV0lORE9XOiBGb3IgcmVzeW5jLCB0aGVyZSBhcmUgMzIgc3luYyBy ZXF1ZXN0cyBhdCBtb3N0LkEgc3luYw0KcmVxdWVzdCBpcyBSRVNZTkNfQkxPQ0tfU0laRSg2NCox MDI0KS5TbyB0aGUgUkVTWU5DX1dJTkRPVyBpcyAzMiAqDQpSRVNZTkNfQkxPQ0tfU0laRSwgdGhh dCBpcyAyTUIuDQoyOm5leHRfcmVzeW5jIG1lYW4gdGhlIG5leHQgc3RhcnQgc2VjdG9yIHdoaWNo IHdpbGwgYmVpbmcgZG8gc3luYy4NCjM6UGEgbWVhbnMgYSBwb3NpdGlvbiB3aGljaCBiZWZvcmUg UkVTWU5DX1dJTkRPVyBkaXN0YW5jZSBmcm9tDQpuZXh0X3Jlc3luYy4NCjQ6UGIgbWVhbnMgYSBw b3NpdGlvbiB3aGljaCBhZnRlciAzICogUkVTWU5DX1dJTkRPVyBkaXN0YW5jZSBmcm9tDQpuZXh0 X3Jlc3luYy4NCjU6UGMgbWVhbnMgYSBwb3NpdGlvbiB3aGljaCBhZnRlciA2ICogUkVTWU5DX1dJ TkRPV1MgZGlzdHRhbmNlIGZyb20NCm5leHRfcmVzeW5jLg0KDQpOb3JuYWxJTyB3aWxsIGJlIHBh cnRpdGlvbmVkIGludG8gZm91ciB0eXBlcy4NCg0KTm9JTzE6IGl0IG1lYW5zIHRoZSBlbmQgc2Vj dG9yIG9mIGJpbyBpcyBzbWFsbGVyIG9yIGVxdWFsIHRoZSBQYS4NCk5vSU8yOiBpdCBtZWFucyB0 aGUgc3RhcnQgc2VjdG9yIG9mIGJpbyBsYXJnZXIgb3IgZXF1YWwgUGMuDQpOb0lPMzogaXQgbWVh bnMgdGhlIHN0YXJ0IHNlY3RvciBvZiBiaW8gbGFyZ2VyIG9yIGVxdWFsIFBiLkZvciB0aG9zZQ0K CXR5ZXBzLCBpIGRvbid0IGNhcmUgdGhlIGxvY2F0aW9uIG9mIGVuZCBzZWN0b3IuDQpOb0lPNDog aXQgbWVhbnMgdGhlIGxvY2F0aW9uIGJldHdlZW4gUGEgYW5kIFBiLg0KDQpGb3IgTm9JTzEsaXQg ZG9uJ3QgdXNlIGlvYmFycmllci4NCkZvciBOb0lPNCxpdCB1c2VkIHRoZSBvcmlnaW5hbCBpb2Jh cnJpZXIgbWVjaGFuaXNtLlRoZSBub3JuYWxJTyBhbmQNCnN5bmNJTyBtdXN0IGJlIGNvbnRlbmQu DQpGb3IgTm9JTzIvMywgaSBhZGQgdHdvIGZpbGVkIGluIHN0cnVjdCByMWNvbmYgImFmdGVyX3Jl c3luY190aHJlZV9jb3VudCwNCmFmdGVyX3Jlc3luY19zaXhfY291bnQiLlRoZXkgaW5kaWNhdGUg dGhlIGNvdW50IG9mDQp0d28gdHlwZXMuRm9yIHRob3NlLCB0aGV5IGRvbid0IHdhaXQuVGhleSBv bmx5IGFkZCB0aGUgcmVsZXZhbnQgdGhlDQpjb3VudGVyLg0KDQpGb3IgcmVzeW5jIGFjdGlvbiwg aWYgdGhlcmUgYXJlIE5vSU80cywgaXQgbXVzdCBiZSB3YWl0LklmIG5vdCxpdA0KZm9yd2FyZC5C dXQgaWYgdGhlcmUgYXJlIE5vSU8zLGl0IG11c3Qgd2FpdCB1bnRpbCB0aGUgY291bnRlciBvZiBO b0lPMw0KYmVjYW1lIHplcm8uSWYgdGhlcmUgYXJlIE5vSU8yLCBpdCBtdXN0IHdhaXQgdW50aWwg dGhlIGNvdW50ZXIgb2YgTm9JTzINCmJlY2FtZSB6ZXJvLg0KDQpUaGVyZSBpcyBhIHByb2JsZW0g d2hpY2ggd2hlbiBhbmQgaG93IHRvIGNoYW5nZSBmcm9tIE5vSU8yIHRvIE5vSU8zLk9ubHkNCnNv LCB0aGUgc3luYyBhY3Rpb24gY2FuIGZvcndhcmQuDQoNCkkgYWRkIGEgZmlsZWQgaW4gc3RydWN0 IHIxY29uZiAiYWZ0ZXJfcmVzeW5jX3NlY3RvciIuSXQgbWVhbnMgdGhlDQpwb3NpdGlvbiBQYi5X aGF0IGNvbmRpdGlvbiB3aWxsIGNoYW5nZT8NCkE6IGlmIGFmdGVyX3Jlc3luY19zZWN0b3IgPT0g TWF4U2VjdG9yLCBpdCBtZWFucyB0aGVyZSBhcmUgbm8gTm9JTzIvMy4NCiAgIFNvIGFmdGVyX3Jl c3luY19zZWN0b3IgPSBQYi4NCkI6IGlmIGFmdGVyX3Jlc3luY19zaXhfY291bnQgPT0gMCAmJiBh ZnRlcl9yZXN5bmNfc2l4X2NvdW50ICE9IDAsIGl0DQogICBtZWFucyBhZnRlcl9yZXN5bmNfc2Vj dG9yIGZvcndhcmQgMyAqIFJFU1lOQ19XSU5ET1cuDQoNClRoZXJlIGlzIGFudGhvciBwcm9ibGVt IHdoaWNoIGhvdyB0byBkaWZmZXJlbnRpYXRlIHdoZW4gTm9JTzIgYmVjYW1lDQpOb0lPMy5Gb3Ig ZXhhbXBsZTogZmlyc3RseSByMWJpb0EgaXMgTm9JTzIuQmVmb3JlIHIxYmlvQSBjb21wbGV0ZWQs DQp0aGVyZSBpcyBubyBOb0lPMy5TbyByMWJpb0Egd2lsbCBiZSBiZWNhbWUgdG8gTm9JTzMuDQpB dCBnZW5lcmlsLHdlIHNob3VsZCB1c2UgZmxhZ3MgYW5kIGxpc3RfaGVhZC4gVGhlIGNvZGVzIHNo b3VsZDoNCj5saXN0X3NwbGljZV9pbml0KHNpeF9oZWFkLCB0aHJlZV9oZWFkKTsNCj5hZnRlcl9y ZXlzbmNfdGhyZWVfY291bnQgPSBhZnRlcl9yZXN5bmNfc2l4X2NvdW50Ow0KPmFmdGVyX3Jlc3lu Y19zaXhfY291bnQgPSAwOw0KPmxpc3RfZm9yX2VhY2hfZW50cnkodGhyZWVfaGVhZCl7DQo+CWNs ZWFyX2JpdChSRVNZTkNfU0lYX0ZMQUcpLA0KPglzZXRfYml0KFJFU1lOQ19USFJFRV9GTEFHKSwN Cj59DQpJZiB0aGVyZSBhcmUgbWFueSBOb0lPMiwgaXQgd2lsbCB0YWtlIHRvbyBsb25nIGluIGxp c3RfZm9yX2VhY2hfZW50cnkuDQpBdm9pZCB0aGlzLCBpIGFkZCBhIGZpbGVkIGluIHN0cnVjdCBy MWJpbw0KImFmdGVyX3RocmVldGltZXNfcmVzeW5jX3NlY3RvciIuDQpJIHVzZWQgdGhpcyB0byBy ZWNvcmQgdGhlIHBvc2l0aW9uIFBiIHdoZW4gY2FsbCB3YWl0X2JhcnJpZXIgaW4gZnVuYw0KbWFr ZV9yZXF1ZXN0Lg0KRm9yIE5vSU8xLzQsIHRoZSB2YWx1ZSBpcyB6ZXJvLg0KSW4gZnVuYyBhbGxv d19iYXJyaWVyLCBpdCBjaGVjayB0aGUgY29uZi0+YWZ0ZXJfcmVzeW5jX3NlY3Rvci4NCklmIGFm dGVyX3RocmVldGltZXNfcmVzeW5jX3NlY3RvciA9PSBjb25mLT5hZnRlcl9yZXN5bmNfc2VjdG9y LGl0IG1lYW4NCnRoZXJlIGlzIG5vIHRyYW5zaXRpb24gd2hpY2ggTm9JTzIgdG8gTm9JTzMuSW4g dGhpcyBjb25kdGlvbg0KIGlmIGJpby0+Ymlfc2VjdG9yID4gY29uZi0+YWZ0ZXJfcmVzeW5jX3Nl Y3RvciArIDMgKiBSRVNZTkNfV0lOV09EDQogICAgaXQgbWVhbnMgdGhlIGJpbyBpcyBOb0lPMjsN CiBlbHNlDQogICAgaXQgbWVhbnMgdGhlIGJpbyBzaSBOb0lPMy4NCg0KSWYgYWZ0ZXJfdGhyZWV0 aW1lc19yZXN5bmNfc2VjdG9yICE9IGNvbmYtPmFmdGVyX3Jlc3luY19zZWN0b3IsaXQgbWVhbg0K dGhlcmUgaXMgYSB0cm5hc2l0b24gd2hpY2ggTm9JTzIgdG8gTm9JTzMuQmVjYXVzZSB0aGVyZSBp cyBhdCBtb3N0IG9uZQ0KdHJhbnN0aW9ucy5TbyBpdCBvbmx5IG1lYW5zIHRoZSBiaW8gaXMgTm9J TzIuDQoNCkZvciBvbmUgYmlvLHRoZXJlIGFyZSBtYW55IHIxYmlvLlNvIHdlIG1ha2Ugc3VyZSB0 aGUNCnIxYmlvLT5hZnRlcl90aHJlZXRpbWVzX3Jlc3luY19zZWN0b3IgaXMgdGhlIHNhbWUgdmFs dWUuDQpJZiB3ZSBtZXQgYmxvY2tlZF9kZXYsIGl0IG11c3QgY2FsbCBhbGxvd19iYXJyaWVyIGFu ZCB3YWl0X2JhcnJpZXIuDQpTbyB0aGUgZmlyc3QgYW5kIHRoZSBzZWNvbmQgdmFsdWUgb2YgY29u Zi0+YWZ0ZXJfcmVzeW5jX3NlY3RvciB3aWxsDQpjaGFuZ2UuSWYgdGhlcmUgYXJlIG1hbnkgcjFi aW8ncyB3aXRoIGRpZmZlcm5ldA0KYWZ0ZXJfdGhyZWV0aW1lc19yZXN5bmNfc2VjdG9yLkZvciB0 aGUgcmVsZXZhbnQgYmlvLCBpdCBkZXBlbnQgb24gdGhlDQpsYXN0IHZhbHVlIG9mIHIxYmlvLkl0 IHdpbGwgY2F1c2UgZXJyb3IuVG8gYXZvaWQgdGhpcywgd2UgbXVzdCB3YWl0DQpmb3JtZXIgcjFi aW9zIGNvbXBsZXRlcy4NCg0KU2lnbmVkLW9mZi1ieTogSmlhbnBlbmcgTWEgPG1hamlhbnBlbmdA Z21haWwuY29tPg0KLS0tDQogZHJpdmVycy9tZC9yYWlkMS5jIHwgMTUzICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tDQogZHJpdmVycy9tZC9yYWlk MS5oIHwgICA0ICsrDQogMiBmaWxlcyBjaGFuZ2VkLCAxMzQgaW5zZXJ0aW9ucygrKSwgMjMgZGVs ZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQxLmMgYi9kcml2ZXJzL21k L3JhaWQxLmMNCmluZGV4IDJmZDc0ZWMuLjkyOTA5ZWEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21k L3JhaWQxLmMNCisrKyBiL2RyaXZlcnMvbWQvcmFpZDEuYw0KQEAgLTY2LDcgKzY2LDkgQEANCiAg Ki8NCiBzdGF0aWMgaW50IG1heF9xdWV1ZWRfcmVxdWVzdHMgPSAxMDI0Ow0KIA0KLXN0YXRpYyB2 b2lkIGFsbG93X2JhcnJpZXIoc3RydWN0IHIxY29uZiAqY29uZik7DQorc3RhdGljIHZvaWQgYWxs b3dfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mLA0KKwkJCQlzZWN0b3JfdCBhZnRlcl90aHJl ZXRpbWVzX3Jlc3luY19zZWN0b3IsDQorCQkJCXNlY3Rvcl90IGJpX3N0YXJ0X3NlY3Rvcik7DQog c3RhdGljIHZvaWQgbG93ZXJfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mKTsNCiANCiBzdGF0 aWMgdm9pZCAqIHIxYmlvX3Bvb2xfYWxsb2MoZ2ZwX3QgZ2ZwX2ZsYWdzLCB2b2lkICpkYXRhKQ0K QEAgLTg0LDEwICs4NiwxMSBAQCBzdGF0aWMgdm9pZCByMWJpb19wb29sX2ZyZWUodm9pZCAqcjFf YmlvLCB2b2lkICpkYXRhKQ0KIH0NCiANCiAjZGVmaW5lIFJFU1lOQ19CTE9DS19TSVpFICg2NCox MDI0KQ0KLS8vI2RlZmluZSBSRVNZTkNfQkxPQ0tfU0laRSBQQUdFX1NJWkUNCisjZGVmaW5lIFJF U1lOQ19ERVBUSCAzMg0KICNkZWZpbmUgUkVTWU5DX1NFQ1RPUlMgKFJFU1lOQ19CTE9DS19TSVpF ID4+IDkpDQogI2RlZmluZSBSRVNZTkNfUEFHRVMgKChSRVNZTkNfQkxPQ0tfU0laRSArIFBBR0Vf U0laRS0xKSAvIFBBR0VfU0laRSkNCi0jZGVmaW5lIFJFU1lOQ19XSU5ET1cgKDIwNDgqMTAyNCkN CisjZGVmaW5lIFJFU1lOQ19XSU5ET1cgKFJFU1lOQ19CTE9DS19TSVpFICogUkVTWU5DX0RFUFRI KQ0KKyNkZWZpbmUgUkVTWU5DX1dJTkRPV19TRUNUT1JTIChSRVNZTkNfV0lORE9XID4+IDkpDQog DQogc3RhdGljIHZvaWQgKiByMWJ1Zl9wb29sX2FsbG9jKGdmcF90IGdmcF9mbGFncywgdm9pZCAq ZGF0YSkNCiB7DQpAQCAtMjI1LDEzICsyMjgsMTcgQEAgc3RhdGljIHZvaWQgY2FsbF9iaW9fZW5k aW8oc3RydWN0IHIxYmlvICpyMV9iaW8pDQogCXN0cnVjdCBiaW8gKmJpbyA9IHIxX2Jpby0+bWFz dGVyX2JpbzsNCiAJaW50IGRvbmU7DQogCXN0cnVjdCByMWNvbmYgKmNvbmYgPSByMV9iaW8tPm1k ZGV2LT5wcml2YXRlOw0KLQ0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKwlzZWN0b3JfdCBhZnRl cl90aHJlZXRpbWVzX3Jlc3luY19zZWN0b3IgPQ0KKwkJcjFfYmlvLT5hZnRlcl90aHJlZXRpbWVz X3Jlc3luY19zZWN0b3I7DQorCXNlY3Rvcl90IGJpX3N0YXJ0X3NlY3RvciA9IGJpby0+Ymlfc2Vj dG9yOw0KKw0KIAlpZiAoYmlvLT5iaV9waHlzX3NlZ21lbnRzKSB7DQotCQl1bnNpZ25lZCBsb25n IGZsYWdzOw0KIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmNvbmYtPmRldmljZV9sb2NrLCBmbGFncyk7 DQogCQliaW8tPmJpX3BoeXNfc2VnbWVudHMtLTsNCiAJCWRvbmUgPSAoYmlvLT5iaV9waHlzX3Nl Z21lbnRzID09IDApOw0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY29uZi0+ZGV2aWNlX2xv Y2ssIGZsYWdzKTsNCisJCXdha2VfdXAoJmNvbmYtPndhaXRfYmFycmllcik7DQogCX0gZWxzZQ0K IAkJZG9uZSA9IDE7DQogDQpAQCAtMjQzLDcgKzI1MCw4IEBAIHN0YXRpYyB2b2lkIGNhbGxfYmlv X2VuZGlvKHN0cnVjdCByMWJpbyAqcjFfYmlvKQ0KIAkJICogV2FrZSB1cCBhbnkgcG9zc2libGUg cmVzeW5jIHRocmVhZCB0aGF0IHdhaXRzIGZvciB0aGUgZGV2aWNlDQogCQkgKiB0byBnbyBpZGxl Lg0KIAkJICovDQotCQlhbGxvd19iYXJyaWVyKGNvbmYpOw0KKwkJYWxsb3dfYmFycmllcihjb25m LCBhZnRlcl90aHJlZXRpbWVzX3Jlc3luY19zZWN0b3IsDQorCQkJCWJpX3N0YXJ0X3NlY3Rvcik7 DQogCX0NCiB9DQogDQpAQCAtODE0LDggKzgyMiw2IEBAIHN0YXRpYyB2b2lkIGZsdXNoX3BlbmRp bmdfd3JpdGVzKHN0cnVjdCByMWNvbmYgKmNvbmYpDQogICogICAgdGhlcmUgaXMgbm8gbm9ybWFs IElPIGhhcHBlaW5nLiAgSXQgbXVzdCBhcnJhbmdlIHRvIGNhbGwNCiAgKiAgICBsb3dlcl9iYXJy aWVyIHdoZW4gdGhlIHBhcnRpY3VsYXIgYmFja2dyb3VuZCBJTyBjb21wbGV0ZXMuDQogICovDQot I2RlZmluZSBSRVNZTkNfREVQVEggMzINCi0NCiBzdGF0aWMgdm9pZCByYWlzZV9iYXJyaWVyKHN0 cnVjdCByMWNvbmYgKmNvbmYpDQogew0KIAlzcGluX2xvY2tfaXJxKCZjb25mLT5yZXN5bmNfbG9j ayk7DQpAQCAtODI2LDExICs4MzIsMTggQEAgc3RhdGljIHZvaWQgcmFpc2VfYmFycmllcihzdHJ1 Y3QgcjFjb25mICpjb25mKQ0KIA0KIAkvKiBibG9jayBhbnkgbmV3IElPIGZyb20gc3RhcnRpbmcg Ki8NCiAJY29uZi0+YmFycmllcisrOw0KLQ0KLQkvKiBOb3cgd2FpdCBmb3IgYWxsIHBlbmRpbmcg SU8gdG8gY29tcGxldGUgKi8NCisJLyogRm9yIHRob3NlIGNvbmRpdGlvbnMsIHdlIG11c3Qgd2Fp dA0KKwkgKiBBOmFycmF5IGlzIGluIGZyZWV6ZSBzdGF0ZS4NCisJICogQjpXaGVuIHN0YXJ0aW5n IHJlc3luYyBhbmQgdGhlcmUgYXJlIG5vcm1hbCBJTw0KKwkgKiBDOlRoZXJlIGlzIG5vIG5vcm5h bCBpbyBhZnRlciB0aHJlZSB0aW1lcyBpbiByZXN5bmMgd2luZG93DQorCSAqIEQ6IHRvdGFsIGJh cnJpZXIgYXJlIGxlc3MgdGhhbiBSRVNZTkNfREVQVEgqLw0KIAl3YWl0X2V2ZW50X2xvY2tfaXJx KGNvbmYtPndhaXRfYmFycmllciwNCi0JCQkgICAgIWNvbmYtPmZyZWV6ZV9hcnJheSAmJiANCi0J CQkgICAgIWNvbmYtPm5yX3BlbmRpbmcgJiYgY29uZi0+YmFycmllciA8IFJFU1lOQ19ERVBUSCwN CisJCQkgICAgIWNvbmYtPmZyZWV6ZV9hcnJheSAmJg0KKwkJCSAgICAoKGNvbmYtPm5leHRfcmVz eW5jIDwgUkVTWU5DX1dJTkRPV19TRUNUT1JTDQorCQkJCSYmICFjb25mLT5ucl9wZW5kaW5nKQ0K KwkJCSAgICB8fCAoY29uZi0+bmV4dF9yZXN5bmMgKyBSRVNZTkNfU0VDVE9SUw0KKwkJCQkgICAg PD0gY29uZi0+YWZ0ZXJfcmVzeW5jX3NlY3RvcikpDQorCQkJICAgICYmIGNvbmYtPmJhcnJpZXIg PCBSRVNZTkNfREVQVEgsDQogCQkJICAgIGNvbmYtPnJlc3luY19sb2NrKTsNCiANCiAJc3Bpbl91 bmxvY2tfaXJxKCZjb25mLT5yZXN5bmNfbG9jayk7DQpAQCAtODQ2LDEwICs4NTksNTcgQEAgc3Rh dGljIHZvaWQgbG93ZXJfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mKQ0KIAl3YWtlX3VwKCZj b25mLT53YWl0X2JhcnJpZXIpOw0KIH0NCiANCi1zdGF0aWMgdm9pZCB3YWl0X2JhcnJpZXIoc3Ry dWN0IHIxY29uZiAqY29uZikNCitzdGF0aWMgc2VjdG9yX3Qgd2FpdF9iYXJyaWVyKHN0cnVjdCBy MWNvbmYgKmNvbmYsIHN0cnVjdCBiaW8gKmJpbykNCiB7DQorCXNlY3Rvcl90IHNlY3RvciA9IDA7 DQogCXNwaW5fbG9ja19pcnEoJmNvbmYtPnJlc3luY19sb2NrKTsNCi0JaWYgKGNvbmYtPmJhcnJp ZXIpIHsNCisJaWYgKGNvbmYtPmJhcnJpZXIgfHwgdW5saWtlbHkoY29uZi0+ZnJlZXplX2FycmF5 KSkgew0KKwkJaWYgKHVubGlrZWx5KCFjb25mLT5mcmVlemVfYXJyYXkgJiYgYmlvKSAmJg0KKwkJ CWJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFICYmDQorCQkJY29uZi0+bmV4dF9yZXN5bmMgPiBS RVNZTkNfV0lORE9XX1NFQ1RPUlMpIHsNCisJCQlpZiAoYmlvX2VuZF9zZWN0b3IoYmlvKSA8PSBj b25mLT5uZXh0X3Jlc3luYyAtDQorCQkJCVJFU1lOQ19XSU5ET1dfU0VDVE9SUykNCisJCQkJZ290 byBub193YWl0Ow0KKwkJCWlmIChjb25mLT5hZnRlcl9yZXN5bmNfc2VjdG9yID09IE1heFNlY3Rv cikgew0KKwkJCQlpZiAoYmlvLT5iaV9zZWN0b3IgPj0gY29uZi0+bmV4dF9yZXN5bmMgKw0KKwkJ CQkJNiAqIFJFU1lOQ19XSU5ET1dfU0VDVE9SUykgew0KKwkJCQkJaWYgKGNvbmYtPmFmdGVyX3Jl c3luY19zaXhfY291bnQgKw0KKwkJCQkJCWNvbmYtPmFmdGVyX3Jlc3luY190aHJlZV9jb3VudCA9 PSAwKQ0KKwkJCQkJCWNvbmYtPmFmdGVyX3Jlc3luY19zZWN0b3IgPQ0KKwkJCQkJCQljb25mLT5u ZXh0X3Jlc3luYyArIDMgKg0KKwkJCQkJCQlSRVNZTkNfV0lORE9XX1NFQ1RPUlM7DQorCQkJCQlj b25mLT5hZnRlcl9yZXN5bmNfc2l4X2NvdW50Kys7DQorCQkJCQlzZWN0b3IgPSBjb25mLT5hZnRl cl9yZXN5bmNfc2VjdG9yOw0KKwkJCQkJZ290byBub193YWl0Ow0KKwkJCQl9DQorCQkJCWlmIChi aW8tPmJpX3NlY3RvciA+PSBjb25mLT5uZXh0X3Jlc3luYyArDQorCQkJCQkzICogUkVTWU5DX1dJ TkRPV19TRUNUT1JTKSB7DQorCQkJCQlpZiAoY29uZi0+YWZ0ZXJfcmVzeW5jX3NpeF9jb3VudCAr DQorCQkJCQkJY29uZi0+YWZ0ZXJfcmVzeW5jX3RocmVlX2NvdW50ID09IDApDQorCQkJCQkJY29u Zi0+YWZ0ZXJfcmVzeW5jX3NlY3RvciA9DQorCQkJCQkJCWNvbmYtPm5leHRfcmVzeW5jICsgMyAq DQorCQkJCQkJCVJFU1lOQ19XSU5ET1dfU0VDVE9SUzsNCisJCQkJCWNvbmYtPmFmdGVyX3Jlc3lu Y190aHJlZV9jb3VudCsrOw0KKwkJCQkJc2VjdG9yID0gY29uZi0+YWZ0ZXJfcmVzeW5jX3NlY3Rv cjsNCisJCQkJCWdvdG8gbm9fd2FpdDsNCisJCQkJfQ0KKw0KKwkJCX0gZWxzZSB7DQorCQkJCWlm IChiaW8tPmJpX3NlY3RvciA+PSBjb25mLT5hZnRlcl9yZXN5bmNfc2VjdG9yICsgMyAqDQorCQkJ CQkJCVJFU1lOQ19XSU5ET1dfU0VDVE9SUykgew0KKwkJCQkJY29uZi0+YWZ0ZXJfcmVzeW5jX3Np eF9jb3VudCsrOw0KKwkJCQkJc2VjdG9yID0gY29uZi0+YWZ0ZXJfcmVzeW5jX3NlY3RvcjsNCisJ CQkJCWdvdG8gbm9fd2FpdDsNCisJCQkJfQ0KKwkJCQlpZiAoYmlvLT5iaV9zZWN0b3IgPj0gY29u Zi0+YWZ0ZXJfcmVzeW5jX3NlY3Rvcikgew0KKwkJCQkJY29uZi0+YWZ0ZXJfcmVzeW5jX3RocmVl X2NvdW50Kys7DQorCQkJCQlzZWN0b3IgPSBjb25mLT5hZnRlcl9yZXN5bmNfc2VjdG9yOw0KKwkJ CQkJZ290byBub193YWl0Ow0KKwkJCQl9DQorCQkJfQ0KKwkJfSBlbHNlIGlmICh1bmxpa2VseSgh Y29uZi0+ZnJlZXplX2FycmF5ICYmIGJpbykgJiYNCisJCQkJYmlvX2RhdGFfZGlyKGJpbykgIT0g V1JJVEUpDQorCQkJZ290byBub193YWl0Ow0KIAkJY29uZi0+bnJfd2FpdGluZysrOw0KIAkJLyog V2FpdCBmb3IgdGhlIGJhcnJpZXIgdG8gZHJvcC4NCiAJCSAqIEhvd2V2ZXIgaWYgdGhlcmUgYXJl IGFscmVhZHkgcGVuZGluZw0KQEAgLTg2OSwxNSArOTI5LDQ2IEBAIHN0YXRpYyB2b2lkIHdhaXRf YmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mKQ0KIAkJCQkgICAgY29uZi0+cmVzeW5jX2xvY2sp Ow0KIAkJY29uZi0+bnJfd2FpdGluZy0tOw0KIAl9DQorbm9fd2FpdDoNCiAJY29uZi0+bnJfcGVu ZGluZysrOw0KIAlzcGluX3VubG9ja19pcnEoJmNvbmYtPnJlc3luY19sb2NrKTsNCisJcmV0dXJu IHNlY3RvcjsNCiB9DQogDQotc3RhdGljIHZvaWQgYWxsb3dfYmFycmllcihzdHJ1Y3QgcjFjb25m ICpjb25mKQ0KK3N0YXRpYyB2b2lkDQorYWxsb3dfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25m LA0KKwkJc2VjdG9yX3QgYWZ0ZXJfdGhyZWV0aW1lc19yZXN5bmNfc2VjdG9yLA0KKwkJc2VjdG9y X3QgYmlfc3RhcnRfc2VjdG9yKQ0KIHsNCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCiAJc3Bpbl9s b2NrX2lycXNhdmUoJmNvbmYtPnJlc3luY19sb2NrLCBmbGFncyk7DQogCWNvbmYtPm5yX3BlbmRp bmctLTsNCisNCisJaWYgKGFmdGVyX3RocmVldGltZXNfcmVzeW5jX3NlY3Rvcikgew0KKwkJaWYg KGFmdGVyX3RocmVldGltZXNfcmVzeW5jX3NlY3RvciA9PQ0KKwkJCQljb25mLT5hZnRlcl9yZXN5 bmNfc2VjdG9yKSB7DQorCQkJaWYgKGJpX3N0YXJ0X3NlY3RvciA+PSAoYWZ0ZXJfdGhyZWV0aW1l c19yZXN5bmNfc2VjdG9yDQorCQkJCQkJKyAzICogUkVTWU5DX1dJTkRPV19TRUNUT1JTKSkNCisJ CQkJY29uZi0+YWZ0ZXJfcmVzeW5jX3NpeF9jb3VudC0tOw0KKwkJCWVsc2UNCisJCQkJY29uZi0+ YWZ0ZXJfcmVzeW5jX3RocmVlX2NvdW50LS07DQorCQl9IGVsc2UNCisJCQljb25mLT5hZnRlcl9y ZXN5bmNfdGhyZWVfY291bnQtLTsNCisNCisJCWlmICghY29uZi0+YWZ0ZXJfcmVzeW5jX3RocmVl X2NvdW50KSB7DQorCQkJaWYgKGNvbmYtPmFmdGVyX3Jlc3luY19zaXhfY291bnQpIHsNCisJCQkJ Y29uZi0+YWZ0ZXJfcmVzeW5jX3RocmVlX2NvdW50ID0NCisJCQkJCWNvbmYtPmFmdGVyX3Jlc3lu Y19zaXhfY291bnQ7DQorCQkJCWNvbmYtPmFmdGVyX3Jlc3luY19zaXhfY291bnQgPSAwOw0KKwkJ CQljb25mLT5hZnRlcl9yZXN5bmNfc2VjdG9yICs9DQorCQkJCQkzICogUkVTWU5DX1dJTkRPV19T RUNUT1JTOw0KKwkJCX0gZWxzZQ0KKwkJCQljb25mLT5hZnRlcl9yZXN5bmNfc2VjdG9yID0gTWF4 U2VjdG9yOw0KKwkJfQ0KKwkJQlVHX09OKGNvbmYtPmFmdGVyX3Jlc3luY190aHJlZV9jb3VudCA8 IDAgfHwNCisJCQljb25mLT5hZnRlcl9yZXN5bmNfc2l4X2NvdW50IDwgMCk7DQorCX0NCisNCiAJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY29uZi0+cmVzeW5jX2xvY2ssIGZsYWdzKTsNCiAJd2Fr ZV91cCgmY29uZi0+d2FpdF9iYXJyaWVyKTsNCiB9DQpAQCAtOTA4LDggKzk5OSw4IEBAIHN0YXRp YyB2b2lkIHVuZnJlZXplX2FycmF5KHN0cnVjdCByMWNvbmYgKmNvbmYpDQogCS8qIHJldmVyc2Ug dGhlIGVmZmVjdCBvZiB0aGUgZnJlZXplICovDQogCXNwaW5fbG9ja19pcnEoJmNvbmYtPnJlc3lu Y19sb2NrKTsNCiAJY29uZi0+ZnJlZXplX2FycmF5ID0gMDsNCi0Jd2FrZV91cCgmY29uZi0+d2Fp dF9iYXJyaWVyKTsNCiAJc3Bpbl91bmxvY2tfaXJxKCZjb25mLT5yZXN5bmNfbG9jayk7DQorCXdh a2VfdXAoJmNvbmYtPndhaXRfYmFycmllcik7DQogfQ0KIA0KIA0KQEAgLTEwMTIsNiArMTEwMyw3 IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3Qg YmlvICogYmlvKQ0KIAlpbnQgZmlyc3RfY2xvbmU7DQogCWludCBzZWN0b3JzX2hhbmRsZWQ7DQog CWludCBtYXhfc2VjdG9yczsNCisJc2VjdG9yX3QgYWZ0ZXJfdGhyZWV0aW1lc19yZXN5bmNfc2Vj dG9yID0gMDsNCiANCiAJLyoNCiAJICogUmVnaXN0ZXIgdGhlIG5ldyByZXF1ZXN0IGFuZCB3YWl0 IGlmIHRoZSByZWNvbnN0cnVjdGlvbg0KQEAgLTEwNDEsNyArMTEzMyw3IEBAIHN0YXRpYyB2b2lk IG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmlvKQ0KIAkJ ZmluaXNoX3dhaXQoJmNvbmYtPndhaXRfYmFycmllciwgJncpOw0KIAl9DQogDQotCXdhaXRfYmFy cmllcihjb25mKTsNCisJYWZ0ZXJfdGhyZWV0aW1lc19yZXN5bmNfc2VjdG9yID0gd2FpdF9iYXJy aWVyKGNvbmYsIGJpbyk7DQogDQogCWJpdG1hcCA9IG1kZGV2LT5iaXRtYXA7DQogDQpAQCAtMTA1 Nyw3ICsxMTQ5LDYgQEAgc3RhdGljIHZvaWQgbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRk ZXYsIHN0cnVjdCBiaW8gKiBiaW8pDQogCXIxX2Jpby0+c3RhdGUgPSAwOw0KIAlyMV9iaW8tPm1k ZGV2ID0gbWRkZXY7DQogCXIxX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7DQotDQogCS8q IFdlIG1pZ2h0IG5lZWQgdG8gaXNzdWUgbXVsdGlwbGUgcmVhZHMgdG8gZGlmZmVyZW50DQogCSAq IGRldmljZXMgaWYgdGhlcmUgYXJlIGJhZCBibG9ja3MgYXJvdW5kLCBzbyB3ZSBrZWVwDQogCSAq IHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgcmVhZHMgaW4gYmlvLT5iaV9waHlzX3NlZ21lbnRzLg0K QEAgLTExNjIsNiArMTI1Myw4IEBAIHJlYWRfYWdhaW46DQogDQogCWRpc2tzID0gY29uZi0+cmFp ZF9kaXNrcyAqIDI7DQogIHJldHJ5X3dyaXRlOg0KKwlyMV9iaW8tPmFmdGVyX3RocmVldGltZXNf cmVzeW5jX3NlY3RvciA9IGFmdGVyX3RocmVldGltZXNfcmVzeW5jX3NlY3RvcjsNCisNCiAJYmxv Y2tlZF9yZGV2ID0gTlVMTDsNCiAJcmN1X3JlYWRfbG9jaygpOw0KIAltYXhfc2VjdG9ycyA9IHIx X2Jpby0+c2VjdG9yczsNCkBAIC0xMjMwLDE0ICsxMzIzLDIzIEBAIHJlYWRfYWdhaW46DQogCWlm ICh1bmxpa2VseShibG9ja2VkX3JkZXYpKSB7DQogCQkvKiBXYWl0IGZvciB0aGlzIGRldmljZSB0 byBiZWNvbWUgdW5ibG9ja2VkICovDQogCQlpbnQgajsNCi0NCisJCXNlY3Rvcl90IG9sZCA9IGFm dGVyX3RocmVldGltZXNfcmVzeW5jX3NlY3RvcjsNCiAJCWZvciAoaiA9IDA7IGogPCBpOyBqKysp DQogCQkJaWYgKHIxX2Jpby0+Ymlvc1tqXSkNCiAJCQkJcmRldl9kZWNfcGVuZGluZyhjb25mLT5t aXJyb3JzW2pdLnJkZXYsIG1kZGV2KTsNCiAJCXIxX2Jpby0+c3RhdGUgPSAwOw0KLQkJYWxsb3df YmFycmllcihjb25mKTsNCisJCWFsbG93X2JhcnJpZXIoY29uZiwgb2xkLCBiaW8tPmJpX3NlY3Rv cik7DQogCQltZF93YWl0X2Zvcl9ibG9ja2VkX3JkZXYoYmxvY2tlZF9yZGV2LCBtZGRldik7DQot CQl3YWl0X2JhcnJpZXIoY29uZik7DQorCQlhZnRlcl90aHJlZXRpbWVzX3Jlc3luY19zZWN0b3Ig PSB3YWl0X2JhcnJpZXIoY29uZiwgYmlvKTsNCisJCS8qDQorCQkgKiBXZSBtdXN0IG1ha2Ugc3Vy ZSB0aGUgbXVsdGkgcjFiaW9zIG9mIGJpbyBoYXZlDQorCQkgKiB0aGUgc2FtZSB2YWx1ZSBvZiBh ZnRlcl90aHJlZXRpbWVzX3Jlc3luY19zZWN0b3INCisJCSAqLw0KKwkJaWYgKGJpby0+YmlfcGh5 c19zZWdtZW50cyAmJiBvbGQgJiYNCisJCQlvbGQgIT0gYWZ0ZXJfdGhyZWV0aW1lc19yZXN5bmNf c2VjdG9yKQ0KKwkJCS8qd2FpdCB0aGUgZm9ybWVyIHIxYmlvKHMpIGNvbXBsZXRlZCovDQorCQkJ d2FpdF9ldmVudChjb25mLT53YWl0X2JhcnJpZXIsDQorCQkJCQliaW8tPmJpX3BoeXNfc2VnbWVu dHMgPT0gMSk7DQogCQlnb3RvIHJldHJ5X3dyaXRlOw0KIAl9DQogDQpAQCAtMTQzNywxMSArMTUz OSwxMyBAQCBzdGF0aWMgdm9pZCBwcmludF9jb25mKHN0cnVjdCByMWNvbmYgKmNvbmYpDQogDQog c3RhdGljIHZvaWQgY2xvc2Vfc3luYyhzdHJ1Y3QgcjFjb25mICpjb25mKQ0KIHsNCi0Jd2FpdF9i YXJyaWVyKGNvbmYpOw0KLQlhbGxvd19iYXJyaWVyKGNvbmYpOw0KKwl3YWl0X2JhcnJpZXIoY29u ZiwgTlVMTCk7DQorCWFsbG93X2JhcnJpZXIoY29uZiwgMCwgMCk7DQogDQogCW1lbXBvb2xfZGVz dHJveShjb25mLT5yMWJ1Zl9wb29sKTsNCiAJY29uZi0+cjFidWZfcG9vbCA9IE5VTEw7DQorCWNv bmYtPm5leHRfcmVzeW5jID0gMDsNCisJY29uZi0+YWZ0ZXJfcmVzeW5jX3NlY3RvciA9IGNvbmYt Pm1kZGV2LT5kZXZfc2VjdG9yczsNCiB9DQogDQogc3RhdGljIGludCByYWlkMV9zcGFyZV9hY3Rp dmUoc3RydWN0IG1kZGV2ICptZGRldikNCkBAIC0yNzEyLDYgKzI4MTYsOSBAQCBzdGF0aWMgc3Ry dWN0IHIxY29uZiAqc2V0dXBfY29uZihzdHJ1Y3QgbWRkZXYgKm1kZGV2KQ0KIAljb25mLT5wZW5k aW5nX2NvdW50ID0gMDsNCiAJY29uZi0+cmVjb3ZlcnlfZGlzYWJsZWQgPSBtZGRldi0+cmVjb3Zl cnlfZGlzYWJsZWQgLSAxOw0KIA0KKwljb25mLT5hZnRlcl9yZXN5bmNfc2VjdG9yID0gTWF4U2Vj dG9yOw0KKwljb25mLT5hZnRlcl9yZXN5bmNfc2l4X2NvdW50ID0gY29uZi0+YWZ0ZXJfcmVzeW5j X3RocmVlX2NvdW50ID0gMDsNCisNCiAJZXJyID0gLUVJTzsNCiAJZm9yIChpID0gMDsgaSA8IGNv bmYtPnJhaWRfZGlza3MgKiAyOyBpKyspIHsNCiANCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3Jh aWQxLmggYi9kcml2ZXJzL21kL3JhaWQxLmgNCmluZGV4IDhhZmQzMDAuLjNhYjE0MDUgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL21kL3JhaWQxLmgNCisrKyBiL2RyaXZlcnMvbWQvcmFpZDEuaA0KQEAg LTQwLDYgKzQwLDkgQEAgc3RydWN0IHIxY29uZiB7DQogCSAqIHdoZXJlIHRoYXQgaXMuDQogCSAq Lw0KIAlzZWN0b3JfdAkJbmV4dF9yZXN5bmM7DQorCXNlY3Rvcl90CQlhZnRlcl9yZXN5bmNfc2Vj dG9yOw0KKwlpbnQJCQlhZnRlcl9yZXN5bmNfdGhyZWVfY291bnQ7DQorCWludAkJCWFmdGVyX3Jl c3luY19zaXhfY291bnQ7DQogDQogCXNwaW5sb2NrX3QJCWRldmljZV9sb2NrOw0KIA0KQEAgLTEx Miw2ICsxMTUsNyBAQCBzdHJ1Y3QgcjFiaW8gew0KIAkJCQkJCSAqIGluIHRoaXMgQmVoaW5kSU8g cmVxdWVzdA0KIAkJCQkJCSAqLw0KIAlzZWN0b3JfdAkJc2VjdG9yOw0KKwlzZWN0b3JfdAkJYWZ0 ZXJfdGhyZWV0aW1lc19yZXN5bmNfc2VjdG9yOw0KIAlpbnQJCQlzZWN0b3JzOw0KIAl1bnNpZ25l ZCBsb25nCQlzdGF0ZTsNCiAJc3RydWN0IG1kZGV2CQkqbWRkZXY7DQotLSANCjEuOC4xLjINCg==