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.coop...@citrix.com>
>> In principle
>> Reviewed-by: Jan Beulich <jbeul...@suse.com>
> 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.

There isn't actually a problem even with patch 2, because of the how the
logic is currently laid out.

~Andrew

Reply via email to