On Sun, 16 Mar 2008 13:13:08 +0200 Avi Kivity wrote:
Randy Dunlap wrote:
From: Randy Dunlap <randy.dunlap@xxxxxxxxxx>Looks like it's a general paravirt vs voyager issue, nothing kvmclock specific about it. Wouldn't it be better to have voyager and paravirt mutually exclude each other, rather than every paravirt user?
Make KVM_CLOCK depend on HAVE_KVM. Otherwise a Voyager build can
fail with:
CC arch/x86/kernel/asm-offsets.s
In file included from include2/asm/irqflags.h:59,
from /local/linsrc/next-20080314/include/linux/irqflags.h:46,
from include2/asm/system.h:11,
from include2/asm/processor.h:21,
from include2/asm/atomic_32.h:5,
from include2/asm/atomic.h:2,
from /local/linsrc/next-20080314/include/linux/crypto.h:20,
from /local/linsrc/next-20080314/arch/x86/kernel/asm-offsets_32.c:7,
from /local/linsrc/next-20080314/arch/x86/kernel/asm-offsets.c:2:
include2/asm/paravirt.h: In function 'startup_ipi_hook':
include2/asm/paravirt.h:856: error: 'struct pv_apic_ops' has no member named 'startup_ipi_hook'
include2/asm/paravirt.h:856: error: 'struct pv_apic_ops' has no member named 'startup_ipi_hook'
include2/asm/paravirt.h:856: error: memory input 4 is not directly addressable
make[2]: *** [arch/x86/kernel/asm-offsets.s] Error 1
make[1]: *** [prepare0] Error 2
make: *** [sub-make] Error 2
They do generally mutually exclude each other. I think that the problem
is just that dirty old "select PARAVIRT" in config KVM_CLOCK.
PARAVIRT depends on !(X86_VISWS || X86_VOYAGER), but "select" doesn't
care^W honor that. As Documentation/kbuild/kconfig-language.txt says:
"In general use select only for
non-visible symbols (no prompts anywhere) and for symbols with
no dependencies. That will limit the usefulness but on the
other hand avoid the illegal configurations all over. kconfig
should one day warn about such things."
so changing the select to depends on would fix it, but that's the
only fix that I know of.