Some further observations:
I tried booting the 6.1.0-29-amd64 kernel and continue to see the same
behaviour (i.e. system is unbootable).
These are servers running xen. If I boot the affected kernels directly
rather than via the xen hypervisor, I can boot succesfully.
Under xen, I have tried a few values of swiotlb on the kernel cmdline
(by specifying GRUB_CMDLINE_LINUX_DEFAULT). I had not previously been
specifying a value for swiotlb so presumably had the default value in
effect. With swiotlb=65536 I had the same inabilty to boot with "swiotlb
buffer is full", but doubling up to swiotlb=131072 lets me boot
6.1.0-29-amd64 .