提交 74fd6c6f 编写于 作者: L Lenny Szubowicz 提交者: Tony Luck

acpi: Eliminate console msg if pstore.backend excludes ERST

This is patch 2/3 of a patch set that avoids what misleadingly appears
to be a error during boot:

ERST: Could not register with persistent store

This message is displayed if the system has a valid ACPI ERST table and the
pstore.backend kernel parameter has been used to disable use of ERST by
pstore. But this same message is used for errors that preclude registration.

In erst_init don't complain if the setting of kernel parameter pstore.backend
precludes use of ACPI ERST for pstore. Routine pstore_register will inform
about the facility that does register.

Also, don't leave a dangling pointer to deallocated mem for the pstore
buffer when registration fails.
Signed-off-by: NLenny Szubowicz <lszubowi@redhat.com>
Reported-by: NNaotaka Hamaguchi <n.hamaguchi@jp.fujitsu.com>
Signed-off-by: NTony Luck <tony.luck@intel.com>
上级 8e48b1a8
...@@ -1180,20 +1180,28 @@ static int __init erst_init(void) ...@@ -1180,20 +1180,28 @@ static int __init erst_init(void)
if (!erst_erange.vaddr) if (!erst_erange.vaddr)
goto err_release_erange; goto err_release_erange;
pr_info(ERST_PFX
"Error Record Serialization Table (ERST) support is initialized.\n");
buf = kmalloc(erst_erange.size, GFP_KERNEL); buf = kmalloc(erst_erange.size, GFP_KERNEL);
spin_lock_init(&erst_info.buf_lock); spin_lock_init(&erst_info.buf_lock);
if (buf) { if (buf) {
erst_info.buf = buf + sizeof(struct cper_pstore_record); erst_info.buf = buf + sizeof(struct cper_pstore_record);
erst_info.bufsize = erst_erange.size - erst_info.bufsize = erst_erange.size -
sizeof(struct cper_pstore_record); sizeof(struct cper_pstore_record);
if (pstore_register(&erst_info)) { rc = pstore_register(&erst_info);
pr_info(ERST_PFX "Could not register with persistent store\n"); if (rc) {
if (rc != -EPERM)
pr_info(ERST_PFX
"Could not register with persistent store\n");
erst_info.buf = NULL;
erst_info.bufsize = 0;
kfree(buf); kfree(buf);
} }
} } else
pr_err(ERST_PFX
pr_info(ERST_PFX "Failed to allocate %lld bytes for persistent store error log\n",
"Error Record Serialization Table (ERST) support is initialized.\n"); erst_erange.size);
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册