From: Andrey Smirnov <andrew.smirnov@gmail.com>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Barebox List <barebox@lists.infradead.org>
Subject: Re: [PATCH 00/27] Console code consolidation
Date: Mon, 18 Jun 2018 16:26:28 -0700 [thread overview]
Message-ID: <CAHQ1cqEOSmZWEkSZJUMEZPiL+AMUjZHpQgsO=oDDCmK4_Bp_fw@mail.gmail.com> (raw)
In-Reply-To: <20180618204918.ovyvzti5esmfymcq@pengutronix.de>
On Mon, Jun 18, 2018 at 1:49 PM Sascha Hauer <s.hauer@pengutronix.de> wrote:
>
> On Fri, Jun 15, 2018 at 05:11:17AM -0700, Andrey Smirnov wrote:
> > On Fri, Jun 15, 2018 at 2:28 AM Sascha Hauer <s.hauer@pengutronix.de> wrote:
> > >
> > > Hi Andrey,
> > >
> > > On Thu, Jun 14, 2018 at 09:11:06PM -0700, Andrey Smirnov wrote:
> > > > Everyone:
> > > >
> > > > While debugging the reason behind print_hex_dump() not producing
> > > > carriage return properly, when used in PBL, I realised that current
> > > > codebase contained:
> > > >
> > > > - at least 5 places where '\n' was replaced with '\n\r'
> > > > - at least 3 almost identical implementations of puts()
> > > > - at least 3 almost identical implementations of printf()
> > > >
> > > > so this patcheset is an attempt to consolidate, share and simplify
> > > > console related code.
> > >
> > > The console support really deserves some cleanup. We have the LL console
> > > support, PBL console support, regular console support and simple console
> > > support, all mixed into a single codebase so that it's sometimes really
> > > hard to understand what is going on.
> > >
> > > Instead of optimizing the different variants for better code sharing I
> > > wonder if we could not consolidate some of the console types to reduce
> > > the number of variants in the code. PBL console works by calling
> > > pbl_set_putc() to specify a putc function. PUTC_LL instead works by
> > > putting a PUTC_LL function into a SoC specific header function. Instead
> > > each board could provide its own putc function, say board_putc() or so.
> > > This would be enough to replace the DEBUG_LL and the PBL console
> > > support.
> > >
> >
> > - That still leaves psci_set_putc(), which currently is handled the
> > same way pbl_set_putc() does
> > - Dropping pbl_set_putc(), would require making direct changes to the
> > code for boards I don't have access to (as opposed to indirect API
> > changes that I can test with on boards that I do have)
> >
> > IMHO, what you are proposing is orthogonal to the work in this
> > patchset. One can unify PUTC_LL and pbl_set_putc() usecases, but it
> > wouldn't change the fact that PBL code has it's own, yet another,
> > implementation of puts() and printf().
>
> Ok, I buy this argument.
>
> > > Then I don't like weak functions. It can provide nifty solutions to some
> > > problems, but I think it also often leads to situations where you don't
> > > really know if something has been overwritten or with what is has been
> > > overwritten with.
> >
> > And with #ifdefs you do? I regularly find myself having to inject
> > #error statements or look at the final disassembly to make sure I
> > interpret the preprocessor logic right, but that might be my unique
> > experience.
>
> I know this problem and in fact it was one problem that has driven me
> away from U-Boot. No, you are right, #fdefs are not better than weak
> functions. I just have the feeling that allowing weak functions is yet
> another can of worms, also admittedly a less ugly one than #ifdefs.
>
> >
> > OK, do you want me to get rid of all of the uses of __weak in this
> > patch set or does your comment apply only to "console: Drop
> > ARCH_HAS_CTRLC"?
>
> Leave them in for now. So far I haven't seen the major selling point for
> this series. It makes some things better, but others just look
> different.
OK, understood. In that case, IMHO, 27 patches is too much to be
merged in without any major selling point. Keeping things status quo
seems like the best approach in terms of risk and saving both time
you'd have to spend reviewing and I making the v2. Let's drop this
set.
Please do consider applying "console: Fix console_get_first_active()"
since it fixes an actual bug in console_get_first_active().
Thanks,
Andrey Smirnov
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2018-06-18 23:26 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-15 4:11 Andrey Smirnov
2018-06-15 4:11 ` [PATCH 01/27] pbl: console: Introduce putc_func_t Andrey Smirnov
2018-06-15 4:11 ` [PATCH 02/27] console: Unify console_simple.c and pbl/console.c Andrey Smirnov
2018-06-15 4:49 ` Sam Ravnborg
2018-06-15 12:22 ` Andrey Smirnov
2018-06-15 4:58 ` Sam Ravnborg
2018-06-15 7:26 ` Sascha Hauer
2018-06-15 11:36 ` Andrey Smirnov
2018-06-15 12:18 ` Andrey Smirnov
2018-06-15 4:11 ` [PATCH 03/27] pbl: console: Move '\n' handling into console_putc() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 04/27] console: Reconcile 3 different puts() implementations Andrey Smirnov
2018-06-15 7:37 ` Sascha Hauer
2018-06-15 11:33 ` Andrey Smirnov
2018-06-15 4:11 ` [PATCH 05/27] ratp: Add dependency on CONSOLE_FULL Andrey Smirnov
2018-06-15 4:11 ` [PATCH 06/27] netconsole: " Andrey Smirnov
2018-06-15 4:11 ` [PATCH 07/27] input: " Andrey Smirnov
2018-06-15 4:11 ` [PATCH 08/27] console: Make use of __console_putc() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 09/27] console: Fix console_get_first_active() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 10/27] console: Simplify early console code Andrey Smirnov
2018-06-15 4:11 ` [PATCH 11/27] console: Consolidate all implemenatations of ctrlc() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 12/27] console: Drop ARCH_HAS_CTRLC Andrey Smirnov
2018-06-15 4:11 ` [PATCH 13/27] console: Consolidate DEBUG_LL and CONSOLE_* '\n' -> '\n\r' code Andrey Smirnov
2018-06-18 20:18 ` Sascha Hauer
2018-06-18 20:25 ` Andrey Smirnov
2018-06-15 4:11 ` [PATCH 14/27] console: Consolidate DEBUG_LL and CONSOLE_* puts() implementations Andrey Smirnov
2018-06-18 20:22 ` Sascha Hauer
2018-06-18 20:26 ` Andrey Smirnov
2018-06-15 4:11 ` [PATCH 15/27] console_simple: Use console_flush() from CONSOLE_FULL Andrey Smirnov
2018-06-15 4:11 ` [PATCH 16/27] console_simple: Use tstc_raw() as tstc() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 17/27] console_simple: Use getc_raw() as getchar() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 18/27] console_simple: Get rid of global console pointer Andrey Smirnov
2018-06-15 4:11 ` [PATCH 19/27] console_simple: Make use of list_add_tail() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 20/27] console: Share definition for printf with PBL Andrey Smirnov
2018-06-15 4:11 ` [PATCH 21/27] pbl: console: Convert pr_print into a single line #define Andrey Smirnov
2018-06-15 4:11 ` [PATCH 22/27] " Andrey Smirnov
2018-06-15 4:11 ` [PATCH 23/27] console: Remove dputc() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 24/27] console: Simplify dputs() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 25/27] console: Introduce dvprintf() Andrey Smirnov
2018-06-15 4:11 ` [PATCH 26/27] console: Convert printf() into a single line #define Andrey Smirnov
2018-06-15 4:11 ` [PATCH 27/27] psci: console: Convert to use lib/console.c Andrey Smirnov
2018-06-15 9:28 ` [PATCH 00/27] Console code consolidation Sascha Hauer
2018-06-15 12:11 ` Andrey Smirnov
2018-06-18 20:49 ` Sascha Hauer
2018-06-18 23:26 ` Andrey Smirnov [this message]
2018-06-19 6:44 ` Sascha Hauer
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='CAHQ1cqEOSmZWEkSZJUMEZPiL+AMUjZHpQgsO=oDDCmK4_Bp_fw@mail.gmail.com' \
--to=andrew.smirnov@gmail.com \
--cc=barebox@lists.infradead.org \
--cc=s.hauer@pengutronix.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