Il 12/06/2014 11:06, Greg Kurz ha scritto:
On Thu, 12 Jun 2014 10:55:42 +0200
Paolo Bonzini <pbonz...@redhat.com> wrote:

Il 12/06/2014 09:43, Greg Kurz ha scritto:
Since we know that 0 < max_nr_ports < 32,  is it acceptable to guess
the correct endianness with a heuristic ?

if (max_nr_ports > tswap32(s->config.max_nr_ports)) {
        max_nr_ports = bswap32(max_nr_ports);
}

if (max_nr_ports > tswap32(s->config.max_nr_ports)) {
        return -EINVAL;
}

Yes, I guess it is acceptable.  So first you should fix the code to
always serialize fields as big-endian, and then apply this little hack
and virtio_tswap on top of the previous change.

BTW, can someone explain why we stream the device config ?

For max_nr_ports it is useless indeed. Let's keep storing it for backwards compatibility, but you can remove its load.

The cols and rows values should be defined by the host and thus could even change on migration, there is no need to store them. As of now, however, they are unused in QEMU and should always be zero, because VIRTIO_CONSOLE_F_SIZE is not supported.

Paolo

Reply via email to