All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	"Piotr Piórkowski" <piotr.piorkowski@intel.com>,
	"Stuart Summers" <stuart.summers@intel.com>,
	"Matthew Auld" <matthew.auld@intel.com>,
	"Satyanarayana K V P" <satyanarayana.k.v.p@intel.com>,
	"Matthew Brost" <matthew.brost@intel.com>,
	"Lucas De Marchi" <lucas.demarchi@intel.com>,
	"Sasha Levin" <sashal@kernel.org>
Subject: [PATCH 6.17 155/159] drm/xe: Use dynamic allocation for tile and device VRAM region structures
Date: Tue, 21 Oct 2025 21:52:12 +0200	[thread overview]
Message-ID: <20251021195046.903757662@linuxfoundation.org> (raw)
In-Reply-To: <20251021195043.182511864@linuxfoundation.org>

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Piotr Piórkowski <piotr.piorkowski@intel.com>

[ Upstream commit f92cfd72d9a650f90260c54accd840c6500c4c3a ]

In future platforms, we will need to represent the device and tile
VRAM regions in a more dynamic way, so let's abandon the static
allocation of these structures and start use a dynamic allocation.

v2:
 - Add a helpers for accessing fields of the xe_vram_region structure
v3:
- Add missing EXPORT_SYMBOL_IF_KUNIT for
  xe_vram_region_actual_physical_size

Signed-off-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
Cc: Stuart Summers <stuart.summers@intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Acked-by: Matthew Brost <matthew.brost@intel.com>
Link: https://lore.kernel.org/r/20250714184818.89201-3-piotr.piorkowski@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Stable-dep-of: d30203739be7 ("drm/xe: Move rebar to be done earlier")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/xe/display/xe_fb_pin.c        |    4 
 drivers/gpu/drm/xe/display/xe_plane_initial.c |    2 
 drivers/gpu/drm/xe/xe_assert.h                |    4 
 drivers/gpu/drm/xe/xe_device.c                |   19 ++++
 drivers/gpu/drm/xe/xe_device_types.h          |    6 -
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c    |    2 
 drivers/gpu/drm/xe/xe_migrate.c               |   25 +++--
 drivers/gpu/drm/xe/xe_pci.c                   |    6 +
 drivers/gpu/drm/xe/xe_query.c                 |    2 
 drivers/gpu/drm/xe/xe_svm.c                   |   24 +----
 drivers/gpu/drm/xe/xe_tile.c                  |   34 ++++++-
 drivers/gpu/drm/xe/xe_tile.h                  |    4 
 drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c        |   10 +-
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c          |    7 -
 drivers/gpu/drm/xe/xe_vram.c                  |  121 +++++++++++++++++++-------
 drivers/gpu/drm/xe/xe_vram.h                  |    9 +
 16 files changed, 202 insertions(+), 77 deletions(-)

