public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 00/14] Devres (Managed Device Resource) for U-Boot
Date: Mon, 13 Jul 2015 12:55:06 +0200	[thread overview]
Message-ID: <20150713125506.0582268f@lilith> (raw)
In-Reply-To: <CAK7LNATFnaKtZcsAUstn1DA46EH3GQaNo6rBYookZijb0g4bvQ@mail.gmail.com>

Hello Masahiro,

On Mon, 13 Jul 2015 16:39:45 +0900, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> Hi Albert,
> 
> 
> 2015-07-13 15:51 GMT+09:00 Albert ARIBAUD <albert.u.boot@aribaud.net>:
> > Hello Masahiro,
> >
> > On Mon, 13 Jul 2015 13:17:03 +0900, Masahiro Yamada
> > <yamada.masahiro@socionext.com> wrote:
> >>
> >> Please refer to the commit message of 06/14
> >> for what this series wants to do.
> >
> > Remark: you could use "Series-notes:" in 6/14 to have patman directly
> > include said notes here instead of referring the reader to the patch.
> >
> >> Masahiro Yamada (14):
> >>   x86: delete unneeded declarations of disable_irq() and enable_irq()
> >>   linux_compat: remove cpu_relax() define
> >>   linux_compat: move vzalloc() to header file as an inline function
> >>   linux_compat: handle __GFP_ZERO in kmalloc()
> >>   dm: add DM_FLAG_BOUND flag
> >>   devres: introduce Devres (Managed Device Resource) framework
> >>   devres: add devm_kmalloc() and friends (managed memory allocators)
> >>   dm: refactor device_bind() and device_unbind() with devm_kzalloc()
> >>   dm: merge fail_alloc labels
> >>   linux_compat: introduce GFP_DMA flag for kmalloc()
> >>   dm: refactor device_probe() and device_remove() with devm_kzalloc()
> >>   devres: add debug command to dump device resources
> >>   dm: remove redundant CONFIG_DM from driver/core/Makefile
> >>   devres: compile Devres iif CONFIG_DM_DEVICE_REMOVE is enabled
> >
> > I am still unsure why this is necessary. I had a discussion on the
> > list with Simon, see last message here:
> >
> > <https://www.mail-archive.com/u-boot@lists.denx.de/msg177031.html>
> >
> > Unless I'm mistaken, the only case where we actually have a leak that
> > this series would fix is in some cases of binding USB devices / drivers
> > multiple times, and even then, it would take a considerable amount of
> > repeated bindings before U-Boot could become unable to boot a payload;
> > a scenario that I find unlikely.
> >
> > I do understand the general goal of fixing bugs when we ind them; but I
> > question the global benefit of fixing this specific leak bug by adding a
> > whole new feature with a lot of code to U-Boot, as opposed to fixing
> > it in a more ad hoc way with much less less code volume and complexity.
> 
> 
> You have a point.
> 
> What we really want to avoid is to make low-level drivers too complicated
> by leaving the correct memory management to each of them.
> 
> After all, there turned out to be two options to solve it.
> 
>   [1] Simon's driver model:  move allocating/freeing memory to the driver core
>                              by having only the needed memory size
> specified in each driver
>   [2] Devres: we still have to allocate memory in each driver, but we
> need not free it explicitly,
>                making our driver work much easier
> 
> 
> [1] and [2] are completely differently approach,
> but what they solve is the same:  easier memory (resource) management
> without leak.

Understood.

IIUC, this adds a new leak scenario beside the multiple inits one such
as for USB, but this new scenarion which is in failure paths where
already allocated memory must be released, seems to me no more critical
than the one I'd discussed with Simon, i.e., I'm not convinced we need
a fix, and I'm not convinced we need a general memory management
feature for that -- which does not mean I can't be convinced, though; I
just need (more) convincing arguments (than I can currently read).

> The only problem I see in [1] is that it is not controllable at run-time.
> The memory size for the auto-allocation must be specified at the compile time.

How in practice is that a problem?

