summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu/qemu
diff options
context:
space:
mode:
authorCristian Iorga <cristian.iorga@intel.com>2015-12-21 13:24:21 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-12-28 09:25:17 +0000
commita7eadc3dd43be1caf6628527b6cd72a28e182311 (patch)
tree88345353aea7a1586555b64647e5d175a6cc16d1 /meta/recipes-devtools/qemu/qemu
parent9988ab36b41abf00cd79f671aa84bbcc4f8e540d (diff)
downloadpoky-a7eadc3dd43be1caf6628527b6cd72a28e182311.tar.gz
qemu: upgrade to 2.5.0
- cpus.c-qemu_mutex_lock_iothread-fix-race-condition-a.patch removed, included upstream; - smc91c111_fix*.patch patches removed, included upstream; - trace-remove-malloc-tracing.patch patch removed, included upstream; - some configure options disappeared or changed name, updated. (From OE-Core rev: 11b14e80ac484df24459ef67746684bd49d1fbd8) Signed-off-by: Cristian Iorga <cristian.iorga@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu')
-rw-r--r--meta/recipes-devtools/qemu/qemu/cpus.c-qemu_mutex_lock_iothread-fix-race-condition-a.patch45
-rw-r--r--meta/recipes-devtools/qemu/qemu/smc91c111_fix.patch74
-rw-r--r--meta/recipes-devtools/qemu/qemu/smc91c111_fix1.patch85
-rw-r--r--meta/recipes-devtools/qemu/qemu/smc91c111_fix2.patch46
-rw-r--r--meta/recipes-devtools/qemu/qemu/smc91c111_fix3.patch33
-rw-r--r--meta/recipes-devtools/qemu/qemu/trace-remove-malloc-tracing.patch97
6 files changed, 0 insertions, 380 deletions
diff --git a/meta/recipes-devtools/qemu/qemu/cpus.c-qemu_mutex_lock_iothread-fix-race-condition-a.patch b/meta/recipes-devtools/qemu/qemu/cpus.c-qemu_mutex_lock_iothread-fix-race-condition-a.patch
deleted file mode 100644
index 45dffabc34..0000000000
--- a/meta/recipes-devtools/qemu/qemu/cpus.c-qemu_mutex_lock_iothread-fix-race-condition-a.patch
+++ /dev/null
@@ -1,45 +0,0 @@
1Upstream-Status: Submitted
2
3From f354b9333408d411854af058cc44cceda60b4473 Mon Sep 17 00:00:00 2001
4From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
5Date: Thu, 3 Sep 2015 14:07:34 -0500
6Subject: [PATCH] cpus.c: qemu_mutex_lock_iothread fix race condition at cpu
7 thread init
8MIME-Version: 1.0
9Content-Type: text/plain; charset=UTF-8
10Content-Transfer-Encoding: 8bit
11
12When QEMU starts the RCU thread executes qemu_mutex_lock_thread
13causing error "qemu:qemu_cpu_kick_thread: No such process" and exits.
14
15This isn't occur frequently but in glibc the thread id can exist and
16this not guarantee that the thread is on active/running state. If is
17inserted a sleep(1) after newthread assignment [1] the issue appears.
18
19So not make assumption that thread exist if first_cpu->thread is set
20then change the validation of cpu to created that is set into cpu
21threads (kvm, tcg, dummy).
22
23[1] https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/pthread_create.c;h=d10f4ea8004e1d8f3a268b95cc0f8d93b8d89867;hb=HEAD#l621
24
25Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
26---
27 cpus.c | 2 +-
28 1 file changed, 1 insertion(+), 1 deletion(-)
29
30diff --git a/cpus.c b/cpus.c
31index 7e4786e..05e5400 100644
32--- a/cpus.c
33+++ b/cpus.c
34@@ -1171,7 +1171,7 @@ void qemu_mutex_lock_iothread(void)
35 * TCG code execution.
36 */
37 if (!tcg_enabled() || qemu_in_vcpu_thread() ||
38- !first_cpu || !first_cpu->thread) {
39+ !first_cpu || !first_cpu->created) {
40 qemu_mutex_lock(&qemu_global_mutex);
41 atomic_dec(&iothread_requesting_mutex);
42 } else {
43--
441.9.1
45
diff --git a/meta/recipes-devtools/qemu/qemu/smc91c111_fix.patch b/meta/recipes-devtools/qemu/qemu/smc91c111_fix.patch
deleted file mode 100644
index e37e777347..0000000000
--- a/meta/recipes-devtools/qemu/qemu/smc91c111_fix.patch
+++ /dev/null
@@ -1,74 +0,0 @@
1The smc91c111.c driver appears to have several issues. The can_receive()
2function can return that the driver is ready when rx_fifo has not been
3freed yet. There is also no sanity check of rx_fifo() in _receive() which
4can lead to corruption of the rx_fifo array.
5
6release_packet() can also call qemu_flush_queued_packets() before rx_fifo
7has been cleaned up, resulting in cases where packets are submitted
8for which there is not yet any space.
9
10This patch therefore:
11
12* fixes the logic in can_receive()
13* adds logic to receive() as a sanity check
14* moves the flush() calls to the correct places where data is ready
15 to be received
16
17Upstream-Status: Pending [discussion in progress on mailing list]
18RP 2015/9/7
19
20Index: qemu-2.4.0/hw/net/smc91c111.c
21===================================================================
22--- qemu-2.4.0.orig/hw/net/smc91c111.c
23+++ qemu-2.4.0/hw/net/smc91c111.c
24@@ -185,7 +185,6 @@ static void smc91c111_release_packet(smc
25 s->allocated &= ~(1 << packet);
26 if (s->tx_alloc == 0x80)
27 smc91c111_tx_alloc(s);
28- qemu_flush_queued_packets(qemu_get_queue(s->nic));
29 }
30
31 /* Flush the TX FIFO. */
32@@ -237,9 +236,11 @@ static void smc91c111_do_tx(smc91c111_st
33 }
34 }
35 #endif
36- if (s->ctr & CTR_AUTO_RELEASE)
37+ if (s->ctr & CTR_AUTO_RELEASE) {
38 /* Race? */
39 smc91c111_release_packet(s, packetnum);
40+ qemu_flush_queued_packets(qemu_get_queue(s->nic));
41+ }
42 else if (s->tx_fifo_done_len < NUM_PACKETS)
43 s->tx_fifo_done[s->tx_fifo_done_len++] = packetnum;
44 qemu_send_packet(qemu_get_queue(s->nic), p, len);
45@@ -379,9 +380,11 @@ static void smc91c111_writeb(void *opaqu
46 smc91c111_release_packet(s, s->rx_fifo[0]);
47 }
48 smc91c111_pop_rx_fifo(s);
49+ qemu_flush_queued_packets(qemu_get_queue(s->nic));
50 break;
51 case 5: /* Release. */
52 smc91c111_release_packet(s, s->packet_num);
53+ qemu_flush_queued_packets(qemu_get_queue(s->nic));
54 break;
55 case 6: /* Add to TX FIFO. */
56 smc91c111_queue_tx(s, s->packet_num);
57@@ -642,7 +642,7 @@ static int smc91c111_can_receive(NetClie
58
59 if ((s->rcr & RCR_RXEN) == 0 || (s->rcr & RCR_SOFT_RST))
60 return 1;
61- if (s->allocated == (1 << NUM_PACKETS) - 1)
62+ if ((s->allocated == (1 << NUM_PACKETS) - 1) || (s->rx_fifo_len == NUM_PACKETS))
63 return 0;
64 return 1;
65 }
66@@ -671,6 +671,8 @@ static ssize_t smc91c111_receive(NetClie
67 /* TODO: Flag overrun and receive errors. */
68 if (packetsize > 2048)
69 return -1;
70+ if (s->rx_fifo_len == NUM_PACKETS)
71+ return -1;
72 packetnum = smc91c111_allocate_packet(s);
73 if (packetnum == 0x80)
74 return -1;
diff --git a/meta/recipes-devtools/qemu/qemu/smc91c111_fix1.patch b/meta/recipes-devtools/qemu/qemu/smc91c111_fix1.patch
deleted file mode 100644
index bd1223a446..0000000000
--- a/meta/recipes-devtools/qemu/qemu/smc91c111_fix1.patch
+++ /dev/null
@@ -1,85 +0,0 @@
1From: Peter Crosthwaite <crosthwaitepeter@gmail.com>
2Subject: [RFT PATCH v1 1/3] net: smc91c111: guard flush_queued_packets() on
3 can_rx()
4Date: Thu, 10 Sep 2015 21:23:43 -0700
5
6Check that the core can once again receive packets before asking the
7net layer to do a flush. This will make it more convenient to flush
8packets when adding new conditions to can_receive.
9
10Add missing if braces while moving the can_receive() core code.
11
12Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
13
14Upstream-Status: Submitted
15
16---
17
18 hw/net/smc91c111.c | 30 ++++++++++++++++++++++--------
19 1 file changed, 22 insertions(+), 8 deletions(-)
20
21Index: qemu-2.4.0/hw/net/smc91c111.c
22===================================================================
23--- qemu-2.4.0.orig/hw/net/smc91c111.c
24+++ qemu-2.4.0/hw/net/smc91c111.c
25@@ -124,6 +124,24 @@ static void smc91c111_update(smc91c111_s
26 qemu_set_irq(s->irq, level);
27 }
28
29+static int smc91c111_can_receive(smc91c111_state *s)
30+{
31+ if ((s->rcr & RCR_RXEN) == 0 || (s->rcr & RCR_SOFT_RST)) {
32+ return 1;
33+ }
34+ if (s->allocated == (1 << NUM_PACKETS) - 1) {
35+ return 0;
36+ }
37+ return 1;
38+}
39+
40+static inline void smc91c111_flush_queued_packets(smc91c111_state *s)
41+{
42+ if (smc91c111_can_receive(s)) {
43+ qemu_flush_queued_packets(qemu_get_queue(s->nic));
44+ }
45+}
46+
47 /* Try to allocate a packet. Returns 0x80 on failure. */
48 static int smc91c111_allocate_packet(smc91c111_state *s)
49 {
50@@ -185,7 +203,7 @@ static void smc91c111_release_packet(smc
51 s->allocated &= ~(1 << packet);
52 if (s->tx_alloc == 0x80)
53 smc91c111_tx_alloc(s);
54- qemu_flush_queued_packets(qemu_get_queue(s->nic));
55+ smc91c111_flush_queued_packets(s);
56 }
57
58 /* Flush the TX FIFO. */
59@@ -636,15 +654,11 @@ static uint32_t smc91c111_readl(void *op
60 return val;
61 }
62
63-static int smc91c111_can_receive(NetClientState *nc)
64+static int smc91c111_can_receive_nc(NetClientState *nc)
65 {
66 smc91c111_state *s = qemu_get_nic_opaque(nc);
67
68- if ((s->rcr & RCR_RXEN) == 0 || (s->rcr & RCR_SOFT_RST))
69- return 1;
70- if (s->allocated == (1 << NUM_PACKETS) - 1)
71- return 0;
72- return 1;
73+ return smc91c111_can_receive(s);
74 }
75
76 static ssize_t smc91c111_receive(NetClientState *nc, const uint8_t *buf, size_t size)
77@@ -739,7 +753,7 @@ static const MemoryRegionOps smc91c111_m
78 static NetClientInfo net_smc91c111_info = {
79 .type = NET_CLIENT_OPTIONS_KIND_NIC,
80 .size = sizeof(NICState),
81- .can_receive = smc91c111_can_receive,
82+ .can_receive = smc91c111_can_receive_nc,
83 .receive = smc91c111_receive,
84 };
85
diff --git a/meta/recipes-devtools/qemu/qemu/smc91c111_fix2.patch b/meta/recipes-devtools/qemu/qemu/smc91c111_fix2.patch
deleted file mode 100644
index 018aed5f80..0000000000
--- a/meta/recipes-devtools/qemu/qemu/smc91c111_fix2.patch
+++ /dev/null
@@ -1,46 +0,0 @@
1From: Peter Crosthwaite <crosthwaitepeter@gmail.com>
2X-Google-Original-From: Peter Crosthwaite <crosthwaite.peter@gmail.com>
3To: qemu-devel@nongnu.org
4Cc: peter.maydell@linaro.org, richard.purdie@linuxfoundation.org
5Subject: [RFT PATCH v1 2/3] net: smc91c111: gate can_receive() on rx FIFO
6 having a slot
7Date: Thu, 10 Sep 2015 21:23:57 -0700
8
9Return false from can_receive() when the FIFO doesn't have a free RX
10slot. This fixes a bug in the current code where the allocated buffer
11is freed before the fifo pop, triggering a premature flush of queued RX
12packets. It also will handle a corner case, where the guest manually
13frees the allocated buffer before popping the rx FIFO (hence it is not
14enough to just delay the flush_queued_packets()).
15
16Reported-by: Richard Purdie <richard.purdie@linuxfoundation.org>
17Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
18
19Upstream-Status: Submitted
20---
21
22 hw/net/smc91c111.c | 4 +++-
23 1 file changed, 3 insertions(+), 1 deletion(-)
24
25Index: qemu-2.4.0/hw/net/smc91c111.c
26===================================================================
27--- qemu-2.4.0.orig/hw/net/smc91c111.c
28+++ qemu-2.4.0/hw/net/smc91c111.c
29@@ -129,7 +129,8 @@ static int smc91c111_can_receive(smc91c1
30 if ((s->rcr & RCR_RXEN) == 0 || (s->rcr & RCR_SOFT_RST)) {
31 return 1;
32 }
33- if (s->allocated == (1 << NUM_PACKETS) - 1) {
34+ if (s->allocated == (1 << NUM_PACKETS) - 1 ||
35+ s->rx_fifo_len == NUM_PACKETS) {
36 return 0;
37 }
38 return 1;
39@@ -182,6 +183,7 @@ static void smc91c111_pop_rx_fifo(smc91c
40 } else {
41 s->int_level &= ~INT_RCV;
42 }
43+ smc91c111_flush_queued_packets(s);
44 smc91c111_update(s);
45 }
46
diff --git a/meta/recipes-devtools/qemu/qemu/smc91c111_fix3.patch b/meta/recipes-devtools/qemu/qemu/smc91c111_fix3.patch
deleted file mode 100644
index 9e865f7f09..0000000000
--- a/meta/recipes-devtools/qemu/qemu/smc91c111_fix3.patch
+++ /dev/null
@@ -1,33 +0,0 @@
1From: Peter Crosthwaite <crosthwaitepeter@gmail.com>
2To: qemu-devel@nongnu.org
3Cc: peter.maydell@linaro.org, richard.purdie@linuxfoundation.org
4Subject: [RFT PATCH v1 3/3] net: smc91c111: flush packets on RCR register
5 changes
6Date: Thu, 10 Sep 2015 21:24:12 -0700
7
8The SOFT_RST or RXEN in the control register can be used as a condition
9to unblock the net layer via can_receive(). So check for possible
10flushes on RCR changes. This will drop all pending packets on soft
11reset or disable which is the functional intent of the can_receive()
12logic.
13
14Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
15
16Upstream-Status: Submitted
17---
18
19 hw/net/smc91c111.c | 1 +
20 1 file changed, 1 insertion(+)
21
22Index: qemu-2.4.0/hw/net/smc91c111.c
23===================================================================
24--- qemu-2.4.0.orig/hw/net/smc91c111.c
25+++ qemu-2.4.0/hw/net/smc91c111.c
26@@ -331,6 +331,7 @@ static void smc91c111_writeb(void *opaqu
27 if (s->rcr & RCR_SOFT_RST) {
28 smc91c111_reset(DEVICE(s));
29 }
30+ smc91c111_flush_queued_packets(s);
31 return;
32 case 10: case 11: /* RPCR */
33 /* Ignored */
diff --git a/meta/recipes-devtools/qemu/qemu/trace-remove-malloc-tracing.patch b/meta/recipes-devtools/qemu/qemu/trace-remove-malloc-tracing.patch
deleted file mode 100644
index 73d699f3f8..0000000000
--- a/meta/recipes-devtools/qemu/qemu/trace-remove-malloc-tracing.patch
+++ /dev/null
@@ -1,97 +0,0 @@
1From 98cf48f60aa4999f5b2808569a193a401a390e6a Mon Sep 17 00:00:00 2001
2From: Paolo Bonzini <pbonzini@redhat.com>
3Date: Wed, 16 Sep 2015 17:38:44 +0200
4Subject: [PATCH] trace: remove malloc tracing
5
6The malloc vtable is not supported anymore in glib, because it broke
7when constructors called g_malloc. Remove tracing of g_malloc,
8g_realloc and g_free calls.
9
10Note that, for systemtap users, glib also provides tracepoints
11glib.mem_alloc, glib.mem_free, glib.mem_realloc, glib.slice_alloc
12and glib.slice_free.
13
14Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
15Reviewed-by: Alberto Garcia <berto@igalia.com>
16Message-id: 1442417924-25831-1-git-send-email-pbonzini@redhat.com
17Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
18
19
20For Yocto:
21Upstream-Status: Backport [commit 98cf48f60a, included in 2.4.1]
22Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
23
24---
25 trace-events | 3 ---
26 vl.c | 27 ---------------------------
27 2 files changed, 0 insertions(+), 30 deletions(-)
28
29diff --git a/trace-events b/trace-events
30index 6790292..b813ae4 100644
31--- a/trace-events
32+++ b/trace-events
33@@ -603,9 +603,6 @@ scsi_request_sense(int target, int lun, int tag) "target %d lun %d tag %d"
34 vm_state_notify(int running, int reason) "running %d reason %d"
35 load_file(const char *name, const char *path) "name %s location %s"
36 runstate_set(int new_state) "new state %d"
37-g_malloc(size_t size, void *ptr) "size %zu ptr %p"
38-g_realloc(void *ptr, size_t size, void *newptr) "ptr %p size %zu newptr %p"
39-g_free(void *ptr) "ptr %p"
40 system_wakeup_request(int reason) "reason=%d"
41 qemu_system_shutdown_request(void) ""
42 qemu_system_powerdown_request(void) ""
43diff --git a/vl.c b/vl.c
44index f2bd8d2..ea9e0e6 100644
45--- a/vl.c
46+++ b/vl.c
47@@ -2703,26 +2703,6 @@ static const QEMUOption *lookup_opt(int argc, char **argv,
48 return popt;
49 }
50
51-static gpointer malloc_and_trace(gsize n_bytes)
52-{
53- void *ptr = malloc(n_bytes);
54- trace_g_malloc(n_bytes, ptr);
55- return ptr;
56-}
57-
58-static gpointer realloc_and_trace(gpointer mem, gsize n_bytes)
59-{
60- void *ptr = realloc(mem, n_bytes);
61- trace_g_realloc(mem, n_bytes, ptr);
62- return ptr;
63-}
64-
65-static void free_and_trace(gpointer mem)
66-{
67- trace_g_free(mem);
68- free(mem);
69-}
70-
71 static int machine_set_property(void *opaque,
72 const char *name, const char *value,
73 Error **errp)
74@@ -2950,11 +2930,6 @@ int main(int argc, char **argv, char **envp)
75 bool userconfig = true;
76 const char *log_mask = NULL;
77 const char *log_file = NULL;
78- GMemVTable mem_trace = {
79- .malloc = malloc_and_trace,
80- .realloc = realloc_and_trace,
81- .free = free_and_trace,
82- };
83 const char *trace_events = NULL;
84 const char *trace_file = NULL;
85 ram_addr_t maxram_size;
86@@ -2970,8 +2945,6 @@ int main(int argc, char **argv, char **envp)
87 error_set_progname(argv[0]);
88 qemu_init_exec_dir(argv[0]);
89
90- g_mem_set_vtable(&mem_trace);
91-
92 module_call_init(MODULE_INIT_QOM);
93
94 qemu_add_opts(&qemu_drive_opts);
95--
961.7.0.4
97