diff options
Diffstat (limited to 'drivers/gpu/drm/i915/gvt')
28 files changed, 180 insertions, 121 deletions
diff --git a/drivers/gpu/drm/i915/gvt/aperture_gm.c b/drivers/gpu/drm/i915/gvt/aperture_gm.c index 8cc6e712b0f7..253b41789be9 100644 --- a/drivers/gpu/drm/i915/gvt/aperture_gm.c +++ b/drivers/gpu/drm/i915/gvt/aperture_gm.c @@ -36,10 +36,11 @@ #include <drm/drm_print.h> -#include "i915_drv.h" -#include "i915_reg.h" #include "gt/intel_ggtt_fencing.h" + #include "gvt.h" +#include "i915_drv.h" +#include "i915_reg.h" static int alloc_gm(struct intel_vgpu *vgpu, bool high_gm) { diff --git a/drivers/gpu/drm/i915/gvt/cfg_space.c b/drivers/gpu/drm/i915/gvt/cfg_space.c index 295a7b5e1d7c..1937e04d3791 100644 --- a/drivers/gpu/drm/i915/gvt/cfg_space.c +++ b/drivers/gpu/drm/i915/gvt/cfg_space.c @@ -33,8 +33,8 @@ #include <drm/drm_print.h> -#include "i915_drv.h" #include "gvt.h" +#include "i915_drv.h" #include "intel_pci_config.h" enum { diff --git a/drivers/gpu/drm/i915/gvt/cmd_parser.c b/drivers/gpu/drm/i915/gvt/cmd_parser.c index df04e4ead8ea..b868a0501886 100644 --- a/drivers/gpu/drm/i915/gvt/cmd_parser.c +++ b/drivers/gpu/drm/i915/gvt/cmd_parser.c @@ -38,27 +38,29 @@ #include <drm/drm_print.h> -#include "i915_drv.h" -#include "i915_reg.h" +#include "display/i9xx_plane_regs.h" #include "display/intel_display_regs.h" +#include "display/intel_sprite_regs.h" + +#include "gem/i915_gem_context.h" +#include "gem/i915_gem_pm.h" + +#include "gt/intel_context.h" #include "gt/intel_engine_regs.h" #include "gt/intel_gpu_commands.h" #include "gt/intel_gt_regs.h" +#include "gt/intel_gt_requests.h" #include "gt/intel_lrc.h" #include "gt/intel_ring.h" -#include "gt/intel_gt_requests.h" #include "gt/shmem_utils.h" + +#include "display_helpers.h" #include "gvt.h" +#include "i915_drv.h" #include "i915_pvinfo.h" +#include "i915_reg.h" #include "trace.h" -#include "display/i9xx_plane_regs.h" -#include "display/intel_display_core.h" -#include "display/intel_sprite_regs.h" -#include "gem/i915_gem_context.h" -#include "gem/i915_gem_pm.h" -#include "gt/intel_context.h" - #define INVALID_OP (~0U) #define OP_LEN_MI 9 @@ -1919,7 +1921,7 @@ static int perform_bb_shadow(struct parser_exec_state *s) if (ret) return ret; - bb = kzalloc(sizeof(*bb), GFP_KERNEL); + bb = kzalloc_obj(*bb); if (!bb) return -ENOMEM; @@ -3224,7 +3226,7 @@ static int init_cmd_table(struct intel_gvt *gvt) if (!(cmd_info[i].devices & gen_type)) continue; - e = kzalloc(sizeof(*e), GFP_KERNEL); + e = kzalloc_obj(*e); if (!e) return -ENOMEM; diff --git a/drivers/gpu/drm/i915/gvt/debugfs.c b/drivers/gpu/drm/i915/gvt/debugfs.c index 415422b5943c..36f55861228f 100644 --- a/drivers/gpu/drm/i915/gvt/debugfs.c +++ b/drivers/gpu/drm/i915/gvt/debugfs.c @@ -20,10 +20,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ + #include <linux/debugfs.h> #include <linux/list_sort.h> -#include "i915_drv.h" + #include "gvt.h" +#include "i915_drv.h" struct mmio_diff_param { struct intel_vgpu *vgpu; @@ -66,7 +68,7 @@ static inline int mmio_diff_handler(struct intel_gvt *gvt, vreg = vgpu_vreg(param->vgpu, offset); if (preg != vreg) { - node = kmalloc(sizeof(*node), GFP_ATOMIC); + node = kmalloc_obj(*node, GFP_ATOMIC); if (!node) return -ENOMEM; diff --git a/drivers/gpu/drm/i915/gvt/display.c b/drivers/gpu/drm/i915/gvt/display.c index 06517d1f07a2..fe4302c8cae5 100644 --- a/drivers/gpu/drm/i915/gvt/display.c +++ b/drivers/gpu/drm/i915/gvt/display.c @@ -35,20 +35,21 @@ #include <drm/display/drm_dp.h> #include <drm/drm_print.h> -#include "i915_drv.h" -#include "i915_reg.h" -#include "display/intel_display_regs.h" -#include "gvt.h" - #include "display/bxt_dpio_phy_regs.h" #include "display/i9xx_plane_regs.h" #include "display/intel_crt_regs.h" #include "display/intel_cursor_regs.h" #include "display/intel_display.h" -#include "display/intel_display_core.h" +#include "display/intel_display_regs.h" #include "display/intel_dpio_phy.h" +#include "display/intel_dpll_mgr.h" #include "display/intel_sprite_regs.h" +#include "display_helpers.h" +#include "gvt.h" +#include "i915_drv.h" +#include "i915_reg.h" + static int get_edp_pipe(struct intel_vgpu *vgpu) { u32 data = vgpu_vreg(vgpu, _TRANS_DDI_FUNC_CTL_EDP); @@ -187,7 +188,7 @@ static void emulate_monitor_status_change(struct intel_vgpu *vgpu) { struct drm_i915_private *dev_priv = vgpu->gvt->gt->i915; struct intel_display *display = dev_priv->display; - int pipe; + enum pipe pipe; if (IS_BROXTON(dev_priv)) { enum transcoder trans; @@ -199,7 +200,7 @@ static void emulate_monitor_status_change(struct intel_vgpu *vgpu) GEN8_DE_PORT_HOTPLUG(HPD_PORT_B) | GEN8_DE_PORT_HOTPLUG(HPD_PORT_C)); - for_each_pipe(display, pipe) { + gvt_for_each_pipe(display, pipe) { vgpu_vreg_t(vgpu, TRANSCONF(display, pipe)) &= ~(TRANSCONF_ENABLE | TRANSCONF_STATE_ENABLE); vgpu_vreg_t(vgpu, DSPCNTR(display, pipe)) &= ~DISP_ENABLE; @@ -515,7 +516,7 @@ static void emulate_monitor_status_change(struct intel_vgpu *vgpu) vgpu_vreg_t(vgpu, PCH_ADPA) &= ~ADPA_CRT_HOTPLUG_MONITOR_MASK; /* Disable Primary/Sprite/Cursor plane */ - for_each_pipe(display, pipe) { + gvt_for_each_pipe(display, pipe) { vgpu_vreg_t(vgpu, DSPCNTR(display, pipe)) &= ~DISP_ENABLE; vgpu_vreg_t(vgpu, SPRCTL(pipe)) &= ~SPRITE_ENABLE; vgpu_vreg_t(vgpu, CURCNTR(display, pipe)) &= ~MCURSOR_MODE_MASK; @@ -561,11 +562,11 @@ static int setup_virtual_dp_monitor(struct intel_vgpu *vgpu, int port_num, if (drm_WARN_ON(&i915->drm, resolution >= GVT_EDID_NUM)) return -EINVAL; - port->edid = kzalloc(sizeof(*(port->edid)), GFP_KERNEL); + port->edid = kzalloc_obj(*(port->edid)); if (!port->edid) return -ENOMEM; - port->dpcd = kzalloc(sizeof(*(port->dpcd)), GFP_KERNEL); + port->dpcd = kzalloc_obj(*(port->dpcd)); if (!port->dpcd) { kfree(port->edid); return -ENOMEM; @@ -668,10 +669,10 @@ void intel_vgpu_emulate_vblank(struct intel_vgpu *vgpu) { struct drm_i915_private *i915 = vgpu->gvt->gt->i915; struct intel_display *display = i915->display; - int pipe; + enum pipe pipe; mutex_lock(&vgpu->vgpu_lock); - for_each_pipe(display, pipe) + gvt_for_each_pipe(display, pipe) emulate_vblank_on_pipe(vgpu, pipe); mutex_unlock(&vgpu->vgpu_lock); } diff --git a/drivers/gpu/drm/i915/gvt/display.h b/drivers/gpu/drm/i915/gvt/display.h index bc7f05f9a271..41a3b053663a 100644 --- a/drivers/gpu/drm/i915/gvt/display.h +++ b/drivers/gpu/drm/i915/gvt/display.h @@ -35,8 +35,8 @@ #ifndef _GVT_DISPLAY_H_ #define _GVT_DISPLAY_H_ -#include <linux/types.h> #include <linux/hrtimer.h> +#include <linux/types.h> struct intel_gvt; struct intel_vgpu; diff --git a/drivers/gpu/drm/i915/gvt/display_helpers.h b/drivers/gpu/drm/i915/gvt/display_helpers.h new file mode 100644 index 000000000000..0418397c09c4 --- /dev/null +++ b/drivers/gpu/drm/i915/gvt/display_helpers.h @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: MIT + * + * Copyright © 2025 Intel Corporation + */ + +#ifndef __DISPLAY_HELPERS_H__ +#define __DISPLAY_HELPERS_H__ + +#include "display/intel_gvt_api.h" + +#define DISPLAY_MMIO_BASE(display) \ + intel_display_device_mmio_base((display)) + +/* + * #FIXME: + * TRANSCONF() uses pipe-based addressing via _MMIO_PIPE2(). + * Some GVT call sites pass enum transcoder instead of enum pipe. + * Cast the argument to enum pipe for now since TRANSCODER_A..D map + * 1:1 to PIPE_A..D. + * TRANSCODER_EDP is an exception, the cast preserves the existing + * behaviour but this needs to be handled later either by using the + * correct pipe or by switching TRANSCONF() to use _MMIO_TRANS2(). + */ +#define INTEL_DISPLAY_DEVICE_PIPE_OFFSET(display, idx) \ + intel_display_device_pipe_offset((display), (enum pipe)(idx)) + +#define INTEL_DISPLAY_DEVICE_TRANS_OFFSET(display, trans) \ + intel_display_device_trans_offset((display), (trans)) + +#define INTEL_DISPLAY_DEVICE_CURSOR_OFFSET(display, pipe) \ + intel_display_device_cursor_offset((display), (pipe)) + +#define gvt_for_each_pipe(display, __p) \ + for ((__p) = PIPE_A; (__p) < I915_MAX_PIPES; (__p)++) \ + for_each_if(intel_display_device_pipe_valid((display), (__p))) + +#endif /* __DISPLAY_HELPERS_H__ */ diff --git a/drivers/gpu/drm/i915/gvt/dmabuf.c b/drivers/gpu/drm/i915/gvt/dmabuf.c index 92506c80322d..8a1d6c5636c2 100644 --- a/drivers/gpu/drm/i915/gvt/dmabuf.c +++ b/drivers/gpu/drm/i915/gvt/dmabuf.c @@ -35,12 +35,12 @@ #include <drm/drm_plane.h> #include <drm/drm_print.h> +#include "display/skl_universal_plane_regs.h" + #include "gem/i915_gem_dmabuf.h" -#include "i915_drv.h" #include "gvt.h" - -#include "display/skl_universal_plane_regs.h" +#include "i915_drv.h" #define GEN8_DECODE_PTE(pte) (pte & GENMASK_ULL(63, 12)) @@ -67,7 +67,7 @@ static int vgpu_gem_get_pages(struct drm_i915_gem_object *obj) if (drm_WARN_ON(&dev_priv->drm, !vgpu)) return -ENODEV; - st = kmalloc(sizeof(*st), GFP_KERNEL); + st = kmalloc_obj(*st); if (unlikely(!st)) return -ENOMEM; @@ -447,15 +447,14 @@ int intel_vgpu_query_plane(struct intel_vgpu *vgpu, void *args) mutex_unlock(&vgpu->dmabuf_lock); /* Need to allocate a new one*/ - dmabuf_obj = kmalloc(sizeof(struct intel_vgpu_dmabuf_obj), GFP_KERNEL); + dmabuf_obj = kmalloc_obj(struct intel_vgpu_dmabuf_obj); if (unlikely(!dmabuf_obj)) { gvt_vgpu_err("alloc dmabuf_obj failed\n"); ret = -ENOMEM; goto out; } - dmabuf_obj->info = kmalloc(sizeof(struct intel_vgpu_fb_info), - GFP_KERNEL); + dmabuf_obj->info = kmalloc_obj(struct intel_vgpu_fb_info); if (unlikely(!dmabuf_obj->info)) { gvt_vgpu_err("allocate intel vgpu fb info failed\n"); ret = -ENOMEM; diff --git a/drivers/gpu/drm/i915/gvt/dmabuf.h b/drivers/gpu/drm/i915/gvt/dmabuf.h index 3dcdb6570eda..aa7523386d94 100644 --- a/drivers/gpu/drm/i915/gvt/dmabuf.h +++ b/drivers/gpu/drm/i915/gvt/dmabuf.h @@ -30,7 +30,12 @@ #ifndef _GVT_DMABUF_H_ #define _GVT_DMABUF_H_ -#include <linux/vfio.h> + +#include <linux/kref.h> +#include <linux/types.h> + +struct intel_vgpu; +struct intel_vgpu_dmabuf_obj; struct intel_vgpu_fb_info { __u64 start; diff --git a/drivers/gpu/drm/i915/gvt/edid.c b/drivers/gpu/drm/i915/gvt/edid.c index 30e414381af3..021afff1cd5d 100644 --- a/drivers/gpu/drm/i915/gvt/edid.c +++ b/drivers/gpu/drm/i915/gvt/edid.c @@ -38,6 +38,7 @@ #include "display/intel_dp_aux_regs.h" #include "display/intel_gmbus.h" #include "display/intel_gmbus_regs.h" + #include "gvt.h" #include "i915_drv.h" #include "i915_reg.h" diff --git a/drivers/gpu/drm/i915/gvt/execlist.c b/drivers/gpu/drm/i915/gvt/execlist.c index 274c6ef42400..29147a9f162e 100644 --- a/drivers/gpu/drm/i915/gvt/execlist.c +++ b/drivers/gpu/drm/i915/gvt/execlist.c @@ -32,8 +32,8 @@ * */ -#include "i915_drv.h" #include "gvt.h" +#include "i915_drv.h" #define _EL_OFFSET_STATUS 0x234 #define _EL_OFFSET_STATUS_BUF 0x370 diff --git a/drivers/gpu/drm/i915/gvt/fb_decoder.c b/drivers/gpu/drm/i915/gvt/fb_decoder.c index a8079cfa8e1d..d7abf38df532 100644 --- a/drivers/gpu/drm/i915/gvt/fb_decoder.c +++ b/drivers/gpu/drm/i915/gvt/fb_decoder.c @@ -35,18 +35,18 @@ #include <uapi/drm/drm_fourcc.h> -#include "gvt.h" -#include "i915_drv.h" -#include "i915_pvinfo.h" -#include "i915_reg.h" -#include "display/intel_display_regs.h" - #include "display/i9xx_plane_regs.h" #include "display/intel_cursor_regs.h" -#include "display/intel_display_core.h" +#include "display/intel_display_regs.h" #include "display/intel_sprite_regs.h" #include "display/skl_universal_plane_regs.h" +#include "display_helpers.h" +#include "gvt.h" +#include "i915_drv.h" +#include "i915_pvinfo.h" +#include "i915_reg.h" + #define PRIMARY_FORMAT_NUM 16 struct pixel_format { int drm_format; /* Pixel format in DRM definition */ diff --git a/drivers/gpu/drm/i915/gvt/fb_decoder.h b/drivers/gpu/drm/i915/gvt/fb_decoder.h index 436d43c0087b..bc1e9d149e25 100644 --- a/drivers/gpu/drm/i915/gvt/fb_decoder.h +++ b/drivers/gpu/drm/i915/gvt/fb_decoder.h @@ -38,8 +38,6 @@ #include <linux/types.h> -#include "display/intel_display_limits.h" - struct intel_vgpu; #define _PLANE_CTL_FORMAT_SHIFT 24 diff --git a/drivers/gpu/drm/i915/gvt/firmware.c b/drivers/gpu/drm/i915/gvt/firmware.c index 221a3ae81baf..e452298991be 100644 --- a/drivers/gpu/drm/i915/gvt/firmware.c +++ b/drivers/gpu/drm/i915/gvt/firmware.c @@ -28,12 +28,12 @@ * */ -#include <linux/firmware.h> #include <linux/crc32.h> +#include <linux/firmware.h> #include <linux/vmalloc.h> -#include "i915_drv.h" #include "gvt.h" +#include "i915_drv.h" #include "i915_pvinfo.h" #define FIRMWARE_VERSION (0x0) diff --git a/drivers/gpu/drm/i915/gvt/gtt.c b/drivers/gpu/drm/i915/gvt/gtt.c index 076d9139edc6..5056a5887b31 100644 --- a/drivers/gpu/drm/i915/gvt/gtt.c +++ b/drivers/gpu/drm/i915/gvt/gtt.c @@ -33,16 +33,17 @@ * */ +#include <linux/vmalloc.h> + #include <drm/drm_print.h> -#include "i915_drv.h" +#include "gt/intel_gt_regs.h" + #include "gvt.h" +#include "i915_drv.h" #include "i915_pvinfo.h" #include "trace.h" -#include "gt/intel_gt_regs.h" -#include <linux/vmalloc.h> - #if defined(VERBOSE_DEBUG) #define gvt_vdbg_mm(fmt, args...) gvt_dbg_mm(fmt, ##args) #else @@ -653,7 +654,7 @@ static void *alloc_spt(gfp_t gfp_mask) { struct intel_vgpu_ppgtt_spt *spt; - spt = kzalloc(sizeof(*spt), gfp_mask); + spt = kzalloc_obj(*spt, gfp_mask); if (!spt) return NULL; @@ -1769,7 +1770,7 @@ static struct intel_vgpu_mm *vgpu_alloc_mm(struct intel_vgpu *vgpu) { struct intel_vgpu_mm *mm; - mm = kzalloc(sizeof(*mm), GFP_KERNEL); + mm = kzalloc_obj(*mm); if (!mm) return NULL; @@ -2205,7 +2206,7 @@ static int emulate_ggtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off, if (!found) { /* the first partial part */ - partial_pte = kzalloc(sizeof(*partial_pte), GFP_KERNEL); + partial_pte = kzalloc_obj(*partial_pte); if (!partial_pte) return -ENOMEM; partial_pte->offset = off; @@ -2501,7 +2502,7 @@ static int setup_spt_oos(struct intel_gvt *gvt) INIT_LIST_HEAD(>t->oos_page_use_list_head); for (i = 0; i < preallocated_oos_pages; i++) { - oos_page = kzalloc(sizeof(*oos_page), GFP_KERNEL); + oos_page = kzalloc_obj(*oos_page); if (!oos_page) { ret = -ENOMEM; goto fail; diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h index 1d10c16e6465..7fd2356f463c 100644 --- a/drivers/gpu/drm/i915/gvt/gvt.h +++ b/drivers/gpu/drm/i915/gvt/gvt.h @@ -34,29 +34,29 @@ #define _GVT_H_ #include <uapi/linux/pci_regs.h> -#include <linux/vfio.h> #include <linux/mdev.h> - +#include <linux/vfio.h> #include <asm/kvm_page_track.h> +#include "display/intel_display_limits.h" + #include "gt/intel_gt.h" -#include "intel_gvt.h" +#include "cmd_parser.h" #include "debug.h" -#include "mmio.h" -#include "reg.h" -#include "interrupt.h" -#include "gtt.h" #include "display.h" +#include "dmabuf.h" #include "edid.h" #include "execlist.h" -#include "scheduler.h" -#include "sched_policy.h" -#include "mmio_context.h" -#include "cmd_parser.h" #include "fb_decoder.h" -#include "dmabuf.h" +#include "gtt.h" +#include "intel_gvt.h" +#include "interrupt.h" +#include "mmio.h" +#include "mmio_context.h" #include "page_track.h" +#include "reg.h" +#include "scheduler.h" #define GVT_MAX_VGPU 8 diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c index 36ea12ade849..b0d8d3e74ae7 100644 --- a/drivers/gpu/drm/i915/gvt/handlers.c +++ b/drivers/gpu/drm/i915/gvt/handlers.c @@ -36,20 +36,16 @@ */ +#include <linux/vmalloc.h> + #include <drm/display/drm_dp.h> #include <drm/drm_print.h> -#include "i915_drv.h" -#include "i915_reg.h" -#include "display/intel_display_regs.h" -#include "gvt.h" -#include "i915_pvinfo.h" -#include "intel_mchbar_regs.h" #include "display/bxt_dpio_phy_regs.h" #include "display/i9xx_plane_regs.h" #include "display/intel_crt_regs.h" #include "display/intel_cursor_regs.h" -#include "display/intel_display_core.h" +#include "display/intel_display_regs.h" #include "display/intel_display_types.h" #include "display/intel_dmc_regs.h" #include "display/intel_dp_aux_regs.h" @@ -64,8 +60,17 @@ #include "display/skl_universal_plane_regs.h" #include "display/skl_watermark_regs.h" #include "display/vlv_dsi_pll_regs.h" + +#include "gt/intel_engine_regs.h" #include "gt/intel_gt_regs.h" -#include <linux/vmalloc.h> + +#include "display_helpers.h" +#include "gvt.h" +#include "i915_drv.h" +#include "i915_pvinfo.h" +#include "i915_reg.h" +#include "intel_mchbar_regs.h" +#include "sched_policy.h" /* XXX FIXME i915 has changed PP_XXX definition */ #define PCH_PP_STATUS _MMIO(0xc7200) @@ -2887,7 +2892,7 @@ static int handle_mmio(struct intel_gvt_mmio_table_iter *iter, u32 offset, return -EEXIST; } - info = kzalloc(sizeof(*info), GFP_KERNEL); + info = kzalloc_obj(*info); if (!info) return -ENOMEM; diff --git a/drivers/gpu/drm/i915/gvt/interrupt.c b/drivers/gpu/drm/i915/gvt/interrupt.c index 3e66269bc4ee..91d22b1c62e2 100644 --- a/drivers/gpu/drm/i915/gvt/interrupt.c +++ b/drivers/gpu/drm/i915/gvt/interrupt.c @@ -33,10 +33,11 @@ #include <drm/drm_print.h> -#include "i915_drv.h" -#include "i915_reg.h" #include "display/intel_display_regs.h" + #include "gvt.h" +#include "i915_drv.h" +#include "i915_reg.h" #include "trace.h" struct intel_gvt_irq_info { diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c index 3abc9206f1a8..ec62db5cc367 100644 --- a/drivers/gpu/drm/i915/gvt/kvmgt.c +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c @@ -33,26 +33,26 @@ * Zhi Wang <zhi.a.wang@intel.com> */ +#include <linux/debugfs.h> +#include <linux/eventfd.h> #include <linux/init.h> -#include <linux/mm.h> #include <linux/kthread.h> -#include <linux/sched/mm.h> -#include <linux/types.h> #include <linux/list.h> -#include <linux/rbtree.h> -#include <linux/spinlock.h> -#include <linux/eventfd.h> #include <linux/mdev.h> -#include <linux/debugfs.h> - +#include <linux/mm.h> #include <linux/nospec.h> +#include <linux/rbtree.h> +#include <linux/sched/mm.h> +#include <linux/spinlock.h> +#include <linux/types.h> #include <drm/drm_edid.h> #include <drm/drm_print.h> +#include "gvt.h" #include "i915_drv.h" #include "intel_gvt.h" -#include "gvt.h" +#include "sched_policy.h" MODULE_IMPORT_NS("DMA_BUF"); MODULE_IMPORT_NS("I915_GVT"); @@ -250,7 +250,7 @@ static int __gvt_cache_add(struct intel_vgpu *vgpu, gfn_t gfn, struct gvt_dma *new, *itr; struct rb_node **link, *parent = NULL; - new = kzalloc(sizeof(struct gvt_dma), GFP_KERNEL); + new = kzalloc_obj(struct gvt_dma); if (!new) return -ENOMEM; @@ -378,7 +378,7 @@ static void kvmgt_protect_table_add(struct intel_vgpu *info, gfn_t gfn) if (kvmgt_gfn_is_write_protected(info, gfn)) return; - p = kzalloc(sizeof(struct kvmgt_pgfn), GFP_ATOMIC); + p = kzalloc_obj(struct kvmgt_pgfn, GFP_ATOMIC); if (WARN(!p, "gfn: 0x%llx\n", gfn)) return; @@ -595,7 +595,7 @@ int intel_gvt_set_edid(struct intel_vgpu *vgpu, int port_num) struct vfio_edid_region *base; int ret; - base = kzalloc(sizeof(*base), GFP_KERNEL); + base = kzalloc_obj(*base); if (!base) return -ENOMEM; @@ -1183,8 +1183,7 @@ static int intel_vgpu_ioctl_get_region_info(struct vfio_device *vfio_dev, VFIO_REGION_INFO_FLAG_WRITE; info->size = gvt_aperture_sz(vgpu->gvt); - sparse = kzalloc(struct_size(sparse, areas, nr_areas), - GFP_KERNEL); + sparse = kzalloc_flex(*sparse, areas, nr_areas); if (!sparse) return -ENOMEM; @@ -1830,7 +1829,7 @@ static int intel_gvt_init_device(struct drm_i915_private *i915) if (drm_WARN_ON(&i915->drm, i915->gvt)) return -EEXIST; - gvt = kzalloc(sizeof(struct intel_gvt), GFP_KERNEL); + gvt = kzalloc_obj(struct intel_gvt); if (!gvt) return -ENOMEM; diff --git a/drivers/gpu/drm/i915/gvt/mmio.c b/drivers/gpu/drm/i915/gvt/mmio.c index 214eb7effa31..9e98db2d4f67 100644 --- a/drivers/gpu/drm/i915/gvt/mmio.c +++ b/drivers/gpu/drm/i915/gvt/mmio.c @@ -37,15 +37,16 @@ #include <drm/drm_print.h> -#include "i915_drv.h" -#include "i915_reg.h" -#include "display/intel_display_regs.h" -#include "gvt.h" - #include "display/bxt_dpio_phy_regs.h" +#include "display/intel_display_regs.h" #include "display/intel_dpio_phy.h" + #include "gt/intel_gt_regs.h" +#include "gvt.h" +#include "i915_drv.h" +#include "i915_reg.h" + /** * intel_vgpu_gpa_to_mmio_offset - translate a GPA to MMIO offset * @vgpu: a vGPU diff --git a/drivers/gpu/drm/i915/gvt/mmio_context.h b/drivers/gpu/drm/i915/gvt/mmio_context.h index a821edf574dd..c0e3695e3bbe 100644 --- a/drivers/gpu/drm/i915/gvt/mmio_context.h +++ b/drivers/gpu/drm/i915/gvt/mmio_context.h @@ -38,8 +38,6 @@ #include <linux/types.h> -#include "gt/intel_engine_regs.h" - struct i915_request; struct intel_context; struct intel_engine_cs; @@ -57,7 +55,4 @@ bool is_inhibit_context(struct intel_context *ce); int intel_vgpu_restore_inhibit_context(struct intel_vgpu *vgpu, struct i915_request *req); -#define IS_RESTORE_INHIBIT(a) \ - IS_MASKED_BITS_ENABLED(a, CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT) - #endif diff --git a/drivers/gpu/drm/i915/gvt/opregion.c b/drivers/gpu/drm/i915/gvt/opregion.c index dbad4d853d3a..d6e76ba31d60 100644 --- a/drivers/gpu/drm/i915/gvt/opregion.c +++ b/drivers/gpu/drm/i915/gvt/opregion.c @@ -22,8 +22,9 @@ */ #include <linux/acpi.h> -#include "i915_drv.h" + #include "gvt.h" +#include "i915_drv.h" /* * Note: Only for GVT-g virtual VBT generation, other usage must diff --git a/drivers/gpu/drm/i915/gvt/page_track.c b/drivers/gpu/drm/i915/gvt/page_track.c index 20c3cd807488..3ecac67b0fc4 100644 --- a/drivers/gpu/drm/i915/gvt/page_track.c +++ b/drivers/gpu/drm/i915/gvt/page_track.c @@ -20,8 +20,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include "i915_drv.h" + #include "gvt.h" +#include "i915_drv.h" /** * intel_vgpu_find_page_track - find page track rcord of guest page @@ -57,7 +58,7 @@ int intel_vgpu_register_page_track(struct intel_vgpu *vgpu, unsigned long gfn, if (track) return -EEXIST; - track = kzalloc(sizeof(*track), GFP_KERNEL); + track = kzalloc_obj(*track); if (!track) return -ENOMEM; diff --git a/drivers/gpu/drm/i915/gvt/sched_policy.c b/drivers/gpu/drm/i915/gvt/sched_policy.c index 6c2d68e88266..b353fedc0ba0 100644 --- a/drivers/gpu/drm/i915/gvt/sched_policy.c +++ b/drivers/gpu/drm/i915/gvt/sched_policy.c @@ -31,8 +31,9 @@ * */ -#include "i915_drv.h" #include "gvt.h" +#include "i915_drv.h" +#include "sched_policy.h" static bool vgpu_has_pending_workload(struct intel_vgpu *vgpu) { @@ -281,7 +282,7 @@ static int tbs_sched_init(struct intel_gvt *gvt) struct gvt_sched_data *data; - data = kzalloc(sizeof(*data), GFP_KERNEL); + data = kzalloc_obj(*data); if (!data) return -ENOMEM; @@ -311,7 +312,7 @@ static int tbs_sched_init_vgpu(struct intel_vgpu *vgpu) { struct vgpu_sched_data *data; - data = kzalloc(sizeof(*data), GFP_KERNEL); + data = kzalloc_obj(*data); if (!data) return -ENOMEM; diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c index 63ad1fed525a..15fdd514ca83 100644 --- a/drivers/gpu/drm/i915/gvt/scheduler.c +++ b/drivers/gpu/drm/i915/gvt/scheduler.c @@ -38,20 +38,26 @@ #include <drm/drm_print.h> #include "gem/i915_gem_pm.h" + #include "gt/intel_context.h" +#include "gt/intel_engine_regs.h" #include "gt/intel_execlists_submission.h" #include "gt/intel_gt_regs.h" #include "gt/intel_lrc.h" #include "gt/intel_ring.h" +#include "gvt.h" #include "i915_drv.h" #include "i915_gem_gtt.h" #include "i915_perf_oa_regs.h" -#include "gvt.h" +#include "sched_policy.h" #define RING_CTX_OFF(x) \ offsetof(struct execlist_ring_context, x) +#define IS_RESTORE_INHIBIT(a) \ + IS_MASKED_BITS_ENABLED(a, CTX_CTRL_ENGINE_CTX_RESTORE_INHIBIT) + static void set_context_pdp_root_pointer( struct execlist_ring_context *ring_context, u32 pdp[8]) diff --git a/drivers/gpu/drm/i915/gvt/trace.h b/drivers/gpu/drm/i915/gvt/trace.h index 63874d385c6f..8cd0601e478f 100644 --- a/drivers/gpu/drm/i915/gvt/trace.h +++ b/drivers/gpu/drm/i915/gvt/trace.h @@ -31,9 +31,9 @@ #if !defined(_GVT_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) #define _GVT_TRACE_H_ -#include <linux/types.h> #include <linux/stringify.h> #include <linux/tracepoint.h> +#include <linux/types.h> #include <asm/tsc.h> #undef TRACE_SYSTEM diff --git a/drivers/gpu/drm/i915/gvt/trace_points.c b/drivers/gpu/drm/i915/gvt/trace_points.c index fe552e877e09..79b75356d622 100644 --- a/drivers/gpu/drm/i915/gvt/trace_points.c +++ b/drivers/gpu/drm/i915/gvt/trace_points.c @@ -30,5 +30,7 @@ #ifndef __CHECKER__ #define CREATE_TRACE_POINTS + #include "trace.h" + #endif diff --git a/drivers/gpu/drm/i915/gvt/vgpu.c b/drivers/gpu/drm/i915/gvt/vgpu.c index c49e4bf95a30..a437875a30e3 100644 --- a/drivers/gpu/drm/i915/gvt/vgpu.c +++ b/drivers/gpu/drm/i915/gvt/vgpu.c @@ -31,12 +31,14 @@ * */ +#include <linux/vmalloc.h> + #include <drm/drm_print.h> -#include "i915_drv.h" #include "gvt.h" +#include "i915_drv.h" #include "i915_pvinfo.h" -#include <linux/vmalloc.h> +#include "sched_policy.h" void populate_pvinfo_page(struct intel_vgpu *vgpu) { @@ -111,13 +113,11 @@ int intel_gvt_init_vgpu_types(struct intel_gvt *gvt) unsigned int num_types = ARRAY_SIZE(intel_vgpu_configs); unsigned int i; - gvt->types = kcalloc(num_types, sizeof(struct intel_vgpu_type), - GFP_KERNEL); + gvt->types = kzalloc_objs(struct intel_vgpu_type, num_types); if (!gvt->types) return -ENOMEM; - gvt->mdev_types = kcalloc(num_types, sizeof(*gvt->mdev_types), - GFP_KERNEL); + gvt->mdev_types = kzalloc_objs(*gvt->mdev_types, num_types); if (!gvt->mdev_types) goto out_free_types; |
