All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
To: dri-devel@lists.freedesktop.org
Cc: Karol Wachowski <karol.wachowski@linux.intel.com>,
	Oded Gabbay <ogabbay@kernel.org>,
	Jeffrey Hugo <quic_jhugo@quicinc.com>,
	Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Subject: Re: [PATCH] Revert "accel/ivpu: Use cached buffers for FW loading"
Date: Thu, 19 Oct 2023 08:04:38 +0200	[thread overview]
Message-ID: <20231019060438.GA547256@linux.intel.com> (raw)
In-Reply-To: <20231017121353.532466-1-stanislaw.gruszka@linux.intel.com>

On Tue, Oct 17, 2023 at 02:13:53PM +0200, Stanislaw Gruszka wrote:
> This reverts commit 645d694559cab36fe6a57c717efcfa27d9321396.
> 
> The commit cause issues with memory access from the device side.
> Switch back to write-combined memory mappings until the issues
> will be properly addressed.
> 
> Add extra wmb() needed when boot_params->save_restore_ret_address() is
> modified.
> 
> Reviewed-by: Karol Wachowski <karol.wachowski@linux.intel.com>
> Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Applied to drm-misc-fixes

Thanks
Stanislaw

> ---
>  drivers/accel/ivpu/ivpu_fw.c  | 9 ++++-----
>  drivers/accel/ivpu/ivpu_gem.h | 5 -----
>  2 files changed, 4 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/accel/ivpu/ivpu_fw.c b/drivers/accel/ivpu/ivpu_fw.c
> index 0191cf8e5964..a277bbae78fc 100644
> --- a/drivers/accel/ivpu/ivpu_fw.c
> +++ b/drivers/accel/ivpu/ivpu_fw.c
> @@ -220,8 +220,7 @@ static int ivpu_fw_mem_init(struct ivpu_device *vdev)
>  	if (ret)
>  		return ret;
>  
> -	fw->mem = ivpu_bo_alloc_internal(vdev, fw->runtime_addr, fw->runtime_size,
> -					 DRM_IVPU_BO_CACHED | DRM_IVPU_BO_NOSNOOP);
> +	fw->mem = ivpu_bo_alloc_internal(vdev, fw->runtime_addr, fw->runtime_size, DRM_IVPU_BO_WC);
>  	if (!fw->mem) {
>  		ivpu_err(vdev, "Failed to allocate firmware runtime memory\n");
>  		return -ENOMEM;
> @@ -331,7 +330,7 @@ int ivpu_fw_load(struct ivpu_device *vdev)
>  		memset(start, 0, size);
>  	}
>  
> -	clflush_cache_range(fw->mem->kvaddr, fw->mem->base.size);
> +	wmb(); /* Flush WC buffers after writing fw->mem */
>  
>  	return 0;
>  }
> @@ -433,7 +432,7 @@ void ivpu_fw_boot_params_setup(struct ivpu_device *vdev, struct vpu_boot_params
>  	if (!ivpu_fw_is_cold_boot(vdev)) {
>  		boot_params->save_restore_ret_address = 0;
>  		vdev->pm->is_warmboot = true;
> -		clflush_cache_range(vdev->fw->mem->kvaddr, SZ_4K);
> +		wmb(); /* Flush WC buffers after writing save_restore_ret_address */
>  		return;
>  	}
>  
> @@ -495,7 +494,7 @@ void ivpu_fw_boot_params_setup(struct ivpu_device *vdev, struct vpu_boot_params
>  	boot_params->punit_telemetry_sram_size = ivpu_hw_reg_telemetry_size_get(vdev);
>  	boot_params->vpu_telemetry_enable = ivpu_hw_reg_telemetry_enable_get(vdev);
>  
> -	clflush_cache_range(vdev->fw->mem->kvaddr, SZ_4K);
> +	wmb(); /* Flush WC buffers after writing bootparams */
>  
>  	ivpu_fw_boot_params_print(vdev, boot_params);
>  }
> diff --git a/drivers/accel/ivpu/ivpu_gem.h b/drivers/accel/ivpu/ivpu_gem.h
> index f4130586ff1b..6b0ceda5f253 100644
> --- a/drivers/accel/ivpu/ivpu_gem.h
> +++ b/drivers/accel/ivpu/ivpu_gem.h
> @@ -8,8 +8,6 @@
>  #include <drm/drm_gem.h>
>  #include <drm/drm_mm.h>
>  
> -#define DRM_IVPU_BO_NOSNOOP       0x10000000
> -
>  struct dma_buf;
>  struct ivpu_bo_ops;
>  struct ivpu_file_priv;
> @@ -85,9 +83,6 @@ static inline u32 ivpu_bo_cache_mode(struct ivpu_bo *bo)
>  
>  static inline bool ivpu_bo_is_snooped(struct ivpu_bo *bo)
>  {
> -	if (bo->flags & DRM_IVPU_BO_NOSNOOP)
> -		return false;
> -
>  	return ivpu_bo_cache_mode(bo) == DRM_IVPU_BO_CACHED;
>  }
>  
> -- 
> 2.25.1
> 

      reply	other threads:[~2023-10-19  6:04 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-17 12:13 [PATCH] Revert "accel/ivpu: Use cached buffers for FW loading" Stanislaw Gruszka
2023-10-19  6:04 ` Stanislaw Gruszka [this message]

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=20231019060438.GA547256@linux.intel.com \
    --to=stanislaw.gruszka@linux.intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jacek.lawrynowicz@linux.intel.com \
    --cc=karol.wachowski@linux.intel.com \
    --cc=ogabbay@kernel.org \
    --cc=quic_jhugo@quicinc.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.