qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/26] ppc: qemu: Convert qemu-ppce500 to driver model
@ 2021-02-07 15:11 Bin Meng
  2021-02-10  0:36 ` Bin Meng
  0 siblings, 1 reply; 2+ messages in thread
From: Bin Meng @ 2021-02-07 15:11 UTC (permalink / raw)
  To: Simon Glass, Alexander Graf, Priyanka Jain
  Cc: Tom Rini, Heiko Schocher, qemu-devel, U-Boot Mailing List,
	Matthias Brugger, qemu-ppc, Stefan Roese, Marek Szyprowski

At present when building qemu-ppce500 the following warnings are seen:

===================== WARNING ======================
This board does not use CONFIG_DM. CONFIG_DM will be
compulsory starting with the v2020.01 release.
Failure to update may result in board removal.
  UPD     include/generated/timestamp_autogenerated.h
See doc/driver-model/migration.rst for more info.
====================================================
===================== WARNING ======================
This board does not use CONFIG_DM_PCI Please update
the board to use CONFIG_DM_PCI before the v2019.07 release.
Failure to update by the deadline may result in board removal.
See doc/driver-model/migration.rst for more info.
====================================================
===================== WARNING ======================
This board does not use CONFIG_DM_ETH (Driver Model
for Ethernet drivers). Please update the board to use
CONFIG_DM_ETH before the v2020.07 release. Failure to
update by the deadline may result in board removal.
See doc/driver-model/migration.rst for more info.
====================================================

The conversion of qemu-ppce500 board to driver model is long overdue.

When testing the exisitng qemu-ppce500 support, PCI was found broken.
This is caused by 2 separate issues:

- One issue was caused by U-Boot:
  Commit e002474158d1 ("pci: pci-uclass: Dynamically allocate the PCI regions")
  Patch #1 reverts this commit as it broken all boards that have not converted
  to driver model PCI.
- One issue was caused by QEMU:
  commit e6b4e5f4795b ("PPC: e500: Move CCSR and MMIO space to upper end of address space")
  commit cb3778a0455a ("PPC: e500 pci host: Add support for ATMUs")
  Patch #3-4 fixed this issue to keep in sync with latest QEMU upstream

Patch #5-8 are minor fixes and clean-ups.

Starting from patch#9, these are driver model conversion patches.

Patch #11-16 are mainly related to CONFIG_ADDR_MAP, a library to support targets
that have non-identity virtual-physical address mappings. A new command 'addrmap'
is introduced to aid debugging, and a fix to arch/powerpc/asm/include/io.h is
made to correct the usage of CONFIG_ADDR_MAP as it can only be used in the post-
relocation phase. Also the initialization of this library is moved a bit earlier
in the post-relocation phase otherwise device drivers won't work.

Patch #18-20 are 85xx PCI driver fixes. It adds support to controller register
physical address beyond 32-bit, as well as support to 64-bit bus and cpu address
as current upstream QEMU uses 64-bit cpu address.

Patch #23 is minor fix to the 'virtio' command dependency.

Patch #24 enables the VirtIO NET support as by default a VirtIO standard PCI
networking device is connected as an ethernet interface at PCI address 0.1.0.

Patch #25 moves the qemu-ppce500 boards codes to board/emulation as that is the
place for other QEMU targets like x86, arm, riscv.

Patch #26 adds a reST document to describe how to build and run U-Boot for the
QEMU ppce500 machine.

I hope we can make this series to U-Boot v2021.04 release.

This series is available at u-boot-x86/qemu-ppc for testing.

This cover letter is cc'ed to QEMU mailing list for a heads-up.
A future patch will be sent to QEMU mailing list to bring its in-tree
U-Boot source codes up-to-date.


Bin Meng (26):
  Revert "pci: pci-uclass: Dynamically allocate the PCI regions"
  ppc: qemu: Update MAINTAINERS for correct email address
  common: fdt_support: Support special case of PCI address in
    fdt_read_prop()
  ppc: qemu: Support non-identity PCI bus address
  ppc: qemu: Fix CONFIG_SYS_PCI_MAP_END
  ppc: mpc85xx: Wrap LAW related codes with CONFIG_FSL_LAW
  ppc: qemu: Drop init_laws() and print_laws()
  ppc: qemu: Drop board_early_init_f()
  ppc: qemu: Enable OF_CONTROL
  ppc: qemu: Enable driver model
  include: Remove extern from addr_map.h
  lib: addr_map: Move address_map[] type to the header file
  cmd: Add a command to display the address map
  lib: kconfig: Mention CONFIG_ADDR_MAP limitation in the help
  ppc: io.h: Use addrmap_ translation APIs only in post-relocation phase
  common: Move initr_addr_map() to a bit earlier
  ppc: qemu: Switch over to use DM serial
  pci: mpc85xx: Wrap LAW programming with CONFIG_FSL_LAW
  pci: mpc85xx: Support controller register physical address beyond
    32-bit
  pci: mpc85xx: Support 64-bit bus and cpu address
  ppc: qemu: Switch over to use DM ETH and PCI
  ppc: qemu: Drop CONFIG_OF_BOARD_SETUP
  cmd: Fix virtio command dependency
  ppc: qemu: Enable VirtIO NET support
  ppc: qemu: Move board directory from board/freescale to
    board/emulation
  doc: Add a reST document for qemu-ppce500

 arch/powerpc/cpu/mpc85xx/Kconfig                   |   2 +-
 arch/powerpc/cpu/mpc85xx/cpu.c                     |   2 +
 arch/powerpc/cpu/mpc85xx/cpu_init_early.c          |   2 +
 arch/powerpc/include/asm/io.h                      |  15 +-
 .../{freescale => emulation}/qemu-ppce500/Kconfig  |   2 +-
 board/emulation/qemu-ppce500/MAINTAINERS           |   7 +
 .../{freescale => emulation}/qemu-ppce500/Makefile |   0
 .../qemu-ppce500/qemu-ppce500.c                    | 159 ++++++---------------
 board/freescale/qemu-ppce500/MAINTAINERS           |   6 -
 cmd/Kconfig                                        |   8 ++
 cmd/Makefile                                       |   1 +
 cmd/addrmap.c                                      |  35 +++++
 common/board_r.c                                   |   6 +-
 common/fdt_support.c                               |  15 +-
 configs/qemu-ppce500_defconfig                     |  14 +-
 doc/board/emulation/index.rst                      |   1 +
 doc/board/emulation/qemu-ppce500.rst               |  73 ++++++++++
 drivers/pci/pci-uclass.c                           |  14 +-
 drivers/pci/pci_mpc85xx.c                          |  25 ++--
 include/addr_map.h                                 |  16 ++-
 include/configs/qemu-ppce500.h                     |  25 +---
 include/pci.h                                      |   4 +-
 lib/Kconfig                                        |   2 +
 lib/addr_map.c                                     |   6 +-
 24 files changed, 250 insertions(+), 190 deletions(-)
 rename board/{freescale => emulation}/qemu-ppce500/Kconfig (86%)
 create mode 100644 board/emulation/qemu-ppce500/MAINTAINERS
 rename board/{freescale => emulation}/qemu-ppce500/Makefile (100%)
 rename board/{freescale => emulation}/qemu-ppce500/qemu-ppce500.c (68%)
 delete mode 100644 board/freescale/qemu-ppce500/MAINTAINERS
 create mode 100644 cmd/addrmap.c
 create mode 100644 doc/board/emulation/qemu-ppce500.rst

-- 
2.7.4



^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 00/26] ppc: qemu: Convert qemu-ppce500 to driver model
  2021-02-07 15:11 [PATCH 00/26] ppc: qemu: Convert qemu-ppce500 to driver model Bin Meng
@ 2021-02-10  0:36 ` Bin Meng
  0 siblings, 0 replies; 2+ messages in thread
