* [PATCH 1 of 7] user: consolidate $arch tests and allow $arch to be "<arch>-<processor>"
2008-10-29 18:27 [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture Hollis Blanchard
@ 2008-10-29 18:27 ` Hollis Blanchard
[not found] ` <f9e70364f32892700c73.1225304869-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-10-29 18:27 ` [PATCH 2 of 7] kvmctl: add --processor option to user/configure Hollis Blanchard
` (7 subsequent siblings)
8 siblings, 1 reply; 11+ messages in thread
From: Hollis Blanchard @ 2008-10-29 18:27 UTC (permalink / raw)
To: avi; +Cc: kvm, kvm-ppc
Use case/esac instead of multiple if/fi tests, allowing us to use wildcards.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -87,26 +87,21 @@ done
#set kenel directory
libkvm_kerneldir=$(readlink -f kernel)
-#if arch is an x86 arch set to i386
-if [[ $arch = i?86 ]]; then
- arch="i386"
-fi
-
-#set parameters compiling
-if [ "$arch" = "i386" -o "$arch" = "x86_64" ]; then
- target_exec="x86_64-softmmu"
- qemu_cflags="$qemu_cflags -DCONFIG_X86"
-fi
-
-if [ "$arch" = "ia64" ]; then
- target_exec="ia64-softmmu"
-fi
-
-if [ "$arch" = "powerpc" ]; then
- target_exec="ppcemb-softmmu"
- qemu_cflags="$qemu_cflags -I $PWD/libfdt"
- qemu_ldflags="$qemu_ldflags -L $PWD/libfdt"
-fi
+case $arch in
+ i?86*|x86_64*)
+ arch=${arch/#i?86/i386}
+ target_exec="x86_64-softmmu"
+ qemu_cflags="$qemu_cflags -DCONFIG_X86"
+ ;;
+ ia64*)
+ target_exec="ia64-softmmu"
+ ;;
+ powerpc*)
+ target_exec="ppcemb-softmmu"
+ qemu_cflags="$qemu_cflags -I $PWD/libfdt"
+ qemu_ldflags="$qemu_ldflags -L $PWD/libfdt"
+ ;;
+esac
# see if we have split build and source directories
if [ -d "$kerneldir/include2" ]; then
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 2 of 7] kvmctl: add --processor option to user/configure
2008-10-29 18:27 [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture Hollis Blanchard
2008-10-29 18:27 ` [PATCH 1 of 7] user: consolidate $arch tests and allow $arch to be "<arch>-<processor>" Hollis Blanchard
@ 2008-10-29 18:27 ` Hollis Blanchard
2008-10-29 18:27 ` [PATCH 3 of 7] user: set $PROCESSOR from configure --arch=<arch>-<processor> Hollis Blanchard
` (6 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Hollis Blanchard @ 2008-10-29 18:27 UTC (permalink / raw)
To: avi; +Cc: kvm, kvm-ppc
Use that to export PROCESSOR in user/config.mak.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
diff --git a/user/configure b/user/configure
--- a/user/configure
+++ b/user/configure
@@ -6,6 +6,7 @@ ld=ld
ld=ld
objcopy=objcopy
arch=`uname -m | sed -e s/i.86/i386/`
+processor="$arch"
cross_prefix=
usage() {
@@ -40,6 +41,9 @@ while [[ "$1" = -* ]]; do
--arch)
arch="$arg"
;;
+ --processor)
+ processor="$arg"
+ ;;
--cross-prefix)
cross_prefix="$arg"
;;
@@ -62,6 +66,7 @@ PREFIX=$prefix
PREFIX=$prefix
KERNELDIR=$(readlink -f $kerneldir)
ARCH=$arch
+PROCESSOR=$processor
CC=$cross_prefix$cc
LD=$cross_prefix$ld
OBJCOPY=$cross_prefix$objcopy
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 3 of 7] user: set $PROCESSOR from configure --arch=<arch>-<processor>
2008-10-29 18:27 [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture Hollis Blanchard
2008-10-29 18:27 ` [PATCH 1 of 7] user: consolidate $arch tests and allow $arch to be "<arch>-<processor>" Hollis Blanchard
2008-10-29 18:27 ` [PATCH 2 of 7] kvmctl: add --processor option to user/configure Hollis Blanchard
@ 2008-10-29 18:27 ` Hollis Blanchard
2008-10-29 18:27 ` [PATCH 4 of 7] kvmctl: rename config-powerpc-44x.mak Hollis Blanchard
` (5 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Hollis Blanchard @ 2008-10-29 18:27 UTC (permalink / raw)
To: avi; +Cc: kvm, kvm-ppc
Export PROCESSOR in config.mak, and call user/configure with the --processor
option.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -103,6 +103,9 @@ case $arch in
;;
esac
+processor=${arch#*-}
+arch=${arch%%-*}
+
# see if we have split build and source directories
if [ -d "$kerneldir/include2" ]; then
kernelsourcedir=${kerneldir%/*}/source
@@ -110,7 +113,7 @@ fi
#configure user dir
(cd user; ./configure --prefix="$prefix" --kerneldir="$libkvm_kerneldir" \
- --arch="$arch" \
+ --arch="$arch" --processor="$processor" \
${cross_prefix:+"--cross-prefix=$cross_prefix"})
#configure qemu
@@ -128,6 +131,7 @@ fi
cat <<EOF > config.mak
ARCH=$arch
+PROCESSOR=$processor
PREFIX=$prefix
KERNELDIR=$kerneldir
KERNELSOURCEDIR=$kernelsourcedir
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 4 of 7] kvmctl: rename config-powerpc-44x.mak
2008-10-29 18:27 [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture Hollis Blanchard
` (2 preceding siblings ...)
2008-10-29 18:27 ` [PATCH 3 of 7] user: set $PROCESSOR from configure --arch=<arch>-<processor> Hollis Blanchard
@ 2008-10-29 18:27 ` Hollis Blanchard
2008-10-29 18:27 ` [PATCH 5 of 7] kvmctl: ppc: use $PROCESSOR to set configuration options Hollis Blanchard
` (4 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Hollis Blanchard @ 2008-10-29 18:27 UTC (permalink / raw)
To: avi; +Cc: kvm, kvm-ppc
This will make for a more user-friendly "configure --arch=powerpc-440" instead
of "configure --arch=powerpc-44x". There aren't any other PowerPC 44x anyways
(model numbers are already in the 460s).
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
diff --git a/user/config-powerpc-44x.mak b/user/config-powerpc-440.mak
rename from user/config-powerpc-44x.mak
rename to user/config-powerpc-440.mak
diff --git a/user/config-powerpc.mak b/user/config-powerpc.mak
--- a/user/config-powerpc.mak
+++ b/user/config-powerpc.mak
@@ -1,4 +1,4 @@ platform := 44x
-platform := 44x
+platform := 440
CFLAGS += -m32
CFLAGS += -D__powerpc__
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 5 of 7] kvmctl: ppc: use $PROCESSOR to set configuration options
2008-10-29 18:27 [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture Hollis Blanchard
` (3 preceding siblings ...)
2008-10-29 18:27 ` [PATCH 4 of 7] kvmctl: rename config-powerpc-44x.mak Hollis Blanchard
@ 2008-10-29 18:27 ` Hollis Blanchard
2008-10-29 18:27 ` [PATCH 6 of 7] user: ppc: remove build flags Hollis Blanchard
` (3 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Hollis Blanchard @ 2008-10-29 18:27 UTC (permalink / raw)
To: avi; +Cc: kvm, kvm-ppc
PowerPC variants are different enough that they require a different libcflat
build and different testcases.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
diff --git a/user/config-powerpc.mak b/user/config-powerpc.mak
--- a/user/config-powerpc.mak
+++ b/user/config-powerpc.mak
@@ -1,5 +1,3 @@ platform := 440
-platform := 440
-
CFLAGS += -m32
CFLAGS += -D__powerpc__
CFLAGS += -I $(KERNELDIR)/include
@@ -23,7 +21,7 @@ tests := \
tests := \
test/powerpc/exit.bin
-include config-powerpc-$(platform).mak
+include config-powerpc-$(PROCESSOR).mak
all: kvmtrace kvmctl $(libcflat) $(simpletests) $(tests)
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 6 of 7] user: ppc: remove build flags
2008-10-29 18:27 [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture Hollis Blanchard
` (4 preceding siblings ...)
2008-10-29 18:27 ` [PATCH 5 of 7] kvmctl: ppc: use $PROCESSOR to set configuration options Hollis Blanchard
@ 2008-10-29 18:27 ` Hollis Blanchard
2008-10-29 18:27 ` [PATCH 7 of 7] user: define and use AR in configure scripts and Makefiles Hollis Blanchard
` (2 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Hollis Blanchard @ 2008-10-29 18:27 UTC (permalink / raw)
To: avi; +Cc: kvm, kvm-ppc
Remove -m32 build flag. Although necessary when building for a 32-bit target
with a biarch toolchain that defaults to 64-bit output, it naturally breaks
64-bit builds.
Also remove -D__powerpc__. I'm not sure why I added that in the first place;
that is automatically defined by GCC (for both 32- and 64-bit targets).
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
diff --git a/libkvm/config-powerpc.mak b/libkvm/config-powerpc.mak
--- a/libkvm/config-powerpc.mak
+++ b/libkvm/config-powerpc.mak
@@ -1,6 +1,4 @@
LIBDIR := /lib
-CFLAGS += -m32
-CFLAGS += -D__powerpc__
libkvm-$(ARCH)-objs := libkvm-powerpc.o
diff --git a/user/config-powerpc.mak b/user/config-powerpc.mak
--- a/user/config-powerpc.mak
+++ b/user/config-powerpc.mak
@@ -1,5 +1,3 @@ CFLAGS += -m32
-CFLAGS += -m32
-CFLAGS += -D__powerpc__
CFLAGS += -I $(KERNELDIR)/include
CFLAGS += -Wa,-mregnames -I test/lib
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 7 of 7] user: define and use AR in configure scripts and Makefiles
2008-10-29 18:27 [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture Hollis Blanchard
` (5 preceding siblings ...)
2008-10-29 18:27 ` [PATCH 6 of 7] user: ppc: remove build flags Hollis Blanchard
@ 2008-10-29 18:27 ` Hollis Blanchard
2008-10-30 12:57 ` [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture Christian Ehrhardt
[not found] ` <patchbomb.1225304868-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
8 siblings, 0 replies; 11+ messages in thread
From: Hollis Blanchard @ 2008-10-29 18:27 UTC (permalink / raw)
To: avi; +Cc: kvm, kvm-ppc
libkvm/Makefile uses $(AR), but it's not defined by the top-level configure.
The problem is that when cross-compiling for a 64-bit target on a 32-bit host,
32-bit ar will be used and the 64-bit code will fail to link.
user/Makefile has the same problem, and even uses plain "ar".
Add AR to configure and user/configure, and use it in the Makefiles.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -6,6 +6,7 @@ cc=gcc
cc=gcc
ld=ld
objcopy=objcopy
+ar=ar
want_module=1
qemu_cflags=
qemu_ldflags=
@@ -141,6 +142,7 @@ CC=$cross_prefix$cc
CC=$cross_prefix$cc
LD=$cross_prefix$ld
OBJCOPY=$cross_prefix$objcopy
+AR=$cross_prefix$ar
EOF
cat <<EOF > kernel/config.kbuild
diff --git a/user/Makefile b/user/Makefile
--- a/user/Makefile
+++ b/user/Makefile
@@ -48,7 +48,7 @@ kvmtrace: $(kvmtrace_objs)
$(CC) $(LDFLAGS) $^ -o $@
$(libcflat): $(cflatobjs)
- ar rcs $@ $^
+ $(AR) rcs $@ $^
%.o: %.S
$(CC) $(CFLAGS) -c -nostdlib -o $@ $^
diff --git a/user/configure b/user/configure
--- a/user/configure
+++ b/user/configure
@@ -5,6 +5,7 @@ cc=gcc
cc=gcc
ld=ld
objcopy=objcopy
+ar=ar
arch=`uname -m | sed -e s/i.86/i386/`
processor="$arch"
cross_prefix=
@@ -70,4 +71,5 @@ CC=$cross_prefix$cc
CC=$cross_prefix$cc
LD=$cross_prefix$ld
OBJCOPY=$cross_prefix$objcopy
+AR=$cross_prefix$ar
EOF
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture
2008-10-29 18:27 [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture Hollis Blanchard
` (6 preceding siblings ...)
2008-10-29 18:27 ` [PATCH 7 of 7] user: define and use AR in configure scripts and Makefiles Hollis Blanchard
@ 2008-10-30 12:57 ` Christian Ehrhardt
[not found] ` <patchbomb.1225304868-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
8 siblings, 0 replies; 11+ messages in thread
From: Christian Ehrhardt @ 2008-10-30 12:57 UTC (permalink / raw)
To: Hollis Blanchard; +Cc: avi, kvm, kvm-ppc
Hollis Blanchard wrote:
> These patches allow the kvmctl bits (including testcases and libcflat) to be
> built for multiple processor types within the same architecture (e.g. 440 and
> e500). This is important because PowerPC supervisor mode can contain
> significant differences between processors (it's user mode that's more or less
> identical).
>
> For example, the data in a TLB entry and how to manipulate the TLB
> are a major difference between 440 and e500, which is critical here because
> libcflat must create its own mappings and so must know which method to use.
>
> Some of the complexity comes from user/Makefile *not* using the top-level
> config.mak, so we have to add some of the same logic to both configure scripts
> to generate both config.mak files.
>
> Too much makefile logic depends on ARCH containing only the architecture
> name, so it was simpler to create and export a separate PROCESSOR variable.
>
> -Hollis
> --
> 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
>
Unfortunately there is too often no "really nice" way to do Makefile
magic :-)
I know you started with the arch-platform-os-compiler after our discussion,
but I like the $PROCESSOR solution for our *powerpc* Makefiles too.
And a good catch with that AR usage in patch 7.
(full series)
Acked-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
--
Grüsse / regards,
Christian Ehrhardt
IBM Linux Technology Center, Open Virtualization
^ permalink raw reply [flat|nested] 11+ messages in thread[parent not found: <patchbomb.1225304868-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>]
* Re: [PATCH 0 of 7] kvm-userspace: support multiple processors in the same architecture
[not found] ` <patchbomb.1225304868-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
@ 2008-11-02 9:06 ` Avi Kivity
0 siblings, 0 replies; 11+ messages in thread
From: Avi Kivity @ 2008-11-02 9:06 UTC (permalink / raw)
To: Hollis Blanchard
Cc: avi-atKUWr5tajBWk0Htik3J/w, kvm-u79uwXL29TY76Z2rM5mHXA,
kvm-ppc-u79uwXL29TY76Z2rM5mHXA
Hollis Blanchard wrote:
> These patches allow the kvmctl bits (including testcases and libcflat) to be
> built for multiple processor types within the same architecture (e.g. 440 and
> e500). This is important because PowerPC supervisor mode can contain
> significant differences between processors (it's user mode that's more or less
> identical).
>
> For example, the data in a TLB entry and how to manipulate the TLB
> are a major difference between 440 and e500, which is critical here because
> libcflat must create its own mappings and so must know which method to use.
>
> Some of the complexity comes from user/Makefile *not* using the top-level
> config.mak, so we have to add some of the same logic to both configure scripts
> to generate both config.mak files.
>
> Too much makefile logic depends on ARCH containing only the architecture
> name, so it was simpler to create and export a separate PROCESSOR variable.
>
All applied, thanks.
--
error compiling committee.c: too many arguments to function
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 11+ messages in thread