Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f80dd67 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ACPI fix from Rafael Wysocki:
 "This fixes an apparent, but actually artificial, resource conflict
  between the ACPI NVS memory region and the ACPI BERT (Boot Error
  Record Table) address range (Huang Ying)"

* tag 'acpi-extra-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI: APEI: Fix BERT resources conflict with ACPI NVS area
parents 080e4168 0cb3b79e
Loading
Loading
Loading
Loading
+12 −8
Original line number Original line Diff line number Diff line
@@ -97,6 +97,7 @@ static int __init bert_check_table(struct acpi_table_bert *bert_tab)


static int __init bert_init(void)
static int __init bert_init(void)
{
{
	struct apei_resources bert_resources;
	struct acpi_bert_region *boot_error_region;
	struct acpi_bert_region *boot_error_region;
	struct acpi_table_bert *bert_tab;
	struct acpi_table_bert *bert_tab;
	unsigned int region_len;
	unsigned int region_len;
@@ -127,13 +128,14 @@ static int __init bert_init(void)
	}
	}


	region_len = bert_tab->region_length;
	region_len = bert_tab->region_length;
	if (!request_mem_region(bert_tab->address, region_len, "APEI BERT")) {
	apei_resources_init(&bert_resources);
		pr_err("Can't request iomem region <%016llx-%016llx>.\n",
	rc = apei_resources_add(&bert_resources, bert_tab->address,
		       (unsigned long long)bert_tab->address,
				region_len, true);
		       (unsigned long long)bert_tab->address + region_len - 1);
	if (rc)
		return -EIO;
		return rc;
	}
	rc = apei_resources_request(&bert_resources, "APEI BERT");

	if (rc)
		goto out_fini;
	boot_error_region = ioremap_cache(bert_tab->address, region_len);
	boot_error_region = ioremap_cache(bert_tab->address, region_len);
	if (boot_error_region) {
	if (boot_error_region) {
		bert_print_all(boot_error_region, region_len);
		bert_print_all(boot_error_region, region_len);
@@ -142,7 +144,9 @@ static int __init bert_init(void)
		rc = -ENOMEM;
		rc = -ENOMEM;
	}
	}


	release_mem_region(bert_tab->address, region_len);
	apei_resources_release(&bert_resources);
out_fini:
	apei_resources_fini(&bert_resources);


	return rc;
	return rc;
}
}