Lines Matching refs:dirty
85 struct vmw_bo_dirty *dirty = vbo->dirty; in vmw_bo_dirty_scan_pagetable() local
92 offset, dirty->bitmap_size, in vmw_bo_dirty_scan_pagetable()
93 offset, &dirty->bitmap[0], in vmw_bo_dirty_scan_pagetable()
94 &dirty->start, &dirty->end); in vmw_bo_dirty_scan_pagetable()
96 dirty->change_count++; in vmw_bo_dirty_scan_pagetable()
98 dirty->change_count = 0; in vmw_bo_dirty_scan_pagetable()
100 if (dirty->change_count > VMW_DIRTY_NUM_CHANGE_TRIGGERS) { in vmw_bo_dirty_scan_pagetable()
101 dirty->change_count = 0; in vmw_bo_dirty_scan_pagetable()
102 dirty->method = VMW_BO_DIRTY_MKWRITE; in vmw_bo_dirty_scan_pagetable()
104 offset, dirty->bitmap_size); in vmw_bo_dirty_scan_pagetable()
106 offset, dirty->bitmap_size, in vmw_bo_dirty_scan_pagetable()
107 offset, &dirty->bitmap[0], in vmw_bo_dirty_scan_pagetable()
108 &dirty->start, &dirty->end); in vmw_bo_dirty_scan_pagetable()
123 struct vmw_bo_dirty *dirty = vbo->dirty; in vmw_bo_dirty_scan_mkwrite() local
128 if (dirty->end <= dirty->start) in vmw_bo_dirty_scan_mkwrite()
132 dirty->start + offset, in vmw_bo_dirty_scan_mkwrite()
133 dirty->end - dirty->start); in vmw_bo_dirty_scan_mkwrite()
135 if (100UL * num_marked / dirty->bitmap_size > in vmw_bo_dirty_scan_mkwrite()
137 dirty->change_count++; in vmw_bo_dirty_scan_mkwrite()
139 dirty->change_count = 0; in vmw_bo_dirty_scan_mkwrite()
142 if (dirty->change_count > VMW_DIRTY_NUM_CHANGE_TRIGGERS) { in vmw_bo_dirty_scan_mkwrite()
144 pgoff_t end = dirty->bitmap_size; in vmw_bo_dirty_scan_mkwrite()
146 dirty->method = VMW_BO_DIRTY_PAGETABLE; in vmw_bo_dirty_scan_mkwrite()
148 &dirty->bitmap[0], in vmw_bo_dirty_scan_mkwrite()
150 bitmap_clear(&dirty->bitmap[0], 0, dirty->bitmap_size); in vmw_bo_dirty_scan_mkwrite()
151 if (dirty->start < dirty->end) in vmw_bo_dirty_scan_mkwrite()
152 bitmap_set(&dirty->bitmap[0], dirty->start, in vmw_bo_dirty_scan_mkwrite()
153 dirty->end - dirty->start); in vmw_bo_dirty_scan_mkwrite()
154 dirty->change_count = 0; in vmw_bo_dirty_scan_mkwrite()
167 struct vmw_bo_dirty *dirty = vbo->dirty; in vmw_bo_dirty_scan() local
169 if (dirty->method == VMW_BO_DIRTY_PAGETABLE) in vmw_bo_dirty_scan()
189 struct vmw_bo_dirty *dirty = vbo->dirty; in vmw_bo_dirty_pre_unmap() local
193 if (dirty->method != VMW_BO_DIRTY_PAGETABLE || start >= end) in vmw_bo_dirty_pre_unmap()
199 &dirty->bitmap[0], &dirty->start, in vmw_bo_dirty_pre_unmap()
200 &dirty->end); in vmw_bo_dirty_pre_unmap()
234 struct vmw_bo_dirty *dirty = vbo->dirty; in vmw_bo_dirty_add() local
243 if (dirty) { in vmw_bo_dirty_add()
244 dirty->ref_count++; in vmw_bo_dirty_add()
248 size = sizeof(*dirty) + BITS_TO_LONGS(num_pages) * sizeof(long); in vmw_bo_dirty_add()
256 dirty = kvzalloc(size, GFP_KERNEL); in vmw_bo_dirty_add()
257 if (!dirty) { in vmw_bo_dirty_add()
262 dirty->size = acc_size; in vmw_bo_dirty_add()
263 dirty->bitmap_size = num_pages; in vmw_bo_dirty_add()
264 dirty->start = dirty->bitmap_size; in vmw_bo_dirty_add()
265 dirty->end = 0; in vmw_bo_dirty_add()
266 dirty->ref_count = 1; in vmw_bo_dirty_add()
268 dirty->method = VMW_BO_DIRTY_PAGETABLE; in vmw_bo_dirty_add()
273 dirty->method = VMW_BO_DIRTY_MKWRITE; in vmw_bo_dirty_add()
279 &dirty->bitmap[0], in vmw_bo_dirty_add()
280 &dirty->start, &dirty->end); in vmw_bo_dirty_add()
283 vbo->dirty = dirty; in vmw_bo_dirty_add()
304 struct vmw_bo_dirty *dirty = vbo->dirty; in vmw_bo_dirty_release() local
306 if (dirty && --dirty->ref_count == 0) { in vmw_bo_dirty_release()
307 size_t acc_size = dirty->size; in vmw_bo_dirty_release()
309 kvfree(dirty); in vmw_bo_dirty_release()
311 vbo->dirty = NULL; in vmw_bo_dirty_release()
328 struct vmw_bo_dirty *dirty = vbo->dirty; in vmw_bo_dirty_transfer_to_res() local
337 if (res_start >= dirty->end || res_end <= dirty->start) in vmw_bo_dirty_transfer_to_res()
340 cur = max(res_start, dirty->start); in vmw_bo_dirty_transfer_to_res()
341 res_end = max(res_end, dirty->end); in vmw_bo_dirty_transfer_to_res()
345 start = find_next_bit(&dirty->bitmap[0], res_end, cur); in vmw_bo_dirty_transfer_to_res()
349 end = find_next_zero_bit(&dirty->bitmap[0], res_end, start + 1); in vmw_bo_dirty_transfer_to_res()
352 bitmap_clear(&dirty->bitmap[0], start, num); in vmw_bo_dirty_transfer_to_res()
356 if (res_start <= dirty->start && res_end > dirty->start) in vmw_bo_dirty_transfer_to_res()
357 dirty->start = res_end; in vmw_bo_dirty_transfer_to_res()
358 if (res_start < dirty->end && res_end >= dirty->end) in vmw_bo_dirty_transfer_to_res()
359 dirty->end = res_start; in vmw_bo_dirty_transfer_to_res()
375 struct vmw_bo_dirty *dirty = vbo->dirty; in vmw_bo_dirty_clear_res() local
380 if (res_start >= dirty->end || res_end <= dirty->start) in vmw_bo_dirty_clear_res()
383 res_start = max(res_start, dirty->start); in vmw_bo_dirty_clear_res()
384 res_end = min(res_end, dirty->end); in vmw_bo_dirty_clear_res()
385 bitmap_clear(&dirty->bitmap[0], res_start, res_end - res_start); in vmw_bo_dirty_clear_res()
387 if (res_start <= dirty->start && res_end > dirty->start) in vmw_bo_dirty_clear_res()
388 dirty->start = res_end; in vmw_bo_dirty_clear_res()
389 if (res_start < dirty->end && res_end >= dirty->end) in vmw_bo_dirty_clear_res()
390 dirty->end = res_start; in vmw_bo_dirty_clear_res()
421 if (vbo->dirty && vbo->dirty->method == VMW_BO_DIRTY_MKWRITE && in vmw_bo_vm_mkwrite()
422 !test_bit(page_offset, &vbo->dirty->bitmap[0])) { in vmw_bo_vm_mkwrite()
423 struct vmw_bo_dirty *dirty = vbo->dirty; in vmw_bo_vm_mkwrite() local
425 __set_bit(page_offset, &dirty->bitmap[0]); in vmw_bo_vm_mkwrite()
426 dirty->start = min(dirty->start, page_offset); in vmw_bo_vm_mkwrite()
427 dirty->end = max(dirty->end, page_offset + 1); in vmw_bo_vm_mkwrite()
453 if (vbo->dirty) { in vmw_bo_vm_fault()
475 if (vbo->dirty && vbo->dirty->method == VMW_BO_DIRTY_MKWRITE) in vmw_bo_vm_fault()