On Mon, 2 Nov 2026 at 10:42, Lorand Marton <[email protected]> wrote:
>
> Based-on: <[email protected]>
>
> Two fixes for the BCM2838 GENET model of "[PATCH v6 00/17]
> hw/arm/raspi4b: working PCIe and GENET (real networking)", which is in
> target-arm.next. They apply to target-arm.next; if that is simpler,
> they can also be folded into patch 12/17 (implement GENET TX path) and
> patch 13/17 (implement GENET RX path) of that series.
>
> - The TX consumer index counted past 16 bits, so the first transmit
>   across the wrap never ended: the device sent the ring's descriptors
>   forever with the BQL held, and the guest and the monitor hung. A
>   guest sending a sustained stream hung after about 65k descriptors.
> - The RX path wrote frames past the consumer index of a full ring and
>   overwrote frames the guest had not read. The fix keeps them queued
>   in the net layer until the guest frees descriptors, as e1000 does;
>   real GENET drops them and counts them in DISCARD_CNT.
>
> Patch 1 adds tests/qtest/bcm2838-genet-test.c. Each test fails with
> only its fix reverted (the TX test hangs).
>
> I found these bugs while running Raspberry Pi OS images on a model of
> the Compute Module 4: https://github.com/LorandMarton/boardtwin. Its
> QEMU changes are on the boardtwin-develop branch of
> https://github.com/LorandMarton/qemu. I intend to send the board model
> (raspicm4) after the 11.2 release.
>
> Checked: each patch builds and passes the test; the aarch64 qtests
> pass (33, 3 skipped: the slow cdrom test and the two swtpm tests).
>
> Lorand Marton (2):
>   hw/net/bcm2838_genet: wrap the TX consumer index at 16 bits
>   hw/net/bcm2838_genet: hold RX frames while the ring is full



Applied to target-arm.next, thanks.

-- PMM

Reply via email to