[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 01/16] x86/msr: Implement rdmsr_safe() in C
On 19.08.2025 15:35, Andrew Cooper wrote: > On 19/08/2025 2:28 pm, Andrew Cooper wrote: >> On 18/08/2025 12:23 pm, Jan Beulich wrote: >>> On 15.08.2025 22:41, Andrew Cooper wrote: >>>> ... in preparation to be able to use asm goto. >>>> >>>> Notably this mean that the value parameter must be taken by pointer rather >>>> than by value. >>>> >>>> No functional change. >>>> >>>> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> >>> In principle >>> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> >> Thanks. >> >>> However, having looked at patch 2 first, ... >>> >>>> @@ -879,14 +879,14 @@ static void intel_init_ppin(const struct cpuinfo_x86 >>>> *c) >>>> case 0x8f: /* Sapphire Rapids X */ >>>> >>>> if ( (c != &boot_cpu_data && !ppin_msr) || >>>> - rdmsr_safe(MSR_PPIN_CTL, val) ) >>>> + rdmsr_safe(MSR_PPIN_CTL, &val) ) >>>> return; >>> ... with this, wouldn't we be better off using ... >>> >>>> /* If PPIN is disabled, but not locked, try to enable. */ >>>> if ( !(val & (PPIN_ENABLE | PPIN_LOCKOUT)) ) >>>> { >>>> wrmsr_safe(MSR_PPIN_CTL, val | PPIN_ENABLE); >>>> - rdmsr_safe(MSR_PPIN_CTL, val); >>>> + rdmsr_safe(MSR_PPIN_CTL, &val); >>> ... plain rdmsr() here, thus not leaving it open to the behavioral change >>> patch 2 comes with? >> Yeah, probably. At the point we've read it once, and written to it, a >> subsequent read is not going fail. >> >> I'll adjust, although it will have to be a rdmsrl(). > > No. That would introduce a bug, because this path ignores a write error > too. Why would there be a bug? Irrespective of the WRMSR, we know the earlier RDMSR worked. > There isn't actually a problem even with patch 2, because of the how the > logic is currently laid out. Yes, the logic would still be correct, just less obviously so. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |