On Thu, Apr 17, 2025 at 6:26 PM Cindy Lu <l...@redhat.com> wrote: > > For VDPA devices, Allow configurations where both the hardware MAC address > and QEMU command line MAC address are zero. > In this case, QEMU will automatically generate a random MAC address and > assign it to the hardware, and the VM will use this random MAC address as > its MAC address. > > Signed-off-by: Cindy Lu <l...@redhat.com> > --- > hw/net/virtio-net.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c > index 808a2fe4d4..2d4ac20ee0 100644 > --- a/hw/net/virtio-net.c > +++ b/hw/net/virtio-net.c > @@ -3772,7 +3772,18 @@ static bool virtio_net_check_vdpa_mac(VirtIONet *n, > uint8_t *hwmac, > return true; > } > } > + /* > + * 3. The hardware MAC address is 0, > + * and the MAC address in the QEMU command line is also 0.
Can this happen? I'd expect qemu should check for invalid mac addresses. > + * In this situation, QEMU generates a random MAC address and > + * uses CVQ/set_config to assign it to the device. > + */ > + if ((memcmp(hwmac, &zero, sizeof(MACAddr)) == 0) && > + (memcmp(cmdline_mac, &zero, sizeof(MACAddr)) == 0)) { > + memcpy(&n->mac[0], &n->nic_conf.macaddr, sizeof(n->mac)); > > + return true; > + } > return false; > } > static void virtio_net_device_realize(DeviceState *dev, Error **errp) > -- > 2.45.0 > Thanks