Page MenuHomeFreeBSD

Use polling spin loops for timeouts during early boot.
ClosedPublic

Authored by jhb on May 13 2016, 5:44 PM.
Tags
None
Referenced Files
Unknown Object (File)
Oct 3 2024, 8:00 AM
Unknown Object (File)
Oct 2 2024, 2:09 PM
Unknown Object (File)
Sep 29 2024, 9:08 PM
Unknown Object (File)
Sep 27 2024, 7:37 AM
Unknown Object (File)
Sep 18 2024, 10:30 AM
Unknown Object (File)
Sep 8 2024, 7:06 AM
Unknown Object (File)
Sep 2 2024, 5:52 PM
Unknown Object (File)
Aug 17 2024, 9:41 PM
Subscribers

Details

Reviewers
jkim
jimharris
Summary

Use polling spin loops for timeouts during early boot.

Some ACPI operations such as mutex acquires and event waits accept a
timeout. The ACPI OSD layer implements these timeouts by using regular
sleep timeouts. However, this doesn't work during early boot before
event timers are setup. Instead, use polling combined with DELAY()
to spin instead.

This fixes booting on upcoming Intel systems with Kaby Lake processors.

Tested by: "Jeffrey E Pieper" <jeffrey.e.pieper@intel.com>

Test Plan
  • boot a box with a Kaby Lake processor. 11.x panics due to my recent assertion for early sleeps. 10.3 just hangs forever.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 3725
Build 3768: arc lint + arc unit

Event Timeline

jhb retitled this revision from to Use polling spin loops for timeouts during early boot..
jhb updated this object.
jhb edited the test plan for this revision. (Show Details)
jhb added a reviewer: jkim.
jhb added a subscriber: jimharris.
jimharris added a reviewer: jimharris.

Looks good. Thanks!

This revision is now accepted and ready to land.May 13 2016, 5:47 PM