#define IP_VER(ver, rel)               ((ver) << 8 | (rel))
 
-#define GRAPHICS_VER(i915)             (RUNTIME_INFO(i915)->graphics.ver)
-#define GRAPHICS_VER_FULL(i915)                IP_VER(RUNTIME_INFO(i915)->graphics.ver, \
-                                              RUNTIME_INFO(i915)->graphics.rel)
+#define GRAPHICS_VER(i915)             (RUNTIME_INFO(i915)->graphics.ip.ver)
+#define GRAPHICS_VER_FULL(i915)                IP_VER(RUNTIME_INFO(i915)->graphics.ip.ver, \
+                                              RUNTIME_INFO(i915)->graphics.ip.rel)
 #define IS_GRAPHICS_VER(i915, from, until) \
        (GRAPHICS_VER(i915) >= (from) && GRAPHICS_VER(i915) <= (until))
 
-#define MEDIA_VER(i915)                        (INTEL_INFO(i915)->media.ver)
-#define MEDIA_VER_FULL(i915)           IP_VER(INTEL_INFO(i915)->media.ver, \
-                                              INTEL_INFO(i915)->media.rel)
+#define MEDIA_VER(i915)                        (RUNTIME_INFO(i915)->media.ip.ver)
+#define MEDIA_VER_FULL(i915)           IP_VER(RUNTIME_INFO(i915)->media.ip.ver, \
+                                              RUNTIME_INFO(i915)->media.ip.rel)
 #define IS_MEDIA_VER(i915, from, until) \
        (MEDIA_VER(i915) >= (from) && MEDIA_VER(i915) <= (until))
 
-#define DISPLAY_VER(i915)      (INTEL_INFO(i915)->display.ver)
+#define DISPLAY_VER(i915)      (RUNTIME_INFO(i915)->display.ip.ver)
 #define IS_DISPLAY_VER(i915, from, until) \
        (DISPLAY_VER(i915) >= (from) && DISPLAY_VER(i915) <= (until))
 
 
 
 #define PLATFORM(x) .platform = (x)
 #define GEN(x) \
