From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 1/3] drm: Hold mode_config.lock to prevent hotplug whilst setting up crtcs Date: Wed, 23 Nov 2016 14:04:15 +0000 Message-ID: <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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlIGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50IGlzIG1vZGlmaWVkIHdoZW4gYSBuZXcgY29u bmVjdG9yIGlzCmNvbnN0cnVjdGVkIGZvbGxvd2luZyBhIGhvdHBsdWcgZXZlbnQgKGUuZy4gRFAt TVNUKS4gVGhpcyBjYXVzZXMgdHJvdWJsZQpmb3IgZHJtX3NldHVwX2NydGNzKCkgYW5kIGZyaWVu ZHMgdGhhdCBhc3N1bWUgdGhhdCBmYl9oZWxwZXIgaXMKY29uc3RhbnQ6CgpbIDEyNTAuODcyOTk3 XSBCVUc6IEtBU0FOOiBzbGFiLW91dC1vZi1ib3VuZHMgaW4gZHJtX3NldHVwX2NydGNzKzB4MzIw LzB4ZjgwIGF0IGFkZHIgZmZmZjg4MDc0Y2RkMjYwOApbIDEyNTAuODczMDIwXSBXcml0ZSBvZiBz aXplIDQwIGJ5IHRhc2sga3dvcmtlci91ODozLzQ4MApbIDEyNTAuODczMDM5XSBDUFU6IDIgUElE OiA0ODAgQ29tbToga3dvcmtlci91ODozIFRhaW50ZWQ6IEcgICAgIFUgICAgICAgICAgNC45LjAt cmM2KyAjMjg1ClsgMTI1MC44NzMwNDNdIEhhcmR3YXJlIG5hbWU6ICAgICAgICAgICAgICAgICAg L05VQzZpM1NZQiwgQklPUyBTWVNLTGkzNS44NkEuMDAyNC4yMDE1LjEwMjcuMjE0MiAxMC8yNy8y MDE1ClsgMTI1MC44NzMwNTBdIFdvcmtxdWV1ZTogZXZlbnRzX3VuYm91bmQgYXN5bmNfcnVuX2Vu dHJ5X2ZuClsgMTI1MC44NzMwNTZdICBmZmZmODgwNzBmOWQ3OGYwIGZmZmZmZmZmODE0YjcyYWEg ZmZmZjg4MDc0ZTQwYzVjMCBmZmZmODgwNzRjZGQyNjA4ClsgMTI1MC44NzMwNjddICBmZmZmODgw NzBmOWQ3OTE4IGZmZmZmZmZmODEyNGZmM2MgZmZmZjg4MDcwZjlkNzliMCBmZmZmODgwNzRjZGQy NjAwClsgMTI1MC44NzMwNzldICBmZmZmODgwNzRlNDBjNWMwIGZmZmY4ODA3MGY5ZDc5YTAgZmZm ZmZmZmY4MTI1MDFlNCAwMDAwMDAwMDAwMDAwMDA1ClsgMTI1MC44NzMwOTBdIENhbGwgVHJhY2U6 ClsgMTI1MC44NzMwOTldICBbPGZmZmZmZmZmODE0YjcyYWE+XSBkdW1wX3N0YWNrKzB4NjcvMHg5 ZApbIDEyNTAuODczMTA2XSAgWzxmZmZmZmZmZjgxMjRmZjNjPl0ga2FzYW5fb2JqZWN0X2Vycisw eDFjLzB4NzAKWyAxMjUwLjg3MzExM10gIFs8ZmZmZmZmZmY4MTI1MDFlND5dIGthc2FuX3JlcG9y dF9lcnJvcisweDIwNC8weDRmMApbIDEyNTAuODczMTIwXSAgWzxmZmZmZmZmZjgxNjk4ZGYwPl0g PyBkcm1fZGV2X3ByaW50aysweDE0MC8weDE0MApbIDEyNTAuODczMTI3XSAgWzxmZmZmZmZmZjgx MjUwYWMzPl0ga2FzYW5fcmVwb3J0KzB4NTMvMHg2MApbIDEyNTAuODczMTM0XSAgWzxmZmZmZmZm ZjgxNjg4YjQwPl0gPyBkcm1fc2V0dXBfY3J0Y3MrMHgzMjAvMHhmODAKWyAxMjUwLjg3MzE0Ml0g IFs8ZmZmZmZmZmY4MTI0ZjE4ZT5dIGNoZWNrX21lbW9yeV9yZWdpb24rMHgxM2UvMHgxYTAKWyAx MjUwLjg3MzE0N10gIFs8ZmZmZmZmZmY4MTI0ZjVmMz5dIG1lbXNldCsweDIzLzB4NDAKWyAxMjUw Ljg3MzE1NF0gIFs8ZmZmZmZmZmY4MTY4OGI0MD5dIGRybV9zZXR1cF9jcnRjcysweDMyMC8weGY4 MApbIDEyNTAuODczMTYxXSAgWzxmZmZmZmZmZjgxMGJlN2M1Pl0gPyB3YWtlX3VwX3ErMHg0NS8w eDgwClsgMTI1MC44NzMxNjldICBbPGZmZmZmZmZmODFiMGMxODA+XSA/IG11dGV4X2xvY2tfbmVz dGVkKzB4NWEwLzB4NWEwClsgMTI1MC44NzMxNzZdICBbPGZmZmZmZmZmODE2OGEwZTY+XSBkcm1f ZmJfaGVscGVyX2luaXRpYWxfY29uZmlnKzB4MjA2LzB4N2EwClsgMTI1MC44NzMxODNdICBbPGZm ZmZmZmZmODE2ODllZTA+XSA/IGRybV9mYl9oZWxwZXJfc2V0X3BhcisweDkwLzB4OTAKWyAxMjUw Ljg3MzMwM10gIFs8ZmZmZmZmZmZhMGI2ODY5MD5dID8gaW50ZWxfZmJkZXZfZmluaSsweDE0MC8w eDE0MCBbaTkxNV0KWyAxMjUwLjg3MzM4N10gIFs8ZmZmZmZmZmZhMGI2ODZiMj5dIGludGVsX2Zi ZGV2X2luaXRpYWxfY29uZmlnKzB4MjIvMHg0MCBbaTkxNV0KWyAxMjUwLjg3MzM5MV0gIFs8ZmZm ZmZmZmY4MTBiNTBmZj5dIGFzeW5jX3J1bl9lbnRyeV9mbisweDdmLzB4MjcwClsgMTI1MC44NzMz OTRdICBbPGZmZmZmZmZmODEwYTY0YjA+XSBwcm9jZXNzX29uZV93b3JrKzB4M2QwLzB4OTYwClsg MTI1MC44NzMzOThdICBbPGZmZmZmZmZmODEwYTY0MWQ+XSA/IHByb2Nlc3Nfb25lX3dvcmsrMHgz M2QvMHg5NjAKWyAxMjUwLjg3MzQwMV0gIFs8ZmZmZmZmZmY4MTBhNjBlMD5dID8gbWF4X2FjdGl2 ZV9zdG9yZSsweGYwLzB4ZjAKWyAxMjUwLjg3MzQwNl0gIFs8ZmZmZmZmZmY4MTBmNmY5ZD5dID8g ZG9fcmF3X3NwaW5fbG9jaysweDEwZC8weDFhMApbIDEyNTAuODczNDEzXSAgWzxmZmZmZmZmZjgx MGE3NjdkPl0gd29ya2VyX3RocmVhZCsweDhkLzB4ODQwClsgMTI1MC44NzM0MTldICBbPGZmZmZm ZmZmODEwYTc1ZjA+XSA/IGNyZWF0ZV93b3JrZXIrMHgyZTAvMHgyZTAKWyAxMjUwLjg3MzQyNl0g IFs8ZmZmZmZmZmY4MTBiMDQ1ND5dIGt0aHJlYWQrMHgxOTQvMHgxYzAKWyAxMjUwLjg3MzQzMl0g IFs8ZmZmZmZmZmY4MTBiMDJjMD5dID8ga3RocmVhZF9wYXJrKzB4NjAvMHg2MApbIDEyNTAuODcz NDM4XSAgWzxmZmZmZmZmZjgxMGYwOTVkPl0gPyB0cmFjZV9oYXJkaXJxc19vbisweGQvMHgxMApb IDEyNTAuODczNDQ2XSAgWzxmZmZmZmZmZjgxMGIwMmMwPl0gPyBrdGhyZWFkX3BhcmsrMHg2MC8w eDYwClsgMTI1MC44NzM0NTNdICBbPGZmZmZmZmZmODEwYjAyYzA+XSA/IGt0aHJlYWRfcGFyaysw eDYwLzB4NjAKWyAxMjUwLjg3MzQ1N10gIFs8ZmZmZmZmZmY4MWIxMjI3Nz5dIHJldF9mcm9tX2Zv cmsrMHgyNy8weDQwClsgMTI1MC44NzM0NjBdIE9iamVjdCBhdCBmZmZmODgwNzRjZGQyNjA4LCBp biBjYWNoZSBrbWFsbG9jLTMyIHNpemU6IDMyCgpCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVk ZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg4MjYKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9m Yl9oZWxwZXIuYyB8IDczICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZmJfaGVscGVyLmMKaW5kZXggMTQ1NDc4MTc1NjZkLi5kMTNjODU2ODI4OTEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9mYl9oZWxwZXIuYwpAQCAtOTcsNiArOTcsMTAgQEAgc3RhdGljIExJU1RfSEVBRChr ZXJuZWxfZmJfaGVscGVyX2xpc3QpOwogICogbW1hcCBwYWdlIHdyaXRlcy4KICAqLwogCisjZGVm aW5lIGRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiaCwgaV9fKSBcCisJZm9yICgo e2xvY2tkZXBfYXNzZXJ0X2hlbGQoJihmYmgpLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsgMTt9 KSwgXAorCSAgICAgaV9fID0gMDsgaV9fIDwgKGZiaCktPmNvbm5lY3Rvcl9jb3VudDsgaV9fKysp CisKIC8qKgogICogZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9jb25uZWN0b3JzKCkgLSBh ZGQgYWxsIGNvbm5lY3RvcnMgdG8gZmJkZXYKICAqIAkJCQkJICAgICAgIGVtdWxhdGlvbiBoZWxw ZXIKQEAgLTEzMCw3ICsxMzQsNyBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9j b25uZWN0b3JzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJbXV0ZXhfdW5sb2Nr KCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAlyZXR1cm4gMDsKIGZhaWw6Ci0JZm9yIChpID0g MDsgaSA8IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50OyBpKyspIHsKKwlkcm1fZmJfaGVscGVy X2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKIAkJc3RydWN0IGRybV9mYl9oZWxw ZXJfY29ubmVjdG9yICpmYl9oZWxwZXJfY29ubmVjdG9yID0KIAkJCWZiX2hlbHBlci0+Y29ubmVj dG9yX2luZm9baV07CiAKQEAgLTU2NSw3ICs1NjksNyBAQCBzdGF0aWMgdm9pZCBkcm1fZmJfaGVs cGVyX2RwbXMoc3RydWN0IGZiX2luZm8gKmluZm8sIGludCBkcG1zX21vZGUpCiAJCQljb250aW51 ZTsKIAogCQkvKiBXYWxrIHRoZSBjb25uZWN0b3JzICYgZW5jb2RlcnMgb24gdGhpcyBmYiB0dXJu aW5nIHRoZW0gb24vb2ZmICovCi0JCWZvciAoaiA9IDA7IGogPCBmYl9oZWxwZXItPmNvbm5lY3Rv cl9jb3VudDsgaisrKSB7CisJCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hl bHBlciwgaikgewogCQkJY29ubmVjdG9yID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tqXS0+ Y29ubmVjdG9yOwogCQkJY29ubmVjdG9yLT5mdW5jcy0+ZHBtcyhjb25uZWN0b3IsIGRwbXNfbW9k ZSk7CiAJCQlkcm1fb2JqZWN0X3Byb3BlcnR5X3NldF92YWx1ZSgmY29ubmVjdG9yLT5iYXNlLApA QCAtMTQ2OSw3ICsxNDczLDYgQEAgc3RhdGljIGludCBkcm1fZmJfaGVscGVyX3NpbmdsZV9mYl9w cm9iZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCWludCByZXQgPSAwOwogCWlu dCBjcnRjX2NvdW50ID0gMDsKIAlpbnQgaTsKLQlzdHJ1Y3QgZmJfaW5mbyAqaW5mbzsKIAlzdHJ1 Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgc2l6ZXM7CiAJaW50IGdhbW1hX3NpemUgPSAw OwogCkBAIC0xNDg1LDcgKzE0ODgsNyBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xl X2ZiX3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCXNpemVzLnN1cmZh Y2VfZGVwdGggPSBzaXplcy5zdXJmYWNlX2JwcCA9IHByZWZlcnJlZF9icHA7CiAKIAkvKiBmaXJz dCB1cCBnZXQgYSBjb3VudCBvZiBjcnRjcyBub3cgaW4gdXNlIGFuZCBuZXcgbWluL21heGVzIHdp ZHRoL2hlaWdodHMgKi8KLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291 bnQ7IGkrKykgeworCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwg aSkgewogCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZiX2hlbHBlcl9jb25uID0g ZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXTsKIAkJc3RydWN0IGRybV9jbWRsaW5lX21vZGUg KmNtZGxpbmVfbW9kZTsKIApAQCAtMTU3Miw4ICsxNTc1LDYgQEAgc3RhdGljIGludCBkcm1fZmJf aGVscGVyX3NpbmdsZV9mYl9wcm9iZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAog CWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCi0JaW5mbyA9IGZiX2hlbHBlci0+ZmJkZXY7 Ci0KIAkvKgogCSAqIFNldCB0aGUgZmIgcG9pbnRlciAtIHVzdWFsbHkgZHJtX3NldHVwX2NydGNz IGRvZXMgdGhpcyBmb3IgaG90cGx1ZwogCSAqIGV2ZW50cywgYnV0IGF0IGluaXQgdGltZSBkcm1f c2V0dXBfY3J0Y3MgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZQpAQCAtMTU4NSwyMCArMTU4Niw2 IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJaWYgKGZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVf c2V0Lm51bV9jb25uZWN0b3JzKQogCQkJZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQu ZmIgPSBmYl9oZWxwZXItPmZiOwogCi0KLQlpbmZvLT52YXIucGl4Y2xvY2sgPSAwOwotCWlmIChy ZWdpc3Rlcl9mcmFtZWJ1ZmZlcihpbmZvKSA8IDApCi0JCXJldHVybiAtRUlOVkFMOwotCi0JZGV2 X2luZm8oZmJfaGVscGVyLT5kZXYtPmRldiwgImZiJWQ6ICVzIGZyYW1lIGJ1ZmZlciBkZXZpY2Vc biIsCi0JCQlpbmZvLT5ub2RlLCBpbmZvLT5maXguaWQpOwotCi0JaWYgKGxpc3RfZW1wdHkoJmtl cm5lbF9mYl9oZWxwZXJfbGlzdCkpIHsKLQkJcmVnaXN0ZXJfc3lzcnFfa2V5KCd2JywgJnN5c3Jx X2RybV9mYl9oZWxwZXJfcmVzdG9yZV9vcCk7Ci0JfQotCi0JbGlzdF9hZGQoJmZiX2hlbHBlci0+ a2VybmVsX2ZiX2xpc3QsICZrZXJuZWxfZmJfaGVscGVyX2xpc3QpOwotCiAJcmV0dXJuIDA7CiB9 CiAKQEAgLTE3MzAsNyArMTcxNyw3IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9wcm9iZV9j b25uZWN0b3JfbW9kZXMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAlpbnQgY291 bnQgPSAwOwogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y29ubmVjdG9y X2NvdW50OyBpKyspIHsKKwlkcm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxw ZXIsIGkpIHsKIAkJY29ubmVjdG9yID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXS0+Y29u bmVjdG9yOwogCQljb3VudCArPSBjb25uZWN0b3ItPmZ1bmNzLT5maWxsX21vZGVzKGNvbm5lY3Rv ciwgbWF4WCwgbWF4WSk7CiAJfQpAQCAtMTgzMCw3ICsxODE3LDcgQEAgc3RhdGljIHZvaWQgZHJt X2VuYWJsZV9jb25uZWN0b3JzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKIAlpbnQgaSA9IDA7CiAKLQlmb3IgKGkgPSAw OyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykgeworCWRybV9mYl9oZWxwZXJf Zm9yX2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwgaSkgewogCQljb25uZWN0b3IgPSBmYl9oZWxw ZXItPmNvbm5lY3Rvcl9pbmZvW2ldLT5jb25uZWN0b3I7CiAJCWVuYWJsZWRbaV0gPSBkcm1fY29u bmVjdG9yX2VuYWJsZWQoY29ubmVjdG9yLCB0cnVlKTsKIAkJRFJNX0RFQlVHX0tNUygiY29ubmVj dG9yICVkIGVuYWJsZWQ/ICVzXG4iLCBjb25uZWN0b3ItPmJhc2UuaWQsCkBAIC0xODQxLDcgKzE4 MjgsNyBAQCBzdGF0aWMgdm9pZCBkcm1fZW5hYmxlX2Nvbm5lY3RvcnMoc3RydWN0IGRybV9mYl9o ZWxwZXIgKmZiX2hlbHBlciwKIAlpZiAoYW55X2VuYWJsZWQpCiAJCXJldHVybjsKIAotCWZvciAo aSA9IDA7IGkgPCBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudDsgaSsrKSB7CisJZHJtX2ZiX2hl bHBlcl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVscGVyLCBpKSB7CiAJCWNvbm5lY3RvciA9IGZi X2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV0tPmNvbm5lY3RvcjsKIAkJZW5hYmxlZFtpXSA9IGRy bV9jb25uZWN0b3JfZW5hYmxlZChjb25uZWN0b3IsIGZhbHNlKTsKIAl9CkBAIC0xODYyLDcgKzE4 NDksNyBAQCBzdGF0aWMgYm9vbCBkcm1fdGFyZ2V0X2Nsb25lZChzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyLAogCQlyZXR1cm4gZmFsc2U7CiAKIAljb3VudCA9IDA7Ci0JZm9yIChpID0g MDsgaSA8IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50OyBpKyspIHsKKwlkcm1fZmJfaGVscGVy X2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKIAkJaWYgKGVuYWJsZWRbaV0pCiAJ CQljb3VudCsrOwogCX0KQEAgLTE4NzMsNyArMTg2MCw3IEBAIHN0YXRpYyBib29sIGRybV90YXJn ZXRfY2xvbmVkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAKIAkvKiBjaGVjayB0 aGUgY29tbWFuZCBsaW5lIG9yIGlmIG5vdGhpbmcgY29tbW9uIHBpY2sgMTAyNHg3NjggKi8KIAlj YW5fY2xvbmUgPSB0cnVlOwotCWZvciAoaSA9IDA7IGkgPCBmYl9oZWxwZXItPmNvbm5lY3Rvcl9j b3VudDsgaSsrKSB7CisJZHJtX2ZiX2hlbHBlcl9mb3JfZWFjaF9jb25uZWN0b3IoZmJfaGVscGVy LCBpKSB7CiAJCWlmICghZW5hYmxlZFtpXSkKIAkJCWNvbnRpbnVlOwogCQlmYl9oZWxwZXJfY29u biA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07CkBAIC0xODk5LDggKzE4ODYsNyBAQCBz dGF0aWMgYm9vbCBkcm1fdGFyZ2V0X2Nsb25lZChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVs cGVyLAogCWNhbl9jbG9uZSA9IHRydWU7CiAJZG10X21vZGUgPSBkcm1fbW9kZV9maW5kX2RtdChm Yl9oZWxwZXItPmRldiwgMTAyNCwgNzY4LCA2MCwgZmFsc2UpOwogCi0JZm9yIChpID0gMDsgaSA8 IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50OyBpKyspIHsKLQorCWRybV9mYl9oZWxwZXJfZm9y X2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwgaSkgewogCQlpZiAoIWVuYWJsZWRbaV0pCiAJCQlj b250aW51ZTsKIApAQCAtMTkzMSw3ICsxOTE3LDcgQEAgc3RhdGljIGludCBkcm1fZ2V0X3RpbGVf b2Zmc2V0cyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCWludCBpOwogCWludCBo b2Zmc2V0ID0gMCwgdm9mZnNldCA9IDA7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5j b25uZWN0b3JfY291bnQ7IGkrKykgeworCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9y KGZiX2hlbHBlciwgaSkgewogCQlmYl9oZWxwZXJfY29ubiA9IGZiX2hlbHBlci0+Y29ubmVjdG9y X2luZm9baV07CiAJCWlmICghZmJfaGVscGVyX2Nvbm4tPmNvbm5lY3Rvci0+aGFzX3RpbGUpCiAJ CQljb250aW51ZTsKQEAgLTE5NjQsNyArMTk1MCw3IEBAIHN0YXRpYyBib29sIGRybV90YXJnZXRf cHJlZmVycmVkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJaW50IHRpbGVfcGFz cyA9IDA7CiAJbWFzayA9ICgxIDw8IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50KSAtIDE7CiBy ZXRyeToKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykg eworCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwgaSkgewogCQlm Yl9oZWxwZXJfY29ubiA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07CiAKIAkJaWYgKGNv bm5fY29uZmlndXJlZCAmICgxIDw8IGkpKQpAQCAtMjEyNyw2ICsyMTEzLDkgQEAgc3RhdGljIHZv aWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJd2lk dGggPSBkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aDsKIAloZWlnaHQgPSBkZXYtPm1vZGVfY29u ZmlnLm1heF9oZWlnaHQ7CiAKKwkvKiBwcmV2ZW50IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIG9m IGNvbm5lY3Rvcl9jb3VudCBieSBob3RwbHVnICovCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZmJf aGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKKwogCWNydGNzID0ga2NhbGxvYyhmYl9o ZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwKIAkJCXNpemVvZihzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9j cnRjICopLCBHRlBfS0VSTkVMKTsKIAltb2RlcyA9IGtjYWxsb2MoZmJfaGVscGVyLT5jb25uZWN0 b3JfY291bnQsCkBAIC0yMTQwLDcgKzIxMjksNiBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0 Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIAkJZ290byBvdXQ7CiAJfQogCi0K IAlkcm1fZW5hYmxlX2Nvbm5lY3RvcnMoZmJfaGVscGVyLCBlbmFibGVkKTsKIAogCWlmICghKGZi X2hlbHBlci0+ZnVuY3MtPmluaXRpYWxfY29uZmlnICYmCkBAIC0yMTY5LDcgKzIxNTcsNyBAQCBz dGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl cikKIAkJZHJtX2ZiX2hlbHBlcl9tb2Rlc2V0X3JlbGVhc2UoZmJfaGVscGVyLAogCQkJCQkgICAg ICAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQpOwogCi0JZm9yIChpID0gMDsgaSA8 IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50OyBpKyspIHsKKwlkcm1fZmJfaGVscGVyX2Zvcl9l YWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKIAkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUgPSBtb2Rlc1tpXTsKIAkJc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqZmJfY3J0YyA9 IGNydGNzW2ldOwogCQlzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0ID0gJm9mZnNldHNbaV07 CkBAIC0yMjQ2LDcgKzIyMzQsOSBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIGludCBkcm1fZmJfaGVscGVyX2luaXRpYWxfY29u ZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIGludCBicHBfc2VsKQogewogCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKKwlzdHJ1Y3QgZmJfaW5mbyAq aW5mbzsKIAlpbnQgY291bnQgPSAwOworCWludCByZXQ7CiAKIAlpZiAoIWRybV9mYmRldl9lbXVs YXRpb24pCiAJCXJldHVybiAwOwpAQCAtMjI1NSw3ICsyMjQ1LDYgQEAgaW50IGRybV9mYl9oZWxw ZXJfaW5pdGlhbF9jb25maWcoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgaW50IGJw cF9zZWwpCiAJY291bnQgPSBkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5lY3Rvcl9tb2RlcyhmYl9o ZWxwZXIsCiAJCQkJCQkgICAgZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGgsCiAJCQkJCQkgICAg ZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsKLQltdXRleF91bmxvY2soJmRldi0+bW9kZV9j b25maWcubXV0ZXgpOwogCS8qCiAJICogd2Ugc2hvdWxkbid0IGVuZCB1cCB3aXRoIG5vIG1vZGVz IGhlcmUuCiAJICovCkBAIC0yMjYzLDggKzIyNTIsMjYgQEAgaW50IGRybV9mYl9oZWxwZXJfaW5p dGlhbF9jb25maWcoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgaW50IGJwcF9zZWwp CiAJCWRldl9pbmZvKGZiX2hlbHBlci0+ZGV2LT5kZXYsICJObyBjb25uZWN0b3JzIHJlcG9ydGVk IGNvbm5lY3RlZCB3aXRoIG1vZGVzXG4iKTsKIAogCWRybV9zZXR1cF9jcnRjcyhmYl9oZWxwZXIp OworCXJldCA9IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKGZiX2hlbHBlciwgYnBwX3Nl bCk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKKwlpZiAocmV0KQor CQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKGZi X2hlbHBlciwgYnBwX3NlbCk7CisJaW5mbyA9IGZiX2hlbHBlci0+ZmJkZXY7CisJaW5mby0+dmFy LnBpeGNsb2NrID0gMDsKKwlyZXQgPSByZWdpc3Rlcl9mcmFtZWJ1ZmZlcihpbmZvKTsKKwlpZiAo cmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWRldl9pbmZvKGRldi0+ZGV2LCAiZmIlZDogJXMg ZnJhbWUgYnVmZmVyIGRldmljZVxuIiwKKwkJIGluZm8tPm5vZGUsIGluZm8tPmZpeC5pZCk7CisK KwlpZiAobGlzdF9lbXB0eSgma2VybmVsX2ZiX2hlbHBlcl9saXN0KSkKKwkJcmVnaXN0ZXJfc3lz cnFfa2V5KCd2JywgJnN5c3JxX2RybV9mYl9oZWxwZXJfcmVzdG9yZV9vcCk7CisKKwlsaXN0X2Fk ZCgmZmJfaGVscGVyLT5rZXJuZWxfZmJfbGlzdCwgJmtlcm5lbF9mYl9oZWxwZXJfbGlzdCk7CisK KwlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZp Zyk7CiAKLS0gCjIuMTAuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==