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

Re: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()



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@xxxxxxxxxx>
> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
>
>> ---
>> CC: Jan Beulich <JBeulich@xxxxxxxx>
>> CC: Wei Liu <wl@xxxxxxx>
>> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
>> CC: Tim Deegan <tim@xxxxxxx>
>> ---
>>  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



 


Rackspace

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