Lines Matching refs:oos_page

736 		struct intel_vgpu_oos_page *oos_page);
750 if (spt->guest_page.oos_page) in ppgtt_free_spt()
751 detach_oos_page(spt->vgpu, spt->guest_page.oos_page); in ppgtt_free_spt()
1428 struct intel_vgpu_oos_page *oos_page) in sync_oos_page() argument
1433 struct intel_vgpu_ppgtt_spt *spt = oos_page->spt; in sync_oos_page()
1438 trace_oos_change(vgpu->id, "sync", oos_page->id, in sync_oos_page()
1446 ops->get_entry(oos_page->mem, &old, index, false, 0, vgpu); in sync_oos_page()
1454 trace_oos_sync(vgpu->id, oos_page->id, in sync_oos_page()
1462 ops->set_entry(oos_page->mem, &new, index, false, 0, vgpu); in sync_oos_page()
1471 struct intel_vgpu_oos_page *oos_page) in detach_oos_page() argument
1474 struct intel_vgpu_ppgtt_spt *spt = oos_page->spt; in detach_oos_page()
1476 trace_oos_change(vgpu->id, "detach", oos_page->id, in detach_oos_page()
1480 spt->guest_page.oos_page = NULL; in detach_oos_page()
1481 oos_page->spt = NULL; in detach_oos_page()
1483 list_del_init(&oos_page->vm_list); in detach_oos_page()
1484 list_move_tail(&oos_page->list, &gvt->gtt.oos_page_free_list_head); in detach_oos_page()
1489 static int attach_oos_page(struct intel_vgpu_oos_page *oos_page, in attach_oos_page() argument
1497 oos_page->mem, I915_GTT_PAGE_SIZE); in attach_oos_page()
1501 oos_page->spt = spt; in attach_oos_page()
1502 spt->guest_page.oos_page = oos_page; in attach_oos_page()
1504 list_move_tail(&oos_page->list, &gvt->gtt.oos_page_use_list_head); in attach_oos_page()
1506 trace_oos_change(spt->vgpu->id, "attach", oos_page->id, in attach_oos_page()
1513 struct intel_vgpu_oos_page *oos_page = spt->guest_page.oos_page; in ppgtt_set_guest_page_sync() local
1520 trace_oos_change(spt->vgpu->id, "set page sync", oos_page->id, in ppgtt_set_guest_page_sync()
1523 list_del_init(&oos_page->vm_list); in ppgtt_set_guest_page_sync()
1524 return sync_oos_page(spt->vgpu, oos_page); in ppgtt_set_guest_page_sync()
1531 struct intel_vgpu_oos_page *oos_page = spt->guest_page.oos_page; in ppgtt_allocate_oos_page() local
1534 WARN(oos_page, "shadow PPGTT page has already has a oos page\n"); in ppgtt_allocate_oos_page()
1537 oos_page = container_of(gtt->oos_page_use_list_head.next, in ppgtt_allocate_oos_page()
1539 ret = ppgtt_set_guest_page_sync(oos_page->spt); in ppgtt_allocate_oos_page()
1542 ret = detach_oos_page(spt->vgpu, oos_page); in ppgtt_allocate_oos_page()
1546 oos_page = container_of(gtt->oos_page_free_list_head.next, in ppgtt_allocate_oos_page()
1548 return attach_oos_page(oos_page, spt); in ppgtt_allocate_oos_page()
1553 struct intel_vgpu_oos_page *oos_page = spt->guest_page.oos_page; in ppgtt_set_guest_page_oos() local
1555 if (WARN(!oos_page, "shadow PPGTT page should have a oos page\n")) in ppgtt_set_guest_page_oos()
1558 trace_oos_change(spt->vgpu->id, "set page out of sync", oos_page->id, in ppgtt_set_guest_page_oos()
1561 list_add_tail(&oos_page->vm_list, &spt->vgpu->gtt.oos_page_list_head); in ppgtt_set_guest_page_oos()
1578 struct intel_vgpu_oos_page *oos_page; in intel_vgpu_sync_oos_pages() local
1585 oos_page = container_of(pos, in intel_vgpu_sync_oos_pages()
1587 ret = ppgtt_set_guest_page_sync(oos_page->spt); in intel_vgpu_sync_oos_pages()
1765 if (spt->guest_page.oos_page) in ppgtt_handle_guest_write_page_table_bytes()
1766 ops->set_entry(spt->guest_page.oos_page->mem, &we, index, in ppgtt_handle_guest_write_page_table_bytes()
1770 if (!spt->guest_page.oos_page) in ppgtt_handle_guest_write_page_table_bytes()
2559 struct intel_vgpu_oos_page *oos_page; in clean_spt_oos() local
2565 oos_page = container_of(pos, struct intel_vgpu_oos_page, list); in clean_spt_oos()
2566 list_del(&oos_page->list); in clean_spt_oos()
2567 free_page((unsigned long)oos_page->mem); in clean_spt_oos()
2568 kfree(oos_page); in clean_spt_oos()
2575 struct intel_vgpu_oos_page *oos_page; in setup_spt_oos() local
2583 oos_page = kzalloc(sizeof(*oos_page), GFP_KERNEL); in setup_spt_oos()
2584 if (!oos_page) { in setup_spt_oos()
2588 oos_page->mem = (void *)__get_free_pages(GFP_KERNEL, 0); in setup_spt_oos()
2589 if (!oos_page->mem) { in setup_spt_oos()
2591 kfree(oos_page); in setup_spt_oos()
2595 INIT_LIST_HEAD(&oos_page->list); in setup_spt_oos()
2596 INIT_LIST_HEAD(&oos_page->vm_list); in setup_spt_oos()
2597 oos_page->id = i; in setup_spt_oos()
2598 list_add_tail(&oos_page->list, &gtt->oos_page_free_list_head); in setup_spt_oos()