qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020
@ 2020-06-27 19:51 Aleksandar Markovic
  2020-06-27 19:51 ` [PULL 1/6] hw/mips: Implement the kvm_type() hook in MachineClass Aleksandar Markovic
                   ` (6 more replies)
  0 siblings, 7 replies; 15+ messages in thread
From: Aleksandar Markovic @ 2020-06-27 19:51 UTC (permalink / raw)
  To: qemu-devel, peter.maydell; +Cc: aleksandar.qemu.devel

The following changes since commit 553cf5d7c47bee05a3dec9461c1f8430316d516b:

  Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20200626' into staging (2020-06-26 18:22:36 +0100)

are available in the git repository at:

  https://github.com/AMarkovic/qemu tags/mips-gsoc-queue-jun-27-2020

for you to fetch changes up to 53fb8bfb93487c0fd88b0babb9a52ec8d67cff7b:

  MAINTAINERS: Add 'Performance Tools and Tests' subsection (2020-06-27 20:15:07 +0200)

----------------------------------------------------------------

MIPS + TCG Continuous Benchmarking queue for June 27th, 2020

   Highlights:

     - add two additional elements of Loongson-3 support
     - add first two Python scripts as a part of a GSoC project

   Notes:

     - several checkpatch warnings on updating MAINTAINERS should be ignored

----------------------------------------------------------------

Ahmed Karaman (2):
  scripts/performance: Add topN_perf.py script
  scripts/performance: Add topN_callgrind.py script

Aleksandar Markovic (1):
  MAINTAINERS: Add 'Performance Tools and Tests' subsection

Huacai Chen (3):
  hw/mips: Implement the kvm_type() hook in MachineClass
  hw/intc: Add Loongson LIOINTC support
  MAINTAINERS: Add Loongson-3 maintainer and reviewer

 target/mips/kvm_mips.h                |  11 ++
 hw/intc/loongson_liointc.c            | 242 ++++++++++++++++++++++++++++++++++
 target/mips/kvm.c                     |  26 ++++
 MAINTAINERS                           |  13 ++
 hw/intc/Kconfig                       |   3 +
 hw/intc/Makefile.objs                 |   1 +
 scripts/performance/topN_callgrind.py | 140 ++++++++++++++++++++
 scripts/performance/topN_perf.py      | 149 +++++++++++++++++++++
 8 files changed, 585 insertions(+)
 create mode 100644 hw/intc/loongson_liointc.c
 create mode 100755 scripts/performance/topN_callgrind.py
 create mode 100755 scripts/performance/topN_perf.py

-- 
2.7.4



