On Wed, 23 Aug 2017 10:16:27 +0200 Paolo Bonzini <pbonz...@redhat.com> wrote:
> On 23/08/2017 10:06, Thomas Huth wrote: > > On 23.08.2017 10:00, David Hildenbrand wrote: > >> On 23.08.2017 08:53, Christian Borntraeger wrote: > >>> @@ -6522,6 +6527,20 @@ if test "$target_linux_user" = "yes" -o > >>> "$target_bsd_user" = "yes" ; then > >>> ldflags="$ldflags $textseg_ldflags" > >>> fi > >>> > >>> +# Newer kernels on s390 check for an S390_PGSTE program header and > >>> +# enable the pgste page table extensions in that case. This makes > >>> +# the vm.allocate_pgste sysctl unnecessary. We enable this program > >>> +# header if > >>> +# - we build on s390x > >>> +# - we build the system emulation for s390x (qemu-system-s390x) > >>> +# - KVM is enabled > >>> +# - the linker support --s390-pgste > >>> +if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a > >>> "$ARCH" = "s390x" -a "$kvm" = "yes"; then > >> > >> Wonder if the "$ARCH" check is really necessary: TARGET_ARCH=s390x with > >> kvm=yes should only build on s390x. > > > > Isn't kvm=yes and TARGET_ARCH=s390x also possible on a x86 host, where > > only the x86_64 target is built with CONFIG_KVM=y, but the s390x target > > with CONFIG_KVM=n ? > > Yes. You could use > > if test "$ARCH" = "s390x" && supported_kvm_target $target; then > ... > fi > > Or, in the existing "if supported_kvm_target $target" conditional, add > > if test "$ARCH" = s390x && ld_has --s390-pgste; then > ... > fi That conditional is unfortunately before the setup of ldflags; but I like the idea of using supported_kvm_target.