On Thu, 2011-05-05 at 07:47 +0800, Asias He wrote: > On 05/04/2011 12:41 PM, Sasha Levin wrote: > > On Tue, 2011-05-03 at 22:47 +0200, Ingo Molnar wrote: > >> * Sasha Levin <levinsasha928@xxxxxxxxx> wrote: > >> > >>> Increase idx only after updating the used element. > >>> Not doing so may mark a buffer as used without having > >>> it's head and length updated. > >>> > >>> Signed-off-by: Sasha Levin <levinsasha928@xxxxxxxxx> > >>> --- > >>> tools/kvm/virtio.c | 19 ++++++++++++++++++- > >>> 1 files changed, 18 insertions(+), 1 deletions(-) > >>> > >>> diff --git a/tools/kvm/virtio.c b/tools/kvm/virtio.c > >>> index 6249521..266a1b6 100644 > >>> --- a/tools/kvm/virtio.c > >>> +++ b/tools/kvm/virtio.c > >>> @@ -1,15 +1,32 @@ > >>> #include <linux/virtio_ring.h> > >>> #include <stdint.h> > >>> #include <sys/uio.h> > >>> +#include <asm/system.h> > >> > >> If this system.h is included from the current kernel (and not from the > >> system's) then: > >> > >> Acked-by: Ingo Molnar <mingo@xxxxxxx> > >> > > > > The system.h that'll get picked up is > > '../../arch/$(ARCH)/include/asm/system.h' within the current kernel tree > > and not the system one. > >> Thanks, > >> > >> Ingo > > > > Hi, > > With commit d7f0c07afeefa2d20739437306e4b8bb2853cf83 in master > (kvm tools: Fix virt_queue__set_used_elem) > > I see this: > > asias@hj:~/qemu-stuff/pekka.git/tools/kvm$ make > GEN include/common-cmds.h > ../../include/asm-generic/bitops/fls64.h:33:2: error: #error > BITS_PER_LONG not 32 or 64 > ../../include/linux/bitops.h:133:2: error: #error BITS_PER_LONG not 32 or 64 > ../../include/asm-generic/bitops/fls64.h:33:2: error: #error > BITS_PER_LONG not 32 or 64 > ../../include/linux/bitops.h:133:2: error: #error BITS_PER_LONG not 32 or 64 > make: *** No rule to make target `virtio.d', needed by `kvm'. Stop. > > > With 'make V=1', I found this one triggered the error: > > cc -M -MT virtio.o -DCONFIG_X86_32 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE > -Iinclude -I../../include -I../../arch/x86/include/ -Os -g -Werror -Wall > -Wcast-align -Wformat=2 -Winit-self -Wmissing-declarations > -Wmissing-prototypes -Wnested-externs -Wno-system-headers > -Wold-style-definition -Wredundant-decls -Wsign-compare > -Wstrict-prototypes -Wundef -Wvolatile-register-var -Wwrite-strings > virtio.c -o virtio.d > > It looks like gcc is trying to pull kernel headers instead the headers we have in include/linux. I'm not really sure why it happens though, I've tried building again with a clean kvm dir (in case I forgot to add a file to the commit) but it worked fine. Can you compare your include/linux dir to the one located on the master git tree? -- Sasha. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html