On 03/07/2017 12:20, Daniel P. Berrange wrote: >> >> +if test "$tcg" = "no"; then >> + for target in $target_list; do >> + if test "$softmmu" = "yes"; then >> + case $target in >> + i386-softmmu|x86_64-softmmu) >> + ;; >> + *) >> + error_exit "The current $target can't support disable-tcg,"\ >> + "only i386-softmmu|x86_64-softmmu support disable-tcg" >> + ;; > This looks too simplistic in its logic. > > You can disable TCG, if-and-only-if the system emulator supports KVM. > > KVM is supported on many architectures, not only x86-64 & i386. > > KVM is only supported if the guest emulator architecture matches the > host build target architecture. > > ie if you are building an x86_64 system emulator on a PPC64 host, > then you can't disable TCG. > > So this needs rewriting to *not* special case x86_64 / i386. Instead > you need to compare & match build target / system emulator architectures, > across all architectures supporting KVM.
i386-softmmu and x86_64-softmmu are singled out here, because they're the only targets where --disable-tcg compiles. For the others, more work is needed (see patches 6-15 in Yang Zhong's series). The part that is missing in this patch is disabling non-hypervisor targets when --disable-tcg is specified. My original patch built only i386-softmmu and x86_64-softmmu if you specified --disable-tcg, see https://lists.nongnu.org/archive/html/qemu-devel/2012-09/msg02570.html https://lists.nongnu.org/archive/html/qemu-devel/2012-09/msg02571.html Paolo