[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] CONFIG_SCRUB_DEBUG=y + arm64 + livepatch = Xen BUG at page_alloc.c:738

On Tue, 2017-09-12 at 20:01 -0400, Konrad Rzeszutek Wilk wrote:
> > On 09/11/2017 07:55 PM, Konrad Rzeszutek Wilk wrote:
> > > I've only been able to reproduce this on ARM64 (trying right now
> > > ARM32
> > > as well), and not on x86.
> > > 
> > > If I compile Xen without CONFIG_SCRUB_DEBUG it works great. But
> > > if
> > > enable it and try to load a livepatch it blows up in
> > > page_alloc.c:738
> > > 
> I honestly think the issue is that on ARM64 the "sleep" loop does not
> wake up as often as on x86 (CC-ing Dariof who I believe observed this
> with Credit2 and the wakeup.. something) - maybe he remembers the
> details. Anyhow my theory is that the pages are not scrubbed at all
> when they go in the idle loop as once it goes to sleep - it stays
> there.
> Ah, see commit 05c52278a7c92bc753d9fe32017e4961012b9f23 
> Maybe this is related?
As Boris is saying, it really should not. In fact, having pages that
needs scrubbing _prevents_ the CPU from becoming idle (and stopping the
tick, if any).

What we observed is that x86 periodically wakes up, even on a totally
idle system, while ARM doesn't. But this should not be a problem as, in
both cases, if there's pages to scrub, the CPU just won't go to sleep.

If frequent wakeups is what causes the scrubbing to work ok on the x86,
and not on ARM, it IMO means that there's something like a race

<<This happens because I choose it to happen!>> (Raistlin Majere)
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

Attachment: signature.asc
Description: This is a digitally signed message part

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.