Lines Matching refs:seg
181 static u64 fixed_mtrr_seg_unit_size(int seg)
183 return 8 << fixed_seg_table[seg].range_shift;
186 static bool fixed_msr_to_seg_unit(u32 msr, int *seg, int *unit)
190 *seg = 0;
194 *seg = 1;
200 *seg = 2;
212 static void fixed_mtrr_seg_unit_range(int seg, int unit, u64 *start, u64 *end)
214 struct fixed_mtrr_segment *mtrr_seg = &fixed_seg_table[seg];
215 u64 unit_size = fixed_mtrr_seg_unit_size(seg);
222 static int fixed_mtrr_seg_unit_range_index(int seg, int unit)
224 struct fixed_mtrr_segment *mtrr_seg = &fixed_seg_table[seg];
226 WARN_ON(mtrr_seg->start + unit * fixed_mtrr_seg_unit_size(seg)
233 static int fixed_mtrr_seg_end_range_index(int seg)
235 struct fixed_mtrr_segment *mtrr_seg = &fixed_seg_table[seg];
244 int seg, unit;
246 if (!fixed_msr_to_seg_unit(msr, &seg, &unit))
249 fixed_mtrr_seg_unit_range(seg, unit, start, end);
255 int seg, unit;
257 if (!fixed_msr_to_seg_unit(msr, &seg, &unit))
260 return fixed_mtrr_seg_unit_range_index(seg, unit);
266 int seg, seg_num = ARRAY_SIZE(fixed_seg_table);
268 for (seg = 0; seg < seg_num; seg++) {
269 mtrr_seg = &fixed_seg_table[seg];
271 return seg;
277 static int fixed_mtrr_addr_seg_to_range_index(u64 addr, int seg)
282 mtrr_seg = &fixed_seg_table[seg];
288 static u64 fixed_mtrr_range_end_addr(int seg, int index)
290 struct fixed_mtrr_segment *mtrr_seg = &fixed_seg_table[seg];
462 int seg;
478 int seg, index;
483 seg = fixed_mtrr_addr_to_seg(iter->start);
484 if (seg < 0)
488 index = fixed_mtrr_addr_seg_to_range_index(iter->start, seg);
490 iter->seg = seg;
545 if (fixed_mtrr_range_end_addr(iter->seg, iter->index) >= iter->end) {
558 if (iter->index > fixed_mtrr_seg_end_range_index(iter->seg))
559 iter->seg++;