[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v11 02/10] hvf: Add execute to dirty log permission bitmap
From: |
Alexander Graf |
Subject: |
Re: [PATCH v11 02/10] hvf: Add execute to dirty log permission bitmap |
Date: |
Thu, 16 Sep 2021 16:04:49 +0200 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 |
On 16.09.21 13:59, Peter Maydell wrote:
> On Wed, 15 Sept 2021 at 19:10, Alexander Graf <agraf@csgraf.de> wrote:
>> Hvf's permission bitmap during and after dirty logging does not include
>> the HV_MEMORY_EXEC permission. At least on Apple Silicon, this leads to
>> instruction faults once dirty logging was enabled.
>>
>> Add the bit to make it work properly.
>>
>> Signed-off-by: Alexander Graf <agraf@csgraf.de>
>> ---
>> accel/hvf/hvf-accel-ops.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/accel/hvf/hvf-accel-ops.c b/accel/hvf/hvf-accel-ops.c
>> index d1691be989..71cc2fa70f 100644
>> --- a/accel/hvf/hvf-accel-ops.c
>> +++ b/accel/hvf/hvf-accel-ops.c
>> @@ -239,12 +239,12 @@ static void hvf_set_dirty_tracking(MemoryRegionSection
>> *section, bool on)
>> if (on) {
>> slot->flags |= HVF_SLOT_LOG;
>> hv_vm_protect((uintptr_t)slot->start, (size_t)slot->size,
>> - HV_MEMORY_READ);
>> + HV_MEMORY_READ | HV_MEMORY_EXEC);
>> /* stop tracking region*/
>> } else {
>> slot->flags &= ~HVF_SLOT_LOG;
>> hv_vm_protect((uintptr_t)slot->start, (size_t)slot->size,
>> - HV_MEMORY_READ | HV_MEMORY_WRITE);
>> + HV_MEMORY_READ | HV_MEMORY_WRITE | HV_MEMORY_EXEC);
>> }
>> }
> Makes sense -- this matches the premissions we set initially
> for memory regions in hvf_set_phys_mem().
>
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
>
> Should we change also the hv_vm_protect() call in
> target/i386/hvf/hvf.c:ept_emulation_fault(), for consistency ?
The x86 hvf code seems to deal just fine with !X mappings, so I'd leave
it as is as part of the arm enablement series - especially because I
have limited testing capabilities for x86 hvf.
Roman, Cameron, would you like to pick up the ept_emulation_fault() part?
Alex