Page MenuHomeFreeBSD

acpi: Narrow workaround for broken interrupt settings on x86
AcceptedPublic

Authored by jhb on Mon, Jun 10, 10:08 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Jun 14, 1:18 AM
Unknown Object (File)
Wed, Jun 12, 5:38 PM
Unknown Object (File)
Wed, Jun 12, 2:00 AM
Unknown Object (File)
Tue, Jun 11, 4:40 AM
Subscribers
None

Details

Reviewers
imp
Summary

Commit 9a7bf07ccdc1 from 2016 introduced a workaround for some broken
BIOSes that specified active-lo instead of active-hi polarity for ISA
IRQs for UARTs. The workaround assumed that edge-sensitive ISA IRQs
on x86 should always be active-hi. However, some recent AMD systems
actually use active-lo edge-sensitive ISA IRQs (and not just for
UARTs, but also for the keyboard and PS/2 mouse devices) and the
override causes interrupts to be dropped resulting in boot time hangs,
non-working keyboards, etc.

The log of original message mentions an Intel motherboard as the
sample case, so restrict the earlier workaround to systems with an
Intel CPU.

Special thanks to Matthias Lanter <freebsd@lanter-it.ch> for tracking
down boot time issues on recent AMD systems to mismatched interrupt
polarity.

PR: 270707
Reported by: aixdroix_OSS@protonmail.com, Michael Dexter
Reported by: mfw_burn@pm.me, Hannes Hauswedell <h2+fbsdports@fsfe.org>
Reported by: Matthias Lanter <freebsd@lanter-it.ch>
Reported by: William Bulley <web@umich.edu>
MFC after: 1 week

Diff Detail

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

Event Timeline

jhb requested review of this revision.Mon, Jun 10, 10:08 PM
jhb created this revision.

It's like OKish as is, but a tuneable would let our future selves have an easy-to-deploy diagnostic workaround should this guess become incorrect in the future.

sys/dev/acpica/acpi_resource.c
171

maybe add a 'chicken bit' here so one can turn it on/off via sysctl / tuneable?

This revision is now accepted and ready to land.Mon, Jun 10, 11:25 PM