trivial patches for 2014-09-03

-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQEcBAABAgAGBQJUBqzmAAoJEL7lnXSkw9fbY54H/1fm0Qjpl0fltFC3xXeuLTKB
 FFuNMpNAupzeRvHbnrYXBeEGHEYS9KcF+sLnjxugE70XNMBmHPCeF8ZuLZtDa6ys
 Xdk3shsSIDg3mThV0L7oaHzaqogCftwlmOqko3HNMuDBurpVCUmzFjWT9dIlcbD6
 SqTmuT2fsyyoh8HzmIfDlQWjRd0Ye5ZarEvrldkA+dpNma2ahDZE1eFFtPoUg/eC
 YihSqDz3WdKx/MPJiDMxTW1olz3oiSOTu8iQTp9Qd9p/Hdhv4CeFYHURyVbd74ka
 ciqPRf+oeIDSlBDxNGbzhZBzqmgBQ3Hmd4dtjacpCHRr7nTJLRfEHbpZvkUOz+Q=
 =PizL
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-2014-09-03' into staging

trivial patches for 2014-09-03

# gpg: Signature made Wed 03 Sep 2014 06:53:42 BST using RSA key ID A4C3D7DB
# gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>"
# gpg:                 aka "Michael Tokarev <mjt@corpit.ru>"
# gpg:                 aka "Michael Tokarev <mjt@debian.org>"
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D  4324 457C E0A0 8044 65C5
#      Subkey fingerprint: 6F67 E18E 7C91 C5B1 5514  66A7 BEE5 9D74 A4C3 D7DB

* remotes/mjt/tags/trivial-patches-2014-09-03:
  slirp: Honour vlan/stack in hostfwd_remove commands
  hmp: fix MemdevList memory leak
  qom/object.c, hmp.c: fix string_output_get_string() memory leak
  query-memdev: fix potential memory leaks
  MAINTAINERS: Add VMWare devices maintainer
  device_tree.c: dump all err mesages with error_report
  device_tree.c: redirect load_device_tree err message to stderr
  scripts: Remove scripts/qtest
  Fix debug print warning
  curl: The macro that you have to uncomment to get debugging is DEBUG_CURL.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2014-09-04 13:33:53 +01:00
commit 01eb313907
14 changed files with 70 additions and 56 deletions

View File

@ -684,6 +684,12 @@ S: Maintained
F: hw/*/xilinx_* F: hw/*/xilinx_*
F: include/hw/xilinx.h F: include/hw/xilinx.h
Vmware
M: Dmitry Fleytman <dmitry@daynix.com>
S: Maintained
F: hw/net/vmxnet*
F: hw/scsi/vmw_pvscsi*
Subsystems Subsystems
---------- ----------
Audio Audio

View File

@ -26,7 +26,7 @@
#include "qapi/qmp/qbool.h" #include "qapi/qmp/qbool.h"
#include <curl/curl.h> #include <curl/curl.h>
// #define DEBUG // #define DEBUG_CURL
// #define DEBUG_VERBOSE // #define DEBUG_VERBOSE
#ifdef DEBUG_CURL #ifdef DEBUG_CURL

View File

