qemu-e2k/hw/arm
Mostafa Saleh e703f7076a hw/arm/smmuv3: Add page table walk for stage-2
In preparation for adding stage-2 support, add Stage-2 PTW code.
Only Aarch64 format is supported as stage-1.

Nesting stage-1 and stage-2 is not supported right now.

HTTU is not supported, SW is expected to maintain the Access flag.
This is described in the SMMUv3 manual(IHI 0070.E.a)
"5.2. Stream Table Entry" in "[181] S2AFFD".
This flag determines the behavior on access of a stage-2 page whose
descriptor has AF == 0:
- 0b0: An Access flag fault occurs (stall not supported).
- 0b1: An Access flag fault never occurs.
An Access fault takes priority over a Permission fault.

There are 3 address size checks for stage-2 according to
(IHI 0070.E.a) in "3.4. Address sizes".
- As nesting is not supported, input address is passed directly to
stage-2, and is checked against IAS.
We use cfg->oas to hold the OAS when stage-1 is not used, this is set
in the next patch.
This check is done outside of smmu_ptw_64_s2 as it is not part of
stage-2(it throws stage-1 fault), and the stage-2 function shouldn't
change it's behavior when nesting is supported.
When nesting is supported and we figure out how to combine TLB for
stage-1 and stage-2 we can move this check into the stage-1 function
as described in ARM DDI0487I.a in pseudocode
aarch64/translation/vmsa_translation/AArch64.S1Translate
aarch64/translation/vmsa_translation/AArch64.S1DisabledOutput

- Input to stage-2 is checked against s2t0sz, and throws stage-2
transaltion fault if exceeds it.

- Output of stage-2 is checked against effective PA output range.

Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Mostafa Saleh <smostafa@google.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Message-id: 20230516203327.2051088-5-smostafa@google.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2023-05-30 13:02:53 +01:00
..
allwinner-a10.c hw/arm: Add WDT to Allwinner-A10 and Cubieboard 2023-04-20 10:21:13 +01:00
allwinner-h3.c hw/arm: Add WDT to Allwinner-H3 and Orangepi-PC 2023-04-20 10:21:14 +01:00
armsse.c
armv7m.c
aspeed_ast10x0.c hw/arm/aspeed_ast10x0: Add TODO comment to use Cortex-M4F 2023-02-07 09:02:05 +01:00
aspeed_ast2600.c aspeed: Introduce a spi_boot region under the SoC 2023-03-02 13:57:50 +01:00
aspeed_eeprom.c hw/arm/aspeed: Modified BMC FRU byte data in yosemitev2 2023-03-07 16:53:18 +01:00
aspeed_eeprom.h hw/arm/aspeed: Adding new machine Tiogapass in QEMU 2023-03-02 13:57:50 +01:00
aspeed_soc.c aspeed: Introduce a spi_boot region under the SoC 2023-03-02 13:57:50 +01:00
aspeed.c hw/arm/aspeed: Use arm_write_bootloader() to write the bootloader 2023-05-02 15:47:40 +01:00
bcm2835_peripherals.c hw/arm/bcm2835_property: Implement "get command line" message 2023-05-02 15:47:40 +01:00
bcm2836.c hw/arm/bcm2835_property: Implement "get command line" message 2023-05-02 15:47:40 +01:00
boot.c hw/arm/boot: Make write_bootloader() public as arm_write_bootloader() 2023-05-02 15:47:40 +01:00
collie.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
cubieboard.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
digic_boards.c
digic.c
exynos4_boards.c
exynos4210.c hw/arm: Fix some typos in comments (most found by codespell) 2023-04-20 10:21:13 +01:00
fby35.c aspeed: Introduce a spi_boot region under the SoC 2023-03-02 13:57:50 +01:00
fsl-imx6.c fsl-imx6: Add SNVS support for i.MX6 boards 2023-05-30 13:02:53 +01:00
fsl-imx6ul.c fsl-imx6ul: Add fec[12]-phy-connected properties 2023-04-20 10:46:19 +01:00
fsl-imx7.c fsl-imx7: Add fec[12]-phy-connected properties 2023-04-20 10:46:35 +01:00
fsl-imx25.c
fsl-imx31.c
gumstix.c
highbank.c
imx25_pdk.c
integratorcp.c
Kconfig hw/arm: Select XLNX_USB_SUBSYS for xlnx-zcu102 machine 2023-05-10 16:02:58 +01:00
kzm.c
mainstone.c
mcimx6ul-evk.c arm/mcimx6ul-evk: Set fec1-phy-connected property to false 2023-04-20 10:46:29 +01:00
mcimx7d-sabre.c arm/mcimx7d-sabre: Set fec2-phy-connected property to false 2023-04-20 10:46:43 +01:00
meson.build hw/arm/aspeed: Add aspeed_eeprom.c 2023-02-07 09:02:05 +01:00
microbit.c
mps2-tz.c hw: Replace qemu_or_irq typedef by OrIRQState 2023-02-27 13:27:05 +00:00
mps2.c hw/char/cmsdk-apb-uart: Open-code cmsdk_apb_uart_create() 2023-02-27 13:27:05 +00:00
msf2-soc.c
msf2-som.c tests/avocado: Truncate M2S-FG484 SOM SPI flash to 16MiB 2023-02-07 09:02:04 +01:00
musca.c
musicpal.c hw/arm: Fix some typos in comments (most found by codespell) 2023-04-20 10:21:13 +01:00
netduino2.c
netduinoplus2.c
npcm7xx_boards.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
npcm7xx.c hw/arm: Attach PSPI module to NPCM7XX SoC 2023-02-16 16:00:48 +00:00
nrf51_soc.c
nseries.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
olimex-stm32-h405.c
omap1.c hw/arm: Fix some typos in comments (most found by codespell) 2023-04-20 10:21:13 +01:00
omap2.c hw/arm: Fix some typos in comments (most found by codespell) 2023-04-20 10:21:13 +01:00
omap_sx1.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
orangepi.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
palm.c *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
pxa2xx_gpio.c
pxa2xx_pic.c
pxa2xx.c
raspi.c hw/arm/raspi: Use arm_write_bootloader() to write boot code 2023-05-02 15:47:41 +01:00
realview.c hw/i2c/versatile_i2c: Replace TYPE_VERSATILE_I2C -> TYPE_ARM_SBCON_I2C 2023-01-23 13:32:38 +00:00
sabrelite.c
sbsa-ref.c hw/arm: Use MachineClass->default_nic in the sbsa-ref machine 2023-05-26 09:10:49 +02:00
smmu-common.c hw/arm/smmuv3: Add page table walk for stage-2 2023-05-30 13:02:53 +01:00
smmu-internal.h hw/arm/smmuv3: Add page table walk for stage-2 2023-05-30 13:02:53 +01:00
smmuv3-internal.h hw/arm/smmuv3: Add missing fields for IDR0 2023-05-30 13:02:53 +01:00
smmuv3.c hw/arm/smmuv3: Refactor stage-1 PTW 2023-05-30 13:02:53 +01:00
spitz.c
stellaris.c hw/char/pl011: Open-code pl011_luminary_create() 2023-02-27 13:27:05 +00:00
stm32f100_soc.c
stm32f205_soc.c
stm32f405_soc.c
stm32vldiscovery.c
strongarm.c bulk: Rename TARGET_FMT_plx -> HWADDR_FMT_plx 2023-01-18 11:14:34 +01:00
strongarm.h
tosa.c
trace-events hw/arm/smmuv3: Refactor stage-1 PTW 2023-05-30 13:02:53 +01:00
trace.h
versatilepb.c hw/i2c/versatile_i2c: Replace TYPE_VERSATILE_I2C -> TYPE_ARM_SBCON_I2C 2023-01-23 13:32:38 +00:00
vexpress.c hw/arm/vexpress: Avoid trivial memory leak of 'flashalias' 2023-05-18 11:39:33 +01:00
virt-acpi-build.c hw/arm: Fix some typos in comments (most found by codespell) 2023-04-20 10:21:13 +01:00
virt.c hw/arm: Use MachineClass->default_nic in the virt machine 2023-05-26 09:10:49 +02:00
xilinx_zynq.c
xlnx-versal-virt.c hw/arm: Fix some typos in comments (most found by codespell) 2023-04-20 10:21:13 +01:00
xlnx-versal.c Drop duplicate #include 2023-02-08 07:28:05 +01:00
xlnx-zcu102.c
xlnx-zynqmp.c
z2.c