Crash on Windriver Simics : page fault, pd='init -> drivers -> acpi_drv' thread='ep'
Alexander Boettcher
alexander.boettcher at genode-labs.com
Thu Jul 9 17:44:41 CEST 2020
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 = read<Fadt::Reset_reg_type>();
254 . . reset_addr = read<Fadt::Reset_reg_addr>();
255 . . reset_value = read<Fadt::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.
>>
--
Alexander Boettcher
Genode Labs
https://www.genode-labs.com - https://www.genode.org
Genode Labs GmbH - Amtsgericht Dresden - HRB 28424 - Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
More information about the users
mailing list