RE: [PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20

2018-12-09 Thread Quan, Evan
Reviewed-by: Evan Quan 

> -Original Message-
> From: amd-gfx  On Behalf Of
> Feifei Xu
> Sent: 2018年12月10日 14:17
> To: amd-gfx@lists.freedesktop.org
> Cc: Xu, Feifei ; Quan, Evan 
> Subject: [PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20
> 
> On vega20, the job of executing the ASIC_INIT table when posting card is
> moved to psp. Skip the atombios's ASIC_INIT on vega20 when posting card.
> 
> Change-Id: Id1d3c0a0d19296d5ed804de7edf5b09b8d38c0a5
> Signed-off-by: Feifei Xu 
> Tested-by: Candice Li 
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index ef36cc595985..a375d2ac112f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2547,7 +2547,7 @@ int amdgpu_device_init(struct amdgpu_device
> *adev,
>   amdgpu_device_detect_sriov_bios(adev);
> 
>   /* Post card if necessary */
> - if (amdgpu_device_need_post(adev)) {
> + if ((adev->asic_type != CHIP_VEGA20) &&
> amdgpu_device_need_post(adev))
> +{
>   if (!adev->bios) {
>   dev_err(adev->dev, "no vBIOS found\n");
>   r = -EINVAL;
> --
> 2.17.1
> 
> ___
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


[PATCH] drm/amdgpu: kfd_pre_reset outside req_full_gpu cause sriov hang

2018-12-09 Thread wentalou
XGMI hive put kfd_pre_reset into amdgpu_device_lock_adev,
but outside req_full_gpu of sriov.
It would make sriov hang during reset.

Change-Id: I5b3e2a42c77b3b9635419df4470d021df7be34d1
Signed-off-by: Wentao Lou 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 10 ++
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index ef36cc5..659dd40 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3474,14 +3474,16 @@ static void amdgpu_device_lock_adev(struct 
amdgpu_device *adev)
mutex_lock(>lock_reset);
atomic_inc(>gpu_reset_counter);
adev->in_gpu_reset = 1;
-   /* Block kfd */
-   amdgpu_amdkfd_pre_reset(adev);
+   /* Block kfd: SRIOV would do it separately */
+   if (!amdgpu_sriov_vf(adev))
+amdgpu_amdkfd_pre_reset(adev);
 }
 
 static void amdgpu_device_unlock_adev(struct amdgpu_device *adev)
 {
-   /*unlock kfd */
-   amdgpu_amdkfd_post_reset(adev);
+   /*unlock kfd: SRIOV would do it separately */
+   if (!amdgpu_sriov_vf(adev))
+amdgpu_amdkfd_post_reset(adev);
amdgpu_vf_error_trans_all(adev);
adev->in_gpu_reset = 0;
mutex_unlock(>lock_reset);
-- 
2.7.4

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


[PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20

2018-12-09 Thread Feifei Xu
On vega20, the job of executing the ASIC_INIT table when posting card
is moved to psp. Skip the atombios's ASIC_INIT on vega20 when posting
card.

Change-Id: Id1d3c0a0d19296d5ed804de7edf5b09b8d38c0a5
Signed-off-by: Feifei Xu 
Tested-by: Candice Li 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index ef36cc595985..a375d2ac112f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2547,7 +2547,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
amdgpu_device_detect_sriov_bios(adev);
 
/* Post card if necessary */
-   if (amdgpu_device_need_post(adev)) {
+   if ((adev->asic_type != CHIP_VEGA20) && amdgpu_device_need_post(adev)) {
if (!adev->bios) {
dev_err(adev->dev, "no vBIOS found\n");
r = -EINVAL;
-- 
2.17.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20

2018-12-09 Thread Xu, Feifei
I will remove the DRM_INFO and send v2. Thanks.

-Original Message-
From: Quan, Evan  
Sent: Monday, December 10, 2018 1:10 PM
To: Xu, Feifei ; amd-gfx@lists.freedesktop.org
Cc: Xu, Feifei 
Subject: RE: [PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20

Is the DRM_INFO print necessary?
And it will get printed even running on other ASIC.

Regards,
Evan
> -Original Message-
> From: amd-gfx  On Behalf Of 
> Feifei Xu
> Sent: 2018年12月10日 12:46
> To: amd-gfx@lists.freedesktop.org
> Cc: Xu, Feifei 
> Subject: [PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20
> 
> On vega20, the job of executing the ASIC_INIT table when posting card 
> is moved to psp. Skip the atombios's ASIC_INIT on vega20 when posting card.
> 
> Change-Id: Id1d3c0a0d19296d5ed804de7edf5b09b8d38c0a5
> Signed-off-by: Feifei Xu 
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index f2bda76c8e05..310d4eb0536b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2513,8 +2513,9 @@ int amdgpu_device_init(struct amdgpu_device 
> *adev,
>   /* detect if we are with an SRIOV vbios */
>   amdgpu_device_detect_sriov_bios(adev);
> 
> +DRM_INFO("skip posting card using ASIC INIT table in vbios on 
> + vega20\n");
>   /* Post card if necessary */
> - if (amdgpu_device_need_post(adev)) {
> + if ((adev->asic_type != CHIP_VEGA20) &&
> amdgpu_device_need_post(adev))
> +{
>   if (!adev->bios) {
>   dev_err(adev->dev, "no vBIOS found\n");
>   r = -EINVAL;
> --
> 2.17.1
> 
> ___
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH] drm/amdgpu/powerplay: Add special avfs cases for some polaris asics (v3)

2018-12-09 Thread Quan, Evan
Reviewed-by: Evan Quan 

> -Original Message-
> From: amd-gfx  On Behalf Of Alex
> Deucher
> Sent: 2018年12月8日 0:20
> To: amd-gfx@lists.freedesktop.org
> Cc: Deucher, Alexander 
> Subject: [PATCH] drm/amdgpu/powerplay: Add special avfs cases for some
> polaris asics (v3)
> 
> Add special avfs handling for some polaris variants.
> 
> v2: fix copy paste typo.
> v3: fix asic rid check
> 
> Signed-off-by: Alex Deucher 
> ---
>  .../drm/amd/powerplay/smumgr/polaris10_smumgr.c| 54
> ++
>  1 file changed, 54 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> index 94898b2da282..b41281667884 100644
> --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
> @@ -1639,6 +1639,7 @@ static int
> polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)  {
>   struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr-
> >backend);
>   struct polaris10_smumgr *smu_data = (struct polaris10_smumgr
> *)(hwmgr->smu_backend);
> + struct amdgpu_device *adev = hwmgr->adev;
> 
>   SMU74_Discrete_DpmTable  *table = &(smu_data-
> >smc_state_table);
>   int result = 0;
> @@ -1659,6 +1660,59 @@ static int
> polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)
>   result = atomctrl_get_avfs_information(hwmgr, _params);
> 
>   if (0 == result) {
> + if (((adev->pdev->device == 0x67ef) &&
> +  ((adev->pdev->revision == 0xe0) ||
> +   (adev->pdev->revision == 0xe5))) ||
> + ((adev->pdev->device == 0x67ff) &&
> +  ((adev->pdev->revision == 0xcf) ||
> +   (adev->pdev->revision == 0xef) ||
> +   (adev->pdev->revision == 0xff {
> + avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage
> = 1;
> + if ((adev->pdev->device == 0x67ef && adev->pdev-
> >revision == 0xe5) ||
> + (adev->pdev->device == 0x67ff && adev->pdev-
> >revision == 0xef)) {
> + if
> ((avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0 == 0xEA522DD3) &&
> +
> (avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1 == 0x5645A) &&
> +
> (avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2 == 0x33F9E) &&
> +
> (avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 == 0xC5CC) &&
> +
> (avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 == 0x1B1A) &&
> +
> (avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b == 0xFCED)) {
> +
>   avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0   = 0xF718F1D4;
> +
>   avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1   = 0x323FD;
> +
>   avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2   = 0x1E455;
> +
>   avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 = 0;
> +
>   avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 0;
> +
>   avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b  = 0x23;
> + }
> + }
> + } else if (hwmgr->chip_id == CHIP_POLARIS12 && !hwmgr-
> >is_kicker) {
> + avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage
> = 1;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0   =
> 0xF6B024DD;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1   =
> 0x3005E;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2   =
> 0x18A5F;
> + avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 =
> 0x315;
> + avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 =
> 0xFED1;
> + avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b  =
> 0x3B;
> + } else if (((adev->pdev->device == 0x67df) &&
> + ((adev->pdev->revision == 0xe0) ||
> +  (adev->pdev->revision == 0xe3) ||
> +  (adev->pdev->revision == 0xe4) ||
> +  (adev->pdev->revision == 0xe5) ||
> +  (adev->pdev->revision == 0xe7) ||
> +  (adev->pdev->revision == 0xef))) ||
> +((adev->pdev->device == 0x6fdf) &&
> + ((adev->pdev->revision == 0xef) ||
> +  (adev->pdev->revision == 0xff))) {
> + avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage
> = 1;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0   =
> 0xF843B66B;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1   =
> 0x59CB5;
> + avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2   =
> 0x287F;
> + avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 =
> 0;
> + avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 =
> 0xFF23;
> + avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b  =
> 0x58;
> + }
> + }
> +
> + if (0 == result) {
>   table->BTCGB_VDROOP_TABLE[0].a0  =
> PP_HOST_TO_SMC_UL(avfs_params.ulGB_VDROOP_TABLE_CKSON_a0);
>   

[PATCH 3/4] drm/amdgpu: Use dynamical reserved vm size

2018-12-09 Thread Rex Zhu
Use dynamical reserved vm size instand of hardcode.

for gfx/sdma mcbp feature,
reserve AMDGPU_CSA_SIZ * AMDGPU_VM_MAX_NUM_CTX
at the top of VM space.
For sriov, only need to reserve AMDGPU_VA_RESERVED_SIZE
at the top.

v2: refine variable and function name(suggested by christian)

Signed-off-by: Rex Zhu 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c |  8 
 drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h |  1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 10 ++
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c |  4 +---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c  |  2 ++
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h  |  1 +
 drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c   |  3 +--
 drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c   |  3 +--
 drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c   |  3 +--
 9 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
index 567bdda..8d96ff3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
@@ -24,6 +24,14 @@
 
 #include "amdgpu.h"
 
+uint64_t amdgpu_csa_get_reserved_vm_space(struct amdgpu_device *adev)
+{
+   if (amdgpu_sriov_vf(adev))
+   return AMDGPU_VA_RESERVED_SIZE;
+   else
+   return AMDGPU_CSA_SIZE * AMDGPU_VM_MAX_NUM_CTX;
+}
+
 uint64_t amdgpu_csa_vaddr(struct amdgpu_device *adev, uint32_t id)
 {
uint64_t addr = adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h
index a06e8b0..f0d780c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h
@@ -38,6 +38,7 @@
 #define AMDGPU_CSA_GDS_SIZE(64 * 1024)
 #define AMDGPU_CSA_SDMA_SIZE   (1024)
 
+uint64_t amdgpu_csa_get_reserved_vm_space(struct amdgpu_device *adev);
 uint32_t amdgpu_get_total_csa_size(struct amdgpu_device *adev);
 uint64_t amdgpu_csa_vaddr(struct amdgpu_device *adev, uint32_t id);
 int amdgpu_allocate_static_csa(struct amdgpu_device *adev, struct amdgpu_bo 
**bo,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index f4f0021..6c500ad 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -557,6 +557,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
struct ww_acquire_ctx ticket;
struct list_head list, duplicates;
uint64_t va_flags;
+   uint64_t va_reserved, va_top;
int r = 0;
 
if (args->va_address < AMDGPU_VA_RESERVED_SIZE) {
@@ -565,6 +566,15 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
args->va_address, AMDGPU_VA_RESERVED_SIZE);
return -EINVAL;
}
+   va_top = adev->vm_manager.max_pfn * AMDGPU_GPU_PAGE_SIZE;
+   va_reserved = adev->vm_manager.max_user_pfn * AMDGPU_GPU_PAGE_SIZE;
+
+   if (args->va_address > va_reserved && args->va_address < va_top) {
+   dev_dbg(>pdev->dev,
+   "va_address 0x%LX is in reserved area 0x%LX-0x%LX\n",
+   args->va_address, va_reserved, va_top);
+   return -EINVAL;
+   }
 
if (args->va_address >= AMDGPU_GMC_HOLE_START &&
args->va_address < AMDGPU_GMC_HOLE_END) {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index ed440cd..ad1b7e0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -698,8 +698,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void 
*data, struct drm_file
if (amdgpu_sriov_vf(adev))
dev_info.ids_flags |= AMDGPU_IDS_FLAGS_PREEMPTION;
 
-   vm_size = adev->vm_manager.max_pfn * AMDGPU_GPU_PAGE_SIZE;
-   vm_size -= AMDGPU_VA_RESERVED_SIZE;
+   vm_size = adev->vm_manager.max_user_pfn * AMDGPU_GPU_PAGE_SIZE;
 
/* Older VCE FW versions are buggy and can handle only 40bits */
if (adev->vce.fw_version &&
@@ -977,7 +976,6 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct 
drm_file *file_priv)
goto error_vm;
}
 
-
if (amdgpu_sriov_vf(adev)) {
uint64_t csa_addr = amdgpu_csa_vaddr(adev, 1) & 
AMDGPU_GMC_HOLE_MASK;
r = amdgpu_map_static_csa(adev, >vm, adev->virt.csa_obj,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index e73d152..c8e51aa 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -2898,6 +2898,8 @@ void amdgpu_vm_adjust_size(struct amdgpu_device *adev, 
uint32_t min_vm_size,
}
 
adev->vm_manager.max_pfn = (uint64_t)vm_size << 18;
+   adev->vm_manager.max_user_pfn = adev->vm_manager.max_pfn -
+   (amdgpu_csa_get_reserved_vm_space(adev) 
>> 

[PATCH 2/4] drm/amdgpu: Refine function amdgpu_csa_vaddr

2018-12-09 Thread Rex Zhu
on baremetal, driver create csa per ctx.
So add a function argument: ctx_id to
get csa gpu addr.

v2: add SRIOV handling

Signed-off-by: Rex Zhu 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c | 8 ++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h | 2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 4 ++--
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c   | 6 +++---
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c   | 4 ++--
 5 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
index 7e22be7..567bdda 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
@@ -24,11 +24,15 @@
 
 #include "amdgpu.h"
 
-uint64_t amdgpu_csa_vaddr(struct amdgpu_device *adev)
+uint64_t amdgpu_csa_vaddr(struct amdgpu_device *adev, uint32_t id)
 {
uint64_t addr = adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT;
 
-   addr -= AMDGPU_VA_RESERVED_SIZE;
+   if (amdgpu_sriov_vf(adev))
+   addr -= AMDGPU_VA_RESERVED_SIZE;
+   else
+   addr -= AMDGPU_CSA_SIZE * id;
+
addr = amdgpu_gmc_sign_extend(addr);
 
return addr;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h
index cca108e..a06e8b0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h
@@ -39,7 +39,7 @@
 #define AMDGPU_CSA_SDMA_SIZE   (1024)
 
 uint32_t amdgpu_get_total_csa_size(struct amdgpu_device *adev);
-uint64_t amdgpu_csa_vaddr(struct amdgpu_device *adev);
+uint64_t amdgpu_csa_vaddr(struct amdgpu_device *adev, uint32_t id);
 int amdgpu_allocate_static_csa(struct amdgpu_device *adev, struct amdgpu_bo 
**bo,
u32 domain, uint32_t size);
 int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index bc62bf4..ed440cd 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -977,9 +977,9 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct 
drm_file *file_priv)
goto error_vm;
}
 
-   if (amdgpu_sriov_vf(adev)) {
-   uint64_t csa_addr = amdgpu_csa_vaddr(adev) & 
AMDGPU_GMC_HOLE_MASK;
 
+   if (amdgpu_sriov_vf(adev)) {
+   uint64_t csa_addr = amdgpu_csa_vaddr(adev, 1) & 
AMDGPU_GMC_HOLE_MASK;
r = amdgpu_map_static_csa(adev, >vm, adev->virt.csa_obj,
>csa_va, csa_addr, 
AMDGPU_CSA_SIZE);
if (r)
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 52d6a5f..db813c9 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -7110,11 +7110,11 @@ static void gfx_v8_0_ring_emit_ce_meta(struct 
amdgpu_ring *ring)
} ce_payload = {};
 
if (ring->adev->virt.chained_ib_support) {
-   ce_payload_addr = amdgpu_csa_vaddr(ring->adev) +
+   ce_payload_addr = amdgpu_csa_vaddr(ring->adev, 1) +
offsetof(struct vi_gfx_meta_data_chained_ib, 
ce_payload);
cnt_ce = (sizeof(ce_payload.chained) >> 2) + 4 - 2;
} else {
-   ce_payload_addr = amdgpu_csa_vaddr(ring->adev) +
+   ce_payload_addr = amdgpu_csa_vaddr(ring->adev, 1) +
offsetof(struct vi_gfx_meta_data, ce_payload);
cnt_ce = (sizeof(ce_payload.regular) >> 2) + 4 - 2;
}
@@ -7138,7 +7138,7 @@ static void gfx_v8_0_ring_emit_de_meta(struct amdgpu_ring 
*ring)
struct vi_de_ib_state_chained_ib chained;
} de_payload = {};
 
-   csa_addr = amdgpu_csa_vaddr(ring->adev);
+   csa_addr = amdgpu_csa_vaddr(ring->adev, 1);
gds_addr = csa_addr + AMDGPU_CSA_CE_DE_SIZE;
if (ring->adev->virt.chained_ib_support) {
de_payload.chained.gds_backup_addrlo = lower_32_bits(gds_addr);
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index ae47110..f685718 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -4244,7 +4244,7 @@ static void gfx_v9_0_ring_emit_ce_meta(struct amdgpu_ring 
*ring)
int cnt;
 
cnt = (sizeof(ce_payload) >> 2) + 4 - 2;
-   csa_addr = amdgpu_csa_vaddr(ring->adev);
+   csa_addr = amdgpu_csa_vaddr(ring->adev, 1);
 
amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, cnt));
amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(2) |
@@ -4262,7 +4262,7 @@ static void gfx_v9_0_ring_emit_de_meta(struct amdgpu_ring 
*ring)
uint64_t csa_addr, gds_addr;
int cnt;
 
-   csa_addr = amdgpu_csa_vaddr(ring->adev);
+   csa_addr = amdgpu_csa_vaddr(ring->adev, 1);
gds_addr = csa_addr + AMDGPU_CSA_CE_DE_SIZE;

[PATCH 1/4] drm/amdgpu: Add defines for CSA buffer

2018-12-09 Thread Rex Zhu
divide the reserve 128k CSA into four parts
1. first 4k for gfx CE/DE metadata
2. next 64K for GDS backup storage
3. next 28K reserved
4. last 32K for SDMA

Signed-off-by: Rex Zhu 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h | 11 +++
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c   |  2 +-
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c   |  2 +-
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h
index 524b443..cca108e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.h
@@ -25,7 +25,18 @@
 #ifndef AMDGPU_CSA_MANAGER_H
 #define AMDGPU_CSA_MANAGER_H
 
+/* Reserve 128k CSA for MCBP feature
+ * first 4k for gfx CE/DE metadata
+ * next 64K for GDS backup storage.
+ * 28K reserved
+ * last 32K for SDMA
+ */
+
 #define AMDGPU_CSA_SIZE(128 * 1024)
+#define AMDGPU_CSA_SDMA_OFFSET (96 * 1024)
+#define AMDGPU_CSA_CE_DE_SIZE  (4 * 1024)
+#define AMDGPU_CSA_GDS_SIZE(64 * 1024)
+#define AMDGPU_CSA_SDMA_SIZE   (1024)
 
 uint32_t amdgpu_get_total_csa_size(struct amdgpu_device *adev);
 uint64_t amdgpu_csa_vaddr(struct amdgpu_device *adev);
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index a9c853a..52d6a5f 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -7139,7 +7139,7 @@ static void gfx_v8_0_ring_emit_de_meta(struct amdgpu_ring 
*ring)
} de_payload = {};
 
csa_addr = amdgpu_csa_vaddr(ring->adev);
-   gds_addr = csa_addr + 4096;
+   gds_addr = csa_addr + AMDGPU_CSA_CE_DE_SIZE;
if (ring->adev->virt.chained_ib_support) {
de_payload.chained.gds_backup_addrlo = lower_32_bits(gds_addr);
de_payload.chained.gds_backup_addrhi = upper_32_bits(gds_addr);
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index 7556716..ae47110 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -4263,7 +4263,7 @@ static void gfx_v9_0_ring_emit_de_meta(struct amdgpu_ring 
*ring)
int cnt;
 
csa_addr = amdgpu_csa_vaddr(ring->adev);
-   gds_addr = csa_addr + 4096;
+   gds_addr = csa_addr + AMDGPU_CSA_CE_DE_SIZE;
de_payload.gds_backup_addrlo = lower_32_bits(gds_addr);
de_payload.gds_backup_addrhi = upper_32_bits(gds_addr);
 
-- 
1.9.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


[PATCH 4/4] drm/amdgpu: Delay map sriov csa addr to ctx init

2018-12-09 Thread Rex Zhu
1. meet kfd request
2. align with baremetal, in baremetal, driver map csa
   when ctx init.

v2: Add csa_va test when rmv
do not need to free virt.csa_obj when map failed
update comments about function amdgpu_map_static_csa

Signed-off-by: Rex Zhu 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c |  4 ++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 17 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 14 --
 3 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
index 8d96ff3..369fdf0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_csa.c
@@ -68,10 +68,10 @@ void amdgpu_free_static_csa(struct amdgpu_bo **bo)
 }
 
 /*
- * amdgpu_map_static_csa should be called during amdgpu_vm_init
+ * amdgpu_map_static_csa should be called during ctx_init
  * it maps virtual address amdgpu_csa_vaddr() to this VM, and each command
  * submission of GFX should use this virtual address within META_DATA init
- * package to support SRIOV gfx preemption.
+ * package to support gfx preemption.
  */
 int amdgpu_map_static_csa(struct amdgpu_device *adev, struct amdgpu_vm *vm,
  struct amdgpu_bo *bo, struct amdgpu_bo_va **bo_va,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
index d85184b..aab3516 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
@@ -69,11 +69,13 @@ static int amdgpu_ctx_priority_permit(struct drm_file *filp,
 }
 
 static int amdgpu_ctx_init(struct amdgpu_device *adev,
+  struct amdgpu_fpriv *fpriv,
   enum drm_sched_priority priority,
   struct drm_file *filp,
   struct amdgpu_ctx *ctx)
 {
unsigned num_entities = amdgput_ctx_total_num_entities();
+   uint64_t csa_addr;
unsigned i, j;
int r;
 
@@ -87,6 +89,19 @@ static int amdgpu_ctx_init(struct amdgpu_device *adev,
memset(ctx, 0, sizeof(*ctx));
ctx->adev = adev;
 
+   if (amdgpu_sriov_vf(adev)) {
+   if (!fpriv->csa_va) {
+   csa_addr = amdgpu_csa_vaddr(adev, 1) & 
AMDGPU_GMC_HOLE_MASK;
+   r = amdgpu_map_static_csa(adev, >vm,
+   adev->virt.csa_obj,
+   >csa_va,
+   csa_addr,
+   AMDGPU_CSA_SIZE);
+   if (r)
+   return -EINVAL;
+   }
+   }
+
ctx->fences = kcalloc(amdgpu_sched_jobs * num_entities,
  sizeof(struct dma_fence*), GFP_KERNEL);
if (!ctx->fences)
@@ -256,7 +271,7 @@ static int amdgpu_ctx_alloc(struct amdgpu_device *adev,
}
 
*id = (uint32_t)r;
-   r = amdgpu_ctx_init(adev, priority, filp, ctx);
+   r = amdgpu_ctx_init(adev, fpriv, priority, filp, ctx);
if (r) {
idr_remove(>ctx_handles, *id);
*id = 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index ad1b7e0..467a727 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -976,14 +976,6 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct 
drm_file *file_priv)
goto error_vm;
}
 
-   if (amdgpu_sriov_vf(adev)) {
-   uint64_t csa_addr = amdgpu_csa_vaddr(adev, 1) & 
AMDGPU_GMC_HOLE_MASK;
-   r = amdgpu_map_static_csa(adev, >vm, adev->virt.csa_obj,
-   >csa_va, csa_addr, 
AMDGPU_CSA_SIZE);
-   if (r)
-   goto error_vm;
-   }
-
mutex_init(>bo_list_lock);
idr_init(>bo_list_handles);
 
@@ -1041,8 +1033,10 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev,
if (amdgpu_sriov_vf(adev)) {
/* TODO: how to handle reserve failure */
BUG_ON(amdgpu_bo_reserve(adev->virt.csa_obj, true));
-   amdgpu_vm_bo_rmv(adev, fpriv->csa_va);
-   fpriv->csa_va = NULL;
+   if (fpriv->csa_va) {
+   amdgpu_vm_bo_rmv(adev, fpriv->csa_va);
+   fpriv->csa_va = NULL;
+   }
amdgpu_bo_unreserve(adev->virt.csa_obj);
}
 
-- 
1.9.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20

2018-12-09 Thread Quan, Evan
Is the DRM_INFO print necessary?
And it will get printed even running on other ASIC.

Regards,
Evan
> -Original Message-
> From: amd-gfx  On Behalf Of
> Feifei Xu
> Sent: 2018年12月10日 12:46
> To: amd-gfx@lists.freedesktop.org
> Cc: Xu, Feifei 
> Subject: [PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20
> 
> On vega20, the job of executing the ASIC_INIT table when posting card is
> moved to psp. Skip the atombios's ASIC_INIT on vega20 when posting card.
> 
> Change-Id: Id1d3c0a0d19296d5ed804de7edf5b09b8d38c0a5
> Signed-off-by: Feifei Xu 
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index f2bda76c8e05..310d4eb0536b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2513,8 +2513,9 @@ int amdgpu_device_init(struct amdgpu_device
> *adev,
>   /* detect if we are with an SRIOV vbios */
>   amdgpu_device_detect_sriov_bios(adev);
> 
> +DRM_INFO("skip posting card using ASIC INIT table in vbios on
> + vega20\n");
>   /* Post card if necessary */
> - if (amdgpu_device_need_post(adev)) {
> + if ((adev->asic_type != CHIP_VEGA20) &&
> amdgpu_device_need_post(adev))
> +{
>   if (!adev->bios) {
>   dev_err(adev->dev, "no vBIOS found\n");
>   r = -EINVAL;
> --
> 2.17.1
> 
> ___
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20

2018-12-09 Thread Xu, Feifei
Tested on pro stack vega20.

-Original Message-
From: amd-gfx  On Behalf Of Feifei Xu
Sent: Monday, December 10, 2018 12:46 PM
To: amd-gfx@lists.freedesktop.org
Cc: Xu, Feifei 
Subject: [PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20

On vega20, the job of executing the ASIC_INIT table when posting card is moved 
to psp. Skip the atombios's ASIC_INIT on vega20 when posting card.

Change-Id: Id1d3c0a0d19296d5ed804de7edf5b09b8d38c0a5
Signed-off-by: Feifei Xu 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index f2bda76c8e05..310d4eb0536b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2513,8 +2513,9 @@ int amdgpu_device_init(struct amdgpu_device *adev,
/* detect if we are with an SRIOV vbios */
amdgpu_device_detect_sriov_bios(adev);
 
+DRM_INFO("skip posting card using ASIC INIT table in vbios on 
+ vega20\n");
/* Post card if necessary */
-   if (amdgpu_device_need_post(adev)) {
+   if ((adev->asic_type != CHIP_VEGA20) && amdgpu_device_need_post(adev)) 
+{
if (!adev->bios) {
dev_err(adev->dev, "no vBIOS found\n");
r = -EINVAL;
--
2.17.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


[PATCH] drm/amdgpu:skip ASIC_INIT when posting card on vg20

2018-12-09 Thread Feifei Xu
On vega20, the job of executing the ASIC_INIT table when posting card
is moved to psp. Skip the atombios's ASIC_INIT on vega20 when posting
card.

Change-Id: Id1d3c0a0d19296d5ed804de7edf5b09b8d38c0a5
Signed-off-by: Feifei Xu 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index f2bda76c8e05..310d4eb0536b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2513,8 +2513,9 @@ int amdgpu_device_init(struct amdgpu_device *adev,
/* detect if we are with an SRIOV vbios */
amdgpu_device_detect_sriov_bios(adev);
 
+DRM_INFO("skip posting card using ASIC INIT table in vbios on vega20\n");
/* Post card if necessary */
-   if (amdgpu_device_need_post(adev)) {
+   if ((adev->asic_type != CHIP_VEGA20) && amdgpu_device_need_post(adev)) {
if (!adev->bios) {
dev_err(adev->dev, "no vBIOS found\n");
r = -EINVAL;
-- 
2.17.1

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


RE: [PATCH -next] drm/amdgpu: remove set but not used variable 'grbm_soft_reset'

2018-12-09 Thread Zhou, David(ChunMing)


> -Original Message-
> From: YueHaibing 
> Sent: Saturday, December 08, 2018 11:01 PM
> To: Deucher, Alexander ; Koenig, Christian
> ; Zhou, David(ChunMing)
> ; airl...@linux.ie; Liu, Leo ;
> Gao, Likun ; Panariti, David
> ; S, Shirish ; Zhu, Rex
> ; Grodzovsky, Andrey 
> Cc: YueHaibing ; amd-gfx@lists.freedesktop.org;
> dri-de...@lists.freedesktop.org; linux-ker...@vger.kernel.org; kernel-
> janit...@vger.kernel.org
> Subject: [PATCH -next] drm/amdgpu: remove set but not used variable
> 'grbm_soft_reset'
> 
> Fixes gcc '-Wunused-but-set-variable' warning:
> 
> drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c: In function
> 'gfx_v8_0_pre_soft_reset':
> drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c:4950:27: warning:
>  variable 'srbm_soft_reset' set but not used [-Wunused-but-set-variable]
> 
> drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c: In function
> 'gfx_v8_0_post_soft_reset':
> drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c:5054:27: warning:
>  variable 'srbm_soft_reset' set but not used [-Wunused-but-set-variable]
> 
> It never used since introduction in commit d31a501ead7f ("drm/amdgpu: add
> pre_soft_reset ip func") and e4ae0fc33631 ("drm/amdgpu: implement
> gfx8 post_soft_reset")
> 
> Signed-off-by: YueHaibing 

Reviewed-by: Chunming Zhou 

> ---
>  drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 6 ++
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> index 1454fc3..8c1ba79 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> @@ -4947,14 +4947,13 @@ static bool gfx_v8_0_check_soft_reset(void
> *handle)  static int gfx_v8_0_pre_soft_reset(void *handle)  {
>   struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> - u32 grbm_soft_reset = 0, srbm_soft_reset = 0;
> + u32 grbm_soft_reset = 0;
> 
>   if ((!adev->gfx.grbm_soft_reset) &&
>   (!adev->gfx.srbm_soft_reset))
>   return 0;
> 
>   grbm_soft_reset = adev->gfx.grbm_soft_reset;
> - srbm_soft_reset = adev->gfx.srbm_soft_reset;
> 
>   /* stop the rlc */
>   adev->gfx.rlc.funcs->stop(adev);
> @@ -5051,14 +5050,13 @@ static int gfx_v8_0_soft_reset(void *handle)
> static int gfx_v8_0_post_soft_reset(void *handle)  {
>   struct amdgpu_device *adev = (struct amdgpu_device *)handle;
> - u32 grbm_soft_reset = 0, srbm_soft_reset = 0;
> + u32 grbm_soft_reset = 0;
> 
>   if ((!adev->gfx.grbm_soft_reset) &&
>   (!adev->gfx.srbm_soft_reset))
>   return 0;
> 
>   grbm_soft_reset = adev->gfx.grbm_soft_reset;
> - srbm_soft_reset = adev->gfx.srbm_soft_reset;
> 
>   if (REG_GET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET,
> SOFT_RESET_CP) ||
>   REG_GET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET,
> SOFT_RESET_CPF) ||
> 
> 

___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


Kernel panic on Xorg init with new HP F.19 BIOS and kernel 4.19

2018-12-09 Thread Bráulio Bhavamitra
Hi all,

After using windows to update my HP Envy x360 from BIOS to F.17 to F.19 I
can't boot using kernel 4.19 anymore. FYI that update increased shared
memory from 256mb to 1gb.
BIOS downloaded from
https://support.hp.com/us-en/drivers/selfservice/hp-envy-15-bq000-x360-convertible-pc/15551149


Caps lock starts blinking on lightdm init and get a black screen, looks
like a kernel panic.

Kernel 4.18.20 boots normally.

Call trace from journalctl -xe -b -1:
dez 09 16:25:01 braulio-laptop kernel: mousedev: PS/2 mouse device common
for all mice
dez 09 16:25:01 braulio-laptop kernel: amdgpu: [powerplay] dpm has been
enabled
dez 09 16:25:01 braulio-laptop kernel: [drm] DM_PPLIB: values for Invalid
clock
dez 09 16:25:01 braulio-laptop kernel: [drm] DM_PPLIB: 0 in kHz
dez 09 16:25:01 braulio-laptop kernel: [drm] DM_PPLIB: 40 in
kHz
dez 09 16:25:01 braulio-laptop kernel: [drm] DM_PPLIB: 933000 in
kHz
dez 09 16:25:01 braulio-laptop kernel: [drm] DM_PPLIB: 1067000 in
kHz
dez 09 16:25:01 braulio-laptop kernel: WARNING: CPU: 6 PID: 377 at
drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dcn_calcs.c:1372
dcn_bw_update_from_pplib+0x16b/0x280 [amdgpu]
dez 09 16:25:01 braulio-laptop kernel: Modules linked in: joydev mousedev
amdkfd amd_iommu_v2 amdgpu(+) btusb arc4 ext4 btrtl btbcm uvcvideo btintel
r8822be(C) videobuf2_vmalloc hp_wmi vid>
dez 09 16:25:01 braulio-laptop kernel:  sysimgblt k10temp soundcore rfkill
fb_sys_fops memstick i2c_piix4 battery ac hp_accel wmi lis3lv02d i2c_scmi
i2c_hid input_polldev pinctrl_amd hp_wi>
dez 09 16:25:01 braulio-laptop kernel: CPU: 6 PID: 377 Comm: systemd-udevd
Tainted: G C OE 4.19.4-arch1-1-ARCH #1
dez 09 16:25:01 braulio-laptop kernel: Hardware name: HP HP ENVY x360
Convertible 15m-bq1xx/83C6, BIOS F.19 11/05/2018
dez 09 16:25:01 braulio-laptop kernel: RIP:
0010:dcn_bw_update_from_pplib+0x16b/0x280 [amdgpu]
dez 09 16:25:01 braulio-laptop kernel: Code: d8 ca d8 f1 d9 5a 50 8b 44 fc
14 49 8b 94 24 78 01 00 00 48 89 04 24 df 2c 24 d8 f1 db 42 78 de c9 de ca
de f9 d9 5a 4c eb 02 <0f> 0b 48 89 da >
dez 09 16:25:01 braulio-laptop kernel: RSP: 0018:bb5e83c6f7d8 EFLAGS:
00010246
dez 09 16:25:01 braulio-laptop kernel: RAX: 0001 RBX:
bb5e83c6f838 RCX: 
dez 09 16:25:01 braulio-laptop kernel: RDX:  RSI:
0004 RDI: 
dez 09 16:25:01 braulio-laptop kernel: RBP: a121c508dd80 R08:
0001 R09: 03d7
dez 09 16:25:01 braulio-laptop kernel: R10: 0004 R11:
 R12: a121bbb31000
dez 09 16:25:01 braulio-laptop kernel: R13: a121bbb80f60 R14:
a121bbb31000 R15: 
dez 09 16:25:01 braulio-laptop kernel: FS:  76033cc0()
GS:a121cbb8() knlGS:
dez 09 16:25:01 braulio-laptop kernel: CS:  0010 DS:  ES:  CR0:
80050033
dez 09 16:25:01 braulio-laptop kernel: CR2: 7fffa9e0 CR3:
000504058000 CR4: 003406e0
dez 09 16:25:01 braulio-laptop kernel: Call Trace:
dez 09 16:25:01 braulio-laptop kernel:  dcn10_create_resource_pool+0x781/0x9d0
[amdgpu]
dez 09 16:25:01 braulio-laptop kernel:  ?
dal_aux_engine_dce110_create+0x39/0x70 [amdgpu]
dez 09 16:25:01 braulio-laptop kernel:  dc_create_resource_pool+0x42/0x180
[amdgpu]
dez 09 16:25:01 braulio-laptop kernel:  ? __kmalloc+0x18f/0x220
dez 09 16:25:01 braulio-laptop kernel:  dc_create+0x20f/0x620 [amdgpu]
dez 09 16:25:01 braulio-laptop kernel:  ?
amdgpu_cgs_create_device+0x23/0x50 [amdgpu]
dez 09 16:25:01 braulio-laptop kernel:  dm_hw_init+0xc8/0x130 [amdgpu]
dez 09 16:25:01 braulio-laptop kernel:
amdgpu_device_init.cold.14+0x1041/0x1253
[amdgpu]
dez 09 16:25:01 braulio-laptop kernel:  amdgpu_driver_load_kms+0x86/0x2c0
[amdgpu]
dez 09 16:25:01 braulio-laptop kernel:  drm_dev_register+0x109/0x140 [drm]
dez 09 16:25:01 braulio-laptop kernel:  amdgpu_pci_probe+0x13c/0x1c0
[amdgpu]
dez 09 16:25:01 braulio-laptop kernel:  ?
_raw_spin_unlock_irqrestore+0x20/0x40
dez 09 16:25:01 braulio-laptop kernel:  local_pci_probe+0x41/0x90
dez 09 16:25:01 braulio-laptop kernel:  pci_device_probe+0x189/0x1a0
dez 09 16:25:01 braulio-laptop kernel:  really_probe+0x235/0x3a0
dez 09 16:25:01 braulio-laptop kernel:  driver_probe_device+0xb3/0xf0
dez 09 16:25:01 braulio-laptop kernel:  __driver_attach+0xdd/0x110
dez 09 16:25:01 braulio-laptop kernel:  ? driver_probe_device+0xf0/0xf0
dez 09 16:25:01 braulio-laptop kernel:  ? driver_probe_device+0xf0/0xf0
dez 09 16:25:01 braulio-laptop kernel:  bus_for_each_dev+0x76/0xc0
dez 09 16:25:01 braulio-laptop kernel:  bus_add_driver+0x152/0x230
dez 09 16:25:01 braulio-laptop kernel:  ? 0xc1475000
dez 09 16:25:01 braulio-laptop kernel:  driver_register+0x6b/0xb0
dez 09 16:25:01 braulio-laptop kernel:  ? 0xc1475000
dez 09 16:25:01 braulio-laptop kernel:  do_one_initcall+0x46/0x1f5
dez 09 16:25:01 braulio-laptop kernel:  ? kmem_cache_alloc_trace+0x176/0x1d0
dez 09 16:25:01 

Re: Freezes back with Raven Ridge 2500u and 4.19

2018-12-09 Thread Bráulio Bhavamitra
Crashes seems related to newer Mesa, as disabling 3d effects on Kwin fixed
them all.

Reproduced problems with old and new firmware, latest 4.17, 4.18 and 4.19
kernels

Now having another issue with new B19 update from HP

Best,
Bráulio

On Thu, Nov 1, 2018 at 9:33 AM Bráulio Bhavamitra 
wrote:

> Hi all,
>
> 4.18 was completely stable with Raven Ridge 2500u and kernel opt
> idle=nomwait
>
> Now with 4.19 I'm having freezes again. And this time I cannot reboot
> using SysReq + B shortcut.
> Also the mouse is always frozen as well, before most of the times I could
> move it.
>
> Best Regards,
> Bráulio
>
___
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx