* [PULL 0/6] loongarch-to-apply queue
@ 2024-06-06 4:01 Song Gao
2024-06-06 4:01 ` [PULL 1/6] tests/libqos: Add loongarch virt machine node Song Gao
` (6 more replies)
0 siblings, 7 replies; 18+ messages in thread
From: Song Gao @ 2024-06-06 4:01 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson
The following changes since commit db2feb2df8d19592c9859efb3f682404e0052957:
Merge tag 'pull-misc-20240605' of https://gitlab.com/rth7680/qemu into staging (2024-06-05 14:17:01 -0700)
are available in the Git repository at:
https://gitlab.com/gaosong/qemu.git tags/pull-loongarch-20240606
for you to fetch changes up to 78f932ea1f7b3b9b0ac628dc2a91281318fe51fa:
target/loongarch: fix a wrong print in cpu dump (2024-06-06 11:58:06 +0800)
----------------------------------------------------------------
pull-loongarch-20240606
----------------------------------------------------------------
Bibo Mao (2):
tests/libqos: Add loongarch virt machine node
tests/qtest: Add numa test for loongarch system
Song Gao (3):
hw/intc/loongarch_extioi: Add extioi virt extension definition
hw/loongarch/virt: Use MemTxAttrs interface for misc ops
hw/loongarch/virt: Enable extioi virt extension
lanyanzhi (1):
target/loongarch: fix a wrong print in cpu dump
hw/intc/loongarch_extioi.c | 88 ++++++++++++-
hw/loongarch/virt.c | 184 +++++++++++++++++++++++-----
include/hw/intc/loongarch_extioi.h | 21 ++++
include/hw/loongarch/virt.h | 1 +
target/loongarch/cpu.c | 2 +-
target/loongarch/cpu.h | 1 +
tests/qtest/libqos/loongarch-virt-machine.c | 114 +++++++++++++++++
tests/qtest/libqos/meson.build | 1 +
tests/qtest/meson.build | 2 +-
tests/qtest/numa-test.c | 53 ++++++++
10 files changed, 428 insertions(+), 39 deletions(-)
create mode 100644 tests/qtest/libqos/loongarch-virt-machine.c
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 1/6] tests/libqos: Add loongarch virt machine node
2024-06-06 4:01 [PULL 0/6] loongarch-to-apply queue Song Gao
@ 2024-06-06 4:01 ` Song Gao
2024-06-06 4:01 ` [PULL 2/6] tests/qtest: Add numa test for loongarch system Song Gao
` (5 subsequent siblings)
6 siblings, 0 replies; 18+ messages in thread
From: Song Gao @ 2024-06-06 4:01 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, Bibo Mao, Thomas Huth
From: Bibo Mao <maobibo@loongson.cn>
Add loongarch virt machine to the graph. It is a modified copy of
the existing riscv virtmachine in riscv-virt-machine.c
It contains a generic-pcihost controller, and an extra function
loongarch_config_qpci_bus() to configure GPEX pci host controller
information, such as ecam and pio_base addresses.
Also hotplug handle checking about TYPE_VIRTIO_IOMMU_PCI device is
added on loongarch virt machine, since virtio_mmu_pci device requires
it.
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Acked-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20240528082053.938564-1-maobibo@loongson.cn>
Signed-off-by: Song Gao <gaosong@loongson.cn>
---
hw/loongarch/virt.c | 2 +
tests/qtest/libqos/loongarch-virt-machine.c | 114 ++++++++++++++++++++
tests/qtest/libqos/meson.build | 1 +
3 files changed, 117 insertions(+)
create mode 100644 tests/qtest/libqos/loongarch-virt-machine.c
diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 3e6e93edf3..2d7f718570 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -45,6 +45,7 @@
#include "sysemu/tpm.h"
#include "sysemu/block-backend.h"
#include "hw/block/flash.h"
+#include "hw/virtio/virtio-iommu.h"
#include "qemu/error-report.h"
static PFlashCFI01 *virt_flash_create1(LoongArchVirtMachineState *lvms,
@@ -1213,6 +1214,7 @@ static HotplugHandler *virt_get_hotplug_handler(MachineState *machine,
MachineClass *mc = MACHINE_GET_CLASS(machine);
if (device_is_dynamic_sysbus(mc, dev) ||
+ object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI) ||
memhp_type_supported(dev)) {
return HOTPLUG_HANDLER(machine);
}
diff --git a/tests/qtest/libqos/loongarch-virt-machine.c b/tests/qtest/libqos/loongarch-virt-machine.c
new file mode 100644
index 0000000000..c12089c015
--- /dev/null
+++ b/tests/qtest/libqos/loongarch-virt-machine.c
@@ -0,0 +1,114 @@
+/*
+ * libqos driver framework
+ *
+ * Copyright (c) 2018 Emanuele Giuseppe Esposito <e.emanuelegiuseppe@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>
+ */
+
+#include "qemu/osdep.h"
+#include "../libqtest.h"
+#include "qemu/module.h"
+#include "libqos-malloc.h"
+#include "qgraph.h"
+#include "virtio-mmio.h"
+#include "generic-pcihost.h"
+#include "hw/pci/pci_regs.h"
+
+#define LOONGARCH_PAGE_SIZE 0x1000
+#define LOONGARCH_VIRT_RAM_ADDR 0x100000
+#define LOONGARCH_VIRT_RAM_SIZE 0xFF00000
+
+#define LOONGARCH_VIRT_PIO_BASE 0x18000000
+#define LOONGARCH_VIRT_PCIE_PIO_OFFSET 0x4000
+#define LOONGARCH_VIRT_PCIE_PIO_LIMIT 0x10000
+#define LOONGARCH_VIRT_PCIE_ECAM_BASE 0x20000000
+#define LOONGARCH_VIRT_PCIE_MMIO32_BASE 0x40000000
+#define LOONGARCH_VIRT_PCIE_MMIO32_LIMIT 0x80000000
+
+typedef struct QVirtMachine QVirtMachine;
+
+struct QVirtMachine {
+ QOSGraphObject obj;
+ QGuestAllocator alloc;
+ QVirtioMMIODevice virtio_mmio;
+ QGenericPCIHost bridge;
+};
+
+static void virt_destructor(QOSGraphObject *obj)
+{
+ QVirtMachine *machine = (QVirtMachine *) obj;
+ alloc_destroy(&machine->alloc);
+}
+
+static void *virt_get_driver(void *object, const char *interface)
+{
+ QVirtMachine *machine = object;
+ if (!g_strcmp0(interface, "memory")) {
+ return &machine->alloc;
+ }
+
+ fprintf(stderr, "%s not present in loongarch/virtio\n", interface);
+ g_assert_not_reached();
+}
+
+static QOSGraphObject *virt_get_device(void *obj, const char *device)
+{
+ QVirtMachine *machine = obj;
+ if (!g_strcmp0(device, "generic-pcihost")) {
+ return &machine->bridge.obj;
+ } else if (!g_strcmp0(device, "virtio-mmio")) {
+ return &machine->virtio_mmio.obj;
+ }
+
+ fprintf(stderr, "%s not present in loongarch/virt\n", device);
+ g_assert_not_reached();
+}
+
+static void loongarch_config_qpci_bus(QGenericPCIBus *qpci)
+{
+ qpci->gpex_pio_base = LOONGARCH_VIRT_PIO_BASE;
+ qpci->bus.pio_alloc_ptr = LOONGARCH_VIRT_PCIE_PIO_OFFSET;
+ qpci->bus.pio_limit = LOONGARCH_VIRT_PCIE_PIO_LIMIT;
+ qpci->bus.mmio_alloc_ptr = LOONGARCH_VIRT_PCIE_MMIO32_BASE;
+ qpci->bus.mmio_limit = LOONGARCH_VIRT_PCIE_MMIO32_LIMIT;
+ qpci->ecam_alloc_ptr = LOONGARCH_VIRT_PCIE_ECAM_BASE;
+}
+
+static void *qos_create_machine_loongarch_virt(QTestState *qts)
+{
+ QVirtMachine *machine = g_new0(QVirtMachine, 1);
+
+ alloc_init(&machine->alloc, 0,
+ LOONGARCH_VIRT_RAM_ADDR,
+ LOONGARCH_VIRT_RAM_ADDR + LOONGARCH_VIRT_RAM_SIZE,
+ LOONGARCH_PAGE_SIZE);
+
+ qos_create_generic_pcihost(&machine->bridge, qts, &machine->alloc);
+ loongarch_config_qpci_bus(&machine->bridge.pci);
+
+ machine->obj.get_device = virt_get_device;
+ machine->obj.get_driver = virt_get_driver;
+ machine->obj.destructor = virt_destructor;
+ return machine;
+}
+
+static void virt_machine_register_nodes(void)
+{
+ qos_node_create_machine_args("loongarch64/virt",
+ qos_create_machine_loongarch_virt,
+ " -cpu la464");
+ qos_node_contains("loongarch64/virt", "generic-pcihost", NULL);
+}
+
+libqos_init(virt_machine_register_nodes);
diff --git a/tests/qtest/libqos/meson.build b/tests/qtest/libqos/meson.build
index 3aed6efcb8..558eb4c24b 100644
--- a/tests/qtest/libqos/meson.build
+++ b/tests/qtest/libqos/meson.build
@@ -61,6 +61,7 @@ libqos_srcs = files(
'ppc64_pseries-machine.c',
'x86_64_pc-machine.c',
'riscv-virt-machine.c',
+ 'loongarch-virt-machine.c',
)
if have_virtfs
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 2/6] tests/qtest: Add numa test for loongarch system
2024-06-06 4:01 [PULL 0/6] loongarch-to-apply queue Song Gao
2024-06-06 4:01 ` [PULL 1/6] tests/libqos: Add loongarch virt machine node Song Gao
@ 2024-06-06 4:01 ` Song Gao
2024-06-06 4:01 ` [PULL 3/6] hw/intc/loongarch_extioi: Add extioi virt extension definition Song Gao
` (4 subsequent siblings)
6 siblings, 0 replies; 18+ messages in thread
From: Song Gao @ 2024-06-06 4:01 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, Bibo Mao, Thomas Huth
From: Bibo Mao <maobibo@loongson.cn>
Add numa test case for loongarch system, it passes to run
with command "make check-qtest".
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Acked-by: Thomas Huth <thuth@redhat.com>
Tested-by: Song Gao <gaosong@loongson.cn>
Message-Id: <20240528082155.938586-1-maobibo@loongson.cn>
Signed-off-by: Song Gao <gaosong@loongson.cn>
---
tests/qtest/meson.build | 2 +-
tests/qtest/numa-test.c | 53 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 54 insertions(+), 1 deletion(-)
diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
index b98fae6a6d..12792948ff 100644
--- a/tests/qtest/meson.build
+++ b/tests/qtest/meson.build
@@ -140,7 +140,7 @@ qtests_hppa = ['boot-serial-test'] + \
(config_all_devices.has_key('CONFIG_VGA') ? ['display-vga-test'] : [])
qtests_loongarch64 = qtests_filter + \
- ['boot-serial-test']
+ ['boot-serial-test', 'numa-test']
qtests_m68k = ['boot-serial-test'] + \
qtests_filter
diff --git a/tests/qtest/numa-test.c b/tests/qtest/numa-test.c
index 7aa262dbb9..5518f6596b 100644
--- a/tests/qtest/numa-test.c
+++ b/tests/qtest/numa-test.c
@@ -265,6 +265,54 @@ static void aarch64_numa_cpu(const void *data)
qtest_quit(qts);
}
+static void loongarch64_numa_cpu(const void *data)
+{
+ QDict *resp;
+ QList *cpus;
+ QObject *e;
+ QTestState *qts;
+ g_autofree char *cli = NULL;
+
+ cli = make_cli(data, "-machine "
+ "smp.cpus=2,smp.sockets=2,smp.cores=1,smp.threads=1 "
+ "-numa node,nodeid=0,memdev=ram -numa node,nodeid=1 "
+ "-numa cpu,node-id=0,socket-id=1,core-id=0,thread-id=0 "
+ "-numa cpu,node-id=1,socket-id=0,core-id=0,thread-id=0");
+ qts = qtest_init(cli);
+ cpus = get_cpus(qts, &resp);
+ g_assert(cpus);
+
+ while ((e = qlist_pop(cpus))) {
+ QDict *cpu, *props;
+ int64_t socket, core, thread, node;
+
+ cpu = qobject_to(QDict, e);
+ g_assert(qdict_haskey(cpu, "props"));
+ props = qdict_get_qdict(cpu, "props");
+
+ g_assert(qdict_haskey(props, "node-id"));
+ node = qdict_get_int(props, "node-id");
+ g_assert(qdict_haskey(props, "socket-id"));
+ socket = qdict_get_int(props, "socket-id");
+ g_assert(qdict_haskey(props, "core-id"));
+ core = qdict_get_int(props, "core-id");
+ g_assert(qdict_haskey(props, "thread-id"));
+ thread = qdict_get_int(props, "thread-id");
+
+ if (socket == 0 && core == 0 && thread == 0) {
+ g_assert_cmpint(node, ==, 1);
+ } else if (socket == 1 && core == 0 && thread == 0) {
+ g_assert_cmpint(node, ==, 0);
+ } else {
+ g_assert(false);
+ }
+ qobject_unref(e);
+ }
+
+ qobject_unref(resp);
+ qtest_quit(qts);
+}
+
static void pc_dynamic_cpu_cfg(const void *data)
{
QObject *e;
@@ -593,6 +641,11 @@ int main(int argc, char **argv)
aarch64_numa_cpu);
}
+ if (!strcmp(arch, "loongarch64")) {
+ qtest_add_data_func("/numa/loongarch64/cpu/explicit", args,
+ loongarch64_numa_cpu);
+ }
+
out:
return g_test_run();
}
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 3/6] hw/intc/loongarch_extioi: Add extioi virt extension definition
2024-06-06 4:01 [PULL 0/6] loongarch-to-apply queue Song Gao
2024-06-06 4:01 ` [PULL 1/6] tests/libqos: Add loongarch virt machine node Song Gao
2024-06-06 4:01 ` [PULL 2/6] tests/qtest: Add numa test for loongarch system Song Gao
@ 2024-06-06 4:01 ` Song Gao
2024-06-06 4:01 ` [PULL 4/6] hw/loongarch/virt: Use MemTxAttrs interface for misc ops Song Gao
` (3 subsequent siblings)
6 siblings, 0 replies; 18+ messages in thread
From: Song Gao @ 2024-06-06 4:01 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, Bibo Mao
On LoongArch, IRQs can be routed to four vcpus with hardware extended
IRQ model. This patch adds the virt extension definition so that
the IRQ can route to 256 vcpus.
1.Extended IRQ model:
|
+-----------+ +-------------|--------+ +-----------+
| IPI/Timer | --> | CPUINTC(0-3)|(4-255) | <-- | IPI/Timer |
+-----------+ +-------------|--------+ +-----------+
^ |
|
+---------+
| EIOINTC |
+---------+
^ ^
| |
+---------+ +---------+
| PCH-PIC | | PCH-MSI |
+---------+ +---------+
^ ^ ^
| | |
+--------+ +---------+ +---------+
| UARTs | | Devices | | Devices |
+--------+ +---------+ +---------+
2.Virt extended IRQ model:
+-----+ +---------------+ +-------+
| IPI |--> | CPUINTC(0-255)| <-- | Timer |
+-----+ +---------------+ +-------+
^
|
+-----------+
| V-EIOINTC |
+-----------+
^ ^
| |
+---------+ +---------+
| PCH-PIC | | PCH-MSI |
+---------+ +---------+
^ ^ ^
| | |
+--------+ +---------+ +---------+
| UARTs | | Devices | | Devices |
+--------+ +---------+ +---------+
Signed-off-by: Song Gao <gaosong@loongson.cn>
Reviewed-by: Bibo Mao <maobibo@loongson.cn>
Message-Id: <20240528083855.1912757-2-gaosong@loongson.cn>
---
hw/intc/loongarch_extioi.c | 88 ++++++++++++++++++++++++++++--
hw/loongarch/virt.c | 60 +++++++++++++-------
include/hw/intc/loongarch_extioi.h | 21 +++++++
3 files changed, 146 insertions(+), 23 deletions(-)
diff --git a/hw/intc/loongarch_extioi.c b/hw/intc/loongarch_extioi.c
index 0b358548eb..1e8e0114dc 100644
--- a/hw/intc/loongarch_extioi.c
+++ b/hw/intc/loongarch_extioi.c
@@ -143,10 +143,13 @@ static inline void extioi_update_sw_coremap(LoongArchExtIOI *s, int irq,
for (i = 0; i < 4; i++) {
cpu = val & 0xff;
- cpu = ctz32(cpu);
- cpu = (cpu >= 4) ? 0 : cpu;
val = val >> 8;
+ if (!(s->status & BIT(EXTIOI_ENABLE_CPU_ENCODE))) {
+ cpu = ctz32(cpu);
+ cpu = (cpu >= 4) ? 0 : cpu;
+ }
+
if (s->sw_coremap[irq + i] == cpu) {
continue;
}
@@ -265,6 +268,61 @@ static const MemoryRegionOps extioi_ops = {
.endianness = DEVICE_LITTLE_ENDIAN,
};
+static MemTxResult extioi_virt_readw(void *opaque, hwaddr addr, uint64_t *data,
+ unsigned size, MemTxAttrs attrs)
+{
+ LoongArchExtIOI *s = LOONGARCH_EXTIOI(opaque);
+
+ switch (addr) {
+ case EXTIOI_VIRT_FEATURES:
+ *data = s->features;
+ break;
+ case EXTIOI_VIRT_CONFIG:
+ *data = s->status;
+ break;
+ default:
+ g_assert_not_reached();
+ }
+
+ return MEMTX_OK;
+}
+
+static MemTxResult extioi_virt_writew(void *opaque, hwaddr addr,
+ uint64_t val, unsigned size,
+ MemTxAttrs attrs)
+{
+ LoongArchExtIOI *s = LOONGARCH_EXTIOI(opaque);
+
+ switch (addr) {
+ case EXTIOI_VIRT_FEATURES:
+ return MEMTX_ACCESS_ERROR;
+
+ case EXTIOI_VIRT_CONFIG:
+ /*
+ * extioi features can only be set at disabled status
+ */
+ if ((s->status & BIT(EXTIOI_ENABLE)) && val) {
+ return MEMTX_ACCESS_ERROR;
+ }
+
+ s->status = val & s->features;
+ break;
+ default:
+ g_assert_not_reached();
+ }
+ return MEMTX_OK;
+}
+
+static const MemoryRegionOps extioi_virt_ops = {
+ .read_with_attrs = extioi_virt_readw,
+ .write_with_attrs = extioi_virt_writew,
+ .impl.min_access_size = 4,
+ .impl.max_access_size = 4,
+ .valid.min_access_size = 4,
+ .valid.max_access_size = 8,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+};
+
static void loongarch_extioi_realize(DeviceState *dev, Error **errp)
{
LoongArchExtIOI *s = LOONGARCH_EXTIOI(dev);
@@ -284,6 +342,16 @@ static void loongarch_extioi_realize(DeviceState *dev, Error **errp)
memory_region_init_io(&s->extioi_system_mem, OBJECT(s), &extioi_ops,
s, "extioi_system_mem", 0x900);
sysbus_init_mmio(sbd, &s->extioi_system_mem);
+
+ if (s->features & BIT(EXTIOI_HAS_VIRT_EXTENSION)) {
+ memory_region_init_io(&s->virt_extend, OBJECT(s), &extioi_virt_ops,
+ s, "extioi_virt", EXTIOI_VIRT_SIZE);
+ sysbus_init_mmio(sbd, &s->virt_extend);
+ s->features |= EXTIOI_VIRT_HAS_FEATURES;
+ } else {
+ s->status |= BIT(EXTIOI_ENABLE);
+ }
+
s->cpu = g_new0(ExtIOICore, s->num_cpu);
if (s->cpu == NULL) {
error_setg(errp, "Memory allocation for ExtIOICore faile");
@@ -304,6 +372,13 @@ static void loongarch_extioi_finalize(Object *obj)
g_free(s->cpu);
}
+static void loongarch_extioi_reset(DeviceState *d)
+{
+ LoongArchExtIOI *s = LOONGARCH_EXTIOI(d);
+
+ s->status = 0;
+}
+
static int vmstate_extioi_post_load(void *opaque, int version_id)
{
LoongArchExtIOI *s = LOONGARCH_EXTIOI(opaque);
@@ -333,8 +408,8 @@ static const VMStateDescription vmstate_extioi_core = {
static const VMStateDescription vmstate_loongarch_extioi = {
.name = TYPE_LOONGARCH_EXTIOI,
- .version_id = 2,
- .minimum_version_id = 2,
+ .version_id = 3,
+ .minimum_version_id = 3,
.post_load = vmstate_extioi_post_load,
.fields = (const VMStateField[]) {
VMSTATE_UINT32_ARRAY(bounce, LoongArchExtIOI, EXTIOI_IRQS_GROUP_COUNT),
@@ -347,12 +422,16 @@ static const VMStateDescription vmstate_loongarch_extioi = {
VMSTATE_STRUCT_VARRAY_POINTER_UINT32(cpu, LoongArchExtIOI, num_cpu,
vmstate_extioi_core, ExtIOICore),
+ VMSTATE_UINT32(features, LoongArchExtIOI),
+ VMSTATE_UINT32(status, LoongArchExtIOI),
VMSTATE_END_OF_LIST()
}
};
static Property extioi_properties[] = {
DEFINE_PROP_UINT32("num-cpu", LoongArchExtIOI, num_cpu, 1),
+ DEFINE_PROP_BIT("has-virtualization-extension", LoongArchExtIOI, features,
+ EXTIOI_HAS_VIRT_EXTENSION, 0),
DEFINE_PROP_END_OF_LIST(),
};
@@ -361,6 +440,7 @@ static void loongarch_extioi_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
dc->realize = loongarch_extioi_realize;
+ dc->reset = loongarch_extioi_reset;
device_class_set_props(dc, extioi_properties);
dc->vmsd = &vmstate_loongarch_extioi;
}
diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 2d7f718570..2b5ae45939 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -718,25 +718,47 @@ static void virt_irq_init(LoongArchVirtMachineState *lvms)
uint32_t cpuintc_phandle, eiointc_phandle, pch_pic_phandle, pch_msi_phandle;
/*
- * The connection of interrupts:
- * +-----+ +---------+ +-------+
- * | IPI |--> | CPUINTC | <-- | Timer |
- * +-----+ +---------+ +-------+
- * ^
- * |
- * +---------+
- * | EIOINTC |
- * +---------+
- * ^ ^
- * | |
- * +---------+ +---------+
- * | PCH-PIC | | PCH-MSI |
- * +---------+ +---------+
- * ^ ^ ^
- * | | |
- * +--------+ +---------+ +---------+
- * | UARTs | | Devices | | Devices |
- * +--------+ +---------+ +---------+
+ * Extended IRQ model.
+ * |
+ * +-----------+ +-------------|--------+ +-----------+
+ * | IPI/Timer | --> | CPUINTC(0-3)|(4-255) | <-- | IPI/Timer |
+ * +-----------+ +-------------|--------+ +-----------+
+ * ^ |
+ * |
+ * +---------+
+ * | EIOINTC |
+ * +---------+
+ * ^ ^
+ * | |
+ * +---------+ +---------+
+ * | PCH-PIC | | PCH-MSI |
+ * +---------+ +---------+
+ * ^ ^ ^
+ * | | |
+ * +--------+ +---------+ +---------+
+ * | UARTs | | Devices | | Devices |
+ * +--------+ +---------+ +---------+
+ *
+ * Virt extended IRQ model.
+ *
+ * +-----+ +---------------+ +-------+
+ * | IPI |--> | CPUINTC(0-255)| <-- | Timer |
+ * +-----+ +---------------+ +-------+
+ * ^
+ * |
+ * +-----------+
+ * | V-EIOINTC |
+ * +-----------+
+ * ^ ^
+ * | |
+ * +---------+ +---------+
+ * | PCH-PIC | | PCH-MSI |
+ * +---------+ +---------+
+ * ^ ^ ^
+ * | | |
+ * +--------+ +---------+ +---------+
+ * | UARTs | | Devices | | Devices |
+ * +--------+ +---------+ +---------+
*/
/* Create IPI device */
diff --git a/include/hw/intc/loongarch_extioi.h b/include/hw/intc/loongarch_extioi.h
index 410c6e1121..eccc2e0d18 100644
--- a/include/hw/intc/loongarch_extioi.h
+++ b/include/hw/intc/loongarch_extioi.h
@@ -41,6 +41,24 @@
#define EXTIOI_COREMAP_END (0xD00 - APIC_OFFSET)
#define EXTIOI_SIZE 0x800
+#define EXTIOI_VIRT_BASE (0x40000000)
+#define EXTIOI_VIRT_SIZE (0x1000)
+#define EXTIOI_VIRT_FEATURES (0x0)
+#define EXTIOI_HAS_VIRT_EXTENSION (0)
+#define EXTIOI_HAS_ENABLE_OPTION (1)
+#define EXTIOI_HAS_INT_ENCODE (2)
+#define EXTIOI_HAS_CPU_ENCODE (3)
+#define EXTIOI_VIRT_HAS_FEATURES (BIT(EXTIOI_HAS_VIRT_EXTENSION) \
+ | BIT(EXTIOI_HAS_ENABLE_OPTION) \
+ | BIT(EXTIOI_HAS_INT_ENCODE) \
+ | BIT(EXTIOI_HAS_CPU_ENCODE))
+#define EXTIOI_VIRT_CONFIG (0x4)
+#define EXTIOI_ENABLE (1)
+#define EXTIOI_ENABLE_INT_ENCODE (2)
+#define EXTIOI_ENABLE_CPU_ENCODE (3)
+#define EXTIOI_VIRT_COREMAP_START (0x40)
+#define EXTIOI_VIRT_COREMAP_END (0x240)
+
typedef struct ExtIOICore {
uint32_t coreisr[EXTIOI_IRQS_GROUP_COUNT];
DECLARE_BITMAP(sw_isr[LS3A_INTC_IP], EXTIOI_IRQS);
@@ -52,6 +70,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(LoongArchExtIOI, LOONGARCH_EXTIOI)
struct LoongArchExtIOI {
SysBusDevice parent_obj;
uint32_t num_cpu;
+ uint32_t features;
+ uint32_t status;
/* hardware state */
uint32_t nodetype[EXTIOI_IRQS_NODETYPE_COUNT / 2];
uint32_t bounce[EXTIOI_IRQS_GROUP_COUNT];
@@ -65,5 +85,6 @@ struct LoongArchExtIOI {
qemu_irq irq[EXTIOI_IRQS];
ExtIOICore *cpu;
MemoryRegion extioi_system_mem;
+ MemoryRegion virt_extend;
};
#endif /* LOONGARCH_EXTIOI_H */
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 4/6] hw/loongarch/virt: Use MemTxAttrs interface for misc ops
2024-06-06 4:01 [PULL 0/6] loongarch-to-apply queue Song Gao
` (2 preceding siblings ...)
2024-06-06 4:01 ` [PULL 3/6] hw/intc/loongarch_extioi: Add extioi virt extension definition Song Gao
@ 2024-06-06 4:01 ` Song Gao
2024-06-06 4:01 ` [PULL 5/6] hw/loongarch/virt: Enable extioi virt extension Song Gao
` (2 subsequent siblings)
6 siblings, 0 replies; 18+ messages in thread
From: Song Gao @ 2024-06-06 4:01 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, Bibo Mao
Use MemTxAttrs interface read_with_attrs/write_with_attrs
for virt_iocsr_misc_ops.
Signed-off-by: Song Gao <gaosong@loongson.cn>
Reviewed-by: Bibo Mao <maobibo@loongson.cn>
Message-Id: <20240528083855.1912757-3-gaosong@loongson.cn>
---
hw/loongarch/virt.c | 36 ++++++++++++++++++++++++------------
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 2b5ae45939..0cef33a904 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -900,37 +900,49 @@ static void virt_firmware_init(LoongArchVirtMachineState *lvms)
}
-static void virt_iocsr_misc_write(void *opaque, hwaddr addr,
- uint64_t val, unsigned size)
+static MemTxResult virt_iocsr_misc_write(void *opaque, hwaddr addr,
+ uint64_t val, unsigned size,
+ MemTxAttrs attrs)
{
+ return MEMTX_OK;
}
-static uint64_t virt_iocsr_misc_read(void *opaque, hwaddr addr, unsigned size)
+static MemTxResult virt_iocsr_misc_read(void *opaque, hwaddr addr,
+ uint64_t *data,
+ unsigned size, MemTxAttrs attrs)
{
- uint64_t ret;
+ uint64_t ret = 0;
switch (addr) {
case VERSION_REG:
- return 0x11ULL;
+ ret = 0x11ULL;
+ break;
case FEATURE_REG:
ret = BIT(IOCSRF_MSI) | BIT(IOCSRF_EXTIOI) | BIT(IOCSRF_CSRIPI);
if (kvm_enabled()) {
ret |= BIT(IOCSRF_VM);
}
- return ret;
+ break;
case VENDOR_REG:
- return 0x6e6f73676e6f6f4cULL; /* "Loongson" */
+ ret = 0x6e6f73676e6f6f4cULL; /* "Loongson" */
+ break;
case CPUNAME_REG:
- return 0x303030354133ULL; /* "3A5000" */
+ ret = 0x303030354133ULL; /* "3A5000" */
+ break;
case MISC_FUNC_REG:
- return BIT_ULL(IOCSRM_EXTIOI_EN);
+ ret = BIT_ULL(IOCSRM_EXTIOI_EN);
+ break;
+ default:
+ g_assert_not_reached();
}
- return 0ULL;
+
+ *data = ret;
+ return MEMTX_OK;
}
static const MemoryRegionOps virt_iocsr_misc_ops = {
- .read = virt_iocsr_misc_read,
- .write = virt_iocsr_misc_write,
+ .read_with_attrs = virt_iocsr_misc_read,
+ .write_with_attrs = virt_iocsr_misc_write,
.endianness = DEVICE_LITTLE_ENDIAN,
.valid = {
.min_access_size = 4,
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 5/6] hw/loongarch/virt: Enable extioi virt extension
2024-06-06 4:01 [PULL 0/6] loongarch-to-apply queue Song Gao
` (3 preceding siblings ...)
2024-06-06 4:01 ` [PULL 4/6] hw/loongarch/virt: Use MemTxAttrs interface for misc ops Song Gao
@ 2024-06-06 4:01 ` Song Gao
2024-06-06 4:01 ` [PULL 6/6] target/loongarch: fix a wrong print in cpu dump Song Gao
2024-06-07 0:06 ` [PULL 0/6] loongarch-to-apply queue Richard Henderson
6 siblings, 0 replies; 18+ messages in thread
From: Song Gao @ 2024-06-06 4:01 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, Bibo Mao
This patch adds a new board attribute 'v-eiointc'.
A value of true enables the virt extended I/O interrupt controller.
VMs working in kvm mode have 'v-eiointc' enabled by default.
Signed-off-by: Song Gao <gaosong@loongson.cn>
Reviewed-by: Bibo Mao <maobibo@loongson.cn>
Message-Id: <20240528083855.1912757-4-gaosong@loongson.cn>
---
hw/loongarch/virt.c | 88 +++++++++++++++++++++++++++++++++++--
include/hw/loongarch/virt.h | 1 +
target/loongarch/cpu.h | 1 +
3 files changed, 87 insertions(+), 3 deletions(-)
diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 0cef33a904..66cef201ab 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -11,6 +11,7 @@
#include "hw/boards.h"
#include "hw/char/serial.h"
#include "sysemu/kvm.h"
+#include "sysemu/tcg.h"
#include "sysemu/sysemu.h"
#include "sysemu/qtest.h"
#include "sysemu/runstate.h"
@@ -48,6 +49,31 @@
#include "hw/virtio/virtio-iommu.h"
#include "qemu/error-report.h"
+static bool virt_is_veiointc_enabled(LoongArchVirtMachineState *lvms)
+{
+ if (lvms->veiointc == ON_OFF_AUTO_OFF) {
+ return false;
+ }
+ return true;
+}
+
+static void virt_get_veiointc(Object *obj, Visitor *v, const char *name,
+ void *opaque, Error **errp)
+{
+ LoongArchVirtMachineState *lvms = LOONGARCH_VIRT_MACHINE(obj);
+ OnOffAuto veiointc = lvms->veiointc;
+
+ visit_type_OnOffAuto(v, name, &veiointc, errp);
+}
+
+static void virt_set_veiointc(Object *obj, Visitor *v, const char *name,
+ void *opaque, Error **errp)
+{
+ LoongArchVirtMachineState *lvms = LOONGARCH_VIRT_MACHINE(obj);
+
+ visit_type_OnOffAuto(v, name, &lvms->veiointc, errp);
+}
+
static PFlashCFI01 *virt_flash_create1(LoongArchVirtMachineState *lvms,
const char *name,
const char *alias_prop_name)
@@ -790,9 +816,16 @@ static void virt_irq_init(LoongArchVirtMachineState *lvms)
/* Create EXTIOI device */
extioi = qdev_new(TYPE_LOONGARCH_EXTIOI);
qdev_prop_set_uint32(extioi, "num-cpu", ms->smp.cpus);
+ if (virt_is_veiointc_enabled(lvms)) {
+ qdev_prop_set_bit(extioi, "has-virtualization-extension", true);
+ }
sysbus_realize_and_unref(SYS_BUS_DEVICE(extioi), &error_fatal);
memory_region_add_subregion(&lvms->system_iocsr, APIC_BASE,
- sysbus_mmio_get_region(SYS_BUS_DEVICE(extioi), 0));
+ sysbus_mmio_get_region(SYS_BUS_DEVICE(extioi), 0));
+ if (virt_is_veiointc_enabled(lvms)) {
+ memory_region_add_subregion(&lvms->system_iocsr, EXTIOI_VIRT_BASE,
+ sysbus_mmio_get_region(SYS_BUS_DEVICE(extioi), 1));
+ }
/*
* connect ext irq to the cpu irq
@@ -899,11 +932,37 @@ static void virt_firmware_init(LoongArchVirtMachineState *lvms)
}
}
-
static MemTxResult virt_iocsr_misc_write(void *opaque, hwaddr addr,
uint64_t val, unsigned size,
MemTxAttrs attrs)
{
+ LoongArchVirtMachineState *lvms = LOONGARCH_VIRT_MACHINE(opaque);
+ uint64_t features;
+
+ switch (addr) {
+ case MISC_FUNC_REG:
+ if (!virt_is_veiointc_enabled(lvms)) {
+ return MEMTX_OK;
+ }
+
+ features = address_space_ldl(&lvms->as_iocsr,
+ EXTIOI_VIRT_BASE + EXTIOI_VIRT_CONFIG,
+ attrs, NULL);
+ if (val & BIT_ULL(IOCSRM_EXTIOI_EN)) {
+ features |= BIT(EXTIOI_ENABLE);
+ }
+ if (val & BIT_ULL(IOCSRM_EXTIOI_INT_ENCODE)) {
+ features |= BIT(EXTIOI_ENABLE_INT_ENCODE);
+ }
+
+ address_space_stl(&lvms->as_iocsr,
+ EXTIOI_VIRT_BASE + EXTIOI_VIRT_CONFIG,
+ features, attrs, NULL);
+ break;
+ default:
+ g_assert_not_reached();
+ }
+
return MEMTX_OK;
}
@@ -911,7 +970,9 @@ static MemTxResult virt_iocsr_misc_read(void *opaque, hwaddr addr,
uint64_t *data,
unsigned size, MemTxAttrs attrs)
{
+ LoongArchVirtMachineState *lvms = LOONGARCH_VIRT_MACHINE(opaque);
uint64_t ret = 0;
+ int features;
switch (addr) {
case VERSION_REG:
@@ -930,7 +991,20 @@ static MemTxResult virt_iocsr_misc_read(void *opaque, hwaddr addr,
ret = 0x303030354133ULL; /* "3A5000" */
break;
case MISC_FUNC_REG:
- ret = BIT_ULL(IOCSRM_EXTIOI_EN);
+ if (!virt_is_veiointc_enabled(lvms)) {
+ ret |= BIT_ULL(IOCSRM_EXTIOI_EN);
+ break;
+ }
+
+ features = address_space_ldl(&lvms->as_iocsr,
+ EXTIOI_VIRT_BASE + EXTIOI_VIRT_CONFIG,
+ attrs, NULL);
+ if (features & BIT(EXTIOI_ENABLE)) {
+ ret |= BIT_ULL(IOCSRM_EXTIOI_EN);
+ }
+ if (features & BIT(EXTIOI_ENABLE_INT_ENCODE)) {
+ ret |= BIT_ULL(IOCSRM_EXTIOI_INT_ENCODE);
+ }
break;
default:
g_assert_not_reached();
@@ -1152,6 +1226,9 @@ static void virt_initfn(Object *obj)
{
LoongArchVirtMachineState *lvms = LOONGARCH_VIRT_MACHINE(obj);
+ if (tcg_enabled()) {
+ lvms->veiointc = ON_OFF_AUTO_OFF;
+ }
lvms->acpi = ON_OFF_AUTO_AUTO;
lvms->oem_id = g_strndup(ACPI_BUILD_APPNAME6, 6);
lvms->oem_table_id = g_strndup(ACPI_BUILD_APPNAME8, 8);
@@ -1338,6 +1415,11 @@ static void virt_class_init(ObjectClass *oc, void *data)
NULL, NULL);
object_class_property_set_description(oc, "acpi",
"Enable ACPI");
+ object_class_property_add(oc, "v-eiointc", "OnOffAuto",
+ virt_get_veiointc, virt_set_veiointc,
+ NULL, NULL);
+ object_class_property_set_description(oc, "v-eiointc",
+ "Enable Virt Extend I/O Interrupt Controller.");
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_RAMFB_DEVICE);
#ifdef CONFIG_TPM
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_TPM_TIS_SYSBUS);
diff --git a/include/hw/loongarch/virt.h b/include/hw/loongarch/virt.h
index 2c4f5cf9c8..8fdfacf268 100644
--- a/include/hw/loongarch/virt.h
+++ b/include/hw/loongarch/virt.h
@@ -50,6 +50,7 @@ struct LoongArchVirtMachineState {
Notifier machine_done;
Notifier powerdown_notifier;
OnOffAuto acpi;
+ OnOffAuto veiointc;
char *oem_id;
char *oem_table_id;
DeviceState *acpi_ged;
diff --git a/target/loongarch/cpu.h b/target/loongarch/cpu.h
index 41b8e6d96d..6c41fafb70 100644
--- a/target/loongarch/cpu.h
+++ b/target/loongarch/cpu.h
@@ -36,6 +36,7 @@
#define CPUNAME_REG 0x20
#define MISC_FUNC_REG 0x420
#define IOCSRM_EXTIOI_EN 48
+#define IOCSRM_EXTIOI_INT_ENCODE 49
#define IOCSR_MEM_SIZE 0x428
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 6/6] target/loongarch: fix a wrong print in cpu dump
2024-06-06 4:01 [PULL 0/6] loongarch-to-apply queue Song Gao
` (4 preceding siblings ...)
2024-06-06 4:01 ` [PULL 5/6] hw/loongarch/virt: Enable extioi virt extension Song Gao
@ 2024-06-06 4:01 ` Song Gao
2024-06-07 0:06 ` [PULL 0/6] loongarch-to-apply queue Richard Henderson
6 siblings, 0 replies; 18+ messages in thread
From: Song Gao @ 2024-06-06 4:01 UTC (permalink / raw)
To: qemu-devel; +Cc: richard.henderson, lanyanzhi, qemu-stable
From: lanyanzhi <lanyanzhi22b@ict.ac.cn>
description:
loongarch_cpu_dump_state() want to dump all loongarch cpu
state registers, but there is a tiny typographical error when
printing "PRCFG2".
Cc: qemu-stable@nongnu.org
Signed-off-by: lanyanzhi <lanyanzhi22b@ict.ac.cn>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Song Gao <gaosong@loongson.cn>
Message-Id: <20240604073831.666690-1-lanyanzhi22b@ict.ac.cn>
Signed-off-by: Song Gao <gaosong@loongson.cn>
---
target/loongarch/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
index b5c1ec94af..270f711f11 100644
--- a/target/loongarch/cpu.c
+++ b/target/loongarch/cpu.c
@@ -707,7 +707,7 @@ void loongarch_cpu_dump_state(CPUState *cs, FILE *f, int flags)
qemu_fprintf(f, "EENTRY=%016" PRIx64 "\n", env->CSR_EENTRY);
qemu_fprintf(f, "PRCFG1=%016" PRIx64 ", PRCFG2=%016" PRIx64 ","
" PRCFG3=%016" PRIx64 "\n",
- env->CSR_PRCFG1, env->CSR_PRCFG3, env->CSR_PRCFG3);
+ env->CSR_PRCFG1, env->CSR_PRCFG2, env->CSR_PRCFG3);
qemu_fprintf(f, "TLBRENTRY=%016" PRIx64 "\n", env->CSR_TLBRENTRY);
qemu_fprintf(f, "TLBRBADV=%016" PRIx64 "\n", env->CSR_TLBRBADV);
qemu_fprintf(f, "TLBRERA=%016" PRIx64 "\n", env->CSR_TLBRERA);
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PULL 0/6] loongarch-to-apply queue
2024-06-06 4:01 [PULL 0/6] loongarch-to-apply queue Song Gao
` (5 preceding siblings ...)
2024-06-06 4:01 ` [PULL 6/6] target/loongarch: fix a wrong print in cpu dump Song Gao
@ 2024-06-07 0:06 ` Richard Henderson
6 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2024-06-07 0:06 UTC (permalink / raw)
To: Song Gao, qemu-devel
On 6/5/24 21:01, Song Gao wrote:
> The following changes since commit db2feb2df8d19592c9859efb3f682404e0052957:
>
> Merge tag 'pull-misc-20240605' ofhttps://gitlab.com/rth7680/qemu into staging (2024-06-05 14:17:01 -0700)
>
> are available in the Git repository at:
>
> https://gitlab.com/gaosong/qemu.git tags/pull-loongarch-20240606
>
> for you to fetch changes up to 78f932ea1f7b3b9b0ac628dc2a91281318fe51fa:
>
> target/loongarch: fix a wrong print in cpu dump (2024-06-06 11:58:06 +0800)
>
> ----------------------------------------------------------------
> pull-loongarch-20240606
Applied, thanks. Please update https://wiki.qemu.org/ChangeLog/9.1 as appropriate.
r~
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 0/6] loongarch-to-apply queue
@ 2024-10-24 9:26 Song Gao
2024-10-25 18:11 ` Peter Maydell
0 siblings, 1 reply; 18+ messages in thread
From: Song Gao @ 2024-10-24 9:26 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell
The following changes since commit 6f625ce2f21d6a1243065d236298277c56f972d5:
Merge tag 'pull-request-2024-10-21' of https://gitlab.com/thuth/qemu into staging (2024-10-21 17:12:59 +0100)
are available in the Git repository at:
https://gitlab.com/gaosong/qemu.git tags/pull-loongarch-20241024
for you to fetch changes up to c44e0d6ba280dcc6bdf4ed555020c61d564b526c:
target/loongarch: Add steal time support on migration (2024-10-24 17:27:55 +0800)
----------------------------------------------------------------
pull-loongarch-20241024
----------------------------------------------------------------
Bibo Mao (6):
target/loongarch: Add loongson binary translation feature
target/loongarch: Implement lbt registers save/restore function
target/loongarch/kvm: Implement LoongArch PMU extension
linux-headers: loongarch: Add kvm_para.h and unistd_64.h
linux-headers: Update to Linux v6.12-rc3
target/loongarch: Add steal time support on migration
include/standard-headers/drm/drm_fourcc.h | 43 +++
include/standard-headers/linux/const.h | 17 ++
include/standard-headers/linux/ethtool.h | 226 +++++++++++++++
include/standard-headers/linux/fuse.h | 22 +-
include/standard-headers/linux/input-event-codes.h | 2 +
include/standard-headers/linux/pci_regs.h | 41 ++-
include/standard-headers/linux/virtio_balloon.h | 16 +-
include/standard-headers/linux/virtio_gpu.h | 1 +
linux-headers/asm-arm64/mman.h | 9 +
linux-headers/asm-arm64/unistd.h | 25 +-
linux-headers/asm-generic/unistd.h | 6 +-
linux-headers/asm-loongarch/kvm.h | 24 ++
linux-headers/asm-loongarch/kvm_para.h | 21 ++
linux-headers/asm-loongarch/unistd.h | 4 +-
linux-headers/asm-loongarch/unistd_64.h | 320 +++++++++++++++++++++
linux-headers/asm-riscv/kvm.h | 7 +
linux-headers/asm-riscv/unistd.h | 41 +--
linux-headers/asm-x86/kvm.h | 2 +
linux-headers/asm-x86/unistd_64.h | 1 +
linux-headers/asm-x86/unistd_x32.h | 1 +
linux-headers/linux/bits.h | 3 +
linux-headers/linux/const.h | 17 ++
linux-headers/linux/iommufd.h | 143 +++++++--
linux-headers/linux/kvm.h | 23 +-
linux-headers/linux/mman.h | 1 +
linux-headers/linux/psp-sev.h | 28 ++
scripts/update-linux-headers.sh | 4 +
target/loongarch/cpu.c | 43 +++
target/loongarch/cpu.h | 23 ++
target/loongarch/kvm/kvm.c | 225 ++++++++++++++-
target/loongarch/loongarch-qmp-cmds.c | 2 +-
target/loongarch/machine.c | 30 +-
32 files changed, 1274 insertions(+), 97 deletions(-)
create mode 100644 linux-headers/asm-loongarch/kvm_para.h
create mode 100644 linux-headers/asm-loongarch/unistd_64.h
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PULL 0/6] loongarch-to-apply queue
2024-10-24 9:26 Song Gao
@ 2024-10-25 18:11 ` Peter Maydell
2024-10-26 7:23 ` bibo mao
0 siblings, 1 reply; 18+ messages in thread
From: Peter Maydell @ 2024-10-25 18:11 UTC (permalink / raw)
To: Song Gao; +Cc: qemu-devel
On Thu, 24 Oct 2024 at 10:44, Song Gao <gaosong@loongson.cn> wrote:
>
> The following changes since commit 6f625ce2f21d6a1243065d236298277c56f972d5:
>
> Merge tag 'pull-request-2024-10-21' of https://gitlab.com/thuth/qemu into staging (2024-10-21 17:12:59 +0100)
>
> are available in the Git repository at:
>
> https://gitlab.com/gaosong/qemu.git tags/pull-loongarch-20241024
>
> for you to fetch changes up to c44e0d6ba280dcc6bdf4ed555020c61d564b526c:
>
> target/loongarch: Add steal time support on migration (2024-10-24 17:27:55 +0800)
>
> ----------------------------------------------------------------
> pull-loongarch-20241024
>
> ----------------------------------------------------------------
> Bibo Mao (6):
> target/loongarch: Add loongson binary translation feature
> target/loongarch: Implement lbt registers save/restore function
> target/loongarch/kvm: Implement LoongArch PMU extension
> linux-headers: loongarch: Add kvm_para.h and unistd_64.h
> linux-headers: Update to Linux v6.12-rc3
> target/loongarch: Add steal time support on migration
Hi; this fails to build on all the aarch64 jobs
(both normal and cross-compile):
https://gitlab.com/qemu-project/qemu/-/jobs/8190899599
https://gitlab.com/qemu-project/qemu/-/jobs/8190899331
In file included from /usr/include/aarch64-linux-gnu/sys/syscall.h:24,
from ../util/oslib-posix.c:48:
linux-headers/asm/unistd.h:2:10: fatal error: asm/unistd_64.h: No such
file or directory
2 | #include <asm/unistd_64.h>
| ^~~~~~~~~~~~~~~~~
thanks
-- PMM
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PULL 0/6] loongarch-to-apply queue
2024-10-25 18:11 ` Peter Maydell
@ 2024-10-26 7:23 ` bibo mao
0 siblings, 0 replies; 18+ messages in thread
From: bibo mao @ 2024-10-26 7:23 UTC (permalink / raw)
To: Peter Maydell; +Cc: Song Gao, qemu-devel
Peter Maydell <peter.maydell@linaro.org> 于2024年10月26日周六 02:12写道:
>
> On Thu, 24 Oct 2024 at 10:44, Song Gao <gaosong@loongson.cn> wrote:
> >
> > The following changes since commit 6f625ce2f21d6a1243065d236298277c56f972d5:
> >
> > Merge tag 'pull-request-2024-10-21' of https://gitlab.com/thuth/qemu into staging (2024-10-21 17:12:59 +0100)
> >
> > are available in the Git repository at:
> >
> > https://gitlab.com/gaosong/qemu.git tags/pull-loongarch-20241024
> >
> > for you to fetch changes up to c44e0d6ba280dcc6bdf4ed555020c61d564b526c:
> >
> > target/loongarch: Add steal time support on migration (2024-10-24 17:27:55 +0800)
> >
> > ----------------------------------------------------------------
> > pull-loongarch-20241024
> >
> > ----------------------------------------------------------------
> > Bibo Mao (6):
> > target/loongarch: Add loongson binary translation feature
> > target/loongarch: Implement lbt registers save/restore function
> > target/loongarch/kvm: Implement LoongArch PMU extension
> > linux-headers: loongarch: Add kvm_para.h and unistd_64.h
> > linux-headers: Update to Linux v6.12-rc3
> > target/loongarch: Add steal time support on migration
>
> Hi; this fails to build on all the aarch64 jobs
> (both normal and cross-compile):
>
> https://gitlab.com/qemu-project/qemu/-/jobs/8190899599
> https://gitlab.com/qemu-project/qemu/-/jobs/8190899331
>
> In file included from /usr/include/aarch64-linux-gnu/sys/syscall.h:24,
> from ../util/oslib-posix.c:48:
> linux-headers/asm/unistd.h:2:10: fatal error: asm/unistd_64.h: No such
> file or directory
> 2 | #include <asm/unistd_64.h>
> | ^~~~~~~~~~~~~~~~~
OOPS, there is missing file about unistd_64.h on ARM64 besides LoongArch64 also.
Will check and verify on all architectures.
Regards
Bibo Mao
>
>
> thanks
> -- PMM
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 0/6] loongarch-to-apply queue
@ 2024-12-25 2:40 Bibo Mao
0 siblings, 0 replies; 18+ messages in thread
From: Bibo Mao @ 2024-12-25 2:40 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: qemu-devel, Song Gao
The following changes since commit aa3a285b5bc56a4208b3b57d4a55291e9c260107:
Merge tag 'mem-2024-12-21' of https://github.com/davidhildenbrand/qemu into staging (2024-12-22 14:33:27 -0500)
are available in the Git repository at:
https://gitlab.com/bibo-mao/qemu.git tags/pull-loongarch-20241225
for you to fetch changes up to cb91b7108cb0b3781de9a00994fe78b631d80012:
target/loongarch: Use auto method with LASX feature (2024-12-25 10:33:20 +0800)
----------------------------------------------------------------
pull-loongarch-20241225
----------------------------------------------------------------
Bibo Mao (5):
target/loongarch: Use actual operand size with vbsrl check
hw/loongarch/virt: Create fdt table on machine creation done notification
hw/loongarch/virt: Improve fdt table creation for CPU object
target/loongarch: Use auto method with LSX feature
target/loongarch: Use auto method with LASX feature
ghy (1):
target/loongarch: Fix vldi inst
hw/loongarch/virt.c | 142 ++++++++++++++----------
target/loongarch/cpu.c | 86 ++++++++------
target/loongarch/cpu.h | 4 +
target/loongarch/kvm/kvm.c | 107 ++++++++++++++++++
target/loongarch/tcg/insn_trans/trans_vec.c.inc | 4 +-
5 files changed, 249 insertions(+), 94 deletions(-)
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 0/6] loongarch-to-apply queue
@ 2025-01-09 6:57 Bibo Mao
2025-01-09 16:32 ` Stefan Hajnoczi
0 siblings, 1 reply; 18+ messages in thread
From: Bibo Mao @ 2025-01-09 6:57 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: qemu-devel, Song Gao
The following changes since commit 3f8bcbba3b320c610689576fc47595f1076198dd:
Merge tag 'pull-request-2025-01-08' of https://gitlab.com/thuth/qemu into staging (2025-01-08 11:38:21 -0500)
are available in the Git repository at:
https://gitlab.com/bibo-mao/qemu.git tags/pull-loongarch-20250109
for you to fetch changes up to c3afa714bcea4c8b014fec99881bd0bdbe8262b8:
hw/intc/loongarch_extioi: Add irq routing support from physical id (2025-01-09 14:13:41 +0800)
----------------------------------------------------------------
pull-loongarch-20250109
----------------------------------------------------------------
Bibo Mao (4):
target/loongarch: Only support 64bit pte width
hw/intc/loongarch_extioi: Get cpu number from possible_cpu_arch_ids
hw/intc/loongarch_extioi: Remove num-cpu property
hw/intc/loongarch_extioi: Add irq routing support from physical id
Jiaxun Yang (2):
hw/core/loader: Use ssize_t for efi zboot unpacker
hw/loongarch/boot: Support Linux raw boot image
hw/arm/boot.c | 2 +-
hw/core/loader.c | 4 +-
hw/intc/loongarch_extioi.c | 36 +++++++----
hw/intc/loongarch_extioi_common.c | 18 +++++-
hw/loongarch/boot.c | 69 ++++++++++++++++++++++
hw/loongarch/virt.c | 1 -
include/hw/intc/loongarch_extioi_common.h | 2 +
include/hw/loader.h | 2 +-
target/loongarch/helper.h | 1 +
target/loongarch/tcg/csr_helper.c | 21 +++++++
.../tcg/insn_trans/trans_privileged.c.inc | 2 +-
target/loongarch/tcg/tlb_helper.c | 17 +-----
12 files changed, 142 insertions(+), 33 deletions(-)
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PULL 0/6] loongarch-to-apply queue
2025-01-09 6:57 Bibo Mao
@ 2025-01-09 16:32 ` Stefan Hajnoczi
0 siblings, 0 replies; 18+ messages in thread
From: Stefan Hajnoczi @ 2025-01-09 16:32 UTC (permalink / raw)
To: Bibo Mao; +Cc: Stefan Hajnoczi, qemu-devel, Song Gao
[-- Attachment #1: Type: text/plain, Size: 116 bytes --]
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/10.0 for any user-visible changes.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 0/6] loongarch-to-apply queue
@ 2025-02-12 3:16 Bibo Mao
2025-02-12 17:39 ` Stefan Hajnoczi
0 siblings, 1 reply; 18+ messages in thread
From: Bibo Mao @ 2025-02-12 3:16 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: qemu-devel, Song Gao
The following changes since commit ffaf7f0376f8040ce9068d71ae9ae8722505c42e:
Merge tag 'pull-10.0-testing-and-gdstub-updates-100225-1' of https://gitlab.com/stsquad/qemu into staging (2025-02-10 13:26:17 -0500)
are available in the Git repository at:
https://gitlab.com/bibo-mao/qemu.git tags/pull-loongarch-20250212
for you to fetch changes up to 456739ce4347c21b6fa2ec1b6585bc4a6504446f:
hw/loongarch/virt: CPU irq line connection improvement (2025-02-12 10:05:22 +0800)
----------------------------------------------------------------
pull-loongarch-20250212 queue
----------------------------------------------------------------
Bibo Mao (6):
hw/loongarch/virt: Rename filename acpi-build with virt-acpi-build
hw/loongarch/virt: Rename function prefix name
hw/loongarch/virt: Add separate file for fdt building
hw/loongarch/virt: Set iocsr address space when CPU is created
hw/loongarch/virt: Remove unused ipistate
hw/loongarch/virt: CPU irq line connection improvement
hw/loongarch/meson.build | 6 +-
hw/loongarch/{acpi-build.c => virt-acpi-build.c} | 6 +-
hw/loongarch/virt-fdt-build.c | 535 ++++++++++++++++++++
hw/loongarch/virt.c | 593 ++---------------------
include/hw/loongarch/virt.h | 5 +-
target/loongarch/cpu.h | 2 -
6 files changed, 584 insertions(+), 563 deletions(-)
rename hw/loongarch/{acpi-build.c => virt-acpi-build.c} (99%)
create mode 100644 hw/loongarch/virt-fdt-build.c
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PULL 0/6] loongarch-to-apply queue
2025-02-12 3:16 Bibo Mao
@ 2025-02-12 17:39 ` Stefan Hajnoczi
0 siblings, 0 replies; 18+ messages in thread
From: Stefan Hajnoczi @ 2025-02-12 17:39 UTC (permalink / raw)
To: Bibo Mao; +Cc: Stefan Hajnoczi, qemu-devel, Song Gao
[-- Attachment #1: Type: text/plain, Size: 116 bytes --]
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/10.0 for any user-visible changes.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 0/6] loongarch-to-apply queue
@ 2025-10-09 12:35 Song Gao
2025-10-09 16:23 ` Richard Henderson
0 siblings, 1 reply; 18+ messages in thread
From: Song Gao @ 2025-10-09 12:35 UTC (permalink / raw)
To: qemu-devel
The following changes since commit 37ad0e48e9fd58b170abbf31c18a994346f62ed7:
Merge tag 'pull-10.2-maintainer-071025-1' of https://gitlab.com/stsquad/qemu into staging (2025-10-07 08:46:28 -0700)
are available in the Git repository at:
https://github.com/gaosong715/qemu.git tags/pull-loongarch-20251009
for you to fetch changes up to fa6af7f6bf6dbc4c83595905d2572ad86358aa67:
target/loongarch: Define loongarch_exception_name() as static (2025-10-09 19:11:37 +0800)
----------------------------------------------------------------
pull-loongarch-20251009
----------------------------------------------------------------
Bibo Mao (3):
target/loongarch: Move TCG specified functions to tcg_cpu.c
target/loongarch: Move function do_raise_exception() to tcg_cpu.c
target/loongarch: Define loongarch_exception_name() as static
Huacai Chen (3):
bios-tables-test-allowed-diff.h: Allow LoongArch DSDT.*
hw/loongarch/virt: Align VIRT_GED_CPUHP_ADDR to 4 bytes
tests/data/acpi/loongarch64: Update expected DSDT.*
include/hw/loongarch/virt.h | 6 +-
target/loongarch/cpu.c | 318 +-----------------------
target/loongarch/internals.h | 4 +-
target/loongarch/tcg/meson.build | 1 +
target/loongarch/tcg/tcg_cpu.c | 322 +++++++++++++++++++++++++
target/loongarch/tcg/tcg_loongarch.h | 1 +
tests/data/acpi/loongarch64/virt/DSDT | Bin 4603 -> 4603 bytes
tests/data/acpi/loongarch64/virt/DSDT.memhp | Bin 5824 -> 5824 bytes
tests/data/acpi/loongarch64/virt/DSDT.numamem | Bin 4609 -> 4609 bytes
tests/data/acpi/loongarch64/virt/DSDT.topology | Bin 4905 -> 4905 bytes
10 files changed, 331 insertions(+), 321 deletions(-)
create mode 100644 target/loongarch/tcg/tcg_cpu.c
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PULL 0/6] loongarch-to-apply queue
2025-10-09 12:35 Song Gao
@ 2025-10-09 16:23 ` Richard Henderson
0 siblings, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2025-10-09 16:23 UTC (permalink / raw)
To: qemu-devel
On 10/9/25 05:35, Song Gao wrote:
> The following changes since commit 37ad0e48e9fd58b170abbf31c18a994346f62ed7:
>
> Merge tag 'pull-10.2-maintainer-071025-1' ofhttps://gitlab.com/stsquad/qemu into staging (2025-10-07 08:46:28 -0700)
>
> are available in the Git repository at:
>
> https://github.com/gaosong715/qemu.git tags/pull-loongarch-20251009
>
> for you to fetch changes up to fa6af7f6bf6dbc4c83595905d2572ad86358aa67:
>
> target/loongarch: Define loongarch_exception_name() as static (2025-10-09 19:11:37 +0800)
>
> ----------------------------------------------------------------
> pull-loongarch-20251009
Applied, thanks. Please update https://wiki.qemu.org/ChangeLog/10.2 as appropriate.
r~
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2025-10-09 16:24 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-06 4:01 [PULL 0/6] loongarch-to-apply queue Song Gao
2024-06-06 4:01 ` [PULL 1/6] tests/libqos: Add loongarch virt machine node Song Gao
2024-06-06 4:01 ` [PULL 2/6] tests/qtest: Add numa test for loongarch system Song Gao
2024-06-06 4:01 ` [PULL 3/6] hw/intc/loongarch_extioi: Add extioi virt extension definition Song Gao
2024-06-06 4:01 ` [PULL 4/6] hw/loongarch/virt: Use MemTxAttrs interface for misc ops Song Gao
2024-06-06 4:01 ` [PULL 5/6] hw/loongarch/virt: Enable extioi virt extension Song Gao
2024-06-06 4:01 ` [PULL 6/6] target/loongarch: fix a wrong print in cpu dump Song Gao
2024-06-07 0:06 ` [PULL 0/6] loongarch-to-apply queue Richard Henderson
-- strict thread matches above, loose matches on Subject: below --
2024-10-24 9:26 Song Gao
2024-10-25 18:11 ` Peter Maydell
2024-10-26 7:23 ` bibo mao
2024-12-25 2:40 Bibo Mao
2025-01-09 6:57 Bibo Mao
2025-01-09 16:32 ` Stefan Hajnoczi
2025-02-12 3:16 Bibo Mao
2025-02-12 17:39 ` Stefan Hajnoczi
2025-10-09 12:35 Song Gao
2025-10-09 16:23 ` Richard Henderson
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).