* [PATCH] x86/microcode: move @microcode_mutex definition near usage
@ 2023-03-24 11:47 John Ogness
2023-03-24 12:00 ` Borislav Petkov
0 siblings, 1 reply; 7+ messages in thread
From: John Ogness @ 2023-03-24 11:47 UTC (permalink / raw)
To: Borislav Petkov; +Cc: linux-kernel
If CONFIG_MICROCODE_LATE_LOADING is not enabled, the compiler warns:
'microcode_mutex' defined but not used
Since reload_store() is the only function using this mutex, move the
mutex definititon there. Then it is also within the #ifdef block for
CONFIG_MICROCODE_LATE_LOADING.
Signed-off-by: John Ogness <john.ogness@linutronix.de>
---
arch/x86/kernel/cpu/microcode/core.c | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
index 7a329e561354..e7b8f7ad105d 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -49,20 +49,6 @@ bool initrd_gone;
LIST_HEAD(microcode_cache);
-/*
- * Synchronization.
- *
- * All non cpu-hotplug-callback call sites use:
- *
- * - microcode_mutex to synchronize with each other;
- * - cpus_read_lock/unlock() to synchronize with
- * the cpu-hotplug-callback call sites.
- *
- * We guarantee that only a single cpu is being
- * updated at any particular moment of time.
- */
-static DEFINE_MUTEX(microcode_mutex);
-
struct ucode_cpu_info ucode_cpu_info[NR_CPUS];
struct cpu_info_ctx {
@@ -465,6 +451,20 @@ static int microcode_reload_late(void)
return ret;
}
+/*
+ * Synchronization.
+ *
+ * All non cpu-hotplug-callback call sites use:
+ *
+ * - microcode_mutex to synchronize with each other;
+ * - cpus_read_lock/unlock() to synchronize with
+ * the cpu-hotplug-callback call sites.
+ *
+ * We guarantee that only a single cpu is being
+ * updated at any particular moment of time.
+ */
+static DEFINE_MUTEX(microcode_mutex);
+
static ssize_t reload_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t size)
base-commit: 1e760fa3596e8c7f08412712c168288b79670d78
--
2.30.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/microcode: move @microcode_mutex definition near usage
2023-03-24 11:47 [PATCH] x86/microcode: move @microcode_mutex definition near usage John Ogness
@ 2023-03-24 12:00 ` Borislav Petkov
2023-03-24 13:11 ` John Ogness
0 siblings, 1 reply; 7+ messages in thread
From: Borislav Petkov @ 2023-03-24 12:00 UTC (permalink / raw)
To: John Ogness; +Cc: linux-kernel
On Fri, Mar 24, 2023 at 11:47:20AM +0000, John Ogness wrote:
> If CONFIG_MICROCODE_LATE_LOADING is not enabled, the compiler warns:
>
> 'microcode_mutex' defined but not used
How do you trigger this? I haven't seen this until now in my builds and
CONFIG_MICROCODE_LATE_LOADING is not enabled here either in most
cases:
CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
# CONFIG_MICROCODE_LATE_LOADING is not set
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/microcode: move @microcode_mutex definition near usage
2023-03-24 12:00 ` Borislav Petkov
@ 2023-03-24 13:11 ` John Ogness
2023-03-24 15:19 ` Borislav Petkov
2023-07-12 14:09 ` John B. Wyatt IV
0 siblings, 2 replies; 7+ messages in thread
From: John Ogness @ 2023-03-24 13:11 UTC (permalink / raw)
To: Borislav Petkov; +Cc: linux-kernel
On 2023-03-24, Borislav Petkov <bp@alien8.de> wrote:
>> If CONFIG_MICROCODE_LATE_LOADING is not enabled, the compiler warns:
>>
>> 'microcode_mutex' defined but not used
>
> How do you trigger this?
I was doing some tests with CONFIG_PREEMPT_RT. I did not think that
mattered, since the mutex is obviously defined but not used for
!CONFIG_MICROCODE_LATE_LOADING.
Digging deeper I see that initializing @wait_list in
__MUTEX_INITIALIZER() is what is allowing unused global mutexes to go
unnoticed. Since with CONFIG_PREEMPT_RT the mutex is different and
initialized differently, it is (correctly) detected as unused.
CONFIG_PREEMPT_RT cannot be enabled yet, so this patch is not urgent for
mainline. But at some point it will need fixing.
John Ogness
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/microcode: move @microcode_mutex definition near usage
2023-03-24 13:11 ` John Ogness
@ 2023-03-24 15:19 ` Borislav Petkov
2023-03-24 16:33 ` John Ogness
2023-07-12 14:09 ` John B. Wyatt IV
1 sibling, 1 reply; 7+ messages in thread
From: Borislav Petkov @ 2023-03-24 15:19 UTC (permalink / raw)
To: John Ogness; +Cc: linux-kernel
On Fri, Mar 24, 2023 at 02:17:10PM +0106, John Ogness wrote:
> I was doing some tests with CONFIG_PREEMPT_RT. I did not think that
> mattered, since the mutex is obviously defined but not used for
> !CONFIG_MICROCODE_LATE_LOADING.
Oh sure, I see that. I'd still like to have in the commit message why
exactly it happens.
> Digging deeper I see that initializing @wait_list in
> __MUTEX_INITIALIZER() is what is allowing unused global mutexes to go
> unnoticed. Since with CONFIG_PREEMPT_RT the mutex is different and
> initialized differently, it is (correctly) detected as unused.
>
> CONFIG_PREEMPT_RT cannot be enabled yet, so this patch is not urgent for
> mainline. But at some point it will need fixing.
Sure, send it to me when it can be triggered with a .config with the
upstream tree, along with exact explanation how it happens and I'll
queue it.
Thx.
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/microcode: move @microcode_mutex definition near usage
2023-03-24 15:19 ` Borislav Petkov
@ 2023-03-24 16:33 ` John Ogness
2023-03-24 16:44 ` Borislav Petkov
0 siblings, 1 reply; 7+ messages in thread
From: John Ogness @ 2023-03-24 16:33 UTC (permalink / raw)
To: Borislav Petkov; +Cc: linux-kernel
On 2023-03-24, Borislav Petkov <bp@alien8.de> wrote:
>> I was doing some tests with CONFIG_PREEMPT_RT. I did not think that
>> mattered, since the mutex is obviously defined but not used for
>> !CONFIG_MICROCODE_LATE_LOADING.
>
> Oh sure, I see that. I'd still like to have in the commit message why
> exactly it happens.
Note that an unused mutex is being defined, even when the compiler is
not warning about it.
>> CONFIG_PREEMPT_RT cannot be enabled yet, so this patch is not urgent for
>> mainline. But at some point it will need fixing.
>
> Sure, send it to me when it can be triggered with a .config with the
> upstream tree, along with exact explanation how it happens and I'll
> queue it.
OK, but the kernel test robots will probably beat me to it. ;-)
John Ogness
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/microcode: move @microcode_mutex definition near usage
2023-03-24 16:33 ` John Ogness
@ 2023-03-24 16:44 ` Borislav Petkov
0 siblings, 0 replies; 7+ messages in thread
From: Borislav Petkov @ 2023-03-24 16:44 UTC (permalink / raw)
To: John Ogness; +Cc: linux-kernel
On Fri, Mar 24, 2023 at 05:39:35PM +0106, John Ogness wrote:
> Note that an unused mutex is being defined, even when the compiler is
> not warning about it.
Are you sure?
$ make arch/x86/kernel/cpu/microcode/core.s
grep microcode_mutex arch/x86/kernel/cpu/microcode/core.s
$
$ make CC=clang arch/x86/kernel/cpu/microcode/core.s
$ grep microcode_mutex arch/x86/kernel/cpu/microcode/core.s
$
Looks to me like it gets optimized away.
> OK, but the kernel test robots will probably beat me to it. ;-)
That's exactly the question: they haven't because this is not a new
situation. Their compilers are optimizing unused stuff away too.
:-)
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/microcode: move @microcode_mutex definition near usage
2023-03-24 13:11 ` John Ogness
2023-03-24 15:19 ` Borislav Petkov
@ 2023-07-12 14:09 ` John B. Wyatt IV
1 sibling, 0 replies; 7+ messages in thread
From: John B. Wyatt IV @ 2023-07-12 14:09 UTC (permalink / raw)
To: John Ogness; +Cc: Borislav Petkov, linux-kernel, Juri Lelli
Hi John,
I am a new real-time kernel developer. I am still encountering this with
the linux-rt-devel repo and need to apply the patch manually to build.
On Fri, Mar 24, 2023 at 02:17:10PM +0106, John Ogness wrote:
> Digging deeper I see that initializing @wait_list in
> __MUTEX_INITIALIZER() is what is allowing unused global mutexes to go
> unnoticed. Since with CONFIG_PREEMPT_RT the mutex is different and
> initialized differently, it is (correctly) detected as unused.
As far as I can tell @wait_list has been removed from both torvalds and
linux-rt-devel's tree (it is still in the comments).
What would be the next step in getting this resolved?
John B. Wyatt IV
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-07-12 14:10 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-24 11:47 [PATCH] x86/microcode: move @microcode_mutex definition near usage John Ogness
2023-03-24 12:00 ` Borislav Petkov
2023-03-24 13:11 ` John Ogness
2023-03-24 15:19 ` Borislav Petkov
2023-03-24 16:33 ` John Ogness
2023-03-24 16:44 ` Borislav Petkov
2023-07-12 14:09 ` John B. Wyatt IV
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox