From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 3/4] snd: add support for displayport multi-stream to hda codec. Date: Wed, 17 Jun 2015 14:01:58 +1000 Message-ID: <1434513719-3580-4-git-send-email-airlied@gmail.com> References: <1434513719-3580-1-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTP id 61D2E7A013 for ; Tue, 16 Jun 2015 21:02:13 -0700 (PDT) Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id 3536436507A for ; Wed, 17 Jun 2015 04:02:13 +0000 (UTC) Received: from dreadlord-bne-redhat-com.bne.redhat.com (dhcp-40-179.bne.redhat.com [10.64.40.179]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t5H421Jo010302 for ; Wed, 17 Jun 2015 00:02:11 -0400 In-Reply-To: <1434513719-3580-1-git-send-email-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KCkFkZCBuZXcgdmVyYnMgR0VU X0RQX1NUUkVBTV9JRCBhbmQgU0VUX0RQX1NUUkVBTV9JRCBmcm9tIEludGVsIGRvY3MuCmdldCBz dHJlYW0gaWQgYW5kIHByaW50IGluIHByb2MKc3BsaXQgRUxEIHRvIGJlIHBlciBkZXZpY2Ugbm90 IHBlciBwaW4KaGFuZGxlIHBkL2VsZHYgcGVyIGRldmljZSBub3QgcGVyIHBpbgpzZXR1cCBjb2Rl Yy0+ZHBfbXN0IGVhcmxpZXIuCgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEFpcmxpZSA8YWlybGllZEBy ZWRoYXQuY29tPgotLS0KIGluY2x1ZGUvc291bmQvaGRhX3ZlcmJzLmggIHwgICAyICsKIHNvdW5k L3BjaS9oZGEvaGRhX2NvZGVjLmMgIHwgICAxICsKIHNvdW5kL3BjaS9oZGEvaGRhX3Byb2MuYyAg IHwgICA1ICstCiBzb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYyB8IDE4MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTMxIGlu c2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQv aGRhX3ZlcmJzLmggYi9pbmNsdWRlL3NvdW5kL2hkYV92ZXJicy5oCmluZGV4IGQwNTA5ZGIuLjNi NjJhYzUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc291bmQvaGRhX3ZlcmJzLmgKKysrIGIvaW5jbHVk ZS9zb3VuZC9oZGFfdmVyYnMuaApAQCAtNzUsNiArNzUsNyBAQCBlbnVtIHsKICNkZWZpbmUgQUNf VkVSQl9HRVRfSERNSV9DSEFOX1NMT1QJCTB4MGYzNAogI2RlZmluZSBBQ19WRVJCX0dFVF9ERVZJ Q0VfU0VMCQkJMHhmMzUKICNkZWZpbmUgQUNfVkVSQl9HRVRfREVWSUNFX0xJU1QJCQkweGYzNgor I2RlZmluZSBBQ19WRVJCX0dFVF9EUF9TVFJFQU1fSUQJCTB4ZjNjCiAKIC8qCiAgKiBTRVQgdmVy YnMKQEAgLTExNSw2ICsxMTYsNyBAQCBlbnVtIHsKICNkZWZpbmUgQUNfVkVSQl9TRVRfSERNSV9D UF9DVFJMCQkweDczMwogI2RlZmluZSBBQ19WRVJCX1NFVF9IRE1JX0NIQU5fU0xPVAkJMHg3MzQK ICNkZWZpbmUgQUNfVkVSQl9TRVRfREVWSUNFX1NFTAkJCTB4NzM1CisjZGVmaW5lIEFDX1ZFUkJf U0VUX0RQX1NUUkVBTV9JRAkJMHg3M0MKIAogLyoKICAqIFBhcmFtZXRlciBJRHMKZGlmZiAtLWdp dCBhL3NvdW5kL3BjaS9oZGEvaGRhX2NvZGVjLmMgYi9zb3VuZC9wY2kvaGRhL2hkYV9jb2RlYy5j CmluZGV4IDU2NDU0ODEuLjM5ODFjNjMgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvaGRhX2Nv ZGVjLmMKKysrIGIvc291bmQvcGNpL2hkYS9oZGFfY29kZWMuYwpAQCAtNDgyLDYgKzQ4Miw3IEBA IGludCBzbmRfaGRhX2dldF9kZXZpY2VzKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjLCBoZGFfbmlk X3QgbmlkLAogCX0KIAlyZXR1cm4gZGV2aWNlczsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHNuZF9o ZGFfZ2V0X2RldmljZXMpOwogCiAvKgogICogZGVzdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvc291bmQv cGNpL2hkYS9oZGFfcHJvYy5jIGIvc291bmQvcGNpL2hkYS9oZGFfcHJvYy5jCmluZGV4IGJhYWY3 ZWQwLi4zOWZhYzUzIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL2hkYV9wcm9jLmMKKysrIGIv c291bmQvcGNpL2hkYS9oZGFfcHJvYy5jCkBAIC02NDQsMTAgKzY0NCwxMyBAQCBzdGF0aWMgdm9p ZCBwcmludF9kZXZpY2VfbGlzdChzdHJ1Y3Qgc25kX2luZm9fYnVmZmVyICpidWZmZXIsCiAJaW50 IGksIGN1cnIgPSAtMTsKIAl1OCBkZXZfbGlzdFtBQ19NQVhfREVWX0xJU1RfTEVOXTsKIAlpbnQg ZGV2bGlzdF9sZW47CisJaW50IGRwX3NfaWQ7CiAKKwlkcF9zX2lkID0gc25kX2hkYV9jb2RlY19y ZWFkKGNvZGVjLCBuaWQsIDAsCisJCQkJQUNfVkVSQl9HRVRfRFBfU1RSRUFNX0lELCAwKTsKIAlk ZXZsaXN0X2xlbiA9IHNuZF9oZGFfZ2V0X2RldmljZXMoY29kZWMsIG5pZCwgZGV2X2xpc3QsCiAJ CQkJCUFDX01BWF9ERVZfTElTVF9MRU4pOwotCXNuZF9pcHJpbnRmKGJ1ZmZlciwgIiAgRGV2aWNl czogJWRcbiIsIGRldmxpc3RfbGVuKTsKKwlzbmRfaXByaW50ZihidWZmZXIsICIgIERldmljZXM6 ICVkOiAweCV4XG4iLCBkZXZsaXN0X2xlbiwgZHBfc19pZCk7CiAJaWYgKGRldmxpc3RfbGVuIDw9 IDApCiAJCXJldHVybjsKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMg Yi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYwppbmRleCA1ZjQ0ZjYwLi44MjcyNjU2IDEwMDY0 NAotLS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYworKysgYi9zb3VuZC9wY2kvaGRhL3Bh dGNoX2hkbWkuYwpAQCAtNjgsNiArNjgsMTcgQEAgc3RydWN0IGhkbWlfc3BlY19wZXJfY3Z0IHsK IC8qIG1heC4gY29ubmVjdGlvbnMgdG8gYSB3aWRnZXQgKi8KICNkZWZpbmUgSERBX01BWF9DT05O RUNUSU9OUwkzMgogCitzdHJ1Y3QgaGRtaV9zcGVjX3Blcl9waW47CisjZGVmaW5lIEhEQV9NQVhf REVWSUNFUyAzCitzdHJ1Y3QgaGRtaV9zcGVjX3Blcl9kZXZpY2UgeworCXN0cnVjdCBoZG1pX3Nw ZWNfcGVyX3BpbiAqcGluOworCWludCBkZXZpY2VfaWR4OworCXN0cnVjdCBoZG1pX2VsZCBzaW5r X2VsZDsKKyNpZmRlZiBDT05GSUdfUFJPQ19GUworCXN0cnVjdCBzbmRfaW5mb19lbnRyeSAqcHJv Y19lbnRyeTsKKyNlbmRpZgorfTsKKwogc3RydWN0IGhkbWlfc3BlY19wZXJfcGluIHsKIAloZGFf bmlkX3QgcGluX25pZDsKIAlpbnQgbnVtX211eF9uaWRzOwpAQCAtNzYsNyArODcsMTEgQEAgc3Ry dWN0IGhkbWlfc3BlY19wZXJfcGluIHsKIAloZGFfbmlkX3QgY3Z0X25pZDsKIAogCXN0cnVjdCBo ZGFfY29kZWMgKmNvZGVjOwotCXN0cnVjdCBoZG1pX2VsZCBzaW5rX2VsZDsKKworCWludCBudW1f ZGV2aWNlczsKKwl1OCBkZXZfbGlzdFtBQ19NQVhfREVWX0xJU1RfTEVOXTsKKwlzdHJ1Y3QgaGRt aV9zcGVjX3Blcl9kZXZpY2UgZGV2aWNlc1tIREFfTUFYX0RFVklDRVNdOworCiAJc3RydWN0IG11 dGV4IGxvY2s7CiAJc3RydWN0IGRlbGF5ZWRfd29yayB3b3JrOwogCXN0cnVjdCBzbmRfa2NvbnRy b2wgKmVsZF9jdGw7CkBAIC04Niw5ICsxMDEsNiBAQCBzdHJ1Y3QgaGRtaV9zcGVjX3Blcl9waW4g ewogCWJvb2wgbm9uX3BjbTsKIAlib29sIGNobWFwX3NldDsJCS8qIGNoYW5uZWwtbWFwIG92ZXJy aWRlIGJ5IEFMU0EgQVBJPyAqLwogCXVuc2lnbmVkIGNoYXIgY2htYXBbOF07IC8qIEFMU0EgQVBJ IGNoYW5uZWwtbWFwICovCi0jaWZkZWYgQ09ORklHX1BST0NfRlMKLQlzdHJ1Y3Qgc25kX2luZm9f ZW50cnkgKnByb2NfZW50cnk7Ci0jZW5kaWYKIH07CiAKIHN0cnVjdCBjZWFfY2hhbm5lbF9zcGVh a2VyX2FsbG9jYXRpb247CkBAIC00MDksNyArNDIxLDcgQEAgc3RhdGljIGludCBoZG1pX2VsZF9j dGxfaW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKIAogCXBpbl9pZHggPSBrY29u dHJvbC0+cHJpdmF0ZV92YWx1ZTsKIAlwZXJfcGluID0gZ2V0X3BpbihzcGVjLCBwaW5faWR4KTsK LQllbGQgPSAmcGVyX3Bpbi0+c2lua19lbGQ7CisJZWxkID0gJnBlcl9waW4tPmRldmljZXNbMF0u c2lua19lbGQ7CiAKIAltdXRleF9sb2NrKCZwZXJfcGluLT5sb2NrKTsKIAl1aW5mby0+Y291bnQg PSBlbGQtPmVsZF92YWxpZCA/IGVsZC0+ZWxkX3NpemUgOiAwOwpAQCAtNDI5LDcgKzQ0MSw3IEBA IHN0YXRpYyBpbnQgaGRtaV9lbGRfY3RsX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJv bCwKIAogCXBpbl9pZHggPSBrY29udHJvbC0+cHJpdmF0ZV92YWx1ZTsKIAlwZXJfcGluID0gZ2V0 X3BpbihzcGVjLCBwaW5faWR4KTsKLQllbGQgPSAmcGVyX3Bpbi0+c2lua19lbGQ7CisJZWxkID0g JnBlcl9waW4tPmRldmljZXNbMF0uc2lua19lbGQ7CiAKIAltdXRleF9sb2NrKCZwZXJfcGluLT5s b2NrKTsKIAlpZiAoZWxkLT5lbGRfc2l6ZSA+IEFSUkFZX1NJWkUodWNvbnRyb2wtPnZhbHVlLmJ5 dGVzLmRhdGEpKSB7CkBAIC01NDksNjAgKzU2MSw2MyBAQCBzdGF0aWMgdm9pZCBoZG1pX3NldF9j aGFubmVsX2NvdW50KHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjLAogICovCiAKICNpZmRlZiBDT05G SUdfUFJPQ19GUwotc3RhdGljIHZvaWQgcHJpbnRfZWxkX2luZm8oc3RydWN0IHNuZF9pbmZvX2Vu dHJ5ICplbnRyeSwKLQkJCSAgIHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKmJ1ZmZlcikKK3N0YXRp YyB2b2lkIHByaW50X2VsZF9pbmZvX2RldmljZShzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5 LAorCQkJCSAgc3RydWN0IHNuZF9pbmZvX2J1ZmZlciAqYnVmZmVyKQogewotCXN0cnVjdCBoZG1p X3NwZWNfcGVyX3BpbiAqcGVyX3BpbiA9IGVudHJ5LT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGhk bWlfc3BlY19wZXJfZGV2aWNlICpwZXJfZGV2aWNlID0gZW50cnktPnByaXZhdGVfZGF0YTsKIAot CW11dGV4X2xvY2soJnBlcl9waW4tPmxvY2spOwotCXNuZF9oZG1pX3ByaW50X2VsZF9pbmZvKCZw ZXJfcGluLT5zaW5rX2VsZCwgYnVmZmVyKTsKLQltdXRleF91bmxvY2soJnBlcl9waW4tPmxvY2sp OworCW11dGV4X2xvY2soJnBlcl9kZXZpY2UtPnBpbi0+bG9jayk7CisJc25kX2hkbWlfcHJpbnRf ZWxkX2luZm8oJnBlcl9kZXZpY2UtPnNpbmtfZWxkLCBidWZmZXIpOworCW11dGV4X3VubG9jaygm cGVyX2RldmljZS0+cGluLT5sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgd3JpdGVfZWxkX2luZm8o c3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeSwKLQkJCSAgIHN0cnVjdCBzbmRfaW5mb19idWZm ZXIgKmJ1ZmZlcikKK3N0YXRpYyB2b2lkIHdyaXRlX2VsZF9pbmZvX2RldmljZShzdHJ1Y3Qgc25k X2luZm9fZW50cnkgKmVudHJ5LAorCQkJCSAgc3RydWN0IHNuZF9pbmZvX2J1ZmZlciAqYnVmZmVy KQogewotCXN0cnVjdCBoZG1pX3NwZWNfcGVyX3BpbiAqcGVyX3BpbiA9IGVudHJ5LT5wcml2YXRl X2RhdGE7CisJc3RydWN0IGhkbWlfc3BlY19wZXJfZGV2aWNlICpwZXJfZGV2aWNlID0gZW50cnkt PnByaXZhdGVfZGF0YTsKIAotCW11dGV4X2xvY2soJnBlcl9waW4tPmxvY2spOwotCXNuZF9oZG1p X3dyaXRlX2VsZF9pbmZvKCZwZXJfcGluLT5zaW5rX2VsZCwgYnVmZmVyKTsKLQltdXRleF91bmxv Y2soJnBlcl9waW4tPmxvY2spOworCW11dGV4X2xvY2soJnBlcl9kZXZpY2UtPnBpbi0+bG9jayk7 CisJc25kX2hkbWlfd3JpdGVfZWxkX2luZm8oJnBlcl9kZXZpY2UtPnNpbmtfZWxkLCBidWZmZXIp OworCW11dGV4X3VubG9jaygmcGVyX2RldmljZS0+cGluLT5sb2NrKTsKIH0KIAotc3RhdGljIGlu dCBlbGRfcHJvY19uZXcoc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGluLCBpbnQgaW5k ZXgpCitzdGF0aWMgaW50IGVsZF9kZXZpY2VfcHJvY19uZXcoc3RydWN0IGhkbWlfc3BlY19wZXJf ZGV2aWNlICpwZXJfZGV2aWNlLCBpbnQgcGluX2lkeCwgaW50IGRldl9pZHgpCiB7CiAJY2hhciBu YW1lWzMyXTsKLQlzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYyA9IHBlcl9waW4tPmNvZGVjOworCXN0 cnVjdCBoZGFfY29kZWMgKmNvZGVjID0gcGVyX2RldmljZS0+cGluLT5jb2RlYzsKIAlzdHJ1Y3Qg c25kX2luZm9fZW50cnkgKmVudHJ5OwogCWludCBlcnI7CiAKLQlzbnByaW50ZihuYW1lLCBzaXpl b2YobmFtZSksICJlbGQjJWQuJWQiLCBjb2RlYy0+YWRkciwgaW5kZXgpOworCWlmIChkZXZfaWR4 ID09IC0xKQorCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICJlbGQjJWQuJWQiLCBjb2Rl Yy0+YWRkciwgcGluX2lkeCk7CisJZWxzZQorCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSks ICJlbGQjJWQuJWQuJWQiLCBjb2RlYy0+YWRkciwgcGluX2lkeCwgZGV2X2lkeCk7CiAJZXJyID0g c25kX2NhcmRfcHJvY19uZXcoY29kZWMtPmNhcmQsIG5hbWUsICZlbnRyeSk7CiAJaWYgKGVyciA8 IDApCiAJCXJldHVybiBlcnI7CiAKLQlzbmRfaW5mb19zZXRfdGV4dF9vcHMoZW50cnksIHBlcl9w aW4sIHByaW50X2VsZF9pbmZvKTsKLQllbnRyeS0+Yy50ZXh0LndyaXRlID0gd3JpdGVfZWxkX2lu Zm87CisJc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBwZXJfZGV2aWNlLCBwcmludF9lbGRf aW5mb19kZXZpY2UpOworCWVudHJ5LT5jLnRleHQud3JpdGUgPSB3cml0ZV9lbGRfaW5mb19kZXZp Y2U7CiAJZW50cnktPm1vZGUgfD0gU19JV1VTUjsKLQlwZXJfcGluLT5wcm9jX2VudHJ5ID0gZW50 cnk7CisJcGVyX2RldmljZS0+cHJvY19lbnRyeSA9IGVudHJ5OwogCiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyB2b2lkIGVsZF9wcm9jX2ZyZWUoc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJf cGluKQorc3RhdGljIHZvaWQgZWxkX2RldmljZV9wcm9jX2ZyZWUoc3RydWN0IGhkbWlfc3BlY19w ZXJfZGV2aWNlICpwZXJfZGV2aWNlKQogewotCWlmICghcGVyX3Bpbi0+Y29kZWMtPmJ1cy0+c2h1 dGRvd24gJiYgcGVyX3Bpbi0+cHJvY19lbnRyeSkgewotCQlzbmRfZGV2aWNlX2ZyZWUocGVyX3Bp bi0+Y29kZWMtPmNhcmQsIHBlcl9waW4tPnByb2NfZW50cnkpOwotCQlwZXJfcGluLT5wcm9jX2Vu dHJ5ID0gTlVMTDsKKwlpZiAoIXBlcl9kZXZpY2UtPnBpbi0+Y29kZWMtPmJ1cy0+c2h1dGRvd24g JiYgcGVyX2RldmljZS0+cHJvY19lbnRyeSkgeworCQlzbmRfZGV2aWNlX2ZyZWUocGVyX2Rldmlj ZS0+cGluLT5jb2RlYy0+Y2FyZCwgcGVyX2RldmljZS0+cHJvY19lbnRyeSk7CisJCXBlcl9kZXZp Y2UtPnByb2NfZW50cnkgPSBOVUxMOwogCX0KIH0KICNlbHNlCi1zdGF0aWMgaW5saW5lIGludCBl bGRfcHJvY19uZXcoc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGluLAotCQkJICAgICAg IGludCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgaW50IGVsZF9kZXZpY2VfcHJvY19uZXcoc3RydWN0 IGhkbWlfc3BlY19wZXJfZGV2aWNlICpwZXJfZGV2aWNlLAorCQkJCSAgICAgIGludCBwaW5faWR4 LCBpbnQgZGV2X2lkeCkKIHsKIAlyZXR1cm4gMDsKIH0KLXN0YXRpYyBpbmxpbmUgdm9pZCBlbGRf cHJvY19mcmVlKHN0cnVjdCBoZG1pX3NwZWNfcGVyX3BpbiAqcGVyX3BpbikKK3N0YXRpYyBpbmxp bmUgdm9pZCBlbGRfZGV2aWNlX3Byb2NfZnJlZShzdHJ1Y3QgaGRtaV9zcGVjX3Blcl9kZXZpY2Ug KnBlcl9kZXZpY2UpCiB7CiB9CiAjZW5kaWYKQEAgLTExMTIsMTMgKzExMjcsMTMgQEAgc3RhdGlj IHZvaWQgaGRtaV9waW5fc2V0dXBfaW5mb2ZyYW1lKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjLAog CiBzdGF0aWMgdm9pZCBoZG1pX3NldHVwX2F1ZGlvX2luZm9mcmFtZShzdHJ1Y3QgaGRhX2NvZGVj ICpjb2RlYywKIAkJCQkgICAgICAgc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGluLAor CQkJCSAgICAgICBzdHJ1Y3QgaGRtaV9lbGQgKmVsZCwKIAkJCQkgICAgICAgYm9vbCBub25fcGNt KQogewogCXN0cnVjdCBoZG1pX3NwZWMgKnNwZWMgPSBjb2RlYy0+c3BlYzsKIAloZGFfbmlkX3Qg cGluX25pZCA9IHBlcl9waW4tPnBpbl9uaWQ7CiAJaW50IGNoYW5uZWxzID0gcGVyX3Bpbi0+Y2hh bm5lbHM7CiAJaW50IGFjdGl2ZV9jaGFubmVsczsKLQlzdHJ1Y3QgaGRtaV9lbGQgKmVsZDsKIAlp bnQgY2EsIG9yZGVyZWRfY2E7CiAKIAlpZiAoIWNoYW5uZWxzKQpAQCAtMTEyOSw3ICsxMTQ0LDgg QEAgc3RhdGljIHZvaWQgaGRtaV9zZXR1cF9hdWRpb19pbmZvZnJhbWUoc3RydWN0IGhkYV9jb2Rl YyAqY29kZWMsCiAJCQkJCSAgICBBQ19WRVJCX1NFVF9BTVBfR0FJTl9NVVRFLAogCQkJCQkgICAg QU1QX09VVF9VTk1VVEUpOwogCi0JZWxkID0gJnBlcl9waW4tPnNpbmtfZWxkOworCWlmICghZWxk KQorCQllbGQgPSAmcGVyX3Bpbi0+ZGV2aWNlc1swXS5zaW5rX2VsZDsKIAogCWlmICghbm9uX3Bj bSAmJiBwZXJfcGluLT5jaG1hcF9zZXQpCiAJCWNhID0gaGRtaV9tYW51YWxfY2hhbm5lbF9hbGxv Y2F0aW9uKGNoYW5uZWxzLCBwZXJfcGluLT5jaG1hcCk7CkBAIC0xMTkxLDcgKzEyMDcsNyBAQCBz dGF0aWMgdm9pZCBoZG1pX2ludHJpbnNpY19ldmVudChzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYywg dW5zaWduZWQgaW50IHJlcykKIAkJcmV0dXJuOwogCWphY2stPmphY2tfZGlydHkgPSAxOwogCi0J Y29kZWNfZGJnKGNvZGVjLAorCWNvZGVjX2luZm8oY29kZWMsCiAJCSJIRE1JIGhvdCBwbHVnIGV2 ZW50OiBDb2RlYz0lZCBQaW49JWQgRGV2aWNlPSVkIEluYWN0aXZlPSVkIFByZXNlbmNlX0RldGVj dD0lZCBFTERfVmFsaWQ9JWRcbiIsCiAJCWNvZGVjLT5hZGRyLCBqYWNrLT5uaWQsIGRldl9lbnRy eSwgISEocmVzICYgQUNfVU5TT0xfUkVTX0lBKSwKIAkJISEocmVzICYgQUNfVU5TT0xfUkVTX1BE KSwgISEocmVzICYgQUNfVU5TT0xfUkVTX0VMRFYpKTsKQEAgLTE0NDksNyArMTQ2NSw3IEBAIHN0 YXRpYyBpbnQgaGRtaV9wY21fb3BlbihzdHJ1Y3QgaGRhX3BjbV9zdHJlYW0gKmhpbmZvLAogCWlm IChzbmRfQlVHX09OKHBpbl9pZHggPCAwKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJcGVyX3BpbiA9 IGdldF9waW4oc3BlYywgcGluX2lkeCk7Ci0JZWxkID0gJnBlcl9waW4tPnNpbmtfZWxkOworCWVs ZCA9ICZwZXJfcGluLT5kZXZpY2VzWzBdLnNpbmtfZWxkOwogCiAJZXJyID0gaGRtaV9jaG9vc2Vf Y3Z0KGNvZGVjLCBwaW5faWR4LCAmY3Z0X2lkeCwgJm11eF9pZHgpOwogCWlmIChlcnIgPCAwKQpA QCAtMTUzMCw3ICsxNTQ2LDcgQEAgc3RhdGljIGJvb2wgaGRtaV9wcmVzZW50X3NlbnNlKHN0cnVj dCBoZG1pX3NwZWNfcGVyX3BpbiAqcGVyX3BpbiwgaW50IHJlcG9sbCkKIAlzdHJ1Y3QgaGRhX2Nv ZGVjICpjb2RlYyA9IHBlcl9waW4tPmNvZGVjOwogCXN0cnVjdCBoZG1pX3NwZWMgKnNwZWMgPSBj b2RlYy0+c3BlYzsKIAlzdHJ1Y3QgaGRtaV9lbGQgKmVsZCA9ICZzcGVjLT50ZW1wX2VsZDsKLQlz dHJ1Y3QgaGRtaV9lbGQgKnBpbl9lbGQgPSAmcGVyX3Bpbi0+c2lua19lbGQ7CisJc3RydWN0IGhk bWlfZWxkICpwaW5fZWxkOwogCWhkYV9uaWRfdCBwaW5fbmlkID0gcGVyX3Bpbi0+cGluX25pZDsK IAkvKgogCSAqIEFsd2F5cyBleGVjdXRlIGEgR2V0UGluU2Vuc2UgdmVyYiBoZXJlLCBldmVuIHdo ZW4gY2FsbGVkIGZyb20KQEAgLTE1NDQsMjAgKzE1NjAsNDEgQEAgc3RhdGljIGJvb2wgaGRtaV9w cmVzZW50X3NlbnNlKHN0cnVjdCBoZG1pX3NwZWNfcGVyX3BpbiAqcGVyX3BpbiwgaW50IHJlcG9s bCkKIAlib29sIHVwZGF0ZV9lbGQgPSBmYWxzZTsKIAlib29sIGVsZF9jaGFuZ2VkID0gZmFsc2U7 CiAJYm9vbCByZXQ7CisJaW50IGRldmljZV9udW0gPSAwOworCWJvb2wgbmVlZF9yZXBvbGwgPSBm YWxzZTsKKwlib29sIGFueV9lbGRfdmFsaWQgPSBmYWxzZTsKIAogCXNuZF9oZGFfcG93ZXJfdXBf cG0oY29kZWMpOwogCXByZXNlbnQgPSBzbmRfaGRhX3Bpbl9zZW5zZShjb2RlYywgcGluX25pZCk7 CiAKIAltdXRleF9sb2NrKCZwZXJfcGluLT5sb2NrKTsKLQlwaW5fZWxkLT5tb25pdG9yX3ByZXNl bnQgPSAhIShwcmVzZW50ICYgQUNfUElOU0VOU0VfUFJFU0VOQ0UpOwotCWlmIChwaW5fZWxkLT5t b25pdG9yX3ByZXNlbnQpCi0JCWVsZC0+ZWxkX3ZhbGlkICA9ICEhKHByZXNlbnQgJiBBQ19QSU5T RU5TRV9FTERWKTsKLQllbHNlCi0JCWVsZC0+ZWxkX3ZhbGlkID0gZmFsc2U7CiAKLQljb2RlY19k YmcoY29kZWMsCi0JCSJIRE1JIHN0YXR1czogQ29kZWM9JWQgUGluPSVkIFByZXNlbmNlX0RldGVj dD0lZCBFTERfVmFsaWQ9JWRcbiIsCi0JCWNvZGVjLT5hZGRyLCBwaW5fbmlkLCBwaW5fZWxkLT5t b25pdG9yX3ByZXNlbnQsIGVsZC0+ZWxkX3ZhbGlkKTsKKwlpZiAoY29kZWMtPmRwX21zdCkKKwkJ cGVyX3Bpbi0+bnVtX2RldmljZXMgPSBzbmRfaGRhX2dldF9kZXZpY2VzKGNvZGVjLCBwaW5fbmlk LCBwZXJfcGluLT5kZXZfbGlzdCwKKwkJCQkJCQkgICBBQ19NQVhfREVWX0xJU1RfTEVOKTsKK25l eHRfZGV2aWNlOgorCXBpbl9lbGQgPSAmcGVyX3Bpbi0+ZGV2aWNlc1tkZXZpY2VfbnVtXS5zaW5r X2VsZDsKKwllbGRfY2hhbmdlZCA9IGZhbHNlOworCXVwZGF0ZV9lbGQgPSBmYWxzZTsKKwlpZiAo cGVyX3Bpbi0+bnVtX2RldmljZXMpIHsKKwkJcGluX2VsZC0+bW9uaXRvcl9wcmVzZW50ID0gISEo cGVyX3Bpbi0+ZGV2X2xpc3RbZGV2aWNlX251bV0gJiBBQ19ERV9QRCk7CisJCWlmIChwaW5fZWxk LT5tb25pdG9yX3ByZXNlbnQpCisJCQllbGQtPmVsZF92YWxpZCA9ICEhKHBlcl9waW4tPmRldl9s aXN0W2RldmljZV9udW1dICYgQUNfREVfRUxEVik7CisJCWVsc2UKKwkJCWVsZC0+ZWxkX3ZhbGlk ID0gZmFsc2U7CisJCWlmIChlbGQtPmVsZF92YWxpZCkKKwkJCXNuZF9oZGFfY29kZWNfd3JpdGUo Y29kZWMsIHBpbl9uaWQsIDAsIEFDX1ZFUkJfU0VUX0RFVklDRV9TRUwsIGRldmljZV9udW0pOwor CX0gZWxzZSB7CisJCXBpbl9lbGQtPm1vbml0b3JfcHJlc2VudCA9ICEhKHByZXNlbnQgJiBBQ19Q SU5TRU5TRV9QUkVTRU5DRSk7CisJCWlmIChwaW5fZWxkLT5tb25pdG9yX3ByZXNlbnQpCisJCQll bGQtPmVsZF92YWxpZCAgPSAhIShwcmVzZW50ICYgQUNfUElOU0VOU0VfRUxEVik7CisJCWVsc2UK KwkJCWVsZC0+ZWxkX3ZhbGlkID0gZmFsc2U7CisJfQorCisJY29kZWNfaW5mbyhjb2RlYywKKwkJ IkhETUkgc3RhdHVzOiBDb2RlYz0lZCBQaW49JWQgRGV2aWNlPSVkIFByZXNlbmNlX0RldGVjdD0l ZCBFTERfVmFsaWQ9JWRcbiIsCisJCSAgIGNvZGVjLT5hZGRyLCBwaW5fbmlkLCBkZXZpY2VfbnVt LCBwaW5fZWxkLT5tb25pdG9yX3ByZXNlbnQsIGVsZC0+ZWxkX3ZhbGlkKTsKIAogCWlmIChlbGQt PmVsZF92YWxpZCkgewogCQlpZiAoc3BlYy0+b3BzLnBpbl9nZXRfZWxkKGNvZGVjLCBwaW5fbmlk LCBlbGQtPmVsZF9idWZmZXIsCkBAIC0xNTczLDExICsxNjEwLDExIEBAIHN0YXRpYyBib29sIGhk bWlfcHJlc2VudF9zZW5zZShzdHJ1Y3QgaGRtaV9zcGVjX3Blcl9waW4gKnBlcl9waW4sIGludCBy ZXBvbGwpCiAJCWlmIChlbGQtPmVsZF92YWxpZCkgewogCQkJc25kX2hkbWlfc2hvd19lbGQoY29k ZWMsICZlbGQtPmluZm8pOwogCQkJdXBkYXRlX2VsZCA9IHRydWU7CisJCQlhbnlfZWxkX3ZhbGlk ID0gdHJ1ZTsKIAkJfQogCQllbHNlIGlmIChyZXBvbGwpIHsKLQkJCXNjaGVkdWxlX2RlbGF5ZWRf d29yaygmcGVyX3Bpbi0+d29yaywKLQkJCQkJICAgICAgbXNlY3NfdG9famlmZmllcygzMDApKTsK LQkJCWdvdG8gdW5sb2NrOworCQkJbmVlZF9yZXBvbGwgPSB0cnVlOworCQkJZ290byBza2lwX3Rv X25leHRfZGV2aWNlOwogCQl9CiAJfQogCkBAIC0xNjE0LDcgKzE2NTEsNyBAQCBzdGF0aWMgYm9v bCBoZG1pX3ByZXNlbnRfc2Vuc2Uoc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGluLCBp bnQgcmVwb2xsKQogCQkJCQkJCXBlcl9waW4tPm11eF9pZHgpOwogCQkJfQogCi0JCQloZG1pX3Nl dHVwX2F1ZGlvX2luZm9mcmFtZShjb2RlYywgcGVyX3BpbiwKKwkJCWhkbWlfc2V0dXBfYXVkaW9f aW5mb2ZyYW1lKGNvZGVjLCBwZXJfcGluLCBlbGQsCiAJCQkJCQkgICBwZXJfcGluLT5ub25fcGNt KTsKIAkJfQogCX0KQEAgLTE2MjMsOCArMTY2MCwxOSBAQCBzdGF0aWMgYm9vbCBoZG1pX3ByZXNl bnRfc2Vuc2Uoc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGluLCBpbnQgcmVwb2xsKQog CQlzbmRfY3RsX25vdGlmeShjb2RlYy0+Y2FyZCwKIAkJCSAgICAgICBTTkRSVl9DVExfRVZFTlRf TUFTS19WQUxVRSB8IFNORFJWX0NUTF9FVkVOVF9NQVNLX0lORk8sCiAJCQkgICAgICAgJnBlcl9w aW4tPmVsZF9jdGwtPmlkKTsKLSB1bmxvY2s6Ci0JcmV0ID0gIXJlcG9sbCB8fCAhcGluX2VsZC0+ bW9uaXRvcl9wcmVzZW50IHx8IHBpbl9lbGQtPmVsZF92YWxpZDsKK3NraXBfdG9fbmV4dF9kZXZp Y2U6CisJaWYgKGNvZGVjLT5kcF9tc3QpIHsKKwkJZGV2aWNlX251bSsrOworCQlpZiAoZGV2aWNl X251bSA8IHBlcl9waW4tPm51bV9kZXZpY2VzKQorCQkJZ290byBuZXh0X2RldmljZTsKKwl9CisK KwlpZiAobmVlZF9yZXBvbGwpIHsKKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZwZXJfcGluLT53 b3JrLAorCQkJCSAgICAgIG1zZWNzX3RvX2ppZmZpZXMoMzAwKSk7CisJCXJlcG9sbCA9IHRydWU7 CisJfQorCXJldCA9ICFyZXBvbGwgfHwgYW55X2VsZF92YWxpZDsKIAogCWphY2sgPSBzbmRfaGRh X2phY2tfdGJsX2dldChjb2RlYywgcGluX25pZCk7CiAJaWYgKGphY2spCkBAIC0xODA3LDcgKzE4 NTUsNyBAQCBzdGF0aWMgaW50IGdlbmVyaWNfaGRtaV9wbGF5YmFja19wY21fcHJlcGFyZShzdHJ1 Y3QgaGRhX3BjbV9zdHJlYW0gKmhpbmZvLAogCXBlcl9waW4tPmNoYW5uZWxzID0gc3Vic3RyZWFt LT5ydW50aW1lLT5jaGFubmVsczsKIAlwZXJfcGluLT5zZXR1cCA9IHRydWU7CiAKLQloZG1pX3Nl dHVwX2F1ZGlvX2luZm9mcmFtZShjb2RlYywgcGVyX3Bpbiwgbm9uX3BjbSk7CisJaGRtaV9zZXR1 cF9hdWRpb19pbmZvZnJhbWUoY29kZWMsIHBlcl9waW4sIE5VTEwsIG5vbl9wY20pOwogCW11dGV4 X3VubG9jaygmcGVyX3Bpbi0+bG9jayk7CiAKIAlpZiAoc3BlYy0+ZHluX3Bpbl9vdXQpIHsKQEAg LTIwMzUsNyArMjA4Myw3IEBAIHN0YXRpYyBpbnQgaGRtaV9jaG1hcF9jdGxfcHV0KHN0cnVjdCBz bmRfa2NvbnRyb2wgKmtjb250cm9sLAogCXBlcl9waW4tPmNobWFwX3NldCA9IHRydWU7CiAJbWVt Y3B5KHBlcl9waW4tPmNobWFwLCBjaG1hcCwgc2l6ZW9mKGNobWFwKSk7CiAJaWYgKHByZXBhcmVk KQotCQloZG1pX3NldHVwX2F1ZGlvX2luZm9mcmFtZShjb2RlYywgcGVyX3BpbiwgcGVyX3Bpbi0+ bm9uX3BjbSk7CisJCWhkbWlfc2V0dXBfYXVkaW9faW5mb2ZyYW1lKGNvZGVjLCBwZXJfcGluLCBO VUxMLCBwZXJfcGluLT5ub25fcGNtKTsKIAltdXRleF91bmxvY2soJnBlcl9waW4tPmxvY2spOwog CiAJcmV0dXJuIDA7CkBAIC0yMTQ3LDcgKzIxOTUsNyBAQCBzdGF0aWMgaW50IGdlbmVyaWNfaGRt aV9idWlsZF9jb250cm9scyhzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykKIHN0YXRpYyBpbnQgZ2Vu ZXJpY19oZG1pX2luaXRfcGVyX3BpbnMoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMpCiB7CiAJc3Ry dWN0IGhkbWlfc3BlYyAqc3BlYyA9IGNvZGVjLT5zcGVjOwotCWludCBwaW5faWR4OworCWludCBw aW5faWR4LCBkZXZfaWR4OwogCiAJZm9yIChwaW5faWR4ID0gMDsgcGluX2lkeCA8IHNwZWMtPm51 bV9waW5zOyBwaW5faWR4KyspIHsKIAkJc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGlu ID0gZ2V0X3BpbihzcGVjLCBwaW5faWR4KTsKQEAgLTIxNTUsNyArMjIwMywyMCBAQCBzdGF0aWMg aW50IGdlbmVyaWNfaGRtaV9pbml0X3Blcl9waW5zKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQog CQlwZXJfcGluLT5jb2RlYyA9IGNvZGVjOwogCQltdXRleF9pbml0KCZwZXJfcGluLT5sb2NrKTsK IAkJSU5JVF9ERUxBWUVEX1dPUksoJnBlcl9waW4tPndvcmssIGhkbWlfcmVwb2xsX2VsZCk7Ci0J CWVsZF9wcm9jX25ldyhwZXJfcGluLCBwaW5faWR4KTsKKworCQlpZiAoY29kZWMtPmRwX21zdCkg eworCQkJZm9yIChkZXZfaWR4ID0gMDsgZGV2X2lkeCA8IEhEQV9NQVhfREVWSUNFUzsgZGV2X2lk eCsrKSB7CisJCQkJcGVyX3Bpbi0+ZGV2aWNlc1tkZXZfaWR4XS5kZXZpY2VfaWR4ID0gZGV2X2lk eDsKKwkJCQlwZXJfcGluLT5kZXZpY2VzW2Rldl9pZHhdLnBpbiA9IHBlcl9waW47CisKKwkJCQll bGRfZGV2aWNlX3Byb2NfbmV3KCZwZXJfcGluLT5kZXZpY2VzW2Rldl9pZHhdLCBwaW5faWR4LCBk ZXZfaWR4KTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXBlcl9waW4tPm51bV9kZXZpY2VzID0gMDsK KwkJCXBlcl9waW4tPmRldmljZXNbMF0uZGV2aWNlX2lkeCA9IDA7CisJCQlwZXJfcGluLT5kZXZp Y2VzWzBdLnBpbiA9IHBlcl9waW47CisJCQllbGRfZGV2aWNlX3Byb2NfbmV3KCZwZXJfcGluLT5k ZXZpY2VzWzBdLCBwaW5faWR4LCAtMSk7CisJCX0KIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC0yMTkx LDEzICsyMjUyLDE5IEBAIHN0YXRpYyB2b2lkIGhkbWlfYXJyYXlfZnJlZShzdHJ1Y3QgaGRtaV9z cGVjICpzcGVjKQogc3RhdGljIHZvaWQgZ2VuZXJpY19oZG1pX2ZyZWUoc3RydWN0IGhkYV9jb2Rl YyAqY29kZWMpCiB7CiAJc3RydWN0IGhkbWlfc3BlYyAqc3BlYyA9IGNvZGVjLT5zcGVjOwotCWlu dCBwaW5faWR4OworCWludCBwaW5faWR4LCBkZXZfaWR4OwogCiAJZm9yIChwaW5faWR4ID0gMDsg cGluX2lkeCA8IHNwZWMtPm51bV9waW5zOyBwaW5faWR4KyspIHsKIAkJc3RydWN0IGhkbWlfc3Bl Y19wZXJfcGluICpwZXJfcGluID0gZ2V0X3BpbihzcGVjLCBwaW5faWR4KTsKIAogCQljYW5jZWxf ZGVsYXllZF93b3JrX3N5bmMoJnBlcl9waW4tPndvcmspOwotCQllbGRfcHJvY19mcmVlKHBlcl9w aW4pOworCQlpZiAocGVyX3Bpbi0+bnVtX2RldmljZXMpIHsKKwkJCWZvciAoZGV2X2lkeCA9IDA7 IGRldl9pZHggPCBwZXJfcGluLT5udW1fZGV2aWNlczsgZGV2X2lkeCsrKSB7CisJCQkJc3RydWN0 IGhkbWlfc3BlY19wZXJfZGV2aWNlICpwZXJfZGV2aWNlID0gJnBlcl9waW4tPmRldmljZXNbZGV2 X2lkeF07CisJCQkJZWxkX2RldmljZV9wcm9jX2ZyZWUocGVyX2RldmljZSk7CisJCQl9CisJCX0g ZWxzZQorCQkJICBlbGRfZGV2aWNlX3Byb2NfZnJlZSgmcGVyX3Bpbi0+ZGV2aWNlc1swXSk7CiAJ fQogCiAJaGRtaV9hcnJheV9mcmVlKHNwZWMpOwpAQCAtMjMzMyw2ICsyNDAwLDcgQEAgc3RhdGlj IGludCBwYXRjaF9nZW5lcmljX2hkbWkoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMpCiAJaWYgKGlz X2hhc3dlbGxfcGx1cyhjb2RlYykpIHsKIAkJaW50ZWxfaGFzd2VsbF9lbmFibGVfYWxsX3BpbnMo Y29kZWMsIHRydWUpOwogCQlpbnRlbF9oYXN3ZWxsX2ZpeHVwX2VuYWJsZV9kcDEyKGNvZGVjKTsK KwkJY29kZWMtPmRwX21zdCA9IHRydWU7CiAJfQogCiAJaWYgKGlzX2hhc3dlbGxfcGx1cyhjb2Rl YykgfHwgaXNfdmFsbGV5dmlld19wbHVzKGNvZGVjKSkKQEAgLTIzNDYsNyArMjQxNCw2IEBAIHN0 YXRpYyBpbnQgcGF0Y2hfZ2VuZXJpY19oZG1pKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQogCWNv ZGVjLT5wYXRjaF9vcHMgPSBnZW5lcmljX2hkbWlfcGF0Y2hfb3BzOwogCWlmIChpc19oYXN3ZWxs X3BsdXMoY29kZWMpKSB7CiAJCWNvZGVjLT5wYXRjaF9vcHMuc2V0X3Bvd2VyX3N0YXRlID0gaGFz d2VsbF9zZXRfcG93ZXJfc3RhdGU7Ci0JCWNvZGVjLT5kcF9tc3QgPSB0cnVlOwogCX0KIAogCWdl bmVyaWNfaGRtaV9pbml0X3Blcl9waW5zKGNvZGVjKTsKLS0gCjIuNC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=