qemu/hw/arm
Eric Auger 6d9cd115b9 hw/arm/smmuv3: Enforce invalidation on a power of two range
As of today, the driver can invalidate a number of pages that is
not a power of 2. However IOTLB unmap notifications and internal
IOTLB invalidations work with masks leading to erroneous
invalidations.

In case the range is not a power of 2, split invalidations into
power of 2 invalidations.

When looking for a single page entry in the vSMMU internal IOTLB,
let's make sure that if the entry is not found using a
g_hash_table_remove() we iterate over all the entries to find a
potential range that overlaps it.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20210309102742.30442-6-eric.auger@redhat.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2021-03-12 12:40:10 +00:00
..
allwinner-a10.c hw/sd/allwinner-sdhost: Use AddressSpace for DMA transfers 2020-08-28 10:02:45 +01:00
allwinner-h3.c target-arm queue: 2020-08-28 15:14:40 +01:00
armsse.c hw/arm/armsse: Add SSE-300 support 2021-03-08 17:20:03 +00:00
armv7m.c qtest: delete superfluous inclusions of qtest.h 2021-03-09 06:03:53 +01:00
aspeed_ast2600.c hw/misc: Model KCS devices in the Aspeed LPC controller 2021-03-09 12:01:28 +01:00
aspeed_soc.c hw/misc: Model KCS devices in the Aspeed LPC controller 2021-03-09 12:01:28 +01:00
aspeed.c arm: do not use ram_size global 2020-12-10 12:15:07 -05:00
bcm2835_peripherals.c hw/arm/bcm2835_peripherals: connect the UART clock 2020-10-27 11:10:44 +00:00
bcm2836.c hw/arm/bcm2836: Introduce the BCM2835 SoC 2020-10-27 11:10:44 +00:00
boot.c vl: make qemu_get_machine_opts static 2020-12-15 12:51:55 -05:00
collie.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
cubieboard.c arm: remove bios_name 2020-12-10 12:15:04 -05:00
digic_boards.c hw/arm: Display CPU type in machine description 2021-02-03 10:15:51 +00:00
digic.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
exynos4_boards.c sysbus: Convert qdev_set_parent_bus() use with Coccinelle, part 1 2020-06-15 22:06:04 +02:00
exynos4210.c qom: simplify object_find_property / object_class_find_property 2020-09-22 16:45:16 -04:00
fsl-imx6.c Add the ability to change the FEC PHY MDIO device number on i.MX6 processor 2020-07-13 14:36:08 +01:00
fsl-imx6ul.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
fsl-imx7.c Add the ability to change the FEC PHY MDIO devices numbers on i.MX7 processor 2020-07-13 14:36:08 +01:00
fsl-imx25.c Add the ability to change the FEC PHY MDIO device number on i.MX25 processor 2020-07-13 14:36:07 +01:00
fsl-imx31.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
gumstix.c hw/arm/gumstix: Simplify since the machines are little-endian only 2020-03-05 16:09:14 +00:00
highbank.c hw/arm/highbank: Drop dead KVM support code 2021-01-08 15:13:38 +00:00
imx25_pdk.c qdev: Make qdev_prop_set_drive() match the other helpers 2020-06-23 16:07:07 +02:00
integratorcp.c qom: simplify object_find_property / object_class_find_property 2020-09-22 16:45:16 -04:00
Kconfig hw/arm: xlnx-zynqmp: Connect a Xilinx CSU DMA module for QSPI 2021-03-10 13:54:51 +00:00
kzm.c qdev: Convert bus-less devices to qdev_realize() with Coccinelle 2020-06-15 22:06:04 +02:00
mainstone.c qtest: delete superfluous inclusions of qtest.h 2021-03-09 06:03:53 +01:00
mcimx6ul-evk.c qom: Put name parameter before value / visitor parameter 2020-07-10 15:18:08 +02:00
mcimx7d-sabre.c qdev: Make qdev_prop_set_drive() match the other helpers 2020-06-23 16:07:07 +02:00
meson.build hw/arm: Add two NPCM7xx-based machines 2020-09-14 14:24:58 +01:00
microbit.c hw/arm: Display CPU type in machine description 2021-02-03 10:15:51 +00:00
mps2-tz.c hw/arm/mps2-tz: Add new mps3-an547 board 2021-03-08 17:20:03 +00:00
mps2.c hw/misc/mps2-scc: Support configurable number of OSCCLK values 2021-03-06 13:30:38 +00:00
msf2-soc.c msf2-soc, stellaris: Don't wire up SYSRESETREQ 2020-08-03 17:55:03 +01:00
msf2-som.c qdev: Make qdev_prop_set_drive() match the other helpers 2020-06-23 16:07:07 +02:00
musca.c arm: Update infocenter.arm.com URLs 2021-02-11 11:50:14 +00:00
musicpal.c hw/arm/musicpal: Remove dead code for non-32-bit-RGB surfaces 2021-03-05 15:17:35 +00:00
netduino2.c hw/arm: Display CPU type in machine description 2021-02-03 10:15:51 +00:00
netduinoplus2.c hw/arm: Display CPU type in machine description 2021-02-03 10:15:51 +00:00
npcm7xx_boards.c hw/arm: Add I2C sensors and EEPROM for GSJ machine 2021-02-16 13:50:38 +00:00
npcm7xx.c hw/arm: Add npcm7xx emc model 2021-03-05 15:17:34 +00:00
nrf51_soc.c hw/arm/nrf51_soc: Set system_clock_scale 2020-08-03 17:55:31 +01:00
nseries.c hw/arm/nseries: Check return value from load_image_targphys() 2020-11-10 11:03:48 +00:00
omap1.c hw/arm/omap1:Remove redundant statement in omap_clkdsp_read() 2020-09-01 11:53:44 +02:00
omap2.c sysbus: Convert to sysbus_realize() etc. with Coccinelle 2020-06-15 22:05:28 +02:00
omap_sx1.c hw/arm: Use memory_region_init_rom() with read-only regions 2020-03-17 15:18:46 +01:00
orangepi.c hw/arm: Display CPU type in machine description 2021-02-03 10:15:51 +00:00
palm.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
pxa2xx_gpio.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
pxa2xx_pic.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
pxa2xx.c qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
raspi.c hw/arm/raspi: Add the Raspberry Pi 3 model A+ 2020-10-27 11:10:44 +00:00
realview.c qom: simplify object_find_property / object_class_find_property 2020-09-22 16:45:16 -04:00
sabrelite.c hw/arm: sabrelite: Connect the Ethernet PHY at address 6 2021-01-08 15:13:39 +00:00
sbsa-ref.c sbsa-ref: add 'max' to list of allowed cpus 2021-03-05 15:17:33 +00:00
smmu-common.c hw/arm/smmuv3: Enforce invalidation on a power of two range 2021-03-12 12:40:10 +00:00
smmu-internal.h hw/arm/smmu-common: Manage IOTLB block entries 2020-08-24 10:02:06 +01:00
smmuv3-internal.h hw/arm/smmuv3: Fix up L1STD_SPAN decoding 2020-12-10 11:30:44 +00:00
smmuv3.c hw/arm/smmuv3: Enforce invalidation on a power of two range 2021-03-12 12:40:10 +00:00
spitz.c hw/ssi: Rename SSI 'slave' as 'peripheral' 2020-12-10 12:15:03 -05:00
stellaris.c hw/arm: Display CPU type in machine description 2021-02-03 10:15:51 +00:00
stm32f205_soc.c hw/misc/stm32f2xx_syscfg: Remove extraneous IRQ 2020-11-10 11:03:48 +00:00
stm32f405_soc.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
strongarm.c qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
strongarm.h hw/arm/collie: Create the RAM in the board 2019-10-22 17:44:01 +01:00
sysbus-fdt.c hw/arm/virt: vTPM support 2020-03-05 12:18:16 -05:00
tosa.c hw/ssi: Rename SSI 'slave' as 'peripheral' 2020-12-10 12:15:03 -05:00
trace-events arm/trace: Fix hex printing 2020-10-27 11:10:44 +00:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
versatilepb.c qom: simplify object_find_property / object_class_find_property 2020-09-22 16:45:16 -04:00
vexpress.c vexpress-a15: Register "virtualization" as class property 2020-12-14 14:25:44 -05:00
virt-acpi-build.c acpi: Permit OEM ID and OEM table ID fields to be changed 2021-02-05 08:52:59 -05:00
virt.c hw/board: promote fdt from ARM VirtMachineState to MachineState 2021-03-10 15:34:11 +00:00
xilinx_zynq.c qom: simplify object_find_property / object_class_find_property 2020-09-22 16:45:16 -04:00
xlnx-versal-virt.c arm: xlnx-versal: Connect usb to virt-versal 2020-12-15 12:04:30 +00:00
xlnx-versal.c hw/arm: versal: Add support for the XRAMs 2021-03-12 12:40:09 +00:00
xlnx-zcu102.c qtest: delete superfluous inclusions of qtest.h 2021-03-09 06:03:53 +01:00
xlnx-zynqmp.c hw/arm: xlnx-zynqmp: Connect a Xilinx CSU DMA module for QSPI 2021-03-10 13:54:51 +00:00
z2.c qtest: delete superfluous inclusions of qtest.h 2021-03-09 06:03:53 +01:00