^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PULL 1/6] hw/mips: Implement the kvm_type() hook in MachineClass
  2020-06-27 19:51 [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Aleksandar Markovic
@ 2020-06-27 19:51 ` Aleksandar Markovic
  2020-06-27 19:51 ` [PULL 2/6] hw/intc: Add Loongson LIOINTC support Aleksandar Markovic
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 15+ messages in thread
From: Aleksandar Markovic @ 2020-06-27 19:51 UTC (permalink / raw)
  To: qemu-devel, peter.maydell; +Cc: aleksandar.qemu.devel

From: Huacai Chen <zltjiangshi@gmail.com>

MIPS has two types of KVM: TE & VZ, and TE is the default type. Now we
can't create a VZ guest in QEMU because it lacks the kvm_type() hook in
MachineClass. This patch add the the kvm_type() hook to support both of
the two types.

[AM: Added "if defined" guards.]

Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Signed-off-by: Huacai Chen <chenhc@lemote.com>
Co-developed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Message-Id: <1592995531-32600-2-git-send-email-chenhc@lemote.com>
---
 target/mips/kvm_mips.h | 11 +++++++++++
 target/mips/kvm.c      | 26 ++++++++++++++++++++++++++
 2 files changed, 37 insertions(+)

diff --git a/target/mips/kvm_mips.h b/target/mips/kvm_mips.h
index 1e40147..171d53d 100644
--- a/target/mips/kvm_mips.h
+++ b/target/mips/kvm_mips.h
@@ -12,6 +12,8 @@
 #ifndef KVM_MIPS_H
 #define KVM_MIPS_H
 
+#include "cpu.h"
+
 /**
  * kvm_mips_reset_vcpu:
  * @cpu: MIPSCPU
@@ -23,4 +25,13 @@ void kvm_mips_reset_vcpu(MIPSCPU *cpu);
 int kvm_mips_set_interrupt(MIPSCPU *cpu, int irq, int level);
 int kvm_mips_set_ipi_interrupt(MIPSCPU *cpu, int irq, int level);
 
+#ifdef CONFIG_KVM
+int mips_kvm_type(MachineState *machine, const char *vm_type);
+#else
+static inline int mips_kvm_type(MachineState *machine, const char *vm_type)
+{
+    return 0;
+}
+#endif
+
 #endif /* KVM_MIPS_H */
diff --git a/target/mips/kvm.c b/target/mips/kvm.c
index 96cfa10..72637a1 100644
--- a/target/mips/kvm.c
+++ b/target/mips/kvm.c
@@ -21,10 +21,12 @@
 #include "qemu/main-loop.h"
 #include "qemu/timer.h"
 #include "sysemu/kvm.h"
+#include "sysemu/kvm_int.h"
 #include "sysemu/runstate.h"
 #include "sysemu/cpus.h"
 #include "kvm_mips.h"
 #include "exec/memattrs.h"
+#include "hw/boards.h"
 
 #define DEBUG_KVM 0
 
@@ -1270,3 +1272,27 @@ int kvm_arch_msi_data_to_gsi(uint32_t data)
 {
     abort();
 }
+
+int mips_kvm_type(MachineState *machine, const char *vm_type)
+{
+#if defined(KVM_CAP_MIPS_VZ) || defined(KVM_CAP_MIPS_TE)
+    int r;
+    KVMState *s = KVM_STATE(machine->accelerator);
+#endif
+
+#if defined(KVM_CAP_MIPS_VZ)
+    r = kvm_check_extension(s, KVM_CAP_MIPS_VZ);
+    if (r > 0) {
+        return KVM_VM_MIPS_VZ;
+    }
+#endif
+
+#if defined(KVM_CAP_MIPS_TE)
+    r = kvm_check_extension(s, KVM_CAP_MIPS_TE);
+    if (r > 0) {
+        return KVM_VM_MIPS_TE;
+    }
+#endif
+
+    return -1;
+}
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PULL 2/6] hw/intc: Add Loongson LIOINTC support
  2020-06-27 19:51 [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Aleksandar Markovic
  2020-06-27 19:51 ` [PULL 1/6] hw/mips: Implement the kvm_type() hook in MachineClass Aleksandar Markovic
@ 2020-06-27 19:51 ` Aleksandar Markovic
  2020-06-27 19:51 ` [PULL 3/6] MAINTAINERS: Add Loongson-3 maintainer and reviewer Aleksandar Markovic
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 15+ messages in thread
From: Aleksandar Markovic @ 2020-06-27 19:51 UTC (permalink / raw)
  To: qemu-devel, peter.maydell; +Cc: aleksandar.qemu.devel

From: Huacai Chen <zltjiangshi@gmail.com>

Loongson-3 has an integrated liointc (Local I/O Interrupt Controller).
It is similar to Goldfish interrupt controller, but more powerful (e.g.,
it can route external interrupt to multi-cores).

Documents about Loongson-3's liointc:
1, https://wiki.godson.ac.cn/ip_block:liointc;
2, The "I/O中断" section of Loongson-3's user mannual, part 1.

Signed-off-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Message-Id: <1592995531-32600-3-git-send-email-chenhc@lemote.com>
---
 hw/intc/loongson_liointc.c | 242 +++++++++++++++++++++++++++++++++++++++++++++
 hw/intc/Kconfig            |   3 +
 hw/intc/Makefile.objs      |   1 +
 3 files changed, 246 insertions(+)
 create mode 100644 hw/intc/loongson_liointc.c

diff --git a/hw/intc/loongson_liointc.c b/hw/intc/loongson_liointc.c
new file mode 100644
index 0000000..23ca51c
--- /dev/null
+++ b/hw/intc/loongson_liointc.c
@@ -0,0 +1,242 @@
+/*
+ * QEMU Loongson Local I/O interrupt controler.
+ *
+ * Copyright (c) 2020 Jiaxun Yang <jiaxun.yang@flygoat.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "qemu/osdep.h"
+#include "hw/sysbus.h"
+#include "qemu/module.h"
+#include "hw/irq.h"
+#include "hw/qdev-properties.h"
+
+#define D(x)
+
+#define NUM_IRQS                32
+
+#define NUM_CORES               4
+#define NUM_IPS                 4
+#define NUM_PARENTS             (NUM_CORES * NUM_IPS)
+#define PARENT_COREx_IPy(x, y)  (NUM_IPS * x + y)
+
+#define R_MAPPER_START          0x0
+#define R_MAPPER_END            0x20
+#define R_ISR                   R_MAPPER_END
+#define R_IEN                   0x24
+#define R_IEN_SET               0x28
+#define R_IEN_CLR               0x2c
+#define R_PERCORE_ISR(x)        (0x40 + 0x8 * x)
+#define R_END                   0x64
+
+#define TYPE_LOONGSON_LIOINTC "loongson.liointc"
+#define LOONGSON_LIOINTC(obj) \
+        OBJECT_CHECK(struct loongson_liointc, (obj), TYPE_LOONGSON_LIOINTC)
+
+struct loongson_liointc {
+    SysBusDevice parent_obj;
+
+    MemoryRegion mmio;
+    qemu_irq parent_irq[NUM_PARENTS];
+
+    uint8_t mapper[NUM_IRQS]; /* 0:3 for core, 4:7 for IP */
+    uint32_t isr;
+    uint32_t ien;
+    uint32_t per_core_isr[NUM_CORES];
+
+    /* state of the interrupt input pins */
+    uint32_t pin_state;
+    bool parent_state[NUM_PARENTS];
+};
+
+static void update_irq(struct loongson_liointc *p)
+{
+    uint32_t irq, core, ip;
+    uint32_t per_ip_isr[NUM_IPS] = {0};
+
+    /* level triggered interrupt */
+    p->isr = p->pin_state;
+
+    /* Clear disabled IRQs */
+    p->isr &= p->ien;
+
+    /* Clear per_core_isr */
+    for (core = 0; core < NUM_CORES; core++) {
+        p->per_core_isr[core] = 0;
+    }
+
+    /* Update per_core_isr and per_ip_isr */
+    for (irq = 0; irq < NUM_IRQS; irq++) {
+        if (!(p->isr & (1 << irq))) {
+            continue;
+        }
+
+        for (core = 0; core < NUM_CORES; core++) {
+            if ((p->mapper[irq] & (1 << core))) {
+                p->per_core_isr[core] |= (1 << irq);
+            }
+        }
+
+        for (ip = 0; ip < NUM_IPS; ip++) {
+            if ((p->mapper[irq] & (1 << (ip + 4)))) {
+                per_ip_isr[ip] |= (1 << irq);
+            }
+        }
+    }
+
+    /* Emit IRQ to parent! */
+    for (core = 0; core < NUM_CORES; core++) {
+        for (ip = 0; ip < NUM_IPS; ip++) {
+            int parent = PARENT_COREx_IPy(core, ip);
+            if (p->parent_state[parent] !=
+                (!!p->per_core_isr[core] && !!per_ip_isr[ip])) {
+                p->parent_state[parent] = !p->parent_state[parent];
+                qemu_set_irq(p->parent_irq[parent], p->parent_state[parent]);
+            }
+        }
+    }
+}
+
+static uint64_t
+liointc_read(void *opaque, hwaddr addr, unsigned int size)
+{
+    struct loongson_liointc *p = opaque;
+    uint32_t r = 0;
+
+    /* Mapper is 1 byte */
+    if (size == 1 && addr < R_MAPPER_END) {
+        r = p->mapper[addr];
+        goto out;
+    }
+
+    /* Rest is 4 byte */
+    if (size != 4 || (addr % 4)) {
+        goto out;
+    }
+
+    if (addr >= R_PERCORE_ISR(0) &&
+        addr < R_PERCORE_ISR(NUM_CORES)) {
+        int core = (addr - R_PERCORE_ISR(0)) / 4;
+        r = p->per_core_isr[core];
+        goto out;
+    }
+
+    switch (addr) {
+    case R_ISR:
+        r = p->isr;
+        break;
+    case R_IEN:
+        r = p->ien;
+        break;
+    default:
+        break;
+    }
+
+out:
+    D(qemu_log("%s: size=%d addr=%lx val=%x\n", __func__, size, addr, r));
+    return r;
+}
+
+static void
+liointc_write(void *opaque, hwaddr addr,
+          uint64_t val64, unsigned int size)
+{
+    struct loongson_liointc *p = opaque;
+    uint32_t value = val64;
+
+    D(qemu_log("%s: size=%d, addr=%lx val=%x\n", __func__, size, addr, value));
+
+    /* Mapper is 1 byte */
+    if (size == 1 && addr < R_MAPPER_END) {
+        p->mapper[addr] = value;
+        goto out;
+    }
+
+    /* Rest is 4 byte */
+    if (size != 4 || (addr % 4)) {
+        goto out;
+    }
+
+    if (addr >= R_PERCORE_ISR(0) &&
+        addr < R_PERCORE_ISR(NUM_CORES)) {
+        int core = (addr - R_PERCORE_ISR(0)) / 4;
+        p->per_core_isr[core] = value;
+        goto out;
+    }
+
+    switch (addr) {
+    case R_IEN_SET:
+        p->ien |= value;
+        break;
+    case R_IEN_CLR:
+        p->ien &= ~value;
+        break;
+    default:
+        break;
+    }
+
+out:
+    update_irq(p);
+}
+
+static const MemoryRegionOps pic_ops = {
+    .read = liointc_read,
+    .write = liointc_write,
+    .endianness = DEVICE_NATIVE_ENDIAN,
+    .valid = {
+        .min_access_size = 1,
+        .max_access_size = 4
+    }
+};
+
+static void irq_handler(void *opaque, int irq, int level)
+{
+    struct loongson_liointc *p = opaque;
+
+    p->pin_state &= ~(1 << irq);
+    p->pin_state |= level << irq;
+    update_irq(p);
+}
+
+static void loongson_liointc_init(Object *obj)
+{
+    struct loongson_liointc *p = LOONGSON_LIOINTC(obj);
+    int i;
+
+    qdev_init_gpio_in(DEVICE(obj), irq_handler, 32);
+
+    for (i = 0; i < NUM_PARENTS; i++) {
+        sysbus_init_irq(SYS_BUS_DEVICE(obj), &p->parent_irq[i]);
+    }
+
+    memory_region_init_io(&p->mmio, obj, &pic_ops, p,
+                         "loongson.liointc", R_END);
+    sysbus_init_mmio(SYS_BUS_DEVICE(obj), &p->mmio);
+}
+
+static const TypeInfo loongson_liointc_info = {
+    .name          = TYPE_LOONGSON_LIOINTC,
+    .parent        = TYPE_SYS_BUS_DEVICE,
+    .instance_size = sizeof(struct loongson_liointc),
+    .instance_init = loongson_liointc_init,
+};
+
+static void loongson_liointc_register_types(void)
+{
+    type_register_static(&loongson_liointc_info);
+}
+
+type_init(loongson_liointc_register_types)
diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig
index f562342..2ae1e89 100644
--- a/hw/intc/Kconfig
+++ b/hw/intc/Kconfig
@@ -64,3 +64,6 @@ config OMPIC
 
 config RX_ICU
     bool
+
+config LOONGSON_LIOINTC
+    bool
diff --git a/hw/intc/Makefile.objs b/hw/intc/Makefile.objs
index a420263..3ac2b40 100644
--- a/hw/intc/Makefile.objs
+++ b/hw/intc/Makefile.objs
@@ -51,3 +51,4 @@ obj-$(CONFIG_MIPS_CPS) += mips_gic.o
 obj-$(CONFIG_NIOS2) += nios2_iic.o
 obj-$(CONFIG_OMPIC) += ompic.o
 obj-$(CONFIG_IBEX) += ibex_plic.o
+obj-$(CONFIG_LOONGSON_LIOINTC) += loongson_liointc.o
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PULL 3/6] MAINTAINERS: Add Loongson-3 maintainer and reviewer
  2020-06-27 19:51 [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Aleksandar Markovic
  2020-06-27 19:51 ` [PULL 1/6] hw/mips: Implement the kvm_type() hook in MachineClass Aleksandar Markovic
  2020-06-27 19:51 ` [PULL 2/6] hw/intc: Add Loongson LIOINTC support Aleksandar Markovic
@ 2020-06-27 19:51 ` Aleksandar Markovic
  2020-06-29  8:09   ` Philippe Mathieu-Daudé
  2020-06-27 19:51 ` [PULL 4/6] scripts/performance: Add topN_perf.py script Aleksandar Markovic
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Aleksandar Markovic @ 2020-06-27 19:51 UTC (permalink / raw)
  To: qemu-devel, peter.maydell; +Cc: aleksandar.qemu.devel

From: Huacai Chen <zltjiangshi@gmail.com>

Add myself as the maintainer for Loongson-3 virtual platforms, and
also add Jiaxun Yang as the reviewer.

Signed-off-by: Huacai Chen <chenhc@lemote.com>
Co-developed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Message-Id: <1592995531-32600-5-git-send-email-chenhc@lemote.com>
---
 MAINTAINERS | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 1b40446..fe925ea 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1096,6 +1096,13 @@ F: hw/isa/vt82c686.c
 F: hw/pci-host/bonito.c
 F: include/hw/isa/vt82c686.h
 
+Loongson-3 Virtual Platform
+M: Huacai Chen <chenhc@lemote.com>
+R: Jiaxun Yang <jiaxun.yang@flygoat.com>
+S: Maintained
+F: hw/mips/loongson3_virt.c
+F: hw/intc/loongson_liointc.c
+
 Boston
 M: Paul Burton <pburton@wavecomp.com>
 R: Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PULL 4/6] scripts/performance: Add topN_perf.py script
  2020-06-27 19:51 [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Aleksandar Markovic
                   ` (2 preceding siblings ...)
  2020-06-27 19:51 ` [PULL 3/6] MAINTAINERS: Add Loongson-3 maintainer and reviewer Aleksandar Markovic
@ 2020-06-27 19:51 ` Aleksandar Markovic
  2020-06-27 19:51 ` [PULL 5/6] scripts/performance: Add topN_callgrind.py script Aleksandar Markovic
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 15+ messages in thread
From: Aleksandar Markovic @ 2020-06-27 19:51 UTC (permalink / raw)
  To: qemu-devel, peter.maydell; +Cc: aleksandar.qemu.devel

From: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>

Syntax:
topN_perf.py [-h] [-n] <number of displayed top functions>  -- \
                 <qemu executable> [<qemu executable options>] \
                 <target executable> [<target execurable options>]

[-h] - Print the script arguments help message.
[-n] - Specify the number of top functions to print.
     - If this flag is not specified, the tool defaults to 25.

Example of usage:
topN_perf.py -n 20 -- qemu-arm coulomb_double-arm

Example Output:
 No.  Percentage  Name                       Invoked by
----  ----------  -------------------------  -------------------------
   1      16.25%  float64_mul                qemu-x86_64
   2      12.01%  float64_sub                qemu-x86_64
   3      11.99%  float64_add                qemu-x86_64
   4       5.69%  helper_mulsd               qemu-x86_64
   5       4.68%  helper_addsd               qemu-x86_64
   6       4.43%  helper_lookup_tb_ptr       qemu-x86_64
   7       4.28%  helper_subsd               qemu-x86_64
   8       2.71%  f64_compare                qemu-x86_64
   9       2.71%  helper_ucomisd             qemu-x86_64
  10       1.04%  helper_pand_xmm            qemu-x86_64
  11       0.71%  float64_div                qemu-x86_64
  12       0.63%  helper_pxor_xmm            qemu-x86_64
  13       0.50%  0x00007f7b7004ef95         [JIT] tid 491
  14       0.50%  0x00007f7b70044e83         [JIT] tid 491
  15       0.36%  helper_por_xmm             qemu-x86_64
  16       0.32%  helper_cc_compute_all      qemu-x86_64
  17       0.30%  0x00007f7b700433f0         [JIT] tid 491
  18       0.30%  float64_compare_quiet      qemu-x86_64
  19       0.27%  soft_f64_addsub            qemu-x86_64
  20       0.26%  round_to_int               qemu-x86_64

Signed-off-by: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>
Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Message-Id: <20200626164546.22102-2-ahmedkhaledkaraman@gmail.com>
---
 scripts/performance/topN_perf.py | 149 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 149 insertions(+)
 create mode 100755 scripts/performance/topN_perf.py

diff --git a/scripts/performance/topN_perf.py b/scripts/performance/topN_perf.py
new file mode 100755
index 0000000..07be195
--- /dev/null
+++ b/scripts/performance/topN_perf.py
@@ -0,0 +1,149 @@
+#!/usr/bin/env python3
+
+#  Print the top N most executed functions in QEMU using perf.
+#  Syntax:
+#  topN_perf.py [-h] [-n] <number of displayed top functions>  -- \
+#           <qemu executable> [<qemu executable options>] \
+#           <target executable> [<target execurable options>]
+#
+#  [-h] - Print the script arguments help message.
+#  [-n] - Specify the number of top functions to print.
+#       - If this flag is not specified, the tool defaults to 25.
+#
+#  Example of usage:
+#  topN_perf.py -n 20 -- qemu-arm coulomb_double-arm
+#
+#  This file is a part of the project "TCG Continuous Benchmarking".
+#
+#  Copyright (C) 2020  Ahmed Karaman <ahmedkhaledkaraman@gmail.com>
+#  Copyright (C) 2020  Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
+#
+#  This program is free software: you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation, either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+import argparse
+import os
+import subprocess
+import sys
+
+
+# Parse the command line arguments
+parser = argparse.ArgumentParser(
+    usage='topN_perf.py [-h] [-n] <number of displayed top functions >  -- '
+          '<qemu executable> [<qemu executable options>] '
+          '<target executable> [<target executable options>]')
+
+parser.add_argument('-n', dest='top', type=int, default=25,
+                    help='Specify the number of top functions to print.')
+
+parser.add_argument('command', type=str, nargs='+', help=argparse.SUPPRESS)
+
+args = parser.parse_args()
+
+# Extract the needed variables from the args
+command = args.command
+top = args.top
+
+# Insure that perf is installed
+check_perf_presence = subprocess.run(["which", "perf"],
+                                     stdout=subprocess.DEVNULL)
+if check_perf_presence.returncode:
+    sys.exit("Please install perf before running the script!")
+
+# Insure user has previllage to run perf
+check_perf_executability = subprocess.run(["perf", "stat", "ls", "/"],
+                                          stdout=subprocess.DEVNULL,
+                                          stderr=subprocess.DEVNULL)
+if check_perf_executability.returncode:
+    sys.exit(
+"""
+Error:
+You may not have permission to collect stats.
+
+Consider tweaking /proc/sys/kernel/perf_event_paranoid,
+which controls use of the performance events system by
+unprivileged users (without CAP_SYS_ADMIN).
+
+  -1: Allow use of (almost) all events by all users
+      Ignore mlock limit after perf_event_mlock_kb without CAP_IPC_LOCK
+   0: Disallow ftrace function tracepoint by users without CAP_SYS_ADMIN
+      Disallow raw tracepoint access by users without CAP_SYS_ADMIN
+   1: Disallow CPU event access by users without CAP_SYS_ADMIN
+   2: Disallow kernel profiling by users without CAP_SYS_ADMIN
+
+To make this setting permanent, edit /etc/sysctl.conf too, e.g.:
+   kernel.perf_event_paranoid = -1
+
+* Alternatively, you can run this script under sudo privileges.
+"""
+)
+
+# Run perf record
+perf_record = subprocess.run((["perf", "record", "--output=/tmp/perf.data"] +
+                              command),
+                             stdout=subprocess.DEVNULL,
+                             stderr=subprocess.PIPE)
+if perf_record.returncode:
+    os.unlink('/tmp/perf.data')
+    sys.exit(perf_record.stderr.decode("utf-8"))
+
+# Save perf report output to /tmp/perf_report.out
+with open("/tmp/perf_report.out", "w") as output:
+    perf_report = subprocess.run(
+        ["perf", "report", "--input=/tmp/perf.data", "--stdio"],
+        stdout=output,
+        stderr=subprocess.PIPE)
+    if perf_report.returncode:
+        os.unlink('/tmp/perf.data')
+        output.close()
+        os.unlink('/tmp/perf_report.out')
+        sys.exit(perf_report.stderr.decode("utf-8"))
+
+# Read the reported data to functions[]
+functions = []
+with open("/tmp/perf_report.out", "r") as data:
+    # Only read lines that are not comments (comments start with #)
+    # Only read lines that are not empty
+    functions = [line for line in data.readlines() if line and line[0]
+                 != '#' and line[0] != "\n"]
+
+# Limit the number of top functions to "top"
+number_of_top_functions = top if len(functions) > top else len(functions)
+
+# Store the data of the top functions in top_functions[]
+top_functions = functions[:number_of_top_functions]
+
+# Print table header
+print('{:>4}  {:>10}  {:<30}  {}\n{}  {}  {}  {}'.format('No.',
+                                                         'Percentage',
+                                                         'Name',
+                                                         'Invoked by',
+                                                         '-' * 4,
+                                                         '-' * 10,
+                                                         '-' * 30,
+                                                         '-' * 25))
+
+# Print top N functions
+for (index, function) in enumerate(top_functions, start=1):
+    function_data = function.split()
+    function_percentage = function_data[0]
+    function_name = function_data[-1]
+    function_invoker = ' '.join(function_data[2:-2])
+    print('{:>4}  {:>10}  {:<30}  {}'.format(index,
+                                             function_percentage,
+                                             function_name,
+                                             function_invoker))
+
+# Remove intermediate files
+os.unlink('/tmp/perf.data')
+os.unlink('/tmp/perf_report.out')
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PULL 5/6] scripts/performance: Add topN_callgrind.py script
  2020-06-27 19:51 [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Aleksandar Markovic
                   ` (3 preceding siblings ...)
  2020-06-27 19:51 ` [PULL 4/6] scripts/performance: Add topN_perf.py script Aleksandar Markovic
@ 2020-06-27 19:51 ` Aleksandar Markovic
  2020-06-27 19:51 ` [PULL 6/6] MAINTAINERS: Add 'Performance Tools and Tests' subsection Aleksandar Markovic
  2020-06-28 13:38 ` [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Peter Maydell
  6 siblings, 0 replies; 15+ messages in thread
From: Aleksandar Markovic @ 2020-06-27 19:51 UTC (permalink / raw)
  To: qemu-devel, peter.maydell; +Cc: aleksandar.qemu.devel

From: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>

Python script that prints the top N most executed functions in QEMU
using callgrind.

Syntax:
topN_callgrind.py [-h] [-n] <number of displayed top functions>  -- \
                      <qemu executable> [<qemu executable options>] \
                      <target executable> [<target execurable options>]

[-h] - Print the script arguments help message.
[-n] - Specify the number of top functions to print.
     - If this flag is not specified, the tool defaults to 25.

Example of usage:
topN_callgrind.py -n 20 -- qemu-arm coulomb_double-arm

Example Output:
No.  Percentage Function Name         Source File
----  --------- ------------------    ------------------------------
   1    24.577% 0x00000000082db000    ???
   2    20.467% float64_mul           <qemu>/fpu/softfloat.c
   3    14.720% float64_sub           <qemu>/fpu/softfloat.c
   4    13.864% float64_add           <qemu>/fpu/softfloat.c
   5     4.876% helper_mulsd          <qemu>/target/i386/ops_sse.h
   6     3.767% helper_subsd          <qemu>/target/i386/ops_sse.h
   7     3.549% helper_addsd          <qemu>/target/i386/ops_sse.h
   8     2.185% helper_ucomisd        <qemu>/target/i386/ops_sse.h
   9     1.667% helper_lookup_tb_ptr  <qemu>/include/exec/tb-lookup.h
  10     1.662% f64_compare           <qemu>/fpu/softfloat.c
  11     1.509% helper_lookup_tb_ptr  <qemu>/accel/tcg/tcg-runtime.c
  12     0.635% helper_lookup_tb_ptr  <qemu>/include/exec/exec-all.h
  13     0.616% float64_div           <qemu>/fpu/softfloat.c
  14     0.502% helper_pand_xmm       <qemu>/target/i386/ops_sse.h
  15     0.502% float64_mul           <qemu>/include/fpu/softfloat.h
  16     0.476% helper_lookup_tb_ptr  <qemu>/target/i386/cpu.h
  17     0.437% float64_compare_quiet <qemu>/fpu/softfloat.c
  18     0.414% helper_pxor_xmm       <qemu>/target/i386/ops_sse.h
  19     0.353% round_to_int          <qemu>/fpu/softfloat.c
  20     0.347% helper_cc_compute_all <qemu>/target/i386/cc_helper.c

Signed-off-by: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>
Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Message-Id: <20200626164546.22102-3-ahmedkhaledkaraman@gmail.com>
---
 scripts/performance/topN_callgrind.py | 140 ++++++++++++++++++++++++++++++++++
 1 file changed, 140 insertions(+)
 create mode 100755 scripts/performance/topN_callgrind.py

diff --git a/scripts/performance/topN_callgrind.py b/scripts/performance/topN_callgrind.py
new file mode 100755
index 0000000..67c5919
--- /dev/null
+++ b/scripts/performance/topN_callgrind.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python3
+
+#  Print the top N most executed functions in QEMU using callgrind.
+#  Syntax:
+#  topN_callgrind.py [-h] [-n] <number of displayed top functions>  -- \
+#           <qemu executable> [<qemu executable options>] \
+#           <target executable> [<target execurable options>]
+#
+#  [-h] - Print the script arguments help message.
+#  [-n] - Specify the number of top functions to print.
+#       - If this flag is not specified, the tool defaults to 25.
+#
+#  Example of usage:
+#  topN_callgrind.py -n 20 -- qemu-arm coulomb_double-arm
+#
+#  This file is a part of the project "TCG Continuous Benchmarking".
+#
+#  Copyright (C) 2020  Ahmed Karaman <ahmedkhaledkaraman@gmail.com>
+#  Copyright (C) 2020  Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
+#
+#  This program is free software: you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation, either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+import argparse
+import os
+import subprocess
+import sys
+
+
+# Parse the command line arguments
+parser = argparse.ArgumentParser(
+    usage='topN_callgrind.py [-h] [-n] <number of displayed top functions>  -- '
+          '<qemu executable> [<qemu executable options>] '
+          '<target executable> [<target executable options>]')
+
+parser.add_argument('-n', dest='top', type=int, default=25,
+                    help='Specify the number of top functions to print.')
+
+parser.add_argument('command', type=str, nargs='+', help=argparse.SUPPRESS)
+
+args = parser.parse_args()
+
+# Extract the needed variables from the args
+command = args.command
+top = args.top
+
+# Insure that valgrind is installed
+check_valgrind_presence = subprocess.run(["which", "valgrind"],
+                                         stdout=subprocess.DEVNULL)
+if check_valgrind_presence.returncode:
+    sys.exit("Please install valgrind before running the script!")
+
+# Run callgrind
+callgrind = subprocess.run((
+    ["valgrind", "--tool=callgrind", "--callgrind-out-file=/tmp/callgrind.data"]
+    + command),
+    stdout=subprocess.DEVNULL,
+    stderr=subprocess.PIPE)
+if callgrind.returncode:
+    sys.exit(callgrind.stderr.decode("utf-8"))
+
+# Save callgrind_annotate output to /tmp/callgrind_annotate.out
+with open("/tmp/callgrind_annotate.out", "w") as output:
+    callgrind_annotate = subprocess.run(["callgrind_annotate",
+                                         "/tmp/callgrind.data"],
+                                        stdout=output,
+                                        stderr=subprocess.PIPE)
+    if callgrind_annotate.returncode:
+        os.unlink('/tmp/callgrind.data')
+        output.close()
+        os.unlink('/tmp/callgrind_annotate.out')
+        sys.exit(callgrind_annotate.stderr.decode("utf-8"))
+
+# Read the callgrind_annotate output to callgrind_data[]
+callgrind_data = []
+with open('/tmp/callgrind_annotate.out', 'r') as data:
+    callgrind_data = data.readlines()
+
+# Line number with the total number of instructions
+total_instructions_line_number = 20
+
+# Get the total number of instructions
+total_instructions_line_data = callgrind_data[total_instructions_line_number]
+total_number_of_instructions = total_instructions_line_data.split(' ')[0]
+total_number_of_instructions = int(
+    total_number_of_instructions.replace(',', ''))
+
+# Line number with the top function
+first_func_line = 25
+
+# Number of functions recorded by callgrind, last two lines are always empty
+number_of_functions = len(callgrind_data) - first_func_line - 2
+
+# Limit the number of top functions to "top"
+number_of_top_functions = (top if number_of_functions >
+                           top else number_of_functions)
+
+# Store the data of the top functions in top_functions[]
+top_functions = callgrind_data[first_func_line:
+                               first_func_line + number_of_top_functions]
+
+# Print table header
+print('{:>4}  {:>10}  {:<30}  {}\n{}  {}  {}  {}'.format('No.',
+                                                         'Percentage',
+                                                         'Function Name',
+                                                         'Source File',
+                                                         '-' * 4,
+                                                         '-' * 10,
+                                                         '-' * 30,
+                                                         '-' * 30,
+                                                         ))
+
+# Print top N functions
+for (index, function) in enumerate(top_functions, start=1):
+    function_data = function.split()
+    # Calculate function percentage
+    function_instructions = float(function_data[0].replace(',', ''))
+    function_percentage = (function_instructions /
+                           total_number_of_instructions)*100
+    # Get function name and source files path
+    function_source_file, function_name = function_data[1].split(':')
+    # Print extracted data
+    print('{:>4}  {:>9.3f}%  {:<30}  {}'.format(index,
+                                                round(function_percentage, 3),
+                                                function_name,
+                                                function_source_file))
+
+# Remove intermediate files
+os.unlink('/tmp/callgrind.data')
+os.unlink('/tmp/callgrind_annotate.out')
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PULL 6/6] MAINTAINERS: Add 'Performance Tools and Tests' subsection
  2020-06-27 19:51 [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Aleksandar Markovic
                   ` (4 preceding siblings ...)
  2020-06-27 19:51 ` [PULL 5/6] scripts/performance: Add topN_callgrind.py script Aleksandar Markovic
@ 2020-06-27 19:51 ` Aleksandar Markovic
  2020-06-29  8:13   ` Philippe Mathieu-Daudé
  2020-06-28 13:38 ` [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Peter Maydell
  6 siblings, 1 reply; 15+ messages in thread
From: Aleksandar Markovic @ 2020-06-27 19:51 UTC (permalink / raw)
  To: qemu-devel, peter.maydell; +Cc: aleksandar.qemu.devel

This commit creates a new 'Miscellaneous' section which hosts a new
'Performance Tools and Tests' subsection. This subsection will contain
the the performance scripts and benchmarks written as a part of the
'TCG Continuous Benchmarking' project. Also, it will be a placeholder
for follow-ups to this project, if any.

Signed-off-by: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
Message-Id: <20200626164546.22102-4-ahmedkhaledkaraman@gmail.com>
---
 MAINTAINERS | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index fe925ea..dec252f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1096,11 +1096,10 @@ F: hw/isa/vt82c686.c
 F: hw/pci-host/bonito.c
 F: include/hw/isa/vt82c686.h
 
-Loongson-3 Virtual Platform
+Loongson-3 virtual platforms
 M: Huacai Chen <chenhc@lemote.com>
 R: Jiaxun Yang <jiaxun.yang@flygoat.com>
 S: Maintained
-F: hw/mips/loongson3_virt.c
 F: hw/intc/loongson_liointc.c
 
 Boston
@@ -3026,3 +3025,10 @@ M: Peter Maydell <peter.maydell@linaro.org>
 S: Maintained
 F: docs/conf.py
 F: docs/*/conf.py
+
+Miscellaneous
+-------------
+Performance Tools and Tests
+M: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>
+S: Maintained
+F: scripts/performance/
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020
  2020-06-27 19:51 [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Aleksandar Markovic
                   ` (5 preceding siblings ...)
  2020-06-27 19:51 ` [PULL 6/6] MAINTAINERS: Add 'Performance Tools and Tests' subsection Aleksandar Markovic
@ 2020-06-28 13:38 ` Peter Maydell
  6 siblings, 0 replies; 15+ messages in thread
From: Peter Maydell @ 2020-06-28 13:38 UTC (permalink / raw)
  To: Aleksandar Markovic; +Cc: QEMU Developers

On Sat, 27 Jun 2020 at 20:51, Aleksandar Markovic
<aleksandar.qemu.devel@gmail.com> wrote:
>
> The following changes since commit 553cf5d7c47bee05a3dec9461c1f8430316d516b:
>
>   Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20200626' into staging (2020-06-26 18:22:36 +0100)
>
> are available in the git repository at:
>
>   https://github.com/AMarkovic/qemu tags/mips-gsoc-queue-jun-27-2020
>
> for you to fetch changes up to 53fb8bfb93487c0fd88b0babb9a52ec8d67cff7b:
>
>   MAINTAINERS: Add 'Performance Tools and Tests' subsection (2020-06-27 20:15:07 +0200)
>
> ----------------------------------------------------------------
>
> MIPS + TCG Continuous Benchmarking queue for June 27th, 2020
>
>    Highlights:
>
>      - add two additional elements of Loongson-3 support
>      - add first two Python scripts as a part of a GSoC project
>
>    Notes:
>
>      - several checkpatch warnings on updating MAINTAINERS should be ignored
>
> ----------------------------------------------------------------


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/5.1
for any user-visible changes.

-- PMM


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PULL 3/6] MAINTAINERS: Add Loongson-3 maintainer and reviewer
  2020-06-27 19:51 ` [PULL 3/6] MAINTAINERS: Add Loongson-3 maintainer and reviewer Aleksandar Markovic
@ 2020-06-29  8:09   ` Philippe Mathieu-Daudé
  2020-06-29  9:56     ` Aleksandar Markovic
  0 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-06-29  8:09 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel, peter.maydell

On 6/27/20 9:51 PM, Aleksandar Markovic wrote:
> From: Huacai Chen <zltjiangshi@gmail.com>
> 
> Add myself as the maintainer for Loongson-3 virtual platforms, and
> also add Jiaxun Yang as the reviewer.
> 
> Signed-off-by: Huacai Chen <chenhc@lemote.com>
> Co-developed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> Message-Id: <1592995531-32600-5-git-send-email-chenhc@lemote.com>
> ---
>  MAINTAINERS | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 1b40446..fe925ea 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1096,6 +1096,13 @@ F: hw/isa/vt82c686.c
>  F: hw/pci-host/bonito.c
>  F: include/hw/isa/vt82c686.h
>  
> +Loongson-3 Virtual Platform
> +M: Huacai Chen <chenhc@lemote.com>
> +R: Jiaxun Yang <jiaxun.yang@flygoat.com>
> +S: Maintained
> +F: hw/mips/loongson3_virt.c

This file has not been commited, is this pull request incomplete?

> +F: hw/intc/loongson_liointc.c

How can we test this device?

> +
>  Boston
>  M: Paul Burton <pburton@wavecomp.com>
>  R: Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>
> 



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PULL 6/6] MAINTAINERS: Add 'Performance Tools and Tests' subsection
  2020-06-27 19:51 ` [PULL 6/6] MAINTAINERS: Add 'Performance Tools and Tests' subsection Aleksandar Markovic
@ 2020-06-29  8:13   ` Philippe Mathieu-Daudé
  2020-06-29 10:28     ` Aleksandar Markovic
  0 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-06-29  8:13 UTC (permalink / raw)
  To: Aleksandar Markovic, qemu-devel, peter.maydell

On 6/27/20 9:51 PM, Aleksandar Markovic wrote:
> This commit creates a new 'Miscellaneous' section which hosts a new
> 'Performance Tools and Tests' subsection. This subsection will contain
> the the performance scripts and benchmarks written as a part of the
> 'TCG Continuous Benchmarking' project. Also, it will be a placeholder
> for follow-ups to this project, if any.
> 
> Signed-off-by: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> Message-Id: <20200626164546.22102-4-ahmedkhaledkaraman@gmail.com>
> ---
>  MAINTAINERS | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index fe925ea..dec252f 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1096,11 +1096,10 @@ F: hw/isa/vt82c686.c
>  F: hw/pci-host/bonito.c
>  F: include/hw/isa/vt82c686.h
>  
> -Loongson-3 Virtual Platform
> +Loongson-3 virtual platforms
>  M: Huacai Chen <chenhc@lemote.com>
>  R: Jiaxun Yang <jiaxun.yang@flygoat.com>
>  S: Maintained
> -F: hw/mips/loongson3_virt.c

Ah, now I see, here you unlist the uncommited file.

It might be easier to manage sending 2 different pull requests,
on for MIPS and one for the performance tools.

>  F: hw/intc/loongson_liointc.c
>  
>  Boston
> @@ -3026,3 +3025,10 @@ M: Peter Maydell <peter.maydell@linaro.org>
>  S: Maintained
>  F: docs/conf.py
>  F: docs/*/conf.py
> +
> +Miscellaneous
> +-------------
> +Performance Tools and Tests
> +M: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>

Aleksandar, don't you want to be listed here with Ahmed?

> +S: Maintained
> +F: scripts/performance/
> 



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PULL 3/6] MAINTAINERS: Add Loongson-3 maintainer and reviewer
  2020-06-29  8:09   ` Philippe Mathieu-Daudé
@ 2020-06-29  9:56     ` Aleksandar Markovic
  2020-07-01 10:19       ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 15+ messages in thread
From: Aleksandar Markovic @ 2020-06-29  9:56 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé; +Cc: peter.maydell, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1909 bytes --]

