Re: [RFC 11/14] x86: add support for Dynamic Kernel Stacks

From: Dave Hansen
Date: Mon Mar 11 2024 - 20:53:46 EST


On 3/11/24 16:56, Nadav Amit wrote:
> So you can look on the dirty-bit, which is not being set
> speculatively and save yourself one problem.
Define "set speculatively". :)

> If software on one logical processor writes to a page while software
> on another logical processor concurrently clears the R/W flag in the
> paging-structure entry that maps the page, execution on some
> processors may result in the entry’s dirty flag being set (due to the
> write on the first logical processor) and the entry’s R/W flag being
> clear (due to the update to the entry on the second logical
> processor).

In other words, you'll see both a fault *AND* the dirty bit. The write
never retired and the dirty bit is set.

Does that count as being set speculatively?

That's just the behavior that the SDM explicitly admits to.