[PATCH] acpi: reboot: log reset parameters

[email protected] Wed, 29 Jul 2026 17:18:55 -0700
Newsgroups gmane.comp.emulators.xen.devel
Message-ID <[email protected]>
From: Denis Mukhin <[email protected]> 

Xen does not provide much details for system reset debugging in case
system reset happens via ACPI subsystem.

Log reset I/O address and reset value.

While here, fix the missing default case, guard it with
ASSERT_UNREACHABLE() and drop full stops in the loglines.

Signed-off-by: Denis Mukhin <[email protected]>
---
CI: https://gitlab.com/xen-project/people/dmukhin/xen/-/pipelines/2716843348 
---
 xen/drivers/acpi/reboot.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/xen/drivers/acpi/reboot.c b/xen/drivers/acpi/reboot.c
index f6345be8749f..3b0437395674 100644
--- a/xen/drivers/acpi/reboot.c
+++ b/xen/drivers/acpi/reboot.c
@@ -6,6 +6,7 @@ void acpi_reboot(void)
 {
 	struct acpi_generic_address *rr;
 	u8 reset_value;
+	pci_sbdf_t sbdf;
 
 	rr = &acpi_gbl_FADT.reset_register;
 
@@ -21,17 +22,24 @@ void acpi_reboot(void)
 	 * on a device on bus 0. */
 	switch (rr->space_id) {
 	case ACPI_ADR_SPACE_PCI_CONFIG:
-		printk("Resetting with ACPI PCI RESET_REG.\n");
+		sbdf = PCI_SBDF(0, 0, rr->address >> 32, rr->address >> 16);
+		printk("Resetting with ACPI PCI %pp RESET_REG at 0x%"PRIx64" (0x%x)\n",
+			&sbdf, rr->address & 0xffu, reset_value);
 		/* Write the value that resets us. */
-		pci_conf_write8(PCI_SBDF(0, 0, rr->address >> 32,
-					 rr->address >> 16),
-				(rr->address & 255),
-				reset_value);
+		pci_conf_write8(sbdf, rr->address & 0xffu, reset_value);
 		break;
 	case ACPI_ADR_SPACE_SYSTEM_MEMORY:
-	case ACPI_ADR_SPACE_SYSTEM_IO:
-		printk("Resetting with ACPI MEMORY or I/O RESET_REG.\n");
+		printk("Resetting with ACPI MEMORY at 0x%"PRIx64" (0x%x)\n",
+			rr->address, reset_value);
 		acpi_hw_low_level_write(8, reset_value, rr);
 		break;
+	case ACPI_ADR_SPACE_SYSTEM_IO:
+		printk("Resetting with I/O RESET_REG at 0x%"PRIx64" (0x%x)\n",
+			rr->address, reset_value);
+		acpi_hw_low_level_write(8, reset_value, rr);
+		break;
+	default:
+		ASSERT_UNREACHABLE();
+		break;
 	}
 }
-- 
2.54.0