<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p><font size="2"><span style="font-size:10pt"><br>
> +};<br>
> +<br>
> +struct amdgpu_vm_virt {<br>
> +     /* each VM will map on CSA */<br>
> +     struct ttm_validate_buffer csa_tv;<br>
> +     struct amdgpu_bo_va *csa_bo_va;<br>
<br>
Please put that directly into the amdgpu_vm structure.</span></font></p>
<p><br>
</p>
<p><br>
</p>
<p>[ML] they are not a tiny used by bare-metal case so I don't think they should be put into common structure at all.</p>
<p>see we have "struct amdgpu_virt" in "struct amdgpu_device", the same style <br>
</p>
<p><br>
</p>
<p>BR Monk<br>
</p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>发件人:</b> Christian König <deathsimple@vodafone.de><br>
<b>发送时间:</b> 2017年1月9日 18:57:06<br>
<b>收件人:</b> Liu, Monk; amd-gfx@lists.freedesktop.org<br>
<b>主题:</b> Re: [PATCH 2/7] drm/amdgpu:new field members for SRIOV</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Am 09.01.2017 um 09:02 schrieb Monk Liu:<br>
> Change-Id: Ife0eff7b13b8b5946f005a39f6ecb8db1cb72c38<br>
> Signed-off-by: Monk Liu <Monk.Liu@amd.com><br>
> ---<br>
>   drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 19 +++++++++++++++++++<br>
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h   |  2 ++<br>
>   2 files changed, 21 insertions(+)<br>
><br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h<br>
> index 0d821d9..5aa7f0c 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h<br>
> @@ -28,9 +28,28 @@<br>
>   #define AMDGPU_SRIOV_CAPS_ENABLE_IOV   (1 << 1) /* sr-iov is enabled on this GPU */<br>
>   #define AMDGPU_SRIOV_CAPS_IS_VF        (1 << 2) /* this GPU is a virtual function */<br>
>   #define AMDGPU_PASSTHROUGH_MODE        (1 << 3) /* thw whole GPU is pass through for VM */<br>
> +<br>
> +struct amdgpu_vm;<br>
>   /* GPU virtualization */<br>
>   struct amdgpu_virt {<br>
>        uint32_t caps;<br>
> +     uint32_t csa_size;<br>
> +     struct amdgpu_bo *csa_obj;<br>
> +     uint64_t csa_vmid0_addr;<br>
> +     uint64_t gds_vmid0_addr;<br>
> +     int (*allocate_csa)(struct amdgpu_device *adev);<br>
> +     void (*deallocate_csa)(struct amdgpu_device *adev);<br>
> +     int (*map_csa)(struct amdgpu_device *adev, struct amdgpu_vm *vm);<br>
> +     void (*unmap_csa)(struct amdgpu_device *adev, struct amdgpu_vm *vm);<br>
<br>
Why callbacks for this?<br>
<br>
> +};<br>
> +<br>
> +struct amdgpu_vm_virt {<br>
> +     /* each VM will map on CSA */<br>
> +     struct ttm_validate_buffer csa_tv;<br>
> +     struct amdgpu_bo_va *csa_bo_va;<br>
<br>
Please put that directly into the amdgpu_vm structure.<br>
<br>
> +     /* virtual MC address of CSA & GDS for each VM */<br>
> +     uint64_t vm_csa_addr;<br>
> +     uint64_t vm_gds_addr;<br>
<br>
That should be constant, shouldn't it?<br>
<br>
Regards,<br>
Christian.<br>
<br>
>   };<br>
>   <br>
>   #define amdgpu_sriov_enabled(adev) \<br>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h<br>
> index 42a629b..27cbcbc 100644<br>
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h<br>
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h<br>
> @@ -29,6 +29,7 @@<br>
>   #include "gpu_scheduler.h"<br>
>   #include "amdgpu_sync.h"<br>
>   #include "amdgpu_ring.h"<br>
> +#include "amdgpu_virt.h"<br>
>   <br>
>   struct amdgpu_bo_va;<br>
>   struct amdgpu_job;<br>
> @@ -111,6 +112,7 @@ struct amdgpu_vm {<br>
>   <br>
>        /* client id */<br>
>        u64                     client_id;<br>
> +     struct amdgpu_vm_virt   vm_virt;<br>
>   };<br>
>   <br>
>   struct amdgpu_vm_id {<br>
<br>
<br>
</div>
</span></font>
</body>
</html>