Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/drm2/i915/intel_ringbuffer.c
Show First 20 Lines • Show All 465 Lines • ▼ Show 20 Lines | init_pipe_control(struct intel_ring_buffer *ring) | ||||
if (ret) | if (ret) | ||||
goto err_unref; | goto err_unref; | ||||
pc->gtt_offset = obj->gtt_offset; | pc->gtt_offset = obj->gtt_offset; | ||||
pc->cpu_page = (uint32_t *)kva_alloc(PAGE_SIZE); | pc->cpu_page = (uint32_t *)kva_alloc(PAGE_SIZE); | ||||
if (pc->cpu_page == NULL) | if (pc->cpu_page == NULL) | ||||
goto err_unpin; | goto err_unpin; | ||||
pmap_qenter((uintptr_t)pc->cpu_page, &obj->pages[0], 1); | pmap_qenter((uintptr_t)pc->cpu_page, &obj->pages[0], 1); | ||||
pmap_invalidate_cache_range((vm_offset_t)pc->cpu_page, | pmap_force_invalidate_cache_range((vm_offset_t)pc->cpu_page, | ||||
(vm_offset_t)pc->cpu_page + PAGE_SIZE, FALSE); | (vm_offset_t)pc->cpu_page + PAGE_SIZE); | ||||
pc->obj = obj; | pc->obj = obj; | ||||
ring->private = pc; | ring->private = pc; | ||||
return 0; | return 0; | ||||
err_unpin: | err_unpin: | ||||
i915_gem_object_unpin(obj); | i915_gem_object_unpin(obj); | ||||
err_unref: | err_unref: | ||||
▲ Show 20 Lines • Show All 613 Lines • ▼ Show 20 Lines | static int init_status_page(struct intel_ring_buffer *ring) | ||||
ring->status_page.gfx_addr = obj->gtt_offset; | ring->status_page.gfx_addr = obj->gtt_offset; | ||||
ring->status_page.page_addr = (void *)kva_alloc(PAGE_SIZE); | ring->status_page.page_addr = (void *)kva_alloc(PAGE_SIZE); | ||||
if (ring->status_page.page_addr == NULL) { | if (ring->status_page.page_addr == NULL) { | ||||
ret = -ENOMEM; | ret = -ENOMEM; | ||||
goto err_unpin; | goto err_unpin; | ||||
} | } | ||||
pmap_qenter((vm_offset_t)ring->status_page.page_addr, &obj->pages[0], | pmap_qenter((vm_offset_t)ring->status_page.page_addr, &obj->pages[0], | ||||
1); | 1); | ||||
pmap_invalidate_cache_range((vm_offset_t)ring->status_page.page_addr, | pmap_force_invalidate_cache_range( | ||||
(vm_offset_t)ring->status_page.page_addr + PAGE_SIZE, FALSE); | (vm_offset_t)ring->status_page.page_addr, | ||||
(vm_offset_t)ring->status_page.page_addr + PAGE_SIZE); | |||||
ring->status_page.obj = obj; | ring->status_page.obj = obj; | ||||
memset(ring->status_page.page_addr, 0, PAGE_SIZE); | memset(ring->status_page.page_addr, 0, PAGE_SIZE); | ||||
intel_ring_setup_status_page(ring); | intel_ring_setup_status_page(ring); | ||||
DRM_DEBUG_DRIVER("%s hws offset: 0x%08x\n", | DRM_DEBUG_DRIVER("%s hws offset: 0x%08x\n", | ||||
ring->name, ring->status_page.gfx_addr); | ring->name, ring->status_page.gfx_addr); | ||||
return 0; | return 0; | ||||
▲ Show 20 Lines • Show All 747 Lines • Show Last 20 Lines |