qemu/include/hw/arm
Mostafa Saleh d7cdf89c27 hw/arm/smmu-common: Add support for nested TLB
This patch adds support for nested (combined) TLB entries.
The main function combine_tlb() is not used here but in the next
patches, but to simplify the patches it is introduced first.

Main changes:
1) New field added in the SMMUTLBEntry struct: parent_perm, for
   nested TLB, holds the stage-2 permission, this can be used to know
   the origin of a permission fault from a cached entry as caching
   the “and” of the permissions loses this information.

   SMMUPTWEventInfo is used to hold information about PTW faults so
   the event can be populated, the value of stage used to be set
   based on the current stage for TLB permission faults, however
   with the parent_perm, it is now set based on which perm has
   the missing permission

   When nesting is not enabled it has the same value as perm which
   doesn't change the logic.

2) As combined TLB implementation is used, the combination logic
   chooses:
   - tg and level from the entry which has the smallest addr_mask.
   - Based on that the iova that would be cached is recalculated.
   - Translated_addr is chosen from stage-2.

Reviewed-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Signed-off-by: Mostafa Saleh <smostafa@google.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20240715084519.1189624-11-smostafa@google.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2024-07-18 13:49:29 +01:00
..
allwinner-a10.h hw/ide/ahci: Move SysBus definitions to 'ahci-sysbus.h' 2024-02-15 16:58:46 +01:00
allwinner-h3.h hw/arm/allwinner-h3: Remove 'hw/arm/boot.h' from header 2023-10-27 12:42:13 +01:00
allwinner-r40.h hw/ide/ahci: Move SysBus definitions to 'ahci-sysbus.h' 2024-02-15 16:58:46 +01:00
armsse-version.h hw/arm/armsse: Introduce SSE subsystem version property 2021-03-08 17:20:01 +00:00
armsse.h hw/arm: Set number of MPU regions correctly for an505, an521, an524 2023-08-31 11:07:02 +01:00
armv7m.h hw/arm/armv7m: alias the NVIC "num-prio-bits" property 2024-01-09 14:42:40 +00:00
aspeed.h hw/arm/aspeed: Allow machine to set UART default 2021-09-20 08:50:59 +02:00
aspeed_soc.h aspeed/soc: fix incorrect dram size for AST2700 2024-06-16 21:08:54 +02:00
bcm2835_peripherals.h hw/arm: Connect OTP device to BCM2835 2024-07-01 12:48:55 +01:00
bcm2836.h hw/arm/bcm2853_peripherals: Split out common part of peripherals 2024-02-27 13:01:42 +00:00
bcm2838.h hw/arm/bcm2838: Add GIC-400 to BCM2838 SoC 2024-02-27 13:01:42 +00:00
bcm2838_peripherals.h hw/arm/bcm2838_peripherals: Add clock_isp stub 2024-02-27 13:01:42 +00:00
boot.h hw/arm/boot: Make write_bootloader() public as arm_write_bootloader() 2023-05-02 15:47:40 +01:00
bsa.h include/hw/arm: move BSA definitions to bsa.h 2023-10-19 14:32:13 +01:00
digic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
exynos4210.h hw/arm/exynos4210: Get arm_boot_info declaration from 'hw/arm/boot.h' 2023-10-19 13:01:52 +01:00
fdt.h hw/arm/sysbus-fdt: enable vfio-calxeda-xgmac dynamic instantiation 2015-06-19 14:17:44 +01:00
fsl-imx6.h hw/arm: add PCIe to Freescale i.MX6 2024-01-26 12:23:04 +00:00
fsl-imx6ul.h fsl-imx6ul: Add various missing unimplemented devices 2024-01-26 11:30:49 +00:00
fsl-imx7.h hw/arm/fsl-imx7: Remove 'hw/arm/boot.h' from header 2023-10-27 12:42:13 +01:00
fsl-imx25.h hw/arm/fsl-imx25: Remove 'hw/arm/boot.h' from header 2023-10-27 12:42:13 +01:00
fsl-imx31.h hw/arm/fsl-imx31: Remove 'hw/arm/boot.h' from header 2023-10-27 12:42:13 +01:00
linux-boot-if.h Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
msf2-soc.h hw/arm/msf2: Simplify setting MachineClass::valid_cpu_types[] 2024-02-02 13:51:58 +00:00
npcm7xx.h hw/arm: Add GMAC devices to NPCM7XX SoC 2024-02-02 13:51:59 +00:00
nrf51.h hw/arm/nrf51: Add NRF51_PERIPHERAL_SIZE definition 2020-05-11 11:05:11 +01:00
nrf51_soc.h hw/arm/nrf51: Wire up sysclk 2021-09-01 11:08:20 +01:00
omap.h hw/arm/omap.h: correct typos 2024-02-21 08:16:43 +03:00
primecell.h hw: move headers to include/ 2013-04-08 18:13:10 +02:00
pxa.h hw/pcmcia/pxa2xx: Inline pxa2xx_pcmcia_init() 2023-10-27 12:48:57 +01:00
raspberrypi-fw-defs.h hw/misc: Implement mailbox properties for customer OTP and device specific private keys 2024-07-01 12:48:55 +01:00
raspi_platform.h hw/arm: Add memory region for BCM2837 RPiVid ASB 2024-02-27 13:01:42 +00:00
sharpsl.h hw/gpio/zaurus.c: Use LOG_GUEST_ERROR for bad guest register accesses 2020-07-03 16:59:45 +01:00
smmu-common.h hw/arm/smmu-common: Add support for nested TLB 2024-07-18 13:49:29 +01:00
smmuv3.h hw/arm/smmuv3: Add knob to choose translation stage and enable stage-2 2023-05-30 15:50:16 +01:00
soc_dma.h Include exec/memory.h slightly less 2019-08-16 13:31:52 +02:00
stm32f100_soc.h hw/arm/stm32f100: Report error when incorrect CPU is used 2023-11-20 15:30:59 +00:00
stm32f205_soc.h hw/arm/stm32f205: Report error when incorrect CPU is used 2023-11-20 15:30:59 +00:00
stm32f405_soc.h hw/arm/stm32f405: Report error when incorrect CPU is used 2023-11-20 15:30:59 +00:00
stm32l4x5_soc.h hw/arm: Add the USART to the stm32l4x5 SoC 2024-04-25 10:21:59 +01:00
virt.h hw/arm/virt: allow creation of a second NonSecure UART 2024-06-21 14:01:59 +01:00
xen_arch_hvm.h hw/arm: introduce xenpvh machine 2023-06-15 16:46:47 -07:00
xlnx-versal.h hw/arm/xlnx-versal: Include missing 'cpu.h' header 2024-01-26 11:30:48 +00:00
xlnx-zynqmp.h hw/ide/ahci: Move SysBus definitions to 'ahci-sysbus.h' 2024-02-15 16:58:46 +01:00