Message ID | 1544016218-32640-1-git-send-email-trini@konsulko.com |
---|---|
State | Accepted |
Commit | 91ff6865629c81b8643b4ef6130e3e2130c60400 |
Delegated to: | Tom Rini |
Headers | show |
Series | [U-Boot] blk: Rework guard around part_init call | expand |
On Wed, 5 Dec 2018 at 06:23, Tom Rini <trini@konsulko.com> wrote: > > The function part_init() will only be built when we have both > CONFIG_PARTITIONS and CONFIG_HAVE_BLOCK_DEVICE set. Protect the call to > this function with both of these tests now. > > Cc: Simon Glass <sjg@chromium.org> > Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > Cc: Michal Simek <michal.simek@xilinx.com> > Cc: York Sun <york.sun@nxp.com> > Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com> > Cc: Mingkai Hu <mingkai.hu@nxp.com> > Cc: Stefan Roese <sr@denx.de> > Cc: Marek Behún <marek.behun@nic.cz> > Cc: Vanessa Maegima <vanessa.maegima@nxp.com> > Cc: Eugen Hristev <eugen.hristev@microchip.com> > Cc: Adam Ford <aford173@gmail.com> > Cc: Jagan Teki <jagan@amarulasolutions.com> > Cc: Tom Warren <twarren@nvidia.com> > Cc: Stephen Warren <swarren@nvidia.com> > Cc: Vitaly Andrianov <vitalya@ti.com> > Signed-off-by: Tom Rini <trini@konsulko.com> > --- > Changes in v2: > - rockchip: evb-rk3036 and kylin-rk3036 are both targets that do not use > CONFIG_SPL_FRAMEWORK but also do not fall into the legacy PowerPC SPL > case. In order to avoid fail to builds on these platforms they must > now turn off CONFIG_SPL_BLK, which they weren't using before, it was > being discarded at link time. > - Re-work common/spl/Kconfig and then various Makefiles to slightly > clear up the logic of when we do and don't need both disk/part.o and > drivers/block/blk-uclass.o. This is in fact not the greatest but it's > all I could come up with to cover all the cases we have today. > - Because of the above, add a note to the CONFIG_BLK migration to note > that once we are complete there we need to revisit the symbols I used > above as once that migration is done we should be able to rely on just > BLK and maybe PARTITIONS. Indeed. > - Actually build-test the world and confirm the overall results are > fairly sane. This results in pushing a few platforms that are using > SPL and DM into using SPL_BLK now. > - This also results in a number of 64bit rockchip, nxp and zynqmp > platforms that have been enabling CONFIG_SPL_DOS_PARTITION / > CONFIG_SPL_ISO_PARTITION now linking it. > - On the 32bit ARM side, some Marvell, i.MX, ateml, TI, Tegra, zynq and > rockchip platforms do the same. > > The full build log can be seen at: > https://gist.github.com/trini/e3e73afec629bbda2625102120c2a9db > --- > common/spl/Kconfig | 3 +++ > configs/evb-rk3036_defconfig | 1 + > configs/kylin-rk3036_defconfig | 1 + > doc/driver-model/MIGRATION.txt | 4 +++- > drivers/Makefile | 3 +-- > drivers/block/Makefile | 2 ++ > drivers/block/blk-uclass.c | 2 +- > scripts/Makefile.spl | 4 +++- > 8 files changed, 15 insertions(+), 5 deletions(-) Reviewed-by: Simon Glass <sjg@chromium.org>
On Wed, Dec 05, 2018 at 08:23:38AM -0500, Tom Rini wrote: > The function part_init() will only be built when we have both > CONFIG_PARTITIONS and CONFIG_HAVE_BLOCK_DEVICE set. Protect the call to > this function with both of these tests now. > > Cc: Simon Glass <sjg@chromium.org> > Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > Cc: Michal Simek <michal.simek@xilinx.com> > Cc: York Sun <york.sun@nxp.com> > Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com> > Cc: Mingkai Hu <mingkai.hu@nxp.com> > Cc: Stefan Roese <sr@denx.de> > Cc: Marek Behún <marek.behun@nic.cz> > Cc: Vanessa Maegima <vanessa.maegima@nxp.com> > Cc: Eugen Hristev <eugen.hristev@microchip.com> > Cc: Adam Ford <aford173@gmail.com> > Cc: Jagan Teki <jagan@amarulasolutions.com> > Cc: Tom Warren <twarren@nvidia.com> > Cc: Stephen Warren <swarren@nvidia.com> > Cc: Vitaly Andrianov <vitalya@ti.com> > Signed-off-by: Tom Rini <trini@konsulko.com> > Reviewed-by: Simon Glass <sjg@chromium.org> Applied to u-boot/master, thanks!
diff --git a/common/spl/Kconfig b/common/spl/Kconfig index 0ddbffc7d1c6..cab7220c9ace 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -449,6 +449,7 @@ config SPL_LIBCOMMON_SUPPORT config SPL_LIBDISK_SUPPORT bool "Support disk partitions" + select PARTITIONS help Enable support for disk partitions within SPL. 'Disk' is something of a misnomer as it includes non-spinning media such as flash (as @@ -480,6 +481,7 @@ config SPL_DM_MAILBOX config SPL_MMC_SUPPORT bool "Support MMC" depends on MMC + select HAVE_BLOCK_DEVICE help Enable support for MMC (Multimedia Card) within SPL. This enables the MMC protocol implementation and allows any enabled drivers to @@ -754,6 +756,7 @@ config SPL_THERMAL config SPL_USB_HOST_SUPPORT bool "Support USB host drivers" + select HAVE_BLOCK_DEVICE help Enable access to USB (Universal Serial Bus) host devices so that SPL can load U-Boot from a connected USB peripheral, such as a USB diff --git a/configs/evb-rk3036_defconfig b/configs/evb-rk3036_defconfig index 787d6f95c1bb..439e69138636 100644 --- a/configs/evb-rk3036_defconfig +++ b/configs/evb-rk3036_defconfig @@ -32,6 +32,7 @@ CONFIG_SPL_PARTITION_UUIDS=y CONFIG_DEFAULT_DEVICE_TREE="rk3036-sdk" CONFIG_REGMAP=y CONFIG_SYSCON=y +# CONFIG_SPL_BLK is not set CONFIG_CLK=y CONFIG_FASTBOOT_FLASH=y CONFIG_FASTBOOT_FLASH_MMC_DEV=0 diff --git a/configs/kylin-rk3036_defconfig b/configs/kylin-rk3036_defconfig index eb305e02aaa5..765003095ca1 100644 --- a/configs/kylin-rk3036_defconfig +++ b/configs/kylin-rk3036_defconfig @@ -30,6 +30,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3036-sdk" CONFIG_ENV_IS_IN_MMC=y CONFIG_REGMAP=y CONFIG_SYSCON=y +# CONFIG_SPL_BLK is not set CONFIG_CLK=y CONFIG_FASTBOOT_FLASH=y CONFIG_FASTBOOT_FLASH_MMC_DEV=0 diff --git a/doc/driver-model/MIGRATION.txt b/doc/driver-model/MIGRATION.txt index 6b691338b4e7..dce4aa3e1dc9 100644 --- a/doc/driver-model/MIGRATION.txt +++ b/doc/driver-model/MIGRATION.txt @@ -44,7 +44,9 @@ Deadline: 2019.07 In concert with maintainers migrating their block device usage to the appropriate DM driver, CONFIG_BLK needs to be set as well. The final deadline here coincides with the final deadline for migration of the various block -subsystems. +subsystems. At this point we will be able to audit and correct the logic in +Kconfig around using CONFIG_PARTITIONS and CONFIG_HAVE_BLOCK_DEVICE and make +use of CONFIG_BLK / CONFIG_SPL_BLK as needed. CONFIG_DM_SPI CONFIG_DM_SPI_FLASH diff --git a/drivers/Makefile b/drivers/Makefile index 55de10926ef4..388d93a069e4 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -53,8 +53,7 @@ obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/ obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/ obj-$(CONFIG_OMAP_USB_PHY) += usb/phy/ obj-$(CONFIG_SPL_SATA_SUPPORT) += ata/ scsi/ -obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += block/ -obj-$(CONFIG_SPL_MMC_SUPPORT) += block/ +obj-$(CONFIG_HAVE_BLOCK_DEVICE) += block/ obj-$(CONFIG_SPL_FPGA_SUPPORT) += fpga/ obj-$(CONFIG_SPL_THERMAL) += thermal/ diff --git a/drivers/block/Makefile b/drivers/block/Makefile index 055d42f7d4af..3feb0aa997df 100644 --- a/drivers/block/Makefile +++ b/drivers/block/Makefile @@ -9,6 +9,8 @@ ifndef CONFIG_$(SPL_)BLK obj-y += blk_legacy.o endif +ifndef CONFIG_SPL_BUILD obj-$(CONFIG_IDE) += ide.o +endif obj-$(CONFIG_SANDBOX) += sandbox.o obj-$(CONFIG_$(SPL_TPL_)BLOCK_CACHE) += blkcache.o diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c index 65a766e586d6..baaf431e5e0c 100644 --- a/drivers/block/blk-uclass.c +++ b/drivers/block/blk-uclass.c @@ -639,7 +639,7 @@ int blk_unbind_all(int if_type) static int blk_post_probe(struct udevice *dev) { -#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBDISK_SUPPORT) +#if defined(CONFIG_PARTITIONS) && defined(CONFIG_HAVE_BLOCK_DEVICE) struct blk_desc *desc = dev_get_uclass_platdata(dev); part_init(desc); diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 22bd8f7c279e..2ef19bf005c9 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -81,9 +81,11 @@ libs-$(CONFIG_TPL_LIBGENERIC_SUPPORT) += lib/ else libs-$(CONFIG_SPL_LIBCOMMON_SUPPORT) += common/ cmd/ env/ libs-$(CONFIG_SPL_LIBGENERIC_SUPPORT) += lib/ +ifdef CONFIG_SPL_FRAMEWORK +libs-$(CONFIG_PARTITIONS) += disk/ +endif endif -libs-$(CONFIG_SPL_LIBDISK_SUPPORT) += disk/ libs-y += drivers/ libs-$(CONFIG_SPL_USB_GADGET_SUPPORT) += drivers/usb/dwc3/ libs-y += dts/
The function part_init() will only be built when we have both CONFIG_PARTITIONS and CONFIG_HAVE_BLOCK_DEVICE set. Protect the call to this function with both of these tests now. Cc: Simon Glass <sjg@chromium.org> Cc: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Cc: Michal Simek <michal.simek@xilinx.com> Cc: York Sun <york.sun@nxp.com> Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com> Cc: Mingkai Hu <mingkai.hu@nxp.com> Cc: Stefan Roese <sr@denx.de> Cc: Marek Behún <marek.behun@nic.cz> Cc: Vanessa Maegima <vanessa.maegima@nxp.com> Cc: Eugen Hristev <eugen.hristev@microchip.com> Cc: Adam Ford <aford173@gmail.com> Cc: Jagan Teki <jagan@amarulasolutions.com> Cc: Tom Warren <twarren@nvidia.com> Cc: Stephen Warren <swarren@nvidia.com> Cc: Vitaly Andrianov <vitalya@ti.com> Signed-off-by: Tom Rini <trini@konsulko.com> --- Changes in v2: - rockchip: evb-rk3036 and kylin-rk3036 are both targets that do not use CONFIG_SPL_FRAMEWORK but also do not fall into the legacy PowerPC SPL case. In order to avoid fail to builds on these platforms they must now turn off CONFIG_SPL_BLK, which they weren't using before, it was being discarded at link time. - Re-work common/spl/Kconfig and then various Makefiles to slightly clear up the logic of when we do and don't need both disk/part.o and drivers/block/blk-uclass.o. This is in fact not the greatest but it's all I could come up with to cover all the cases we have today. - Because of the above, add a note to the CONFIG_BLK migration to note that once we are complete there we need to revisit the symbols I used above as once that migration is done we should be able to rely on just BLK and maybe PARTITIONS. - Actually build-test the world and confirm the overall results are fairly sane. This results in pushing a few platforms that are using SPL and DM into using SPL_BLK now. - This also results in a number of 64bit rockchip, nxp and zynqmp platforms that have been enabling CONFIG_SPL_DOS_PARTITION / CONFIG_SPL_ISO_PARTITION now linking it. - On the 32bit ARM side, some Marvell, i.MX, ateml, TI, Tegra, zynq and rockchip platforms do the same. The full build log can be seen at: https://gist.github.com/trini/e3e73afec629bbda2625102120c2a9db --- common/spl/Kconfig | 3 +++ configs/evb-rk3036_defconfig | 1 + configs/kylin-rk3036_defconfig | 1 + doc/driver-model/MIGRATION.txt | 4 +++- drivers/Makefile | 3 +-- drivers/block/Makefile | 2 ++ drivers/block/blk-uclass.c | 2 +- scripts/Makefile.spl | 4 +++- 8 files changed, 15 insertions(+), 5 deletions(-)