Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SdtInvalidSignature(“XSDT”) on ACPI Revision 2+ #175

Open
kennystrawnmusic opened this issue Apr 9, 2023 · 3 comments
Open

SdtInvalidSignature(“XSDT”) on ACPI Revision 2+ #175

kennystrawnmusic opened this issue Apr 9, 2023 · 3 comments

Comments

@kennystrawnmusic
Copy link

kennystrawnmusic commented Apr 9, 2023

Despite all the checks that I've spotted in the code to determine whether or not there's a RSDT or XSDT in there, I still for the life of me can't seem to figure out why this is happening:

image

In this other view, you can see that I have my kernel set to print the ACPI revision prior to this and it's correctly reported as 2:

image

So why therefore is it still failing to validate despite this? Seems really strange to say the least — after all, if AcpiTables::from_rsdt() and all the functions that depend on it correctly check to see if the ACPI revision is non-zero before going on to call validate to verify the signature, then the problem has to be with the validate function itself. How exactly, however, I have absolutely no idea.

@kennystrawnmusic kennystrawnmusic changed the title RSDT parser isn't properly validating on ACPI revisions 2 or newer RSDP parser isn't properly validating on ACPI revisions 2 or newer Apr 9, 2023
@kennystrawnmusic kennystrawnmusic changed the title RSDP parser isn't properly validating on ACPI revisions 2 or newer SdtInvalidSignature(“XSDT”) on ACPI Revision 2+ Apr 15, 2023
@kennystrawnmusic
Copy link
Author

Update: Can confirm that porting my kernel to use the bleeding edge version from this repo makes no difference. Still giving me this same error despite the fact that the signature should be perfectly valid for the ACPI version involved. What say you @IsaacWoods? Looked into this issue yet?

@IsaacWoods
Copy link
Member

IsaacWoods commented Apr 22, 2023

Without access to the hardware producing this table, there's not a lot I can do without more info.

Given the error, the code on the git version that is failing is:

if self.signature != signature || str::from_utf8(&self.signature.0).is_err() {
    return Err(AcpiError::SdtInvalidSignature(signature));
}

I agree it's strange for it to be failing either of these checks. Could you dump the raw hex of the table and post it here?

@kennystrawnmusic
Copy link
Author

Without access to the hardware producing this table, there's not a lot I can do without more info.

Given the error, the code on the git version that is failing is:


if self.signature != signature || str::from_utf8(&self.signature.0).is_err() {

    return Err(AcpiError::SdtInvalidSignature(signature));

}

I agree it's strange for it to be failing either of these checks. Could you dump the raw hex of the table and post it here?

find /sys/firmware/acpi/tables -iname "*XSDT*" returns nothing. How therefore is it possible to dump the table without actually getting my own kernel working on the hardware in question?

Regardless, here's the acpidump output — see what you can find in there, Isaac.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants