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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 86B66C43334 for ; Sat, 9 Jul 2022 16:19:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229456AbiGIQTt (ORCPT ); Sat, 9 Jul 2022 12:19:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52052 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229379AbiGIQTt (ORCPT ); Sat, 9 Jul 2022 12:19:49 -0400 Received: from sin.source.kernel.org (sin.source.kernel.org [IPv6:2604:1380:40e1:4800::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E610459B3; Sat, 9 Jul 2022 09:19:47 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id AC6E8CE0A7C; Sat, 9 Jul 2022 16:19:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 75201C3411C; Sat, 9 Jul 2022 16:19:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1657383583; bh=7mY0eYx6SsKjTuFKCj7idZ27LE4RyLoq14eNDgpJ9kw=; h=From:To:Cc:Subject:Date:From; b=FJFNw2jSMiVVtHnFX9mu6Kakh8w2Nnh/y8ftcrYPq485cWssNEv4rHXKGiaFHtdvj dNGxw4JGIjRkbMCLMvzQGLDK0E0RFeS2qptgpLznzbA58lBEv2JO7MHBP0eqnQcOnW g0TCjucbVzhS88rffeQ7pDp2q8qtZikFevPwncB9tDF9uxJTi7Y6reFUsno8PWrBlF IlfL+pkc/qMbSjyRfRSaOxxZ0rxOML8qBizAX/7c/RuI6UjVRTChoerW7zotoUQuCI jA0s6z9FABFY+7FQm20QCIgEOXRdlzCaVmm47IDAnRC5tquYh0ttttXoJ/4NCZXasu 9g7m0SDjLanpg== Received: by pali.im (Postfix) id 7062CAFA; Sat, 9 Jul 2022 18:19:40 +0200 (CEST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Thomas Petazzoni , Lorenzo Pieralisi , Rob Herring , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Bjorn Helgaas , Hajo Noerenberg Cc: linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] PCI: mvebu: Dispose INTx irqs prior to removing INTx domain Date: Sat, 9 Jul 2022 18:18:58 +0200 Message-Id: <20220709161858.15031-1-pali@kernel.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Documentation for irq_domain_remove() says that all mapping within the domain must be disposed prior to domain remove. Currently INTx irqs are not disposed in pci-mvebu.c device unbind callback which cause that kernel crashes after unloading driver and trying to read /sys/kernel/debug/irq/irqs/ or /proc/interrupts. Fixes: ec075262648f ("PCI: mvebu: Implement support for legacy INTx interrupts") Reported-by: Hajo Noerenberg Signed-off-by: Pali Rohár --- Depends on patch: https://lore.kernel.org/linux-pci/20220524122817.7199-1-pali@kernel.org/ Here is the captured kernel crash which happens without this patch: $ cat /sys/kernel/debug/irq/irqs/64 [ 301.571370] 8<--- cut here --- [ 301.574496] Unable to handle kernel paging request at virtual address 0a00002a [ 301.581736] [0a00002a] *pgd=00000000 [ 301.585323] Internal error: Oops: 80000005 [#1] SMP ARM [ 301.590560] Modules linked in: [ 301.593621] CPU: 1 PID: 4641 Comm: cat Not tainted 5.16.0-rc1+ #192 [ 301.599905] Hardware name: Marvell Armada 380/385 (Device Tree) [ 301.605836] PC is at 0xa00002a [ 301.608896] LR is at irq_debug_show+0x210/0x2d4 [ 301.613440] pc : [<0a00002a>] lr : [] psr: 200000b3 [ 301.619721] sp : c797fdd8 ip : 0000000b fp : 0a00002b [ 301.624957] r10: c0d9a364 r9 : 00000001 r8 : 00000000 [ 301.630192] r7 : c18fee18 r6 : c0da2a74 r5 : c18fee00 r4 : c66ec050 [ 301.636734] r3 : 00000001 r2 : c18fee18 r1 : 00000000 r0 : c66ec050 [ 301.643275] Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA Thumb Segment none [ 301.650689] Control: 10c5387d Table: 0790c04a DAC: 00000051 [ 301.656446] Register r0 information: slab seq_file start c66ec050 pointer offset 0 [ 301.664040] Register r1 information: NULL pointer [ 301.668755] Register r2 information: slab kmalloc-256 start c18fee00 pointer offset 24 size 256 [ 301.677480] Register r3 information: non-paged memory [ 301.682543] Register r4 information: slab seq_file start c66ec050 pointer offset 0 [ 301.690133] Register r5 information: slab kmalloc-256 start c18fee00 pointer offset 0 size 256 [ 301.698770] Register r6 information: non-slab/vmalloc memory [ 301.704442] Register r7 information: slab kmalloc-256 start c18fee00 pointer offset 24 size 256 [ 301.713165] Register r8 information: NULL pointer [ 301.717879] Register r9 information: non-paged memory [ 301.722941] Register r10 information: non-slab/vmalloc memory [ 301.728699] Register r11 information: non-paged memory [ 301.733848] Register r12 information: non-paged memory [ 301.738997] Process cat (pid: 4641, stack limit = 0xf591166e) [ 301.744756] Stack: (0xc797fdd8 to 0xc7980000) [ 301.749123] fdc0: 0000000a 830d3f3e [ 301.757321] fde0: c1004f48 c0d9a374 c7a9cc10 c66ec050 00000000 c88af900 c797fe80 7ffff000 [ 301.765518] fe00: 00400cc0 c66ec068 00000001 c02c5cb8 00000000 00000000 c66ec078 c797fe68 [ 301.773715] fe20: c1cdf6c0 c7a9cc10 ffffffea c88af900 00000010 00000000 00000000 c88af900 [ 301.781911] fe40: c1004f48 c797ff78 00001000 00004004 c03efcb8 c02c6100 00001000 00000000 [ 301.790108] fe60: bec73e04 00001000 00000000 00000000 00001000 c797fe60 00000001 00000000 [ 301.798304] fe80: c88af900 00000000 00000000 00000000 00000000 00000000 00000000 40040000 [ 301.806501] fea0: 00000000 00000000 c1004f48 830d3f3e c88af900 c02c6018 c1c7a770 bec73e04 [ 301.814697] fec0: 00001000 c797ff78 00000001 c03efd0c 00001000 c88af900 00000000 bec73e04 [ 301.822894] fee0: c1004f48 c797ff78 00000001 c029c728 c887ca20 01100cca 0000004f 0045f000 [ 301.831091] ff00: 00000254 c790c010 c790c010 00000000 00000000 00000000 c5f6117c eeece9b8 [ 301.839288] ff20: 00000000 830d3f3e 00000000 c797ffb0 c79fc000 80000007 0045f5b8 00000254 [ 301.847484] ff40: c79fc040 00000004 c887ca20 830d3f3e 00000000 c1004f48 c88af900 00000000 [ 301.855681] ff60: 00000000 c88af900 bec73e04 00001000 00000000 c029cd68 00000000 00000000 [ 301.863877] ff80: 00000000 830d3f3e 00000000 00000000 01000000 00000003 c0100284 c1b8abc0 [ 301.872074] ffa0: 00000003 c0100060 00000000 00000000 00000003 bec73e04 00001000 00000000 [ 301.880270] ffc0: 00000000 00000000 01000000 00000003 00000003 00000001 00000001 00000000 [ 301.888468] ffe0: bec73d98 bec73d88 b6f81f88 b6f81410 60000010 00000003 00000000 00000000 [ 301.896666] [] (irq_debug_show) from [] (seq_read_iter+0x1a4/0x504) [ 301.904700] [] (seq_read_iter) from [] (seq_read+0xe8/0x12c) [ 301.912117] [] (seq_read) from [] (full_proxy_read+0x54/0x70) [ 301.919623] [] (full_proxy_read) from [] (vfs_read+0xa0/0x2c8) [ 301.927214] [] (vfs_read) from [] (ksys_read+0x58/0xd0) [ 301.934195] [] (ksys_read) from [] (ret_fast_syscall+0x0/0x54) [ 301.941785] Exception stack(0xc797ffa8 to 0xc797fff0) [ 301.946849] ffa0: 00000000 00000000 00000003 bec73e04 00001000 00000000 [ 301.955045] ffc0: 00000000 00000000 01000000 00000003 00000003 00000001 00000001 00000000 [ 301.963241] ffe0: bec73d98 bec73d88 b6f81f88 b6f81410 [ 301.968304] Code: bad PC value [ 301.971365] ---[ end trace fe25fd26d042b605 ]--- [ 301.975992] Kernel panic - not syncing: Fatal exception [ 301.981229] CPU0: stopping [ 301.983946] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G D 5.16.0-rc1+ #192 [ 301.991884] Hardware name: Marvell Armada 380/385 (Device Tree) [ 301.997817] [] (unwind_backtrace) from [] (show_stack+0x10/0x14) [ 302.005587] [] (show_stack) from [] (dump_stack_lvl+0x40/0x4c) [ 302.013179] [] (dump_stack_lvl) from [] (do_handle_IPI+0xf4/0x128) [ 302.021117] [] (do_handle_IPI) from [] (ipi_handler+0x18/0x20) [ 302.028707] [] (ipi_handler) from [] (handle_percpu_devid_irq+0x78/0x124) [ 302.037256] [] (handle_percpu_devid_irq) from [] (generic_handle_domain_irq+0x44/0x88) [ 302.046938] [] (generic_handle_domain_irq) from [] (gic_handle_irq+0x74/0x88) [ 302.055839] [] (gic_handle_irq) from [] (generic_handle_arch_irq+0x34/0x44) [ 302.064564] [] (generic_handle_arch_irq) from [] (__irq_svc+0x50/0x68) [ 302.072851] Exception stack(0xc1001f00 to 0xc1001f48) [ 302.077916] 1f00: 000d6830 00000000 00000001 c0116be0 c1004f90 c1004fd4 00000001 00000000 [ 302.086114] 1f20: c1004f48 c0f5d2a8 c1009e80 00000000 00000000 c1001f50 c01076f4 c01076f8 [ 302.094309] 1f40: 60000013 ffffffff [ 302.097804] [] (__irq_svc) from [] (arch_cpu_idle+0x38/0x3c) [ 302.105223] [] (arch_cpu_idle) from [] (default_idle_call+0x1c/0x2c) [ 302.113338] [] (default_idle_call) from [] (do_idle+0x1c8/0x218) [ 302.121106] [] (do_idle) from [] (cpu_startup_entry+0x18/0x20) [ 302.128697] [] (cpu_startup_entry) from [] (start_kernel+0x650/0x694) [ 302.136901] Rebooting in 3 seconds.. --- drivers/pci/controller/pci-mvebu.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c index 31f53a019b8f..951030052358 100644 --- a/drivers/pci/controller/pci-mvebu.c +++ b/drivers/pci/controller/pci-mvebu.c @@ -1713,8 +1713,15 @@ static int mvebu_pcie_remove(struct platform_device *pdev) mvebu_writel(port, ~PCIE_INT_ALL_MASK, PCIE_INT_CAUSE_OFF); /* Remove IRQ domains. */ - if (port->intx_irq_domain) + if (port->intx_irq_domain) { + int virq, j; + for (j = 0; j < PCI_NUM_INTX; j++) { + virq = irq_find_mapping(port->intx_irq_domain, j); + if (virq > 0) + irq_dispose_mapping(virq); + } irq_domain_remove(port->intx_irq_domain); + } /* Free config space for emulated root bridge. */ pci_bridge_emul_cleanup(&port->bridge); -- 2.20.1 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 4A601C43334 for ; Sat, 9 Jul 2022 16:20:55 +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:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=qQlG5XZQQfnPFauC0J6RUkZ8WO9GZtP7z8JGsBDe7Fk=; b=ARko1Kg/cWv+ZN 0E/qRGBFjjwN2tLuCEDdwLvVDgkBmwRd8TY6UkZXfZspQSjQaVbfG2xUhTsRiL/LBO0TwUvmyUGpp 2XJgxfzKzZ5+JMXxZJAXU0L7CSpdMuZXUoDP0RIMuwvgl2RES5pgqN+CVQ/iv912qfgKtRy1R1HG1 0HNrThIeqrvK4fR3w6lnDaxH4eq3fnSer540HMP0RvAGrCQ6i4Ugcmo9smqhnFF2AyeWE9z4FiBM3 TkI3WdrJf01iuXaDfnOgvjVjYYRLOxERWZiy4xoHMFpzsD83gguXCWzqkT4CK9PrRjWv/oioq0OPv 4gqguI4YS5MApKgCtUKQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oADBP-008dir-VR; Sat, 09 Jul 2022 16:19:52 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oADBM-008di7-H6 for linux-arm-kernel@lists.infradead.org; Sat, 09 Jul 2022 16:19:50 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id 92304CE0171; Sat, 9 Jul 2022 16:19:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 75201C3411C; Sat, 9 Jul 2022 16:19:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1657383583; bh=7mY0eYx6SsKjTuFKCj7idZ27LE4RyLoq14eNDgpJ9kw=; h=From:To:Cc:Subject:Date:From; b=FJFNw2jSMiVVtHnFX9mu6Kakh8w2Nnh/y8ftcrYPq485cWssNEv4rHXKGiaFHtdvj dNGxw4JGIjRkbMCLMvzQGLDK0E0RFeS2qptgpLznzbA58lBEv2JO7MHBP0eqnQcOnW g0TCjucbVzhS88rffeQ7pDp2q8qtZikFevPwncB9tDF9uxJTi7Y6reFUsno8PWrBlF IlfL+pkc/qMbSjyRfRSaOxxZ0rxOML8qBizAX/7c/RuI6UjVRTChoerW7zotoUQuCI jA0s6z9FABFY+7FQm20QCIgEOXRdlzCaVmm47IDAnRC5tquYh0ttttXoJ/4NCZXasu 9g7m0SDjLanpg== Received: by pali.im (Postfix) id 7062CAFA; Sat, 9 Jul 2022 18:19:40 +0200 (CEST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Thomas Petazzoni , Lorenzo Pieralisi , Rob Herring , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Bjorn Helgaas , Hajo Noerenberg Cc: linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] PCI: mvebu: Dispose INTx irqs prior to removing INTx domain Date: Sat, 9 Jul 2022 18:18:58 +0200 Message-Id: <20220709161858.15031-1-pali@kernel.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220709_091948_989512_87FF6F8E X-CRM114-Status: GOOD ( 17.39 ) 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 RG9jdW1lbnRhdGlvbiBmb3IgaXJxX2RvbWFpbl9yZW1vdmUoKSBzYXlzIHRoYXQgYWxsIG1hcHBp bmcgd2l0aGluIHRoZQpkb21haW4gbXVzdCBiZSBkaXNwb3NlZCBwcmlvciB0byBkb21haW4gcmVt b3ZlLgoKQ3VycmVudGx5IElOVHggaXJxcyBhcmUgbm90IGRpc3Bvc2VkIGluIHBjaS1tdmVidS5j IGRldmljZSB1bmJpbmQgY2FsbGJhY2sKd2hpY2ggY2F1c2UgdGhhdCBrZXJuZWwgY3Jhc2hlcyBh ZnRlciB1bmxvYWRpbmcgZHJpdmVyIGFuZCB0cnlpbmcgdG8gcmVhZAovc3lzL2tlcm5lbC9kZWJ1 Zy9pcnEvaXJxcy88bnVtPiBvciAvcHJvYy9pbnRlcnJ1cHRzLgoKRml4ZXM6IGVjMDc1MjYyNjQ4 ZiAoIlBDSTogbXZlYnU6IEltcGxlbWVudCBzdXBwb3J0IGZvciBsZWdhY3kgSU5UeCBpbnRlcnJ1 cHRzIikKUmVwb3J0ZWQtYnk6IEhham8gTm9lcmVuYmVyZyA8aGFqby1saW51eC1idWd6aWxsYUBu b2VyZW5iZXJnLmRlPgpTaWduZWQtb2ZmLWJ5OiBQYWxpIFJvaMOhciA8cGFsaUBrZXJuZWwub3Jn PgotLS0KRGVwZW5kcyBvbiBwYXRjaDoKaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcGNp LzIwMjIwNTI0MTIyODE3LjcxOTktMS1wYWxpQGtlcm5lbC5vcmcvCgpIZXJlIGlzIHRoZSBjYXB0 dXJlZCBrZXJuZWwgY3Jhc2ggd2hpY2ggaGFwcGVucyB3aXRob3V0IHRoaXMgcGF0Y2g6CgokIGNh dCAvc3lzL2tlcm5lbC9kZWJ1Zy9pcnEvaXJxcy82NApbICAzMDEuNTcxMzcwXSA4PC0tLSBjdXQg aGVyZSAtLS0KWyAgMzAxLjU3NDQ5Nl0gVW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwgcGFnaW5nIHJl cXVlc3QgYXQgdmlydHVhbCBhZGRyZXNzIDBhMDAwMDJhClsgIDMwMS41ODE3MzZdIFswYTAwMDAy YV0gKnBnZD0wMDAwMDAwMApbICAzMDEuNTg1MzIzXSBJbnRlcm5hbCBlcnJvcjogT29wczogODAw MDAwMDUgWyMxXSBTTVAgQVJNClsgIDMwMS41OTA1NjBdIE1vZHVsZXMgbGlua2VkIGluOgpbICAz MDEuNTkzNjIxXSBDUFU6IDEgUElEOiA0NjQxIENvbW06IGNhdCBOb3QgdGFpbnRlZCA1LjE2LjAt cmMxKyAjMTkyClsgIDMwMS41OTk5MDVdIEhhcmR3YXJlIG5hbWU6IE1hcnZlbGwgQXJtYWRhIDM4 MC8zODUgKERldmljZSBUcmVlKQpbICAzMDEuNjA1ODM2XSBQQyBpcyBhdCAweGEwMDAwMmEKWyAg MzAxLjYwODg5Nl0gTFIgaXMgYXQgaXJxX2RlYnVnX3Nob3crMHgyMTAvMHgyZDQKWyAgMzAxLjYx MzQ0MF0gcGMgOiBbPDBhMDAwMDJhPl0gICAgbHIgOiBbPGMwMThjYTQwPl0gICAgcHNyOiAyMDAw MDBiMwpbICAzMDEuNjE5NzIxXSBzcCA6IGM3OTdmZGQ4ICBpcCA6IDAwMDAwMDBiICBmcCA6IDBh MDAwMDJiClsgIDMwMS42MjQ5NTddIHIxMDogYzBkOWEzNjQgIHI5IDogMDAwMDAwMDEgIHI4IDog MDAwMDAwMDAKWyAgMzAxLjYzMDE5Ml0gcjcgOiBjMThmZWUxOCAgcjYgOiBjMGRhMmE3NCAgcjUg OiBjMThmZWUwMCAgcjQgOiBjNjZlYzA1MApbICAzMDEuNjM2NzM0XSByMyA6IDAwMDAwMDAxICBy MiA6IGMxOGZlZTE4ICByMSA6IDAwMDAwMDAwICByMCA6IGM2NmVjMDUwClsgIDMwMS42NDMyNzVd IEZsYWdzOiBuekN2ICBJUlFzIG9mZiAgRklRcyBvbiAgTW9kZSBTVkNfMzIgIElTQSBUaHVtYiAg U2VnbWVudCBub25lClsgIDMwMS42NTA2ODldIENvbnRyb2w6IDEwYzUzODdkICBUYWJsZTogMDc5 MGMwNGEgIERBQzogMDAwMDAwNTEKWyAgMzAxLjY1NjQ0Nl0gUmVnaXN0ZXIgcjAgaW5mb3JtYXRp b246IHNsYWIgc2VxX2ZpbGUgc3RhcnQgYzY2ZWMwNTAgcG9pbnRlciBvZmZzZXQgMApbICAzMDEu NjY0MDQwXSBSZWdpc3RlciByMSBpbmZvcm1hdGlvbjogTlVMTCBwb2ludGVyClsgIDMwMS42Njg3 NTVdIFJlZ2lzdGVyIHIyIGluZm9ybWF0aW9uOiBzbGFiIGttYWxsb2MtMjU2IHN0YXJ0IGMxOGZl ZTAwIHBvaW50ZXIgb2Zmc2V0IDI0IHNpemUgMjU2ClsgIDMwMS42Nzc0ODBdIFJlZ2lzdGVyIHIz IGluZm9ybWF0aW9uOiBub24tcGFnZWQgbWVtb3J5ClsgIDMwMS42ODI1NDNdIFJlZ2lzdGVyIHI0 IGluZm9ybWF0aW9uOiBzbGFiIHNlcV9maWxlIHN0YXJ0IGM2NmVjMDUwIHBvaW50ZXIgb2Zmc2V0 IDAKWyAgMzAxLjY5MDEzM10gUmVnaXN0ZXIgcjUgaW5mb3JtYXRpb246IHNsYWIga21hbGxvYy0y NTYgc3RhcnQgYzE4ZmVlMDAgcG9pbnRlciBvZmZzZXQgMCBzaXplIDI1NgpbICAzMDEuNjk4Nzcw XSBSZWdpc3RlciByNiBpbmZvcm1hdGlvbjogbm9uLXNsYWIvdm1hbGxvYyBtZW1vcnkKWyAgMzAx LjcwNDQ0Ml0gUmVnaXN0ZXIgcjcgaW5mb3JtYXRpb246IHNsYWIga21hbGxvYy0yNTYgc3RhcnQg YzE4ZmVlMDAgcG9pbnRlciBvZmZzZXQgMjQgc2l6ZSAyNTYKWyAgMzAxLjcxMzE2NV0gUmVnaXN0 ZXIgcjggaW5mb3JtYXRpb246IE5VTEwgcG9pbnRlcgpbICAzMDEuNzE3ODc5XSBSZWdpc3RlciBy OSBpbmZvcm1hdGlvbjogbm9uLXBhZ2VkIG1lbW9yeQpbICAzMDEuNzIyOTQxXSBSZWdpc3RlciBy MTAgaW5mb3JtYXRpb246IG5vbi1zbGFiL3ZtYWxsb2MgbWVtb3J5ClsgIDMwMS43Mjg2OTldIFJl Z2lzdGVyIHIxMSBpbmZvcm1hdGlvbjogbm9uLXBhZ2VkIG1lbW9yeQpbICAzMDEuNzMzODQ4XSBS ZWdpc3RlciByMTIgaW5mb3JtYXRpb246IG5vbi1wYWdlZCBtZW1vcnkKWyAgMzAxLjczODk5N10g UHJvY2VzcyBjYXQgKHBpZDogNDY0MSwgc3RhY2sgbGltaXQgPSAweGY1OTExNjZlKQpbICAzMDEu NzQ0NzU2XSBTdGFjazogKDB4Yzc5N2ZkZDggdG8gMHhjNzk4MDAwMCkKWyAgMzAxLjc0OTEyM10g ZmRjMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMDAwMDAwMGEgODMwZDNmM2UKWyAgMzAxLjc1NzMyMV0gZmRlMDogYzEwMDRmNDggYzBkOWEz NzQgYzdhOWNjMTAgYzY2ZWMwNTAgMDAwMDAwMDAgYzg4YWY5MDAgYzc5N2ZlODAgN2ZmZmYwMDAK WyAgMzAxLjc2NTUxOF0gZmUwMDogMDA0MDBjYzAgYzY2ZWMwNjggMDAwMDAwMDEgYzAyYzVjYjgg MDAwMDAwMDAgMDAwMDAwMDAgYzY2ZWMwNzggYzc5N2ZlNjgKWyAgMzAxLjc3MzcxNV0gZmUyMDog YzFjZGY2YzAgYzdhOWNjMTAgZmZmZmZmZWEgYzg4YWY5MDAgMDAwMDAwMTAgMDAwMDAwMDAgMDAw MDAwMDAgYzg4YWY5MDAKWyAgMzAxLjc4MTkxMV0gZmU0MDogYzEwMDRmNDggYzc5N2ZmNzggMDAw MDEwMDAgMDAwMDQwMDQgYzAzZWZjYjggYzAyYzYxMDAgMDAwMDEwMDAgMDAwMDAwMDAKWyAgMzAx Ljc5MDEwOF0gZmU2MDogYmVjNzNlMDQgMDAwMDEwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDEw MDAgYzc5N2ZlNjAgMDAwMDAwMDEgMDAwMDAwMDAKWyAgMzAxLjc5ODMwNF0gZmU4MDogYzg4YWY5 MDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAg NDAwNDAwMDAKWyAgMzAxLjgwNjUwMV0gZmVhMDogMDAwMDAwMDAgMDAwMDAwMDAgYzEwMDRmNDgg ODMwZDNmM2UgYzg4YWY5MDAgYzAyYzYwMTggYzFjN2E3NzAgYmVjNzNlMDQKWyAgMzAxLjgxNDY5 N10gZmVjMDogMDAwMDEwMDAgYzc5N2ZmNzggMDAwMDAwMDEgYzAzZWZkMGMgMDAwMDEwMDAgYzg4 YWY5MDAgMDAwMDAwMDAgYmVjNzNlMDQKWyAgMzAxLjgyMjg5NF0gZmVlMDogYzEwMDRmNDggYzc5 N2ZmNzggMDAwMDAwMDEgYzAyOWM3MjggYzg4N2NhMjAgMDExMDBjY2EgMDAwMDAwNGYgMDA0NWYw MDAKWyAgMzAxLjgzMTA5MV0gZmYwMDogMDAwMDAyNTQgYzc5MGMwMTAgYzc5MGMwMTAgMDAwMDAw MDAgMDAwMDAwMDAgMDAwMDAwMDAgYzVmNjExN2MgZWVlY2U5YjgKWyAgMzAxLjgzOTI4OF0gZmYy MDogMDAwMDAwMDAgODMwZDNmM2UgMDAwMDAwMDAgYzc5N2ZmYjAgYzc5ZmMwMDAgODAwMDAwMDcg MDA0NWY1YjggMDAwMDAyNTQKWyAgMzAxLjg0NzQ4NF0gZmY0MDogYzc5ZmMwNDAgMDAwMDAwMDQg Yzg4N2NhMjAgODMwZDNmM2UgMDAwMDAwMDAgYzEwMDRmNDggYzg4YWY5MDAgMDAwMDAwMDAKWyAg MzAxLjg1NTY4MV0gZmY2MDogMDAwMDAwMDAgYzg4YWY5MDAgYmVjNzNlMDQgMDAwMDEwMDAgMDAw MDAwMDAgYzAyOWNkNjggMDAwMDAwMDAgMDAwMDAwMDAKWyAgMzAxLjg2Mzg3N10gZmY4MDogMDAw MDAwMDAgODMwZDNmM2UgMDAwMDAwMDAgMDAwMDAwMDAgMDEwMDAwMDAgMDAwMDAwMDMgYzAxMDAy ODQgYzFiOGFiYzAKWyAgMzAxLjg3MjA3NF0gZmZhMDogMDAwMDAwMDMgYzAxMDAwNjAgMDAwMDAw MDAgMDAwMDAwMDAgMDAwMDAwMDMgYmVjNzNlMDQgMDAwMDEwMDAgMDAwMDAwMDAKWyAgMzAxLjg4 MDI3MF0gZmZjMDogMDAwMDAwMDAgMDAwMDAwMDAgMDEwMDAwMDAgMDAwMDAwMDMgMDAwMDAwMDMg MDAwMDAwMDEgMDAwMDAwMDEgMDAwMDAwMDAKWyAgMzAxLjg4ODQ2OF0gZmZlMDogYmVjNzNkOTgg YmVjNzNkODggYjZmODFmODggYjZmODE0MTAgNjAwMDAwMTAgMDAwMDAwMDMgMDAwMDAwMDAgMDAw MDAwMDAKWyAgMzAxLjg5NjY2Nl0gWzxjMDE4Y2E0MD5dIChpcnFfZGVidWdfc2hvdykgZnJvbSBb PGMwMmM1Y2I4Pl0gKHNlcV9yZWFkX2l0ZXIrMHgxYTQvMHg1MDQpClsgIDMwMS45MDQ3MDBdIFs8 YzAyYzVjYjg+XSAoc2VxX3JlYWRfaXRlcikgZnJvbSBbPGMwMmM2MTAwPl0gKHNlcV9yZWFkKzB4 ZTgvMHgxMmMpClsgIDMwMS45MTIxMTddIFs8YzAyYzYxMDA+XSAoc2VxX3JlYWQpIGZyb20gWzxj MDNlZmQwYz5dIChmdWxsX3Byb3h5X3JlYWQrMHg1NC8weDcwKQpbICAzMDEuOTE5NjIzXSBbPGMw M2VmZDBjPl0gKGZ1bGxfcHJveHlfcmVhZCkgZnJvbSBbPGMwMjljNzI4Pl0gKHZmc19yZWFkKzB4 YTAvMHgyYzgpClsgIDMwMS45MjcyMTRdIFs8YzAyOWM3Mjg+XSAodmZzX3JlYWQpIGZyb20gWzxj MDI5Y2Q2OD5dIChrc3lzX3JlYWQrMHg1OC8weGQwKQpbICAzMDEuOTM0MTk1XSBbPGMwMjljZDY4 Pl0gKGtzeXNfcmVhZCkgZnJvbSBbPGMwMTAwMDYwPl0gKHJldF9mYXN0X3N5c2NhbGwrMHgwLzB4 NTQpClsgIDMwMS45NDE3ODVdIEV4Y2VwdGlvbiBzdGFjaygweGM3OTdmZmE4IHRvIDB4Yzc5N2Zm ZjApClsgIDMwMS45NDY4NDldIGZmYTA6ICAgICAgICAgICAgICAgICAgIDAwMDAwMDAwIDAwMDAw MDAwIDAwMDAwMDAzIGJlYzczZTA0IDAwMDAxMDAwIDAwMDAwMDAwClsgIDMwMS45NTUwNDVdIGZm YzA6IDAwMDAwMDAwIDAwMDAwMDAwIDAxMDAwMDAwIDAwMDAwMDAzIDAwMDAwMDAzIDAwMDAwMDAx IDAwMDAwMDAxIDAwMDAwMDAwClsgIDMwMS45NjMyNDFdIGZmZTA6IGJlYzczZDk4IGJlYzczZDg4 IGI2ZjgxZjg4IGI2ZjgxNDEwClsgIDMwMS45NjgzMDRdIENvZGU6IGJhZCBQQyB2YWx1ZQpbICAz MDEuOTcxMzY1XSAtLS1bIGVuZCB0cmFjZSBmZTI1ZmQyNmQwNDJiNjA1IF0tLS0KWyAgMzAxLjk3 NTk5Ml0gS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IEZhdGFsIGV4Y2VwdGlvbgpbICAzMDEu OTgxMjI5XSBDUFUwOiBzdG9wcGluZwpbICAzMDEuOTgzOTQ2XSBDUFU6IDAgUElEOiAwIENvbW06 IHN3YXBwZXIvMCBUYWludGVkOiBHICAgICAgRCAgICAgICAgICAgNS4xNi4wLXJjMSsgIzE5Mgpb ICAzMDEuOTkxODg0XSBIYXJkd2FyZSBuYW1lOiBNYXJ2ZWxsIEFybWFkYSAzODAvMzg1IChEZXZp Y2UgVHJlZSkKWyAgMzAxLjk5NzgxN10gWzxjMDEwZTEyMD5dICh1bndpbmRfYmFja3RyYWNlKSBm cm9tIFs8YzAxMGExNzA+XSAoc2hvd19zdGFjaysweDEwLzB4MTQpClsgIDMwMi4wMDU1ODddIFs8 YzAxMGExNzA+XSAoc2hvd19zdGFjaykgZnJvbSBbPGMwYmJmMTA4Pl0gKGR1bXBfc3RhY2tfbHZs KzB4NDAvMHg0YykKWyAgMzAyLjAxMzE3OV0gWzxjMGJiZjEwOD5dIChkdW1wX3N0YWNrX2x2bCkg ZnJvbSBbPGMwMTBjM2Y4Pl0gKGRvX2hhbmRsZV9JUEkrMHhmNC8weDEyOCkKWyAgMzAyLjAyMTEx N10gWzxjMDEwYzNmOD5dIChkb19oYW5kbGVfSVBJKSBmcm9tIFs8YzAxMGM0NDQ+XSAoaXBpX2hh bmRsZXIrMHgxOC8weDIwKQpbICAzMDIuMDI4NzA3XSBbPGMwMTBjNDQ0Pl0gKGlwaV9oYW5kbGVy KSBmcm9tIFs8YzAxODVjNWM+XSAoaGFuZGxlX3BlcmNwdV9kZXZpZF9pcnErMHg3OC8weDEyNCkK WyAgMzAyLjAzNzI1Nl0gWzxjMDE4NWM1Yz5dIChoYW5kbGVfcGVyY3B1X2RldmlkX2lycSkgZnJv bSBbPGMwMTdmZmI4Pl0gKGdlbmVyaWNfaGFuZGxlX2RvbWFpbl9pcnErMHg0NC8weDg4KQpbICAz MDIuMDQ2OTM4XSBbPGMwMTdmZmI4Pl0gKGdlbmVyaWNfaGFuZGxlX2RvbWFpbl9pcnEpIGZyb20g WzxjMDVmMDUxYz5dIChnaWNfaGFuZGxlX2lycSsweDc0LzB4ODgpClsgIDMwMi4wNTU4MzldIFs8 YzA1ZjA1MWM+XSAoZ2ljX2hhbmRsZV9pcnEpIGZyb20gWzxjMGJjN2VmOD5dIChnZW5lcmljX2hh bmRsZV9hcmNoX2lycSsweDM0LzB4NDQpClsgIDMwMi4wNjQ1NjRdIFs8YzBiYzdlZjg+XSAoZ2Vu ZXJpY19oYW5kbGVfYXJjaF9pcnEpIGZyb20gWzxjMDEwMGIxMD5dIChfX2lycV9zdmMrMHg1MC8w eDY4KQpbICAzMDIuMDcyODUxXSBFeGNlcHRpb24gc3RhY2soMHhjMTAwMWYwMCB0byAweGMxMDAx ZjQ4KQpbICAzMDIuMDc3OTE2XSAxZjAwOiAwMDBkNjgzMCAwMDAwMDAwMCAwMDAwMDAwMSBjMDEx NmJlMCBjMTAwNGY5MCBjMTAwNGZkNCAwMDAwMDAwMSAwMDAwMDAwMApbICAzMDIuMDg2MTE0XSAx ZjIwOiBjMTAwNGY0OCBjMGY1ZDJhOCBjMTAwOWU4MCAwMDAwMDAwMCAwMDAwMDAwMCBjMTAwMWY1 MCBjMDEwNzZmNCBjMDEwNzZmOApbICAzMDIuMDk0MzA5XSAxZjQwOiA2MDAwMDAxMyBmZmZmZmZm ZgpbICAzMDIuMDk3ODA0XSBbPGMwMTAwYjEwPl0gKF9faXJxX3N2YykgZnJvbSBbPGMwMTA3NmY4 Pl0gKGFyY2hfY3B1X2lkbGUrMHgzOC8weDNjKQpbICAzMDIuMTA1MjIzXSBbPGMwMTA3NmY4Pl0g KGFyY2hfY3B1X2lkbGUpIGZyb20gWzxjMGJjZjNhMD5dIChkZWZhdWx0X2lkbGVfY2FsbCsweDFj LzB4MmMpClsgIDMwMi4xMTMzMzhdIFs8YzBiY2YzYTA+XSAoZGVmYXVsdF9pZGxlX2NhbGwpIGZy b20gWzxjMDE1ZGIzND5dIChkb19pZGxlKzB4MWM4LzB4MjE4KQpbICAzMDIuMTIxMTA2XSBbPGMw MTVkYjM0Pl0gKGRvX2lkbGUpIGZyb20gWzxjMDE1ZGU0MD5dIChjcHVfc3RhcnR1cF9lbnRyeSsw eDE4LzB4MjApClsgIDMwMi4xMjg2OTddIFs8YzAxNWRlNDA+XSAoY3B1X3N0YXJ0dXBfZW50cnkp IGZyb20gWzxjMGYwMGZlYz5dIChzdGFydF9rZXJuZWwrMHg2NTAvMHg2OTQpClsgIDMwMi4xMzY5 MDFdIFJlYm9vdGluZyBpbiAzIHNlY29uZHMuLgotLS0KIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIv cGNpLW12ZWJ1LmMgfCA5ICsrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNp LW12ZWJ1LmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1tdmVidS5jCmluZGV4IDMxZjUz YTAxOWI4Zi4uOTUxMDMwMDUyMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVy L3BjaS1tdmVidS5jCisrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLW12ZWJ1LmMKQEAg LTE3MTMsOCArMTcxMywxNSBAQCBzdGF0aWMgaW50IG12ZWJ1X3BjaWVfcmVtb3ZlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCW12ZWJ1X3dyaXRlbChwb3J0LCB+UENJRV9JTlRfQUxM X01BU0ssIFBDSUVfSU5UX0NBVVNFX09GRik7CiAKIAkJLyogUmVtb3ZlIElSUSBkb21haW5zLiAq LwotCQlpZiAocG9ydC0+aW50eF9pcnFfZG9tYWluKQorCQlpZiAocG9ydC0+aW50eF9pcnFfZG9t YWluKSB7CisJCQlpbnQgdmlycSwgajsKKwkJCWZvciAoaiA9IDA7IGogPCBQQ0lfTlVNX0lOVFg7 IGorKykgeworCQkJCXZpcnEgPSBpcnFfZmluZF9tYXBwaW5nKHBvcnQtPmludHhfaXJxX2RvbWFp biwgaik7CisJCQkJaWYgKHZpcnEgPiAwKQorCQkJCQlpcnFfZGlzcG9zZV9tYXBwaW5nKHZpcnEp OworCQkJfQogCQkJaXJxX2RvbWFpbl9yZW1vdmUocG9ydC0+aW50eF9pcnFfZG9tYWluKTsKKwkJ fQogCiAJCS8qIEZyZWUgY29uZmlnIHNwYWNlIGZvciBlbXVsYXRlZCByb290IGJyaWRnZS4gKi8K IAkJcGNpX2JyaWRnZV9lbXVsX2NsZWFudXAoJnBvcnQtPmJyaWRnZSk7Ci0tIAoyLjIwLjEKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==