понедељак, 29. јун 2020., Philippe Mathieu-Daudé <f4bug@amsat.org> је
написао/ла:

> On 6/27/20 9:51 PM, Aleksandar Markovic wrote:
> > From: Huacai Chen <zltjiangshi@gmail.com>
> >
> > Add myself as the maintainer for Loongson-3 virtual platforms, and
> > also add Jiaxun Yang as the reviewer.
> >
> > Signed-off-by: Huacai Chen <chenhc@lemote.com>
> > Co-developed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> > Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> > Message-Id: <1592995531-32600-5-git-send-email-chenhc@lemote.com>
> > ---
> >  MAINTAINERS | 7 +++++++
> >  1 file changed, 7 insertions(+)
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 1b40446..fe925ea 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -1096,6 +1096,13 @@ F: hw/isa/vt82c686.c
> >  F: hw/pci-host/bonito.c
> >  F: include/hw/isa/vt82c686.h
> >
> > +Loongson-3 Virtual Platform
> > +M: Huacai Chen <chenhc@lemote.com>
> > +R: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > +S: Maintained
> > +F: hw/mips/loongson3_virt.c
>
> This file has not been commited, is this pull request incomplete?
>
> > +F: hw/intc/loongson_liointc.c
>
>
This line, in this patch, was my mistake. I did delete the line, but forgot
to do "git add MAINTAINERS". So, the deletion happened in the next patch
dealing with MAINTAINERS.

