I was able to kexec into Qubes using kexec-tools with patch from Heads and this Xen patch:
vmm_xen_acpi_addr_uefi_wo_csm.patch
From 5e8be706eb4429a474a16850fe7a2591565cc5b1 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: Fri, 21 Apr 2023 04:28:31 +0000
Subject: [PATCH] get ACPI table address on UEFI without CSM from command line
option
---
0299-acpi_addr_uefi_wo_csm.patch | 70 ++++++++++++++++++++++++++++++++
xen.spec.in | 1 +
2 files changed, 71 insertions(+)
create mode 100644 0299-acpi_addr_uefi_wo_csm.patch
diff --git a/0299-acpi_addr_uefi_wo_csm.patch b/0299-acpi_addr_uefi_wo_csm.patch
new file mode 100644
index 0000000..9b1b99e
--- /dev/null
+++ b/0299-acpi_addr_uefi_wo_csm.patch
@@ -0,0 +1,70 @@
+From 5f628e2f36d7840054ee4590db3038a0dbcec02e Mon Sep 17 00:00:00 2001
+From: Your Name <you@example.com>
+Date: Fri, 21 Apr 2023 04:25:47 +0000
+Subject: [PATCH] get ACPI table address on UEFI without CSM from command line
+ option
+
+---
+ xen/arch/x86/guest/xen/pvh-boot.c | 2 +-
+ xen/drivers/acpi/osl.c | 8 +++++---
+ xen/include/xen/acpi.h | 2 +-
+ 3 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/xen/arch/x86/guest/xen/pvh-boot.c b/xen/arch/x86/guest/xen/pvh-boot.c
+index 9cbe87b61b..b022708b69 100644
+--- a/xen/arch/x86/guest/xen/pvh-boot.c
++++ b/xen/arch/x86/guest/xen/pvh-boot.c
+@@ -67,7 +67,7 @@ static void __init convert_pvh_info(multiboot_info_t **mbi,
+ pvh_mbi_mods[i].string = entry[i].cmdline_paddr;
+ }
+
+- rsdp_hint = pvh_info->rsdp_paddr;
++ acpi_rsdp = pvh_info->rsdp_paddr;
+
+ *mbi = &pvh_mbi;
+ *mod = pvh_mbi_mods;
+diff --git a/xen/drivers/acpi/osl.c b/xen/drivers/acpi/osl.c
+index 389505f786..516793fe4a 100644
+--- a/xen/drivers/acpi/osl.c
++++ b/xen/drivers/acpi/osl.c
+@@ -37,6 +37,7 @@
+ #include <xen/domain_page.h>
+ #include <xen/efi.h>
+ #include <xen/vmap.h>
++#include <xen/param.h>
+
+ #define _COMPONENT ACPI_OS_SERVICES
+ ACPI_MODULE_NAME("osl")
+@@ -62,12 +63,13 @@ void __init acpi_os_vprintf(const char *fmt, va_list args)
+ printk("%s", buffer);
+ }
+
+-acpi_physical_address __initdata rsdp_hint;
++acpi_physical_address __initdata acpi_rsdp;
++integer_param("acpi_rsdp", acpi_rsdp);
+
+ acpi_physical_address __init acpi_os_get_root_pointer(void)
+ {
+- if (rsdp_hint)
+- return rsdp_hint;
++ if (acpi_rsdp)
++ return acpi_rsdp;
+
+ if (efi_enabled(EFI_BOOT)) {
+ if (efi.acpi20 != EFI_INVALID_TABLE_ADDR)
+diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h
+index 352f27f6a7..11a1bca08b 100644
+--- a/xen/include/xen/acpi.h
++++ b/xen/include/xen/acpi.h
+@@ -54,7 +54,7 @@
+
+ #ifdef CONFIG_ACPI
+
+-extern acpi_physical_address rsdp_hint;
++extern acpi_physical_address acpi_rsdp;
+
+ extern bool opt_acpi_verbose;
+
+--
+2.40.0
+
diff --git a/xen.spec.in b/xen.spec.in
index 920b1d5..1cb5965 100644
--- a/xen.spec.in
+++ b/xen.spec.in
@@ -92,6 +92,7 @@ Patch0201: 0201-EFI-early-Add-noexit-to-inhibit-calling-ExitBootServ.patch
Patch0202: 0202-efi-Ensure-incorrectly-typed-runtime-services-get-ma.patch
Patch0203: 0203-Add-xen.cfg-options-for-mapbs-and-noexitboot.patch
Patch0204: 0204-xen.efi.build.patch
+Patch0299: 0299-acpi_addr_uefi_wo_csm.patch
# Backports
Patch0300: 0300-Relocate-the-ESRT-when-booting-via-multiboot2.patch
--
2.40.0