
On Thu, Apr 9, 2020 at 2:01 AM Simon Glass sjg@chromium.org wrote:
ACPI (Advanced Configuration and Power Interface) is a standard for specifying information about a platform. It is a little like device tree but the bindings are part of the specification and it supports an interpreted bytecode language.
Driver model does not use ACPI for U-Boot's configuration, but it is convenient to have it support generation of ACPI tables for passing to Linux, etc.
As a starting point, add an optional set of ACPI operations to each device. Initially only a single operation is available, to obtain the ACPI name for the device. More operations are added later.
Enable ACPI for sandbox to ensure build coverage and so that we can add tests.
+int acpi_copy_name(char *out_name, const char *name) +{
strncpy(out_name, name, ACPI_NAME_MAX);
_LEN.
The idea as I tried to explain that name can have only 4 bytes at the end of the page. I dunno what U-Boot does if you access out of the boundaries to the page which is not mapped to MMU (in OSes it will be page fault). Does U-Boot map all pages to MMU?
In any case, the code above has this subtle issue. We may live with it, but since it's a generic kinda function, better to be pedantic about it.
out_name[ACPI_NAME_LEN] = '\0';
return 0;
+}