Re: [PATCH v2 01/15] Revert "dm: SMEM (Shared memory) uclass"

2026-05-18 Thread Neil Armstrong

On 5/4/26 20:57, Casey Connolly wrote:

SMEM is a highly Qualcomm specific interface, while having a dedicated
UCLASS for it offers a nice abstraction, for things like memory layout
parsing we need to use it before the driver model is available.

Therefore, it doesn't make sense to fit SMEM into the driver model.
Instead let's adopt a model closer to Linux, and parse SMEM really early
during boot (as soon as we have the FDT).

This reverts commit 7b384eccc785b596f68448b155cbda26df57fb23.

Signed-off-by: Casey Connolly 
---
  arch/arm/Kconfig   |  1 -
  drivers/Kconfig|  2 --
  drivers/Makefile   |  1 -
  drivers/smem/Kconfig   | 25 -
  drivers/smem/Makefile  |  7 
  drivers/smem/smem-uclass.c | 46 
  include/dm/uclass-id.h |  1 -
  include/smem.h | 90 --
  8 files changed, 173 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index f624675eadf8..dadb18e0b8cd 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1141,9 +1141,8 @@ config ARCH_SNAPDRAGON
select POWER_DOMAIN
select GPIO_EXTRA_HEADER
select MSM_SMEM
select OF_CONTROL
-   select SMEM
select SPMI
select BOARD_LATE_INIT
select OF_BOARD
select SAVE_PREV_BL_FDT_ADDR if !ENABLE_ARM_SOC_BOOT0_HOOK
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 47606ddc6c8b..aa293df37c57 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -123,10 +123,8 @@ source "drivers/scsi/Kconfig"
  source "drivers/serial/Kconfig"
  
  source "drivers/sm/Kconfig"
  
-source "drivers/smem/Kconfig"

-
  source "drivers/sound/Kconfig"
  
  source "drivers/soc/Kconfig"
  
diff --git a/drivers/Makefile b/drivers/Makefile

index 43d0ba332818..ca3e87ffb102 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -118,9 +118,8 @@ obj-y += pwm/
  obj-y += reset/
  obj-y += input/
  obj-y += iommu/
  # SOC specific infrastructure drivers.
-obj-y += smem/
  obj-y += thermal/
  obj-$(CONFIG_TEE) += tee/
  obj-$(CONFIG_ARM_FFA_TRANSPORT) += firmware/arm-ffa/
  obj-y += axi/
