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 D76A4C4345F for ; Sat, 27 Apr 2024 11:37:09 +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=jDhxuqqkmmASAG0+Od9xH35RRJesoL3QaFWpr2rKdII=; b=vbGBC3+exqd921 l/jN0tuFOIfs91Fpg2XWuS0qT9GZTDYHIiB7jnPl34hjIiyMyTbp/9ZpNrzMWsR3sN4cz0f/7xYIE TJorTOZQvSZ+KaSIThcYeZxbuW2OHkFAmJFLkwfFCH8tJ7L0hEqEYiZplH5RSgjJZisOG8IPar2GA 4/wkdcFwerErby89pz8dCC4jfm2UxIFKjV6XYvybgU9fArOeoa76RXo+YEUhBXdCWiR2+37TdNFBZ AJ0mh7qTmzu9u72WUuVCIcQViVq2dCfQ1tAP3GAMgTobT7xRz1YrvpNdrYhunYGvnk+fTZtpw/Qu7 bNTdQIhf/E8DB57LPIqQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0gMV-0000000FS9r-0Mzz; Sat, 27 Apr 2024 11:36:59 +0000 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0gMQ-0000000FS96-3xMW for linux-arm-kernel@lists.infradead.org; Sat, 27 Apr 2024 11:36:56 +0000 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-6ed3cafd766so2805080b3a.0 for ; Sat, 27 Apr 2024 04:36:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714217813; x=1714822613; 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=Jp4hRN3U63+VTp/kbaxaSBNFon3bWbhJwCyaL1wC8dE=; b=d3A8laZzYxijXxthG7Aaqff5IXZQKLZXU9vXQVJx6s17LwC4nFxQofaYieUruf3mHQ AQKRMsTW+jLiivlf5TfC9OCeAFCxGRsRFCnh5+9r+EzCUPBw9lRg9UG5kXhg1b4pxgMW pCNmT7VNp5UZm3P0MIJ/Wu9VCzIXU5pcqBxOFF1XntQezuUm7927X5P/0pzNdQvVWxUT +kImBmcid215mIF5Sfanu0DCnfiojDudmW6s3/x2581BbR74TtQ4Ppf0yaZtPWHDpy7k x4lhCjxf5kYPDDS9xoyhyYR2WMtqN9P0d9qQ6u66R4ot/obq0dK0dh8jlqazjYbw7BSW g6RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714217813; x=1714822613; 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=Jp4hRN3U63+VTp/kbaxaSBNFon3bWbhJwCyaL1wC8dE=; b=bg4CneTCfM9jIoOtt+sjoRGZbwxMKEIiTLOkRNz/R9yN0wFnlhKVzYFuPnGQZdUGKT 3YJWtWkeKE+xSBnOud5gI4mjXT5GzwIe6TIU/1Q8b9LOWHpw7nb9LgPl1jftV21FLjQh +f9YQ6r884Bqxt685/RgwogcH8HKHaRMvG9wchgiu5o7oVUWqd+9g9t39tTgQoHK7GRn wBTofXL/D9UnrxHtezixHA4SQnag6q2rlokoNYb2DCoG1Pnud0qsELRJ3xFILN3PHTaB u63rVea8RP1C2f5d73Sdq+GswLWk9gWYtsq6n/f6baNLwQAkgitwF4vsZedexELQC1qF 1oSw== X-Forwarded-Encrypted: i=1; AJvYcCUML2v/6L3FR4nwemuNcF2TdunNAaFaF1xptonDy/ok63jf1NbMHLpZNG/VPnvpCBG8ZwQm0Be3ZhbPoBmSbsL8D5dCYn+V7PJUHbiQlVTYcB0vQmc= X-Gm-Message-State: AOJu0YyWOxUAZrzk3G8HG7zDG/SivGqfub7MpBnifR4cfEjFCquHNXUL a4IVrKps805/s5Hqbf5DmCha832Xs9eWq973T+VFaf/H8aLeRN0ah2327LEU+w== X-Google-Smtp-Source: AGHT+IFPz6Ruq5+jtEUhJad2ZGgPJk+uB6ynLPk+rZsXWFAqu91AklU9J738m/6o+4YI5RYMxlBsTg== X-Received: by 2002:a05:6a00:ace:b0:6e7:b3c4:43a4 with SMTP id c14-20020a056a000ace00b006e7b3c443a4mr6315088pfl.25.1714217812667; Sat, 27 Apr 2024 04:36:52 -0700 (PDT) Received: from thinkpad ([117.213.97.210]) by smtp.gmail.com with ESMTPSA id s6-20020aa78286000000b006f0aea608efsm15463745pfm.143.2024.04.27.04.36.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Apr 2024 04:36:52 -0700 (PDT) Date: Sat, 27 Apr 2024 17:06:43 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: Richard Zhu , Lucas Stach , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Philipp Zabel , Liam Girdwood , Mark Brown , Krzysztof Kozlowski , Conor Dooley , linux-pci@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, devicetree@vger.kernel.org Subject: Re: [PATCH v3 08/11] PCI: imx: Config look up table(LUT) to support MSI ITS and IOMMU for i.MX95 Message-ID: <20240427113643.GM1981@thinkpad> References: <20240402-pci2_upstream-v3-0-803414bdb430@nxp.com> <20240402-pci2_upstream-v3-8-803414bdb430@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240402-pci2_upstream-v3-8-803414bdb430@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240427_043655_096958_99169B0E X-CRM114-Status: GOOD ( 32.53 ) 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 UENJOiBpbXg2OiBBZGQgc3VwcG9ydCBmb3IgY29uZmlndXJpbmcgQkRGIHRvIFNJRCBtYXBwaW5n IGZvciBpLk1YOTUKCk9uIFR1ZSwgQXByIDAyLCAyMDI0IGF0IDEwOjMzOjQ0QU0gLTA0MDAsIEZy YW5rIExpIHdyb3RlOgo+IGkuTVg5NSBuZWVkIGNvbmZpZyBMVVQgdG8gY29udmVydCBicGYgdG8g c3RyZWFtIGlkLiBJT01NVSBhbmQgSVRTIHVzZSB0aGUKCkRpZCB5b3UgbWVhbiBCREY/IEhlcmUg YW5kIGV2ZXJ5d2hlcmUuCgo+IHNhbWUgc3RyZWFtIGlkLiBDaGVjayBtc2ktbWFwIGFuZCBzbW11 LW1hcCBhbmQgbWFrZSBzdXJlIHRoZSBzYW1lIFBDSSBicGYKPiBtYXAgdG8gdGhlIHNhbWUgc3Ry ZWFtIGlkLiBUaGVuIGNvbmZpZyBMVVQgcmVsYXRlZCByZWdpc3RlcnMuCj4gCgpUaGVzZSBEVCBw cm9wZXJ0aWVzIG5vdCBkb2N1bWVudGVkIGluIHRoZSBiaW5kaW5nLgoKPiBTaWduZWQtb2ZmLWJ5 OiBGcmFuayBMaSA8RnJhbmsuTGlAbnhwLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1pbXguYyB8IDE3NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWlteC5jIGIvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvcGNpZS1pbXguYwo+IGluZGV4IGFmMGY5NjBmMjg3NTcuLjY1M2Q4ZThlZTFh YmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1pbXguYwo+ ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaW14LmMKPiBAQCAtNTUsNiAr NTUsMjIgQEAKPiAgI2RlZmluZSBJTVg5NV9QRTBfR0VOX0NUUkxfMwkJCTB4MTA1OAo+ICAjZGVm aW5lIElNWDk1X1BDSUVfTFRTU01fRU4JCQlCSVQoMCkKPiAgCj4gKyNkZWZpbmUgSU1YOTVfUEUw X0xVVF9BQ1NDVFJMCQkJMHgxMDA4Cj4gKyNkZWZpbmUgSU1YOTVfUEVPX0xVVF9SV0EJCQlCSVQo MTYpCj4gKyNkZWZpbmUgSU1YOTVfUEUwX0xVVF9FTkxPQwkJCUdFTk1BU0soNCwgMCkKPiArCj4g KyNkZWZpbmUgSU1YOTVfUEUwX0xVVF9EQVRBMQkJCTB4MTAwYwo+ICsjZGVmaW5lIElNWDk1X1BF MF9MVVRfVkxECQkJQklUKDMxKQo+ICsjZGVmaW5lIElNWDk1X1BFMF9MVVRfREFDX0lECQkJR0VO TUFTSygxMCwgOCkKPiArI2RlZmluZSBJTVg5NV9QRTBfTFVUX1NUUkVBTV9JRAkJCUdFTk1BU0so NSwgMCkKPiArCj4gKyNkZWZpbmUgSU1YOTVfUEUwX0xVVF9EQVRBMgkJCTB4MTAxMAo+ICsjZGVm aW5lIElNWDk1X1BFMF9MVVRfUkVRSUQJCQlHRU5NQVNLKDMxLCAxNikKPiArI2RlZmluZSBJTVg5 NV9QRTBfTFVUX01BU0sJCQlHRU5NQVNLKDE1LCAwKQo+ICsKPiArI2RlZmluZSBJTVg5NV9TSURf TUFTSwkJCQlHRU5NQVNLKDUsIDApCj4gKyNkZWZpbmUgSU1YOTVfTUFYX0xVVAkJCQkzMgo+ICsK PiAgI2RlZmluZSB0b19pbXhfcGNpZSh4KQlkZXZfZ2V0X2RydmRhdGEoKHgpLT5kZXYpCj4gIAo+ ICBlbnVtIGlteF9wY2llX3ZhcmlhbnRzIHsKPiBAQCAtMjE3LDYgKzIzMywxNTkgQEAgc3RhdGlj IGludCBpbXg5NV9wY2llX2luaXRfcGh5KHN0cnVjdCBpbXhfcGNpZSAqaW14X3BjaWUpCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBpbXhfcGNpZV91cGRhdGVfbHV0KHN0cnVj dCBpbXhfcGNpZSAqaW14X3BjaWUsIGludCBpbmRleCwgdTE2IHJlcWlkLCB1MTYgbWFzaywgdTgg c2lkKQo+ICt7Cj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gaW14X3BjaWUtPnBjaTsKPiArCXN0 cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Owo+ICsJdTMyIGRhdGExLCBkYXRhMjsKPiArCj4g KwlpZiAoc2lkID49IDY0KSB7Cj4gKwkJZGV2X2VycihkZXYsICJUb28gYmlnIHN0cmVhbSBpZDog JWRcbiIsIHNpZCk7CgonSW52YWxpZCBTSUQgZm9yIGluZGV4ICglZCk6ICVkXG4nLCBpbmRleCwg c2lkCgo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCWRhdGExID0gRklFTERfUFJF UChJTVg5NV9QRTBfTFVUX0RBQ19JRCwgMCk7Cj4gKwlkYXRhMSB8PSBGSUVMRF9QUkVQKElNWDk1 X1BFMF9MVVRfU1RSRUFNX0lELCBzaWQpOwo+ICsJZGF0YTEgfD0gSU1YOTVfUEUwX0xVVF9WTEQ7 Cj4gKwo+ICsJcmVnbWFwX3dyaXRlKGlteF9wY2llLT5pb211eGNfZ3ByLCBJTVg5NV9QRTBfTFVU X0RBVEExLCBkYXRhMSk7Cj4gKwo+ICsJZGF0YTIgPSBtYXNrOwo+ICsJZGF0YTIgfD0gRklFTERf UFJFUChJTVg5NV9QRTBfTFVUX1JFUUlELCByZXFpZCk7Cj4gKwo+ICsJcmVnbWFwX3dyaXRlKGlt eF9wY2llLT5pb211eGNfZ3ByLCBJTVg5NV9QRTBfTFVUX0RBVEEyLCBkYXRhMik7Cj4gKwo+ICsJ cmVnbWFwX3dyaXRlKGlteF9wY2llLT5pb211eGNfZ3ByLCBJTVg5NV9QRTBfTFVUX0FDU0NUUkws IGluZGV4KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RydWN0IGlteF9vZl9tYXAg ewoKaW14X2lvbW11X21hcAoKPiArCXUzMiBiZGY7Cj4gKwl1MzIgcGhhbmRsZTsKPiArCXUzMiBz aWQ7Cj4gKwl1MzIgc2lkX2xlbjsKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgaW14X2NoZWNrX21z aV9hbmRfc21tbXUoc3RydWN0IGlteF9wY2llICppbXhfcGNpZSwKPiArCQkJCSAgIHN0cnVjdCBp bXhfb2ZfbWFwICptc2lfbWFwLCB1MzIgbXNpX3NpemUsIHUzMiBtc2lfbWFwX21hc2ssCj4gKwkJ CQkgICBzdHJ1Y3QgaW14X29mX21hcCAqc21tdV9tYXAsIHUzMiBzbW11X3NpemUsIHUzMiBzbW11 X21hcF9tYXNrKQo+ICt7Cj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gaW14X3BjaWUtPnBjaTsK PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Owo+ICsJaW50IGk7Cj4gKwoKCWlmICgh bXNpX21hcCB8fCAhc21tdV9tYXApCgkJcmV0dXJuIDA7Cgo+ICsJaWYgKG1zaV9tYXAgJiYgc21t dV9tYXApIHsKPiArCQlpZiAobXNpX3NpemUgIT0gc21tdV9zaXplKQo+ICsJCQlyZXR1cm4gLUVJ TlZBTDsKPiArCQlpZiAobXNpX21hcF9tYXNrICE9IHNtbXVfbWFwX21hc2spCj4gKwkJCXJldHVy biAtRUlOVkFMOwoKCWlmIChtc2lfc2l6ZSAhPSBzbW11X3NpemUgfHwgbXNpX21hcF9tYXNrICE9 IHNtbXVfbWFwX21hc2spCgkJcmV0dXJuIC1FSU5WQUw7Cgo+ICsKPiArCQlmb3IgKGkgPSAwOyBp IDwgbXNpX3NpemUgLyBzaXplb2YoKm1zaV9tYXApOyBpKyspIHsKPiArCQkJaWYgKG1zaV9tYXAt PmJkZiAhPSBzbW11X21hcC0+YmRmKSB7Cj4gKwkJCQlkZXZfZXJyKGRldiwgImJkZiBzZXR0aW5n IGlzIG5vdCBtYXRjaFxuIik7CgonQkRGIG1pc21hdGNoIGJldHdlZW4gbXNpLW1hcCBhbmQgaW9t bXUtbWFwJwoKPiArCQkJCXJldHVybiAtRUlOVkFMOwo+ICsJCQl9Cj4gKwkJCWlmICgobXNpX21h cC0+c2lkICYgSU1YOTVfU0lEX01BU0spICE9IHNtbXVfbWFwLT5zaWQpIHsKPiArCQkJCWRldl9l cnIoZGV2LCAic2lkIHNldHRpbmcgaXMgbm90IG1hdGNoXG4iKTsKCidTSUQgbWlzbWF0Y2ggYmV0 d2VlbiBtc2ktbWFwIGFuZCBpb21tdS1tYXAnCgo+ICsJCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJ CX0KPiArCQkJaWYgKChtc2lfbWFwLT5zaWRfbGVuICYgSU1YOTVfU0lEX01BU0spICE9IHNtbXVf bWFwLT5zaWRfbGVuKSB7Cj4gKwkJCQlkZXZfZXJyKGRldiwgInNpZF9sZW4gc2V0dGluZyBpcyBu b3QgbWF0Y2hcbiIpOwoKJ1NJRCBsZW5ndGggIG1pc21hdGNoIGJldHdlZW4gbXNpLW1hcCBhbmQg aW9tbXUtbWFwJwoKPiArCQkJCXJldHVybiAtRUlOVkFMOwo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBTaW1wbGUgc3RhdGljIGNvbmZp ZyBsdXQgYWNjb3JkaW5nIHRvIGR0cyBzZXR0aW5ncyBEQUMgaW5kZXggYW5kIHN0cmVhbSBJRCB1 c2VkIGFzIGEgbWF0Y2ggcmVzdWx0Cj4gKyAqIG9mIExVVCBwcmUtYWxsb2NhdGVkIGFuZCB1c2Vk IGJ5IFBDSWVzLgo+ICsgKgoKUGxlYXNlIHJld29yZCB0aGUgYWJvdmUgc2VudGVuY2UuCgo+ICsg KiBDdXJyZW50bHkgc3RyZWFtIElEIGZyb20gMzItNjQgZm9yIFBDSWUuCj4gKyAqIDMyLTQwOiBm aXJzdCBQQ0kgYnVzLgo+ICsgKiA0MC00ODogc2Vjb25kIFBDSSBidXMuCgpJIGJlbGlldmUgdGhp cyBpcyBhbiBTb0Mgc3BlY2lmaWMgaW5mby4gU28gYmV0dGVyIG5vdCBhZGQgaXQgaGVyZS4gSXQg YmVsb25ncyB0bwpEVC4KCj4gKyAqCj4gKyAqIERBQ19JRCBpcyBpbmRleCBvZiBUUkRDLkRBQyBp bmRleCwgc3RhcnQgZnJvbSAyIGF0IGlNWDk1Lgo+ICsgKiBJVFMgW3BjaSgyYml0KTogc3RyZWFt aWQoNmJpdHMpXQo+ICsgKglwY2kgMCBpcyAwCj4gKyAqCXBjaSAxIGlzIDMKPiArICovCj4gK3N0 YXRpYyBpbnQgaW14X3BjaWVfY29uZmlnX3NpZChzdHJ1Y3QgaW14X3BjaWUgKmlteF9wY2llKQo+ ICt7Cj4gKwlzdHJ1Y3QgaW14X29mX21hcCAqbXNpX21hcCA9IE5VTEwsICpzbW11X21hcCA9IE5V TEwsICpjdXI7Cj4gKwlpbnQgaSwgaiwgbHV0X2luZGV4LCBucl9tYXAsIG1zaV9zaXplID0gMCwg c21tdV9zaXplID0gMDsKPiArCXUzMiBtc2lfbWFwX21hc2sgPSAweGZmZmYsIHNtbXVfbWFwX21h c2sgPSAweGZmZmY7Cj4gKwlzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gaW14X3BjaWUtPnBjaTsKPiAr CXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Owo+ICsJdTMyIG1hc2s7Cj4gKwlpbnQgc2l6 ZTsKPiArCj4gKwlvZl9nZXRfcHJvcGVydHkoZGV2LT5vZl9ub2RlLCAibXNpLW1hcCIsICZtc2lf c2l6ZSk7Cj4gKwlpZiAobXNpX3NpemUpIHsKCllvdSBtZW50aW9uZWQgaW4gdGhlIGNvbW1pdCBt ZXNzYWdlIHRoYXQgbXNpLW1hcCBhbmQgaW9tbXUtbWFwIG5lZWRzIHRvIGJlIHRoZQpzYW1lIGZv ciB0aGlzIFNvQy4gQnV0IGhlcmUgeW91IGFyZSBqdXN0IGlnbm9yaW5nIHRoZSBhYnNlbmNlIG9m ICdtc2ktbWFwJwpwcm9wZXJ0eS4KCj4gKwkJbXNpX21hcCA9IGRldm1fa3phbGxvYyhkZXYsIG1z aV9zaXplLCBHRlBfS0VSTkVMKTsKPiArCQlpZiAoIW1zaV9tYXApCj4gKwkJCXJldHVybiAtRU5P TUVNOwo+ICsKPiArCQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzJfYXJyYXkoZGV2LT5vZl9ub2Rl LCAibXNpLW1hcCIsICh1MzIgKiltc2lfbWFwLAo+ICsJCQkJCSAgICAgICBtc2lfc2l6ZSAvIHNp emVvZih1MzIpKSkKPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJCW9mX3Byb3BlcnR5X3Jl YWRfdTMyKGRldi0+b2Zfbm9kZSwgIm1zaS1tYXAtbWFzayIsICZtc2lfbWFwX21hc2spOwo+ICsJ fQo+ICsKPiArCWN1ciA9IG1zaV9tYXA7Cj4gKwlzaXplID0gbXNpX3NpemU7Cj4gKwltYXNrID0g bXNpX21hcF9tYXNrOwo+ICsKPiArCW9mX2dldF9wcm9wZXJ0eShkZXYtPm9mX25vZGUsICJpb21t dS1tYXAiLCAmc21tdV9zaXplKTsKClNhbWUgY29tbWVudCBhcyBhYm92ZS4KCj4gKwlpZiAoc21t dV9zaXplKSB7Cj4gKwkJc21tdV9tYXAgPSBkZXZtX2t6YWxsb2MoZGV2LCBzbW11X3NpemUsIEdG UF9LRVJORUwpOwo+ICsJCWlmICghc21tdV9tYXApCj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ICsK PiArCQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzJfYXJyYXkoZGV2LT5vZl9ub2RlLCAiaW9tbXUt bWFwIiwgKHUzMiAqKXNtbXVfbWFwLAo+ICsJCQkJCSAgICAgICBzbW11X3NpemUgLyBzaXplb2Yo dTMyKSkpCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCQlvZl9wcm9wZXJ0eV9yZWFkX3Uz MihkZXYtPm9mX25vZGUsICJpb21tdV9tYXBfbWFzayIsICZzbW11X21hcF9tYXNrKTsKPiArCX0K PiArCj4gKwlpZiAoaW14X2NoZWNrX21zaV9hbmRfc21tbXUoaW14X3BjaWUsIG1zaV9tYXAsIG1z aV9zaXplLCBtc2lfbWFwX21hc2ssCj4gKwkJCQkgICAgIHNtbXVfbWFwLCBzbW11X3NpemUsIHNt bXVfbWFwX21hc2spKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKCkhtbSwgc28geW91IHdhbnQg dG8gY29udGludWUgZXZlbiBpZiB0aGUgJ21zaS1tYXAnIGFuZCAnaW9tbXUtbWFwJyBwcm9wZXJ0 aWVzCmRvbid0IGV4aXN0IGkuZS4sIGZvciBvbGQgcGxhdGZvcm1zPwoKPiArCWlmICghY3VyKSB7 Cj4gKwkJY3VyID0gc21tdV9tYXA7Cj4gKwkJc2l6ZSA9IHNtbXVfc2l6ZTsKPiArCQltYXNrID0g c21tdV9tYXBfbWFzazsKPiArCX0KPiArCj4gKwlucl9tYXAgPSBzaXplIC8gKHNpemVvZigqY3Vy KSk7Cj4gKwo+ICsJbHV0X2luZGV4ID0gMDsKCkp1c3QgaW5pdGlhbGl6ZSBpdCB3aGlsZSBkZWZp bmluZyBpdHNlbGYuCgo+ICsJZm9yIChpID0gMDsgaSA8IG5yX21hcDsgaSsrKSB7Cj4gKwkJZm9y IChqID0gMDsgaiA8IGN1ci0+c2lkX2xlbjsgaisrKSB7Cj4gKwkJCWlteF9wY2llX3VwZGF0ZV9s dXQoaW14X3BjaWUsIGx1dF9pbmRleCwgY3VyLT5iZGYgKyBqLCBtYXNrLAo+ICsJCQkJCSAgICAo Y3VyLT5zaWQgKyBqKSAmIElNWDk1X1NJRF9NQVNLKTsKPiArCQkJbHV0X2luZGV4Kys7Cj4gKwkJ fQo+ICsJCWN1cisrOwo+ICsKPiArCQlpZiAobHV0X2luZGV4ID49IElNWDk1X01BWF9MVVQpIHsK PiArCQkJZGV2X2VycihkZXYsICJpdHMtbWFwL2lvbW11LW1hcCBleGNlZWQgSFcgbGltaWF0aW9u XG4iKTsKCidUb28gbWFueSBtc2ktbWFwL2lvbW11LW1hcCBlbnRyaWVzJwoKQnV0IEkgdGhpbmsg eW91IGNhbiBqdXN0IGNvbnRpbnVlIHRvIHVzZSB0aGUgYWxsb3dlZCBlbnRyaWVzLgoKPiArCQkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWRldm1fa2ZyZWUoZGV2LCBzbW11 X21hcCk7Cj4gKwlkZXZtX2tmcmVlKGRldiwgbXNpX21hcCk7CgpQbGVhc2UgZG9uJ3QgZXhwbGlj aXRseSBmcmVlIHRoZSBkZXZtXyBtYW5hZ2VkIHJlc291cmNlcyB1bmxlc3MgcmVhbGx5IG5lZWRl ZC4KRWxzZSBkb24ndCB1c2UgZGV2bV8gYXQgYWxsLgoKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiAgc3RhdGljIHZvaWQgaW14X3BjaWVfY29uZmlndXJlX3R5cGUoc3RydWN0IGlteF9wY2ll ICppbXhfcGNpZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGlteF9wY2llX2RydmRhdGEgKmRydmRh dGEgPSBpbXhfcGNpZS0+ZHJ2ZGF0YTsKPiBAQCAtOTUwLDYgKzExMTksMTIgQEAgc3RhdGljIGlu dCBpbXhfcGNpZV9ob3N0X2luaXQoc3RydWN0IGR3X3BjaWVfcnAgKnBwKQo+ICAJCWdvdG8gZXJy X3BoeV9vZmY7Cj4gIAl9Cj4gIAo+ICsJcmV0ID0gaW14X3BjaWVfY29uZmlnX3NpZChpbXhfcGNp ZSk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNvbmZp ZyBzaWQ6JWRcbiIsIHJldCk7CgonRmFpbGVkIHRvIGNvbmZpZyBCREYgdG8gU0lEIG1hcHBpbmc6 ICVkXG4nCgotIE1hbmkKCi0tIArgrq7grqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+ 4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==