> On 16. Jan 2026, at 15:20, Philippe Mathieu-Daudé <[email protected]> wrote: > > On 16/1/26 14:52, Mohamed Mediouni wrote: >> Some code can be shared between x86_64 and arm64 WHPX. Do so as much as >> reasonable. >> Signed-off-by: Mohamed Mediouni <[email protected]> >> Reviewed-by: Pierrick Bouvier <[email protected]> >> --- >> MAINTAINERS | 2 + >> accel/whpx/meson.build | 1 + >> accel/whpx/whpx-common.c | 558 +++++++++++++++++++++++++++++++++++ >> include/system/whpx-all.h | 20 ++ >> include/system/whpx-common.h | 21 ++ >> target/i386/whpx/whpx-all.c | 551 +--------------------------------- >> 6 files changed, 612 insertions(+), 541 deletions(-) >> create mode 100644 accel/whpx/whpx-common.c >> create mode 100644 include/system/whpx-all.h >> create mode 100644 include/system/whpx-common.h > > >> diff --git a/include/system/whpx-all.h b/include/system/whpx-all.h >> new file mode 100644 >> index 0000000000..f13cdf7f66 >> --- /dev/null >> +++ b/include/system/whpx-all.h >> @@ -0,0 +1,20 @@ >> +/* SPDX-License-Identifier: GPL-2.0-or-later */ >> +#ifndef SYSTEM_WHPX_ALL_H >> +#define SYSTEM_WHPX_ALL_H >> + >> +/* Called by whpx-common */ >> +int whpx_vcpu_run(CPUState *cpu); >> +void whpx_get_registers(CPUState *cpu); >> +void whpx_set_registers(CPUState *cpu, int level); >> +int whpx_accel_init(AccelState *as, MachineState *ms); >> +void whpx_cpu_instance_init(CPUState *cs); >> +HRESULT whpx_set_exception_exit_bitmap(UINT64 exceptions); >> +void whpx_apply_breakpoints( >> +struct whpx_breakpoint_collection *breakpoints, >> + CPUState *cpu, >> + bool resuming); >> +void whpx_translate_cpu_breakpoints( >> + struct whpx_breakpoints *breakpoints, >> + CPUState *cpu, >> + int cpu_breakpoint_count); >> +#endif >> diff --git a/include/system/whpx-common.h b/include/system/whpx-common.h >> new file mode 100644 >> index 0000000000..e549c7539c >> --- /dev/null >> +++ b/include/system/whpx-common.h >> @@ -0,0 +1,21 @@ >> +/* SPDX-License-Identifier: GPL-2.0-or-later */ >> +#ifndef SYSTEM_WHPX_COMMON_H >> +#define SYSTEM_WHPX_COMMON_H >> + >> +struct AccelCPUState { >> + WHV_EMULATOR_HANDLE emulator; >> + bool window_registered; >> + bool interruptable; >> + bool ready_for_pic_interrupt; >> + uint64_t tpr; >> + uint64_t apic_base; >> + bool interruption_pending; >> + /* Must be the last field as it may have a tail */ >> + WHV_RUN_VP_EXIT_CONTEXT exit_ctx; >> +}; >> + >> +int whpx_first_vcpu_starting(CPUState *cpu); >> +int whpx_last_vcpu_stopping(CPUState *cpu); >> +void whpx_memory_init(void); >> +struct whpx_breakpoint *whpx_lookup_breakpoint_by_addr(uint64_t address); >> +#endif > I'd rather rename the target-specific handlers as > whpx_foo() -> whpx_arch_foo() to help follow in common code > when we are calling target-specific implementations. > (can be done on top later if the series is good to go)
Hello, Going to take care of this one with a post-merge follow-up patch, along with moving the header location.
