b55f546eef
Recent kernels have moved to keeping the userspace headers in uapi/ subdirectories. This breaks the detection of whether an architecture has KVM support in the kernel because kvm.h has moved in the kernel source tree. Update the check to support both the old and new locations. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
76 lines
2.1 KiB
Bash
Executable File
76 lines
2.1 KiB
Bash
Executable File
#!/bin/sh -e
|
|
#
|
|
# Update Linux kernel headers QEMU requires from a specified kernel tree.
|
|
#
|
|
# Copyright (C) 2011 Siemens AG
|
|
#
|
|
# Authors:
|
|
# Jan Kiszka <jan.kiszka@siemens.com>
|
|
#
|
|
# This work is licensed under the terms of the GNU GPL version 2.
|
|
# See the COPYING file in the top-level directory.
|
|
|
|
tmpdir=`mktemp -d`
|
|
linux="$1"
|
|
output="$2"
|
|
|
|
if [ -z "$linux" ] || ! [ -d "$linux" ]; then
|
|
cat << EOF
|
|
usage: update-kernel-headers.sh LINUX_PATH [OUTPUT_PATH]
|
|
|
|
LINUX_PATH Linux kernel directory to obtain the headers from
|
|
OUTPUT_PATH output directory, usually the qemu source tree (default: $PWD)
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$output" ]; then
|
|
output="$PWD"
|
|
fi
|
|
|
|
# This will pick up non-directories too (eg "Kconfig") but we will
|
|
# ignore them in the next loop.
|
|
ARCHLIST=$(cd "$linux/arch" && echo *)
|
|
|
|
for arch in $ARCHLIST; do
|
|
# Discard anything which isn't a KVM-supporting architecture
|
|
if ! [ -e "$linux/arch/$arch/include/asm/kvm.h" ] &&
|
|
! [ -e "$linux/arch/$arch/include/uapi/asm/kvm.h" ] ; then
|
|
continue
|
|
fi
|
|
|
|
# Blacklist architectures which have KVM headers but are actually dead
|
|
if [ "$arch" = "ia64" ]; then
|
|
continue
|
|
fi
|
|
|
|
make -C "$linux" INSTALL_HDR_PATH="$tmpdir" SRCARCH=$arch headers_install
|
|
|
|
rm -rf "$output/linux-headers/asm-$arch"
|
|
mkdir -p "$output/linux-headers/asm-$arch"
|
|
for header in kvm.h kvm_para.h; do
|
|
cp "$tmpdir/include/asm/$header" "$output/linux-headers/asm-$arch"
|
|
done
|
|
if [ $arch = x86 ]; then
|
|
cp "$tmpdir/include/asm/hyperv.h" "$output/linux-headers/asm-x86"
|
|
fi
|
|
done
|
|
|
|
rm -rf "$output/linux-headers/linux"
|
|
mkdir -p "$output/linux-headers/linux"
|
|
for header in kvm.h kvm_para.h vfio.h vhost.h virtio_config.h virtio_ring.h; do
|
|
cp "$tmpdir/include/linux/$header" "$output/linux-headers/linux"
|
|
done
|
|
rm -rf "$output/linux-headers/asm-generic"
|
|
mkdir -p "$output/linux-headers/asm-generic"
|
|
for header in kvm_para.h; do
|
|
cp "$tmpdir/include/asm-generic/$header" "$output/linux-headers/asm-generic"
|
|
done
|
|
if [ -L "$linux/source" ]; then
|
|
cp "$linux/source/COPYING" "$output/linux-headers"
|
|
else
|
|
cp "$linux/COPYING" "$output/linux-headers"
|
|
fi
|
|
|
|
rm -rf "$tmpdir"
|