So, my bad. An honest mistake. I apoligize.

However, the final outcome of the pull request is 100% as desired, and as I
informed other in my responses to patches.  No need to do any follow ups.

How can we test this device?
>
>
Please read the commit message of patch 3/4 of Huacai's recent series v6.


> > +
> >  Boston
> >  M: Paul Burton <pburton@wavecomp.com>
> >  R: Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>
> >
>
>

[-- Attachment #2: Type: text/html, Size: 3182 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PULL 6/6] MAINTAINERS: Add 'Performance Tools and Tests' subsection
  2020-06-29  8:13   ` Philippe Mathieu-Daudé
@ 2020-06-29 10:28     ` Aleksandar Markovic
  2020-07-01 10:32       ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 15+ messages in thread
From: Aleksandar Markovic @ 2020-06-29 10:28 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé; +Cc: peter.maydell, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 3337 bytes --]

понедељак, 29. јун 2020., Philippe Mathieu-Daudé <f4bug@amsat.org> је
написао/ла:

> On 6/27/20 9:51 PM, Aleksandar Markovic wrote:
> > This commit creates a new 'Miscellaneous' section which hosts a new
> > 'Performance Tools and Tests' subsection. This subsection will contain
> > the the performance scripts and benchmarks written as a part of the
> > 'TCG Continuous Benchmarking' project. Also, it will be a placeholder
> > for follow-ups to this project, if any.
> >
> > Signed-off-by: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>
> > Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> > Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> > Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com>
> > Message-Id: <20200626164546.22102-4-ahmedkhaledkaraman@gmail.com>
> > ---
> >  MAINTAINERS | 10 ++++++++--
> >  1 file changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index fe925ea..dec252f 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -1096,11 +1096,10 @@ F: hw/isa/vt82c686.c
> >  F: hw/pci-host/bonito.c
> >  F: include/hw/isa/vt82c686.h
> >
> > -Loongson-3 Virtual Platform
> > +Loongson-3 virtual platforms
> >  M: Huacai Chen <chenhc@lemote.com>
> >  R: Jiaxun Yang <jiaxun.yang@flygoat.com>
> >  S: Maintained
> > -F: hw/mips/loongson3_virt.c
>
> Ah, now I see, here you unlist the uncommited file.
>
>
This file/machine, for multiple reasons, will not be accepted in 5.1. The
end user will not be able to see, let alone use the machine in question in
5.1. This is on purpose.

