From: Shrikanth Hegde <sshegde@linux.ibm.com>
To: Sourabh Jain <sourabhjain@linux.ibm.com>
Cc: npiggin@gmail.com, christophe.leroy@csgroup.eu,
mpe@ellerman.id.au, peterz@infradead.org, ajd@linux.ibm.com,
mahesh@linux.ibm.com, hbathini@linux.ibm.com,
linux-kernel@vger.kernel.org,
Srikar Dronamraju <srikar@linux.ibm.com>,
linuxppc-dev@lists.ozlabs.org, maddy@linux.ibm.com
Subject: Re: [PATCH v3 3/6] powerpc: fadump: use lock guard for mutex
Date: Fri, 9 May 2025 18:32:21 +0530 [thread overview]
Message-ID: <d2bc5f3c-b360-41fe-998f-2ef444aba6ed@linux.ibm.com> (raw)
In-Reply-To: <9f18e699-4819-4d2f-a932-fc5e399e8abd@linux.ibm.com>
On 5/8/25 11:23, Sourabh Jain wrote:
>
Hi Sourabh.
> On 05/05/25 13:23, Shrikanth Hegde wrote:
>> use scoped_guard for scope based resource management of mutex.
>> This would make the code simpler and easier to maintain.
>>
>> More details on lock guards can be found at
>> https://lore.kernel.org/all/20230612093537.614161713@infradead.org/T/#u
>>
>> Reviewed-by: Srikar Dronamraju <srikar@linux.ibm.com>
>> Signed-off-by: Shrikanth Hegde <sshegde@linux.ibm.com>
>> ---
>> arch/powerpc/kernel/fadump.c | 11 ++++-------
>> 1 file changed, 4 insertions(+), 7 deletions(-)
>>
>> diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
>> index df16c7f547ab..b8c7993c5bb1 100644
>> --- a/arch/powerpc/kernel/fadump.c
>> +++ b/arch/powerpc/kernel/fadump.c
>> @@ -1375,15 +1375,12 @@ static void fadump_free_elfcorehdr_buf(void)
>> static void fadump_invalidate_release_mem(void)
>> {
>> - mutex_lock(&fadump_mutex);
>> - if (!fw_dump.dump_active) {
>> - mutex_unlock(&fadump_mutex);
>> - return;
>> + scoped_guard(mutex, &fadump_mutex) {
>> + if (!fw_dump.dump_active)
>> + return;
>> + fadump_cleanup();
>> }
>> - fadump_cleanup();
>> - mutex_unlock(&fadump_mutex);
>> -
>> fadump_free_elfcorehdr_buf();
>> fadump_release_memory(fw_dump.boot_mem_top,
>> memblock_end_of_DRAM());
>> fadump_free_cpu_notes_buf();
>
> I tried to understand how scoped_guard gets unwrapped and what changes
> it brings to the assembly of the update function. However, with GCC version
> 11.5.0 20240719 (Red Hat 11.5.0-5), identical assembly was generated for
> the
> fadump_invalidate_release_mem function with or without this patch.
>
> Which was a surprise to me because there are lot macros and compiler
> magic involved here to call destructor ( for example https://
> clang.llvm.org/docs/AttributeReference.html#cleanup)
> when a variable goes out of scope.
that is nice to see.
>
> c000000000053978 <fadump_invalidate_release_mem.part.0>:
> c000000000053978: ae 01 4c 3c addis r2,r12,430
> c00000000005397c: 88 47 42 38 addi r2,r2,18312
> c000000000053980: a6 02 08 7c mflr r0
> c000000000053984: 11 57 02 48 bl c000000000079094 <_mcount>
> c000000000053988: a6 02 08 7c mflr r0
> c00000000005398c: f8 ff e1 fb std r31,-8(r1)
> c000000000053990: f0 ff c1 fb std r30,-16(r1)
> c000000000053994: 1f 01 e2 3f addis r31,r2,287
> c000000000053998: 30 ea ff 3b addi r31,r31,-5584
> c00000000005399c: 10 00 01 f8 std r0,16(r1)
> c0000000000539a0: 81 ff 21 f8 stdu r1,-128(r1)
> c0000000000539a4: 18 00 41 f8 std r2,24(r1)
> c0000000000539a8: ad fe ff 4b bl c000000000053854
> <fadump_cleanup+0x8>
> c0000000000539ac: c2 00 62 3c addis r3,r2,194
> c0000000000539b0: 98 c3 63 38 addi r3,r3,-15464
> c0000000000539b4: c9 1d 06 49 bl c0000000010b577c
> <mutex_unlock+0x8>
> c0000000000539b8: 00 00 00 60 nop
> c0000000000539bc: 1f 01 22 3d addis r9,r2,287
> snip...
>
>
> Also, fadump_invalidate_release_mem() is only called in the fadump
> kernel in two scenarios
> to release the reserved memory:
>
> 1. After dump collection
> 2. When fadump fails to process the dump
>
> So even if the compiler messes up something here, there is no impact on
> dump collection as such.
If there is a compiler mess up we will have a much bigger issue, since
these are quite widely used in core areas such as scheduler, timers etc.
>
> So changes looks good to me:
> Reviewed-by: Sourabh Jain <sourabhjain@linux.ibm.com>
Thanks for taking a look and reviewing it.
next prev parent reply other threads:[~2025-05-09 13:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-05 7:53 [PATCH v3 0/6] powerpc: use lock guards for mutex Set 1 Shrikanth Hegde
2025-05-05 7:53 ` [PATCH v3 1/6] powerpc: eeh: use lock guard for mutex Shrikanth Hegde
2025-05-05 7:53 ` [PATCH v3 2/6] powerpc: rtas: " Shrikanth Hegde
2025-05-05 7:53 ` [PATCH v3 3/6] powerpc: fadump: " Shrikanth Hegde
2025-05-08 5:53 ` Sourabh Jain
2025-05-09 13:02 ` Shrikanth Hegde [this message]
2025-05-05 7:53 ` [PATCH v3 4/6] powerpc: book3s: vas: " Shrikanth Hegde
2025-05-05 7:53 ` [PATCH v3 5/6] powerpc: powernv: ocxl: " Shrikanth Hegde
2025-05-05 7:53 ` [PATCH v3 6/6] powerpc: sysdev: " Shrikanth Hegde
2025-05-05 9:45 ` [PATCH v3 0/6] powerpc: use lock guards for mutex Set 1 Shrikanth Hegde
2025-05-05 14:22 ` Venkat Rao Bagalkote
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d2bc5f3c-b360-41fe-998f-2ef444aba6ed@linux.ibm.com \
--to=sshegde@linux.ibm.com \
--cc=ajd@linux.ibm.com \
--cc=christophe.leroy@csgroup.eu \
--cc=hbathini@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mahesh@linux.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=peterz@infradead.org \
--cc=sourabhjain@linux.ibm.com \
--cc=srikar@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).