mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 13:14:07 +08:00
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 platform_device *ghes_dev;
|
||||||
struct ghes_arr *ghes_arr = data;
|
struct ghes_arr *ghes_arr = data;
|
||||||
int rc;
|
int rc, i;
|
||||||
|
|
||||||
if (hest_hdr->type != ACPI_HEST_TYPE_GENERIC_ERROR)
|
if (hest_hdr->type != ACPI_HEST_TYPE_GENERIC_ERROR)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!((struct acpi_hest_generic *)hest_hdr)->enabled)
|
if (!((struct acpi_hest_generic *)hest_hdr)->enabled)
|
||||||
return 0;
|
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);
|
ghes_dev = platform_device_alloc("GHES", hest_hdr->source_id);
|
||||||
if (!ghes_dev)
|
if (!ghes_dev)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -1332,23 +1332,6 @@ int acpi_resources_are_enforced(void)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(acpi_resources_are_enforced);
|
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.
|
* Deallocate the memory for a spinlock.
|
||||||
*/
|
*/
|
||||||
|
@ -98,8 +98,11 @@ acpi_os_table_override(struct acpi_table_header *existing_table,
|
|||||||
/*
|
/*
|
||||||
* Spinlock primitives
|
* Spinlock primitives
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef acpi_os_create_lock
|
||||||
acpi_status
|
acpi_status
|
||||||
acpi_os_create_lock(acpi_spinlock *out_handle);
|
acpi_os_create_lock(acpi_spinlock *out_handle);
|
||||||
|
#endif
|
||||||
|
|
||||||
void acpi_os_delete_lock(acpi_spinlock handle);
|
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)
|
} while (0)
|
||||||
#endif
|
#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 /* __KERNEL__ */
|
||||||
|
|
||||||
#endif /* __ACLINUX_H__ */
|
#endif /* __ACLINUX_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user