All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.