All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Auld <matthew.auld@intel.com>
To: Jia Yao <jia.yao@intel.com>, intel-xe@lists.freedesktop.org
Cc: gwan-gyeong.mun@intel.com, stable@vger.kernel.org
Subject: Re: [PATCH v5 2/3] drm/xe/guc_ads: allocate UM queues in VRAM on dGFX
Date: Fri, 31 Jul 2026 12:21:11 +0100	[thread overview]
Message-ID: <7f5c825b-970e-4d15-a9b9-8d91c37f2b7f@intel.com> (raw)
In-Reply-To: <20260730232712.517989-3-jia.yao@intel.com>

On 31/07/2026 00:27, Jia Yao wrote:
> On pre-Xe3p dGFX, GuC/GAM accesses the UM queue ring buffer via
> base_dpa, which is interpreted as a raw device-physical address.
> Unlike the GGTT PTE, there is no flag to indicate whether base_dpa
> points to VRAM or system memory; the hardware assumes it is always
> a VRAM address.
> 
> A separate SYSTEM BO for the UM queues would cause xe_bo_main_addr()
> to return an IOMMU IOVA instead of a true VRAM device-physical address.
> GuC then accesses the wrong memory and forwards all-zero fault
> descriptors to the driver (Faulted Address = 0, ASID = 0).
> 
> Use XE_BO_FLAG_VRAM_IF_DGFX() so that on dGFX the UM queue BO is
> placed directly in VRAM and xe_bo_main_addr() returns the correct
> device-physical address.
> 
> Fixes: dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")

Fixes: 9c57bc08652a ("drm/xe/lnl: Drop force_probe requirement")
Cc: <stable@vger.kernel.org> # v6.12+

> Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: Jia Yao <jia.yao@intel.com>
> ---
>   drivers/gpu/drm/xe/xe_guc.c     |  6 ------
>   drivers/gpu/drm/xe/xe_guc_ads.c | 11 ++++++-----
>   2 files changed, 6 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 4f132bf8539d..4286bd05c686 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -732,12 +732,6 @@ static int xe_guc_realloc_post_hwconfig(struct xe_guc *guc)
>   	if (ret)
>   		return ret;
>   
> -	if (guc->ads.um_queue_bo) {
> -		ret = xe_managed_bo_reinit_in_vram(xe, tile, &guc->ads.um_queue_bo);
> -		if (ret)
> -			return ret;
> -	}
> -
>   	return 0;
>   }
>   
> diff --git a/drivers/gpu/drm/xe/xe_guc_ads.c b/drivers/gpu/drm/xe/xe_guc_ads.c
> index 3b6e1c45a0e9..57a0614dbf6d 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ads.c
> +++ b/drivers/gpu/drm/xe/xe_guc_ads.c
> @@ -461,11 +461,12 @@ int xe_guc_ads_init(struct xe_guc_ads *ads)
>   		size_t um_size = roundup_pow_of_two(GUC_UM_QUEUE_SIZE *
>   						    GUC_UM_HW_QUEUE_MAX);

If you want we could also make the roundup conditional on igpu, to save 
a small amount of VRAM.

Either way,
Reviewed-by: Matthew Auld <matthew.auld@intel.com>

>   
> -		bo = xe_managed_bo_create_pin_map(xe, tile, um_size,
> -						  XE_BO_FLAG_SYSTEM |
> -						  XE_BO_FLAG_GGTT |
> -						  XE_BO_FLAG_GGTT_INVALIDATE |
> -						  XE_BO_FLAG_PINNED_NORESTORE);
> +		u32 um_flags = XE_BO_FLAG_VRAM_IF_DGFX(tile) |
> +			       XE_BO_FLAG_GGTT |
> +			       XE_BO_FLAG_GGTT_INVALIDATE |
> +			       XE_BO_FLAG_PINNED_NORESTORE;
> +
> +		bo = xe_managed_bo_create_pin_map(xe, tile, um_size, um_flags);
>   		if (IS_ERR(bo))
>   			return PTR_ERR(bo);
>   


  reply	other threads:[~2026-07-31 11:21 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-22  5:34 [PATCH v3 0/1] drm/xe/guc_ads: allocate UM queues in a separate UC BO Jia Yao
2026-07-22  5:34 ` [PATCH v3 1/1] " Jia Yao
2026-07-22  9:18   ` Matthew Auld
2026-07-22 23:00   ` Gwan-gyeong Mun
2026-07-22  5:41 ` ✗ CI.checkpatch: warning for " Patchwork
2026-07-22  5:42 ` ✓ CI.KUnit: success " Patchwork
2026-07-22  6:17 ` ✓ Xe.CI.BAT: " Patchwork
2026-07-22 20:20 ` ✓ Xe.CI.FULL: " Patchwork
2026-07-30  0:47 ` [PATCH v4 0/1] " Jia Yao
2026-07-30  0:47   ` [PATCH v4 1/3] drm/xe/guc_ads: allocate UM queues in a separate BO Jia Yao
2026-07-30 10:28     ` Matthew Auld
2026-07-30  0:47   ` [PATCH v4 2/3] drm/xe/guc_ads: allocate UM queues in VRAM on dGFX Jia Yao
2026-07-30 10:51     ` Matthew Auld
2026-07-30 13:12       ` Matthew Auld
2026-07-31  0:52         ` Matthew Brost
2026-07-30  0:47   ` [PATCH v4 3/3] drm/xe/guc_ads: use uncached mapping for UM queue BO Jia Yao
2026-07-30  9:49     ` Michal Wajdeczko
2026-07-30 11:23     ` Matthew Auld
2026-07-30 23:27 ` [PATCH v5 0/1] drm/xe/guc_ads: allocate UM queues in a separate UC BO Jia Yao
2026-07-30 23:27   ` [PATCH v5 1/3] drm/xe/guc_ads: allocate UM queues in a separate BO Jia Yao
2026-07-31 11:12     ` Matthew Auld
2026-07-30 23:27   ` [PATCH v5 2/3] drm/xe/guc_ads: allocate UM queues in VRAM on dGFX Jia Yao
2026-07-31 11:21     ` Matthew Auld [this message]
2026-07-30 23:27   ` [PATCH v5 3/3] drm/xe/guc_ads: use uncached mapping for UM queue BO Jia Yao
2026-07-31 11:22     ` Matthew Auld

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=7f5c825b-970e-4d15-a9b9-8d91c37f2b7f@intel.com \
    --to=matthew.auld@intel.com \
    --cc=gwan-gyeong.mun@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=jia.yao@intel.com \
    --cc=stable@vger.kernel.org \
    /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.