1. 14 2月, 2015 2 次提交
    • Y
      drm/i915: Adds graphic address space ballooning logic · 5dda8fa3
      Yu Zhang 提交于
      With Intel GVT-g, the global graphic memory space is partitioned by
      multiple vGPU instances in different VMs. The ballooning code is called
      in i915_gem_setup_global_gtt(), utilizing the drm mm allocator APIs to
      mark the graphic address space which are partitioned out to other vGPUs
      as reserved. With ballooning, host side does not need to translate a
      grahpic address from guest view to host view. By now, current implementation
      only support the static ballooning, but in the future, with more cooperation
      from guest driver, the same interfaces can be extended to grow/shrink the
      guest graphic memory dynamically.
      
      v2:
      take Chris and Daniel's comments:
      	- no guard page between different VMs
      	- use drm_mm_reserve_node() to do the reservation for ballooning,
      	instead of the previous drm_mm_insert_node_in_range_generic()
      
      v3:
      take Daniel's comments:
      	- move ballooning functions into i915_vgpu.c
      	- add kerneldoc to ballooning functions
      
      v4:
      take Tvrtko's comments:
      	- more accurate comments and commit message
      Signed-off-by: NYu Zhang <yu.c.zhang@linux.intel.com>
      Signed-off-by: NJike Song <jike.song@intel.com>
      Signed-off-by: NZhi Wang <zhi.a.wang@intel.com>
      Signed-off-by: NEddie Dong <eddie.dong@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      5dda8fa3
    • Y
      drm/i915: Introduce a PV INFO page structure for Intel GVT-g. · cf9d2890
      Yu Zhang 提交于
      Introduce a PV INFO structure, to facilitate the Intel GVT-g
      technology, which is a GPU virtualization solution with mediated
      pass-through. This page contains the shared information between
      i915 driver and the host emulator. For now, this structure utilizes
      an area of 4K bytes on HSW GPU's unused MMIO space. Future hardware
      will have the reserved window architecturally defined, and layout
      of the page will be added in future BSpec.
      
      The i915 driver load routine detects if it is running in a VM by
      reading the contents of this PV INFO page. Thereafter a flag,
      vgpu.active is set, and intel_vgpu_active() is used by checking
      this flag to conclude if GPU is virtualized with Intel GVT-g. By
      now, intel_vgpu_active() will return true, only when the driver
      is running as a guest in the Intel GVT-g enhanced environment on
      HSW platform.
      
      v2:
      take Chris' comments:
              - call the i915_check_vgpu() in intel_uncore_init()
              - sanitize i915_check_vgpu() by adding BUILD_BUG_ON() and debug info
      take Daniel's comments:
              - put the definition of PV INFO into a new header - i915_vgt_if.h
      other changes:
              - access mmio regs by readq/readw in i915_check_vgpu()
      
      v3:
      take Daniel's comments:
              - move the i915/vgt interfaces into a new i915_vgpu.c
              - update makefile
              - add kerneldoc to functions which are non-static
              - add a DOC: section describing some of the high-level design
              - update drm docbook
      other changes:
              - rename i915_vgt_if.h to i915_vgpu.h
      
      v4:
      take Tvrtko's comments:
              - fix a typo in commit message
              - add debug message when vgt version mismatches
              - rename low_gmadr/high_gmadr to mappable/non-mappable in PV INFO
                structure
      Signed-off-by: NYu Zhang <yu.c.zhang@linux.intel.com>
      Signed-off-by: NJike Song <jike.song@intel.com>
      Signed-off-by: NEddie Dong <eddie.dong@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      cf9d2890