Page MenuHomeFreeBSD

uart: Ingore pl011 historic mistakes
AcceptedPublic

Authored by imp on Fri, Dec 6, 6:02 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Dec 13, 4:48 PM
Unknown Object (File)
Sun, Dec 8, 7:19 AM
Unknown Object (File)
Fri, Dec 6, 9:30 PM
Subscribers

Details

Reviewers
emaste
Summary

Some veresions of EDK-II and QEMU reported the wrong values for the
register shift and the region I/O size. Detect those and set it to the
correct values. In general, anything other than a shift of 2 and a
regio width of 4 (bytes, or 32 bits) is a mistake. However, allow
for overrides in the future by only overriding the buggy values.
Otherwise, we will fail to boot.

PR: 282936
Sponsored by: Netflix

Diff Detail

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

Event Timeline

imp requested review of this revision.Fri, Dec 6, 6:02 PM
imp created this revision.
This revision is now accepted and ready to land.Fri, Dec 6, 6:06 PM

Verified via:

  1. Installed 15-current on UTM 4.6.3 (qemu 9.2) and rebooted fine.
  2. Rebooted under UTM 4.5.4 and it failed per the bug (this was expected).
  3. Rebooted with 4.6.3, rebuilt/installed kernel with patches (needed tweaks).
  4. Patched kernel boots fine using both UTM 4.5.4 and 4.6.3.
sys/dev/uart/uart_dev_pl011.c
176

s/reproted/reported/

177

s/tabe/tabel/

178

s/QEMu/QEMU/

185

s/Quriks/Quirks/

191

s/regshift/regshft/ on this and the next line.