Re: Latest qemu tcg breakage

Anthony Liguori
2008-06-09T21:02:31Z

Jerone Young wrote:
> Actually I was mistaken. While upstream qemu does compile, after doing a
> clean on my local directory of kvm-userspace. I'm finding that after
> removing cpu-emulation stuff I get a error when building exec.c
>
> In file included from /home/jerone/work/kvm-userspace/qemu/tcg/tcg.h:50,
> from /home/jerone/work/kvm-userspace/qemu/exec.c:40:
> /home/jerone/work/kvm-userspace/qemu/tcg/tcg-opc.h:25:24: dyngen-opc.h:
> No such file or directory
>

dyngen-opc.h is build from op.o. If you removed CONFIG_DYNGEN_OP, op.o
won't be added to LIBOBJS which would cause this problem.

> Now removing CONFIG_DYNGEN from configure yields more errors ;-). This
> is removed for x86 & ia64.
>

Don't do that. PPC still depends on dyngen. Nothing is wrong with
dyngen on PPC, the problem was that TCG didn't support PPC. It does now
though.

Regards,

Anthony Liguori

> So lets not remove it till can git this sorted out. But here is a patch
> attached to play with :-L
>
>
> On Mon, 2008-06-09 at 11:35 -0500, Anthony Liguori wrote:
>
>> Jerone Young wrote:
>>
>>> So upstream qemu is being pervasive about changes with TCG, starting to
>>> place tcg only functions in exec.c . I've spun a quick patch that fixes
>>> things for PowerPC when building qemu. But we need to try and isolate
>>> TCG in upstream qemu as it is starting to leak, and I'm not sure of a
>>> good way to fix it as there is no CONFIG defined for tcg currently.
>>>
>>> Just something to keep in mind.
>>>
>>>
>> Now that TCG supports PPC, shouldn't ya'll be able to drop
>> --disable-cpu-emulation. I believe that will simultaneously fix your
>> problem and reduce the difference between upstream QEMU.
>>
>> Regards,
>>
>> Anthony Liguori
>>
>>
>>> Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
>>>
>>> diff --git a/qemu/Makefile.target b/qemu/Makefile.target
>>> --- a/qemu/Makefile.target
>>> +++ b/qemu/Makefile.target
>>> @@ -196,7 +196,6 @@ LIBOBJS+=fake-exec.o
>>> LIBOBJS+=fake-exec.o
>>> else
>>> LIBOBJS+= translate-all.o translate.o
>>> -endif
>>> ifdef CONFIG_DYNGEN_OP
>>> LIBOBJS+=op.o
>>> endif
>>> @@ -205,6 +204,7 @@ CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH
>>> CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
>>> ifeq ($(ARCH),sparc64)
>>> CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
>>> +endif
>>> endif
>>>
>>> ifeq ($(USE_KVM), 1)
>>> diff --git a/qemu/exec.c b/qemu/exec.c
>>> --- a/qemu/exec.c
>>> +++ b/qemu/exec.c
>>> @@ -37,8 +37,11 @@
>>> #include "exec-all.h"
>>> #include "qemu-common.h"
>>>
>>> +#ifdef USE_KVM
>>> +#include "qemu-kvm.h"
>>> +#else
>>> #include "tcg.h"
>>> -#include "qemu-kvm.h"
>>> +#endif
>>>
>>> #if defined(CONFIG_USER_ONLY)
>>> #include <qemu.h>
>>> @@ -3197,7 +3200,9 @@ void dump_exec_info(FILE *f,
>>> cpu_fprintf(f, "TB flush count %d\n", tb_flush_count);
>>> cpu_fprintf(f, "TB invalidate count %d\n",
>>> tb_phys_invalidate_count);
>>> cpu_fprintf(f, "TLB flush count %d\n", tlb_flush_count);
>>> +#if !defined(USE_KVM)
>>> tcg_dump_info(f, cpu_fprintf);
>>> +#endif
>>> }
>>>
>>> #if !defined(CONFIG_USER_ONLY)
>>>
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe kvm" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe kvm" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>