qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Li Zhijian <lizhijian@cn.fujitsu.com>,
	Peter Crosthwaite <crosthwaite.peter@gmail.com>,
	Richard Henderson <rth@twiddle.net>,
	Peter Maydell <peter.maydell@linaro.org>,
	Stefano Garzarella <sgarzare@redhat.com>
Subject: [Qemu-devel] [PULL 36/77] unify len and addr type for memory/address APIs
Date: Mon,  4 Feb 2019 19:35:38 +0100	[thread overview]
Message-ID: <1549305379-51117-37-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1549305379-51117-1-git-send-email-pbonzini@redhat.com>

From: Li Zhijian <lizhijian@cn.fujitsu.com>

Some address/memory APIs have different type between
'hwaddr/target_ulong addr' and 'int len'. It is very unsafe, especially
some APIs will be passed a non-int len by caller which might cause
overflow quietly.
Below is an potential overflow case:
    dma_memory_read(uint32_t len)
      -> dma_memory_rw(uint32_t len)
        -> dma_memory_rw_relaxed(uint32_t len)
          -> address_space_rw(int len) # len overflow

CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Peter Crosthwaite <crosthwaite.peter@gmail.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Peter Maydell <peter.maydell@linaro.org>
CC: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 exec.c                    | 47 +++++++++++++++++++++++------------------------
 include/exec/cpu-all.h    |  2 +-
 include/exec/cpu-common.h |  8 ++++----
 include/exec/memory.h     | 22 +++++++++++-----------
 4 files changed, 39 insertions(+), 40 deletions(-)