> So, we need calloc() and free() in some low-level drivers.
> Simon might say they are only a few "exceptions",
> (my impression is I often hear the logic such as "it is not a problem
> because we do not have many.")
> Anyway, we had already lost the consistency as for memory allocation.

Not sure I understand that last sentence. Which consistency exactly
have we lost?

> I imagined if [2] had been supported earlier, we would not have needed [1].
> (at least, [2] seems more flexible to me.)
> 
> We already have many DM-based drivers, and I think we can live with [1]
> despite some exceptional drivers allocating memory on their own.
> 
> So, if Simon (and other developers) does not feel comfortable with this series,
> I do not mind discarding it.

Note that I'm not saying your patch series does not solve the issue of
leaks. What I'm saying is i) do we need to solve this issue, and ii) if we
do, is your series the best option ?

> -- 
> Best Regards
> Masahiro Yamada

Amicalement,
-- 
Albert.

  reply	other threads:[~2015-07-13 10:55 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-13  4:17 [U-Boot] [PATCH v2 00/14] Devres (Managed Device Resource) for U-Boot Masahiro Yamada
2015-07-13  4:17 ` [U-Boot] [PATCH v2 01/14] x86: delete unneeded declarations of disable_irq() and enable_irq() Masahiro Yamada
2015-07-22 23:24   ` Simon Glass
2015-07-13  4:17 ` [U-Boot] [PATCH v2 02/14] linux_compat: remove cpu_relax() define Masahiro Yamada
2015-07-13  7:38   ` Lukasz Majewski
2015-07-22 23:24     ` Simon Glass
2015-07-13  4:17 ` [U-Boot] [PATCH v2 03/14] linux_compat: move vzalloc() to header file as an inline function Masahiro Yamada
2015-07-22 23:24   ` Simon Glass
2015-07-13  4:17 ` [U-Boot] [PATCH v2 04/14] linux_compat: handle __GFP_ZERO in kmalloc() Masahiro Yamada
2015-07-13  7:47   ` Lukasz Majewski
2015-07-22 23:24     ` Simon Glass
2015-07-13  4:17 ` [U-Boot] [PATCH v2 05/14] dm: add DM_FLAG_BOUND flag Masahiro Yamada
2015-07-13  4:17 ` [U-Boot] [PATCH v2 06/14] devres: introduce Devres (Managed Device Resource) framework Masahiro Yamada
2015-07-18 14:37   ` Simon Glass
2015-07-13  4:17 ` [U-Boot] [PATCH v2 07/14] devres: add devm_kmalloc() and friends (managed memory allocators) Masahiro Yamada
2015-07-13  4:17 ` [U-Boot] [PATCH v2 08/14] dm: refactor device_bind() and device_unbind() with devm_kzalloc() Masahiro Yamada
2015-07-13  4:17 ` [U-Boot] [PATCH v2 09/14] dm: merge fail_alloc labels Masahiro Yamada
2015-07-13  4:17 ` [U-Boot] [PATCH v2 10/14] linux_compat: introduce GFP_DMA flag for kmalloc() Masahiro Yamada
2015-07-13  7:52   ` Lukasz Majewski
2015-07-13  8:03     ` Masahiro Yamada
2015-07-13  4:17 ` [U-Boot] [PATCH v2 11/14] dm: refactor device_probe() and device_remove() with devm_kzalloc() Masahiro Yamada
2015-07-13  4:17 ` [U-Boot] [PATCH v2 12/14] devres: add debug command to dump device resources Masahiro Yamada
2015-07-13  4:17 ` [U-Boot] [PATCH v2 13/14] dm: remove redundant CONFIG_DM from driver/core/Makefile Masahiro Yamada
2015-07-16  0:59   ` Simon Glass
2015-07-17 23:59     ` Simon Glass
2015-07-13  4:17 ` [U-Boot] [PATCH v2 14/14] devres: compile Devres iif CONFIG_DM_DEVICE_REMOVE is enabled Masahiro Yamada
2015-07-13  6:51 ` [U-Boot] [PATCH v2 00/14] Devres (Managed Device Resource) for U-Boot Albert ARIBAUD
2015-07-13  7:39   ` Masahiro Yamada
2015-07-13 10:55     ` Albert ARIBAUD [this message]
2015-07-13 11:42       ` Masahiro Yamada
2015-07-13 17:16         ` Albert ARIBAUD
2015-07-18 14:37           ` Simon Glass
2015-07-20  6:21             ` Masahiro Yamada
2015-07-20 14:16               ` Simon Glass
2015-07-22 17:15                 ` Masahiro Yamada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150713125506.0582268f@lilith \
    --to=albert.u.boot@aribaud.net \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox