mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-fetch' into staging
trivial patches for 2017-01-24 # gpg: Signature made Tue 24 Jan 2017 20:27:08 GMT # gpg: using RSA key 0x701B4F6B1A693E59 # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>" # gpg: aka "Michael Tokarev <mjt@corpit.ru>" # gpg: aka "Michael Tokarev <mjt@debian.org>" # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D 4324 457C E0A0 8044 65C5 # Subkey fingerprint: 7B73 BAD6 8BE7 A2C2 8931 4B22 701B 4F6B 1A69 3E59 * remotes/mjt/tags/trivial-patches-fetch: (31 commits) hw/isa/isa-bus: Set category of the "isabus-bridge" device usb: Set category and description of the MTP device gdbstub.c: update old error report statements gdbstub.c: fix GDB connection segfault caused by empty machines scsi-disk: add 'fall through' comment to switch VERIFY cases Drop duplicate display option documentation hw/display/framebuffer.c: Avoid overflow for framebuffers > 4GB win32: use glib gpoll if glib >= 2.50 util/mmap-alloc: refactor a little bit for readability util/mmap-alloc: check parameter before using vfio: remove a duplicated word in comments docs: sync pci-ids.txt disas/cris.c: Fix Coverity warning about unchecked NULL lm32: milkymist-tmu2: fix another integer overflow hw/i386/kvmvapic: Remove dead code in patch_hypercalls() doc/usb2: fix typo qga: fix erroneous argument to strerror block: remove dead check pci-assign: avoid pointless stat qemu-img: remove dead check ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
@@ -45,6 +45,7 @@ of other UNIX targets. The simple steps to build QEMU are:
|
||||
Additional information can also be found online via the QEMU website:
|
||||
|
||||
http://qemu-project.org/Hosts/Linux
|
||||
http://qemu-project.org/Hosts/Mac
|
||||
http://qemu-project.org/Hosts/W32
|
||||
|
||||
|
||||
|
||||
@@ -1851,7 +1851,7 @@ static BlockDriverState *bdrv_open_inherit(const char *filename,
|
||||
bdrv_refresh_filename(bs);
|
||||
|
||||
/* Check if any unknown options were used */
|
||||
if (options && (qdict_size(options) != 0)) {
|
||||
if (qdict_size(options) != 0) {
|
||||
const QDictEntry *entry = qdict_first(options);
|
||||
if (flags & BDRV_O_PROTOCOL) {
|
||||
error_setg(errp, "Block protocol '%s' doesn't support the option "
|
||||
|
||||
+1
-1
@@ -2490,7 +2490,7 @@ print_with_operands (const struct cris_opcode *opcodep,
|
||||
const struct cris_spec_reg *sregp
|
||||
= spec_reg_info ((insn >> 12) & 15, disdata->distype);
|
||||
|
||||
if (sregp->name == NULL)
|
||||
if (sregp == NULL || sregp->name == NULL)
|
||||
/* Should have been caught as a non-match earlier. */
|
||||
*tp++ = '?';
|
||||
else
|
||||
|
||||
@@ -57,7 +57,10 @@ PCI devices (other than virtio):
|
||||
1b36:0005 PCI test device (docs/specs/pci-testdev.txt)
|
||||
1b36:0006 PCI Rocker Ethernet switch device
|
||||
1b36:0007 PCI SD Card Host Controller Interface (SDHCI)
|
||||
1b36:0008 PCIe host bridge
|
||||
1b36:0009 PCI Expander Bridge (-device pxb)
|
||||
1b36:000a PCI-PCI bridge (multiseat)
|
||||
1b36:000b PCIe Expander Bridge (-device pxb-pcie)
|
||||
|
||||
All these devices are documented in docs/specs.
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ with tree logical units:
|
||||
Number three emulates the classic bulk-only transport protocol too.
|
||||
It's called "usb-bot". It shares most code with "usb-storage", and
|
||||
the guest will not be able to see the difference. The qemu command
|
||||
line interface is simliar to usb-uas though, i.e. no automatic scsi
|
||||
line interface is similar to usb-uas though, i.e. no automatic scsi
|
||||
disk creation. It also features support for up to 16 LUNs. The LUN
|
||||
numbers must be continuous, i.e. for three devices you must use 0+1+2.
|
||||
The 0+1+5 numbering from the "usb-uas" example isn't going to work
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ the controller so the USB 2.0 bus gets a individual name, for example
|
||||
'-device usb-ehci,id=ehci". This will give you a USB 2.0 bus named
|
||||
"ehci.0".
|
||||
|
||||
I strongly recomment to also use -device to attach usb devices because
|
||||
I strongly recommend to also use -device to attach usb devices because
|
||||
you can specify the bus they should be attached to this way. Here is
|
||||
a complete example:
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qemu/cutils.h"
|
||||
#include "cpu.h"
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
@@ -637,8 +638,8 @@ void gdb_register_coprocessor(CPUState *cpu,
|
||||
*p = s;
|
||||
if (g_pos) {
|
||||
if (g_pos != s->base_reg) {
|
||||
fprintf(stderr, "Error: Bad gdb register numbering for '%s'\n"
|
||||
"Expected %d got %d\n", xml, g_pos, s->base_reg);
|
||||
error_report("Error: Bad gdb register numbering for '%s', "
|
||||
"expected %d got %d", xml, g_pos, s->base_reg);
|
||||
} else {
|
||||
cpu->gdb_num_g_regs = cpu->gdb_num_regs;
|
||||
}
|
||||
@@ -890,7 +891,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf)
|
||||
}
|
||||
case 'k':
|
||||
/* Kill the target */
|
||||
fprintf(stderr, "\nQEMU: Terminated via GDBstub\n");
|
||||
error_report("QEMU: Terminated via GDBstub");
|
||||
exit(0);
|
||||
case 'D':
|
||||
/* Detach packet */
|
||||
@@ -1358,8 +1359,8 @@ void gdb_do_syscallv(gdb_syscall_complete_cb cb, const char *fmt, va_list va)
|
||||
break;
|
||||
default:
|
||||
bad_format:
|
||||
fprintf(stderr, "gdbstub: Bad syscall format string '%s'\n",
|
||||
fmt - 1);
|
||||
error_report("gdbstub: Bad syscall format string '%s'",
|
||||
fmt - 1);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@@ -1732,6 +1733,12 @@ int gdbserver_start(const char *device)
|
||||
CharDriverState *mon_chr;
|
||||
ChardevCommon common = { 0 };
|
||||
|
||||
if (!first_cpu) {
|
||||
error_report("gdbstub: meaningless to attach gdb to a "
|
||||
"machine without any CPU.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!device)
|
||||
return -1;
|
||||
if (strcmp(device, "none") != 0) {
|
||||
|
||||
+2
-2
@@ -147,7 +147,7 @@ typedef struct FlashPartInfo {
|
||||
#define CFG_DUMMY_CLK_LEN 4
|
||||
#define NVCFG_DUMMY_CLK_POS 12
|
||||
#define VCFG_DUMMY_CLK_POS 4
|
||||
#define EVCFG_OUT_DRIVER_STRENGHT_DEF 7
|
||||
#define EVCFG_OUT_DRIVER_STRENGTH_DEF 7
|
||||
#define EVCFG_VPP_ACCELERATOR (1 << 3)
|
||||
#define EVCFG_RESET_HOLD_ENABLED (1 << 4)
|
||||
#define NVCFG_DUAL_IO_MASK (1 << 2)
|
||||
@@ -747,7 +747,7 @@ static void reset_memory(Flash *s)
|
||||
);
|
||||
|
||||
s->enh_volatile_cfg = 0;
|
||||
s->enh_volatile_cfg |= EVCFG_OUT_DRIVER_STRENGHT_DEF;
|
||||
s->enh_volatile_cfg |= EVCFG_OUT_DRIVER_STRENGTH_DEF;
|
||||
s->enh_volatile_cfg |= EVCFG_VPP_ACCELERATOR;
|
||||
s->enh_volatile_cfg |= EVCFG_RESET_HOLD_ENABLED;
|
||||
if (s->nonvolatile_cfg & NVCFG_DUAL_IO_MASK) {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
* this it needs a backend to manage the datas, the same as other
|
||||
* memory-related devices. In this case as the backend is so trivial we
|
||||
* have merged it with the frontend instead of creating and maintaining a
|
||||
* seperate backend.
|
||||
* separate backend.
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
@@ -79,7 +79,7 @@ static void generic_loader_realize(DeviceState *dev, Error **errp)
|
||||
"loading memory values");
|
||||
return;
|
||||
} else if (!s->data_len) {
|
||||
/* We cant' check for !data here as a value of 0 is still valid. */
|
||||
/* We can't check for !data here as a value of 0 is still valid. */
|
||||
error_setg(errp, "Both data and data-len must be specified");
|
||||
return;
|
||||
} else if (s->data_len > 8) {
|
||||
|
||||
@@ -711,7 +711,7 @@ static void get_pci_host_devaddr(Object *obj, Visitor *v, const char *name,
|
||||
|
||||
/*
|
||||
* Catch "invalid" device reference from vfio-pci and allow the
|
||||
* default buffer representing the non-existant device to be used.
|
||||
* default buffer representing the non-existent device to be used.
|
||||
*/
|
||||
if (~addr->domain || ~addr->bus || ~addr->slot || ~addr->function) {
|
||||
rc = snprintf(buffer, sizeof(buffer), "%04x:%02x:%02x.%0d",
|
||||
|
||||
@@ -78,7 +78,7 @@ void framebuffer_update_display(
|
||||
|
||||
i = *first_row;
|
||||
*first_row = -1;
|
||||
src_len = src_width * rows;
|
||||
src_len = (hwaddr)src_width * rows;
|
||||
|
||||
mem = mem_section->mr;
|
||||
if (!mem) {
|
||||
|
||||
@@ -257,7 +257,7 @@ static void tmu2_start(MilkymistTMU2State *s)
|
||||
glColor4f(m, m, m, (float)(s->regs[R_ALPHA] + 1) / 64.0f);
|
||||
|
||||
/* Read the QEMU dest. framebuffer into the OpenGL framebuffer */
|
||||
fb_len = 2 * s->regs[R_DSTHRES] * s->regs[R_DSTVRES];
|
||||
fb_len = 2ULL * s->regs[R_DSTHRES] * s->regs[R_DSTVRES];
|
||||
fb = cpu_physical_memory_map(s->regs[R_DSTFBUF], &fb_len, 0);
|
||||
if (fb == NULL) {
|
||||
glDeleteTextures(1, &texture);
|
||||
|
||||
@@ -555,7 +555,7 @@ static void xlnx_dp_recreate_surface(XlnxDPState *s)
|
||||
if ((width != 0) && (height != 0)) {
|
||||
/*
|
||||
* As dpy_gfx_replace_surface calls qemu_free_displaysurface on the
|
||||
* surface we need to be carefull and don't free the surface associated
|
||||
* surface we need to be careful and don't free the surface associated
|
||||
* to the console or double free will happen.
|
||||
*/
|
||||
if (s->bout_plane.surface != current_console_surface) {
|
||||
@@ -1160,7 +1160,7 @@ static void xlnx_dp_update_display(void *opaque)
|
||||
*/
|
||||
if (!xlnx_dpdma_start_operation(s->dpdma, 3, false)) {
|
||||
/*
|
||||
* An error occured don't do anything with the data..
|
||||
* An error occurred don't do anything with the data..
|
||||
* Trigger an underflow interrupt.
|
||||
*/
|
||||
s->core_registers[DP_INT_STATUS] |= (1 << 21);
|
||||
|
||||
@@ -535,7 +535,6 @@ static int patch_hypercalls(VAPICROMState *s)
|
||||
uint8_t alternates[2];
|
||||
const uint8_t *pattern;
|
||||
const uint8_t *patch;
|
||||
int patches = 0;
|
||||
off_t pos;
|
||||
uint8_t *rom;
|
||||
|
||||
@@ -566,11 +565,6 @@ static int patch_hypercalls(VAPICROMState *s)
|
||||
}
|
||||
|
||||
g_free(rom);
|
||||
|
||||
if (patches != 0 && patches != 2) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1777,7 +1777,7 @@ static int pc_apic_cmp(const void *a, const void *b)
|
||||
|
||||
/* returns pointer to CPUArchId descriptor that matches CPU's apic_id
|
||||
* in pcms->possible_cpus->cpus, if pcms->possible_cpus->cpus has no
|
||||
* entry correponding to CPU's apic_id returns NULL.
|
||||
* entry corresponding to CPU's apic_id returns NULL.
|
||||
*/
|
||||
static CPUArchId *pc_find_cpu_slot(PCMachineState *pcms, CPUState *cpu,
|
||||
int *idx)
|
||||
|
||||
@@ -39,19 +39,19 @@ void *pci_assign_dev_load_option_rom(PCIDevice *dev, struct Object *owner,
|
||||
"/sys/bus/pci/devices/%04x:%02x:%02x.%01x/rom",
|
||||
domain, bus, slot, function);
|
||||
|
||||
if (stat(rom_file, &st)) {
|
||||
if (errno != ENOENT) {
|
||||
error_report("pci-assign: Invalid ROM.");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Write "1" to the ROM file to enable it */
|
||||
fp = fopen(rom_file, "r+");
|
||||
if (fp == NULL) {
|
||||
error_report("pci-assign: Cannot open %s: %s", rom_file, strerror(errno));
|
||||
if (errno != ENOENT) {
|
||||
error_report("pci-assign: Cannot open %s: %s", rom_file, strerror(errno));
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
if (fstat(fileno(fp), &st) == -1) {
|
||||
error_report("pci-assign: Cannot stat %s: %s", rom_file, strerror(errno));
|
||||
goto close_rom;
|
||||
}
|
||||
|
||||
val = 1;
|
||||
if (fwrite(&val, 1, 1, fp) != 1) {
|
||||
goto close_rom;
|
||||
|
||||
@@ -219,6 +219,7 @@ static void isabus_bridge_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
|
||||
set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
|
||||
dc->fw_name = "isa";
|
||||
}
|
||||
|
||||
|
||||
@@ -896,7 +896,7 @@ static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size)
|
||||
|
||||
DB_PRINT("config bufsize: %d packet size: %ld\n", rxbufsize, size);
|
||||
|
||||
/* Find which queue we are targetting */
|
||||
/* Find which queue we are targeting */
|
||||
q = get_queue_from_screen(s, rxbuf_ptr, rxbufsize);
|
||||
|
||||
while (bytes_to_copy) {
|
||||
|
||||
+2
-2
@@ -105,7 +105,7 @@ typedef struct VIOsPAPRVLANDevice {
|
||||
uint32_t add_buf_ptr, use_buf_ptr, rx_bufs;
|
||||
hwaddr rxq_ptr;
|
||||
QEMUTimer *rxp_timer;
|
||||
uint32_t compat_flags; /* Compatability flags for migration */
|
||||
uint32_t compat_flags; /* Compatibility flags for migration */
|
||||
RxBufPool *rx_pool[RX_MAX_POOLS]; /* Receive buffer descriptor pools */
|
||||
} VIOsPAPRVLANDevice;
|
||||
|
||||
@@ -559,7 +559,7 @@ static target_long spapr_vlan_add_rxbuf_to_pool(VIOsPAPRVLANDevice *dev,
|
||||
if (pool < 0) {
|
||||
/*
|
||||
* No matching pool found? Try to use a new one. If the guest used all
|
||||
* pools before, but changed the size of one pool inbetween, we might
|
||||
* pools before, but changed the size of one pool in the meantime, we might
|
||||
* need to recycle that pool here (if it's empty already). Thus scan
|
||||
* all buffer pools now, starting with the last (likely empty) one.
|
||||
*/
|
||||
|
||||
+1
-1
@@ -656,7 +656,7 @@ static void pcie_ext_cap_set_next(PCIDevice *dev, uint16_t pos, uint16_t next)
|
||||
}
|
||||
|
||||
/*
|
||||
* caller must supply valid (offset, size) * such that the range shouldn't
|
||||
* Caller must supply valid (offset, size) such that the range wouldn't
|
||||
* overlap with other capability or other registers.
|
||||
* This function doesn't check it.
|
||||
*/
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user