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 A1C70CD1288 for ; Wed, 3 Apr 2024 06:46:35 +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=tWi5/ACutKX0kSauKp/IRWQUZlkC/2tBHINiRa+3w0U=; b=3aPWxrM1OjegOx UeEsDxGIdkgezbaMrRp5ZUsMRRurbt/u1SXzHJ3kDdZL1/ecnAv/q+zW4KFPm4BqmtIJm4NjsfUb6 knkfJe3BjUcB37qfN4t+u+H7bmaRCQjKNJFhIxDg/EQRI7bKO+yu1MhLOjen+3MEIbjol86cFlWjP k6dZFYhnFLpunx6W9X1lRmHZp+TKyYhJUFnxB89uR8Ws/HikESqC8KqTHFNMAhfDlppvihqbCicZ3 Ju+jwRLiivhUXP2JgX+m63LEVXPX68v6t+5OhYsTUfXN7SYfsGql72VcTRH5DFcUDPRAfUAApjkFc UHYfJSlEcOOpifM9RSqw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rruO6-0000000EJIm-3cVq; Wed, 03 Apr 2024 06:46:23 +0000 Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rruO2-0000000EJGj-3tsy for linux-arm-kernel@lists.infradead.org; Wed, 03 Apr 2024 06:46:21 +0000 Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-221e6bf537dso3932303fac.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=j2dNJl/vSMRp5W62067Mu24y9vEQVisvhc5t6ufCJ2bX6VWgFydDRBhK2UDEpSCYoB 7gFd9+I3u5MTEbpMba0/Mc7cdkjT11B0ZdIO9ZKuleqsdeJ/OFoypI7MtSSfj2WerZt/ pJ0/MQdnTe/oL81GMSGmGZGKDbmt1QojB1dVmuj/ie8Jy3aD2eUMz/3ZHykdQwxLpbQg Lkv+3EF2yHDGYHWYUSQ5SFm4ISgfyCHyb4Uql/JEKMHT3jGH3XZ+mKkVyL0WMfflVsAn FFqNbODlpmC+tKPZxUsW6RuIN/mtG3CyK62Ww9GjkADQWbxbYNwcwPyqXARMnc65qmPd xB/Q== X-Forwarded-Encrypted: i=1; AJvYcCWbsjbWPmp7GlT87jfP80Lh/+y5/xvtbS5xiaWjFu/e4/vPJnqEslWnLF7xoiQzk1BRp6I6mlNqQCOIc21iL9ugKa3LgmmGy+VVBzCQIJ6qVJwYPek= X-Gm-Message-State: AOJu0YwXcKSw++bmBB5NEcwALKFx3vbCcqU4skdnSwH8aOWmkNLtzq71 NkSbwVyNjG2wEJh9ziw22xfw0gWNndq9HFfwbIkGrCHgYTku+iewy66OQug49IuisJn3jiaL6Ng = 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_105647_443BE69D X-CRM114-Status: GOOD ( 21.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=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 X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==