diff --git a/drivers/smem/Kconfig b/drivers/smem/Kconfig
deleted file mode 100644
index e5d7dcc81b17..
--- a/drivers/smem/Kconfig
+++ /dev/null
@@ -1,25 +0,0 @@
-menuconfig SMEM
-   bool  "SMEM (Shared Memory mamanger) support"
-
-if SMEM
-
-config SANDBOX_SMEM
-bool "Sandbox Shared Memory Manager (SMEM)"
-depends on SANDBOX && DM
-help
-  enable SMEM support for sandbox. This is an emulation of a real SMEM
-  manager.
-  The sandbox driver allocates a shared memory from the heap and
-  initialzies it on start.
-
-config MSM_SMEM
-bool "Qualcomm Shared Memory Manager (SMEM)"
-depends on DM
-depends on ARCH_SNAPDRAGON || ARCH_IPQ40XX
-select DEVRES
-help
-  Enable support for the Qualcomm Shared Memory Manager.
-  The driver provides an interface to items in a heap shared among all
-  processors in a Qualcomm platform.
-
-endif # menu "SMEM Support"
diff --git a/drivers/smem/Makefile b/drivers/smem/Makefile
deleted file mode 100644
index af3e9b50883c..
--- a/drivers/smem/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0+
-#
-# Makefile for the U-Boot SMEM interface drivers
-
-obj-$(CONFIG_SANDBOX_SMEM) += sandbox_smem.o
-obj-$(CONFIG_SMEM) += smem-uclass.o
-obj-$(CONFIG_MSM_SMEM) += msm_smem.o
diff --git a/drivers/smem/smem-uclass.c b/drivers/smem/smem-uclass.c
deleted file mode 100644
index 4dea5cc4bf1c..
--- a/drivers/smem/smem-uclass.c
+++ /dev/null
@@ -1,46 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (c) 2018 Ramon Fried 
- */
-
-#define LOG_CATEGORY UCLASS_SMEM
-
-#include 
-#include 
-
-int smem_alloc(struct udevice *dev, unsigned int host,
-   unsigned int item, size_t size)
-{
-   struct smem_ops *ops = smem_get_ops(dev);
-
-   if (!ops->alloc)
-   return -ENOSYS;
-
-   return ops->alloc(host, item, size);
-}
-
-void *smem_get(struct udevice *dev, unsigned int host,
-   unsigned int item, size_t *size)
-{
-   struct smem_ops *ops = smem_get_ops(dev);
-
-   if (!ops->get)
-   return NULL;
-
-   return ops->get(host, item, size);
-}
-
-int smem_get_free_space(struct udevice *dev, unsigned int host)
-{
-   struct smem_ops *ops = smem_get_ops(dev);
-
-   if (!ops->get_free_space)
-   return -ENOSYS;
-
-   return ops->get_free_space(host);
-}
-
-UCLASS_DRIVER(smem) = {
-   .id = UCLASS_SMEM,
-   .name   = "smem",
-};
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index 36b5d87c304f..fe0aae2720ca 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -133,9 +133,8 @@ enum uclass_id {
UCLASS_SCMI_BASE,   /* Interface for SCMI Base protocol */
UCLASS_SCSI,/* SCSI device */

Re: [PATCH v2 01/15] Revert "dm: SMEM (Shared memory) uclass"

2026-05-07 Thread Casey Connolly



On 07/05/2026 17:31, Simon Glass wrote:
> Hi Casey,
> 
> On Mon, 4 May 2026 at 12:57, Casey Connolly  wrote:
>>
>> SMEM is a highly Qualcomm specific interface, while having a dedicated
>> UCLASS for it offers a nice abstraction, for things like memory layout
>> parsing we need to use it before the driver model is available.
> 
> Do you mean before or after relocation?

Before, we actually use it and read the memory map in
board_fdt_blob_setup() since we support the usecase where you chainload
U-Boot from ABL but with its own DTB baked in. This allows you to leave
the original Android DTB and read the memory map from it while using a
proper DTB for U-Boot without having to hardcode the memory map.

Basically it exists because some Android phones have awful bootloaders
that will crash or break stuff if you don't have very specific arbitrary
things in your devicetree.

> 
>>
>> Therefore, it doesn't make sense to fit SMEM into the driver model.
>> Instead let's adopt a model closer to Linux, and parse SMEM really early
>> during boot (as soon as we have the FDT).
>>
>> This reverts commit 7b384eccc785b596f68448b155cbda26df57fb23.
>>
>> Signed-off-by: Casey Connolly 
>> ---
>>  arch/arm/Kconfig   |  1 -
>>  drivers/Kconfig|  2 --
>>  drivers/Makefile   |  1 -
>>  drivers/smem/Kconfig   | 25 -
>>  drivers/smem/Makefile  |  7 
>>  drivers/smem/smem-uclass.c | 46 
>>  include/dm/uclass-id.h |  1 -
>>  include/smem.h | 90 
>> --
>>  8 files changed, 173 deletions(-)
> 
> [..]
> 
> Regards,
> Simon

-- 
// Casey (she/her)



Re: [PATCH v2 01/15] Revert "dm: SMEM (Shared memory) uclass"

2026-05-07 Thread Simon Glass
Hi Casey,

On Mon, 4 May 2026 at 12:57, Casey Connolly  wrote:
>
> SMEM is a highly Qualcomm specific interface, while having a dedicated
> UCLASS for it offers a nice abstraction, for things like memory layout
> parsing we need to use it before the driver model is available.

Do you mean before or after relocation?

>
> Therefore, it doesn't make sense to fit SMEM into the driver model.
> Instead let's adopt a model closer to Linux, and parse SMEM really early
> during boot (as soon as we have the FDT).
>
> This reverts commit 7b384eccc785b596f68448b155cbda26df57fb23.
>
> Signed-off-by: Casey Connolly 
> ---
>  arch/arm/Kconfig   |  1 -
>  drivers/Kconfig|  2 --
>  drivers/Makefile   |  1 -
>  drivers/smem/Kconfig   | 25 -
>  drivers/smem/Makefile  |  7 
>  drivers/smem/smem-uclass.c | 46 
>  include/dm/uclass-id.h |  1 -
>  include/smem.h | 90 
> --
>  8 files changed, 173 deletions(-)

[..]

Regards,
Simon


Re: [PATCH v2 01/15] Revert "dm: SMEM (Shared memory) uclass"

2026-05-05 Thread Sumit Garg
On Mon, May 04, 2026 at 08:57:29PM +0200, Casey Connolly wrote:
> SMEM is a highly Qualcomm specific interface, while having a dedicated
> UCLASS for it offers a nice abstraction, for things like memory layout
> parsing we need to use it before the driver model is available.
> 
> Therefore, it doesn't make sense to fit SMEM into the driver model.
> Instead let's adopt a model closer to Linux, and parse SMEM really early
> during boot (as soon as we have the FDT).
> 
> This reverts commit 7b384eccc785b596f68448b155cbda26df57fb23.
> 
> Signed-off-by: Casey Connolly 
> ---
>  arch/arm/Kconfig   |  1 -
>  drivers/Kconfig|  2 --
>  drivers/Makefile   |  1 -
>  drivers/smem/Kconfig   | 25 -
>  drivers/smem/Makefile  |  7 
>  drivers/smem/smem-uclass.c | 46 
>  include/dm/uclass-id.h |  1 -
>  include/smem.h | 90 
> --
>  8 files changed, 173 deletions(-)

Reviewed-by: Sumit Garg 

-Sumit

> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index f624675eadf8..dadb18e0b8cd 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -1141,9 +1141,8 @@ config ARCH_SNAPDRAGON
>   select POWER_DOMAIN
>   select GPIO_EXTRA_HEADER
>   select MSM_SMEM
>   select OF_CONTROL
> - select SMEM
>   select SPMI
>   select BOARD_LATE_INIT
>   select OF_BOARD
>   select SAVE_PREV_BL_FDT_ADDR if !ENABLE_ARM_SOC_BOOT0_HOOK
> diff --git a/drivers/Kconfig b/drivers/Kconfig
> index 47606ddc6c8b..aa293df37c57 100644
> --- a/drivers/Kconfig
> +++ b/drivers/Kconfig
> @@ -123,10 +123,8 @@ source "drivers/scsi/Kconfig"
>  source "drivers/serial/Kconfig"
>  
>  source "drivers/sm/Kconfig"
>  
> -source "drivers/smem/Kconfig"
> -
>  source "drivers/sound/Kconfig"
>  
>  source "drivers/soc/Kconfig"
>  
> diff --git a/drivers/Makefile b/drivers/Makefile
> index 43d0ba332818..ca3e87ffb102 100644
> --- a/drivers/Makefile
> +++ b/drivers/Makefile
> @@ -118,9 +118,8 @@ obj-y += pwm/
>  obj-y += reset/
>  obj-y += input/
>  obj-y += iommu/
>  # SOC specific infrastructure drivers.
> -obj-y += smem/
>  obj-y += thermal/
>  obj-$(CONFIG_TEE) += tee/
>  obj-$(CONFIG_ARM_FFA_TRANSPORT) += firmware/arm-ffa/
>  obj-y += axi/
> diff --git a/drivers/smem/Kconfig b/drivers/smem/Kconfig
> deleted file mode 100644
> index e5d7dcc81b17..
> --- a/drivers/smem/Kconfig
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -menuconfig SMEM
> - bool  "SMEM (Shared Memory mamanger) support"
> -
> -if SMEM
> -
> -config SANDBOX_SMEM
> -bool "Sandbox Shared Memory Manager (SMEM)"
> -depends on SANDBOX && DM
> -help
> -  enable SMEM support for sandbox. This is an emulation of a real SMEM
> -  manager.
> -  The sandbox driver allocates a shared memory from the heap and
> -  initialzies it on start.
> -
> -config MSM_SMEM
> -bool "Qualcomm Shared Memory Manager (SMEM)"
> -depends on DM
> -depends on ARCH_SNAPDRAGON || ARCH_IPQ40XX
> -select DEVRES
> -help
> -  Enable support for the Qualcomm Shared Memory Manager.
> -  The driver provides an interface to items in a heap shared among all
> -  processors in a Qualcomm platform.
> -
> -endif # menu "SMEM Support"
> diff --git a/drivers/smem/Makefile b/drivers/smem/Makefile
> deleted file mode 100644
> index af3e9b50883c..
> --- a/drivers/smem/Makefile
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0+
> -#
> -# Makefile for the U-Boot SMEM interface drivers
> -
> -obj-$(CONFIG_SANDBOX_SMEM) += sandbox_smem.o
> -obj-$(CONFIG_SMEM) += smem-uclass.o
> -obj-$(CONFIG_MSM_SMEM) += msm_smem.o
> diff --git a/drivers/smem/smem-uclass.c b/drivers/smem/smem-uclass.c
> deleted file mode 100644
> index 4dea5cc4bf1c..
> --- a/drivers/smem/smem-uclass.c
> +++ /dev/null
> @@ -1,46 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -/*
> - * Copyright (c) 2018 Ramon Fried 
> - */
> -
> -#define LOG_CATEGORY UCLASS_SMEM
> -
> -#include 
> -#include 
> -
> -int smem_alloc(struct udevice *dev, unsigned int host,
> - unsigned int item, size_t size)
> -{
> - struct smem_ops *ops = smem_get_ops(dev);
> -
> - if (!ops->alloc)
> - return -ENOSYS;
> -
> - return ops->alloc(host, item, size);
> -}
> -
> -void *smem_get(struct udevice *dev, unsigned int host,
> - unsigned int item, size_t *size)
> -{
> - struct smem_ops *ops = smem_get_ops(dev);
> -
> - if (!ops->get)
> - return NULL;
> -
> - return ops->get(host, item, size);
> -}
> -
> -int smem_get_free_space(struct udevice *dev, unsigned int host)
> -{
> - struct smem_ops *ops = smem_get_ops(dev);
> -
> - if (!ops->get_free_space)
> - return -ENOSYS;
> -
> - return ops->get_free_space(host);
> -}
> -
> -UCLASS_DRIVER(smem) = {
> - .id = UCLASS_SMEM,
> - .name   = "smem",
> -};
> diff --git