On 19/12/2024 6:16 pm, Petr Beneš wrote:
> From: Petr Beneš <w1be...@gmail.com>
>
> This patch introduces a new XENMEM_access_r_pw permission. Functionally, it 
> is similar to XENMEM_access_r, but for processors with 
> TERTIARY_EXEC_EPT_PAGING_WRITE support (Intel 12th Gen/Alder Lake and later), 
> it also permits the CPU to write to the page during guest page-table walks 
> (e.g., updating A/D bits) without triggering an EPT violation.
>
> This behavior works by both enabling the EPT paging-write feature and setting 
> the EPT paging-write flag in the EPT leaf entry.
>
> This feature provides a significant performance boost for introspection tools 
> that monitor guest page-table updates. Previously, every page-table 
> modification by the guest—including routine updates like setting A/D 
> bits—triggered an EPT violation, adding unnecessary overhead. The new 
> XENMEM_access_r_pw permission allows these "uninteresting" updates to occur 
> without EPT violations, improving efficiency.
>
> Additionally, this feature simplifies the handling of race conditions in 
> scenarios where an introspection tool:
>
> - Sets an "invisible breakpoint" in the altp2m view for a function F
> - Monitors guest page-table updates to track whether the page containing F is 
> paged out
> - Encounters a cleared Access (A) bit on the page containing F while the 
> guest is about to execute the breakpoint
>
> In the current implementation:
>
> - If xc_monitor_inguest_pagefault() is enabled, the introspection tool must 
> emulate both the breakpoint and the setting of the Access bit.
> - If xc_monitor_inguest_pagefault() is disabled, Xen handles the EPT 
> violation without notifying the introspection tool, setting the Access bit 
> and emulating the instruction. However, Xen fetches the instruction from the 
> default view instead of the altp2m view, potentially causing the breakpoint 
> to be missed.
>
> With this patch, setting XENMEM_access_r_pw for monitored guest page-tables 
> prevents EPT violations in these cases. This change enhances performance and 
> reduces complexity for introspection tools, ensuring seamless breakpoint 
> handling while tracking guest page-table updates.
>
> Petr Beneš (2):
>   x86: Rename _rsvd field to pw and move it to the bit 58
>   x86/EPT: Add Support for Paging-Write Feature

We're past final posting date for 4.20 now.

CC Oleksii as release manager.

However, it's a small patch series, and comes urgently on the back of
Intel ceasing all EPT-SPP support in November.

Given the timelines of the release, and how simple the series is, I'd
like to make an argument for including it at this juncture.

~Andrew

Reply via email to