This will give enough development time to Huacai to implement missing bits
and pieces, and to possibly improve the whole idea during 5.2 development
cycle.

Even though the support that Huacai introduced in 5.1 is, for many reasons,
not completed, and even though Huacai and I had at times opposing views and
fierce discussions and disagreements - I salute and support his work, and
consider it, by far, the best and the most important contribution to QEMU
for MIPS in years.



> It might be easier to manage sending 2 different pull requests,
> on for MIPS and one for the performance tools.
>
> >  F: hw/intc/loongson_liointc.c
> >
> >  Boston
> > @@ -3026,3 +3025,10 @@ M: Peter Maydell <peter.maydell@linaro.org>
> >  S: Maintained
> >  F: docs/conf.py
> >  F: docs/*/conf.py
> > +
> > +Miscellaneous
> > +-------------
> > +Performance Tools and Tests
> > +M: Ahmed Karaman <ahmedkhaledkaraman@gmail.com>
>
> Aleksandar, don't you want to be listed here with Ahmed?
>
>
Of course not. The project is student's. The mentor just helps and leads
the student. The fruits of the project belong to the community and to the
student - and not to the mentor.

If you were the mentor, my impression is that you would leave your name in
MAINTAINERS whenever you see the slightest opportunity (I remember an
occasion where you were saying "I worked six hours on this" and then
proposing yourself as the maitainer for a particular segment (??)). I don't
have such approach, and I oppose your approach, and I appeal to you to
control your apetite for maintainership.

Regards,
Aleksandar



> > +S: Maintained
> > +F: scripts/performance/
> >
>
>

[-- Attachment #2: Type: text/html, Size: 4736 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PULL 3/6] MAINTAINERS: Add Loongson-3 maintainer and reviewer
  2020-06-29  9:56     ` Aleksandar Markovic
@ 2020-07-01 10:19       ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-07-01 10:19 UTC (permalink / raw)
  To: Aleksandar Markovic
  Cc: Alex Bennée, peter.maydell, Daniel P . Berrange, qemu-devel

On 6/29/20 11:56 AM, Aleksandar Markovic wrote:
> понедељак, 29. јун 2020., Philippe Mathieu-Daudé <f4bug@amsat.org
> <mailto:f4bug@amsat.org>> је написао/ла:
> 
>     On 6/27/20 9:51 PM, Aleksandar Markovic wrote:
>     > From: Huacai Chen <zltjiangshi@gmail.com
>     <mailto:zltjiangshi@gmail.com>>
>     >
>     > Add myself as the maintainer for Loongson-3 virtual platforms, and
>     > also add Jiaxun Yang as the reviewer.
>     >
>     > Signed-off-by: Huacai Chen <chenhc@lemote.com
>     <mailto:chenhc@lemote.com>>
>     > Co-developed-by: Jiaxun Yang <jiaxun.yang@flygoat.com
>     <mailto:jiaxun.yang@flygoat.com>>
>     > Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com
>     <mailto:aleksandar.qemu.devel@gmail.com>>
>     > Signed-off-by: Aleksandar Markovic
>     <aleksandar.qemu.devel@gmail.com
>     <mailto:aleksandar.qemu.devel@gmail.com>>
>     > Message-Id: <1592995531-32600-5-git-send-email-chenhc@lemote.com
>     <mailto:1592995531-32600-5-git-send-email-chenhc@lemote.com>>
>     > ---
>     >  MAINTAINERS | 7 +++++++
>     >  1 file changed, 7 insertions(+)
>     >
>     > diff --git a/MAINTAINERS b/MAINTAINERS
>     > index 1b40446..fe925ea 100644
>     > --- a/MAINTAINERS
>     > +++ b/MAINTAINERS
>     > @@ -1096,6 +1096,13 @@ F: hw/isa/vt82c686.c
>     >  F: hw/pci-host/bonito.c
>     >  F: include/hw/isa/vt82c686.h
>     > 
>     > +Loongson-3 Virtual Platform
>     > +M: Huacai Chen <chenhc@lemote.com <mailto:chenhc@lemote.com>>
>     > +R: Jiaxun Yang <jiaxun.yang@flygoat.com
>     <mailto:jiaxun.yang@flygoat.com>>
>     > +S: Maintained
>     > +F: hw/mips/loongson3_virt.c
> 
>     This file has not been commited, is this pull request incomplete?
> 
>     > +F: hw/intc/loongson_liointc.c
> 
> 
> This line, in this patch, was my mistake. I did delete the line, but
> forgot to do "git add MAINTAINERS". So, the deletion happened in the
> next patch dealing with MAINTAINERS.
> 
> So, my bad. An honest mistake. I apoligize.
> 
> However, the final outcome of the pull request is 100% as desired, and
> as I informed other in my responses to patches.  No need to do any
> follow ups.
> 
>     How can we test this device?
> 
> 
> Please read the commit message of patch 3/4 of Huacai's recent series v6.

I suppose you are referring to this post:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg716861.html

I prepare the kernel as suggested to add an acceptance test, but then
when testing I get:

$ qemu-system-mips64el -M loongson3-virt,accel=tcg
qemu-system-mips64el: -M loongson3-virt,accel=tcg: unsupported machine type

Are you deliberately merging code into mainstream that is not build
neither used? This might be an acceptable exception, but please
explain why this is an exceptional case, and set a deadline for the
machine to be merged, it has to be in for the next 5.1 release,
else we'll have to revert commit c012e0b1f9 ("hw/intc: Add Loongson
LIOINTC support").

In the past the policy has been to reject contributions from finshed
devices but "unfinished machines". The policy is not strict regarding
that.

>  
> 
>     > +
>     >  Boston
>     >  M: Paul Burton <pburton@wavecomp.com <mailto:pburton@wavecomp.com>>
>     >  R: Aleksandar Rikalo <aleksandar.rikalo@syrmia.com
>     <mailto:aleksandar.rikalo@syrmia.com>>
>     >
> 


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PULL 6/6] MAINTAINERS: Add 'Performance Tools and Tests' subsection
  2020-06-29 10:28     ` Aleksandar Markovic
@ 2020-07-01 10:32       ` Philippe Mathieu-Daudé
  2020-07-01 10:49         ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-07-01 10:32 UTC (permalink / raw)
  To: Aleksandar Markovic; +Cc: peter.maydell, qemu-devel

On 6/29/20 12:28 PM, Aleksandar Markovic wrote:
> понедељак, 29. јун 2020., Philippe Mathieu-Daudé <f4bug@amsat.org
> <mailto:f4bug@amsat.org>> је написао/ла:
> 
>     On 6/27/20 9:51 PM, Aleksandar Markovic wrote:
>     > This commit creates a new 'Miscellaneous' section which hosts a new
>     > 'Performance Tools and Tests' subsection. This subsection will contain
>     > the the performance scripts and benchmarks written as a part of the
>     > 'TCG Continuous Benchmarking' project. Also, it will be a placeholder
>     > for follow-ups to this project, if any.
>     >
>     > Signed-off-by: Ahmed Karaman <ahmedkhaledkaraman@gmail.com
>     <mailto:ahmedkhaledkaraman@gmail.com>>
>     > Reviewed-by: Alex Bennée <alex.bennee@linaro.org
>     <mailto:alex.bennee@linaro.org>>
>     > Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com
>     <mailto:aleksandar.qemu.devel@gmail.com>>
>     > Signed-off-by: Aleksandar Markovic
>     <aleksandar.qemu.devel@gmail.com
>     <mailto:aleksandar.qemu.devel@gmail.com>>
>     > Message-Id: <20200626164546.22102-4-ahmedkhaledkaraman@gmail.com
>     <mailto:20200626164546.22102-4-ahmedkhaledkaraman@gmail.com>>
>     > ---
>     >  MAINTAINERS | 10 ++++++++--
>     >  1 file changed, 8 insertions(+), 2 deletions(-)
>     >
>     > diff --git a/MAINTAINERS b/MAINTAINERS
>     > index fe925ea..dec252f 100644
>     > --- a/MAINTAINERS
>     > +++ b/MAINTAINERS
>     > @@ -1096,11 +1096,10 @@ F: hw/isa/vt82c686.c
>     >  F: hw/pci-host/bonito.c
>     >  F: include/hw/isa/vt82c686.h
>     > 
>     > -Loongson-3 Virtual Platform
>     > +Loongson-3 virtual platforms
>     >  M: Huacai Chen <chenhc@lemote.com <mailto:chenhc@lemote.com>>
>     >  R: Jiaxun Yang <jiaxun.yang@flygoat.com
>     <mailto:jiaxun.yang@flygoat.com>>
>     >  S: Maintained
>     > -F: hw/mips/loongson3_virt.c
> 
>     Ah, now I see, here you unlist the uncommited file.
> 
> 
> This file/machine, for multiple reasons, will not be accepted in 5.1.

Ah, so that confirms we have to revert commit c012e0b1f9 ("hw/intc: Add
Loongson LIOINTC support"). Can you send a patch please?

> The end user will not be able to see, let alone use the machine in
> question in 5.1. This is on purpose.
> 
> This will give enough development time to Huacai to implement missing
> bits and pieces, and to possibly improve the whole idea during 5.2
> development cycle.

Sounds reasonable.

> 
> Even though the support that Huacai introduced in 5.1 is, for many
> reasons, not completed, and even though Huacai and I had at times
> opposing views and fierce discussions and disagreements - I salute and
> support his work, and consider it, by far, the best and the most
> important contribution to QEMU for MIPS in years.
> 
>  
> 
>     It might be easier to manage sending 2 different pull requests,
>     on for MIPS and one for the performance tools.
> 
>     >  F: hw/intc/loongson_liointc.c
>     > 
>     >  Boston
>     > @@ -3026,3 +3025,10 @@ M: Peter Maydell <peter.maydell@linaro.org
>     <mailto:peter.maydell@linaro.org>>
>     >  S: Maintained
>     >  F: docs/conf.py
>     >  F: docs/*/conf.py
>     > +
>     > +Miscellaneous
>     > +-------------
>     > +Performance Tools and Tests
>     > +M: Ahmed Karaman <ahmedkhaledkaraman@gmail.com
>     <mailto:ahmedkhaledkaraman@gmail.com>>
> 
>     Aleksandar, don't you want to be listed here with Ahmed?
> 
> 
> Of course not. The project is student's. The mentor just helps and leads
> the student. The fruits of the project belong to the community and to
> the student - and not to the mentor.
> 
> If you were the mentor, my impression is that you would leave your name
> in MAINTAINERS whenever you see the slightest opportunity (I remember an
> occasion where you were saying "I worked six hours on this" and then
> proposing yourself as the maitainer for a particular segment (??)).

