summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/gvt
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/gvt')
-rw-r--r--drivers/gpu/drm/i915/gvt/aperture_gm.c5
-rw-r--r--drivers/gpu/drm/i915/gvt/cfg_space.c2
-rw-r--r--drivers/gpu/drm/i915/gvt/cmd_parser.c26
-rw-r--r--drivers/gpu/drm/i915/gvt/debugfs.c6
-rw-r--r--drivers/gpu/drm/i915/gvt/display.c27
-rw-r--r--drivers/gpu/drm/i915/gvt/display.h2
-rw-r--r--drivers/gpu/drm/i915/gvt/display_helpers.h37
-rw-r--r--drivers/gpu/drm/i915/gvt/dmabuf.c13
-rw-r--r--drivers/gpu/drm/i915/gvt/dmabuf.h7
-rw-r--r--drivers/gpu/drm/i915/gvt/edid.c1
-rw-r--r--drivers/gpu/drm/i915/gvt/execlist.c2
-rw-r--r--drivers/gpu/drm/i915/gvt/fb_decoder.c14
-rw-r--r--drivers/gpu/drm/i915/gvt/fb_decoder.h2
-rw-r--r--drivers/gpu/drm/i915/gvt/firmware.c4
-rw-r--r--drivers/gpu/drm/i915/gvt/gtt.c17
-rw-r--r--drivers/gpu/drm/i915/gvt/gvt.h24
-rw-r--r--drivers/gpu/drm/i915/gvt/handlers.c23
-rw-r--r--drivers/gpu/drm/i915/gvt/interrupt.c5
-rw-r--r--drivers/gpu/drm/i915/gvt/kvmgt.c29
-rw-r--r--drivers/gpu/drm/i915/gvt/mmio.c11
-rw-r--r--drivers/gpu/drm/i915/gvt/mmio_context.h5
-rw-r--r--drivers/gpu/drm/i915/gvt/opregion.c3
-rw-r--r--drivers/gpu/drm/i915/gvt/page_track.c5
-rw-r--r--drivers/gpu/drm/i915/gvt/sched_policy.c7
-rw-r--r--drivers/gpu/drm/i915/gvt/scheduler.c8
-rw-r--r--drivers/gpu/drm/i915/gvt/trace.h2
-rw-r--r--drivers/gpu/drm/i915/gvt/trace_points.c2
-rw-r--r--drivers/gpu/drm/i915/gvt/vgpu.c12
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(&gtt->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;