diff --git a/exec.c b/exec.c
index 03dd673..5180645 100644
--- a/exec.c
+++ b/exec.c
@@ -2851,10 +2851,10 @@ static const MemoryRegionOps watch_mem_ops = {
 };
 
 static MemTxResult flatview_read(FlatView *fv, hwaddr addr,
-                                      MemTxAttrs attrs, uint8_t *buf, int len);
+                                 MemTxAttrs attrs, uint8_t *buf, hwaddr len);
 static MemTxResult flatview_write(FlatView *fv, hwaddr addr, MemTxAttrs attrs,
-                                  const uint8_t *buf, int len);
-static bool flatview_access_valid(FlatView *fv, hwaddr addr, int len,
+                                  const uint8_t *buf, hwaddr len);
+static bool flatview_access_valid(FlatView *fv, hwaddr addr, hwaddr len,
                                   bool is_write, MemTxAttrs attrs);
 
 static MemTxResult subpage_read(void *opaque, hwaddr addr, uint64_t *data,
@@ -3102,10 +3102,10 @@ MemoryRegion *get_system_io(void)
 /* physical memory access (slow version, mainly for debug) */
 #if defined(CONFIG_USER_ONLY)
 int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
-                        uint8_t *buf, int len, int is_write)
+                        uint8_t *buf, target_ulong len, int is_write)
 {
-    int l, flags;
-    target_ulong page;
+    int flags;
+    target_ulong l, page;
     void * p;
 
     while (len > 0) {
@@ -3231,7 +3231,7 @@ static bool prepare_mmio_access(MemoryRegion *mr)
 static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
                                            MemTxAttrs attrs,
                                            const uint8_t *buf,
-                                           int len, hwaddr addr1,
+                                           hwaddr len, hwaddr addr1,
                                            hwaddr l, MemoryRegion *mr)
 {
     uint8_t *ptr;
@@ -3276,7 +3276,7 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
 
 /* Called from RCU critical section.  */
 static MemTxResult flatview_write(FlatView *fv, hwaddr addr, MemTxAttrs attrs,
-                                  const uint8_t *buf, int len)
+                                  const uint8_t *buf, hwaddr len)
 {
     hwaddr l;
     hwaddr addr1;
@@ -3294,7 +3294,7 @@ static MemTxResult flatview_write(FlatView *fv, hwaddr addr, MemTxAttrs attrs,
 /* Called within RCU critical section.  */
 MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
                                    MemTxAttrs attrs, uint8_t *buf,
-                                   int len, hwaddr addr1, hwaddr l,
+                                   hwaddr len, hwaddr addr1, hwaddr l,
                                    MemoryRegion *mr)
 {
     uint8_t *ptr;
@@ -3337,7 +3337,7 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
 
 /* Called from RCU critical section.  */
 static MemTxResult flatview_read(FlatView *fv, hwaddr addr,
-                                 MemTxAttrs attrs, uint8_t *buf, int len)
+                                 MemTxAttrs attrs, uint8_t *buf, hwaddr len)
 {
     hwaddr l;
     hwaddr addr1;
@@ -3350,7 +3350,7 @@ static MemTxResult flatview_read(FlatView *fv, hwaddr addr,
 }
 
 MemTxResult address_space_read_full(AddressSpace *as, hwaddr addr,
-                                    MemTxAttrs attrs, uint8_t *buf, int len)
+                                    MemTxAttrs attrs, uint8_t *buf, hwaddr len)
 {
     MemTxResult result = MEMTX_OK;
     FlatView *fv;
@@ -3367,7 +3367,7 @@ MemTxResult address_space_read_full(AddressSpace *as, hwaddr addr,
 
 MemTxResult address_space_write(AddressSpace *as, hwaddr addr,
                                 MemTxAttrs attrs,
-                                const uint8_t *buf, int len)
+                                const uint8_t *buf, hwaddr len)
 {
     MemTxResult result = MEMTX_OK;
     FlatView *fv;
@@ -3383,7 +3383,7 @@ MemTxResult address_space_write(AddressSpace *as, hwaddr addr,
 }
 
 MemTxResult address_space_rw(AddressSpace *as, hwaddr addr, MemTxAttrs attrs,
-                             uint8_t *buf, int len, bool is_write)
+                             uint8_t *buf, hwaddr len, bool is_write)
 {
     if (is_write) {
         return address_space_write(as, addr, attrs, buf, len);
@@ -3393,7 +3393,7 @@ MemTxResult address_space_rw(AddressSpace *as, hwaddr addr, MemTxAttrs attrs,
 }
 
 void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
-                            int len, int is_write)
+                            hwaddr len, int is_write)
 {
     address_space_rw(&address_space_memory, addr, MEMTXATTRS_UNSPECIFIED,
                      buf, len, is_write);
@@ -3408,7 +3408,7 @@ static inline MemTxResult address_space_write_rom_internal(AddressSpace *as,
                                                            hwaddr addr,
                                                            MemTxAttrs attrs,
                                                            const uint8_t *buf,
-                                                           int len,
+                                                           hwaddr len,
                                                            enum write_rom_type type)
 {
     hwaddr l;
@@ -3448,13 +3448,13 @@ static inline MemTxResult address_space_write_rom_internal(AddressSpace *as,
 /* used for ROM loading : can write in RAM and ROM */
 MemTxResult address_space_write_rom(AddressSpace *as, hwaddr addr,
                                     MemTxAttrs attrs,
-                                    const uint8_t *buf, int len)
+                                    const uint8_t *buf, hwaddr len)
 {
     return address_space_write_rom_internal(as, addr, attrs,
                                             buf, len, WRITE_DATA);
 }
 
-void cpu_flush_icache_range(hwaddr start, int len)
+void cpu_flush_icache_range(hwaddr start, hwaddr len)
 {
     /*
      * This function should do the same thing as an icache flush that was
@@ -3557,7 +3557,7 @@ static void cpu_notify_map_clients(void)
     qemu_mutex_unlock(&map_client_list_lock);
 }
 
-static bool flatview_access_valid(FlatView *fv, hwaddr addr, int len,
+static bool flatview_access_valid(FlatView *fv, hwaddr addr, hwaddr len,
                                   bool is_write, MemTxAttrs attrs)
 {
     MemoryRegion *mr;
@@ -3580,7 +3580,7 @@ static bool flatview_access_valid(FlatView *fv, hwaddr addr, int len,
 }
 
 bool address_space_access_valid(AddressSpace *as, hwaddr addr,
-                                int len, bool is_write,
+                                hwaddr len, bool is_write,
                                 MemTxAttrs attrs)
 {
     FlatView *fv;
@@ -3833,7 +3833,7 @@ static inline MemoryRegion *address_space_translate_cached(
  */
 void
 address_space_read_cached_slow(MemoryRegionCache *cache, hwaddr addr,
-                                   void *buf, int len)
+                                   void *buf, hwaddr len)
 {
     hwaddr addr1, l;
     MemoryRegion *mr;
@@ -3851,7 +3851,7 @@ address_space_read_cached_slow(MemoryRegionCache *cache, hwaddr addr,
  */
 void
 address_space_write_cached_slow(MemoryRegionCache *cache, hwaddr addr,
-                                    const void *buf, int len)
+                                    const void *buf, hwaddr len)
 {
     hwaddr addr1, l;
     MemoryRegion *mr;
@@ -3874,11 +3874,10 @@ address_space_write_cached_slow(MemoryRegionCache *cache, hwaddr addr,
 
 /* virtual memory access for debug (includes writing to ROM) */
 int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
-                        uint8_t *buf, int len, int is_write)
+                        uint8_t *buf, target_ulong len, int is_write)
 {
-    int l;
     hwaddr phys_addr;
-    target_ulong page;
+    target_ulong l, page;
 
     cpu_synchronize_state(cpu);
     while (len > 0) {
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
index 117d2fb..b16c9ec 100644
--- a/include/exec/cpu-all.h
+++ b/include/exec/cpu-all.h
@@ -367,7 +367,7 @@ void dump_opcount_info(FILE *f, fprintf_function cpu_fprintf);
 #endif /* !CONFIG_USER_ONLY */
 
 int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
-                        uint8_t *buf, int len, int is_write);
+                        uint8_t *buf, target_ulong len, int is_write);
 
 int cpu_exec(CPUState *cpu);
 
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index 2ad2d6d..63ec1f9 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -83,14 +83,14 @@ size_t qemu_ram_pagesize(RAMBlock *block);
 size_t qemu_ram_pagesize_largest(void);
 
 void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf,
-                            int len, int is_write);
+                            hwaddr len, int is_write);
 static inline void cpu_physical_memory_read(hwaddr addr,
-                                            void *buf, int len)
+                                            void *buf, hwaddr len)
 {
     cpu_physical_memory_rw(addr, buf, len, 0);
 }
 static inline void cpu_physical_memory_write(hwaddr addr,
-                                             const void *buf, int len)
+                                             const void *buf, hwaddr len)
 {
     cpu_physical_memory_rw(addr, (void *)buf, len, 1);
 }
@@ -111,7 +111,7 @@ bool cpu_physical_memory_is_io(hwaddr phys_addr);
  */
 void qemu_flush_coalesced_mmio_buffer(void);
 
-void cpu_flush_icache_range(hwaddr start, int len);
+void cpu_flush_icache_range(hwaddr start, hwaddr len);
 
 extern struct MemoryRegion io_mem_rom;
 extern struct MemoryRegion io_mem_notdirty;
diff --git a/include/exec/memory.h b/include/exec/memory.h
index abe9cc7..1625913 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -1791,7 +1791,7 @@ void address_space_destroy(AddressSpace *as);
  */
 MemTxResult address_space_rw(AddressSpace *as, hwaddr addr,
                              MemTxAttrs attrs, uint8_t *buf,
-                             int len, bool is_write);
+                             hwaddr len, bool is_write);
 
 /**
  * address_space_write: write to address space.
@@ -1808,7 +1808,7 @@ MemTxResult address_space_rw(AddressSpace *as, hwaddr addr,
  */
 MemTxResult address_space_write(AddressSpace *as, hwaddr addr,
                                 MemTxAttrs attrs,
-                                const uint8_t *buf, int len);
+                                const uint8_t *buf, hwaddr len);
 
 /**
  * address_space_write_rom: write to address space, including ROM.
@@ -1834,7 +1834,7 @@ MemTxResult address_space_write(AddressSpace *as, hwaddr addr,
  */
 MemTxResult address_space_write_rom(AddressSpace *as, hwaddr addr,
                                     MemTxAttrs attrs,
-                                    const uint8_t *buf, int len);
+                                    const uint8_t *buf, hwaddr len);
 
 /* address_space_ld*: load from an address space
  * address_space_st*: store to an address space
@@ -2035,7 +2035,7 @@ static inline MemoryRegion *address_space_translate(AddressSpace *as,
  * @is_write: indicates the transfer direction
  * @attrs: memory attributes
  */
