From: Marcelo Manzo <marcelomanzo@gmail.com>
To: qemu-devel@nongnu.org, qemu-arm@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Philippe Mathieu-Daudé" <philmd@oss.qualcomm.com>,
"Marcelo Manzo" <marcelomanzo@gmail.com>
Subject: [PATCH v2 00/19] hw/arm/raspi4b: working PCIe and GENET (real networking)
Date: Tue, 11 Aug 2026 10:35:37 -0400 [thread overview]
Message-ID: <20260811143557.7862-1-marcelomanzo@gmail.com> (raw)
This series gets raspi4b's PCIe root complex and GENET Ethernet
controller working end to end: the PCIe link comes up and devices on
it actually enumerate, and GENET passes real network traffic (DHCP,
SSH) under both older and newer guest kernels.
v2: per Peter Maydell's review of two follow-up series posted after
this one ("hw/arm/bcm2838_pcie: make PCI device enumeration work" and
half of "hw/arm/raspi4b: fix watchdog and GENET bugs hit by modern
distro kernels"), folded both of those bugfixes directly into the
patches here that introduce the affected code, since neither
bcm2838_pcie.c nor bcm2838_genet.c is in upstream git yet:
- patch 2 ("add BCM2838 PCIe host") and patch 3 ("enable BCM2838
PCIe host bridge") now include the PCI enumeration fix (config
space read/write underflow, missing pcie_host_mmcfg_init(),
wrongly-overridden config_read/config_write, and the MMIO window
address-translation fix) instead of introducing it broken and
fixing it in a later series;
- patch 6, 9, 10, 12, and 13 now include the per-ring DMA
status/RX-ring-selection fix (proper per-ring enable bitmask for
both RDMA and TDMA, a queued-packet flush on ring enable, and
scanning for the first active ring instead of assuming the last
one) instead of introducing that bug and fixing it afterwards;
- patch 18 carries the accompanying docs note about PCIe MSI/MSI-X
not being implemented (use msi=off,msix=off).
Those two follow-up threads are superseded by this v2 and shouldn't be
applied standalone. No functional changes beyond what those two fixes
already did -- this is purely relocating the same diffs to where the
buggy code was first introduced. checkpatch.pl is clean (0 errors)
across all 19 patches, the series builds standalone from a clean
worktree (--target-list=aarch64-softmmu), and the full
tests/functional/aarch64/test_raspi4.py suite passes, including the
GENET and PCIe tests that exercise exactly the folded-in fixes.
Marcelo Manzo (10):
hw/arm/bcm2838_pcie: add BCM2838 PCIe Root Complex
hw/arm/bcm2838_pcie: add BCM2838 PCIe host
hw/arm/bcm2838: enable BCM2838 PCIe host bridge
hw/net/bcm2838_genet: add GENET stub device
hw/arm/bcm2838: enable BCM2838 GENET controller
hw/net/bcm2838_genet: fix PHY autonegotiation-restart deadlock
hw/net/bcm2838_genet: fix bogus RX checksum reporting
hw/net/bcm2838_genet: fix TX ring activation check
docs/system/arm/raspi: move PCIe/GENET from missing to implemented
tests/functional/aarch64: add raspi4b GENET networking test
Sergey Kambalin (9):
hw/net/bcm2838_genet: add GENET register structs, part 1/4
hw/net/bcm2838_genet: add GENET register structs, part 2/4
hw/net/bcm2838_genet: add GENET register structs, part 3/4
hw/net/bcm2838_genet: add GENET register structs, part 4/4
hw/net/bcm2838_genet: add GENET register access macros
hw/net/bcm2838_genet: implement GENET register ops
hw/net/bcm2838_genet: implement GENET MDIO
hw/net/bcm2838_genet: implement GENET TX path
hw/net/bcm2838_genet: implement GENET RX path
docs/system/arm/raspi.rst | 6 +-
hw/arm/bcm2838.c | 15 +
hw/arm/bcm2838_pcie.c | 308 +++++++
hw/arm/bcm2838_peripherals.c | 46 +
hw/arm/meson.build | 4 +-
hw/arm/raspi4b.c | 2 -
hw/arm/trace-events | 4 +
hw/net/bcm2838_genet.c | 1119 +++++++++++++++++++++++
hw/net/meson.build | 2 +
hw/net/trace-events | 16 +
include/hw/arm/bcm2838_pcie.h | 75 ++
include/hw/arm/bcm2838_peripherals.h | 7 +
include/hw/net/bcm2838_genet.h | 428 +++++++++
tests/functional/aarch64/test_raspi4.py | 30 +
14 files changed, 2057 insertions(+), 5 deletions(-)
create mode 100644 hw/arm/bcm2838_pcie.c
create mode 100644 hw/net/bcm2838_genet.c
create mode 100644 include/hw/arm/bcm2838_pcie.h
create mode 100644 include/hw/net/bcm2838_genet.h
--
2.47.1
next reply other threads:[~2026-08-11 14:37 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-11 14:35 Marcelo Manzo [this message]
2026-08-11 14:35 ` [PATCH v2 01/19] hw/arm/bcm2838_pcie: add BCM2838 PCIe Root Complex Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 02/19] hw/arm/bcm2838_pcie: add BCM2838 PCIe host Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 03/19] hw/arm/bcm2838: enable BCM2838 PCIe host bridge Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 04/19] hw/net/bcm2838_genet: add GENET stub device Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 05/19] hw/net/bcm2838_genet: add GENET register structs, part 1/4 Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 06/19] hw/net/bcm2838_genet: add GENET register structs, part 2/4 Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 07/19] hw/net/bcm2838_genet: add GENET register structs, part 3/4 Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 08/19] hw/net/bcm2838_genet: add GENET register structs, part 4/4 Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 09/19] hw/net/bcm2838_genet: add GENET register access macros Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 10/19] hw/net/bcm2838_genet: implement GENET register ops Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 11/19] hw/net/bcm2838_genet: implement GENET MDIO Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 12/19] hw/net/bcm2838_genet: implement GENET TX path Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 13/19] hw/net/bcm2838_genet: implement GENET RX path Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 14/19] hw/arm/bcm2838: enable BCM2838 GENET controller Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 15/19] hw/net/bcm2838_genet: fix PHY autonegotiation-restart deadlock Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 16/19] hw/net/bcm2838_genet: fix bogus RX checksum reporting Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 17/19] hw/net/bcm2838_genet: fix TX ring activation check Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 18/19] docs/system/arm/raspi: move PCIe/GENET from missing to implemented Marcelo Manzo
2026-08-11 14:35 ` [PATCH v2 19/19] tests/functional/aarch64: add raspi4b GENET networking test Marcelo Manzo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260811143557.7862-1-marcelomanzo@gmail.com \
--to=marcelomanzo@gmail.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@oss.qualcomm.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox