[PATCH v6 0/6] hw/ppc: SPI model

Chalapathi V posted 6 patches 3 months, 3 weeks ago
include/hw/ppc/pnv_chip.h          |    3 +
include/hw/ppc/pnv_xscom.h         |    5 +-
include/hw/ssi/pnv_spi.h           |   67 ++
include/hw/ssi/pnv_spi_regs.h      |  133 +++
hw/block/m25p80.c                  |    3 +
hw/ppc/pnv.c                       |   21 +-
hw/ssi/pnv_spi.c                   | 1269 ++++++++++++++++++++++++++++
tests/qtest/pnv-spi-seeprom-test.c |  110 +++
hw/ppc/Kconfig                     |    3 +
hw/ssi/Kconfig                     |    4 +
hw/ssi/meson.build                 |    1 +
hw/ssi/trace-events                |   21 +
tests/qtest/meson.build            |    1 +
13 files changed, 1639 insertions(+), 2 deletions(-)
create mode 100644 include/hw/ssi/pnv_spi.h
create mode 100644 include/hw/ssi/pnv_spi_regs.h
create mode 100644 hw/ssi/pnv_spi.c
create mode 100644 tests/qtest/pnv-spi-seeprom-test.c
[PATCH v6 0/6] hw/ppc: SPI model
Posted by Chalapathi V 3 months, 3 weeks ago
Hello,

In patch v6 below issues detected during Coverity Scan were fixed.
- CID 1558831:  Resource leaks  (RESOURCE_LEAK)
  Variable "rsp_payload" going out of scope leaks the storage it points to.
- CID 1558827:    (OVERRUN)
  Overrunning array "s->seq_op" of 8 bytes at byte offset 16 using index
  "get_seq_index(s) + 1" (which evaluates to 16).

The qom-tree looks like below.
(qemu) info qom-tree 
/machine (powernv10-machine)
  /chip[0] (power10_v2.0-pnv-chip)
    /pib_spic[0] (pnv-spi)
      /pnv-spi-bus.0 (SSI)
      /xscom-spi[0] (memory-region)
    /pib_spic[1] (pnv-spi)
      /pnv-spi-bus.1 (SSI)
      /xscom-spi[0] (memory-region)
    /pib_spic[2] (pnv-spi)
      /pnv-spi-bus.2 (SSI)
      /xscom-spi[0] (memory-region)
    /pib_spic[3] (pnv-spi)
      /pnv-spi-bus.3 (SSI)
      /xscom-spi[0] (memory-region)
    /pib_spic[4] (pnv-spi)
      /pnv-spi-bus.4 (SSI)
      /xscom-spi[0] (memory-region)
    /pib_spic[5] (pnv-spi)
      /pnv-spi-bus.5 (SSI)
      /xscom-spi[0] (memory-region)

(qemu) info qom-tree 
/machine (powernv10-machine)
  /peripheral-anon (container)
    /device[0] (25csm04)
      /WP#[0] (irq)
      /ssi-gpio-cs[0] (irq)

Patches overview in v6.
PATCH1: Remove ppc target dependency from include/hw/ppc/pnv_xscom.h so
        that pnv_xscom.h can be included in hw/ssi/pnv_spi.c in PATCH2.
PATCH2: Create a PNV SPI model and implement configuration unit
        to model SCOM registers.
PATCH3: Extend PNV SPI model: implement sequencer FSM and shift engine.
PATCH4: Add Microchip's SEEPROM 25csm04 model on top of m25p80.
PATCH5: Connect SPI controllers to p10 chip and connect cs lines.
PATCH6: Write a qtest pnv-spi-seeprom-test to check the SPI transactions
        between spi controller and seeprom device.

Test covered:
make check
make check-avocado

Thank You,
Chalapathi

Chalapathi V (6):
  ppc/pnv: Remove ppc target dependency from pnv_xscom.h
  hw/ssi: Add SPI model
  hw/ssi: Extend SPI model
  hw/block: Add Microchip's 25CSM04 to m25p80
  hw/ppc: SPI controller wiring to P10 chip
  tests/qtest: Add pnv-spi-seeprom qtest

 include/hw/ppc/pnv_chip.h          |    3 +
 include/hw/ppc/pnv_xscom.h         |    5 +-
 include/hw/ssi/pnv_spi.h           |   67 ++
 include/hw/ssi/pnv_spi_regs.h      |  133 +++
 hw/block/m25p80.c                  |    3 +
 hw/ppc/pnv.c                       |   21 +-
 hw/ssi/pnv_spi.c                   | 1269 ++++++++++++++++++++++++++++
 tests/qtest/pnv-spi-seeprom-test.c |  110 +++
 hw/ppc/Kconfig                     |    3 +
 hw/ssi/Kconfig                     |    4 +
 hw/ssi/meson.build                 |    1 +
 hw/ssi/trace-events                |   21 +
 tests/qtest/meson.build            |    1 +
 13 files changed, 1639 insertions(+), 2 deletions(-)
 create mode 100644 include/hw/ssi/pnv_spi.h
 create mode 100644 include/hw/ssi/pnv_spi_regs.h
 create mode 100644 hw/ssi/pnv_spi.c
 create mode 100644 tests/qtest/pnv-spi-seeprom-test.c

-- 
2.39.3
Re: [PATCH v6 0/6] hw/ppc: SPI model
Posted by Cédric Le Goater 3 months, 3 weeks ago
Hello Chalapathi

On 7/30/24 19:23, Chalapathi V wrote:
> Hello,
> 
> In patch v6 below issues detected during Coverity Scan were fixed.
> - CID 1558831:  Resource leaks  (RESOURCE_LEAK)
>    Variable "rsp_payload" going out of scope leaks the storage it points to.
> - CID 1558827:    (OVERRUN)
>    Overrunning array "s->seq_op" of 8 bytes at byte offset 16 using index
>    "get_seq_index(s) + 1" (which evaluates to 16).

You don't need to resend a v6 because the PowerNV SPI model is already
merged upstream :

  https://gitlab.com/qemu-project/qemu/-/commit/29318db133d0b2523bda771f76aa50c08842527f

What we would need now is a series of two patches on top of upstream
fixing the issues reported by coverity. Each patch should contain
a "Fixes: Coverity CID XYZxyz" tag.

Thanks,

C.




> The qom-tree looks like below.
> (qemu) info qom-tree
> /machine (powernv10-machine)
>    /chip[0] (power10_v2.0-pnv-chip)
>      /pib_spic[0] (pnv-spi)
>        /pnv-spi-bus.0 (SSI)
>        /xscom-spi[0] (memory-region)
>      /pib_spic[1] (pnv-spi)
>        /pnv-spi-bus.1 (SSI)
>        /xscom-spi[0] (memory-region)
>      /pib_spic[2] (pnv-spi)
>        /pnv-spi-bus.2 (SSI)
>        /xscom-spi[0] (memory-region)
>      /pib_spic[3] (pnv-spi)
>        /pnv-spi-bus.3 (SSI)
>        /xscom-spi[0] (memory-region)
>      /pib_spic[4] (pnv-spi)
>        /pnv-spi-bus.4 (SSI)
>        /xscom-spi[0] (memory-region)
>      /pib_spic[5] (pnv-spi)
>        /pnv-spi-bus.5 (SSI)
>        /xscom-spi[0] (memory-region)
> 
> (qemu) info qom-tree
> /machine (powernv10-machine)
>    /peripheral-anon (container)
>      /device[0] (25csm04)
>        /WP#[0] (irq)
>        /ssi-gpio-cs[0] (irq)
> 
> Patches overview in v6.
> PATCH1: Remove ppc target dependency from include/hw/ppc/pnv_xscom.h so
>          that pnv_xscom.h can be included in hw/ssi/pnv_spi.c in PATCH2.
> PATCH2: Create a PNV SPI model and implement configuration unit
>          to model SCOM registers.
> PATCH3: Extend PNV SPI model: implement sequencer FSM and shift engine.
> PATCH4: Add Microchip's SEEPROM 25csm04 model on top of m25p80.
> PATCH5: Connect SPI controllers to p10 chip and connect cs lines.
> PATCH6: Write a qtest pnv-spi-seeprom-test to check the SPI transactions
>          between spi controller and seeprom device.
> 
> Test covered:
> make check
> make check-avocado
> 
> Thank You,
> Chalapathi
> 
> Chalapathi V (6):
>    ppc/pnv: Remove ppc target dependency from pnv_xscom.h
>    hw/ssi: Add SPI model
>    hw/ssi: Extend SPI model
>    hw/block: Add Microchip's 25CSM04 to m25p80
>    hw/ppc: SPI controller wiring to P10 chip
>    tests/qtest: Add pnv-spi-seeprom qtest
> 
>   include/hw/ppc/pnv_chip.h          |    3 +
>   include/hw/ppc/pnv_xscom.h         |    5 +-
>   include/hw/ssi/pnv_spi.h           |   67 ++
>   include/hw/ssi/pnv_spi_regs.h      |  133 +++
>   hw/block/m25p80.c                  |    3 +
>   hw/ppc/pnv.c                       |   21 +-
>   hw/ssi/pnv_spi.c                   | 1269 ++++++++++++++++++++++++++++
>   tests/qtest/pnv-spi-seeprom-test.c |  110 +++
>   hw/ppc/Kconfig                     |    3 +
>   hw/ssi/Kconfig                     |    4 +
>   hw/ssi/meson.build                 |    1 +
>   hw/ssi/trace-events                |   21 +
>   tests/qtest/meson.build            |    1 +
>   13 files changed, 1639 insertions(+), 2 deletions(-)
>   create mode 100644 include/hw/ssi/pnv_spi.h
>   create mode 100644 include/hw/ssi/pnv_spi_regs.h
>   create mode 100644 hw/ssi/pnv_spi.c
>   create mode 100644 tests/qtest/pnv-spi-seeprom-test.c
>