|
@@ -1180,20 +1180,28 @@ static int __init erst_init(void)
|
|
|
if (!erst_erange.vaddr)
|
|
|
goto err_release_erange;
|
|
|
|
|
|
+ pr_info(ERST_PFX
|
|
|
+ "Error Record Serialization Table (ERST) support is initialized.\n");
|
|
|
+
|
|
|
buf = kmalloc(erst_erange.size, GFP_KERNEL);
|
|
|
spin_lock_init(&erst_info.buf_lock);
|
|
|
if (buf) {
|
|
|
erst_info.buf = buf + sizeof(struct cper_pstore_record);
|
|
|
erst_info.bufsize = erst_erange.size -
|
|
|
sizeof(struct cper_pstore_record);
|
|
|
- if (pstore_register(&erst_info)) {
|
|
|
- pr_info(ERST_PFX "Could not register with persistent store\n");
|
|
|
+ rc = pstore_register(&erst_info);
|
|
|
+ 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);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- pr_info(ERST_PFX
|
|
|
- "Error Record Serialization Table (ERST) support is initialized.\n");
|
|
|
+ } else
|
|
|
+ pr_err(ERST_PFX
|
|
|
+ "Failed to allocate %lld bytes for persistent store error log\n",
|
|
|
+ erst_erange.size);
|
|
|
|
|
|
return 0;
|
|
|
|