Merge branches 'd3cold', 'bugzilla-37412' and 'bugzilla-38152' into release
This commit is contained in:
commit
7fb574a97f
|
@ -139,13 +139,23 @@ static int __init hest_parse_ghes(struct acpi_hest_header *hest_hdr, void *data)
|
|||
{
|
||||
struct platform_device *ghes_dev;
|
||||
struct ghes_arr *ghes_arr = data;
|
||||
int rc;
|
||||
int rc, i;
|
||||
|
||||
if (hest_hdr->type != ACPI_HEST_TYPE_GENERIC_ERROR)
|
||||
return 0;
|
||||
|
||||
if (!((struct acpi_hest_generic *)hest_hdr)->enabled)
|
||||
return 0;
|
||||
for (i = 0; i < ghes_arr->count; i++) {
|
||||
struct acpi_hest_header *hdr;
|
||||
ghes_dev = ghes_arr->ghes_devs[i];
|
||||
hdr = *(struct acpi_hest_header **)ghes_dev->dev.platform_data;
|
||||
if (hdr->source_id == hest_hdr->source_id) {
|
||||
pr_warning(FW_WARN HEST_PFX "Duplicated hardware error source ID: %d.\n",
|
||||
hdr->source_id);
|
||||
return -EIO;
|
||||
}
|
||||
}
|
||||
ghes_dev = platform_device_alloc("GHES", hest_hdr->source_id);
|
||||
if (!ghes_dev)
|
||||
return -ENOMEM;
|
||||
|
|
|
@ -1332,23 +1332,6 @@ int acpi_resources_are_enforced(void)
|
|||
}
|
||||
EXPORT_SYMBOL(acpi_resources_are_enforced);
|
||||
|
||||
/*
|
||||
* Create and initialize a spinlock.
|
||||
*/
|
||||
acpi_status
|
||||
acpi_os_create_lock(acpi_spinlock *out_handle)
|
||||
{
|
||||
spinlock_t *lock;
|
||||
|
||||
lock = ACPI_ALLOCATE(sizeof(spinlock_t));
|
||||
if (!lock)
|
||||
return AE_NO_MEMORY;
|
||||
spin_lock_init(lock);
|
||||
*out_handle = lock;
|
||||
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Deallocate the memory for a spinlock.
|
||||
*/
|
||||
|
|
|
@ -98,8 +98,11 @@ acpi_os_table_override(struct acpi_table_header *existing_table,
|
|||
/*
|
||||
* Spinlock primitives
|
||||
*/
|
||||
|
||||
#ifndef acpi_os_create_lock
|
||||
acpi_status
|
||||
acpi_os_create_lock(acpi_spinlock *out_handle);
|
||||
#endif
|
||||
|
||||
void acpi_os_delete_lock(acpi_spinlock handle);
|
||||
|
||||
|
|
|
@ -159,6 +159,24 @@ static inline void *acpi_os_acquire_object(acpi_cache_t * cache)
|
|||
} while (0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* When lockdep is enabled, the spin_lock_init() macro stringifies it's
|
||||
* argument and uses that as a name for the lock in debugging.
|
||||
* By executing spin_lock_init() in a macro the key changes from "lock" for
|
||||
* all locks to the name of the argument of acpi_os_create_lock(), which
|
||||
* prevents lockdep from reporting false positives for ACPICA locks.
|
||||
*/
|
||||
#define acpi_os_create_lock(__handle) \
|
||||
({ \
|
||||
spinlock_t *lock = ACPI_ALLOCATE(sizeof(*lock)); \
|
||||
\
|
||||
if (lock) { \
|
||||
*(__handle) = lock; \
|
||||
spin_lock_init(*(__handle)); \
|
||||
} \
|
||||
lock ? AE_OK : AE_NO_MEMORY; \
|
||||
})
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ACLINUX_H__ */
|
||||
|
|
Loading…
Reference in New Issue