From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C803C433E5 for ; Tue, 18 Aug 2020 03:04:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4776B2078D for ; Tue, 18 Aug 2020 03:04:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="gCHRW3+o" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726681AbgHRDEa (ORCPT ); Mon, 17 Aug 2020 23:04:30 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:42987 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726596AbgHRDE0 (ORCPT ); Mon, 17 Aug 2020 23:04:26 -0400 X-UUID: 078e26b305eb4b18a04768df0bf9fcee-20200818 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=jmKzRwroRWp5kOPOGeJXnaiMTzoMluqfMBzh3jR5seU=; b=gCHRW3+oO5EQef7/cAMqZ9qo9QuATFPl/Wg1rBxJotjvvdPfxuES3r4mRKbEenkPxW72Rbea00ULSO39h01xjwswztXEI9QsfLIQH+L5sMmji3r6LlXmUVXDRY6L8KEAjFgfAMwBavmEot7MO8soyEqb7uBJiz3mk2tBHuE3TKY=; X-UUID: 078e26b305eb4b18a04768df0bf9fcee-20200818 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1460380662; Tue, 18 Aug 2020 11:04:05 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 18 Aug 2020 11:04:01 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 18 Aug 2020 11:04:01 +0800 From: EastL Lee To: Sean Wang CC: , , , , , , , , , , , EastL Lee Subject: [PATCH v7 2/4] dmaengine: mediatek-cqdma: remove redundant queue structure Date: Tue, 18 Aug 2020 11:03:52 +0800 Message-ID: <1597719834-6675-3-git-send-email-EastL.Lee@mediatek.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1597719834-6675-1-git-send-email-EastL.Lee@mediatek.com> References: <1597719834-6675-1-git-send-email-EastL.Lee@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFjdGl2ZV92ZGVjIHRvIGluZGljYXRlIHRoZSB2aXJ0dWFs IGRlc2NyaXB0b3INCnVuZGVyIHByb2Nlc3NpbmcgYnkgdGhlIENRRE1BIGRtYWVuZ2luZSwgYW5k IHNpbXBsaWZ5IHRoZSBjb250cm9sIGxvZ2ljDQpieSByZW1vdmluZyByZWR1bmRhbnQgcXVldWUg c3RydWN0dXJlLCB0YXNrbGV0cywgYW5kIGNvbXBsZXRpb24NCm1hbmFnZW1lbnQuDQoNClNpZ25l ZC1vZmYtYnk6IEVhc3RMIExlZSA8RWFzdEwuTGVlQG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGRyaXZl cnMvZG1hL21lZGlhdGVrL210ay1jcWRtYS5jIHwgMzgzICsrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KIDEgZmlsZSBjaGFuZ2VkLCA5MyBpbnNlcnRpb25zKCspLCAyOTAg ZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9tZWRpYXRlay9tdGstY3Fk bWEuYyBiL2RyaXZlcnMvZG1hL21lZGlhdGVrL210ay1jcWRtYS5jDQppbmRleCA2YmY4MzhlLi45 MDViYmNiIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9kbWEvbWVkaWF0ZWsvbXRrLWNxZG1hLmMNCisr KyBiL2RyaXZlcnMvZG1hL21lZGlhdGVrL210ay1jcWRtYS5jDQpAQCAtMjIsNiArMjIsNyBAQA0K ICNpbmNsdWRlIDxsaW51eC9vZl9kbWEuaD4NCiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2 aWNlLmg+DQogI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCisjaW5jbHVkZSA8bGludXgv cHJlZW1wdC5oPg0KICNpbmNsdWRlIDxsaW51eC9yZWZjb3VudC5oPg0KICNpbmNsdWRlIDxsaW51 eC9zbGFiLmg+DQogDQpAQCAtNDcsNyArNDgsNiBAQA0KICNkZWZpbmUgTVRLX0NRRE1BX1NSQwkJ CTB4MWMNCiAjZGVmaW5lIE1US19DUURNQV9EU1QJCQkweDIwDQogI2RlZmluZSBNVEtfQ1FETUFf TEVOMQkJCTB4MjQNCi0jZGVmaW5lIE1US19DUURNQV9MRU4yCQkJMHgyOA0KICNkZWZpbmUgTVRL X0NRRE1BX1NSQzIJCQkweDYwDQogI2RlZmluZSBNVEtfQ1FETUFfRFNUMgkJCTB4NjQNCiANCkBA IC02OSw0NSArNjksMzIgQEANCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9y IChDVkQpDQogICogQHZkOiAgICAgICAgICAgICAgICAgICAgQW4gaW5zdGFuY2UgZm9yIHN0cnVj dCB2aXJ0X2RtYV9kZXNjDQogICogQGxlbjogICAgICAgICAgICAgICAgICAgVGhlIHRvdGFsIGRh dGEgc2l6ZSBkZXZpY2Ugd2FudHMgdG8gbW92ZQ0KLSAqIEByZXNpZHVlOiAgICAgICAgICAgICAg IFRoZSByZW1haW5pbmcgZGF0YSBzaXplIGRldmljZSB3aWxsIG1vdmUNCiAgKiBAZGVzdDogICAg ICAgICAgICAgICAgICBUaGUgZGVzdGluYXRpb24gYWRkcmVzcyBkZXZpY2Ugd2FudHMgdG8gbW92 ZSB0bw0KICAqIEBzcmM6ICAgICAgICAgICAgICAgICAgIFRoZSBzb3VyY2UgYWRkcmVzcyBkZXZp Y2Ugd2FudHMgdG8gbW92ZSBmcm9tDQogICogQGNoOiAgICAgICAgICAgICAgICAgICAgVGhlIHBv aW50ZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZG1hIGNoYW5uZWwNCi0gKiBAbm9kZTogICAgICAg ICAgICAgICAgICBUaGUgbGlzZV9oZWFkIHN0cnVjdCB0byBidWlsZCBsaW5rLWxpc3QgZm9yIFZE cw0KLSAqIEBwYXJlbnQ6ICAgICAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBwYXJlbnQg Q1ZEDQogICovDQogc3RydWN0IG10a19jcWRtYV92ZGVzYyB7DQogCXN0cnVjdCB2aXJ0X2RtYV9k ZXNjIHZkOw0KIAlzaXplX3QgbGVuOw0KLQlzaXplX3QgcmVzaWR1ZTsNCiAJZG1hX2FkZHJfdCBk ZXN0Ow0KIAlkbWFfYWRkcl90IHNyYzsNCiAJc3RydWN0IGRtYV9jaGFuICpjaDsNCi0NCi0Jc3Ry dWN0IGxpc3RfaGVhZCBub2RlOw0KLQlzdHJ1Y3QgbXRrX2NxZG1hX3ZkZXNjICpwYXJlbnQ7DQog fTsNCiANCiAvKioNCiAgKiBzdHJ1Y3QgbXRrX2NxZG1hX3BjaGFuIC0gVGhlIHN0cnVjdCBob2xk aW5nIGluZm8gZGVzY3JpYmluZyBwaHlzaWNhbA0KICAqICAgICAgICAgICAgICAgICAgICAgICAg IGNoYW5uZWwgKFBDKQ0KLSAqIEBxdWV1ZTogICAgICAgICAgICAgICAgIFF1ZXVlIGZvciB0aGUg UERzIGlzc3VlZCB0byB0aGlzIFBDDQorICogQGFjdGl2ZV92ZGVzYzogICAgICAgICAgVGhlIHBv aW50ZXIgdG8gdGhlIENWRCB3aGljaCBpcyB1bmRlciBwcm9jZXNzaW5nDQogICogQGJhc2U6ICAg ICAgICAgICAgICAgICAgVGhlIG1hcHBlZCByZWdpc3RlciBJL08gYmFzZSBvZiB0aGlzIFBDDQog ICogQGlycTogICAgICAgICAgICAgICAgICAgVGhlIElSUSB0aGF0IHRoaXMgUEMgYXJlIHVzaW5n DQogICogQHJlZmNudDogICAgICAgICAgICAgICAgVHJhY2sgaG93IG1hbnkgVkNzIGFyZSB1c2lu ZyB0aGlzIFBDDQotICogQHRhc2tsZXQ6ICAgICAgICAgICAgICAgVGFza2xldCBmb3IgdGhpcyBQ Qw0KICAqIEBsb2NrOiAgICAgICAgICAgICAgICAgIExvY2sgcHJvdGVjdCBhZ2Fpc3RpbmcgbXVs dGlwbGUgVkNzIGFjY2VzcyBQQw0KICAqLw0KIHN0cnVjdCBtdGtfY3FkbWFfcGNoYW4gew0KLQlz dHJ1Y3QgbGlzdF9oZWFkIHF1ZXVlOw0KKwlzdHJ1Y3QgbXRrX2NxZG1hX3ZkZXNjICphY3RpdmVf dmRlc2M7DQogCXZvaWQgX19pb21lbSAqYmFzZTsNCiAJdTMyIGlycTsNCi0NCiAJcmVmY291bnRf dCByZWZjbnQ7DQotDQotCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCB0YXNrbGV0Ow0KLQ0KLQkvKiBs b2NrIHRvIHByb3RlY3QgUEMgKi8NCiAJc3BpbmxvY2tfdCBsb2NrOw0KIH07DQogDQpAQCAtMTE2 LDE0ICsxMDMsMTEgQEAgc3RydWN0IG10a19jcWRtYV9wY2hhbiB7DQogICogICAgICAgICAgICAg ICAgICAgICAgICAgY2hhbm5lbCAoVkMpDQogICogQHZjOiAgICAgICAgICAgICAgICAgICAgQW4g aW5zdGFuY2UgZm9yIHN0cnVjdCB2aXJ0X2RtYV9jaGFuDQogICogQHBjOiAgICAgICAgICAgICAg ICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgUEMNCi0gKiBAaXNzdWVfY29tcGxl dGlvbjoJICAgVGhlIHdhaXQgZm9yIGFsbCBpc3N1ZWQgZGVzY3JpcHRvcnMgY29tcGxldGl0ZWQN Ci0gKiBAaXNzdWVfc3luY2hyb25pemU6CSAgIEJvb2wgaW5kaWNhdGluZyBjaGFubmVsIHN5bmNo cm9uaXphdGlvbiBzdGFydHMNCiAgKi8NCiBzdHJ1Y3QgbXRrX2NxZG1hX3ZjaGFuIHsNCiAJc3Ry dWN0IHZpcnRfZG1hX2NoYW4gdmM7DQogCXN0cnVjdCBtdGtfY3FkbWFfcGNoYW4gKnBjOw0KLQlz dHJ1Y3QgY29tcGxldGlvbiBpc3N1ZV9jb21wbGV0aW9uOw0KLQlib29sIGlzc3VlX3N5bmNocm9u aXplOw0KKwlzdHJ1Y3QgY29tcGxldGlvbiBjbXA7DQogfTsNCiANCiAvKioNCkBAIC0yMDIsMjIg KzE4NiwyMiBAQCBzdGF0aWMgdm9pZCBtdGtfY3FkbWFfdmRlc2NfZnJlZShzdHJ1Y3QgdmlydF9k bWFfZGVzYyAqdmQpDQogCWtmcmVlKHRvX2NxZG1hX3ZkZXNjKHZkKSk7DQogfQ0KIA0KLXN0YXRp YyBpbnQgbXRrX2NxZG1hX3BvbGxfZW5naW5lX2RvbmUoc3RydWN0IG10a19jcWRtYV9wY2hhbiAq cGMsIGJvb2wgYXRvbWljKQ0KK3N0YXRpYyBpbnQgbXRrX2NxZG1hX3BvbGxfZW5naW5lX2RvbmUo c3RydWN0IG10a19jcWRtYV9wY2hhbiAqcGMpDQogew0KIAl1MzIgc3RhdHVzID0gMDsNCiANCi0J aWYgKCFhdG9taWMpDQorCWlmIChpbl90YXNrKCkpDQorCQlyZXR1cm4gcmVhZGxfcG9sbF90aW1l b3V0X2F0b21pYyhwYy0+YmFzZSArIE1US19DUURNQV9FTiwNCisJCQkJCQkgc3RhdHVzLA0KKwkJ CQkJCSAhKHN0YXR1cyAmIE1US19DUURNQV9FTl9CSVQpLA0KKwkJCQkJCSBNVEtfQ1FETUFfVVNF Q19QT0xMLA0KKwkJCQkJCSBNVEtfQ1FETUFfVElNRU9VVF9QT0xMKTsNCisJZWxzZQ0KIAkJcmV0 dXJuIHJlYWRsX3BvbGxfdGltZW91dChwYy0+YmFzZSArIE1US19DUURNQV9FTiwNCiAJCQkJCSAg c3RhdHVzLA0KIAkJCQkJICAhKHN0YXR1cyAmIE1US19DUURNQV9FTl9CSVQpLA0KIAkJCQkJICBN VEtfQ1FETUFfVVNFQ19QT0xMLA0KIAkJCQkJICBNVEtfQ1FETUFfVElNRU9VVF9QT0xMKTsNCi0N Ci0JcmV0dXJuIHJlYWRsX3BvbGxfdGltZW91dF9hdG9taWMocGMtPmJhc2UgKyBNVEtfQ1FETUFf RU4sDQotCQkJCQkgc3RhdHVzLA0KLQkJCQkJICEoc3RhdHVzICYgTVRLX0NRRE1BX0VOX0JJVCks DQotCQkJCQkgTVRLX0NRRE1BX1VTRUNfUE9MTCwNCi0JCQkJCSBNVEtfQ1FETUFfVElNRU9VVF9Q T0xMKTsNCiB9DQogDQogc3RhdGljIGludCBtdGtfY3FkbWFfaGFyZF9yZXNldChzdHJ1Y3QgbXRr X2NxZG1hX3BjaGFuICpwYykNCkBAIC0yMjUsMjAgKzIwOSwxNyBAQCBzdGF0aWMgaW50IG10a19j cWRtYV9oYXJkX3Jlc2V0KHN0cnVjdCBtdGtfY3FkbWFfcGNoYW4gKnBjKQ0KIAltdGtfZG1hX3Nl dChwYywgTVRLX0NRRE1BX1JFU0VULCBNVEtfQ1FETUFfSEFSRF9SU1RfQklUKTsNCiAJbXRrX2Rt YV9jbHIocGMsIE1US19DUURNQV9SRVNFVCwgTVRLX0NRRE1BX0hBUkRfUlNUX0JJVCk7DQogDQot CXJldHVybiBtdGtfY3FkbWFfcG9sbF9lbmdpbmVfZG9uZShwYywgdHJ1ZSk7DQorCXJldHVybiBt dGtfY3FkbWFfcG9sbF9lbmdpbmVfZG9uZShwYyk7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIG10a19j cWRtYV9zdGFydChzdHJ1Y3QgbXRrX2NxZG1hX3BjaGFuICpwYywNCiAJCQkgICAgc3RydWN0IG10 a19jcWRtYV92ZGVzYyAqY3ZkKQ0KIHsNCi0JLyogd2FpdCBmb3IgdGhlIHByZXZpb3VzIHRyYW5z YWN0aW9uIGRvbmUgKi8NCi0JaWYgKG10a19jcWRtYV9wb2xsX2VuZ2luZV9kb25lKHBjLCB0cnVl KSA8IDApDQotCQlkZXZfZXJyKGNxZG1hMmRldih0b19jcWRtYV9kZXYoY3ZkLT5jaCkpLCAiY3Fk bWEgd2FpdCB0cmFuc2FjdGlvbiB0aW1lb3V0XG4iKTsNCi0NCiAJLyogd2FybSByZXNldCB0aGUg ZG1hIGVuZ2luZSBmb3IgdGhlIG5ldyB0cmFuc2FjdGlvbiAqLw0KIAltdGtfZG1hX3NldChwYywg TVRLX0NRRE1BX1JFU0VULCBNVEtfQ1FETUFfV0FSTV9SU1RfQklUKTsNCi0JaWYgKG10a19jcWRt YV9wb2xsX2VuZ2luZV9kb25lKHBjLCB0cnVlKSA8IDApDQotCQlkZXZfZXJyKGNxZG1hMmRldih0 b19jcWRtYV9kZXYoY3ZkLT5jaCkpLCAiY3FkbWEgd2FybSByZXNldCB0aW1lb3V0XG4iKTsNCisJ aWYgKG10a19jcWRtYV9wb2xsX2VuZ2luZV9kb25lKHBjKSA8IDApDQorCQlkZXZfZXJyKGNxZG1h MmRldih0b19jcWRtYV9kZXYoY3ZkLT5jaCkpLA0KKwkJCSJjcWRtYSB3YXJtIHJlc2V0IHRpbWVv dXRcbiIpOw0KIA0KIAkvKiBzZXR1cCB0aGUgc291cmNlICovDQogCW10a19kbWFfc2V0KHBjLCBN VEtfQ1FETUFfU1JDLCBjdmQtPnNyYyAmIE1US19DUURNQV9BRERSX0xJTUlUKTsNCkBAIC0yNTcs NyArMjM4LDggQEAgc3RhdGljIHZvaWQgbXRrX2NxZG1hX3N0YXJ0KHN0cnVjdCBtdGtfY3FkbWFf cGNoYW4gKnBjLA0KICNlbmRpZg0KIA0KIAkvKiBzZXR1cCB0aGUgbGVuZ3RoICovDQotCW10a19k bWFfc2V0KHBjLCBNVEtfQ1FETUFfTEVOMSwgY3ZkLT5sZW4pOw0KKwltdGtfZG1hX3NldChwYywg TVRLX0NRRE1BX0xFTjEsIChjdmQtPmxlbiA8IE1US19DUURNQV9NQVhfTEVOKSA/DQorCQkgICAg Y3ZkLT5sZW4gOiBNVEtfQ1FETUFfTUFYX0xFTik7DQogDQogCS8qIHN0YXJ0IGRtYSBlbmdpbmUg Ki8NCiAJbXRrX2RtYV9zZXQocGMsIE1US19DUURNQV9FTiwgTVRLX0NRRE1BX0VOX0JJVCk7DQpA QCAtMjY1LDMwICsyNDcsMTcgQEAgc3RhdGljIHZvaWQgbXRrX2NxZG1hX3N0YXJ0KHN0cnVjdCBt dGtfY3FkbWFfcGNoYW4gKnBjLA0KIA0KIHN0YXRpYyB2b2lkIG10a19jcWRtYV9pc3N1ZV92Y2hh bl9wZW5kaW5nKHN0cnVjdCBtdGtfY3FkbWFfdmNoYW4gKmN2YykNCiB7DQotCXN0cnVjdCB2aXJ0 X2RtYV9kZXNjICp2ZCwgKnZkMjsNCisJc3RydWN0IHZpcnRfZG1hX2Rlc2MgKnZkOw0KIAlzdHJ1 Y3QgbXRrX2NxZG1hX3BjaGFuICpwYyA9IGN2Yy0+cGM7DQotCXN0cnVjdCBtdGtfY3FkbWFfdmRl c2MgKmN2ZDsNCi0JYm9vbCB0cmlnZ2VyX2VuZ2luZSA9IGZhbHNlOw0KIA0KIAlsb2NrZGVwX2Fz c2VydF9oZWxkKCZjdmMtPnZjLmxvY2spOw0KIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZwYy0+bG9j ayk7DQogDQotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2ZCwgdmQyLCAmY3ZjLT52Yy5kZXNj X2lzc3VlZCwgbm9kZSkgew0KLQkJLyogbmVlZCB0byB0cmlnZ2VyIGRtYSBlbmdpbmUgaWYgUEMn cyBxdWV1ZSBpcyBlbXB0eSAqLw0KLQkJaWYgKGxpc3RfZW1wdHkoJnBjLT5xdWV1ZSkpDQotCQkJ dHJpZ2dlcl9lbmdpbmUgPSB0cnVlOw0KLQ0KLQkJY3ZkID0gdG9fY3FkbWFfdmRlc2ModmQpOw0K LQ0KLQkJLyogYWRkIFZEIGludG8gUEMncyBxdWV1ZSAqLw0KLQkJbGlzdF9hZGRfdGFpbCgmY3Zk LT5ub2RlLCAmcGMtPnF1ZXVlKTsNCi0NCi0JCS8qIHN0YXJ0IHRoZSBkbWEgZW5naW5lICovDQot CQlpZiAodHJpZ2dlcl9lbmdpbmUpDQotCQkJbXRrX2NxZG1hX3N0YXJ0KHBjLCBjdmQpOw0KKwl2 ZCA9IHZjaGFuX25leHRfZGVzYygmY3ZjLT52Yyk7DQogDQotCQkvKiByZW1vdmUgVkQgZnJvbSBs aXN0IGRlc2NfaXNzdWVkICovDQotCQlsaXN0X2RlbCgmdmQtPm5vZGUpOw0KKwlpZiAodmQgJiYg IXBjLT5hY3RpdmVfdmRlc2MpIHsNCisJCXBjLT5hY3RpdmVfdmRlc2MgPSB0b19jcWRtYV92ZGVz Yyh2ZCk7DQorCQltdGtfY3FkbWFfc3RhcnQocGMsIHBjLT5hY3RpdmVfdmRlc2MpOw0KIAl9DQog fQ0KIA0KQEAgLTI5OCwxMDAgKzI2Nyw1NSBAQCBzdGF0aWMgdm9pZCBtdGtfY3FkbWFfaXNzdWVf dmNoYW5fcGVuZGluZyhzdHJ1Y3QgbXRrX2NxZG1hX3ZjaGFuICpjdmMpDQogICovDQogc3RhdGlj IGJvb2wgbXRrX2NxZG1hX2lzX3ZjaGFuX2FjdGl2ZShzdHJ1Y3QgbXRrX2NxZG1hX3ZjaGFuICpj dmMpDQogew0KLQlzdHJ1Y3QgbXRrX2NxZG1hX3ZkZXNjICpjdmQ7DQotDQotCWxpc3RfZm9yX2Vh Y2hfZW50cnkoY3ZkLCAmY3ZjLT5wYy0+cXVldWUsIG5vZGUpDQotCQlpZiAoY3ZjID09IHRvX2Nx ZG1hX3ZjaGFuKGN2ZC0+Y2gpKQ0KLQkJCXJldHVybiB0cnVlOw0KLQ0KLQlyZXR1cm4gZmFsc2U7 DQorCXJldHVybiAoIWN2Yy0+cGMtPmFjdGl2ZV92ZGVzYykgPyBmYWxzZSA6DQorCSAgICAgICAo Y3ZjID09IHRvX2NxZG1hX3ZjaGFuKGN2Yy0+cGMtPmFjdGl2ZV92ZGVzYy0+Y2gpKTsNCiB9DQog DQotLyoNCi0gKiByZXR1cm4gdGhlIHBvaW50ZXIgb2YgdGhlIENWRCB0aGF0IGlzIGp1c3QgY29u c3VtZWQgYnkgdGhlIFBDDQotICovDQotc3RhdGljIHN0cnVjdCBtdGtfY3FkbWFfdmRlc2MNCi0q bXRrX2NxZG1hX2NvbnN1bWVfd29ya19xdWV1ZShzdHJ1Y3QgbXRrX2NxZG1hX3BjaGFuICpwYykN CitzdGF0aWMgdm9pZCBtdGtfY3FkbWFfY29tcGxldGVfdmRlc2Moc3RydWN0IG10a19jcWRtYV9w Y2hhbiAqcGMpDQogew0KIAlzdHJ1Y3QgbXRrX2NxZG1hX3ZjaGFuICpjdmM7DQotCXN0cnVjdCBt dGtfY3FkbWFfdmRlc2MgKmN2ZCwgKnJldCA9IE5VTEw7DQotDQotCS8qIGNvbnN1bWUgYSBDVkQg ZnJvbSBQQydzIHF1ZXVlICovDQotCWN2ZCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmcGMt PnF1ZXVlLA0KLQkJCQkgICAgICAgc3RydWN0IG10a19jcWRtYV92ZGVzYywgbm9kZSk7DQotCWlm ICh1bmxpa2VseSghY3ZkIHx8ICFjdmQtPnBhcmVudCkpDQotCQlyZXR1cm4gTlVMTDsNCisJc3Ry dWN0IG10a19jcWRtYV92ZGVzYyAqY3ZkOw0KKwlzdHJ1Y3QgdmlydF9kbWFfZGVzYyAqdmQ7DQor CXNpemVfdCB0bGVuOw0KIA0KKwljdmQgPSBwYy0+YWN0aXZlX3ZkZXNjOw0KIAljdmMgPSB0b19j cWRtYV92Y2hhbihjdmQtPmNoKTsNCi0JcmV0ID0gY3ZkOw0KLQ0KLQkvKiB1cGRhdGUgcmVzaWR1 ZSBvZiB0aGUgcGFyZW50IENWRCAqLw0KLQljdmQtPnBhcmVudC0+cmVzaWR1ZSAtPSBjdmQtPmxl bjsNCiANCi0JLyogZGVsZXRlIENWRCBmcm9tIFBDJ3MgcXVldWUgKi8NCi0JbGlzdF9kZWwoJmN2 ZC0+bm9kZSk7DQorCXRsZW4gPSAoY3ZkLT5sZW4gPCBNVEtfQ1FETUFfTUFYX0xFTikgPyBjdmQt PmxlbiA6IE1US19DUURNQV9NQVhfTEVOOw0KKwljdmQtPmxlbiAtPSB0bGVuOw0KKwljdmQtPnNy YyArPSB0bGVuOw0KKwljdmQtPmRlc3QgKz0gdGxlbjsNCiANCiAJc3Bpbl9sb2NrKCZjdmMtPnZj LmxvY2spOw0KIA0KLQkvKiBjaGVjayB3aGV0aGVyIGFsbCB0aGUgY2hpbGQgQ1ZEcyBjb21wbGV0 ZWQgKi8NCi0JaWYgKCFjdmQtPnBhcmVudC0+cmVzaWR1ZSkgew0KLQkJLyogYWRkIHRoZSBwYXJl bnQgVkQgaW50byBsaXN0IGRlc2NfY29tcGxldGVkICovDQotCQl2Y2hhbl9jb29raWVfY29tcGxl dGUoJmN2ZC0+cGFyZW50LT52ZCk7DQorCS8qIGNoZWNrIHdoZXRoZXIgdGhlIFZEIGNvbXBsZXRl ZCAqLw0KKwlpZiAoIWN2ZC0+bGVuKSB7DQorCQkvKiBkZWxldGUgVkQgZnJvbSBkZXNjX2lzc3Vl ZCAqLw0KKwkJbGlzdF9kZWwoJmN2ZC0+dmQubm9kZSk7DQogDQotCQkvKiBzZXR1cCBjb21wbGV0 aW9uIGlmIHRoaXMgVkMgaXMgdW5kZXIgc3luY2hyb25pemF0aW9uICovDQotCQlpZiAoY3ZjLT5p c3N1ZV9zeW5jaHJvbml6ZSAmJiAhbXRrX2NxZG1hX2lzX3ZjaGFuX2FjdGl2ZShjdmMpKSB7DQot CQkJY29tcGxldGUoJmN2Yy0+aXNzdWVfY29tcGxldGlvbik7DQotCQkJY3ZjLT5pc3N1ZV9zeW5j aHJvbml6ZSA9IGZhbHNlOw0KLQkJfQ0KLQl9DQotDQotCXNwaW5fdW5sb2NrKCZjdmMtPnZjLmxv Y2spOw0KKwkJLyogYWRkIHRoZSBWRCBpbnRvIGxpc3QgZGVzY19jb21wbGV0ZWQgKi8NCisJCXZj aGFuX2Nvb2tpZV9jb21wbGV0ZSgmY3ZkLT52ZCk7DQogDQotCS8qIHN0YXJ0IHRyYW5zYWN0aW9u IGZvciBuZXh0IENWRCBpbiB0aGUgcXVldWUgKi8NCi0JY3ZkID0gbGlzdF9maXJzdF9lbnRyeV9v cl9udWxsKCZwYy0+cXVldWUsDQotCQkJCSAgICAgICBzdHJ1Y3QgbXRrX2NxZG1hX3ZkZXNjLCBu b2RlKTsNCi0JaWYgKGN2ZCkNCi0JCW10a19jcWRtYV9zdGFydChwYywgY3ZkKTsNCi0NCi0JcmV0 dXJuIHJldDsNCi19DQotDQotc3RhdGljIHZvaWQgbXRrX2NxZG1hX3Rhc2tsZXRfY2IodW5zaWdu ZWQgbG9uZyBkYXRhKQ0KLXsNCi0Jc3RydWN0IG10a19jcWRtYV9wY2hhbiAqcGMgPSAoc3RydWN0 IG10a19jcWRtYV9wY2hhbiAqKWRhdGE7DQotCXN0cnVjdCBtdGtfY3FkbWFfdmRlc2MgKmN2ZCA9 IE5VTEw7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQotDQotCXNwaW5fbG9ja19pcnFzYXZlKCZw Yy0+bG9jaywgZmxhZ3MpOw0KLQkvKiBjb25zdW1lIHRoZSBxdWV1ZSAqLw0KLQljdmQgPSBtdGtf Y3FkbWFfY29uc3VtZV93b3JrX3F1ZXVlKHBjKTsNCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm cGMtPmxvY2ssIGZsYWdzKTsNCi0NCi0JLyogc3VibWl0IHRoZSBuZXh0IENWRCAqLw0KLQlpZiAo Y3ZkKSB7DQotCQlkbWFfcnVuX2RlcGVuZGVuY2llcygmY3ZkLT52ZC50eCk7DQotDQotCQkvKg0K LQkJICogZnJlZSBjaGlsZCBDVkQgYWZ0ZXIgY29tcGxldGlvbi4NCi0JCSAqIHRoZSBwYXJlbnQg Q1ZEIHdvdWxkIGJlIGZyZWVlZCB3aXRoIGRlc2NfZnJlZSBieSB1c2VyLg0KLQkJICovDQotCQlp ZiAoY3ZkLT5wYXJlbnQgIT0gY3ZkKQ0KLQkJCWtmcmVlKGN2ZCk7DQorCQkvKiBnZXQgdGhlIG5l eHQgYWN0aXZlIFZEICovDQorCQl2ZCA9IHZjaGFuX25leHRfZGVzYygmY3ZjLT52Yyk7DQorCQlw Yy0+YWN0aXZlX3ZkZXNjID0gKCF2ZCkgPyBOVUxMIDogdG9fY3FkbWFfdmRlc2ModmQpOw0KIAl9 DQogDQotCS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHQgYmVmb3JlIGxlYXZpbmcgdGFza2xldCAqLw0K LQllbmFibGVfaXJxKHBjLT5pcnEpOw0KKwkvKiBzdGFydCB0aGUgbmV4dCB0cmFuc2FjdGlvbiAq Lw0KKwlpZiAocGMtPmFjdGl2ZV92ZGVzYykNCisJCW10a19jcWRtYV9zdGFydChwYywgcGMtPmFj dGl2ZV92ZGVzYyk7DQorDQorCXNwaW5fdW5sb2NrKCZjdmMtPnZjLmxvY2spOw0KIH0NCiANCiBz dGF0aWMgaXJxcmV0dXJuX3QgbXRrX2NxZG1hX2lycShpbnQgaXJxLCB2b2lkICpkZXZpZCkNCiB7 DQogCXN0cnVjdCBtdGtfY3FkbWFfZGV2aWNlICpjcWRtYSA9IGRldmlkOw0KIAlpcnFyZXR1cm5f dCByZXQgPSBJUlFfTk9ORTsNCi0JYm9vbCBzY2hlZHVsZV90YXNrbGV0ID0gZmFsc2U7DQogCXUz MiBpOw0KIA0KIAkvKiBjbGVhciBpbnRlcnJ1cHQgZmxhZ3MgZm9yIGVhY2ggUEMgKi8NCi0JZm9y IChpID0gMDsgaSA8IGNxZG1hLT5kbWFfY2hhbm5lbHM7ICsraSwgc2NoZWR1bGVfdGFza2xldCA9 IGZhbHNlKSB7DQorCWZvciAoaSA9IDA7IGkgPCBjcWRtYS0+ZG1hX2NoYW5uZWxzOyArK2kpIHsN CiAJCXNwaW5fbG9jaygmY3FkbWEtPnBjW2ldLT5sb2NrKTsNCiAJCWlmIChtdGtfZG1hX3JlYWQo Y3FkbWEtPnBjW2ldLA0KIAkJCQkgTVRLX0NRRE1BX0lOVF9GTEFHKSAmIE1US19DUURNQV9JTlRf RkxBR19CSVQpIHsNCkBAIC0zOTksNzIgKzMyMywyMSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgbXRr X2NxZG1hX2lycShpbnQgaXJxLCB2b2lkICpkZXZpZCkNCiAJCQltdGtfZG1hX2NscihjcWRtYS0+ cGNbaV0sIE1US19DUURNQV9JTlRfRkxBRywNCiAJCQkJICAgIE1US19DUURNQV9JTlRfRkxBR19C SVQpOw0KIA0KLQkJCXNjaGVkdWxlX3Rhc2tsZXQgPSB0cnVlOw0KKwkJCW10a19jcWRtYV9jb21w bGV0ZV92ZGVzYyhjcWRtYS0+cGNbaV0pOw0KKw0KIAkJCXJldCA9IElSUV9IQU5ETEVEOw0KIAkJ fQ0KIAkJc3Bpbl91bmxvY2soJmNxZG1hLT5wY1tpXS0+bG9jayk7DQotDQotCQlpZiAoc2NoZWR1 bGVfdGFza2xldCkgew0KLQkJCS8qIGRpc2FibGUgaW50ZXJydXB0ICovDQotCQkJZGlzYWJsZV9p cnFfbm9zeW5jKGNxZG1hLT5wY1tpXS0+aXJxKTsNCi0NCi0JCQkvKiBzY2hlZHVsZSB0aGUgdGFz a2xldCB0byBoYW5kbGUgdGhlIHRyYW5zYWN0aW9ucyAqLw0KLQkJCXRhc2tsZXRfc2NoZWR1bGUo JmNxZG1hLT5wY1tpXS0+dGFza2xldCk7DQotCQl9DQogCX0NCiANCiAJcmV0dXJuIHJldDsNCiB9 DQogDQotc3RhdGljIHN0cnVjdCB2aXJ0X2RtYV9kZXNjICptdGtfY3FkbWFfZmluZF9hY3RpdmVf ZGVzYyhzdHJ1Y3QgZG1hX2NoYW4gKmMsDQotCQkJCQkJCWRtYV9jb29raWVfdCBjb29raWUpDQot ew0KLQlzdHJ1Y3QgbXRrX2NxZG1hX3ZjaGFuICpjdmMgPSB0b19jcWRtYV92Y2hhbihjKTsNCi0J c3RydWN0IHZpcnRfZG1hX2Rlc2MgKnZkOw0KLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KLQ0KLQlz cGluX2xvY2tfaXJxc2F2ZSgmY3ZjLT5wYy0+bG9jaywgZmxhZ3MpOw0KLQlsaXN0X2Zvcl9lYWNo X2VudHJ5KHZkLCAmY3ZjLT5wYy0+cXVldWUsIG5vZGUpDQotCQlpZiAodmQtPnR4LmNvb2tpZSA9 PSBjb29raWUpIHsNCi0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjdmMtPnBjLT5sb2NrLCBm bGFncyk7DQotCQkJcmV0dXJuIHZkOw0KLQkJfQ0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZj dmMtPnBjLT5sb2NrLCBmbGFncyk7DQotDQotCWxpc3RfZm9yX2VhY2hfZW50cnkodmQsICZjdmMt PnZjLmRlc2NfaXNzdWVkLCBub2RlKQ0KLQkJaWYgKHZkLT50eC5jb29raWUgPT0gY29va2llKQ0K LQkJCXJldHVybiB2ZDsNCi0NCi0JcmV0dXJuIE5VTEw7DQotfQ0KLQ0KIHN0YXRpYyBlbnVtIGRt YV9zdGF0dXMgbXRrX2NxZG1hX3R4X3N0YXR1cyhzdHJ1Y3QgZG1hX2NoYW4gKmMsDQogCQkJCQkg ICBkbWFfY29va2llX3QgY29va2llLA0KIAkJCQkJICAgc3RydWN0IGRtYV90eF9zdGF0ZSAqdHhz dGF0ZSkNCiB7DQotCXN0cnVjdCBtdGtfY3FkbWFfdmNoYW4gKmN2YyA9IHRvX2NxZG1hX3ZjaGFu KGMpOw0KLQlzdHJ1Y3QgbXRrX2NxZG1hX3ZkZXNjICpjdmQ7DQotCXN0cnVjdCB2aXJ0X2RtYV9k ZXNjICp2ZDsNCi0JZW51bSBkbWFfc3RhdHVzIHJldDsNCi0JdW5zaWduZWQgbG9uZyBmbGFnczsN Ci0Jc2l6ZV90IGJ5dGVzID0gMDsNCi0NCi0JcmV0ID0gZG1hX2Nvb2tpZV9zdGF0dXMoYywgY29v a2llLCB0eHN0YXRlKTsNCi0JaWYgKHJldCA9PSBETUFfQ09NUExFVEUgfHwgIXR4c3RhdGUpDQot CQlyZXR1cm4gcmV0Ow0KLQ0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmY3ZjLT52Yy5sb2NrLCBmbGFn cyk7DQotCXZkID0gbXRrX2NxZG1hX2ZpbmRfYWN0aXZlX2Rlc2MoYywgY29va2llKTsNCi0Jc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY3ZjLT52Yy5sb2NrLCBmbGFncyk7DQotDQotCWlmICh2ZCkg ew0KLQkJY3ZkID0gdG9fY3FkbWFfdmRlc2ModmQpOw0KLQkJYnl0ZXMgPSBjdmQtPnJlc2lkdWU7 DQotCX0NCi0NCi0JZG1hX3NldF9yZXNpZHVlKHR4c3RhdGUsIGJ5dGVzKTsNCi0NCi0JcmV0dXJu IHJldDsNCisJcmV0dXJuIGRtYV9jb29raWVfc3RhdHVzKGMsIGNvb2tpZSwgdHhzdGF0ZSk7DQog fQ0KIA0KIHN0YXRpYyB2b2lkIG10a19jcWRtYV9pc3N1ZV9wZW5kaW5nKHN0cnVjdCBkbWFfY2hh biAqYykNCkBAIC00NzMsMTMgKzM0NiwxNyBAQCBzdGF0aWMgdm9pZCBtdGtfY3FkbWFfaXNzdWVf cGVuZGluZyhzdHJ1Y3QgZG1hX2NoYW4gKmMpDQogCXVuc2lnbmVkIGxvbmcgcGNfZmxhZ3M7DQog CXVuc2lnbmVkIGxvbmcgdmNfZmxhZ3M7DQogDQotCS8qIGFjcXVpcmUgUEMncyBsb2NrIGJlZm9y ZSBWUydzIGxvY2sgZm9yIGxvY2sgZGVwZW5kZW5jeSBpbiB0YXNrbGV0ICovDQorCS8qIGFjcXVp cmUgUEMncyBsb2NrIGJlZm9yZSBWQydzIGxvY2sgZm9yIGxvY2sgZGVwZW5kZW5jeSBpbiBJU1Ig Ki8NCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmN2Yy0+cGMtPmxvY2ssIHBjX2ZsYWdzKTsNCiAJc3Bp bl9sb2NrX2lycXNhdmUoJmN2Yy0+dmMubG9jaywgdmNfZmxhZ3MpOw0KIA0KKwlpbml0X2NvbXBs ZXRpb24oJmN2Yy0+Y21wKTsNCisNCiAJaWYgKHZjaGFuX2lzc3VlX3BlbmRpbmcoJmN2Yy0+dmMp KQ0KIAkJbXRrX2NxZG1hX2lzc3VlX3ZjaGFuX3BlbmRpbmcoY3ZjKTsNCiANCisJY29tcGxldGUo JmN2Yy0+Y21wKTsNCisNCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3ZjLT52Yy5sb2NrLCB2 Y19mbGFncyk7DQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN2Yy0+cGMtPmxvY2ssIHBjX2Zs YWdzKTsNCiB9DQpAQCAtNDg4LDEyNSArMzY1LDUwIEBAIHN0YXRpYyB2b2lkIG10a19jcWRtYV9p c3N1ZV9wZW5kaW5nKHN0cnVjdCBkbWFfY2hhbiAqYykNCiBtdGtfY3FkbWFfcHJlcF9kbWFfbWVt Y3B5KHN0cnVjdCBkbWFfY2hhbiAqYywgZG1hX2FkZHJfdCBkZXN0LA0KIAkJCSAgZG1hX2FkZHJf dCBzcmMsIHNpemVfdCBsZW4sIHVuc2lnbmVkIGxvbmcgZmxhZ3MpDQogew0KLQlzdHJ1Y3QgbXRr X2NxZG1hX3ZkZXNjICoqY3ZkOw0KLQlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnR4 ID0gTlVMTCwgKnByZXZfdHggPSBOVUxMOw0KLQlzaXplX3QgaSwgdGxlbiwgbnJfdmQ7DQotDQot CS8qDQotCSAqIEluIHRoZSBjYXNlIHRoYXQgdHJzYW5jdGlvbiBsZW5ndGggaXMgbGFyZ2VyIHRo YW4gdGhlDQotCSAqIERNQSBlbmdpbmUgc3VwcG9ydHMsIGEgc2luZ2xlIG1lbWNweSB0cmFuc2Fj dGlvbiBuZWVkcw0KLQkgKiB0byBiZSBzZXBhcmF0ZWQgaW50byBzZXZlcmFsIERNQSB0cmFuc2Fj dGlvbnMuDQotCSAqIEVhY2ggRE1BIHRyYW5zYWN0aW9uIHdvdWxkIGJlIGRlc2NyaWJlZCBieSBh IENWRCwNCi0JICogYW5kIHRoZSBmaXJzdCBvbmUgaXMgcmVmZXJyZWQgYXMgdGhlIHBhcmVudCBD VkQsDQotCSAqIHdoaWxlIHRoZSBvdGhlcnMgYXJlIGNoaWxkIENWRHMuDQotCSAqIFRoZSBwYXJl bnQgQ1ZEJ3MgdHggZGVzY3JpcHRvciBpcyB0aGUgb25seSB0eCBkZXNjcmlwdG9yDQotCSAqIHJl dHVybmVkIHRvIHRoZSBETUEgdXNlciwgYW5kIGl0IHNob3VsZCBub3QgYmUgY29tcGxldGVkDQot CSAqIHVudGlsIGFsbCB0aGUgY2hpbGQgQ1ZEcyBjb21wbGV0ZWQuDQotCSAqLw0KLQlucl92ZCA9 IERJVl9ST1VORF9VUChsZW4sIE1US19DUURNQV9NQVhfTEVOKTsNCi0JY3ZkID0ga2NhbGxvYyhu cl92ZCwgc2l6ZW9mKCpjdmQpLCBHRlBfTk9XQUlUKTsNCisJc3RydWN0IG10a19jcWRtYV92ZGVz YyAqY3ZkOw0KKw0KKwljdmQgPSBremFsbG9jKHNpemVvZigqY3ZkKSwgR0ZQX05PV0FJVCk7DQog CWlmICghY3ZkKQ0KIAkJcmV0dXJuIE5VTEw7DQogDQotCWZvciAoaSA9IDA7IGkgPCBucl92ZDsg KytpKSB7DQotCQljdmRbaV0gPSBremFsbG9jKHNpemVvZigqY3ZkW2ldKSwgR0ZQX05PV0FJVCk7 DQotCQlpZiAoIWN2ZFtpXSkgew0KLQkJCWZvciAoOyBpID4gMDsgLS1pKQ0KLQkJCQlrZnJlZShj dmRbaSAtIDFdKTsNCi0JCQlyZXR1cm4gTlVMTDsNCi0JCX0NCi0NCi0JCS8qIHNldHVwIGRtYSBj aGFubmVsICovDQotCQljdmRbaV0tPmNoID0gYzsNCi0NCi0JCS8qIHNldHVwIHNvdXJlY2UsIGRl c3RpbmF0aW9uLCBhbmQgbGVuZ3RoICovDQotCQl0bGVuID0gKGxlbiA+IE1US19DUURNQV9NQVhf TEVOKSA/IE1US19DUURNQV9NQVhfTEVOIDogbGVuOw0KLQkJY3ZkW2ldLT5sZW4gPSB0bGVuOw0K LQkJY3ZkW2ldLT5zcmMgPSBzcmM7DQotCQljdmRbaV0tPmRlc3QgPSBkZXN0Ow0KLQ0KLQkJLyog c2V0dXAgdHggZGVzY3JpcHRvciAqLw0KLQkJdHggPSB2Y2hhbl90eF9wcmVwKHRvX3ZpcnRfY2hh bihjKSwgJmN2ZFtpXS0+dmQsIGZsYWdzKTsNCi0JCXR4LT5uZXh0ID0gTlVMTDsNCisJLyogc2V0 dXAgZG1hIGNoYW5uZWwgKi8NCisJY3ZkLT5jaCA9IGM7DQogDQotCQlpZiAoIWkpIHsNCi0JCQlj dmRbMF0tPnJlc2lkdWUgPSBsZW47DQotCQl9IGVsc2Ugew0KLQkJCXByZXZfdHgtPm5leHQgPSB0 eDsNCi0JCQljdmRbaV0tPnJlc2lkdWUgPSB0bGVuOw0KLQkJfQ0KLQ0KLQkJY3ZkW2ldLT5wYXJl bnQgPSBjdmRbMF07DQotDQotCQkvKiB1cGRhdGUgdGhlIHNyYywgZGVzdCwgbGVuLCBwcmV2X3R4 IGZvciB0aGUgbmV4dCBDVkQgKi8NCi0JCXNyYyArPSB0bGVuOw0KLQkJZGVzdCArPSB0bGVuOw0K LQkJbGVuIC09IHRsZW47DQotCQlwcmV2X3R4ID0gdHg7DQotCX0NCisJLyogc2V0dXAgc291cmVj ZSwgZGVzdGluYXRpb24sIGFuZCBsZW5ndGggKi8NCisJY3ZkLT5sZW4gPSBsZW47DQorCWN2ZC0+ c3JjID0gc3JjOw0KKwljdmQtPmRlc3QgPSBkZXN0Ow0KIA0KLQlyZXR1cm4gJmN2ZFswXS0+dmQu dHg7DQorCXJldHVybiB2Y2hhbl90eF9wcmVwKHRvX3ZpcnRfY2hhbihjKSwgJmN2ZC0+dmQsIGZs YWdzKTsNCiB9DQogDQotc3RhdGljIHZvaWQgbXRrX2NxZG1hX2ZyZWVfaW5hY3RpdmVfZGVzYyhz dHJ1Y3QgZG1hX2NoYW4gKmMpDQotew0KLQlzdHJ1Y3QgdmlydF9kbWFfY2hhbiAqdmMgPSB0b192 aXJ0X2NoYW4oYyk7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQotCUxJU1RfSEVBRChoZWFkKTsN Ci0NCi0JLyoNCi0JICogc2V0IGRlc2NfYWxsb2NhdGVkLCBkZXNjX3N1Ym1pdHRlZCwNCi0JICog YW5kIGRlc2NfaXNzdWVkIGFzIHRoZSBjYW5kaWNhdGVzIHRvIGJlIGZyZWVkDQotCSAqLw0KLQlz cGluX2xvY2tfaXJxc2F2ZSgmdmMtPmxvY2ssIGZsYWdzKTsNCi0JbGlzdF9zcGxpY2VfdGFpbF9p bml0KCZ2Yy0+ZGVzY19hbGxvY2F0ZWQsICZoZWFkKTsNCi0JbGlzdF9zcGxpY2VfdGFpbF9pbml0 KCZ2Yy0+ZGVzY19zdWJtaXR0ZWQsICZoZWFkKTsNCi0JbGlzdF9zcGxpY2VfdGFpbF9pbml0KCZ2 Yy0+ZGVzY19pc3N1ZWQsICZoZWFkKTsNCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdmMtPmxv Y2ssIGZsYWdzKTsNCi0NCi0JLyogZnJlZSBkZXNjcmlwdG9yIGxpc3RzICovDQotCXZjaGFuX2Rt YV9kZXNjX2ZyZWVfbGlzdCh2YywgJmhlYWQpOw0KLX0NCi0NCi1zdGF0aWMgdm9pZCBtdGtfY3Fk bWFfZnJlZV9hY3RpdmVfZGVzYyhzdHJ1Y3QgZG1hX2NoYW4gKmMpDQorc3RhdGljIGludCBtdGtf Y3FkbWFfdGVybWluYXRlX2FsbChzdHJ1Y3QgZG1hX2NoYW4gKmMpDQogew0KIAlzdHJ1Y3QgbXRr X2NxZG1hX3ZjaGFuICpjdmMgPSB0b19jcWRtYV92Y2hhbihjKTsNCi0JYm9vbCBzeW5jX25lZWRl ZCA9IGZhbHNlOw0KKwlzdHJ1Y3QgdmlydF9kbWFfY2hhbiAqdmMgPSB0b192aXJ0X2NoYW4oYyk7 DQogCXVuc2lnbmVkIGxvbmcgcGNfZmxhZ3M7DQogCXVuc2lnbmVkIGxvbmcgdmNfZmxhZ3M7DQor CUxJU1RfSEVBRChoZWFkKTsNCisNCisJLyogd2FpdCBmb3IgdGhlIFZDIHRvIGJlIGluYWN0aXZl ICAqLw0KKwlpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmY3ZjLT5jbXAsIG1zZWNz X3RvX2ppZmZpZXMoMzAwMCkpKQ0KKwkJcmV0dXJuIC1FQUdBSU47DQogDQogCS8qIGFjcXVpcmUg UEMncyBsb2NrIGZpcnN0IGR1ZSB0byBsb2NrIGRlcGVuZGVuY3kgaW4gZG1hIElTUiAqLw0KIAlz cGluX2xvY2tfaXJxc2F2ZSgmY3ZjLT5wYy0+bG9jaywgcGNfZmxhZ3MpOw0KIAlzcGluX2xvY2tf aXJxc2F2ZSgmY3ZjLT52Yy5sb2NrLCB2Y19mbGFncyk7DQogDQotCS8qIHN5bmNocm9uaXphdGlv biBpcyByZXF1aXJlZCBpZiB0aGlzIFZDIGlzIGFjdGl2ZSAqLw0KLQlpZiAobXRrX2NxZG1hX2lz X3ZjaGFuX2FjdGl2ZShjdmMpKSB7DQotCQljdmMtPmlzc3VlX3N5bmNocm9uaXplID0gdHJ1ZTsN Ci0JCXN5bmNfbmVlZGVkID0gdHJ1ZTsNCi0JfQ0KKwkvKiBnZXQgVkRzIGZyb20gbGlzdHMgKi8N CisJdmNoYW5fZ2V0X2FsbF9kZXNjcmlwdG9ycyh2YywgJmhlYWQpOw0KKw0KKwkvKiBmcmVlIGFs bCB0aGUgVkRzICovDQorCXZjaGFuX2RtYV9kZXNjX2ZyZWVfbGlzdCh2YywgJmhlYWQpOw0KIA0K IAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjdmMtPnZjLmxvY2ssIHZjX2ZsYWdzKTsNCiAJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY3ZjLT5wYy0+bG9jaywgcGNfZmxhZ3MpOw0KIA0KLQkvKiB3 YWl0aW5nIGZvciB0aGUgY29tcGxldGlvbiBvZiB0aGlzIFZDICovDQotCWlmIChzeW5jX25lZWRl ZCkNCi0JCXdhaXRfZm9yX2NvbXBsZXRpb24oJmN2Yy0+aXNzdWVfY29tcGxldGlvbik7DQotDQot CS8qIGZyZWUgYWxsIGRlc2NyaXB0b3JzIGluIGxpc3QgZGVzY19jb21wbGV0ZWQgKi8NCiAJdmNo YW5fc3luY2hyb25pemUoJmN2Yy0+dmMpOw0KIA0KLQlXQVJOX09OQ0UoIWxpc3RfZW1wdHkoJmN2 Yy0+dmMuZGVzY19jb21wbGV0ZWQpLA0KLQkJICAiRGVzYyBwZW5kaW5nIHN0aWxsIGluIGxpc3Qg ZGVzY19jb21wbGV0ZWRcbiIpOw0KLX0NCi0NCi1zdGF0aWMgaW50IG10a19jcWRtYV90ZXJtaW5h dGVfYWxsKHN0cnVjdCBkbWFfY2hhbiAqYykNCi17DQotCS8qIGZyZWUgZGVzY3JpcHRvcnMgbm90 IHByb2Nlc3NlZCB5ZXQgYnkgaGFyZHdhcmUgKi8NCi0JbXRrX2NxZG1hX2ZyZWVfaW5hY3RpdmVf ZGVzYyhjKTsNCi0NCi0JLyogZnJlZSBkZXNjcmlwdG9ycyBiZWluZyBwcm9jZXNzZWQgYnkgaGFy ZHdhcmUgKi8NCi0JbXRrX2NxZG1hX2ZyZWVfYWN0aXZlX2Rlc2MoYyk7DQotDQogCXJldHVybiAw Ow0KIH0NCiANCkBAIC02MTgsNyArNDIwLDcgQEAgc3RhdGljIGludCBtdGtfY3FkbWFfYWxsb2Nf Y2hhbl9yZXNvdXJjZXMoc3RydWN0IGRtYV9jaGFuICpjKQ0KIAl1MzIgaSwgbWluX3JlZmNudCA9 IFUzMl9NQVgsIHJlZmNudDsNCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCiANCi0JLyogYWxsb2Nh dGUgUEMgd2l0aCB0aGUgbWluaW11biByZWZjb3VudCAqLw0KKwkvKiBhbGxvY2F0ZSBQQyB3aXRo IHRoZSBtaW5pbXVtIHJlZmNvdW50ICovDQogCWZvciAoaSA9IDA7IGkgPCBjcWRtYS0+ZG1hX2No YW5uZWxzOyArK2kpIHsNCiAJCXJlZmNudCA9IHJlZmNvdW50X3JlYWQoJmNxZG1hLT5wY1tpXS0+ cmVmY250KTsNCiAJCWlmIChyZWZjbnQgPCBtaW5fcmVmY250KSB7DQpAQCAtNjcxLDggKzQ3Myw5 IEBAIHN0YXRpYyB2b2lkIG10a19jcWRtYV9mcmVlX2NoYW5fcmVzb3VyY2VzKHN0cnVjdCBkbWFf Y2hhbiAqYykNCiAJCW10a19kbWFfc2V0KGN2Yy0+cGMsIE1US19DUURNQV9GTFVTSCwgTVRLX0NR RE1BX0ZMVVNIX0JJVCk7DQogDQogCQkvKiB3YWl0IGZvciB0aGUgY29tcGxldGlvbiBvZiBmbHVz aCBvcGVyYXRpb24gKi8NCi0JCWlmIChtdGtfY3FkbWFfcG9sbF9lbmdpbmVfZG9uZShjdmMtPnBj LCB0cnVlKSA8IDApDQotCQkJZGV2X2VycihjcWRtYTJkZXYodG9fY3FkbWFfZGV2KGMpKSwgImNx ZG1hIGZsdXNoIHRpbWVvdXRcbiIpOw0KKwkJaWYgKG10a19jcWRtYV9wb2xsX2VuZ2luZV9kb25l KGN2Yy0+cGMpIDwgMCkNCisJCQlkZXZfZXJyKGNxZG1hMmRldih0b19jcWRtYV9kZXYoYykpLA0K KwkJCQkiY3FkbWEgZmx1c2ggdGltZW91dFxuIik7DQogDQogCQkvKiBjbGVhciB0aGUgZmx1c2gg Yml0IGFuZCBpbnRlcnJ1cHQgZmxhZyAqLw0KIAkJbXRrX2RtYV9jbHIoY3ZjLT5wYywgTVRLX0NR RE1BX0ZMVVNILCBNVEtfQ1FETUFfRkxVU0hfQklUKTsNCkBAIC04MTYsMTAgKzYxOSwxOCBAQCBz dGF0aWMgaW50IG10a19jcWRtYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0K IAkJaWYgKCFjcWRtYS0+cGNbaV0pDQogCQkJcmV0dXJuIC1FTk9NRU07DQogDQotCQlJTklUX0xJ U1RfSEVBRCgmY3FkbWEtPnBjW2ldLT5xdWV1ZSk7DQorCQljcWRtYS0+cGNbaV0tPmFjdGl2ZV92 ZGVzYyA9IE5VTEw7DQogCQlzcGluX2xvY2tfaW5pdCgmY3FkbWEtPnBjW2ldLT5sb2NrKTsNCiAJ CXJlZmNvdW50X3NldCgmY3FkbWEtPnBjW2ldLT5yZWZjbnQsIDApOw0KLQkJY3FkbWEtPnBjW2ld LT5iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIGkpOw0KKw0KKwkJ cmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCBpKTsNCisJ CWlmICghcmVzKSB7DQorCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiTm8gbWVtIHJlc291cmNlIGZv ciAlc1xuIiwNCisJCQkJZGV2X25hbWUoJnBkZXYtPmRldikpOw0KKwkJCXJldHVybiAtRUlOVkFM Ow0KKwkJfQ0KKw0KKwkJY3FkbWEtPnBjW2ldLT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNl KCZwZGV2LT5kZXYsIHJlcyk7DQogCQlpZiAoSVNfRVJSKGNxZG1hLT5wY1tpXS0+YmFzZSkpDQog CQkJcmV0dXJuIFBUUl9FUlIoY3FkbWEtPnBjW2ldLT5iYXNlKTsNCiANCkBAIC04NTIsNyArNjYz LDYgQEAgc3RhdGljIGludCBtdGtfY3FkbWFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikNCiAJCXZjID0gJmNxZG1hLT52Y1tpXTsNCiAJCXZjLT52Yy5kZXNjX2ZyZWUgPSBtdGtf Y3FkbWFfdmRlc2NfZnJlZTsNCiAJCXZjaGFuX2luaXQoJnZjLT52YywgZGQpOw0KLQkJaW5pdF9j b21wbGV0aW9uKCZ2Yy0+aXNzdWVfY29tcGxldGlvbik7DQogCX0NCiANCiAJZXJyID0gZG1hX2Fz eW5jX2RldmljZV9yZWdpc3RlcihkZCk7DQpAQCAtODc2LDExICs2ODYsNiBAQCBzdGF0aWMgaW50 IG10a19jcWRtYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIA0KIAlwbGF0 Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjcWRtYSk7DQogDQotCS8qIGluaXRpYWxpemUgdGFza2xl dCBmb3IgZWFjaCBQQyAqLw0KLQlmb3IgKGkgPSAwOyBpIDwgY3FkbWEtPmRtYV9jaGFubmVsczsg KytpKQ0KLQkJdGFza2xldF9pbml0KCZjcWRtYS0+cGNbaV0tPnRhc2tsZXQsIG10a19jcWRtYV90 YXNrbGV0X2NiLA0KLQkJCSAgICAgKHVuc2lnbmVkIGxvbmcpY3FkbWEtPnBjW2ldKTsNCi0NCiAJ ZGV2X2luZm8oJnBkZXYtPmRldiwgIk1lZGlhVGVrIENRRE1BIGRyaXZlciByZWdpc3RlcmVkXG4i KTsNCiANCiAJcmV0dXJuIDA7DQpAQCAtOTE1LDggKzcyMCw2IEBAIHN0YXRpYyBpbnQgbXRrX2Nx ZG1hX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIA0KIAkJLyogV2FpdHMg Zm9yIGFueSBwZW5kaW5nIElSUSBoYW5kbGVycyB0byBjb21wbGV0ZSAqLw0KIAkJc3luY2hyb25p emVfaXJxKGNxZG1hLT5wY1tpXS0+aXJxKTsNCi0NCi0JCXRhc2tsZXRfa2lsbCgmY3FkbWEtPnBj W2ldLT50YXNrbGV0KTsNCiAJfQ0KIA0KIAkvKiBkaXNhYmxlIGhhcmR3YXJlICovDQotLSANCjEu OS4xDQo=