From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Davidlohr Bueso <dave@stgolabs.net>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Fan Ni <fan.ni@samsung.com>
Subject: [PULL v2 06/61] hw/cxl: Add get scan media capabilities cmd support
Date: Tue, 23 Jul 2024 06:55:37 -0400 [thread overview]
Message-ID: <d61cc5b6a8d373376a8bf5ec29cfc3267a29efbe.1721731723.git.mst@redhat.com> (raw)
In-Reply-To: <cover.1721731723.git.mst@redhat.com>
From: Davidlohr Bueso <dave@stgolabs.net>
Use simple heuristics to determine the cost of scanning any given
chunk, assuming cost is equal across the whole device, without
differentiating between volatile or persistent partitions. This
is aligned to the fact that these constraints are not enforced
in respective poison query commands.
Signed-off-by: Davidlohr Bueso <dave@stgolabs.net>
Link: https://lore.kernel.org/r/20230908073152.4386-3-dave@stgolabs.net
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Message-Id: <20240705120643.959422-2-Jonathan.Cameron@huawei.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/hw/cxl/cxl_device.h | 9 ++
hw/cxl/cxl-mailbox-utils.c | 211 +++++++++++++++++++++++++++++++++++-
hw/mem/cxl_type3.c | 22 ++--
3 files changed, 233 insertions(+), 9 deletions(-)
diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h
index 0a4fcb2800..b5beb7f90e 100644
--- a/include/hw/cxl/cxl_device.h
+++ b/include/hw/cxl/cxl_device.h
@@ -397,6 +397,11 @@ static inline void __toggle_media(CXLDeviceState *cxl_dstate, int val)
#define cxl_dev_enable_media(cxlds) \
do { __toggle_media((cxlds), 0x1); } while (0)
+static inline bool scan_media_running(CXLCCI *cci)
+{
+ return !!cci->bg.runtime && cci->bg.opcode == 0x4304;
+}
+
static inline bool sanitize_running(CXLCCI *cci)
{
return !!cci->bg.runtime && cci->bg.opcode == 0x4400;
@@ -491,6 +496,9 @@ struct CXLType3Dev {
unsigned int poison_list_cnt;
bool poison_list_overflowed;
uint64_t poison_list_overflow_ts;
+ /* Poison Injection - backup */
+ CXLPoisonList poison_list_bkp;
+ CXLPoisonList scan_media_results;
struct dynamic_capacity {
HostMemoryBackend *host_dc;
@@ -558,6 +566,7 @@ CXLRetCode cxl_event_clear_records(CXLDeviceState *cxlds,
void cxl_event_irq_assert(CXLType3Dev *ct3d);
void cxl_set_poison_list_overflowed(CXLType3Dev *ct3d);
+void cxl_clear_poison_list_overflowed(CXLType3Dev *ct3d);
CXLDCRegion *cxl_find_dc_region(CXLType3Dev *ct3d, uint64_t dpa, uint64_t len);
diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c
index facec42dc8..8ae9c6a699 100644
--- a/hw/cxl/cxl-mailbox-utils.c
+++ b/hw/cxl/cxl-mailbox-utils.c
@@ -83,6 +83,8 @@ enum {
#define GET_POISON_LIST 0x0
#define INJECT_POISON 0x1
#define CLEAR_POISON 0x2
+ #define GET_SCAN_MEDIA_CAPABILITIES 0x3
+ #define SCAN_MEDIA 0x4
DCD_CONFIG = 0x48,
#define GET_DC_CONFIG 0x0
#define GET_DYN_CAP_EXT_LIST 0x1
@@ -1110,6 +1112,10 @@ static CXLRetCode cmd_media_get_poison_list(const struct cxl_cmd *cmd,
out->flags = (1 << 1);
stq_le_p(&out->overflow_timestamp, ct3d->poison_list_overflow_ts);
}
+ if (scan_media_running(cci)) {
+ out->flags |= (1 << 2);
+ }
+
stw_le_p(&out->count, record_count);
*len_out = out_pl_len;
return CXL_MBOX_SUCCESS;
@@ -1139,6 +1145,16 @@ static CXLRetCode cmd_media_inject_poison(const struct cxl_cmd *cmd,
return CXL_MBOX_SUCCESS;
}
}
+ /*
+ * Freeze the list if there is an on-going scan media operation.
+ */
+ if (scan_media_running(cci)) {
+ /*
+ * XXX: Spec is ambiguous - is this case considered
+ * a successful return despite not adding to the list?
+ */
+ goto success;
+ }
if (ct3d->poison_list_cnt == CXL_POISON_LIST_LIMIT) {
return CXL_MBOX_INJECT_POISON_LIMIT;
@@ -1154,6 +1170,7 @@ static CXLRetCode cmd_media_inject_poison(const struct cxl_cmd *cmd,
*/
QLIST_INSERT_HEAD(poison_list, p, node);
ct3d->poison_list_cnt++;
+success:
*len_out = 0;
return CXL_MBOX_SUCCESS;
@@ -1193,6 +1210,17 @@ static CXLRetCode cmd_media_clear_poison(const struct cxl_cmd *cmd,
}
}
+ /*
+ * Freeze the list if there is an on-going scan media operation.
+ */
+ if (scan_media_running(cci)) {
+ /*
+ * XXX: Spec is ambiguous - is this case considered
+ * a successful return despite not removing from the list?
+ */
+ goto success;
+ }
+
QLIST_FOREACH(ent, poison_list, node) {
/*
* Test for contained in entry. Simpler than general case
@@ -1203,7 +1231,7 @@ static CXLRetCode cmd_media_clear_poison(const struct cxl_cmd *cmd,
}
}
if (!ent) {
- return CXL_MBOX_SUCCESS;
+ goto success;
}
QLIST_REMOVE(ent, node);
@@ -1240,11 +1268,180 @@ static CXLRetCode cmd_media_clear_poison(const struct cxl_cmd *cmd,
}
/* Any fragments have been added, free original entry */
g_free(ent);
+success:
*len_out = 0;
return CXL_MBOX_SUCCESS;
}
+/*
+ * CXL r3.1 section 8.2.9.9.4.4: Get Scan Media Capabilities
+ */
+static CXLRetCode
+cmd_media_get_scan_media_capabilities(const struct cxl_cmd *cmd,
+ uint8_t *payload_in,
+ size_t len_in,
+ uint8_t *payload_out,
+ size_t *len_out,
+ CXLCCI *cci)
+{
+ struct get_scan_media_capabilities_pl {
+ uint64_t pa;
+ uint64_t length;
+ } QEMU_PACKED;
+
+ struct get_scan_media_capabilities_out_pl {
+ uint32_t estimated_runtime_ms;
+ };
+
+ CXLType3Dev *ct3d = CXL_TYPE3(cci->d);
+ CXLDeviceState *cxl_dstate = &ct3d->cxl_dstate;
+ struct get_scan_media_capabilities_pl *in = (void *)payload_in;
+ struct get_scan_media_capabilities_out_pl *out = (void *)payload_out;
+ uint64_t query_start;
+ uint64_t query_length;
+
+ query_start = ldq_le_p(&in->pa);
+ /* 64 byte alignment required */
+ if (query_start & 0x3f) {
+ return CXL_MBOX_INVALID_INPUT;
+ }
+ query_length = ldq_le_p(&in->length) * CXL_CACHE_LINE_SIZE;
+
+ if (query_start + query_length > cxl_dstate->static_mem_size) {
+ return CXL_MBOX_INVALID_PA;
+ }
+
+ /*
+ * Just use 400 nanosecond access/read latency + 100 ns for
+ * the cost of updating the poison list. For small enough
+ * chunks return at least 1 ms.
+ */
+ stl_le_p(&out->estimated_runtime_ms,
+ MAX(1, query_length * (0.0005L / 64)));
+
+ *len_out = sizeof(*out);
+ return CXL_MBOX_SUCCESS;
+}
+
+static void __do_scan_media(CXLType3Dev *ct3d)
+{
+ CXLPoison *ent;
+ unsigned int results_cnt = 0;
+
+ QLIST_FOREACH(ent, &ct3d->scan_media_results, node) {
+ results_cnt++;
+ }
+
+ /* only scan media may clear the overflow */
+ if (ct3d->poison_list_overflowed &&
+ ct3d->poison_list_cnt == results_cnt) {
+ cxl_clear_poison_list_overflowed(ct3d);
+ }
+}
+
+/*
+ * CXL r3.1 section 8.2.9.9.4.5: Scan Media
+ */
+static CXLRetCode cmd_media_scan_media(const struct cxl_cmd *cmd,
+ uint8_t *payload_in,
+ size_t len_in,
+ uint8_t *payload_out,
+ size_t *len_out,
+ CXLCCI *cci)
+{
+ struct scan_media_pl {
+ uint64_t pa;
+ uint64_t length;
+ uint8_t flags;
+ } QEMU_PACKED;
+
+ struct scan_media_pl *in = (void *)payload_in;
+ CXLType3Dev *ct3d = CXL_TYPE3(cci->d);
+ CXLDeviceState *cxl_dstate = &ct3d->cxl_dstate;
+ uint64_t query_start;
+ uint64_t query_length;
+ CXLPoison *ent, *next;
+
+ query_start = ldq_le_p(&in->pa);
+ /* 64 byte alignment required */
+ if (query_start & 0x3f) {
+ return CXL_MBOX_INVALID_INPUT;
+ }
+ query_length = ldq_le_p(&in->length) * CXL_CACHE_LINE_SIZE;
+
+ if (query_start + query_length > cxl_dstate->static_mem_size) {
+ return CXL_MBOX_INVALID_PA;
+ }
+ if (ct3d->dc.num_regions && query_start + query_length >=
+ cxl_dstate->static_mem_size + ct3d->dc.total_capacity) {
+ return CXL_MBOX_INVALID_PA;
+ }
+
+ if (in->flags == 0) { /* TODO */
+ qemu_log_mask(LOG_UNIMP,
+ "Scan Media Event Log is unsupported\n");
+ }
+
+ /* any previous results are discarded upon a new Scan Media */
+ QLIST_FOREACH_SAFE(ent, &ct3d->scan_media_results, node, next) {
+ QLIST_REMOVE(ent, node);
+ g_free(ent);
+ }
+
+ /* kill the poison list - it will be recreated */
+ if (ct3d->poison_list_overflowed) {
+ QLIST_FOREACH_SAFE(ent, &ct3d->poison_list, node, next) {
+ QLIST_REMOVE(ent, node);
+ g_free(ent);
+ ct3d->poison_list_cnt--;
+ }
+ }
+
+ /*
+ * Scan the backup list and move corresponding entries
+ * into the results list, updating the poison list
+ * when possible.
+ */
+ QLIST_FOREACH_SAFE(ent, &ct3d->poison_list_bkp, node, next) {
+ CXLPoison *res;
+
+ if (ent->start >= query_start + query_length ||
+ ent->start + ent->length <= query_start) {
+ continue;
+ }
+
+ /*
+ * If a Get Poison List cmd comes in while this
+ * scan is being done, it will see the new complete
+ * list, while setting the respective flag.
+ */
+ if (ct3d->poison_list_cnt < CXL_POISON_LIST_LIMIT) {
+ CXLPoison *p = g_new0(CXLPoison, 1);
+
+ p->start = ent->start;
+ p->length = ent->length;
+ p->type = ent->type;
+ QLIST_INSERT_HEAD(&ct3d->poison_list, p, node);
+ ct3d->poison_list_cnt++;
+ }
+
+ res = g_new0(CXLPoison, 1);
+ res->start = ent->start;
+ res->length = ent->length;
+ res->type = ent->type;
+ QLIST_INSERT_HEAD(&ct3d->scan_media_results, res, node);
+
+ QLIST_REMOVE(ent, node);
+ g_free(ent);
+ }
+
+ cci->bg.runtime = MAX(1, query_length * (0.0005L / 64));
+ *len_out = 0;
+
+ return CXL_MBOX_BG_STARTED;
+}
+
/*
* CXL r3.1 section 8.2.9.9.9.1: Get Dynamic Capacity Configuration
* (Opcode: 4800h)
@@ -1857,6 +2054,11 @@ static const struct cxl_cmd cxl_cmd_set[256][256] = {
cmd_media_inject_poison, 8, 0 },
[MEDIA_AND_POISON][CLEAR_POISON] = { "MEDIA_AND_POISON_CLEAR_POISON",
cmd_media_clear_poison, 72, 0 },
+ [MEDIA_AND_POISON][GET_SCAN_MEDIA_CAPABILITIES] = {
+ "MEDIA_AND_POISON_GET_SCAN_MEDIA_CAPABILITIES",
+ cmd_media_get_scan_media_capabilities, 16, 0 },
+ [MEDIA_AND_POISON][SCAN_MEDIA] = { "MEDIA_AND_POISON_SCAN_MEDIA",
+ cmd_media_scan_media, 17, BACKGROUND_OPERATION },
};
static const struct cxl_cmd cxl_cmd_set_dcd[256][256] = {
@@ -1988,8 +2190,13 @@ static void bg_timercb(void *opaque)
cxl_dev_enable_media(&ct3d->cxl_dstate);
}
break;
- case 0x4304: /* TODO: scan media */
+ case 0x4304: /* scan media */
+ {
+ CXLType3Dev *ct3d = CXL_TYPE3(cci->d);
+
+ __do_scan_media(ct3d);
break;
+ }
default:
__builtin_unreachable();
break;
diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c
index e7fbbb4d51..e763b9bff0 100644
--- a/hw/mem/cxl_type3.c
+++ b/hw/mem/cxl_type3.c
@@ -1319,6 +1319,12 @@ void cxl_set_poison_list_overflowed(CXLType3Dev *ct3d)
cxl_device_get_timestamp(&ct3d->cxl_dstate);
}
+void cxl_clear_poison_list_overflowed(CXLType3Dev *ct3d)
+{
+ ct3d->poison_list_overflowed = false;
+ ct3d->poison_list_overflow_ts = 0;
+}
+
void qmp_cxl_inject_poison(const char *path, uint64_t start, uint64_t length,
Error **errp)
{
@@ -1355,19 +1361,21 @@ void qmp_cxl_inject_poison(const char *path, uint64_t start, uint64_t length,
}
}
- if (ct3d->poison_list_cnt == CXL_POISON_LIST_LIMIT) {
- cxl_set_poison_list_overflowed(ct3d);
- return;
- }
-
p = g_new0(CXLPoison, 1);
p->length = length;
p->start = start;
/* Different from injected via the mbox */
p->type = CXL_POISON_TYPE_INTERNAL;
- QLIST_INSERT_HEAD(&ct3d->poison_list, p, node);
- ct3d->poison_list_cnt++;
+ if (ct3d->poison_list_cnt < CXL_POISON_LIST_LIMIT) {
+ QLIST_INSERT_HEAD(&ct3d->poison_list, p, node);
+ ct3d->poison_list_cnt++;
+ } else {
+ if (!ct3d->poison_list_overflowed) {
+ cxl_set_poison_list_overflowed(ct3d);
+ }
+ QLIST_INSERT_HEAD(&ct3d->poison_list_bkp, p, node);
+ }
}
/* For uncorrectable errors include support for multiple header recording */
--
MST
next prev parent reply other threads:[~2024-07-23 10:56 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-23 10:55 [PULL v2 00/61] virtio,pci,pc: features,fixes Michael S. Tsirkin
2024-07-23 10:55 ` [PULL v2 01/61] hw/virtio/virtio-crypto: Fix op_code assignment in virtio_crypto_create_asym_session Michael S. Tsirkin
2024-07-23 10:55 ` [PULL v2 02/61] MAINTAINERS: add Stefano Garzarella as vhost/vhost-user reviewer Michael S. Tsirkin
2024-07-23 10:55 ` [PULL v2 03/61] hw/cxl/cxl-mailbox-utils: remove unneeded mailbox output payload space zeroing Michael S. Tsirkin
2024-07-23 10:55 ` [PULL v2 04/61] hw/cxl: Check for multiple mappings of memory backends Michael S. Tsirkin
2024-07-23 10:55 ` [PULL v2 05/61] hw/cxl/cxl-host: Fix segmentation fault when getting cxl-fmw property Michael S. Tsirkin
2024-07-23 10:55 ` Michael S. Tsirkin [this message]
2024-07-23 10:55 ` [PULL v2 07/61] hw/cxl/mbox: replace sanitize_running() with cxl_dev_media_disabled() Michael S. Tsirkin
2024-07-23 10:55 ` [PULL v2 08/61] hw/cxl/events: discard all event records during sanitation Michael S. Tsirkin
2024-07-23 10:55 ` [PULL v2 09/61] hw/cxl: Add get scan media results cmd support Michael S. Tsirkin
2024-07-23 10:56 ` [PULL v2 10/61] cxl/mailbox: move mailbox effect definitions to a header Michael S. Tsirkin
2024-07-23 10:56 ` [PULL v2 11/61] hw/cxl/cxl-mailbox-utils: Add support for feature commands (8.2.9.6) Michael S. Tsirkin
2024-07-23 10:56 ` [PULL v2 12/61] hw/cxl/cxl-mailbox-utils: Add device patrol scrub control feature Michael S. Tsirkin
2024-07-23 10:56 ` [PULL v2 13/61] hw/cxl/cxl-mailbox-utils: Add device DDR5 ECS " Michael S. Tsirkin
2024-07-23 10:56 ` [PULL v2 14/61] hw/cxl: Support firmware updates Michael S. Tsirkin
2024-07-23 10:56 ` [PULL v2 15/61] MAINTAINERS: Add myself as a VT-d reviewer Michael S. Tsirkin
2024-07-23 10:56 ` [PULL v2 16/61] virtio-snd: add max size bounds check in input cb Michael S. Tsirkin
2024-07-23 10:56 ` [PULL v2 17/61] virtio-snd: check for invalid param shift operands Michael S. Tsirkin
2024-07-27 6:55 ` Volker Rümelin
2024-08-01 8:22 ` Michael S. Tsirkin
2024-08-02 5:03 ` Volker Rümelin
2024-08-02 11:13 ` Manos Pitsidianakis
2024-07-23 10:56 ` [PULL v2 18/61] intel_iommu: fix FRCD construction macro Michael S. Tsirkin
2024-07-24 4:41 ` Michael Tokarev
2024-07-23 10:56 ` [PULL v2 19/61] intel_iommu: move VTD_FRCD_PV and VTD_FRCD_PP declarations Michael S. Tsirkin
2024-07-23 10:56 ` [PULL v2 20/61] intel_iommu: fix type of the mask field in VTDIOTLBPageInvInfo Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 21/61] intel_iommu: make type match Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 22/61] virtio: Add bool to VirtQueueElement Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 23/61] virtio: virtqueue_pop - VIRTIO_F_IN_ORDER support Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 24/61] virtio: virtqueue_ordered_fill " Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 25/61] virtio: virtqueue_ordered_flush " Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 26/61] vhost,vhost-user: Add VIRTIO_F_IN_ORDER to vhost feature bits Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 27/61] virtio: Add VIRTIO_F_IN_ORDER property definition Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 28/61] contrib/vhost-user-blk: fix overflowing expression Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 29/61] hw/pci: Fix SR-IOV VF number calculation Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 30/61] pcie_sriov: Ensure PF and VF are mutually exclusive Michael S. Tsirkin
2024-07-23 10:57 ` [PULL v2 31/61] pcie_sriov: Check PCI Express for SR-IOV PF Michael S. Tsirkin
2024-07-23 10:58 ` [PULL v2 32/61] pcie_sriov: Allow user to create SR-IOV device Michael S. Tsirkin
2024-07-23 10:58 ` [PULL v2 33/61] virtio-pci: Implement SR-IOV PF Michael S. Tsirkin
2024-07-23 10:58 ` [PULL v2 34/61] virtio-net: Implement SR-IOV VF Michael S. Tsirkin
2024-07-23 11:00 ` Akihiko Odaki
2024-07-23 11:02 ` Michael S. Tsirkin
2024-07-23 10:58 ` [PULL v2 35/61] docs: Document composable SR-IOV device Michael S. Tsirkin
2024-07-23 10:58 ` [PULL v2 36/61] smbios: make memory device size configurable per Machine Michael S. Tsirkin
2024-07-23 10:58 ` [PULL v2 37/61] accel/kvm: Extract common KVM vCPU {creation,parking} code Michael S. Tsirkin
2024-07-25 10:35 ` Peter Maydell
2024-07-25 12:05 ` Salil Mehta via
2024-07-25 12:27 ` Peter Maydell
2024-07-25 14:56 ` Salil Mehta via
2024-07-23 10:58 ` [PULL v2 38/61] hw/acpi: Move CPU ctrl-dev MMIO region len macro to common header file Michael S. Tsirkin
2024-07-23 10:59 ` [PULL v2 39/61] hw/acpi: Update ACPI GED framework to support vCPU Hotplug Michael S. Tsirkin
2024-07-23 10:59 ` [PULL v2 40/61] hw/acpi: Update GED _EVT method AML with CPU scan Michael S. Tsirkin
2024-10-14 8:52 ` maobibo
2024-10-14 9:37 ` Igor Mammedov
2024-10-14 20:05 ` Salil Mehta via
2024-10-15 9:31 ` Igor Mammedov
2024-10-15 9:41 ` Salil Mehta via
2024-10-15 14:34 ` Igor Mammedov
2024-10-15 14:42 ` Salil Mehta via
2024-10-14 19:59 ` Salil Mehta via
2024-10-15 1:20 ` maobibo
2024-10-15 9:34 ` Salil Mehta via
2024-07-23 10:59 ` [PULL v2 41/61] hw/acpi: Update CPUs AML with cpu-(ctrl)dev change Michael S. Tsirkin
2024-07-23 10:59 ` [PULL v2 42/61] physmem: Add helper function to destroy CPU AddressSpace Michael S. Tsirkin
2024-08-19 15:22 ` Peter Maydell
2025-02-05 12:11 ` Ilya Leoshkevich
2024-07-23 10:59 ` [PULL v2 43/61] gdbstub: Add helper function to unregister GDB register space Michael S. Tsirkin
2024-07-23 10:59 ` [PULL v2 44/61] Revert "virtio-iommu: Clear IOMMUDevice when VFIO device is unplugged" Michael S. Tsirkin
2024-07-23 10:59 ` [PULL v2 45/61] virtio-iommu: Remove probe_done Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 46/61] virtio-iommu: Free [host_]resv_ranges on unset_iommu_devices Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 47/61] virtio-iommu: Remove the end point on detach Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 48/61] hw/vfio/common: Add vfio_listener_region_del_iommu trace event Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 49/61] virtio-iommu: Add trace point on virtio_iommu_detach_endpoint_from_domain Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 50/61] hw/riscv/virt-acpi-build.c: Add namespace devices for PLIC and APLIC Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 51/61] hw/riscv/virt-acpi-build.c: Update the HID of RISC-V UART Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 52/61] tests/acpi: Allow DSDT acpi table changes for aarch64 Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 53/61] acpi/gpex: Create PCI link devices outside PCI root bridge Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 54/61] tests/acpi: update expected DSDT blob for aarch64 and microvm Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 55/61] tests/qtest/bios-tables-test.c: Remove the fall back path Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 56/61] tests/acpi: Add empty ACPI data files for RISC-V Michael S. Tsirkin
2024-07-23 11:00 ` [PULL v2 57/61] tests/qtest/bios-tables-test.c: Enable basic testing " Michael S. Tsirkin
2024-07-23 11:01 ` [PULL v2 58/61] tests/acpi: Add expected ACPI AML files " Michael S. Tsirkin
2024-07-23 11:01 ` [PULL v2 59/61] hw/pci: Add all Data Object Types defined in PCIe r6.0 Michael S. Tsirkin
2024-07-23 11:01 ` [PULL v2 60/61] backends: Initial support for SPDM socket support Michael S. Tsirkin
2024-07-23 11:01 ` [PULL v2 61/61] hw/nvme: Add SPDM over DOE support Michael S. Tsirkin
2024-07-24 1:24 ` [PULL v2 00/61] virtio,pci,pc: features,fixes Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d61cc5b6a8d373376a8bf5ec29cfc3267a29efbe.1721731723.git.mst@redhat.com \
--to=mst@redhat.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=dave@stgolabs.net \
--cc=fan.ni@samsung.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).