[PATCH v3 38/38] pci: serial: Support reading PCI-register size with base

Simon Glass sjg at chromium.org
Tue Sep 26 13:37:32 CEST 2023


Hi Tom,

On Mon, 25 Sept 2023 at 14:17, Tom Rini <trini at konsulko.com> wrote:
>
> On Sun, Sep 24, 2023 at 01:25:23PM -0600, Simon Glass wrote:
>
> > The PCI helpers read only the base address for a PCI region. In some cases
> > the size is needed as well, e.g. to pass along to a driver which needs to
> > know the size of its register area.
> >
> > Update the functions to allow the size to be returned. For serial, record
> > the information and provided it with the serial_info() call.
> >
> > A limitation still exists in that the size is not available when OF_LIVE
> > is enabled, so take account of that in the tests.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
>
> So on platforms that end up here, we see consistently:
>             eaidk-610-rk3399: all +224 spl/u-boot-spl:all +224 spl/u-boot-spl:text +224 text +224 tpl/u-boot-tpl:all +224 tpl/u-boot-tpl:text +224
>                u-boot: add: 2/0, grow: 3/0 bytes: 224/0 (224)
>                  function                                   old     new   delta
>                  fdtdec_get_addr_size_auto_noparent           -     124    +124
>                  devfdt_get_addr_size_index                   -      72     +72
>                  ns16550_serial_of_to_plat                  316     328     +12
>                  ns16550_serial_probe                       132     140      +8
>                  ns16550_serial_getinfo                      84      92      +8
>                tpl-u-boot-tpl: add: 2/0, grow: 3/0 bytes: 224/0 (224)
>                  function                                   old     new   delta
>                  fdtdec_get_addr_size_auto_noparent           -     124    +124
>                  devfdt_get_addr_size_index                   -      72     +72
>                  ns16550_serial_of_to_plat                  316     328     +12
>                  ns16550_serial_probe                       132     140      +8
>                  ns16550_serial_getinfo                      84      92      +8
>                spl-u-boot-spl: add: 2/0, grow: 3/0 bytes: 224/0 (224)
>                  function                                   old     new   delta
>                  fdtdec_get_addr_size_auto_noparent           -     124    +124
>                  devfdt_get_addr_size_index                   -      72     +72
>                  ns16550_serial_of_to_plat                  316     328     +12
>                  ns16550_serial_probe                       132     140      +8
>                  ns16550_serial_getinfo                      84      92      +8
>
> Can we optimize this in any way? I'm less concerned with full U-Boot
> growing by 224 bytes than I am by TPL growing by that much too.

One option would be to have two functions in each case, one for the
address and one for the address + size. We do that in some other
cases. I have to admit I somehow didn't notice this large size
difference, although I knew it would have an impact...it is so strange
how the compiler changes what functions end up in the image willy
nilly.

Regards,
Simon


More information about the U-Boot mailing list