Re: [RFC 07/14] s390/mm: Add gmap_idte_global

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

 



On 16.10.18 10:22, David Hildenbrand wrote:
> On 19/09/2018 10:47, Janosch Frank wrote:
>> Introduce a function to do a idte global flush on a gmap pmd and
>> remove some code duplication.
> 
> I'd call this patch
> "s390x/mm: factor out idte global flush into gmap_idte_global"

I can offer:

s390/mm: Factor out guest related idte global flushes into gmap_idte_global

or

s390x/mm: Factor out gmap idte global flushes into gmap_idte_global

> 
> Reviewed-by: David Hildenbrand <david@xxxxxxxxxx>

Thanks!

> 
>>
>> Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx>
>> ---
>>  arch/s390/mm/gmap.c | 28 ++++++++++++++--------------
>>  1 file changed, 14 insertions(+), 14 deletions(-)
>>
>> diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c
>> index 70763bcd0e0b..26cc6ce19afb 100644
>> --- a/arch/s390/mm/gmap.c
>> +++ b/arch/s390/mm/gmap.c
>> @@ -1005,6 +1005,18 @@ static pte_t *gmap_pte_from_pmd(struct gmap *gmap, pmd_t *pmdp,
>>  	return pte_offset_map(pmdp, addr);
>>  }
>>  
>> +static inline void gmap_idte_global(unsigned long asce, pmd_t *pmdp,
>> +				    unsigned long gaddr)
>> +{
>> +	if (MACHINE_HAS_TLB_GUEST)
>> +		__pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE, asce,
>> +			    IDTE_GLOBAL);
>> +	else if (MACHINE_HAS_IDTE)
>> +		__pmdp_idte(gaddr, pmdp, 0, 0, IDTE_GLOBAL);
>> +	else
>> +		__pmdp_csp(pmdp);
>> +}
>> +
>>  /**
>>   * gmap_pmd_split_free - Free a split pmd's page table
>>   * @pmdp The split pmd that we free of its page table
>> @@ -2459,13 +2471,7 @@ static void gmap_pmdp_xchg(struct gmap *gmap, pmd_t *pmdp, pmd_t new,
>>  	pmdp_notify_gmap(gmap, pmdp, gaddr, vmaddr);
>>  	if (pmd_large(new))
>>  		pmd_val(new) &= ~GMAP_SEGMENT_NOTIFY_BITS;
>> -	if (MACHINE_HAS_TLB_GUEST)
>> -		__pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE, gmap->asce,
>> -			    IDTE_GLOBAL);
>> -	else if (MACHINE_HAS_IDTE)
>> -		__pmdp_idte(gaddr, pmdp, 0, 0, IDTE_GLOBAL);
>> -	else
>> -		__pmdp_csp(pmdp);
>> +	gmap_idte_global(gmap->asce, pmdp, gaddr);
>>  	*pmdp = new;
>>  }
>>  
>> @@ -2578,13 +2584,7 @@ void gmap_pmdp_idte_global(struct mm_struct *mm, unsigned long vmaddr)
>>  			pmdp_notify_gmap(gmap, pmdp, gaddr, vmaddr);
>>  			if (pmd_large(*pmdp))
>>  				WARN_ON(*entry & GMAP_SEGMENT_NOTIFY_BITS);
>> -			if (MACHINE_HAS_TLB_GUEST)
>> -				__pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE,
>> -					    gmap->asce, IDTE_GLOBAL);
>> -			else if (MACHINE_HAS_IDTE)
>> -				__pmdp_idte(gaddr, pmdp, 0, 0, IDTE_GLOBAL);
>> -			else
>> -				__pmdp_csp(pmdp);
>> +			gmap_idte_global(gmap->asce, pmdp, gaddr);
>>  			gmap_pmd_split_free(gmap, pmdp);
>>  			*entry = _SEGMENT_ENTRY_EMPTY;
>>  		}
>>
> 
> 


Attachment: signature.asc
Description: OpenPGP digital signature


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Kernel Development]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Info]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Linux Media]     [Device Mapper]

  Powered by Linux