1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- ==========================
- I915 Small BAR RFC Section
- ==========================
- Starting from DG2 we will have resizable BAR support for device local-memory(i.e
- I915_MEMORY_CLASS_DEVICE), but in some cases the final BAR size might still be
- smaller than the total probed_size. In such cases, only some subset of
- I915_MEMORY_CLASS_DEVICE will be CPU accessible(for example the first 256M),
- while the remainder is only accessible via the GPU.
- I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS flag
- ----------------------------------------------
- New gem_create_ext flag to tell the kernel that a BO will require CPU access.
- This becomes important when placing an object in I915_MEMORY_CLASS_DEVICE, where
- underneath the device has a small BAR, meaning only some portion of it is CPU
- accessible. Without this flag the kernel will assume that CPU access is not
- required, and prioritize using the non-CPU visible portion of
- I915_MEMORY_CLASS_DEVICE.
- .. kernel-doc:: Documentation/gpu/rfc/i915_small_bar.h
- :functions: __drm_i915_gem_create_ext
- probed_cpu_visible_size attribute
- ---------------------------------
- New struct__drm_i915_memory_region attribute which returns the total size of the
- CPU accessible portion, for the particular region. This should only be
- applicable for I915_MEMORY_CLASS_DEVICE. We also report the
- unallocated_cpu_visible_size, alongside the unallocated_size.
- Vulkan will need this as part of creating a separate VkMemoryHeap with the
- VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set, to represent the CPU visible portion,
- where the total size of the heap needs to be known. It also wants to be able to
- give a rough estimate of how memory can potentially be allocated.
- .. kernel-doc:: Documentation/gpu/rfc/i915_small_bar.h
- :functions: __drm_i915_memory_region_info
- Error Capture restrictions
- --------------------------
- With error capture we have two new restrictions:
- 1) Error capture is best effort on small BAR systems; if the pages are not
- CPU accessible, at the time of capture, then the kernel is free to skip
- trying to capture them.
- 2) On discrete and newer integrated platforms we now reject error capture
- on recoverable contexts. In the future the kernel may want to blit during
- error capture, when for example something is not currently CPU accessible.
|