* [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
@ 2024-04-18 10:04 Zhao Liu
2024-04-18 10:04 ` [PATCH 1/3] hw/cxl/cxl-cdat: Make ct3_load_cdat() " Zhao Liu
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Zhao Liu @ 2024-04-18 10:04 UTC (permalink / raw)
To: Jonathan Cameron, Fan Ni, Michael S . Tsirkin, Marcel Apfelbaum
Cc: qemu-devel, Markus Armbruster, Zhao Liu
From: Zhao Liu <zhao1.liu@intel.com>
Hi list,
This series is the followup of the previous fix [1] to improve the error
handling.
As error.h suggested, the best practice for callee is to return
something to indicate success / failure instead of dereferencing @errp.
Thus make cxl_doe_cdat_init() as well as ct3_load_cdat() and
ct3_build_cdat() return boolean.
[1]: https://lore.kernel.org/qemu-devel/20240221094317.994454-1-zhao1.liu@linux.intel.com/
Thanks,
Zhao
---
Zhao Liu (3):
hw/cxl/cxl-cdat: Make ct3_load_cdat() return boolean
hw/cxl/cxl-cdat: Make ct3_build_cdat() return boolean
hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
hw/cxl/cxl-cdat.c | 28 +++++++++++++++-------------
hw/mem/cxl_type3.c | 3 +--
hw/pci-bridge/cxl_upstream.c | 3 +--
include/hw/cxl/cxl_component.h | 2 +-
4 files changed, 18 insertions(+), 18 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] hw/cxl/cxl-cdat: Make ct3_load_cdat() return boolean
2024-04-18 10:04 [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean Zhao Liu
@ 2024-04-18 10:04 ` Zhao Liu
2024-04-18 10:04 ` [PATCH 2/3] hw/cxl/cxl-cdat: Make ct3_build_cdat() " Zhao Liu
` (3 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Zhao Liu @ 2024-04-18 10:04 UTC (permalink / raw)
To: Jonathan Cameron, Fan Ni, Michael S . Tsirkin, Marcel Apfelbaum
Cc: qemu-devel, Markus Armbruster, Zhao Liu
From: Zhao Liu <zhao1.liu@intel.com>
As error.h suggested, the best practice for callee is to return
something to indicate success / failure.
So make ct3_load_cdat() return boolean, and this is the preparation for
cxl_doe_cdat_init() returning boolean.
Suggested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/cxl/cxl-cdat.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/hw/cxl/cxl-cdat.c b/hw/cxl/cxl-cdat.c
index 551545f7823b..b3e496857a77 100644
--- a/hw/cxl/cxl-cdat.c
+++ b/hw/cxl/cxl-cdat.c
@@ -111,7 +111,7 @@ static void ct3_build_cdat(CDATObject *cdat, Error **errp)
cdat->entry = g_steal_pointer(&cdat_st);
}
-static void ct3_load_cdat(CDATObject *cdat, Error **errp)
+static bool ct3_load_cdat(CDATObject *cdat, Error **errp)
{
g_autofree CDATEntry *cdat_st = NULL;
g_autofree uint8_t *buf = NULL;
@@ -127,11 +127,11 @@ static void ct3_load_cdat(CDATObject *cdat, Error **errp)
&file_size, &error)) {
error_setg(errp, "CDAT: File read failed: %s", error->message);
g_error_free(error);
- return;
+ return false;
}
if (file_size < sizeof(CDATTableHeader)) {
error_setg(errp, "CDAT: File too short");
- return;
+ return false;
}
i = sizeof(CDATTableHeader);
num_ent = 1;
@@ -139,19 +139,19 @@ static void ct3_load_cdat(CDATObject *cdat, Error **errp)
hdr = (CDATSubHeader *)(buf + i);
if (i + sizeof(CDATSubHeader) > file_size) {
error_setg(errp, "CDAT: Truncated table");
- return;
+ return false;
}
cdat_len_check(hdr, errp);
i += hdr->length;
if (i > file_size) {
error_setg(errp, "CDAT: Truncated table");
- return;
+ return false;
}
num_ent++;
}
if (i != file_size) {
error_setg(errp, "CDAT: File length mismatch");
- return;
+ return false;
}
cdat_st = g_new0(CDATEntry, num_ent);
@@ -185,6 +185,7 @@ static void ct3_load_cdat(CDATObject *cdat, Error **errp)
cdat->entry_len = num_ent;
cdat->entry = g_steal_pointer(&cdat_st);
cdat->buf = g_steal_pointer(&buf);
+ return true;
}
void cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp)
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/3] hw/cxl/cxl-cdat: Make ct3_build_cdat() return boolean
2024-04-18 10:04 [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean Zhao Liu
2024-04-18 10:04 ` [PATCH 1/3] hw/cxl/cxl-cdat: Make ct3_load_cdat() " Zhao Liu
@ 2024-04-18 10:04 ` Zhao Liu
2024-04-18 10:04 ` [PATCH 3/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() " Zhao Liu
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Zhao Liu @ 2024-04-18 10:04 UTC (permalink / raw)
To: Jonathan Cameron, Fan Ni, Michael S . Tsirkin, Marcel Apfelbaum
Cc: qemu-devel, Markus Armbruster, Zhao Liu
From: Zhao Liu <zhao1.liu@intel.com>
As error.h suggested, the best practice for callee is to return
something to indicate success / failure.
So make ct3_build_cdat() return boolean, and this is the preparation for
cxl_doe_cdat_init() returning boolean.
Suggested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/cxl/cxl-cdat.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/hw/cxl/cxl-cdat.c b/hw/cxl/cxl-cdat.c
index b3e496857a77..e7bc1380bfbf 100644
--- a/hw/cxl/cxl-cdat.c
+++ b/hw/cxl/cxl-cdat.c
@@ -44,7 +44,7 @@ static void cdat_len_check(CDATSubHeader *hdr, Error **errp)
}
}
-static void ct3_build_cdat(CDATObject *cdat, Error **errp)
+static bool ct3_build_cdat(CDATObject *cdat, Error **errp)
{
g_autofree CDATTableHeader *cdat_header = NULL;
g_autofree CDATEntry *cdat_st = NULL;
@@ -58,7 +58,7 @@ static void ct3_build_cdat(CDATObject *cdat, Error **errp)
cdat_header = g_malloc0(sizeof(*cdat_header));
if (!cdat_header) {
error_setg(errp, "Failed to allocate CDAT header");
- return;
+ return false;
}
cdat->built_buf_len = cdat->build_cdat_table(&cdat->built_buf,
@@ -67,14 +67,14 @@ static void ct3_build_cdat(CDATObject *cdat, Error **errp)
if (cdat->built_buf_len <= 0) {
/* Build later as not all data available yet */
cdat->to_update = true;
- return;
+ return true;
}
cdat->to_update = false;
cdat_st = g_malloc0(sizeof(*cdat_st) * (cdat->built_buf_len + 1));
if (!cdat_st) {
error_setg(errp, "Failed to allocate CDAT entry array");
- return;
+ return false;
}
/* Entry 0 for CDAT header, starts with Entry 1 */
@@ -109,6 +109,7 @@ static void ct3_build_cdat(CDATObject *cdat, Error **errp)
cdat_st[0].length = sizeof(*cdat_header);
cdat->entry_len = 1 + cdat->built_buf_len;
cdat->entry = g_steal_pointer(&cdat_st);
+ return true;
}
static bool ct3_load_cdat(CDATObject *cdat, Error **errp)
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
2024-04-18 10:04 [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean Zhao Liu
2024-04-18 10:04 ` [PATCH 1/3] hw/cxl/cxl-cdat: Make ct3_load_cdat() " Zhao Liu
2024-04-18 10:04 ` [PATCH 2/3] hw/cxl/cxl-cdat: Make ct3_build_cdat() " Zhao Liu
@ 2024-04-18 10:04 ` Zhao Liu
2024-04-18 12:06 ` Philippe Mathieu-Daudé
2024-04-18 12:06 ` [PATCH 0/3] " Philippe Mathieu-Daudé
2024-04-19 15:40 ` Philippe Mathieu-Daudé
4 siblings, 1 reply; 10+ messages in thread
From: Zhao Liu @ 2024-04-18 10:04 UTC (permalink / raw)
To: Jonathan Cameron, Fan Ni, Michael S . Tsirkin, Marcel Apfelbaum
Cc: qemu-devel, Markus Armbruster, Zhao Liu
From: Zhao Liu <zhao1.liu@intel.com>
As error.h suggested, the best practice for callee is to return
something to indicate success / failure.
With returned boolean, there's no need to dereference @errp to check
failure case.
Suggested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
hw/cxl/cxl-cdat.c | 6 +++---
hw/mem/cxl_type3.c | 3 +--
hw/pci-bridge/cxl_upstream.c | 3 +--
include/hw/cxl/cxl_component.h | 2 +-
4 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/hw/cxl/cxl-cdat.c b/hw/cxl/cxl-cdat.c
index e7bc1380bfbf..959a55518e65 100644
--- a/hw/cxl/cxl-cdat.c
+++ b/hw/cxl/cxl-cdat.c
@@ -189,14 +189,14 @@ static bool ct3_load_cdat(CDATObject *cdat, Error **errp)
return true;
}
-void cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp)
+bool cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp)
{
CDATObject *cdat = &cxl_cstate->cdat;
if (cdat->filename) {
- ct3_load_cdat(cdat, errp);
+ return ct3_load_cdat(cdat, errp);
} else {
- ct3_build_cdat(cdat, errp);
+ return ct3_build_cdat(cdat, errp);
}
}
diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c
index b0a7e9f11b64..3e42490b6ce8 100644
--- a/hw/mem/cxl_type3.c
+++ b/hw/mem/cxl_type3.c
@@ -705,8 +705,7 @@ static void ct3_realize(PCIDevice *pci_dev, Error **errp)
cxl_cstate->cdat.build_cdat_table = ct3_build_cdat_table;
cxl_cstate->cdat.free_cdat_table = ct3_free_cdat_table;
cxl_cstate->cdat.private = ct3d;
- cxl_doe_cdat_init(cxl_cstate, errp);
- if (*errp) {
+ if (!cxl_doe_cdat_init(cxl_cstate, errp)) {
goto err_free_special_ops;
}
diff --git a/hw/pci-bridge/cxl_upstream.c b/hw/pci-bridge/cxl_upstream.c
index 783fa6adac19..e51221a5f334 100644
--- a/hw/pci-bridge/cxl_upstream.c
+++ b/hw/pci-bridge/cxl_upstream.c
@@ -338,8 +338,7 @@ static void cxl_usp_realize(PCIDevice *d, Error **errp)
cxl_cstate->cdat.build_cdat_table = build_cdat_table;
cxl_cstate->cdat.free_cdat_table = free_default_cdat_table;
cxl_cstate->cdat.private = d;
- cxl_doe_cdat_init(cxl_cstate, errp);
- if (*errp) {
+ if (!cxl_doe_cdat_init(cxl_cstate, errp)) {
goto err_cap;
}
diff --git a/include/hw/cxl/cxl_component.h b/include/hw/cxl/cxl_component.h
index 5012fab6f763..945ee6ffd045 100644
--- a/include/hw/cxl/cxl_component.h
+++ b/include/hw/cxl/cxl_component.h
@@ -273,7 +273,7 @@ hwaddr cxl_decode_ig(int ig);
CXLComponentState *cxl_get_hb_cstate(PCIHostState *hb);
bool cxl_get_hb_passthrough(PCIHostState *hb);
-void cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp);
+bool cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp);
void cxl_doe_cdat_release(CXLComponentState *cxl_cstate);
void cxl_doe_cdat_update(CXLComponentState *cxl_cstate, Error **errp);
--
2.34.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
2024-04-18 10:04 ` [PATCH 3/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() " Zhao Liu
@ 2024-04-18 12:06 ` Philippe Mathieu-Daudé
2024-04-18 13:38 ` Zhao Liu
0 siblings, 1 reply; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-04-18 12:06 UTC (permalink / raw)
To: Zhao Liu, Jonathan Cameron, Fan Ni, Michael S . Tsirkin,
Marcel Apfelbaum
Cc: qemu-devel, Markus Armbruster, Zhao Liu
On 18/4/24 12:04, Zhao Liu wrote:
> From: Zhao Liu <zhao1.liu@intel.com>
>
> As error.h suggested, the best practice for callee is to return
> something to indicate success / failure.
>
> With returned boolean, there's no need to dereference @errp to check
> failure case.
>
> Suggested-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
> ---
> hw/cxl/cxl-cdat.c | 6 +++---
> hw/mem/cxl_type3.c | 3 +--
> hw/pci-bridge/cxl_upstream.c | 3 +--
> include/hw/cxl/cxl_component.h | 2 +-
> 4 files changed, 6 insertions(+), 8 deletions(-)
> diff --git a/include/hw/cxl/cxl_component.h b/include/hw/cxl/cxl_component.h
> index 5012fab6f763..945ee6ffd045 100644
> --- a/include/hw/cxl/cxl_component.h
> +++ b/include/hw/cxl/cxl_component.h
> @@ -273,7 +273,7 @@ hwaddr cxl_decode_ig(int ig);
> CXLComponentState *cxl_get_hb_cstate(PCIHostState *hb);
> bool cxl_get_hb_passthrough(PCIHostState *hb);
>
> -void cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp);
> +bool cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp);
> void cxl_doe_cdat_release(CXLComponentState *cxl_cstate);
> void cxl_doe_cdat_update(CXLComponentState *cxl_cstate, Error **errp);
Another candidate ;)
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
2024-04-18 10:04 [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean Zhao Liu
` (2 preceding siblings ...)
2024-04-18 10:04 ` [PATCH 3/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() " Zhao Liu
@ 2024-04-18 12:06 ` Philippe Mathieu-Daudé
2024-04-18 12:57 ` Jonathan Cameron via
2024-04-19 15:40 ` Philippe Mathieu-Daudé
4 siblings, 1 reply; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-04-18 12:06 UTC (permalink / raw)
To: Zhao Liu, Jonathan Cameron, Fan Ni, Michael S . Tsirkin,
Marcel Apfelbaum
Cc: qemu-devel, Markus Armbruster, Zhao Liu
On 18/4/24 12:04, Zhao Liu wrote:
> From: Zhao Liu <zhao1.liu@intel.com>
> ---
> Zhao Liu (3):
> hw/cxl/cxl-cdat: Make ct3_load_cdat() return boolean
> hw/cxl/cxl-cdat: Make ct3_build_cdat() return boolean
> hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
Series:
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
2024-04-18 12:06 ` [PATCH 0/3] " Philippe Mathieu-Daudé
@ 2024-04-18 12:57 ` Jonathan Cameron via
0 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron via @ 2024-04-18 12:57 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: Zhao Liu, Fan Ni, Michael S . Tsirkin, Marcel Apfelbaum,
qemu-devel, Markus Armbruster, Zhao Liu
On Thu, 18 Apr 2024 14:06:39 +0200
Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
> On 18/4/24 12:04, Zhao Liu wrote:
> > From: Zhao Liu <zhao1.liu@intel.com>
>
>
> > ---
> > Zhao Liu (3):
> > hw/cxl/cxl-cdat: Make ct3_load_cdat() return boolean
> > hw/cxl/cxl-cdat: Make ct3_build_cdat() return boolean
> > hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
>
> Series:
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
2024-04-18 12:06 ` Philippe Mathieu-Daudé
@ 2024-04-18 13:38 ` Zhao Liu
0 siblings, 0 replies; 10+ messages in thread
From: Zhao Liu @ 2024-04-18 13:38 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: Zhao Liu, Jonathan Cameron, Fan Ni, Michael S . Tsirkin,
Marcel Apfelbaum, qemu-devel, Markus Armbruster
Hi Philippe,
On Thu, Apr 18, 2024 at 02:06:15PM +0200, Philippe Mathieu-Daudé wrote:
[snip]
> > diff --git a/include/hw/cxl/cxl_component.h b/include/hw/cxl/cxl_component.h
> > index 5012fab6f763..945ee6ffd045 100644
> > --- a/include/hw/cxl/cxl_component.h
> > +++ b/include/hw/cxl/cxl_component.h
> > @@ -273,7 +273,7 @@ hwaddr cxl_decode_ig(int ig);
> > CXLComponentState *cxl_get_hb_cstate(PCIHostState *hb);
> > bool cxl_get_hb_passthrough(PCIHostState *hb);
> > -void cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp);
> > +bool cxl_doe_cdat_init(CXLComponentState *cxl_cstate, Error **errp);
> > void cxl_doe_cdat_release(CXLComponentState *cxl_cstate);
> > void cxl_doe_cdat_update(CXLComponentState *cxl_cstate, Error **errp);
>
> Another candidate ;)
>
I guess you mean cxl_doe_cdat_update()? ;-)
It's a special case since it has only one use case and in that case,
&error_fatal is passed as @errp. So then it doesn't need to check the
return value.
Thanks,
Zhao
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
2024-04-18 10:04 [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean Zhao Liu
` (3 preceding siblings ...)
2024-04-18 12:06 ` [PATCH 0/3] " Philippe Mathieu-Daudé
@ 2024-04-19 15:40 ` Philippe Mathieu-Daudé
2024-04-22 8:33 ` Jonathan Cameron via
4 siblings, 1 reply; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-04-19 15:40 UTC (permalink / raw)
To: Zhao Liu, Jonathan Cameron, Fan Ni, Michael S . Tsirkin,
Marcel Apfelbaum
Cc: qemu-devel, Markus Armbruster, Zhao Liu
On 18/4/24 12:04, Zhao Liu wrote:
> From: Zhao Liu <zhao1.liu@intel.com>
> ---
> Zhao Liu (3):
> hw/cxl/cxl-cdat: Make ct3_load_cdat() return boolean
> hw/cxl/cxl-cdat: Make ct3_build_cdat() return boolean
> hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
Since Jonathan Ack'ed the series, I'm queuing it via my hw-misc tree.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
2024-04-19 15:40 ` Philippe Mathieu-Daudé
@ 2024-04-22 8:33 ` Jonathan Cameron via
0 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron via @ 2024-04-22 8:33 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: Zhao Liu, Fan Ni, Michael S . Tsirkin, Marcel Apfelbaum,
qemu-devel, Markus Armbruster, Zhao Liu
On Fri, 19 Apr 2024 17:40:07 +0200
Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
> On 18/4/24 12:04, Zhao Liu wrote:
> > From: Zhao Liu <zhao1.liu@intel.com>
>
>
> > ---
> > Zhao Liu (3):
> > hw/cxl/cxl-cdat: Make ct3_load_cdat() return boolean
> > hw/cxl/cxl-cdat: Make ct3_build_cdat() return boolean
> > hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
>
> Since Jonathan Ack'ed the series, I'm queuing it via my hw-misc tree.
>
Thanks,
J
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-04-22 8:34 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-18 10:04 [PATCH 0/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean Zhao Liu
2024-04-18 10:04 ` [PATCH 1/3] hw/cxl/cxl-cdat: Make ct3_load_cdat() " Zhao Liu
2024-04-18 10:04 ` [PATCH 2/3] hw/cxl/cxl-cdat: Make ct3_build_cdat() " Zhao Liu
2024-04-18 10:04 ` [PATCH 3/3] hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() " Zhao Liu
2024-04-18 12:06 ` Philippe Mathieu-Daudé
2024-04-18 13:38 ` Zhao Liu
2024-04-18 12:06 ` [PATCH 0/3] " Philippe Mathieu-Daudé
2024-04-18 12:57 ` Jonathan Cameron via
2024-04-19 15:40 ` Philippe Mathieu-Daudé
2024-04-22 8:33 ` Jonathan Cameron via
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.