|
@@ -86,7 +86,7 @@ static struct erst_erange {
|
|
* It is used to provide exclusive accessing for ERST Error Log
|
|
* It is used to provide exclusive accessing for ERST Error Log
|
|
* Address Range too.
|
|
* Address Range too.
|
|
*/
|
|
*/
|
|
-static DEFINE_SPINLOCK(erst_lock);
|
|
|
|
|
|
+static DEFINE_RAW_SPINLOCK(erst_lock);
|
|
|
|
|
|
static inline int erst_errno(int command_status)
|
|
static inline int erst_errno(int command_status)
|
|
{
|
|
{
|
|
@@ -421,9 +421,9 @@ ssize_t erst_get_record_count(void)
|
|
if (erst_disable)
|
|
if (erst_disable)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
- spin_lock_irqsave(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_lock_irqsave(&erst_lock, flags);
|
|
count = __erst_get_record_count();
|
|
count = __erst_get_record_count();
|
|
- spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
return count;
|
|
return count;
|
|
}
|
|
}
|
|
@@ -456,9 +456,9 @@ int erst_get_next_record_id(u64 *record_id)
|
|
if (erst_disable)
|
|
if (erst_disable)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
- spin_lock_irqsave(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_lock_irqsave(&erst_lock, flags);
|
|
rc = __erst_get_next_record_id(record_id);
|
|
rc = __erst_get_next_record_id(record_id);
|
|
- spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|
|
@@ -624,17 +624,17 @@ int erst_write(const struct cper_record_header *record)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
if (erst_erange.attr & ERST_RANGE_NVRAM) {
|
|
if (erst_erange.attr & ERST_RANGE_NVRAM) {
|
|
- if (!spin_trylock_irqsave(&erst_lock, flags))
|
|
|
|
|
|
+ if (!raw_spin_trylock_irqsave(&erst_lock, flags))
|
|
return -EBUSY;
|
|
return -EBUSY;
|
|
rc = __erst_write_to_nvram(record);
|
|
rc = __erst_write_to_nvram(record);
|
|
- spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_unlock_irqrestore(&erst_lock, flags);
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|
|
|
|
|
|
if (record->record_length > erst_erange.size)
|
|
if (record->record_length > erst_erange.size)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
- if (!spin_trylock_irqsave(&erst_lock, flags))
|
|
|
|
|
|
+ if (!raw_spin_trylock_irqsave(&erst_lock, flags))
|
|
return -EBUSY;
|
|
return -EBUSY;
|
|
memcpy(erst_erange.vaddr, record, record->record_length);
|
|
memcpy(erst_erange.vaddr, record, record->record_length);
|
|
rcd_erange = erst_erange.vaddr;
|
|
rcd_erange = erst_erange.vaddr;
|
|
@@ -642,7 +642,7 @@ int erst_write(const struct cper_record_header *record)
|
|
memcpy(&rcd_erange->persistence_information, "ER", 2);
|
|
memcpy(&rcd_erange->persistence_information, "ER", 2);
|
|
|
|
|
|
rc = __erst_write_to_storage(0);
|
|
rc = __erst_write_to_storage(0);
|
|
- spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|
|
@@ -696,9 +696,9 @@ ssize_t erst_read(u64 record_id, struct cper_record_header *record,
|
|
if (erst_disable)
|
|
if (erst_disable)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
- spin_lock_irqsave(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_lock_irqsave(&erst_lock, flags);
|
|
len = __erst_read(record_id, record, buflen);
|
|
len = __erst_read(record_id, record, buflen);
|
|
- spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_unlock_irqrestore(&erst_lock, flags);
|
|
return len;
|
|
return len;
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(erst_read);
|
|
EXPORT_SYMBOL_GPL(erst_read);
|
|
@@ -719,20 +719,20 @@ ssize_t erst_read_next(struct cper_record_header *record, size_t buflen)
|
|
if (erst_disable)
|
|
if (erst_disable)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
- spin_lock_irqsave(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_lock_irqsave(&erst_lock, flags);
|
|
rc = __erst_get_next_record_id(&record_id);
|
|
rc = __erst_get_next_record_id(&record_id);
|
|
if (rc) {
|
|
if (rc) {
|
|
- spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_unlock_irqrestore(&erst_lock, flags);
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|
|
/* no more record */
|
|
/* no more record */
|
|
if (record_id == APEI_ERST_INVALID_RECORD_ID) {
|
|
if (record_id == APEI_ERST_INVALID_RECORD_ID) {
|
|
- spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_unlock_irqrestore(&erst_lock, flags);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
len = __erst_read(record_id, record, buflen);
|
|
len = __erst_read(record_id, record, buflen);
|
|
- spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
return len;
|
|
return len;
|
|
}
|
|
}
|
|
@@ -746,12 +746,12 @@ int erst_clear(u64 record_id)
|
|
if (erst_disable)
|
|
if (erst_disable)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
- spin_lock_irqsave(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_lock_irqsave(&erst_lock, flags);
|
|
if (erst_erange.attr & ERST_RANGE_NVRAM)
|
|
if (erst_erange.attr & ERST_RANGE_NVRAM)
|
|
rc = __erst_clear_from_nvram(record_id);
|
|
rc = __erst_clear_from_nvram(record_id);
|
|
else
|
|
else
|
|
rc = __erst_clear_from_storage(record_id);
|
|
rc = __erst_clear_from_storage(record_id);
|
|
- spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
+ raw_spin_unlock_irqrestore(&erst_lock, flags);
|
|
|
|
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|