Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp1774711pxa; Thu, 20 Aug 2020 21:56:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUSc4jdSjegYTSdTv7MR4QkWTkQXVStfNt0tresWMQQ5eSRvebb1Peh8xUVw0zQ4WHmjve X-Received: by 2002:a17:906:8050:: with SMTP id x16mr1012342ejw.441.1597985810713; Thu, 20 Aug 2020 21:56:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597985810; cv=none; d=google.com; s=arc-20160816; b=GkrIyIjMnr1tdmmo1scC5B89YGYayFf9Z1qAPpX6A9y9jur0K/NA5gd2roGlIK/rby 2b2x2/tnJ7GoDzD7WJdQgMTH7IErRLNyGH25Et/DV1xwvThh6U78jxEzoDTikqQXdQVE lXL9FsdZevVzMSQqZIVeyMHFg7MF6/enx8kyQK0oS8dDfYyjXgAlko1zrR/mQQkLtKU8 IiQ71ltvHMlKzTippZs4LYR36+bc9LfR+NxohIoATKfjM0OGkHlekYms89xgswRklBtA mAN8a7PXK3PB1QuS17rG2ZX6a89m4mKQdt90JGIgmXNUAgSsm2YMku54FuGB/mVYh/W6 uL8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=rtSNcj9WdoW8N3anyRnK6q6++/r1djDG3stDnjKlZVI=; b=OnfHa73rnDk/OM7esj+qIrrrJ6LisGVPLTEEI9LO/wDYpThyTtASV5zPOQubMLXHs+ zuibQu7FCD3znqeEtfxOfxPGPtTYBxXNVDBDavak2XgsSSHBXg0kdHmi9v89h+c2ub22 ylzdF0DPok+1H1FDZs6Ea4uD/x6Vko9I3Vq80evoGmdZ95s7vJJCKh6F/nbqm51PJ4LK BB0FHyuFHdd6yu0JNhz2QwEPYUvNM456Z27mZLRI+VihhZZJu3Sj3iMhltXI0Mk6tcjl KbfqDIEAGYoheu4tKgvNRLbfIDlgpfaSZMik9MMWIwAxRTcU6bM4oTTaCgZdpCBbq/6o tUzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=j3xzh4AG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cb21si533021edb.31.2020.08.20.21.56.27; Thu, 20 Aug 2020 21:56:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=j3xzh4AG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726354AbgHUEwd (ORCPT + 99 others); Fri, 21 Aug 2020 00:52:33 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:6765 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725270AbgHUEwc (ORCPT ); Fri, 21 Aug 2020 00:52:32 -0400 X-UUID: e40e435730c742c28a7ed91899ca03e1-20200821 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=rtSNcj9WdoW8N3anyRnK6q6++/r1djDG3stDnjKlZVI=; b=j3xzh4AGxw6U6gl1ggHCDFu/e/MHoOGUz2jbI3q0hgXlgvUJ4PBOIOPcXseoUjcH2wlLcPPjAeXEYFSmml3CLE2+qUPvL0flr5cXRycGVwkRrW0QDobZSn+aTZQeM6w6h+R/a1Z9paSC/p16DKBPfyeNSQC7fJYuZxLJFNDfCBQ=; X-UUID: e40e435730c742c28a7ed91899ca03e1-20200821 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1312047966; Fri, 21 Aug 2020 12:47:13 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 21 Aug 2020 12:47:10 +0800 Received: from [172.21.77.33] (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 21 Aug 2020 12:47:10 +0800 Message-ID: <1597985231.23380.22.camel@mtkswgap22> Subject: Re: [PATCH v1 1/2] pinctrl: mediatek: support access registers without race-condition From: Light Hsieh To: Sean Wang CC: Linus Walleij , "moderated list:ARM/Mediatek SoC support" , "open list:GPIO SUBSYSTEM" , lkml , Date: Fri, 21 Aug 2020 12:47:11 +0800 In-Reply-To: References: <1597739776-15944-1-git-send-email-light.hsieh@mediatek.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-TM-SNTS-SMTP: 51BC122EDEF3F1D67EED8335CAD5141E90041D04EFD83219FE1A1A71628C7C8B2000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIwLTA4LTE5IGF0IDE2OjExIC0wNzAwLCBTZWFuIFdhbmcgd3JvdGU6DQo+IEhp IExpZ2h0LA0KPiANCj4gT24gVHVlLCBBdWcgMTgsIDIwMjAgYXQgMTozNiBBTSA8bGlnaHQuaHNp ZWhAbWVkaWF0ZWsuY29tPiB3cm90ZToNCj4gPg0KPiA+IEZyb206IExpZ2h0IEhzaWVoIDxsaWdo dC5oc2llaEBtZWRpYXRlay5jb20+DQo+ID4NCj4gPiBTb21lIE1lZGlhVGVrIFNPQyBwcm92aWRl IG1vcmUgY29udHJvbCByZWdpc3RlcnMgb3RoZXIgdGhhbiB2YWx1ZSByZWdpc3Rlci4NCj4gDQo+ IHMvTVQ2NzY1L1NvbWUgTWVkaWFUZWsgU29DLw0KPiANCj4gPiBHZW5lcmFubGwsIGEgdmFsdWUg cmVnaXN0ZXIgbmVlZCByZWFkLW1vZGlmeS13cml0ZSBpcyBhdCBvZmZzZXQgMHhYWFhYWFhYWDAu DQo+IA0KPiBzL0dlbmVyYWxseS9HZW5lcmFubGwvDQo+IA0KPiA+IEEgY29ycmVzcG9uZGluZyBT RVQgcmVnaXN0ZXIgaXMgYXQgb2Zmc2V0IDB4WFhYWFhYWDQuIFdyaXRlIDFzJyB0byBzb21lIGJp dHMNCj4gPiAgIG9mIFNFVCByZWdpc3RlciB3aWxsIHNldCBzYW1lIGJpdHMgaW4gdmFsdWUgcmVn aXN0ZXIuDQo+ID4gQSBjb3JyZXNwb25kaW5nIENMUiByZWdpc3RlciBpcyBhdCBvZmZzZXQgMHhY WFhYWFhYOC4gV3JpdGUgMXMnIHRvIHNvbWUgYml0cw0KPiA+ICAgb2YgQ0xSIHJlZ2lzdGVyIHdp bGwgY2xlYXIgc2FtZSBiaXRzIGluIHZhbHVlIHJlZ2lzdGVyLg0KPiA+IEZvciBHUElPIG1vZGUg c2VsZWN0aW9uLCBNV1IgcmVnaXN0ZXIgaXMgcHJvdmlkZWQgYXQgb2Zmc2V0IDB4WFhYWFhYWEMu DQo+ID4gICBXaXRoIE1XUiwgdGhlIE1TQml0IG9mIEdQSU8gbW9kZSBzZWxlY3Rpb24gZmllbGQg aXMgZm9yIG1vZGlmaWNhdGlvbi1lbmFibGUsDQo+ID4gICBub3QgZm9yIEdQSU8gbW9kZSBzZWxl Y3Rpb24sIGFuZCB0aGUgcmVtYWluaW5nIExTQml0cyBhcmUgZm9yIG1vZGUNCj4gPiAgIHNlbGVj dGlvbi4NCj4gPiAgIFRha2UgbW9kZSBzZWxlY3Rpb24gZmllbGQgd2l0aCA0LWJpdHMgYXMgZXhh bXBsZSwgdG8gc2VsZWN0IG1vZGUgMH43IHZpYQ0KPiA+ICAgTVdSIHJlZ2lzdGVyLCA4fjE1IChp bnN0ZWFkIG9mIDB+Nykgc2hhbGwgYmUgd3JpdHRlbiB0byBjb3JyZXNwb25kaW5nIG1vZGUNCj4g PiAgIHNlbGVjdGlvbiBmaWVsZC4NCj4gPiBXaGVuIHVzaW5nIFNFVC9DTFIvTVdSIHJlZ2lzdGVy cywgcmVhZC1tb2RpZnktd3JpdGUgb2YgdmFsdWUgcmVnaXN0ZXIgaXMgbm90DQo+ID4gICBuZWNl c3NhcnkuIFRoaXMgY2FuIHByZXZlbnQgZnJvbSByYWNlIGNvbmRpdGlvbiB3aGVuIG11bHRpcGxl IGJ1cyBtYXN0ZXJzDQo+ID4gICBjb25jdXJyZW50bHkgcmVhZC1tb2RpZnktd3JpdGUgdGhlIHNh bWUgdmFsdWUgcmVnaXN0ZXIgZm9yIHNldHRpbmcgZGlmZmVyZW50DQo+ID4gICBmaWVsZHMgb2Yg dGhlIHNhbWUgdmFsdWUgcmVnaXN0ZXIuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBMaWdodCBI c2llaCA8bGlnaHQuaHNpZWhAbWVkaWF0ZWsuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL3Bp bmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmMgfCA2OSArKysrKysrKysrKysr KysrKysrKysrLS0NCj4gPiAgZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtbXRrLWNv bW1vbi12Mi5oIHwgIDIgKw0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waW5jdHJsL21l ZGlhdGVrL3BpbmN0cmwtbXRrLWNvbW1vbi12Mi5jIGIvZHJpdmVycy9waW5jdHJsL21lZGlhdGVr L3BpbmN0cmwtbXRrLWNvbW1vbi12Mi5jDQo+ID4gaW5kZXggYjc3YjE4Zi4uNTFmMGI1MyAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9u LXYyLmMNCj4gPiArKysgYi9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29t bW9uLXYyLmMNCj4gPiBAQCAtMTgsNiArMTgsMjkgQEANCj4gPiAgI2luY2x1ZGUgIm10ay1laW50 LmgiDQo+ID4gICNpbmNsdWRlICJwaW5jdHJsLW10ay1jb21tb24tdjIuaCINCj4gPg0KPiA+ICsv KiBTb21lIE1lZGlhVGVrIFNPQyBwcm92aWRlIG1vcmUgY29udHJvbCByZWdpc3RlcnMgb3RoZXIg dGhhbiB2YWx1ZSByZWdpc3Rlci4NCj4gDQo+IHMvTVQ2NzY1L1NvbWUgTWVkaWFUZWsgU29DLw0K DQpOb3Qgb25seSBNVDY3NjUgcHJvdmlkZXMgc3VjaCBjb250cm9sIHJlZ2lzdGVycy4NCkFjdHVh bGx5LCBtYW55IChidXQgbm90IGFsbCkgTWVkaWFUZWsgU29DIHN1cHBvcnQuDQpPdGhlciBNZWRp YVRlayBTb0MgY2FuIGVuYWJsZSBzdWNoIGNvbnRyb2wgYWNjb3JkaW5nIHRvIGl0cyBIVyBzdXBw b3J0Lg0KDQo+IA0KPiA+ICsgKiBHZW5lcmFubGwsIGEgdmFsdWUgcmVnaXN0ZXIgbmVlZCByZWFk LW1vZGlmeS13cml0ZSBpcyBhdCBvZmZzZXQgMHhYWFhYWFhYWDAuDQo+IA0KPiBzL0dlbmVyYWxs eS9HZW5lcmFubGwvDQo+IA0KPiA+ICsgKiBBIGNvcnJlc3BvbmRpbmcgU0VUIHJlZ2lzdGVyIGlz IGF0IG9mZnNldCAweFhYWFhYWFg0LiBXcml0ZSAxcycgdG8gc29tZSBiaXRzDQo+ID4gKyAqICBv ZiBTRVQgcmVnaXN0ZXIgd2lsbCBzZXQgc2FtZSBiaXRzIGluIHZhbHVlIHJlZ2lzdGVyLg0KPiA+ ICsgKiBBIGNvcnJlc3BvbmRpbmcgQ0xSIHJlZ2lzdGVyIGlzIGF0IG9mZnNldCAweFhYWFhYWFg4 LiBXcml0ZSAxcycgdG8gc29tZSBiaXRzDQo+ID4gKyAqICBvZiBDTFIgcmVnaXN0ZXIgd2lsbCBj bGVhciBzYW1lIGJpdHMgaW4gdmFsdWUgcmVnaXN0ZXIuDQo+ID4gKyAqIEZvciBHUElPIG1vZGUg c2VsZWN0aW9uLCBNV1IgcmVnaXN0ZXIgaXMgcHJvdmlkZWQgYXQgb2Zmc2V0IDB4WFhYWFhYWEMu DQo+ID4gKyAqICBXaXRoIE1XUiwgdGhlIE1TQml0IG9mIEdQSU8gbW9kZSBzZWxlY3Rpb24gZmll bGQgaXMgZm9yIG1vZGlmaWNhdGlvbi1lbmFibGUsDQo+ID4gKyAqICBub3QgZm9yIEdQSU8gbW9k ZSBzZWxlY3Rpb24sIGFuZCB0aGUgcmVtYWluaW5nIExTQml0cyBhcmUgZm9yIG1vZGUNCj4gPiAr ICogIHNlbGVjdGlvbi4NCj4gPiArICogIFRha2UgbW9kZSBzZWxlY3Rpb24gZmllbGQgd2l0aCA0 LWJpdHMgYXMgZXhhbXBsZSwgdG8gc2VsZWN0IG1vZGUgMH43IHZpYQ0KPiA+ICsgKiAgTVdSIHJl Z2lzdGVyLCA4fjE1IChpbnN0ZWFkIG9mIDB+Nykgc2hhbGwgYmUgd3JpdHRlbiB0byBjb3JyZXNw b25kaW5nIG1vZGUNCj4gPiArICogIHNlbGVjdGlvbiBmaWVsZC4NCj4gPiArICogV2hlbiB1c2lu ZyBTRVQvQ0xSL01XUiByZWdpc3RlcnMsIHJlYWQtbW9kaWZ5LXdyaXRlIG9mIHZhbHVlIHJlZ2lz dGVyIGlzIG5vdA0KPiA+ICsgKiAgbmVjZXNzYXJ5LiBUaGlzIGNhbiBwcmV2ZW50IGZyb20gcmFj ZSBjb25kaXRpb24gd2hlbiBtdWx0aXBsZSBidXMgbWFzdGVycw0KPiA+ICsgKiAgY29uY3VycmVu dGx5IHJlYWQtbW9kaWZ5LXdyaXRlIHRoZSBzYW1lIHZhbHVlIHJlZ2lzdGVyIGZvciBzZXR0aW5n IGRpZmZlcmVudA0KPiA+ICsgKiAgZmllbGRzIG9mIHRoZSBzYW1lIHZhbHVlIHJlZ2lzdGVyLg0K PiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgU0VUX09GRlNFVCAweDQNCj4gPiArI2RlZmlu ZSBDTFJfT0ZGU0VUIDB4OA0KPiANCj4gY2FuIHNldC9jbHIgb2Zmc2V0IHdvcmsgZm9yIG1vZGUg cmVnaXN0ZXI/DQoNClllcy4gSG93ZXZlciwgdXNlIHNldC9jbHIgdG8gY2hhbmdlIG1vZGUgcmVx dWlyZSAyIHJlZ2lzdGVyIGFjY2VzcyB3aGVuDQp0YXJnZXQgbW9kZSBpcyBub3QgYWxsIDAncyBv ciBhbGwgMSdzLg0KVGhlIG13ciBIVyBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUgb24gbW9kZSBy ZWdpc3Rlci4NCg0KPiANCj4gPiArI2RlZmluZSBNV1JfT0ZGU0VUIDB4Qw0KPiA+ICsNCj4gPiAg LyoqDQo+ID4gICAqIHN0cnVjdCBtdGtfZHJpdmVfZGVzYyAtIHRoZSBzdHJ1Y3R1cmUgdGhhdCBo b2xkcyB0aGUgaW5mb3JtYXRpb24NCj4gPiAgICogICAgICAgICAgICAgICAgICAgICAgICAgb2Yg dGhlIGRyaXZpbmcgY3VycmVudA0KPiA+IEBAIC02NCw2ICs4NywzOCBAQCB2b2lkIG10a19ybXco c3RydWN0IG10a19waW5jdHJsICpwY3RsLCB1OCBpLCB1MzIgcmVnLCB1MzIgbWFzaywgdTMyIHNl dCkNCj4gPiAgICAgICAgIG10a193MzIocGN0bCwgaSwgcmVnLCB2YWwpOw0KPiA+ICB9DQo+ID4N Cj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIG10a19od19zZXRfdmFsdWVfcmFjZV9mcmVlKHN0cnVj dCBtdGtfcGluY3RybCAqcGN0bCwNCj4gPiArICAgICAgICAgICAgICAgc3RydWN0IG10a19waW5f ZmllbGQgKnBmLCB1MzIgdmFsdWUpDQo+IA0KPiBzL210a19od19zZXRfdmFsdWVfcmFjZV9mcmVl L210a19od193MXNjLyB0byBleHBsaWN0bHkgaW5kaWNhdGUNCj4gd3JpdGUtb25lIGV0aGllciBz ZXQgb3IgY2xlYXIgb3BlcmF0aW9uIHN1cHBvcnRlZCBieSBodw0KPiANCj4gPiArew0KPiA+ICsg ICAgICAgdW5zaWduZWQgaW50IHNldCwgY2xyOw0KPiA+ICsNCj4gPiArICAgICAgIHNldCA9IHZh bHVlICYgcGYtPm1hc2s7DQo+ID4gKyAgICAgICBjbHIgPSAofnNldCkgJiBwZi0+bWFzazsNCj4g PiArDQo+ID4gKyAgICAgICBpZiAoc2V0KQ0KPiA+ICsgICAgICAgICAgICAgICBtdGtfdzMyKHBj dGwsIHBmLT5pbmRleCwgcGYtPm9mZnNldCArIFNFVF9PRkZTRVQsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgc2V0IDw8IHBmLT5iaXRwb3MpOw0KPiA+ICsgICAgICAgaWYgKGNscikNCj4g PiArICAgICAgICAgICAgICAgbXRrX3czMihwY3RsLCBwZi0+aW5kZXgsIHBmLT5vZmZzZXQgKyBD TFJfT0ZGU0VULA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsciA8PCBwZi0+Yml0cG9z KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgbXRrX2h3X3NldF9tb2RlX3JhY2Vf ZnJlZShzdHJ1Y3QgbXRrX3BpbmN0cmwgKnBjdGwsDQo+ID4gKyAgICAgICAgICAgICAgIHN0cnVj dCBtdGtfcGluX2ZpZWxkICpwZiwgdTMyIHZhbHVlKQ0KPiANCj4gcy9tdGtfaHdfc2V0X21vZGVf cmFjZV9mcmVlL210a19od19td3IvDQo+IA0KPiA+ICt7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBp bnQgdmFsdWVfbmV3Ow0KPiA+ICsNCj4gPiArICAgICAgIC8qIE1TQiBvZiBtYXNrIGlzIG1vZGlm aWNhdGlvbi1lbmFibGUgYml0LCBzZXQgdGhpcyBiaXQgKi8NCj4gPiArICAgICAgIHZhbHVlX25l dyA9ICgxIDw8IChwY3RsLT5zb2MtPm13cl9maWVsZF93aWR0aCAtIDEpKSB8IHZhbHVlOw0KPiAN Cj4gaXQgc2VlbXMgdG8gYmUgd2UgY2FuIHVzZSBmbHMocGYtPm1hc2spIHRvIHJlcGxhY2UgY3Rs LT5zb2MtPm13cl9maWVsZF93aWR0aA0KPiANCg0KcGYtPm1hc2sgY2Fubm90IGJlIHVzZWQgZGly ZWN0LiBJdCBuZWVkcyBjb252ZXJzaW9uLkZvciBleGFtcGxlOg0KcGYtPm1hc2s6IDB4MWYgLT4g dmFsdWVfbmV3ID0gKDEgPDwgNCkgfCB2YWx1ZTsNCnBmLT5tYXNrOiAweGYgLT4gdmFsdWVfbmV3 ID0gKDEgPDwgMykgfCB2YWx1ZTsNCnBmLT5tYXNrOiAweDcgLT4gdmFsdWVfbmV3ID0gKDEgPDwg MikgfCB2YWx1ZTsNCg0KVGhlIGNvZGUgc2l6ZSBvZiBwZXJmb3JtIGNvbnZlcnNpb24gaXMgZ3Jl YXRlciB0aGFuIHVzaW5nIGEgZGlyZWN0DQptd3JfZmllbGRfd2lkdGggZmllbGQuDQoNCg0KPiA+ ICsgICAgICAgaWYgKHZhbHVlX25ldyA9PSB2YWx1ZSkNCj4gPiArICAgICAgICAgICAgICAgZGV2 X25vdGljZShwY3RsLT5kZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQg bW9kZSAweCV4LCB1c2UgaXQgYnkgaWdub3JpbmcgTVNCaXQhXG4iLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHZhbHVlKTsNCj4gPiArICAgICAgIG10a193MzIocGN0bCwgcGYtPmluZGV4 LCBwZi0+b2Zmc2V0ICsgTVdSX09GRlNFVCwNCj4gPiArICAgICAgICAgICAgICAgdmFsdWVfbmV3 IDw8IHBmLT5iaXRwb3MpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgaW50IG10a19od19w aW5fZmllbGRfbG9va3VwKHN0cnVjdCBtdGtfcGluY3RybCAqaHcsDQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbXRrX3Bpbl9kZXNjICpkZXNjLA0K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpZWxkLCBzdHJ1Y3Qg bXRrX3Bpbl9maWVsZCAqcGZkKQ0KPiA+IEBAIC0xOTcsMTAgKzI1MiwxNiBAQCBpbnQgbXRrX2h3 X3NldF92YWx1ZShzdHJ1Y3QgbXRrX3BpbmN0cmwgKmh3LCBjb25zdCBzdHJ1Y3QgbXRrX3Bpbl9k ZXNjICpkZXNjLA0KPiA+ICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IHBmLm1hc2sp DQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+DQo+ID4gLSAgICAgICBp ZiAoIXBmLm5leHQpDQo+ID4gLSAgICAgICAgICAgICAgIG10a19ybXcoaHcsIHBmLmluZGV4LCBw Zi5vZmZzZXQsIHBmLm1hc2sgPDwgcGYuYml0cG9zLA0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICh2YWx1ZSAmIHBmLm1hc2spIDw8IHBmLmJpdHBvcyk7DQo+ID4gLSAgICAgICBlbHNlDQo+ ID4gKyAgICAgICBpZiAoIXBmLm5leHQpIHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGh3LT5z b2MtPnJhY2VfZnJlZV9hY2Nlc3MpIHsNCj4gDQo+IGxldCdzIGNyZWF0ZSBhbiBleHRyYSBmbGFn cyBjYXBzIHVuZGVyIGh3LT5zb2MgYW5kIHRoZSBTb0MgY2FwYWJpbGl0eQ0KPiBjaGVjaywgc29t ZXRoaW5nIGxpa2UgaHctPnNvYy0+Y2FwcyAmIE1US19IV19DQVBTX1JNV19BVE9NSUMgdG8gZWFz aWx5DQo+IGV4dGVuZCB2YXJpb3VzIHRoaW5ncyBmb3IgZnV0dXJlIFNvQw0KPiANCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQgPT0gUElOQ1RSTF9QSU5fUkVHX01PREUpDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGtfaHdfc2V0X21vZGVfcmFjZV9m cmVlKGh3LCAmcGYsIHZhbHVlKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGtfaHdfc2V0X3ZhbHVlX3JhY2Vf ZnJlZShodywgJnBmLCB2YWx1ZSk7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gDQo+IGxldCdz IGNyZWF0ZSBhIGZ1bmN0aW9uIGhvbGRpbmcgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZSBzdHVmZiAo YXQgbGVhc3QNCj4gY3VycmVudGx5IGl0IGxvb2sgbGlrZSksIHNvbWV0aGluZyBsaWtlDQo+IA0K PiBzdGF0aWMgdm9pZCBtdGtfaHdfcm13KHN0cnVjdCBtdGtfcGluY3RybCAqcGN0bCwgIHN0cnVj dCBtdGtfcGluX2ZpZWxkICpwZikNCj4gew0KPiAgICAgIGlmIChwZi0+ZmllbGQgPT0gUElOQ1RS TF9QSU5fUkVHX01PREUpIC8qIGNyZWF0ZSBhIG1lbWJlciBmaWVsZCBmb3IgcGYgKi8NCj4gICAg ICAgICAgICAgbXRrX2h3X213ciguLi4pOw0KPiAgICAgZWxzZQ0KPiAgICAgICAgICAgICBtdGtf aHdfdzFzYyguLi4pOw0KPiB9DQo+IA0KDQpTaW5lIHRoZXJlIGlzIG5vIG1lbWJlciAnZmllbGQn IGluIHN0cnVjdCBtdGtfcGluX2ZpZWxkLCBwZi0+ZmllbGQNCmNhbm5vdCBiZSB1c2VkLiANClRo ZXJlZm9yZSBhbiBleHRyYSBmdW5jdGlvbiBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgaWYgeW91IHdh bnQgdG8gdXNlIGENCnN0YW5kYWxvbmUgZnVuY3Rpb24gbXRrX2h3X3Jtdy4gTGlrZSB0aGlzOiAN Cg0Kdm9pZCBtdGtfaHdfcm13KHN0cnVjdCBtdGtfcGluY3RybCAqcGN0bCwgc3RydWN0IG10a19w aW5fZmllbGQgKnBmLA0KCQlpbnQgZmllbGQsIHUzMiB2YWx1ZSkNCnsNCglpZiAoZmllbGQgPT0g UElOQ1RSTF9QSU5fUkVHX01PREUpDQoJCW10a19od19zZXRfbW9kZV9yYWNlX2ZyZWUoaHcsICZw ZiwgdmFsdWUpOw0KCWVsc2UNCgkJbXRrX2h3X3NldF92YWx1ZV9yYWNlX2ZyZWUoaHcsICZwZiwg dmFsdWUpOw0KfQ0KDQpJIHdvbmRlciB0aGUgbmVjZXNzaXR5L2VmZmljaWVuY3kgb2Ygc3VjaCBl eHRyYSBpbnRlcm1lZGlhdGUgZnVuY3Rpb24NCndpdGggbWFueSBmdW5jdGlvbiBwYXJhbWV0ZXJz LiANCg0KDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbXRrX3JtdyhodywgcGYuaW5kZXgs IHBmLm9mZnNldCwgcGYubWFzayA8PCBwZi5iaXRwb3MsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodmFsdWUgJiBwZi5tYXNrKSA8PCBwZi5iaXRwb3MpOw0KPiA+ICsgICAg ICAgfSBlbHNlDQo+ID4gICAgICAgICAgICAgICAgIG10a19od193cml0ZV9jcm9zc19maWVsZCho dywgJnBmLCB2YWx1ZSk7DQo+ID4NCj4gPiAgICAgICAgIHJldHVybiAwOw0KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmggYi9k cml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmgNCj4gPiBpbmRl eCAyN2RmMDg3Li45NWZiMzI5IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGluY3RybC9tZWRp YXRlay9waW5jdHJsLW10ay1jb21tb24tdjIuaA0KPiA+ICsrKyBiL2RyaXZlcnMvcGluY3RybC9t ZWRpYXRlay9waW5jdHJsLW10ay1jb21tb24tdjIuaA0KPiA+IEBAIC0yMDMsNiArMjAzLDggQEAg c3RydWN0IG10a19waW5fc29jIHsNCj4gPiAgICAgICAgIC8qIFNwZWNpZmljIHBhcmFtZXRlcnMg cGVyIFNvQyAqLw0KPiA+ICAgICAgICAgdTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn cGlvX207DQo+ID4gICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIGllc19w cmVzZW50Ow0KPiA+ICsgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWNl X2ZyZWVfYWNjZXNzOw0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAg ICBtd3JfZmllbGRfd2lkdGg7DQo+ID4gICAgICAgICBjb25zdCBjaGFyICogY29uc3QgICAgICAg ICAgICAgICpiYXNlX25hbWVzOw0KPiA+ICAgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAg ICAgICAgICBuYmFzZV9uYW1lczsNCj4gPg0KPiA+IC0tDQo+ID4gMS44LjEuMS5kaXJ0eQ0KDQo=