|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/shadow: further correct MMIO handling in _sh_propagate()
commit 1d99732f2b092173d8600fa818aee3fa51046bb0
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Fri Jan 20 09:20:26 2023 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Jan 20 09:20:26 2023 +0100
x86/shadow: further correct MMIO handling in _sh_propagate()
While c61a6f74f80e ("x86: enforce consistent cachability of MMIO
mappings") correctly converted one !mfn_valid() check there, two others
were wrongly left untouched: Both cachability control and log-dirty
tracking ought to be uniformly handled/excluded for all (non-)MMIO
ranges, not just ones qualifiable by mfn_valid().
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
xen/arch/x86/mm/shadow/multi.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index eb90bf2b15..98c0b7302a 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -550,8 +550,7 @@ _sh_propagate(struct vcpu *v,
* caching attributes in the shadows to match what was asked for.
*/
if ( (level == 1) && is_hvm_domain(d) &&
- (!mfn_valid(target_mfn) ||
- !is_special_page(mfn_to_page(target_mfn))) )
+ (mmio_mfn || !is_special_page(mfn_to_page(target_mfn))) )
{
int type;
@@ -662,8 +661,7 @@ _sh_propagate(struct vcpu *v,
* (We handle log-dirty entirely inside the shadow code, without using the
* p2m_ram_logdirty p2m type: only HAP uses that.)
*/
- if ( level == 1 && unlikely(shadow_mode_log_dirty(d)) &&
- mfn_valid(target_mfn) )
+ if ( level == 1 && unlikely(shadow_mode_log_dirty(d)) && !mmio_mfn )
{
if ( ft & FETCH_TYPE_WRITE )
paging_mark_dirty(d, target_mfn);
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |