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
F151214577: D40263.id122648.diff
Mon, Apr 6, 9:44 PM
Unknown Object (File)
Sun, Apr 5, 6:22 AM
Unknown Object (File)
Sat, Apr 4, 6:02 AM
Unknown Object (File)
Sat, Mar 28, 12:31 AM
Unknown Object (File)
Fri, Mar 27, 5:42 AM
Unknown Object (File)
Sat, Mar 21, 9:38 AM
Unknown Object (File)
Sun, Mar 15, 8:21 PM
Unknown Object (File)
Fri, Mar 13, 1:53 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 51793
Build 48684: 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.