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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1947EC3ABC9 for ; Sun, 18 May 2025 14:23:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AFADD6B0085; Sun, 18 May 2025 10:23:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AAB1C6B0088; Sun, 18 May 2025 10:23:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8D6996B0089; Sun, 18 May 2025 10:23:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 5BE1C6B0085 for ; Sun, 18 May 2025 10:23:28 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 86F86C11AA for ; Sun, 18 May 2025 14:23:28 +0000 (UTC) X-FDA: 83456246496.20.9DF8046 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) by imf27.hostedemail.com (Postfix) with ESMTP id 734E04000E for ; Sun, 18 May 2025 14:23:26 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="3pmWH/CR"; spf=pass (imf27.hostedemail.com: domain of 3Xe0paAoKCCgGLERKcYERPKSSKPI.GSQPMRYb-QQOZEGO.SVK@flex--changyuanl.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3Xe0paAoKCCgGLERKcYERPKSSKPI.GSQPMRYb-QQOZEGO.SVK@flex--changyuanl.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747578206; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=jw2dpSffr8RX9goKmQzU5QzfxiCiCR6iGea0YOCC1M4=; b=2Ra7Mcq7fqPetax5Cs8yZpfjU5RsB/I6D7joZ/EHSDQ7v3UvNJzTnMVppHe7A8SSeK9ziL J3Y5w1oapAYPpZcrqPnqYrLGJ0LvSoyTnV8CCMyN84BsRdwTvjQZ6NPmbvso433B0O19F5 TWrjayb+14e4I8Tn5t9SV+Y0GSM7OzU= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="3pmWH/CR"; spf=pass (imf27.hostedemail.com: domain of 3Xe0paAoKCCgGLERKcYERPKSSKPI.GSQPMRYb-QQOZEGO.SVK@flex--changyuanl.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3Xe0paAoKCCgGLERKcYERPKSSKPI.GSQPMRYb-QQOZEGO.SVK@flex--changyuanl.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747578206; a=rsa-sha256; cv=none; b=NmkDE0mtYULZMTUbilD8Kpjxp600olFQoyQYqOPrPolIMkuSH0ZtMRwaBbXcMNEtPGBzus CAj+deXubWDnNDC6fRIO5G3fRFjr2S9qLEkm5zMyuQ1idGVVzOK1zCw7GcpjifAWmYJyMx AZ4v5Zca8kVvRLgQHU8oBMXjsAkENsw= Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-232054aa634so7723225ad.3 for ; Sun, 18 May 2025 07:23:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747578205; x=1748183005; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=jw2dpSffr8RX9goKmQzU5QzfxiCiCR6iGea0YOCC1M4=; b=3pmWH/CROvmv3+ENbbr5iAAJB0JZClbSNxkb74FTqkzFyy6moGDmhlr7hDHxZ+rV47 17SNwigG0JnoiEgw72KME5WSeFi0bgURVFiXXhtPQSezV6qdeOQ72ubVq8qDyYd/gt/s l84k7wFjhbjnygL6KX55cOQ/LEE4myqmDP1Qu0BKOY5LWGnryKkrzybu0iONqBxAgzcX xjK9FaChk2E4VOo/YwDMLstxmlxB8RvFq30ifdxl0MHre7+pvcFVLprTWWMBSYmrIgaI 1JwT3bs/1ih1n7I1AgP90F246WaBX4M2bPJV+kPrA13T+/TSkoooZfn8QqsY3zfhTXuT r2TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747578205; x=1748183005; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jw2dpSffr8RX9goKmQzU5QzfxiCiCR6iGea0YOCC1M4=; b=UsWbSk0V9RC3SdvHgIoVZKaY2FXMw42RKWCRRnFIDj1okSFC5vq1QP0TQgThBD/g56 /tCa8DpruxeFO5oHVJOmmT1sf67u1D8EKL5dG2leLOFAxBAaULFCNib2fARQsRsqh/PR +4yKykCd7DQpqHWhDMOK9/qRrDuHFbuVmQctCVkZSc6M9f5uszRQj9O3aDO63Us8I/LQ PS1k9FNRJfA7XkQtHW3zeEFAofB4uSgavvSgJeSfKyDC/KBhRLNHLKoeEkkiBKgKqIC8 BNPAPAPIQ4s+H8Z3NrNMhuJjyrAkqlegxjtULZ5+YeoHcCQWm3hrczlmb7VH+4GU13Qd +IUA== X-Forwarded-Encrypted: i=1; AJvYcCXizMw9FePH94Bg1B3ngCHJRyfa8FNxwsuDlP8M1xaHj2f/RSxqFmVfBwnAbJQpEQ7nXsR4cKq1uw==@kvack.org X-Gm-Message-State: AOJu0YxYZcQiIscO6Z6FVH0jBLohR6HrHZJ+3BgMK65TNcpWzmQwRnDs CpuajB1wl4JrtyZR6FG1QAqhzpe9pwxzC2KZmOPydaB6r/i/GwDhAhmghm5BGmlFTh9kcg9QCzo lyJCbWhhE62HQlgw05wWezQ== X-Google-Smtp-Source: AGHT+IGzKyPFMK6YyK4TGGsc6lr8b7/MNxcwKiEDM7oMNN3Ku0K0uTb4I+HdKbUzhe8ilI6IRXoO+yKkaMNPsrkp X-Received: from plbp13.prod.google.com ([2002:a17:903:174d:b0:232:1c72:1f78]) (user=changyuanl job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:ecd2:b0:224:2384:5b40 with SMTP id d9443c01a7336-231de31b3dbmr148737165ad.24.1747578205410; Sun, 18 May 2025 07:23:25 -0700 (PDT) Date: Sun, 18 May 2025 07:23:15 -0700 In-Reply-To: <20250518142315.241670-1-changyuanl@google.com> Mime-Version: 1.0 References: <20250518142315.241670-1-changyuanl@google.com> X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250518142315.241670-3-changyuanl@google.com> Subject: [PATCH 2/2] KHO: init new_physxa->phys_bits to fix lockdep From: Changyuan Lyu To: rppt@kernel.org, akpm@linux-foundation.org Cc: graf@amazon.com, bhe@redhat.com, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, chrisl@kernel.org, pasha.tatashin@soleen.com, jasonmiu@google.com, Changyuan Lyu Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Queue-Id: 734E04000E X-Rspamd-Server: rspam09 X-Stat-Signature: emrxen9qrsapa86kw158f5xq16yecf6z X-HE-Tag: 1747578206-169463 X-HE-Meta: U2FsdGVkX19qA/NvMsjPVqnyWfY3JoEbn3akpiI42cVr3Slzu/afpvWQIU7TtPnReTkUMHOyJkFeX63Fl9/TdR3r01uK+zsh+XLdrTKyy2d7bsDsWgczKRsEYH6R8tUtcXXfwE3pn/LL9ZRNV1OfNQwy9oPuvoApdtGBVa56sxVhWqHtq0Dajceg8Yr2yEfOaHtBorDr7N3Ra/cRVEiLFTFqhETWBXhtYrPLBC+aXE0KWPU4862eKv/xAhes/HuAOUVOAKJQXgw7psHqIFw+8yfozO4ozB0YUABkesh6K4A7yQtFShe+4gTyu2awUquFKcd9v77e/AvZ4Vj+Gll0CE1OKVqnlFhFvW0X9Ow6BadJRrRJb2YGFTJPrvM0oKAHSiEaCRezb8P93WPLBJozWJJZKeUDHBrS/jKiwH6H4e4HtGuMeGj8qXiet8rpofIQMdETzeu/EZve1dWDbLJn3sIoZ7QEFPtTjberNEGtBj34+kLDcjNysiFQsnC7XGf7zvhB2yyYSgpBXK7ysdr0Rzd2v5xirmqSh+8yKLpGF7p9Dtp7NJG/vYAO3HzSEs0F7qOnk2/8z+mfGuieX9AdA105DQKZM2TnaszKMC8jtJe6nmeDCYsa/HBcZvoxh5CqsYfy/b0u1ug1qDl1CRA4FSzZbzJs7vir4vzSHD9ctac8wBni5IZeV4EA97AU6M//5n452kW3h9W9PdqEVHZFG43ifRrFCsFhK8fRyCyqHP1ydgeI0DGd5Qxt1lgySnJ7vl6hmheSJjJq+U1plgiUm7d7Pc7rJuzsTyPkyiSgoXnTjPyl2jFatrj5l1D9lSQxFHlrtRvijLvw95P7YU+thpyG37BJtuS9noNjLzmQmavwp2ljz/GqNKfD3CDzzR4wMxfP8AxybLU+Fq8OKhsErW4f/WZ1wdC7F60VOVAW+aYemxbekyfOub3G/633EJ6KxQRw7Fqnyvye7hGswUw 2XqSoiJB /4koFyYMJt4jFAnuKU/4UWoOHsogPJU+3c8n9N1BESVBQsrJ7nrbrGS4agfcJMm+MlyaiP8Yr1/nXyY2RD7bzCr6vyVaTsdvfRcqUZ25e3LT7PGHW3jCwOo7gLIOxtbT33shKIHe3kCqRFa3Hpa28WK0Vq+fplE/PzAulZLNYMaQAWanZfPTjyaPsONnD/jDS79T0a0iEK8i1tmO+WUSIrElZLIPlDF2ElyadFIWz2yYeCNRcKpNELDRshdiskzxidtnWI606NApyegKrvfYgs8C4qbdcQsP/dvex3mKW6gYLeF4T3Al+1behtT4/UhE0nLL6FxGPZ84YjNxH5WzY34GCespj8hWcfFdi3kyE5bVNZiF5WRZ16j1fFus4UNRs3TlWGumZcz8L9LmVjNEqGNn4aB4bK05qhTfg1cjljyCes0SplbNfp1uojfFpqdxe70OO8cmi2bfSU/7bh+NFsuh55buV3TdTWnmo+1kC/Xxm5cYVOKifApCNIwApLTVmfazl+JmEWFV+wkywnAbcGd0CFc1DIfiCfnxIRvnY3UciIeaaJlY876VI/s/LvyI9qySHF5vhumL5bY1ENsdJg7TQ6L+u3UbC6Nn2c3Mi50tchLUaB9+y2kcF3tgJz8weoeXUSkabGWJPaw11zA4yEKFmvvpU5O+vFREeF5f8ePUdXc4GsA0i95ztjw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Pasha Tatashin Lockdep shows the following warning: INFO: trying to register non-static key. The code is fine but needs lockdep annotation, or maybe you didn't initialize this object before use? turning off the locking correctness validator. [] dump_stack_lvl+0x66/0xa0 [] assign_lock_key+0x10c/0x120 [] register_lock_class+0xf4/0x2f0 [] __lock_acquire+0x7f/0x2c40 [] ? __pfx_hlock_conflict+0x10/0x10 [] ? native_flush_tlb_global+0x8e/0xa0 [] ? __flush_tlb_all+0x4e/0xa0 [] ? __kernel_map_pages+0x112/0x140 [] ? xa_load_or_alloc+0x67/0xe0 [] lock_acquire+0xe6/0x280 [] ? xa_load_or_alloc+0x67/0xe0 [] _raw_spin_lock+0x30/0x40 [] ? xa_load_or_alloc+0x67/0xe0 [] xa_load_or_alloc+0x67/0xe0 [] kho_preserve_folio+0x90/0x100 [] __kho_finalize+0xcf/0x400 [] kho_finalize+0x34/0x70 This is becase xa has its own lock, that is not initialized in xa_load_or_alloc. Modifiy __kho_preserve_order(), to properly call xa_init(&new_physxa->phys_bits); Fixes: fc33e4b44b27 ("kexec: enable KHO support for memory preservation") Signed-off-by: Pasha Tatashin Signed-off-by: Changyuan Lyu --- kernel/kexec_handover.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/kernel/kexec_handover.c b/kernel/kexec_handover.c index 69b953551677..f0ac6a9170f8 100644 --- a/kernel/kexec_handover.c +++ b/kernel/kexec_handover.c @@ -144,14 +144,35 @@ static int __kho_preserve_order(struct kho_mem_track *track, unsigned long pfn, unsigned int order) { struct kho_mem_phys_bits *bits; - struct kho_mem_phys *physxa; + struct kho_mem_phys *physxa, *new_physxa; const unsigned long pfn_high = pfn >> order; might_sleep(); - physxa = xa_load_or_alloc(&track->orders, order, sizeof(*physxa)); - if (IS_ERR(physxa)) - return PTR_ERR(physxa); + physxa = xa_load(&track->orders, order); + if (!physxa) { + new_physxa = kzalloc(sizeof(*physxa), GFP_KERNEL); + if (!new_physxa) + return -ENOMEM; + + xa_init(&new_physxa->phys_bits); + physxa = xa_cmpxchg(&track->orders, order, NULL, new_physxa, + GFP_KERNEL); + if (xa_is_err(physxa)) { + int err_ret = xa_err(physxa); + + xa_destroy(&new_physxa->phys_bits); + kfree(new_physxa); + + return err_ret; + } + if (physxa) { + xa_destroy(&new_physxa->phys_bits); + kfree(new_physxa); + } else { + physxa = new_physxa; + } + } bits = xa_load_or_alloc(&physxa->phys_bits, pfn_high / PRESERVE_BITS, sizeof(*bits)); -- 2.49.0.1101.gccaa498523-goog