Re: [kvms390:hlp_vsie 9/14] arch/s390/mm/pgtable.c:744:18: error: implicit declaration of function 'huge_pte_alloc'; did you mean 'huge_pte_lock'?

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

 



On 27.07.2018 09:46, Christian Borntraeger wrote:
> This is with 
> 
> # CONFIG_TRANSPARENT_HUGEPAGE is not set
> # CONFIG_HUGETLBFS is not set
> 
> so we need to fence this.
> With hugetlbfs enabled this compiles (and also works fine).

We can either ifdef this three times or create a pmd_alloc_map in pgtable.h.

I think that's Martin's call to make.

> 
> 
> 
> On 07/26/2018 07:23 PM, kbuild test robot wrote:
>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git hlp_vsie
>> head:   fadb8fb358096ec793c2a233dc20ecee83c2b612
>> commit: 28df31569e0eb8bd6448c1b7fa40ad138300110a [9/14] s390/mm: Add huge pmd storage key handling
>> config: s390-alldefconfig (attached as .config)
>> compiler: s390x-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
>> reproduce:
>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>         chmod +x ~/bin/make.cross
>>         git checkout 28df31569e0eb8bd6448c1b7fa40ad138300110a
>>         # save the attached .config to linux build tree
>>         GCC_VERSION=7.2.0 make.cross ARCH=s390 
>>
>> All error/warnings (new ones prefixed by >>):
>>
>>    arch/s390/mm/pgtable.c: In function 'set_guest_storage_key':
>>>> arch/s390/mm/pgtable.c:744:18: error: implicit declaration of function 'huge_pte_alloc'; did you mean 'huge_pte_lock'? [-Werror=implicit-function-declaration]
>>      pmdp = (pmd_t *)huge_pte_alloc(mm, addr, HPAGE_SIZE);
>>                      ^~~~~~~~~~~~~~
>>                      huge_pte_lock
>>>> arch/s390/mm/pgtable.c:744:9: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
>>      pmdp = (pmd_t *)huge_pte_alloc(mm, addr, HPAGE_SIZE);
>>             ^
>>    arch/s390/mm/pgtable.c: In function 'reset_guest_reference_bit':
>>    arch/s390/mm/pgtable.c:847:9: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
>>      pmdp = (pmd_t *)huge_pte_alloc(mm, addr, HPAGE_SIZE);
>>             ^
>>    arch/s390/mm/pgtable.c: In function 'get_guest_storage_key':
>>    arch/s390/mm/pgtable.c:901:9: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
>>      pmdp = (pmd_t *)huge_pte_alloc(mm, addr, HPAGE_SIZE);
>>             ^
>>    cc1: some warnings being treated as errors
>>
>> vim +744 arch/s390/mm/pgtable.c
>>
>>    734	
>>    735	int set_guest_storage_key(struct mm_struct *mm, unsigned long addr,
>>    736				  unsigned char key, bool nq)
>>    737	{
>>    738		unsigned long keyul, paddr;
>>    739		spinlock_t *ptl;
>>    740		pgste_t old, new;
>>    741		pmd_t *pmdp;
>>    742		pte_t *ptep;
>>    743	
>>  > 744		pmdp = (pmd_t *)huge_pte_alloc(mm, addr, HPAGE_SIZE);
>>    745		if (unlikely(!pmdp))
>>    746			return -EFAULT;
>>    747	
>>    748		ptl = pmd_lock(mm, pmdp);
>>    749		if (!pmd_present(*pmdp)) {
>>    750			spin_unlock(ptl);
>>    751			return -EFAULT;
>>    752		}
>>    753	
>>    754		if (pmd_large(*pmdp)) {
>>    755			paddr = pmd_val(*pmdp) & HPAGE_MASK;
>>    756			paddr |= addr & ~HPAGE_MASK;
>>    757			/*
>>    758			 * Huge pmds need quiescing operations, they are
>>    759			 * always mapped.
>>    760			 */
>>    761			page_set_storage_key(paddr, key, 1);
>>    762			spin_unlock(ptl);
>>    763			return 0;
>>    764		}
>>    765		spin_unlock(ptl);
>>    766	
>>    767		ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
>>    768		if (unlikely(!ptep))
>>    769			return -EFAULT;
>>    770	
>>    771		new = old = pgste_get_lock(ptep);
>>    772		pgste_val(new) &= ~(PGSTE_GR_BIT | PGSTE_GC_BIT |
>>    773				    PGSTE_ACC_BITS | PGSTE_FP_BIT);
>>    774		keyul = (unsigned long) key;
>>    775		pgste_val(new) |= (keyul & (_PAGE_CHANGED | _PAGE_REFERENCED)) << 48;
>>    776		pgste_val(new) |= (keyul & (_PAGE_ACC_BITS | _PAGE_FP_BIT)) << 56;
>>    777		if (!(pte_val(*ptep) & _PAGE_INVALID)) {
>>    778			unsigned long bits, skey;
>>    779	
>>    780			paddr = pte_val(*ptep) & PAGE_MASK;
>>    781			skey = (unsigned long) page_get_storage_key(paddr);
>>    782			bits = skey & (_PAGE_CHANGED | _PAGE_REFERENCED);
>>    783			skey = key & (_PAGE_ACC_BITS | _PAGE_FP_BIT);
>>    784			/* Set storage key ACC and FP */
>>    785			page_set_storage_key(paddr, skey, !nq);
>>    786			/* Merge host changed & referenced into pgste  */
>>    787			pgste_val(new) |= bits << 52;
>>    788		}
>>    789		/* changing the guest storage key is considered a change of the page */
>>    790		if ((pgste_val(new) ^ pgste_val(old)) &
>>    791		    (PGSTE_ACC_BITS | PGSTE_FP_BIT | PGSTE_GR_BIT | PGSTE_GC_BIT))
>>    792			pgste_val(new) |= PGSTE_UC_BIT;
>>    793	
>>    794		pgste_set_unlock(ptep, new);
>>    795		pte_unmap_unlock(ptep, ptl);
>>    796		return 0;
>>    797	}
>>    798	EXPORT_SYMBOL(set_guest_storage_key);
>>    799	
>>
>> ---
>> 0-DAY kernel test infrastructure                Open Source Technology Center
>> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-s390" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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