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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DDE54CD1288 for ; Wed, 3 Apr 2024 06:46:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=svdKQfFAAKZ698ctChpnfjyovJBXt1jlSsF1aw9Bhv0=; b=UkSClWiiJNB1Yp 37dJvQdC8qgQIXBChoMew7viECZi3VgjAqyJXUNr5/SacL3J4DMC1lfmtVUjcfpV414Uc4YkWa/Pv 0FNR9RD3TOlxCmITPV7hZspEN/Cn1kx5X4pGAFWlquBHZ91FuI8bnnjOi3/SDWBzxocacfZVUDzh0 Us1pc5YIp/FZOoq/J8MMOzUc2bcSIkDijfFfe0BatuuxPbghgealvsR+n9cJjAKI/AAWmgd76nqDM QEXlnNgHuKX8lXZiffxRCEEOD79uDDL/azuWMYxfLBOB4P3G+8zrZshErIGw2lZW8ob2FG9nqfvvx 8nSwfoSUTYETTq1P+Eng==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rruO6-0000000EJIV-1RUp; Wed, 03 Apr 2024 06:46:22 +0000 Received: from mail-oa1-x34.google.com ([2001:4860:4864:20::34]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rruO2-0000000EJGh-3rjK for linux-rockchip@lists.infradead.org; Wed, 03 Apr 2024 06:46:20 +0000 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-221e6bf537dso3932306fac.1 for ; Tue, 02 Apr 2024 23:46:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712126778; x=1712731578; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=t7PxrVKW+xziJG22nruxVobi3iX95Q/TH3TNd20dcL8=; b=YniK1+FrMc+9N4JStvUB+ACMSlTdRaZa7vYjjo4ANSJbICR8ifTrGkZOpPLoHpl9k9 7S1V2UDoNw3ieF4vJBCoWFSAnl9Sov3OsFRAp+8gyb62RjnSkHB0Gmd4Zj06Buvbqy0p RrHnbFYLlukBC7dWqAmibzdXfZxCJrq3N7Pc0hHFjcWMZDipcPjOUboaZ1Wy+c0dymFY G/MOHFXOgM9UP4c3aUa7apOKYEzumdC1Gw3Sn0zx0+98kMVM2+leW1x/HCkXbeM/aFJt Eclbe3Hh/7U6q19npXsBdyhb1YQf0YOB3njUkFYLQaNQY4T6QFN6eccpL2ZEZUxn+i9A KYHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712126778; x=1712731578; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=t7PxrVKW+xziJG22nruxVobi3iX95Q/TH3TNd20dcL8=; b=eyF6yetM+aMgi8GfU4zf68fRq1fLB5vlbSoyvfpZF0sy0Rx3D0AkdR9Nr6J1Qd+H2h 5iIYVDybM+A/Q9a8xD3OrZe5HdQsNhLg/SnJH+cr/GB2slxkFNvqIABbrpChjSHXtnDg 6McGPKqyJyycMmRZ7h4lEhBswivRReY4Aj9wNfWX5QzU6UbPol/PKmTR7MmDps5Uf5L7 bHcHL3G7qr8266Caak4ZvoXkrjGtib0ZZTXrF3FoL1KD4ptQO+KZaBIqO8gcX4VsKSHU xDdheXhMKtqHdPnRwJguxHi8bhwjrCKsbC3vayaBJv8lDKGZMV+2h3Fz2BEBQLkxJUHE fZNA== X-Forwarded-Encrypted: i=1; AJvYcCUxPYJWiRseGnUPFwEk97AIhYgzBM+1aKObM4m7nFx15k74wI0iRfrbbhtnnHBJg2HD2Q85nj1qaA0hi+JLOKmbeCXXM5nM/k9vvqAMWfMZEn1X X-Gm-Message-State: AOJu0YzqiyedG7jnosjkB1uNnpD7jFKvV8bpGx3WOYVc2LTDI0KNujYP oHVp5ynE7m5FdZiKVMzOU+T+mb4O2s+DEfLug2T+7/VOgCaG1nOV/HmQSLYZjQ== X-Google-Smtp-Source: AGHT+IGpI2xtNByiryiE2cJzVu481+eI1+G8W13TvfGzP3+1XQ6iPKh97Q6OebN9sY+msv6hN6A8yg== X-Received: by 2002:a05:6871:547:b0:22e:7c64:af74 with SMTP id t7-20020a056871054700b0022e7c64af74mr2036337oal.44.1712126777521; Tue, 02 Apr 2024 23:46:17 -0700 (PDT) Received: from thinkpad ([103.28.246.48]) by smtp.gmail.com with ESMTPSA id j15-20020aa7928f000000b006ea7d877191sm11041957pfa.2.2024.04.02.23.46.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Apr 2024 23:46:17 -0700 (PDT) Date: Wed, 3 Apr 2024 12:16:10 +0530 From: Manivannan Sadhasivam To: Damien Le Moal Cc: Lorenzo Pieralisi , Kishon Vijay Abraham I , Shawn Lin , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , Heiko Stuebner , linux-pci@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Rick Wertenbroek , Wilfred Mallawa , Niklas Cassel Subject: Re: [PATCH v2 01/18] PCI: endpoint: Introduce pci_epc_function_is_valid() Message-ID: <20240403064610.GB25309@thinkpad> References: <20240330041928.1555578-1-dlemoal@kernel.org> <20240330041928.1555578-2-dlemoal@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240330041928.1555578-2-dlemoal@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240402_234619_100445_94B2D970 X-CRM114-Status: GOOD ( 19.96 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org T24gU2F0LCBNYXIgMzAsIDIwMjQgYXQgMDE6MTk6MTFQTSArMDkwMCwgRGFtaWVuIExlIE1vYWwg d3JvdGU6Cj4gSW50cm9kdWNlIHRoZSBlcGMgY29yZSBoZWxwZXIgZnVuY3Rpb24gcGNpX2VwY19m dW5jdGlvbl9pc192YWxpZCgpIHRvCj4gdmVyaWZ5IHRoYXQgYW4gZXBjIHBvaW50ZXIsIGEgcGh5 c2ljYWwgZnVuY3Rpb24gbnVtYmVyIGFuZCBhIHZpcnR1YWwKPiBmdW5jdGlvbiBudW1iZXIgYXJl IGFsbCB2YWxpZC4gVGhpcyBhdm9pZHMgcmVwZWF0aW5nIHRoZSBjb2RlIHBhdHRlcm46Cj4gCj4g aWYgKElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMp Cj4gCXJldHVybiBlcnI7Cj4gCj4gaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8 fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gCXJldHVybiBlcnI7Cj4gCj4g aW4gbWFueSBmdW5jdGlvbnMgb2YgdGhlIGVuZHBvaW50IGNvbnRyb2xsZXIgY29yZSBjb2RlLgo+ IAo+IFNpZ25lZC1vZmYtYnk6IERhbWllbiBMZSBNb2FsIDxkbGVtb2FsQGtlcm5lbC5vcmc+CgpP bmUgbml0IGJlbG93LiBXaXRoIHRoYXQgZml4ZWQsCgpSZXZpZXdlZC1ieTogTWFuaXZhbm5hbiBT YWRoYXNpdmFtIDxtYW5pdmFubmFuLnNhZGhhc2l2YW1AbGluYXJvLm9yZz4KCj4gLS0tCj4gIGRy aXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jIHwgNzkgKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNv cmUuYyBiL2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jCj4gaW5kZXggZGEzZmMw Nzk1YjBiLi43NTRhZmQxMTViYmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wY2kvZW5kcG9pbnQv cGNpLWVwYy1jb3JlLmMKPiArKysgYi9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUu Ywo+IEBAIC0xMjYsNiArMTI2LDE4IEBAIGVudW0gcGNpX2Jhcm5vIHBjaV9lcGNfZ2V0X25leHRf ZnJlZV9iYXIoY29uc3Qgc3RydWN0IHBjaV9lcGNfZmVhdHVyZXMKPiAgfQo+ICBFWFBPUlRfU1lN Qk9MX0dQTChwY2lfZXBjX2dldF9uZXh0X2ZyZWVfYmFyKTsKPiAgCj4gK3N0YXRpYyBpbmxpbmUg Ym9vbCBwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKHN0cnVjdCBwY2lfZXBjICplcGMsCj4gKwkJ CQkJICAgICB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubykKCk5vIG5lZWQgdG8gYWRkICdpbmxpbmUn IGtleXdvcmQgdG8gZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW4gYSAuYyBmaWxlLiBDb21waWxlcgp3 aWxsIGhhbmRsZSB0aGF0LgoKLSBNYW5pCgo+ICt7Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBj KSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucykKPiArCQlyZXR1cm4gZmFsc2U7Cj4g Kwo+ICsJaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8fCB2ZnVuY19ubyA+IGVw Yy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiB0 cnVlOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogcGNpX2VwY19nZXRfZmVhdHVyZXMoKSAtIGdldCB0 aGUgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IEVQQwo+ICAgKiBAZXBjOiB0aGUgZmVhdHVyZXMgc3Vw cG9ydGVkIGJ5ICp0aGlzKiBFUEMgZGV2aWNlIHdpbGwgYmUgcmV0dXJuZWQKPiBAQCAtMTQzLDEw ICsxNTUsNyBAQCBjb25zdCBzdHJ1Y3QgcGNpX2VwY19mZWF0dXJlcyAqcGNpX2VwY19nZXRfZmVh dHVyZXMoc3RydWN0IHBjaV9lcGMgKmVwYywKPiAgewo+ICAJY29uc3Qgc3RydWN0IHBjaV9lcGNf ZmVhdHVyZXMgKmVwY19mZWF0dXJlczsKPiAgCj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8 fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucykKPiAtCQlyZXR1cm4gTlVMTDsKPiAtCj4g LQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBjLT5t YXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmICghcGNpX2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMs IGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gIAlpZiAoIWVwYy0+ b3BzLT5nZXRfZmVhdHVyZXMpCj4gQEAgLTIxNiwxMCArMjI1LDcgQEAgaW50IHBjaV9lcGNfcmFp c2VfaXJxKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLAo+ICB7 Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8g Pj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmICh2 ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNb ZnVuY19ub10pKQo+ICsJaWYgKCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19u bywgdmZ1bmNfbm8pKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWlmICghZXBjLT5vcHMt PnJhaXNlX2lycSkKPiBAQCAtMjYwLDEwICsyNjYsNyBAQCBpbnQgcGNpX2VwY19tYXBfbXNpX2ly cShzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubywKPiAgewo+ICAJ aW50IHJldDsKPiAgCj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSkKPiAtCQlyZXR1cm4gLUVJ TlZBTDsKPiAtCj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5j X25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmICghcGNpX2VwY19mdW5jdGlvbl9p c192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAg Cj4gIAlpZiAoIWVwYy0+b3BzLT5tYXBfbXNpX2lycSkKPiBAQCAtMjkxLDEwICsyOTQsNyBAQCBp bnQgcGNpX2VwY19nZXRfbXNpKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZm dW5jX25vKQo+ICB7Cj4gIAlpbnQgaW50ZXJydXB0Owo+ICAKPiAtCWlmIChJU19FUlJfT1JfTlVM TChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+IC0JCXJldHVybiAwOwo+ IC0KPiAtCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBl cGMtPm1heF92ZnNbZnVuY19ub10pKQo+ICsJaWYgKCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlk KGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWlmICghZXBj LT5vcHMtPmdldF9tc2kpCj4gQEAgLTMyNywxMSArMzI3LDEwIEBAIGludCBwY2lfZXBjX3NldF9t c2koc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sIHU4IGludGVy cnVwdHMpCj4gIAlpbnQgcmV0Owo+ICAJdTggZW5jb2RlX2ludDsKPiAgCj4gLQlpZiAoSVNfRVJS X09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucyB8fAo+IC0JICAg IGludGVycnVwdHMgPCAxIHx8IGludGVycnVwdHMgPiAzMikKPiArCWlmICghcGNpX2VwY19mdW5j dGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1cm4gLUVJTlZB TDsKPiAgCj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25v ID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmIChpbnRlcnJ1cHRzIDwgMSB8fCBpbnRl cnJ1cHRzID4gMzIpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJaWYgKCFlcGMtPm9wcy0+ c2V0X21zaSkKPiBAQCAtMzU5LDEwICszNTgsNyBAQCBpbnQgcGNpX2VwY19nZXRfbXNpeChzdHJ1 Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubykKPiAgewo+ICAJaW50IGlu dGVycnVwdDsKPiAgCj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVw Yy0+bWF4X2Z1bmN0aW9ucykKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlpZiAodmZ1bmNfbm8gPiAw ICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkK PiArCWlmICghcGNpX2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25v KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlpZiAoIWVwYy0+b3BzLT5nZXRfbXNpeCkKPiBAQCAt Mzk1LDExICszOTEsMTAgQEAgaW50IHBjaV9lcGNfc2V0X21zaXgoc3RydWN0IHBjaV9lcGMgKmVw YywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sCj4gIHsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYg KElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMgfHwK PiAtCSAgICBpbnRlcnJ1cHRzIDwgMSB8fCBpbnRlcnJ1cHRzID4gMjA0OCkKPiArCWlmICghcGNp X2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8 IHZmdW5jX25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmIChpbnRlcnJ1cHRzIDwg MSB8fCBpbnRlcnJ1cHRzID4gMjA0OCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAlpZiAo IWVwYy0+b3BzLT5zZXRfbXNpeCkKPiBAQCAtNDI2LDEwICs0MjEsNyBAQCBFWFBPUlRfU1lNQk9M X0dQTChwY2lfZXBjX3NldF9tc2l4KTsKPiAgdm9pZCBwY2lfZXBjX3VubWFwX2FkZHIoc3RydWN0 IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sCj4gIAkJCXBoeXNfYWRkcl90 IHBoeXNfYWRkcikKPiAgewo+IC0JaWYgKElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+ PSBlcGMtPm1heF9mdW5jdGlvbnMpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWlmICh2ZnVuY19ubyA+ IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10p KQo+ICsJaWYgKCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNf bm8pKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpZiAoIWVwYy0+b3BzLT51bm1hcF9hZGRyKQo+IEBA IC00NTcsMTAgKzQ0OSw3IEBAIGludCBwY2lfZXBjX21hcF9hZGRyKHN0cnVjdCBwY2lfZXBjICpl cGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLAo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlm IChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+ IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1h eF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10pKQo+ICsJaWYgKCFwY2lf ZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJCXJldHVy biAtRUlOVkFMOwo+ICAKPiAgCWlmICghZXBjLT5vcHMtPm1hcF9hZGRyKQo+IEBAIC00ODcsMTIg KzQ3NiwxMSBAQCBFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBjX21hcF9hZGRyKTsKPiAgdm9pZCBw Y2lfZXBjX2NsZWFyX2JhcihzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVu Y19ubywKPiAgCQkgICAgICAgc3RydWN0IHBjaV9lcGZfYmFyICplcGZfYmFyKQo+ICB7Cj4gLQlp ZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucyB8 fAo+IC0JICAgIChlcGZfYmFyLT5iYXJubyA9PSBCQVJfNSAmJgo+IC0JICAgICBlcGZfYmFyLT5m bGFncyAmIFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfNjQpKQo+ICsJaWYgKCFwY2lfZXBjX2Z1 bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJCXJldHVybjsKPiAg Cj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBj LT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmIChlcGZfYmFyLT5iYXJubyA9PSBCQVJfNSAmJgo+ ICsJICAgIGVwZl9iYXItPmZsYWdzICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCkKPiAg CQlyZXR1cm47Cj4gIAo+ICAJaWYgKCFlcGMtPm9wcy0+Y2xlYXJfYmFyKQo+IEBAIC01MTksMTgg KzUwNywxNiBAQCBpbnQgcGNpX2VwY19zZXRfYmFyKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1 bmNfbm8sIHU4IHZmdW5jX25vLAo+ICAJaW50IHJldDsKPiAgCWludCBmbGFncyA9IGVwZl9iYXIt PmZsYWdzOwo+ICAKPiAtCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBj LT5tYXhfZnVuY3Rpb25zIHx8Cj4gLQkgICAgKGVwZl9iYXItPmJhcm5vID09IEJBUl81ICYmCj4g LQkgICAgIGZsYWdzICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCkgfHwKPiArCWlmICgh cGNpX2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoKGVwZl9iYXItPmJhcm5vID09IEJBUl81ICYmIGZs YWdzICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCkgfHwKPiAgCSAgICAoZmxhZ3MgJiBQ Q0lfQkFTRV9BRERSRVNTX1NQQUNFX0lPICYmCj4gIAkgICAgIGZsYWdzICYgUENJX0JBU0VfQURE UkVTU19JT19NQVNLKSB8fAo+ICAJICAgICh1cHBlcl8zMl9iaXRzKGVwZl9iYXItPnNpemUpICYm Cj4gIAkgICAgICEoZmxhZ3MgJiBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0KSkpCj4gIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3Zm cyB8fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gLQkJcmV0dXJuIC1FSU5W QUw7Cj4gLQo+ICAJaWYgKCFlcGMtPm9wcy0+c2V0X2JhcikKPiAgCQlyZXR1cm4gMDsKPiAgCj4g QEAgLTU1OSwxMCArNTQ1LDcgQEAgaW50IHBjaV9lcGNfd3JpdGVfaGVhZGVyKHN0cnVjdCBwY2lf ZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLAo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAK PiAtCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rp b25zKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFl cGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10pKQo+ICsJaWYg KCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJ CXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCS8qIE9ubHkgVmlydHVhbCBGdW5jdGlvbiAjMSBoYXMg ZGV2aWNlSUQgKi8KPiAtLSAKPiAyLjQ0LjAKPiAKCi0tIArgrq7grqPgrr/grrXgrqPgr43grqPg rqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgt cm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==