'??' means you are not sure? Please link reference to discussions.
I volunteered to help maintaining areas when nobody were doing anything,
if that forces others to step in because they are more qualified, I'm
glad I did it. See for example the Renesas ports have qualified
maintainers!

> I
> don't have such approach, and I oppose your approach, and I appeal to
> you to control your apetite for maintainership.

I am not looking for more maintenance, I'm looking to cover abandonned
areas I use. I have been taught by the do-ocracy principle. I'v not been
dropped in as replacement for someone else position, only trying to keep
things unmodified, scared a minimal change would break.

> 
> Regards,
> Aleksandar
> 
>  
> 
>     > +S: Maintained
>     > +F: scripts/performance/
>     >
> 


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PULL 6/6] MAINTAINERS: Add 'Performance Tools and Tests' subsection
  2020-07-01 10:32       ` Philippe Mathieu-Daudé
@ 2020-07-01 10:49         ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-07-01 10:49 UTC (permalink / raw)
  To: Aleksandar Markovic; +Cc: peter.maydell, qemu-devel

On 7/1/20 12:32 PM, Philippe Mathieu-Daudé wrote:
> On 6/29/20 12:28 PM, Aleksandar Markovic wrote:
>> понедељак, 29. јун 2020., Philippe Mathieu-Daudé <f4bug@amsat.org
>> <mailto:f4bug@amsat.org>> је написао/ла:
>>
>>     On 6/27/20 9:51 PM, Aleksandar Markovic wrote:
>>     > This commit creates a new 'Miscellaneous' section which hosts a new
>>     > 'Performance Tools and Tests' subsection. This subsection will contain
>>     > the the performance scripts and benchmarks written as a part of the
>>     > 'TCG Continuous Benchmarking' project. Also, it will be a placeholder
>>     > for follow-ups to this project, if any.
>>     >
>>     > Signed-off-by: Ahmed Karaman <ahmedkhaledkaraman@gmail.com
>>     <mailto:ahmedkhaledkaraman@gmail.com>>
>>     > Reviewed-by: Alex Bennée <alex.bennee@linaro.org
>>     <mailto:alex.bennee@linaro.org>>
>>     > Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com
>>     <mailto:aleksandar.qemu.devel@gmail.com>>
>>     > Signed-off-by: Aleksandar Markovic
>>     <aleksandar.qemu.devel@gmail.com
>>     <mailto:aleksandar.qemu.devel@gmail.com>>
>>     > Message-Id: <20200626164546.22102-4-ahmedkhaledkaraman@gmail.com
>>     <mailto:20200626164546.22102-4-ahmedkhaledkaraman@gmail.com>>
>>     > ---
>>     >  MAINTAINERS | 10 ++++++++--
>>     >  1 file changed, 8 insertions(+), 2 deletions(-)
>>     >
>>     > diff --git a/MAINTAINERS b/MAINTAINERS
>>     > index fe925ea..dec252f 100644
>>     > --- a/MAINTAINERS
>>     > +++ b/MAINTAINERS
>>     > @@ -1096,11 +1096,10 @@ F: hw/isa/vt82c686.c
>>     >  F: hw/pci-host/bonito.c
>>     >  F: include/hw/isa/vt82c686.h
>>     > 
>>     > -Loongson-3 Virtual Platform
>>     > +Loongson-3 virtual platforms
>>     >  M: Huacai Chen <chenhc@lemote.com <mailto:chenhc@lemote.com>>
>>     >  R: Jiaxun Yang <jiaxun.yang@flygoat.com
>>     <mailto:jiaxun.yang@flygoat.com>>
>>     >  S: Maintained
>>     > -F: hw/mips/loongson3_virt.c
>>
>>     Ah, now I see, here you unlist the uncommited file.
>>
>>
>> This file/machine, for multiple reasons, will not be accepted in 5.1.
> 
> Ah, so that confirms we have to revert commit c012e0b1f9 ("hw/intc: Add
> Loongson LIOINTC support"). Can you send a patch please?
> 
>> The end user will not be able to see, let alone use the machine in
>> question in 5.1. This is on purpose.
>>
>> This will give enough development time to Huacai to implement missing
>> bits and pieces, and to possibly improve the whole idea during 5.2
>> development cycle.
> 
> Sounds reasonable.
> 
>>
>> Even though the support that Huacai introduced in 5.1 is, for many
>> reasons, not completed, and even though Huacai and I had at times
>> opposing views and fierce discussions and disagreements - I salute and
>> support his work, and consider it, by far, the best and the most
>> important contribution to QEMU for MIPS in years.
>>
>>  
>>
>>     It might be easier to manage sending 2 different pull requests,
>>     on for MIPS and one for the performance tools.
>>
>>     >  F: hw/intc/loongson_liointc.c
>>     > 
>>     >  Boston
>>     > @@ -3026,3 +3025,10 @@ M: Peter Maydell <peter.maydell@linaro.org
>>     <mailto:peter.maydell@linaro.org>>
>>     >  S: Maintained
>>     >  F: docs/conf.py
>>     >  F: docs/*/conf.py
>>     > +
>>     > +Miscellaneous
>>     > +-------------
>>     > +Performance Tools and Tests
>>     > +M: Ahmed Karaman <ahmedkhaledkaraman@gmail.com
>>     <mailto:ahmedkhaledkaraman@gmail.com>>
>>
>>     Aleksandar, don't you want to be listed here with Ahmed?
>>
>>
>> Of course not. The project is student's. The mentor just helps and leads
>> the student. The fruits of the project belong to the community and to
>> the student - and not to the mentor.
>>
>> If you were the mentor, my impression is that you would leave your name
>> in MAINTAINERS whenever you see the slightest opportunity (I remember an
>> occasion where you were saying "I worked six hours on this" and then
>> proposing yourself as the maitainer for a particular segment (??)).
> 
> '??' means you are not sure? Please link reference to discussions.
> I volunteered to help maintaining areas when nobody were doing anything,
> if that forces others to step in because they are more qualified, I'm
> glad I did it. See for example the Renesas ports have qualified
> maintainers!
> 
>> I
>> don't have such approach, and I oppose your approach, and I appeal to
>> you to control your apetite for maintainership.

Now I understand your comment here:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg711448.html

"I guess it is just a matter of time Philippe would ask for SPARC
 maintainership. Mark, would you perhaps accept Philippe as a
 co-maintainer?"

It was not ironic, it was a trap. I already asked you why you keep
tracking my contributions, trying to demotivate me. Is this personal?

> 
> I am not looking for more maintenance, I'm looking to cover abandonned
> areas I use. I have been taught by the do-ocracy principle. I'v not been
> dropped in as replacement for someone else position, only trying to keep
> things unmodified, scared a minimal change would break.
> 
>>
>> Regards,
>> Aleksandar
>>
>>  
>>
>>     > +S: Maintained
>>     > +F: scripts/performance/
>>     >
>>
> 


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2020-07-01 10:51 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-27 19:51 [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Aleksandar Markovic
2020-06-27 19:51 ` [PULL 1/6] hw/mips: Implement the kvm_type() hook in MachineClass Aleksandar Markovic
2020-06-27 19:51 ` [PULL 2/6] hw/intc: Add Loongson LIOINTC support Aleksandar Markovic
2020-06-27 19:51 ` [PULL 3/6] MAINTAINERS: Add Loongson-3 maintainer and reviewer Aleksandar Markovic
2020-06-29  8:09   ` Philippe Mathieu-Daudé
2020-06-29  9:56     ` Aleksandar Markovic
2020-07-01 10:19       ` Philippe Mathieu-Daudé
2020-06-27 19:51 ` [PULL 4/6] scripts/performance: Add topN_perf.py script Aleksandar Markovic
2020-06-27 19:51 ` [PULL 5/6] scripts/performance: Add topN_callgrind.py script Aleksandar Markovic
2020-06-27 19:51 ` [PULL 6/6] MAINTAINERS: Add 'Performance Tools and Tests' subsection Aleksandar Markovic
2020-06-29  8:13   ` Philippe Mathieu-Daudé
2020-06-29 10:28     ` Aleksandar Markovic
2020-07-01 10:32       ` Philippe Mathieu-Daudé
2020-07-01 10:49         ` Philippe Mathieu-Daudé
2020-06-28 13:38 ` [PULL 0/6] MIPS + TCG Continuous Benchmarking queue for June 27th, 2020 Peter Maydell

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).