We see some increase of spl code size due to partition support (disk/*)
while none of particular partition types (CONFIG_SPL_XXX_PARTITION) are
enabled.
With this patch applied, part.c is no longer included unless really
necessary.

In addition, fix errors in CI build revealed after this change is made.

Fixes: commit 88ca8e26958b ("disk: Add an option for partitions in SPL")
Fixes: commit 17f8cda505e3 ("efi_loader: set partition GUID in device path
        for SIG_TYPE_GUID")
Signed-off-by: AKASHI Takahiro <takahiro.aka...@linaro.org>
---
 cmd/Kconfig                                  |  1 +
 configs/cortina_presidio-asic-emmc_defconfig |  1 -
 disk/Kconfig                                 | 37 ++++++++++----------
 fs/fat/fat.c                                 |  3 +-
 include/part.h                               | 14 ++++++--
 include/sandboxblockdev.h                    |  2 ++
 lib/efi_loader/Kconfig                       |  1 +
 7 files changed, 37 insertions(+), 22 deletions(-)

diff --git a/cmd/Kconfig b/cmd/Kconfig
index d3abe3a06bff..b69c26912568 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1239,6 +1239,7 @@ config CMD_OSD
 
 config CMD_PART
        bool "part"
+       depends on PARTITIONS
        select HAVE_BLOCK_DEVICE
        select PARTITION_UUIDS
        help
diff --git a/configs/cortina_presidio-asic-emmc_defconfig 
b/configs/cortina_presidio-asic-emmc_defconfig
index c22dcef7ec05..c217a00a1cf0 100644
--- a/configs/cortina_presidio-asic-emmc_defconfig
+++ b/configs/cortina_presidio-asic-emmc_defconfig
@@ -18,7 +18,6 @@ CONFIG_LAST_STAGE_INIT=y
 CONFIG_SYS_PROMPT="G3#"
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
-CONFIG_CMD_PART=y
 CONFIG_CMD_WDT=y
 CONFIG_BOOTP_BOOTFILESIZE=y
 CONFIG_CMD_CACHE=y
diff --git a/disk/Kconfig b/disk/Kconfig
index 13700322e976..359af3b27e6d 100644
--- a/disk/Kconfig
+++ b/disk/Kconfig
@@ -2,8 +2,7 @@
 menu "Partition Types"
 
 config PARTITIONS
-       bool "Enable Partition Labels (disklabels) support"
-       default y
+       bool
        help
          Partition Labels (disklabels) Supported:
          Zero or more of the following:
@@ -20,8 +19,7 @@ config PARTITIONS
          as well.
 
 config SPL_PARTITIONS
-       bool "Enable Partition Labels (disklabels) support in SPL"
-       default y if PARTITIONS
+       bool
        select SPL_SPRINTF
        select SPL_STRTO
        help
@@ -30,8 +28,7 @@ config SPL_PARTITIONS
          small amount of size to SPL, typically 500 bytes.
 
 config TPL_PARTITIONS
-       bool "Enable Partition Labels (disklabels) support in TPL"
-       default y if PARTITIONS
+       bool
        select TPL_SPRINTF
        select TPL_STRTO
        help
@@ -41,57 +38,61 @@ config TPL_PARTITIONS
 
 config MAC_PARTITION
        bool "Enable Apple's MacOS partition table"
-       depends on PARTITIONS
+       select PARTITIONS
        help
          Say Y here if you would like to use device under U-Boot which
          were partitioned on a Macintosh.
 
 config SPL_MAC_PARTITION
        bool "Enable Apple's MacOS partition table for SPL"
-       depends on SPL && PARTITIONS
+       depends on SPL
        default y if MAC_PARTITION
+       select SPL_PARTITIONS
 
 config DOS_PARTITION
        bool "Enable MS Dos partition table"
-       depends on PARTITIONS
        default y if DISTRO_DEFAULTS
        default y if x86 || CMD_FAT || USB_STORAGE
+       select PARTITIONS
        help
          traditional on the Intel architecture, USB sticks, etc.
 
 config SPL_DOS_PARTITION
        bool "Enable MS Dos partition table for SPL"
-       depends on SPL && PARTITIONS
+       depends on SPL
        default n if ARCH_SUNXI
        default y if DOS_PARTITION
+       select SPL_PARTITIONS
 
 config ISO_PARTITION
        bool "Enable ISO partition table"
-       depends on PARTITIONS
        default y if DISTRO_DEFAULTS
        default y if MIPS || ARCH_TEGRA
+       select PARTITIONS
 
 config SPL_ISO_PARTITION
        bool "Enable ISO partition table for SPL"
-       depends on SPL && PARTITIONS
+       depends on SPL
+       select SPL_PARTITIONS
 
 config AMIGA_PARTITION
        bool "Enable AMIGA partition table"
-       depends on PARTITIONS
+       select PARTITIONS
        help
          Say Y here if you would like to use device under U-Boot which
          were partitioned under AmigaOS.
 
 config SPL_AMIGA_PARTITION
        bool "Enable AMIGA partition table for SPL"
-       depends on SPL && PARTITIONS
+       depends on SPL
        default y if AMIGA_PARTITION
+       select SPL_PARTITIONS
 
 config EFI_PARTITION
        bool "Enable EFI GPT partition table"
-       depends on PARTITIONS
        default y if DISTRO_DEFAULTS
        default y if ARCH_TEGRA
+       select PARTITIONS
        select LIB_UUID
        help
          Say Y here if you would like to use device under U-Boot which
@@ -128,9 +129,10 @@ config EFI_PARTITION_ENTRIES_OFF
 
 config SPL_EFI_PARTITION
        bool "Enable EFI GPT partition table for SPL"
-       depends on  SPL && PARTITIONS
+       depends on  SPL
        default n if ARCH_SUNXI
        default y if EFI_PARTITION
+       select SPL_PARTITIONS
 
 config PARTITION_UUIDS
        bool "Enable support of UUID for partition"
@@ -143,12 +145,11 @@ config PARTITION_UUIDS
 
 config SPL_PARTITION_UUIDS
        bool "Enable support of UUID for partition in SPL"
-       depends on SPL && PARTITIONS
+       depends on SPL_PARTITIONS
        default y if SPL_EFI_PARTITION
 
 config PARTITION_TYPE_GUID
        bool "Enable support of GUID for partition type"
-       depends on PARTITIONS
        depends on EFI_PARTITION
        help
          Activate the configuration of GUID type
diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index df9ea2c028fc..a7ec1c4b759c 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -95,7 +95,8 @@ int fat_register_device(struct blk_desc *dev_desc, int 
part_no)
        cur_dev = NULL;
 
        /* Read the partition table, if present */
-       if (part_get_info(dev_desc, part_no, &info)) {
+       if (CONFIG_IS_ENABLED(DOS_PARTITION) &&
+           part_get_info(dev_desc, part_no, &info)) {
                if (part_no != 0) {
                        printf("** Partition %d not valid on device %d **\n",
                                        part_no, dev_desc->devnum);
diff --git a/include/part.h b/include/part.h
index 36b76f00563f..612d4c32b5c7 100644
--- a/include/part.h
+++ b/include/part.h
@@ -10,6 +10,7 @@
 #include <ide.h>
 #include <uuid.h>
 #include <linker_lists.h>
+#include <linux/errno.h>
 #include <linux/list.h>
 
 struct block_drvr {
@@ -86,7 +87,7 @@ struct disk_part {
 };
 
 /* Misc _get_dev functions */
-#ifdef CONFIG_PARTITIONS
+#if CONFIG_IS_ENABLED(PARTITIONS)
 /**
  * blk_get_dev() - get a pointer to a block device given its type and number
  *
@@ -275,6 +276,15 @@ static inline int blk_get_device_part_str(const char 
*ifname,
                                          struct disk_partition *info,
                                          int allow_whole_dev)
 { *dev_desc = NULL; return -1; }
+static inline int part_get_info_by_name_type(struct blk_desc *dev_desc,
+                                            const char *name,
+                                            struct disk_partition *info,
+                                            int part_type)
+{ return -ENOENT; }
+static inline int part_get_info_by_name(struct blk_desc *dev_desc,
+                                       const char *name,
+                                       struct disk_partition *info)
+{ return -ENOENT; }
 static inline int
 part_get_info_by_dev_and_name_or_num(const char *dev_iface,
                                     const char *dev_part_str,
@@ -513,7 +523,7 @@ int layout_mbr_partitions(struct disk_partition *p, int 
count,
 
 #endif
 
-#ifdef CONFIG_PARTITIONS
+#if CONFIG_IS_ENABLED(PARTITIONS)
 /**
  * part_driver_get_count() - get partition driver count
  *
diff --git a/include/sandboxblockdev.h b/include/sandboxblockdev.h
index 4ca9554e38a0..dc983f0417b2 100644
--- a/include/sandboxblockdev.h
+++ b/include/sandboxblockdev.h
@@ -26,4 +26,6 @@ struct host_block_dev {
  */
 int host_dev_bind(int dev, char *filename, bool removable);
 
+int host_get_dev_err(int dev, struct blk_desc **blk_devp);
+
 #endif
diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
index 7dc24fbf0aa9..b615abf598b9 100644
--- a/lib/efi_loader/Kconfig
+++ b/lib/efi_loader/Kconfig
@@ -17,6 +17,7 @@ config EFI_LOADER
        select DM_EVENT
        select EVENT_DYNAMIC
        select LIB_UUID
+       select DOS_PARTITION
        select PARTITION_UUIDS
        select HAVE_BLOCK_DEVICE
        select REGEX
-- 
2.33.0

Reply via email to