* [Qemu-devel] [PULLv2] s390x/kvm: Features and fixes for 2.3 @ 2015-03-11 10:21 Christian Borntraeger 2015-03-11 10:21 ` [Qemu-devel] [Patch 19/20] s390/bios: Make the s390-ccw.img relocatable Christian Borntraeger 2015-03-11 16:30 ` [Qemu-devel] [PULLv2] s390x/kvm: Features and fixes for 2.3 Peter Maydell 0 siblings, 2 replies; 3+ messages in thread From: Christian Borntraeger @ 2015-03-11 10:21 UTC (permalink / raw) To: Peter Maydell Cc: qemu-devel, Alexander Graf, Christian Borntraeger, Jens Freimann, Cornelia Huck, Richard Henderson Peter, here is the 2nd version (only one patch changed) that hopefully compiles fine on 32 bit hosts. I only added that patch as followup mail. The following changes since commit 277263e1b320d759a760ba6c5ea75ec268f929e5: Merge remote-tracking branch 'remotes/agraf/tags/signed-ppc-for-upstream' into staging (2015-03-09 14:04:14 +0000) are available in the git repository at: git://github.com/borntraeger/qemu.git tags/s390x-20150310 for you to fetch changes up to 2d5eeef1c0be68c30ccd60fd7267690d523f702a: s390-ccw: rebuild BIOS (2015-03-11 11:15:45 +0100) ---------------------------------------------------------------- s390x/kvm: Features and fixes for 2.3 - an extension to the elf loader to allow relocations - make the ccw bios relocatable. This allows for bigger ramdisks or smaller guests - Handle all slow SIGPs in QEMU (instead of kernel) for better compliance and correctness - tell the KVM module the maximum guest size. This allows KVM to reduce the number or page table levels - Several fixes/cleanups ---------------------------------------------------------------- Christian Borntraeger (4): synchronize Linux headers to 4.0-rc3 s390-ccw.img: Allow bigger ramdisk sizes or offsets s390-ccw.img: Reinitialize guessing on reboot s390-ccw: rebuild BIOS David Hildenbrand (10): s390x: introduce defines for SIGP condition codes s390x/kvm: more details for SIGP handler with one destination vcpu s390x/kvm: pass the SIGP instruction parameter to the SIGP handler s390x/kvm: helper to set the SIGP status in SigpInfo s390x/kvm: trace all SIGP orders s390x/kvm: implement handling of new SIGP orders s390x/kvm: SIGP START is only applicable when STOPPED s390x: add function to deliver restart irqs s390x/kvm: deliver SIGP RESTART directly if stopped s390x/kvm: enable the new SIGP handling in user space Dominik Dingel (1): s390x/kvm: passing max memory size to accelerator Markus Armbruster (3): virtio-s390: s390_virtio_device_init() can't fail, simplify virtio-s390: Convert to realize() virtio-ccw: Convert to realize() Thomas Huth (2): elf-loader: Provide the possibility to relocate s390 ELF files s390/bios: Make the s390-ccw.img relocatable hw/core/loader.c | 2 + hw/s390x/ipl.c | 24 +- hw/s390x/s390-virtio-bus.c | 97 ++++--- hw/s390x/s390-virtio-bus.h | 2 +- hw/s390x/s390-virtio-ccw.c | 10 + hw/s390x/virtio-ccw.c | 134 +++++---- hw/s390x/virtio-ccw.h | 2 +- include/elf.h | 2 + include/hw/elf_ops.h | 78 ++++++ include/standard-headers/linux/virtio_net.h | 54 ++-- linux-headers/asm-arm/kvm.h | 2 + linux-headers/asm-arm64/kvm.h | 9 + linux-headers/asm-s390/kvm.h | 37 +++ linux-headers/asm-x86/hyperv.h | 11 + linux-headers/linux/kvm.h | 20 +- pc-bios/s390-ccw.img | Bin 17752 -> 13616 bytes pc-bios/s390-ccw/Makefile | 11 +- pc-bios/s390-ccw/main.c | 1 + pc-bios/s390-ccw/s390-ccw.h | 1 + pc-bios/s390-ccw/virtio.c | 5 +- target-s390x/cpu.c | 2 + target-s390x/cpu.h | 40 ++- target-s390x/helper.c | 35 ++- target-s390x/kvm.c | 416 ++++++++++++++++++++++++---- target-s390x/machine.c | 5 +- target-s390x/misc_helper.c | 4 +- trace-events | 1 + 27 files changed, 780 insertions(+), 225 deletions(-) ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] [Patch 19/20] s390/bios: Make the s390-ccw.img relocatable 2015-03-11 10:21 [Qemu-devel] [PULLv2] s390x/kvm: Features and fixes for 2.3 Christian Borntraeger @ 2015-03-11 10:21 ` Christian Borntraeger 2015-03-11 16:30 ` [Qemu-devel] [PULLv2] s390x/kvm: Features and fixes for 2.3 Peter Maydell 1 sibling, 0 replies; 3+ messages in thread From: Christian Borntraeger @ 2015-03-11 10:21 UTC (permalink / raw) To: Peter Maydell Cc: Thomas Huth, qemu-devel, Alexander Graf, Christian Borntraeger, Jens Freimann, Cornelia Huck, Richard Henderson From: Thomas Huth <thuth@linux.vnet.ibm.com> The current bios sits at location 0x7e00000 in the guest RAM and thus prevents loading of bigger ramdisks. By making the image relocatable we can move it to the end of the RAM so that it is getting out of the way. Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com> Message-Id: <1425895973-15239-3-git-send-email-thuth@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> [Fixup build failure on 32 bit hosts] --- hw/s390x/ipl.c | 24 +++++++++++++++++++++--- pc-bios/s390-ccw/Makefile | 11 ++++++----- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index b57adbd..d6c0a49 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -14,6 +14,7 @@ #include "sysemu/sysemu.h" #include "cpu.h" #include "elf.h" +#include "exec/ram_addr.h" #include "hw/loader.h" #include "hw/sysbus.h" #include "hw/s390x/virtio-ccw.h" @@ -95,6 +96,16 @@ static const VMStateDescription vmstate_ipl = { } }; +static uint64_t bios_translate_addr(void *opaque, uint64_t srcaddr) +{ + uint64_t dstaddr = *(uint64_t *) opaque; + /* + * Assuming that our s390-ccw.img was linked for starting at address 0, + * we can simply add the destination address for the final location + */ + return srcaddr + dstaddr; +} + static int s390_ipl_init(SysBusDevice *dev) { S390IPLState *ipl = S390_IPL(dev); @@ -109,6 +120,8 @@ static int s390_ipl_init(SysBusDevice *dev) * even if an external kernel has been defined. */ if (!ipl->kernel || ipl->enforce_bios) { + uint64_t fwbase = (MIN(ram_size, 0x80000000U) - 0x200000) & ~0xffffUL; + if (bios_name == NULL) { bios_name = ipl->firmware; } @@ -118,9 +131,14 @@ static int s390_ipl_init(SysBusDevice *dev) hw_error("could not find stage1 bootloader\n"); } - bios_size = load_elf(bios_filename, NULL, NULL, &ipl->bios_start_addr, - NULL, NULL, 1, ELF_MACHINE, 0); - if (bios_size < 0) { + bios_size = load_elf(bios_filename, bios_translate_addr, &fwbase, + &ipl->bios_start_addr, NULL, NULL, 1, + ELF_MACHINE, 0); + if (bios_size > 0) { + /* Adjust ELF start address to final location */ + ipl->bios_start_addr += fwbase; + } else { + /* Try to load non-ELF file (e.g. s390-zipl.rom) */ bios_size = load_image_targphys(bios_filename, ZIPL_IMAGE_START, 4096); ipl->bios_start_addr = ZIPL_IMAGE_START; diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile index ad55a14..009bb8d 100644 --- a/pc-bios/s390-ccw/Makefile +++ b/pc-bios/s390-ccw/Makefile @@ -9,10 +9,9 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/s390-ccw) .PHONY : all clean build-all -OBJECTS=main.o bootmap.o sclp-ascii.o virtio.o start.o -CFLAGS += -fno-stack-protector -# XXX find a more clever to locate the bootloader -LDFLAGS += -Wl,-Ttext,0x7e00000,-Tbss,0x7f00000 -nostdlib +OBJECTS = start.o main.o bootmap.o sclp-ascii.o virtio.o +CFLAGS += -fPIE -fno-stack-protector -ffreestanding +LDFLAGS += -Wl,-pie -nostdlib build-all: s390-ccw.img @@ -20,7 +19,9 @@ s390-ccw.elf: $(OBJECTS) $(call quiet-command,$(CC) $(LDFLAGS) -o $@ $(OBJECTS)," Building $(TARGET_DIR)$@") s390-ccw.img: s390-ccw.elf - $(call quiet-command,strip $< -o $@," Stripping $(TARGET_DIR)$@") + $(call quiet-command,strip --strip-unneeded $< -o $@," Stripping $(TARGET_DIR)$@") + +$(OBJECTS): Makefile clean: rm -f *.o *.d *.img *.elf *~ -- 2.3.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PULLv2] s390x/kvm: Features and fixes for 2.3 2015-03-11 10:21 [Qemu-devel] [PULLv2] s390x/kvm: Features and fixes for 2.3 Christian Borntraeger 2015-03-11 10:21 ` [Qemu-devel] [Patch 19/20] s390/bios: Make the s390-ccw.img relocatable Christian Borntraeger @ 2015-03-11 16:30 ` Peter Maydell 1 sibling, 0 replies; 3+ messages in thread From: Peter Maydell @ 2015-03-11 16:30 UTC (permalink / raw) To: Christian Borntraeger Cc: Cornelia Huck, Jens Freimann, Richard Henderson, qemu-devel, Alexander Graf On 11 March 2015 at 10:21, Christian Borntraeger <borntraeger@de.ibm.com> wrote: > Peter, > > here is the 2nd version (only one patch changed) that hopefully > compiles fine on 32 bit hosts. > I only added that patch as followup mail. > Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-03-11 16:30 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-03-11 10:21 [Qemu-devel] [PULLv2] s390x/kvm: Features and fixes for 2.3 Christian Borntraeger 2015-03-11 10:21 ` [Qemu-devel] [Patch 19/20] s390/bios: Make the s390-ccw.img relocatable Christian Borntraeger 2015-03-11 16:30 ` [Qemu-devel] [PULLv2] s390x/kvm: Features and fixes for 2.3 Peter Maydell
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).