|
@@ -37,12 +37,14 @@ static inline int fill_gva_list(u64 gva_list[], int offset,
|
|
|
* Lower 12 bits encode the number of additional
|
|
* Lower 12 bits encode the number of additional
|
|
|
* pages to flush (in addition to the 'cur' page).
|
|
* pages to flush (in addition to the 'cur' page).
|
|
|
*/
|
|
*/
|
|
|
- if (diff >= HV_TLB_FLUSH_UNIT)
|
|
|
|
|
|
|
+ if (diff >= HV_TLB_FLUSH_UNIT) {
|
|
|
gva_list[gva_n] |= ~PAGE_MASK;
|
|
gva_list[gva_n] |= ~PAGE_MASK;
|
|
|
- else if (diff)
|
|
|
|
|
|
|
+ cur += HV_TLB_FLUSH_UNIT;
|
|
|
|
|
+ } else if (diff) {
|
|
|
gva_list[gva_n] |= (diff - 1) >> PAGE_SHIFT;
|
|
gva_list[gva_n] |= (diff - 1) >> PAGE_SHIFT;
|
|
|
|
|
+ cur = end;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- cur += HV_TLB_FLUSH_UNIT;
|
|
|
|
|
gva_n++;
|
|
gva_n++;
|
|
|
|
|
|
|
|
} while (cur < end);
|
|
} while (cur < end);
|