Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2300529imm; Thu, 7 Jun 2018 08:25:19 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJZi/1Y3QogyLGL2vw1I/utrgLSSqxnNcqzyAXd6h2mYzezUZlzF4rPBcsstpKmaMzr7nbK X-Received: by 2002:a17:902:7d89:: with SMTP id a9-v6mr2480708plm.238.1528385119004; Thu, 07 Jun 2018 08:25:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528385118; cv=none; d=google.com; s=arc-20160816; b=W8beaSCjimVD7+cNRHWwHv0endSATWeBqMAQZXkd8sbZeTKwLkJodvhjYpJykkcTBR b5LMSv6ZnGDikExl1dL18Ecf+VE6I3o3oWtbDB9GCris/O85892b5UUFveMPVLVRM7rX ddgmNzACT7pdA7oWQ6L/givMtT2agSpnHlYnxq1IMPTzXV7BnGKfAqtq9xy1uF0WPJQN mCbATnKD0ASVSObsSJQl0UxnwJln4x9IJXifTXI8nDSgdazAdLaSRQZRxz0WDvwCvbAH xZJwh7avW7EPmOi27Gg2E1ELb4GmY83vKdjmVgVy9NcQfl3Y5ZIhvTqTS7dLp7T1dXmN MElw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=IXWQj0s/U/coVBTMh8OJnWywtOImVBw0CJdrF7/hgDM=; b=nA8hB3xqwgUU1Z/jkfqGypChDkAZGvpM0niSADhwz+4oJ9AiBjnENh9q7R7JQ2E1TJ 9ALqGYT17dj9WykqlUI1DCsSHyNzO1kfVDxIP9YAfiNi9a0rbhGs34sQuvOYPGvLWW7p UMLlm9Yj7tb3FbqKCovsz4PJ+3iby+d4fLPZNfpzZsZ6V6sBqLYC1lDbK+e2A08DWJff MLCusSMTjpCzW+Wfj2q+V0vno7P82Rf7KSx51wE/KAtmnXHAll1CzUhqmteK+hDy907J E0kjt+R0yqAq23gRA8CjpqBUnkOBQxuuFfhRexmolf1A3RPsYQLGPjEquzQ3BFKLPyPR y01A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@de.bosch.com header.s=2015-01-21 header.b=pfABEdUS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=de.bosch.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 63-v6si39391943pla.140.2018.06.07.08.25.04; Thu, 07 Jun 2018 08:25:18 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@de.bosch.com header.s=2015-01-21 header.b=pfABEdUS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=de.bosch.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935483AbeFGO6j (ORCPT + 99 others); Thu, 7 Jun 2018 10:58:39 -0400 Received: from de-out1.bosch-org.com ([139.15.230.186]:58908 "EHLO de-out1.bosch-org.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933329AbeFGO6c (ORCPT ); Thu, 7 Jun 2018 10:58:32 -0400 Received: from si0vm1947.rbesz01.com (unknown [139.15.230.188]) by si0vms0217.rbdmz01.com (Postfix) with ESMTPS id 411pZY6j9zz4f3lMt; Thu, 7 Jun 2018 16:58:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=de.bosch.com; s=2015-01-21; t=1528383509; bh=lxwzVb4ItPUAugAd8yMWdkl0E573IQ/R4foefv0u3Ks=; l=10; h=From:From:Reply-To:Sender; b=pfABEdUSZ9a+5Om/8nUPZ3oqwKmMJL9O9+5A2EcGgfMaN4CYnAahCsoBuO1l7e4j3 0PQz7xctfrJcejy4UtSSQrHA/JA+1mlCTBLtKPRMpauMBY3cECSpQNJEeEq98yS+OF QYQjywVSQuQtXRZWFfeCVbadL2CaeMsnI5BWjL3o= Received: from si0vm4642.rbesz01.com (unknown [10.58.172.176]) by si0vm1947.rbesz01.com (Postfix) with ESMTPS id 411pZY6Mpyz6CjXsC; Thu, 7 Jun 2018 16:58:29 +0200 (CEST) X-AuditID: 0a3aad12-ef5ff70000016568-0e-5b19481353c2 Received: from si0vm1949.rbesz01.com ( [10.58.173.29]) (using TLS with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by si0vm4642.rbesz01.com (SMG Outbound) with SMTP id 73.6C.25960.318491B5; Thu, 7 Jun 2018 16:58:27 +0200 (CEST) Received: from FE-MBX2016.de.bosch.com (fe-mbx2016.de.bosch.com [10.3.231.22]) by si0vm1949.rbesz01.com (Postfix) with ESMTPS id 411pZY41S1z6D44M5; Thu, 7 Jun 2018 16:58:29 +0200 (CEST) Received: from SGPMBX2025.APAC.bosch.com (10.187.56.84) by FE-MBX2016.de.bosch.com (10.3.231.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1466.3; Thu, 7 Jun 2018 16:58:28 +0200 Received: from FE-MBX2051.de.bosch.com (10.3.231.61) by SGPMBX2025.APAC.bosch.com (10.187.56.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1466.3; Thu, 7 Jun 2018 22:58:25 +0800 Received: from FE-MBX2051.de.bosch.com ([fe80::d5b5:44fa:ef15:153e]) by FE-MBX2051.de.bosch.com ([fe80::d5b5:44fa:ef15:153e%6]) with mapi id 15.01.1466.008; Thu, 7 Jun 2018 16:58:24 +0200 From: "Jonas Mark (BT-FIR/ENG1)" To: Andy Shevchenko CC: Wolfgang Grandegger , Marc Kleine-Budde , "linux-can@vger.kernel.org" , netdev , "Linux Kernel Mailing List" , Heiko Schocher , "ZHU Yi (BT-FIR/ENG1-Zhu)" Subject: AW: [PATCH 2/5] spi: implement companion-spi driver Thread-Topic: [PATCH 2/5] spi: implement companion-spi driver Thread-Index: AQHT/P1tVJL9o477ekeg9qEV2hoM0KRTcjYAgAFzZGA= Date: Thu, 7 Jun 2018 14:58:24 +0000 Message-ID: References: <1528224240-30786-1-git-send-email-mark.jonas@de.bosch.com> <1528224240-30786-3-git-send-email-mark.jonas@de.bosch.com> In-Reply-To: Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.19.142.147] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA22TbUxTZxTHeXpv6W3plYcLhUM3lli3GLdMkMHSIDJmFlIylqEfls1m0bLe 0UbaYm8hYpbI2KYG60CwCIVVUDEIgyIjyMtGpYzNly0QQSM6IDqGaNicMkemwtbbC7Qf9u2c 8z+/8z/PubkUwVymlJTRbGOtZl2eKlRGylJa416N1MRqE44svqK+Vz6I1N2/TBHq5gUHoR7t rQtVu08eI9U/1EerGyd7xOkSjct5kdT0OCckmodXbyFN2WKCZr7jhWzxDlmqns0zFrLW+LRd MkPVfCfKL969t8FeRhajekMpoijASXDKHVqKZBSDq0VwYPioL5H6kn4EbUM7BeEBgrLaRdFq 0uI+joTEg+BG3XmSR0JxChw8c0VSiiRUFI4HTyHfQuABEZxYOkLwLZE4Fb77sc/fHoW3QM1n X4qFOAXufDHidybxi1AxWIn4mMaboeHohFjw+glBb+mohBekeBs8a+j0wwjHQXv7sN+AwDHQ MbPgrwPGcPpboQ5YAfd+XRILT14LddVb+ZDAG8DdGy+Qa+HY4dsSwTYCLtVMk+UInEFDnQHC GUQ4g4h6RDYjBWdMKDQlvZ6UuNGaw3L7EjZt/Mhi6kDCt2W60eHGHC/CFFLJ6fSMWC0j1hVy RSYvSqZEKgV9ch1omTU5Fn2RQccZdloL8lhOpaRRSEgIE7la5gpyTEaOM1rMXgQUoYqidVej tQyt1xXtY60WAfOi5yhSFUPb9Z/sYHCuzsbuZtl81rqibqYoFdDf8ztEWNlcdu/HxjzbiqyK Ezyjg5VgWxEl9aLXKLnPe5YfQXP5OhNnzF3GYwWcWakG0Msok5o7YLcT1PRolZ1gSLPFzCpj aMRPwXy/ocC8uofyeXr9gO8kiiAhMOs+GkO+S0bS4zws9/1IgQ2A7o6s+4CJWC4GoMR6H4OH VDA/mwq157Lg5uM94CqxwuyfBeAZH0XweU8HAe6l3wlomXOS8NdXDjHYW9vF4BqpDIXbjkUJ 3Jm5S8G/001SeFzSJYW+C91ScHkHpDA7OSwFT895GUw5fpbBiZGSMKi98nUYnGvsD4Pxueth 0DVWLYe6i2fkMP/URcNvrY9o8NRWrIEnNY5wODTTGH7fd1mR77Iawn9Zm872P5ddrgYepixG h8Is2/a7r7em038MlSXf2P5wJLmpSqFmt2a+Vf5p57PEm9rJu82pbcas9f3Zjqk9dkdl5rpH b2dZMs62dbnCY655W3AFMr5/6813I67J9v/9j/JSdsZEU84b+uqap++kPTi1tEES2/4SXWQa 2HKhJPnse0/GB78Z/HBsoU+derBvV9qwiuQMuk0vE1ZO9x/qPwcN3QQAAA== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGVsbG8gQW5keSwNCg0KVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgeW91ciBmZWVkYmFjay4NCg0K PiA+ICsgICAgICAgLypUT0RPOiBzdXBwb3J0IG11dGlwbGUgcGFja2V0cyBpbiBvbmUgd3JpdGUg aW4gZnV0dXJlKi8NCj4gDQo+IEhtbS4uLiBFaXRoZXIgZml4IHRoaXMsIG9yIHJlbW92ZSBjb21t ZW50Pw0KDQpBZ3JlZWQsIHdlIHdpbGwgbWFuYWdlIGlkZWFzIGZvciBmdXR1cmUgY2hhbmdlcyBh dCBhIGRpZmZlcmVudCBwbGFjZS4NCg0KPiA+ICsgICAgICAgaWYgKGNvcHlfZnJvbV91c2VyKHAu ZGF0YSwgYnVmLCBzaXplb2YocCkpID09IDApIHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGlz X2Nhbl90eXBlKCZwKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsNCj4gPiArICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKHBh cmVudCwgImNvcHkgZnJvbSB1c2VyIG5vdCBzdWNjZWVkIGluIG9uZSBjYWxsXG4iKTsNCj4gDQo+ IFNob3VsZG4ndCBpdCByZXR1cm4gaW1tZWRpYXRlbHk/DQoNClllcywgaXQgc2hvdWxkLiBXaWxs IGJlIGNoYW5nZWQuDQoNCj4gDQo+ID4gKyAgICAgICB9DQo+IA0KPiA+ICsNCj4gPiArICAgICAg IGVycm9yID0gcW1faW9fdHhxX2luKCZwcml2LT5wbS5xbSwgYnVmLCBjb3VudCwgJmNvcGllZCk7 DQo+IA0KPiAuLi53aGF0IHRoZSBwb2ludCB0byBjYWxsIGlmIHdlIGdvdCBnYXJiYWdlIGZyb20g dXNlciBzcGFjZT8NCg0KV2lsbCBiZSBjaGFuZ2VkIHdpdGggdGhlIGNvZGUgYWJvdmUuDQoNCj4g PiArICAgICAgIGlmICghZXJyb3IpIHsNCj4gDQo+IFRoZSB1c3VhbCBwYXR0ZXJuIGlzIHRvIGNo ZWNrIGZvciBlcnJvcnMgZmlyc3QuDQoNClVuZGVyc3Rvb2QsIHdpbGwgYmUgY2hhbmdlZC4NCg0K PiA+ICsgICAgICAgICAgICAgICB3YWtlX3VwX2ludGVycnVwdGlibGUoJnByaXYtPndhaXQpOw0K PiA+ICsgICAgICAgICAgICAgICBwcml2LT5wbS5zdGF0cy5pb190eCsrOw0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gY29waWVkOw0KPiA+ICsgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAg ICAgICAgICAgcHJpdi0+cG0uc3RhdHMuaW9fdHhfb3ZlcmZsb3dzKys7DQo+ID4gKyAgICAgICB9 DQo+ID4gKyAgICAgICByZXR1cm4gZXJyb3I7DQo+ID4gK30NCj4gDQo+ID4gKyAgICAgICAuLi4g cW1faW9fcnhxX291dCgmcHJpdi0+cG0ucW0sIGJ1ZiwgY291bnQsICZjb3BpZWQpOw0KPiANCj4g PiArICAgICAgIC4uLiBwbV9jYW5fZGF0YV90eCgmcHJpdi0+cG0sIHBvcnQsIHByaW8sIGNmKTsN Cj4gDQo+IE9oLCBvaCwgb2guDQo+IA0KPiBUaGVzZSBuYW1lc3BhY2VzIGFyZSB0b28gZ2VuZXJp YywgbW9yZW92ZXIgcG0gaXMga2luZGEgb2NjdXBpZWQgYnkNCj4gcG93ZXIgbWFuYWdlbWVudC4g WW91IGJyaW5nIGEgbG90IG9mIGNvbmZ1c2lvbiBoZXJlLCBJIHRoaW5rLg0KDQpXZSBhZ3JlZSBh bmQgd2Ugc3RhcnRlZCB0aGlua2luZyBhYm91dCBiZXR0ZXIgbmFtZXMuIFdlIHdpbGwgc2VuZCBh IHByb3Bvc2FsLg0KDQo+ID4gKyAgICAgICBlcnIgPSBwbV9jYW5fZ2V0X3R4cV9zdGF0dXMocG0s IHBvcnQpOw0KPiA+ICsgICAgICAgaWYgKCFlcnIpIHsNCj4gDQo+IGlmIChlcnIpDQo+ICByZXR1 cm4gZXJyOw0KDQpZZXMsIHdpbGwgYmUgY2hhbmdlZC4NCg0KPiA+ICsgICAgICAgfQ0KPiA+ICsg ICAgICAgcmV0dXJuIGVycjsNCj4gDQo+IA0KPiA+ICsgICAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgcmV0LCB2YWx1ZTsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBzc2NhbmYoYnVm LCAiJWQiLCAmdmFsdWUpOw0KPiA+ICsgICAgICAgaWYgKHJldCAhPSAxKSB7DQo+IA0KPiA+ICsg ICAgICAgfQ0KPiANCj4gWW91IGhhdmUgdG8gYmUgY29uc2lzdGVudCBpbiB5b3VyIGNvZGUuDQo+ IA0KPiBJJ3ZlIGFscmVhZHkgbm90aWNlZA0KPiANCj4gZXJyDQo+IGVycm9yDQo+IA0KPiBhbmQg bm93DQo+IA0KPiByZXQNCj4gDQo+IENob29zZSBvbmUgYW5kIHN0aWNrIHdpdGggaXQuDQoNClll cywgd2lsbCBiZSBjaGFuZ2VkLg0KDQo+IEFsc28gY2hlY2sgeW91ciBlbnRpcmUgcGF0Y2ggc2Vy aWVzJyBjb2RlIGZvciBjb25zaXN0ZW5jeS4NCg0KV2Ugd2lsbCBoYXZlIGEgbG9vay4NCg0KPiA+ ICtzdGF0aWMgREVWSUNFX0FUVFIoZHVtcF9wYWNrZXRzLCBTX0lSVUdPIHwgU19JV1VTUiwNCj4g PiArICAgICAgICAgICAgICAgICAgIHNob3dfZHVtcF9wYWNrZXRzLCBzdG9yZV9kdW1wX3BhY2tl dHMpOw0KPiANCj4gV2UgaGF2ZSBoZWxwZXJzLCBsaWtlIERFVklDRV9BVFRSX1JXKCkuDQoNCldp bGwgYmUgY2hhbmdlZC4NCg0KPiA+ICsgICAgICAgICAgICAgICByZXQgID0gc25wcmludGYoYnVm ICsgcG9zLCBQQUdFX1NJWkUgLSBwb3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiXG50eDogJXUsIHJ4OiAldSwgZXJyOiAldVxuXG4iLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdG90YWwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwcml2LT5wbS5zdGF0cy5jYW5fcnhfb3ZlcmZsb3dzW2ldLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+cG0uc3RhdHMuY2FuX2Vycl9vdmVyZmxvd3NbaV0p Ow0KPiANCj4gUGxlYXNlLCBhdm9pZCBsZWFkaW5nICdcbicuDQoNCldlIHRoaW5rIHdlIHdpbGwg c3RpY2sgdG8gdGhlIGV4aXN0aW5nLiBPdGhlcndlaXNlIHdlIHdvdWxkIGhhdmUgdG8NCmluc2Vy dCBhbm90aGVyIHBhaXIgb2Ygc3ByaW50KCkgYW5kIHBvcyArPSByZXQuIElzIGl0IHdvcnRoIHRo YXQ/DQoNCj4gDQo+ID4gKyAgICAgICBncGlvX3NldF92YWx1ZShwcml2LT5jc19ncGlvcywgcHJp di0+Y3NfZ3Bpb3NfYXNzZXJ0KTsNCj4gDQo+ID4gKyAgICAgICBncGlvX3NldF92YWx1ZShwcml2 LT5jc19ncGlvcywgIXByaXYtPmNzX2dwaW9zX2Fzc2VydCk7DQo+IA0KPiBDYW4geW91IHN3aXRj aCB0byBHUElPIGRlc2NyaXB0b3IgQVBJPw0KDQpZZXMsIHdlIGFyZSB3b3JraW5nIG9uIGl0Lg0K DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgY291bnQgPSBSRUFEWV9QT0xMX1VTIC8gUkVBRFlf UE9MTF9VU19HUkFOOw0KPiA+ICsgICAgICAgd2hpbGUgKGNvdW50LS0pIHsNCj4gDQo+IEZvciBj b3VudGluZyBsaWtlIHRoaXMgYmV0dGVyIHRvIGhhdmUNCj4gZG8gew0KPiB9IHdoaWxlICgtLWNv dW50KTsNCj4gDQo+IFRoZSByYXRpb25hbGUsIHJlYWRlciBhdCBmaXJzdCBnbGFuY2Ugd2lsbCBr bm93IHRoYXQgdGhlIGxvb3Agd2lsbA0KPiBpdGVyYXRlIGF0IGxlYXN0IG9uY2UuDQoNCkFncmVl ZCwgd2lsbCBiZSBjaGFuZ2VkLg0KDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChzbGF2ZV9pc19u b3RfYnVzeShwcml2KSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4g PiArDQo+IA0KPiA+ICsgICAgICAgICAgICAgICB1ZGVsYXkoUkVBRFlfUE9MTF9VU19HUkFOKTsN Cj4gDQo+IFNob3VsZCBpdCBiZSBhdG9taWM/DQo+IENhbiBpdCB1c2UgcmVhZF9wb2xsXyogdHlw ZSBvZiBoZWxwZXJzIGluc3RlYWQ/DQoNClllcywgaXQgc2hhbGwgYmUgYXRvbWljIGJlY2F1c2Ug d2UgbmVlZCB0byByZWR1Y2UgdGhlIGxhdGVuY3kgYXQNCmRldGVjdGluZyB0aGUgZGUtYXNzZXJ0 aW9uIG9mIHRoZSBidXN5IHNpZ25hbC4gV2UgYWNjZXB0IHRoYXQgdGhpcyB3aWxsDQpjb3N0IENQ VSB0aW1lLg0KDQpJbiBjYXNlIHRoZSBDb21wYW5pb24gaXRzZWxmIGlzIHZlcnkgYnVzeSBhbmQg ZG9lcyBub3QgcmVwbHkgcXVpY2tseSB3ZQ0KYXJlIGhhdmUgc2Vjb25kIHBvbGxpbmcgbG9vcCBi ZWxvdyB3aGljaCBzbGVlcHMgbG9uZ2VyIGFuZCBpcyBub24tYXRvbWljLg0KDQo+IEFib3ZlIGNv bW1lbnRzIGFwcGxpY2FibGUgdG8gZW50aXJlIGNvZGUgeW91IGhhdmUuDQoNCldlIHdpbGwgbG9v ayBhdCBpdC4NCg0KPiA+ICtzdGF0aWMgdm9pZCBjb21wYW5pb25fc3BpX2NwdV90b19iZTMyKGNo YXIgKmJ1ZikNCj4gPiArew0KPiA+ICsgICAgICAgdTMyICpidWYzMiA9ICh1MzIqKWJ1ZjsNCj4g PiArICAgICAgIGludCAgaTsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgKEJD UF9QQUNLRVRfU0laRSAvIHNpemVvZih1MzIpKTsgaSsrLCBidWYzMisrKQ0KPiA+ICsgICAgICAg ICAgICAgICAqYnVmMzIgPSBjcHVfdG9fYmUzMigqYnVmMzIpOw0KPiA+ICt9DQo+IA0KPiBUaGlz IGVudGlyZSBmdW5jdGlvbiBzaG91bGQgYmUgcmVwbGFjZWQgYnkgb25lIG9mIHRoZSBoZWxwZXJz IGZyb20NCj4gaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oDQo+IA0KPiBJIGd1ZXNz IGNwdV90b19iZTMyX2FycmF5KCkgaXMgYSByaWdodCBvbmUuDQoNCkNvcnJlY3QuIFdlIGFyZSB0 ZXN0aW5nIHRoZSBkcml2ZXIgYWdhaW5zdCA0LjE0IGFuZCB0aGF0IGZ1bmN0aW9uIGlzIG5vdA0K YXZhaWxhYmxlIHRoZXJlLiBJdCB3aWxsIGJlIGNoYW5nZWQgbGF0ZXIuDQoNCj4gPiArc3RhdGlj IHZvaWQgY29tcGFuaW9uX3NwaV9iZTMyX3RvX2NwdShjaGFyICpidWYpDQo+ID4gK3sNCj4gPiAr ICAgICAgIHUzMiAqYnVmMzIgPSAodTMyKilidWY7DQo+ID4gKyAgICAgICBpbnQgIGk7DQo+ID4g Kw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IChCQ1BfUEFDS0VUX1NJWkUgLyBzaXplb2Yo dTMyKSk7IGkrKywgYnVmMzIrKykNCj4gPiArICAgICAgICAgICAgICAgKmJ1ZjMyID0gYmUzMl90 b19jcHUoKmJ1ZjMyKTsNCj4gPiArfQ0KPiANCj4gRGl0dG8uDQo+IA0KPiBSZWNvbW1lbmRhdGlv bjogY2hlY2sgeW91ciBjb2RlIGFnYWluc3QgZXhpc3RpbmcgaGVscGVycy4NCg0KWWVzLCBldmVy eSBrZXJuZWwgcmVsZWFzZSBicmluZ3MgbmV3IGhlbHBlcnMuIFdlIHdpbGwgaGF2ZSB0byBsZWFy biBob3cNCnRvIGtlZXAgdHJhY2sgb2YgdGhlIGFkZGl0aW9ucy4NCg0KPiA+ICsgICAgICAgICAg ICAgICBwID0gKGNvbnN0IHN0cnVjdCBjb21wYW5pb25fcGFja2V0Kil0cmFuc2Zlci0+dHhfYnVm Ow0KPiANCj4gPiArICAgICAgIGNvbXBhbmlvbl9zcGlfY3B1X3RvX2JlMzIoKGNoYXIqKXRyYW5z ZmVyLT50eF9idWYpOw0KPiANCj4gSWYgdHhfYnVmIGlzIHR5cGUgb2Ygdm9pZCAqIGFsbCB0aGVz ZSBjYXN0aW5ncyBhcmUgcmVkdW5kYW50Lg0KDQpUaGUgdHlwZSBpcyBjb25zdCB2b2lkKi4gU28g dGhlIGZpcnN0IGNhc3QgaXMgc3VwZXJmbHVvdXMsIHRoZSBzZWNvbmQNCmlzIG5vdC4NCg0KPiBB bHNvIGxvb2tpbmcgYXQgdGhlIGZ1bmN0aW9uLCBkaWQgeW91IGNvbnNpZGVyIHRvIHVzZSB3aGF0 ZXZlciBTUEkNCj4gY29yZSBwcm92aWRlcywgbGlrZSBDUyBoYW5kbGluZywgbWVzc2FnZXMgaGFu ZGxpbmcgYW5kIHNvIG9uPw0KDQpTUEkgQ1MgaGFzIHRvIGJlIGRvbmUgbWFudWFsbHkgaW4gb3Vy IGNhc2UgYmVjYXVzZSB3ZSBuZWVkIHRvIHdhaXQNCnVudGlsIHRoZSBDb21wYW5pb24gc2lnbmFs cyB0aGF0IGl0IGlzIHJlYWR5IGZvciB0aGUgdHJhbnNmZXIuDQoNCkRvIHlvdSBoYXZlIGNvbmNy ZXRlIHByb3Bvc2FscyByZWdhcmRpbmcgbWVzc2FnZXMgaGFuZGxpbmc/DQoNCj4gPiArc3RhdGlj IGludCBjb21wYW5pb25fc3BpX3RocmVhZCh2b2lkICpkYXRhKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgY29tcGFuaW9uX3NwaV9wcml2ICpwcml2ID0gZGF0YTsNCj4gPiArICAgICAgIHN0 cnVjdCBjb21wYW5pb25fcGFja2V0ICAgIHR4X3BhY2tldDsNCj4gPiArICAgICAgIHN0cnVjdCBj b21wYW5pb25fcGFja2V0ICAgIHJ4X3BhY2tldDsNCj4gPiArICAgICAgIHN0cnVjdCBzcGlfbWVz c2FnZSAgICAgICAgIG1lc3NhZ2U7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICAg ICAgICB0cmFuc2ZlcjsNCj4gPiArDQo+ID4gKyAgICAgICBtZW1zZXQoJnRyYW5zZmVyLCAwLCBz aXplb2YodHJhbnNmZXIpKTsNCj4gPiArICAgICAgIHRyYW5zZmVyLnR4X2J1ZiAgICAgICAgPSB0 eF9wYWNrZXQuZGF0YTsNCj4gPiArICAgICAgIHRyYW5zZmVyLnJ4X2J1ZiAgICAgICAgPSByeF9w YWNrZXQuZGF0YTsNCj4gPiArICAgICAgIHRyYW5zZmVyLmxlbiAgICAgICAgICAgPSBzaXplb2Yo c3RydWN0IGNvbXBhbmlvbl9wYWNrZXQpOw0KPiANCj4gPiArICAgICAgIHRyYW5zZmVyLmNzX2No YW5nZSAgICAgPSAwOw0KPiANCj4gUmVkdW5kYW50Lg0KDQpZZXMsIGl0IGlzIHJlZHVuZGFudC4g V2Ugd2FudCB0byBleHBsaWNpdGx5IHNob3cgaGVyZSB0aGF0IHRoZSBDUw0KaGFuZGxpbmcgaXMg ZG9uZSBtYW51YWxseS4NCg0KPiA+ICsgICAgICAgZm9yICg7Oykgew0KPiANCj4gSW5maW5pdGUg bG9vcHMgYXJlIGV2aWwgaW4gbW9zdCBvZiB0aGUgY2FzZXMuDQo+IEkgc2VlIGhlcmUNCj4gDQo+ IGRvIHsNCj4gfSB3aGlsZSAoa3RocmVhZF9zaG91bGRfc3RvcCgpKTsNCg0KWWVzLCB3aWxsIGJl IGZpeGVkLg0KDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNvbXBhbmlv bl9zcGlfb2ZfbWF0Y2hbXSA9IHsNCj4gPiArICAgICAgIHsgLmNvbXBhdGlibGUgPSBEUklWRVJf TkFNRSwgLmRhdGEgPSBOVUxMLCB9LA0KPiA+ICsgICAgICAgeyAvKiBzZW50aW5lbCAqLyB9LA0K PiANCj4gdGVybWluYXRvcnMgYmV0dGVyIHdpdGhvdXQgY29tbWFzLg0KDQpZZXMsIHdpbGwgYmUg Zml4ZWQuDQoNCj4gPiArICAgICAgICAgICAgICAgLm93bmVyICAgICAgICAgID0gVEhJU19NT0RV TEUsDQo+IA0KPiBUaGlzIGlzIHJlZHVuZGFudCwgbWFjcm8geW91IGFyZSB1c2luZyBiZWxvdyBz ZXRzIHRoYXQuDQoNCldpbGwgYmUgZml4ZWQuDQoNCj4gU29tZXRoaW5nIHdyb25nIHdpdGggaW5k ZW50YXRpb24gaW4gdGhpcyBmaWxlLg0KDQpZZXMsIHdlIHdpbGwgbmVlZCB0byB3b3JrIG9uIHRo ZSBpbmRlbnRhdGlvbi4gV2Ugd2lsbCBkbyBpdCBpbiBhDQpmb2xsb3dpbmcgcm91bmQuDQoNCj4g PiArI2RlZmluZSBDSEVDS19TSVpFKHgpIEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGNvbXBh bmlvbl9wYWNrZXQpICE9IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YoeCkpDQo+IA0KPiBCZXR0ZXIgdG8gc3BsaXQgbGlrZQ0KPiAgX1NJWkUoeCkgXA0K PiBCVUlMRF9CVUdfT04oKQ0KDQpXaWxsIGJlIGZpeGVkLg0KDQo+ID4gK3ZvaWQgcG1faW5pdChz dHJ1Y3QgY29tcGFuaW9uX3Byb3RvY29sX21hbmFnZXIgKnBtKQ0KPiANCj4gVW5mb3J0dW5hdGVs eSwgaG9ycmlibGUgbmFtZSBmb3IgdGhlIGZ1bmN0aW9uLg0KPiBOYW1lc3BhY2UgaXMga2luZGEg b2NjdXBpZWQsIG5hbWUgaXRzZWxmIHdheSB0b28gZ2VuZXJpYy4NCg0KWWVzLCB3ZSB3aWxsIHNl bmQgYSBwcm9wb3NhbC4NCg0KPiA+ICsgICAgICAgaWYgKGN0cmwgJiBDQU5fQ1RSTE1PREVfTElT VEVOT05MWSkNCj4gPiArICAgICAgICAgICAgICAgcC5tb2RlID0gQkNQX0NBTl9NT0RFX0xJU1RF TjsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RT VVBQOw0KPiANCj4gaWYgKCEoY29uZCkpDQo+ICByZXR1cm4gLUVSUk5POw0KDQpXaWxsIGJlIGZp eGVkLg0KDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQo+ID4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzDQo+ID4gKyAqIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KPiANCj4gRG8geW91IHN0 aWxsIG5lZWQgdGhpcyB0ZXh0Pw0KDQpEbyB5b3UgbWVhbiB0aGUgU1BEWCBpcyBlbm91Z2g/IFRo ZW4sIHllcywgd2UgY2FuIHJlbW92ZSBpdC4NCg0KPiA+ICsgKiBUT0RPOiBhZGQgbW9yZSBzdGF0 aXN0aWNzIGZpZWxkcyBhbmQgZXhwb3J0IHRvIHN5c2ZzDQo+IA0KPiBEbyBpdCBvciByZW1vdmUg dGhlIGNvbW1lbnQ/DQo+IA0KPiA+ICsgKiBUT0RPOiByZS10aGluayB0aGUgZGF0YSBzdHJ1Y3R1 cmUgZm9yIGhhbmRsZSBDQU4gcmVzcG9uc2UNCj4gDQo+IERpdHRvLg0KDQpXZSB3aWxsIGhhbmRs ZSBmdXR1cmUgaW1wcm92ZW1lbnQgaWRlYXMgaW4gYSBkaWZmZXJlbnQgcGxhY2UuDQoNCj4gPiAr LyoqDQo+ID4gKyAqIEJDUCBzdGF0dXMgZmllbGQgZGVmaW5pdGlvbnMNCj4gPiArICovDQo+ID4g KyNkZWZpbmUgQkNQX1NUQVRVU19TVUNDRVNTIDB4MDB1DQo+ID4gKyNkZWZpbmUgQkNQX1NUQVRV U19VTktOT1dOIDB4MDF1DQo+ID4gKyNkZWZpbmUgQkNQX1NUQVRVU19PVEhFUiAgIDB4MDJ1DQo+ IA0KPiBCSVQoKSA/DQoNCk5vLCB0aGVzZSBhcmUgZml4ZWQgbnVtYmVycywgbm90IGJpdCBmaWVs ZHMuDQoNCj4gPiArc3RydWN0IGNvbXBhbmlvbl9wYWNrZXQgew0KPiA+ICsgICAgICAgX191OCBk YXRhW0JDUF9QQUNLRVRfU0laRV07DQo+ID4gK307DQo+IA0KPiBJcyBpdCBnb2luZyBmcm9tIC8g dG8gdXNlciBzcGFjZT8gT3RoZXJ3aXNlIHdoeSBfXyBraW5kIG9mIHR5cGU/DQoNCldpbGwgYmUg Zml4ZWQuDQoNCj4gPiArI2RlZmluZSBDQU5fTUFYX0lOX0FfUk9XIDgNCj4gPiArDQo+ID4gKw0K PiA+ICsNCj4gDQo+IFRvbyBtYW55IGJsYW5rIGxpbmVzLg0KDQpZZXMuIFdpbGwgYmUgZml4ZWQu DQoNCj4gPiAraW50IGNvbXBhbmlvbl9kb19jYW5fZXJyKHN0cnVjdCBkZXZpY2UgICAgICAgICAg ICpwYXJlbnQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1OCAgICAgICAgICAgICAg ICAgICAgICAgcG9ydCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjYW5f YmVycl9jb3VudGVyICpiZWMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1OCAgICAg ICAgICAgICAgICAgICAgICAqc3RhdGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1 OCAgICAgICAgICAgICAgICAgICAgICAqY29kZSk7DQo+IA0KPiArIGJsYW5rIGxpbmUgaGVyZS4N Cg0KV2lsbCBiZSBmaXhlZC4NCg0KPiANCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX1NUQVRF X1dBUk5JTkcgMHgwMXUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX1NUQVRFX1BBU1NJVkUg MHgwMnUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX1NUQVRFX0JVU19PRkYgMHgwNHUNCj4g PiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VSUk9SX1NUVUZGICAgMHgwMXUNCj4gPiArI2RlZmlu ZSBDT01QQU5JT05fQ0FOX0VSUk9SX0ZPUk0gICAgMHgwMnUNCj4gPiArI2RlZmluZSBDT01QQU5J T05fQ0FOX0VSUk9SX0FDSyAgICAgMHgwNHUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VS Uk9SX0JJVDEgICAgMHgwOHUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VSUk9SX0JJVDAg ICAgMHgxMHUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VSUk9SX0NSQyAgICAgMHgyMHUN Cj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VSUk9SX1JYT1YgICAgMHg4MHUNCj4gDQo+IEJJ VCgpID8NCg0KWWVzLCB0aGlzIGlzIGEgYml0IGZpZWxkLiBXaWxsIGJlIGZpeGVkLg0KDQpHcmVl dGluZ3MsDQpNYXJrDQoNCkJ1aWxkaW5nIFRlY2hub2xvZ2llcywgUGFuZWwgU29mdHdhcmUgRmly ZSAoQlQtRklSL0VORzEpIA0KQm9zY2ggU2ljaGVyaGVpdHNzeXN0ZW1lIEdtYkggfCBQb3N0ZmFj aCAxMSAxMSB8IDg1NjI2IEdyYXNicnVubiB8IEdFUk1BTlkgfCB3d3cuYm9zY2hzZWN1cml0eS5j b20NCg0KU2l0ejogU3R1dHRnYXJ0LCBSZWdpc3RlcmdlcmljaHQ6IEFtdHNnZXJpY2h0IFN0dXR0 Z2FydCBIUkIgMjMxMTggDQpBdWZzaWNodHNyYXRzdm9yc2l0emVuZGVyOiBTdGVmYW4gSGFydHVu ZzsgR2VzY2jDpGZ0c2bDvGhydW5nOiBHZXJ0IHZhbiBJcGVyZW4sIEFuZHJlYXMgQmFydHosIFRo b21hcyBRdWFudGUsIEJlcm5oYXJkIFNjaHVzdGVyIA0K