Skip to content

Commit f7bfb57

Browse files
Xiao Guangrongbonzini
authored andcommitted
KVM: MTRR: introduce fixed_mtrr_addr_* functions
Two functions are introduced: - fixed_mtrr_addr_to_seg() translates the address to the fixed MTRR segment - fixed_mtrr_addr_seg_to_range_index() translates the address to the index of kvm_mtrr.fixed_ranges[] They will be used in the later patch Signed-off-by: Xiao Guangrong <[email protected]> [Adjust for range_size->range_shift change. - Paolo] Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 19efffa commit f7bfb57

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

arch/x86/kvm/mtrr.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,31 @@ static int fixed_msr_to_range_index(u32 msr)
241241
return fixed_mtrr_seg_unit_range_index(seg, unit);
242242
}
243243

244+
static int fixed_mtrr_addr_to_seg(u64 addr)
245+
{
246+
struct fixed_mtrr_segment *mtrr_seg;
247+
int seg, seg_num = ARRAY_SIZE(fixed_seg_table);
248+
249+
for (seg = 0; seg < seg_num; seg++) {
250+
mtrr_seg = &fixed_seg_table[seg];
251+
if (mtrr_seg->start >= addr && addr < mtrr_seg->end)
252+
return seg;
253+
}
254+
255+
return -1;
256+
}
257+
258+
static int fixed_mtrr_addr_seg_to_range_index(u64 addr, int seg)
259+
{
260+
struct fixed_mtrr_segment *mtrr_seg;
261+
int index;
262+
263+
mtrr_seg = &fixed_seg_table[seg];
264+
index = mtrr_seg->range_start;
265+
index += (addr - mtrr_seg->start) >> mtrr_seg->range_shift;
266+
return index;
267+
}
268+
244269
static void var_mtrr_range(struct kvm_mtrr_range *range, u64 *start, u64 *end)
245270
{
246271
u64 mask;

0 commit comments

Comments
 (0)