* [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
@ 2020-05-21 9:04 Andrew Cooper
2020-05-21 10:12 ` Paul Durrant
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Andrew Cooper @ 2020-05-21 9:04 UTC (permalink / raw)
To: Xen-devel
Cc: Andrew Cooper, Tim Deegan, Wei Liu, Jan Beulich, Roger Pau Monné
When compiling with SHOPT_OUT_OF_SYNC disabled, the build fails with:
common.c:41:12: error: ‘sh_remove_write_access_from_sl1p’ declared ‘static’ but never defined [-Werror=unused-function]
static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
due to an unguarded forward declaration.
It turns out there is no need to forward declare
sh_remove_write_access_from_sl1p() to begin with, so move it to just ahead of
its first users, which is within a larger #ifdef'd SHOPT_OUT_OF_SYNC block.
Fix up for style while moving it. No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wl@xen.org>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Tim Deegan <tim@xen.org>
---
xen/arch/x86/mm/shadow/common.c | 56 ++++++++++++++++++-----------------------
1 file changed, 25 insertions(+), 31 deletions(-)
diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 0ac3f880e1..6dff240e97 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -38,9 +38,6 @@
#include <xen/numa.h>
#include "private.h"
-static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
- mfn_t smfn, unsigned long offset);
-
DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags);
static int sh_enable_log_dirty(struct domain *, bool log_global);
@@ -252,6 +249,31 @@ static inline void _sh_resync_l1(struct vcpu *v, mfn_t gmfn, mfn_t snpmfn)
SHADOW_INTERNAL_NAME(sh_resync_l1, 4)(v, gmfn, snpmfn);
}
+static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
+ mfn_t smfn, unsigned long off)
+{
+ struct page_info *sp = mfn_to_page(smfn);
+
+ ASSERT(mfn_valid(smfn));
+ ASSERT(mfn_valid(gmfn));
+
+ if ( sp->u.sh.type == SH_type_l1_32_shadow ||
+ sp->u.sh.type == SH_type_fl1_32_shadow )
+ return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 2)
+ (d, gmfn, smfn, off);
+
+ if ( sp->u.sh.type == SH_type_l1_pae_shadow ||
+ sp->u.sh.type == SH_type_fl1_pae_shadow )
+ return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 3)
+ (d, gmfn, smfn, off);
+
+ if ( sp->u.sh.type == SH_type_l1_64_shadow ||
+ sp->u.sh.type == SH_type_fl1_64_shadow )
+ return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 4)
+ (d, gmfn, smfn, off);
+
+ return 0;
+}
/*
* Fixup arrays: We limit the maximum number of writable mappings to
@@ -2001,34 +2023,6 @@ int sh_remove_write_access(struct domain *d, mfn_t gmfn,
}
#endif /* CONFIG_HVM */
-#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
-static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
- mfn_t smfn, unsigned long off)
-{
- struct page_info *sp = mfn_to_page(smfn);
-
- ASSERT(mfn_valid(smfn));
- ASSERT(mfn_valid(gmfn));
-
- if ( sp->u.sh.type == SH_type_l1_32_shadow
- || sp->u.sh.type == SH_type_fl1_32_shadow )
- {
- return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,2)
- (d, gmfn, smfn, off);
- }
- else if ( sp->u.sh.type == SH_type_l1_pae_shadow
- || sp->u.sh.type == SH_type_fl1_pae_shadow )
- return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,3)
- (d, gmfn, smfn, off);
- else if ( sp->u.sh.type == SH_type_l1_64_shadow
- || sp->u.sh.type == SH_type_fl1_64_shadow )
- return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,4)
- (d, gmfn, smfn, off);
-
- return 0;
-}
-#endif
-
/**************************************************************************/
/* Remove all mappings of a guest frame from the shadow tables.
* Returns non-zero if we need to flush TLBs. */
--
2.11.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* RE: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
2020-05-21 9:04 [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p() Andrew Cooper
@ 2020-05-21 10:12 ` Paul Durrant
2020-05-21 10:26 ` Andrew Cooper
2020-05-21 10:26 ` Roger Pau Monné
2020-05-24 11:52 ` Tim Deegan
2 siblings, 1 reply; 7+ messages in thread
From: Paul Durrant @ 2020-05-21 10:12 UTC (permalink / raw)
To: 'Andrew Cooper', 'Xen-devel'
Cc: 'Tim Deegan', 'Jan Beulich', 'Wei Liu',
'Roger Pau Monné'
> -----Original Message-----
> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> On Behalf Of Andrew Cooper
> Sent: 21 May 2020 10:04
> To: Xen-devel <xen-devel@lists.xenproject.org>
> Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Tim Deegan <tim@xen.org>; Wei Liu <wl@xen.org>; Jan
> Beulich <JBeulich@suse.com>; Roger Pau Monné <roger.pau@citrix.com>
> Subject: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
>
> When compiling with SHOPT_OUT_OF_SYNC disabled, the build fails with:
>
> common.c:41:12: error: ‘sh_remove_write_access_from_sl1p’ declared ‘static’ but never defined [-
> Werror=unused-function]
> static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> due to an unguarded forward declaration.
Is this, perhaps, an argument for making SHADOW_OPTIMIZATIONS tunable via Kconfig so that randconfig could catch things like this?
Paul
>
> It turns out there is no need to forward declare
> sh_remove_write_access_from_sl1p() to begin with, so move it to just ahead of
> its first users, which is within a larger #ifdef'd SHOPT_OUT_OF_SYNC block.
>
> Fix up for style while moving it. No functional change.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Wei Liu <wl@xen.org>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Tim Deegan <tim@xen.org>
> ---
> xen/arch/x86/mm/shadow/common.c | 56 ++++++++++++++++++-----------------------
> 1 file changed, 25 insertions(+), 31 deletions(-)
>
> diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
> index 0ac3f880e1..6dff240e97 100644
> --- a/xen/arch/x86/mm/shadow/common.c
> +++ b/xen/arch/x86/mm/shadow/common.c
> @@ -38,9 +38,6 @@
> #include <xen/numa.h>
> #include "private.h"
>
> -static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
> - mfn_t smfn, unsigned long offset);
> -
> DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags);
>
> static int sh_enable_log_dirty(struct domain *, bool log_global);
> @@ -252,6 +249,31 @@ static inline void _sh_resync_l1(struct vcpu *v, mfn_t gmfn, mfn_t snpmfn)
> SHADOW_INTERNAL_NAME(sh_resync_l1, 4)(v, gmfn, snpmfn);
> }
>
> +static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
> + mfn_t smfn, unsigned long off)
> +{
> + struct page_info *sp = mfn_to_page(smfn);
> +
> + ASSERT(mfn_valid(smfn));
> + ASSERT(mfn_valid(gmfn));
> +
> + if ( sp->u.sh.type == SH_type_l1_32_shadow ||
> + sp->u.sh.type == SH_type_fl1_32_shadow )
> + return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 2)
> + (d, gmfn, smfn, off);
> +
> + if ( sp->u.sh.type == SH_type_l1_pae_shadow ||
> + sp->u.sh.type == SH_type_fl1_pae_shadow )
> + return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 3)
> + (d, gmfn, smfn, off);
> +
> + if ( sp->u.sh.type == SH_type_l1_64_shadow ||
> + sp->u.sh.type == SH_type_fl1_64_shadow )
> + return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 4)
> + (d, gmfn, smfn, off);
> +
> + return 0;
> +}
>
> /*
> * Fixup arrays: We limit the maximum number of writable mappings to
> @@ -2001,34 +2023,6 @@ int sh_remove_write_access(struct domain *d, mfn_t gmfn,
> }
> #endif /* CONFIG_HVM */
>
> -#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
> -static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
> - mfn_t smfn, unsigned long off)
> -{
> - struct page_info *sp = mfn_to_page(smfn);
> -
> - ASSERT(mfn_valid(smfn));
> - ASSERT(mfn_valid(gmfn));
> -
> - if ( sp->u.sh.type == SH_type_l1_32_shadow
> - || sp->u.sh.type == SH_type_fl1_32_shadow )
> - {
> - return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,2)
> - (d, gmfn, smfn, off);
> - }
> - else if ( sp->u.sh.type == SH_type_l1_pae_shadow
> - || sp->u.sh.type == SH_type_fl1_pae_shadow )
> - return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,3)
> - (d, gmfn, smfn, off);
> - else if ( sp->u.sh.type == SH_type_l1_64_shadow
> - || sp->u.sh.type == SH_type_fl1_64_shadow )
> - return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,4)
> - (d, gmfn, smfn, off);
> -
> - return 0;
> -}
> -#endif
> -
> /**************************************************************************/
> /* Remove all mappings of a guest frame from the shadow tables.
> * Returns non-zero if we need to flush TLBs. */
> --
> 2.11.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
2020-05-21 10:12 ` Paul Durrant
@ 2020-05-21 10:26 ` Andrew Cooper
0 siblings, 0 replies; 7+ messages in thread
From: Andrew Cooper @ 2020-05-21 10:26 UTC (permalink / raw)
To: paul, 'Xen-devel'
Cc: 'Tim Deegan', 'Jan Beulich', 'Wei Liu',
'Roger Pau Monné'
On 21/05/2020 11:12, Paul Durrant wrote:
>> -----Original Message-----
>> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> On Behalf Of Andrew Cooper
>> Sent: 21 May 2020 10:04
>> To: Xen-devel <xen-devel@lists.xenproject.org>
>> Cc: Andrew Cooper <andrew.cooper3@citrix.com>; Tim Deegan <tim@xen.org>; Wei Liu <wl@xen.org>; Jan
>> Beulich <JBeulich@suse.com>; Roger Pau Monné <roger.pau@citrix.com>
>> Subject: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
>>
>> When compiling with SHOPT_OUT_OF_SYNC disabled, the build fails with:
>>
>> common.c:41:12: error: ‘sh_remove_write_access_from_sl1p’ declared ‘static’ but never defined [-
>> Werror=unused-function]
>> static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> due to an unguarded forward declaration.
> Is this, perhaps, an argument for making SHADOW_OPTIMIZATIONS tunable via Kconfig so that randconfig could catch things like this?
Given enough TUITS, yes.
~Andrew
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
2020-05-21 9:04 [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p() Andrew Cooper
2020-05-21 10:12 ` Paul Durrant
@ 2020-05-21 10:26 ` Roger Pau Monné
2020-05-21 10:32 ` Andrew Cooper
2020-05-24 11:52 ` Tim Deegan
2 siblings, 1 reply; 7+ messages in thread
From: Roger Pau Monné @ 2020-05-21 10:26 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Xen-devel, Tim Deegan, Wei Liu, Jan Beulich
On Thu, May 21, 2020 at 10:04:28AM +0100, Andrew Cooper wrote:
> When compiling with SHOPT_OUT_OF_SYNC disabled, the build fails with:
>
> common.c:41:12: error: ‘sh_remove_write_access_from_sl1p’ declared ‘static’ but never defined [-Werror=unused-function]
> static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> due to an unguarded forward declaration.
>
> It turns out there is no need to forward declare
> sh_remove_write_access_from_sl1p() to begin with, so move it to just ahead of
> its first users, which is within a larger #ifdef'd SHOPT_OUT_OF_SYNC block.
>
> Fix up for style while moving it. No functional change.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Wei Liu <wl@xen.org>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Tim Deegan <tim@xen.org>
> ---
> xen/arch/x86/mm/shadow/common.c | 56 ++++++++++++++++++-----------------------
> 1 file changed, 25 insertions(+), 31 deletions(-)
>
> diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
> index 0ac3f880e1..6dff240e97 100644
> --- a/xen/arch/x86/mm/shadow/common.c
> +++ b/xen/arch/x86/mm/shadow/common.c
> @@ -38,9 +38,6 @@
> #include <xen/numa.h>
> #include "private.h"
>
> -static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
> - mfn_t smfn, unsigned long offset);
> -
> DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags);
>
> static int sh_enable_log_dirty(struct domain *, bool log_global);
> @@ -252,6 +249,31 @@ static inline void _sh_resync_l1(struct vcpu *v, mfn_t gmfn, mfn_t snpmfn)
> SHADOW_INTERNAL_NAME(sh_resync_l1, 4)(v, gmfn, snpmfn);
> }
>
> +static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
> + mfn_t smfn, unsigned long off)
> +{
> + struct page_info *sp = mfn_to_page(smfn);
> +
> + ASSERT(mfn_valid(smfn));
> + ASSERT(mfn_valid(gmfn));
> +
> + if ( sp->u.sh.type == SH_type_l1_32_shadow ||
> + sp->u.sh.type == SH_type_fl1_32_shadow )
Using a switch would also be nice IMO and would avoid some of the code
churn.
Thanks, Roger.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
2020-05-21 10:26 ` Roger Pau Monné
@ 2020-05-21 10:32 ` Andrew Cooper
2020-05-21 12:22 ` Roger Pau Monné
0 siblings, 1 reply; 7+ messages in thread
From: Andrew Cooper @ 2020-05-21 10:32 UTC (permalink / raw)
To: Roger Pau Monné; +Cc: Xen-devel, Tim Deegan, Wei Liu, Jan Beulich
On 21/05/2020 11:26, Roger Pau Monné wrote:
> On Thu, May 21, 2020 at 10:04:28AM +0100, Andrew Cooper wrote:
>> When compiling with SHOPT_OUT_OF_SYNC disabled, the build fails with:
>>
>> common.c:41:12: error: ‘sh_remove_write_access_from_sl1p’ declared ‘static’ but never defined [-Werror=unused-function]
>> static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> due to an unguarded forward declaration.
>>
>> It turns out there is no need to forward declare
>> sh_remove_write_access_from_sl1p() to begin with, so move it to just ahead of
>> its first users, which is within a larger #ifdef'd SHOPT_OUT_OF_SYNC block.
>>
>> Fix up for style while moving it. No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Wei Liu <wl@xen.org>
>> CC: Roger Pau Monné <roger.pau@citrix.com>
>> CC: Tim Deegan <tim@xen.org>
>> ---
>> xen/arch/x86/mm/shadow/common.c | 56 ++++++++++++++++++-----------------------
>> 1 file changed, 25 insertions(+), 31 deletions(-)
>>
>> diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
>> index 0ac3f880e1..6dff240e97 100644
>> --- a/xen/arch/x86/mm/shadow/common.c
>> +++ b/xen/arch/x86/mm/shadow/common.c
>> @@ -38,9 +38,6 @@
>> #include <xen/numa.h>
>> #include "private.h"
>>
>> -static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
>> - mfn_t smfn, unsigned long offset);
>> -
>> DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags);
>>
>> static int sh_enable_log_dirty(struct domain *, bool log_global);
>> @@ -252,6 +249,31 @@ static inline void _sh_resync_l1(struct vcpu *v, mfn_t gmfn, mfn_t snpmfn)
>> SHADOW_INTERNAL_NAME(sh_resync_l1, 4)(v, gmfn, snpmfn);
>> }
>>
>> +static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
>> + mfn_t smfn, unsigned long off)
>> +{
>> + struct page_info *sp = mfn_to_page(smfn);
>> +
>> + ASSERT(mfn_valid(smfn));
>> + ASSERT(mfn_valid(gmfn));
>> +
>> + if ( sp->u.sh.type == SH_type_l1_32_shadow ||
>> + sp->u.sh.type == SH_type_fl1_32_shadow )
> Using a switch would also be nice IMO and would avoid some of the code
> churn.
Good point. Happy to do that if Tim agrees (but I won't bother sending
a v2 just now).
~Andrew
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
2020-05-21 10:32 ` Andrew Cooper
@ 2020-05-21 12:22 ` Roger Pau Monné
0 siblings, 0 replies; 7+ messages in thread
From: Roger Pau Monné @ 2020-05-21 12:22 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Xen-devel, Tim Deegan, Wei Liu, Jan Beulich
On Thu, May 21, 2020 at 11:32:04AM +0100, Andrew Cooper wrote:
> On 21/05/2020 11:26, Roger Pau Monné wrote:
> > On Thu, May 21, 2020 at 10:04:28AM +0100, Andrew Cooper wrote:
> >> +static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
> >> + mfn_t smfn, unsigned long off)
> >> +{
> >> + struct page_info *sp = mfn_to_page(smfn);
> >> +
> >> + ASSERT(mfn_valid(smfn));
> >> + ASSERT(mfn_valid(gmfn));
> >> +
> >> + if ( sp->u.sh.type == SH_type_l1_32_shadow ||
> >> + sp->u.sh.type == SH_type_fl1_32_shadow )
> > Using a switch would also be nice IMO and would avoid some of the code
> > churn.
>
> Good point. Happy to do that if Tim agrees (but I won't bother sending
> a v2 just now).
Sure, feel free to keep my RB after that.
Roger.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
2020-05-21 9:04 [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p() Andrew Cooper
2020-05-21 10:12 ` Paul Durrant
2020-05-21 10:26 ` Roger Pau Monné
@ 2020-05-24 11:52 ` Tim Deegan
2 siblings, 0 replies; 7+ messages in thread
From: Tim Deegan @ 2020-05-24 11:52 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Xen-devel, Wei Liu, Jan Beulich, Roger Pau Monné
At 10:04 +0100 on 21 May (1590055468), Andrew Cooper wrote:
> When compiling with SHOPT_OUT_OF_SYNC disabled, the build fails with:
>
> common.c:41:12: error: ‘sh_remove_write_access_from_sl1p’ declared ‘static’ but never defined [-Werror=unused-function]
> static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> due to an unguarded forward declaration.
>
> It turns out there is no need to forward declare
> sh_remove_write_access_from_sl1p() to begin with, so move it to just ahead of
> its first users, which is within a larger #ifdef'd SHOPT_OUT_OF_SYNC block.
>
> Fix up for style while moving it. No functional change.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Thank you! This is fine, either as-is or with the suggested change to
a switch.
Reviewed-by: Tim Deegan <tim@xen.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-05-24 11:53 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-21 9:04 [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p() Andrew Cooper
2020-05-21 10:12 ` Paul Durrant
2020-05-21 10:26 ` Andrew Cooper
2020-05-21 10:26 ` Roger Pau Monné
2020-05-21 10:32 ` Andrew Cooper
2020-05-21 12:22 ` Roger Pau Monné
2020-05-24 11:52 ` Tim Deegan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).