-bool address_space_access_valid(AddressSpace *as, hwaddr addr, int len,
+bool address_space_access_valid(AddressSpace *as, hwaddr addr, hwaddr len,
                                 bool is_write, MemTxAttrs attrs);
 
 /* address_space_map: map a physical memory region into a host virtual address
@@ -2072,19 +2072,19 @@ void address_space_unmap(AddressSpace *as, void *buffer, hwaddr len,
 
 /* Internal functions, part of the implementation of address_space_read.  */
 MemTxResult address_space_read_full(AddressSpace *as, hwaddr addr,
-                                    MemTxAttrs attrs, uint8_t *buf, int len);
+                                    MemTxAttrs attrs, uint8_t *buf, hwaddr len);
 MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
                                    MemTxAttrs attrs, uint8_t *buf,
-                                   int len, hwaddr addr1, hwaddr l,
+                                   hwaddr len, hwaddr addr1, hwaddr l,
                                    MemoryRegion *mr);
 void *qemu_map_ram_ptr(RAMBlock *ram_block, ram_addr_t addr);
 
 /* Internal functions, part of the implementation of address_space_read_cached
  * and address_space_write_cached.  */
 void address_space_read_cached_slow(MemoryRegionCache *cache,
-                                    hwaddr addr, void *buf, int len);
+                                    hwaddr addr, void *buf, hwaddr len);
 void address_space_write_cached_slow(MemoryRegionCache *cache,
-                                     hwaddr addr, const void *buf, int len);
+                                     hwaddr addr, const void *buf, hwaddr len);
 
 static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write)
 {
@@ -2112,7 +2112,7 @@ static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write)
 static inline __attribute__((__always_inline__))
 MemTxResult address_space_read(AddressSpace *as, hwaddr addr,
                                MemTxAttrs attrs, uint8_t *buf,
-                               int len)
+                               hwaddr len)
 {
     MemTxResult result = MEMTX_OK;
     hwaddr l, addr1;
@@ -2151,7 +2151,7 @@ MemTxResult address_space_read(AddressSpace *as, hwaddr addr,
  */
 static inline void
 address_space_read_cached(MemoryRegionCache *cache, hwaddr addr,
-                          void *buf, int len)
+                          void *buf, hwaddr len)
 {
     assert(addr < cache->len && len <= cache->len - addr);
     if (likely(cache->ptr)) {
@@ -2171,7 +2171,7 @@ address_space_read_cached(MemoryRegionCache *cache, hwaddr addr,
  */
 static inline void
 address_space_write_cached(MemoryRegionCache *cache, hwaddr addr,
-                           void *buf, int len)
+                           void *buf, hwaddr len)
 {
     assert(addr < cache->len && len <= cache->len - addr);
     if (likely(cache->ptr)) {
-- 
1.8.3.1

  parent reply	other threads:[~2019-02-04 18:37 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-04 18:35 [Qemu-devel] [PULL 00/77] Misc patches for 2019-02-04 Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 01/77] vhost-user-test: use g_cond_broadcast Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 02/77] vhost-user-test: signal data_cond when s->rings changes Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 03/77] vhost-user: support cross-endian vnet headers Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 04/77] vhost-user-test: support VHOST_USER_PROTOCOL_F_CROSS_ENDIAN Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 05/77] vhost-user-test: skip if there is no memory at address 0 Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 06/77] vhost-user-test: reduce usage of global_qtest Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 07/77] tap: flush STDOUT on newline Paolo Bonzini
