From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [RFCv3 12/14] drm: Atomic modeset ioctl Date: Wed, 20 Nov 2013 15:48:11 -0500 Message-ID: <1384980493-25499-13-git-send-email-robdclark@gmail.com> References: <1384980493-25499-1-git-send-email-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qc0-f169.google.com (mail-qc0-f169.google.com [209.85.216.169]) by gabe.freedesktop.org (Postfix) with ESMTP id 876221059C6 for ; Wed, 20 Nov 2013 12:48:53 -0800 (PST) Received: by mail-qc0-f169.google.com with SMTP id u18so6272298qcx.28 for ; Wed, 20 Nov 2013 12:48:53 -0800 (PST) In-Reply-To: <1384980493-25499-1-git-send-email-robdclark@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRo ZSBhdG9taWMgbW9kZXNldCBpb2N0bCBjbmEgYmUgdXNlZCB0byBwdXNoIGFueSBudW1iZXIgb2Yg bmV3IHZhbHVlcwpmb3Igb2JqZWN0IHByb3BlcnRpZXMuIFRoZSBkcml2ZXIgY2FuIHRoZW4gY2hl Y2sgdGhlIGZ1bGwgZGV2aWNlCmNvbmZpZ3VyYXRpb24gYXMgc2luZ2xlIHVuaXQsIGFuZCB0cnkg dG8gYXBwbHkgdGhlIGNoYW5nZXMgYXRvbWljYWxseS4KClRoZSBpb2N0bCBzaW1wbHkgdGFrZXMg YSBsaXN0IG9mIG9iamVjdCBJRHMgYW5kIHByb3BlcnR5IElEcyBhbmQgdGhlaXIKdmFsdWVzLiBG b3Igc2V0dGluZyB2YWx1ZXMgdG8gYmxvYiBwcm9wZXJ0aWVzLCB0aGUgcHJvcGVydHkgdmFsdWUK aW5kaWNhdGVzIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEsIGFuZCB0aGUgYWN0dWFsIGRhdGEgaXMg cGFzc2VkIHZpYQphbm90aGVyIGJsb2IgcG9pbnRlci4KClRoZSBjYWxsZXIgY2FuIGRlbWFuZCBu b24tYmxvY2tpbmcgb3BlcmF0aW9uIGZyb20gdGhlIGlvY3RsLCBhbmQgaWYgdGhlCmRyaXZlciBj YW4ndCBzYXRpc2Z5IHRoYXQgcmVxdWlyZW1lbnQgYW4gZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4K ClRoZSBjYWxsZXIgY2FuIGFsc28gcmVxdWVzdCB0byByZWNlaXZlIGFzeW5jaHJvbm91cyBjb21w bGV0aW9uIGV2ZW50cwphZnRlciB0aGUgb3BlcmF0aW9uIGhhcyByZWFjaGVkIHRoZSBoYXJkd2Fy ZS4gQW4gZXZlbnQgaXMgc2VudCBmb3IgZWFjaApvYmplY3Qgc3BlY2lmaWVkIGJ5IHRoZSBjYWxs ZXIsIHdoZXRoZXIgb3Igbm90IHRoZSBhY3R1YWwgc3RhdGUgb2YKdGhhdCBvYmplY3QgY2hhbmdl ZC4gRWFjaCBldmVudCBhbHNvIGNhcnJpZXMgYSBmcmFtZWJ1ZmZlciBJRCwgd2hpY2gKaW5kaWNh dGVzIHRvIHVzZXIgc3BhY2UgdGhhdCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBubyBsb25nZXIK YWNjZXNzaW5nIHRoYXQgZnJhbWVidWZmZXIuCgpUT0RPOiBkZXRhaWxlZCBlcnJvciByZXBvcnRp bmc/Cgp2MTogb3JpZ2luYWwKdjI6IHJlYmFzZSBvbiB1YXBpIGNoYW5nZXMsIGFuZCBkcm0gc3Rh dGUgc3RydWN0cy4uIC0tIFJvYiBDbGFyawp2MzogcmViYXNlLCBtaXNzaW5nIHBhZGRpbmcgaW4g ZHJtX2V2ZW50X2F0b21pYy4uIC0tIFJvYiBDbGFyawp2NDogZHJvcCBhdG9taWMgZXZlbnQsIGFs aWduIGZsYWdzIHcvIHBhZ2VmbGlwIChhdG9taWMgZmxhZ3Mgc2hvdWxkIGJlCiAgICBhIHN0cmlj ayBzdXBlcnNldCBvZiBwYWdlZmxpcCBmbGFncyB0byBrZWVwIHRoaW5ncyBlYXNpZXIgZm9yIHRo ZQogICAgZHJpdmVycykKClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgIHwg MTU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJz L2dwdS9kcm0vZHJtX2Rydi5jICAgfCAgIDEgKwogaW5jbHVkZS9kcm0vZHJtUC5oICAgICAgICAg IHwgICA2ICsrCiBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgfCAgIDIgKwogaW5jbHVkZS91 YXBpL2RybS9kcm0uaCAgICAgIHwgIDEyICsrKysKIGluY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUu aCB8ICAyMSArKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fY3J0Yy5jCmluZGV4IDRiNDBhMzkuLjgzNjhlZjUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0 Yy5jCkBAIC00MDM3LDcgKzQwMzcsOCBAQCBpbnQgZHJtX21vZGVfcGFnZV9mbGlwX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXJldHVybiAtRU5PRU5UOwogCWNydGMgPSBvYmpfdG9f Y3J0YyhvYmopOwogCi0Jc3RhdGUgPSBkZXYtPmRyaXZlci0+YXRvbWljX2JlZ2luKGRldiwgcGFn ZV9mbGlwLT5mbGFncyk7CisJc3RhdGUgPSBkZXYtPmRyaXZlci0+YXRvbWljX2JlZ2luKGRldiwK KwkJCXBhZ2VfZmxpcC0+ZmxhZ3MgfCBEUk1fTU9ERV9BVE9NSUNfTk9OQkxPQ0spOwogCWlmIChJ U19FUlIoc3RhdGUpKQogCQlyZXR1cm4gUFRSX0VSUihzdGF0ZSk7CiAKQEAgLTQ0NTEsMyArNDQ1 MiwxNTcgQEAgdm9pZCBkcm1fbW9kZV9jb25maWdfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCWlkcl9kZXN0cm95KCZkZXYtPm1vZGVfY29uZmlnLmNydGNfaWRyKTsKIH0KIEVYUE9S VF9TWU1CT0woZHJtX21vZGVfY29uZmlnX2NsZWFudXApOworCitpbnQgZHJtX21vZGVfYXRvbWlj X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkgIHZvaWQgKmRhdGEsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2KQoreworCXN0cnVjdCBkcm1fbW9kZV9hdG9taWMgKmFyZyA9IGRh dGE7CisJdWludDMyX3QgX191c2VyICpvYmpzX3B0ciA9ICh1aW50MzJfdCBfX3VzZXIgKikodW5z aWduZWQgbG9uZykoYXJnLT5vYmpzX3B0cik7CisJdWludDMyX3QgX191c2VyICpjb3VudF9wcm9w c19wdHIgPSAodWludDMyX3QgX191c2VyICopKHVuc2lnbmVkIGxvbmcpKGFyZy0+Y291bnRfcHJv cHNfcHRyKTsKKwl1aW50MzJfdCBfX3VzZXIgKnByb3BzX3B0ciA9ICh1aW50MzJfdCBfX3VzZXIg KikodW5zaWduZWQgbG9uZykoYXJnLT5wcm9wc19wdHIpOworCXVpbnQ2NF90IF9fdXNlciAqcHJv cF92YWx1ZXNfcHRyID0gKHVpbnQ2NF90IF9fdXNlciAqKSh1bnNpZ25lZCBsb25nKShhcmctPnBy b3BfdmFsdWVzX3B0cik7CisJdWludDY0X3QgX191c2VyICpibG9iX3ZhbHVlc19wdHIgPSAodWlu dDY0X3QgX191c2VyICopKHVuc2lnbmVkIGxvbmcpKGFyZy0+YmxvYl92YWx1ZXNfcHRyKTsKKwl1 bnNpZ25lZCBpbnQgY29waWVkX29ianMgPSAwOworCXVuc2lnbmVkIGludCBjb3BpZWRfcHJvcHMg PSAwOworCXVuc2lnbmVkIGludCBjb3BpZWRfYmxvYnMgPSAwOworCXZvaWQgKnN0YXRlOworCWlu dCByZXQgPSAwOworCXVuc2lnbmVkIGludCBpLCBqOworCisJaWYgKGFyZy0+ZmxhZ3MgJiB+RFJN X01PREVfQVRPTUlDX0ZMQUdTKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIGNhbid0IHRlc3Qg YW5kIGV4cGVjdCBhbiBldmVudCBhdCB0aGUgc2FtZSB0aW1lLiAqLworCWlmICgoYXJnLT5mbGFn cyAmIERSTV9NT0RFX0FUT01JQ19URVNUX09OTFkpICYmCisJCQkoYXJnLT5mbGFncyAmIERSTV9N T0RFX1BBR0VfRkxJUF9FVkVOVCkpCisJCXJldHVybiAtRUlOVkFMOworCisJc3RhdGUgPSBkZXYt PmRyaXZlci0+YXRvbWljX2JlZ2luKGRldiwgYXJnLT5mbGFncyk7CisJaWYgKElTX0VSUihzdGF0 ZSkpIHsKKwkJcmV0ID0gUFRSX0VSUihzdGF0ZSk7CisJCWdvdG8gb3V0OworCX0KKworCWZvciAo aSA9IDA7IGkgPCBhcmctPmNvdW50X29ianM7IGkrKykgeworCQl1aW50MzJfdCBvYmpfaWQsIGNv dW50X3Byb3BzOworCQlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpvYmo7CisKKwkJaWYgKGdldF91 c2VyKG9ial9pZCwgb2Jqc19wdHIgKyBjb3BpZWRfb2JqcykpIHsKKwkJCXJldCA9IC1FRkFVTFQ7 CisJCQlnb3RvIG91dDsKKwkJfQorCisJCW9iaiA9IGRybV9tb2RlX29iamVjdF9maW5kKGRldiwg b2JqX2lkLCBEUk1fTU9ERV9PQkpFQ1RfQU5ZKTsKKwkJaWYgKCFvYmogfHwgIW9iai0+cHJvcGVy dGllcykgeworCQkJcmV0ID0gLUVOT0VOVDsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJaWYgKChv YmotPnR5cGUgPT0gRFJNX01PREVfT0JKRUNUX0NSVEMpICYmCisJCQkJKGFyZy0+ZmxhZ3MgJiBE Uk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQpKSB7CisJCQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5r X2V2ZW50ICplID0KKwkJCQljcmVhdGVfdmJsYW5rX2V2ZW50KGRldiwgZmlsZV9wcml2LCBhcmct PnVzZXJfZGF0YSk7CisJCQlpZiAoIWUpIHsKKwkJCQlyZXQgPSAtRU5PTUVNOworCQkJCWdvdG8g b3V0OworCQkJfQorCQkJcmV0ID0gZGV2LT5kcml2ZXItPmF0b21pY19zZXRfZXZlbnQoZGV2LCBz dGF0ZSwgb2JqLCBlKTsKKwkJCWlmIChyZXQpIHsKKwkJCQlkZXN0cm95X3ZibGFua19ldmVudChk ZXYsIGZpbGVfcHJpdiwgZSk7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCX0KKworCQlpZiAoZ2V0 X3VzZXIoY291bnRfcHJvcHMsIGNvdW50X3Byb3BzX3B0ciArIGNvcGllZF9vYmpzKSkgeworCQkJ cmV0ID0gLUVGQVVMVDsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJY29waWVkX29ianMrKzsKKwor CQlmb3IgKGogPSAwOyBqIDwgY291bnRfcHJvcHM7IGorKykgeworCQkJdWludDMyX3QgcHJvcF9p ZDsKKwkJCXVpbnQ2NF90IHByb3BfdmFsdWU7CisJCQlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpw cm9wX29iajsKKwkJCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7CisJCQl2b2lkICpibG9iX2Rh dGEgPSBOVUxMOworCisJCQlpZiAoZ2V0X3VzZXIocHJvcF9pZCwgcHJvcHNfcHRyICsgY29waWVk X3Byb3BzKSkgeworCQkJCXJldCA9IC1FRkFVTFQ7CisJCQkJZ290byBvdXQ7CisJCQl9CisKKwkJ CWlmICghb2JqZWN0X2hhc19wcm9wKG9iaiwgcHJvcF9pZCkpIHsKKwkJCQlyZXQgPSAtRUlOVkFM OworCQkJCWdvdG8gb3V0OworCQkJfQorCisJCQlwcm9wX29iaiA9IGRybV9tb2RlX29iamVjdF9m aW5kKGRldiwgcHJvcF9pZCwKKwkJCQkJRFJNX01PREVfT0JKRUNUX1BST1BFUlRZKTsKKwkJCWlm ICghcHJvcF9vYmopIHsKKwkJCQlyZXQgPSAtRU5PRU5UOworCQkJCWdvdG8gb3V0OworCQkJfQor CQkJcHJvcCA9IG9ial90b19wcm9wZXJ0eShwcm9wX29iaik7CisKKwkJCWlmIChnZXRfdXNlcihw cm9wX3ZhbHVlLCBwcm9wX3ZhbHVlc19wdHIgKyBjb3BpZWRfcHJvcHMpKSB7CisJCQkJcmV0ID0g LUVGQVVMVDsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKworCQkJaWYgKCFkcm1fcHJvcGVydHlfY2hh bmdlX2lzX3ZhbGlkKHByb3AsIHByb3BfdmFsdWUpKSB7CisJCQkJcmV0ID0gLUVJTlZBTDsKKwkJ CQlnb3RvIG91dDsKKwkJCX0KKworCQkJaWYgKChwcm9wLT5mbGFncyAmIERSTV9NT0RFX1BST1Bf QkxPQikgJiYgcHJvcF92YWx1ZSkgeworCQkJCXVpbnQ2NF90IGJsb2JfcHRyOworCisJCQkJaWYg KGdldF91c2VyKGJsb2JfcHRyLCBibG9iX3ZhbHVlc19wdHIgKyBjb3BpZWRfYmxvYnMpKSB7CisJ CQkJCXJldCA9IC1FRkFVTFQ7CisJCQkJCWdvdG8gb3V0OworCQkJCX0KKworCQkJCWJsb2JfZGF0 YSA9IGttYWxsb2MocHJvcF92YWx1ZSwgR0ZQX0tFUk5FTCk7CisJCQkJaWYgKCFibG9iX2RhdGEp IHsKKwkJCQkJcmV0ID0gLUVOT01FTTsKKwkJCQkJZ290byBvdXQ7CisJCQkJfQorCisJCQkJaWYg KGNvcHlfZnJvbV91c2VyKGJsb2JfZGF0YSwgKHZvaWQgX191c2VyICopKHVuc2lnbmVkIGxvbmcp YmxvYl9wdHIsIHByb3BfdmFsdWUpKSB7CisJCQkJCWtmcmVlKGJsb2JfZGF0YSk7CisJCQkJCXJl dCA9IC1FRkFVTFQ7CisJCQkJCWdvdG8gb3V0OworCQkJCX0KKwkJCX0KKworCQkJLyogVXNlciBz cGFjZSBzZW5kcyB0aGUgYmxvYiBwb2ludGVyIGV2ZW4gaWYgd2UKKwkJCSAqIGRvbid0IHVzZSBp dCAobGVuZ3RoPT0wKS4KKwkJCSAqLworCQkJaWYgKHByb3AtPmZsYWdzICYgRFJNX01PREVfUFJP UF9CTE9CKQorCQkJCWNvcGllZF9ibG9icysrOworCisJCQkvKiBUaGUgZHJpdmVyIHdpbGwgYmUg aW4gY2hhcmdlIG9mIGJsb2JfZGF0YSBmcm9tIG5vdyBvbi4gKi8KKwkJCXJldCA9IGRybV9tb2Rl X3NldF9vYmpfcHJvcChvYmosIHN0YXRlLCBwcm9wLAorCQkJCQlwcm9wX3ZhbHVlLCBibG9iX2Rh dGEpOworCQkJaWYgKHJldCkKKwkJCQlnb3RvIG91dDsKKworCQkJY29waWVkX3Byb3BzKys7CisJ CX0KKwl9CisKKwlyZXQgPSBkZXYtPmRyaXZlci0+YXRvbWljX2NoZWNrKGRldiwgc3RhdGUpOwor CWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJaWYgKGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9BVE9N SUNfVEVTVF9PTkxZKQorCQlnb3RvIG91dDsKKworCXJldCA9IGRldi0+ZHJpdmVyLT5hdG9taWNf Y29tbWl0KGRldiwgc3RhdGUpOworCisgb3V0OgorCWRldi0+ZHJpdmVyLT5hdG9taWNfZW5kKGRl diwgc3RhdGUpOworCisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCmluZGV4IGQ5MTM3ZTQuLmNk YWRjMWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9kcnYuYwpAQCAtMTY3LDYgKzE2Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2lvY3RsX2Rlc2MgZHJtX2lvY3Rsc1tdID0gewogCURSTV9JT0NUTF9ERUYoRFJNX0lP Q1RMX01PREVfT0JKX0dFVFBST1BFUlRJRVMsIGRybV9tb2RlX29ial9nZXRfcHJvcGVydGllc19p b2N0bCwgRFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKIAlEUk1fSU9DVExfREVGKERS TV9JT0NUTF9NT0RFX09CSl9TRVRQUk9QRVJUWSwgZHJtX21vZGVfb2JqX3NldF9wcm9wZXJ0eV9p b2N0bCwgRFJNX01BU1RFUnxEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAogCURSTV9J T0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfQ1VSU09SMiwgZHJtX21vZGVfY3Vyc29yMl9pb2N0bCwg RFJNX01BU1RFUnxEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAorCURSTV9JT0NUTF9E RUYoRFJNX0lPQ1RMX01PREVfQVRPTUlDLCBkcm1fbW9kZV9hdG9taWNfaW9jdGwsIERSTV9NQVNU RVJ8RFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKIH07CiAKICNkZWZpbmUgRFJNX0NP UkVfSU9DVExfQ09VTlQJQVJSQVlfU0laRSggZHJtX2lvY3RscyApCmRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1QLmggYi9pbmNsdWRlL2RybS9kcm1QLmgKaW5kZXggNGM1NGM4OC4uMGEzNzJi MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtUC5oCisrKyBiL2luY2x1ZGUvZHJtL2RybVAu aApAQCAtMTE1Nyw2ICsxMTU3LDEyIEBAIHN0cnVjdCBkcm1fdmJsYW5rX2NydGMgewogCQkJCQkg ICBvbmNlIHBlciBkaXNhYmxlICovCiB9OwogCitzdHJ1Y3QgZHJtX3BlbmRpbmdfYXRvbWljX2V2 ZW50IHsKKwlzdHJ1Y3QgZHJtX3BlbmRpbmdfZXZlbnQgYmFzZTsKKwlpbnQgcGlwZTsKKwlzdHJ1 Y3QgZHJtX2V2ZW50X2F0b21pYyBldmVudDsKK307CisKIC8qKgogICogRFJNIGRldmljZSBzdHJ1 Y3R1cmUuIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudCBhIGNvbXBsZXRlIGNhcmQgdGhhdAogICog bWF5IGNvbnRhaW4gbXVsdGlwbGUgaGVhZHMuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f Y3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAppbmRleCAyNTMxNjU4Li42YWFlNDQ5IDEw MDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9j cnRjLmgKQEAgLTEzMDEsNiArMTMwMSw4IEBAIGV4dGVybiBpbnQgZHJtX21vZGVfb2JqX2dldF9w cm9wZXJ0aWVzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJ CSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogZXh0ZXJuIGludCBkcm1fbW9kZV9v Ympfc2V0X3Byb3BlcnR5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJCQkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2V4dGVybiBpbnQgZHJtX21v ZGVfYXRvbWljX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJIHZvaWQgKmRhdGEs IHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIAogZXh0ZXJuIHZvaWQgZHJtX2ZiX2dldF9i cHBfZGVwdGgodWludDMyX3QgZm9ybWF0LCB1bnNpZ25lZCBpbnQgKmRlcHRoLAogCQkJCSBpbnQg KmJwcCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIGIvaW5jbHVkZS91YXBp L2RybS9kcm0uaAppbmRleCA5YjI0ZDY1Li4xNDhjNmMwIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Vh cGkvZHJtL2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKQEAgLTc1OSw2ICs3NTks NyBAQCBzdHJ1Y3QgZHJtX3ByaW1lX2hhbmRsZSB7CiAjZGVmaW5lIERSTV9JT0NUTF9NT0RFX09C Sl9HRVRQUk9QRVJUSUVTCURSTV9JT1dSKDB4QjksIHN0cnVjdCBkcm1fbW9kZV9vYmpfZ2V0X3By b3BlcnRpZXMpCiAjZGVmaW5lIERSTV9JT0NUTF9NT0RFX09CSl9TRVRQUk9QRVJUWQlEUk1fSU9X UigweEJBLCBzdHJ1Y3QgZHJtX21vZGVfb2JqX3NldF9wcm9wZXJ0eSkKICNkZWZpbmUgRFJNX0lP Q1RMX01PREVfQ1VSU09SMgkJRFJNX0lPV1IoMHhCQiwgc3RydWN0IGRybV9tb2RlX2N1cnNvcjIp CisjZGVmaW5lIERSTV9JT0NUTF9NT0RFX0FUT01JQwkJRFJNX0lPV1IoMHhCQywgc3RydWN0IGRy bV9tb2RlX2F0b21pYykKIAogLyoqCiAgKiBEZXZpY2Ugc3BlY2lmaWMgaW9jdGxzIHNob3VsZCBv bmx5IGJlIGluIHRoZWlyIHJlc3BlY3RpdmUgaGVhZGVycwpAQCAtODAwLDYgKzgwMSwxNyBAQCBz dHJ1Y3QgZHJtX2V2ZW50X3ZibGFuayB7CiAJX191MzIgcmVzZXJ2ZWQ7CiB9OwogCitzdHJ1Y3Qg ZHJtX2V2ZW50X2F0b21pYyB7CisJc3RydWN0IGRybV9ldmVudCBiYXNlOworCV9fdTY0IHVzZXJf ZGF0YTsKKwlfX3UzMiB0dl9zZWM7CisJX191MzIgdHZfdXNlYzsKKwlfX3UzMiBzZXF1ZW5jZTsK KwlfX3UzMiBvYmpfaWQ7CisJX191MzIgb2xkX2ZiX2lkOworCV9fdTMyIHJlc2VydmVkOworfTsK KwogLyogdHlwZWRlZiBhcmVhICovCiAjaWZuZGVmIF9fS0VSTkVMX18KIHR5cGVkZWYgc3RydWN0 IGRybV9jbGlwX3JlY3QgZHJtX2NsaXBfcmVjdF90OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBp L2RybS9kcm1fbW9kZS5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCmluZGV4IGE5MTM5 NTMuLjdkMzRlZTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaAorKysg Yi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKQEAgLTUwOCw2ICs1MDgsMjcgQEAgc3RydWN0 IGRybV9tb2RlX2Rlc3Ryb3lfZHVtYiB7CiAJdWludDMyX3QgaGFuZGxlOwogfTsKIAorLyogcGFn ZS1mbGlwIGZsYWdzIGFyZSB2YWxpZCwgcGx1czogKi8KKyNkZWZpbmUgRFJNX01PREVfQVRPTUlD X1RFU1RfT05MWSAweDAxMDAKKyNkZWZpbmUgRFJNX01PREVfQVRPTUlDX05PTkJMT0NLICAweDAy MDAKICNkZWZpbmUgRFJNX01PREVfQVRPTUlDX05PTE9DSyAgICAweDgwMDAgIC8qIG9ubHkgdXNl ZCBpbnRlcm5hbGx5ICovCiAKKyNkZWZpbmUgRFJNX01PREVfQVRPTUlDX0ZMQUdTIChcCisJCURS TV9NT0RFX1BBR0VfRkxJUF9FVkVOVCB8XAorCQlEUk1fTU9ERV9QQUdFX0ZMSVBfQVNZTkMgfFwK KwkJRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSB8XAorCQlEUk1fTU9ERV9BVE9NSUNfTk9OQkxP Q0spCisKKy8qIEZJWE1FIGNvbWUgdXAgd2l0aCBzb21lIHNhbmUgZXJyb3IgcmVwb3J0aW5nIG1l Y2hhbmlzbT8gKi8KK3N0cnVjdCBkcm1fbW9kZV9hdG9taWMgeworCV9fdTMyIGZsYWdzOworCV9f dTMyIGNvdW50X29ianM7CisJX191NjQgb2Jqc19wdHI7CisJX191NjQgY291bnRfcHJvcHNfcHRy OworCV9fdTY0IHByb3BzX3B0cjsKKwlfX3U2NCBwcm9wX3ZhbHVlc19wdHI7CisJX191NjQgYmxv Yl92YWx1ZXNfcHRyOworCV9fdTY0IHVzZXJfZGF0YTsKK307CisKICNlbmRpZgotLSAKMS44LjQu MgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK