On 01/06/2016 04:33, David Gibson wrote: > On Tue, May 31, 2016 at 03:15:21PM +0200, Paolo Bonzini wrote: >> >> >> On 31/05/2016 15:10, Greg Kurz wrote: >>>>>>> +#if defined(TARGET_PPC64) || defined(TARGET_ARM) >>>>>>> +#define LEGACY_VIRTIO_IS_BIENDIAN 1 >>>>>>> +#endif >>>>> >>>>> These will only be correct if something else includes cpu.h. Instead of >>> Unless I missed something, the TARGET_* macros come from the generated >>> config-target.h header, which is in turn included by qemu/osdep.h and >>> thus included by most of the code. >> >> You're right. Problems _could_ happen if virtio-access.h is included in >> a file compiled without -DNEED_CPU_H (i.e. with common-obj-y instead of >> obj-y) but include/exec/poison.h should take care of that. >> >>>>> defining this, you should add >>>>> >>>>> #include "cpu.h" >>>>> >>>>> at the top of include/hw/virtio-access.h and leave the definitions in >>>>> target-*/cpu.h. >>>>> >>> All this bi-endian stuff is really an old-virtio-only thing... it is >>> only to be used by virtio_access_is_big_endian(). The fact that it >>> broke silently with your cleanup series is yet another proof that >>> this workaround is fragile. >> >> It is not fragile actually. cpu.h doesn't exist in common-obj-y, so the >> TARGET_IS_BIENDIAN define can be safely taken from cpu.h. >> >> Anyway because of poison.h your solution isn't fragile either, so >> >> Reviewed-by: Paolo Bonzini <pbonz...@redhat.com> > > Should I take this through my tree?
If you don't hear from mst, go ahead. Paolo