[PATCH v2 2/3] dump: add crash_occurred flag to QEMUCPUState
Zhengrong Li <[email protected]> Wed, 05 Aug 2026 17:05:58 +0800
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <[email protected]> |
Add is_crash_occurred_cpu field to QEMUCPUState so that
dump-guest-memory can record which CPU triggered the guest
panic.
The new field is appended after kernel_gs_base, so existing
tools that check the 'size' field can safely ignore it when
reading older dumps.
Changes since v1:
- Revert QEMUCPUSTATE_VERSION bump (not needed, tools check size)
- Move crash_occurred check outside #ifdef TARGET_X86_64 to fix
-Werror=unused-variable on i386 builds (reported by Akihiko Odaki)
- Use linux.alibaba.com identity
Signed-off-by: Zhengrong Li <[email protected]>
---
contrib/elf2dmp/qemu_elf.h | 2 ++
target/i386/arch_dump.c | 6 ++++++
2 files changed, 8 insertions(+)
diff --git a/contrib/elf2dmp/qemu_elf.h b/contrib/elf2dmp/qemu_elf.h
index adc50238b4..3b28332e67 100644
--- a/contrib/elf2dmp/qemu_elf.h
+++ b/contrib/elf2dmp/qemu_elf.h
@@ -27,6 +27,8 @@ typedef struct QEMUCPUState {
QEMUCPUSegment ldt, tr, gdt, idt;
uint64_t cr[5];
uint64_t kernel_gs_base;
+ uint8_t is_crash_occurred_cpu;
+ uint8_t pad[7];
} QEMUCPUState;
int is_system(QEMUCPUState *s);
diff --git a/target/i386/arch_dump.c b/target/i386/arch_dump.c
index 16e47c4747..8ce2c7e9bb 100644
--- a/target/i386/arch_dump.c
+++ b/target/i386/arch_dump.c
@@ -264,6 +264,8 @@ struct QEMUCPUState {
* by checking 'size' field.
*/
uint64_t kernel_gs_base;
+ uint8_t is_crash_occurred_cpu;
+ uint8_t pad[7];
};
typedef struct QEMUCPUState QEMUCPUState;
@@ -279,6 +281,7 @@ static void copy_segment(QEMUCPUSegment *d, SegmentCache *s)
static void qemu_get_cpustate(QEMUCPUState *s, CPUX86State *env)
{
+ CPUState *cs = env_cpu(env);
memset(s, 0, sizeof(QEMUCPUState));
s->version = QEMUCPUSTATE_VERSION;
@@ -325,6 +328,9 @@ static void qemu_get_cpustate(QEMUCPUState *s, CPUX86State *env)
#ifdef TARGET_X86_64
s->kernel_gs_base = env->kernelgsbase;
#endif
+ if (cs->crash_occurred) {
+ s->is_crash_occurred_cpu = 1;
+ }
}
static inline int cpu_write_qemu_note(WriteCoreDumpFunction f,
--
2.43.0