@@ -136,6 +136,7 @@ pgd_t *kvm_pgd_alloc(void)
136
136
static pte_t * kvm_mips_walk_pgd (pgd_t * pgd , struct kvm_mmu_memory_cache * cache ,
137
137
unsigned long addr )
138
138
{
139
+ p4d_t * p4d ;
139
140
pud_t * pud ;
140
141
pmd_t * pmd ;
141
142
@@ -145,7 +146,8 @@ static pte_t *kvm_mips_walk_pgd(pgd_t *pgd, struct kvm_mmu_memory_cache *cache,
145
146
BUG ();
146
147
return NULL ;
147
148
}
148
- pud = pud_offset (pgd , addr );
149
+ p4d = p4d_offset (pgd , addr );
150
+ pud = pud_offset (p4d , addr );
149
151
if (pud_none (* pud )) {
150
152
pmd_t * new_pmd ;
151
153
@@ -258,6 +260,7 @@ static bool kvm_mips_flush_gpa_pud(pud_t *pud, unsigned long start_gpa,
258
260
static bool kvm_mips_flush_gpa_pgd (pgd_t * pgd , unsigned long start_gpa ,
259
261
unsigned long end_gpa )
260
262
{
263
+ p4d_t * p4d ;
261
264
pud_t * pud ;
262
265
unsigned long end = ~0ul ;
263
266
int i_min = pgd_index (start_gpa );
@@ -269,7 +272,8 @@ static bool kvm_mips_flush_gpa_pgd(pgd_t *pgd, unsigned long start_gpa,
269
272
if (!pgd_present (pgd [i ]))
270
273
continue ;
271
274
272
- pud = pud_offset (pgd + i , 0 );
275
+ p4d = p4d_offset (pgd , 0 );
276
+ pud = pud_offset (p4d + i , 0 );
273
277
if (i == i_max )
274
278
end = end_gpa ;
275
279
@@ -378,6 +382,7 @@ static int kvm_mips_##name##_pgd(pgd_t *pgd, unsigned long start, \
378
382
unsigned long end) \
379
383
{ \
380
384
int ret = 0; \
385
+ p4d_t *p4d; \
381
386
pud_t *pud; \
382
387
unsigned long cur_end = ~0ul; \
383
388
int i_min = pgd_index(start); \
@@ -388,7 +393,8 @@ static int kvm_mips_##name##_pgd(pgd_t *pgd, unsigned long start, \
388
393
if (!pgd_present(pgd[i])) \
389
394
continue; \
390
395
\
391
- pud = pud_offset(pgd + i, 0); \
396
+ p4d = p4d_offset(pgd, 0); \
397
+ pud = pud_offset(p4d + i, 0); \
392
398
if (i == i_max) \
393
399
cur_end = end; \
394
400
\
@@ -916,6 +922,7 @@ static bool kvm_mips_flush_gva_pud(pud_t *pud, unsigned long start_gva,
916
922
static bool kvm_mips_flush_gva_pgd (pgd_t * pgd , unsigned long start_gva ,
917
923
unsigned long end_gva )
918
924
{
925
+ p4d_t * p4d ;
919
926
pud_t * pud ;
920
927
unsigned long end = ~0ul ;
921
928
int i_min = pgd_index (start_gva );
@@ -927,7 +934,8 @@ static bool kvm_mips_flush_gva_pgd(pgd_t *pgd, unsigned long start_gva,
927
934
if (!pgd_present (pgd [i ]))
928
935
continue ;
929
936
930
- pud = pud_offset (pgd + i , 0 );
937
+ p4d = p4d_offset (pgd , 0 );
938
+ pud = pud_offset (p4d + i , 0 );
931
939
if (i == i_max )
932
940
end = end_gva ;
933
941
0 commit comments