Mario Scheithauer has uploaded this change for review. ( https://review.coreboot.org/22552
Change subject: arch/x86: Write ACPI DBG2 table only if the device has been enabled ......................................................................
arch/x86: Write ACPI DBG2 table only if the device has been enabled
The commit https://review.coreboot.org/#/c/22452/ 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 has been enabled.
Change-Id: I56ce44ae0cf77916fcb640f79fb8944fe33177cd Signed-off-by: Mario Scheithauer mario.scheithauer@siemens.com --- M src/arch/x86/acpi.c 1 file changed, 5 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/52/22552/1
diff --git a/src/arch/x86/acpi.c b/src/arch/x86/acpi.c index 56f6408..5a29ac1 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 tpearson@raptorengineeringinc.com, * Raptor Engineering - * Copyright (C) 2016 Siemens AG + * Copyright (C) 2016-2017 Siemens AG * * ACPI FADT, FACS, and DSDT table support added by * Nick Barker nick.barker9@btinternet.com, and those portions @@ -734,6 +734,10 @@ printk(BIOS_ERR, "%s: Device not found\n", __func__); return current; } + if (!dev->enabled) { + printk(BIOS_ERR, "%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",