Skip to content

Commit

Permalink
Fix fallouts from Linux header inclusion
Browse files Browse the repository at this point in the history
This is an all-in-one fix for the smaller and bigger mistakes of the
build system changes for accompanied Linux headers:
 - only enable KVM and vhost on Linux hosts
 - fix powerpc asm header symlink
 - do not use Linux headers on non-Linux hosts
 - fix kvmclock for !CONFIG_KVM
 - fix s390 build on non-Linux hosts

Signed-off-by: Jan Kiszka <[email protected]>
Tested-by: Andreas Färber <[email protected]>
Tested-by: Stefan Weil <[email protected]>
Signed-off-by: Blue Swirl <[email protected]>
  • Loading branch information
jan-kiszka authored and blueswirl committed Jun 26, 2011
1 parent 744d364 commit af2be20
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 18 deletions.
8 changes: 6 additions & 2 deletions Makefile.target
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ endif

TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
$(call set-vpath, $(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw)
QEMU_CFLAGS+= -I.. -I../linux-headers -I$(TARGET_PATH) -DNEED_CPU_H
ifdef CONFIG_LINUX
QEMU_CFLAGS += -I../linux-headers
endif
QEMU_CFLAGS += -I.. -I$(TARGET_PATH) -DNEED_CPU_H

include $(SRC_PATH)/Makefile.objs

Expand Down Expand Up @@ -234,7 +237,8 @@ obj-i386-y += cirrus_vga.o sga.o apic.o ioapic.o piix_pci.o
obj-i386-y += vmport.o
obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
obj-i386-y += debugcon.o multiboot.o
obj-i386-y += pc_piix.o kvmclock.o
obj-i386-y += pc_piix.o
obj-i386-$(CONFIG_KVM) += kvmclock.o
obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o

# shared objects
Expand Down
34 changes: 19 additions & 15 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ curl=""
curses=""
docs=""
fdt=""
kvm="yes"
kvm=""
nptl=""
sdl=""
vnc="yes"
Expand All @@ -129,7 +129,7 @@ xen=""
xen_ctrl_version=""
linux_aio=""
attr=""
vhost_net="yes"
vhost_net=""
xfs=""

gprof="no"
Expand Down Expand Up @@ -457,6 +457,8 @@ Haiku)
linux="yes"
linux_user="yes"
usb="linux"
kvm="yes"
vhost_net="yes"
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
audio_possible_drivers="$audio_possible_drivers fmod"
fi
Expand Down Expand Up @@ -3444,19 +3446,21 @@ if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
fi

# use included Linux headers
includes="-I\$(SRC_PATH)/linux-headers $includes"
mkdir -p linux-headers
case "$cpu" in
i386|x86_64)
symlink $source_path/linux-headers/asm-x86 linux-headers/asm
;;
ppcemb|ppc|ppc64)
symlink $source_path/linux-headers/asm-x86 linux-headers/asm
;;
s390x)
symlink $source_path/linux-headers/asm-s390 linux-headers/asm
;;
esac
if test "$linux" = "yes" ; then
includes="-I\$(SRC_PATH)/linux-headers $includes"
mkdir -p linux-headers
case "$cpu" in
i386|x86_64)
symlink $source_path/linux-headers/asm-x86 linux-headers/asm
;;
ppcemb|ppc|ppc64)
symlink $source_path/linux-headers/asm-powerpc linux-headers/asm
;;
s390x)
symlink $source_path/linux-headers/asm-s390 linux-headers/asm
;;
esac
fi

echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Expand Down
10 changes: 10 additions & 0 deletions hw/kvmclock.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,14 @@
*
*/

#ifdef CONFIG_KVM

void kvmclock_create(void);

#else /* CONFIG_KVM */

static inline void kvmclock_create(void)
{
}

#endif /* !CONFIG_KVM */
6 changes: 5 additions & 1 deletion target-s390x/op_helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@
#include "helpers.h"
#include <string.h>
#include "kvm.h"
#include <linux/kvm.h>
#include "qemu-timer.h"
#ifdef CONFIG_KVM
#include <linux/kvm.h>
#endif

/*****************************************************************************/
/* Softmmu support */
Expand Down Expand Up @@ -2332,7 +2334,9 @@ static void program_interrupt(CPUState *env, uint32_t code, int ilc)
qemu_log("program interrupt at %#" PRIx64 "\n", env->psw.addr);

if (kvm_enabled()) {
#ifdef CONFIG_KVM
kvm_s390_interrupt(env, KVM_S390_PROGRAM_INT, code);
#endif
} else {
env->int_pgm_code = code;
env->int_pgm_ilc = ilc;
Expand Down

0 comments on commit af2be20

Please sign in to comment.