On 09.07.20 15:19, Parfait Tokponnon wrote:
I commented out the reset_addr line without success. It triggers a page fault at another address.
I wrote to remove all _3_ lines with reset_* to avoid the pagefault, not only 1 line ;-)
Applying the patch reveals the following about the 'FACP' table structure just before the page fault
[init -> drivers -> acpi_drv] Warning: attach memory - 0x3feff000+0x1000, Loop_base 0x7feff000, IO base 1073741824 [init -> drivers -> acpi_drv] table mapped 'FACP' at 0xbfefff80 (from 0x7fefff80) size 0x74
As I pressumed, the table is solely 0x74 in size. Looking at the code:
253 . . reset_type = readFadt::Reset_reg_type(); 254 . . reset_addr = readFadt::Reset_reg_addr(); 255 . . reset_value = readFadt::Reset_value(); 256 . } 257 258 . struct Dsdt : Register<0x28, 32> { }; 259 . struct Feature_flags : Register<0x70, 32> { }; 260 . struct Reset_reg_type : Register<0x74, 32> { }; 261 . struct Reset_reg_addr : Register<0x78, 64> { }; 262 . struct Reset_value : Register<0x80, 8> { };
you see that the Reset_* types are behind the tables, namely at offset 0x74, 0x78, 0x80.
Do you like to open an issue and provide a patch ?
Thanks for investigation,
Alex.
Since the reset values are not used anywhere in the code, you could just comment out the 3 lines and you should get further.