[Skiboot] [PATCH v9 00/30] little endian skiboot

Frederic Barrat fbarrat at linux.ibm.com
Fri Dec 6 05:30:01 AEDT 2019



Le 29/11/2019 à 07:18, Nicholas Piggin a écrit :
> A few reasons for this:
> - The rest of the software is moving (moved) to LE. BE is still
>    supported, but the fact is LE will be better tested from now on in
>    terms of toolchain.
> - ELFv2 ABI is a smaller image, nicer asm code. We can use ELFv2 with BE
>    but toolchain won't officially support or test it.
> - Some levels of OpenPOWER ISA allow a conforming implementation to
>    implement LE only.
> - Less stack usage of ELFv2 facilitates OPAL call convention that uses
>    the host kernel stack (which is a whole different story but has
>    benefits).
> - Common endian with the host kernel can help with debugging skiboot
>    with host kernel facilities (like BUG, xmon). We could achieve the
>    same by teaching kernel about different endianness, but it's more work.
> 
> Notably missing from conversion:
> - PHB3
> - NPU and CAPI code


Hi Nick,

I did a quick pass on the opal calls for opencapi and capi2, and you've 
already fixed the one call which needed it (patch 4).
I ran some sniff tests for opencapi and capi2 and it was working well.
I haven't touched capi1 (P8, needs PHB3) and the nvlink side of the NPU.

   Fred