@ -20,6 +20,7 @@
#include "config.h" #include "config.h"
#include "qemu-common.h" #include "qemu-common.h"
#include "qemu/error-report.h"
#include "sysemu/device_tree.h" #include "sysemu/device_tree.h"
#include "sysemu/sysemu.h" #include "sysemu/sysemu.h"
#include "hw/loader.h" #include "hw/loader.h"
@ -59,13 +60,13 @@ void *create_device_tree(int *sizep)
} }
ret = fdt_open_into(fdt, fdt, *sizep); ret = fdt_open_into(fdt, fdt, *sizep);
if (ret) { if (ret) {
fprintf(stderr, "Unable to copy device tree in memory\n"); error_report("Unable to copy device tree in memory");
exit(1); exit(1);
} }
return fdt; return fdt;
fail: fail:
fprintf(stderr, "%s Couldn't create dt: %s\n", __func__, fdt_strerror(ret)); error_report("%s Couldn't create dt: %s", __func__, fdt_strerror(ret));
exit(1); exit(1);
} }
@ -79,8 +80,8 @@ void *load_device_tree(const char *filename_path, int *sizep)
*sizep = 0; *sizep = 0;
dt_size = get_image_size(filename_path); dt_size = get_image_size(filename_path);
if (dt_size < 0) { if (dt_size < 0) {
printf("Unable to get size of device tree file '%s'\n", error_report("Unable to get size of device tree file '%s'",
filename_path); filename_path);
goto fail; goto fail;
} }
@ -92,21 +93,21 @@ void *load_device_tree(const char *filename_path, int *sizep)
dt_file_load_size = load_image(filename_path, fdt); dt_file_load_size = load_image(filename_path, fdt);
if (dt_file_load_size < 0) { if (dt_file_load_size < 0) {
printf("Unable to open device tree file '%s'\n", error_report("Unable to open device tree file '%s'",
filename_path); filename_path);
goto fail; goto fail;
} }
ret = fdt_open_into(fdt, fdt, dt_size); ret = fdt_open_into(fdt, fdt, dt_size);
if (ret) { if (ret) {
printf("Unable to copy device tree in memory\n"); error_report("Unable to copy device tree in memory");
goto fail; goto fail;
} }
/* Check sanity of device tree */ /* Check sanity of device tree */
if (fdt_check_header(fdt)) { if (fdt_check_header(fdt)) {
printf ("Device tree file loaded into memory is invalid: %s\n", error_report("Device tree file loaded into memory is invalid: %s",
filename_path); filename_path);
goto fail; goto fail;
} }
*sizep = dt_size; *sizep = dt_size;
@ -123,8 +124,8 @@ static int findnode_nofail(void *fdt, const char *node_path)
offset = fdt_path_offset(fdt, node_path); offset = fdt_path_offset(fdt, node_path);
if (offset < 0) { if (offset < 0) {
fprintf(stderr, "%s Couldn't find node %s: %s\n", __func__, node_path, error_report("%s Couldn't find node %s: %s", __func__, node_path,
fdt_strerror(offset)); fdt_strerror(offset));
exit(1); exit(1);
} }
@ -138,8 +139,8 @@ int qemu_fdt_setprop(void *fdt, const char *node_path,
r = fdt_setprop(fdt, findnode_nofail(fdt, node_path), property, val, size); r = fdt_setprop(fdt, findnode_nofail(fdt, node_path), property, val, size);
if (r < 0) { if (r < 0) {
fprintf(stderr, "%s: Couldn't set %s/%s: %s\n", __func__, node_path, error_report("%s: Couldn't set %s/%s: %s", __func__, node_path,
property, fdt_strerror(r)); property, fdt_strerror(r));
exit(1); exit(1);
} }
@ -153,8 +154,8 @@ int qemu_fdt_setprop_cell(void *fdt, const char *node_path,
r = fdt_setprop_cell(fdt, findnode_nofail(fdt, node_path), property, val); r = fdt_setprop_cell(fdt, findnode_nofail(fdt, node_path), property, val);
if (r < 0) { if (r < 0) {
fprintf(stderr, "%s: Couldn't set %s/%s = %#08x: %s\n", __func__, error_report("%s: Couldn't set %s/%s = %#08x: %s", __func__,
node_path, property, val, fdt_strerror(r)); node_path, property, val, fdt_strerror(r));
exit(1); exit(1);
} }
@ -175,8 +176,8 @@ int qemu_fdt_setprop_string(void *fdt, const char *node_path,
r = fdt_setprop_string(fdt, findnode_nofail(fdt, node_path), property, string); r = fdt_setprop_string(fdt, findnode_nofail(fdt, node_path), property, string);
if (r < 0) { if (r < 0) {
fprintf(stderr, "%s: Couldn't set %s/%s = %s: %s\n", __func__, error_report("%s: Couldn't set %s/%s = %s: %s", __func__,
node_path, property, string, fdt_strerror(r)); node_path, property, string, fdt_strerror(r));
exit(1); exit(1);
} }
@ -193,8 +194,8 @@ const void *qemu_fdt_getprop(void *fdt, const char *node_path,
} }
r = fdt_getprop(fdt, findnode_nofail(fdt, node_path), property, lenp); r = fdt_getprop(fdt, findnode_nofail(fdt, node_path), property, lenp);
if (!r) { if (!r) {
fprintf(stderr, "%s: Couldn't get %s/%s: %s\n", __func__, error_report("%s: Couldn't get %s/%s: %s", __func__,
node_path, property, fdt_strerror(*lenp)); node_path, property, fdt_strerror(*lenp));
exit(1); exit(1);
} }
return r; return r;
@ -206,8 +207,8 @@ uint32_t qemu_fdt_getprop_cell(void *fdt, const char *node_path,
int len; int len;
const uint32_t *p = qemu_fdt_getprop(fdt, node_path, property, &len); const uint32_t *p = qemu_fdt_getprop(fdt, node_path, property, &len);
if (len != 4) { if (len != 4) {
fprintf(stderr, "%s: %s/%s not 4 bytes long (not a cell?)\n", error_report("%s: %s/%s not 4 bytes long (not a cell?)",
__func__, node_path, property); __func__, node_path, property);
exit(1); exit(1);
} }
return be32_to_cpu(*p); return be32_to_cpu(*p);
@ -219,8 +220,8 @@ uint32_t qemu_fdt_get_phandle(void *fdt, const char *path)
r = fdt_get_phandle(fdt, findnode_nofail(fdt, path)); r = fdt_get_phandle(fdt, findnode_nofail(fdt, path));
if (r == 0) { if (r == 0) {
fprintf(stderr, "%s: Couldn't get phandle for %s: %s\n", __func__, error_report("%s: Couldn't get phandle for %s: %s", __func__,
path, fdt_strerror(r)); path, fdt_strerror(r));
exit(1); exit(1);
} }
@ -265,8 +266,8 @@ int qemu_fdt_nop_node(void *fdt, const char *node_path)
r = fdt_nop_node(fdt, findnode_nofail(fdt, node_path)); r = fdt_nop_node(fdt, findnode_nofail(fdt, node_path));
if (r < 0) { if (r < 0) {
fprintf(stderr, "%s: Couldn't nop node %s: %s\n", __func__, node_path, error_report("%s: Couldn't nop node %s: %s", __func__, node_path,
fdt_strerror(r)); fdt_strerror(r));
exit(1); exit(1);
} }
@ -294,8 +295,8 @@ int qemu_fdt_add_subnode(void *fdt, const char *name)
retval = fdt_add_subnode(fdt, parent, basename); retval = fdt_add_subnode(fdt, parent, basename);
if (retval < 0) { if (retval < 0) {
fprintf(stderr, "FDT: Failed to create subnode %s: %s\n", name, error_report("FDT: Failed to create subnode %s: %s", name,
fdt_strerror(retval)); fdt_strerror(retval));
exit(1); exit(1);
} }

8
hmp.c
View File

@ -1687,6 +1687,7 @@ void hmp_info_memdev(Monitor *mon, const QDict *qdict)
MemdevList *memdev_list = qmp_query_memdev(&err); MemdevList *memdev_list = qmp_query_memdev(&err);
MemdevList *m = memdev_list; MemdevList *m = memdev_list;
StringOutputVisitor *ov; StringOutputVisitor *ov;
char *str;
int i = 0; int i = 0;
@ -1704,13 +1705,16 @@ void hmp_info_memdev(Monitor *mon, const QDict *qdict)
m->value->prealloc ? "true" : "false"); m->value->prealloc ? "true" : "false");
monitor_printf(mon, " policy: %s\n", monitor_printf(mon, " policy: %s\n",
HostMemPolicy_lookup[m->value->policy]); HostMemPolicy_lookup[m->value->policy]);
monitor_printf(mon, " host nodes: %s\n", str = string_output_get_string(ov);
string_output_get_string(ov)); monitor_printf(mon, " host nodes: %s\n", str);
g_free(str);
string_output_visitor_cleanup(ov); string_output_visitor_cleanup(ov);
m = m->next; m = m->next;
i++; i++;
} }
monitor_printf(mon, "\n"); monitor_printf(mon, "\n");
qapi_free_MemdevList(memdev_list);
} }

