qemu-cr16/include/hw
Aditya Gupta 7e69675d7f
hw/ppc: Implement saving CPU state in Fadump
Kernel expects CPU states/register states in the format mentioned in
"Register Save Area" in PAPR.

The platform (in our case, QEMU) saves each CPU register in the form of
an array of "register entries", the start and end of this array is
signified by "CPUSTRT" and "CPUEND" register entries respectively.

The CPUSTRT and CPUEND register entry also has 4-byte logical CPU ID,
thus storing the CPU ID corresponding to the array of register entries.

Each register, and CPUSTRT, CPUEND has a predefined identifier.
Implement calculating identifier for a given register in
'fadump_str_to_u64', which has been taken from the linux kernel

Similarly GPRs also have predefined identifiers, and a corresponding
64-bit resiter value (split into two 32-bit cells). Implement
calculation of GPR identifiers with 'fadump_gpr_id_to_u64'

PAPR has restrictions on particular order of few registers, and is
free to be in any order for other registers.
Some registers mentioned in PAPR have not been exported as they are not
implemented in QEMU / don't make sense in QEMU.

Implement saving of CPU state according to the PAPR document

Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
Reviewed-by: Sourabh Jain <sourabhjain@linux.ibm.com>
Tested-by: Shivang Upadhyay <shivangu@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20251021134823.1861675-5-adityag@linux.ibm.com
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
2025-10-23 17:37:40 +05:30
..
acpi qapi/acpi-hest: add an interface to do generic CPER error injection 2025-10-05 08:06:32 -04:00
adc hw/adc: Remove MAX111X device 2024-10-15 15:16:17 +01:00
arm hw/arm/ast27x0: Share single UART set across PSP, SSP, and TSP 2025-10-22 08:14:08 +02:00
audio hw/audio: rename model list function 2025-10-22 08:55:28 +02:00
block hw/block: Drop unused nand.c 2025-05-29 17:45:13 +01:00
char MAX78000: UART Implementation 2025-07-08 17:31:38 +01:00
core target/arm: Introduce mmu indexes for GCS 2025-10-10 10:42:12 +01:00
cpu
cxl hw/cxl: mailbox-utils: 0x5604 - FMAPI Initiate DC Add 2025-07-15 02:56:40 -04:00
display hw/display/bcm2835_fb: Move inclusion of console.h to the .c file 2025-09-09 09:31:15 +02:00
dma include/hw/dma/xlnx_dpdma: Remove dependency on console.h 2025-05-14 11:50:42 +02:00
firmware hw/smbios: allow clearing the VM bit in SMBIOS table 0 2025-10-05 08:17:08 -04:00
fsi include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
gpio hw/gpio/aspeed: Fix definition of AspeedGPIOClass 2025-06-10 12:59:09 +02:00
hyperv include/hw/hyperv: Add MSHV ABI header definitions 2025-10-08 19:17:29 +02:00
i2c include/hw: replace FSF postal address with licenses URL 2025-06-26 00:42:37 +02:00
i386 hw/i386/apic: Ensure own APIC use in apic_msr_{read,write} 2025-10-21 20:16:47 +02:00
ide include/system: Move exec/ioport.h to system/ioport.h 2025-04-23 14:08:21 -07:00
input hw/input: Remove lm832x device 2024-10-01 14:41:10 +01:00
intc hw/loongarch/virt: Remove header file ls7a.h 2025-10-15 11:05:19 +08:00
ipack hw/ipack: Remove legacy qemu_allocate_irqs() use 2025-01-31 19:36:44 +01:00
ipmi include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
isa include/system: Move exec/ioport.h to system/ioport.h 2025-04-23 14:08:21 -07:00
loongarch hw/loongarch/virt: Sort order by hardware device base address 2025-10-15 11:07:37 +08:00
m68k include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
mem include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
mips include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
misc hw/core/register: remove the calls to `register_finalize_block' 2025-10-21 20:16:46 +02:00
net hw/net/can/xlnx-versal-canfd: remove register API usage for banked regs 2025-10-21 20:16:47 +02:00
nubus include/system: Move exec/address-spaces.h to system/address-spaces.h 2025-04-23 14:08:21 -07:00
nvram hw/core/register: remove the calls to `register_finalize_block' 2025-10-21 20:16:46 +02:00
openrisc hw/openrisc: Support monitor dumpdtb command 2025-02-24 15:03:42 +00:00
pci pcie: Add a way to get the outstanding page request allocation (pri) from the config space. 2025-10-05 09:01:08 -04:00
pci-bridge hw/pci-bridge/cxl-upstream: Add properties to control link speed and width 2024-11-04 16:03:24 -05:00
pci-host hw/loongarch/virt: Remove header file ls7a.h 2025-10-15 11:05:19 +08:00
ppc hw/ppc: Implement saving CPU state in Fadump 2025-10-23 17:37:40 +05:30
remote include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
riscv hw/riscv: Initial support for BOSC's Xiangshan Kunminghu FPGA prototype 2025-07-04 21:09:49 +10:00
rtc hw/i386: move rtc-reset-reinjection command out of hw/rtc 2024-05-10 15:45:15 +02:00
rx
s390x hw/s390x/ccw: Remove SCLPDevice::increment_size field 2025-10-21 15:47:21 +02:00
scsi esp.c: only allow ESP commands permitted in the current asc_mode 2025-07-15 00:25:21 +02:00
sd hw/sd/sdcard: Remove support for spec v1.10 2025-09-02 17:56:37 +02:00
sensor
sh4 include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
southbridge x86: ich9: fix default value of 'No Reboot' bit in GCS 2025-10-05 09:01:08 -04:00
sparc
ssi hw/ssi: Document ssi_transfer() method 2025-09-02 17:57:05 +02:00
timer hw/pcspk: use explicitly the required PIT types 2025-10-22 08:55:28 +02:00
tricore include/system: Move exec/address-spaces.h to system/address-spaces.h 2025-04-23 14:08:21 -07:00
uefi hw/uefi: add include/hw/uefi/var-service.h 2025-03-04 12:01:42 +01:00
usb hw/usb/hcd-dwc3: Align global registers size with Linux 2025-02-25 15:32:58 +00:00
vfio vfio: rename field to "num_initial_regions" 2025-10-22 08:12:52 +02:00
virtio virtio: unify virtio_notify_irqfd() and virtio_notify() 2025-10-05 09:01:08 -04:00
vmapple hw/vmapple/virtio-blk: Add support for apple virtio-blk 2025-03-04 14:45:34 +01:00
watchdog aspeed/wdt: Add AST2700 support 2024-06-16 21:08:54 +02:00
xen hw/xen/arch_hvm: Unify x86 and ARM variants 2025-07-15 19:10:15 +02:00
xtensa include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
boards.h hw/boards: Introduce DEFINE_MACHINE_WITH_INTERFACE_ARRAY() macro 2025-10-21 20:09:56 +02:00
clock.h clock: clear callback on unparent 2024-12-10 18:49:24 +01:00
elf_ops.h.inc
fw-path-provider.h
hotplug.h
hw.h meson: Only allow CONFIG_USER_ONLY from certain source sets 2025-04-23 14:08:44 -07:00
irq.h hw/irq: New qemu_init_irq_child() function 2025-09-02 17:57:05 +02:00
loader-fit.h hw/mips/boston: Support dumpdtb monitor commands 2025-02-24 15:03:42 +00:00
loader.h hw/nvram/fw_cfg: Remove legacy FW_CFG_ORDER_OVERRIDE 2025-05-30 09:52:08 +02:00
nmi.h
or-irq.h
platform-bus.h
ptimer.h
qdev-clock.h
qdev-core.h virtio: improve virtqueue mapping error messages 2025-10-05 16:19:12 -04:00
qdev-dma.h
qdev-properties-system.h hw/display: Allow injection of virtio-gpu EDID name 2025-07-15 10:22:33 +04:00
qdev-properties.h qdev-properties: Add DEFINE_PROP_ON_OFF_AUTO_BIT64() 2025-07-14 05:25:34 -04:00
register.h hw/core/register: remove the `register_finalize_block' function 2025-10-21 20:16:46 +02:00
registerfields.h
resettable.h reset: Add RESET_TYPE_WAKEUP 2024-09-24 11:33:35 +02:00
stream.h
sysbus.h hw/core/sysbus: Introduce sysbus_mmio_map_name() helper 2025-07-15 02:56:40 -04:00
usb.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
vmstate-if.h