Page 1 of 1

Checksum for XSDT table and length of MCFG table are invalid

Posted: Sun Apr 28, 2024 6:54 am
by osdev199
I'm trying to get PCI segment groups from the MCFG table and I'm getting this table from XSDT which I'm itself getting from XSDP. I tried to verify the checksums for XSDP and XSDT tables and the checksum for XSDP was valid but for the later table, it was invalid. Also the length of MCFG table (4 bytes at offset 4) is 0 which is not valid. However, I'm getting the right signature "MCFG". How to get correct XSDT and MCFG tables? I'm running my kernel on a real hardware.

Re: Checksum for XSDT table and length of MCFG table are inv

Posted: Tue Jun 11, 2024 5:23 pm
by Octocontrabass
I think we're going to need more information. Like, do you have code we can look at? Have you tried dumping the raw bytes of the table to see if it's just a problem with how you're interpreting them?

Re: Checksum for XSDT table and length of MCFG table are inv

Posted: Tue Jun 11, 2024 9:20 pm
by osdev199
Hi Octocontrabass,

Thanks for the reply. Actually my posts are approved after 1.5 month don't know why! I have already solved this problem.

IIRC, I dumped those tables from UEFI shell and re-checked my parsing code. I was passing a wrong pointer in my code or so. It was a typo.

Re: Checksum for XSDT table and length of MCFG table are inv

Posted: Tue Jun 11, 2024 10:09 pm
by MichaelPetch
Note: this question also appeared on r/osdev