Browse Source

ACPI / watchdog: Fix init failure with overlapping register regions

Partially overlapping regions cause platform device creation
to fail. The latter of two overlapping resources will fail to be
reserved. Fix this by merging overlapping resource ranges while
enumerating WDAT table entries.

Signed-off-by: Ryan Kennedy <ryan5544@gmail.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Ryan Kennedy 8 years ago
parent
commit
31e86cb99a
1 changed files with 6 additions and 1 deletions
  1. 6 1
      drivers/acpi/acpi_watchdog.c

+ 6 - 1
drivers/acpi/acpi_watchdog.c

@@ -86,7 +86,12 @@ void __init acpi_watchdog_init(void)
 
 
 		found = false;
 		found = false;
 		resource_list_for_each_entry(rentry, &resource_list) {
 		resource_list_for_each_entry(rentry, &resource_list) {
-			if (resource_contains(rentry->res, &res)) {
+			if (rentry->res->flags == res.flags &&
+			    resource_overlaps(rentry->res, &res)) {
+				if (res.start < rentry->res->start)
+					rentry->res->start = res.start;
+				if (res.end > rentry->res->end)
+					rentry->res->end = res.end;
 				found = true;
 				found = true;
 				break;
 				break;
 			}
 			}