Accepting request 751303 from home:bfrogers:branches:Virtualization:Staging

Update to v4.2.0-rc3. Intent is to submit to Factory, and SLE-15-SP2 as well

OBS-URL: https://build.opensuse.org/request/show/751303
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=513
This commit is contained in:
Bruce Rogers 2019-11-27 12:46:32 +00:00 committed by Git OBS Bridge
parent c77a5bbe45
commit 3a333345a6
67 changed files with 607 additions and 1734 deletions

35
50-seabios-256k.json Normal file
View File

@ -0,0 +1,35 @@
{
"description": "SeaBIOS",
"interface-types": [
"bios"
],
"mapping": {
"device": "memory",
"filename": "/usr/share/qemu/bios-256k.bin"
},
"targets": [
{
"architecture": "i386",
"machines": [
"pc-i440fx-*",
"pc-q35-*"
]
},
{
"architecture": "x86_64",
"machines": [
"pc-i440fx-*",
"pc-q35-*"
]
}
],
"features": [
"acpi-s3",
"acpi-s4"
],
"tags": [
"CONFIG_QEMU=y",
"CONFIG_ROM_SIZE=256",
"CONFIG_ATA_DMA=n"
]
}

47
60-seabios-128k.json Normal file
View File

@ -0,0 +1,47 @@
{
"description": "SeaBIOS",
"interface-types": [
"bios"
],
"mapping": {
"device": "memory",
"filename": "/usr/share/qemu/bios.bin"
},
"targets": [
{
"architecture": "i386",
"machines": [
"pc-i440fx-*",
"pc-q35-*"
]
},
{
"architecture": "x86_64",
"machines": [
"pc-i440fx-*",
"pc-q35-*"
]
}
],
"features": [
"acpi-s3",
"acpi-s4"
],
"tags": [
"CONFIG_QEMU=y",
"CONFIG_ROM_SIZE=128",
"CONFIG_ATA_DMA=n",
"CONFIG_BOOTSPLASH=n",
"CONFIG_XEN=n",
"CONFIG_USB_OHCI=n",
"CONFIG_USB_XHCI=n",
"CONFIG_USB_UAS=n",
"CONFIG_SDCARD=n",
"CONFIG_TCGBIOS=n",
"CONFIG_MPT_SCSI=n",
"CONFIG_PVSCSI=n",
"CONFIG_NVME=n",
"CONFIG_USE_SMM=n",
"CONFIG_VGAHOOKS=n"
]
}

View File

@ -8,10 +8,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 2 insertions(+)
diff --git a/Makefile b/Makefile
index 00ed716275743a161ea05e7d2a1e..ab4d8683ad8f86aa680b343310e1 100644
index 52881cbb12e7d980e0ed51f21174..edc3de72e6a94ef0503da640bbfe 100644
--- a/Makefile
+++ b/Makefile
@@ -887,6 +887,7 @@ ifneq ($(DESCS),)
@@ -913,6 +913,7 @@ ifneq ($(DESCS),)
"$(DESTDIR)$(qemu_datadir)/firmware/$$x"; \
done
endif
@ -19,7 +19,7 @@ index 00ed716275743a161ea05e7d2a1e..ab4d8683ad8f86aa680b343310e1 100644
for s in $(ICON_SIZES); do \
mkdir -p "$(DESTDIR)$(qemu_icondir)/hicolor/$${s}/apps"; \
$(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu_$${s}.png \
@@ -901,6 +902,7 @@ endif
@@ -927,6 +928,7 @@ endif
mkdir -p "$(DESTDIR)$(qemu_desktopdir)"
$(INSTALL_DATA) $(SRC_PATH)/ui/qemu.desktop \
"$(DESTDIR)$(qemu_desktopdir)/qemu.desktop"

View File

@ -1,29 +0,0 @@
From: Stewart Smith <stewart@linux.ibm.com>
Date: Tue, 18 Jun 2019 16:09:44 +1000
Subject: Disable -Waddress-of-packed-member for GCC9
Git-commit: b904cb733750de1bb0e04e5012c391a9c3094d11
We throw a bunch of errors in errorlog code otherwise, which we should
fix, but we don't *have* to yet.
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
Makefile.main | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/roms/skiboot/Makefile.main b/roms/skiboot/Makefile.main
index a8e34d16c4729921901871b3f9e3..91dc73e06903e8f10c6ad09c1db9 100644
--- a/roms/skiboot/Makefile.main
+++ b/roms/skiboot/Makefile.main
@@ -120,7 +120,8 @@ endif
CFLAGS += $(call try-cflag,$(CC),-Wjump-misses-init) \
$(call try-cflag,$(CC),-Wsuggest-attribute=const) \
$(call try-cflag,$(CC),-Wsuggest-attribute=noreturn) \
- $(call try-cflag,$(CC),-Wstack-usage=1024)
+ $(call try-cflag,$(CC),-Wstack-usage=1024) \
+ $(call try-cflag,$(CC),-Wno-error=address-of-packed-member)
CFLAGS += $(CWARNS) $(OPTS) $(DBG)

View File

@ -0,0 +1,30 @@
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 1 Nov 2019 19:41:52 -0600
Subject: Enable cross compile prefix for C compiler invocation
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
Makefile | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/roms/qboot/Makefile b/roms/qboot/Makefile
index adbf1b319e4a7bee78e2f95c5e51..cdde20fc37b13a1877668cd20e2f 100644
--- a/roms/qboot/Makefile
+++ b/roms/qboot/Makefile
@@ -1,3 +1,4 @@
+CROSS_COMPILE ?=
obj-y = code16.o entry.o main.o string.o printf.o cstart.o fw_cfg.o
obj-y += linuxboot.o malloc.o tables.o hwsetup.o pci.o code32seg.o
obj-y += mptable.o
@@ -25,9 +26,9 @@ autodepend-flags = -MMD -MF .deps/cc-$(patsubst %/,%,$(dir $*))-$(notdir $*).d
.PRECIOUS: %.o
%.o: %.c
- $(CC) $(CFLAGS) $(BIOS_CFLAGS) $($@-cflags) -c -s $< -o $@
+ $(CROSS_COMPILE)$(CC) $(CFLAGS) $(BIOS_CFLAGS) $($@-cflags) -c -s $< -o $@
%.o: %.S
- $(CC) $(CFLAGS) $(BIOS_CFLAGS) -c -s $< -o $@
+ $(CROSS_COMPILE)$(CC) $(CFLAGS) $(BIOS_CFLAGS) -c -s $< -o $@
bios.bin.elf: $(obj-y) flat.lds
$(LD) -T flat.lds -o bios.bin.elf $(obj-y)

View File

@ -108,7 +108,7 @@ index 572cefd517c8fa9d605cbd10fc21..6e80785bd9c12b85e747fa9f924e 100644
int mux_cnt;
int term_got_escape;
diff --git a/tests/test-char.c b/tests/test-char.c
index f9440cdcfdb51f98b2f6542e6f21..d1f99632de1acb95ba8e1b4a8584 100644
index 45e42af290d4c55c0d8ed9358ef2..8e8c983dc0adce3dea739c9d85fc 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -1,3 +1,4 @@

View File

@ -23,7 +23,7 @@ index e527eb168e9ce7c3944094ec6701..fd376eac71f73e6366a9e17a1c51 100755
# Migration Stream Analyzer
#
diff --git a/scripts/vmstate-static-checker.py b/scripts/vmstate-static-checker.py
index d3467288dcc5dd2f7274576262f7..2046b1feddb4c225c8f3bee080ac 100755
index f8b7b8f77252f2c03d6d7db9dc60..754159069dfae6838edaac14856f 100755
--- a/scripts/vmstate-static-checker.py
+++ b/scripts/vmstate-static-checker.py
@@ -1,4 +1,4 @@

View File

@ -14,10 +14,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 2 insertions(+)
diff --git a/exec.c b/exec.c
index 3e78de3b8f8bb1914811a7965377..d2183f58816f53f15ef64e844291 100644
index ffdb5185353bdbacc613d4730228..0d0c0618bb70f9747c71048f5cde 100644
--- a/exec.c
+++ b/exec.c
@@ -2339,11 +2339,13 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, MemoryRegion *mr,
@@ -2291,11 +2291,13 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, MemoryRegion *mr,
return NULL;
}

View File

@ -5,36 +5,32 @@ you make be acceptable to the package maintainers.
The qemu.spec file is generated from a qemu.spec.in template, so to make changes
to the spec file (besides the script generated patch references), you'll need to
edit the template, not the spec file. The spec file patch references are inserted
by scripts, which are described below.
by a script as described below.
If you are not modifying any patches or their order, but just need to update the
spec file from a changed template, run 'bash ./update_git.sh refresh'.
If the set of patches is being modified, including their order, you will want to
first run 'bash ./update_git.sh pkg2git', which makes the current package patch
queue available in a local git branch named frombundle (see confi.sh for the
queue available in a local git branch named frombundle (see config.sh for the
locations). This set of patches comes from a "bundle of git bundles", the
bundles.tar.xz file, which is included as a package source file. You will then
create an altered patch queue in the $GIT_BRANCH branch ( again,see config.sh),
and use the frombundle branch as the starting point for your changes (eg perhaps
start by doing git reset --hard frombundle, then cherry-pick upstream patches
from there). Once you have the patch queue ready to go run 'bash ./update_git.sh
git2pkg' which updates the bunndles.tar.xz file, as well as the spec and patch
files.
create an altered patch queue in the branch which corresponds to this release
(eg: opensuse-4.2), using the frombundle branch as the starting point for your
changes (eg perhaps start by doing git reset --hard frombundle, then cherry-pick
upstream patches from there). Once you have the patch queue ready to go run
'bash ./update_git.sh git2pkg' which updates the bundles.tar.xz file, as well as
the spec and patch files.
The maintainer and automation use another workflow mode dealing with packaging
the latest upstream qemu. See 'LATEST' references in the scripts for details.
** SPECIAL NOTE ABOUT CURRENT STATUS ***
The current status as of 03 Oct 2019 is that for this incarnation of qemu
The current status as of 31 Oct 2019 is that for this incarnation of qemu
packaging, the previous workflow which relied on the patches being in a shared
git repo on github or gitlab is no longer supported. This new bundle based
workflos is still a work in progress.
If it isn't working right, please contact Bruce Rogers <brogers@suse.com>.
Also note that qemu now takes advantage of the MultiBuild feature of the Build
Service. No longer do the qemu-linux-user and qemu-testsuite packages have build
service links to the qemu package, but instead are generated straight from the
main qemu spec file via the use of a _multibuild file which identifies those
package variants.
- Bruce Rogers
*** END SPECIAL NOTE ***
Additional Notes:

View File

@ -16,26 +16,26 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 12 insertions(+)
diff --git a/vl.c b/vl.c
index b426b3213461210565bd1db15a0c..2b864f7dbe8b60ace40fa3258a37 100644
index 6a65a64bfd647afcf539145f9cf9..57e68fdc4526b7156af155be933f 100644
--- a/vl.c
+++ b/vl.c
@@ -30,6 +30,7 @@
#include "qemu/cutils.h"
#include "qemu/help_option.h"
@@ -33,6 +33,7 @@
#include "qemu/uuid.h"
#include "sysemu/reset.h"
#include "sysemu/runstate.h"
+#include <sys/resource.h>
#include "sysemu/seccomp.h"
#include "sysemu/tcg.h"
@@ -2889,6 +2890,7 @@ int main(int argc, char **argv, char **envp)
bool list_data_dirs = false;
@@ -2861,6 +2862,7 @@ int main(int argc, char **argv, char **envp)
char *dir, **dirs;
BlockdevOptionsQueue bdo_queue = QSIMPLEQ_HEAD_INITIALIZER(bdo_queue);
QemuPluginList plugin_list = QTAILQ_HEAD_INITIALIZER(plugin_list);
+ struct rlimit rlimit_as;
os_set_line_buffering();
@@ -2900,6 +2902,16 @@ int main(int argc, char **argv, char **envp)
@@ -2872,6 +2874,16 @@ int main(int argc, char **argv, char **envp)
qemu_mutex_lock_iothread();

View File

@ -9,10 +9,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 85862fb81a1d276c41133a31b2d9..00ed716275743a161ea05e7d2a1e 100644
index b437a346d71a55d75f207f36e85b..52881cbb12e7d980e0ed51f21174 100644
--- a/Makefile
+++ b/Makefile
@@ -556,7 +556,7 @@ fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
@@ -579,7 +579,7 @@ fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
scsi/qemu-pr-helper$(EXESUF): scsi/qemu-pr-helper.o scsi/utils.o $(authz-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
ifdef CONFIG_MPATH
@ -22,10 +22,10 @@ index 85862fb81a1d276c41133a31b2d9..00ed716275743a161ea05e7d2a1e 100644
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
diff --git a/configure b/configure
index 714e7fb6a1fbd72ccdcd92b506ce..578d208b374261803d84c22c2479 100755
index 6099be1d848c7f52ea02694d6d86..09a33aecfd6ef543eeee8c5023b6 100755
--- a/configure
+++ b/configure
@@ -3781,7 +3781,7 @@ int main(void) {
@@ -3836,7 +3836,7 @@ int main(void) {
return 0;
}
EOF

View File

@ -16,15 +16,15 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index ec4e186cec7ccff739b7bad8dcc4..be5529867ab426b38b26dab5498a 100644
index 93aec2dd2ce1767784076c3544b0..1f2a8ea850e9115b689af90bf708 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -306,7 +306,7 @@ static bool piix4_vmstate_need_smbus(void *opaque, int version_id)
@@ -273,7 +273,7 @@ static bool piix4_vmstate_need_smbus(void *opaque, int version_id)
static const VMStateDescription vmstate_acpi = {
.name = "piix4_pm",
.version_id = 3,
- .minimum_version_id = 3,
+ .minimum_version_id = 2, /* qemu-kvm */
.minimum_version_id_old = 1,
.load_state_old = acpi_load_old,
.post_load = vmstate_acpi_post_load,
.fields = (VMStateField[]) {
VMSTATE_PCI_DEVICE(parent_obj, PIIX4PMState),

View File

@ -1,159 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 18 Mar 2019 15:43:53 +0100
Subject: ati: add edid support.
Git-commit: 588eb12163b51c4d402383369456ce1cd1ec86ab
Read EDID blob via i2c, store in VBE_edid.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index 0586279ce214fac7d2a7e6c87a94..8c9e6966db47f083646193d7faf6 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -19,6 +19,8 @@
#define MM_DATA 0x0004
#define CRTC_GEN_CNTL 0x0050
#define CRTC_EXT_CNTL 0x0054
+#define GPIO_VGA_DDC 0x0060
+#define GPIO_DVI_DDC 0x0064
#define CRTC_H_TOTAL_DISP 0x0200
#define CRTC_V_TOTAL_DISP 0x0208
#define CRTC_OFFSET 0x0224
@@ -106,6 +108,20 @@ static inline void ati_write(u32 reg, u32 val)
}
}
+static inline u32 ati_read(u32 reg)
+{
+ u32 io_addr = GET_GLOBAL(ati_io_addr);
+ u32 val;
+
+ if (reg < 0x100) {
+ val = inl(io_addr + reg);
+ } else {
+ outl(reg, io_addr + MM_INDEX);
+ reg = inl(io_addr + MM_DATA);
+ }
+ return val;
+}
+
static void ati_clear(u32 offset, u32 size)
{
u8 data[64];
@@ -180,6 +196,97 @@ ati_set_mode(struct vgamode_s *vmode_g, int flags)
return stdvga_set_mode(vmode_g, flags);
}
+/****************************************************************
+ * edid
+ ****************************************************************/
+
+static void
+ati_i2c_set_scl_sda(int scl, int sda)
+{
+ u32 data = 0;
+
+ if (!scl)
+ data |= (1 << 17);
+ if (!sda)
+ data |= (1 << 16);
+ ati_write(GPIO_DVI_DDC, data);
+}
+
+static int
+ati_i2c_get_sda(void)
+{
+ u32 data = ati_read(GPIO_DVI_DDC);
+
+ return data & (1 << 8) ? 1 : 0;
+}
+
+static void ati_i2c_start(void)
+{
+ ati_i2c_set_scl_sda(1, 1);
+ ati_i2c_set_scl_sda(1, 0);
+ ati_i2c_set_scl_sda(0, 0);
+}
+
+static void ati_i2c_ack(void)
+{
+ ati_i2c_set_scl_sda(0, 0);
+ ati_i2c_set_scl_sda(1, 0);
+ ati_i2c_set_scl_sda(0, 0);
+}
+
+static void ati_i2c_stop(void)
+{
+ ati_i2c_set_scl_sda(0, 0);
+ ati_i2c_set_scl_sda(1, 0);
+ ati_i2c_set_scl_sda(1, 1);
+}
+
+static void ati_i2c_send_byte(u8 byte)
+{
+ int i, bit;
+
+ for (i = 0; i < 8; i++) {
+ bit = (1 << (7-i)) & byte ? 1 : 0;
+ ati_i2c_set_scl_sda(0, bit);
+ ati_i2c_set_scl_sda(1, bit);
+ ati_i2c_set_scl_sda(0, bit);
+ }
+}
+
+static u8 ati_i2c_recv_byte(void)
+{
+ u8 byte = 0;
+ int i, bit;
+
+ for (i = 0; i < 8; i++) {
+ ati_i2c_set_scl_sda(0, 1);
+ ati_i2c_set_scl_sda(1, 1);
+ bit = ati_i2c_get_sda();
+ ati_i2c_set_scl_sda(0, 1);
+ if (bit)
+ byte |= (1 << (7-i));
+ }
+
+ return byte;
+}
+
+static void ati_i2c_edid(void)
+{
+ u8 byte;
+ int i;
+
+ dprintf(1, "ati: reading edid blob\n");
+ ati_i2c_start();
+ ati_i2c_send_byte(0x50 << 1 | 1);
+ ati_i2c_ack();
+ for (i = 0; i < 128; i++) {
+ byte = ati_i2c_recv_byte();
+ ati_i2c_ack();
+ SET_VGA(VBE_edid[i], byte);
+ }
+ ati_i2c_stop();
+}
+
/****************************************************************
* init
****************************************************************/
@@ -241,5 +348,12 @@ ati_setup(void)
}
}
+ u16 device = pci_config_readw(bdf, PCI_DEVICE_ID);
+ switch (device) {
+ case 0x5159:
+ ati_i2c_edid();
+ break;
+ }
+
return 0;
}

View File

