qemu-patch-raspberry4/hw
Peter Maydell a724377a11 hw/intc/armv7m_nvic: Make all of system PPB range be RAZWI/BusFault
For M-profile CPUs, the range from 0xe0000000 to 0xe00fffff is the
Private Peripheral Bus range, which includes all of the memory mapped
devices and registers that are part of the CPU itself, including the
NVIC, systick timer, and debug and trace components like the Data
Watchpoint and Trace unit (DWT).  Within this large region, the range
0xe000e000 to 0xe000efff is the System Control Space (NVIC, system
registers, systick) and 0xe002e000 to 0exe002efff is its Non-secure
alias.

The architecture is clear that within the SCS unimplemented registers
should be RES0 for privileged accesses and generate BusFault for
unprivileged accesses, and we currently implement this.

It is less clear about how to handle accesses to unimplemented
regions of the wider PPB.  Unprivileged accesses should definitely
cause BusFaults (R_DQQS), but the behaviour of privileged accesses is
not given as a general rule.  However, the register definitions of
individual registers for components like the DWT all state that they
are RES0 if the relevant component is not implemented, so the
simplest way to provide that is to provide RAZ/WI for the whole range
for privileged accesses.  (The v7M Arm ARM does say that reserved
registers should be UNK/SBZP.)

Expand the container MemoryRegion that the NVIC exposes so that
it covers the whole PPB space. This means:
 * moving the address that the ARMV7M device maps it to down by
   0xe000 bytes
 * moving the off and the offsets within the container of all the
   subregions forward by 0xe000 bytes
 * adding a new default MemoryRegion that covers the whole container
   at a lower priority than anything else and which provides the
   RAZWI/BusFault behaviour

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20201119215617.29887-2-peter.maydell@linaro.org
2020-12-10 11:44:55 +00:00
..
9pfs hw/9pfs: Fix Kconfig dependency problem between 9pfs and Xen 2020-11-05 15:21:11 +01:00
acpi x86: acpi: let the firmware handle pending "CPU remove" events in SMM 2020-12-09 13:04:17 -05:00
adc meson: convert hw/adc 2020-08-21 06:30:32 -04:00
alpha load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
arm hw/intc/armv7m_nvic: Make all of system PPB range be RAZWI/BusFault 2020-12-10 11:44:55 +00:00
audio nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
avr Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
block nand: put it into the 'storage' category 2020-11-17 10:17:02 +01:00
char nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
core hw: add compat machines for 6.0 2020-12-08 13:48:58 -05:00
cpu cpu/core: Register core-id and nr-threads as class properties 2020-09-22 16:48:29 -04:00
cris load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
display hw/display/tcx: add missing 64-bit access for framebuffer blitter 2020-11-22 10:43:30 +00:00
dma sparc32-ledma: don't reference nd_table directly within the device 2020-10-28 07:59:25 +00:00
gpio nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
hppa Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
hyperv qemu/atomic.h: rename atomic_ to qatomic_ 2020-09-23 16:07:44 +01:00
i2c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
i386 x86: ich9: let firmware negotiate 'CPU hot-unplug with SMI' feature 2020-12-09 13:04:17 -05:00
ide ide: atapi: assert that the buffer pointer is in range 2020-12-01 15:23:05 +00:00
input hw/input/ps2.c: Remove remnants of printf debug 2020-11-17 12:56:32 +00:00
intc hw/intc/armv7m_nvic: Make all of system PPB range be RAZWI/BusFault 2020-12-10 11:44:55 +00:00
ipack Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
ipmi Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
isa x86: ich9: let firmware negotiate 'CPU hot-unplug with SMI' feature 2020-12-09 13:04:17 -05:00
lm32 nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
m68k hw/m68k/mcf5206: Don't leak IRQs in mcf5206_mbar_realize() 2020-12-09 08:04:34 +01:00
mem nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
microblaze load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
mips hw/mips/boston: Fix memory leak in boston_fdt_filter() error-handling paths 2020-11-09 00:40:44 +01:00
misc i.MX6ul: Fix bad printf format specifiers 2020-12-10 11:44:55 +00:00
moxie load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
net hw/net/can: Introduce Xilinx ZynqMP CAN controller 2020-12-10 11:30:44 +00:00
nios2 load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
nubus meson: convert hw/nubus 2020-08-21 06:30:25 -04:00
nvram fw_cfg: Refactor extra pci roots addition 2020-12-08 13:48:57 -05:00
openrisc meson: convert hw/arch* 2020-08-21 06:30:33 -04:00
pci pci: Disallow improper BAR registration for type 1 2020-10-30 06:48:53 -04:00
pci-bridge nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
pci-host acpi/gpex: Build tables for pxb 2020-12-08 13:48:57 -05:00
pcmcia pxa2xx: Move QOM macros to header 2020-08-27 14:04:55 -04:00
ppc hw: add compat machines for 6.0 2020-12-08 13:48:58 -05:00
rdma qemu/atomic.h: rename atomic_ to qatomic_ 2020-09-23 16:07:44 +01:00
riscv hw/riscv: microchip_pfsoc: Hook the I2C1 controller 2020-11-03 07:17:23 -08:00
rtc m48t59: remove legacy m48t59_init() function 2020-10-18 16:21:42 +01:00
rx hw/rx/rx-gdbsim: Fix memory leak (CID 1432307) 2020-11-09 00:53:07 +01:00
s390x hw: add compat machines for 6.0 2020-12-08 13:48:58 -05:00
scsi scsi-disk: convert more errno values back to SCSI statuses 2020-11-16 13:22:17 -05:00
sd hw/sd: Fix 2 GiB card CSD register values 2020-11-17 11:45:13 +01:00
semihosting meson: convert hw/semihosting 2020-08-21 06:30:25 -04:00
sh4 Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
smbios hw/smbios: Fix leaked fd in save_opt_one() error path 2020-11-03 07:19:27 -05:00
sparc sparc32-ledma: don't reference nd_table directly within the device 2020-10-28 07:59:25 +00:00
sparc64 sabre: don't call sysbus_mmio_map() in sabre_realize() 2020-10-28 07:59:25 +00:00
ssi ssi: Fix bad printf format specifiers 2020-11-10 11:03:47 +00:00
timer exynos: Fix bad printf format specifiers 2020-11-17 12:56:32 +00:00
tpm tpm: Fix Lesser GPL version number 2020-11-15 16:44:18 +01:00
tricore tricore tcg cpus: Fix Lesser GPL version number 2020-11-15 16:40:30 +01:00
unicore32 meson: convert hw/arch* 2020-08-21 06:30:33 -04:00
usb usb: fix kconfig for usb-xhci-sysbus 2020-11-20 10:43:41 -05:00
vfio vfio: Change default dirty pages tracking behavior during migration 2020-11-23 10:05:58 -07:00
virtio hw/virtio-pci Added AER capability. 2020-12-09 13:04:17 -05:00
watchdog hw/watchdog: Implement SBSA watchdog device 2020-10-27 11:10:44 +00:00
xen nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
xenpv meson: convert hw/arch* 2020-08-21 06:30:33 -04:00
xtensa load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
Kconfig hw/net/can: Introduce Xilinx ZynqMP CAN controller 2020-12-10 11:30:44 +00:00
meson.build meson: convert hw/arch* 2020-08-21 06:30:33 -04:00