View File

@ -139,7 +139,8 @@ static void smb_ioport_writeb(void *opaque, hwaddr addr, uint64_t val,
{ {
PMSMBus *s = opaque; PMSMBus *s = opaque;
SMBUS_DPRINTF("SMB writeb port=0x%04x val=0x%02x\n", addr, val); SMBUS_DPRINTF("SMB writeb port=0x%04" HWADDR_PRIx
" val=0x%02" PRIx64 "\n", addr, val);
switch(addr) { switch(addr) {
case SMBHSTSTS: case SMBHSTSTS:
s->smb_stat = (~(val & 0xff)) & s->smb_stat; s->smb_stat = (~(val & 0xff)) & s->smb_stat;
@ -206,7 +207,7 @@ static uint64_t smb_ioport_readb(void *opaque, hwaddr addr, unsigned width)
val = 0; val = 0;
break; break;
} }
SMBUS_DPRINTF("SMB readb port=0x%04x val=0x%02x\n", addr, val); SMBUS_DPRINTF("SMB readb port=0x%04" HWADDR_PRIx " val=0x%02x\n", addr, val);
return val; return val;
} }

View File

@ -481,7 +481,7 @@ static void port92_write(void *opaque, hwaddr addr, uint64_t val,
Port92State *s = opaque; Port92State *s = opaque;
int oldval = s->outport; int oldval = s->outport;
DPRINTF("port92: write 0x%02x\n", val); DPRINTF("port92: write 0x%02" PRIx64 "\n", val);
s->outport = val; s->outport = val;
qemu_set_irq(*s->a20_out, (val >> 1) & 1); qemu_set_irq(*s->a20_out, (val >> 1) & 1);
if ((val & 1) && !(oldval & 1)) { if ((val & 1) && !(oldval & 1)) {

View File

@ -229,7 +229,7 @@ static void kbd_write_command(void *opaque, hwaddr addr,
{ {
KBDState *s = opaque; KBDState *s = opaque;
DPRINTF("kbd: write cmd=0x%02x\n", val); DPRINTF("kbd: write cmd=0x%02" PRIx64 "\n", val);
/* Bits 3-0 of the output port P2 of the keyboard controller may be pulsed /* Bits 3-0 of the output port P2 of the keyboard controller may be pulsed
* low for approximately 6 micro seconds. Bits 3-0 of the KBD_CCMD_PULSE * low for approximately 6 micro seconds. Bits 3-0 of the KBD_CCMD_PULSE
@ -330,7 +330,7 @@ static void kbd_write_data(void *opaque, hwaddr addr,
{ {
KBDState *s = opaque; KBDState *s = opaque;
DPRINTF("kbd: write data=0x%02x\n", val); DPRINTF("kbd: write data=0x%02" PRIx64 "\n", val);
switch(s->write_cmd) { switch(s->write_cmd) {
case 0: case 0:

View File

@ -370,7 +370,7 @@ static uint64_t pic_ioport_read(void *opaque, hwaddr addr,
ret = s->imr; ret = s->imr;
} }
} }
DPRINTF("read: addr=0x%02x val=0x%02x\n", addr, ret); DPRINTF("read: addr=0x%02" HWADDR_PRIx " val=0x%02x\n", addr, ret);
return ret; return ret;
} }

View File

@ -41,7 +41,8 @@ static void apm_ioport_writeb(void *opaque, hwaddr addr, uint64_t val,
{ {
APMState *apm = opaque; APMState *apm = opaque;
addr &= 1; addr &= 1;
APM_DPRINTF("apm_ioport_writeb addr=0x%x val=0x%02x\n", addr, val); APM_DPRINTF("apm_ioport_writeb addr=0x%" HWADDR_PRIx
" val=0x%02" PRIx64 "\n", addr, val);
if (addr == 0) { if (addr == 0) {
apm->apmc = val; apm->apmc = val;
@ -64,7 +65,7 @@ static uint64_t apm_ioport_readb(void *opaque, hwaddr addr, unsigned size)
} else { } else {
val = apm->apms; val = apm->apms;
} }
APM_DPRINTF("apm_ioport_readb addr=0x%x val=0x%02x\n", addr, val); APM_DPRINTF("apm_ioport_readb addr=0x%" HWADDR_PRIx " val=0x%02x\n", addr, val);
return val; return val;
} }

View File

@ -391,7 +391,7 @@ static void cmos_ioport_write(void *opaque, hwaddr addr,
if ((addr & 1) == 0) { if ((addr & 1) == 0) {
s->cmos_index = data & 0x7f; s->cmos_index = data & 0x7f;
} else { } else {
CMOS_DPRINTF("cmos: write index=0x%02x val=0x%02x\n", CMOS_DPRINTF("cmos: write index=0x%02x val=0x%02" PRIx64 "\n",
s->cmos_index, data); s->cmos_index, data);
switch(s->cmos_index) { switch(s->cmos_index) {
case RTC_SECONDS_ALARM: case RTC_SECONDS_ALARM:

View File

@ -345,8 +345,7 @@ void net_slirp_hostfwd_remove(Monitor *mon, const QDict *qdict)
host_port = atoi(p); host_port = atoi(p);
err = slirp_remove_hostfwd(QTAILQ_FIRST(&slirp_stacks)->slirp, is_udp, err = slirp_remove_hostfwd(s->slirp, is_udp, host_addr, host_port);
host_addr, host_port);
monitor_printf(mon, "host forwarding rule for %s %s\n", src_str, monitor_printf(mon, "host forwarding rule for %s %s\n", src_str,
err ? "not found" : "removed"); err ? "not found" : "removed");

15
numa.c
View File

@ -318,10 +318,11 @@ void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
static int query_memdev(Object *obj, void *opaque) static int query_memdev(Object *obj, void *opaque)
{ {
MemdevList **list = opaque; MemdevList **list = opaque;
MemdevList *m = NULL;
Error *err = NULL; Error *err = NULL;
if (object_dynamic_cast(obj, TYPE_MEMORY_BACKEND)) { if (object_dynamic_cast(obj, TYPE_MEMORY_BACKEND)) {
MemdevList *m = g_malloc0(sizeof(*m)); m = g_malloc0(sizeof(*m));
m->value = g_malloc0(sizeof(*m->value)); m->value = g_malloc0(sizeof(*m->value));
@ -369,13 +370,16 @@ static int query_memdev(Object *obj, void *opaque)
return 0; return 0;
error: error:
g_free(m->value);
g_free(m);
return -1; return -1;
} }
MemdevList *qmp_query_memdev(Error **errp) MemdevList *qmp_query_memdev(Error **errp)
{ {
Object *obj; Object *obj;
MemdevList *list = NULL, *m; MemdevList *list = NULL;
obj = object_resolve_path("/objects", NULL); obj = object_resolve_path("/objects", NULL);
if (obj == NULL) { if (obj == NULL) {
@ -389,11 +393,6 @@ MemdevList *qmp_query_memdev(Error **errp)
return list; return list;
error: error:
while (list) { qapi_free_MemdevList(list);
m = list;
list = list->next;
g_free(m->value);
g_free(m);
}
return NULL; return NULL;
} }

View File

@ -938,14 +938,18 @@ int object_property_get_enum(Object *obj, const char *name,
{ {
StringOutputVisitor *sov; StringOutputVisitor *sov;
StringInputVisitor *siv; StringInputVisitor *siv;
char *str;
int ret; int ret;
sov = string_output_visitor_new(false); sov = string_output_visitor_new(false);
object_property_get(obj, string_output_get_visitor(sov), name, errp); object_property_get(obj, string_output_get_visitor(sov), name, errp);
siv = string_input_visitor_new(string_output_get_string(sov)); str = string_output_get_string(sov);
siv = string_input_visitor_new(str);
string_output_visitor_cleanup(sov); string_output_visitor_cleanup(sov);
visit_type_enum(string_input_get_visitor(siv), visit_type_enum(string_input_get_visitor(siv),
&ret, strings, NULL, name, errp); &ret, strings, NULL, name, errp);
g_free(str);
string_input_visitor_cleanup(siv); string_input_visitor_cleanup(siv);
return ret; return ret;
@ -956,13 +960,17 @@ void object_property_get_uint16List(Object *obj, const char *name,
{ {
StringOutputVisitor *ov; StringOutputVisitor *ov;
StringInputVisitor *iv; StringInputVisitor *iv;
char *str;
ov = string_output_visitor_new(false); ov = string_output_visitor_new(false);
object_property_get(obj, string_output_get_visitor(ov), object_property_get(obj, string_output_get_visitor(ov),
name, errp); name, errp);
iv = string_input_visitor_new(string_output_get_string(ov)); str = string_output_get_string(ov);
iv = string_input_visitor_new(str);
visit_type_uint16List(string_input_get_visitor(iv), visit_type_uint16List(string_input_get_visitor(iv),
list, NULL, errp); list, NULL, errp);
g_free(str);
string_output_visitor_cleanup(ov); string_output_visitor_cleanup(ov);
string_input_visitor_cleanup(iv); string_input_visitor_cleanup(iv);
} }

View File

@ -1,5 +0,0 @@
#!/bin/sh
export QTEST_QEMU_BINARY=$1
shift
"$@"