mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 11:33:28 +02:00
Additional ACPI updates for 5.1-rc1
- Fix a crash caused by unloading an SSDT overlay (Andy Shevchenko).
- Prevent user space from getting confusing error values on failing
ACPI sysfs accesses (Rafael Wysocki).
- Simplify leaf node detection in the PPTT parsing code by using a
new flag defined in ACPI 6.3 (Jeremy Linton).
- Add missing "static" in some places in the ACPI configfs code
(Andy Shevchenko).
- Fix acpidbg tool path in the ACPI documentation (Flavio Suligoi).
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJcijY5AAoJEILEb/54YlRxqzoQALCG1rWtVqmLw1yHj4BjI3Q5
/4UeVUAhy/YkwlhG1hD5098AMIGXgT88sIOE0vBRUp0mIy01qNg0k59iivmTIlaX
pIPJLUj46Siu0qbOKWYnZ0VULVvYF/scvgR4j9wHZIkvnxdb9/0ous6e5Il6CALM
hgIJrPZHXgt9IilUQYx6nqiF4Lfpa9RFwudkVmt7DRAmJOOT3To/Sbo8WvGIaeVK
MQSqyM3GhWq4MWdyrLZF9U8o6+pKBM6YKnrqkWufxW0ZT5QfpORFkrd5NbrBynCm
ec26sRRC73mhSU6tB+iyhNrrn/IxzVC9x7UFK6VtWDQXn2ROr2MixxspPRKKA36I
RGYN1HChx7mWR6bOOplj4IijpHJmXjKz4PvqqmwQAHUPrxr02R9xaoLk/4dPVztx
mmUMCO2UB6ZR5USyV5AqWvFi8Gyd2zqTQEIbWMghn1AvbJdwF0RanzO4DfX+iybW
Jrx8UDNSI9ndscslYjFzcuIw/+15Yq55f5jEm3VEsAsJHE94VCgxCNjym762RKFo
2xMuXRvr0vQJ/mI+sgISqop4lK90mB1cw8lgs2XGqWoqNWgx0ZQ7xElavEzBtG60
Btg9cNFu4SfmSfE44IL4qTYtI1gM+FtMYMbsHS2XjJRcJcWVLiwd0tQXyDkYEmy0
z1P6QQKtwNcIHj/HyByT
=mxN+
-----END PGP SIGNATURE-----
Merge tag 'acpi-5.1-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull more ACPI updates from Rafael Wysocki:
"These fix a couple of issues and do some cleanups on top of the
previous ACPI changes for 5.1-rc1.
Specifics:
- Fix a crash caused by unloading an SSDT overlay (Andy Shevchenko)
- Prevent user space from getting confusing error values on failing
ACPI sysfs accesses (Rafael Wysocki)
- Simplify leaf node detection in the PPTT parsing code by using a
new flag defined in ACPI 6.3 (Jeremy Linton)
- Add missing "static" in some places in the ACPI configfs code (Andy
Shevchenko)
- Fix acpidbg tool path in the ACPI documentation (Flavio Suligoi)"
* tag 'acpi-5.1-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
ACPI: sysfs: Prevent get_status() from returning acpi_status
ACPI / device_sysfs: Avoid OF modalias creation for removed device
ACPI / configfs: Mark local data structures static
ACPI / configfs: Mark local functions static
ACPI: tables: Simplify PPTT leaf node detection
ACPI: Documentation: Fix path for acpidbg tool
This commit is contained in:
commit
3b319ee220
|
|
@ -23,7 +23,7 @@ kernel.
|
|||
|
||||
The resultant userspace tool binary is then located at:
|
||||
|
||||
tools/acpi/power/acpi/acpidbg/acpidbg
|
||||
tools/power/acpi/acpidbg
|
||||
|
||||
It can be installed to system directories by running "make install" (as a
|
||||
sufficiently privileged user).
|
||||
|
|
@ -35,7 +35,7 @@ kernel.
|
|||
|
||||
# mount -t debugfs none /sys/kernel/debug
|
||||
# modprobe acpi_dbg
|
||||
# tools/acpi/power/acpi/acpidbg/acpidbg
|
||||
# tools/power/acpi/acpidbg
|
||||
|
||||
That spawns the interactive AML debugger environment where you can execute
|
||||
debugger commands.
|
||||
|
|
|
|||
|
|
@ -97,12 +97,12 @@ static ssize_t acpi_table_aml_read(struct config_item *cfg,
|
|||
|
||||
CONFIGFS_BIN_ATTR(acpi_table_, aml, NULL, MAX_ACPI_TABLE_SIZE);
|
||||
|
||||
struct configfs_bin_attribute *acpi_table_bin_attrs[] = {
|
||||
static struct configfs_bin_attribute *acpi_table_bin_attrs[] = {
|
||||
&acpi_table_attr_aml,
|
||||
NULL,
|
||||
};
|
||||
|
||||
ssize_t acpi_table_signature_show(struct config_item *cfg, char *str)
|
||||
static ssize_t acpi_table_signature_show(struct config_item *cfg, char *str)
|
||||
{
|
||||
struct acpi_table_header *h = get_header(cfg);
|
||||
|
||||
|
|
@ -112,7 +112,7 @@ ssize_t acpi_table_signature_show(struct config_item *cfg, char *str)
|
|||
return sprintf(str, "%.*s\n", ACPI_NAME_SIZE, h->signature);
|
||||
}
|
||||
|
||||
ssize_t acpi_table_length_show(struct config_item *cfg, char *str)
|
||||
static ssize_t acpi_table_length_show(struct config_item *cfg, char *str)
|
||||
{
|
||||
struct acpi_table_header *h = get_header(cfg);
|
||||
|
||||
|
|
@ -122,7 +122,7 @@ ssize_t acpi_table_length_show(struct config_item *cfg, char *str)
|
|||
return sprintf(str, "%d\n", h->length);
|
||||
}
|
||||
|
||||
ssize_t acpi_table_revision_show(struct config_item *cfg, char *str)
|
||||
static ssize_t acpi_table_revision_show(struct config_item *cfg, char *str)
|
||||
{
|
||||
struct acpi_table_header *h = get_header(cfg);
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ ssize_t acpi_table_revision_show(struct config_item *cfg, char *str)
|
|||
return sprintf(str, "%d\n", h->revision);
|
||||
}
|
||||
|
||||
ssize_t acpi_table_oem_id_show(struct config_item *cfg, char *str)
|
||||
static ssize_t acpi_table_oem_id_show(struct config_item *cfg, char *str)
|
||||
{
|
||||
struct acpi_table_header *h = get_header(cfg);
|
||||
|
||||
|
|
@ -142,7 +142,7 @@ ssize_t acpi_table_oem_id_show(struct config_item *cfg, char *str)
|
|||
return sprintf(str, "%.*s\n", ACPI_OEM_ID_SIZE, h->oem_id);
|
||||
}
|
||||
|
||||
ssize_t acpi_table_oem_table_id_show(struct config_item *cfg, char *str)
|
||||
static ssize_t acpi_table_oem_table_id_show(struct config_item *cfg, char *str)
|
||||
{
|
||||
struct acpi_table_header *h = get_header(cfg);
|
||||
|
||||
|
|
@ -152,7 +152,7 @@ ssize_t acpi_table_oem_table_id_show(struct config_item *cfg, char *str)
|
|||
return sprintf(str, "%.*s\n", ACPI_OEM_TABLE_ID_SIZE, h->oem_table_id);
|
||||
}
|
||||
|
||||
ssize_t acpi_table_oem_revision_show(struct config_item *cfg, char *str)
|
||||
static ssize_t acpi_table_oem_revision_show(struct config_item *cfg, char *str)
|
||||
{
|
||||
struct acpi_table_header *h = get_header(cfg);
|
||||
|
||||
|
|
@ -162,7 +162,8 @@ ssize_t acpi_table_oem_revision_show(struct config_item *cfg, char *str)
|
|||
return sprintf(str, "%d\n", h->oem_revision);
|
||||
}
|
||||
|
||||
ssize_t acpi_table_asl_compiler_id_show(struct config_item *cfg, char *str)
|
||||
static ssize_t acpi_table_asl_compiler_id_show(struct config_item *cfg,
|
||||
char *str)
|
||||
{
|
||||
struct acpi_table_header *h = get_header(cfg);
|
||||
|
||||
|
|
@ -172,8 +173,8 @@ ssize_t acpi_table_asl_compiler_id_show(struct config_item *cfg, char *str)
|
|||
return sprintf(str, "%.*s\n", ACPI_NAME_SIZE, h->asl_compiler_id);
|
||||
}
|
||||
|
||||
ssize_t acpi_table_asl_compiler_revision_show(struct config_item *cfg,
|
||||
char *str)
|
||||
static ssize_t acpi_table_asl_compiler_revision_show(struct config_item *cfg,
|
||||
char *str)
|
||||
{
|
||||
struct acpi_table_header *h = get_header(cfg);
|
||||
|
||||
|
|
@ -192,7 +193,7 @@ CONFIGFS_ATTR_RO(acpi_table_, oem_revision);
|
|||
CONFIGFS_ATTR_RO(acpi_table_, asl_compiler_id);
|
||||
CONFIGFS_ATTR_RO(acpi_table_, asl_compiler_revision);
|
||||
|
||||
struct configfs_attribute *acpi_table_attrs[] = {
|
||||
static struct configfs_attribute *acpi_table_attrs[] = {
|
||||
&acpi_table_attr_signature,
|
||||
&acpi_table_attr_length,
|
||||
&acpi_table_attr_revision,
|
||||
|
|
@ -232,7 +233,7 @@ static void acpi_table_drop_item(struct config_group *group,
|
|||
acpi_tb_unload_table(table->index);
|
||||
}
|
||||
|
||||
struct configfs_group_operations acpi_table_group_ops = {
|
||||
static struct configfs_group_operations acpi_table_group_ops = {
|
||||
.make_item = acpi_table_make_item,
|
||||
.drop_item = acpi_table_drop_item,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -202,11 +202,15 @@ static int create_of_modalias(struct acpi_device *acpi_dev, char *modalias,
|
|||
{
|
||||
struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER };
|
||||
const union acpi_object *of_compatible, *obj;
|
||||
acpi_status status;
|
||||
int len, count;
|
||||
int i, nval;
|
||||
char *c;
|
||||
|
||||
acpi_get_name(acpi_dev->handle, ACPI_SINGLE_NAME, &buf);
|
||||
status = acpi_get_name(acpi_dev->handle, ACPI_SINGLE_NAME, &buf);
|
||||
if (ACPI_FAILURE(status))
|
||||
return -ENODEV;
|
||||
|
||||
/* DT strings are all in lower case */
|
||||
for (c = buf.pointer; *c != '\0'; c++)
|
||||
*c = tolower(*c);
|
||||
|
|
|
|||
|
|
@ -209,6 +209,9 @@ static int acpi_pptt_leaf_node(struct acpi_table_header *table_hdr,
|
|||
struct acpi_pptt_processor *cpu_node;
|
||||
u32 proc_sz;
|
||||
|
||||
if (table_hdr->revision > 1)
|
||||
return (node->flags & ACPI_PPTT_ACPI_LEAF_NODE);
|
||||
|
||||
table_end = (unsigned long)table_hdr + table_hdr->length;
|
||||
node_entry = ACPI_PTR_DIFF(node, table_hdr);
|
||||
entry = ACPI_ADD_PTR(struct acpi_subtable_header, table_hdr,
|
||||
|
|
|
|||
|
|
@ -648,26 +648,29 @@ static void acpi_global_event_handler(u32 event_type, acpi_handle device,
|
|||
}
|
||||
}
|
||||
|
||||
static int get_status(u32 index, acpi_event_status *status,
|
||||
static int get_status(u32 index, acpi_event_status *ret,
|
||||
acpi_handle *handle)
|
||||
{
|
||||
int result;
|
||||
acpi_status status;
|
||||
|
||||
if (index >= num_gpes + ACPI_NUM_FIXED_EVENTS)
|
||||
return -EINVAL;
|
||||
|
||||
if (index < num_gpes) {
|
||||
result = acpi_get_gpe_device(index, handle);
|
||||
if (result) {
|
||||
status = acpi_get_gpe_device(index, handle);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
ACPI_EXCEPTION((AE_INFO, AE_NOT_FOUND,
|
||||
"Invalid GPE 0x%x", index));
|
||||
return result;
|
||||
return -ENXIO;
|
||||
}
|
||||
result = acpi_get_gpe_status(*handle, index, status);
|
||||
} else if (index < (num_gpes + ACPI_NUM_FIXED_EVENTS))
|
||||
result = acpi_get_event_status(index - num_gpes, status);
|
||||
status = acpi_get_gpe_status(*handle, index, ret);
|
||||
} else {
|
||||
status = acpi_get_event_status(index - num_gpes, ret);
|
||||
}
|
||||
if (ACPI_FAILURE(status))
|
||||
return -EIO;
|
||||
|
||||
return result;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t counter_show(struct kobject *kobj,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user