From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 890EF606A31B for ; Thu, 22 Oct 2026 07:45:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=uurimsmR; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=sjUxHJpS DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date: Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=HDXHwat4zLpbZennBEg7uZauJYVMECCPqpPno/TLnRE=; b=uurimsmRkHzL6Q0TcD3VQ6uolk EmhGCw60OivaPyNzNx8TUAV7qIJRbT/UFp+kCRNLt+6hY42VZWCVL1fVyq0aU0YUsIKf3yWi2rZvm KITC0OQNH6Im7x649xcCh2BTIms6PokKpXRWXUgZBH/c5C6rwsOQmeWzilXqxCsqWm0FA74mWsbYR 6UBgUIqHGk3ab576HLUG6IaLpxHDDimaVIy0oJscHmnBru05G7ti0UnlxHQ08mJtxsYjtdapbMcPS ep8V3gcHTN/fRdbHwKtR5I8xJchbP+YkilpAIDnzSJPOFGd6e7oEum6Cjip3C1O5Gvwp6jqgRXlFP pv4xP6Yw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJnU9-0000000Dace-0uKe; Thu, 22 Oct 2026 07:45:13 +0000 Received: from mail-pj2-x0a.google.com ([2607:f8b0:4864:39::a]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJnU4-0000000Daaz-46Lc for kexec@lists.infradead.org; Thu, 22 Oct 2026 07:45:10 +0000 Received: by mail-pj2-x0a.google.com with SMTP id 98e67ed59e1d1-3ac144119e4so751852a91.0 for ; Thu, 22 Oct 2026 00:45:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792655108; x=1793259908; darn=lists.infradead.org; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to :content-type; bh=HDXHwat4zLpbZennBEg7uZauJYVMECCPqpPno/TLnRE=; b=sjUxHJpSA3mI6smHrfY24HuKW/hjm060HnpLLz0J6BF63PvljYtEt3DaB0SmTvuiG7 idG6V2Hd5irMkkDIF0mfNdP/lg+JEcgLOpLp4fe9PfgNxdjuyyAigSEuy6D9aGBjMs8l ii6ALoPqGuzkrNtzgxPmk8ega01C1f92HWf1hz1XuFhwUuUa4CZDBqgfA9aNgY7gUqSX 5feSC2knT6vhwm/hSIIat7B/4bRT9wNmuqsIfp9CzCVzw/NhrffA+Jhj7Hrv+6RoXZFT YuxYsXLWXXoFRKBkw/AyhR1FlnaKWqwmZw2OaBFUXPP4qAhzYG+4TskwKSQvQUlA/5tc Ak1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792655108; x=1793259908; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=HDXHwat4zLpbZennBEg7uZauJYVMECCPqpPno/TLnRE=; b=BU8enwejZM7PzV5bZ1KLa9nhrgIE8o28Rb7RTJNXldy2mps+KEV/6vObbnuCiDXhWe zzSLOu8Zrl+6PTRpzA9CqMP3w4zoZQ9dFfa7+FRjGKMz15cQ1gibEJJY0n2TdSZBe/0Y BUlIW3nCNqzGE5OSLnpleBdonqZyFONzEYqhbjzzO4dzo9VS4iBYctesShWkrVVOYgqE 9ljFvhdLwPxqDcm0JnMKj394WsMdIkaZs5MEvexzaftb29Tb8xF2qszJHNc1dQz3JPXz IZgWqtDLrBFZc4/WhI4GFdL1I8kJOO5lorSE5HjFWnbHxJOFc3GvyzCHFJQblrJ+hS5u x/Kw== X-Forwarded-Encrypted: i=1; AKwUvByi1S9uBOpROhzMIqn5LiIO3R0VSOarlyH/+oxT2FkCHJsluUA35/H5Kf3ZU3ENm/WiUBIKDw==@lists.infradead.org X-Gm-Message-State: AFq9FYJMIliAgAD8fs5qcueD0zCc7w2a1HnAmhkJj6I3zHQJPh5Yklt6 k4KLquMfLjFyvAJZzeNq0jaeu23sgQX8uT/VxU/GFvpt4dzcfFo06McKjIC8ueLycCw81g== X-Gm-Gg: AYBFou0DRgk7l6vGD3UMDny7QSqVUrJ37PGBanjAD7Uw+6r9baOJcPmC+M9QvoQVsY6 QnL6Z6TSBLDRy7yJkowqtL+3kBqEhL9yPg6OwXHYrIing1BRStm32y26esff62v7qCXy/M8K58G XbPWvI41XOKkQX6DmLYwGX2Vr5uj6+3zgz3kymgwDj65CiE8o12SctQa7dkCSiR0ytXtrVzfnOb mm+OKc0reSb0av5P4hL6mGZIRBW2kacIMMtDnUpiNb2y6EwI9XVyael5Am97dSBo2zNtqCe+Nqj Xr7NStK+OxtW0jQoOInNvg3NgFAEesRLVs0qk/jolH7OGP2BC4LTYV4SzT4qt8Vy+2oNq2Sh09h okNFysvs4slNyJEffCl0yoMUg+96HevMe9nUS5BJ1BkclsCpzN0d+s/Sd41ALb1DR0noHj8ujrS bJ2Er0i5Zw3909B0g4yZGh/Dq9iMiJikZJWcX8B3NWV0ZtMuKv35/i/HS9NljZV658zJQo6T09F eUE/cduXMCrVuTyeIzxjbOIFv1ia/h6H4ZuXGXjBHw7urc+XTEqgP35nTdadgk= X-Received: by 2002:a17:90b:5870:b0:3ab:5758:3766 with SMTP id 98e67ed59e1d1-3ad8707700dmr3724932a91.51.1792655107849; Thu, 22 Oct 2026 00:45:07 -0700 (PDT) Received: from [10.125.112.22] ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3ada49366fdsm2945920a91.14.2026.10.22.00.44.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 22 Oct 2026 00:45:06 -0700 (PDT) Message-ID: <098ff899-81b9-4ccc-a143-1e324446258f@gmail.com> Date: Thu, 22 Oct 2026 15:44:48 +0800 X-Archived-By: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v9 3/8] crash_core: serialize crash header preparation against hotplug To: Jinjie Ruan Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev, robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com References: <20261021083011.2170525-1-chenwandun1@gmail.com> <20261021083011.2170525-4-chenwandun1@gmail.com> <12e4e687-1ff0-41b2-bdf8-7f48b29e1f2f@huawei.com> <31d63208-3ef2-420f-a0c2-d9d6d49c5e21@huawei.com> Content-Language: en-US From: Wandun In-Reply-To: <31d63208-3ef2-420f-a0c2-d9d6d49c5e21@huawei.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261022_004509_055188_C08AEFC0 X-CRM114-Status: GOOD ( 25.05 ) X-Spam-Score: -1.8 (-) X-BeenThere: kexec@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "kexec" X-Spam-Status: No, score=-14.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 On 10/22/26 10:00, Jinjie Ruan wrote: > > > 在 2026/10/21 17:48, Wandun 写道: >> >> >> On 10/21/26 17:13, Jinjie Ruan wrote: >>> >>> >>> 在 2026/10/21 16:30, Wandun Chen 写道: >>>> From: Wandun Chen >>>> >>>> crash_prepare_headers() counts memory ranges before populating the >>>> allocated crash_mem array. The weak implementation used by ARM64, >>>> RISC-V and LoongArch walks memblock.memory, while x86 performs the same >>>> two-pass operation over system RAM resources. Concurrent memory hotplug >>>> can change range source between the two walks and make the populate >>>> pass overflow cmem->ranges. >>>> >>>> Take device_hotplug_lock when preparing crash headers during >>>> kexec_file_load(). The x86/riscv memory hotplug path already takes >>>> device_hotplug_lock, so call __crash_prepare_headers() directly >>>> to avoid recursive locking. >>>> >>>> Sashiko reported this issue in [1]. >>>> >>>> Fixes: 3751e728cef2 ("arm64: kexec_file: add crash dump support") >>>> Fixes: 1bcca8620a91 ("LoongArch: Add crash dump support for kexec_file") >>>> Fixes: 8acea455fafa ("RISC-V: Support for kexec_file on panic") >>>> Fixes: dd5f726076cc ("kexec: support for kexec on panic using new system call") >>>> Signed-off-by: Wandun Chen >>>> Link: https://sashiko.dev/#/message/20260806101002.1F84E1F000E9@smtp.kernel.org [1] >>>> Acked-by: Baoquan He >>>> --- >>>> arch/riscv/kernel/crash.c | 2 +- >>>> arch/x86/kernel/crash.c | 2 +- >>>> include/linux/crash_core.h | 2 ++ >>>> kernel/crash_core.c | 17 +++++++++++++++-- >>>> 4 files changed, 19 insertions(+), 4 deletions(-) >>>> >>>> diff --git a/arch/riscv/kernel/crash.c b/arch/riscv/kernel/crash.c >>>> index fe5a4b306aae..ac8df2edf2a7 100644 >>>> --- a/arch/riscv/kernel/crash.c >>>> +++ b/arch/riscv/kernel/crash.c >>>> @@ -70,7 +70,7 @@ void arch_crash_handle_hotplug_event(struct kimage *image, void *arg) >>>> * Create the new elfcorehdr reflecting the changes to CPU and/or >>>> * memory resources. >>>> */ >>>> - if (crash_prepare_headers(true, &elfbuf, &elfsz, NULL)) { >>>> + if (__crash_prepare_headers(true, &elfbuf, &elfsz, NULL)) { >>>> pr_err("unable to create new elfcorehdr"); >>>> goto out; >>>> } >>>> diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c >>>> index e6f23933a6df..bef008a0cb22 100644 >>>> --- a/arch/x86/kernel/crash.c >>>> +++ b/arch/x86/kernel/crash.c >>>> @@ -465,7 +465,7 @@ void arch_crash_handle_hotplug_event(struct kimage *image, void *arg) >>>> * Create the new elfcorehdr reflecting the changes to CPU and/or >>>> * memory resources. >>>> */ >>>> - if (crash_prepare_headers(IS_ENABLED(CONFIG_X86_64), &elfbuf, &elfsz, NULL)) { >>>> + if (__crash_prepare_headers(IS_ENABLED(CONFIG_X86_64), &elfbuf, &elfsz, NULL)) { >>>> pr_err("unable to create new elfcorehdr"); >>>> goto out; >>>> } >>>> diff --git a/include/linux/crash_core.h b/include/linux/crash_core.h >>>> index bc087124cd78..28e7a81cf263 100644 >>>> --- a/include/linux/crash_core.h >>>> +++ b/include/linux/crash_core.h >>>> @@ -61,6 +61,8 @@ extern int crash_prepare_elf64_headers(struct crash_mem *mem, int need_kernel_ma >>>> void **addr, unsigned long *sz); >>>> extern int crash_prepare_headers(int need_kernel_map, void **addr, >>>> unsigned long *sz, unsigned long *nr_mem_ranges); >>>> +int __crash_prepare_headers(int need_kernel_map, void **addr, unsigned long *sz, >>>> + unsigned long *nr_mem_ranges); >>>> extern int crash_exclude_core_ranges(struct crash_mem **cmem); >>>> >>>> struct kimage; >>>> diff --git a/kernel/crash_core.c b/kernel/crash_core.c >>>> index faa0f22dbb41..8a861a946e26 100644 >>>> --- a/kernel/crash_core.c >>>> +++ b/kernel/crash_core.c >>>> @@ -16,6 +16,7 @@ >>>> #include >>>> #include >>>> #include >>>> +#include >>>> #include >>>> #include >>>> #include >>>> @@ -344,8 +345,8 @@ int crash_exclude_core_ranges(struct crash_mem **cmem) >>>> return 0; >>>> } >>>> >>>> -int crash_prepare_headers(int need_kernel_map, void **addr, unsigned long *sz, >>>> - unsigned long *nr_mem_ranges) >>>> +int __crash_prepare_headers(int need_kernel_map, void **addr, unsigned long *sz, >>>> + unsigned long *nr_mem_ranges) >>>> { >>>> unsigned int max_nr_ranges; >>>> struct crash_mem *cmem; >>>> @@ -382,6 +383,18 @@ int crash_prepare_headers(int need_kernel_map, void **addr, unsigned long *sz, >>>> return ret; >>>> } >>>> >>>> +int crash_prepare_headers(int need_kernel_map, void **addr, unsigned long *sz, >>>> + unsigned long *nr_mem_ranges) >>>> +{ >>>> + int ret; >>>> + >>>> + lock_device_hotplug(); >>>> + ret = __crash_prepare_headers(need_kernel_map, addr, sz, nr_mem_ranges); >>>> + unlock_device_hotplug(); >>> >>> I think this patch conflicts with my changes and would also conflict >>> with the implementation of arm64 crash hotplug. >>> >>> https://lore.kernel.org/all/20260921090450.807575-15-ruanjinjie@huawei.com/ >>> >> Have these patches already been merged? My current work is based on the latest >> linux-next. If they have already been merged into the maintainer's branch, >> please let me know, I will update my tree and rebase/re-adapt my changes accordingly. >> >> >> Also, regarding the changes in kernel/crash_core.c: it looks like we modified >> the same spot, the change is not wrong, is that right? > > Hi Wandun, > > However, I think someone should have informed me in advance; otherwise, > doing duplicate fix work is pointless. > > I see that part of your patch series modifies code I previously changed, > but I was not CC'd. Hi Jinjie, Sorry for not CC'ing you. I keep the per-patch Cc lists short because large recipient sets have caused my sends to be cut off midway before, (I'm still trying to track down exactly where the problem is) you should have been on the list that's my miss. You'll be on the Cc of every future version. > >> >>> arm64 crash hotplug: >>> https://lore.kernel.org/all/20260918100442.3841135-18-ruanjinjie@huawei.com/ >> >> In addition, if arm64 gains crash hotplug support, the code there would indeed >> need to be modified (to avoid a deadlock). As of now, arm64 crash hotplug >> support has not been merged yet either, has it? I just want to make sure I >> haven't missed anything. > > Yes, you are right. If your patch series will be merged soon, I will > develop based on it. Also thanks for your reminder, otherwise I might later overlook the case where arm64 has already gained crash hotplug support, and introduce bugs as a result. Best regards, Wandun> >> >>> >>>> + >>>> + return ret; >>>> +} >>>> + >>>> /** >>>> * crash_exclude_mem_range - exclude a mem range for existing ranges >>>> * @mem: mem->range contains an array of ranges sorted in ascending order >>> >> > From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 74B6E606A319 for ; Thu, 22 Oct 2026 07:45:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=QgFBjb91; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=sjUxHJpS 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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zDKw9iplS3zTO8q8rMY3SgwZLWTMUYPbHi9cOZQPWA0=; b=QgFBjb916cx6me WtEPTzqwhj+MpreSfVd5h8V9qXZ9Mo9Xln4+MUu8qUEx7a2zjJait97xNeucJ7V3C/l3x0eepaGAr /BiLAb/9pp+Gwzy+wJdlamU4/el1r0Zdd5Iz2lBcI15AZYia+2qYq5GFIl/9OnqZj1VD7jHSWq95A hzp0sS8sqOhESxbvJ2YX3ti3T9x5Wqh9LVNRvgG/85El50MiyAQJjD7RhyxY+myFVupFCyxqwNNau 9bIFrS9ULidAiSeTM8OZQOwziKKb4mv8GQsvAD4ytUkzPKcJyIPNE08PIOzkzWwj0774fz7eCgpCY x36weXwpVZ2i9lvxaVkw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJnU9-0000000Dacj-1B0o; Thu, 22 Oct 2026 07:45:13 +0000 Received: from mail-pj2-x06.google.com ([2607:f8b0:4864:39::6]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJnU4-0000000Daay-46Rr for linux-riscv@lists.infradead.org; Thu, 22 Oct 2026 07:45:10 +0000 Received: by mail-pj2-x06.google.com with SMTP id 98e67ed59e1d1-3964e7720afso933615a91.1 for ; Thu, 22 Oct 2026 00:45:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792655108; x=1793259908; darn=lists.infradead.org; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to :content-type; bh=HDXHwat4zLpbZennBEg7uZauJYVMECCPqpPno/TLnRE=; b=sjUxHJpSA3mI6smHrfY24HuKW/hjm060HnpLLz0J6BF63PvljYtEt3DaB0SmTvuiG7 idG6V2Hd5irMkkDIF0mfNdP/lg+JEcgLOpLp4fe9PfgNxdjuyyAigSEuy6D9aGBjMs8l ii6ALoPqGuzkrNtzgxPmk8ega01C1f92HWf1hz1XuFhwUuUa4CZDBqgfA9aNgY7gUqSX 5feSC2knT6vhwm/hSIIat7B/4bRT9wNmuqsIfp9CzCVzw/NhrffA+Jhj7Hrv+6RoXZFT YuxYsXLWXXoFRKBkw/AyhR1FlnaKWqwmZw2OaBFUXPP4qAhzYG+4TskwKSQvQUlA/5tc Ak1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792655108; x=1793259908; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=HDXHwat4zLpbZennBEg7uZauJYVMECCPqpPno/TLnRE=; b=0FuTi4Lt/w8icBSe1VggWLp1yBPLLGxPgyymY1IhVl8gyCSJ7A4XCEaGY5P0YfnSNH AooksQca57cRlfjiL7jk2h7nSaoyhkQB6P4Da2p1KOfr+C8/arqxnV1AV7gxBCKzv+pp mOV6OtSPYIlPHbMzXEy0vKDJ25gkLLSehyEBIKz4A8+CwLQvwmgAsYW8imfbMIf7I7Mh iSfvUgT5saxBYzWvBVPQjWkldadRRbdKZSrswsN9ln0svV1HfdHVtE4SPopi9eGQBdIC fnPHySoi9LmUN5fNSd+0mTimFRsb5KKH01qO5mbS0Ymg9VXNypvgq+5S1FmdfXsQaWtv BD8g== X-Forwarded-Encrypted: i=1; AKwUvBx8I02cP1FPQkfZKbDnRJAsykYYESLxNX4AaPQtvwtp+DxI8fBFZn7Iuxwfw/oBp/H7nVOWfvPk17MC4A==@lists.infradead.org X-Gm-Message-State: AFq9FYKP+XzNZyEAUiVgyzMLyeL052Ay8Fo8nQNbQFSl8HFii+U+kuSz olbKCy1sW8QgHMnLU2mo5rktYJssUc6Ij46xIL0HfWtxRAaallqYW6Fl X-Gm-Gg: AYBFou3qpi1FeX+bQjSHFI/sE5sKqEVGJRP2zMCR1RCVmATL/wzRQFRH5xHcIe7fFhl N4WJSWceWNQM5bAMJeqihPeV7XO74kmRJ1LVDPMgskZUPn6vxDV1uT0rNwdoS73bMhgu7JId668 USX01WCPpUAJBeE/bGSbsO5CqQsqkXQRdDRFuQrG7dSTz7mV0K8V4QawRaeJfMdg4u0kHn/UwUH devP9H5idfUIwBc8x7P1ywU5Cx4uYecsA3y8n9a5i8plrtaLUvF7n3YzCFEZfuI5zgxuIp2/Bb7 aqPzM5Tiy8CMwB1mna784HXMu3vrH3BBkgRNkHrXxweErB/98a0nsKcr5BH6/GAWiOXwP6Z5Ru/ xHrx7Gc71NKaWnbcfLNdCfkREkjhIRMWPcVh/RFS5Cr5FMe5fRG9iSSUMNK9wHfiN5f2/Cz3EZs K3gswnMRe+znX9phI7wwegnWwyGP9ArqlZFDXFG57ya3fCDv3gy0nyESTLh83LaF+mp8buX3jh8 1M+e1rJRNu67BVsir+xQJ3/V3JYzuxjq3O8zaKxrtHvl8Crk4l52LYmQh0qn98= X-Received: by 2002:a17:90b:5870:b0:3ab:5758:3766 with SMTP id 98e67ed59e1d1-3ad8707700dmr3724932a91.51.1792655107849; Thu, 22 Oct 2026 00:45:07 -0700 (PDT) Received: from [10.125.112.22] ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3ada49366fdsm2945920a91.14.2026.10.22.00.44.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 22 Oct 2026 00:45:06 -0700 (PDT) Message-ID: <098ff899-81b9-4ccc-a143-1e324446258f@gmail.com> Date: Thu, 22 Oct 2026 15:44:48 +0800 X-Archived-By: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v9 3/8] crash_core: serialize crash header preparation against hotplug To: Jinjie Ruan Cc: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, chenhuacai@kernel.org, kernel@xen0n.name, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, saravanak@kernel.org, akpm@linux-foundation.org, pasha.tatashin@soleen.com, pratyush@kernel.org, ruirui.yang@linux.dev, robin.murphy@arm.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-mm@kvack.org, iommu@lists.linux.dev, robh@kernel.org, baoquan.he@linux.dev, rppt@kernel.org, m.szyprowski@samsung.com References: <20261021083011.2170525-1-chenwandun1@gmail.com> <20261021083011.2170525-4-chenwandun1@gmail.com> <12e4e687-1ff0-41b2-bdf8-7f48b29e1f2f@huawei.com> <31d63208-3ef2-420f-a0c2-d9d6d49c5e21@huawei.com> Content-Language: en-US From: Wandun In-Reply-To: <31d63208-3ef2-420f-a0c2-d9d6d49c5e21@huawei.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261022_004509_051120_F936A349 X-CRM114-Status: GOOD ( 24.50 ) X-Spam-Score: -1.8 (-) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" X-Spam-Status: No, score=-12.3 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 CgpPbiAxMC8yMi8yNiAxMDowMCwgSmluamllIFJ1YW4gd3JvdGU6Cj4gCj4gCj4g5ZyoIDIwMjYv MTAvMjEgMTc6NDgsIFdhbmR1biDlhpnpgZM6Cj4+Cj4+Cj4+IE9uIDEwLzIxLzI2IDE3OjEzLCBK aW5qaWUgUnVhbiB3cm90ZToKPj4+Cj4+Pgo+Pj4g5ZyoIDIwMjYvMTAvMjEgMTY6MzAsIFdhbmR1 biBDaGVuIOWGmemBkzoKPj4+PiBGcm9tOiBXYW5kdW4gQ2hlbiA8Y2hlbndhbmR1bkBsaXhpYW5n LmNvbT4KPj4+Pgo+Pj4+IGNyYXNoX3ByZXBhcmVfaGVhZGVycygpIGNvdW50cyBtZW1vcnkgcmFu Z2VzIGJlZm9yZSBwb3B1bGF0aW5nIHRoZQo+Pj4+IGFsbG9jYXRlZCBjcmFzaF9tZW0gYXJyYXku IFRoZSB3ZWFrIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgQVJNNjQsCj4+Pj4gUklTQy1WIGFuZCBM b29uZ0FyY2ggd2Fsa3MgbWVtYmxvY2subWVtb3J5LCB3aGlsZSB4ODYgcGVyZm9ybXMgdGhlIHNh bWUKPj4+PiB0d28tcGFzcyBvcGVyYXRpb24gb3ZlciBzeXN0ZW0gUkFNIHJlc291cmNlcy4gQ29u Y3VycmVudCBtZW1vcnkgaG90cGx1Zwo+Pj4+IGNhbiBjaGFuZ2UgcmFuZ2Ugc291cmNlIGJldHdl ZW4gdGhlIHR3byB3YWxrcyBhbmQgbWFrZSB0aGUgcG9wdWxhdGUKPj4+PiBwYXNzIG92ZXJmbG93 IGNtZW0tPnJhbmdlcy4KPj4+Pgo+Pj4+IFRha2UgZGV2aWNlX2hvdHBsdWdfbG9jayB3aGVuIHBy ZXBhcmluZyBjcmFzaCBoZWFkZXJzIGR1cmluZwo+Pj4+IGtleGVjX2ZpbGVfbG9hZCgpLiBUaGUg eDg2L3Jpc2N2IG1lbW9yeSBob3RwbHVnIHBhdGggYWxyZWFkeSB0YWtlcwo+Pj4+IGRldmljZV9o b3RwbHVnX2xvY2ssIHNvIGNhbGwgX19jcmFzaF9wcmVwYXJlX2hlYWRlcnMoKSBkaXJlY3RseQo+ Pj4+IHRvIGF2b2lkIHJlY3Vyc2l2ZSBsb2NraW5nLgo+Pj4+Cj4+Pj4gU2FzaGlrbyByZXBvcnRl ZCB0aGlzIGlzc3VlIGluIFsxXS4KPj4+Pgo+Pj4+IEZpeGVzOiAzNzUxZTcyOGNlZjIgKCJhcm02 NDoga2V4ZWNfZmlsZTogYWRkIGNyYXNoIGR1bXAgc3VwcG9ydCIpCj4+Pj4gRml4ZXM6IDFiY2Nh ODYyMGE5MSAoIkxvb25nQXJjaDogQWRkIGNyYXNoIGR1bXAgc3VwcG9ydCBmb3Iga2V4ZWNfZmls ZSIpCj4+Pj4gRml4ZXM6IDhhY2VhNDU1ZmFmYSAoIlJJU0MtVjogU3VwcG9ydCBmb3Iga2V4ZWNf ZmlsZSBvbiBwYW5pYyIpCj4+Pj4gRml4ZXM6IGRkNWY3MjYwNzZjYyAoImtleGVjOiBzdXBwb3J0 IGZvciBrZXhlYyBvbiBwYW5pYyB1c2luZyBuZXcgc3lzdGVtIGNhbGwiKQo+Pj4+IFNpZ25lZC1v ZmYtYnk6IFdhbmR1biBDaGVuIDxjaGVud2FuZHVuQGxpeGlhbmcuY29tPgo+Pj4+IExpbms6IGh0 dHBzOi8vc2FzaGlrby5kZXYvIy9tZXNzYWdlLzIwMjYwODA2MTAxMDAyLjFGODRFMUYwMDBFOUBz bXRwLmtlcm5lbC5vcmcgWzFdCj4+Pj4gQWNrZWQtYnk6IEJhb3F1YW4gSGUgPGJhb3F1YW4uaGVA bGludXguZGV2Pgo+Pj4+IC0tLQo+Pj4+ICBhcmNoL3Jpc2N2L2tlcm5lbC9jcmFzaC5jICB8ICAy ICstCj4+Pj4gIGFyY2gveDg2L2tlcm5lbC9jcmFzaC5jICAgIHwgIDIgKy0KPj4+PiAgaW5jbHVk ZS9saW51eC9jcmFzaF9jb3JlLmggfCAgMiArKwo+Pj4+ICBrZXJuZWwvY3Jhc2hfY29yZS5jICAg ICAgICB8IDE3ICsrKysrKysrKysrKysrKy0tCj4+Pj4gIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jp c2N2L2tlcm5lbC9jcmFzaC5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvY3Jhc2guYwo+Pj4+IGluZGV4 IGZlNWE0YjMwNmFhZS4uYWM4ZGYyZWRmMmE3IDEwMDY0NAo+Pj4+IC0tLSBhL2FyY2gvcmlzY3Yv a2VybmVsL2NyYXNoLmMKPj4+PiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9jcmFzaC5jCj4+Pj4g QEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBhcmNoX2NyYXNoX2hhbmRsZV9ob3RwbHVnX2V2ZW50KHN0 cnVjdCBraW1hZ2UgKmltYWdlLCB2b2lkICphcmcpCj4+Pj4gIAkgKiBDcmVhdGUgdGhlIG5ldyBl bGZjb3JlaGRyIHJlZmxlY3RpbmcgdGhlIGNoYW5nZXMgdG8gQ1BVIGFuZC9vcgo+Pj4+ICAJICog bWVtb3J5IHJlc291cmNlcy4KPj4+PiAgCSAqLwo+Pj4+IC0JaWYgKGNyYXNoX3ByZXBhcmVfaGVh ZGVycyh0cnVlLCAmZWxmYnVmLCAmZWxmc3osIE5VTEwpKSB7Cj4+Pj4gKwlpZiAoX19jcmFzaF9w cmVwYXJlX2hlYWRlcnModHJ1ZSwgJmVsZmJ1ZiwgJmVsZnN6LCBOVUxMKSkgewo+Pj4+ICAJCXBy X2VycigidW5hYmxlIHRvIGNyZWF0ZSBuZXcgZWxmY29yZWhkciIpOwo+Pj4+ICAJCWdvdG8gb3V0 Owo+Pj4+ICAJfQo+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYyBiL2Fy Y2gveDg2L2tlcm5lbC9jcmFzaC5jCj4+Pj4gaW5kZXggZTZmMjM5MzNhNmRmLi5iZWYwMDhhMGNi MjIgMTAwNjQ0Cj4+Pj4gLS0tIGEvYXJjaC94ODYva2VybmVsL2NyYXNoLmMKPj4+PiArKysgYi9h cmNoL3g4Ni9rZXJuZWwvY3Jhc2guYwo+Pj4+IEBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBhcmNo X2NyYXNoX2hhbmRsZV9ob3RwbHVnX2V2ZW50KHN0cnVjdCBraW1hZ2UgKmltYWdlLCB2b2lkICph cmcpCj4+Pj4gIAkgKiBDcmVhdGUgdGhlIG5ldyBlbGZjb3JlaGRyIHJlZmxlY3RpbmcgdGhlIGNo YW5nZXMgdG8gQ1BVIGFuZC9vcgo+Pj4+ICAJICogbWVtb3J5IHJlc291cmNlcy4KPj4+PiAgCSAq Lwo+Pj4+IC0JaWYgKGNyYXNoX3ByZXBhcmVfaGVhZGVycyhJU19FTkFCTEVEKENPTkZJR19YODZf NjQpLCAmZWxmYnVmLCAmZWxmc3osIE5VTEwpKSB7Cj4+Pj4gKwlpZiAoX19jcmFzaF9wcmVwYXJl X2hlYWRlcnMoSVNfRU5BQkxFRChDT05GSUdfWDg2XzY0KSwgJmVsZmJ1ZiwgJmVsZnN6LCBOVUxM KSkgewo+Pj4+ICAJCXByX2VycigidW5hYmxlIHRvIGNyZWF0ZSBuZXcgZWxmY29yZWhkciIpOwo+ Pj4+ICAJCWdvdG8gb3V0Owo+Pj4+ICAJfQo+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L2NyYXNoX2NvcmUuaCBiL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oCj4+Pj4gaW5kZXggYmMw ODcxMjRjZDc4Li4yOGU3YTgxY2YyNjMgMTAwNjQ0Cj4+Pj4gLS0tIGEvaW5jbHVkZS9saW51eC9j cmFzaF9jb3JlLmgKPj4+PiArKysgYi9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaAo+Pj4+IEBA IC02MSw2ICs2MSw4IEBAIGV4dGVybiBpbnQgY3Jhc2hfcHJlcGFyZV9lbGY2NF9oZWFkZXJzKHN0 cnVjdCBjcmFzaF9tZW0gKm1lbSwgaW50IG5lZWRfa2VybmVsX21hCj4+Pj4gIAkJCQkgICAgICAg dm9pZCAqKmFkZHIsIHVuc2lnbmVkIGxvbmcgKnN6KTsKPj4+PiAgZXh0ZXJuIGludCBjcmFzaF9w cmVwYXJlX2hlYWRlcnMoaW50IG5lZWRfa2VybmVsX21hcCwgdm9pZCAqKmFkZHIsCj4+Pj4gIAkJ CQkgdW5zaWduZWQgbG9uZyAqc3osIHVuc2lnbmVkIGxvbmcgKm5yX21lbV9yYW5nZXMpOwo+Pj4+ ICtpbnQgX19jcmFzaF9wcmVwYXJlX2hlYWRlcnMoaW50IG5lZWRfa2VybmVsX21hcCwgdm9pZCAq KmFkZHIsIHVuc2lnbmVkIGxvbmcgKnN6LAo+Pj4+ICsJCQkgICAgdW5zaWduZWQgbG9uZyAqbnJf bWVtX3Jhbmdlcyk7Cj4+Pj4gIGV4dGVybiBpbnQgY3Jhc2hfZXhjbHVkZV9jb3JlX3Jhbmdlcyhz dHJ1Y3QgY3Jhc2hfbWVtICoqY21lbSk7Cj4+Pj4gIAo+Pj4+ICBzdHJ1Y3Qga2ltYWdlOwo+Pj4+ IGRpZmYgLS1naXQgYS9rZXJuZWwvY3Jhc2hfY29yZS5jIGIva2VybmVsL2NyYXNoX2NvcmUuYwo+ Pj4+IGluZGV4IGZhYTBmMjJkYmI0MS4uOGE4NjFhOTQ2ZTI2IDEwMDY0NAo+Pj4+IC0tLSBhL2tl cm5lbC9jcmFzaF9jb3JlLmMKPj4+PiArKysgYi9rZXJuZWwvY3Jhc2hfY29yZS5jCj4+Pj4gQEAg LTE2LDYgKzE2LDcgQEAKPj4+PiAgI2luY2x1ZGUgPGxpbnV4L21tLmg+Cj4+Pj4gICNpbmNsdWRl IDxsaW51eC9jcHVob3RwbHVnLmg+Cj4+Pj4gICNpbmNsdWRlIDxsaW51eC9tZW1ibG9jay5oPgo+ Pj4+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4+Pj4gICNpbmNsdWRlIDxsaW51eC9rbWVt bGVhay5oPgo+Pj4+ICAjaW5jbHVkZSA8bGludXgvY3Jhc2hfY29yZS5oPgo+Pj4+ICAjaW5jbHVk ZSA8bGludXgvcmVib290Lmg+Cj4+Pj4gQEAgLTM0NCw4ICszNDUsOCBAQCBpbnQgY3Jhc2hfZXhj bHVkZV9jb3JlX3JhbmdlcyhzdHJ1Y3QgY3Jhc2hfbWVtICoqY21lbSkKPj4+PiAgCXJldHVybiAw Owo+Pj4+ICB9Cj4+Pj4gIAo+Pj4+IC1pbnQgY3Jhc2hfcHJlcGFyZV9oZWFkZXJzKGludCBuZWVk X2tlcm5lbF9tYXAsIHZvaWQgKiphZGRyLCB1bnNpZ25lZCBsb25nICpzeiwKPj4+PiAtCQkJICB1 bnNpZ25lZCBsb25nICpucl9tZW1fcmFuZ2VzKQo+Pj4+ICtpbnQgX19jcmFzaF9wcmVwYXJlX2hl YWRlcnMoaW50IG5lZWRfa2VybmVsX21hcCwgdm9pZCAqKmFkZHIsIHVuc2lnbmVkIGxvbmcgKnN6 LAo+Pj4+ICsJCQkgICAgdW5zaWduZWQgbG9uZyAqbnJfbWVtX3JhbmdlcykKPj4+PiAgewo+Pj4+ ICAJdW5zaWduZWQgaW50IG1heF9ucl9yYW5nZXM7Cj4+Pj4gIAlzdHJ1Y3QgY3Jhc2hfbWVtICpj bWVtOwo+Pj4+IEBAIC0zODIsNiArMzgzLDE4IEBAIGludCBjcmFzaF9wcmVwYXJlX2hlYWRlcnMo aW50IG5lZWRfa2VybmVsX21hcCwgdm9pZCAqKmFkZHIsIHVuc2lnbmVkIGxvbmcgKnN6LAo+Pj4+ ICAJcmV0dXJuIHJldDsKPj4+PiAgfQo+Pj4+ICAKPj4+PiAraW50IGNyYXNoX3ByZXBhcmVfaGVh ZGVycyhpbnQgbmVlZF9rZXJuZWxfbWFwLCB2b2lkICoqYWRkciwgdW5zaWduZWQgbG9uZyAqc3os Cj4+Pj4gKwkJCSAgdW5zaWduZWQgbG9uZyAqbnJfbWVtX3JhbmdlcykKPj4+PiArewo+Pj4+ICsJ aW50IHJldDsKPj4+PiArCj4+Pj4gKwlsb2NrX2RldmljZV9ob3RwbHVnKCk7Cj4+Pj4gKwlyZXQg PSBfX2NyYXNoX3ByZXBhcmVfaGVhZGVycyhuZWVkX2tlcm5lbF9tYXAsIGFkZHIsIHN6LCBucl9t ZW1fcmFuZ2VzKTsKPj4+PiArCXVubG9ja19kZXZpY2VfaG90cGx1ZygpOwo+Pj4KPj4+IEkgdGhp bmsgdGhpcyBwYXRjaCBjb25mbGljdHMgd2l0aCBteSBjaGFuZ2VzIGFuZCB3b3VsZCBhbHNvIGNv bmZsaWN0Cj4+PiB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhcm02NCBjcmFzaCBob3RwbHVn Lgo+Pj4KPj4+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDI2MDkyMTA5MDQ1MC44MDc1 NzUtMTUtcnVhbmppbmppZUBodWF3ZWkuY29tLwo+Pj4KPj4gSGF2ZSB0aGVzZSBwYXRjaGVzIGFs cmVhZHkgYmVlbiBtZXJnZWQ/IE15IGN1cnJlbnQgd29yayBpcyBiYXNlZCBvbiB0aGUgbGF0ZXN0 Cj4+IGxpbnV4LW5leHQuIElmIHRoZXkgaGF2ZSBhbHJlYWR5IGJlZW4gbWVyZ2VkIGludG8gdGhl IG1haW50YWluZXIncyBicmFuY2gsCj4+IHBsZWFzZSBsZXQgbWUga25vdywgSSB3aWxsIHVwZGF0 ZSBteSB0cmVlIGFuZCByZWJhc2UvcmUtYWRhcHQgbXkgY2hhbmdlcyBhY2NvcmRpbmdseS4KPj4K Pj4KPj4gQWxzbywgcmVnYXJkaW5nIHRoZSBjaGFuZ2VzIGluIGtlcm5lbC9jcmFzaF9jb3JlLmM6 IGl0IGxvb2tzIGxpa2Ugd2UgbW9kaWZpZWQKPj4gdGhlIHNhbWUgc3BvdCwgdGhlIGNoYW5nZSBp cyBub3Qgd3JvbmcsIGlzIHRoYXQgcmlnaHQ/Cj4gCj4gSGkgV2FuZHVuLAo+IAo+IEhvd2V2ZXIs IEkgdGhpbmsgc29tZW9uZSBzaG91bGQgaGF2ZSBpbmZvcm1lZCBtZSBpbiBhZHZhbmNlOyBvdGhl cndpc2UsCj4gZG9pbmcgZHVwbGljYXRlIGZpeCB3b3JrIGlzIHBvaW50bGVzcy4KPiAKPiBJIHNl ZSB0aGF0IHBhcnQgb2YgeW91ciBwYXRjaCBzZXJpZXMgbW9kaWZpZXMgY29kZSBJIHByZXZpb3Vz bHkgY2hhbmdlZCwKPiBidXQgSSB3YXMgbm90IENDJ2QuCgpIaSBKaW5qaWUsCgpTb3JyeSBmb3Ig bm90IENDJ2luZyB5b3UuIEkga2VlcCB0aGUgcGVyLXBhdGNoIENjIGxpc3RzIHNob3J0IGJlY2F1 c2UKbGFyZ2UgcmVjaXBpZW50IHNldHMgaGF2ZSBjYXVzZWQgbXkgc2VuZHMgdG8gYmUgY3V0IG9m ZiBtaWR3YXkgYmVmb3JlLAooSSdtIHN0aWxsIHRyeWluZyB0byB0cmFjayBkb3duIGV4YWN0bHkg d2hlcmUgdGhlIHByb2JsZW0gaXMpIHlvdSBzaG91bGQKaGF2ZSBiZWVuIG9uIHRoZSBsaXN0IHRo YXQncyBteSBtaXNzLiBZb3UnbGwgYmUgb24gdGhlIENjIG9mIGV2ZXJ5IGZ1dHVyZQp2ZXJzaW9u Lgo+IAo+Pgo+Pj4gYXJtNjQgY3Jhc2ggaG90cGx1ZzoKPj4+IGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2FsbC8yMDI2MDkxODEwMDQ0Mi4zODQxMTM1LTE4LXJ1YW5qaW5qaWVAaHVhd2VpLmNvbS8K Pj4KPj4gSW4gYWRkaXRpb24sIGlmIGFybTY0IGdhaW5zIGNyYXNoIGhvdHBsdWcgc3VwcG9ydCwg dGhlIGNvZGUgdGhlcmUgd291bGQgaW5kZWVkCj4+IG5lZWQgdG8gYmUgbW9kaWZpZWQgKHRvIGF2 b2lkIGEgZGVhZGxvY2spLiBBcyBvZiBub3csIGFybTY0IGNyYXNoIGhvdHBsdWcKPj4gc3VwcG9y dCBoYXMgbm90IGJlZW4gbWVyZ2VkIHlldCBlaXRoZXIsIGhhcyBpdD8gSSBqdXN0IHdhbnQgdG8g bWFrZSBzdXJlIEkKPj4gaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuCj4gCj4gWWVzLCB5b3UgYXJl IHJpZ2h0LiBJZiB5b3VyIHBhdGNoIHNlcmllcyB3aWxsIGJlIG1lcmdlZCBzb29uLCBJIHdpbGwK PiBkZXZlbG9wIGJhc2VkIG9uIGl0LgoKQWxzbyB0aGFua3MgZm9yIHlvdXIgcmVtaW5kZXIsIG90 aGVyd2lzZSBJIG1pZ2h0IGxhdGVyIG92ZXJsb29rIHRoZSBjYXNlCndoZXJlIGFybTY0IGhhcyBh bHJlYWR5IGdhaW5lZCBjcmFzaCBob3RwbHVnIHN1cHBvcnQsIGFuZCBpbnRyb2R1Y2UgYnVncwph cyBhIHJlc3VsdC4KCgpCZXN0IHJlZ2FyZHMsCldhbmR1bj4KPj4KPj4+Cj4+Pj4gKwo+Pj4+ICsJ cmV0dXJuIHJldDsKPj4+PiArfQo+Pj4+ICsKPj4+PiAgLyoqCj4+Pj4gICAqIGNyYXNoX2V4Y2x1 ZGVfbWVtX3JhbmdlIC0gZXhjbHVkZSBhIG1lbSByYW5nZSBmb3IgZXhpc3RpbmcgcmFuZ2VzCj4+ Pj4gICAqIEBtZW06IG1lbS0+cmFuZ2UgY29udGFpbnMgYW4gYXJyYXkgb2YgcmFuZ2VzIHNvcnRl ZCBpbiBhc2NlbmRpbmcgb3JkZXIKPj4+Cj4+Cj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJp c2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1yaXNjdgo=