From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/3] drm: Hold mode_config.lock to prevent hotplug whilst setting up crtcs Date: Mon, 28 Nov 2016 08:26:07 +0100 Message-ID: <20161128072607.66xcjy6kxzn7gwvi@phenom.ffwll.local> References: <20161123140417.18538-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20161123140417.18538-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBOb3YgMjMsIDIwMTYgYXQgMDI6MDQ6MTVQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFRoZSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCBpcyBtb2RpZmllZCB3aGVuIGEg bmV3IGNvbm5lY3RvciBpcwo+IGNvbnN0cnVjdGVkIGZvbGxvd2luZyBhIGhvdHBsdWcgZXZlbnQg KGUuZy4gRFAtTVNUKS4gVGhpcyBjYXVzZXMgdHJvdWJsZQo+IGZvciBkcm1fc2V0dXBfY3J0Y3Mo KSBhbmQgZnJpZW5kcyB0aGF0IGFzc3VtZSB0aGF0IGZiX2hlbHBlciBpcwo+IGNvbnN0YW50Ogo+ IAo+IFsgMTI1MC44NzI5OTddIEJVRzogS0FTQU46IHNsYWItb3V0LW9mLWJvdW5kcyBpbiBkcm1f c2V0dXBfY3J0Y3MrMHgzMjAvMHhmODAgYXQgYWRkciBmZmZmODgwNzRjZGQyNjA4Cj4gWyAxMjUw Ljg3MzAyMF0gV3JpdGUgb2Ygc2l6ZSA0MCBieSB0YXNrIGt3b3JrZXIvdTg6My80ODAKPiBbIDEy NTAuODczMDM5XSBDUFU6IDIgUElEOiA0ODAgQ29tbToga3dvcmtlci91ODozIFRhaW50ZWQ6IEcg ICAgIFUgICAgICAgICAgNC45LjAtcmM2KyAjMjg1Cj4gWyAxMjUwLjg3MzA0M10gSGFyZHdhcmUg bmFtZTogICAgICAgICAgICAgICAgICAvTlVDNmkzU1lCLCBCSU9TIFNZU0tMaTM1Ljg2QS4wMDI0 LjIwMTUuMTAyNy4yMTQyIDEwLzI3LzIwMTUKPiBbIDEyNTAuODczMDUwXSBXb3JrcXVldWU6IGV2 ZW50c191bmJvdW5kIGFzeW5jX3J1bl9lbnRyeV9mbgo+IFsgMTI1MC44NzMwNTZdICBmZmZmODgw NzBmOWQ3OGYwIGZmZmZmZmZmODE0YjcyYWEgZmZmZjg4MDc0ZTQwYzVjMCBmZmZmODgwNzRjZGQy NjA4Cj4gWyAxMjUwLjg3MzA2N10gIGZmZmY4ODA3MGY5ZDc5MTggZmZmZmZmZmY4MTI0ZmYzYyBm ZmZmODgwNzBmOWQ3OWIwIGZmZmY4ODA3NGNkZDI2MDAKPiBbIDEyNTAuODczMDc5XSAgZmZmZjg4 MDc0ZTQwYzVjMCBmZmZmODgwNzBmOWQ3OWEwIGZmZmZmZmZmODEyNTAxZTQgMDAwMDAwMDAwMDAw MDAwNQo+IFsgMTI1MC44NzMwOTBdIENhbGwgVHJhY2U6Cj4gWyAxMjUwLjg3MzA5OV0gIFs8ZmZm ZmZmZmY4MTRiNzJhYT5dIGR1bXBfc3RhY2srMHg2Ny8weDlkCj4gWyAxMjUwLjg3MzEwNl0gIFs8 ZmZmZmZmZmY4MTI0ZmYzYz5dIGthc2FuX29iamVjdF9lcnIrMHgxYy8weDcwCj4gWyAxMjUwLjg3 MzExM10gIFs8ZmZmZmZmZmY4MTI1MDFlND5dIGthc2FuX3JlcG9ydF9lcnJvcisweDIwNC8weDRm MAo+IFsgMTI1MC44NzMxMjBdICBbPGZmZmZmZmZmODE2OThkZjA+XSA/IGRybV9kZXZfcHJpbnRr KzB4MTQwLzB4MTQwCj4gWyAxMjUwLjg3MzEyN10gIFs8ZmZmZmZmZmY4MTI1MGFjMz5dIGthc2Fu X3JlcG9ydCsweDUzLzB4NjAKPiBbIDEyNTAuODczMTM0XSAgWzxmZmZmZmZmZjgxNjg4YjQwPl0g PyBkcm1fc2V0dXBfY3J0Y3MrMHgzMjAvMHhmODAKPiBbIDEyNTAuODczMTQyXSAgWzxmZmZmZmZm ZjgxMjRmMThlPl0gY2hlY2tfbWVtb3J5X3JlZ2lvbisweDEzZS8weDFhMAo+IFsgMTI1MC44NzMx NDddICBbPGZmZmZmZmZmODEyNGY1ZjM+XSBtZW1zZXQrMHgyMy8weDQwCj4gWyAxMjUwLjg3MzE1 NF0gIFs8ZmZmZmZmZmY4MTY4OGI0MD5dIGRybV9zZXR1cF9jcnRjcysweDMyMC8weGY4MAo+IFsg MTI1MC44NzMxNjFdICBbPGZmZmZmZmZmODEwYmU3YzU+XSA/IHdha2VfdXBfcSsweDQ1LzB4ODAK PiBbIDEyNTAuODczMTY5XSAgWzxmZmZmZmZmZjgxYjBjMTgwPl0gPyBtdXRleF9sb2NrX25lc3Rl ZCsweDVhMC8weDVhMAo+IFsgMTI1MC44NzMxNzZdICBbPGZmZmZmZmZmODE2OGEwZTY+XSBkcm1f ZmJfaGVscGVyX2luaXRpYWxfY29uZmlnKzB4MjA2LzB4N2EwCj4gWyAxMjUwLjg3MzE4M10gIFs8 ZmZmZmZmZmY4MTY4OWVlMD5dID8gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyKzB4OTAvMHg5MAo+IFsg MTI1MC44NzMzMDNdICBbPGZmZmZmZmZmYTBiNjg2OTA+XSA/IGludGVsX2ZiZGV2X2ZpbmkrMHgx NDAvMHgxNDAgW2k5MTVdCj4gWyAxMjUwLjg3MzM4N10gIFs8ZmZmZmZmZmZhMGI2ODZiMj5dIGlu dGVsX2ZiZGV2X2luaXRpYWxfY29uZmlnKzB4MjIvMHg0MCBbaTkxNV0KPiBbIDEyNTAuODczMzkx XSAgWzxmZmZmZmZmZjgxMGI1MGZmPl0gYXN5bmNfcnVuX2VudHJ5X2ZuKzB4N2YvMHgyNzAKPiBb IDEyNTAuODczMzk0XSAgWzxmZmZmZmZmZjgxMGE2NGIwPl0gcHJvY2Vzc19vbmVfd29yaysweDNk MC8weDk2MAo+IFsgMTI1MC44NzMzOThdICBbPGZmZmZmZmZmODEwYTY0MWQ+XSA/IHByb2Nlc3Nf b25lX3dvcmsrMHgzM2QvMHg5NjAKPiBbIDEyNTAuODczNDAxXSAgWzxmZmZmZmZmZjgxMGE2MGUw Pl0gPyBtYXhfYWN0aXZlX3N0b3JlKzB4ZjAvMHhmMAo+IFsgMTI1MC44NzM0MDZdICBbPGZmZmZm ZmZmODEwZjZmOWQ+XSA/IGRvX3Jhd19zcGluX2xvY2srMHgxMGQvMHgxYTAKPiBbIDEyNTAuODcz NDEzXSAgWzxmZmZmZmZmZjgxMGE3NjdkPl0gd29ya2VyX3RocmVhZCsweDhkLzB4ODQwCj4gWyAx MjUwLjg3MzQxOV0gIFs8ZmZmZmZmZmY4MTBhNzVmMD5dID8gY3JlYXRlX3dvcmtlcisweDJlMC8w eDJlMAo+IFsgMTI1MC44NzM0MjZdICBbPGZmZmZmZmZmODEwYjA0NTQ+XSBrdGhyZWFkKzB4MTk0 LzB4MWMwCj4gWyAxMjUwLjg3MzQzMl0gIFs8ZmZmZmZmZmY4MTBiMDJjMD5dID8ga3RocmVhZF9w YXJrKzB4NjAvMHg2MAo+IFsgMTI1MC44NzM0MzhdICBbPGZmZmZmZmZmODEwZjA5NWQ+XSA/IHRy YWNlX2hhcmRpcnFzX29uKzB4ZC8weDEwCj4gWyAxMjUwLjg3MzQ0Nl0gIFs8ZmZmZmZmZmY4MTBi MDJjMD5dID8ga3RocmVhZF9wYXJrKzB4NjAvMHg2MAo+IFsgMTI1MC44NzM0NTNdICBbPGZmZmZm ZmZmODEwYjAyYzA+XSA/IGt0aHJlYWRfcGFyaysweDYwLzB4NjAKPiBbIDEyNTAuODczNDU3XSAg WzxmZmZmZmZmZjgxYjEyMjc3Pl0gcmV0X2Zyb21fZm9yaysweDI3LzB4NDAKPiBbIDEyNTAuODcz NDYwXSBPYmplY3QgYXQgZmZmZjg4MDc0Y2RkMjYwOCwgaW4gY2FjaGUga21hbGxvYy0zMiBzaXpl OiAzMgo+IAo+IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVn LmNnaT9pZD05ODgyNgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIHwg NzMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNo YW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9m Yl9oZWxwZXIuYwo+IGluZGV4IDE0NTQ3ODE3NTY2ZC4uZDEzYzg1NjgyODkxIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZiX2hlbHBlci5jCj4gQEAgLTk3LDYgKzk3LDEwIEBAIHN0YXRpYyBMSVNUX0hFQUQo a2VybmVsX2ZiX2hlbHBlcl9saXN0KTsKPiAgICogbW1hcCBwYWdlIHdyaXRlcy4KPiAgICovCj4g IAo+ICsjZGVmaW5lIGRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiaCwgaV9fKSBc Cj4gKwlmb3IgKCh7bG9ja2RlcF9hc3NlcnRfaGVsZCgmKGZiaCktPmRldi0+bW9kZV9jb25maWcu bXV0ZXgpOyAxO30pLCBcCj4gKwkgICAgIGlfXyA9IDA7IGlfXyA8IChmYmgpLT5jb25uZWN0b3Jf Y291bnQ7IGlfXysrKQo+ICsKCisxIG9uIEphbmkncyBxdWVzdGlvbi4KCj4gIC8qKgo+ICAgKiBk cm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3RvcnMoKSAtIGFkZCBhbGwgY29ubmVj dG9ycyB0byBmYmRldgo+ICAgKiAJCQkJCSAgICAgICBlbXVsYXRpb24gaGVscGVyCj4gQEAgLTEz MCw3ICsxMzQsNyBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9jb25uZWN0b3Jz KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gIAltdXRleF91bmxvY2soJmRldi0+ bW9kZV9jb25maWcubXV0ZXgpOwo+ICAJcmV0dXJuIDA7Cj4gIGZhaWw6Cj4gLQlmb3IgKGkgPSAw OyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykgewo+ICsJZHJtX2ZiX2hlbHBl cl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVscGVyLCBpKSB7Cj4gIAkJc3RydWN0IGRybV9mYl9o ZWxwZXJfY29ubmVjdG9yICpmYl9oZWxwZXJfY29ubmVjdG9yID0KPiAgCQkJZmJfaGVscGVyLT5j b25uZWN0b3JfaW5mb1tpXTsKPiAgCj4gQEAgLTU2NSw3ICs1NjksNyBAQCBzdGF0aWMgdm9pZCBk cm1fZmJfaGVscGVyX2RwbXMoc3RydWN0IGZiX2luZm8gKmluZm8sIGludCBkcG1zX21vZGUpCj4g IAkJCWNvbnRpbnVlOwo+ICAKPiAgCQkvKiBXYWxrIHRoZSBjb25uZWN0b3JzICYgZW5jb2RlcnMg b24gdGhpcyBmYiB0dXJuaW5nIHRoZW0gb24vb2ZmICovCj4gLQkJZm9yIChqID0gMDsgaiA8IGZi X2hlbHBlci0+Y29ubmVjdG9yX2NvdW50OyBqKyspIHsKPiArCQlkcm1fZmJfaGVscGVyX2Zvcl9l YWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGopIHsKPiAgCQkJY29ubmVjdG9yID0gZmJfaGVscGVy LT5jb25uZWN0b3JfaW5mb1tqXS0+Y29ubmVjdG9yOwo+ICAJCQljb25uZWN0b3ItPmZ1bmNzLT5k cG1zKGNvbm5lY3RvciwgZHBtc19tb2RlKTsKPiAgCQkJZHJtX29iamVjdF9wcm9wZXJ0eV9zZXRf dmFsdWUoJmNvbm5lY3Rvci0+YmFzZSwKPiBAQCAtMTQ2OSw3ICsxNDczLDYgQEAgc3RhdGljIGlu dCBkcm1fZmJfaGVscGVyX3NpbmdsZV9mYl9wcm9iZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyLAo+ICAJaW50IHJldCA9IDA7Cj4gIAlpbnQgY3J0Y19jb3VudCA9IDA7Cj4gIAlpbnQg aTsKPiAtCXN0cnVjdCBmYl9pbmZvICppbmZvOwo+ICAJc3RydWN0IGRybV9mYl9oZWxwZXJfc3Vy ZmFjZV9zaXplIHNpemVzOwo+ICAJaW50IGdhbW1hX3NpemUgPSAwOwo+ICAKPiBAQCAtMTQ4NSw3 ICsxNDg4LDcgQEAgc3RhdGljIGludCBkcm1fZmJfaGVscGVyX3NpbmdsZV9mYl9wcm9iZShzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICAJCXNpemVzLnN1cmZhY2VfZGVwdGggPSBz aXplcy5zdXJmYWNlX2JwcCA9IHByZWZlcnJlZF9icHA7Cj4gIAo+ICAJLyogZmlyc3QgdXAgZ2V0 IGEgY291bnQgb2YgY3J0Y3Mgbm93IGluIHVzZSBhbmQgbmV3IG1pbi9tYXhlcyB3aWR0aC9oZWln aHRzICovCj4gLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkr Kykgewo+ICsJZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVscGVyLCBpKSB7 Cj4gIAkJc3RydWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yICpmYl9oZWxwZXJfY29ubiA9IGZi X2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07Cj4gIAkJc3RydWN0IGRybV9jbWRsaW5lX21vZGUg KmNtZGxpbmVfbW9kZTsKPiAgCj4gQEAgLTE1NzIsOCArMTU3NSw2IEBAIHN0YXRpYyBpbnQgZHJt X2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciwKPiAgCWlmIChyZXQgPCAwKQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaW5mbyA9IGZiX2hl bHBlci0+ZmJkZXY7Cj4gLQo+ICAJLyoKPiAgCSAqIFNldCB0aGUgZmIgcG9pbnRlciAtIHVzdWFs bHkgZHJtX3NldHVwX2NydGNzIGRvZXMgdGhpcyBmb3IgaG90cGx1Zwo+ICAJICogZXZlbnRzLCBi dXQgYXQgaW5pdCB0aW1lIGRybV9zZXR1cF9jcnRjcyBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3Jl Cj4gQEAgLTE1ODUsMjAgKzE1ODYsNiBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xl X2ZiX3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gIAkJaWYgKGZiX2hl bHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0Lm51bV9jb25uZWN0b3JzKQo+ICAJCQlmYl9oZWxw ZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5mYiA9IGZiX2hlbHBlci0+ZmI7Cj4gIAo+IC0KPiAt CWluZm8tPnZhci5waXhjbG9jayA9IDA7Cj4gLQlpZiAocmVnaXN0ZXJfZnJhbWVidWZmZXIoaW5m bykgPCAwKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWRldl9pbmZvKGZiX2hlbHBlci0+ ZGV2LT5kZXYsICJmYiVkOiAlcyBmcmFtZSBidWZmZXIgZGV2aWNlXG4iLAo+IC0JCQlpbmZvLT5u b2RlLCBpbmZvLT5maXguaWQpOwo+IC0KPiAtCWlmIChsaXN0X2VtcHR5KCZrZXJuZWxfZmJfaGVs cGVyX2xpc3QpKSB7Cj4gLQkJcmVnaXN0ZXJfc3lzcnFfa2V5KCd2JywgJnN5c3JxX2RybV9mYl9o ZWxwZXJfcmVzdG9yZV9vcCk7Cj4gLQl9Cj4gLQo+IC0JbGlzdF9hZGQoJmZiX2hlbHBlci0+a2Vy bmVsX2ZiX2xpc3QsICZrZXJuZWxfZmJfaGVscGVyX2xpc3QpOwo+IC0KCldoeSBtb3ZlIHRoaXMg aHVuaz8ga2VybmVsX2ZiX2hlbHBlcl9saXN0IHNlZW1zIGVudGlyZWx5IHVucHJvdGVjdGVkLCBz bwpzaG91bGRuJ3QgbWF0dGVyIHJlYWxseSB3aGVyZSB3ZSB0b3VjaCBpdCA7LSkKCk90aGVyd2lz ZSBsZ3RtLgotRGFuaWVsCgo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTE3MzAsNyArMTcx Nyw3IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9wcm9iZV9jb25uZWN0b3JfbW9kZXMoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCWludCBjb3VudCA9IDA7Cj4gIAlpbnQg aTsKPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkr Kykgewo+ICsJZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVscGVyLCBpKSB7 Cj4gIAkJY29ubmVjdG9yID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXS0+Y29ubmVjdG9y Owo+ICAJCWNvdW50ICs9IGNvbm5lY3Rvci0+ZnVuY3MtPmZpbGxfbW9kZXMoY29ubmVjdG9yLCBt YXhYLCBtYXhZKTsKPiAgCX0KPiBAQCAtMTgzMCw3ICsxODE3LDcgQEAgc3RhdGljIHZvaWQgZHJt X2VuYWJsZV9jb25uZWN0b3JzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gIAlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICAJaW50IGkgPSAwOwo+ICAKPiAtCWZv ciAoaSA9IDA7IGkgPCBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudDsgaSsrKSB7Cj4gKwlkcm1f ZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKPiAgCQljb25uZWN0 b3IgPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldLT5jb25uZWN0b3I7Cj4gIAkJZW5hYmxl ZFtpXSA9IGRybV9jb25uZWN0b3JfZW5hYmxlZChjb25uZWN0b3IsIHRydWUpOwo+ICAJCURSTV9E RUJVR19LTVMoImNvbm5lY3RvciAlZCBlbmFibGVkPyAlc1xuIiwgY29ubmVjdG9yLT5iYXNlLmlk LAo+IEBAIC0xODQxLDcgKzE4MjgsNyBAQCBzdGF0aWMgdm9pZCBkcm1fZW5hYmxlX2Nvbm5lY3Rv cnMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCWlmIChhbnlfZW5hYmxlZCkK PiAgCQlyZXR1cm47Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y29ubmVjdG9y X2NvdW50OyBpKyspIHsKPiArCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hl bHBlciwgaSkgewo+ICAJCWNvbm5lY3RvciA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV0t PmNvbm5lY3RvcjsKPiAgCQllbmFibGVkW2ldID0gZHJtX2Nvbm5lY3Rvcl9lbmFibGVkKGNvbm5l Y3RvciwgZmFsc2UpOwo+ICAJfQo+IEBAIC0xODYyLDcgKzE4NDksNyBAQCBzdGF0aWMgYm9vbCBk cm1fdGFyZ2V0X2Nsb25lZChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICAJCXJl dHVybiBmYWxzZTsKPiAgCj4gIAljb3VudCA9IDA7Cj4gLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVs cGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykgewo+ICsJZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9j b25uZWN0b3IoZmJfaGVscGVyLCBpKSB7Cj4gIAkJaWYgKGVuYWJsZWRbaV0pCj4gIAkJCWNvdW50 Kys7Cj4gIAl9Cj4gQEAgLTE4NzMsNyArMTg2MCw3IEBAIHN0YXRpYyBib29sIGRybV90YXJnZXRf Y2xvbmVkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gIAo+ICAJLyogY2hlY2sg dGhlIGNvbW1hbmQgbGluZSBvciBpZiBub3RoaW5nIGNvbW1vbiBwaWNrIDEwMjR4NzY4ICovCj4g IAljYW5fY2xvbmUgPSB0cnVlOwo+IC0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y29ubmVj dG9yX2NvdW50OyBpKyspIHsKPiArCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZi X2hlbHBlciwgaSkgewo+ICAJCWlmICghZW5hYmxlZFtpXSkKPiAgCQkJY29udGludWU7Cj4gIAkJ ZmJfaGVscGVyX2Nvbm4gPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldOwo+IEBAIC0xODk5 LDggKzE4ODYsNyBAQCBzdGF0aWMgYm9vbCBkcm1fdGFyZ2V0X2Nsb25lZChzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGVyLAo+ICAJY2FuX2Nsb25lID0gdHJ1ZTsKPiAgCWRtdF9tb2RlID0g ZHJtX21vZGVfZmluZF9kbXQoZmJfaGVscGVyLT5kZXYsIDEwMjQsIDc2OCwgNjAsIGZhbHNlKTsK PiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykg ewo+IC0KPiArCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwgaSkg ewo+ICAJCWlmICghZW5hYmxlZFtpXSkKPiAgCQkJY29udGludWU7Cj4gIAo+IEBAIC0xOTMxLDcg KzE5MTcsNyBAQCBzdGF0aWMgaW50IGRybV9nZXRfdGlsZV9vZmZzZXRzKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIsCj4gIAlpbnQgaTsKPiAgCWludCBob2Zmc2V0ID0gMCwgdm9mZnNl dCA9IDA7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50 OyBpKyspIHsKPiArCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwg aSkgewo+ICAJCWZiX2hlbHBlcl9jb25uID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXTsK PiAgCQlpZiAoIWZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPmhhc190aWxlKQo+ICAJCQljb250 aW51ZTsKPiBAQCAtMTk2NCw3ICsxOTUwLDcgQEAgc3RhdGljIGJvb2wgZHJtX3RhcmdldF9wcmVm ZXJyZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCWludCB0aWxlX3Bhc3Mg PSAwOwo+ICAJbWFzayA9ICgxIDw8IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50KSAtIDE7Cj4g IHJldHJ5Ogo+IC0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50OyBp KyspIHsKPiArCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwgaSkg ewo+ICAJCWZiX2hlbHBlcl9jb25uID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXTsKPiAg Cj4gIAkJaWYgKGNvbm5fY29uZmlndXJlZCAmICgxIDw8IGkpKQo+IEBAIC0yMTI3LDYgKzIxMTMs OSBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlcikKPiAgCXdpZHRoID0gZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGg7Cj4gIAloZWln aHQgPSBkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQ7Cj4gIAo+ICsJLyogcHJldmVudCBjb25j dXJyZW50IG1vZGlmaWNhdGlvbiBvZiBjb25uZWN0b3JfY291bnQgYnkgaG90cGx1ZyAqLwo+ICsJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsK PiArCj4gIAljcnRjcyA9IGtjYWxsb2MoZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQsCj4gIAkJ CXNpemVvZihzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICopLCBHRlBfS0VSTkVMKTsKPiAgCW1v ZGVzID0ga2NhbGxvYyhmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwKPiBAQCAtMjE0MCw3ICsy MTI5LDYgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVy ICpmYl9oZWxwZXIpCj4gIAkJZ290byBvdXQ7Cj4gIAl9Cj4gIAo+IC0KPiAgCWRybV9lbmFibGVf Y29ubmVjdG9ycyhmYl9oZWxwZXIsIGVuYWJsZWQpOwo+ICAKPiAgCWlmICghKGZiX2hlbHBlci0+ ZnVuY3MtPmluaXRpYWxfY29uZmlnICYmCj4gQEAgLTIxNjksNyArMjE1Nyw3IEBAIHN0YXRpYyB2 b2lkIGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ICAJ CWRybV9mYl9oZWxwZXJfbW9kZXNldF9yZWxlYXNlKGZiX2hlbHBlciwKPiAgCQkJCQkgICAgICAm ZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQpOwo+ICAKPiAtCWZvciAoaSA9IDA7IGkg PCBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudDsgaSsrKSB7Cj4gKwlkcm1fZmJfaGVscGVyX2Zv cl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKPiAgCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSA9IG1vZGVzW2ldOwo+ICAJCXN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKmZi X2NydGMgPSBjcnRjc1tpXTsKPiAgCQlzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0ID0gJm9m ZnNldHNbaV07Cj4gQEAgLTIyNDYsNyArMjIzNCw5IEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9j cnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ICBpbnQgZHJtX2ZiX2hlbHBl cl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBpbnQgYnBw X3NlbCkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ ICsJc3RydWN0IGZiX2luZm8gKmluZm87Cj4gIAlpbnQgY291bnQgPSAwOwo+ICsJaW50IHJldDsK PiAgCj4gIAlpZiAoIWRybV9mYmRldl9lbXVsYXRpb24pCj4gIAkJcmV0dXJuIDA7Cj4gQEAgLTIy NTUsNyArMjI0NSw2IEBAIGludCBkcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIGludCBicHBfc2VsKQo+ICAJY291bnQgPSBkcm1fZmJf aGVscGVyX3Byb2JlX2Nvbm5lY3Rvcl9tb2RlcyhmYl9oZWxwZXIsCj4gIAkJCQkJCSAgICBkZXYt Pm1vZGVfY29uZmlnLm1heF93aWR0aCwKPiAgCQkJCQkJICAgIGRldi0+bW9kZV9jb25maWcubWF4 X2hlaWdodCk7Cj4gLQltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICAJ LyoKPiAgCSAqIHdlIHNob3VsZG4ndCBlbmQgdXAgd2l0aCBubyBtb2RlcyBoZXJlLgo+ICAJICov Cj4gQEAgLTIyNjMsOCArMjI1MiwyNiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZp ZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBpbnQgYnBwX3NlbCkKPiAgCQlkZXZf aW5mbyhmYl9oZWxwZXItPmRldi0+ZGV2LCAiTm8gY29ubmVjdG9ycyByZXBvcnRlZCBjb25uZWN0 ZWQgd2l0aCBtb2Rlc1xuIik7Cj4gIAo+ICAJZHJtX3NldHVwX2NydGNzKGZiX2hlbHBlcik7Cj4g KwlyZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9mYl9wcm9iZShmYl9oZWxwZXIsIGJwcF9zZWwp Owo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiArCWlmIChyZXQp Cj4gKwkJcmV0dXJuIHJldDsKPiAgCj4gLQlyZXR1cm4gZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJf cHJvYmUoZmJfaGVscGVyLCBicHBfc2VsKTsKPiArCWluZm8gPSBmYl9oZWxwZXItPmZiZGV2Owo+ ICsJaW5mby0+dmFyLnBpeGNsb2NrID0gMDsKPiArCXJldCA9IHJlZ2lzdGVyX2ZyYW1lYnVmZmVy KGluZm8pOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlkZXZfaW5m byhkZXYtPmRldiwgImZiJWQ6ICVzIGZyYW1lIGJ1ZmZlciBkZXZpY2VcbiIsCj4gKwkJIGluZm8t Pm5vZGUsIGluZm8tPmZpeC5pZCk7Cj4gKwo+ICsJaWYgKGxpc3RfZW1wdHkoJmtlcm5lbF9mYl9o ZWxwZXJfbGlzdCkpCj4gKwkJcmVnaXN0ZXJfc3lzcnFfa2V5KCd2JywgJnN5c3JxX2RybV9mYl9o ZWxwZXJfcmVzdG9yZV9vcCk7Cj4gKwo+ICsJbGlzdF9hZGQoJmZiX2hlbHBlci0+a2VybmVsX2Zi X2xpc3QsICZrZXJuZWxfZmJfaGVscGVyX2xpc3QpOwo+ICsKPiArCXJldHVybiAwOwo+ICB9Cj4g IEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyk7Cj4gIAo+IC0tIAo+ IDIuMTAuMgo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBv cmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=