> 
> POWER8 / XICS, XICS-on-XIVE, VAS, and niche features have not been
> tested with LE yet, but at this point it's complete enough that it's
> easy to work on and improve so I think it is ready for proper submission
> now. For the most part, big endian builds should be minimally impacted.
> 
> Since v1:
> - Addressed review comments
> - Added a missed endian conversion in hw/fsp/fsp.c
> - Added a patch on the end to tidy up dt access
> - xive patch is not for merge, (pending Cedric's stuff) but included
>    so the series can boot on real hardware.
> 
> Since v2:
> - Remove a few bits of dead POWER7 code
> 
> Since v3:
> - Several fixes to cvc code, including a stack trashing bug that would
>    sometimes result in skiboots that failed container verification,
>    depending on where the compiler put things.
> 
> Since v4:
> - Converted several more pieces, ELF kernel loading (so LE skiboot can
>    load BE kernel), HMI, IPMI, SBE, MPIPL, FSP, ECC, PRD, etc.
> - Paid more attention to sparse warnings, folded in some fixes found
>    by sparse, added some larger sparse cleanup patches.
> - Sparse warnings have gone from 406 to 126 after this series, incorrect
>    type warnings from 296 to 66, and those all come from PHB3 and one HB
>    source file.
> 
> Since v5:
> - Rebased on upstream.
> - Cleaned up xive conversion with helper macros.
> - Fix a memory scribble in upstream code.
> - Squashed a few more sparse errors.
> 
> Since v6:
> - Rebased on upstream and accounted for a bunch of comments.
> - Moved preliminary patches out into another series.
> - Fixed make check, prd, and some intermediate breakage.
> 
> Since v7:
> - Reworked the sensor conversion a little bit to fit better with FSP
>    sensor code.
> - Significant FSP additions and fixes, now boots on ZZ with BE and LE builds.
> - Added debug_descriptor conversions.
> - Minor fixes to a few places where diffing skiboot console between BE and LE
>    boot on ZZ showed some differences (e.g., some printf endian conversions).
> - I left Vasant's ack on the FSP conversion patch even though it's
>    had a lot of changes, he may want to withdraw it.
> 
> Since v8:
> - Bunch of good comments and review from Vasant offline caught bugs and
>    missing bits.
> - Added PEL endian conversion.
> - Added missed opal-msg payload endian conversion.
> - Fixed another make test failure (caused again by incorrect reference
>    .dts that was exposed by fixing endian in the code).
> - Fixed the incorrect i2c patch as pointed out by Oliver.
> 
> Thanks,
> Nick
> 
> Nicholas Piggin (30):
>    asm/cvc_entry.S: r2 save fix
>    capp: fix endian conversion
>    cpu: use dt accessor device tree access
>    opal-api: add endian conversions to most opal calls
>    opal-msg: endian fixes for opal-msg.c and opal_queue_msg callers
>    elf: endian conversions
>    spira: fix endian conversions in spira data structures
>    hdata: endian conversions
>    naca: move naca definition from asm to C
>    io: endian conversions for io accessors
>    hmi: endian conversions
>    cvc: allow BE cvc code to be called from LE context
>    xive: make endian-clean
>    phb4: make endian-clean
>    occ sensors: make endian-clean
>    memconsole: make endian-clean
>    debug descriptor: make endian-clean
>    ipmi: endian conversion
>    sbe-p9: endian conversion
>    fsp: endian conversions
>    pel: endian conversion
>    libflash: ecc endian conversions
>    prd: endian conversions
>    opal-dump: MPIPL endan conversions
>    sfc-ctrl: endian conversions
>    add little endian support
>    dt: assorted cleanups
>    add more sparse endian annotations
>    fix simple sparse warnings
>    i2c: fix dereference beyond the end of buffer
> 
>   Makefile.main                            |  38 ++-
>   asm/asm-offsets.c                        |   2 -
>   asm/cvc_entry.S                          |  51 ++-
>   asm/head.S                               | 116 +++----
>   core/console.c                           |  41 ++-
>   core/cpu.c                               |  26 +-
>   core/device.c                            |  25 +-
>   core/fdt.c                               |   6 +-
>   core/flash.c                             |  41 ++-
>   core/hmi.c                               |  20 +-
>   core/i2c.c                               |  16 +-
>   core/init.c                              | 106 +++---
>   core/interrupts.c                        |  15 +-
>   core/ipmi-opal.c                         |   6 +-
>   core/mem_region.c                        |   2 +-
>   core/opal-dump.c                         |  90 +++---
>   core/opal-msg.c                          |   2 +-
>   core/pci-opal.c                          | 123 +++++--
>   core/pci.c                               |  40 +--
>   core/pel.c                               |  74 +++--
>   core/platform.c                          |   2 +-
>   core/powercap.c                          |  14 +-
>   core/psr.c                               |  14 +-
>   core/sensor.c                            |  52 +--
>   core/trace.c                             |  25 +-
>   doc/stb.rst                              |   2 +-
>   hdata/Makefile.inc                       |   2 +-
>   hdata/fsp.c                              |   9 +-
>   hdata/hdata.h                            |   2 +
>   hdata/iohub.c                            |  33 +-
>   hdata/memory.c                           |  18 +-
>   hdata/naca.c                             |  26 ++
>   hdata/naca.h                             |  54 ++++
>   hdata/spira.c                            |  74 +++--
>   hdata/spira.h                            |   6 +-
>   hdata/test/hdata_to_dt.c                 |   3 +
>   hdata/test/op920.wsp.dts                 |  20 +-
>   hdata/test/p8-840-spira.dts              |  16 +-
>   hdata/test/p81-811.spira.dts             |  25 +-
>   hdata/tpmrel.c                           |   2 +-
>   hw/ast-bmc/ast-sf-ctrl.c                 |   5 +-
>   hw/capp.c                                |   2 +-
>   hw/dts.c                                 |  16 +-
>   hw/fake-rtc.c                            |  11 +-
>   hw/fsp/fsp-attn.c                        |   4 +-
>   hw/fsp/fsp-codeupdate.c                  |  48 +--
>   hw/fsp/fsp-codeupdate.h                  |  86 ++---
>   hw/fsp/fsp-console.c                     |  99 +++---
>   hw/fsp/fsp-diag.c                        |   2 +-
>   hw/fsp/fsp-dpo.c                         |   6 +-
>   hw/fsp/fsp-dump.c                        |  33 +-
>   hw/fsp/fsp-elog-read.c                   |  20 +-
>   hw/fsp/fsp-elog-write.c                  |  11 +-
>   hw/fsp/fsp-epow.c                        |  12 +-
>   hw/fsp/fsp-ipmi.c                        |   8 +-
>   hw/fsp/fsp-leds.c                        | 111 ++++---
>   hw/fsp/fsp-mem-err.c                     |  15 +-
>   hw/fsp/fsp-nvram.c                       |  14 +-
>   hw/fsp/fsp-occ.c                         |   8 +-
>   hw/fsp/fsp-op-panel.c                    |  26 +-
>   hw/fsp/fsp-rtc.c                         |  45 +--
>   hw/fsp/fsp-sensor.c                      |  48 +--
>   hw/fsp/fsp-surveillance.c                |   1 +
>   hw/fsp/fsp-sysdump.c                     |   2 +-
>   hw/fsp/fsp-sysparam.c                    |  36 ++-
>   hw/fsp/fsp.c                             |  44 +--
>   hw/imc.c                                 |  12 +-
>   hw/ipmi/ipmi-rtc.c                       |  11 +-
>   hw/ipmi/ipmi-sel.c                       |   8 +-
>   hw/lpc-rtc.c                             |  11 +-
>   hw/lpc-uart.c                            |  16 +-
>   hw/lpc.c                                 |   8 +-
>   hw/npu2-opencapi.c                       |  12 +-
>   hw/occ-sensor.c                          | 113 ++++---
>   hw/occ.c                                 |  52 +--
>   hw/phb4.c                                | 344 ++++++++++----------
>   hw/prd.c                                 |  64 ++--
>   hw/psi.c                                 |  10 +-
>   hw/sbe-p9.c                              |   2 +-
>   hw/sfc-ctrl.c                            |  19 +-
>   hw/slw.c                                 |  10 +-
>   hw/vas.c                                 |   8 +-
>   hw/xive.c                                | 389 ++++++++++++-----------
>   hw/xscom.c                               |  19 +-
>   include/asm-utils.h                      |  22 +-
>   include/console.h                        |  22 +-
>   include/cpu.h                            |   5 +-
>   include/debug_descriptor.h               |  26 +-
>   include/device.h                         |   4 +-
>   include/dts.h                            |   2 +-
>   include/elf.h                            | 235 +++++++++-----
>   include/fsp-attn.h                       |   2 +-
>   include/fsp-elog.h                       |   4 +-
>   include/fsp-leds.h                       |  24 +-
>   include/fsp.h                            |  14 +-
>   include/io.h                             |  79 ++++-
>   include/ipmi.h                           |   2 +-
>   include/mem-map.h                        |   2 +
>   include/occ.h                            |  52 +--
>   include/opal-api.h                       |  14 +-
>   include/opal-internal.h                  |   4 +-
>   include/opal-msg.h                       |   4 +-
>   include/pel.h                            |  76 ++---
>   include/phb4.h                           |   2 +-
>   include/platform.h                       |   2 +-
>   include/skiboot.h                        |   2 +-
>   include/spcn.h                           |  18 +-
>   include/stack.h                          |   6 +
>   include/types.h                          |   4 +
>   include/xive-p9-regs.h                   |  51 +--
>   include/xive-regs.h                      |  26 ++
>   include/xive.h                           |   2 +-
>   libc/stdlib/labs.c                       |   2 +-
>   libflash/ecc.c                           |  36 ++-
>   libflash/ecc.h                           |   8 +-
>   libflash/ipmi-hiomap.c                   |  20 +-
>   libflash/mbox-flash.c                    |  28 +-
>   libflash/test/mbox-server.c              |  31 +-
>   libpore/p9_cpu_reg_restore_instruction.H |  23 +-
>   libstb/cvc.c                             |  16 +-
>   libstb/cvc.h                             |   2 +-
>   libstb/secureboot.c                      |   2 +-
>   platforms/astbmc/common.c                |   4 +-
>   platforms/astbmc/p8dtu.c                 |   2 +-
>   platforms/astbmc/p9dsu.c                 |   2 +-
>   platforms/astbmc/vesnin.c                |   8 +-
>   platforms/astbmc/witherspoon.c           |   6 +-
>   platforms/ibm-fsp/common.c               |  25 +-
>   platforms/ibm-fsp/firenze-pci.c          |  89 +++---
>   platforms/ibm-fsp/hostservices.c         |  16 +-
>   platforms/ibm-fsp/ibm-fsp.h              |   2 +-
>   platforms/ibm-fsp/lxvpd.c                |   6 +-
>   platforms/ibm-fsp/lxvpd.h                |  44 ++-
>   platforms/mambo/mambo.c                  |   9 +-
>   skiboot.lds.S                            |   5 +
>   135 files changed, 2425 insertions(+), 1727 deletions(-)
>   create mode 100644 hdata/naca.c
>   create mode 100644 hdata/naca.h
> 



More information about the Skiboot mailing list