DEFINE_PPGTT_GMA_TO_INDEX(gen8, l4_pdp, (gma >> 30 & 0x1ff));
 DEFINE_PPGTT_GMA_TO_INDEX(gen8, pml4, (gma >> 39 & 0x1ff));
 
-static struct intel_gvt_gtt_pte_ops gen8_gtt_pte_ops = {
+static const struct intel_gvt_gtt_pte_ops gen8_gtt_pte_ops = {
        .get_entry = gtt_get_entry64,
        .set_entry = gtt_set_entry64,
        .clear_present = gtt_entry_clear_present,
 };
 
 /* Update entry type per pse and ips bit. */
-static void update_entry_type_for_real(struct intel_gvt_gtt_pte_ops *pte_ops,
+static void update_entry_type_for_real(const struct intel_gvt_gtt_pte_ops *pte_ops,
        struct intel_gvt_gtt_entry *entry, bool ips)
 {
        switch (entry->type) {
                struct intel_gvt_gtt_entry *entry, unsigned long index,
                bool guest)
 {
-       struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
 
        GEM_BUG_ON(mm->type != INTEL_GVT_MM_PPGTT);
 
                struct intel_gvt_gtt_entry *entry, unsigned long index,
                bool guest)
 {
-       struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
 
        pte_ops->set_entry(guest ? mm->ppgtt_mm.guest_pdps :
                           mm->ppgtt_mm.shadow_pdps,
 static void ggtt_get_guest_entry(struct intel_vgpu_mm *mm,
                struct intel_gvt_gtt_entry *entry, unsigned long index)
 {
-       struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
 
        GEM_BUG_ON(mm->type != INTEL_GVT_MM_GGTT);
 
 static void ggtt_set_guest_entry(struct intel_vgpu_mm *mm,
                struct intel_gvt_gtt_entry *entry, unsigned long index)
 {
-       struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
 
        GEM_BUG_ON(mm->type != INTEL_GVT_MM_GGTT);
 
 static void ggtt_get_host_entry(struct intel_vgpu_mm *mm,
                struct intel_gvt_gtt_entry *entry, unsigned long index)
 {
-       struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
 
        GEM_BUG_ON(mm->type != INTEL_GVT_MM_GGTT);
 
 static void ggtt_set_host_entry(struct intel_vgpu_mm *mm,
                struct intel_gvt_gtt_entry *entry, unsigned long index)
 {
-       struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = mm->vgpu->gvt->gtt.pte_ops;
        unsigned long offset = index;
 
        GEM_BUG_ON(mm->type != INTEL_GVT_MM_GGTT);
                bool guest)
 {
        struct intel_gvt *gvt = spt->vgpu->gvt;
-       struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
        int ret;
 
        e->type = get_entry_type(type);
                bool guest)
 {
        struct intel_gvt *gvt = spt->vgpu->gvt;
-       struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
 
        if (WARN(!gtt_type_is_entry(e->type), "invalid entry type\n"))
                return -EINVAL;
                struct intel_gvt_gtt_entry *e)
 {
        struct drm_i915_private *i915 = vgpu->gvt->gt->i915;
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        struct intel_vgpu_ppgtt_spt *s;
        enum intel_gvt_gtt_type cur_pt_type;
 
                struct intel_gvt_gtt_entry *entry)
 {
        struct intel_vgpu *vgpu = spt->vgpu;
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        unsigned long pfn;
        int type;
 
 static struct intel_vgpu_ppgtt_spt *ppgtt_populate_spt_by_guest_entry(
                struct intel_vgpu *vgpu, struct intel_gvt_gtt_entry *we)
 {
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        struct intel_vgpu_ppgtt_spt *spt = NULL;
        bool ips = false;
        int ret;
 static inline void ppgtt_generate_shadow_entry(struct intel_gvt_gtt_entry *se,
                struct intel_vgpu_ppgtt_spt *s, struct intel_gvt_gtt_entry *ge)
 {
-       struct intel_gvt_gtt_pte_ops *ops = s->vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = s->vgpu->gvt->gtt.pte_ops;
 
        se->type = ge->type;
        se->val64 = ge->val64;
 static int is_2MB_gtt_possible(struct intel_vgpu *vgpu,
        struct intel_gvt_gtt_entry *entry)
 {
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        unsigned long pfn;
 
        if (!HAS_PAGE_SIZES(vgpu->gvt->gt->i915, I915_GTT_PAGE_SIZE_2M))
        struct intel_vgpu_ppgtt_spt *spt, unsigned long index,
        struct intel_gvt_gtt_entry *se)
 {
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        struct intel_vgpu_ppgtt_spt *sub_spt;
        struct intel_gvt_gtt_entry sub_se;
        unsigned long start_gfn;
        struct intel_vgpu_ppgtt_spt *spt, unsigned long index,
        struct intel_gvt_gtt_entry *se)
 {
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        struct intel_gvt_gtt_entry entry = *se;
        unsigned long start_gfn;
        dma_addr_t dma_addr;
        struct intel_vgpu_ppgtt_spt *spt, unsigned long index,
        struct intel_gvt_gtt_entry *ge)
 {
-       struct intel_gvt_gtt_pte_ops *pte_ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = vgpu->gvt->gtt.pte_ops;
        struct intel_gvt_gtt_entry se = *ge;
        unsigned long gfn, page_size = PAGE_SIZE;
        dma_addr_t dma_addr;
 {
        struct intel_vgpu *vgpu = spt->vgpu;
        struct intel_gvt *gvt = vgpu->gvt;
-       struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
        struct intel_vgpu_ppgtt_spt *s;
        struct intel_gvt_gtt_entry se, ge;
        unsigned long gfn, i;
                struct intel_gvt_gtt_entry *se, unsigned long index)
 {
        struct intel_vgpu *vgpu = spt->vgpu;
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        int ret;
 
        trace_spt_guest_change(spt->vgpu->id, "remove", spt,
 {
        const struct intel_gvt_device_info *info = &vgpu->gvt->device_info;
        struct intel_gvt *gvt = vgpu->gvt;
-       struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
        struct intel_vgpu_ppgtt_spt *spt = oos_page->spt;
        struct intel_gvt_gtt_entry old, new;
        int index;
 {
        struct intel_vgpu *vgpu = spt->vgpu;
        int type = spt->shadow_page.type;
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        struct intel_gvt_gtt_entry old_se;
        int new_present;
        int i, ret;
                u64 pa, void *p_data, int bytes)
 {
        struct intel_vgpu *vgpu = spt->vgpu;
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        const struct intel_gvt_device_info *info = &vgpu->gvt->device_info;
        struct intel_gvt_gtt_entry we, se;
        unsigned long index;
        struct intel_vgpu *vgpu = mm->vgpu;
        struct intel_gvt *gvt = vgpu->gvt;
        struct intel_gvt_gtt *gtt = &gvt->gtt;
-       struct intel_gvt_gtt_pte_ops *ops = gtt->pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = gtt->pte_ops;
        struct intel_gvt_gtt_entry se;
        int index;
 
        struct intel_vgpu *vgpu = mm->vgpu;
        struct intel_gvt *gvt = vgpu->gvt;
        struct intel_gvt_gtt *gtt = &gvt->gtt;
-       struct intel_gvt_gtt_pte_ops *ops = gtt->pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = gtt->pte_ops;
        struct intel_vgpu_ppgtt_spt *spt;
        struct intel_gvt_gtt_entry ge, se;
        int index, ret;
                struct intel_gvt_gtt_entry *e, unsigned long index, bool guest)
 {
        struct intel_vgpu *vgpu = mm->vgpu;
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        struct intel_vgpu_ppgtt_spt *s;
 
        s = intel_vgpu_find_spt_by_mfn(vgpu, ops->get_pfn(e));
 {
        struct intel_vgpu *vgpu = mm->vgpu;
        struct intel_gvt *gvt = vgpu->gvt;
-       struct intel_gvt_gtt_pte_ops *pte_ops = gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = gvt->gtt.pte_ops;
        const struct intel_gvt_gtt_gma_ops *gma_ops = gvt->gtt.gma_ops;
        unsigned long gpa = INTEL_GVT_INVALID_ADDR;
        unsigned long gma_index[4];
 static void ggtt_invalidate_pte(struct intel_vgpu *vgpu,
                struct intel_gvt_gtt_entry *entry)
 {
-       struct intel_gvt_gtt_pte_ops *pte_ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = vgpu->gvt->gtt.pte_ops;
        unsigned long pfn;
 
        pfn = pte_ops->get_pfn(entry);
        struct intel_gvt *gvt = vgpu->gvt;
        const struct intel_gvt_device_info *info = &gvt->device_info;
        struct intel_vgpu_mm *ggtt_mm = vgpu->gtt.ggtt_mm;
-       struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = gvt->gtt.pte_ops;
        unsigned long g_gtt_index = off >> info->gtt_entry_size_shift;
        unsigned long gma, gfn;
        struct intel_gvt_gtt_entry e = {.val64 = 0, .type = GTT_TYPE_GGTT_PTE};
 {
        struct drm_i915_private *i915 = vgpu->gvt->gt->i915;
        struct intel_vgpu_gtt *gtt = &vgpu->gtt;
-       struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
        int page_entry_num = I915_GTT_PAGE_SIZE >>
                                vgpu->gvt->device_info.gtt_entry_size_shift;
        void *scratch_pt;
 void intel_vgpu_reset_ggtt(struct intel_vgpu *vgpu, bool invalidate_old)
 {
        struct intel_gvt *gvt = vgpu->gvt;
-       struct intel_gvt_gtt_pte_ops *pte_ops = vgpu->gvt->gtt.pte_ops;
+       const struct intel_gvt_gtt_pte_ops *pte_ops = vgpu->gvt->gtt.pte_ops;
        struct intel_gvt_gtt_entry entry = {.type = GTT_TYPE_GGTT_PTE};
        struct intel_gvt_gtt_entry old_entry;
        u32 index;