mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
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 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (GNU/Linux) iQIcBAABAgAGBQJVABYpAAoJEBF7vIC1phx8M/kP/AsuFTCrWebziX5qdeIFX8Cu RBcnqm7Dgt7lg+fyt/mj7g7/PVZEoe9AQ5hWoXmguR850/PmMuEDfHhY6pAfKU+r RokYiQR2pHDWFU9D2qf3ggEcI4suym1mmuMjx4TEs9318zpREHu9fGpzfJxlQgXa SUqQDZWElYyiF1nu8cxvH7wqeJLalKSiQBRtkM3w2oG8Nw1TgFxt/xiYHkiz/rkr U2sQrCabOCcVC/nlDAaWajBq18rzqhFk6QZEZsf9O4jsxy8Pbmkw2cqSp68KBMeB o50lRrguGhuejQg6g4AXZWGgUt5YnNL0CIHmTXp0KTnijGSAHnWUPf+qCOOR/sfn 1roTNwCH8rjSfpEPKAhmiLRcPTVzy6IYxaT+J7KniCRAyHdIk2NBF3cHzDBy47uC pre1pIHnKkwBkxv/xkj8CHlfcpCjp8sXhW6FSXoX9On5SKiROnQUwiLoUjtnvRXe kQZRhtgJSKnLTtEEZ3XWh/UDyD2QJiwnm1E5SjXEa/mdDqgUmsVsPtz29f/xDKJA GZGNOCsIew0286C+tf5M88JpIXqpAiEYXA9vw5ZUqzxh3ArNuT0GJGxrlWxbqD8j tbvjHIja62IbCxM8dtZ9v0M4YFNU+VLHdKEREziK6RKS9Ek7rJmSh8128JNQhJ/X RjiUxdcbApvEunZInwB/ =6Cw+ -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/borntraeger/tags/s390x-20150310' into staging 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 # gpg: Signature made Wed Mar 11 10:17:13 2015 GMT using RSA key ID B5A61C7C # gpg: Good signature from "Christian Borntraeger (IBM) <borntraeger@de.ibm.com>" * remotes/borntraeger/tags/s390x-20150310: s390-ccw: rebuild BIOS s390/bios: Make the s390-ccw.img relocatable elf-loader: Provide the possibility to relocate s390 ELF files s390-ccw.img: Reinitialize guessing on reboot s390-ccw.img: Allow bigger ramdisk sizes or offsets s390x/kvm: passing max memory size to accelerator virtio-ccw: Convert to realize() virtio-s390: Convert to realize() virtio-s390: s390_virtio_device_init() can't fail, simplify s390x/kvm: enable the new SIGP handling in user space s390x/kvm: deliver SIGP RESTART directly if stopped s390x: add function to deliver restart irqs s390x/kvm: SIGP START is only applicable when STOPPED s390x/kvm: implement handling of new SIGP orders s390x/kvm: trace all SIGP orders s390x/kvm: helper to set the SIGP status in SigpInfo s390x/kvm: pass the SIGP instruction parameter to the SIGP handler s390x/kvm: more details for SIGP handler with one destination vcpu s390x: introduce defines for SIGP condition codes synchronize Linux headers to 4.0-rc3 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
165fa4091e
27 changed files with 785 additions and 230 deletions
Binary file not shown.
|
@ -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 *~
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "virtio.h"
|
||||
|
||||
char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
|
||||
char ring_area[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
|
||||
uint64_t boot_value;
|
||||
static struct subchannel_id blk_schid = { .one = 1 };
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ void disabled_wait(void);
|
|||
void virtio_panic(const char *string);
|
||||
void write_subsystem_identification(void);
|
||||
extern char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
|
||||
extern char ring_area[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
|
||||
extern uint64_t boot_value;
|
||||
|
||||
/* sclp-ascii.c */
|
||||
|
|
|
@ -362,6 +362,7 @@ void virtio_setup_block(struct subchannel_id schid)
|
|||
struct vq_config_block config = {};
|
||||
|
||||
blk_cfg.blk_size = 0; /* mark "illegal" - setup started... */
|
||||
guessed_disk_nature = false;
|
||||
|
||||
virtio_reset(schid);
|
||||
|
||||
|
@ -378,10 +379,10 @@ void virtio_setup_block(struct subchannel_id schid)
|
|||
if (run_ccw(schid, CCW_CMD_READ_CONF, &blk_cfg, sizeof(blk_cfg))) {
|
||||
virtio_panic("Could not get block device configuration\n");
|
||||
}
|
||||
vring_init(&block, config.num, (void *)(100 * 1024 * 1024),
|
||||
vring_init(&block, config.num, ring_area,
|
||||
KVM_S390_VIRTIO_RING_ALIGN);
|
||||
|
||||
info.queue = (100ULL * 1024ULL* 1024ULL);
|
||||
info.queue = (unsigned long long) ring_area;
|
||||
info.align = KVM_S390_VIRTIO_RING_ALIGN;
|
||||
info.index = 0;
|
||||
info.num = config.num;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue