Page MenuHomeFreeBSD

amd64 efirt: do not flush cache for runtime pages
ClosedPublic

Authored by kib on Oct 5 2021, 2:27 PM.
Tags
None
Referenced Files
Unknown Object (File)
Jan 12 2024, 2:38 PM
Unknown Object (File)
Dec 31 2023, 11:23 PM
Unknown Object (File)
Dec 25 2023, 11:00 AM
Unknown Object (File)
Dec 23 2023, 8:12 AM
Unknown Object (File)
Dec 9 2023, 5:29 PM
Unknown Object (File)
Dec 9 2023, 11:29 AM
Unknown Object (File)
Dec 9 2023, 5:29 AM
Unknown Object (File)
Dec 3 2023, 1:17 PM
Subscribers

Details

Summary
We actually do not know is it safe or not to flush cache for random
BAR/register page existing in the system.  It is well-known that for
instance LAPICs cannot tolerate cache flush.  As report indicates,
there are more such devices.

This issue typically affects AMD machines which do not report self-snoop,
causing real CLFLUSH invocation on the mapped pages.  Intels do self-snoop,
so this change should be nop for them, and unsafe devices, if any, are
already ignored.

Also:

apic: initialize lapic_paddr statically

The default value for LAPIC registers page physical address
is usually right. Having this value available early makes
pmap_force_invalidate_cache_range(), used on non-self-snoop machines,
avoid flushing LAPIC range for early calls.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable