On Tue, Oct 4, 2022, at 13:27, Konrad Dybcio wrote:
Add support for A7-A11 SoCs by if-ing out some features only present
* A11 & newer (implementation-defined IPI & UNCORE registers)
* A11 & newer (fast IPI support).
UNCORE/UNCORE2 and IPI registers conveniently both first appeared on
A11, so introduce just one check for that.
Knowing whether the SoC supports the latter is necessary, as they are
written to, even if fast IPI is disabled.
AFAIK that's only an artifact in this driver: It was added to prevent an FIQ
storm in case there were pending fast ipis (i.e. the bootloader was broken ;))
when this driver didn't support fast ipis yet.
This in turn causes a crash
on older platforms, as the implemention-defined registers either do
something else or are not supposed to be touched - definitely not a
 A11 is supposed to use this feature, but it currently doesn't work
for reasons unknown and hence remains disabled. It can easily be enabled
on A11 only, as there is a SoC-specific compatible in the DT with a
fallback to apple,aic. That said, it is not yet necessary, especially
with only one core up, and it has worked a-ok so far.
Just to make sure I understand this correctly - we have the following three situations:
- base: no fastipi, no uncore, will work on A11 and M1 though
- A11: fastipi and uncore but fastipi is broken (possibly due to HW errata or some bug in this driver that only happens on A11)
- M1 (or maybe even A12 already, doesn't matter though): fastipi and uncore support
If we figured out _why_ fastipi is broken on A11 we would only need a single
feature flag to enable both uncore and fastipi but for now we need two to
disable fastipi for A11
I'm also curious: What are the symptoms when you enable fastipi on A11?