2019-02-05 20:24   ` Philippe Mathieu-Daudé
2019-02-04 18:35 ` [Qemu-devel] [PULL 08/77] cpu-exec: add assert_no_pages_locked() after longjmp Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 09/77] cpu-exec: reset BQL after longjmp in cpu_exec_step_atomic Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 10/77] configure: Add a proper check for openpty() in libutil Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 11/77] cpus: ignore ESRCH in qemu_cpu_kick_thread() Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 12/77] elf: Add optional function ptr to load_elf() to parse ELF notes Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 13/77] elf-ops.h: Add get_elf_note_type() Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 14/77] pvh: Add x86/HVM direct boot ABI header file Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 15/77] pvh: Boot uncompressed kernel using direct boot ABI Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 16/77] pvh: load initrd and expose it through fw_cfg Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 17/77] linuxboot_dma: remove duplicate definitions of FW_CFG Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 18/77] linuxboot_dma: move common functions in a new header Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 19/77] optionrom: add new PVH option rom Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 20/77] hw/i386/pc: use " Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 21/77] optionrom/pvh: load initrd from fw_cfg Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 22/77] hw/i386/pc: enable PVH only for machine type >= 4.0 Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 23/77] i386: remove the new CPUID 'PCONFIG' from Icelake-Server CPU model Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 24/77] i386: remove the 'INTEL_PT' CPUID bit from named CPU models Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 25/77] Revert "i386: Add CPUID bit for PCONFIG" Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 26/77] target-i386: hvf: remove MPX support Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 27/77] contrib/elf2dmp: fix elf.h including Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 28/77] contrib/elf2dmp: use GLib in ELF processing Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 29/77] contrib/elf2dmp: use GLib in PDB processing Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 30/77] contrib/elf2dmp: fix structures definitions Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 32/77] configure: enable elf2dmp build for Windows hosts Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 33/77] monitor: do not use QTAILQ_FOREACH_SAFE across critical sections Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 34/77] crypto: finish removing TABs Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 35/77] ui: vnc: " Paolo Bonzini
2019-02-04 18:35 ` Paolo Bonzini [this message]
2019-02-04 18:35 ` [Qemu-devel] [PULL 37/77] hw/core/loader.c: Read as long as possible in load_image_size() Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 38/77] i386: import & use bootparam.h Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 39/77] i386: allow to load initrd below 4 GB for recent linux Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 40/77] docker: adjust Xen repository for CentOS 7 Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 41/77] i386: hvf: Don't miss 16-bit displacement Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 42/77] gdbstub: Fix i386/x86_64 machine description and add control registers Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 43/77] scsi-generic: avoid possible out-of-bounds access to r->buf Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 44/77] Remove deprecated -enable-hax option Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 45/77] qemu-options: Remove deprecated "-virtioconsole" option Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 46/77] arm: disable CONFIG_SERIAL_ISA Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 47/77] ide: split ioport registration to a separate file Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 48/77] vfio: move conditional up to hw/Makefile.objs Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 49/77] hw/pci-host/Makefile.objs: make CONFIGS clear for PCI EXPRESS Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 50/77] build: actually use CONFIG_PAM Paolo Bonzini
2019-02-04 19:34   ` Philippe Mathieu-Daudé
2019-02-04 18:35 ` [Qemu-devel] [PULL 51/77] hw/i386/Makefile.objs: Build pc_piix* and pc_q35 boards Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 52/77] hw/arm/Makefile.objs: CONFIG_ARM_VIRT created for virt board Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 53/77] hw/m68k/Makefile.objs: Conditionally build boards Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 54/77] hw/microblaze/Makefile.objs: Create configs for petalogix and xilinx boards Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 55/77] hw/mips/Makefile.objs: Create CONFIG_* for r4k, malta, mipssim boards Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 56/77] hw/ppc/Makefile.objs: Build all boards conditinally with CONFIG_* Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 57/77] hw/sh4/Makefile.objs: New CONFIG_* varibales created for sh4 boards and device Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 58/77] hw/s390/Makefile.objs: Create new CONFIG_* variables for s390x boards and devices Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 59/77] hw/sparc/Makefile.objs: CONFIG_* for sun4m and leon3 created Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 60/77] hw/lm32/Makefile.objs: Conditionally build lm32 and milkmyst Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 61/77] hw/xtensa/Makefile.objs: Build xtensa_sim and xtensa_fpga conditionally Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 62/77] hw/nios2/Makefile.objs: Conditionally build nios2 Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 63/77] hw/riscv/Makefile.objs: Create CONFIG_* for riscv boards Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 64/77] hw/sparc64/Makefile.objs: Create CONFIG_* for sparc64 Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 65/77] hw/alpha/Makefile.objs: Create CONFIG_* for alpha Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 66/77] hw/cris/Makefile.objs: Create CONFIG_* for cris Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 67/77] hw/hppa/Makefile.objs: Create CONFIG_* for hppa Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 68/77] hw/moxie/Makefile.objs: Conditionally build moxie Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 69/77] hw/openrisc/Makefile.objs: Create CONFIG_* for openrisc Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 70/77] hw/tricore/Makefile.objs: Create CONFIG_* for tricore Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 71/77] hw/i2c/Makefile.objs: Create new CONFIG_* variables for EEPROM and ACPI controller Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 72/77] hw/vfio/Makefile.objs: Create new CONFIG_* variables for VFIO core and PCI Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 73/77] i386: hvf: Fix smp boot hangs Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 74/77] pc: Use hotplug_handler_(plug|unplug|unplug_request) Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 75/77] scsi-disk: Convert from DPRINTF() macro to trace events Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 77/77] queue: fix QTAILQ_FOREACH_REVERSE_SAFE Paolo Bonzini
2019-02-05  9:35 ` [Qemu-devel] [PULL 00/77] Misc patches for 2019-02-04 Peter Maydell
2019-02-05 11:27   ` Paolo Bonzini
2019-02-05 12:45     ` Peter Maydell
2019-02-05 14:34       ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1549305379-51117-37-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=crosthwaite.peter@gmail.com \
    --cc=lizhijian@cn.fujitsu.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=sgarzare@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).