|
@@ -1590,14 +1590,21 @@ static int acpi_nfit_find_poison(struct acpi_nfit_desc *acpi_desc,
|
|
start = ndr_desc->res->start;
|
|
start = ndr_desc->res->start;
|
|
len = ndr_desc->res->end - ndr_desc->res->start + 1;
|
|
len = ndr_desc->res->end - ndr_desc->res->start + 1;
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * If ARS is unimplemented, unsupported, or if the 'Persistent Memory
|
|
|
|
+ * Scrub' flag in extended status is not set, skip this but continue
|
|
|
|
+ * initialization
|
|
|
|
+ */
|
|
rc = ars_get_cap(nd_desc, ars_cap, start, len);
|
|
rc = ars_get_cap(nd_desc, ars_cap, start, len);
|
|
|
|
+ if (rc == -ENOTTY) {
|
|
|
|
+ dev_dbg(acpi_desc->dev,
|
|
|
|
+ "Address Range Scrub is not implemented, won't create an error list\n");
|
|
|
|
+ rc = 0;
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
if (rc)
|
|
if (rc)
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
- /*
|
|
|
|
- * If ARS is unsupported, or if the 'Persistent Memory Scrub' flag in
|
|
|
|
- * extended status is not set, skip this but continue initialization
|
|
|
|
- */
|
|
|
|
if ((ars_cap->status & 0xffff) ||
|
|
if ((ars_cap->status & 0xffff) ||
|
|
!(ars_cap->status >> 16 & ND_ARS_PERSISTENT)) {
|
|
!(ars_cap->status >> 16 & ND_ARS_PERSISTENT)) {
|
|
dev_warn(acpi_desc->dev,
|
|
dev_warn(acpi_desc->dev,
|