--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -289,7 +289,7 @@ static struct i915_vma *__xe_pin_fb_vma(
 	if (IS_DGFX(to_xe_device(bo->ttm.base.dev)) &&
 	    intel_fb_rc_ccs_cc_plane(&fb->base) >= 0 &&
 	    !(bo->flags & XE_BO_FLAG_NEEDS_CPU_ACCESS)) {
-		struct xe_tile *tile = xe_device_get_root_tile(xe);
+		struct xe_vram_region *vram = xe_device_get_root_tile(xe)->mem.vram;
 
 		/*
 		 * If we need to able to access the clear-color value stored in
@@ -297,7 +297,7 @@ static struct i915_vma *__xe_pin_fb_vma(
 		 * accessible.  This is important on small-bar systems where
 		 * only some subset of VRAM is CPU accessible.
 		 */
-		if (tile->mem.vram.io_size < tile->mem.vram.usable_size) {
+		if (xe_vram_region_io_size(vram) < xe_vram_region_usable_size(vram)) {
 			ret = -EINVAL;
 			goto err;
 		}
--- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
+++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
@@ -103,7 +103,7 @@ initial_plane_bo(struct xe_device *xe,
 		 * We don't currently expect this to ever be placed in the
 		 * stolen portion.
 		 */
-		if (phys_base >= tile0->mem.vram.usable_size) {
+		if (phys_base >= xe_vram_region_usable_size(tile0->mem.vram)) {
 			drm_err(&xe->drm,
 				"Initial plane programming using invalid range, phys_base=%pa\n",
 				&phys_base);
--- a/drivers/gpu/drm/xe/xe_assert.h
+++ b/drivers/gpu/drm/xe/xe_assert.h
@@ -12,6 +12,7 @@
 
 #include "xe_gt_types.h"
 #include "xe_step.h"
+#include "xe_vram.h"
 
 /**
  * DOC: Xe Asserts
@@ -145,7 +146,8 @@
 	const struct xe_tile *__tile = (tile);							\
 	char __buf[10] __maybe_unused;								\
 	xe_assert_msg(tile_to_xe(__tile), condition, "tile: %u VRAM %s\n" msg,			\
-		      __tile->id, ({ string_get_size(__tile->mem.vram.actual_physical_size, 1,	\
+		      __tile->id, ({ string_get_size(						\
+				     xe_vram_region_actual_physical_size(__tile->mem.vram), 1,	\
 				     STRING_UNITS_2, __buf, sizeof(__buf)); __buf; }), ## arg);	\
 })
 
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -688,6 +688,21 @@ static void sriov_update_device_info(str
 	}
 }
 
+static int xe_device_vram_alloc(struct xe_device *xe)
+{
+	struct xe_vram_region *vram;
+
+	if (!IS_DGFX(xe))
+		return 0;
+
+	vram = drmm_kzalloc(&xe->drm, sizeof(*vram), GFP_KERNEL);
+	if (!vram)
+		return -ENOMEM;
+
+	xe->mem.vram = vram;
+	return 0;
+}
+
 /**
  * xe_device_probe_early: Device early probe
  * @xe: xe device instance
@@ -735,6 +750,10 @@ int xe_device_probe_early(struct xe_devi
 
 	xe->wedged.mode = xe_modparam.wedged_mode;
 
+	err = xe_device_vram_alloc(xe);
+	if (err)
+		return err;
+
 	return 0;
 }
 ALLOW_ERROR_INJECTION(xe_device_probe_early, ERRNO); /* See xe_pci_probe() */
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -77,6 +77,8 @@ struct xe_pxp;
  * device, such as HBM memory or CXL extension memory.
  */
 struct xe_vram_region {
+	/** @tile: Back pointer to tile */
+	struct xe_tile *tile;
 	/** @io_start: IO start address of this VRAM instance */
 	resource_size_t io_start;
 	/**
@@ -216,7 +218,7 @@ struct xe_tile {
 		 * Although VRAM is associated with a specific tile, it can
 		 * still be accessed by all tiles' GTs.
 		 */
-		struct xe_vram_region vram;
+		struct xe_vram_region *vram;
 
 		/** @mem.ggtt: Global graphics translation table */
 		struct xe_ggtt *ggtt;
@@ -412,7 +414,7 @@ struct xe_device {
 	/** @mem: memory info for device */
 	struct {
 		/** @mem.vram: VRAM info for device */
-		struct xe_vram_region vram;
+		struct xe_vram_region *vram;
 		/** @mem.sys_mgr: system TTM manager */
 		struct ttm_resource_manager sys_mgr;
 		/** @mem.sys_mgr: system memory shrinker. */
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -1604,7 +1604,7 @@ static u64 pf_query_free_lmem(struct xe_
 {
 	struct xe_tile *tile = gt->tile;
 
-	return xe_ttm_vram_get_avail(&tile->mem.vram.ttm.manager);
+	return xe_ttm_vram_get_avail(&tile->mem.vram->ttm.manager);
 }
 
 static u64 pf_query_max_lmem(struct xe_gt *gt)
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -34,6 +34,7 @@
 #include "xe_sync.h"
 #include "xe_trace_bo.h"
 #include "xe_vm.h"
+#include "xe_vram.h"
 
 /**
  * struct xe_migrate - migrate context.
@@ -130,34 +131,36 @@ static u64 xe_migrate_vram_ofs(struct xe
 	u64 identity_offset = IDENTITY_OFFSET;
 
 	if (GRAPHICS_VER(xe) >= 20 && is_comp_pte)
-		identity_offset += DIV_ROUND_UP_ULL(xe->mem.vram.actual_physical_size, SZ_1G);
+		identity_offset += DIV_ROUND_UP_ULL(xe_vram_region_actual_physical_size
+							(xe->mem.vram), SZ_1G);
 
-	addr -= xe->mem.vram.dpa_base;
+	addr -= xe_vram_region_dpa_base(xe->mem.vram);
 	return addr + (identity_offset << xe_pt_shift(2));
 }
 
 static void xe_migrate_program_identity(struct xe_device *xe, struct xe_vm *vm, struct xe_bo *bo,
 					u64 map_ofs, u64 vram_offset, u16 pat_index, u64 pt_2m_ofs)
 {
+	struct xe_vram_region *vram = xe->mem.vram;
+	resource_size_t dpa_base = xe_vram_region_dpa_base(vram);
 	u64 pos, ofs, flags;
 	u64 entry;
 	/* XXX: Unclear if this should be usable_size? */
-	u64 vram_limit =  xe->mem.vram.actual_physical_size +
-		xe->mem.vram.dpa_base;
+	u64 vram_limit = xe_vram_region_actual_physical_size(vram) + dpa_base;
 	u32 level = 2;
 
 	ofs = map_ofs + XE_PAGE_SIZE * level + vram_offset * 8;
 	flags = vm->pt_ops->pte_encode_addr(xe, 0, pat_index, level,
 					    true, 0);
 
-	xe_assert(xe, IS_ALIGNED(xe->mem.vram.usable_size, SZ_2M));
+	xe_assert(xe, IS_ALIGNED(xe_vram_region_usable_size(vram), SZ_2M));
 
 	/*
 	 * Use 1GB pages when possible, last chunk always use 2M
 	 * pages as mixing reserved memory (stolen, WOCPM) with a single
 	 * mapping is not allowed on certain platforms.
 	 */
-	for (pos = xe->mem.vram.dpa_base; pos < vram_limit;
+	for (pos = dpa_base; pos < vram_limit;
 	     pos += SZ_1G, ofs += 8) {
 		if (pos + SZ_1G >= vram_limit) {
 			entry = vm->pt_ops->pde_encode_bo(bo, pt_2m_ofs,
@@ -307,11 +310,11 @@ static int xe_migrate_prepare_vm(struct
 	/* Identity map the entire vram at 256GiB offset */
 	if (IS_DGFX(xe)) {
 		u64 pt30_ofs = xe_bo_size(bo) - 2 * XE_PAGE_SIZE;
+		resource_size_t actual_phy_size = xe_vram_region_actual_physical_size(xe->mem.vram);
 
 		xe_migrate_program_identity(xe, vm, bo, map_ofs, IDENTITY_OFFSET,
 					    pat_index, pt30_ofs);
-		xe_assert(xe, xe->mem.vram.actual_physical_size <=
-					(MAX_NUM_PTE - IDENTITY_OFFSET) * SZ_1G);
+		xe_assert(xe, actual_phy_size <= (MAX_NUM_PTE - IDENTITY_OFFSET) * SZ_1G);
 
 		/*
 		 * Identity map the entire vram for compressed pat_index for xe2+
@@ -320,11 +323,11 @@ static int xe_migrate_prepare_vm(struct
 		if (GRAPHICS_VER(xe) >= 20 && xe_device_has_flat_ccs(xe)) {
 			u16 comp_pat_index = xe->pat.idx[XE_CACHE_NONE_COMPRESSION];
 			u64 vram_offset = IDENTITY_OFFSET +
-				DIV_ROUND_UP_ULL(xe->mem.vram.actual_physical_size, SZ_1G);
+				DIV_ROUND_UP_ULL(actual_phy_size, SZ_1G);
 			u64 pt31_ofs = xe_bo_size(bo) - XE_PAGE_SIZE;
 
-			xe_assert(xe, xe->mem.vram.actual_physical_size <= (MAX_NUM_PTE -
-						IDENTITY_OFFSET - IDENTITY_OFFSET / 2) * SZ_1G);
+			xe_assert(xe, actual_phy_size <= (MAX_NUM_PTE - IDENTITY_OFFSET -
+							  IDENTITY_OFFSET / 2) * SZ_1G);
 			xe_migrate_program_identity(xe, vm, bo, map_ofs, vram_offset,
 						    comp_pat_index, pt31_ofs);
 		}
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -687,6 +687,8 @@ static int xe_info_init(struct xe_device
 	 * All of these together determine the overall GT count.
 	 */
 	for_each_tile(tile, xe, id) {
+		int err;
+
 		gt = tile->primary_gt;
 		gt->info.type = XE_GT_TYPE_MAIN;
 		gt->info.id = tile->id * xe->info.max_gt_per_tile;
@@ -694,6 +696,10 @@ static int xe_info_init(struct xe_device
 		gt->info.engine_mask = graphics_desc->hw_engine_mask;
 		xe->info.gt_count++;
 
+		err = xe_tile_alloc_vram(tile);
+		if (err)
+			return err;
+
 		if (MEDIA_VER(xe) < 13 && media_desc)
 			gt->info.engine_mask |= media_desc->hw_engine_mask;
 
--- a/drivers/gpu/drm/xe/xe_query.c
+++ b/drivers/gpu/drm/xe/xe_query.c
@@ -334,7 +334,7 @@ static int query_config(struct xe_device
 	config->num_params = num_params;
 	config->info[DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID] =
 		xe->info.devid | (xe->info.revid << 16);
-	if (xe_device_get_root_tile(xe)->mem.vram.usable_size)
+	if (xe->mem.vram)
 		config->info[DRM_XE_QUERY_CONFIG_FLAGS] |=
 			DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM;
 	if (xe->info.has_usm && IS_ENABLED(CONFIG_DRM_XE_GPUSVM))
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -306,16 +306,11 @@ static struct xe_vram_region *page_to_vr
 	return container_of(page_pgmap(page), struct xe_vram_region, pagemap);
 }
 
-static struct xe_tile *vr_to_tile(struct xe_vram_region *vr)
-{
-	return container_of(vr, struct xe_tile, mem.vram);
-}
-
 static u64 xe_vram_region_page_to_dpa(struct xe_vram_region *vr,
 				      struct page *page)
 {
 	u64 dpa;
-	struct xe_tile *tile = vr_to_tile(vr);
+	struct xe_tile *tile = vr->tile;
 	u64 pfn = page_to_pfn(page);
 	u64 offset;
 
@@ -370,7 +365,7 @@ static int xe_svm_copy(struct page **pag
 
 		if (!vr && spage) {
 			vr = page_to_vr(spage);
-			tile = vr_to_tile(vr);
+			tile = vr->tile;
 		}
 		XE_WARN_ON(spage && page_to_vr(spage) != vr);
 
@@ -508,7 +503,7 @@ static u64 block_offset_to_pfn(struct xe
 
 static struct drm_buddy *tile_to_buddy(struct xe_tile *tile)
 {
-	return &tile->mem.vram.ttm.mm;
+	return &tile->mem.vram->ttm.mm;
 }
 
 static int xe_svm_populate_devmem_pfn(struct drm_pagemap_devmem *devmem_allocation,
@@ -522,7 +517,7 @@ static int xe_svm_populate_devmem_pfn(st
 
 	list_for_each_entry(block, blocks, link) {
 		struct xe_vram_region *vr = block->private;
-		struct xe_tile *tile = vr_to_tile(vr);
+		struct xe_tile *tile = vr->tile;
 		struct drm_buddy *buddy = tile_to_buddy(tile);
 		u64 block_pfn = block_offset_to_pfn(vr, drm_buddy_block_offset(block));
 		int i;
@@ -683,20 +678,15 @@ u64 xe_svm_find_vma_start(struct xe_vm *
 }
 
 #if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
-static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
-{
-	return &tile->mem.vram;
-}
-
 static int xe_drm_pagemap_populate_mm(struct drm_pagemap *dpagemap,
 				      unsigned long start, unsigned long end,
 				      struct mm_struct *mm,
 				      unsigned long timeslice_ms)
 {
-	struct xe_tile *tile = container_of(dpagemap, typeof(*tile), mem.vram.dpagemap);
+	struct xe_vram_region *vr = container_of(dpagemap, typeof(*vr), dpagemap);
+	struct xe_tile *tile = vr->tile;
 	struct xe_device *xe = tile_to_xe(tile);
 	struct device *dev = xe->drm.dev;
-	struct xe_vram_region *vr = tile_to_vr(tile);
 	struct drm_buddy_block *block;
 	struct list_head *blocks;
 	struct xe_bo *bo;
@@ -722,7 +712,7 @@ static int xe_drm_pagemap_populate_mm(st
 
 	drm_pagemap_devmem_init(&bo->devmem_allocation, dev, mm,
 				&dpagemap_devmem_ops,
-				&tile->mem.vram.dpagemap,
+				&tile->mem.vram->dpagemap,
 				end - start);
 
 	blocks = &to_xe_ttm_vram_mgr_resource(bo->ttm.resource)->blocks;
--- a/drivers/gpu/drm/xe/xe_tile.c
+++ b/drivers/gpu/drm/xe/xe_tile.c
@@ -19,6 +19,7 @@
 #include "xe_tile_sysfs.h"
 #include "xe_ttm_vram_mgr.h"
 #include "xe_wa.h"
+#include "xe_vram.h"
 
 /**
  * DOC: Multi-tile Design
@@ -96,6 +97,33 @@ static int xe_tile_alloc(struct xe_tile
 }
 
 /**
+ * xe_tile_alloc_vram - Perform per-tile VRAM structs allocation
+ * @tile: Tile to perform allocations for
+ *
+ * Allocates VRAM per-tile data structures using DRM-managed allocations.
+ * Does not touch the hardware.
+ *
+ * Returns -ENOMEM if allocations fail, otherwise 0.
+ */
+int xe_tile_alloc_vram(struct xe_tile *tile)
+{
+	struct xe_device *xe = tile_to_xe(tile);
+	struct xe_vram_region *vram;
+
+	if (!IS_DGFX(xe))
+		return 0;
+
+	vram = drmm_kzalloc(&xe->drm, sizeof(*vram), GFP_KERNEL);
+	if (!vram)
+		return -ENOMEM;
+
+	vram->tile = tile;
+	tile->mem.vram = vram;
+
+	return 0;
+}
+
+/**
  * xe_tile_init_early - Initialize the tile and primary GT
  * @tile: Tile to initialize
  * @xe: Parent Xe device
@@ -132,8 +160,8 @@ static int tile_ttm_mgr_init(struct xe_t
 	struct xe_device *xe = tile_to_xe(tile);
 	int err;
 
-	if (tile->mem.vram.usable_size) {
-		err = xe_ttm_vram_mgr_init(tile, &tile->mem.vram.ttm);
+	if (tile->mem.vram) {
+		err = xe_ttm_vram_mgr_init(tile, &tile->mem.vram->ttm);
 		if (err)
 			return err;
 		xe->info.mem_region_mask |= BIT(tile->id) << 1;
@@ -168,7 +196,7 @@ int xe_tile_init_noalloc(struct xe_tile
 	xe_wa_apply_tile_workarounds(tile);
 
 	if (xe->info.has_usm && IS_DGFX(xe))
-		xe_devm_add(tile, &tile->mem.vram);
+		xe_devm_add(tile, tile->mem.vram);
 
 	return xe_tile_sysfs_init(tile);
 }
--- a/drivers/gpu/drm/xe/xe_tile.h
+++ b/drivers/gpu/drm/xe/xe_tile.h
@@ -14,12 +14,14 @@ int xe_tile_init_early(struct xe_tile *t
 int xe_tile_init_noalloc(struct xe_tile *tile);
 int xe_tile_init(struct xe_tile *tile);
 
+int xe_tile_alloc_vram(struct xe_tile *tile);
+
 void xe_tile_migrate_wait(struct xe_tile *tile);
 
 #if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
 static inline struct drm_pagemap *xe_tile_local_pagemap(struct xe_tile *tile)
 {
-	return &tile->mem.vram.dpagemap;
+	return &tile->mem.vram->dpagemap;
 }
 #else
 static inline struct drm_pagemap *xe_tile_local_pagemap(struct xe_tile *tile)
--- a/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c
@@ -25,6 +25,7 @@
 #include "xe_ttm_stolen_mgr.h"
 #include "xe_ttm_vram_mgr.h"
 #include "xe_wa.h"
+#include "xe_vram.h"
 
 struct xe_ttm_stolen_mgr {
 	struct xe_ttm_vram_mgr base;
@@ -82,15 +83,16 @@ static u32 get_wopcm_size(struct xe_devi
 
 static s64 detect_bar2_dgfx(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr)
 {
-	struct xe_tile *tile = xe_device_get_root_tile(xe);
+	struct xe_vram_region *tile_vram = xe_device_get_root_tile(xe)->mem.vram;
+	resource_size_t tile_io_start = xe_vram_region_io_start(tile_vram);
 	struct xe_mmio *mmio = xe_root_tile_mmio(xe);
 	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
 	u64 stolen_size, wopcm_size;
 	u64 tile_offset;
 	u64 tile_size;
 
-	tile_offset = tile->mem.vram.io_start - xe->mem.vram.io_start;
-	tile_size = tile->mem.vram.actual_physical_size;
+	tile_offset = tile_io_start - xe_vram_region_io_start(xe->mem.vram);
+	tile_size = xe_vram_region_actual_physical_size(tile_vram);
 
 	/* Use DSM base address instead for stolen memory */
 	mgr->stolen_base = (xe_mmio_read64_2x32(mmio, DSMBASE) & BDSM_MASK) - tile_offset;
@@ -107,7 +109,7 @@ static s64 detect_bar2_dgfx(struct xe_de
 
 	/* Verify usage fits in the actual resource available */
 	if (mgr->stolen_base + stolen_size <= pci_resource_len(pdev, LMEM_BAR))
-		mgr->io_base = tile->mem.vram.io_start + mgr->stolen_base;
+		mgr->io_base = tile_io_start + mgr->stolen_base;
 
 	/*
 	 * There may be few KB of platform dependent reserved memory at the end
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -340,10 +340,11 @@ int __xe_ttm_vram_mgr_init(struct xe_dev
 int xe_ttm_vram_mgr_init(struct xe_tile *tile, struct xe_ttm_vram_mgr *mgr)
 {
 	struct xe_device *xe = tile_to_xe(tile);
-	struct xe_vram_region *vram = &tile->mem.vram;
+	struct xe_vram_region *vram = tile->mem.vram;
 
 	return __xe_ttm_vram_mgr_init(xe, mgr, XE_PL_VRAM0 + tile->id,
-				      vram->usable_size, vram->io_size,
+				      xe_vram_region_usable_size(vram),
+				      xe_vram_region_io_size(vram),
 				      PAGE_SIZE);
 }
 
@@ -392,7 +393,7 @@ int xe_ttm_vram_mgr_alloc_sgt(struct xe_
 	 */
 	xe_res_first(res, offset, length, &cursor);
 	for_each_sgtable_sg((*sgt), sg, i) {
-		phys_addr_t phys = cursor.start + tile->mem.vram.io_start;
+		phys_addr_t phys = cursor.start + xe_vram_region_io_start(tile->mem.vram);
 		size_t size = min_t(u64, cursor.size, SZ_2G);
 		dma_addr_t addr;
 
--- a/drivers/gpu/drm/xe/xe_vram.c
+++ b/drivers/gpu/drm/xe/xe_vram.c
@@ -3,6 +3,7 @@
  * Copyright © 2021-2024 Intel Corporation
  */
 
+#include <kunit/visibility.h>
 #include <linux/pci.h>
 
 #include <drm/drm_managed.h>
@@ -147,17 +148,17 @@ static int determine_lmem_bar_size(struc
 
 	resize_vram_bar(xe);
 
-	xe->mem.vram.io_start = pci_resource_start(pdev, LMEM_BAR);
-	xe->mem.vram.io_size = pci_resource_len(pdev, LMEM_BAR);
-	if (!xe->mem.vram.io_size)
+	xe->mem.vram->io_start = pci_resource_start(pdev, LMEM_BAR);
+	xe->mem.vram->io_size = pci_resource_len(pdev, LMEM_BAR);
+	if (!xe->mem.vram->io_size)
 		return -EIO;
 
 	/* XXX: Need to change when xe link code is ready */
-	xe->mem.vram.dpa_base = 0;
+	xe->mem.vram->dpa_base = 0;
 
 	/* set up a map to the total memory area. */
-	xe->mem.vram.mapping = devm_ioremap_wc(&pdev->dev, xe->mem.vram.io_start,
-					       xe->mem.vram.io_size);
+	xe->mem.vram->mapping = devm_ioremap_wc(&pdev->dev, xe->mem.vram->io_start,
+						xe->mem.vram->io_size);
 
 	return 0;
 }
@@ -279,10 +280,10 @@ static void vram_fini(void *arg)
 	struct xe_tile *tile;
 	int id;
 
-	xe->mem.vram.mapping = NULL;
+	xe->mem.vram->mapping = NULL;
 
 	for_each_tile(tile, xe, id)
-		tile->mem.vram.mapping = NULL;
+		tile->mem.vram->mapping = NULL;
 }
 
 /**
@@ -318,10 +319,10 @@ int xe_vram_probe(struct xe_device *xe)
 	if (err)
 		return err;
 
-	drm_info(&xe->drm, "VISIBLE VRAM: %pa, %pa\n", &xe->mem.vram.io_start,
-		 &xe->mem.vram.io_size);
+	drm_info(&xe->drm, "VISIBLE VRAM: %pa, %pa\n", &xe->mem.vram->io_start,
+		 &xe->mem.vram->io_size);
 
-	io_size = xe->mem.vram.io_size;
+	io_size = xe->mem.vram->io_size;
 
 	/* tile specific ranges */
 	for_each_tile(tile, xe, id) {
@@ -329,45 +330,105 @@ int xe_vram_probe(struct xe_device *xe)
 		if (err)
 			return err;
 
-		tile->mem.vram.actual_physical_size = tile_size;
-		tile->mem.vram.io_start = xe->mem.vram.io_start + tile_offset;
-		tile->mem.vram.io_size = min_t(u64, vram_size, io_size);
+		tile->mem.vram->actual_physical_size = tile_size;
+		tile->mem.vram->io_start = xe->mem.vram->io_start + tile_offset;
+		tile->mem.vram->io_size = min_t(u64, vram_size, io_size);
 
-		if (!tile->mem.vram.io_size) {
+		if (!tile->mem.vram->io_size) {
 			drm_err(&xe->drm, "Tile without any CPU visible VRAM. Aborting.\n");
 			return -ENODEV;
 		}
 
-		tile->mem.vram.dpa_base = xe->mem.vram.dpa_base + tile_offset;
-		tile->mem.vram.usable_size = vram_size;
-		tile->mem.vram.mapping = xe->mem.vram.mapping + tile_offset;
+		tile->mem.vram->dpa_base = xe->mem.vram->dpa_base + tile_offset;
+		tile->mem.vram->usable_size = vram_size;
+		tile->mem.vram->mapping = xe->mem.vram->mapping + tile_offset;
 
-		if (tile->mem.vram.io_size < tile->mem.vram.usable_size)
+		if (tile->mem.vram->io_size < tile->mem.vram->usable_size)
 			drm_info(&xe->drm, "Small BAR device\n");
-		drm_info(&xe->drm, "VRAM[%u, %u]: Actual physical size %pa, usable size exclude stolen %pa, CPU accessible size %pa\n", id,
-			 tile->id, &tile->mem.vram.actual_physical_size, &tile->mem.vram.usable_size, &tile->mem.vram.io_size);
-		drm_info(&xe->drm, "VRAM[%u, %u]: DPA range: [%pa-%llx], io range: [%pa-%llx]\n", id, tile->id,
-			 &tile->mem.vram.dpa_base, tile->mem.vram.dpa_base + (u64)tile->mem.vram.actual_physical_size,
-			 &tile->mem.vram.io_start, tile->mem.vram.io_start + (u64)tile->mem.vram.io_size);
+		drm_info(&xe->drm,
+			 "VRAM[%u, %u]: Actual physical size %pa, usable size exclude stolen %pa, CPU accessible size %pa\n",
+			 id, tile->id, &tile->mem.vram->actual_physical_size,
+			 &tile->mem.vram->usable_size, &tile->mem.vram->io_size);
+		drm_info(&xe->drm, "VRAM[%u, %u]: DPA range: [%pa-%llx], io range: [%pa-%llx]\n",
+			 id, tile->id, &tile->mem.vram->dpa_base,
+			 tile->mem.vram->dpa_base + (u64)tile->mem.vram->actual_physical_size,
+			 &tile->mem.vram->io_start,
+			 tile->mem.vram->io_start + (u64)tile->mem.vram->io_size);
 
 		/* calculate total size using tile size to get the correct HW sizing */
 		total_size += tile_size;
 		available_size += vram_size;
 
-		if (total_size > xe->mem.vram.io_size) {
+		if (total_size > xe->mem.vram->io_size) {
 			drm_info(&xe->drm, "VRAM: %pa is larger than resource %pa\n",
-				 &total_size, &xe->mem.vram.io_size);
+				 &total_size, &xe->mem.vram->io_size);
 		}
 
 		io_size -= min_t(u64, tile_size, io_size);
 	}
 
-	xe->mem.vram.actual_physical_size = total_size;
+	xe->mem.vram->actual_physical_size = total_size;
 
-	drm_info(&xe->drm, "Total VRAM: %pa, %pa\n", &xe->mem.vram.io_start,
-		 &xe->mem.vram.actual_physical_size);
-	drm_info(&xe->drm, "Available VRAM: %pa, %pa\n", &xe->mem.vram.io_start,
+	drm_info(&xe->drm, "Total VRAM: %pa, %pa\n", &xe->mem.vram->io_start,
+		 &xe->mem.vram->actual_physical_size);
+	drm_info(&xe->drm, "Available VRAM: %pa, %pa\n", &xe->mem.vram->io_start,
 		 &available_size);
 
 	return devm_add_action_or_reset(xe->drm.dev, vram_fini, xe);
 }
+
+/**
+ * xe_vram_region_io_start - Get the IO start of a VRAM region
+ * @vram: the VRAM region
+ *
+ * Return: the IO start of the VRAM region, or 0 if not valid
+ */
+resource_size_t xe_vram_region_io_start(const struct xe_vram_region *vram)
+{
+	return vram ? vram->io_start : 0;
+}
+
+/**
+ * xe_vram_region_io_size - Get the IO size of a VRAM region
+ * @vram: the VRAM region
+ *
+ * Return: the IO size of the VRAM region, or 0 if not valid
+ */
+resource_size_t xe_vram_region_io_size(const struct xe_vram_region *vram)
+{
+	return vram ? vram->io_size : 0;
+}
+
+/**
+ * xe_vram_region_dpa_base - Get the DPA base of a VRAM region
+ * @vram: the VRAM region
+ *
+ * Return: the DPA base of the VRAM region, or 0 if not valid
+ */
+resource_size_t xe_vram_region_dpa_base(const struct xe_vram_region *vram)
+{
+	return vram ? vram->dpa_base : 0;
+}
+
+/**
+ * xe_vram_region_usable_size - Get the usable size of a VRAM region
+ * @vram: the VRAM region
+ *
+ * Return: the usable size of the VRAM region, or 0 if not valid
+ */
+resource_size_t xe_vram_region_usable_size(const struct xe_vram_region *vram)
+{
+	return vram ? vram->usable_size : 0;
+}
+
+/**
+ * xe_vram_region_actual_physical_size - Get the actual physical size of a VRAM region
+ * @vram: the VRAM region
+ *
+ * Return: the actual physical size of the VRAM region, or 0 if not valid
+ */
+resource_size_t xe_vram_region_actual_physical_size(const struct xe_vram_region *vram)
+{
+	return vram ? vram->actual_physical_size : 0;
+}
+EXPORT_SYMBOL_IF_KUNIT(xe_vram_region_actual_physical_size);
--- a/drivers/gpu/drm/xe/xe_vram.h
+++ b/drivers/gpu/drm/xe/xe_vram.h
@@ -6,8 +6,17 @@
 #ifndef _XE_VRAM_H_
 #define _XE_VRAM_H_
 
+#include <linux/types.h>
+
 struct xe_device;
+struct xe_vram_region;
 
 int xe_vram_probe(struct xe_device *xe);
 
+resource_size_t xe_vram_region_io_start(const struct xe_vram_region *vram);
+resource_size_t xe_vram_region_io_size(const struct xe_vram_region *vram);
+resource_size_t xe_vram_region_dpa_base(const struct xe_vram_region *vram);
+resource_size_t xe_vram_region_usable_size(const struct xe_vram_region *vram);
+resource_size_t xe_vram_region_actual_physical_size(const struct xe_vram_region *vram);
+
 #endif



  parent reply	other threads:[~2025-10-21 20:13 UTC|newest]

Thread overview: 173+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-21 19:49 [PATCH 6.17 000/159] 6.17.5-rc1 review Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 001/159] docs: kdoc: handle the obsolescensce of docutils.ErrorString() Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 002/159] Revert "fs: make vfs_fileattr_[get|set] return -EOPNOTSUPP" Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 003/159] PCI: vmd: Override irq_startup()/irq_shutdown() in vmd_init_dev_msi_info() Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 004/159] vfs: Dont leak disconnected dentries on umount Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 005/159] ata: libata-core: relax checks in ata_read_log_directory() Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 006/159] arm64/sysreg: Fix GIC CDEOI instruction encoding Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 007/159] drm/xe/guc: Check GuC running state before deregistering exec queue Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 008/159] ixgbevf: fix getting link speed data for E610 devices Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 009/159] ixgbevf: fix mailbox API compatibility by negotiating supported features Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 010/159] rust: cfi: only 64-bit arm and x86 support CFI_CLANG Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 011/159] smb: client: Fix refcount leak for cifs_sb_tlink Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 012/159] x86/CPU/AMD: Prevent reset reasons from being retained across reboot Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 013/159] slab: reset slab->obj_ext when freeing and it is OBJEXTS_ALLOC_FAIL Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 014/159] Revert "io_uring/rw: drop -EOPNOTSUPP check in __io_complete_rw_common()" Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 015/159] io_uring: protect mem region deregistration Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 016/159] Revert "drm/amd/display: Only restore backlight after amdgpu_dm_init or dm_resume" Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 017/159] r8152: add error handling in rtl8152_driver_init Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 018/159] net: usb: lan78xx: Fix lost EEPROM write timeout error(-ETIMEDOUT) in lan78xx_write_raw_eeprom Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 019/159] KVM: arm64: Prevent access to vCPU events before init Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 020/159] f2fs: fix wrong block mapping for multi-devices Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 021/159] gve: Check valid ts bit on RX descriptor before hw timestamping Greg Kroah-Hartman
2025-10-21 19:49 ` [PATCH 6.17 022/159] jbd2: ensure that all ongoing I/O complete before freeing blocks Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 023/159] ext4: wait for ongoing I/O to " Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 024/159] ext4: detect invalid INLINE_DATA + EXTENTS flag combination Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 025/159] btrfs: fix clearing of BTRFS_FS_RELOC_RUNNING if relocation already running Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 026/159] btrfs: fix memory leak on duplicated memory in the qgroup assign ioctl Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 027/159] btrfs: only set the device specific options after devices are opened Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 028/159] btrfs: fix incorrect readahead expansion length Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 029/159] btrfs: fix memory leaks when rejecting a non SINGLE data profile without an RST Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 030/159] btrfs: do not assert we found block group item when creating free space tree Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 031/159] can: gs_usb: gs_make_candev(): populate net_device->dev_port Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 032/159] can: gs_usb: increase max interface to U8_MAX Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 033/159] cifs: parse_dfs_referrals: prevent oob on malformed input Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 034/159] cxl/acpi: Fix setup of memory resource in cxl_acpi_set_cache_size() Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 035/159] ALSA: hda/intel: Add MSI X870E Tomahawk to denylist Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 036/159] ALSA: hda/realtek: Add quirk entry for HP ZBook 17 G6 Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 037/159] ALSA: hda: cs35l41: Fix NULL pointer dereference in cs35l41_get_acpi_mute_state() Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 038/159] ALSA: hda: Fix missing pointer check in hda_component_manager_init function Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 039/159] drm/sched: Fix potential double free in drm_sched_job_add_resv_dependencies Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 040/159] drm/ast: Blank with VGACR17 sync enable, always clear VGACRB6 sync off Greg Kroah-Hartman
2025-10-22  4:49   ` Thorsten Leemhuis
2025-10-22  5:28     ` Greg Kroah-Hartman
2025-10-22  5:52       ` Peter Schneider
2025-10-22  6:00         ` Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 041/159] drm/amdgpu: use atomic functions with memory barriers for vm fault info Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 042/159] drm/amdgpu: fix gfx12 mes packet status return check Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 043/159] drm/xe: Increase global invalidation timeout to 1000us Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 044/159] perf/core: Fix address filter match with backing files Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 045/159] perf/core: Fix MMAP event path names " Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 046/159] perf/core: Fix MMAP2 event device " Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 047/159] drm/amd: Check whether secure display TA loaded successfully Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 048/159] PM: hibernate: Add pm_hibernation_mode_is_suspend() Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 049/159] drm/amd: Fix hybrid sleep Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 050/159] media: nxp: imx8-isi: m2m: Fix streaming cleanup on release Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 051/159] usb: gadget: Store endpoint pointer in usb_request Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 052/159] usb: gadget: Introduce free_usb_request helper Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 053/159] usb: gadget: f_rndis: Refactor bind path to use __free() Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 054/159] usb: gadget: f_acm: " Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 055/159] usb: gadget: f_ecm: " Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 056/159] usb: gadget: f_ncm: " Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 057/159] HID: multitouch: fix sticky fingers Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 058/159] dax: skip read lock assertion for read-only filesystems Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 059/159] coredump: fix core_pattern input validation Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 060/159] can: m_can: m_can_plat_remove(): add missing pm_runtime_disable() Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 061/159] can: m_can: m_can_handle_state_errors(): fix CAN state transition to Error Active Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 062/159] can: m_can: m_can_chip_config(): bring up interface in correct state Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 063/159] can: m_can: fix CAN state in system PM Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 064/159] net: mtk: wed: add dma mask limitation and GFP_DMA32 for device with more than 4GB DRAM Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 065/159] net: dlink: handle dma_map_single() failure properly Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 066/159] doc: fix seg6_flowlabel path Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 067/159] can: j1939: add missing calls in NETDEV_UNREGISTER notification handler Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 068/159] dpll: zl3073x: Refactor DPLL initialization Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 069/159] dpll: zl3073x: Handle missing or corrupted flash configuration Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 070/159] r8169: fix packet truncation after S4 resume on RTL8168H/RTL8111H Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 071/159] net: phy: bcm54811: Fix GMII/MII/MII-Lite selection Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 072/159] net/ip6_tunnel: Prevent perpetual tunnel growth Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 073/159] idpf: cleanup remaining SKBs in PTP flows Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 074/159] ixgbe: fix too early devlink_free() in ixgbe_remove() Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 075/159] net: phy: realtek: Avoid PHYCR2 access if PHYCR2 not present Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 076/159] amd-xgbe: Avoid spurious link down messages during interface toggle Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 077/159] Octeontx2-af: Fix missing error code in cgx_probe() Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 078/159] usbnet: Fix using smp_processor_id() in preemptible code warnings Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 079/159] tcp: fix tcp_tso_should_defer() vs large RTT Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 080/159] net: airoha: Take into account out-of-order tx completions in airoha_dev_xmit() Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 081/159] selftests: net: check jq command is supported Greg Kroah-Hartman
2025-10-21 19:50 ` [PATCH 6.17 082/159] net: core: fix lockdep splat on device unregister Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 083/159] ksmbd: fix recursive locking in RPC handle list access Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 084/159] tg3: prevent use of uninitialized remote_adv and local_adv variables Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 085/159] tls: trim encrypted message to match the plaintext on short splice Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 086/159] tls: wait for async encrypt in case of error during latter iterations of sendmsg Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 087/159] tls: always set record_type in tls_process_cmsg Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 088/159] tls: wait for pending async decryptions if tls_strp_msg_hold fails Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 089/159] tls: dont rely on tx_work during send() Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 090/159] netdevsim: set the carrier when the device goes up Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 091/159] net: usb: lan78xx: fix use of improperly initialized dev->chipid in lan78xx_reset Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 092/159] drm/panthor: Ensure MCU is disabled on suspend Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 093/159] nvme-multipath: Skip nr_active increments in RETRY disposition Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 094/159] riscv: kprobes: Fix probe address validation Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 095/159] drm/bridge: lt9211: Drop check for last nibble of version register Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 096/159] powerpc/fadump: skip parameter area allocation when fadump is disabled Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 097/159] ASoC: codecs: Fix gain setting ranges for Renesas IDT821034 codec Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 098/159] ASoC: nau8821: Cancel jdet_work before handling jack ejection Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 099/159] ASoC: nau8821: Generalize helper to clear IRQ status Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 100/159] ASoC: nau8821: Consistently clear interrupts before unmasking Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 101/159] ASoC: nau8821: Add DMI quirk to bypass jack debounce circuit Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 102/159] drm/i915/guc: Skip communication warning on reset in progress Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 103/159] drm/i915/frontbuffer: Move bo refcounting intel_frontbuffer_{get,release}() Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 104/159] drm/i915/fb: Fix the set_tiling vs. addfb race, again Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 105/159] drm/amdgpu: add ip offset support for cyan skillfish Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 106/159] drm/amdgpu: add support for cyan skillfish without IP discovery Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 107/159] drm/amdgpu: fix handling of harvesting for ip_discovery firmware Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 108/159] drm/amdgpu: handle wrap around in reemit handling Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 109/159] drm/amdgpu: set an error on all fences from a bad context Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 110/159] drm/amdgpu: drop unused structures in amdgpu_drm.h Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 111/159] drm/amd/powerplay: Fix CIK shutdown temperature Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 112/159] drm/xe: Enable media sampler power gating Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 113/159] cxl/features: Add check for no entries in cxl_feature_info Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 114/159] x86/mm: Fix SMP ordering in switch_mm_irqs_off() Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 115/159] drm/draw: fix color truncation in drm_draw_fill24 Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 116/159] drm/rockchip: vop2: use correct destination rectangle height check Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 117/159] HID: intel-thc-hid: Intel-quickspi: switch first interrupt from level to edge detection Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 118/159] sched/deadline: Stop dl_server before CPU goes offline Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 119/159] sched/fair: Fix pelt lost idle time detection Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 120/159] ALSA: firewire: amdtp-stream: fix enum kernel-doc warnings Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 121/159] accel/qaic: Fix bootlog initialization ordering Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 122/159] accel/qaic: Treat remaining == 0 as error in find_and_map_user_pages() Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 123/159] accel/qaic: Synchronize access to DBC request queue head & tail pointer Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 124/159] nvme-auth: update sc_c in host response Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 125/159] cxl/trace: Subtract to find an hpa_alias0 in cxl_poison events Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 126/159] selftests/bpf: make arg_parsing.c more robust to crashes Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 127/159] ALSA: usb-audio: Fix NULL pointer deference in try_to_register_card Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 128/159] blk-mq: fix stale tag depth for shared sched tags in blk_mq_update_nr_requests() Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 129/159] block: Remove elevator_lock usage from blkg_conf frozen operations Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 130/159] HID: hid-input: only ignore 0 battery events for digitizers Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 131/159] HID: multitouch: fix name of Stylus input devices Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 132/159] ASoC: amd/sdw_utils: avoid NULL deref when devm_kasprintf() fails Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 133/159] drm/xe/evict: drop bogus assert Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 134/159] selftests: arg_parsing: Ensure data is flushed to disk before reading Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 135/159] nvme/tcp: handle tls partially sent records in write_space() Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 136/159] rust: cpufreq: fix formatting Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 137/159] hfsplus: fix slab-out-of-bounds read in hfsplus_strcasecmp() Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 138/159] arm64: debug: always unmask interrupts in el0_softstp() Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 139/159] arm64: cputype: Add Neoverse-V3AE definitions Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 140/159] arm64: errata: Apply workarounds for Neoverse-V3AE Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 141/159] xfs: rename the old_crc variable in xlog_recover_process Greg Kroah-Hartman
2025-10-21 19:51 ` [PATCH 6.17 142/159] xfs: fix log CRC mismatches between i386 and other architectures Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 143/159] NFSD: Rework encoding and decoding of nfsd4_deviceid Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 144/159] NFSD: Minor cleanup in layoutcommit processing Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 145/159] NFSD: Implement large extent array support in pNFS Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 146/159] NFSD: Fix last write offset handling in layoutcommit Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 147/159] phy: cdns-dphy: Store hs_clk_rate and return it Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 148/159] phy: cadence: cdns-dphy: Fix PLL lock and O_CMN_READY polling Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 149/159] NFSD: Define a proc_layoutcommit for the FlexFiles layout type Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 150/159] x86/resctrl: Refactor resctrl_arch_rmid_read() Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 151/159] x86/resctrl: Fix miscount of bandwidth event when reactivating previously unavailable RMID Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 152/159] cxl: Fix match_region_by_range() to use region_res_match_cxl_range() Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 153/159] phy: cadence: cdns-dphy: Update calibration wait time for startup state machine Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 154/159] drm/xe: Use devm_ioremap_wc for VRAM mapping and drop manual unmap Greg Kroah-Hartman
2025-10-21 19:52 ` Greg Kroah-Hartman [this message]
2025-10-21 19:52 ` [PATCH 6.17 156/159] drm/xe: Move struct xe_vram_region to a dedicated header Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 157/159] drm/xe: Unify the initialization of VRAM regions Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 158/159] drm/xe: Move rebar to be done earlier Greg Kroah-Hartman
2025-10-21 19:52 ` [PATCH 6.17 159/159] drm/xe: Dont allow evicting of BOs in same VM in array of VM binds Greg Kroah-Hartman
2025-10-21 21:30 ` [PATCH 6.17 000/159] 6.17.5-rc1 review Holger Hoffstätte
2025-10-21 21:33   ` Mario Limonciello (AMD) (kernel.org)
2025-10-21 21:43     ` Holger Hoffstätte
2025-10-21 21:44       ` Mario Limonciello (AMD) (kernel.org)
2025-10-22  5:32   ` Greg Kroah-Hartman
2025-10-21 22:57 ` Ronald Warsow
2025-10-22  2:48 ` Florian Fainelli
2025-10-22  5:21 ` Hardik Garg
2025-10-22 15:58 ` Shuah Khan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251021195046.903757662@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=lucas.demarchi@intel.com \
    --cc=matthew.auld@intel.com \
    --cc=matthew.brost@intel.com \
    --cc=patches@lists.linux.dev \
    --cc=piotr.piorkowski@intel.com \
    --cc=sashal@kernel.org \
    --cc=satyanarayana.k.v.p@intel.com \
    --cc=stable@vger.kernel.org \
    --cc=stuart.summers@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.