@ -1,78 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 13:35:46 +0200
Subject: ati-vga: add rage128 edid support
Git-commit: 020bc4fc5ce93107c8e1bc731b9802cee56a123e
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index 71dfa859a22dc569ed2fd1312c6b..69dfd46e550a8865734def85c62d 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -21,6 +21,7 @@
#define CRTC_EXT_CNTL 0x0054
#define GPIO_VGA_DDC 0x0060
#define GPIO_DVI_DDC 0x0064
+#define GPIO_MONID 0x0068
#define CRTC_H_TOTAL_DISP 0x0200
#define CRTC_V_TOTAL_DISP 0x0208
#define CRTC_OFFSET 0x0224
@@ -47,6 +48,7 @@ static u32 ati_i2c_reg VAR16;
static u32 ati_i2c_bit_scl_out VAR16;
static u32 ati_i2c_bit_sda_out VAR16;
static u32 ati_i2c_bit_sda_in VAR16;
+static u32 ati_i2c_bit_enable VAR16 = -1;
int
@@ -208,8 +210,11 @@ ati_set_mode(struct vgamode_s *vmode_g, int flags)
static void
ati_i2c_set_scl_sda(int scl, int sda)
{
+ u32 enable = GET_GLOBAL(ati_i2c_bit_enable);
u32 data = 0;
+ if (enable != -1)
+ data |= (1 << enable);
if (!scl)
data |= (1 << GET_GLOBAL(ati_i2c_bit_scl_out));
if (!sda)
@@ -316,6 +321,23 @@ static void ati_i2c_edid_radeon(void)
dprintf(1, "ati: ... %s\n", valid ? "good" : "invalid");
}
+static void ati_i2c_edid_rage128(void)
+{
+ int valid;
+
+ SET_VGA(ati_i2c_bit_enable, 25);
+ SET_VGA(ati_i2c_bit_scl_out, 18);
+ SET_VGA(ati_i2c_bit_sda_out, 17);
+ SET_VGA(ati_i2c_bit_sda_in, 9);
+ SET_VGA(ati_i2c_reg, GPIO_MONID);
+
+ dprintf(1, "ati: reading edid blob (rage128) ... \n");
+ ati_i2c_edid();
+ valid = (GET_GLOBAL(VBE_edid[0]) == 0x00 &&
+ GET_GLOBAL(VBE_edid[1]) == 0xff);
+ dprintf(1, "ati: ... %s\n", valid ? "good" : "invalid");
+}
+
/****************************************************************
* init
****************************************************************/
@@ -379,6 +401,9 @@ ati_setup(void)
u16 device = pci_config_readw(bdf, PCI_DEVICE_ID);
switch (device) {
+ case 0x5046:
+ ati_i2c_edid_rage128();
+ break;
case 0x5159:
ati_i2c_edid_radeon();
break;

View File

@ -1,28 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 12:09:31 +0200
Subject: ati-vga: fix ati_read()
Git-commit: 136e2612bd48ef06562625f15259fbacf7bcf66f
Cut & paste bug probably. Had no bad effect so far because the code
doesn't read registers larger than 0x100.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index b3975226c47852c80ec4278b9a95..a24b980638a9562daaa37fe236b4 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -117,7 +117,7 @@ static inline u32 ati_read(u32 reg)
val = inl(io_addr + reg);
} else {
outl(reg, io_addr + MM_INDEX);
- reg = inl(io_addr + MM_DATA);
+ val = inl(io_addr + MM_DATA);
}
return val;
}

View File

@ -1,95 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 12:08:32 +0200
Subject: ati-vga: make i2c register and bits configurable
Git-commit: ae9a9796ec395e66ff0ed6d4484ea40ce85c0300
Prepare to support other ati cards. Also log access mode and whenever
we got a valid edid block.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 34 +++++++++++++++++++++++++++-------
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index a24b980638a9562daaa37fe236b4..901e82d013837f54f4db292628d1 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -43,6 +43,11 @@
#define CRT_CRTC_ON 0x00008000
static u32 ati_io_addr VAR16 = 0;
+static u32 ati_i2c_reg VAR16;
+static u32 ati_i2c_bit_scl_out VAR16;
+static u32 ati_i2c_bit_sda_out VAR16;
+static u32 ati_i2c_bit_sda_in VAR16;
+
int
is_ati_mode(struct vgamode_s *vmode_g)
@@ -206,18 +211,18 @@ ati_i2c_set_scl_sda(int scl, int sda)
u32 data = 0;
if (!scl)
- data |= (1 << 17);
+ data |= (1 << GET_GLOBAL(ati_i2c_bit_scl_out));
if (!sda)
- data |= (1 << 16);
- ati_write(GPIO_DVI_DDC, data);
+ data |= (1 << GET_GLOBAL(ati_i2c_bit_sda_out));
+ ati_write(GET_GLOBAL(ati_i2c_reg), data);
}
static int
ati_i2c_get_sda(void)
{
- u32 data = ati_read(GPIO_DVI_DDC);
+ u32 data = ati_read(GET_GLOBAL(ati_i2c_reg));
- return data & (1 << 8) ? 1 : 0;
+ return data & (1 << GET_GLOBAL(ati_i2c_bit_sda_in)) ? 1 : 0;
}
static void ati_i2c_start(void)
@@ -275,7 +280,6 @@ static void ati_i2c_edid(void)
u8 byte;
int i;
- dprintf(1, "ati: reading edid blob\n");
ati_i2c_start();
ati_i2c_send_byte(0x50 << 1 | 1);
ati_i2c_ack();
@@ -287,6 +291,22 @@ static void ati_i2c_edid(void)
ati_i2c_stop();
}
+static void ati_i2c_edid_radeon(void)
+{
+ int valid;
+
+ SET_VGA(ati_i2c_bit_scl_out, 17);
+ SET_VGA(ati_i2c_bit_sda_out, 16);
+ SET_VGA(ati_i2c_bit_sda_in, 8);
+
+ dprintf(1, "ati: reading edid blob (radeon dvi) ... \n");
+ SET_VGA(ati_i2c_reg, GPIO_DVI_DDC);
+ ati_i2c_edid();
+ valid = (GET_GLOBAL(VBE_edid[0]) == 0x00 &&
+ GET_GLOBAL(VBE_edid[1]) == 0xff);
+ dprintf(1, "ati: ... %s\n", valid ? "good" : "invalid");
+}
+
/****************************************************************
* init
****************************************************************/
@@ -351,7 +371,7 @@ ati_setup(void)
u16 device = pci_config_readw(bdf, PCI_DEVICE_ID);
switch (device) {
case 0x5159:
- ati_i2c_edid();
+ ati_i2c_edid_radeon();
break;
}

View File

@ -1,27 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 12:09:52 +0200
Subject: ati-vga: make less verbose
Git-commit: ce52a31f612e33df66ac3553d9633732e34a277b
Reduce loglevel for mode line removals from 1 to 3.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index 8c9e6966db47f083646193d7faf6..b3975226c47852c80ec4278b9a95 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -343,7 +343,7 @@ ati_setup(void)
height > 0xfff ||
mem > totalmem ||
memmodel != MM_DIRECT) {
- dprintf(1, "ati: removing mode 0x%x\n", GET_GLOBAL(m->mode));
+ dprintf(3, "ati: removing mode 0x%x\n", GET_GLOBAL(m->mode));
SET_VGA(m->mode, 0xffff);
}
}

View File

@ -1,35 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 12:17:28 +0200
Subject: ati-vga: try vga ddc first
Git-commit: af573dceef7b9a45d13192ec5abf29b73c78540e
Try vga ddc bus before dvi ddc bus.
Return early in case we got valid data.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index 901e82d013837f54f4db292628d1..71dfa859a22dc569ed2fd1312c6b 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -299,6 +299,15 @@ static void ati_i2c_edid_radeon(void)
SET_VGA(ati_i2c_bit_sda_out, 16);
SET_VGA(ati_i2c_bit_sda_in, 8);
+ dprintf(1, "ati: reading edid blob (radeon vga) ... \n");
+ SET_VGA(ati_i2c_reg, GPIO_VGA_DDC);
+ ati_i2c_edid();
+ valid = (GET_GLOBAL(VBE_edid[0]) == 0x00 &&
+ GET_GLOBAL(VBE_edid[1]) == 0xff);
+ dprintf(1, "ati: ... %s\n", valid ? "good" : "invalid");
+ if (valid)
+ return;
+
dprintf(1, "ati: reading edid blob (radeon dvi) ... \n");
SET_VGA(ati_i2c_reg, GPIO_DVI_DDC);
ati_i2c_edid();

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e298b3bf15adb6636508ea8533f64bf155f5afd6da75078522d133bddb6e21f6
size 37264
oid sha256:c6bfd1cc60007363229f3ac8ed21c098ca30a8119ad90ba37a38b5594a277a6b
size 29340

View File

