On Sat, May 24, 2025 at 08:51:43AM +0100, Simon Glass wrote:
> Hi Tom,
> 
> On Wed, 14 May 2025 at 20:44, Simon Glass <s...@chromium.org> wrote:
> >
> > Hi Tom,
> >
> > On Tue, 13 May 2025 at 00:35, Tom Rini <tr...@konsulko.com> wrote:
> > >
> > > On Sat, May 10, 2025 at 01:27:03PM +0200, Simon Glass wrote:
> > > > Hi Tom,
> > > >
> > > > On Tue, 6 May 2025 at 21:48, Tom Rini <tr...@konsulko.com> wrote:
> > > > >
> > > > > On Tue, May 06, 2025 at 03:23:39PM +0200, Simon Glass wrote:
> > > > > > Hi Tom,
> > > > > >
> > > > > > On Mon, 5 May 2025 at 22:38, Tom Rini <tr...@konsulko.com> wrote:
> > > > > > >
> > > > > > > On Thu, May 01, 2025 at 07:37:01AM -0600, Simon Glass wrote:
> > > > > > >
> > > > > > > > This construct appears in various places. Reduce code size by 
> > > > > > > > adding a
> > > > > > > > function for it.
> > > > > > > >
> > > > > > > > It inits the abuf, then allocates it to the requested size.
> > > > > > > >
> > > > > > > > Signed-off-by: Simon Glass <s...@chromium.org>
> > > > > > > > ---
> > > > > > > >
> > > > > > > > Changes in v2:
> > > > > > > > - Add new patch with a helper for initing and allocating a 
> > > > > > > > buffer
> > > > > > > >
> > > > > > > >  boot/cedit.c          |  3 +--
> > > > > > > >  boot/scene.c          |  3 +--
> > > > > > > >  boot/scene_textline.c |  3 +--
> > > > > > > >  include/abuf.h        | 11 +++++++++++
> > > > > > > >  lib/abuf.c            |  9 +++++++++
> > > > > > > >  lib/of_live.c         |  3 +--
> > > > > > > >  test/lib/abuf.c       | 22 ++++++++++++++++++++++
> > > > > > > >  7 files changed, 46 insertions(+), 8 deletions(-)
> > > > > > >
> > > > > > > This just made me look again at the abuf implementation itself and
> > > > > > > become filled with regret I didn't reject it back in 2021. We're
> > > > > > > introducing wrappers around standard functions and calling 
> > > > > > > conventions /
> > > > > > > patterns with something homegrown (and so not intuitive to 
> > > > > > > others) that
> > > > > > > mainly hides the "sysmem" challenge we also have  and I wish you 
> > > > > > > were
> > > > > > > interested in revisiting how that part of sandbox works instead. 
> > > > > > > And
> > > > > > > even if this is a better design, for the sake of argument, it's 
> > > > > > > not
> > > > > > > something everyone else is used to. And that's important.
> > > > > > >
> > > > > > > If we *really* need something different / new here, I'd rather 
> > > > > > > see us go
> > > > > > > and wrap common/dlmalloc.c with kmalloc/kfree/etc and so give 
> > > > > > > people
> > > > > > > something even more familiar-looking.
> > > > > >
> > > > > > The purpose of abuf is actually not about hiding sysmem - you can 
> > > > > > see
> > > > > > that if you look at lib/abuf.c and the tests. It provides an easy 
> > > > > > way
> > > > > > to manage buffers, which we do a lot in U-Boot, particularly with
> > > > > > standard boot. It deals with whether the buffer is allocated or not,
> > > > > > so freeing is easy. With expo I want to be able to manage a buffer
> > > > > > containing an autoboot string in high-level code, say, without
> > > > > > worrying whether it has to be realloced.
> > > > >
> > > > > It's a wrapper around free/malloc/et al, which then also includes the
> > > > > sandbox-specific requirement of *sysmap* stuff. This is best shown by
> > > > > the next two patches which convert from standard malloc/free patterns
> > > > > (which both humans and analysis checkers are fond of) to a home grown
> > > > > invention.
> > > >
> > > > Yes, although I should point out that most of my code is a home-grown
> > > > invention, if by that you mean it wasn't invented by someone else and
> > > > then posted by me as if it were my own invention.
> > >
> > > Well, I'm referring to the cases where solutions to the problems exist,
> > > but you're inventing a new one instead.
> > >
> > > > > > For sysmem, I don't see a viable alternative, which keeps can 
> > > > > > reliably
> > > > > > keep addresses consistent across multiple phases (e.g. sandbox_vpl).
> > > > > > Also, I don't believe addresses like 0x7ffff7fbc000 are
> > > > > > human-friendly, yet that is what we would see in tests if we dropped
> > > > > > the mapping. The point of sandbox is to test U-Boot, not expose the
> > > > > > system internals. But we could discuss it if you like?
> > > > >
> > > > > I'm not sure how this is relevant to the general high level point of
> > > > > "sandbox should be able to, in 2025, be designed so that special 
> > > > > macros
> > > > > do not need to be everywhere for the sanity checking it can do to
> > > > > happen". If my web browser is going to suck up 11GiB of memory all the
> > > > > time I can live with sandbox using 1/2/4/whatever GiB of memory when 
> > > > > it
> > > > > runs. The "this is not a pointer" problem sandbox can solve could be
> > > > > done differently these days.
> > > >
> > > > The special macros have several purposes:
> > > > 1. Allow sandbox to have a contiguous region of memory at address 0,
> > > > while the pointers are wherever the RAM buffer happens to end up
> > > > 2. Provide an indication of whether code has been converted to sandbox
> > > > yet, or not
> > > > 3. Provide a way to mark all casts to/from address/pointers so it is
> > > > clear that the cast is intentional
> > > > 4. Ensure that sandbox seg-faults if a bad pointer is used
> > > >
> > > > You seemed quite happy about it until my EFI test was rejected.
> > >
> > > No, I've never really been happy with the macros and never understood
> > > why we couldn't do the useful sanity checking wholly under arch/sandbox/
> > >
> > > > > > In general I am sensing that there are a lot of things which bug you
> > > > > > about the direction of U-Boot. and that you feel very differently
> > > > > > about some things than you did in 2021. I have quite a few concerns
> > > > > > too. So how about we make time to discuss these and see if we can 
> > > > > > get
> > > > > > on the same page, at least somewhat?
> > > > >
> > > > > Yes, we've had numerous long threads, and a few calls. You are then
> > > > > unhappy with what I say I want to see done, want me to just take your
> > > > > changes instead and "Say Yes" more. I wonder if I had said No, or 
> > > > > gather
> > > > > more feedback from potential users, or just slow down, more back in 
> > > > > 2021
> > > > > if we would not be in a different position here.
> > > >
> > > > I wonder if you had said yes more, if we might have got standard boot
> > > > done a few years earlier and would not be stuck now on EFI bootmgr.
> > >
> > > No, we probably would have just had more developers leave as I overrode
> > > their objections.
> > >
> > > > > > Coming back to this patch though, this is really about a code-side
> > > > > > win, rather than anything else.
> > > > >
> > > > > No, it's about how similar to the "log a message and return" 
> > > > > convention
> > > > > change you wanted to make and then dropped, how I do not see good 
> > > > > value
> > > > > in changing from standard convention of malloc/free to abuf being a 
> > > > > win.
> > > > > Maybe this is a case where borrowing the kernel's mempool logic would 
> > > > > be
> > > > > a win instead? Because another part of this is that we want to avoid
> > > > > making up our own APIs for things if we can instead borrow something
> > > > > from the kernel, where most of the rest of the community will already 
> > > > > be
> > > > > familiar.
> > > >
> > > > mempool is actually lmb, as I understand it. We haven't done that
> > > > rename. It allocates from a region of pre-allocated memory. It doesn't
> > > > use malloc(). So to me, that is quite different.
> > >
> > > Then we should probably just drop the abuf thing and use standard
> > > conventions that developers are used to.
> >
> > No, abuf is a valuable abstraction which makes it easier to avoid
> > alloc/free errors, size errors, etc. Python has bytes, C++ has
> > std::byte. Linux has sk_buff which is a bit like membuf. Perhaps Linux
> > would benefit from abuf but its memory model and usage is quite a bit
> > different, so I'm not sure.
> 
> This series seems to be blocked on a desire to remove abuf from
> U-Boot. Other than that I have a minor comment to resolve on the new
> 'bootdev order' command. So I sent a patch for that.

Yes, I disagree with spreading the use of abuf. Whatever benefits it may
or may not have are outweighed by not following any normal conventions
the rest of the developers use.

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to