On Thu, Feb 06, 2025 at 05:49:23PM -0700, Simon Glass wrote: > Hi Tom, > > On Thu, 6 Feb 2025 at 17:20, Tom Rini <tr...@konsulko.com> wrote: > > > > On Thu, Feb 06, 2025 at 05:09:41PM -0700, Simon Glass wrote: > > > Hi Raymond, > > > > > > On Thu, 6 Feb 2025 at 15:35, Raymond Mao <raymond....@linaro.org> wrote: > > > > > > > > Hi Simon, > > > > > > > > On Thu, 6 Feb 2025 at 10:41, Simon Glass <s...@chromium.org> wrote: > > > > > > > > > > Hi Raymond, > > > > > > > > > > On Wed, 5 Feb 2025 at 08:25, Raymond Mao <raymond....@linaro.org> > > > > > wrote: > > > > > > > > > > > > +CC Ilias, > > > > > > > > > > > > Hi Simon, > > > > > > > > > > > > On Tue, 4 Feb 2025 at 20:57, Simon Glass <s...@chromium.org> wrote: > > > > > > > > > > > > > > The logic of this has become too confusing. > > > > > > > > > > > > > > The primary issue with the patch is that U-Boot needs to set up a > > > > > > > bloblist in the first phase where BLOBLIST is enabled. Subsequent > > > > > > > phases can then use that bloblist. > > > > > > > > > > > > > > But the first phase of U-Boot cannot assume that one exists. > > > > > > > > > > > > > > Reverting this commit seems like a better starting point for > > > > > > > getting > > > > > > > things working for all use-cases. > > > > > > > > > > > > > > This reverts commit 66131310d8ff1ba228f989b41bd8812f43be41c3. > > > > > > > > > > > > > > https://lore.kernel.org/u-boot/CAPnjgZ3hMHtiH=f5zkxnniofv_-vfryq1gn7qz5hku8wjo8...@mail.gmail.com/ > > > > > > > Signed-off-by: Simon Glass <s...@chromium.org> > > > > > > > --- > > > > > > > > > > > > > > > > > > > If my understanding is correct, you want to add some logic to > > > > > > control > > > > > > when the U-Boot should or should not get the bloblist from the > > > > > > existing register argument. > > > > > > But xferlist_from_boot_arg() should be called when a valid register > > > > > > argument is there, I didn't see this in your patch. > > > > > > Maybe you plan to do this with other patch series, but simply > > > > > > reverting this results in a breaking of handoff policy and the > > > > > > firmware handoff won't work. > > > > > > > > > > Yes, I certainly did not want to revert it, but the current code is > > > > > too hard to understand and I did not look at it at the time it went > > > > > in. I've had three tries at working with what you have here, but each > > > > > turns to spaghetti. > > > > > > > > > > > > > Still not very clear on what concerns you have and what is the way you > > > > want to go. > > > > The logic is straight forward, when U-Boot has a previous loader and > > > > the registers pass in valid arguments - It indicates handoff should be > > > > done using the transfer list. > > > > Other kconfig options decide whether to use the passed in address > > > > directly or copy to a predefined address. > > > > But in either way, xferlist_from_boot_arg() is doing the right thing > > > > to get the transfer list from the register if it exists and is valid. > > > > I don't see a reason for removing it. > > > > > > Here is the initial code: > > > >>>> > > > bool from_addr = fixed && !xpl_is_first_phase(); > > > /* > > > * If U-Boot is in the first phase that an arch custom routine should > > > * install the bloblist passed from previous loader to this fixed > > > * address. > > > */ > > > bool from_boot_arg = fixed && xpl_is_first_phase(); > > > > > > if (xpl_prev_phase() == PHASE_TPL && !IS_ENABLED(CONFIG_TPL_BLOBLIST)) > > > from_addr = false; > > > <<<< > > > > > > and by the way, that is my tree. In -next it is even worse: > > > >>>> > > > /* > > > * If U-Boot is not in the first phase, an existing bloblist must be > > > * at a fixed address. > > > */ > > > bool from_addr = fixed && !xpl_is_first_phase(); > > > /* > > > * If U-Boot is in the first phase that an arch custom routine should > > > * install the bloblist passed from previous loader to this fixed > > > * address. > > > */ > > > bool from_boot_arg = fixed && xpl_is_first_phase(); > > > > > > if (xpl_prev_phase() == PHASE_TPL && !IS_ENABLED(CONFIG_TPL_BLOBLIST)) > > > from_addr = false; > > > if (fixed) > > > addr = IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED, > > > CONFIG_BLOBLIST_ADDR); > > > size = CONFIG_BLOBLIST_SIZE; > > > > > > if (from_boot_arg) > > > ret = xferlist_from_boot_arg(addr, size); > > > else if (from_addr) > > > ret = bloblist_check(addr, size); > > > <<<< > > > > > > I want to update it so that TPL creates a bloblist and passes it > > > through the following phases, ending up at U-Boot. > > > > > > To my mind, if CONFIG_IS_ENABLED(BLOBLIST), then we should check the > > > registers and always accept standard passage. If not, we should > > > either: > > > - create a bloblist (if this *is* the first phase with > > > CONFIG_IS_ENABLED(BLOBLIST)) > > > - use an existing bloblistl, which must exist (if not) > > > > > > I just don't think the existing logic is a good starting point as it > > > is too confusing. > > > > > > Perhaps, putting it another way, what do you like about the current > > > code (either version)? > > > > We need to untie the check for and create logic. And we need to add code > > so that U-Boot can pass from one phase to the next without a fixed > > address. That should help simplify this logic and move towards being > > able to just drop the fixed case entirely. > > Well, if you want me to do this, I can, but it needs to start with > this revert. If someone else is going to do it, I'll cheer from the > sidelines.
We aren't reverting what works for everyone else for the sake of your VBE series, so if you're going to pause that until someone else does it... -- Tom
signature.asc
Description: PGP signature