mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 06:24:53 +08:00
i915/gvt: Separate the MMIO tracking table from GVT-g
To support the new mdev interfaces and the re-factor patches from Christoph, which moves the GVT-g code into a dedicated module, the GVT-g MMIO tracking table needs to be separated from GVT-g. v9: - Fix a problem might cause kernel panic. - Remove the redaundant definitation of intel_get_device_type(). (Jani) - Sort the list of header reference in intel_gvt_mmio.c (Jani) - Include minimum header insted in intel_gvt_mmio.c (Jani) v8: - Use SPDX header in the intel_gvt_mmio_table.c - Reference the gvt.h with path. (Jani) - Add a missing fix on mmio emulation path during the debug. - Fix a building problem on refreshed gvt-staging branch. (Christoph) v7: - Keep the marcos of device generation in GVT-g. (Christoph, Jani) v6: - Move the mmio_table.c into i915. (Christoph) - Keep init_device_info and related structures in GVT-g. (Christoph) - Refine the callbacks of the iterator. (Christoph) - Move the flags of MMIO register defination to GVT-g. (Chrsitoph) - Move the mmio block handling to GVT-g. v5: - Re-design the mmio table framework. (Christoph) v4: - Fix the errors of patch checking scripts. v3: - Fix the errors when CONFIG_DRM_I915_WERROR is turned on. (Jani) v2: - Implement a mmio table instead of generating it by marco in i915. (Jani) Cc: Christoph Hellwig <hch@lst.de> Cc: Jason Gunthorpe <jgg@nvidia.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Vivi Rodrigo <rodrigo.vivi@intel.com> Cc: Zhenyu Wang <zhenyuw@linux.intel.com> Cc: Zhi Wang <zhi.a.wang@intel.com> Signed-off-by: Zhi Wang <zhi.a.wang@intel.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Tested-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com> Acked-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20220407071945.72148-2-zhi.a.wang@intel.com
This commit is contained in:
parent
3123109284
commit
e0f74ed463
@ -321,7 +321,7 @@ i915-$(CONFIG_DRM_I915_SELFTEST) += \
|
||||
i915-y += i915_vgpu.o
|
||||
|
||||
ifeq ($(CONFIG_DRM_I915_GVT),y)
|
||||
i915-y += intel_gvt.o
|
||||
i915-y += intel_gvt.o intel_gvt_mmio_table.o
|
||||
include $(src)/gvt/Makefile
|
||||
endif
|
||||
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include <uapi/linux/pci_regs.h>
|
||||
|
||||
#include "i915_drv.h"
|
||||
#include "intel_gvt.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "hypercall.h"
|
||||
@ -272,7 +273,7 @@ struct intel_gvt_mmio {
|
||||
/* Value of command write of this reg needs to be patched */
|
||||
#define F_CMD_WRITE_PATCH (1 << 8)
|
||||
|
||||
const struct gvt_mmio_block *mmio_block;
|
||||
struct gvt_mmio_block *mmio_block;
|
||||
unsigned int num_mmio_block;
|
||||
|
||||
DECLARE_HASHTABLE(mmio_info_table, INTEL_GVT_MMIO_HASH_BITS);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -72,7 +72,6 @@ struct intel_gvt_mmio_info {
|
||||
const struct intel_engine_cs *
|
||||
intel_gvt_render_mmio_to_engine(struct intel_gvt *gvt, unsigned int reg);
|
||||
unsigned long intel_gvt_get_device_type(struct intel_gvt *gvt);
|
||||
bool intel_gvt_match_device(struct intel_gvt *gvt, unsigned long device);
|
||||
|
||||
int intel_gvt_setup_mmio_info(struct intel_gvt *gvt);
|
||||
void intel_gvt_clean_mmio_info(struct intel_gvt *gvt);
|
||||
|
@ -132,6 +132,13 @@
|
||||
#define RING_GFX_MODE(base) _MMIO((base) + 0x29c)
|
||||
#define VF_GUARDBAND _MMIO(0x83a4)
|
||||
|
||||
|
||||
#define BCS_TILE_REGISTER_VAL_OFFSET (0x43*4)
|
||||
|
||||
/* XXX FIXME i915 has changed PP_XXX definition */
|
||||
#define PCH_PP_STATUS _MMIO(0xc7200)
|
||||
#define PCH_PP_CONTROL _MMIO(0xc7204)
|
||||
#define PCH_PP_ON_DELAYS _MMIO(0xc7208)
|
||||
#define PCH_PP_OFF_DELAYS _MMIO(0xc720c)
|
||||
#define PCH_PP_DIVISOR _MMIO(0xc7210)
|
||||
|
||||
#endif
|
||||
|
@ -24,9 +24,19 @@
|
||||
#ifndef _INTEL_GVT_H_
|
||||
#define _INTEL_GVT_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct drm_i915_private;
|
||||
|
||||
#ifdef CONFIG_DRM_I915_GVT
|
||||
|
||||
struct intel_gvt_mmio_table_iter {
|
||||
struct drm_i915_private *i915;
|
||||
void *data;
|
||||
int (*handle_mmio_cb)(struct intel_gvt_mmio_table_iter *iter,
|
||||
u32 offset, u32 size);
|
||||
};
|
||||
|
||||
int intel_gvt_init(struct drm_i915_private *dev_priv);
|
||||
void intel_gvt_driver_remove(struct drm_i915_private *dev_priv);
|
||||
int intel_gvt_init_device(struct drm_i915_private *dev_priv);
|
||||
@ -34,6 +44,7 @@ void intel_gvt_clean_device(struct drm_i915_private *dev_priv);
|
||||
int intel_gvt_init_host(void);
|
||||
void intel_gvt_sanitize_options(struct drm_i915_private *dev_priv);
|
||||
void intel_gvt_resume(struct drm_i915_private *dev_priv);
|
||||
int intel_gvt_iterate_mmio_table(struct intel_gvt_mmio_table_iter *iter);
|
||||
#else
|
||||
static inline int intel_gvt_init(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
@ -51,6 +62,14 @@ static inline void intel_gvt_sanitize_options(struct drm_i915_private *dev_priv)
|
||||
static inline void intel_gvt_resume(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
}
|
||||
|
||||
struct intel_gvt_mmio_table_iter {
|
||||
};
|
||||
|
||||
static inline int intel_gvt_iterate_mmio_table(struct intel_gvt_mmio_table_iter *iter)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _INTEL_GVT_H_ */
|
||||
|
1290
drivers/gpu/drm/i915/intel_gvt_mmio_table.c
Normal file
1290
drivers/gpu/drm/i915/intel_gvt_mmio_table.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user