@ -7,7 +7,7 @@
# The following specifies the upstream tag or commit upon which our patchqueue
# gets rebased. The special value LATEST may be used to "automatically" track
# the upstream development tree in the master branch
GIT_UPSTREAM_COMMIT_ISH=v4.1.1
GIT_UPSTREAM_COMMIT_ISH=LATEST
# WARNING: If transitioning from using LATEST to not, MANUALLY re-set the
# tarball present. If transitioning TO LATEST, make sure that
# NEXT_RELEASE_IS_MAJOR is set correctly
@ -17,9 +17,9 @@ NEXT_RELEASE_IS_MAJOR=0
# Unfortunately, SeaBIOS doesn't always follow an "always increasing" version
# model, so there may be times we should overide the automated version setting.
# We can do so by specifing the value here:
# SEABIOS_VERSION=1.12.1+
SEABIOS_VERSION=1.12.1+
# The shared openSUSE specific git repo, on which $GIT_LOCAL_TREE is based
# The shared git repo, on which $GIT_LOCAL_TREE is based
GIT_TREE=git://github.com/openSUSE/qemu.git
# Temporary directories used by this script
@ -31,7 +31,7 @@ BUNDLE_DIR=/dev/shm/qemu-factory-bundle-dir
NUMBERED_PATCHES=0
PATCH_RANGE=1000
REPO_COUNT=26
REPO_COUNT=27
# Perhaps we need to instead use the terminal local dirname as the index
# and store the ~/git/ as a separate VARIABLE
@ -50,6 +50,7 @@ LOCAL_REPO_MAP=(
~/git/qemu-slirp
~/git/qemu-u-boot
~/git/qemu-openhackware
~/git/qemu-qboot
~/git/qemu-dtc
~/git/qemu-opensbi
~/git/qemu-edk2-openssl
@ -79,6 +80,7 @@ PATCH_PATH_MAP=(
"slirp/"
"roms/u-boot/"
"roms/openhackware/"
"roms/qboot/"
"dtc/"
"roms/opensbi/"
"roms/edk2/CryptoPkg/Library/OpensslLib/openssl/"

View File

@ -8,21 +8,14 @@ roms is being added to.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
configure | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure b/configure
index 578d208b374261803d84c22c2479..6cfe739061d2d8fef6d89147fcd5 100755
index 09a33aecfd6ef543eeee8c5023b6..94984691ab378620ac2e0ae771ca 100755
--- a/configure
+++ b/configure
@@ -6211,12 +6211,13 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
fi
done
fi
-if test "$ARCH" = "ppc64" && test "$targetos" != "Darwin" ; then
+if test "$ARCH" = "ppc64" && test "$targetos" != "Darwin" && \
+ test "$softmmu" = yes ; then
roms="$roms spapr-rtas"
@@ -6327,7 +6327,7 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
fi
# Only build s390-ccw bios if we're on s390x and the compiler has -march=z900

View File

@ -8,7 +8,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index bd34cfc2394a9103fec2e951bb67..7b8a5cd6b17254685df89798ed10 100644
index ca8d0283922bbfa931e85511e921..d807c558ef0f09b5975f6ccc38f1 100644
--- a/roms/seabios/Makefile
+++ b/roms/seabios/Makefile
@@ -13,7 +13,7 @@ export CONFIG_SHELL := sh

View File

@ -0,0 +1,52 @@
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 1 Nov 2019 19:32:57 -0600
Subject: ensure headers included are compatible with freestanding mode
Certain standard headers are designated for use in freestanding mode
while others are prohibited. To conform to these rules, use <stdint.h>
instead of <inttypes.h> as well as switch one <string.h> reference to
the "string.h" implemented in project.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
include/bios.h | 2 +-
malloc.c | 2 +-
pci.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/roms/qboot/include/bios.h b/roms/qboot/include/bios.h
index f36638b977864c220bf3ed9a612f..7f8f677671d7b47e7c07f800646c 100644
--- a/roms/qboot/include/bios.h
+++ b/roms/qboot/include/bios.h
@@ -1,7 +1,7 @@
#ifndef BIOS_H_
#define BIOS_H_
-#include <inttypes.h>
+#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
diff --git a/roms/qboot/malloc.c b/roms/qboot/malloc.c
index 8738373b774358425b2767fc7e9f..bd0ac0f23ee1e3c4a8f5e003ff1d 100644
--- a/roms/qboot/malloc.c
+++ b/roms/qboot/malloc.c
@@ -1,4 +1,4 @@
-#include <inttypes.h>
+#include <stdint.h>
#include "string.h"
#include "bios.h"
diff --git a/roms/qboot/pci.c b/roms/qboot/pci.c
index 65c9e81793ab7aad9b5d1679e78e..63ebda6a0580463ea2b562317cec 100644
--- a/roms/qboot/pci.c
+++ b/roms/qboot/pci.c
@@ -1,7 +1,7 @@
#include "bios.h"
#include "ioport.h"
#include "pci.h"
-#include <string.h>
+#include "string.h"
static uint16_t addend;
static uint8_t bus, bridge_head;

View File

@ -1,64 +0,0 @@
From: Stewart Smith <stewart@linux.ibm.com>
Date: Tue, 18 Jun 2019 16:06:44 +1000
Subject: hdata/vpd: fix printing (char*)0x00
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: ba977f2e4406f9de318afcdf5d666e77585ef269
GCC9 now catches this bug:
In file included from hdata/vpd.c:17:
In function vpd_vini_parse,
inlined from vpd_data_parse at hdata/vpd.c:416:3:
/home/stewart/skiboot/include/skiboot.h:93:31: error: %s directive argument is null [-Werror=format-overflow=]
93 | #define prlog(l, f, ...) do { _prlog(l, pr_fmt(f), ##__VA_ARGS__); } while(0)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hdata/vpd.c:390:5: note: in expansion of macro prlog
390 | prlog(PR_WARNING,
| ^~~~~
hdata/vpd.c: In function vpd_data_parse:
hdata/vpd.c:391:46: note: format string is defined here
391 | "VPD: CCIN desc not available for: %s\n",
| ^~
cc1: all warnings being treated as errors
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
hdata/vpd.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/roms/skiboot/hdata/vpd.c b/roms/skiboot/hdata/vpd.c
index 129b5062356a48d900c6aa5a140d..5a01bcc9f6fa2faef2a118eca938 100644
--- a/roms/skiboot/hdata/vpd.c
+++ b/roms/skiboot/hdata/vpd.c
@@ -328,6 +328,7 @@ static void vpd_vini_parse(struct dt_node *node,
const void *fruvpd, unsigned int fruvpd_sz)
{
const void *kw;
+ const char *desc;
uint8_t sz;
const struct card_info *cinfo;
@@ -381,15 +382,15 @@ static void vpd_vini_parse(struct dt_node *node,
dt_add_property_string(node,
"description", cinfo->description);
} else {
- kw = vpd_find(fruvpd, fruvpd_sz, "VINI", "DR", &sz);
- if (kw) {
+ desc = vpd_find(fruvpd, fruvpd_sz, "VINI", "DR", &sz);
+ if (desc) {
dt_add_prop_sanitize_val(node,
- "description", kw, sz);
+ "description", desc, sz);
} else {
dt_add_property_string(node, "description", "Unknown");
prlog(PR_WARNING,
"VPD: CCIN desc not available for: %s\n",
- (char *)kw);
+ (char*)kw);
}
}
}

View File

@ -41,10 +41,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c
index e37d457fcf3ae8f37ae3c4047161..640f146a50af42ccd03aa18786f2 100644
index a1b699b6babc3105bfd4ad9a8383..17317c961caa9a09c476e9ecbd3f 100644
--- a/hw/intc/exynos4210_gic.c
+++ b/hw/intc/exynos4210_gic.c
@@ -288,8 +288,8 @@ static void exynos4210_gic_realize(DeviceState *dev, Error **errp)
@@ -290,8 +290,8 @@ static void exynos4210_gic_realize(DeviceState *dev, Error **errp)
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
const char cpu_prefix[] = "exynos4210-gic-alias_cpu";
const char dist_prefix[] = "exynos4210-gic-alias_dist";

View File

@ -16,10 +16,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 39 insertions(+), 4 deletions(-)
diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
index 7bcd67b098e91a0e724b77b224c1..44e62c2a627195d71ac569e9de49 100644
index 11d476c4a2cbdabc546c02b4f076..570ffa3acfa48b3721bdc578ee57 100644
--- a/hw/smbios/smbios.c
+++ b/hw/smbios/smbios.c
@@ -965,6 +965,7 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
@@ -964,6 +964,7 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
struct smbios_structure_header *header;
int size;
struct smbios_table *table; /* legacy mode only */
@ -27,7 +27,7 @@ index 7bcd67b098e91a0e724b77b224c1..44e62c2a627195d71ac569e9de49 100644
qemu_opts_validate(opts, qemu_smbios_file_opts, &err);
if (err) {
@@ -979,11 +980,21 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
@@ -978,11 +979,21 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
}
/*
@ -53,7 +53,7 @@ index 7bcd67b098e91a0e724b77b224c1..44e62c2a627195d71ac569e9de49 100644
header = (struct smbios_structure_header *)(smbios_tables +
smbios_tables_len);
@@ -998,6 +1009,19 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
@@ -997,6 +1008,19 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
header->type);
return;
}
@ -73,7 +73,7 @@ index 7bcd67b098e91a0e724b77b224c1..44e62c2a627195d71ac569e9de49 100644
set_bit(header->type, have_binfile_bitmap);
if (header->type == 4) {
@@ -1018,6 +1042,17 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
@@ -1017,6 +1041,17 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
* delete the one we don't need from smbios_set_defaults(),
* once we know which machine version has been requested.
*/

View File

@ -17,10 +17,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 13 insertions(+)
diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
index fd1b3394a5b4b4827deece722e0c..8de503cc4d55423ae0bd070867c0 100644
index 7c07295519d33d13fd3755ea7e0a..13815df4737ef8f46e6f857153b1 100644
--- a/hw/usb/dev-mtp.c
+++ b/hw/usb/dev-mtp.c
@@ -1720,9 +1720,22 @@ static void usb_mtp_write_metadata(MTPState *s, uint64_t dlen)
@@ -1722,9 +1722,22 @@ static void usb_mtp_write_metadata(MTPState *s, uint64_t dlen)
assert(!s->write_pending);
assert(p != NULL);

View File

@ -28,10 +28,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 1 insertion(+)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 5894a186633414970fe748dbd9f4..47ea8dd3a5f6a09e361f0f59c7b9 100644
index 80988bb305a149f2974d329576a0..00b59bee44f4780727ca0279ced5 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -3324,6 +3324,7 @@ static void usb_xhci_init(XHCIState *xhci)
@@ -3330,6 +3330,7 @@ static void usb_xhci_init(XHCIState *xhci)
usb_bus_new(&xhci->bus, sizeof(xhci->bus), &xhci_bus_ops, dev);
for (i = 0; i < usbports; i++) {

View File

@ -16,10 +16,10 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 7 insertions(+)
diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c
index 76ca6ec4446998f62d384a909814..fb9d5047f8c50df8ad0e662a42ac 100644
index 050875b49738809ac586ba9ed259..59aa28b8a72590e7fdda0feecefe 100644
--- a/hw/timer/i8254_common.c
+++ b/hw/timer/i8254_common.c
@@ -261,6 +261,12 @@ static int pit_dispatch_post_load(void *opaque, int version_id)
@@ -224,6 +224,12 @@ static int pit_dispatch_post_load(void *opaque, int version_id)
return 0;
}
@ -32,7 +32,7 @@ index 76ca6ec4446998f62d384a909814..fb9d5047f8c50df8ad0e662a42ac 100644
static const VMStateDescription vmstate_pit_common = {
.name = "i8254",
.version_id = 3,
@@ -270,6 +276,7 @@ static const VMStateDescription vmstate_pit_common = {
@@ -231,6 +237,7 @@ static const VMStateDescription vmstate_pit_common = {
.pre_save = pit_dispatch_pre_save,
.post_load = pit_dispatch_post_load,
.fields = (VMStateField[]) {

View File

@ -18,10 +18,10 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 8b3dc5533e6994bf9066f88f1a5e..3440f1e4297940d8db2e533d5cb1 100644
index cde2a16b941adeb1123d5d7411f3..39b9327a64d42bdace0d7346e038 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -1713,7 +1713,7 @@ uint64_t cpu_get_tsc(CPUX86State *env);
@@ -1928,7 +1928,7 @@ uint64_t cpu_get_tsc(CPUX86State *env);
/* XXX: This value should match the one returned by CPUID
* and in exec.c */
# if defined(TARGET_X86_64)

View File

@ -21,10 +21,10 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 24 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index cf5de07a09235e6d92735332dc7f..3bb2c8921fc203264bbc0a37fe1d 100644
index 57be4c98555e50f2263811cd11f4..243ec2a1e3bde8e6b3ac48989554 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6958,6 +6958,27 @@ static int open_self_stat(void *cpu_env, int fd)
@@ -7068,6 +7068,27 @@ static int open_self_stat(void *cpu_env, int fd)
return 0;
}
@ -52,7 +52,7 @@ index cf5de07a09235e6d92735332dc7f..3bb2c8921fc203264bbc0a37fe1d 100644
static int open_self_auxv(void *cpu_env, int fd)
{
CPUState *cpu = env_cpu((CPUArchState *)cpu_env);
@@ -7100,6 +7121,9 @@ static int do_openat(void *cpu_env, int dirfd, const char *pathname, int flags,
@@ -7210,6 +7231,9 @@ static int do_openat(void *cpu_env, int dirfd, const char *pathname, int flags,
#if defined(TARGET_SPARC)
{ "/proc/cpuinfo", open_cpuinfo, is_proc },
#endif

View File

@ -35,12 +35,12 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
3 files changed, 57 insertions(+)
diff --git a/Makefile.target b/Makefile.target
index 933b27453a1dbb9273e0a9ff2d58..6e401da667fe4295acec4dc11302 100644
index 24d79d26ebd00034bd97309fe5a7..1e9600834a25544063c313eba92a 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -42,6 +42,10 @@ STPFILES=
# Makefile Tests
include $(SRC_PATH)/tests/tcg/Makefile.include
@@ -39,6 +39,10 @@ endif
PROGS=$(QEMU_PROG) $(QEMU_PROGW)
STPFILES=
+ifdef CONFIG_LINUX_USER
+PROGS+=$(QEMU_PROG)-binfmt
@ -49,7 +49,7 @@ index 933b27453a1dbb9273e0a9ff2d58..6e401da667fe4295acec4dc11302 100644
config-target.h: config-target.h-timestamp
config-target.h-timestamp: config-target.mak
@@ -134,6 +138,8 @@ QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) \
@@ -133,6 +137,8 @@ QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) \
obj-y += linux-user/
obj-y += gdbstub.o thunk.o
@ -58,7 +58,7 @@ index 933b27453a1dbb9273e0a9ff2d58..6e401da667fe4295acec4dc11302 100644
endif #CONFIG_LINUX_USER
#########################################################
@@ -175,7 +181,11 @@ generated-files-y += config-devices.h
@@ -174,7 +180,11 @@ generated-files-y += config-devices.h
endif # CONFIG_SOFTMMU
@ -70,7 +70,7 @@ index 933b27453a1dbb9273e0a9ff2d58..6e401da667fe4295acec4dc11302 100644
all-obj-y := $(obj-y)
include $(SRC_PATH)/Makefile.objs
@@ -212,6 +222,9 @@ ifdef CONFIG_DARWIN
@@ -211,6 +221,9 @@ ifdef CONFIG_DARWIN
$(call quiet-command,SetFile -a C $@,"SETFILE","$(TARGET_DIR)$@")
endif

View File

@ -15,10 +15,10 @@ Signed-off-by: Alexander Graf <agraf@suse.de>
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 8aa653262154326beced64bbe782..5360786be3466c44554b373b4238 100644
index 61d976cca146a6deb2d74c95ec59..926a7dd587b39d0615cbbb077ef2 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7619,8 +7619,13 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_ulong arg1,
@@ -7729,8 +7729,13 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_ulong arg1,
return ret;
#endif
#ifdef TARGET_NR_lseek

View File

@ -15,10 +15,10 @@ Signed-off-by: Andreas Schwab <schwab@suse.de>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 5360786be3466c44554b373b4238..330fbecb120ebc9ebc1c0ec121f6 100644
index 926a7dd587b39d0615cbbb077ef2..9330a1ec6a15f16e4f7fd0f825c2 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -9646,7 +9646,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_ulong arg1,
@@ -9758,7 +9758,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_ulong arg1,
{
struct timespec ts, *pts;

View File

@ -16,10 +16,10 @@ Signed-off-by: Alexander Graf <agraf@suse.de>
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/linux-user/qemu.h b/linux-user/qemu.h
index aac0334627003fbf375dfd4c88d0..abd0b4569699ff87d015c951e651 100644
index f6f5fe5fbb553c151cb57146350c..b45b68221434e29636bb34c9f0b0 100644
--- a/linux-user/qemu.h
+++ b/linux-user/qemu.h
@@ -207,10 +207,10 @@ abi_long memcpy_to_target(abi_ulong dest, const void *src,
@@ -206,10 +206,10 @@ abi_long memcpy_to_target(abi_ulong dest, const void *src,
void target_set_brk(abi_ulong new_brk);
abi_long do_brk(abi_ulong new_brk);
void syscall_init(void);
@ -35,10 +35,10 @@ index aac0334627003fbf375dfd4c88d0..abd0b4569699ff87d015c951e651 100644
extern __thread CPUState *thread_cpu;
void cpu_loop(CPUArchState *env);
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 3bb2c8921fc203264bbc0a37fe1d..8aa653262154326beced64bbe782 100644
index 243ec2a1e3bde8e6b3ac48989554..61d976cca146a6deb2d74c95ec59 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7264,10 +7264,10 @@ static int host_to_target_cpu_mask(const unsigned long *host_mask,
@@ -7374,10 +7374,10 @@ static int host_to_target_cpu_mask(const unsigned long *host_mask,
* of syscall results, can be performed.
* All errnos that do_syscall() returns must be -TARGET_<errcode>.
*/
@ -53,7 +53,7 @@ index 3bb2c8921fc203264bbc0a37fe1d..8aa653262154326beced64bbe782 100644
{
CPUState *cpu = env_cpu(cpu_env);
abi_long ret;
@@ -10013,7 +10013,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
@@ -10125,7 +10125,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
*/
ret = -TARGET_EINVAL;
if (cpu_isar_feature(aa64_sve, env_archcpu(cpu_env))
@ -62,7 +62,7 @@ index 3bb2c8921fc203264bbc0a37fe1d..8aa653262154326beced64bbe782 100644
CPUARMState *env = cpu_env;
ARMCPU *cpu = env_archcpu(env);
uint32_t vq, old_vq;
@@ -11993,10 +11993,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
@@ -12116,10 +12116,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
return ret;
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ed6fdbbdd272611446ff8036991e9b9f04a2ab2e3ffa9e79f3bab0eb9a95a1d2
size 61932460

Binary file not shown.

3
qemu-4.2.0-rc3.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:253687e815ad57e1a61b6ed16251e7d275661a1507e065886cdbf24552150b69
size 64784720

View File

@ -13,10 +13,10 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
index b5a16742a149c0d2e08c6a34d08e..4f1358e2fd8c0da34cf06a763ca8 100755
index 9f1580a91c7d3ad64120fe8ee66d..246546b10ca5df38035e5ba46a09 100755
--- a/scripts/qemu-binfmt-conf.sh
+++ b/scripts/qemu-binfmt-conf.sh
@@ -319,7 +319,7 @@ BINFMT_SET=qemu_register_interpreter
@@ -323,7 +323,7 @@ BINFMT_SET=qemu_register_interpreter
SYSTEMDDIR="/etc/binfmt.d"
DEBIANDIR="/usr/share/binfmts"

View File

@ -12,10 +12,10 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
index 4f1358e2fd8c0da34cf06a763ca8..13add7775eb7d24c52735b02cd51 100755
index 246546b10ca5df38035e5ba46a09..e0666a3afdc81f0f8277a53f3e1e 100755
--- a/scripts/qemu-binfmt-conf.sh
+++ b/scripts/qemu-binfmt-conf.sh
@@ -262,7 +262,7 @@ qemu_generate_register() {
@@ -266,7 +266,7 @@ qemu_generate_register() {
flags="${flags}F"
fi
@ -24,7 +24,7 @@ index 4f1358e2fd8c0da34cf06a763ca8..13add7775eb7d24c52735b02cd51 100755
}
qemu_register_interpreter() {
@@ -301,9 +301,9 @@ qemu_set_binfmts() {
@@ -305,9 +305,9 @@ qemu_set_binfmts() {
continue
fi

View File

@ -11,10 +11,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 3 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 8367cb138dfe075e06ca455009cc..17914fadfc9f3390d4b8ab8d74a6 100644
index 171c0caef3a191c861e76493ccfc..25b0f3bba38b8629cb4bc027be96 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8446,6 +8446,9 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
@@ -8558,6 +8558,9 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
case TARGET_NR_gettimeofday:
{
struct timeval tv;

View File

@ -13,10 +13,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 17914fadfc9f3390d4b8ab8d74a6..25fd641816c0a54e49a167f5e818 100644
index 25b0f3bba38b8629cb4bc027be96..49db231f031015265f6d8cead831 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -5043,7 +5043,19 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
@@ -5151,7 +5151,19 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
ie = ioctl_entries;
for(;;) {
if (ie->target_cmd == 0) {

View File

@ -16,10 +16,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 8 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 25fd641816c0a54e49a167f5e818..cf5de07a09235e6d92735332dc7f 100644
index 49db231f031015265f6d8cead831..57be4c98555e50f2263811cd11f4 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -5084,6 +5084,13 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
@@ -5192,6 +5192,13 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
arg_type++;
target_size = thunk_type_size(arg_type, 0);
switch(ie->access) {
@ -33,7 +33,7 @@ index 25fd641816c0a54e49a167f5e818..cf5de07a09235e6d92735332dc7f 100644
case IOC_R:
ret = get_errno(safe_ioctl(fd, ie->host_cmd, buf_temp));
if (!is_error(ret)) {
@@ -5102,6 +5109,7 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
@@ -5210,6 +5217,7 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
unlock_user(argptr, arg, 0);
ret = get_errno(safe_ioctl(fd, ie->host_cmd, buf_temp));
break;

View File

@ -1,3 +1,42 @@
-------------------------------------------------------------------
Wed Nov 27 03:10:09 UTC 2019 - Bruce Rogers <brogers@suse.com>
- Update to v4.2.0-rc3: See http://wiki.qemu.org/ChangeLog/4.2
* Patches dropped (upstream unless otherwise noted):
ati-add-edid-support.patch
ati-vga-add-rage128-edid-support.patch
ati-vga-fix-ati_read.patch
ati-vga-make-i2c-register-and-bits-confi.patch
ati-vga-make-less-verbose.patch
ati-vga-try-vga-ddc-first.patch
Disable-Waddress-of-packed-member-for-GC.patch
hdata-vpd-fix-printing-char-0x00.patch
target-i386-add-PSCHANGE_NO-bit-for-the-.patch
target-i386-Export-TAA_NO-bit-to-guests.patch
vbe-add-edid-support.patch
vga-add-ati-bios-tables.patch
vga-add-atiext-driver.patch
vga-make-memcpy_high-public.patch
vga-move-modelist-from-bochsvga.c-to-new.patch
* Patches added:
Enable-cross-compile-prefix-for-C-compil.patch
ensure-headers-included-are-compatible-w.patch
roms-Makefile-enable-cross-compile-for-b.patch
* Add qemu-ui-spice-app package containing ui-spice-app.so
* Add qemu-microvm package containing bios-microvm.bin
- Add descriptors for the 128k and 256k SeaBios firmware images
- For the record, the following issues reported for SUSE SLE15-SP1
are either fixed in this current package, or are otherwise not an
issue: bsc#1079730 bsc#1098403 bsc#1111025 bsc#1128106 bsc#1133031
bsc#1134883 bsc#1135210 bsc#1135902 bsc#1136540 bsc#1136778
bsc#1138534 bsc#1140402 bsc#1143794 bsc#1145379 bsc#1144087
bsc#1145427 bsc#1145436 bsc#1145774 bsc#1146873 bsc#1149811
bsc#1152506 bsc#1155812 bsc#1156642 CVE-2018-12207 CVE-2019-5008
CVE-2019-11135 CVE-2019-12068 CVE-2019-12155 CVE-2019-13164
CVE-2019-14378 CVE-2019-15890, and the following feature requests
are satisfied by this package: fate#327410 fate#327764 fate#327796
jira-SLE-4883 jira-SLE-6132 jira-SLE-6237 jira-SLE-6754
-------------------------------------------------------------------
Tue Nov 19 19:13:41 UTC 2019 - Bruce Rogers <brogers@suse.com>

236
qemu.spec
View File

@ -1,7 +1,7 @@
#
# spec file for package qemu
#
# Copyright (c) 2019 SUSE LLC.
# Copyright (c) 2019 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -87,9 +87,9 @@
%define summary_string Machine emulator and virtualizer
%endif
%define qemuver 4.1.1
%define srcver 4.1.1
%define sbver 1.12.1
%define qemuver 4.1.93
%define srcver 4.2.0-rc3
%define sbver 1.12.1+
%define srcname qemu
Name: qemu%{name_suffix}
URL: https://www.qemu.org/
@ -99,7 +99,6 @@ Group: System/Emulators/PC
Version: %qemuver
Release: 0
Source: https://wiki.qemu.org/download/%{srcname}-%{srcver}.tar.xz
Source99: https://wiki.qemu.org/download/%{srcname}-%{srcver}.tar.xz.sig
Source100: %{srcname}.keyring
Source1: 80-kvm.rules
Source2: kvm.conf
@ -114,6 +113,8 @@ Source10: supported.arm.txt
Source11: supported.ppc.txt
Source12: supported.x86.txt
Source13: supported.s390.txt
Source14: 50-seabios-256k.json
Source15: 60-seabios-128k.json
Source200: qemu-rpmlintrc
Source300: bundles.tar.xz
Source301: update_git.sh
@ -123,63 +124,51 @@ Source303: README.PACKAGING
# This patch queue is auto-generated - see README.PACKAGING for process
# Patches applied in base project:
Patch00000: target-i386-add-PSCHANGE_NO-bit-for-the-.patch
Patch00001: target-i386-Export-TAA_NO-bit-to-guests.patch
Patch00002: XXX-dont-dump-core-on-sigabort.patch
Patch00003: qemu-binfmt-conf-Modify-default-path.patch
Patch00004: qemu-cvs-gettimeofday.patch
Patch00005: qemu-cvs-ioctl_debug.patch
Patch00006: qemu-cvs-ioctl_nodirection.patch
Patch00007: linux-user-add-binfmt-wrapper-for-argv-0.patch
Patch00008: PPC-KVM-Disable-mmu-notifier-check.patch
Patch00009: linux-user-binfmt-support-host-binaries.patch
Patch00010: linux-user-Fake-proc-cpuinfo.patch
Patch00011: linux-user-use-target_ulong.patch
Patch00012: Make-char-muxer-more-robust-wrt-small-FI.patch
Patch00013: linux-user-lseek-explicitly-cast-non-set.patch
Patch00014: AIO-Reduce-number-of-threads-for-32bit-h.patch
Patch00015: xen_disk-Add-suse-specific-flush-disable.patch
Patch00016: qemu-bridge-helper-reduce-security-profi.patch
Patch00017: qemu-binfmt-conf-use-qemu-ARCH-binfmt.patch
Patch00018: linux-user-properly-test-for-infinite-ti.patch
Patch00019: roms-Makefile-pass-a-packaging-timestamp.patch
Patch00020: Raise-soft-address-space-limit-to-hard-l.patch
Patch00021: increase-x86_64-physical-bits-to-42.patch
Patch00022: vga-Raise-VRAM-to-16-MiB-for-pc-0.15-and.patch
Patch00023: i8254-Fix-migration-from-SLE11-SP2.patch
Patch00024: acpi_piix4-Fix-migration-from-SLE11-SP2.patch
Patch00025: Switch-order-of-libraries-for-mpath-supp.patch
Patch00026: Make-installed-scripts-explicitly-python.patch
Patch00027: hw-smbios-handle-both-file-formats-regar.patch
Patch00028: xen-add-block-resize-support-for-xen-dis.patch
Patch00029: tests-qemu-iotests-Triple-timeout-of-i-o.patch
Patch00030: tests-Fix-block-tests-to-be-compatible-w.patch
Patch00031: xen-ignore-live-parameter-from-xen-save-.patch
Patch00032: Conditionalize-ui-bitmap-installation-be.patch
Patch00033: tests-change-error-message-in-test-162.patch
Patch00034: hw-usb-hcd-xhci-Fix-GCC-9-build-warning.patch
Patch00035: hw-usb-dev-mtp-Fix-GCC-9-build-warning.patch
Patch00036: hw-intc-exynos4210_gic-provide-more-room.patch
Patch00037: configure-only-populate-roms-if-softmmu.patch
Patch00038: pc-bios-s390-ccw-net-avoid-warning-about.patch
Patch00039: roms-change-cross-compiler-naming-to-be-.patch
Patch00040: tests-Disable-some-block-tests-for-now.patch
Patch00041: test-add-mapping-from-arch-of-i686-to-qe.patch
Patch00000: XXX-dont-dump-core-on-sigabort.patch
Patch00001: qemu-binfmt-conf-Modify-default-path.patch
Patch00002: qemu-cvs-gettimeofday.patch
Patch00003: qemu-cvs-ioctl_debug.patch
Patch00004: qemu-cvs-ioctl_nodirection.patch
Patch00005: linux-user-add-binfmt-wrapper-for-argv-0.patch
Patch00006: PPC-KVM-Disable-mmu-notifier-check.patch
Patch00007: linux-user-binfmt-support-host-binaries.patch
Patch00008: linux-user-Fake-proc-cpuinfo.patch
Patch00009: linux-user-use-target_ulong.patch
Patch00010: Make-char-muxer-more-robust-wrt-small-FI.patch
Patch00011: linux-user-lseek-explicitly-cast-non-set.patch
Patch00012: AIO-Reduce-number-of-threads-for-32bit-h.patch
Patch00013: xen_disk-Add-suse-specific-flush-disable.patch
Patch00014: qemu-bridge-helper-reduce-security-profi.patch
Patch00015: qemu-binfmt-conf-use-qemu-ARCH-binfmt.patch
Patch00016: linux-user-properly-test-for-infinite-ti.patch
Patch00017: roms-Makefile-pass-a-packaging-timestamp.patch
Patch00018: Raise-soft-address-space-limit-to-hard-l.patch
Patch00019: increase-x86_64-physical-bits-to-42.patch
Patch00020: vga-Raise-VRAM-to-16-MiB-for-pc-0.15-and.patch
Patch00021: i8254-Fix-migration-from-SLE11-SP2.patch
Patch00022: acpi_piix4-Fix-migration-from-SLE11-SP2.patch
Patch00023: Switch-order-of-libraries-for-mpath-supp.patch
Patch00024: Make-installed-scripts-explicitly-python.patch
Patch00025: hw-smbios-handle-both-file-formats-regar.patch
Patch00026: xen-add-block-resize-support-for-xen-dis.patch
Patch00027: tests-qemu-iotests-Triple-timeout-of-i-o.patch
Patch00028: tests-Fix-block-tests-to-be-compatible-w.patch
Patch00029: xen-ignore-live-parameter-from-xen-save-.patch
Patch00030: Conditionalize-ui-bitmap-installation-be.patch
Patch00031: tests-change-error-message-in-test-162.patch
Patch00032: hw-usb-hcd-xhci-Fix-GCC-9-build-warning.patch
Patch00033: hw-usb-dev-mtp-Fix-GCC-9-build-warning.patch
Patch00034: hw-intc-exynos4210_gic-provide-more-room.patch
Patch00035: configure-only-populate-roms-if-softmmu.patch
Patch00036: pc-bios-s390-ccw-net-avoid-warning-about.patch
Patch00037: roms-change-cross-compiler-naming-to-be-.patch
Patch00038: tests-Disable-some-block-tests-for-now.patch
Patch00039: test-add-mapping-from-arch-of-i686-to-qe.patch
Patch00040: roms-Makefile-enable-cross-compile-for-b.patch
# Patches applied in roms/seabios/:
Patch01000: seabios-use-python2-explicitly-as-needed.patch
Patch01001: seabios-switch-to-python3-as-needed.patch
Patch01002: enable-cross-compilation-on-ARM.patch
Patch01003: vga-move-modelist-from-bochsvga.c-to-new.patch
Patch01004: vga-make-memcpy_high-public.patch
Patch01005: vga-add-atiext-driver.patch
Patch01006: vga-add-ati-bios-tables.patch
Patch01007: vbe-add-edid-support.patch
Patch01008: ati-add-edid-support.patch
Patch01009: ati-vga-make-less-verbose.patch
Patch01010: ati-vga-fix-ati_read.patch
Patch01011: ati-vga-make-i2c-register-and-bits-confi.patch
Patch01012: ati-vga-try-vga-ddc-first.patch
Patch01013: ati-vga-add-rage128-edid-support.patch
# Patches applied in roms/ipxe/:
Patch02000: stub-out-the-SAN-req-s-in-int13.patch
Patch02001: ipxe-Makefile-fix-issues-of-build-reprod.patch
@ -189,11 +178,11 @@ Patch02004: Do-not-apply-WORKAROUND_CFLAGS-for-host-.patch
# Patches applied in roms/sgabios/:
Patch03000: sgabios-Makefile-fix-issues-of-build-rep.patch
Patch03001: roms-sgabios-Fix-csum8-to-be-built-by-ho.patch
# Patches applied in roms/skiboot/:
Patch05000: Disable-Waddress-of-packed-member-for-GC.patch
Patch05001: hdata-vpd-fix-printing-char-0x00.patch
# Patches applied in ui/keycodemapdb/:
Patch08000: Make-keycode-gen-output-reproducible-use.patch
# Patches applied in roms/qboot/:
Patch12000: ensure-headers-included-are-compatible-w.patch
Patch12001: Enable-cross-compile-prefix-for-C-compil.patch
# Please do not add patches manually here.
@ -259,35 +248,38 @@ BuildRequires: e2fsprogs-devel
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: gcc-c++
BuildRequires: glib2-devel
%if 0%{?with_glusterfs}
BuildRequires: glusterfs-devel
BuildRequires: glib2-devel >= 2.48
%if build_x86_firmware_from_source
BuildRequires: glibc-devel-32bit
%endif
BuildRequires: gtk3-devel
%if 0%{?with_glusterfs}
BuildRequires: glusterfs-devel >= 3
%endif
BuildRequires: gtk3-devel >= 3.16
BuildRequires: libaio-devel
BuildRequires: libattr-devel
BuildRequires: libbz2-devel
%if 0%{?is_opensuse}
BuildRequires: libcacard-devel
BuildRequires: libcacard-devel >= 2.5.1
%endif
BuildRequires: libcap-devel
BuildRequires: libcap-ng-devel
BuildRequires: libdrm-devel
BuildRequires: libepoxy-devel
BuildRequires: libfdt-devel
BuildRequires: libfdt-devel >= 1.4.2
BuildRequires: libgbm-devel
BuildRequires: libgcrypt-devel
BuildRequires: libgnutls-devel
BuildRequires: libiscsi-devel
BuildRequires: libgcrypt-devel >= 1.5.0
BuildRequires: libgnutls-devel >= 3.1.18
BuildRequires: libiscsi-devel >= 1.9.0
BuildRequires: libjpeg-devel
%if 0%{?is_opensuse}
BuildRequires: libnfs-devel
BuildRequires: libnfs-devel >= 1.9.3
%endif
%ifnarch %arm s390x
BuildRequires: libnuma-devel
%endif
BuildRequires: libpcap-devel
BuildRequires: libpixman-1-0-devel
BuildRequires: libpixman-1-0-devel >= 0.21.8
%ifarch x86_64
BuildRequires: libpmem-devel
%endif
@ -300,11 +292,11 @@ BuildRequires: librbd-devel
BuildRequires: libSDL2-devel
BuildRequires: libSDL2_image-devel
%endif
BuildRequires: libseccomp-devel
BuildRequires: libspice-server-devel
BuildRequires: libssh-devel
BuildRequires: libseccomp-devel >= 2.3.0
BuildRequires: libspice-server-devel >= 0.12.5
BuildRequires: libssh-devel >= 0.8
BuildRequires: libudev-devel
BuildRequires: libusb-1_0-devel
BuildRequires: libusb-1_0-devel >= 1.0.13
BuildRequires: libvdeplug-devel
%if 0%{?is_opensuse}
BuildRequires: lzfse-devel
@ -325,17 +317,17 @@ BuildRequires: python3-Sphinx
BuildRequires: python3-base
BuildRequires: rdma-core-devel
BuildRequires: snappy-devel
BuildRequires: spice-protocol-devel
BuildRequires: spice-protocol-devel >= 0.12.3
BuildRequires: systemd
%{?systemd_requires}
%if %{kvm_available}
BuildRequires: pkgconfig(udev)
%endif
BuildRequires: usbredir-devel
BuildRequires: usbredir-devel >= 0.6
BuildRequires: virglrenderer-devel >= 0.4.1
BuildRequires: vte-devel
%ifarch x86_64
BuildRequires: xen-devel
BuildRequires: xen-devel >= 4.2
%endif
BuildRequires: xfsprogs-devel
%if %{build_x86_firmware_from_source}
@ -384,6 +376,7 @@ BuildRequires: qemu-ui-gtk = %{qemuver}
%if 0%{?is_opensuse}
BuildRequires: qemu-ui-sdl = %{qemuver}
%endif
BuildRequires: qemu-ui-spice-app = %{qemuver}
BuildRequires: qemu-vgabios = %{sbver}
BuildRequires: qemu-x86 = %{qemuver}
%endif
@ -404,6 +397,7 @@ Recommends: qemu-ui-gtk
%if 0%{?is_opensuse}
Recommends: qemu-ui-sdl
%endif
Recommends: qemu-ui-spice-app
Recommends: qemu-x86
%ifarch ppc ppc64 ppc64le
Recommends: qemu-ppc
@ -437,6 +431,7 @@ Suggests: qemu-lang
%if 0%{?is_opensuse}
Recommends: qemu-ksm = %{qemuver}
%endif
Suggests: qemu-microvm
Suggests: qemu-vhost-user-gpu
Provides: qemu-audio-oss = %{qemuver}
Obsoletes: qemu-audio-oss < %{qemuver}
@ -462,6 +457,7 @@ Version: %{qemuver}
Release: 0
Requires: %name = %{qemuver}
Requires: qemu-ipxe
Requires: qemu-microvm
Requires: qemu-seabios
Requires: qemu-sgabios
Requires: qemu-vgabios
@ -691,6 +687,16 @@ Release: 0
This package contains a module for doing SDL based UI for QEMU.
%endif
%package ui-spice-app
Summary: Spice UI support for QEMU
Group: System/Emulators/PC
Version: %{qemuver}
Release: 0
%{qemu_module_conflicts}
%description ui-spice-app
This package contains a module for doing Spice based UI for QEMU.
%package audio-alsa
Summary: ALSA based audio support for QEMU
Group: System/Emulators/PC
@ -769,6 +775,17 @@ This package contains the QEMU guest agent. It is installed in the linux guest
to provide information and control at the guest OS level.
%ifarch %{build_rom_arch}
%package microvm
Summary: x86 MicroVM BIOS for QEMU
Group: System/Emulators/PC
Version: %{qemuver}
Release: 0
BuildArch: noarch
%description microvm
MicroVM (qboot) is a miniam x86 firmware for booting Linux kernel.
It provides the minimum resources needed to boot PVH and bzImages.
%package seabios
Summary: x86 Legacy BIOS for QEMU
Group: System/Emulators/PC
@ -895,21 +912,9 @@ This package provides a service file for starting and stopping KSM.
%patch00038 -p1
%patch00039 -p1
%patch00040 -p1
%patch00041 -p1
%patch01000 -p1
%patch01001 -p1
%patch01002 -p1
%patch01003 -p1
%patch01004 -p1
%patch01005 -p1
%patch01006 -p1
%patch01007 -p1
%patch01008 -p1
%patch01009 -p1
%patch01010 -p1
%patch01011 -p1
%patch01012 -p1
%patch01013 -p1
%if 0%{?patch-possibly-applied-elsewhere}
%patch02000 -p1
%endif
@ -921,9 +926,9 @@ This package provides a service file for starting and stopping KSM.
%endif
%patch03000 -p1
%patch03001 -p1
%patch05000 -p1
%patch05001 -p1
%patch08000 -p1
%patch12000 -p1
%patch12001 -p1
%if "%{name}" != "qemu-linux-user"
# for the record, this set of firmware files is installed, but we don't
@ -935,19 +940,20 @@ This package provides a service file for starting and stopping KSM.
# This first list group isn't specific to what this instance builds
%define ppc_default_firmware {%nil}
%define ppc_extra_firmware {skiboot.lid slof.bin}
%define ppc64_only_default_firmware {spapr-rtas.bin}
%define ppc64_only_default_firmware {%nil}
%define ppc64_only_extra_firmware {%nil}
%define riscv64_default_firmware {opensbi-riscv64-sifive_u-fw_jump.bin opensbi-riscv64-virt-fw_jump.bin}
%define riscv64_default_firmware {opensbi-riscv64-sifive_u-fw_jump.bin \
opensbi-riscv64-virt-fw_jump.bin}
%define riscv64_extra_firmware {%nil}
%define s390x_default_firmware {s390-ccw.img s390-netboot.img}
%define s390x_extra_firmware {%nil}
%define x86_default_firmware {linuxboot.bin linuxboot_dma.bin multiboot.bin \
kvmvapic.bin pvh.bin}
%define x86_extra_firmware {bios.bin bios-256k.bin pxe-e1000.rom \
pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \
sgabios.bin vgabios-ati.bin vgabios-bochs-display.bin vgabios.bin \
vgabios-cirrus.bin vgabios-qxl.bin vgabios-ramfb.bin vgabios-stdvga.bin \
vgabios-virtio.bin vgabios-vmware.bin}
%define x86_extra_firmware {bios.bin bios-256k.bin bios-microvm.bin \
pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom \
pxe-virtio.rom sgabios.bin vgabios-ati.bin vgabios-bochs-display.bin \
vgabios.bin vgabios-cirrus.bin vgabios-qxl.bin vgabios-ramfb.bin \
vgabios-stdvga.bin vgabios-virtio.bin vgabios-vmware.bin}
%define x86_64_only_default_firmware {%nil}
%define x86_64_only_extra_firmware {edk2-aarch64-code.fd.bz2 \
edk2-arm-code.fd.bz2 edk2-arm-vars.fd.bz2 edk2-i386-code.fd.bz2 \
@ -1139,6 +1145,7 @@ cd %mybuilddir
%endif
--enable-opengl \
--enable-parallels \
--disable-plugins \
--enable-pvrdma \
--enable-qcow1 \
--enable-qed \
@ -1176,6 +1183,7 @@ cd %mybuilddir
--enable-vhost-net \
--enable-vhost-scsi \
--enable-vhost-user \
--enable-vhost-user-fs \
--enable-vhost-vsock \
--enable-virglrenderer \
--enable-virtfs \
@ -1194,6 +1202,7 @@ cd %mybuilddir
--disable-xen \
%endif
--enable-xfsctl \
--enable-xkbcommon \
# ------------------------------------------------------------------------
%else # qemu-linux-user
--without-default-devices \
@ -1216,6 +1225,7 @@ cd %mybuilddir
--disable-malloc-trim \
--enable-membarrier \
--disable-parallels \
--disable-plugins \
--disable-qcow1 \
--disable-qed \
--disable-replication \
@ -1228,9 +1238,11 @@ cd %mybuilddir
--disable-vhost-net \
--disable-vhost-scsi \
--disable-vhost-user \
--disable-vhost-user-fs \
--disable-vhost-vsock \
--disable-vnc \
--disable-vvfat \
--disable-xkbcommon \
%endif # qemu-linux-user
%if "%{name}" == "qemu"
@ -1282,6 +1294,8 @@ make %{?_smp_mflags} -C %{_builddir}/%buildsubdir/roms bios \
HOSTCC=cc \
%endif
make %{?_smp_mflags} -C %{_builddir}/%buildsubdir/roms bios-microvm
%ifnarch %ix86
%if %{provide_edk2_firmware}
make %{?_smp_mflags} -C %{_builddir}/%buildsubdir/roms efi \
@ -1310,7 +1324,9 @@ make -C %{_builddir}/%buildsubdir/roms sgabios \
HOSTCC=cc
%if %{force_fit_virtio_pxe_rom}
pushd %{_builddir}/%buildsubdir
patch -p1 < %_sourcedir/stub-out-the-SAN-req-s-in-int13.patch
popd
make %{?_smp_mflags} -C %{_builddir}/%buildsubdir/roms pxerom_variants=virtio pxerom_targets=1af41000 pxerom
%endif
@ -1494,6 +1510,8 @@ unlink %{buildroot}%_datadir/%name/edk2-licenses.txt || true
unlink %{buildroot}%_datadir/%name/edk2-x86_64-code.fd
unlink %{buildroot}%_datadir/%name/edk2-x86_64-secure-code.fd
%endif
install -D -m 0644 %{SOURCE14} %{buildroot}%_datadir/%name/firmware/50-seabios-256k.json
install -D -m 0644 %{SOURCE15} %{buildroot}%_datadir/%name/firmware/60-seabios-128k.json
%endif
%if 0%{?do_more_edk2_unlinks} || %{provide_edk2_firmware} == 0
unlink %{buildroot}%_datadir/%name/edk2-licenses.txt || true
@ -1627,7 +1645,7 @@ fi
# ========================================================================
%files
%defattr(-, root, root)
%doc Changelog README VERSION
%doc Changelog README.rst VERSION
%license COPYING COPYING.LIB LICENSE
%if "%{name}" == "qemu"
@ -1648,6 +1666,7 @@ fi
%_docdir/%name/interop/vhost-user.html
%_docdir/%name/specs/.buildinfo
%_docdir/%name/specs/_static/*
%_docdir/%name/specs/acpi_hw_reduced_hotplug.html
%_docdir/%name/specs/genindex.html
%_docdir/%name/specs/index.html
%_docdir/%name/specs/objects.inv
@ -1723,7 +1742,6 @@ fi
%_datadir/%name/qemu_vga.ndrv
%_datadir/%name/skiboot.lid
%_datadir/%name/slof.bin
%_datadir/%name/spapr-rtas.bin
%_datadir/%name/u-boot.e500
%_datadir/%name/u-boot-sam460-20100605.bin
%if 0%{?is_opensuse} == 0
@ -1860,6 +1878,11 @@ fi
%_libdir/%name/ui-sdl.so
%endif
%files ui-spice-app
%defattr(-, root, root)
%dir %_libdir/%name
%_libdir/%name/ui-spice-app.so
%files audio-alsa
%defattr(-, root, root)
%dir %_libdir/%name
@ -1886,6 +1909,13 @@ fi
%dir %_datadir/%name
%_datadir/%name/bios.bin
%_datadir/%name/bios-256k.bin
%_datadir/%name/firmware/50-seabios-256k.json
%_datadir/%name/firmware/60-seabios-128k.json
%files microvm
%defattr(-, root, root)
%dir %_datadir/%name
%_datadir/%name/bios-microvm.bin
%files vgabios
%defattr(-, root, root)
@ -1976,6 +2006,8 @@ fi
%files guest-agent
%defattr(-, root, root)
%dir %_docdir/%name/interop
%_docdir/%name/interop/qemu-ga.html
%_mandir/man8/qemu-ga.8.gz
%attr(0755,root,kvm) %_bindir/qemu-ga
%{_unitdir}/qemu-ga@.service

View File

@ -1,7 +1,7 @@
#
# spec file for package qemu
#
# Copyright (c) 2019 SUSE LLC.
# Copyright (c) 2019 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -111,6 +111,8 @@ Source10: supported.arm.txt
Source11: supported.ppc.txt
Source12: supported.x86.txt
Source13: supported.s390.txt
Source14: 50-seabios-256k.json
Source15: 60-seabios-128k.json
Source200: qemu-rpmlintrc
Source300: bundles.tar.xz
Source301: update_git.sh
@ -185,35 +187,38 @@ BuildRequires: e2fsprogs-devel
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: gcc-c++
BuildRequires: glib2-devel
%if 0%{?with_glusterfs}
BuildRequires: glusterfs-devel
BuildRequires: glib2-devel >= 2.48
%if build_x86_firmware_from_source
BuildRequires: glibc-devel-32bit
%endif
BuildRequires: gtk3-devel
%if 0%{?with_glusterfs}
BuildRequires: glusterfs-devel >= 3
%endif
BuildRequires: gtk3-devel >= 3.16
BuildRequires: libaio-devel
BuildRequires: libattr-devel
BuildRequires: libbz2-devel
%if 0%{?is_opensuse}
BuildRequires: libcacard-devel
BuildRequires: libcacard-devel >= 2.5.1
%endif
BuildRequires: libcap-devel
BuildRequires: libcap-ng-devel
BuildRequires: libdrm-devel
BuildRequires: libepoxy-devel
BuildRequires: libfdt-devel
BuildRequires: libfdt-devel >= 1.4.2
BuildRequires: libgbm-devel
BuildRequires: libgcrypt-devel
BuildRequires: libgnutls-devel
BuildRequires: libiscsi-devel
BuildRequires: libgcrypt-devel >= 1.5.0
BuildRequires: libgnutls-devel >= 3.1.18
BuildRequires: libiscsi-devel >= 1.9.0
BuildRequires: libjpeg-devel
%if 0%{?is_opensuse}
BuildRequires: libnfs-devel
BuildRequires: libnfs-devel >= 1.9.3
%endif
%ifnarch %arm s390x
BuildRequires: libnuma-devel
%endif
BuildRequires: libpcap-devel
BuildRequires: libpixman-1-0-devel
BuildRequires: libpixman-1-0-devel >= 0.21.8
%ifarch x86_64
BuildRequires: libpmem-devel
%endif
@ -226,11 +231,11 @@ BuildRequires: librbd-devel
BuildRequires: libSDL2-devel
BuildRequires: libSDL2_image-devel
%endif
BuildRequires: libseccomp-devel
BuildRequires: libspice-server-devel
BuildRequires: libssh-devel
BuildRequires: libseccomp-devel >= 2.3.0
BuildRequires: libspice-server-devel >= 0.12.5
BuildRequires: libssh-devel >= 0.8
BuildRequires: libudev-devel
BuildRequires: libusb-1_0-devel
BuildRequires: libusb-1_0-devel >= 1.0.13
BuildRequires: libvdeplug-devel
%if 0%{?is_opensuse}
BuildRequires: lzfse-devel
@ -251,17 +256,17 @@ BuildRequires: python3-Sphinx
BuildRequires: python3-base
BuildRequires: rdma-core-devel
BuildRequires: snappy-devel
BuildRequires: spice-protocol-devel
BuildRequires: spice-protocol-devel >= 0.12.3
BuildRequires: systemd
%{?systemd_requires}
%if %{kvm_available}
BuildRequires: pkgconfig(udev)
%endif
BuildRequires: usbredir-devel
BuildRequires: usbredir-devel >= 0.6
BuildRequires: virglrenderer-devel >= 0.4.1
BuildRequires: vte-devel
%ifarch x86_64
BuildRequires: xen-devel
BuildRequires: xen-devel >= 4.2
%endif
BuildRequires: xfsprogs-devel
%if %{build_x86_firmware_from_source}
@ -310,6 +315,7 @@ BuildRequires: qemu-ui-gtk = %{qemuver}
%if 0%{?is_opensuse}
BuildRequires: qemu-ui-sdl = %{qemuver}
%endif
BuildRequires: qemu-ui-spice-app = %{qemuver}
BuildRequires: qemu-vgabios = %{sbver}
BuildRequires: qemu-x86 = %{qemuver}
%endif
@ -330,6 +336,7 @@ Recommends: qemu-ui-gtk
%if 0%{?is_opensuse}
Recommends: qemu-ui-sdl
%endif
Recommends: qemu-ui-spice-app
Recommends: qemu-x86
%ifarch ppc ppc64 ppc64le
Recommends: qemu-ppc
@ -363,6 +370,7 @@ Suggests: qemu-lang
%if 0%{?is_opensuse}
Recommends: qemu-ksm = %{qemuver}
%endif
Suggests: qemu-microvm
Suggests: qemu-vhost-user-gpu
Provides: qemu-audio-oss = %{qemuver}
Obsoletes: qemu-audio-oss < %{qemuver}
@ -388,6 +396,7 @@ Version: %{qemuver}
Release: 0
Requires: %name = %{qemuver}
Requires: qemu-ipxe
Requires: qemu-microvm
Requires: qemu-seabios
Requires: qemu-sgabios
Requires: qemu-vgabios
@ -617,6 +626,16 @@ Release: 0
This package contains a module for doing SDL based UI for QEMU.
%endif
%package ui-spice-app
Summary: Spice UI support for QEMU
Group: System/Emulators/PC
Version: %{qemuver}
Release: 0
%{qemu_module_conflicts}
%description ui-spice-app
This package contains a module for doing Spice based UI for QEMU.
%package audio-alsa
Summary: ALSA based audio support for QEMU
Group: System/Emulators/PC
@ -695,6 +714,17 @@ This package contains the QEMU guest agent. It is installed in the linux guest
to provide information and control at the guest OS level.
%ifarch %{build_rom_arch}
%package microvm
Summary: x86 MicroVM BIOS for QEMU
Group: System/Emulators/PC
Version: %{qemuver}
Release: 0
BuildArch: noarch
%description microvm
MicroVM (qboot) is a miniam x86 firmware for booting Linux kernel.
It provides the minimum resources needed to boot PVH and bzImages.
%package seabios
Summary: x86 Legacy BIOS for QEMU
Group: System/Emulators/PC
@ -792,19 +822,20 @@ PATCH_EXEC
# This first list group isn't specific to what this instance builds
%define ppc_default_firmware {%nil}
%define ppc_extra_firmware {skiboot.lid slof.bin}
%define ppc64_only_default_firmware {spapr-rtas.bin}
%define ppc64_only_default_firmware {%nil}
%define ppc64_only_extra_firmware {%nil}
%define riscv64_default_firmware {opensbi-riscv64-sifive_u-fw_jump.bin opensbi-riscv64-virt-fw_jump.bin}
%define riscv64_default_firmware {opensbi-riscv64-sifive_u-fw_jump.bin \
opensbi-riscv64-virt-fw_jump.bin}
%define riscv64_extra_firmware {%nil}
%define s390x_default_firmware {s390-ccw.img s390-netboot.img}
%define s390x_extra_firmware {%nil}
%define x86_default_firmware {linuxboot.bin linuxboot_dma.bin multiboot.bin \
kvmvapic.bin pvh.bin}
%define x86_extra_firmware {bios.bin bios-256k.bin pxe-e1000.rom \
pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \
sgabios.bin vgabios-ati.bin vgabios-bochs-display.bin vgabios.bin \
vgabios-cirrus.bin vgabios-qxl.bin vgabios-ramfb.bin vgabios-stdvga.bin \
vgabios-virtio.bin vgabios-vmware.bin}
%define x86_extra_firmware {bios.bin bios-256k.bin bios-microvm.bin \
pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom pxe-pcnet.rom pxe-rtl8139.rom \
pxe-virtio.rom sgabios.bin vgabios-ati.bin vgabios-bochs-display.bin \
vgabios.bin vgabios-cirrus.bin vgabios-qxl.bin vgabios-ramfb.bin \
vgabios-stdvga.bin vgabios-virtio.bin vgabios-vmware.bin}
%define x86_64_only_default_firmware {%nil}
%define x86_64_only_extra_firmware {edk2-aarch64-code.fd.bz2 \
edk2-arm-code.fd.bz2 edk2-arm-vars.fd.bz2 edk2-i386-code.fd.bz2 \
@ -996,6 +1027,7 @@ cd %mybuilddir
%endif
--enable-opengl \
--enable-parallels \
--disable-plugins \
--enable-pvrdma \
--enable-qcow1 \
--enable-qed \
@ -1033,6 +1065,7 @@ cd %mybuilddir
--enable-vhost-net \
--enable-vhost-scsi \
--enable-vhost-user \
--enable-vhost-user-fs \
--enable-vhost-vsock \
--enable-virglrenderer \
--enable-virtfs \
@ -1051,6 +1084,7 @@ cd %mybuilddir
--disable-xen \
%endif
--enable-xfsctl \
--enable-xkbcommon \
# ------------------------------------------------------------------------
%else # qemu-linux-user
--without-default-devices \
@ -1073,6 +1107,7 @@ cd %mybuilddir
--disable-malloc-trim \
--enable-membarrier \
--disable-parallels \
--disable-plugins \
--disable-qcow1 \
--disable-qed \
--disable-replication \
@ -1085,9 +1120,11 @@ cd %mybuilddir
--disable-vhost-net \
--disable-vhost-scsi \
--disable-vhost-user \
--disable-vhost-user-fs \
--disable-vhost-vsock \
--disable-vnc \
--disable-vvfat \
--disable-xkbcommon \
%endif # qemu-linux-user
%if "%{name}" == "qemu"
@ -1139,6 +1176,8 @@ make %{?_smp_mflags} -C %{_builddir}/%buildsubdir/roms bios \
HOSTCC=cc \
%endif
make %{?_smp_mflags} -C %{_builddir}/%buildsubdir/roms bios-microvm
%ifnarch %ix86
%if %{provide_edk2_firmware}
make %{?_smp_mflags} -C %{_builddir}/%buildsubdir/roms efi \
@ -1167,7 +1206,9 @@ make -C %{_builddir}/%buildsubdir/roms sgabios \
HOSTCC=cc
%if %{force_fit_virtio_pxe_rom}
pushd %{_builddir}/%buildsubdir
patch -p1 < %_sourcedir/stub-out-the-SAN-req-s-in-int13.patch
popd
make %{?_smp_mflags} -C %{_builddir}/%buildsubdir/roms pxerom_variants=virtio pxerom_targets=1af41000 pxerom
%endif
@ -1351,6 +1392,8 @@ unlink %{buildroot}%_datadir/%name/edk2-licenses.txt || true
unlink %{buildroot}%_datadir/%name/edk2-x86_64-code.fd
unlink %{buildroot}%_datadir/%name/edk2-x86_64-secure-code.fd
%endif
install -D -m 0644 %{SOURCE14} %{buildroot}%_datadir/%name/firmware/50-seabios-256k.json
install -D -m 0644 %{SOURCE15} %{buildroot}%_datadir/%name/firmware/60-seabios-128k.json
%endif
%if 0%{?do_more_edk2_unlinks} || %{provide_edk2_firmware} == 0
unlink %{buildroot}%_datadir/%name/edk2-licenses.txt || true
@ -1484,7 +1527,7 @@ fi
# ========================================================================
%files
%defattr(-, root, root)
%doc Changelog README VERSION
%doc Changelog README.rst VERSION
%license COPYING COPYING.LIB LICENSE
%if "%{name}" == "qemu"
@ -1505,6 +1548,7 @@ fi
%_docdir/%name/interop/vhost-user.html
%_docdir/%name/specs/.buildinfo
%_docdir/%name/specs/_static/*
%_docdir/%name/specs/acpi_hw_reduced_hotplug.html
%_docdir/%name/specs/genindex.html
%_docdir/%name/specs/index.html
%_docdir/%name/specs/objects.inv
@ -1580,7 +1624,6 @@ fi
%_datadir/%name/qemu_vga.ndrv
%_datadir/%name/skiboot.lid
%_datadir/%name/slof.bin
%_datadir/%name/spapr-rtas.bin
%_datadir/%name/u-boot.e500
%_datadir/%name/u-boot-sam460-20100605.bin
%if 0%{?is_opensuse} == 0
@ -1717,6 +1760,11 @@ fi
%_libdir/%name/ui-sdl.so
%endif
%files ui-spice-app
%defattr(-, root, root)
%dir %_libdir/%name
%_libdir/%name/ui-spice-app.so
%files audio-alsa
%defattr(-, root, root)
%dir %_libdir/%name
@ -1743,6 +1791,13 @@ fi
%dir %_datadir/%name
%_datadir/%name/bios.bin
%_datadir/%name/bios-256k.bin
%_datadir/%name/firmware/50-seabios-256k.json
%_datadir/%name/firmware/60-seabios-128k.json
%files microvm
%defattr(-, root, root)
%dir %_datadir/%name
%_datadir/%name/bios-microvm.bin
%files vgabios
%defattr(-, root, root)
@ -1833,6 +1888,8 @@ fi
%files guest-agent
%defattr(-, root, root)
%dir %_docdir/%name/interop
%_docdir/%name/interop/qemu-ga.html
%_mandir/man8/qemu-ga.8.gz
%attr(0755,root,kvm) %_bindir/qemu-ga
%{_unitdir}/qemu-ga@.service

View File

@ -0,0 +1,22 @@
From: Bruce Rogers <brogers@suse.com>
Date: Sun, 3 Nov 2019 07:21:40 -0700
Subject: roms/Makefile: enable cross compile for building microvm bios
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
roms/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/Makefile b/roms/Makefile
index 091ad51c1e91a2b9709c5810e562..a6f084820f489bef42c6f487a6b2 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -198,7 +198,7 @@ opensbi64-sifive_u:
cp opensbi/build/platform/sifive/fu540/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
bios-microvm:
- $(MAKE) -C qboot
+ $(MAKE) -C qboot CROSS_COMPILE=$(x86_64_cross_prefix) CC=gcc
cp qboot/bios.bin ../pc-bios/bios-microvm.bin
clean:

View File

@ -20,7 +20,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/roms/Makefile b/roms/Makefile
index 775c963f9dd55bfa17772afb73f4..6efeb1ef7c38fb71556b762d6bf1 100644
index 28e1e557b0763cabe6da3d07602d..091ad51c1e91a2b9709c5810e562 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -51,6 +51,12 @@ SEABIOS_EXTRAVERSION="-prebuilt.qemu.org"
@ -33,10 +33,10 @@ index 775c963f9dd55bfa17772afb73f4..6efeb1ef7c38fb71556b762d6bf1 100644
+# build.
+PACKAGING_TIMESTAMP = $(shell date -r ../VERSION +%s)
+
default:
default help:
@echo "nothing is build by default"
@echo "available build targets:"
@@ -99,7 +105,7 @@ build-seabios-config-%: config.%
@@ -100,7 +106,7 @@ build-seabios-config-%: config.%
.PHONY: sgabios skiboot
sgabios:
@ -45,7 +45,7 @@ index 775c963f9dd55bfa17772afb73f4..6efeb1ef7c38fb71556b762d6bf1 100644
cp sgabios/sgabios.bin ../pc-bios
@@ -119,11 +125,13 @@ efi-rom-%: build-pxe-roms build-efi-roms edk2-basetools
@@ -120,11 +126,13 @@ efi-rom-%: build-pxe-roms build-efi-roms edk2-basetools
build-pxe-roms:
$(MAKE) -C ipxe/src CONFIG=qemu \
@ -59,7 +59,7 @@ index 775c963f9dd55bfa17772afb73f4..6efeb1ef7c38fb71556b762d6bf1 100644
CROSS_COMPILE=$(x86_64_cross_prefix) \
$(patsubst %,bin-i386-efi/%.efidrv,$(pxerom_targets)) \
$(patsubst %,bin-x86_64-efi/%.efidrv,$(pxerom_targets))
@@ -145,7 +153,9 @@ edk2-basetools:
@@ -147,7 +155,9 @@ edk2-basetools:
EXTRA_LDFLAGS='$(EDK2_BASETOOLS_LDFLAGS)'
slof:

View File

@ -8,7 +8,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh
index a9fae7ee891bc4cadbe1a3cb3f54..d70bed1729cf0a3ce41ab72df78e 100644
index 3f4485b201f1f6f8cff47a9933da..5a3a8d885c9138d3c857d8b1e6d0 100644
--- a/roms/edk2-funcs.sh
+++ b/roms/edk2-funcs.sh
@@ -113,7 +113,15 @@ qemu_edk2_get_cross_prefix()

View File

@ -17,7 +17,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
5 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index 629185ed9f7153fa08ba56c121ee..bd34cfc2394a9103fec2e951bb67 100644
index de1fa90035b82ef3608d68d62f59..ca8d0283922bbfa931e85511e921 100644
--- a/roms/seabios/Makefile
+++ b/roms/seabios/Makefile
@@ -22,7 +22,7 @@ LD=$(CROSS_PREFIX)ld

View File

@ -14,7 +14,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index d2d11dbef87521d82c30a7c6f0bf..629185ed9f7153fa08ba56c121ee 100644
index 5f7d5370198abac950b24e08a7aa..de1fa90035b82ef3608d68d62f59 100644
--- a/roms/seabios/Makefile
+++ b/roms/seabios/Makefile
@@ -22,7 +22,7 @@ LD=$(CROSS_PREFIX)ld

View File

@ -1,34 +0,0 @@
From: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Date: Mon, 18 Nov 2019 23:23:27 -0800
Subject: target/i386: Export TAA_NO bit to guests
Git-commit: 7fac38635e1cc5ebae34eb6530da1009bd5808e4
Reference: bsc#1152506 CVE-2019-11135
TSX Async Abort (TAA) is a side channel attack on internal buffers in
some Intel processors similar to Microachitectural Data Sampling (MDS).
Some future Intel processors will use the ARCH_CAP_TAA_NO bit in the
IA32_ARCH_CAPABILITIES MSR to report that they are not vulnerable to
TAA. Make this bit available to guests.
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
target/i386/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 5191367f89ee4d1131c4309633de..530942baed87c5ff76beaf36df14 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -1189,7 +1189,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
.feat_names = {
"rdctl-no", "ibrs-all", "rsba", "skip-l1dfl-vmentry",
"ssb-no", "mds-no", "pschange-mc-no", NULL,
- NULL, NULL, NULL, NULL,
+ "taa-no", NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,

View File

@ -1,29 +0,0 @@
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Wed, 13 Nov 2019 15:54:35 +0100
Subject: target/i386: add PSCHANGE_NO bit for the ARCH_CAPABILITIES MSR
Git-commit: 7f7a585d5bd3c7f1275d28c77d9d67513c1de36c
Reference: bsc#1155812 CVE-2018-12207
This is required to disable ITLB multihit mitigations in nested
hypervisors.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
target/i386/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 19751e37a71fee27944526fe507c..5191367f89ee4d1131c4309633de 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -1188,7 +1188,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
.type = MSR_FEATURE_WORD,
.feat_names = {
"rdctl-no", "ibrs-all", "rsba", "skip-l1dfl-vmentry",
- "ssb-no", "mds-no", NULL, NULL,
+ "ssb-no", "mds-no", "pschange-mc-no", NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,

View File

@ -14,13 +14,15 @@ v4.1.0 qemu:
disable 065, 129, 169, 182, 205, 218, 242, 248, 250
(other architectures not evaluated at this time)
27NOV2019 - added 161 since it is failing on s390x and ppc consistently
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
tests/qemu-iotests/group | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
tests/qemu-iotests/group | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 3070d160d5ae9108ca5e5a9ed234..0f6640db8a0a783b29aafb66eca2 100644
index 6b10a6a762..150800ce1c 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -86,7 +86,7 @@
@ -38,10 +40,15 @@ index 3070d160d5ae9108ca5e5a9ed234..0f6640db8a0a783b29aafb66eca2 100644
128 rw quick
-129 rw quick
+#DISABLE FOR NOW 129 rw quick
130 rw auto quick
130 rw quick
131 rw quick
132 rw quick
@@ -186,7 +186,7 @@
@@ -182,11 +182,11 @@
158 rw auto quick
159 rw auto quick
160 rw quick
-161 rw auto quick
+#DISABLE FOR NOW 161 rw auto quick
162 quick
163 rw
165 rw quick
@ -96,3 +103,6 @@ index 3070d160d5ae9108ca5e5a9ed234..0f6640db8a0a783b29aafb66eca2 100644
251 rw auto quick
252 rw auto backing quick
253 rw quick
--
2.24.0

View File

@ -3,7 +3,9 @@ Date: Tue, 15 Oct 2019 11:16:14 -0600
Subject: tests: Fix block tests to be compatible with membarrier configuration
The use of membarriers collides with the block test's practice of
SIGKILLing test vm's. Have them quit politely. Tests: 130, 153, 161
SIGKILLing test vm's. Have them quit politely. Tests: 130, 153 - and
though test 161 seems to have the same issue, it is not yet fixed, but
just marked here as possibly needing a fix.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
@ -11,8 +13,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
tests/qemu-iotests/130.out | 2 ++
tests/qemu-iotests/153 | 6 ++++--
tests/qemu-iotests/153.out | 4 ++++
tests/qemu-iotests/161 | 3 +++
5 files changed, 17 insertions(+), 4 deletions(-)
4 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/tests/qemu-iotests/130 b/tests/qemu-iotests/130
index 77ad2aa13a06094f26d2c8991e48..fd84a4c77d192e15ee961b07994b 100755
@ -83,19 +84,19 @@ index c969a1a16ff8382b9bb69252f6de..39d6da725bff3932a7cb88acff8e 100755
echo
echo "== Detecting -U and force-share conflicts =="
diff --git a/tests/qemu-iotests/153.out b/tests/qemu-iotests/153.out
index e9694200066280fa0637292de3ef..177b08b7e3e6606db552d7e54c8e 100644
index f7464dd8d345a853f7b64a67c6d0..8bc14f6abf94662473d6d93b5672 100644
--- a/tests/qemu-iotests/153.out
+++ b/tests/qemu-iotests/153.out
@@ -416,6 +416,8 @@ Is another process using the image [TEST_DIR/t.qcow2]?
@@ -421,6 +421,8 @@ Is another process using the image [TEST_DIR/t.qcow2]?
_qemu_img_wrapper commit -b TEST_DIR/t.qcow2.b TEST_DIR/t.qcow2.c
{ 'execute': 'qmp_capabilities' }
{"return": {}}
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
Adding drive
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT' } }
{"return": "OKrn"}
@@ -443,6 +445,8 @@ Closing the other
@@ -454,6 +456,8 @@ Closing the other
{"return": ""}
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
@ -104,31 +105,3 @@ index e9694200066280fa0637292de3ef..177b08b7e3e6606db552d7e54c8e 100644
== Detecting -U and force-share conflicts ==
diff --git a/tests/qemu-iotests/161 b/tests/qemu-iotests/161
index 456a4bd8c4cb54c9c0d295f83bed..990af8a412d72fd522068490638b 100755
--- a/tests/qemu-iotests/161
+++ b/tests/qemu-iotests/161
@@ -68,6 +68,7 @@ _send_qemu_cmd $QEMU_HANDLE \
'qemu-io none0 \"reopen -o backing.detect-zeroes=on\"' } }" \
"return"
+_send_qemu_cmd $QEMU_HANDLE "{ 'execute': 'quit' }" ''
_cleanup_qemu
# Second test: stream $TEST_IMG.base into $TEST_IMG.int and then
@@ -96,6 +97,7 @@ _send_qemu_cmd $QEMU_HANDLE \
'qemu-io none0 \"reopen -o backing.detect-zeroes=on\"' } }" \
"return"
+_send_qemu_cmd $QEMU_HANDLE "{ 'execute': 'quit' }" ''
_cleanup_qemu
# Third test: commit $TEST_IMG.int into $TEST_IMG.base and then reopen
@@ -129,6 +131,7 @@ _send_qemu_cmd $QEMU_HANDLE \
'qemu-io none0 \"reopen -o backing.detect-zeroes=on\"' } }" \
"return"
+_send_qemu_cmd $QEMU_HANDLE "{ 'execute': 'quit' }" ''
_cleanup_qemu
# success, all done

View File

@ -13,14 +13,14 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/qemu-iotests/162.out b/tests/qemu-iotests/162.out
index 3c5be2c5699a225cc80bbdc40bec..390cca9027e918f1a0d252753ce5 100644
index 5a00d36d17878376380430dad705..390cca9027e918f1a0d252753ce5 100644
--- a/tests/qemu-iotests/162.out
+++ b/tests/qemu-iotests/162.out
@@ -1,7 +1,7 @@
QA output created by 162
=== NBD ===
-qemu-img: Could not open 'json:{"driver": "nbd", "host": 42}': Failed to connect socket: Invalid argument
-qemu-img: Could not open 'json:{"driver": "nbd", "host": -1}': address resolution failed for -1:10809: Name or service not known
+qemu-img: Could not open 'json:{"driver": "nbd", "host": 42}': Failed to connect socket: Network is unreachable
image: nbd://localhost:PORT
image: nbd+unix://?socket=42

View File

@ -13,7 +13,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/qemu-iotests/common.qemu b/tests/qemu-iotests/common.qemu
index 8d2021a7eb0c7085802c6f4c0597..e19ea76fff5789e4bc5b925bdcb9 100644
index de680cf1c7c92e50b82aa2bc0262..4f2557cc568beed038223af7660b 100644
--- a/tests/qemu-iotests/common.qemu
+++ b/tests/qemu-iotests/common.qemu
@@ -76,7 +76,7 @@ _timed_wait_for()

View File

@ -8,6 +8,26 @@
#
# (default is git2pkg)
# TODO NOTES:
# after ensuring current status of local repo is clean, incl submodules, we checkout master+submodules, then also ensure they're clean, then checkout the commit or tag corresponding to latest / stable-release + submodules (but don't bother to verift that's clean) - so this is a detached HEAD for stable-release and IS master (almost certainly) for LATEST. WOW - is that what we need to be doing!?!?! At least it seems to be working for the cases I've seen!!!!
# initbundle operates from the current checked out state of the local superproject, to get the submodule ids - CORRECT!!!!
# the LATEST processing of cloning the local repo, clones master - but perhaps it doesn't matter? because it adds upstream as a remote and probably gets most things from there? INVESTIGATE!!!!!!!!!!!!!!!!!!!1
# bundle2local checks out master in local repo to ensure we're off the frombundle branch (doesn't seem needed the way the script currently is). It fetches the bundle's head (FETCH_HEAD) REQUIRING that the base commit be present (which it seems to be. Then it creates the frombundle branch, with the current FETCH_HEAD (SAME AS IN BUNDLE, RIGHT?)
# The LATEST's rebase loop checks out the frombundle branch (with force), so we are now OFF of the "correct checkout" that happened at the beginning, it DELETES the GIT_BRANCH (so in this case it DIDN'T MATTER WHAT WAS THERE WHEN SCRIPT STARTED !!!!!!! WARNING !!!!!, branches off of the frombundle branch (w/checkout), then rebases that (which came from bundle) onto the current superproject, or submodule commit id.
# At this point, if the GIT_BRANCH rebased ok, it's ready for making a patchqueue, out of, if the rebase failed, it's time to manually fix that.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
# LATEST processing implies updated upstream/master IS the right thing
# HOW do we protect against a bad bundle being created (we do have the build service's tracking of previous files - is that sufficient?
# initbundle - what does it need? Currently we take the default branch in local superproject for the superproject and submodule commit ids, so it needs to be right! (ie which ever branch it is (DECIDE!), make it the RIGHT ONE for this release. It takes the commits from the $GIT_BUNDLE branch of each of superproject and submodule repos, which are beyond above found commits. IT CERTIANLY SEEMS REASONABLE THAT WE WOULD HAVE THE $$GIT_BRANCH BRANCH BE THE DEFAULT AND CORRECT BUT HOW DO WE GUARANTEE THATS OK? GIVEN OUR REQS HERE QEMU_VERSION CAN BE GRABBED HERE IN LOCAL SUPERPROJECT RIGHT AWAY!
# bundle2local - what does it need? This checks out local master just to get off of frombundle (could have been $GIT_BRANCH as well) No other req's
# bundle2spec - what does it need? THIS SHOULD HAVE LATEST SPLIT OUT!!!! We allow this alone, so see what setup it alone needs - for this one particularly, we don't want to REQUIRE local repo. FOR NOW I ASSUME THE RIGHT THING IS CHECKED OUT!
#
# SEEMS WE SHOULD NOT,NOT,NOT require user to have previously updated, or set local repo a certain way, but for us to enforce it or actually do it
# TODO: confirm local repo present, correct remotes, correct local branches, somehow validate local branch content against remote, ...
#
# In both cases we DO require the $GIT_BRANCH to exist, and should confirm that the appropriate upstream basis commit is indeed part of that. In the LATEST case, we can treat master as a source for initial current upstream.
set -e
source ./config.sh
@ -52,6 +72,7 @@ REQUIRED_LOCAL_REPO_MAP=(
~/git/qemu-sgabios
~/git/qemu-skiboot
~/git/qemu-keycodemapdb
~/git/qemu-qboot
)
# Validate that all the local repos that we currently have patches in are available

View File

@ -1,87 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Tue, 19 Mar 2019 11:09:33 +0100
Subject: vbe: add edid support.
Git-commit: a307d0adc50f41787424a9453145293248a1908c
VBE subfunction 0x15, read ddc data.
Add VBE_edid where drivers can fill in a EDID data blob.
If we find valid data there (checking the first two header
bytes), then report the function as supported and hand out
the data.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/vbe.c | 30 ++++++++++++++++++++++++++++++
vgasrc/vgautil.h | 1 +
2 files changed, 31 insertions(+)
diff --git a/roms/seabios/vgasrc/vbe.c b/roms/seabios/vgasrc/vbe.c
index 724c1bad6d7a8f612e05c198223f..66afb011ada034d53b518f8de068 100644
--- a/roms/seabios/vgasrc/vbe.c
+++ b/roms/seabios/vgasrc/vbe.c
@@ -25,6 +25,7 @@ u32 VBE_total_memory VAR16 = 256 * 1024;
u32 VBE_capabilities VAR16;
u32 VBE_framebuffer VAR16;
u16 VBE_win_granularity VAR16;
+u8 VBE_edid[256] VAR16;
static void
vbe_104f00(struct bregs *regs)
@@ -400,6 +401,34 @@ vbe_104f10(struct bregs *regs)
regs->ax = 0x004f;
}
+static void
+vbe_104f15(struct bregs *regs)
+{
+ int offset;
+
+ switch (regs->bl) {
+ case 0x00:
+ if (GET_GLOBAL(VBE_edid[0]) != 0x00 ||
+ GET_GLOBAL(VBE_edid[1]) != 0xff)
+ goto err;
+ regs->bx = 0x0103;
+ break;
+ case 0x01:
+ offset = regs->dx * 128;
+ if (offset >= sizeof(VBE_edid))
+ goto err;
+ memcpy_far(regs->es, (void*)(regs->di+0),
+ get_global_seg(), VBE_edid + offset,
+ 128);
+ break;
+ err:
+ default:
+ regs->ax = 0x014f;
+ return;
+ }
+ regs->ax = 0x004f;
+}
+
static void
vbe_104fXX(struct bregs *regs)
{
@@ -427,6 +456,7 @@ handle_104f(struct bregs *regs)
case 0x08: vbe_104f08(regs); break;
case 0x0a: vbe_104f0a(regs); break;
case 0x10: vbe_104f10(regs); break;
+ case 0x15: vbe_104f15(regs); break;
default: vbe_104fXX(regs); break;
}
}
diff --git a/roms/seabios/vgasrc/vgautil.h b/roms/seabios/vgasrc/vgautil.h
index a9940402e45bf293f95b29bbdc2c..dd1aa189547a212ae45bae941f61 100644
--- a/roms/seabios/vgasrc/vgautil.h
+++ b/roms/seabios/vgasrc/vgautil.h
@@ -89,6 +89,7 @@ extern u32 VBE_total_memory;
extern u32 VBE_capabilities;
extern u32 VBE_framebuffer;
extern u16 VBE_win_granularity;
+extern u8 VBE_edid[256];
void handle_104f(struct bregs *regs);
// vgafonts.c

View File

@ -24,10 +24,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 25 insertions(+)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index c2280c72effb7e2a4dd5aec1eed4..53ee84b542496cbdfebb2eebaa1c 100644
index 1bd70d1abbc434edb8b5ca69ee5d..d760d3589607daf4997ea76854c4 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -800,6 +800,31 @@ static void pc_i440fx_0_15_machine_options(MachineClass *m)
@@ -804,6 +804,31 @@ static void pc_i440fx_0_15_machine_options(MachineClass *m)
{
static GlobalProperty compat[] = {
PC_CPU_MODEL_IDS("0.15")

View File

@ -1,79 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Fri, 8 Mar 2019 11:42:25 +0100
Subject: vga: add ati bios tables
Git-commit: f4c6e4c19daf3deac2d7fc3288db5294aba955ad
Needed to make drivers happy which try to gather
informations from these tables.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/ati-tables.S | 43 +++++++++++++++++++++++++++++++++++++++++++
vgasrc/vgaentry.S | 3 +++
2 files changed, 46 insertions(+)
diff --git a/roms/seabios/vgasrc/ati-tables.S b/roms/seabios/vgasrc/ati-tables.S
new file mode 100644
index 0000000000000000000000000000000000000000..cdbde2fa4aec74f62da898be8b79e4a7c16f6c11
--- /dev/null
+++ b/roms/seabios/vgasrc/ati-tables.S
@@ -0,0 +1,43 @@
+//
+// Fake ati bios tables.
+//
+// aty128fb and radeonfb try to gather informations from these tables,
+// so add some stuff here to make the drivers happy. Specifically
+// radeonfb needs the pll information, otherwise it'll crash with a
+// division by zero ...
+//
+ .org 0x48
+ .word _ati_main
+
+ // main info
+ .org 0x50
+_ati_main:
+ .org 0x50 + 0x30
+ .word _ati_pll
+ .org 0x50 + 0x50
+ .word _ati_connector
+
+ // pll info
+ .org 0x100
+_ati_pll:
+ .word 0 // ??? (not used by radeonfb)
+ .word 0
+ .word 0
+ .word 0
+ .word 23000 // sclk
+ .word 23000 // mclk
+ .word 0
+ .word 2700 // ref_clk
+ .word 4 // ref_div
+ .long 12000 // ppll_min
+ .long 35000 // ppll_max
+
+ // connector info
+ .org 0x140
+_ati_connector:
+ .byte 0x10 // one chip
+ .byte 0x01 // one connector
+ .word 0x3000 // type DVI-I
+ .word 0 // end of list
+
+ .org 0x200
diff --git a/roms/seabios/vgasrc/vgaentry.S b/roms/seabios/vgasrc/vgaentry.S
index 53be2b38ca520c691a4fde927bd8..f9624fce2ed9c570d6283b2905f4 100644
--- a/roms/seabios/vgasrc/vgaentry.S
+++ b/roms/seabios/vgasrc/vgaentry.S
@@ -40,6 +40,9 @@ _rom_header_other2:
_rom_header_signature:
.asciz "IBM"
+#if CONFIG_VGA_ATI
+#include "ati-tables.S"
+#endif
/****************************************************************
* Entry points

View File

@ -1,381 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 25 Feb 2019 10:51:37 +0100
Subject: vga: add atiext driver
Git-commit: 34b6ecc160749a691b80fcb8638216518d971c65
Supports qemu emulated ati cards. They have been added in qemu 4.0.
Acceleration support (in qemu) is pretty rough still. A simple
framebuffer works fine though.
Available models:
* ati rage 128 pro
* ati rv100
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
Makefile | 2 +-
vgasrc/Kconfig | 11 +++
vgasrc/atiext.c | 245 +++++++++++++++++++++++++++++++++++++++++++++++
vgasrc/vgahw.h | 8 ++
vgasrc/vgautil.h | 6 ++
5 files changed, 271 insertions(+), 1 deletion(-)
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index 79b264ef87565106987fc88eeffe..ecec084825e706cc9d5afacefc10 100644
--- a/roms/seabios/Makefile
+++ b/roms/seabios/Makefile
@@ -212,7 +212,7 @@ SRCVGA=src/output.c src/string.c src/hw/pci.c src/hw/serialio.c \
vgasrc/vgainit.c vgasrc/vgabios.c vgasrc/vgafb.c vgasrc/swcursor.c \
vgasrc/vgafonts.c vgasrc/vbe.c \
vgasrc/stdvga.c vgasrc/stdvgamodes.c vgasrc/stdvgaio.c \
- vgasrc/clext.c vgasrc/svgamodes.c vgasrc/bochsvga.c vgasrc/geodevga.c \
+ vgasrc/clext.c vgasrc/svgamodes.c vgasrc/atiext.c vgasrc/bochsvga.c vgasrc/geodevga.c \
src/fw/coreboot.c vgasrc/cbvga.c vgasrc/bochsdisplay.c vgasrc/ramfb.c
ifeq "$(CONFIG_VGA_FIXUP_ASM)" "y"
diff --git a/roms/seabios/vgasrc/Kconfig b/roms/seabios/vgasrc/Kconfig
index f6d843e0900bda3900bc268fae97..c8fac36fb92baa27e06076ec68c5 100644
--- a/roms/seabios/vgasrc/Kconfig
+++ b/roms/seabios/vgasrc/Kconfig
@@ -27,6 +27,15 @@ menu "VGA ROM"
and Bochs emulators. This is for emulators; it is not
intended for use on real Cirrus hardware.
+ config VGA_ATI
+ depends on QEMU
+ bool "QEMU ATI SVGA"
+ select VGA_STDVGA_PORTS
+ help
+ Build support for ATI VGA emulation found on QEMU
+ and emulators. This is for emulators; it is not
+ intended for use on real ATI hardware.
+
config VGA_BOCHS
depends on QEMU
bool "QEMU/Bochs VBE SVGA"
@@ -182,6 +191,7 @@ menu "VGA ROM"
hex
prompt "PCI Vendor ID" if OVERRIDE_PCI_ID
default 0x1013 if VGA_CIRRUS
+ default 0x1002 if VGA_ATI
default 0x1234 if VGA_BOCHS_STDVGA
default 0x15ad if VGA_BOCHS_VMWARE
default 0x1b36 if VGA_BOCHS_QXL
@@ -198,6 +208,7 @@ menu "VGA ROM"
hex
prompt "PCI Vendor ID" if OVERRIDE_PCI_ID
default 0x00b8 if VGA_CIRRUS
+ default 0x5159 if VGA_ATI
default 0x1111 if VGA_BOCHS_STDVGA
default 0x0405 if VGA_BOCHS_VMWARE
default 0x0100 if VGA_BOCHS_QXL
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
new file mode 100644
index 0000000000000000000000000000000000000000..0586279ce214fac7d2a7e6c87a9409a6e32eb5af
--- /dev/null
+++ b/roms/seabios/vgasrc/atiext.c
@@ -0,0 +1,245 @@
+// QEMU ATI VGABIOS Extension.
+//
+// This file may be distributed under the terms of the GNU LGPLv3 license.
+
+#include "biosvar.h" // GET_GLOBAL
+#include "bregs.h" // struct bregs
+#include "hw/pci.h" // pci_config_readl
+#include "hw/pci_regs.h" // PCI_BASE_ADDRESS_0
+#include "output.h" // dprintf
+#include "stdvga.h" // VGAREG_SEQU_ADDRESS
+#include "string.h" // memset16_far
+#include "vgabios.h" // SET_VGA
+#include "vgautil.h" // VBE_total_memory
+#include "vgafb.h" // memset_high
+
+#include "svgamodes.h"
+
+#define MM_INDEX 0x0000
+#define MM_DATA 0x0004
+#define CRTC_GEN_CNTL 0x0050
+#define CRTC_EXT_CNTL 0x0054
+#define CRTC_H_TOTAL_DISP 0x0200
+#define CRTC_V_TOTAL_DISP 0x0208
+#define CRTC_OFFSET 0x0224
+#define CRTC_PITCH 0x022c
+
+/* CRTC control values (CRTC_GEN_CNTL) */
+#define CRTC2_EXT_DISP_EN 0x01000000
+#define CRTC2_EN 0x02000000
+
+#define CRTC_PIX_WIDTH_MASK 0x00000700
+#define CRTC_PIX_WIDTH_4BPP 0x00000100
+#define CRTC_PIX_WIDTH_8BPP 0x00000200
+#define CRTC_PIX_WIDTH_15BPP 0x00000300
+#define CRTC_PIX_WIDTH_16BPP 0x00000400
+#define CRTC_PIX_WIDTH_24BPP 0x00000500
+#define CRTC_PIX_WIDTH_32BPP 0x00000600
+
+/* CRTC_EXT_CNTL */
+#define CRT_CRTC_DISPLAY_DIS 0x00000400
+#define CRT_CRTC_ON 0x00008000
+
+static u32 ati_io_addr VAR16 = 0;
+
+int
+is_ati_mode(struct vgamode_s *vmode_g)
+{
+ unsigned int mcount = GET_GLOBAL(svga_mcount);
+
+ return (vmode_g >= &svga_modes[0].info &&
+ vmode_g <= &svga_modes[mcount-1].info);
+}
+
+struct vgamode_s *
+ati_find_mode(int mode)
+{
+ u32 io_addr = GET_GLOBAL(ati_io_addr);
+ struct generic_svga_mode *table_g = svga_modes;
+ unsigned int mcount = GET_GLOBAL(svga_mcount);
+
+ if (io_addr) {
+ while (table_g < &svga_modes[mcount]) {
+ if (GET_GLOBAL(table_g->mode) == mode)
+ return &table_g->info;
+ table_g++;
+ }
+ }
+
+ return stdvga_find_mode(mode);
+}
+
+void
+ati_list_modes(u16 seg, u16 *dest, u16 *last)
+{
+ u32 io_addr = GET_GLOBAL(ati_io_addr);
+ unsigned int mcount = GET_GLOBAL(svga_mcount);
+
+ dprintf(1, "%s: ati ext %s\n", __func__, io_addr ? "yes" : "no");
+ if (io_addr) {
+ int i;
+ for (i=0; i<mcount && dest<last; i++) {
+ u16 mode = GET_GLOBAL(svga_modes[i].mode);
+ if (mode == 0xffff)
+ continue;
+ SET_FARVAR(seg, *dest, mode);
+ dest++;
+ }
+ }
+
+ stdvga_list_modes(seg, dest, last);
+}
+
+/****************************************************************
+ * Mode setting
+ ****************************************************************/
+
+static inline void ati_write(u32 reg, u32 val)
+{
+ u32 io_addr = GET_GLOBAL(ati_io_addr);
+
+ if (reg < 0x100) {
+ outl(val, io_addr + reg);
+ } else {
+ outl(reg, io_addr + MM_INDEX);
+ outl(val, io_addr + MM_DATA);
+ }
+}
+
+static void ati_clear(u32 offset, u32 size)
+{
+ u8 data[64];
+ void *datap = MAKE_FLATPTR(GET_SEG(SS), data);
+ void *fb = (void*)(GET_GLOBAL(VBE_framebuffer) + offset);
+ u32 i, pos;
+
+ for (i = 0; i < sizeof(data); i++)
+ data[i] = 0;
+ for (pos = 0; pos < size; pos += sizeof(data)) {
+ memcpy_high(fb, datap, sizeof(data));
+ fb += sizeof(data);
+ }
+}
+
+static int
+ati_ext_mode(struct generic_svga_mode *table, int flags)
+{
+ u32 width = GET_GLOBAL(table->info.width);
+ u32 height = GET_GLOBAL(table->info.height);
+ u32 depth = GET_GLOBAL(table->info.depth);
+ u32 stride = width;
+ u32 offset = 0;
+ u32 pxmask = 0;
+ u32 bytes = 0;
+
+ dprintf(1, "%s: 0x%x, %dx%d-%d\n", __func__,
+ GET_GLOBAL(table->mode),
+ width, height, depth);
+
+ switch (depth) {
+ case 8: pxmask = CRTC_PIX_WIDTH_8BPP; bytes = 1; break;
+ case 15: pxmask = CRTC_PIX_WIDTH_15BPP; bytes = 2; break;
+ case 16: pxmask = CRTC_PIX_WIDTH_16BPP; bytes = 2; break;
+ case 24: pxmask = CRTC_PIX_WIDTH_24BPP; bytes = 3; break;
+ case 32: pxmask = CRTC_PIX_WIDTH_32BPP; bytes = 4; break;
+ }
+
+ /* disable display */
+ ati_write(CRTC_EXT_CNTL, CRT_CRTC_DISPLAY_DIS);
+
+ /* modeset */
+ ati_write(CRTC_GEN_CNTL, CRTC2_EXT_DISP_EN | CRTC2_EN | pxmask);
+ ati_write(CRTC_H_TOTAL_DISP, ((width / 8) - 1) << 16);
+ ati_write(CRTC_V_TOTAL_DISP, (height - 1) << 16);
+ ati_write(CRTC_OFFSET, offset);
+ ati_write(CRTC_PITCH, stride / 8);
+
+ /* clear screen */
+ if (!(flags & MF_NOCLEARMEM)) {
+ u32 size = width * height * bytes;
+ ati_clear(offset, size);
+ }
+
+ /* enable display */
+ ati_write(CRTC_EXT_CNTL, 0);
+
+ return 0;
+}
+
+int
+ati_set_mode(struct vgamode_s *vmode_g, int flags)
+{
+ struct generic_svga_mode *table_g =
+ container_of(vmode_g, struct generic_svga_mode, info);
+
+ if (is_ati_mode(vmode_g)) {
+ return ati_ext_mode(table_g, flags);
+ }
+
+ ati_write(CRTC_GEN_CNTL, 0);
+ return stdvga_set_mode(vmode_g, flags);
+}
+
+/****************************************************************
+ * init
+ ****************************************************************/
+
+int
+ati_setup(void)
+{
+ int ret = stdvga_setup();
+ if (ret)
+ return ret;
+
+ dprintf(1, "%s:%d\n", __func__, __LINE__);
+
+ if (GET_GLOBAL(HaveRunInit))
+ return 0;
+
+ int bdf = GET_GLOBAL(VgaBDF);
+ if (!CONFIG_VGA_PCI || bdf == 0)
+ return 0;
+
+ u32 bar = pci_config_readl(bdf, PCI_BASE_ADDRESS_0);
+ u32 lfb_addr = bar & PCI_BASE_ADDRESS_MEM_MASK;
+ pci_config_writel(bdf, PCI_BASE_ADDRESS_0, ~0);
+ u32 barmask = pci_config_readl(bdf, PCI_BASE_ADDRESS_0);
+ u32 totalmem = ~(barmask & PCI_BASE_ADDRESS_MEM_MASK) + 1;
+ pci_config_writel(bdf, PCI_BASE_ADDRESS_0, bar);
+
+ bar = pci_config_readl(bdf, PCI_BASE_ADDRESS_1);
+ u32 io_addr = bar & PCI_BASE_ADDRESS_IO_MASK;
+
+ bar = pci_config_readl(bdf, PCI_BASE_ADDRESS_2);
+ u32 mmio_addr = bar & PCI_BASE_ADDRESS_MEM_MASK;
+
+ dprintf(1, "ati: bdf %02x:%02x.%x, lfb 0x%x, %d MB, io 0x%x, mmio 0x%x\n",
+ pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf), pci_bdf_to_fn(bdf),
+ lfb_addr, totalmem / (1024 * 1024), io_addr, mmio_addr);
+
+ SET_VGA(VBE_framebuffer, lfb_addr);
+ SET_VGA(VBE_total_memory, totalmem);
+ SET_VGA(ati_io_addr, io_addr);
+
+ // Validate modes
+ struct generic_svga_mode *m = svga_modes;
+ unsigned int mcount = GET_GLOBAL(svga_mcount);
+ for (; m < &svga_modes[mcount]; m++) {
+ u8 memmodel = GET_GLOBAL(m->info.memmodel);
+ u16 width = GET_GLOBAL(m->info.width);
+ u16 height = GET_GLOBAL(m->info.height);
+ u32 mem = (height * DIV_ROUND_UP(width * vga_bpp(&m->info), 8)
+ * stdvga_vram_ratio(&m->info));
+
+ if (width % 8 != 0 ||
+ width > 0x7ff * 8 ||
+ height > 0xfff ||
+ mem > totalmem ||
+ memmodel != MM_DIRECT) {
+ dprintf(1, "ati: removing mode 0x%x\n", GET_GLOBAL(m->mode));
+ SET_VGA(m->mode, 0xffff);
+ }
+ }
+
+ return 0;
+}
diff --git a/roms/seabios/vgasrc/vgahw.h b/roms/seabios/vgasrc/vgahw.h
index 51777458da629a759f762317e9f6..c774f4f2c6b7c8012096bac2f0ed 100644
--- a/roms/seabios/vgasrc/vgahw.h
+++ b/roms/seabios/vgasrc/vgahw.h
@@ -12,6 +12,8 @@
static inline struct vgamode_s *vgahw_find_mode(int mode) {
if (CONFIG_VGA_CIRRUS)
return clext_find_mode(mode);
+ if (CONFIG_VGA_ATI)
+ return ati_find_mode(mode);
if (CONFIG_VGA_BOCHS)
return bochsvga_find_mode(mode);
if (CONFIG_VGA_EMULATE_TEXT)
@@ -22,6 +24,8 @@ static inline struct vgamode_s *vgahw_find_mode(int mode) {
static inline int vgahw_set_mode(struct vgamode_s *vmode_g, int flags) {
if (CONFIG_VGA_CIRRUS)
return clext_set_mode(vmode_g, flags);
+ if (CONFIG_VGA_ATI)
+ return ati_set_mode(vmode_g, flags);
if (CONFIG_VGA_BOCHS)
return bochsvga_set_mode(vmode_g, flags);
if (CONFIG_VGA_EMULATE_TEXT)
@@ -32,6 +36,8 @@ static inline int vgahw_set_mode(struct vgamode_s *vmode_g, int flags) {
static inline void vgahw_list_modes(u16 seg, u16 *dest, u16 *last) {
if (CONFIG_VGA_CIRRUS)
clext_list_modes(seg, dest, last);
+ if (CONFIG_VGA_ATI)
+ ati_list_modes(seg, dest, last);
else if (CONFIG_VGA_BOCHS)
bochsvga_list_modes(seg, dest, last);
else if (CONFIG_VGA_EMULATE_TEXT)
@@ -43,6 +49,8 @@ static inline void vgahw_list_modes(u16 seg, u16 *dest, u16 *last) {
static inline int vgahw_setup(void) {
if (CONFIG_VGA_CIRRUS)
return clext_setup();
+ if (CONFIG_VGA_ATI)
+ return ati_setup();
if (CONFIG_VGA_BOCHS)
return bochsvga_setup();
if (CONFIG_VGA_GEODEGX2 || CONFIG_VGA_GEODELX)
diff --git a/roms/seabios/vgasrc/vgautil.h b/roms/seabios/vgasrc/vgautil.h
index 4f37bf947c42e9f73f7148f668c8..a9940402e45bf293f95b29bbdc2c 100644
--- a/roms/seabios/vgasrc/vgautil.h
+++ b/roms/seabios/vgasrc/vgautil.h
@@ -42,6 +42,12 @@ struct bregs;
void clext_1012(struct bregs *regs);
int clext_setup(void);
+// atiext.c
+struct vgamode_s *ati_find_mode(int mode);
+void ati_list_modes(u16 seg, u16 *dest, u16 *last);
+int ati_set_mode(struct vgamode_s *vmode_g, int flags);
+int ati_setup(void);
+
// stdvgaio.c
u8 stdvga_pelmask_read(void);
void stdvga_pelmask_write(u8 val);

View File

@ -1,39 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Fri, 8 Mar 2019 12:34:38 +0100
Subject: vga: make memcpy_high() public
Git-commit: 03f5061c0a44dcf8d73a05a6f375e3fe5005f050
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/vgafb.c | 3 +--
vgasrc/vgafb.h | 1 +
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/roms/seabios/vgasrc/vgafb.c b/roms/seabios/vgasrc/vgafb.c
index 46adfb5e06143d63eeb46ddb122b..f8f35c2d2fbabb2bf816b5652e4f 100644
--- a/roms/seabios/vgasrc/vgafb.c
+++ b/roms/seabios/vgasrc/vgafb.c
@@ -187,8 +187,7 @@ gfx_packed(struct gfx_op *op)
****************************************************************/
// Use int 1587 call to copy memory to/from the framebuffer.
-static void
-memcpy_high(void *dest, void *src, u32 len)
+void memcpy_high(void *dest, void *src, u32 len)
{
u64 gdt[6];
gdt[2] = GDT_DATA | GDT_LIMIT(0xfffff) | GDT_BASE((u32)src);
diff --git a/roms/seabios/vgasrc/vgafb.h b/roms/seabios/vgasrc/vgafb.h
index ccdc70355caf9e05327e3fb4c39c..aae6b9b3a873d3c3d42a9107ae23 100644
--- a/roms/seabios/vgasrc/vgafb.h
+++ b/roms/seabios/vgasrc/vgafb.h
@@ -29,6 +29,7 @@ struct carattr {
};
// vgafb.c
+void memcpy_high(void *dest, void *src, u32 len);
void init_gfx_op(struct gfx_op *op, struct vgamode_s *vmode_g);
void handle_gfx_op(struct gfx_op *op);
void *text_address(struct cursorpos cp);

View File

@ -1,272 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Fri, 8 Mar 2019 11:10:59 +0100
Subject: vga: move modelist from bochsvga.c to new svgamodes.c
Git-commit: 004f5b3ae561df688595b341e6880182ed5794ed
So other drivers can simply use the same list too.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
Makefile | 2 +-
vgasrc/bochsvga.c | 102 +++++++--------------------------------------
vgasrc/svgamodes.c | 80 +++++++++++++++++++++++++++++++++++
vgasrc/svgamodes.h | 12 ++++++
4 files changed, 109 insertions(+), 87 deletions(-)
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index 7b8a5cd6b17254685df89798ed10..79b264ef87565106987fc88eeffe 100644
--- a/roms/seabios/Makefile
+++ b/roms/seabios/Makefile
@@ -212,7 +212,7 @@ SRCVGA=src/output.c src/string.c src/hw/pci.c src/hw/serialio.c \
vgasrc/vgainit.c vgasrc/vgabios.c vgasrc/vgafb.c vgasrc/swcursor.c \
vgasrc/vgafonts.c vgasrc/vbe.c \
vgasrc/stdvga.c vgasrc/stdvgamodes.c vgasrc/stdvgaio.c \
- vgasrc/clext.c vgasrc/bochsvga.c vgasrc/geodevga.c \
+ vgasrc/clext.c vgasrc/svgamodes.c vgasrc/bochsvga.c vgasrc/geodevga.c \
src/fw/coreboot.c vgasrc/cbvga.c vgasrc/bochsdisplay.c vgasrc/ramfb.c
ifeq "$(CONFIG_VGA_FIXUP_ASM)" "y"
diff --git a/roms/seabios/vgasrc/bochsvga.c b/roms/seabios/vgasrc/bochsvga.c
index ec5d1018686e6dbefd5e944db659..479582f1dd4e066de7c8ba50341b 100644
--- a/roms/seabios/vgasrc/bochsvga.c
+++ b/roms/seabios/vgasrc/bochsvga.c
@@ -23,98 +23,25 @@
* Mode tables
****************************************************************/
-static struct bochsvga_mode
-{
- u16 mode;
- struct vgamode_s info;
-} bochsvga_modes[] VAR16 = {
- /* standard modes */
- { 0x100, { MM_PACKED, 640, 400, 8, 8, 16, SEG_GRAPH } },
- { 0x101, { MM_PACKED, 640, 480, 8, 8, 16, SEG_GRAPH } },
- { 0x102, { MM_PLANAR, 800, 600, 4, 8, 16, SEG_GRAPH } },
- { 0x103, { MM_PACKED, 800, 600, 8, 8, 16, SEG_GRAPH } },
- { 0x104, { MM_PLANAR, 1024, 768, 4, 8, 16, SEG_GRAPH } },
- { 0x105, { MM_PACKED, 1024, 768, 8, 8, 16, SEG_GRAPH } },
- { 0x106, { MM_PLANAR, 1280, 1024, 4, 8, 16, SEG_GRAPH } },
- { 0x107, { MM_PACKED, 1280, 1024, 8, 8, 16, SEG_GRAPH } },
- { 0x10D, { MM_DIRECT, 320, 200, 15, 8, 16, SEG_GRAPH } },
- { 0x10E, { MM_DIRECT, 320, 200, 16, 8, 16, SEG_GRAPH } },
- { 0x10F, { MM_DIRECT, 320, 200, 24, 8, 16, SEG_GRAPH } },
- { 0x110, { MM_DIRECT, 640, 480, 15, 8, 16, SEG_GRAPH } },
- { 0x111, { MM_DIRECT, 640, 480, 16, 8, 16, SEG_GRAPH } },
- { 0x112, { MM_DIRECT, 640, 480, 24, 8, 16, SEG_GRAPH } },
- { 0x113, { MM_DIRECT, 800, 600, 15, 8, 16, SEG_GRAPH } },
- { 0x114, { MM_DIRECT, 800, 600, 16, 8, 16, SEG_GRAPH } },
- { 0x115, { MM_DIRECT, 800, 600, 24, 8, 16, SEG_GRAPH } },
- { 0x116, { MM_DIRECT, 1024, 768, 15, 8, 16, SEG_GRAPH } },
- { 0x117, { MM_DIRECT, 1024, 768, 16, 8, 16, SEG_GRAPH } },
- { 0x118, { MM_DIRECT, 1024, 768, 24, 8, 16, SEG_GRAPH } },
- { 0x119, { MM_DIRECT, 1280, 1024, 15, 8, 16, SEG_GRAPH } },
- { 0x11A, { MM_DIRECT, 1280, 1024, 16, 8, 16, SEG_GRAPH } },
- { 0x11B, { MM_DIRECT, 1280, 1024, 24, 8, 16, SEG_GRAPH } },
- { 0x11C, { MM_PACKED, 1600, 1200, 8, 8, 16, SEG_GRAPH } },
- { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, SEG_GRAPH } },
- { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, SEG_GRAPH } },
- { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, SEG_GRAPH } },
- /* BOCHS modes */
- { 0x140, { MM_DIRECT, 320, 200, 32, 8, 16, SEG_GRAPH } },
- { 0x141, { MM_DIRECT, 640, 400, 32, 8, 16, SEG_GRAPH } },
- { 0x142, { MM_DIRECT, 640, 480, 32, 8, 16, SEG_GRAPH } },
- { 0x143, { MM_DIRECT, 800, 600, 32, 8, 16, SEG_GRAPH } },
- { 0x144, { MM_DIRECT, 1024, 768, 32, 8, 16, SEG_GRAPH } },
- { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
- { 0x146, { MM_PACKED, 320, 200, 8, 8, 16, SEG_GRAPH } },
- { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
- { 0x148, { MM_PACKED, 1152, 864, 8, 8, 16, SEG_GRAPH } },
- { 0x149, { MM_DIRECT, 1152, 864, 15, 8, 16, SEG_GRAPH } },
- { 0x14a, { MM_DIRECT, 1152, 864, 16, 8, 16, SEG_GRAPH } },
- { 0x14b, { MM_DIRECT, 1152, 864, 24, 8, 16, SEG_GRAPH } },
- { 0x14c, { MM_DIRECT, 1152, 864, 32, 8, 16, SEG_GRAPH } },
- { 0x175, { MM_DIRECT, 1280, 768, 16, 8, 16, SEG_GRAPH } },
- { 0x176, { MM_DIRECT, 1280, 768, 24, 8, 16, SEG_GRAPH } },
- { 0x177, { MM_DIRECT, 1280, 768, 32, 8, 16, SEG_GRAPH } },
- { 0x178, { MM_DIRECT, 1280, 800, 16, 8, 16, SEG_GRAPH } },
- { 0x179, { MM_DIRECT, 1280, 800, 24, 8, 16, SEG_GRAPH } },
- { 0x17a, { MM_DIRECT, 1280, 800, 32, 8, 16, SEG_GRAPH } },
- { 0x17b, { MM_DIRECT, 1280, 960, 16, 8, 16, SEG_GRAPH } },
- { 0x17c, { MM_DIRECT, 1280, 960, 24, 8, 16, SEG_GRAPH } },
- { 0x17d, { MM_DIRECT, 1280, 960, 32, 8, 16, SEG_GRAPH } },
- { 0x17e, { MM_DIRECT, 1440, 900, 16, 8, 16, SEG_GRAPH } },
- { 0x17f, { MM_DIRECT, 1440, 900, 24, 8, 16, SEG_GRAPH } },
- { 0x180, { MM_DIRECT, 1440, 900, 32, 8, 16, SEG_GRAPH } },
- { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, SEG_GRAPH } },
- { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, SEG_GRAPH } },
- { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
- { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, SEG_GRAPH } },
- { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, SEG_GRAPH } },
- { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
- { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, SEG_GRAPH } },
- { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, SEG_GRAPH } },
- { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
- { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, SEG_GRAPH } },
- { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, SEG_GRAPH } },
- { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
- { 0x18d, { MM_DIRECT, 1280, 720, 16, 8, 16, SEG_GRAPH } },
- { 0x18e, { MM_DIRECT, 1280, 720, 24, 8, 16, SEG_GRAPH } },
- { 0x18f, { MM_DIRECT, 1280, 720, 32, 8, 16, SEG_GRAPH } },
- { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, SEG_GRAPH } },
- { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, SEG_GRAPH } },
- { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
-};
+#include "svgamodes.h"
static int dispi_found VAR16 = 0;
static int is_bochsvga_mode(struct vgamode_s *vmode_g)
{
- return (vmode_g >= &bochsvga_modes[0].info
- && vmode_g <= &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)-1].info);
+ unsigned int mcount = GET_GLOBAL(svga_mcount);
+
+ return (vmode_g >= &svga_modes[0].info
+ && vmode_g <= &svga_modes[mcount-1].info);
}
struct vgamode_s *bochsvga_find_mode(int mode)
{
- struct bochsvga_mode *m = bochsvga_modes;
+ struct generic_svga_mode *m = svga_modes;
+ unsigned int mcount = GET_GLOBAL(svga_mcount);
+
if (GET_GLOBAL(dispi_found))
- for (; m < &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)]; m++)
+ for (; m < &svga_modes[mcount]; m++)
if (GET_GLOBAL(m->mode) == mode)
return &m->info;
return stdvga_find_mode(mode);
@@ -123,9 +50,11 @@ struct vgamode_s *bochsvga_find_mode(int mode)
void
bochsvga_list_modes(u16 seg, u16 *dest, u16 *last)
{
- struct bochsvga_mode *m = bochsvga_modes;
+ struct generic_svga_mode *m = svga_modes;
+ unsigned int mcount = GET_GLOBAL(svga_mcount);
+
if (GET_GLOBAL(dispi_found)) {
- for (; m < &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)] && dest<last; m++) {
+ for (; m < &svga_modes[mcount] && dest<last; m++) {
u16 mode = GET_GLOBAL(m->mode);
if (mode == 0xffff)
continue;
@@ -429,8 +358,9 @@ bochsvga_setup(void)
u16 max_xres = dispi_read(VBE_DISPI_INDEX_XRES);
u16 max_bpp = dispi_read(VBE_DISPI_INDEX_BPP);
dispi_write(VBE_DISPI_INDEX_ENABLE, en);
- struct bochsvga_mode *m = bochsvga_modes;
- for (; m < &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)]; m++) {
+ struct generic_svga_mode *m = svga_modes;
+ unsigned int mcount = GET_GLOBAL(svga_mcount);
+ for (; m < &svga_modes[mcount]; m++) {
u16 width = GET_GLOBAL(m->info.width);
u16 height = GET_GLOBAL(m->info.height);
u8 depth = GET_GLOBAL(m->info.depth);
diff --git a/roms/seabios/vgasrc/svgamodes.c b/roms/seabios/vgasrc/svgamodes.c
new file mode 100644
index 0000000000000000000000000000000000000000..013504c3e691b7d533fd0baa3b62b77b087dd39c
--- /dev/null
+++ b/roms/seabios/vgasrc/svgamodes.c
@@ -0,0 +1,80 @@
+#include "stdvga.h" // SEG_GRAPH
+#include "vgabios.h" // VAR16
+
+#include "svgamodes.h"
+
+struct generic_svga_mode svga_modes[] VAR16 = {
+ /* standard modes */
+ { 0x100, { MM_PACKED, 640, 400, 8, 8, 16, SEG_GRAPH } },
+ { 0x101, { MM_PACKED, 640, 480, 8, 8, 16, SEG_GRAPH } },
+ { 0x102, { MM_PLANAR, 800, 600, 4, 8, 16, SEG_GRAPH } },
+ { 0x103, { MM_PACKED, 800, 600, 8, 8, 16, SEG_GRAPH } },
+ { 0x104, { MM_PLANAR, 1024, 768, 4, 8, 16, SEG_GRAPH } },
+ { 0x105, { MM_PACKED, 1024, 768, 8, 8, 16, SEG_GRAPH } },
+ { 0x106, { MM_PLANAR, 1280, 1024, 4, 8, 16, SEG_GRAPH } },
+ { 0x107, { MM_PACKED, 1280, 1024, 8, 8, 16, SEG_GRAPH } },
+ { 0x10D, { MM_DIRECT, 320, 200, 15, 8, 16, SEG_GRAPH } },
+ { 0x10E, { MM_DIRECT, 320, 200, 16, 8, 16, SEG_GRAPH } },
+ { 0x10F, { MM_DIRECT, 320, 200, 24, 8, 16, SEG_GRAPH } },
+ { 0x110, { MM_DIRECT, 640, 480, 15, 8, 16, SEG_GRAPH } },
+ { 0x111, { MM_DIRECT, 640, 480, 16, 8, 16, SEG_GRAPH } },
+ { 0x112, { MM_DIRECT, 640, 480, 24, 8, 16, SEG_GRAPH } },
+ { 0x113, { MM_DIRECT, 800, 600, 15, 8, 16, SEG_GRAPH } },
+ { 0x114, { MM_DIRECT, 800, 600, 16, 8, 16, SEG_GRAPH } },
+ { 0x115, { MM_DIRECT, 800, 600, 24, 8, 16, SEG_GRAPH } },
+ { 0x116, { MM_DIRECT, 1024, 768, 15, 8, 16, SEG_GRAPH } },
+ { 0x117, { MM_DIRECT, 1024, 768, 16, 8, 16, SEG_GRAPH } },
+ { 0x118, { MM_DIRECT, 1024, 768, 24, 8, 16, SEG_GRAPH } },
+ { 0x119, { MM_DIRECT, 1280, 1024, 15, 8, 16, SEG_GRAPH } },
+ { 0x11A, { MM_DIRECT, 1280, 1024, 16, 8, 16, SEG_GRAPH } },
+ { 0x11B, { MM_DIRECT, 1280, 1024, 24, 8, 16, SEG_GRAPH } },
+ { 0x11C, { MM_PACKED, 1600, 1200, 8, 8, 16, SEG_GRAPH } },
+ { 0x11D, { MM_DIRECT, 1600, 1200, 15, 8, 16, SEG_GRAPH } },
+ { 0x11E, { MM_DIRECT, 1600, 1200, 16, 8, 16, SEG_GRAPH } },
+ { 0x11F, { MM_DIRECT, 1600, 1200, 24, 8, 16, SEG_GRAPH } },
+ /* other modes */
+ { 0x140, { MM_DIRECT, 320, 200, 32, 8, 16, SEG_GRAPH } },
+ { 0x141, { MM_DIRECT, 640, 400, 32, 8, 16, SEG_GRAPH } },
+ { 0x142, { MM_DIRECT, 640, 480, 32, 8, 16, SEG_GRAPH } },
+ { 0x143, { MM_DIRECT, 800, 600, 32, 8, 16, SEG_GRAPH } },
+ { 0x144, { MM_DIRECT, 1024, 768, 32, 8, 16, SEG_GRAPH } },
+ { 0x145, { MM_DIRECT, 1280, 1024, 32, 8, 16, SEG_GRAPH } },
+ { 0x146, { MM_PACKED, 320, 200, 8, 8, 16, SEG_GRAPH } },
+ { 0x147, { MM_DIRECT, 1600, 1200, 32, 8, 16, SEG_GRAPH } },
+ { 0x148, { MM_PACKED, 1152, 864, 8, 8, 16, SEG_GRAPH } },
+ { 0x149, { MM_DIRECT, 1152, 864, 15, 8, 16, SEG_GRAPH } },
+ { 0x14a, { MM_DIRECT, 1152, 864, 16, 8, 16, SEG_GRAPH } },
+ { 0x14b, { MM_DIRECT, 1152, 864, 24, 8, 16, SEG_GRAPH } },
+ { 0x14c, { MM_DIRECT, 1152, 864, 32, 8, 16, SEG_GRAPH } },
+ { 0x175, { MM_DIRECT, 1280, 768, 16, 8, 16, SEG_GRAPH } },
+ { 0x176, { MM_DIRECT, 1280, 768, 24, 8, 16, SEG_GRAPH } },
+ { 0x177, { MM_DIRECT, 1280, 768, 32, 8, 16, SEG_GRAPH } },
+ { 0x178, { MM_DIRECT, 1280, 800, 16, 8, 16, SEG_GRAPH } },
+ { 0x179, { MM_DIRECT, 1280, 800, 24, 8, 16, SEG_GRAPH } },
+ { 0x17a, { MM_DIRECT, 1280, 800, 32, 8, 16, SEG_GRAPH } },
+ { 0x17b, { MM_DIRECT, 1280, 960, 16, 8, 16, SEG_GRAPH } },
+ { 0x17c, { MM_DIRECT, 1280, 960, 24, 8, 16, SEG_GRAPH } },
+ { 0x17d, { MM_DIRECT, 1280, 960, 32, 8, 16, SEG_GRAPH } },
+ { 0x17e, { MM_DIRECT, 1440, 900, 16, 8, 16, SEG_GRAPH } },
+ { 0x17f, { MM_DIRECT, 1440, 900, 24, 8, 16, SEG_GRAPH } },
+ { 0x180, { MM_DIRECT, 1440, 900, 32, 8, 16, SEG_GRAPH } },
+ { 0x181, { MM_DIRECT, 1400, 1050, 16, 8, 16, SEG_GRAPH } },
+ { 0x182, { MM_DIRECT, 1400, 1050, 24, 8, 16, SEG_GRAPH } },
+ { 0x183, { MM_DIRECT, 1400, 1050, 32, 8, 16, SEG_GRAPH } },
+ { 0x184, { MM_DIRECT, 1680, 1050, 16, 8, 16, SEG_GRAPH } },
+ { 0x185, { MM_DIRECT, 1680, 1050, 24, 8, 16, SEG_GRAPH } },
+ { 0x186, { MM_DIRECT, 1680, 1050, 32, 8, 16, SEG_GRAPH } },
+ { 0x187, { MM_DIRECT, 1920, 1200, 16, 8, 16, SEG_GRAPH } },
+ { 0x188, { MM_DIRECT, 1920, 1200, 24, 8, 16, SEG_GRAPH } },
+ { 0x189, { MM_DIRECT, 1920, 1200, 32, 8, 16, SEG_GRAPH } },
+ { 0x18a, { MM_DIRECT, 2560, 1600, 16, 8, 16, SEG_GRAPH } },
+ { 0x18b, { MM_DIRECT, 2560, 1600, 24, 8, 16, SEG_GRAPH } },
+ { 0x18c, { MM_DIRECT, 2560, 1600, 32, 8, 16, SEG_GRAPH } },
+ { 0x18d, { MM_DIRECT, 1280, 720, 16, 8, 16, SEG_GRAPH } },
+ { 0x18e, { MM_DIRECT, 1280, 720, 24, 8, 16, SEG_GRAPH } },
+ { 0x18f, { MM_DIRECT, 1280, 720, 32, 8, 16, SEG_GRAPH } },
+ { 0x190, { MM_DIRECT, 1920, 1080, 16, 8, 16, SEG_GRAPH } },
+ { 0x191, { MM_DIRECT, 1920, 1080, 24, 8, 16, SEG_GRAPH } },
+ { 0x192, { MM_DIRECT, 1920, 1080, 32, 8, 16, SEG_GRAPH } },
+};
+unsigned int svga_mcount VAR16 = ARRAY_SIZE(svga_modes);
diff --git a/roms/seabios/vgasrc/svgamodes.h b/roms/seabios/vgasrc/svgamodes.h
new file mode 100644
index 0000000000000000000000000000000000000000..782d30b9768f4a7cb8bfea6c1d24c483d68b45ed
--- /dev/null
+++ b/roms/seabios/vgasrc/svgamodes.h
@@ -0,0 +1,12 @@
+#ifndef __SVGAMODES_H
+#define __SVGAMODES_H
+
+struct generic_svga_mode {
+ u16 mode;
+ struct vgamode_s info;
+};
+
+extern struct generic_svga_mode svga_modes[] VAR16;
+extern unsigned int svga_mcount VAR16;
+
+#endif /* __SVGAMODES_H */

View File

@ -15,10 +15,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 3 insertions(+)
diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c
index 9bc6db52b4be8510e322e61ba5a7..1f8c8ae85abde736b5a58d1f4cb9 100644
index 0007ee64c75f38a2a3256f0b9462..86de57f9c6f7405bc26303065d2c 100644
--- a/hw/block/xen-block.c
+++ b/hw/block/xen-block.c
@@ -273,6 +273,9 @@ static void xen_block_realize(XenDevice *xendev, Error **errp)
@@ -274,6 +274,9 @@ static void xen_block_realize(XenDevice *xendev, Error **errp)
xen_block_set_size(blockdev);

View File

@ -27,10 +27,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/migration/savevm.c b/migration/savevm.c
index 79ed44d47576ff2942da04827eae..106e6e640e87c99b655aca3a5d96 100644
index a71b930b91f71ed9763fcb07b525..c5cc5fed211e693723538e19850b 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2693,7 +2693,7 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
@@ -2774,7 +2774,7 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
* So call bdrv_inactivate_all (release locks) here to let the other
* side of the migration take controle of the images.
*/

View File

@ -18,10 +18,10 @@ Signed-off-by: Olaf Hering <olaf@aepfle.de>
1 file changed, 12 insertions(+)
diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c
index 69d73196e2a074e771f5fb771649..9bc6db52b4be8510e322e61ba5a7 100644
index 879fc310a4c5dfa4a7d8936f7d8e..0007ee64c75f38a2a3256f0b9462 100644
--- a/hw/block/xen-block.c
+++ b/hw/block/xen-block.c
@@ -741,6 +741,8 @@ static XenBlockDrive *xen_block_drive_create(const char *id,
@@ -743,6 +743,8 @@ static XenBlockDrive *xen_block_drive_create(const char *id,
const char *mode = qdict_get_try_str(opts, "mode");
const char *direct_io_safe = qdict_get_try_str(opts, "direct-io-safe");
const char *discard_enable = qdict_get_try_str(opts, "discard-enable");
@ -30,7 +30,7 @@ index 69d73196e2a074e771f5fb771649..9bc6db52b4be8510e322e61ba5a7 100644
char *driver = NULL;
char *filename = NULL;
XenBlockDrive *drive = NULL;
@@ -810,6 +812,16 @@ static XenBlockDrive *xen_block_drive_create(const char *id,
@@ -812,6 +814,16 @@ static XenBlockDrive *xen_block_drive_create(const char *id,
}
}