Message ID | 20180710160013.26559-7-peter.maydell@linaro.org |
---|---|
State | New |
Headers | show |
Series | accel/tcg: Support execution from MMIO and small MMU regions | expand |
On 07/10/2018 09:00 AM, Peter Maydell wrote: > Now that we have full support for small regions, including execution, > we can remove the workarounds where we marked all small regions as > non-executable for the M-profile MPU and SAU. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > target/arm/helper.c | 23 ----------------------- > 1 file changed, 23 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 07/10/2018 01:00 PM, Peter Maydell wrote: > Now that we have full support for small regions, including execution, > we can remove the workarounds where we marked all small regions as > non-executable for the M-profile MPU and SAU. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > target/arm/helper.c | 23 ----------------------- > 1 file changed, 23 deletions(-) > > diff --git a/target/arm/helper.c b/target/arm/helper.c > index a2ac96084e7..ed96e6c02fb 100644 > --- a/target/arm/helper.c > +++ b/target/arm/helper.c > @@ -9784,17 +9784,6 @@ static bool get_phys_addr_pmsav7(CPUARMState *env, uint32_t address, > > fi->type = ARMFault_Permission; > fi->level = 1; > - /* > - * Core QEMU code can't handle execution from small pages yet, so > - * don't try it. This way we'll get an MPU exception, rather than > - * eventually causing QEMU to exit in get_page_addr_code(). > - */ > - if (*page_size < TARGET_PAGE_SIZE && (*prot & PAGE_EXEC)) { > - qemu_log_mask(LOG_UNIMP, > - "MPU: No support for execution from regions " > - "smaller than 1K\n"); > - *prot &= ~PAGE_EXEC; > - } > return !(*prot & (1 << access_type)); > } > > @@ -10014,18 +10003,6 @@ static bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t address, > > fi->type = ARMFault_Permission; > fi->level = 1; > - /* > - * Core QEMU code can't handle execution from small pages yet, so > - * don't try it. This means any attempted execution will generate > - * an MPU exception, rather than eventually causing QEMU to exit in > - * get_page_addr_code(). > - */ > - if (*is_subpage && (*prot & PAGE_EXEC)) { > - qemu_log_mask(LOG_UNIMP, > - "MPU: No support for execution from regions " > - "smaller than 1K\n"); > - *prot &= ~PAGE_EXEC; > - } > return !(*prot & (1 << access_type)); > } > >
diff --git a/target/arm/helper.c b/target/arm/helper.c index a2ac96084e7..ed96e6c02fb 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9784,17 +9784,6 @@ static bool get_phys_addr_pmsav7(CPUARMState *env, uint32_t address, fi->type = ARMFault_Permission; fi->level = 1; - /* - * Core QEMU code can't handle execution from small pages yet, so - * don't try it. This way we'll get an MPU exception, rather than - * eventually causing QEMU to exit in get_page_addr_code(). - */ - if (*page_size < TARGET_PAGE_SIZE && (*prot & PAGE_EXEC)) { - qemu_log_mask(LOG_UNIMP, - "MPU: No support for execution from regions " - "smaller than 1K\n"); - *prot &= ~PAGE_EXEC; - } return !(*prot & (1 << access_type)); } @@ -10014,18 +10003,6 @@ static bool pmsav8_mpu_lookup(CPUARMState *env, uint32_t address, fi->type = ARMFault_Permission; fi->level = 1; - /* - * Core QEMU code can't handle execution from small pages yet, so - * don't try it. This means any attempted execution will generate - * an MPU exception, rather than eventually causing QEMU to exit in - * get_page_addr_code(). - */ - if (*is_subpage && (*prot & PAGE_EXEC)) { - qemu_log_mask(LOG_UNIMP, - "MPU: No support for execution from regions " - "smaller than 1K\n"); - *prot &= ~PAGE_EXEC; - } return !(*prot & (1 << access_type)); }
Now that we have full support for small regions, including execution, we can remove the workarounds where we marked all small regions as non-executable for the M-profile MPU and SAU. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- target/arm/helper.c | 23 ----------------------- 1 file changed, 23 deletions(-)