fwts: 32 bit ACPI table pointers break when running on 64 architectures
|Colin Ian King|
Binary package hint: fwts
An ACPI table (such as the RSDT) containing 32 bit pointers to ACPI tables in firmware causes a segfault when being processed by the ACPICA core engine (for example, running the method test) when executing fwts on a 64 bit machine.
The reason for this is that all tables are cached copies from firmware (to speed up execution and to allow for some easy pointer twiddling) using malloc(). Unfortunately on 64 bit systems these tables require a 64 bit pointer and the legacy 32 bit pointers to tables (for example in the RSDT) cannot address these.
A workaround is not to malloc() these tables but to anonymously mmap() with MAP_32BIT to ensure all tables can be 32 bit addressable.
|Changed in fwts (Ubuntu):|
|status:||New → In Progress|
|importance:||Undecided → Medium|
|assignee:||nobody → Colin King (colin-king)|