[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/4] x86/ACPI: fix S3 wakeup vector mapping



On 23.11.2020 16:24, Roger Pau Monné wrote:
> On Mon, Nov 23, 2020 at 01:40:12PM +0100, Jan Beulich wrote:
>> --- a/xen/arch/x86/acpi/power.c
>> +++ b/xen/arch/x86/acpi/power.c
>> @@ -174,17 +174,20 @@ static void acpi_sleep_prepare(u32 state
>>      if ( state != ACPI_STATE_S3 )
>>          return;
>>  
>> -    wakeup_vector_va = __acpi_map_table(
>> -        acpi_sinfo.wakeup_vector, sizeof(uint64_t));
>> -
>>      /* TBoot will set resume vector itself (when it is safe to do so). */
>>      if ( tboot_in_measured_env() )
>>          return;
>>  
>> +    set_fixmap(FIX_ACPI_END, acpi_sinfo.wakeup_vector);
>> +    wakeup_vector_va = fix_to_virt(FIX_ACPI_END) +
>> +                       PAGE_OFFSET(acpi_sinfo.wakeup_vector);
>> +
>>      if ( acpi_sinfo.vector_width == 32 )
>>          *(uint32_t *)wakeup_vector_va = bootsym_phys(wakeup_start);
>>      else
>>          *(uint64_t *)wakeup_vector_va = bootsym_phys(wakeup_start);
>> +
>> +    clear_fixmap(FIX_ACPI_END);
> 
> Why not use vmap here instead of the fixmap?

Considering the S3 path is relatively fragile (as in: we end up
breaking it more often than about anything else) I wanted to
make as little of a change as possible. Hence I decided to stick
to the fixmap use that was (indirectly) used before as well.

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.