<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Yeah, exactly. This is controlling PCIe bus request behavior and routing.<br>
<br>
That is something we never ever want to expose to userspace.<br>
<br>
Christian.<br>
<br>
Am 08.08.19 um 18:09 schrieb Deucher, Alexander:<br>
</div>
<blockquote type="cite" cite="mid:BN6PR12MB1809D2F0A97155733CA3FC6EF7D70@BN6PR12MB1809.namprd12.prod.outlook.com">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
The snoop bit is for snooping the CPU cache by the GPU when doing system memory mappings.<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
Alex<br>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> amd-gfx
<a class="moz-txt-link-rfc2396E" href="mailto:amd-gfx-bounces@lists.freedesktop.org">
<amd-gfx-bounces@lists.freedesktop.org></a> on behalf of Zeng, Oak <a class="moz-txt-link-rfc2396E" href="mailto:Oak.Zeng@amd.com">
<Oak.Zeng@amd.com></a><br>
<b>Sent:</b> Thursday, August 8, 2019 12:02 PM<br>
<b>To:</b> Koenig, Christian <a class="moz-txt-link-rfc2396E" href="mailto:Christian.Koenig@amd.com">
<Christian.Koenig@amd.com></a>; <a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">
amd-gfx@lists.freedesktop.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:amd-gfx@lists.freedesktop.org">
<amd-gfx@lists.freedesktop.org></a><br>
<b>Cc:</b> Kuehling, Felix <a class="moz-txt-link-rfc2396E" href="mailto:Felix.Kuehling@amd.com">
<Felix.Kuehling@amd.com></a>; Keely, Sean <a class="moz-txt-link-rfc2396E" href="mailto:Sean.Keely@amd.com">
<Sean.Keely@amd.com></a><br>
<b>Subject:</b> RE: [PATCH 1/5] drm/amdgpu: Extends amdgpu vm definitions</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Hi Christian,<br>
<br>
My understanding of the snoop bit (C bit in the PTE definition) is to probe remote gpu's L2 cache after this gpu write remote gpu's vram. Is this correct? I am still checking this point with HW engineer.<br>
<br>
If this is correct, then the snooping (or probing) is a way to maintain certain cache coherency when one memory is access by two masters (for example two gpu). With existing AMDGPU_VM_ definitions in amdgpu_drm.h, how does a user implement the request like:
 I want a trunk of vram physically in a remote gpu, I want to access it in a uncached way (AMDGPU_VM_MTYPE_UC) but I want to probe remote gpu's cache when I modify this vram.<br>
<br>
From PTE's definition, both C bit and mtype and R/W/X bits are just flags to enable user to program page access behavior. Any detail reason why we shouldn't expose the snoop bit?<br>
<br>
Regards,<br>
Oak<br>
<br>
-----Original Message-----<br>
From: Christian König <a class="moz-txt-link-rfc2396E" href="mailto:ckoenig.leichtzumerken@gmail.com">
<ckoenig.leichtzumerken@gmail.com></a> <br>
Sent: Wednesday, August 7, 2019 4:42 AM<br>
To: Zeng, Oak <a class="moz-txt-link-rfc2396E" href="mailto:Oak.Zeng@amd.com"><Oak.Zeng@amd.com></a>;
<a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
Cc: Kuehling, Felix <a class="moz-txt-link-rfc2396E" href="mailto:Felix.Kuehling@amd.com">
<Felix.Kuehling@amd.com></a>; Koenig, Christian <a class="moz-txt-link-rfc2396E" href="mailto:Christian.Koenig@amd.com">
<Christian.Koenig@amd.com></a>; Keely, Sean <a class="moz-txt-link-rfc2396E" href="mailto:Sean.Keely@amd.com">
<Sean.Keely@amd.com></a><br>
Subject: Re: [PATCH 1/5] drm/amdgpu: Extends amdgpu vm definitions<br>
<br>
Am 07.08.19 um 04:31 schrieb Zeng, Oak:<br>
> Add definition of all supported mtypes. The RW mtype is recently <br>
> introduced for arcturus. Also add definition for the <br>
> cachable/snoopable bit, which will be used later in this series.<br>
><br>
> Change-Id: I96fc9bb4b6b1e62bdc10b600d8aaa6a802128d6d<br>
> Signed-off-by: Oak Zeng <a class="moz-txt-link-rfc2396E" href="mailto:Oak.Zeng@amd.com">
<Oak.Zeng@amd.com></a><br>
> ---<br>
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 9 +++++++--<br>
>   include/uapi/drm/amdgpu_drm.h          | 4 ++++<br>
>   2 files changed, 11 insertions(+), 2 deletions(-)<br>
><br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h <br>
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h<br>
> index 2eda3a8..7a77477 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h<br>
> @@ -80,8 +80,13 @@ struct amdgpu_bo_list_entry;<br>
>   #define AMDGPU_PTE_MTYPE_VG10(a)    ((uint64_t)(a) << 57)<br>
>   #define AMDGPU_PTE_MTYPE_VG10_MASK  AMDGPU_PTE_MTYPE_VG10(3ULL)<br>
>   <br>
> -#define AMDGPU_MTYPE_NC 0<br>
> -#define AMDGPU_MTYPE_CC 2<br>
> +enum amdgpu_mtype {<br>
> +     AMDGPU_MTYPE_NC = 0,<br>
> +     AMDGPU_MTYPE_WC = 1,<br>
> +     AMDGPU_MTYPE_CC = 2,<br>
> +     AMDGPU_MTYPE_UC = 3,<br>
> +     AMDGPU_MTYPE_RW = 4,<br>
> +};<br>
>   <br>
>   #define AMDGPU_PTE_DEFAULT_ATC  (AMDGPU_PTE_SYSTEM      \<br>
>                                   | AMDGPU_PTE_SNOOPED    \<br>
> diff --git a/include/uapi/drm/amdgpu_drm.h <br>
> b/include/uapi/drm/amdgpu_drm.h index ca97b68..2889663 100644<br>
> --- a/include/uapi/drm/amdgpu_drm.h<br>
> +++ b/include/uapi/drm/amdgpu_drm.h<br>
> @@ -503,6 +503,10 @@ struct drm_amdgpu_gem_op {<br>
>   #define AMDGPU_VM_MTYPE_CC          (3 << 5)<br>
>   /* Use UC MTYPE instead of default MTYPE */<br>
>   #define AMDGPU_VM_MTYPE_UC          (4 << 5)<br>
> +/* Use RW MTYPE instead of default MTYPE */<br>
> +#define AMDGPU_VM_MTYPE_RW           (5 << 5)<br>
<br>
> +/* Cacheable/snoopable */<br>
> +#define AMDGPU_VM_PAGE_SNOOPED               (1 << 9)<br>
<br>
That's a rather big NAK. Cache snooping is not something userspace is allowed to be aware of.<br>
<br>
Christian.<br>
<br>
>   <br>
>   struct drm_amdgpu_gem_va {<br>
>        /** GEM object handle */<br>
<br>
_______________________________________________<br>
amd-gfx mailing list<br>
<a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx" moz-do-not-send="true">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a></div>
</span></font></div>
</blockquote>
<br>
</body>
</html>