Re: [PATCH 00/26] ppc: qemu: Convert qemu-ppce500 to driver model
On Sun, Feb 7, 2021 at 11:11 PM Bin Meng 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
[PATCH 00/26] ppc: qemu: Convert qemu-ppce500 to driver model
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 +-