@@ -413,28 +413,6 @@ void setup_protection_map(void);
413413 * SW-bits: y young, d dirty, r read, w write
414414 */
415415
416- /* Page status table bits for virtualization */
417- #define PGSTE_ACC_BITS 0xf000000000000000UL
418- #define PGSTE_FP_BIT 0x0800000000000000UL
419- #define PGSTE_PCL_BIT 0x0080000000000000UL
420- #define PGSTE_HR_BIT 0x0040000000000000UL
421- #define PGSTE_HC_BIT 0x0020000000000000UL
422- #define PGSTE_GR_BIT 0x0004000000000000UL
423- #define PGSTE_GC_BIT 0x0002000000000000UL
424- #define PGSTE_ST2_MASK 0x0000ffff00000000UL
425- #define PGSTE_UC_BIT 0x0000000000008000UL /* user dirty (migration) */
426- #define PGSTE_IN_BIT 0x0000000000004000UL /* IPTE notify bit */
427- #define PGSTE_VSIE_BIT 0x0000000000002000UL /* ref'd in a shadow table */
428-
429- /* Guest Page State used for virtualization */
430- #define _PGSTE_GPS_ZERO 0x0000000080000000UL
431- #define _PGSTE_GPS_NODAT 0x0000000040000000UL
432- #define _PGSTE_GPS_USAGE_MASK 0x0000000003000000UL
433- #define _PGSTE_GPS_USAGE_STABLE 0x0000000000000000UL
434- #define _PGSTE_GPS_USAGE_UNUSED 0x0000000001000000UL
435- #define _PGSTE_GPS_USAGE_POT_VOLATILE 0x0000000002000000UL
436- #define _PGSTE_GPS_USAGE_VOLATILE _PGSTE_GPS_USAGE_MASK
437-
438416/*
439417 * A user page table pointer has the space-switch-event bit, the
440418 * private-space-control bit and the storage-alteration-event-control
@@ -566,15 +544,6 @@ static inline bool mm_pmd_folded(struct mm_struct *mm)
566544}
567545#define mm_pmd_folded (mm ) mm_pmd_folded(mm)
568546
569- static inline int mm_has_pgste (struct mm_struct * mm )
570- {
571- #ifdef CONFIG_PGSTE
572- if (unlikely (mm -> context .has_pgste ))
573- return 1 ;
574- #endif
575- return 0 ;
576- }
577-
578547static inline int mm_is_protected (struct mm_struct * mm )
579548{
580549#if IS_ENABLED (CONFIG_KVM )
@@ -584,16 +553,6 @@ static inline int mm_is_protected(struct mm_struct *mm)
584553 return 0 ;
585554}
586555
587- static inline pgste_t clear_pgste_bit (pgste_t pgste , unsigned long mask )
588- {
589- return __pgste (pgste_val (pgste ) & ~mask );
590- }
591-
592- static inline pgste_t set_pgste_bit (pgste_t pgste , unsigned long mask )
593- {
594- return __pgste (pgste_val (pgste ) | mask );
595- }
596-
597556static inline pte_t clear_pte_bit (pte_t pte , pgprot_t prot )
598557{
599558 return __pte (pte_val (pte ) & ~pgprot_val (prot ));
@@ -639,15 +598,6 @@ static inline int mm_forbids_zeropage(struct mm_struct *mm)
639598 return 0 ;
640599}
641600
642- static inline int mm_uses_skeys (struct mm_struct * mm )
643- {
644- #ifdef CONFIG_PGSTE
645- if (mm -> context .uses_skeys )
646- return 1 ;
647- #endif
648- return 0 ;
649- }
650-
651601/**
652602 * cspg() - Compare and Swap and Purge (CSPG)
653603 * @ptr: Pointer to the value to be exchanged
@@ -1356,45 +1306,13 @@ static inline int ptep_set_access_flags(struct vm_area_struct *vma,
13561306{
13571307 if (pte_same (* ptep , entry ))
13581308 return 0 ;
1359- if (cpu_has_rdp () && ! mm_has_pgste ( vma -> vm_mm ) && pte_allow_rdp (* ptep , entry ))
1309+ if (cpu_has_rdp () && pte_allow_rdp (* ptep , entry ))
13601310 ptep_reset_dat_prot (vma -> vm_mm , addr , ptep , entry );
13611311 else
13621312 ptep_xchg_direct (vma -> vm_mm , addr , ptep , entry );
13631313 return 1 ;
13641314}
13651315
1366- /*
1367- * Additional functions to handle KVM guest page tables
1368- */
1369- void ptep_set_pte_at (struct mm_struct * mm , unsigned long addr ,
1370- pte_t * ptep , pte_t entry );
1371- void ptep_set_notify (struct mm_struct * mm , unsigned long addr , pte_t * ptep );
1372- int ptep_force_prot (struct mm_struct * mm , unsigned long gaddr ,
1373- pte_t * ptep , int prot , unsigned long bit );
1374- void ptep_zap_unused (struct mm_struct * mm , unsigned long addr ,
1375- pte_t * ptep , int reset );
1376- void ptep_zap_key (struct mm_struct * mm , unsigned long addr , pte_t * ptep );
1377- int ptep_shadow_pte (struct mm_struct * mm , unsigned long saddr ,
1378- pte_t * sptep , pte_t * tptep , pte_t pte );
1379- void ptep_unshadow_pte (struct mm_struct * mm , unsigned long saddr , pte_t * ptep );
1380-
1381- bool ptep_test_and_clear_uc (struct mm_struct * mm , unsigned long address ,
1382- pte_t * ptep );
1383- int set_guest_storage_key (struct mm_struct * mm , unsigned long addr ,
1384- unsigned char key , bool nq );
1385- int cond_set_guest_storage_key (struct mm_struct * mm , unsigned long addr ,
1386- unsigned char key , unsigned char * oldkey ,
1387- bool nq , bool mr , bool mc );
1388- int reset_guest_reference_bit (struct mm_struct * mm , unsigned long addr );
1389- int get_guest_storage_key (struct mm_struct * mm , unsigned long addr ,
1390- unsigned char * key );
1391-
1392- int set_pgste_bits (struct mm_struct * mm , unsigned long addr ,
1393- unsigned long bits , unsigned long value );
1394- int get_pgste (struct mm_struct * mm , unsigned long hva , unsigned long * pgstep );
1395- int pgste_perform_essa (struct mm_struct * mm , unsigned long hva , int orc ,
1396- unsigned long * oldpte , unsigned long * oldpgste );
1397-
13981316#define pgprot_writecombine pgprot_writecombine
13991317pgprot_t pgprot_writecombine (pgprot_t prot );
14001318
@@ -1409,23 +1327,12 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
14091327{
14101328 if (pte_present (entry ))
14111329 entry = clear_pte_bit (entry , __pgprot (_PAGE_UNUSED ));
1412- if (mm_has_pgste (mm )) {
1413- for (;;) {
1414- ptep_set_pte_at (mm , addr , ptep , entry );
1415- if (-- nr == 0 )
1416- break ;
1417- ptep ++ ;
1418- entry = __pte (pte_val (entry ) + PAGE_SIZE );
1419- addr += PAGE_SIZE ;
1420- }
1421- } else {
1422- for (;;) {
1423- set_pte (ptep , entry );
1424- if (-- nr == 0 )
1425- break ;
1426- ptep ++ ;
1427- entry = __pte (pte_val (entry ) + PAGE_SIZE );
1428- }
1330+ for (;;) {
1331+ set_pte (ptep , entry );
1332+ if (-- nr == 0 )
1333+ break ;
1334+ ptep ++ ;
1335+ entry = __pte (pte_val (entry ) + PAGE_SIZE );
14291336 }
14301337}
14311338#define set_ptes set_ptes
@@ -2026,18 +1933,4 @@ extern pte_t *vmem_get_alloc_pte(unsigned long addr, bool alloc);
20261933#define pmd_pgtable (pmd ) \
20271934 ((pgtable_t)__va(pmd_val(pmd) & -sizeof(pte_t)*PTRS_PER_PTE))
20281935
2029- static inline unsigned long gmap_pgste_get_pgt_addr (unsigned long * pgt )
2030- {
2031- unsigned long * pgstes , res ;
2032-
2033- pgstes = pgt + _PAGE_ENTRIES ;
2034-
2035- res = (pgstes [0 ] & PGSTE_ST2_MASK ) << 16 ;
2036- res |= pgstes [1 ] & PGSTE_ST2_MASK ;
2037- res |= (pgstes [2 ] & PGSTE_ST2_MASK ) >> 16 ;
2038- res |= (pgstes [3 ] & PGSTE_ST2_MASK ) >> 32 ;
2039-
2040- return res ;
2041- }
2042-
20431936#endif /* _S390_PAGE_H */
0 commit comments