-       .__runtime.graphics.ver = (x), \
-       .media.ver = (x), \
-       .display.ver = (x)
+       .__runtime.graphics.ip.ver = (x), \
+       .__runtime.media.ip.ver = (x), \
+       .__runtime.display.ip.ver = (x)
 
 #define I845_PIPE_OFFSETS \
        .display.pipe_offsets = { \
 static const struct intel_device_info glk_info = {
        GEN9_LP_FEATURES,
        PLATFORM(INTEL_GEMINILAKE),
-       .display.ver = 10,
+       .__runtime.display.ip.ver = 10,
        .display.dbuf.size = 1024 - 4, /* 4 blocks for bypass path allocation */
        GLK_COLORS,
 };
 static const struct intel_device_info dg1_info = {
        GEN12_FEATURES,
        DGFX_FEATURES,
-       .__runtime.graphics.rel = 10,
+       .__runtime.graphics.ip.rel = 10,
        PLATFORM(INTEL_DG1),
        .__runtime.pipe_mask = BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D),
        .require_force_probe = 1,
        .display.has_hotplug = 1,                                               \
        .display.has_ipc = 1,                                                   \
        .display.has_psr = 1,                                                   \
-       .display.ver = 13,                                                      \
+       .__runtime.display.ip.ver = 13,                                                 \
        .__runtime.pipe_mask = BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D),   \
        .display.pipe_offsets = {                                               \
                [TRANSCODER_A] = PIPE_A_OFFSET,                                 \
                I915_GTT_PAGE_SIZE_2M
 
 #define XE_HP_FEATURES \
-       .__runtime.graphics.ver = 12, \
-       .__runtime.graphics.rel = 50, \
+       .__runtime.graphics.ip.ver = 12, \
+       .__runtime.graphics.ip.rel = 50, \
        XE_HP_PAGE_SIZES, \
        .dma_mask_size = 46, \
        .has_3d_pipeline = 1, \
        .__runtime.ppgtt_type = INTEL_PPGTT_FULL
 
 #define XE_HPM_FEATURES \
-       .media.ver = 12, \
-       .media.rel = 50
+       .__runtime.media.ip.ver = 12, \
+       .__runtime.media.ip.rel = 50
 
 __maybe_unused
 static const struct intel_device_info xehpsdv_info = {
        XE_HP_FEATURES, \
        XE_HPM_FEATURES, \
        DGFX_FEATURES, \
-       .__runtime.graphics.rel = 55, \
-       .media.rel = 55, \
+       .__runtime.graphics.ip.rel = 55, \
+       .__runtime.media.ip.rel = 55, \
        PLATFORM(INTEL_DG2), \
        .has_4tile = 1, \
        .has_64k_pages = 1, \
        XE_HPC_FEATURES,
        XE_HPM_FEATURES,
        DGFX_FEATURES,
-       .__runtime.graphics.rel = 60,
-       .media.rel = 60,
+       .__runtime.graphics.ip.rel = 60,
+       .__runtime.media.ip.rel = 60,
        PLATFORM(INTEL_PONTEVECCHIO),
        .display = { 0 },
        .has_flat_ccs = 0,
 
 #define XE_LPDP_FEATURES       \
        XE_LPD_FEATURES,        \
-       .display.ver = 14,      \
+       .__runtime.display.ip.ver = 14, \
        .display.has_cdclk_crawl = 1, \
        .__runtime.fbc_mask = BIT(INTEL_FBC_A) | BIT(INTEL_FBC_B)
 
         * Real graphics IP version will be obtained from hardware GMD_ID
         * register.  Value provided here is just for sanity checking.
         */
-       .__runtime.graphics.ver = 12,
-       .__runtime.graphics.rel = 70,
-       .media.ver = 13,
+       .__runtime.graphics.ip.ver = 12,
+       .__runtime.graphics.ip.rel = 70,
+       .__runtime.media.ip.ver = 13,
        PLATFORM(INTEL_METEORLAKE),
        .display.has_modular_fia = 1,
        .has_flat_ccs = 0,
 
 static bool intel_mmio_bar_valid(struct pci_dev *pdev, struct intel_device_info *intel_info)
 {
-       int gttmmaddr_bar = intel_info->__runtime.graphics.ver == 2 ? GEN2_GTTMMADR_BAR : GTTMMADR_BAR;
+       int gttmmaddr_bar = intel_info->__runtime.graphics.ip.ver == 2 ? GEN2_GTTMMADR_BAR : GTTMMADR_BAR;
 
        return i915_pci_resource_valid(pdev, gttmmaddr_bar);
 }
 
                             const struct intel_runtime_info *runtime,
                             struct drm_printer *p)
 {
-       if (runtime->graphics.rel)
-               drm_printf(p, "graphics version: %u.%02u\n", runtime->graphics.ver,
-                          runtime->graphics.rel);
+       if (runtime->graphics.ip.rel)
+               drm_printf(p, "graphics version: %u.%02u\n",
+                          runtime->graphics.ip.ver,
+                          runtime->graphics.ip.rel);
        else
-               drm_printf(p, "graphics version: %u\n", runtime->graphics.ver);
+               drm_printf(p, "graphics version: %u\n",
+                          runtime->graphics.ip.ver);
 
-       if (info->media.rel)
-               drm_printf(p, "media version: %u.%02u\n", info->media.ver, info->media.rel);
+       if (runtime->media.ip.rel)
+               drm_printf(p, "media version: %u.%02u\n",
+                          runtime->media.ip.ver,
+                          runtime->media.ip.rel);
        else
-               drm_printf(p, "media version: %u\n", info->media.ver);
+               drm_printf(p, "media version: %u\n",
+                          runtime->media.ip.ver);
 
-       if (info->display.rel)
-               drm_printf(p, "display version: %u.%02u\n", info->display.ver, info->display.rel);
+       if (runtime->display.ip.rel)
+               drm_printf(p, "display version: %u.%02u\n",
+                          runtime->display.ip.ver,
+                          runtime->display.ip.rel);
        else
-               drm_printf(p, "display version: %u\n", info->display.ver);
+               drm_printf(p, "display version: %u\n",
+                          runtime->display.ip.ver);
 
        drm_printf(p, "gt: %d\n", info->gt);
        drm_printf(p, "memory-regions: %x\n", runtime->memory_regions);
 
 };
 
 struct intel_runtime_info {
-       struct ip_version graphics;
+       struct {
+               struct ip_version ip;
+       } graphics;
+       struct {
+               struct ip_version ip;
+       } media;
+       struct {
+               struct ip_version ip;
+       } display;
 
        /*
         * Platform mask is used for optimizing or-ed IS_PLATFORM calls into
 };
 
 struct intel_device_info {
-       struct ip_version media;
-
        enum intel_platform platform;
 
        unsigned int dma_mask_size; /* available DMA address bits */
 #undef DEFINE_FLAG
 
        struct {
-               u8 ver;
-               u8 rel;
-
                u8 abox_mask;
 
                struct {
 
        /* Using the global GTT may ask questions about KMS users, so prepare */
        drm_mode_config_init(&i915->drm);
 
-       RUNTIME_INFO(i915)->graphics.ver = -1;
+       RUNTIME_INFO(i915)->graphics.ip.ver = -1;
 
        RUNTIME_INFO(i915)->page_sizes =
                I915_GTT_PAGE_SIZE_4K |