From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Grinberg Date: Tue, 15 Jul 2014 11:00:25 +0300 Subject: [U-Boot] Fwd: Re: [PATCH 2/3] env_mmc: support env partition setup in runtime In-Reply-To: <53B51621.3060307@compulab.co.il> References: <53AA7D53.4030405@compulab.co.il> <53B51621.3060307@compulab.co.il> Message-ID: <53C4DF99.4050102@compulab.co.il> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de ping. On 07/03/14 11:36, Igor Grinberg wrote: > Hi Pantelis, Tom, > > Apparently, Dmitry has sent the message in html format... > > Resending now... > Sorry for that... > > > -------- Original Message -------- > Subject: Re: [U-Boot] [PATCH 2/3] env_mmc: support env partition setup in runtime > Date: Wed, 25 Jun 2014 10:42:11 +0300 > From: Dmitry Lifshitz > To: Pantelis Antoniou > CC: u-boot at lists.denx.de, Tom Rini , Igor Grinberg > > > > Hi Pantelis, > > On 06/12/2014 06:10 PM, Pantelis Antoniou wrote: >> Hi Dmitry, >> >> I took a good look at the patch and there's a problem. >> >> On Apr 27, 2014, at 1:18 PM, Dmitry Lifshitz wrote: >> >>> Add callback with __weak annotation to allow setup of environment >>> partition number in runtime from a board file. >>> >>> Signed-off-by: Dmitry Lifshitz >>> Signed-off-by: Igor Grinberg >>> --- >>> common/env_mmc.c | 35 ++++++++++++++++++++++++++--------- >>> 1 files changed, 26 insertions(+), 9 deletions(-) >>> >>> diff --git a/common/env_mmc.c b/common/env_mmc.c >>> index 045428c..5d4b5f4 100644 >>> --- a/common/env_mmc.c >>> +++ b/common/env_mmc.c >>> @@ -62,6 +62,30 @@ int env_init(void) >>> return 0; >>> } >>> >>> + >>> +#ifdef CONFIG_SYS_MMC_ENV_PART >>> +__weak uint mmc_get_env_part(struct mmc *mmc) >>> +{ >>> + return CONFIG_SYS_MMC_ENV_PART; >>> +} >>> + >>> +static int mmc_set_env_part(struct mmc *mmc) >>> +{ >>> + uint part = mmc_get_env_part(mmc); >>> + >>> + if (part != mmc->part_num) { >>> + if (mmc_switch_part(CONFIG_SYS_MMC_ENV_DEV, part)) { >>> + puts("MMC partition switch failed\n"); >>> + return -1; >>> + } >>> + } >>> + >>> + return 0; >>> +} >>> +#else >>> +static inline int mmc_set_env_part(struct mmc *mmc) {return 0; }; >>> +#endif >>> + >>> static int init_mmc_for_env(struct mmc *mmc) >>> { >>> if (!mmc) { >>> @@ -74,15 +98,8 @@ static int init_mmc_for_env(struct mmc *mmc) >>> return -1; >>> } >>> >> Just before this hunk, we have this: >> >>> #ifdef CONFIG_SYS_MMC_ENV_PART >>> int dev = CONFIG_SYS_MMC_ENV_DEV; >>> >>> #ifdef CONFIG_SPL_BUILD >>> dev = 0; >>> #endif >>> #endif >>> >> This appears to be broken for SPL in case that CONFIG_SYS_MMC_ENV_DEV is not 0. > > Exactly as it was broken before the patch, right? > >> >> SPL hardcoded dev to 0, while mmc_switch_part is implicitly operating on >> CONFIG_SYS_MMC_ENV_DEV. >> >> Please rework it so that the SPL case is unaffected. > > This patch does not change the behavior and its purpose > is not fixing the current code. > > The bug describe can be fixed by later patch and possibly > will require additional review and testing. > > Given that this patch does not change the behavior, can it be accepted please ? > > Regards, > > Dmitry > >>> -#ifdef CONFIG_SYS_MMC_ENV_PART >>> - if (CONFIG_SYS_MMC_ENV_PART != mmc->part_num) { >>> - if (mmc_switch_part(CONFIG_SYS_MMC_ENV_DEV, >>> - CONFIG_SYS_MMC_ENV_PART)) { >>> - puts("MMC partition switch failed\n"); >>> - return -1; >>> - } >>> - } >>> -#endif >>> + if (mmc_set_env_part(mmc)) >>> + return -1; >>> >>> return 0; >>> } >>> -- >>> 1.7.5.4 >> >> > > > > _______________________________________________ > U-Boot mailing list > U-Boot at lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot > -- Regards, Igor.