From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BEFA8A056A; Thu, 11 Mar 2021 07:43:32 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5A8E022A2D3; Thu, 11 Mar 2021 07:43:32 +0100 (CET) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id 3540440689 for ; Thu, 11 Mar 2021 07:43:31 +0100 (CET) IronPort-SDR: MvLooMQXdLHbH0LW0vHrsKXS/smgPxEIDjgLPnBhmXXz+s/1M0Udm5Yx0u/+A361EjHqsiTyeu XwZiZdVEuqvw== X-IronPort-AV: E=McAfee;i="6000,8403,9919"; a="168539591" X-IronPort-AV: E=Sophos;i="5.81,239,1610438400"; d="scan'208";a="168539591" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Mar 2021 22:43:30 -0800 IronPort-SDR: x8rGDei9rle+Kq694Q3lxaatpx/T9HfrMIvPPzjKRlFqHKLIAmB36u8Ih8z2TxxIqV8PvQMsYA mlfJO5bC8gdw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,239,1610438400"; d="scan'208";a="438607466" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP; 10 Mar 2021 22:43:29 -0800 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 10 Mar 2021 22:43:29 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Wed, 10 Mar 2021 22:43:29 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.108) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Wed, 10 Mar 2021 22:43:29 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X0IMGS2MMZfMNlCP1R9it+DHAeQ4+s+IQ3BNuHddzyTQ3Gg/pUbLpjNx4WGf2y19KbskkiZja07FUm1+6WohlUXnnQ7M+Qwx60jhlhqag9X0yhJEcHdySjn5gOZwO6YdXlw3oGlQblKWuRcKHUisgn0OVvoYzNGBdyUBPnVJrdYVXk0edbnotssGu6lHH6IA7C+eBGNtyyTCHeYqMl8fDFvb6KCmRB22Kxb8uiLAT5/c7XENOtefATO128GI/mw0jjNIOsoEZZ89FSxVPwTjSkPamKmDyCB2mwm4aPT475ZMKrQVuvp4PwRPItSKAHBUWmfoE2qM0fT9VLBeNfaADg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zEKT24DmCmKllzpgdhJJA/Gga8WukyaEos0j2z3cP3M=; b=LjCTIF8TErnf6ehs54XTX9ScEtNrqoRyqqHlsnNC04hKCnxC0e9v+YQeYoIG4QO/nw9vNHpha2Fazirc6R36MIF0xufqxcYFqyO+p6NigoyYNYqN4WH9pjleSE4wpHU/NNH6zNAZp1bZGDH/uSdfyCJzU5CV5AVXsmXwvCR8ePKX5lTXm4SpdDZABrO4JLLO4EJdaLJvVozEfyvrHg9v0LOBM0hfUkpGl3Zz/ouXTVCAKu8oz0Mdt6hFcStui+JWq6/+W1MVSwhQZyGx4uCdizSFJ28S+7qG7ScKkULt+Jam1uEIFOzGUzB7NvLWScek5AYMhdHLhGUHEvgWiel8vA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zEKT24DmCmKllzpgdhJJA/Gga8WukyaEos0j2z3cP3M=; b=soY/H3JHOL8RqNrlthlvpjBYFpO5CWE8T5Fyj69wedB5f55SzL6qNsLMKR4uOsMgln0FNezTKYiC+IGFyKj8A5pNc0CiS4FAYVcAjgH4HOlSttHylxKo+I0SeF6mOb9fnL/RgRcC2UTMrBKv4UtTwkbSrUexX/ZOe8Dlb80fGW8= Received: from BN8PR11MB3795.namprd11.prod.outlook.com (2603:10b6:408:82::31) by BN7PR11MB2531.namprd11.prod.outlook.com (2603:10b6:406:ba::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.26; Thu, 11 Mar 2021 06:42:04 +0000 Received: from BN8PR11MB3795.namprd11.prod.outlook.com ([fe80::ec6a:25a8:8c59:89e]) by BN8PR11MB3795.namprd11.prod.outlook.com ([fe80::ec6a:25a8:8c59:89e%2]) with mapi id 15.20.3912.027; Thu, 11 Mar 2021 06:42:04 +0000 From: "Wang, Haiyue" To: =?utf-8?B?6LCi5Y2O5LyfKOatpOaXtuatpOWIu++8iQ==?= , "david.marchand@redhat.com" , "maxime.coquelin@redhat.com" , "Yigit, Ferruh" CC: "dev@dpdk.org" , "Burakov, Anatoly" , "xuemingl@nvidia.com" , "grive@u256.net" Thread-Topic: [dpdk-dev] [PATCH v11 2/2] bus/pci: support MMIO in PCI ioport accessors Thread-Index: AQHXFdQiqVms6S1ewkOA7LqcDloksqp+T+4Q Date: Thu, 11 Mar 2021 06:42:04 +0000 Message-ID: References: <1614797225-114594-1-git-send-email-huawei.xhw@alibaba-inc.com> <1615397790-16169-1-git-send-email-huawei.xhw@alibaba-inc.com> <1615397790-16169-3-git-send-email-huawei.xhw@alibaba-inc.com> In-Reply-To: <1615397790-16169-3-git-send-email-huawei.xhw@alibaba-inc.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.0.76 authentication-results: alibaba-inc.com; dkim=none (message not signed) header.d=none;alibaba-inc.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.37] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a314760a-d4cb-417f-5886-08d8e458c897 x-ms-traffictypediagnostic: BN7PR11MB2531: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1186; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: B8WXu2aEsoTYo8U+kuFW3mW1U5ijYEDHn2xWWllALDhTXO/bH4hMpWoM4D5TcG+tjoEuQ/TcRIQtMFf1MJmV+wcYAG5E5pVuDeFFYRBUPURZ1UeU3i38XuTMb6ai0GjayqrDhhc7jdTG83xkVWRNwzzP9357BUq7evjnabH8frzBc1dSRZmcd0dEaVeQ2tKNnM93r5z8jeFsifrp4J+yWwua8iER/al6vDxYLkWoV5zrtPnVoQNkxJmpVQLUF12EjyAHrvJxkDzJRj1inij8NoG03mnQSUNHNxHhkZqbPAH53bBf87t4ZAM6is2aK+Fle8rtKijuzIq6qseWuADJH3TEhHS186MLKmuTWAM5X3303sVunkVPqybY2EWW1/2bYblx7ZyHdKh1EnmM7qzBJIskhewCQ56k0oZzE3JqNTj0qniEp5//bQUcRC4MvUi5ywGK+gIuRqXxTSGrK7PnrRTQUdxs/8BFX/h7Mp7BUEt0pXfopard8AIKhq1wAZUJ6D5iMQT78EzqZg4G/YCku6kVtSuk3WhTnwlt5rzlhKRHD53aofvApap1oOvqLBcDOkeMVgW5iVAeXScWK6i4Qxc2V8ZOWfvxqDVqsToNdYY= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN8PR11MB3795.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(376002)(346002)(39860400002)(396003)(136003)(6636002)(52536014)(33656002)(66946007)(5660300002)(2906002)(316002)(54906003)(86362001)(478600001)(26005)(186003)(71200400001)(966005)(83380400001)(4326008)(8936002)(66556008)(66476007)(7696005)(66446008)(53546011)(6506007)(64756008)(76116006)(8676002)(110136005)(9686003)(55016002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?S2wrMFFqYTJqQ3B3VzlxemlZSnRzVnBQaEpKaDlTekh1WkZuQkRFS2FBSzNq?= =?utf-8?B?eXJQM3dhdmJ4cU9vMGs0aFY0dU1SLzBFSktlSVNWakxRZnBGNmJXcm5hdHBG?= =?utf-8?B?Z3F6ZW5lSFJHdXllRExtNDB6TnVaQ1JEaTkxTSs4dW85NWJlQVliTVdNYVlC?= =?utf-8?B?c1VaaWVrQmlUcE9TZCtRa1QvMERoQk1kQzRxbWtTeU1kM0YvaG02UjFnSjdE?= =?utf-8?B?aEF1T0VnM1pOTEtZQ3dRWXBxZERVeFU0aU5EV01EWktaakhjUlBOdzh6Kytq?= =?utf-8?B?ZXhDNnlsK0RBdWduQkVtTmlzcmRwZkdLTFJ5N3FXdmZHc0ZobUFRVHIvbTZs?= =?utf-8?B?UUROdTlhVHFiOTdGcDZjNDB4MzlBT0pNVmF1a21vR29LWnlVb1VMM2c0M0V1?= =?utf-8?B?cHZlSElyVWZDenZJNm1ranE1WEdDQXJMV1pGb214OTU3ZVJoVWJHVTBsWk1K?= =?utf-8?B?b3d2Q243dWVKZjZ4b0Y2OWNFYUhKQ2ZMNE84Wityei9hVFdwVXpaRkRRZ25C?= =?utf-8?B?K3VwV0JPUjZidm9LVUJscmt3SWF6cHBWNnZVeU9sWTFYNmlyQmdPcmdhNzAr?= =?utf-8?B?SmRHNTlTSXpMNmxxUjVOOVNnTkJmd3pJN3loQTFYL1gxWUM4S2k1bWRVY1M3?= =?utf-8?B?bURmeGRHTlM3WDRsRHJPZW9NYUVjbVVUYmgrWExISlQvWVBBbGp0eTE3MHcy?= =?utf-8?B?US9uYWtaWElVYVFNVjRPRTJOK05VRStUdkRGb1ZoMmhTNXAvUnFhLzZjVXls?= =?utf-8?B?OER5dnNFemZiZjlCQlJMY3pzZjdlaEJnQlF0cVArVXNad2F2M0ZiLzgvRzlX?= =?utf-8?B?dElqZEVDaGptQno4SnZYb3c1dmVaeFVLdHJ1T1JEelFBdzlzL2toRDZUNXV5?= =?utf-8?B?NkZCVlM0QWxoWStHVmhFUFlXVG9VMVdNWm9TdWpGaTVyV3pXZHNRL3MrNEFo?= =?utf-8?B?cnIva1RydXdYRkgyUmpXZDJVcGFmamhNY2FpZlpEMTBDTDBZZDE4RVBTMlVY?= =?utf-8?B?MW85ZDBCVDVjVGsyRHRyV1ZNU3l4RmlGdlI2L2EwdVEwL0NXOURZak9RNDhS?= =?utf-8?B?dG5ybTBVYTQ2QW93enY0TmNhcEZQdkkyQlFlMTNvUWIxcFBZN2wrLzB2OGRC?= =?utf-8?B?V1lNNmhnc0xmRXZxVVdsbnlXRDFoMzJHd3hMdUp2dGpuWThiSVdUSkFqRVM2?= =?utf-8?B?SVdtc1RTa0JZRUY3NEgyZVQwM2RtN2ZZbjZtaFlMd1d5RlZOWTBhRkwrcnpy?= =?utf-8?B?UjNGSU9HaW53UnNTRmQvRG9IZ2xERldQMlFEcHJSNlBrVS9vd0pSYzdoMGth?= =?utf-8?B?MmJUYkpIYll3TkVSamV0d055Vk0wNDNHRCtrYXQ1dWllYy9ZYUNMVUcybjBU?= =?utf-8?B?SnJBd1M3N0c3SkxWZTNTeVhydUk2dDh5dThSQ1hUdTFIYzl1R1U2bzhWNkZl?= =?utf-8?B?MVJRSzhEVnNTRnREUHplandjYVIralNvLzh1dWN6RHRGQ2Z2VjY4cnJUL2ZI?= =?utf-8?B?K1BEMWp4cjM4RTcxWEcxRWo0TXFRR2lya1FCWUdYZmExMTdvQXBGYkk0MVlv?= =?utf-8?B?K3NGd0Q0cDJZQjZzVFhMUjRjeUdKb0cyZlNFQXFkdHNUSVJTNzBwS1ZwTjBC?= =?utf-8?B?VXVFVXhpT0ZEcnVZRmx0YWdvRVZHOHhOMDN5bGQ4cFIyejlEN0JSblY0TC84?= =?utf-8?B?TmlUTUpheVB3TzM5UVE3OE0rUXBkVkcxTzJUWktlaWpPYnhkaFBuaC9RUHAw?= =?utf-8?Q?NQZ5J4xPOOEVhOxH5Pi2UZH2xR2tp4h/RZL8oHt?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR11MB3795.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a314760a-d4cb-417f-5886-08d8e458c897 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Mar 2021 06:42:04.5222 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: w3bBGBJthiVJUyHFl/4lg1Hi4xooN6TxX3yPucpWhc8Bn23ebLoBtXov2/xWF0/yBQ2xJUIZblnnOtbAvvBKXw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR11MB2531 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v11 2/2] bus/pci: support MMIO in PCI ioport accessors X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgSHVhd2VpLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldiA8 ZGV2LWJvdW5jZXNAZHBkay5vcmc+IE9uIEJlaGFsZiBPZiA/Pz8oPz8/PykNCj4gU2VudDogVGh1 cnNkYXksIE1hcmNoIDExLCAyMDIxIDAxOjM3DQo+IFRvOiBkYXZpZC5tYXJjaGFuZEByZWRoYXQu Y29tOyBtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNvbTsgWWlnaXQsIEZlcnJ1aCA8ZmVycnVoLnlp Z2l0QGludGVsLmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9yZzsgQnVyYWtvdiwgQW5hdG9seSA8YW5h dG9seS5idXJha292QGludGVsLmNvbT47IHh1ZW1pbmdsQG52aWRpYS5jb207IGdyaXZlQHUyNTYu bmV0Ow0KPiDosKLljY7kvJ8o5q2k5pe25q2k5Yi777yJIDxodWF3ZWkueGh3QGFsaWJhYmEtaW5j LmNvbT4NCj4gU3ViamVjdDogW2RwZGstZGV2XSBbUEFUQ0ggdjExIDIvMl0gYnVzL3BjaTogc3Vw cG9ydCBNTUlPIGluIFBDSSBpb3BvcnQgYWNjZXNzb3JzDQo+IA0KPiBXaXRoIEkvTyBCQVIsIHdl IGdldCBQSU8ocG9ydC1tYXBwZWQgSS9PKSBhZGRyZXNzLg0KPiBXaXRoIE1NSU8obWVtb3J5LW1h cHBlZCBJL08pIEJBUiwgd2UgZ2V0IG1hcHBlZCB2aXJ0dWFsIGFkZHJlc3MuDQo+IFdlIGRpc3Rp bmd1aXNoIFBJTyBhbmQgTU1JTyBieSB0aGVpciBhZGRyZXNzIHJhbmdlIGxpa2UgaG93IGtlcm5l bCBkb2VzLA0KPiBpLmUsIGFkZHJlc3MgYmVsb3cgNjRLIGlzIFBJTy4NCj4gaW9yZWFkL3dyaXRl OC8xNi8zMiBpcyBwcm92aWRlZCB0byBhY2Nlc3MgUElPL01NSU8uDQo+IEJ5IHRoZSB3YXksIGZv ciB2aXJ0aW8gb24gYXJjaCBvdGhlciB0aGFuIHg4NiwgQkFSIGZsYWcgaW5kaWNhdGVzIFBJTw0K PiBidXQgaXMgbWFwcGVkLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogaHVhd2VpIHhpZSA8aHVhd2Vp Lnhod0BhbGliYWJhLWluYy5jb20+DQo+IFJldmlld2VkLWJ5OiBNYXhpbWUgQ29xdWVsaW4gPG1h eGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiAtLS0NCj4gIGRyaXZlcnMvYnVzL3BjaS9saW51 eC9wY2kuYyAgICAgfCAgIDQgLS0NCj4gIGRyaXZlcnMvYnVzL3BjaS9saW51eC9wY2lfdWlvLmMg fCAxNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KPiAgMiBmaWxl cyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pDQo+IA0KDQoNCj4g DQo+ICsjaWYgZGVmaW5lZChSVEVfQVJDSF9YODYpDQo+ICtzdGF0aWMgaW5saW5lIHVpbnQ4X3Qg aW9yZWFkOCh2b2lkICphZGRyKQ0KPiArew0KPiArCXVpbnQ4X3QgdmFsOw0KPiArDQo+ICsJdmFs ID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpYWRkciA+PSBQSU9fTUFYID8NCj4gKwkJKih2b2xhdGls ZSB1aW50OF90ICopYWRkciA6DQo+ICsJCWluYl9wKCh1bnNpZ25lZCBsb25nKWFkZHIpOw0KPiAr DQo+ICsJcmV0dXJuIHZhbDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB1aW50MTZfdCBp b3JlYWQxNih2b2lkICphZGRyKQ0KPiArew0KPiArCXVpbnQxNl90IHZhbDsNCj4gKw0KPiArCXZh bCA9ICh1aW50NjRfdCkodWludHB0cl90KWFkZHIgPj0gUElPX01BWCA/DQo+ICsJCSoodm9sYXRp bGUgdWludDE2X3QgKilhZGRyIDoNCj4gKwkJaW53X3AoKHVuc2lnbmVkIGxvbmcpYWRkcik7DQo+ ICsNCj4gKwlyZXR1cm4gdmFsOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90 IGlvcmVhZDMyKHZvaWQgKmFkZHIpDQo+ICt7DQo+ICsJdWludDMyX3QgdmFsOw0KPiArDQo+ICsJ dmFsID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpYWRkciA+PSBQSU9fTUFYID8NCj4gKwkJKih2b2xh dGlsZSB1aW50MzJfdCAqKWFkZHIgOg0KPiArCQlpbmxfcCgodW5zaWduZWQgbG9uZylhZGRyKTsN Cj4gKw0KPiArCXJldHVybiB2YWw7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBp b3dyaXRlOCh1aW50OF90IHZhbCwgdm9pZCAqYWRkcikNCj4gK3sNCj4gKwkodWludDY0X3QpKHVp bnRwdHJfdClhZGRyID49IFBJT19NQVggPw0KPiArCQkqKHZvbGF0aWxlIHVpbnQ4X3QgKilhZGRy ID0gdmFsIDoNCj4gKwkJb3V0Yl9wKHZhbCwgKHVuc2lnbmVkIGxvbmcpYWRkcik7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpb3dyaXRlMTYodWludDE2X3QgdmFsLCB2b2lkICph ZGRyKQ0KPiArew0KPiArCSh1aW50NjRfdCkodWludHB0cl90KWFkZHIgPj0gUElPX01BWCA/DQo+ ICsJCSoodm9sYXRpbGUgdWludDE2X3QgKilhZGRyID0gdmFsIDoNCj4gKwkJb3V0d19wKHZhbCwg KHVuc2lnbmVkIGxvbmcpYWRkcik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBp b3dyaXRlMzIodWludDMyX3QgdmFsLCB2b2lkICphZGRyKQ0KPiArew0KPiArCSh1aW50NjRfdCko dWludHB0cl90KWFkZHIgPj0gUElPX01BWCA/DQo+ICsJCSoodm9sYXRpbGUgdWludDMyX3QgKilh ZGRyID0gdmFsIDoNCj4gKwkJb3V0bF9wKHZhbCwgKHVuc2lnbmVkIGxvbmcpYWRkcik7DQo+ICt9 DQo+ICsjZWxzZQ0KPiArc3RhdGljIGlubGluZSB1aW50OF90IGlvcmVhZDgodm9pZCAqYWRkcikN Cj4gK3sNCj4gKwlyZXR1cm4gKih2b2xhdGlsZSB1aW50OF90ICopYWRkcjsNCj4gK30NCj4gKw0K PiArc3RhdGljIGlubGluZSB1aW50MTZfdCBpb3JlYWQxNih2b2lkICphZGRyKQ0KPiArew0KPiAr CXJldHVybiAqKHZvbGF0aWxlIHVpbnQxNl90ICopYWRkcjsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGlubGluZSB1aW50MzJfdCBpb3JlYWQzMih2b2lkICphZGRyKQ0KPiArew0KPiArCXJldHVybiAq KHZvbGF0aWxlIHVpbnQzMl90ICopYWRkcjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2 b2lkIGlvd3JpdGU4KHVpbnQ4X3QgdmFsLCB2b2lkICphZGRyKQ0KPiArew0KPiArCSoodm9sYXRp bGUgdWludDhfdCAqKWFkZHIgPSB2YWw7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9p ZCBpb3dyaXRlMTYodWludDE2X3QgdmFsLCB2b2lkICphZGRyKQ0KPiArew0KPiArCSoodm9sYXRp bGUgdWludDE2X3QgKilhZGRyID0gdmFsOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZv aWQgaW93cml0ZTMyKHVpbnQzMl90IHZhbCwgdm9pZCAqYWRkcikNCj4gK3sNCj4gKwkqKHZvbGF0 aWxlIHVpbnQzMl90ICopYWRkciA9IHZhbDsNCj4gK30NCj4gKyNlbmRpZg0KPiArDQoNCkxpa2Ug a2VybmVsIHVzZSBtYWNybyB0byBkbyBwaW8gYW5kIG1taW8sIG1heWJlIHdlIGNhbiBhbHNvIHRv IGRvIHNvIGZvcg0KbWFraW5nIGNvZGUgY2xlYW46DQoNCmh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcv cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2xpYi9pb21h cC5jDQoNCiNkZWZpbmUgSU9fQ09ORChhZGRyLCBpc19waW8sIGlzX21taW8pIGRvIHsJCQlcDQoJ dW5zaWduZWQgbG9uZyBwb3J0ID0gKHVuc2lnbmVkIGxvbmcgX19mb3JjZSlhZGRyOwlcDQoJaWYg KHBvcnQgPj0gUElPX1JFU0VSVkVEKSB7CQkJCVwNCgkJaXNfbW1pbzsJCQkJCVwNCgl9IGVsc2Ug aWYgKHBvcnQgPiBQSU9fT0ZGU0VUKSB7CQkJCVwNCgkJcG9ydCAmPSBQSU9fTUFTSzsJCQkJXA0K CQlpc19waW87CQkJCQkJXA0KCX0gZWxzZQkJCQkJCQlcDQoJCWJhZF9pb19hY2Nlc3MocG9ydCwg I2lzX3BpbyApOwkJCVwNCn0gd2hpbGUgKDApDQoNCg0KTGlrZToNCg0KI2lmIGRlZmluZWQoUlRF X0FSQ0hfWDg2KQ0KI2RlZmluZSBJT19DT05EKGFkZHIsIGlzX3BpbywgaXNfbW1pbykgZG8geyAg ICAgICAgICAgXA0KCWlmICgodWludDY0X3QpKHVpbnRwdHJfdClhZGRyID49IFBJT19NQVgpIHsg ICBcDQoJCWlzX21taW87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KCX0gZWxzZSB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQoJCWlzX3BpbzsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQp9IHdoaWxlICgwKQ0KI2Vsc2UNCiNkZWZpbmUgSU9fQ09ORChh ZGRyLCBpc19waW8sIGlzX21taW8pIGRvIHsgICAgICAgICAgIFwNCgkJaXNfbW1pbzsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQp9IHdoaWxlICgwKQ0KI2VuZGlmDQoNCnN0YXRpYyBp bmxpbmUgdWludDhfdCBpb3JlYWQ4KHZvaWQgKmFkZHIpDQp7DQoJdWludDhfdCB2YWw7DQoNCglJ T19DT05EKGFkZHIsDQoJCXZhbCA9IGluYl9wKCh1bnNpZ25lZCBsb25nKWFkZHIpLA0KCQl2YWwg PSAqKHZvbGF0aWxlIHVpbnQ4X3QgKilhZGRyKTsNCg0KCXJldHVybiB2YWw7DQp9DQoNCnN0YXRp YyBpbmxpbmUgdWludDE2X3QgaW9yZWFkMTYodm9pZCAqYWRkcikNCnsNCgl1aW50MTZfdCB2YWw7 DQoNCglJT19DT05EKGFkZHIsDQoJCXZhbCA9IGlud19wKCh1bnNpZ25lZCBsb25nKWFkZHIpLA0K CQl2YWwgPSAqKHZvbGF0aWxlIHVpbnQxNl90ICopYWRkcik7DQoNCglyZXR1cm4gdmFsOw0KfQ0K DQpzdGF0aWMgaW5saW5lIHVpbnQzMl90IGlvcmVhZDMyKHZvaWQgKmFkZHIpDQp7DQoJdWludDMy X3QgdmFsOw0KDQoJSU9fQ09ORChhZGRyLA0KCQl2YWwgPSBpbmxfcCgodW5zaWduZWQgbG9uZylh ZGRyKSwNCgkJdmFsID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKWFkZHIpOw0KDQoJcmV0dXJuIHZh bDsNCn0NCg0Kc3RhdGljIGlubGluZSB2b2lkIGlvd3JpdGU4KHVpbnQ4X3QgdmFsLCB2b2lkICph ZGRyKQ0Kew0KCUlPX0NPTkQoYWRkciwNCgkJb3V0Yl9wKHZhbCwgKHVuc2lnbmVkIGxvbmcpYWRk ciksDQoJCSoodm9sYXRpbGUgdWludDhfdCAqKWFkZHIgPSB2YWwpOw0KfQ0KDQpzdGF0aWMgaW5s aW5lIHZvaWQgaW93cml0ZTE2KHVpbnQxNl90IHZhbCwgdm9pZCAqYWRkcikNCnsNCglJT19DT05E KGFkZHIsDQoJCW91dHdfcCh2YWwsICh1bnNpZ25lZCBsb25nKWFkZHIpLA0KCQkqKHZvbGF0aWxl IHVpbnQxNl90ICopYWRkciA9IHZhbCk7DQp9DQoNCnN0YXRpYyBpbmxpbmUgdm9pZCBpb3dyaXRl MzIodWludDMyX3QgdmFsLCB2b2lkICphZGRyKQ0Kew0KCUlPX0NPTkQoYWRkciwNCgkJb3V0bF9w KHZhbCwgKHVuc2lnbmVkIGxvbmcpYWRkciksDQoJCSoodm9sYXRpbGUgdWludDMyX3QgKilhZGRy ID0gdmFsKTsNCn0NCg0KPiAgdm9pZA0KPiAgcGNpX3Vpb19pb3BvcnRfcmVhZChzdHJ1Y3QgcnRl X3BjaV9pb3BvcnQgKnAsDQo+ICAJCSAgICB2b2lkICpkYXRhLCBzaXplX3QgbGVuLCBvZmZfdCBv ZmZzZXQpDQo+IEBAIC01MjgsMjUgKzYyMiwxMyBAQA0KPiAgCWZvciAoZCA9IGRhdGE7IGxlbiA+ IDA7IGQgKz0gc2l6ZSwgcmVnICs9IHNpemUsIGxlbiAtPSBzaXplKSB7DQo+ICAJCWlmIChsZW4g Pj0gNCkgew0KPiAgCQkJc2l6ZSA9IDQ7DQo+IC0jaWYgZGVmaW5lZChSVEVfQVJDSF9YODYpDQo+ IC0JCQkqKHVpbnQzMl90ICopZCA9IGlubChyZWcpOw0KPiAtI2Vsc2UNCj4gLQkJCSoodWludDMy X3QgKilkID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKXJlZzsNCj4gLSNlbmRpZg0KPiArCQkJKih1 aW50MzJfdCAqKWQgPSBpb3JlYWQzMigodm9pZCAqKXJlZyk7DQo+ICAJCX0gZWxzZSBpZiAobGVu ID49IDIpIHsNCj4gIAkJCXNpemUgPSAyOw0KPiAtI2lmIGRlZmluZWQoUlRFX0FSQ0hfWDg2KQ0K PiAtCQkJKih1aW50MTZfdCAqKWQgPSBpbncocmVnKTsNCj4gLSNlbHNlDQo+IC0JCQkqKHVpbnQx Nl90ICopZCA9ICoodm9sYXRpbGUgdWludDE2X3QgKilyZWc7DQo+IC0jZW5kaWYNCj4gKwkJCSoo dWludDE2X3QgKilkID0gaW9yZWFkMTYoKHZvaWQgKilyZWcpOw0KPiAgCQl9IGVsc2Ugew0KPiAg CQkJc2l6ZSA9IDE7DQo+IC0jaWYgZGVmaW5lZChSVEVfQVJDSF9YODYpDQo+IC0JCQkqZCA9IGlu YihyZWcpOw0KPiAtI2Vsc2UNCj4gLQkJCSpkID0gKih2b2xhdGlsZSB1aW50OF90ICopcmVnOw0K PiAtI2VuZGlmDQo+ICsJCQkqZCA9IGlvcmVhZDgoKHZvaWQgKilyZWcpOw0KPiAgCQl9DQo+ICAJ fQ0KPiAgfQ0KPiBAQCAtNTYyLDI1ICs2NDQsMTMgQEANCj4gIAlmb3IgKHMgPSBkYXRhOyBsZW4g PiAwOyBzICs9IHNpemUsIHJlZyArPSBzaXplLCBsZW4gLT0gc2l6ZSkgew0KPiAgCQlpZiAobGVu ID49IDQpIHsNCj4gIAkJCXNpemUgPSA0Ow0KPiAtI2lmIGRlZmluZWQoUlRFX0FSQ0hfWDg2KQ0K PiAtCQkJb3V0bF9wKCooY29uc3QgdWludDMyX3QgKilzLCByZWcpOw0KPiAtI2Vsc2UNCj4gLQkJ CSoodm9sYXRpbGUgdWludDMyX3QgKilyZWcgPSAqKGNvbnN0IHVpbnQzMl90ICopczsNCj4gLSNl bmRpZg0KPiArCQkJaW93cml0ZTMyKCooY29uc3QgdWludDMyX3QgKilzLCAodm9pZCAqKXJlZyk7 DQo+ICAJCX0gZWxzZSBpZiAobGVuID49IDIpIHsNCj4gIAkJCXNpemUgPSAyOw0KPiAtI2lmIGRl ZmluZWQoUlRFX0FSQ0hfWDg2KQ0KPiAtCQkJb3V0d19wKCooY29uc3QgdWludDE2X3QgKilzLCBy ZWcpOw0KPiAtI2Vsc2UNCj4gLQkJCSoodm9sYXRpbGUgdWludDE2X3QgKilyZWcgPSAqKGNvbnN0 IHVpbnQxNl90ICopczsNCj4gLSNlbmRpZg0KPiArCQkJaW93cml0ZTE2KCooY29uc3QgdWludDE2 X3QgKilzLCAodm9pZCAqKXJlZyk7DQo+ICAJCX0gZWxzZSB7DQo+ICAJCQlzaXplID0gMTsNCj4g LSNpZiBkZWZpbmVkKFJURV9BUkNIX1g4NikNCj4gLQkJCW91dGJfcCgqcywgcmVnKTsNCj4gLSNl bHNlDQo+IC0JCQkqKHZvbGF0aWxlIHVpbnQ4X3QgKilyZWcgPSAqczsNCj4gLSNlbmRpZg0KPiAr CQkJaW93cml0ZTgoKnMsICh2b2lkICopcmVnKTsNCj4gIAkJfQ0KPiAgCX0NCj4gIH0NCj4gLS0N Cj4gMS44LjMuMQ0KDQo=