From: Bin Meng @ 2021-02-10  0:36 UTC (permalink / raw)
  To: Simon Glass, Alexander Graf, Priyanka Jain
  Cc: Tom Rini, Heiko Schocher, qemu-devel@nongnu.org Developers,
	U-Boot Mailing List, Matthias Brugger, qemu-ppc, Stefan Roese,
	Marek Szyprowski

On Sun, Feb 7, 2021 at 11:11 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> At present when building qemu-ppce500 the following warnings are seen:
>
> ===================== WARNING ======================
> This board does not use CONFIG_DM. CONFIG_DM will be
> compulsory starting with the v2020.01 release.
> Failure to update may result in board removal.
>   UPD     include/generated/timestamp_autogenerated.h
> See doc/driver-model/migration.rst for more info.
> ====================================================
> ===================== WARNING ======================
> This board does not use CONFIG_DM_PCI Please update
> the board to use CONFIG_DM_PCI before the v2019.07 release.
> Failure to update by the deadline may result in board removal.
> See doc/driver-model/migration.rst for more info.
> ====================================================
> ===================== WARNING ======================
> This board does not use CONFIG_DM_ETH (Driver Model
> for Ethernet drivers). Please update the board to use
> CONFIG_DM_ETH before the v2020.07 release. Failure to
> update by the deadline may result in board removal.
> See doc/driver-model/migration.rst for more info.
> ====================================================
>
> The conversion of qemu-ppce500 board to driver model is long overdue.
>
> When testing the exisitng qemu-ppce500 support, PCI was found broken.
> This is caused by 2 separate issues:
>
> - One issue was caused by U-Boot:
>   Commit e002474158d1 ("pci: pci-uclass: Dynamically allocate the PCI regions")
>   Patch #1 reverts this commit as it broken all boards that have not converted
>   to driver model PCI.
> - One issue was caused by QEMU:
>   commit e6b4e5f4795b ("PPC: e500: Move CCSR and MMIO space to upper end of address space")
>   commit cb3778a0455a ("PPC: e500 pci host: Add support for ATMUs")
>   Patch #3-4 fixed this issue to keep in sync with latest QEMU upstream
>
> Patch #5-8 are minor fixes and clean-ups.
>
> Starting from patch#9, these are driver model conversion patches.
>
> Patch #11-16 are mainly related to CONFIG_ADDR_MAP, a library to support targets
> that have non-identity virtual-physical address mappings. A new command 'addrmap'
> is introduced to aid debugging, and a fix to arch/powerpc/asm/include/io.h is
> made to correct the usage of CONFIG_ADDR_MAP as it can only be used in the post-
> relocation phase. Also the initialization of this library is moved a bit earlier
> in the post-relocation phase otherwise device drivers won't work.
>
> Patch #18-20 are 85xx PCI driver fixes. It adds support to controller register
> physical address beyond 32-bit, as well as support to 64-bit bus and cpu address
> as current upstream QEMU uses 64-bit cpu address.
>
> Patch #23 is minor fix to the 'virtio' command dependency.
>
> Patch #24 enables the VirtIO NET support as by default a VirtIO standard PCI
> networking device is connected as an ethernet interface at PCI address 0.1.0.
>
> Patch #25 moves the qemu-ppce500 boards codes to board/emulation as that is the
> place for other QEMU targets like x86, arm, riscv.
>
> Patch #26 adds a reST document to describe how to build and run U-Boot for the
> QEMU ppce500 machine.
>
> I hope we can make this series to U-Boot v2021.04 release.
>
> This series is available at u-boot-x86/qemu-ppc for testing.
>
> This cover letter is cc'ed to QEMU mailing list for a heads-up.
> A future patch will be sent to QEMU mailing list to bring its in-tree
> U-Boot source codes up-to-date.
>
>
> Bin Meng (26):
>   Revert "pci: pci-uclass: Dynamically allocate the PCI regions"
>   ppc: qemu: Update MAINTAINERS for correct email address
>   common: fdt_support: Support special case of PCI address in
>     fdt_read_prop()
>   ppc: qemu: Support non-identity PCI bus address
>   ppc: qemu: Fix CONFIG_SYS_PCI_MAP_END
>   ppc: mpc85xx: Wrap LAW related codes with CONFIG_FSL_LAW
>   ppc: qemu: Drop init_laws() and print_laws()
>   ppc: qemu: Drop board_early_init_f()
>   ppc: qemu: Enable OF_CONTROL
>   ppc: qemu: Enable driver model
>   include: Remove extern from addr_map.h
>   lib: addr_map: Move address_map[] type to the header file
>   cmd: Add a command to display the address map
>   lib: kconfig: Mention CONFIG_ADDR_MAP limitation in the help
>   ppc: io.h: Use addrmap_ translation APIs only in post-relocation phase
>   common: Move initr_addr_map() to a bit earlier
>   ppc: qemu: Switch over to use DM serial
>   pci: mpc85xx: Wrap LAW programming with CONFIG_FSL_LAW
>   pci: mpc85xx: Support controller register physical address beyond
>     32-bit
>   pci: mpc85xx: Support 64-bit bus and cpu address
>   ppc: qemu: Switch over to use DM ETH and PCI
>   ppc: qemu: Drop CONFIG_OF_BOARD_SETUP
>   cmd: Fix virtio command dependency
>   ppc: qemu: Enable VirtIO NET support
>   ppc: qemu: Move board directory from board/freescale to
>     board/emulation
>   doc: Add a reST document for qemu-ppce500
>
>  arch/powerpc/cpu/mpc85xx/Kconfig                   |   2 +-
>  arch/powerpc/cpu/mpc85xx/cpu.c                     |   2 +
>  arch/powerpc/cpu/mpc85xx/cpu_init_early.c          |   2 +
>  arch/powerpc/include/asm/io.h                      |  15 +-
>  .../{freescale => emulation}/qemu-ppce500/Kconfig  |   2 +-
>  board/emulation/qemu-ppce500/MAINTAINERS           |   7 +
>  .../{freescale => emulation}/qemu-ppce500/Makefile |   0
>  .../qemu-ppce500/qemu-ppce500.c                    | 159 ++++++---------------
>  board/freescale/qemu-ppce500/MAINTAINERS           |   6 -
>  cmd/Kconfig                                        |   8 ++
>  cmd/Makefile                                       |   1 +
>  cmd/addrmap.c                                      |  35 +++++
>  common/board_r.c                                   |   6 +-
>  common/fdt_support.c                               |  15 +-
>  configs/qemu-ppce500_defconfig                     |  14 +-
>  doc/board/emulation/index.rst                      |   1 +
>  doc/board/emulation/qemu-ppce500.rst               |  73 ++++++++++
>  drivers/pci/pci-uclass.c                           |  14 +-
>  drivers/pci/pci_mpc85xx.c                          |  25 ++--
>  include/addr_map.h                                 |  16 ++-
>  include/configs/qemu-ppce500.h                     |  25 +---
>  include/pci.h                                      |   4 +-
>  lib/Kconfig                                        |   2 +
>  lib/addr_map.c                                     |   6 +-
>  24 files changed, 250 insertions(+), 190 deletions(-)
>  rename board/{freescale => emulation}/qemu-ppce500/Kconfig (86%)
>  create mode 100644 board/emulation/qemu-ppce500/MAINTAINERS
>  rename board/{freescale => emulation}/qemu-ppce500/Makefile (100%)
>  rename board/{freescale => emulation}/qemu-ppce500/qemu-ppce500.c (68%)
>  delete mode 100644 board/freescale/qemu-ppce500/MAINTAINERS
>  create mode 100644 cmd/addrmap.c
>  create mode 100644 doc/board/emulation/qemu-ppce500.rst
>

Alex, Priyanka, do you have some time to review this series?

Regards,
Bin


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-02-10  0:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-07 15:11 [PATCH 00/26] ppc: qemu: Convert qemu-ppce500 to driver model Bin Meng
2021-02-10  0:36 ` Bin Meng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).