Zhao Liu
e0ddabc6d4
hw/cxl/cxl-cdat: Make cxl_doe_cdat_init() return boolean
...
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 >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-ID: <20240418100433.1085447-4-zhao1.liu@linux.intel.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-04-25 12:48:12 +02:00
Zhao Liu
a133d207a8
hw/cxl/cxl-cdat: Make ct3_build_cdat() return boolean
...
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 >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-ID: <20240418100433.1085447-3-zhao1.liu@linux.intel.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-04-25 12:48:12 +02:00
Zhao Liu
2c5b2d9128
hw/cxl/cxl-cdat: Make ct3_load_cdat() return boolean
...
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 >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-ID: <20240418100433.1085447-2-zhao1.liu@linux.intel.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-04-25 12:48:12 +02:00
Thomas Huth
c4e898d502
hw/cxl/cxl-cdat: Fix type of buf in ct3_load_cdat()
...
When setting GLIB_VERSION_MAX_ALLOWED to GLIB_VERSION_2_58 or higher
(which we'll certainly do in the not too distant future), glib adds
type safety checks to the g_steal_pointer() macro. This trigger an
error in the ct3_load_cdat() function: The local char *buf variable is
assigned to uint8_t *buf in CDATObject, i.e. a pointer of a different
type. Change the local variable to the same type as buf in CDATObject
to avoid the error.
Signed-off-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2024-03-09 18:56:37 +03:00
Ira Weiny
64fdad5e67
cxl/cdat: Fix header sum value in CDAT checksum
...
The addition of the DCD support for CXL type-3 devices extended the CDAT
table large enough that the checksum being returned was incorrect.[1]
This was because the checksum value was using the header length field
rather than each of the 4 bytes of the length field. This was
previously not seen because the length of the CDAT data was less than
256 thus resulting in an equivalent checksum value.
Properly calculate the checksum for the CDAT header.
[1] https://lore.kernel.org/all/20231116-fix-cdat-devm-free-v1-1-b148b40707d7@intel.com/
Fixes: aba578bdac
("hw/cxl/cdat: CXL CDAT Data Object Exchange implementation")
Cc: Huai-Cheng Kuo <hchkuo@avery-design.com.tw >
Signed-off-by: Ira Weiny <ira.weiny@intel.com >
Reviewed-by: Dave Jiang <dave.jiang@intel.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20240126120132.24248-5-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2024-02-14 06:09:32 -05:00
Ira Weiny
c62926f730
cxl/cdat: Handle cdat table build errors
...
The callback for building CDAT tables may return negative error codes.
This was previously unhandled and will result in potentially huge
allocations later on in ct3_build_cdat()
Detect the negative error code and defer cdat building.
Fixes: f5ee7413d5
("hw/mem/cxl-type3: Add CXL CDAT Data Object Exchange")
Cc: Huai-Cheng Kuo <hchkuo@avery-design.com.tw >
Reviewed-by: Dave Jiang <dave.jiang@intel.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Signed-off-by: Ira Weiny <ira.weiny@intel.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20240126120132.24248-2-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2024-02-14 06:09:32 -05:00
Jonathan Cameron
b342489ae7
hw/cxl: Line length reductions
...
Michael Tsirkin observed that there were some unnecessarily
long lines in the CXL code in a recent review.
This patch is intended to rectify that where it does not
hurt readability.
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Message-Id: <20231023140210.3089-5-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-11-07 03:39:11 -05:00
Jonathan Cameron
7b22a3218a
hw/cxl: cdat: Fix failure to free buffer in erorr paths
...
The failure paths in CDAT file loading did not clear up properly.
Change to using g_auto_free and a local pointer for the buffer to
ensure this function has no side effects on error.
Also drop some unnecessary checks that can not fail.
Cleanup properly after a failure to load a CDAT file.
Suggested-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20230421132020.7408-3-Jonathan.Cameron@huawei.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-05-19 01:36:09 -04:00
Hao Zeng
71ba92f348
hw/cxl: cdat: Fix open file not closed in ct3_load_cdat()
...
Open file descriptor not closed in error paths. Fix by replace
open coded handling of read of whole file into a buffer with
g_file_get_contents()
Fixes: aba578bdac
("hw/cxl: CDAT Data Object Exchange implementation")
Signed-off-by: Zeng Hao <zenghao@kylinos.cn >
Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Suggested-by: Peter Maydell <peter.maydell@linaro.org >
Suggested-by: Jonathan Cameron via <qemu-devel@nongnu.org >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
--
Changes since v5:
- Drop if guard on g_free() as per checkpatch warning.
Message-Id: <20230421132020.7408-2-Jonathan.Cameron@huawei.com >
Reviewed-by: Fan Ni <fan.ni@samsung.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2023-05-19 01:36:09 -04:00
Michael Tokarev
f0376c3f0f
hw/cxl/cxl-cdat.c: spelling: missmatch
...
Introduced by: aba578bdac
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20221215123749.1026775-1-mjt@msgid.tls.msk.ru >
Signed-off-by: Laurent Vivier <laurent@vivier.eu >
2023-01-16 18:56:32 +01:00
Huai-Cheng Kuo
aba578bdac
hw/cxl/cdat: CXL CDAT Data Object Exchange implementation
...
The Data Object Exchange implementation of CXL Coherent Device Attribute
Table (CDAT). This implementation is referring to "Coherent Device
Attribute Table Specification, Rev. 1.03, July. 2022" and "Compute
Express Link Specification, Rev. 3.0, July. 2022"
This patch adds core support that will be shared by both
end-points and switch port emulation.
Signed-off-by: Huai-Cheng Kuo <hchkuo@avery-design.com.tw >
Signed-off-by: Chris Browy <cbrowy@avery-design.com >
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Message-Id: <20221014151045.24781-4-Jonathan.Cameron@huawei.com >
Reviewed-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Michael S. Tsirkin <mst@redhat.com >
2022-11-07 13:12:19 -05:00