Thanks for the review.

> Should the update be wrapped in local_bh_disable() and local_bh_enable(),
> or use the _irqsave variant?

I do not think that change is required for the reported odd-seqcount
deadlock on the configurations supported by MANA.

On the v6 base, MICROSOFT_MANA depends on X86_64 or little-endian ARM64.
The rebased v7 retains that PCI architecture restriction, and its upstream
CDX transport separately requires 64BIT. Neither provides a supported
32-bit MANA path.

In include/linux/u64_stats_sync.h, struct u64_stats_sync has a seqcount
only when BITS_PER_LONG == 32. In the 64-bit implementation, the update
helpers are empty, fetch_begin returns zero, and fetch_retry returns false.
There is therefore no odd sequence value or retry spin through which the
reported same-CPU writer-preemption deadlock can occur.

The folding operation is serialized by RTNL and occurs after the retiring
RX drain-stat writers have quiesced. I am leaving this unchanged in v7
rather than adding BH/IRQ disabling to address the unsupported 32-bit
scenario. This is not a claim that arbitrary 32-bit use of these helpers
would be safe; the series does not add that support.

Separately, the dashboard retains the pre-existing xdp_xmit writer concern
also reported for patch 3. That unlocked increment already exists on the
unmodified base. It is a real statistics race, recorded for a separate fix,
and is not fixed by this revision.

Thanks,
Wei

Reply via email to