Quoting b5d8b03db136 ("x86/shadow: Drop dubious lastpage diagnostic"):
"This is a global variable (actually 3, one per GUEST_PAGING_LEVEL), operated on using atomics only (with no regard to what else shares the same cacheline), which emits a diagnostic (in debug builds only) without changing any program behaviour. It is presumably left-over debugging, as it interlinks the behaviour of all vCPUs in chronological order. Based on the read-only p2m types, this diagnostic can be tripped by entirely legitimate guest behaviour." All the same applies here (it's only a single variable of course). Signed-off-by: Jan Beulich <jbeul...@suse.com> --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -3354,16 +3354,7 @@ static enum hvm_translation_result __hvm memcpy(buf, p, count); hvmemul_write_cache(v, gfn_to_gaddr(gfn) | pgoff, buf, count); } - else if ( p2m_is_discard_write(p2mt) ) - { - static unsigned long lastpage; - - if ( xchg(&lastpage, gfn_x(gfn)) != gfn_x(gfn) ) - dprintk(XENLOG_G_DEBUG, - "%pv attempted write to read-only gfn %#lx (mfn=%#"PRI_mfn")\n", - v, gfn_x(gfn), mfn_x(page_to_mfn(page))); - } - else + else if ( !p2m_is_discard_write(p2mt) ) { if ( buf ) memcpy(p, buf, count);