arch/x86: Write ACPI DBG2 table only if the device has been enabled

The commit 93bbd41e (soc/intel: Enable ACPI DBG2 table generation)
causes a crash on the mainboard mc_apl1. On this mainboard all internal
SOC UARTs in the devicetree are switched off. As a result, no resources
are allocated to the UARTs. The function find_resource() expects an
existing resource. Otherwise, the CPU will stop. It should therefore not
only be queried whether a device is present, but also whether it is

Change-Id: I56ce44ae0cf77916fcb640f79fb8944fe33177cd
Signed-off-by: Mario Scheithauer <>
Tested-by: build bot (Jenkins) <>
Reviewed-by: Aaron Durbin <>
Reviewed-by: Duncan Laurie <>
diff --git a/src/arch/x86/acpi.c b/src/arch/x86/acpi.c
index 56f6408..601b6f0 100644
--- a/src/arch/x86/acpi.c
+++ b/src/arch/x86/acpi.c
@@ -8,7 +8,7 @@
  * Copyright (C) 2005-2009 coresystems GmbH
  * Copyright (C) 2015 Timothy Pearson <>,
  * Raptor Engineering
- * Copyright (C) 2016 Siemens AG
+ * Copyright (C) 2016-2017 Siemens AG
  * ACPI FADT, FACS, and DSDT table support added by
  * Nick Barker <>, and those portions
@@ -734,6 +734,10 @@
 		printk(BIOS_ERR, "%s: Device not found\n", __func__);
 		return current;
+	if (!dev->enabled) {
+		printk(BIOS_INFO, "%s: Device not enabled\n", __func__);
+		return current;
+	}
 	res = find_resource(dev, PCI_BASE_ADDRESS_0);
 	if (!res) {
 		printk(BIOS_ERR, "%s: Unable to find resource for %s\n",