Page MenuHomeFreeBSD

gicv3: Use an offset to find the redist registers
ClosedPublic

Authored by andrew on May 25 2023, 10:05 AM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Dec 6, 12:29 AM
Unknown Object (File)
Mon, Nov 24, 7:35 PM
Unknown Object (File)
Fri, Nov 21, 2:10 AM
Unknown Object (File)
Fri, Nov 21, 2:05 AM
Unknown Object (File)
Fri, Nov 21, 2:05 AM
Unknown Object (File)
Fri, Nov 21, 2:03 AM
Unknown Object (File)
Fri, Nov 21, 2:01 AM
Unknown Object (File)
Nov 4 2025, 1:15 PM
Tokens
"Like" token, awarded by schakrabarti_microsoft.com.

Details

Summary

To find the redistributor registers use the resource we have already
found and add an offset. This removed the need to create a
per-redistributor resource as it can now be a pointer to the resource
found in attach.

While here check the offset is within the bounds of the resource. Some
ACPI tables list each redistributor as a separate memory range, even
if they are physically contiguous. In this case we may not have each
resource virtually contiguous with neighbouring resources. This can
lead to a data abort when reading past the resource range.

Sponsored by: Arm Ltd

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 51676
Build 48567: arc lint + arc unit

Event Timeline

This revision is now accepted and ready to land.May 25 2023, 1:29 PM

Tested on Hyper-V on ARM64 and it is working. The panic from gic redistributor is not coming.

Fix contigfree (hopefully on correct branch)

This revision now requires review to proceed.May 31 2023, 2:17 PM
This revision was not accepted when it landed; it landed in state Needs Review.May 31 2023, 2:20 PM
This revision was automatically updated to reflect the committed changes.