qemu/hw/arm
Mostafa Saleh 48f9e9eb29 hw/arm/smmu: Fix IPA for stage-2 events
For the following events (ARM IHI 0070 F.b - 7.3 Event records):
- F_TRANSLATION
- F_ACCESS
- F_PERMISSION
- F_ADDR_SIZE

If fault occurs at stage 2, S2 == 1 and:
  - If translating an IPA for a transaction (whether by input to
    stage 2-only configuration, or after successful stage 1 translation),
    CLASS == IN, and IPA is provided.

At the moment only CLASS == IN is used which indicates input
translation.

However, this was not implemented correctly, as for stage 2, the code
only sets the  S2 bit but not the IPA.

This field has the same bits as FetchAddr in F_WALK_EABT which is
populated correctly, so we don’t change that.
The setting of this field should be done from the walker as the IPA address
wouldn't be known in case of nesting.

For stage 1, the spec says:
  If fault occurs at stage 1, S2 == 0 and:
  CLASS == IN, IPA is UNKNOWN.

So, no need to set it to for stage 1, as ptw_info is initialised by zero in
smmuv3_translate().

Fixes: e703f7076a “hw/arm/smmuv3: Add page table walk for stage-2”
Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Mostafa Saleh <smostafa@google.com>
Message-id: 20240715084519.1189624-3-smostafa@google.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2024-07-18 13:49:29 +01:00
..
allwinner-a10.c hw/arm/allwinner: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
allwinner-h3.c hw/arm/allwinner: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
allwinner-r40.c hw/arm/allwinner: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
armsse.c hw: Simplify accesses to the CPUState::'start-powered-off' property 2024-01-05 16:20:15 +01:00
armv7m.c target/arm: Move ARM_CPU_IRQ/FIQ definitions to 'cpu-qom.h' header 2024-01-26 11:30:49 +00:00
aspeed_ast10x0.c aspeed: Make the ast1030-a1 SoC not user creatable 2024-03-25 09:57:56 +01:00
aspeed_ast27x0.c aspeed/soc: set dma64 property for AST2700 ftgmac100 2024-07-09 08:05:44 +02:00
aspeed_ast2400.c aspeed: fix hardcode boot address 0 2024-02-27 13:47:05 +01:00
aspeed_ast2600.c aspeed: Make the ast2600-a3 SoC not user creatable 2024-03-25 09:57:56 +01:00
aspeed_eeprom.c aspeed: Clean up includes 2024-01-30 21:20:20 +03:00
aspeed_eeprom.h aspeed: Clean up includes 2024-01-30 21:20:20 +03:00
aspeed_soc_common.c aspeed: introduce a new UART0 device name 2024-02-27 13:47:05 +01:00
aspeed.c aspeed: Deprecate the tacoma-bmc machine 2024-07-02 07:52:43 +02:00
b-l475e-iot01a.c hw/arm : Connect DM163 to B-L475E-IOT01A 2024-04-30 16:05:08 +01:00
bananapi_m2u.c hw/arm: Check CPU type in machine_run_board_init() 2024-01-05 16:20:15 +01:00
bcm2835_peripherals.c hw/misc: Implement mailbox properties for customer OTP and device specific private keys 2024-07-01 12:48:55 +01:00
bcm2836.c hw/arm/bcm2836: Remove unusued struct 'BCM283XClass' 2024-06-30 19:51:44 +03:00
bcm2838_peripherals.c hw/arm/bcm2838_peripherals: Add clock_isp stub 2024-02-27 13:01:42 +00:00
bcm2838.c hw/arm: Introduce Raspberry PI 4 machine 2024-02-27 13:01:42 +00:00
boot.c hw: arm: Remove use of tabs in some source files 2024-05-28 14:20:48 +01:00
collie.c hw/arm: Build various units only once 2024-01-26 11:30:49 +00:00
cubieboard.c hw/arm: Check CPU type in machine_run_board_init() 2024-01-05 16:20:15 +01:00
digic_boards.c
digic.c
exynos4_boards.c target/arm: fix exception syndrome for AArch32 bkpt insn 2024-02-02 18:56:32 +00:00
exynos4210.c hw/display/exynos4210_fimd: Pass frame buffer memory region as link 2024-02-26 18:40:09 +01:00
fby35.c hw/arm/aspeed: Move AspeedSoCState::a7mpcore to Aspeed2600SoCState 2023-10-25 09:52:44 +02:00
fsl-imx6.c hw/arm/fsl: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
fsl-imx6ul.c hw/arm/fsl: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
fsl-imx7.c hw/arm/fsl: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
fsl-imx25.c hw/arm/fsl: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
fsl-imx31.c target/arm: Move ARM_CPU_IRQ/FIQ definitions to 'cpu-qom.h' header 2024-01-26 11:30:49 +00:00
gumstix.c hw/arm: Deprecate various old Arm machine types 2024-03-11 16:42:57 +00:00
highbank.c hw/ide/ahci: Move SysBus definitions to 'ahci-sysbus.h' 2024-02-15 16:58:46 +01:00
imx25_pdk.c hw/arm/fsl-imx25: Remove 'hw/arm/boot.h' from header 2023-10-27 12:42:13 +01:00
integratorcp.c hw/display/pl110: Pass frame buffer memory region as link property 2024-02-26 18:39:58 +01:00
Kconfig hw/arm/xilinx_zynq: Add cache controller 2024-05-30 13:21:06 +01:00
kzm.c hw/net/lan9118: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
mainstone.c hw/arm: Deprecate various old Arm machine types 2024-03-11 16:42:57 +00:00
mcimx6ul-evk.c hw/arm/fsl-imx6ul: Remove 'hw/arm/boot.h' from header 2023-10-27 12:42:13 +01:00
mcimx7d-sabre.c hw/arm/fsl-imx7: Remove 'hw/arm/boot.h' from header 2023-10-27 12:42:13 +01:00
meson.build aspeed/soc: Add AST2700 support 2024-06-16 21:08:54 +02:00
microbit.c
mps2-tz.c hw/arm: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
mps2.c hw/net/lan9118: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
mps3r.c hw/arm/mps3r: Add remaining devices 2024-02-15 14:32:39 +00:00
msf2-soc.c target/arm: fix exception syndrome for AArch32 bkpt insn 2024-02-02 18:56:32 +00:00
msf2-som.c hw/arm/msf2: Simplify setting MachineClass::valid_cpu_types[] 2024-02-02 13:51:58 +00:00
musca.c hw/arm/musca: Simplify setting MachineClass::valid_cpu_types[] 2024-02-02 13:51:58 +00:00
musicpal.c hw/arm: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
netduino2.c hw/arm: Add missing QOM parent for v7-M SoCs 2024-01-09 14:42:40 +00:00
netduinoplus2.c hw/arm: Add missing QOM parent for v7-M SoCs 2024-01-09 14:42:40 +00:00
npcm7xx_boards.c hw/arm/npcm7xx_boards: Simplify setting MachineClass::valid_cpu_types[] 2024-02-02 13:51:58 +00:00
npcm7xx.c hw/arm/npcm7xx: remove setting of mp-affinity 2024-05-28 14:20:48 +01:00
nrf51_soc.c hw: Simplify memory_region_init_ram() calls 2024-01-05 16:20:15 +01:00
nseries.c hw/arm: Deprecate various old Arm machine types 2024-03-11 16:42:57 +00:00
olimex-stm32-h405.c hw/arm: Add missing QOM parent for v7-M SoCs 2024-01-09 14:42:40 +00:00
omap1.c target/arm: Move ARM_CPU_IRQ/FIQ definitions to 'cpu-qom.h' header 2024-01-26 11:30:49 +00:00
omap2.c hw/arm: Build various units only once 2024-01-26 11:30:49 +00:00
omap_sx1.c hw/arm: Build various units only once 2024-01-26 11:30:49 +00:00
orangepi.c hw/arm: Check CPU type in machine_run_board_init() 2024-01-05 16:20:15 +01:00
palm.c hw/arm: Deprecate various old Arm machine types 2024-03-11 16:42:57 +00:00
pxa2xx_gpio.c hw/arm: Constify VMState 2023-12-29 11:17:30 +11:00
pxa2xx_pic.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
pxa2xx.c hw/arm: Constify VMState 2023-12-29 11:17:30 +11:00
raspi4b.c raspi4b: Reduce RAM to 1Gb on 32-bit hosts 2024-04-02 10:13:48 +01:00
raspi.c hw/arm/raspi4b: Temporarily disable unimplemented rpi4b devices 2024-02-27 13:01:42 +00:00
realview.c hw/display/pl110: Pass frame buffer memory region as link property 2024-02-26 18:39:58 +01:00
sabrelite.c hw/arm/fsl-imx6: Remove 'hw/arm/boot.h' from header 2023-10-27 12:42:13 +01:00
sbsa-ref.c hw/arm/sbsa-ref: Enable CPU cluster on ARM sbsa machine 2024-06-21 16:24:46 +01:00
smmu-common.c hw/arm/smmu: Fix IPA for stage-2 events 2024-07-18 13:49:29 +01:00
smmu-internal.h hw/arm/smmuv3: Add VMID to TLB tagging 2023-05-30 15:50:16 +01:00
smmuv3-internal.h hw/arm/smmuv3: add support for stage 1 access fault 2024-02-15 13:38:11 +00:00
smmuv3.c hw/arm/smmu: Fix IPA for stage-2 events 2024-07-18 13:49:29 +01:00
spitz.c hw/arm: Deprecate various old Arm machine types 2024-03-11 16:42:57 +00:00
stellaris.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
stm32f100_soc.c hw/arm/socs: configure priority bits for existing SOCs 2024-01-09 14:42:40 +00:00
stm32f205_soc.c hw/arm/socs: configure priority bits for existing SOCs 2024-01-09 14:42:40 +00:00
stm32f405_soc.c hw/arm/socs: configure priority bits for existing SOCs 2024-01-09 14:42:40 +00:00
stm32l4x5_soc.c hw/arm: In STM32L4x5 SOC, connect USART devices to EXTI 2024-07-11 11:41:34 +01:00
stm32vldiscovery.c hw/arm: Add missing QOM parent for v7-M SoCs 2024-01-09 14:42:40 +00:00
strongarm.c hw/arm/strongarm.c: convert DPRINTF to trace events and guest errors 2024-02-02 13:51:58 +00:00
strongarm.h
tosa.c hw/arm: Deprecate various old Arm machine types 2024-03-11 16:42:57 +00:00
trace-events hw/arm/bcm2838: Add GIC-400 to BCM2838 SoC 2024-02-27 13:01:42 +00:00
trace.h
versatilepb.c hw/display/pl110: Pass frame buffer memory region as link property 2024-02-26 18:39:58 +01:00
vexpress.c hw/display/pl110: Pass frame buffer memory region as link property 2024-02-26 18:39:58 +01:00
virt-acpi-build.c hw/arm/virt-acpi-build: Fix id_count in build_iort_id_mapping 2024-07-03 18:14:06 -04:00
virt.c hw: skip registration of outdated versioned machine types 2024-07-02 06:58:37 +02:00
xen_arm.c hw/arm: xen: Enable use of grant mappings 2024-06-09 20:16:14 +02:00
xilinx_zynq.c hw/arm/xilinx_zynq: Add boot-mode property 2024-07-01 15:40:54 +01:00
xlnx-versal-virt.c aspeed/smc: Only wire flash devices at reset 2024-03-19 11:58:15 +01:00
xlnx-versal.c hw/arm: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
xlnx-zcu102.c hw/arm/xlnx-zynqmp: Remove 'hw/arm/boot.h' from header 2023-10-27 12:42:13 +01:00
xlnx-zynqmp.c hw/arm: use qemu_configure_nic_device() 2024-02-02 16:23:47 +00:00
z2.c hw/arm: Deprecate various old Arm machine types 2024-03-11 16:42:57 +00:00