On 09.09.2020 16:50, Roger Pau Monne wrote: > MMIO regions below the maximum address on the memory map can have a > backing page struct that's shared with dom_io (see x86 > arch_init_memory and it's usage of share_xen_page_with_guest), and > thus also fulfill the is_special_page check because the page has the > Xen heap bit set. > > This is incorrect for MMIO regions when is_special_page is used by > epte_get_entry_emt, as it will force direct MMIO regions mapped into > the guest p2m to have the cache attributes set to write-back. > > Add an extra check in epte_get_entry_emt in order to detect pages > shared with dom_io (ie: MMIO regions) and don't force them to > write-back cache type on that case.
Did you consider the alternative of not marking those pages as Xen heap ones? In particular when looking at it from this angle I consider it at least odd for non-RAM (or more precisely non-heap) pages to get marked this way. And I can't currently see anything requiring them to be marked as such - them being owned by DomIO is all that's needed as it seems. Jan