Re: [PATCH] mmc: part_switch: fixes switch on gp3 partition

From: Ulf Hansson
Date: Wed Mar 06 2024 - 10:58:05 EST


On Wed, 6 Mar 2024 at 15:38, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote:
>
> On Wed, Mar 6, 2024 at 3:22 PM Jorge Ramirez-Ortiz, Foundries
> <jorge@xxxxxxxxxxxx> wrote:
>
> > I still cant grasp how "target_part = idata->rpmb->part_index" is
> > helping in the design.
> >
> > What happens when:
> > 1) EXT_CSD_PART_CONFIG_ACC_MASK > part_index > EXT_CSD_PART_CONFIG_ACC_RPMB
> > target_part now could be indicating a GP instead of an RPMB leading to failures.
> >
> > 2) part_index <= EXT_CSD_PART_CONFIG_ACC_RPMB
> > loses the part_index value .
> >
> > So part_index should be larger than EXT_CSD_PART_CONFIG_ACC_MASK even
> > though the comment indicates it starts at 0?
> >
> > /**
> > * struct mmc_rpmb_data - special RPMB device type for these areas
> > * @dev: the device for the RPMB area
> > * @chrdev: character device for the RPMB area
> > * @id: unique device ID number
> > * @part_index: partition index (0 on first) <---------------------
> > * @md: parent MMC block device
> > * @node: list item, so we can put this device on a list
> > */
> > struct mmc_rpmb_data {
> > struct device dev;
> > struct cdev chrdev;
> > int id;
> >
> > is it just possible that "target_part = idata->rpmb->part_index" just
> > needs to be shifted to avoid issues?
> >
> > I think the fix to the regression I introduced could perhaps address
> > this as well.
>
> I have no clue how the regression happened really ... heh.
>
> We should probably rename it part_cfg because that is what we
> store in it, it's assigned from card->part[idx].part_cfg.
>
> Then the id field in mmc_rpmb_data should be deleted along
> with all the IDA counter code etc and the partition name hardcoded
> to be "0" as there will never be anything else.

Seems reasonable to me. Are you thinking of sending a cleanup patch on
top of $subject patch?

Kind regards
Uffe