Commit 0820debb authored by Tzung-Bi Shih's avatar Tzung-Bi Shih

platform/chrome: chromeos_acpi: print hex string for ACPI_TYPE_BUFFER

`element->buffer.pointer` should be binary blob.  `%s` doesn't work
perfect for them.

Print hex string for ACPI_TYPE_BUFFER.  Also update the documentation
to reflect this.

Fixes: 0a4cad9c ("platform/chrome: Add ChromeOS ACPI device driver")
Cc: stable@vger.kernel.org
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20230803011245.3773756-1-tzungbi@kernel.orgSigned-off-by: default avatarTzung-Bi Shih <tzungbi@kernel.org>
parent 703e7713
...@@ -149,4 +149,4 @@ KernelVersion: 5.19 ...@@ -149,4 +149,4 @@ KernelVersion: 5.19
Description: Description:
Returns the verified boot data block shared between the Returns the verified boot data block shared between the
firmware verification step and the kernel verification step firmware verification step and the kernel verification step
(binary). (hex dump).
...@@ -90,7 +90,36 @@ static int chromeos_acpi_handle_package(struct device *dev, union acpi_object *o ...@@ -90,7 +90,36 @@ static int chromeos_acpi_handle_package(struct device *dev, union acpi_object *o
case ACPI_TYPE_STRING: case ACPI_TYPE_STRING:
return sysfs_emit(buf, "%s\n", element->string.pointer); return sysfs_emit(buf, "%s\n", element->string.pointer);
case ACPI_TYPE_BUFFER: case ACPI_TYPE_BUFFER:
return sysfs_emit(buf, "%s\n", element->buffer.pointer); {
int i, r, at, room_left;
const int byte_per_line = 16;
at = 0;
room_left = PAGE_SIZE - 1;
for (i = 0; i < element->buffer.length && room_left; i += byte_per_line) {
r = hex_dump_to_buffer(element->buffer.pointer + i,
element->buffer.length - i,
byte_per_line, 1, buf + at, room_left,
false);
if (r > room_left)
goto truncating;
at += r;
room_left -= r;
r = sysfs_emit_at(buf, at, "\n");
if (!r)
goto truncating;
at += r;
room_left -= r;
}
buf[at] = 0;
return at;
truncating:
dev_info_once(dev, "truncating sysfs content for %s\n", name);
sysfs_emit_at(buf, PAGE_SIZE - 4, "..\n");
return PAGE_SIZE - 1;
}
default: default:
dev_err(dev, "element type %d not supported\n", element->type); dev_err(dev, "element type %d not supported\n", element->type);
return -EINVAL; return -EINVAL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment