[PATCH 02/10] drm/panthor: rename and document lock_region

Chia-I Wu posted 10 patches 2 weeks, 1 day ago
[PATCH 02/10] drm/panthor: rename and document lock_region
Posted by Chia-I Wu 2 weeks, 1 day ago
Rename lock_region to mmu_hw_cmd_lock.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
---
 drivers/gpu/drm/panthor/panthor_mmu.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
index d3af4f79012b4..8600d98842345 100644
--- a/drivers/gpu/drm/panthor/panthor_mmu.c
+++ b/drivers/gpu/drm/panthor/panthor_mmu.c
@@ -545,8 +545,17 @@ static int write_cmd(struct panthor_device *ptdev, u32 as_nr, u32 cmd)
 	return status;
 }
 
-static void lock_region(struct panthor_device *ptdev, u32 as_nr,
-			u64 region_start, u64 size)
+/**
+ * mmu_hw_cmd_lock() - Issue a LOCK command
+ * @ptdev: Device.
+ * @as_nr: AS to issue command to.
+ * @region_start: Start of the region.
+ * @size: Size of the region.
+ *
+ * Issue a LOCK command to invalidate MMU caches and block future transactions
+ * for a region.
+ */
+static void mmu_hw_cmd_lock(struct panthor_device *ptdev, u32 as_nr, u64 region_start, u64 size)
 {
 	u8 region_width;
 	u64 region;
@@ -609,7 +618,7 @@ static int mmu_hw_do_operation_locked(struct panthor_device *ptdev, int as_nr,
 	 * power it up
 	 */
 
-	lock_region(ptdev, as_nr, iova, size);
+	mmu_hw_cmd_lock(ptdev, as_nr, iova, size);
 
 	ret = mmu_hw_wait_ready(ptdev, as_nr);
 	if (ret)
-- 
2.51.0.384.g4c02a37b29-goog
Re: [PATCH 02/10] drm/panthor: rename and document lock_region
Posted by Steven Price an hour ago
On 16/09/2025 22:08, Chia-I Wu wrote:
> Rename lock_region to mmu_hw_cmd_lock.
> 
> Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
> ---
>  drivers/gpu/drm/panthor/panthor_mmu.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> index d3af4f79012b4..8600d98842345 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -545,8 +545,17 @@ static int write_cmd(struct panthor_device *ptdev, u32 as_nr, u32 cmd)
>  	return status;
>  }
>  
> -static void lock_region(struct panthor_device *ptdev, u32 as_nr,
> -			u64 region_start, u64 size)
> +/**
> + * mmu_hw_cmd_lock() - Issue a LOCK command
> + * @ptdev: Device.
> + * @as_nr: AS to issue command to.
> + * @region_start: Start of the region.
> + * @size: Size of the region.
> + *
> + * Issue a LOCK command to invalidate MMU caches and block future transactions
> + * for a region.

The LOCK command doesn't invalidate the caches - that's the UNLOCK
command. LOCK just blocks any memory accesses that target the region.

[I guess the hardware implementation might flush TLBs to achieve the
block, but that's an implementation detail and shouldn't be relied upon].

I'm also not entirely clear what the benefit of this rename is? It's a
static function in a xxx_mmu.c file so it's fairly obvious this going to
MMU HW related. I also feel "_region" in the name makes it obvious that
there is a memory range that is affected by the lock.

Thanks,
Steve

> + */
> +static void mmu_hw_cmd_lock(struct panthor_device *ptdev, u32 as_nr, u64 region_start, u64 size)
>  {
>  	u8 region_width;
>  	u64 region;
> @@ -609,7 +618,7 @@ static int mmu_hw_do_operation_locked(struct panthor_device *ptdev, int as_nr,
>  	 * power it up
>  	 */
>  
> -	lock_region(ptdev, as_nr, iova, size);
> +	mmu_hw_cmd_lock(ptdev, as_nr, iova, size);
>  
>  	ret = mmu_hw_wait_ready(ptdev, as_nr);
>  	if (ret)