* [PATCH 1/5] drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device
2026-08-25 6:36 [PATCH 0/5] Add support to handle memory double-bit ecc errors Riana Tauro
@ 2026-08-25 6:36 ` Riana Tauro
2026-08-25 6:46 ` sashiko-bot
2026-08-28 15:13 ` Rodrigo Vivi
2026-08-25 6:36 ` [RFC PATCH 2/5] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors Riana Tauro
` (7 subsequent siblings)
8 siblings, 2 replies; 15+ messages in thread
From: Riana Tauro @ 2026-08-25 6:36 UTC (permalink / raw)
To: intel-xe
Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
mallesh.koujalagi, soham.purkait, tejas.upadhyay,
himal.prasad.ghimiray
Rename ras to drm_ras in xe_device to distinquish drm-ras functionality
from device related RAS functionality.
No functional changes.
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
---
drivers/gpu/drm/xe/xe_device_types.h | 4 ++--
drivers/gpu/drm/xe/xe_drm_ras.c | 12 ++++++------
drivers/gpu/drm/xe/xe_hw_error.c | 6 +++---
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 180d450a6deb..1494f3a6c62b 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -550,8 +550,8 @@ struct xe_device {
/** @pmu: performance monitoring unit */
struct xe_pmu pmu;
- /** @ras: RAS structure for device */
- struct xe_drm_ras ras;
+ /** @drm_ras: drm-ras structure for device */
+ struct xe_drm_ras drm_ras;
/** @i2c: I2C host controller */
struct xe_i2c *i2c;
diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
index 78184b6ea7d4..9f37ae732770 100644
--- a/drivers/gpu/drm/xe/xe_drm_ras.c
+++ b/drivers/gpu/drm/xe/xe_drm_ras.c
@@ -20,7 +20,7 @@ static int query_error_counter(struct xe_device *xe,
enum drm_xe_ras_error_severity severity,
u32 error_id, const char **name, u32 *val)
{
- struct xe_drm_ras *ras = &xe->ras;
+ struct xe_drm_ras *ras = &xe->drm_ras;
struct xe_drm_ras_counter *info = ras->info[severity];
if (!info || !info[error_id].name)
@@ -41,7 +41,7 @@ static int clear_error_counter(struct xe_device *xe,
enum drm_xe_ras_error_severity severity,
u32 error_id)
{
- struct xe_drm_ras *ras = &xe->ras;
+ struct xe_drm_ras *ras = &xe->drm_ras;
struct xe_drm_ras_counter *info = ras->info[severity];
if (!info || !info[error_id].name)
@@ -110,7 +110,7 @@ static int assign_node_params(struct xe_device *xe, struct drm_ras_node *node,
const enum drm_xe_ras_error_severity severity)
{
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
- struct xe_drm_ras *ras = &xe->ras;
+ struct xe_drm_ras *ras = &xe->drm_ras;
const char *device_name;
device_name = kasprintf(GFP_KERNEL, "%04x:%02x:%02x.%d",
@@ -156,7 +156,7 @@ static void cleanup_node(struct drm_device *drm, void *node)
static int register_nodes(struct xe_device *xe)
{
- struct xe_drm_ras *ras = &xe->ras;
+ struct xe_drm_ras *ras = &xe->drm_ras;
struct drm_ras_node *node;
int i, ret;
@@ -196,7 +196,7 @@ static int register_nodes(struct xe_device *xe)
*/
void xe_drm_ras_event(struct xe_device *xe, u32 component, u32 severity, u32 value)
{
- struct xe_drm_ras *ras = &xe->ras;
+ struct xe_drm_ras *ras = &xe->drm_ras;
struct xe_drm_ras_counter *info = ras->info[severity];
struct drm_ras_node *node;
int ret;
@@ -226,7 +226,7 @@ void xe_drm_ras_event(struct xe_device *xe, u32 component, u32 severity, u32 val
*/
int xe_drm_ras_init(struct xe_device *xe)
{
- struct xe_drm_ras *ras = &xe->ras;
+ struct xe_drm_ras *ras = &xe->drm_ras;
struct drm_ras_node *node;
int err;
diff --git a/drivers/gpu/drm/xe/xe_hw_error.c b/drivers/gpu/drm/xe/xe_hw_error.c
index 5f2abc9485ff..90b73077ef41 100644
--- a/drivers/gpu/drm/xe/xe_hw_error.c
+++ b/drivers/gpu/drm/xe/xe_hw_error.c
@@ -240,7 +240,7 @@ static void log_soc_error(struct xe_tile *tile, const char * const *reg_info,
{
const char *severity_str = error_severity[severity];
struct xe_device *xe = tile_to_xe(tile);
- struct xe_drm_ras *ras = &xe->ras;
+ struct xe_drm_ras *ras = &xe->drm_ras;
struct xe_drm_ras_counter *info = ras->info[severity];
const char *name;
@@ -260,7 +260,7 @@ static void gt_hw_error_handler(struct xe_tile *tile, const enum hardware_error
{
const enum drm_xe_ras_error_severity severity = hw_err_to_severity(hw_err);
struct xe_device *xe = tile_to_xe(tile);
- struct xe_drm_ras *ras = &xe->ras;
+ struct xe_drm_ras *ras = &xe->drm_ras;
struct xe_drm_ras_counter *info = ras->info[severity];
struct xe_mmio *mmio = &tile->mmio;
unsigned long err_stat = 0;
@@ -422,7 +422,7 @@ static void hw_error_source_handler(struct xe_tile *tile, const enum hardware_er
const enum drm_xe_ras_error_severity severity = hw_err_to_severity(hw_err);
const char *severity_str = error_severity[severity];
struct xe_device *xe = tile_to_xe(tile);
- struct xe_drm_ras *ras = &xe->ras;
+ struct xe_drm_ras *ras = &xe->drm_ras;
struct xe_drm_ras_counter *info = ras->info[severity];
unsigned long flags, err_src;
u32 err_bit;
--
2.47.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 1/5] drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device
2026-08-25 6:36 ` [PATCH 1/5] drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device Riana Tauro
@ 2026-08-25 6:46 ` sashiko-bot
2026-08-28 15:13 ` Rodrigo Vivi
1 sibling, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-08-25 6:46 UTC (permalink / raw)
To: Riana Tauro; +Cc: intel-xe
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Missing bounds check on severity and component indices in xe_drm_ras_event()
--
--- Patch [1]: [PATCH 1/5] drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device ---
commit 32a6f8d58b55e63675c6423a6648130b2ff82f4c
Author: Riana Tauro <riana.tauro@intel.com>
drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device
Rename ras to drm_ras in xe_device to distinguish drm-ras functionality
from device related RAS functionality. No functional changes.
> diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
> index 78184b6ea7d48..9f37ae732770a 100644
> --- a/drivers/gpu/drm/xe/xe_drm_ras.c
> +++ b/drivers/gpu/drm/xe/xe_drm_ras.c
[ ... ]
> @@ -196,7 +196,7 @@ static int register_nodes(struct xe_device *xe)
> */
> void xe_drm_ras_event(struct xe_device *xe, u32 component, u32 severity, u32 value)
> {
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> struct xe_drm_ras_counter *info = ras->info[severity];
[Severity: High]
This is a pre-existing issue, but is it possible for severity or component
to be out of bounds here?
If firmware or hardware sends a telemetry event with an unrecognized
severity or component, fallback paths might return DRM_XE_RAS_ERR_SEV_MAX
or DRM_XE_RAS_ERR_COMP_MAX.
Since ras->info is sized up to DRM_XE_RAS_ERR_SEV_MAX, using it as an index
reads past the end of the array. Because info is the final member of
struct xe_drm_ras inside struct xe_device, ras->info[DRM_XE_RAS_ERR_SEV_MAX]
could fetch the adjacent xe->i2c pointer.
The code would then treat this as an array of struct xe_drm_ras_counter,
which could lead to an invalid pointer dereference when evaluating
info[component].name later in the function.
Should there be bounds checks for severity and component before indexing
the arrays in xe_drm_ras_event()?
> struct drm_ras_node *node;
> int ret;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260825063615.3697317-7-riana.tauro@intel.com?part=1
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH 1/5] drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device
2026-08-25 6:36 ` [PATCH 1/5] drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device Riana Tauro
2026-08-25 6:46 ` sashiko-bot
@ 2026-08-28 15:13 ` Rodrigo Vivi
1 sibling, 0 replies; 15+ messages in thread
From: Rodrigo Vivi @ 2026-08-28 15:13 UTC (permalink / raw)
To: Riana Tauro
Cc: intel-xe, anshuman.gupta, aravind.iddamsetty, badal.nilawar,
raag.jadav, ravi.kishore.koppuravuri, mallesh.koujalagi,
soham.purkait, tejas.upadhyay, himal.prasad.ghimiray
On Tue, Aug 25, 2026 at 12:06:16PM +0530, Riana Tauro wrote:
> Rename ras to drm_ras in xe_device to distinquish drm-ras functionality
> from device related RAS functionality.
>
> No functional changes.
>
> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device_types.h | 4 ++--
> drivers/gpu/drm/xe/xe_drm_ras.c | 12 ++++++------
> drivers/gpu/drm/xe/xe_hw_error.c | 6 +++---
> 3 files changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index 180d450a6deb..1494f3a6c62b 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -550,8 +550,8 @@ struct xe_device {
> /** @pmu: performance monitoring unit */
> struct xe_pmu pmu;
>
> - /** @ras: RAS structure for device */
> - struct xe_drm_ras ras;
> + /** @drm_ras: drm-ras structure for device */
> + struct xe_drm_ras drm_ras;
perhaps xe_ras ?!
drm_ras makes me think this is a drm level structure...
but I would keep this as ras and change the ones inside the functions
if/when/as needed...
>
> /** @i2c: I2C host controller */
> struct xe_i2c *i2c;
> diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
> index 78184b6ea7d4..9f37ae732770 100644
> --- a/drivers/gpu/drm/xe/xe_drm_ras.c
> +++ b/drivers/gpu/drm/xe/xe_drm_ras.c
> @@ -20,7 +20,7 @@ static int query_error_counter(struct xe_device *xe,
> enum drm_xe_ras_error_severity severity,
> u32 error_id, const char **name, u32 *val)
> {
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> struct xe_drm_ras_counter *info = ras->info[severity];
>
> if (!info || !info[error_id].name)
> @@ -41,7 +41,7 @@ static int clear_error_counter(struct xe_device *xe,
> enum drm_xe_ras_error_severity severity,
> u32 error_id)
> {
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> struct xe_drm_ras_counter *info = ras->info[severity];
>
> if (!info || !info[error_id].name)
> @@ -110,7 +110,7 @@ static int assign_node_params(struct xe_device *xe, struct drm_ras_node *node,
> const enum drm_xe_ras_error_severity severity)
> {
> struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> const char *device_name;
>
> device_name = kasprintf(GFP_KERNEL, "%04x:%02x:%02x.%d",
> @@ -156,7 +156,7 @@ static void cleanup_node(struct drm_device *drm, void *node)
>
> static int register_nodes(struct xe_device *xe)
> {
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> struct drm_ras_node *node;
> int i, ret;
>
> @@ -196,7 +196,7 @@ static int register_nodes(struct xe_device *xe)
> */
> void xe_drm_ras_event(struct xe_device *xe, u32 component, u32 severity, u32 value)
> {
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> struct xe_drm_ras_counter *info = ras->info[severity];
> struct drm_ras_node *node;
> int ret;
> @@ -226,7 +226,7 @@ void xe_drm_ras_event(struct xe_device *xe, u32 component, u32 severity, u32 val
> */
> int xe_drm_ras_init(struct xe_device *xe)
> {
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> struct drm_ras_node *node;
> int err;
>
> diff --git a/drivers/gpu/drm/xe/xe_hw_error.c b/drivers/gpu/drm/xe/xe_hw_error.c
> index 5f2abc9485ff..90b73077ef41 100644
> --- a/drivers/gpu/drm/xe/xe_hw_error.c
> +++ b/drivers/gpu/drm/xe/xe_hw_error.c
> @@ -240,7 +240,7 @@ static void log_soc_error(struct xe_tile *tile, const char * const *reg_info,
> {
> const char *severity_str = error_severity[severity];
> struct xe_device *xe = tile_to_xe(tile);
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> struct xe_drm_ras_counter *info = ras->info[severity];
> const char *name;
>
> @@ -260,7 +260,7 @@ static void gt_hw_error_handler(struct xe_tile *tile, const enum hardware_error
> {
> const enum drm_xe_ras_error_severity severity = hw_err_to_severity(hw_err);
> struct xe_device *xe = tile_to_xe(tile);
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> struct xe_drm_ras_counter *info = ras->info[severity];
> struct xe_mmio *mmio = &tile->mmio;
> unsigned long err_stat = 0;
> @@ -422,7 +422,7 @@ static void hw_error_source_handler(struct xe_tile *tile, const enum hardware_er
> const enum drm_xe_ras_error_severity severity = hw_err_to_severity(hw_err);
> const char *severity_str = error_severity[severity];
> struct xe_device *xe = tile_to_xe(tile);
> - struct xe_drm_ras *ras = &xe->ras;
> + struct xe_drm_ras *ras = &xe->drm_ras;
> struct xe_drm_ras_counter *info = ras->info[severity];
> unsigned long flags, err_src;
> u32 err_bit;
> --
> 2.47.1
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* [RFC PATCH 2/5] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors
2026-08-25 6:36 [PATCH 0/5] Add support to handle memory double-bit ecc errors Riana Tauro
2026-08-25 6:36 ` [PATCH 1/5] drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device Riana Tauro
@ 2026-08-25 6:36 ` Riana Tauro
2026-08-25 6:49 ` sashiko-bot
2026-08-25 6:36 ` [PATCH 3/5] drm/xe/xe_ras: Add support to query page offline queue and list Riana Tauro
` (6 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Riana Tauro @ 2026-08-25 6:36 UTC (permalink / raw)
To: intel-xe
Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
mallesh.koujalagi, soham.purkait, tejas.upadhyay,
himal.prasad.ghimiray
This will be integrated with the related address-fault handling flow
once this patch is merged.
https://lore.kernel.org/intel-xe/20260818104055.3833974-14-tejas.upadhyay@intel.com/
Sending for initial comments.
Add basic support for sending page offline/decline requests to system
controller and use it for device memory ECC error handling.
Pages that belong to critical BOs cannot be handled by offlining and
require a SBR (Secondary Bus Reset).
Pages that are configured for log-only handling are not marked as bad by
firmware.
For all other valid page addresses, the first occurrence of error
indicates a poison error and the page is offlined only by software.
Firmware avoids permanently marking the page as bad. The second occurrence
of an error indicates a Double-bit ECC error and the firmware
permanently marks the page as bad.
Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
---
drivers/gpu/drm/xe/xe_ras.c | 121 +++++++++++++++++-
drivers/gpu/drm/xe/xe_ras_types.h | 35 +++++
drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h | 2 +
3 files changed, 153 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index d25d25f77531..c643c7137a42 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -3,6 +3,7 @@
* Copyright © 2026 Intel Corporation
*/
+#include "xe_bo.h"
#include "xe_debugfs.h"
#include "xe_device.h"
#include "xe_drm_ras.h"
@@ -200,6 +201,115 @@ static inline const char *comp_to_str(u8 component)
return xe_ras_components[component];
}
+static int send_page_offline_cmd(struct xe_device *xe, u64 page_address,
+ enum xe_ras_page_action action)
+{
+ struct xe_sysctrl_mailbox_command command = {0};
+ struct xe_ras_page_offline_request request = {0};
+ struct xe_ras_page_offline_response response = {0};
+ size_t rlen;
+ int ret;
+
+ if (!xe->info.has_sysctrl)
+ return 0;
+
+ if (action >= XE_RAS_PAGE_ACTION_MAX) {
+ xe_log_err(xe, DEVICE_MEMORY, -EINVAL, "Invalid page offline action %d\n", action);
+ return -EINVAL;
+ }
+
+ request.page_address = page_address;
+ request.action = action;
+
+ xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP, XE_SYSCTRL_CMD_PAGE_OFFLINE,
+ &request, sizeof(request), &response, sizeof(response));
+
+ ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
+ if (ret) {
+ xe_log_err_fatal(xe, SYSCTRL, ret, "failed to send page offline command\n");
+ return ret;
+ }
+
+ if (rlen != sizeof(response)) {
+ xe_log_err(xe, SYSCTRL, -EINVAL,
+ "unexpected page offline response length %zu (expected %zu)\n",
+ rlen, sizeof(response));
+ return -EINVAL;
+ }
+
+ ret = ras_status_to_errno(response.status);
+ if (ret) {
+ xe_log_err(xe, SYSCTRL, ret, "page offline command failed with status %u\n",
+ response.status);
+ return ret;
+ }
+
+ return ret;
+}
+
+static int handle_page_offline(struct xe_device *xe, u64 page_address, bool send_cmd)
+{
+ enum xe_ras_page_action action;
+ int ret = 0;
+
+ if (!IS_ALIGNED(page_address, XE_PAGE_SIZE)) {
+ xe_log_err(xe, SYSCTRL, -EINVAL, "Unaligned physical page address: 0x%llx\n",
+ page_address);
+ return -EINVAL;
+ }
+
+ /*
+ * TODO: Call function to handle address fault
+ * ret = xe_ttm_vram_handle_addr_fault(xe, page_address);
+ */
+
+ /*
+ * Handle return code from address fault handling function:
+ * 0: Page soft offlined, decline to firmware
+ * -EIO: Address belongs to a critical BO/stolen area that cannot be offlined
+ * -EOPNOTSUPP: Address is valid and can be offlined but user policy is not to offline
+ * -EXIST: Address is soft offlined but yet to be offlined by firmware for second occurrence
+ */
+
+ switch (ret) {
+ case 0:
+ action = XE_RAS_PAGE_ACTION_DECLINE;
+ xe_log_err(xe, DEVICE_MEMORY, 0,
+ "Poison detected at physical address 0x%llx, page software offlined\n",
+ page_address);
+ break;
+ /* User policy set to decline page offlining */
+ case -EOPNOTSUPP:
+ action = XE_RAS_PAGE_ACTION_DECLINE;
+ break;
+ case -EIO:
+ xe_log_err(xe, DEVICE_MEMORY, -EIO,
+ "Physical page address belongs to critical BO: 0x%llx\n", page_address);
+ return ret;
+ case -EEXIST:
+ action = XE_RAS_PAGE_ACTION_OFFLINE;
+ xe_log_err(xe, DEVICE_MEMORY, -EEXIST,
+ "Double-bit ECC error detected at physical address 0x%llx, page already software offlined\n",
+ page_address);
+ break;
+ default:
+ xe_log_err_fatal(xe, DEVICE_MEMORY, ret, "Failed to handle address fault 0x%llx\n",
+ page_address);
+ return 0;
+ }
+
+ if (send_cmd) {
+ ret = send_page_offline_cmd(xe, page_address, action);
+ if (ret)
+ xe_log_err_fatal(xe, SYSCTRL, ret,
+ "Failed to offline page for physical address 0x%llx\n",
+ page_address);
+ return ret;
+ }
+
+ return 0;
+}
+
static bool ras_counter_is_valid(struct xe_device *xe, struct xe_ras_error_class *counter)
{
u8 severity = counter->common.severity;
@@ -367,11 +477,12 @@ static u8 handle_soc_internal_errors(struct xe_device *xe, struct xe_ras_error_a
static u8 handle_device_memory_errors(struct xe_device *xe, struct xe_ras_error_array *arr)
{
struct xe_ras_memory_error *info = (void *)arr->details;
+ int ret;
/*
* For memory errors, the recovery action depends on the error category
*
- * TODO: Double-bit ECC errors: Page offlining
+ * Double-bit ECC errors: Page offlining
* Poison and data parity errors: Log only
* For any other memory errors, request a reset as recovery mechanism
*/
@@ -383,10 +494,10 @@ static u8 handle_device_memory_errors(struct xe_device *xe, struct xe_ras_error_
xe_info(xe, "[RAS]: Data parity error detected\n");
break;
case XE_RAS_MEMORY_DB_ECC:
- xe_info(xe, "[RAS]: Double-bit ECC error detected at sw address 0x%llx\n",
- info->sw_address);
- /* TODO: Add page offlining for Double-bit ECC error */
- fallthrough;
+ ret = handle_page_offline(xe, info->sw_address, true);
+ if (ret)
+ return XE_RAS_RECOVERY_ACTION_RESET;
+ break;
default:
return XE_RAS_RECOVERY_ACTION_RESET;
}
diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
index 99b2466e2062..2fac968879b6 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -17,6 +17,19 @@
#define XE_RAS_MEMORY_POISON BIT(2)
#define XE_RAS_MEMORY_DATA_PARITY BIT(5)
+/**
+ * enum xe_ras_page_action - Page offline actions for page offline request
+ *
+ * @XE_RAS_PAGE_ACTION_OFFLINE: Instruct firmware to offline the page
+ * @XE_RAS_PAGE_ACTION_DECLINE: Instruct firmware to remove the page from queue
+ * @XE_RAS_PAGE_ACTION_MAX: Max value
+ */
+enum xe_ras_page_action {
+ XE_RAS_PAGE_ACTION_OFFLINE,
+ XE_RAS_PAGE_ACTION_DECLINE,
+ XE_RAS_PAGE_ACTION_MAX
+};
+
/**
* enum xe_ras_recovery_action - RAS recovery actions
*
@@ -245,6 +258,28 @@ struct xe_ras_memory_error {
u32 reserved2[10];
} __packed;
+/**
+ * struct xe_ras_page_offline_request - Request for page offline command
+ */
+struct xe_ras_page_offline_request {
+ /** @page_address: Page address (4KB aligned) */
+ u64 page_address;
+ /** @action: Action to be performed, see &enum xe_ras_page_action */
+ u32 action;
+ /** @reserved: Reserved for future use */
+ u32 reserved;
+} __packed;
+
+/**
+ * struct xe_ras_page_offline_response - Response from page offline command
+ */
+struct xe_ras_page_offline_response {
+ /** @status: Status of the page offline request */
+ u32 status;
+ /** @reserved: Reserved for future use */
+ u32 reserved;
+} __packed;
+
/**
* struct xe_ras_get_health_request - Request structure for obtaining gpu health
*/
diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
index d0341538ad05..3363f48da2b7 100644
--- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
+++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
@@ -26,6 +26,7 @@ enum xe_sysctrl_group {
* @XE_SYSCTRL_CMD_GET_COUNTER: Get error counter value
* @XE_SYSCTRL_CMD_CLEAR_COUNTER: Clear error counter value
* @XE_SYSCTRL_CMD_GET_PENDING_EVENT: Retrieve pending event
+ * @XE_SYSCTRL_CMD_PAGE_OFFLINE: Instruct firmware to offline/decline a page
* @XE_SYSCTRL_CMD_GET_HEALTH: Retrieve gpu health
* @XE_SYSCTRL_CMD_SET_HEALTH: Set gpu health
*/
@@ -34,6 +35,7 @@ enum xe_sysctrl_gfsp_cmd {
XE_SYSCTRL_CMD_GET_COUNTER = 0x03,
XE_SYSCTRL_CMD_CLEAR_COUNTER = 0x04,
XE_SYSCTRL_CMD_GET_PENDING_EVENT = 0x07,
+ XE_SYSCTRL_CMD_PAGE_OFFLINE = 0x08,
XE_SYSCTRL_CMD_GET_HEALTH = 0x0B,
XE_SYSCTRL_CMD_SET_HEALTH = 0x0C,
};
--
2.47.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [RFC PATCH 2/5] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors
2026-08-25 6:36 ` [RFC PATCH 2/5] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors Riana Tauro
@ 2026-08-25 6:49 ` sashiko-bot
0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-08-25 6:49 UTC (permalink / raw)
To: Riana Tauro; +Cc: intel-xe
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Critical] The dummy implementation of `handle_page_offline` unconditionally returns success for Double-Bit ECC errors, preventing the required device reset and leaving corrupted memory accessible.
--
--- Patch [2]: [RFC PATCH 2/5] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors ---
commit e03bc1fc60d0c3e2b16dd451f580bbb4b02ed43e
Author: Riana Tauro <riana.tauro@intel.com>
drm/xe/xe_ras: Handle page offline requests for device memory ecc errors
This commit adds basic support for sending page offline/decline requests to
the system controller and integrates it into device memory ECC error
handling.
Link: https://lore.kernel.org/intel-xe/20260818104055.3833974-14-tejas.upadhyay@intel.com/
> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
> index d25d25f775310..a6fa755ffebf7 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
[ ... ]
> @@ -200,6 +201,115 @@ static inline const char *comp_to_str(u8 component)
> +static int handle_page_offline(struct xe_device *xe, u64 page_address, bool send_cmd)
> +{
> + enum xe_ras_page_action action;
> + int ret = 0;
> +
> + if (!IS_ALIGNED(page_address, XE_PAGE_SIZE)) {
> + xe_log_err(xe, SYSCTRL, -EINVAL, "Unaligned physical page address: 0x%llx\n",
> + page_address);
> + return -EINVAL;
> + }
> +
> + /*
> + * TODO: Call function to handle address fault
> + * ret = xe_ttm_vram_handle_addr_fault(xe, page_address);
> + */
> +
> + /*
> + * Handle return code from address fault handling function:
> + * 0: Page soft offlined, decline to firmware
> + * -EIO: Address belongs to a critical BO/stolen area that cannot be offlined
> + * -EOPNOTSUPP: Address is valid and can be offlined but user policy is not to offline
> + * -EXIST: Address is soft offlined but yet to be offlined by firmware for second occurrence
> + */
> +
> + switch (ret) {
> + case 0:
> + action = XE_RAS_PAGE_ACTION_DECLINE;
[Severity: Critical]
Since the fault handler is commented out and ret is initialized to 0, will
this unconditionally trigger the 0 case and decline to offline the page?
[ ... ]
> @@ -367,11 +477,12 @@ static u8 handle_soc_internal_errors(struct xe_device *xe, struct xe_ras_error_a
> static u8 handle_device_memory_errors(struct xe_device *xe, struct xe_ras_error_array *arr)
> {
> struct xe_ras_memory_error *info = (void *)arr->details;
> + int ret;
>
> /*
> * For memory errors, the recovery action depends on the error category
[ ... ]
> case XE_RAS_MEMORY_DB_ECC:
> - xe_info(xe, "[RAS]: Double-bit ECC error detected at sw address 0x%llx\n",
> - info->sw_address);
> - /* TODO: Add page offlining for Double-bit ECC error */
> - fallthrough;
> + ret = handle_page_offline(xe, info->sw_address, true);
> + if (ret)
> + return XE_RAS_RECOVERY_ACTION_RESET;
> + break;
[Severity: Critical]
If handle_page_offline() always returns 0 due to the TODO stub above, does
this inadvertently bypass the fallback reset for Double-Bit ECC errors?
If the device is not reset and the page is not offlined, it appears the GPU
could continue executing with uncorrectable memory corruption.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260825063615.3697317-7-riana.tauro@intel.com?part=2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 3/5] drm/xe/xe_ras: Add support to query page offline queue and list
2026-08-25 6:36 [PATCH 0/5] Add support to handle memory double-bit ecc errors Riana Tauro
2026-08-25 6:36 ` [PATCH 1/5] drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device Riana Tauro
2026-08-25 6:36 ` [RFC PATCH 2/5] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors Riana Tauro
@ 2026-08-25 6:36 ` Riana Tauro
2026-08-25 6:50 ` sashiko-bot
2026-08-25 6:36 ` [PATCH 4/5] drm/xe/xe_ras: Add function to get maximum pages firmware can store Riana Tauro
` (5 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Riana Tauro @ 2026-08-25 6:36 UTC (permalink / raw)
To: intel-xe
Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
mallesh.koujalagi, soham.purkait, tejas.upadhyay,
himal.prasad.ghimiray
Add support to query page offline list and queue from firmware
during module load. The page offline list command retrieves pages that
are already offlined by the firmware. The page offline queue command
retrieves the pages pending to be offlined by the firmware.
Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
---
drivers/gpu/drm/xe/xe_ras.c | 99 +++++++++++++++++++
drivers/gpu/drm/xe/xe_ras_types.h | 43 ++++++++
drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h | 4 +
3 files changed, 146 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index c643c7137a42..441462a36dbc 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -328,6 +328,102 @@ static bool ras_counter_is_valid(struct xe_device *xe, struct xe_ras_error_class
return true;
}
+static void get_queued_pages(struct xe_device *xe)
+{
+ struct xe_sysctrl_mailbox_command command = {0};
+ struct xe_ras_page_offline_queue response = {0};
+ u32 count = 0;
+ size_t rlen;
+ int ret, i;
+
+ /* Supported only on platforms with system controller */
+ if (!xe->info.has_sysctrl)
+ return;
+
+ xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP,
+ XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE, NULL, 0, &response,
+ sizeof(response));
+
+ do {
+ memset(&response, 0, sizeof(response));
+
+ ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
+ if (ret) {
+ xe_log_err_fatal(xe, SYSCTRL, ret, "failed to get page offline queue\n");
+ return;
+ }
+ if (rlen != sizeof(response)) {
+ xe_log_err(xe, SYSCTRL, -EINVAL,
+ "unexpected page offline queue response length %zu (expected %zu)\n",
+ rlen, sizeof(response));
+ return;
+ }
+
+ for (i = 0; i < response.pages_returned && i < XE_RAS_NUM_PAGES; i++)
+ handle_page_offline(xe, response.page_addresses[i], true);
+
+ count += response.pages_returned;
+ if (!response.pages_returned)
+ break;
+
+ if (count > response.total_pages) {
+ xe_log_err(xe, SYSCTRL, -EINVAL,
+ "Pages returned from queue exceed total pages %u, returned %u\n",
+ response.total_pages, count);
+ return;
+ }
+ } while (response.additional_data);
+}
+
+static void get_offlined_list(struct xe_device *xe)
+{
+ struct xe_sysctrl_mailbox_command command = {0};
+ struct xe_ras_offline_list_response response = {0};
+ struct xe_ras_offline_list_request request = {0};
+ u32 count = 0;
+ size_t rlen;
+ int ret, i;
+
+ /* Supported only on platforms with system controller */
+ if (!xe->info.has_sysctrl)
+ return;
+
+ xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP, XE_SYSCTRL_CMD_GET_OFFLINE_LIST,
+ &request, sizeof(request), &response, sizeof(response));
+
+ do {
+ memset(&response, 0, sizeof(response));
+ request.index = count;
+
+ ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
+ if (ret) {
+ xe_log_err_fatal(xe, SYSCTRL, ret, "failed to get page offline list\n");
+ return;
+ }
+
+ if (rlen != sizeof(response)) {
+ xe_log_err(xe, SYSCTRL, -EINVAL,
+ "unexpected page offline list response length %zu (expected %zu)\n",
+ rlen, sizeof(response));
+ return;
+ }
+
+ for (i = 0; i < response.pages_returned && i < XE_RAS_NUM_PAGES; i++)
+ handle_page_offline(xe, response.page_addresses[i], false);
+
+ count += response.pages_returned;
+ if (!response.pages_returned)
+ break;
+
+ if (count > response.total_pages) {
+ xe_log_err(xe, SYSCTRL, -EINVAL,
+ "Pages returned from list exceed total pages %u, returned %u\n",
+ response.total_pages, count);
+ return;
+ }
+ } while (response.additional_data);
+}
+
static struct pci_dev *find_usp_dev(struct pci_dev *pdev)
{
struct pci_dev *vsp;
@@ -923,6 +1019,9 @@ void xe_ras_init(struct xe_device *xe)
if (IS_ENABLED(CONFIG_PCIEAER))
ras_usp_aer_init(xe);
+ get_queued_pages(xe);
+ get_offlined_list(xe);
+
ret = devm_device_add_group(xe->drm.dev, &gpu_health_group);
if (ret)
xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret);
diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
index 2fac968879b6..cddcfa656d9f 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -10,6 +10,7 @@
#define XE_RAS_NUM_COUNTERS 16
#define XE_RAS_NUM_ERROR_ARR 3
+#define XE_RAS_NUM_PAGES 25
/* Error bits in IEH global error status register */
#define XE_RAS_SOC_IEH_PUNIT BIT(1)
/* Device memory error categories */
@@ -280,6 +281,48 @@ struct xe_ras_page_offline_response {
u32 reserved;
} __packed;
+/**
+ * struct xe_ras_offline_list_request - Request for get offline list command
+ */
+struct xe_ras_offline_list_request {
+ /** @index: Zero-based index into the offline page list */
+ u32 index;
+} __packed;
+
+/**
+ * struct xe_ras_offline_list_response - Response from get offline list command
+ */
+struct xe_ras_offline_list_response {
+ /** @max_entries: Total no of pages that can be stored in flash */
+ u32 max_entries;
+ /** @total_pages: Total number of permanently offlined pages */
+ u32 total_pages;
+ /** @pages_returned: Number of pages returned in this response */
+ u32 pages_returned;
+ /** @page_addresses: Array of permanently offlined page addresses (4KB aligned) */
+ u64 page_addresses[XE_RAS_NUM_PAGES];
+ /** @additional_data: Indicates if more data is available */
+ u8 additional_data;
+ /** @reserved: Reserved for future use */
+ u8 reserved[3];
+} __packed;
+
+/**
+ * struct xe_ras_page_offline_queue - Response from get offline queue command
+ */
+struct xe_ras_page_offline_queue {
+ /** @total_pages: Total number of queued pages */
+ u32 total_pages;
+ /** @pages_returned: Number of pages returned in this response */
+ u32 pages_returned;
+ /** @page_addresses: Array of page addresses (4KB aligned) */
+ u64 page_addresses[XE_RAS_NUM_PAGES];
+ /** @additional_data: Indicates if more data is available */
+ u8 additional_data;
+ /** @reserved: Reserved for future use */
+ u8 reserved[3];
+} __packed;
+
/**
* struct xe_ras_get_health_request - Request structure for obtaining gpu health
*/
diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
index 3363f48da2b7..194ad3ac3da2 100644
--- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
+++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
@@ -27,6 +27,8 @@ enum xe_sysctrl_group {
* @XE_SYSCTRL_CMD_CLEAR_COUNTER: Clear error counter value
* @XE_SYSCTRL_CMD_GET_PENDING_EVENT: Retrieve pending event
* @XE_SYSCTRL_CMD_PAGE_OFFLINE: Instruct firmware to offline/decline a page
+ * @XE_SYSCTRL_CMD_GET_OFFLINE_LIST: Retrieve list of all offlined pages from flash
+ * @XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE: Retrieve list of offlined queued pages from firmware
* @XE_SYSCTRL_CMD_GET_HEALTH: Retrieve gpu health
* @XE_SYSCTRL_CMD_SET_HEALTH: Set gpu health
*/
@@ -36,6 +38,8 @@ enum xe_sysctrl_gfsp_cmd {
XE_SYSCTRL_CMD_CLEAR_COUNTER = 0x04,
XE_SYSCTRL_CMD_GET_PENDING_EVENT = 0x07,
XE_SYSCTRL_CMD_PAGE_OFFLINE = 0x08,
+ XE_SYSCTRL_CMD_GET_OFFLINE_LIST = 0x09,
+ XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE = 0x0A,
XE_SYSCTRL_CMD_GET_HEALTH = 0x0B,
XE_SYSCTRL_CMD_SET_HEALTH = 0x0C,
};
--
2.47.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 3/5] drm/xe/xe_ras: Add support to query page offline queue and list
2026-08-25 6:36 ` [PATCH 3/5] drm/xe/xe_ras: Add support to query page offline queue and list Riana Tauro
@ 2026-08-25 6:50 ` sashiko-bot
0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-08-25 6:50 UTC (permalink / raw)
To: Riana Tauro; +Cc: intel-xe
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Comparing cumulatively increasing `count` against a decreasing queue size (`total_pages`) causes spurious failures and prevents fully draining the offline queue.
- [Medium] Un-clamped increment of pagination counter `count` causes silent skipping of offlined pages if firmware returns a large `pages_returned` value.
--
--- Patch [3]: [PATCH 3/5] drm/xe/xe_ras: Add support to query page offline queue and list ---
commit e8cc2bc6a8f50a7f0975b37b113c85a2c4043858
Author: Riana Tauro <riana.tauro@intel.com>
drm/xe/xe_ras: Add support to query page offline queue and list
This commit adds support to query the page offline list and queue from the
firmware during module load. The page offline list retrieves pages already
offlined, and the queue retrieves pages pending to be offlined.
> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
> index a6fa755ffebf7..b320ba6d1d735 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
> @@ -328,6 +328,102 @@ static bool ras_counter_is_valid(struct xe_device *xe, struct xe_ras_error_class
> return true;
> }
>
> +static void get_queued_pages(struct xe_device *xe)
> +{
[ ... ]
> + for (i = 0; i < response.pages_returned && i < XE_RAS_NUM_PAGES; i++)
> + handle_page_offline(xe, response.page_addresses[i], true);
> +
> + count += response.pages_returned;
[Severity: Medium]
If the firmware returns a response.pages_returned value greater than
XE_RAS_NUM_PAGES (25), we cap the processing loop at 25 but still add the full
un-clamped response.pages_returned to count. Does this mean we might silently
skip processing some pages?
> + if (!response.pages_returned)
> + break;
> +
> + if (count > response.total_pages) {
[Severity: High]
When handle_page_offline() processes a queued page (with send_cmd=true), it
sends a PAGE_OFFLINE command to the firmware to consume the page. Does this
cause the firmware's remaining queue size (response.total_pages) to decrease
on subsequent loop iterations?
If count accumulates monotonically while response.total_pages shrinks, will
this check spuriously fail and abort midway through processing a queue that
requires multiple fetches?
> + xe_log_err(xe, SYSCTRL, -EINVAL,
> + "Pages returned from queue exceed total pages %u, returned %u\n",
> + response.total_pages, count);
> + return;
> + }
> + } while (response.additional_data);
> +}
> +
> +static void get_offlined_list(struct xe_device *xe)
> +{
[ ... ]
> + for (i = 0; i < response.pages_returned && i < XE_RAS_NUM_PAGES; i++)
> + handle_page_offline(xe, response.page_addresses[i], false);
> +
> + count += response.pages_returned;
[Severity: Medium]
Similar to the issue in get_queued_pages(), if response.pages_returned exceeds
XE_RAS_NUM_PAGES, count increments by the full un-clamped amount.
Since count is subsequently used to set request.index for the next sequence,
will this cause unprocessed entries to be permanently skipped?
> + if (!response.pages_returned)
> + break;
> +
> + if (count > response.total_pages) {
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260825063615.3697317-7-riana.tauro@intel.com?part=3
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 4/5] drm/xe/xe_ras: Add function to get maximum pages firmware can store
2026-08-25 6:36 [PATCH 0/5] Add support to handle memory double-bit ecc errors Riana Tauro
` (2 preceding siblings ...)
2026-08-25 6:36 ` [PATCH 3/5] drm/xe/xe_ras: Add support to query page offline queue and list Riana Tauro
@ 2026-08-25 6:36 ` Riana Tauro
2026-08-25 6:36 ` [PATCH 5/5] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates Riana Tauro
` (4 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Riana Tauro @ 2026-08-25 6:36 UTC (permalink / raw)
To: intel-xe
Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
mallesh.koujalagi, soham.purkait, tejas.upadhyay,
himal.prasad.ghimiray
Add function to get maximum number of pages that firmware can store for
offline tracking. This will be used in sysfs while reporting bad pages.
Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
---
drivers/gpu/drm/xe/xe_device_types.h | 4 ++++
drivers/gpu/drm/xe/xe_ras.c | 18 ++++++++++++++++++
drivers/gpu/drm/xe/xe_ras.h | 1 +
drivers/gpu/drm/xe/xe_ras_types.h | 13 +++++++++++++
4 files changed, 36 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 1494f3a6c62b..99ac8e81bc2e 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -21,6 +21,7 @@
#include "xe_platform_types.h"
#include "xe_pmu_types.h"
#include "xe_pt_types.h"
+#include "xe_ras_types.h"
#include "xe_sriov_pf_types.h"
#include "xe_sriov_types.h"
#include "xe_sriov_vf_types.h"
@@ -553,6 +554,9 @@ struct xe_device {
/** @drm_ras: drm-ras structure for device */
struct xe_drm_ras drm_ras;
+ /** @ras: RAS structure for device */
+ struct xe_ras ras;
+
/** @i2c: I2C host controller */
struct xe_i2c *i2c;
diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index 441462a36dbc..ca6d55907626 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -380,6 +380,7 @@ static void get_offlined_list(struct xe_device *xe)
struct xe_sysctrl_mailbox_command command = {0};
struct xe_ras_offline_list_response response = {0};
struct xe_ras_offline_list_request request = {0};
+ struct xe_ras *ras = &xe->ras;
u32 count = 0;
size_t rlen;
int ret, i;
@@ -411,6 +412,9 @@ static void get_offlined_list(struct xe_device *xe)
for (i = 0; i < response.pages_returned && i < XE_RAS_NUM_PAGES; i++)
handle_page_offline(xe, response.page_addresses[i], false);
+ if (!ras->max_pages)
+ ras->max_pages = response.max_entries;
+
count += response.pages_returned;
if (!response.pages_returned)
break;
@@ -1001,6 +1005,20 @@ static const struct attribute_group gpu_health_group = {
.attrs = gpu_health_attrs,
};
+/**
+ * xe_ras_get_max_pages() - Get maximum pages
+ * @xe: Xe device instance
+ *
+ * This function returns the maximum number of pages that can be stored
+ * by firmware in flash
+ *
+ * Return: Maximum number of pages that can be stored by firmware in flash
+ */
+u32 xe_ras_get_max_pages(struct xe_device *xe)
+{
+ return xe->ras.max_pages;
+}
+
/**
* xe_ras_init - Initialize Xe RAS
* @xe: xe device instance
diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h
index 618364734043..1510edeb7c73 100644
--- a/drivers/gpu/drm/xe/xe_ras.h
+++ b/drivers/gpu/drm/xe/xe_ras.h
@@ -18,5 +18,6 @@ int xe_ras_get_counter(struct xe_device *xe, u8 severity, u8 component, u32 *val
int xe_ras_clear_counter(struct xe_device *xe, u8 severity, u8 component);
void xe_ras_init(struct xe_device *xe);
enum xe_ras_recovery_action xe_ras_process_errors(struct xe_device *xe);
+u32 xe_ras_get_max_pages(struct xe_device *xe);
#endif
diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
index cddcfa656d9f..2b0c6ef8c8a4 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -364,4 +364,17 @@ struct xe_ras_set_health_response {
/** @reserved1: Reserved for future use */
u32 reserved1[2];
} __packed;
+
+/* Driver RAS structures */
+
+/**
+ * struct xe_ras - Device RAS structure
+ *
+ * This structure has the data cached from the firmware
+ */
+struct xe_ras {
+ /** @max_pages: Total number of pages that can be stored by firmware */
+ u32 max_pages;
+};
+
#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 5/5] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates
2026-08-25 6:36 [PATCH 0/5] Add support to handle memory double-bit ecc errors Riana Tauro
` (3 preceding siblings ...)
2026-08-25 6:36 ` [PATCH 4/5] drm/xe/xe_ras: Add function to get maximum pages firmware can store Riana Tauro
@ 2026-08-25 6:36 ` Riana Tauro
2026-08-25 6:52 ` sashiko-bot
2026-08-25 9:19 ` ✓ CI.KUnit: success for Add support to handle memory double-bit ecc errors Patchwork
` (3 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Riana Tauro @ 2026-08-25 6:36 UTC (permalink / raw)
To: intel-xe
Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
mallesh.koujalagi, soham.purkait, tejas.upadhyay,
himal.prasad.ghimiray
A memory scrubber can report multiple errors at the same address. Track
pages already successfully offlined by the firmware so that subsequent
reports for the same address are declined and removed from the firmware
queue instead of issuing redundant page offline requests.
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 4 +++-
drivers/gpu/drm/xe/xe_ras.c | 35 +++++++++++++++++++++++++++----
drivers/gpu/drm/xe/xe_ras.h | 2 +-
drivers/gpu/drm/xe/xe_ras_types.h | 3 +++
4 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 74d566693dfd..e087e89f610d 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -1039,7 +1039,9 @@ int xe_device_probe(struct xe_device *xe)
if (err)
return err;
- xe_ras_init(xe);
+ err = xe_ras_init(xe);
+ if (err)
+ return err;
/*
* Now that GT is initialized (TTM in particular),
diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index ca6d55907626..df7b2aee955d 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -17,6 +17,9 @@
#include "xe_sysctrl_mailbox.h"
#include "xe_sysctrl_mailbox_types.h"
+/* Any non-null entry marks the page as offlined by firmware */
+#define XE_RAS_PAGE_OFFLINED xa_mk_value(1)
+
#define CORE_COMPUTE_UNCORR_TYPE GENMASK(26, 25)
/*
* Uncorrectable error type for core compute errors.
@@ -207,6 +210,7 @@ static int send_page_offline_cmd(struct xe_device *xe, u64 page_address,
struct xe_sysctrl_mailbox_command command = {0};
struct xe_ras_page_offline_request request = {0};
struct xe_ras_page_offline_response response = {0};
+ struct xe_ras *ras = &xe->ras;
size_t rlen;
int ret;
@@ -244,6 +248,10 @@ static int send_page_offline_cmd(struct xe_device *xe, u64 page_address,
return ret;
}
+ if (action == XE_RAS_PAGE_ACTION_OFFLINE)
+ xa_store(&ras->offlined_pages, page_address >> PAGE_SHIFT,
+ XE_RAS_PAGE_OFFLINED, GFP_KERNEL);
+
return ret;
}
@@ -287,7 +295,11 @@ static int handle_page_offline(struct xe_device *xe, u64 page_address, bool send
"Physical page address belongs to critical BO: 0x%llx\n", page_address);
return ret;
case -EEXIST:
- action = XE_RAS_PAGE_ACTION_OFFLINE;
+ if (xa_load(&xe->ras.offlined_pages, page_address >> PAGE_SHIFT))
+ action = XE_RAS_PAGE_ACTION_DECLINE;
+ else
+ action = XE_RAS_PAGE_ACTION_OFFLINE;
+
xe_log_err(xe, DEVICE_MEMORY, -EEXIST,
"Double-bit ECC error detected at physical address 0x%llx, page already software offlined\n",
page_address);
@@ -409,8 +421,11 @@ static void get_offlined_list(struct xe_device *xe)
return;
}
- for (i = 0; i < response.pages_returned && i < XE_RAS_NUM_PAGES; i++)
+ for (i = 0; i < response.pages_returned && i < XE_RAS_NUM_PAGES; i++) {
handle_page_offline(xe, response.page_addresses[i], false);
+ xa_store(&ras->offlined_pages, response.page_addresses[i] >> PAGE_SHIFT,
+ XE_RAS_PAGE_OFFLINED, GFP_KERNEL);
+ }
if (!ras->max_pages)
ras->max_pages = response.max_entries;
@@ -1005,6 +1020,13 @@ static const struct attribute_group gpu_health_group = {
.attrs = gpu_health_attrs,
};
+static void ras_fini(void *arg)
+{
+ struct xe_device *xe = arg;
+
+ xa_destroy(&xe->ras.offlined_pages);
+}
+
/**
* xe_ras_get_max_pages() - Get maximum pages
* @xe: Xe device instance
@@ -1025,22 +1047,27 @@ u32 xe_ras_get_max_pages(struct xe_device *xe)
*
* Initialize Xe RAS
*/
-void xe_ras_init(struct xe_device *xe)
+int xe_ras_init(struct xe_device *xe)
{
+ struct xe_ras *ras = &xe->ras;
int ret;
xe_drm_ras_init(xe);
if (!xe->info.has_sysctrl)
- return;
+ return 0;
if (IS_ENABLED(CONFIG_PCIEAER))
ras_usp_aer_init(xe);
+ xa_init(&ras->offlined_pages);
+
get_queued_pages(xe);
get_offlined_list(xe);
ret = devm_device_add_group(xe->drm.dev, &gpu_health_group);
if (ret)
xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret);
+
+ return devm_add_action_or_reset(xe->drm.dev, ras_fini, xe);
}
diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h
index 1510edeb7c73..b0212e354734 100644
--- a/drivers/gpu/drm/xe/xe_ras.h
+++ b/drivers/gpu/drm/xe/xe_ras.h
@@ -16,7 +16,7 @@ void xe_ras_counter_threshold_crossed(struct xe_device *xe,
struct xe_sysctrl_event_response *response);
int xe_ras_get_counter(struct xe_device *xe, u8 severity, u8 component, u32 *value);
int xe_ras_clear_counter(struct xe_device *xe, u8 severity, u8 component);
-void xe_ras_init(struct xe_device *xe);
+int xe_ras_init(struct xe_device *xe);
enum xe_ras_recovery_action xe_ras_process_errors(struct xe_device *xe);
u32 xe_ras_get_max_pages(struct xe_device *xe);
diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
index 2b0c6ef8c8a4..64d1b335f43a 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -7,6 +7,7 @@
#define _XE_RAS_TYPES_H_
#include <linux/types.h>
+#include <linux/xarray.h>
#define XE_RAS_NUM_COUNTERS 16
#define XE_RAS_NUM_ERROR_ARR 3
@@ -375,6 +376,8 @@ struct xe_ras_set_health_response {
struct xe_ras {
/** @max_pages: Total number of pages that can be stored by firmware */
u32 max_pages;
+ /** @offlined_pages: XArray of pages offlined by firmware */
+ struct xarray offlined_pages;
};
#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 5/5] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates
2026-08-25 6:36 ` [PATCH 5/5] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates Riana Tauro
@ 2026-08-25 6:52 ` sashiko-bot
0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-08-25 6:52 UTC (permalink / raw)
To: Riana Tauro; +Cc: intel-xe
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Using PAGE_SHIFT instead of a GPU-specific page shift causes multiple 4KB GPU pages to map to the same XArray index on systems with larger CPU pages.
--
--- Patch [5]: [PATCH 5/5] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates ---
commit a03c3279356ffe1e7132d6c4d017e5f44ae3cc0b
Author: Riana Tauro <riana.tauro@intel.com>
drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates
This commit adds an XArray to track pages that have been offlined by the
firmware to prevent issuing redundant page offline requests for the same
memory address.
> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
> index 5303d1a4e485a..f0dac06f050b9 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
[ ... ]
> @@ -244,6 +248,10 @@ static int send_page_offline_cmd(struct xe_device *xe, u64 page_address,
> return ret;
> }
>
> + if (action == XE_RAS_PAGE_ACTION_OFFLINE)
> + xa_store(&ras->offlined_pages, page_address >> PAGE_SHIFT,
> + XE_RAS_PAGE_OFFLINED, GFP_KERNEL);
> +
> return ret;
> }
[Severity: High]
Does using PAGE_SHIFT here cause aliasing on systems with larger CPU page
sizes?
If the CPU page size is larger than the GPU page size (for example, 64KB on
ARM64 vs 4KB XE_PAGE_SIZE), shifting by PAGE_SHIFT will truncate the lower
bits of the GPU physical address. This would cause multiple distinct 4KB GPU
pages to map to the exact same XArray index. Should this use a GPU-specific
page shift instead?
> @@ -287,7 +295,11 @@ static int handle_page_offline(struct xe_device *xe, u64 page_address, bool send
> "Physical page address belongs to critical BO: 0x%llx\n", page_address);
> return ret;
> case -EEXIST:
> - action = XE_RAS_PAGE_ACTION_OFFLINE;
> + if (xa_load(&xe->ras.offlined_pages, page_address >> PAGE_SHIFT))
> + action = XE_RAS_PAGE_ACTION_DECLINE;
> + else
> + action = XE_RAS_PAGE_ACTION_OFFLINE;
> +
[Severity: High]
If aliasing occurs due to PAGE_SHIFT on 64KB CPU page architectures, could
this xa_load() falsely return a match?
If a subsequent ECC error occurs in a different 4KB GPU page but within the
same 64KB CPU page block, it appears this would return a false match. The
driver would then incorrectly decline the firmware's request to offline the
second page, allowing the system to continue using poisoned memory.
[ ... ]
> @@ -409,8 +421,11 @@ static void get_offlined_list(struct xe_device *xe)
> return;
> }
>
> - for (i = 0; i < response.pages_returned && i < XE_RAS_NUM_PAGES; i++)
> + for (i = 0; i < response.pages_returned && i < XE_RAS_NUM_PAGES; i++) {
> handle_page_offline(xe, response.page_addresses[i], false);
> + xa_store(&ras->offlined_pages, response.page_addresses[i] >> PAGE_SHIFT,
> + XE_RAS_PAGE_OFFLINED, GFP_KERNEL);
> + }
[Severity: High]
Similarly, syncing the initial list of offlined pages from firmware uses
PAGE_SHIFT here, which might suffer from the same address truncation issue.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260825063615.3697317-7-riana.tauro@intel.com?part=5
^ permalink raw reply [flat|nested] 15+ messages in thread
* ✓ CI.KUnit: success for Add support to handle memory double-bit ecc errors
2026-08-25 6:36 [PATCH 0/5] Add support to handle memory double-bit ecc errors Riana Tauro
` (4 preceding siblings ...)
2026-08-25 6:36 ` [PATCH 5/5] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates Riana Tauro
@ 2026-08-25 9:19 ` Patchwork
2026-08-25 9:57 ` ✗ Xe.CI.BAT: failure " Patchwork
` (2 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-08-25 9:19 UTC (permalink / raw)
To: Tauro, Riana; +Cc: intel-xe
== Series Details ==
Series: Add support to handle memory double-bit ecc errors
URL : https://patchwork.freedesktop.org/series/172710/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[09:17:48] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:17:53] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[09:18:25] Starting KUnit Kernel (1/1)...
[09:18:25] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:18:25] ================== guc_buf (11 subtests) ===================
[09:18:25] [PASSED] test_smallest
[09:18:25] [PASSED] test_largest
[09:18:25] [PASSED] test_granular
[09:18:25] [PASSED] test_unique
[09:18:25] [PASSED] test_overlap
[09:18:25] [PASSED] test_reusable
[09:18:25] [PASSED] test_too_big
[09:18:25] [PASSED] test_flush
[09:18:25] [PASSED] test_lookup
[09:18:25] [PASSED] test_data
[09:18:25] [PASSED] test_class
[09:18:25] ===================== [PASSED] guc_buf =====================
[09:18:25] =================== guc_dbm (7 subtests) ===================
[09:18:25] [PASSED] test_empty
[09:18:25] [PASSED] test_default
[09:18:25] ======================== test_size ========================
[09:18:25] [PASSED] 4
[09:18:25] [PASSED] 8
[09:18:25] [PASSED] 32
[09:18:25] [PASSED] 256
[09:18:25] ==================== [PASSED] test_size ====================
[09:18:25] ======================= test_reuse ========================
[09:18:25] [PASSED] 4
[09:18:25] [PASSED] 8
[09:18:25] [PASSED] 32
[09:18:25] [PASSED] 256
[09:18:25] =================== [PASSED] test_reuse ====================
[09:18:25] =================== test_range_overlap ====================
[09:18:25] [PASSED] 4
[09:18:25] [PASSED] 8
[09:18:25] [PASSED] 32
[09:18:25] [PASSED] 256
[09:18:25] =============== [PASSED] test_range_overlap ================
[09:18:25] =================== test_range_compact ====================
[09:18:25] [PASSED] 4
[09:18:25] [PASSED] 8
[09:18:25] [PASSED] 32
[09:18:25] [PASSED] 256
[09:18:25] =============== [PASSED] test_range_compact ================
[09:18:25] ==================== test_range_spare =====================
[09:18:25] [PASSED] 4
[09:18:25] [PASSED] 8
[09:18:25] [PASSED] 32
[09:18:25] [PASSED] 256
[09:18:25] ================ [PASSED] test_range_spare =================
[09:18:25] ===================== [PASSED] guc_dbm =====================
[09:18:25] =================== guc_idm (6 subtests) ===================
[09:18:25] [PASSED] bad_init
[09:18:25] [PASSED] no_init
[09:18:25] [PASSED] init_fini
[09:18:25] [PASSED] check_used
[09:18:25] [PASSED] check_quota
[09:18:25] [PASSED] check_all
[09:18:25] ===================== [PASSED] guc_idm =====================
[09:18:25] =============== guc_klv_helpers (9 subtests) ===============
[09:18:25] [PASSED] test_count
[09:18:25] [PASSED] test_encode_u32
[09:18:25] [PASSED] test_encode_u64
[09:18:25] [PASSED] test_encode_string
[09:18:25] [PASSED] test_encode_object_raw
[09:18:25] [PASSED] test_encode_object_klv
[09:18:25] [PASSED] test_encode_object_nested
[09:18:25] [PASSED] test_encode_object_basic
[09:18:25] [PASSED] test_print
[09:18:25] ================= [PASSED] guc_klv_helpers =================
[09:18:25] =================== xe_log (4 subtests) ====================
[09:18:25] [PASSED] demo_cper
[09:18:25] [PASSED] demo_dmesg
[09:18:25] ======================= test_dmesg ========================
[09:18:25] [PASSED] test_fatal
[09:18:25] [PASSED] test_fatal_tile
[09:18:25] [PASSED] test_fatal_gt
[09:18:25] [PASSED] test_fatal_comp
[09:18:25] [PASSED] test_fatal_comp_tile
[09:18:25] [PASSED] test_fatal_comp_gt
[09:18:25] [PASSED] test_fatal_all
[09:18:25] [PASSED] test_recoverable
[09:18:25] [PASSED] test_recoverable_tile
[09:18:25] [PASSED] test_recoverable_gt
[09:18:25] [PASSED] test_recoverable_comp
[09:18:25] [PASSED] test_recoverable_comp_tile
[09:18:25] [PASSED] test_recoverable_comp_gt
[09:18:25] [PASSED] test_recoverable_all
[09:18:25] [PASSED] test_info
[09:18:25] [PASSED] test_info_tile
[09:18:25] [PASSED] test_info_gt
[09:18:25] [PASSED] test_info_err
[09:18:25] [PASSED] test_info_comp
[09:18:25] [PASSED] test_info_comp_tile
[09:18:25] [PASSED] test_info_comp_gt
[09:18:25] [PASSED] test_info_all
[09:18:25] [PASSED] test_hw_fatal
[09:18:25] [PASSED] test_hw_recoverable
[09:18:25] [PASSED] test_hw_corrected
[09:18:25] [PASSED] test_hw_informational
[09:18:25] =================== [PASSED] test_dmesg ====================
[09:18:25] ====================== test_invalid =======================
[09:18:25] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[09:18:25] ================== [SKIPPED] test_invalid ==================
[09:18:25] ===================== [PASSED] xe_log ======================
[09:18:25] ================== no_relay (3 subtests) ===================
[09:18:25] [PASSED] xe_drops_guc2pf_if_not_ready
[09:18:25] [PASSED] xe_drops_guc2vf_if_not_ready
[09:18:25] [PASSED] xe_rejects_send_if_not_ready
[09:18:25] ==================== [PASSED] no_relay =====================
[09:18:25] ================== pf_relay (14 subtests) ==================
[09:18:25] [PASSED] pf_rejects_guc2pf_too_short
[09:18:25] [PASSED] pf_rejects_guc2pf_too_long
[09:18:25] [PASSED] pf_rejects_guc2pf_no_payload
[09:18:25] [PASSED] pf_fails_no_payload
[09:18:25] [PASSED] pf_fails_bad_origin
[09:18:25] [PASSED] pf_fails_bad_type
[09:18:25] [PASSED] pf_txn_reports_error
[09:18:25] [PASSED] pf_txn_sends_pf2guc
[09:18:25] [PASSED] pf_sends_pf2guc
[09:18:25] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:18:25] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:18:25] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:18:25] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:18:25] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:18:25] ==================== [PASSED] pf_relay =====================
[09:18:25] ================== vf_relay (3 subtests) ===================
[09:18:25] [PASSED] vf_rejects_guc2vf_too_short
[09:18:25] [PASSED] vf_rejects_guc2vf_too_long
[09:18:25] [PASSED] vf_rejects_guc2vf_no_payload
[09:18:25] ==================== [PASSED] vf_relay =====================
[09:18:25] ================ pf_gt_config (9 subtests) =================
[09:18:25] [PASSED] fair_contexts_1vf
[09:18:25] [PASSED] fair_doorbells_1vf
[09:18:25] [PASSED] fair_ggtt_1vf
[09:18:25] ====================== fair_vram_1vf ======================
[09:18:25] [PASSED] 3.50 GiB
[09:18:25] [PASSED] 11.5 GiB
[09:18:25] [PASSED] 15.5 GiB
[09:18:26] [PASSED] 31.5 GiB
[09:18:26] [PASSED] 63.5 GiB
[09:18:26] [PASSED] 1.91 GiB
[09:18:26] ================== [PASSED] fair_vram_1vf ==================
[09:18:26] ================ fair_vram_1vf_admin_only =================
[09:18:26] [PASSED] 3.50 GiB
[09:18:26] [PASSED] 11.5 GiB
[09:18:26] [PASSED] 15.5 GiB
[09:18:26] [PASSED] 31.5 GiB
[09:18:26] [PASSED] 63.5 GiB
[09:18:26] [PASSED] 1.91 GiB
[09:18:26] ============ [PASSED] fair_vram_1vf_admin_only =============
[09:18:26] ====================== fair_contexts ======================
[09:18:26] [PASSED] 1 VF
[09:18:26] [PASSED] 2 VFs
[09:18:26] [PASSED] 3 VFs
[09:18:26] [PASSED] 4 VFs
[09:18:26] [PASSED] 5 VFs
[09:18:26] [PASSED] 6 VFs
[09:18:26] [PASSED] 7 VFs
[09:18:26] [PASSED] 8 VFs
[09:18:26] [PASSED] 9 VFs
[09:18:26] [PASSED] 10 VFs
[09:18:26] [PASSED] 11 VFs
[09:18:26] [PASSED] 12 VFs
[09:18:26] [PASSED] 13 VFs
[09:18:26] [PASSED] 14 VFs
[09:18:26] [PASSED] 15 VFs
[09:18:26] [PASSED] 16 VFs
[09:18:26] [PASSED] 17 VFs
[09:18:26] [PASSED] 18 VFs
[09:18:26] [PASSED] 19 VFs
[09:18:26] [PASSED] 20 VFs
[09:18:26] [PASSED] 21 VFs
[09:18:26] [PASSED] 22 VFs
[09:18:26] [PASSED] 23 VFs
[09:18:26] [PASSED] 24 VFs
[09:18:26] [PASSED] 25 VFs
[09:18:26] [PASSED] 26 VFs
[09:18:26] [PASSED] 27 VFs
[09:18:26] [PASSED] 28 VFs
[09:18:26] [PASSED] 29 VFs
[09:18:26] [PASSED] 30 VFs
[09:18:26] [PASSED] 31 VFs
[09:18:26] [PASSED] 32 VFs
[09:18:26] [PASSED] 33 VFs
[09:18:26] [PASSED] 34 VFs
[09:18:26] [PASSED] 35 VFs
[09:18:26] [PASSED] 36 VFs
[09:18:26] [PASSED] 37 VFs
[09:18:26] [PASSED] 38 VFs
[09:18:26] [PASSED] 39 VFs
[09:18:26] [PASSED] 40 VFs
[09:18:26] [PASSED] 41 VFs
[09:18:26] [PASSED] 42 VFs
[09:18:26] [PASSED] 43 VFs
[09:18:26] [PASSED] 44 VFs
[09:18:26] [PASSED] 45 VFs
[09:18:26] [PASSED] 46 VFs
[09:18:26] [PASSED] 47 VFs
[09:18:26] [PASSED] 48 VFs
[09:18:26] [PASSED] 49 VFs
[09:18:26] [PASSED] 50 VFs
[09:18:26] [PASSED] 51 VFs
[09:18:26] [PASSED] 52 VFs
[09:18:26] [PASSED] 53 VFs
[09:18:26] [PASSED] 54 VFs
[09:18:26] [PASSED] 55 VFs
[09:18:26] [PASSED] 56 VFs
[09:18:26] [PASSED] 57 VFs
[09:18:26] [PASSED] 58 VFs
[09:18:26] [PASSED] 59 VFs
[09:18:26] [PASSED] 60 VFs
[09:18:26] [PASSED] 61 VFs
[09:18:26] [PASSED] 62 VFs
[09:18:26] [PASSED] 63 VFs
[09:18:26] ================== [PASSED] fair_contexts ==================
[09:18:26] ===================== fair_doorbells ======================
[09:18:26] [PASSED] 1 VF
[09:18:26] [PASSED] 2 VFs
[09:18:26] [PASSED] 3 VFs
[09:18:26] [PASSED] 4 VFs
[09:18:26] [PASSED] 5 VFs
[09:18:26] [PASSED] 6 VFs
[09:18:26] [PASSED] 7 VFs
[09:18:26] [PASSED] 8 VFs
[09:18:26] [PASSED] 9 VFs
[09:18:26] [PASSED] 10 VFs
[09:18:26] [PASSED] 11 VFs
[09:18:26] [PASSED] 12 VFs
[09:18:26] [PASSED] 13 VFs
[09:18:26] [PASSED] 14 VFs
[09:18:26] [PASSED] 15 VFs
[09:18:26] [PASSED] 16 VFs
[09:18:26] [PASSED] 17 VFs
[09:18:26] [PASSED] 18 VFs
[09:18:26] [PASSED] 19 VFs
[09:18:26] [PASSED] 20 VFs
[09:18:26] [PASSED] 21 VFs
[09:18:26] [PASSED] 22 VFs
[09:18:26] [PASSED] 23 VFs
[09:18:26] [PASSED] 24 VFs
[09:18:26] [PASSED] 25 VFs
[09:18:26] [PASSED] 26 VFs
[09:18:26] [PASSED] 27 VFs
[09:18:26] [PASSED] 28 VFs
[09:18:26] [PASSED] 29 VFs
[09:18:26] [PASSED] 30 VFs
[09:18:26] [PASSED] 31 VFs
[09:18:26] [PASSED] 32 VFs
[09:18:26] [PASSED] 33 VFs
[09:18:26] [PASSED] 34 VFs
[09:18:26] [PASSED] 35 VFs
[09:18:26] [PASSED] 36 VFs
[09:18:26] [PASSED] 37 VFs
[09:18:26] [PASSED] 38 VFs
[09:18:26] [PASSED] 39 VFs
[09:18:26] [PASSED] 40 VFs
[09:18:26] [PASSED] 41 VFs
[09:18:26] [PASSED] 42 VFs
[09:18:26] [PASSED] 43 VFs
[09:18:26] [PASSED] 44 VFs
[09:18:26] [PASSED] 45 VFs
[09:18:26] [PASSED] 46 VFs
[09:18:26] [PASSED] 47 VFs
[09:18:26] [PASSED] 48 VFs
[09:18:26] [PASSED] 49 VFs
[09:18:26] [PASSED] 50 VFs
[09:18:26] [PASSED] 51 VFs
[09:18:26] [PASSED] 52 VFs
[09:18:26] [PASSED] 53 VFs
[09:18:26] [PASSED] 54 VFs
[09:18:26] [PASSED] 55 VFs
[09:18:26] [PASSED] 56 VFs
[09:18:26] [PASSED] 57 VFs
[09:18:26] [PASSED] 58 VFs
[09:18:26] [PASSED] 59 VFs
[09:18:26] [PASSED] 60 VFs
[09:18:26] [PASSED] 61 VFs
[09:18:26] [PASSED] 62 VFs
[09:18:26] [PASSED] 63 VFs
[09:18:26] ================= [PASSED] fair_doorbells ==================
[09:18:26] ======================== fair_ggtt ========================
[09:18:26] [PASSED] 1 VF
[09:18:26] [PASSED] 2 VFs
[09:18:26] [PASSED] 3 VFs
[09:18:26] [PASSED] 4 VFs
[09:18:26] [PASSED] 5 VFs
[09:18:26] [PASSED] 6 VFs
[09:18:26] [PASSED] 7 VFs
[09:18:26] [PASSED] 8 VFs
[09:18:26] [PASSED] 9 VFs
[09:18:26] [PASSED] 10 VFs
[09:18:26] [PASSED] 11 VFs
[09:18:26] [PASSED] 12 VFs
[09:18:26] [PASSED] 13 VFs
[09:18:26] [PASSED] 14 VFs
[09:18:26] [PASSED] 15 VFs
[09:18:26] [PASSED] 16 VFs
[09:18:26] [PASSED] 17 VFs
[09:18:26] [PASSED] 18 VFs
[09:18:26] [PASSED] 19 VFs
[09:18:26] [PASSED] 20 VFs
[09:18:26] [PASSED] 21 VFs
[09:18:26] [PASSED] 22 VFs
[09:18:26] [PASSED] 23 VFs
[09:18:26] [PASSED] 24 VFs
[09:18:26] [PASSED] 25 VFs
[09:18:26] [PASSED] 26 VFs
[09:18:26] [PASSED] 27 VFs
[09:18:26] [PASSED] 28 VFs
[09:18:26] [PASSED] 29 VFs
[09:18:26] [PASSED] 30 VFs
[09:18:26] [PASSED] 31 VFs
[09:18:26] [PASSED] 32 VFs
[09:18:26] [PASSED] 33 VFs
[09:18:26] [PASSED] 34 VFs
[09:18:26] [PASSED] 35 VFs
[09:18:26] [PASSED] 36 VFs
[09:18:26] [PASSED] 37 VFs
[09:18:26] [PASSED] 38 VFs
[09:18:26] [PASSED] 39 VFs
[09:18:26] [PASSED] 40 VFs
[09:18:26] [PASSED] 41 VFs
[09:18:26] [PASSED] 42 VFs
[09:18:26] [PASSED] 43 VFs
[09:18:26] [PASSED] 44 VFs
[09:18:26] [PASSED] 45 VFs
[09:18:26] [PASSED] 46 VFs
[09:18:26] [PASSED] 47 VFs
[09:18:26] [PASSED] 48 VFs
[09:18:26] [PASSED] 49 VFs
[09:18:26] [PASSED] 50 VFs
[09:18:26] [PASSED] 51 VFs
[09:18:26] [PASSED] 52 VFs
[09:18:26] [PASSED] 53 VFs
[09:18:26] [PASSED] 54 VFs
[09:18:26] [PASSED] 55 VFs
[09:18:26] [PASSED] 56 VFs
[09:18:26] [PASSED] 57 VFs
[09:18:26] [PASSED] 58 VFs
[09:18:26] [PASSED] 59 VFs
[09:18:26] [PASSED] 60 VFs
[09:18:26] [PASSED] 61 VFs
[09:18:26] [PASSED] 62 VFs
[09:18:26] [PASSED] 63 VFs
[09:18:26] ==================== [PASSED] fair_ggtt ====================
[09:18:26] ======================== fair_vram ========================
[09:18:26] [PASSED] 1 VF
[09:18:26] [PASSED] 2 VFs
[09:18:26] [PASSED] 3 VFs
[09:18:26] [PASSED] 4 VFs
[09:18:26] [PASSED] 5 VFs
[09:18:26] [PASSED] 6 VFs
[09:18:26] [PASSED] 7 VFs
[09:18:26] [PASSED] 8 VFs
[09:18:26] [PASSED] 9 VFs
[09:18:26] [PASSED] 10 VFs
[09:18:26] [PASSED] 11 VFs
[09:18:26] [PASSED] 12 VFs
[09:18:26] [PASSED] 13 VFs
[09:18:26] [PASSED] 14 VFs
[09:18:26] [PASSED] 15 VFs
[09:18:26] [PASSED] 16 VFs
[09:18:26] [PASSED] 17 VFs
[09:18:26] [PASSED] 18 VFs
[09:18:26] [PASSED] 19 VFs
[09:18:26] [PASSED] 20 VFs
[09:18:26] [PASSED] 21 VFs
[09:18:26] [PASSED] 22 VFs
[09:18:26] [PASSED] 23 VFs
[09:18:26] [PASSED] 24 VFs
[09:18:26] [PASSED] 25 VFs
[09:18:26] [PASSED] 26 VFs
[09:18:26] [PASSED] 27 VFs
[09:18:26] [PASSED] 28 VFs
[09:18:26] [PASSED] 29 VFs
[09:18:26] [PASSED] 30 VFs
[09:18:26] [PASSED] 31 VFs
[09:18:26] [PASSED] 32 VFs
[09:18:26] [PASSED] 33 VFs
[09:18:26] [PASSED] 34 VFs
[09:18:26] [PASSED] 35 VFs
[09:18:26] [PASSED] 36 VFs
[09:18:26] [PASSED] 37 VFs
[09:18:26] [PASSED] 38 VFs
[09:18:26] [PASSED] 39 VFs
[09:18:26] [PASSED] 40 VFs
[09:18:26] [PASSED] 41 VFs
[09:18:26] [PASSED] 42 VFs
[09:18:26] [PASSED] 43 VFs
[09:18:26] [PASSED] 44 VFs
[09:18:26] [PASSED] 45 VFs
[09:18:26] [PASSED] 46 VFs
[09:18:26] [PASSED] 47 VFs
[09:18:26] [PASSED] 48 VFs
[09:18:26] [PASSED] 49 VFs
[09:18:26] [PASSED] 50 VFs
[09:18:26] [PASSED] 51 VFs
[09:18:26] [PASSED] 52 VFs
[09:18:26] [PASSED] 53 VFs
[09:18:26] [PASSED] 54 VFs
[09:18:26] [PASSED] 55 VFs
[09:18:26] [PASSED] 56 VFs
[09:18:26] [PASSED] 57 VFs
[09:18:26] [PASSED] 58 VFs
[09:18:26] [PASSED] 59 VFs
[09:18:26] [PASSED] 60 VFs
[09:18:26] [PASSED] 61 VFs
[09:18:26] [PASSED] 62 VFs
[09:18:26] [PASSED] 63 VFs
[09:18:26] ==================== [PASSED] fair_vram ====================
[09:18:26] ================== [PASSED] pf_gt_config ===================
[09:18:26] ===================== lmtt (1 subtest) =====================
[09:18:26] ======================== test_ops =========================
[09:18:26] [PASSED] 2-level
[09:18:26] [PASSED] multi-level
[09:18:26] ==================== [PASSED] test_ops =====================
[09:18:26] ====================== [PASSED] lmtt =======================
[09:18:26] ================= sriov_packet (1 subtest) =================
[09:18:26] [PASSED] test_descriptor_init
[09:18:26] ================== [PASSED] sriov_packet ===================
[09:18:26] ================= pf_service (11 subtests) =================
[09:18:26] [PASSED] pf_negotiate_any
[09:18:26] [PASSED] pf_negotiate_base_match
[09:18:26] [PASSED] pf_negotiate_base_newer
[09:18:26] [PASSED] pf_negotiate_base_next
[09:18:26] [SKIPPED] pf_negotiate_base_older (no older minor)
[09:18:26] [PASSED] pf_negotiate_base_prev
[09:18:26] [PASSED] pf_negotiate_latest_match
[09:18:26] [PASSED] pf_negotiate_latest_newer
[09:18:26] [PASSED] pf_negotiate_latest_next
[09:18:26] [SKIPPED] pf_negotiate_latest_older (no older minor)
[09:18:26] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[09:18:26] =================== [PASSED] pf_service ====================
[09:18:26] ================= xe_guc_g2g (2 subtests) ==================
[09:18:26] ============== xe_live_guc_g2g_kunit_default ==============
[09:18:26] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[09:18:26] ============== xe_live_guc_g2g_kunit_allmem ===============
[09:18:26] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[09:18:26] =================== [SKIPPED] xe_guc_g2g ===================
[09:18:26] =================== xe_mocs (2 subtests) ===================
[09:18:26] ================ xe_live_mocs_kernel_kunit ================
[09:18:26] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[09:18:26] ================ xe_live_mocs_reset_kunit =================
[09:18:26] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[09:18:26] ==================== [SKIPPED] xe_mocs =====================
[09:18:26] ================= xe_migrate (2 subtests) ==================
[09:18:26] ================= xe_migrate_sanity_kunit =================
[09:18:26] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[09:18:26] ================== xe_validate_ccs_kunit ==================
[09:18:26] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[09:18:26] =================== [SKIPPED] xe_migrate ===================
[09:18:26] ================== xe_dma_buf (1 subtest) ==================
[09:18:26] ==================== xe_dma_buf_kunit =====================
[09:18:26] ================ [SKIPPED] xe_dma_buf_kunit ================
[09:18:26] =================== [SKIPPED] xe_dma_buf ===================
[09:18:26] ================= xe_bo_shrink (1 subtest) =================
[09:18:26] =================== xe_bo_shrink_kunit ====================
[09:18:26] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[09:18:26] ================== [SKIPPED] xe_bo_shrink ==================
[09:18:26] ==================== xe_bo (2 subtests) ====================
[09:18:26] ================== xe_ccs_migrate_kunit ===================
[09:18:26] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[09:18:26] ==================== xe_bo_evict_kunit ====================
[09:18:26] =============== [SKIPPED] xe_bo_evict_kunit ================
[09:18:26] ===================== [SKIPPED] xe_bo ======================
[09:18:26] =================== xe_any (9 subtests) ====================
[09:18:26] [PASSED] test_to_xe
[09:18:26] [PASSED] test_to_dev
[09:18:26] [PASSED] test_to_pdev
[09:18:26] [PASSED] test_to_drm
[09:18:26] [PASSED] test_if_pdev
[09:18:26] [PASSED] test_if_xe
[09:18:26] [PASSED] test_if_tile
[09:18:26] [PASSED] test_if_gt
[09:18:26] [PASSED] test_to_id
[09:18:26] ===================== [PASSED] xe_any ======================
[09:18:26] ==================== args (13 subtests) ====================
[09:18:26] [PASSED] count_args_test
[09:18:26] [PASSED] call_args_example
[09:18:26] [PASSED] call_args_test
[09:18:26] [PASSED] drop_first_arg_example
[09:18:26] [PASSED] drop_first_arg_test
[09:18:26] [PASSED] first_arg_example
[09:18:26] [PASSED] first_arg_test
[09:18:26] [PASSED] last_arg_example
[09:18:26] [PASSED] last_arg_test
[09:18:26] [PASSED] pick_arg_example
[09:18:26] [PASSED] if_args_example
[09:18:26] [PASSED] if_args_test
[09:18:26] [PASSED] sep_comma_example
[09:18:26] ====================== [PASSED] args =======================
[09:18:26] =================== xe_pci (3 subtests) ====================
[09:18:26] ==================== check_graphics_ip ====================
[09:18:26] [PASSED] 12.00 Xe_LP
[09:18:26] [PASSED] 12.10 Xe_LP+
[09:18:26] [PASSED] 12.55 Xe_HPG
[09:18:26] [PASSED] 12.60 Xe_HPC
[09:18:26] [PASSED] 12.70 Xe_LPG
[09:18:26] [PASSED] 12.71 Xe_LPG
[09:18:26] [PASSED] 12.74 Xe_LPG+
[09:18:26] [PASSED] 20.01 Xe2_HPG
[09:18:26] [PASSED] 20.02 Xe2_HPG
[09:18:26] [PASSED] 20.04 Xe2_LPG
[09:18:26] [PASSED] 30.00 Xe3_LPG
[09:18:26] [PASSED] 30.01 Xe3_LPG
[09:18:26] [PASSED] 30.03 Xe3_LPG
[09:18:26] [PASSED] 30.04 Xe3_LPG
[09:18:26] [PASSED] 30.05 Xe3_LPG
[09:18:26] [PASSED] 35.10 Xe3p_LPG
[09:18:26] [PASSED] 35.11 Xe3p_XPC
[09:18:26] ================ [PASSED] check_graphics_ip ================
[09:18:26] ===================== check_media_ip ======================
[09:18:26] [PASSED] 12.00 Xe_M
[09:18:26] [PASSED] 12.55 Xe_HPM
[09:18:26] [PASSED] 13.00 Xe_LPM+
[09:18:26] [PASSED] 13.01 Xe2_HPM
[09:18:26] [PASSED] 20.00 Xe2_LPM
[09:18:26] [PASSED] 30.00 Xe3_LPM
[09:18:26] [PASSED] 30.02 Xe3_LPM
[09:18:26] [PASSED] 35.00 Xe3p_LPM
[09:18:26] [PASSED] 35.03 Xe3p_HPM
[09:18:26] ================= [PASSED] check_media_ip ==================
[09:18:26] =================== check_platform_desc ===================
[09:18:26] [PASSED] 0x9A60 (TIGERLAKE)
[09:18:26] [PASSED] 0x9A68 (TIGERLAKE)
[09:18:26] [PASSED] 0x9A70 (TIGERLAKE)
[09:18:26] [PASSED] 0x9A40 (TIGERLAKE)
[09:18:26] [PASSED] 0x9A49 (TIGERLAKE)
[09:18:26] [PASSED] 0x9A59 (TIGERLAKE)
[09:18:26] [PASSED] 0x9A78 (TIGERLAKE)
[09:18:26] [PASSED] 0x9AC0 (TIGERLAKE)
[09:18:26] [PASSED] 0x9AC9 (TIGERLAKE)
[09:18:26] [PASSED] 0x9AD9 (TIGERLAKE)
[09:18:26] [PASSED] 0x9AF8 (TIGERLAKE)
[09:18:26] [PASSED] 0x4C80 (ROCKETLAKE)
[09:18:26] [PASSED] 0x4C8A (ROCKETLAKE)
[09:18:26] [PASSED] 0x4C8B (ROCKETLAKE)
[09:18:26] [PASSED] 0x4C8C (ROCKETLAKE)
[09:18:26] [PASSED] 0x4C90 (ROCKETLAKE)
[09:18:26] [PASSED] 0x4C9A (ROCKETLAKE)
[09:18:26] [PASSED] 0x4680 (ALDERLAKE_S)
[09:18:26] [PASSED] 0x4682 (ALDERLAKE_S)
[09:18:26] [PASSED] 0x4688 (ALDERLAKE_S)
[09:18:26] [PASSED] 0x468A (ALDERLAKE_S)
[09:18:26] [PASSED] 0x468B (ALDERLAKE_S)
[09:18:26] [PASSED] 0x4690 (ALDERLAKE_S)
[09:18:26] [PASSED] 0x4692 (ALDERLAKE_S)
[09:18:26] [PASSED] 0x4693 (ALDERLAKE_S)
[09:18:26] [PASSED] 0x46A0 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46A1 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46A2 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46A3 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46A6 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46A8 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46AA (ALDERLAKE_P)
[09:18:26] [PASSED] 0x462A (ALDERLAKE_P)
[09:18:26] [PASSED] 0x4626 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x4628 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46B0 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46B1 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46B2 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46B3 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46C0 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46C1 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46C2 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46C3 (ALDERLAKE_P)
[09:18:26] [PASSED] 0x46D0 (ALDERLAKE_N)
[09:18:26] [PASSED] 0x46D1 (ALDERLAKE_N)
[09:18:26] [PASSED] 0x46D2 (ALDERLAKE_N)
[09:18:26] [PASSED] 0x46D3 (ALDERLAKE_N)
[09:18:26] [PASSED] 0x46D4 (ALDERLAKE_N)
[09:18:26] [PASSED] 0xA721 (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA7A1 (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA7A9 (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA7AC (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA7AD (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA720 (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA7A0 (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA7A8 (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA7AA (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA7AB (ALDERLAKE_P)
[09:18:26] [PASSED] 0xA780 (ALDERLAKE_S)
[09:18:26] [PASSED] 0xA781 (ALDERLAKE_S)
[09:18:26] [PASSED] 0xA782 (ALDERLAKE_S)
[09:18:26] [PASSED] 0xA783 (ALDERLAKE_S)
[09:18:26] [PASSED] 0xA788 (ALDERLAKE_S)
[09:18:26] [PASSED] 0xA789 (ALDERLAKE_S)
[09:18:26] [PASSED] 0xA78A (ALDERLAKE_S)
[09:18:26] [PASSED] 0xA78B (ALDERLAKE_S)
[09:18:26] [PASSED] 0x4905 (DG1)
[09:18:26] [PASSED] 0x4906 (DG1)
[09:18:26] [PASSED] 0x4907 (DG1)
[09:18:26] [PASSED] 0x4908 (DG1)
[09:18:26] [PASSED] 0x4909 (DG1)
[09:18:26] [PASSED] 0x56C0 (DG2)
[09:18:26] [PASSED] 0x56C2 (DG2)
[09:18:26] [PASSED] 0x56C1 (DG2)
[09:18:26] [PASSED] 0x7D51 (METEORLAKE)
[09:18:26] [PASSED] 0x7DD1 (METEORLAKE)
[09:18:26] [PASSED] 0x7D41 (METEORLAKE)
[09:18:26] [PASSED] 0x7D67 (METEORLAKE)
[09:18:26] [PASSED] 0xB640 (METEORLAKE)
[09:18:26] [PASSED] 0x56A0 (DG2)
[09:18:26] [PASSED] 0x56A1 (DG2)
[09:18:26] [PASSED] 0x56A2 (DG2)
[09:18:26] [PASSED] 0x56BE (DG2)
[09:18:26] [PASSED] 0x56BF (DG2)
[09:18:26] [PASSED] 0x5690 (DG2)
[09:18:26] [PASSED] 0x5691 (DG2)
[09:18:26] [PASSED] 0x5692 (DG2)
[09:18:26] [PASSED] 0x56A5 (DG2)
[09:18:26] [PASSED] 0x56A6 (DG2)
[09:18:26] [PASSED] 0x56B0 (DG2)
[09:18:26] [PASSED] 0x56B1 (DG2)
[09:18:26] [PASSED] 0x56BA (DG2)
[09:18:26] [PASSED] 0x56BB (DG2)
[09:18:26] [PASSED] 0x56BC (DG2)
[09:18:26] [PASSED] 0x56BD (DG2)
[09:18:26] [PASSED] 0x5693 (DG2)
[09:18:26] [PASSED] 0x5694 (DG2)
[09:18:26] [PASSED] 0x5695 (DG2)
[09:18:26] [PASSED] 0x56A3 (DG2)
[09:18:26] [PASSED] 0x56A4 (DG2)
[09:18:26] [PASSED] 0x56B2 (DG2)
[09:18:26] [PASSED] 0x56B3 (DG2)
[09:18:26] [PASSED] 0x5696 (DG2)
[09:18:26] [PASSED] 0x5697 (DG2)
[09:18:26] [PASSED] 0xB69 (PVC)
[09:18:26] [PASSED] 0xB6E (PVC)
[09:18:26] [PASSED] 0xBD4 (PVC)
[09:18:26] [PASSED] 0xBD5 (PVC)
[09:18:26] [PASSED] 0xBD6 (PVC)
[09:18:26] [PASSED] 0xBD7 (PVC)
[09:18:26] [PASSED] 0xBD8 (PVC)
[09:18:26] [PASSED] 0xBD9 (PVC)
[09:18:26] [PASSED] 0xBDA (PVC)
[09:18:26] [PASSED] 0xBDB (PVC)
[09:18:26] [PASSED] 0xBE0 (PVC)
[09:18:26] [PASSED] 0xBE1 (PVC)
[09:18:26] [PASSED] 0xBE5 (PVC)
[09:18:26] [PASSED] 0x7D40 (METEORLAKE)
[09:18:26] [PASSED] 0x7D45 (METEORLAKE)
[09:18:26] [PASSED] 0x7D55 (METEORLAKE)
[09:18:26] [PASSED] 0x7D60 (METEORLAKE)
[09:18:26] [PASSED] 0x7DD5 (METEORLAKE)
[09:18:26] [PASSED] 0x6420 (LUNARLAKE)
[09:18:26] [PASSED] 0x64A0 (LUNARLAKE)
[09:18:26] [PASSED] 0x64B0 (LUNARLAKE)
[09:18:26] [PASSED] 0xE202 (BATTLEMAGE)
[09:18:26] [PASSED] 0xE209 (BATTLEMAGE)
[09:18:26] [PASSED] 0xE20B (BATTLEMAGE)
[09:18:26] [PASSED] 0xE20C (BATTLEMAGE)
[09:18:26] [PASSED] 0xE20D (BATTLEMAGE)
[09:18:26] [PASSED] 0xE210 (BATTLEMAGE)
[09:18:26] [PASSED] 0xE211 (BATTLEMAGE)
[09:18:26] [PASSED] 0xE212 (BATTLEMAGE)
[09:18:26] [PASSED] 0xE216 (BATTLEMAGE)
[09:18:26] [PASSED] 0xE220 (BATTLEMAGE)
[09:18:26] [PASSED] 0xE221 (BATTLEMAGE)
[09:18:26] [PASSED] 0xE222 (BATTLEMAGE)
[09:18:26] [PASSED] 0xE223 (BATTLEMAGE)
[09:18:26] [PASSED] 0xB080 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB081 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB082 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB083 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB084 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB085 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB086 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB087 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB08F (PANTHERLAKE)
[09:18:26] [PASSED] 0xB090 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB0A0 (PANTHERLAKE)
[09:18:26] [PASSED] 0xB0B0 (PANTHERLAKE)
[09:18:26] [PASSED] 0xFD80 (PANTHERLAKE)
[09:18:26] [PASSED] 0xFD81 (PANTHERLAKE)
[09:18:26] [PASSED] 0xD740 (NOVALAKE_S)
[09:18:26] [PASSED] 0xD741 (NOVALAKE_S)
[09:18:26] [PASSED] 0xD742 (NOVALAKE_S)
[09:18:26] [PASSED] 0xD743 (NOVALAKE_S)
[09:18:26] [PASSED] 0xD745 (NOVALAKE_S)
[09:18:26] [PASSED] 0xD74A (NOVALAKE_S)
[09:18:26] [PASSED] 0xD74B (NOVALAKE_S)
[09:18:26] [PASSED] 0x674C (CRESCENTISLAND)
[09:18:26] [PASSED] 0x674D (CRESCENTISLAND)
[09:18:26] [PASSED] 0x674E (CRESCENTISLAND)
[09:18:26] [PASSED] 0x674F (CRESCENTISLAND)
[09:18:26] [PASSED] 0x6750 (CRESCENTISLAND)
[09:18:26] [PASSED] 0xD750 (NOVALAKE_P)
[09:18:26] [PASSED] 0xD751 (NOVALAKE_P)
[09:18:26] [PASSED] 0xD752 (NOVALAKE_P)
[09:18:26] [PASSED] 0xD753 (NOVALAKE_P)
[09:18:26] [PASSED] 0xD754 (NOVALAKE_P)
[09:18:26] [PASSED] 0xD755 (NOVALAKE_P)
[09:18:26] [PASSED] 0xD756 (NOVALAKE_P)
[09:18:26] [PASSED] 0xD757 (NOVALAKE_P)
[09:18:26] [PASSED] 0xD75F (NOVALAKE_P)
[09:18:26] =============== [PASSED] check_platform_desc ===============
[09:18:26] ===================== [PASSED] xe_pci ======================
[09:18:26] ============= xe_rtp_tables_test (5 subtests) ==============
[09:18:26] ================== xe_rtp_table_gt_test ===================
[09:18:26] [PASSED] gt_was/14011060649
[09:18:26] [PASSED] gt_was/14011059788
[09:18:26] [PASSED] gt_was/14015795083
[09:18:26] [PASSED] gt_was/16021867713
[09:18:26] [PASSED] gt_was/14019449301
[09:18:26] [PASSED] gt_was/16028005424
[09:18:26] [PASSED] gt_was/14026578760
[09:18:26] [PASSED] gt_was/1409420604
[09:18:26] [PASSED] gt_was/1408615072
[09:18:26] [PASSED] gt_was/22010523718
[09:18:26] [PASSED] gt_was/14011006942
[09:18:26] [PASSED] gt_was/14014830051
[09:18:26] [PASSED] gt_was/18018781329
[09:18:26] [PASSED] gt_was/1509235366
[09:18:26] [PASSED] gt_was/18018781329
[09:18:26] [PASSED] gt_was/16016694945
[09:18:26] [PASSED] gt_was/14018575942
[09:18:26] [PASSED] gt_was/22016670082
[09:18:26] [PASSED] gt_was/22016670082
[09:18:26] [PASSED] gt_was/14017421178
[09:18:26] [PASSED] gt_was/16025250150
[09:18:26] [PASSED] gt_was/14021871409
[09:18:26] [PASSED] gt_was/16021865536
[09:18:26] [PASSED] gt_was/14021486841
[09:18:26] [PASSED] gt_was/14025160223
[09:18:26] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[09:18:26] [PASSED] gt_was/14025635424
[09:18:26] [PASSED] gt_was/16028005424
[09:18:26] ============== [PASSED] xe_rtp_table_gt_test ===============
[09:18:26] ================== xe_rtp_table_gt_test ===================
[09:18:26] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[09:18:26] [PASSED] gt_tunings/Tuning: 32B Access Enable
[09:18:26] [PASSED] gt_tunings/Tuning: L3 cache
[09:18:26] [PASSED] gt_tunings/Tuning: L3 cache - media
[09:18:26] [PASSED] gt_tunings/Tuning: Compression Overfetch
[09:18:26] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[09:18:26] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[09:18:26] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[09:18:26] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[09:18:26] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[09:18:26] [PASSED] gt_tunings/Tuning: Stateless compression control
[09:18:26] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[09:18:26] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[09:18:26] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[09:18:26] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[09:18:26] ============== [PASSED] xe_rtp_table_gt_test ===============
[09:18:26] ================== xe_rtp_table_oob_test ==================
[09:18:26] [PASSED] oob_was/1607983814
[09:18:26] [PASSED] oob_was/16010904313
[09:18:26] [PASSED] oob_was/18022495364
[09:18:26] [PASSED] oob_was/22012773006
[09:18:26] [PASSED] oob_was/14014475959
[09:18:26] [PASSED] oob_was/22011391025
[09:18:26] [PASSED] oob_was/22012727170
[09:18:26] [PASSED] oob_was/22012727685
[09:18:26] [PASSED] oob_was/22016596838
[09:18:26] [PASSED] oob_was/18020744125
[09:18:26] [PASSED] oob_was/1409600907
[09:18:26] [PASSED] oob_was/22014953428
[09:18:26] [PASSED] oob_was/16017236439
[09:18:26] [PASSED] oob_was/14019821291
[09:18:26] [PASSED] oob_was/14015076503
[09:18:26] [PASSED] oob_was/14018913170
[09:18:26] [PASSED] oob_was/14018094691
[09:18:26] [PASSED] oob_was/18024947630
[09:18:26] [PASSED] oob_was/16022287689
[09:18:26] [PASSED] oob_was/13011645652
[09:18:26] [PASSED] oob_was/14022293748
[09:18:26] [PASSED] oob_was/22019794406
[09:18:26] [PASSED] oob_was/22019338487
[09:18:26] [PASSED] oob_was/16023588340
[09:18:26] [PASSED] oob_was/14019789679
[09:18:26] [PASSED] oob_was/14022866841
[09:18:26] [PASSED] oob_was/16021333562
[09:18:26] [PASSED] oob_was/14016712196
[09:18:26] [PASSED] oob_was/14015568240
[09:18:26] [PASSED] oob_was/18013179988
[09:18:26] [PASSED] oob_was/1508761755
[09:18:26] [PASSED] oob_was/16023105232
[09:18:26] [PASSED] oob_was/16026508708
[09:18:26] [PASSED] oob_was/14020001231
[09:18:26] [PASSED] oob_was/16023683509
[09:18:26] [PASSED] oob_was/14025515070
[09:18:26] [PASSED] oob_was/15015404425_disable
[09:18:26] [PASSED] oob_was/16026007364
[09:18:26] [PASSED] oob_was/14020316580
[09:18:26] [PASSED] oob_was/14025883347
[09:18:26] [PASSED] oob_was/16029380221
[09:18:26] [PASSED] oob_was/22022079272
[09:18:26] [PASSED] oob_was/16029897822
[09:18:26] [PASSED] oob_was/14027054324
[09:18:26] ============== [PASSED] xe_rtp_table_oob_test ==============
[09:18:26] ================ xe_rtp_table_dev_oob_test ================
[09:18:26] [PASSED] device_oob_was/22010954014
[09:18:26] [PASSED] device_oob_was/15015404425
[09:18:26] [PASSED] device_oob_was/22019338487_display
[09:18:26] [PASSED] device_oob_was/14022085890
[09:18:26] [PASSED] device_oob_was/14026539277
[09:18:26] [PASSED] device_oob_was/14026633728
[09:18:26] [PASSED] device_oob_was/14026746987
[09:18:26] [PASSED] device_oob_was/14026779378
[09:18:26] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[09:18:26] ========== xe_rtp_table_missing_upper_bound_test ==========
[09:18:26] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[09:18:26] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[09:18:26] [PASSED] register_whitelist/1806527549
[09:18:26] [PASSED] register_whitelist/allow_read_ctx_timestamp
[09:18:26] [PASSED] register_whitelist/allow_read_queue_timestamp
[09:18:26] [PASSED] register_whitelist/16014440446
[09:18:26] [PASSED] register_whitelist/16017236439
[09:18:26] [PASSED] register_whitelist/16020183090
[09:18:26] [PASSED] register_whitelist/14024997852
[09:18:26] [PASSED] register_whitelist/14024997852
[09:18:26] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[09:18:26] =============== [PASSED] xe_rtp_tables_test ================
[09:18:26] =================== xe_rtp (3 subtests) ====================
[09:18:26] =================== xe_rtp_rules_tests ====================
[09:18:26] [PASSED] no
[09:18:26] [PASSED] yes
[09:18:26] [PASSED] no-and-no
[09:18:26] [PASSED] no-and-yes
[09:18:26] [PASSED] yes-and-no
[09:18:26] [PASSED] yes-and-yes
[09:18:26] [PASSED] no-or-no
[09:18:26] [PASSED] no-or-yes
[09:18:26] [PASSED] yes-or-no
[09:18:26] [PASSED] yes-or-yes
[09:18:26] [PASSED] no-yes-or-yes-no
[09:18:26] [PASSED] no-yes-or-yes-yes
[09:18:26] [PASSED] yes-yes-or-no-yes
[09:18:26] [PASSED] yes-yes-or-yes-yes
[09:18:26] [PASSED] no-no-or-yes-or-no
[09:18:26] [PASSED] or
[09:18:26] [PASSED] or-yes
[09:18:26] [PASSED] or-no
[09:18:26] [PASSED] yes-or
[09:18:26] [PASSED] no-or
[09:18:26] [PASSED] no-or-or-yes
[09:18:26] [PASSED] yes-or-or-no
[09:18:26] [PASSED] no-or-or-no
[09:18:26] [PASSED] missing-context-engine-class
[09:18:26] [PASSED] missing-context-engine-class-or-yes
[09:18:26] [PASSED] missing-context-engine-class-or-or-yes
[09:18:26] =============== [PASSED] xe_rtp_rules_tests ================
[09:18:26] =============== xe_rtp_process_to_sr_tests ================
[09:18:26] [PASSED] coalesce-same-reg
[09:18:26] [PASSED] coalesce-same-reg-literal-and-func
[09:18:26] [PASSED] no-match-no-add
[09:18:26] [PASSED] two-regs-two-entries
[09:18:26] [PASSED] clr-one-set-other
[09:18:26] [PASSED] set-field
[09:18:26] [PASSED] conflict-duplicate
[09:18:26] [PASSED] conflict-not-disjoint
[09:18:26] [PASSED] conflict-not-disjoint-literal-and-func
[09:18:26] [PASSED] conflict-reg-type
[09:18:26] [PASSED] bad-mcr-reg-forced-to-regular
[09:18:26] [PASSED] bad-regular-reg-forced-to-mcr
[09:18:26] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[09:18:26] ================== xe_rtp_process_tests ===================
[09:18:26] [PASSED] active1
[09:18:26] [PASSED] active2
[09:18:26] [PASSED] active-inactive
[09:18:26] [PASSED] inactive-active
[09:18:26] [PASSED] inactive-active-inactive
[09:18:26] [PASSED] inactive-inactive-inactive
[09:18:26] ============== [PASSED] xe_rtp_process_tests ===============
[09:18:26] ===================== [PASSED] xe_rtp ======================
[09:18:26] ==================== xe_wa (1 subtest) =====================
[09:18:26] ======================== xe_wa_gt =========================
[09:18:26] [PASSED] TIGERLAKE B0
[09:18:26] [PASSED] DG1 A0
[09:18:26] [PASSED] DG1 B0
[09:18:26] [PASSED] ALDERLAKE_S A0
[09:18:26] [PASSED] ALDERLAKE_S B0
[09:18:26] [PASSED] ALDERLAKE_S C0
[09:18:26] [PASSED] ALDERLAKE_S D0
[09:18:26] [PASSED] ALDERLAKE_P A0
[09:18:26] [PASSED] ALDERLAKE_P B0
[09:18:26] [PASSED] ALDERLAKE_P C0
[09:18:26] [PASSED] ALDERLAKE_S RPLS D0
[09:18:26] [PASSED] ALDERLAKE_P RPLU E0
[09:18:26] [PASSED] DG2 G10 C0
[09:18:26] [PASSED] DG2 G11 B1
[09:18:26] [PASSED] DG2 G12 A1
[09:18:26] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[09:18:26] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[09:18:26] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[09:18:26] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[09:18:26] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[09:18:26] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[09:18:26] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[09:18:26] ==================== [PASSED] xe_wa_gt =====================
[09:18:26] ====================== [PASSED] xe_wa ======================
[09:18:26] ============================================================
[09:18:26] Testing complete. Ran 789 tests: passed: 761, skipped: 28
[09:18:26] Elapsed time: 37.616s total, 4.385s configuring, 32.515s building, 0.675s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[09:18:26] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:18:28] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[09:18:53] Starting KUnit Kernel (1/1)...
[09:18:53] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:18:53] ============ drm_test_pick_cmdline (2 subtests) ============
[09:18:53] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[09:18:53] =============== drm_test_pick_cmdline_named ===============
[09:18:53] [PASSED] NTSC
[09:18:53] [PASSED] NTSC-J
[09:18:53] [PASSED] PAL
[09:18:53] [PASSED] PAL-M
[09:18:53] =========== [PASSED] drm_test_pick_cmdline_named ===========
[09:18:53] ============== [PASSED] drm_test_pick_cmdline ==============
[09:18:53] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[09:18:53] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[09:18:53] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[09:18:53] =========== drm_validate_clone_mode (2 subtests) ===========
[09:18:53] ============== drm_test_check_in_clone_mode ===============
[09:18:53] [PASSED] in_clone_mode
[09:18:53] [PASSED] not_in_clone_mode
[09:18:53] ========== [PASSED] drm_test_check_in_clone_mode ===========
[09:18:53] =============== drm_test_check_valid_clones ===============
[09:18:53] [PASSED] not_in_clone_mode
[09:18:53] [PASSED] valid_clone
[09:18:53] [PASSED] invalid_clone
[09:18:53] =========== [PASSED] drm_test_check_valid_clones ===========
[09:18:53] ============= [PASSED] drm_validate_clone_mode =============
[09:18:53] ============= drm_validate_modeset (1 subtest) =============
[09:18:53] [PASSED] drm_test_check_connector_changed_modeset
[09:18:53] ============== [PASSED] drm_validate_modeset ===============
[09:18:53] ====== drm_test_bridge_get_current_state (1 subtest) =======
[09:18:53] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[09:18:53] ======== [PASSED] drm_test_bridge_get_current_state ========
[09:18:53] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[09:18:53] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[09:18:53] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[09:18:53] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[09:18:53] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[09:18:53] ============== drm_bridge_alloc (2 subtests) ===============
[09:18:53] [PASSED] drm_test_drm_bridge_alloc_basic
[09:18:53] [PASSED] drm_test_drm_bridge_alloc_get_put
[09:18:53] ================ [PASSED] drm_bridge_alloc =================
[09:18:53] ============= drm_bridge_bus_fmt (5 subtests) ==============
[09:18:53] [PASSED] drm_test_bridge_rgb_yuv_rgb
[09:18:53] [PASSED] drm_test_bridge_must_convert_to_yuv444
[09:18:53] [PASSED] drm_test_bridge_hdmi_auto_rgb
[09:18:53] [PASSED] drm_test_bridge_auto_first
[09:18:53] [PASSED] drm_test_bridge_rgb_yuv_no_path
[09:18:53] =============== [PASSED] drm_bridge_bus_fmt ================
[09:18:53] ============= drm_cmdline_parser (40 subtests) =============
[09:18:53] [PASSED] drm_test_cmdline_force_d_only
[09:18:53] [PASSED] drm_test_cmdline_force_D_only_dvi
[09:18:53] [PASSED] drm_test_cmdline_force_D_only_hdmi
[09:18:53] [PASSED] drm_test_cmdline_force_D_only_not_digital
[09:18:53] [PASSED] drm_test_cmdline_force_e_only
[09:18:53] [PASSED] drm_test_cmdline_res
[09:18:53] [PASSED] drm_test_cmdline_res_vesa
[09:18:53] [PASSED] drm_test_cmdline_res_vesa_rblank
[09:18:53] [PASSED] drm_test_cmdline_res_rblank
[09:18:53] [PASSED] drm_test_cmdline_res_bpp
[09:18:53] [PASSED] drm_test_cmdline_res_refresh
[09:18:53] [PASSED] drm_test_cmdline_res_bpp_refresh
[09:18:53] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[09:18:53] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[09:18:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[09:18:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[09:18:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[09:18:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[09:18:53] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[09:18:53] [PASSED] drm_test_cmdline_res_margins_force_on
[09:18:53] [PASSED] drm_test_cmdline_res_vesa_margins
[09:18:53] [PASSED] drm_test_cmdline_name
[09:18:53] [PASSED] drm_test_cmdline_name_bpp
[09:18:53] [PASSED] drm_test_cmdline_name_option
[09:18:53] [PASSED] drm_test_cmdline_name_bpp_option
[09:18:53] [PASSED] drm_test_cmdline_rotate_0
[09:18:53] [PASSED] drm_test_cmdline_rotate_90
[09:18:53] [PASSED] drm_test_cmdline_rotate_180
[09:18:53] [PASSED] drm_test_cmdline_rotate_270
[09:18:53] [PASSED] drm_test_cmdline_hmirror
[09:18:53] [PASSED] drm_test_cmdline_vmirror
[09:18:53] [PASSED] drm_test_cmdline_margin_options
[09:18:53] [PASSED] drm_test_cmdline_multiple_options
[09:18:53] [PASSED] drm_test_cmdline_bpp_extra_and_option
[09:18:53] [PASSED] drm_test_cmdline_extra_and_option
[09:18:53] [PASSED] drm_test_cmdline_freestanding_options
[09:18:53] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[09:18:53] [PASSED] drm_test_cmdline_panel_orientation
[09:18:53] ================ drm_test_cmdline_invalid =================
[09:18:53] [PASSED] margin_only
[09:18:53] [PASSED] interlace_only
[09:18:53] [PASSED] res_missing_x
[09:18:53] [PASSED] res_missing_y
[09:18:53] [PASSED] res_bad_y
[09:18:53] [PASSED] res_missing_y_bpp
[09:18:53] [PASSED] res_bad_bpp
[09:18:53] [PASSED] res_bad_refresh
[09:18:53] [PASSED] res_bpp_refresh_force_on_off
[09:18:53] [PASSED] res_invalid_mode
[09:18:53] [PASSED] res_bpp_wrong_place_mode
[09:18:53] [PASSED] name_bpp_refresh
[09:18:53] [PASSED] name_refresh
[09:18:53] [PASSED] name_refresh_wrong_mode
[09:18:53] [PASSED] name_refresh_invalid_mode
[09:18:53] [PASSED] rotate_multiple
[09:18:53] [PASSED] rotate_invalid_val
[09:18:53] [PASSED] rotate_truncated
[09:18:53] [PASSED] invalid_option
[09:18:53] [PASSED] invalid_tv_option
[09:18:53] [PASSED] truncated_tv_option
[09:18:53] ============ [PASSED] drm_test_cmdline_invalid =============
[09:18:53] =============== drm_test_cmdline_tv_options ===============
[09:18:53] [PASSED] NTSC
[09:18:53] [PASSED] NTSC_443
[09:18:53] [PASSED] NTSC_J
[09:18:53] [PASSED] PAL
[09:18:53] [PASSED] PAL_M
[09:18:53] [PASSED] PAL_N
[09:18:53] [PASSED] SECAM
[09:18:53] [PASSED] MONO_525
[09:18:53] [PASSED] MONO_625
[09:18:53] =========== [PASSED] drm_test_cmdline_tv_options ===========
[09:18:53] =============== [PASSED] drm_cmdline_parser ================
[09:18:53] ========== drmm_connector_hdmi_init (20 subtests) ==========
[09:18:53] [PASSED] drm_test_connector_hdmi_init_valid
[09:18:53] [PASSED] drm_test_connector_hdmi_init_bpc_8
[09:18:53] [PASSED] drm_test_connector_hdmi_init_bpc_10
[09:18:53] [PASSED] drm_test_connector_hdmi_init_bpc_12
[09:18:53] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[09:18:53] [PASSED] drm_test_connector_hdmi_init_bpc_null
[09:18:53] [PASSED] drm_test_connector_hdmi_init_formats_empty
[09:18:53] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[09:18:53] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[09:18:53] [PASSED] supported_formats=0x9 yuv420_allowed=1
[09:18:53] [PASSED] supported_formats=0x9 yuv420_allowed=0
[09:18:53] [PASSED] supported_formats=0x5 yuv420_allowed=1
[09:18:53] [PASSED] supported_formats=0x5 yuv420_allowed=0
[09:18:53] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[09:18:53] [PASSED] drm_test_connector_hdmi_init_null_ddc
[09:18:53] [PASSED] drm_test_connector_hdmi_init_null_product
[09:18:53] [PASSED] drm_test_connector_hdmi_init_null_vendor
[09:18:53] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[09:18:53] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[09:18:53] [PASSED] drm_test_connector_hdmi_init_product_valid
[09:18:53] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[09:18:53] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[09:18:53] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[09:18:53] ========= drm_test_connector_hdmi_init_type_valid =========
[09:18:53] [PASSED] HDMI-A
[09:18:53] [PASSED] HDMI-B
[09:18:53] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[09:18:53] ======== drm_test_connector_hdmi_init_type_invalid ========
[09:18:53] [PASSED] Unknown
[09:18:53] [PASSED] VGA
[09:18:53] [PASSED] DVI-I
[09:18:53] [PASSED] DVI-D
[09:18:53] [PASSED] DVI-A
[09:18:53] [PASSED] Composite
[09:18:53] [PASSED] SVIDEO
[09:18:53] [PASSED] LVDS
[09:18:53] [PASSED] Component
[09:18:53] [PASSED] DIN
[09:18:53] [PASSED] DP
[09:18:53] [PASSED] TV
[09:18:53] [PASSED] eDP
[09:18:53] [PASSED] Virtual
[09:18:53] [PASSED] DSI
[09:18:53] [PASSED] DPI
[09:18:53] [PASSED] Writeback
[09:18:53] [PASSED] SPI
[09:18:53] [PASSED] USB
[09:18:53] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[09:18:53] ============ [PASSED] drmm_connector_hdmi_init =============
[09:18:53] ============= drmm_connector_init (3 subtests) =============
[09:18:53] [PASSED] drm_test_drmm_connector_init
[09:18:53] [PASSED] drm_test_drmm_connector_init_null_ddc
[09:18:53] ========= drm_test_drmm_connector_init_type_valid =========
[09:18:53] [PASSED] Unknown
[09:18:53] [PASSED] VGA
[09:18:53] [PASSED] DVI-I
[09:18:53] [PASSED] DVI-D
[09:18:53] [PASSED] DVI-A
[09:18:53] [PASSED] Composite
[09:18:53] [PASSED] SVIDEO
[09:18:53] [PASSED] LVDS
[09:18:53] [PASSED] Component
[09:18:53] [PASSED] DIN
[09:18:53] [PASSED] DP
[09:18:53] [PASSED] HDMI-A
[09:18:53] [PASSED] HDMI-B
[09:18:53] [PASSED] TV
[09:18:53] [PASSED] eDP
[09:18:53] [PASSED] Virtual
[09:18:53] [PASSED] DSI
[09:18:53] [PASSED] DPI
[09:18:53] [PASSED] Writeback
[09:18:53] [PASSED] SPI
[09:18:53] [PASSED] USB
[09:18:53] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[09:18:53] =============== [PASSED] drmm_connector_init ===============
[09:18:53] ========= drm_connector_dynamic_init (6 subtests) ==========
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_init
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_init_properties
[09:18:53] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[09:18:53] [PASSED] Unknown
[09:18:53] [PASSED] VGA
[09:18:53] [PASSED] DVI-I
[09:18:53] [PASSED] DVI-D
[09:18:53] [PASSED] DVI-A
[09:18:53] [PASSED] Composite
[09:18:53] [PASSED] SVIDEO
[09:18:53] [PASSED] LVDS
[09:18:53] [PASSED] Component
[09:18:53] [PASSED] DIN
[09:18:53] [PASSED] DP
[09:18:53] [PASSED] HDMI-A
[09:18:53] [PASSED] HDMI-B
[09:18:53] [PASSED] TV
[09:18:53] [PASSED] eDP
[09:18:53] [PASSED] Virtual
[09:18:53] [PASSED] DSI
[09:18:53] [PASSED] DPI
[09:18:53] [PASSED] Writeback
[09:18:53] [PASSED] SPI
[09:18:53] [PASSED] USB
[09:18:53] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[09:18:53] ======== drm_test_drm_connector_dynamic_init_name =========
[09:18:53] [PASSED] Unknown
[09:18:53] [PASSED] VGA
[09:18:53] [PASSED] DVI-I
[09:18:53] [PASSED] DVI-D
[09:18:53] [PASSED] DVI-A
[09:18:53] [PASSED] Composite
[09:18:53] [PASSED] SVIDEO
[09:18:53] [PASSED] LVDS
[09:18:53] [PASSED] Component
[09:18:53] [PASSED] DIN
[09:18:53] [PASSED] DP
[09:18:53] [PASSED] HDMI-A
[09:18:53] [PASSED] HDMI-B
[09:18:53] [PASSED] TV
[09:18:53] [PASSED] eDP
[09:18:53] [PASSED] Virtual
[09:18:53] [PASSED] DSI
[09:18:53] [PASSED] DPI
[09:18:53] [PASSED] Writeback
[09:18:53] [PASSED] SPI
[09:18:53] [PASSED] USB
[09:18:53] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[09:18:53] =========== [PASSED] drm_connector_dynamic_init ============
[09:18:53] ==== drm_connector_dynamic_register_early (4 subtests) =====
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[09:18:53] ====== [PASSED] drm_connector_dynamic_register_early =======
[09:18:53] ======= drm_connector_dynamic_register (7 subtests) ========
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[09:18:53] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[09:18:53] ========= [PASSED] drm_connector_dynamic_register ==========
[09:18:53] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[09:18:53] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[09:18:53] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[09:18:53] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[09:18:53] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[09:18:53] ========== drm_test_get_tv_mode_from_name_valid ===========
[09:18:53] [PASSED] NTSC
[09:18:53] [PASSED] NTSC-443
[09:18:53] [PASSED] NTSC-J
[09:18:53] [PASSED] PAL
[09:18:53] [PASSED] PAL-M
[09:18:53] [PASSED] PAL-N
[09:18:53] [PASSED] SECAM
[09:18:53] [PASSED] Mono
[09:18:53] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[09:18:53] [PASSED] drm_test_get_tv_mode_from_name_truncated
[09:18:53] ============ [PASSED] drm_get_tv_mode_from_name ============
[09:18:53] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[09:18:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[09:18:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[09:18:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[09:18:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[09:18:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[09:18:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[09:18:53] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[09:18:53] [PASSED] VIC 96
[09:18:53] [PASSED] VIC 97
[09:18:53] [PASSED] VIC 101
[09:18:53] [PASSED] VIC 102
[09:18:53] [PASSED] VIC 106
[09:18:53] [PASSED] VIC 107
[09:18:53] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[09:18:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[09:18:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[09:18:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[09:18:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[09:18:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[09:18:53] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[09:18:53] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[09:18:53] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[09:18:53] [PASSED] Automatic
[09:18:53] [PASSED] Full
[09:18:53] [PASSED] Limited 16:235
[09:18:53] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[09:18:53] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[09:18:53] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[09:18:53] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[09:18:53] === drm_test_drm_hdmi_connector_get_output_format_name ====
[09:18:53] [PASSED] RGB
[09:18:53] [PASSED] YUV 4:2:0
[09:18:53] [PASSED] YUV 4:2:2
[09:18:53] [PASSED] YUV 4:4:4
[09:18:53] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[09:18:53] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[09:18:53] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[09:18:53] ============= drm_damage_helper (21 subtests) ==============
[09:18:53] [PASSED] drm_test_damage_iter_no_damage
[09:18:53] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[09:18:53] [PASSED] drm_test_damage_iter_no_damage_src_moved
[09:18:53] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[09:18:53] [PASSED] drm_test_damage_iter_no_damage_not_visible
[09:18:53] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[09:18:53] [PASSED] drm_test_damage_iter_no_damage_no_fb
[09:18:53] [PASSED] drm_test_damage_iter_simple_damage
[09:18:53] [PASSED] drm_test_damage_iter_single_damage
[09:18:53] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[09:18:53] [PASSED] drm_test_damage_iter_single_damage_outside_src
[09:18:53] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[09:18:53] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[09:18:53] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[09:18:53] [PASSED] drm_test_damage_iter_single_damage_src_moved
[09:18:53] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[09:18:53] [PASSED] drm_test_damage_iter_damage
[09:18:53] [PASSED] drm_test_damage_iter_damage_one_intersect
[09:18:53] [PASSED] drm_test_damage_iter_damage_one_outside
[09:18:53] [PASSED] drm_test_damage_iter_damage_src_moved
[09:18:53] [PASSED] drm_test_damage_iter_damage_not_visible
[09:18:53] ================ [PASSED] drm_damage_helper ================
[09:18:53] ============== drm_dp_mst_helper (3 subtests) ==============
[09:18:53] ============== drm_test_dp_mst_calc_pbn_mode ==============
[09:18:53] [PASSED] Clock 154000 BPP 30 DSC disabled
[09:18:53] [PASSED] Clock 234000 BPP 30 DSC disabled
[09:18:53] [PASSED] Clock 297000 BPP 24 DSC disabled
[09:18:53] [PASSED] Clock 332880 BPP 24 DSC enabled
[09:18:53] [PASSED] Clock 324540 BPP 24 DSC enabled
[09:18:53] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[09:18:53] ============== drm_test_dp_mst_calc_pbn_div ===============
[09:18:53] [PASSED] Link rate 2000000 lane count 4
[09:18:53] [PASSED] Link rate 2000000 lane count 2
[09:18:53] [PASSED] Link rate 2000000 lane count 1
[09:18:53] [PASSED] Link rate 1350000 lane count 4
[09:18:53] [PASSED] Link rate 1350000 lane count 2
[09:18:53] [PASSED] Link rate 1350000 lane count 1
[09:18:53] [PASSED] Link rate 1000000 lane count 4
[09:18:53] [PASSED] Link rate 1000000 lane count 2
[09:18:53] [PASSED] Link rate 1000000 lane count 1
[09:18:53] [PASSED] Link rate 810000 lane count 4
[09:18:53] [PASSED] Link rate 810000 lane count 2
[09:18:53] [PASSED] Link rate 810000 lane count 1
[09:18:53] [PASSED] Link rate 540000 lane count 4
[09:18:53] [PASSED] Link rate 540000 lane count 2
[09:18:53] [PASSED] Link rate 540000 lane count 1
[09:18:53] [PASSED] Link rate 270000 lane count 4
[09:18:53] [PASSED] Link rate 270000 lane count 2
[09:18:53] [PASSED] Link rate 270000 lane count 1
[09:18:53] [PASSED] Link rate 162000 lane count 4
[09:18:53] [PASSED] Link rate 162000 lane count 2
[09:18:53] [PASSED] Link rate 162000 lane count 1
[09:18:53] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[09:18:53] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[09:18:53] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[09:18:53] [PASSED] DP_POWER_UP_PHY with port number
[09:18:53] [PASSED] DP_POWER_DOWN_PHY with port number
[09:18:53] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[09:18:53] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[09:18:53] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[09:18:53] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[09:18:53] [PASSED] DP_QUERY_PAYLOAD with port number
[09:18:53] [PASSED] DP_QUERY_PAYLOAD with VCPI
[09:18:53] [PASSED] DP_REMOTE_DPCD_READ with port number
[09:18:53] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[09:18:53] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[09:18:53] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[09:18:53] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[09:18:53] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[09:18:53] [PASSED] DP_REMOTE_I2C_READ with port number
[09:18:53] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[09:18:53] [PASSED] DP_REMOTE_I2C_READ with transactions array
[09:18:53] [PASSED] DP_REMOTE_I2C_WRITE with port number
[09:18:53] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[09:18:53] [PASSED] DP_REMOTE_I2C_WRITE with data array
[09:18:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[09:18:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[09:18:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[09:18:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[09:18:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[09:18:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[09:18:53] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[09:18:53] ================ [PASSED] drm_dp_mst_helper ================
[09:18:53] ================== drm_exec (7 subtests) ===================
[09:18:53] [PASSED] sanitycheck
[09:18:53] [PASSED] test_lock
[09:18:53] [PASSED] test_lock_unlock
[09:18:53] [PASSED] test_duplicates
[09:18:53] [PASSED] test_prepare
[09:18:53] [PASSED] test_prepare_array
[09:18:53] [PASSED] test_multiple_loops
[09:18:53] ==================== [PASSED] drm_exec =====================
[09:18:53] =========== drm_format_helper_test (17 subtests) ===========
[09:18:53] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[09:18:53] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[09:18:53] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[09:18:53] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[09:18:53] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[09:18:53] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[09:18:53] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[09:18:53] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[09:18:53] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[09:18:53] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[09:18:53] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[09:18:53] ============== drm_test_fb_xrgb8888_to_mono ===============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[09:18:53] ==================== drm_test_fb_swab =====================
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ================ [PASSED] drm_test_fb_swab =================
[09:18:53] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[09:18:53] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[09:18:53] [PASSED] single_pixel_source_buffer
[09:18:53] [PASSED] single_pixel_clip_rectangle
[09:18:53] [PASSED] well_known_colors
[09:18:53] [PASSED] destination_pitch
[09:18:53] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[09:18:53] ================= drm_test_fb_clip_offset =================
[09:18:53] [PASSED] pass through
[09:18:53] [PASSED] horizontal offset
[09:18:53] [PASSED] vertical offset
[09:18:53] [PASSED] horizontal and vertical offset
[09:18:53] [PASSED] horizontal offset (custom pitch)
[09:18:53] [PASSED] vertical offset (custom pitch)
[09:18:53] [PASSED] horizontal and vertical offset (custom pitch)
[09:18:53] ============= [PASSED] drm_test_fb_clip_offset =============
[09:18:53] =================== drm_test_fb_memcpy ====================
[09:18:53] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[09:18:53] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[09:18:53] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[09:18:53] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[09:18:53] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[09:18:53] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[09:18:53] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[09:18:53] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[09:18:53] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[09:18:53] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[09:18:53] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[09:18:53] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[09:18:53] =============== [PASSED] drm_test_fb_memcpy ================
[09:18:53] ============= [PASSED] drm_format_helper_test ==============
[09:18:53] ================= drm_format (18 subtests) =================
[09:18:53] [PASSED] drm_test_format_block_width_invalid
[09:18:53] [PASSED] drm_test_format_block_width_one_plane
[09:18:53] [PASSED] drm_test_format_block_width_two_plane
[09:18:53] [PASSED] drm_test_format_block_width_three_plane
[09:18:53] [PASSED] drm_test_format_block_width_tiled
[09:18:53] [PASSED] drm_test_format_block_height_invalid
[09:18:53] [PASSED] drm_test_format_block_height_one_plane
[09:18:53] [PASSED] drm_test_format_block_height_two_plane
[09:18:53] [PASSED] drm_test_format_block_height_three_plane
[09:18:53] [PASSED] drm_test_format_block_height_tiled
[09:18:53] [PASSED] drm_test_format_min_pitch_invalid
[09:18:53] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[09:18:53] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[09:18:53] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[09:18:53] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[09:18:53] [PASSED] drm_test_format_min_pitch_two_plane
[09:18:53] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[09:18:53] [PASSED] drm_test_format_min_pitch_tiled
[09:18:53] =================== [PASSED] drm_format ====================
[09:18:53] ============== drm_framebuffer (10 subtests) ===============
[09:18:53] ========== drm_test_framebuffer_check_src_coords ==========
[09:18:53] [PASSED] Success: source fits into fb
[09:18:53] [PASSED] Fail: overflowing fb with x-axis coordinate
[09:18:53] [PASSED] Fail: overflowing fb with y-axis coordinate
[09:18:53] [PASSED] Fail: overflowing fb with source width
[09:18:53] [PASSED] Fail: overflowing fb with source height
[09:18:53] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[09:18:53] [PASSED] drm_test_framebuffer_cleanup
[09:18:53] =============== drm_test_framebuffer_create ===============
[09:18:53] [PASSED] ABGR8888 normal sizes
[09:18:53] [PASSED] ABGR8888 max sizes
[09:18:53] [PASSED] ABGR8888 pitch greater than min required
[09:18:53] [PASSED] ABGR8888 pitch less than min required
[09:18:53] [PASSED] ABGR8888 Invalid width
[09:18:53] [PASSED] ABGR8888 Invalid buffer handle
[09:18:53] [PASSED] No pixel format
[09:18:53] [PASSED] ABGR8888 Width 0
[09:18:53] [PASSED] ABGR8888 Height 0
[09:18:53] [PASSED] ABGR8888 Out of bound height * pitch combination
[09:18:53] [PASSED] ABGR8888 Large buffer offset
[09:18:53] [PASSED] ABGR8888 Buffer offset for inexistent plane
[09:18:53] [PASSED] ABGR8888 Invalid flag
[09:18:53] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[09:18:53] [PASSED] ABGR8888 Valid buffer modifier
[09:18:53] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[09:18:53] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[09:18:53] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[09:18:53] [PASSED] NV12 Normal sizes
[09:18:53] [PASSED] NV12 Max sizes
[09:18:53] [PASSED] NV12 Invalid pitch
[09:18:53] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[09:18:53] [PASSED] NV12 different modifier per-plane
[09:18:53] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[09:18:53] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[09:18:53] [PASSED] NV12 Modifier for inexistent plane
[09:18:53] [PASSED] NV12 Handle for inexistent plane
[09:18:53] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[09:18:53] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[09:18:53] [PASSED] YVU420 Normal sizes
[09:18:53] [PASSED] YVU420 Max sizes
[09:18:53] [PASSED] YVU420 Invalid pitch
[09:18:53] [PASSED] YVU420 Different pitches
[09:18:53] [PASSED] YVU420 Different buffer offsets/pitches
[09:18:53] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[09:18:53] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[09:18:53] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[09:18:53] [PASSED] YVU420 Valid modifier
[09:18:53] [PASSED] YVU420 Different modifiers per plane
[09:18:53] [PASSED] YVU420 Modifier for inexistent plane
[09:18:53] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[09:18:53] [PASSED] X0L2 Normal sizes
[09:18:53] [PASSED] X0L2 Max sizes
[09:18:53] [PASSED] X0L2 Invalid pitch
[09:18:53] [PASSED] X0L2 Pitch greater than minimum required
[09:18:53] [PASSED] X0L2 Handle for inexistent plane
[09:18:53] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[09:18:53] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[09:18:53] [PASSED] X0L2 Valid modifier
[09:18:53] [PASSED] X0L2 Modifier for inexistent plane
[09:18:53] =========== [PASSED] drm_test_framebuffer_create ===========
[09:18:53] [PASSED] drm_test_framebuffer_free
[09:18:53] [PASSED] drm_test_framebuffer_init
[09:18:53] [PASSED] drm_test_framebuffer_init_bad_format
[09:18:53] [PASSED] drm_test_framebuffer_init_dev_mismatch
[09:18:53] [PASSED] drm_test_framebuffer_lookup
[09:18:53] [PASSED] drm_test_framebuffer_lookup_inexistent
[09:18:53] [PASSED] drm_test_framebuffer_modifiers_not_supported
[09:18:53] ================= [PASSED] drm_framebuffer =================
[09:18:53] ================ drm_gem_shmem (8 subtests) ================
[09:18:53] [PASSED] drm_gem_shmem_test_obj_create
[09:18:53] [PASSED] drm_gem_shmem_test_obj_create_private
[09:18:53] [PASSED] drm_gem_shmem_test_pin_pages
[09:18:53] [PASSED] drm_gem_shmem_test_vmap
[09:18:53] [PASSED] drm_gem_shmem_test_get_sg_table
[09:18:53] [PASSED] drm_gem_shmem_test_get_pages_sgt
[09:18:53] [PASSED] drm_gem_shmem_test_madvise
[09:18:53] [PASSED] drm_gem_shmem_test_purge
[09:18:53] ================== [PASSED] drm_gem_shmem ==================
[09:18:53] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[09:18:53] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[09:18:53] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[09:18:53] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[09:18:53] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[09:18:53] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[09:18:53] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[09:18:53] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[09:18:53] [PASSED] Automatic
[09:18:53] [PASSED] Full
[09:18:53] [PASSED] Limited 16:235
[09:18:53] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[09:18:53] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[09:18:53] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[09:18:53] [PASSED] drm_test_check_disable_connector
[09:18:53] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[09:18:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[09:18:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[09:18:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[09:18:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[09:18:53] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[09:18:53] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[09:18:53] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[09:18:53] [PASSED] drm_test_check_output_bpc_dvi
[09:18:53] [PASSED] drm_test_check_output_bpc_format_vic_1
[09:18:53] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[09:18:53] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[09:18:53] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[09:18:53] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[09:18:53] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[09:18:53] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[09:18:53] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[09:18:53] ============ drm_test_check_hdmi_color_format =============
[09:18:53] [PASSED] AUTO -> RGB
[09:18:53] [PASSED] YCBCR422 -> YUV422
[09:18:53] [PASSED] YCBCR420 -> YUV420
[09:18:53] [PASSED] YCBCR444 -> YUV444
[09:18:53] [PASSED] RGB -> RGB
[09:18:53] ======== [PASSED] drm_test_check_hdmi_color_format =========
[09:18:53] ======== drm_test_check_hdmi_color_format_420_only ========
[09:18:53] [PASSED] RGB should fail
[09:18:53] [PASSED] YUV444 should fail
[09:18:53] [PASSED] YUV422 should fail
[09:18:53] [PASSED] YUV420 should work
[09:18:53] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[09:18:53] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[09:18:53] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[09:18:53] [PASSED] drm_test_check_broadcast_rgb_value
[09:18:53] [PASSED] drm_test_check_bpc_8_value
[09:18:53] [PASSED] drm_test_check_bpc_10_value
[09:18:53] [PASSED] drm_test_check_bpc_12_value
[09:18:53] [PASSED] drm_test_check_format_value
[09:18:53] [PASSED] drm_test_check_tmds_char_value
[09:18:53] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[09:18:53] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[09:18:53] [PASSED] drm_test_check_mode_valid
[09:18:53] [PASSED] drm_test_check_mode_valid_reject
[09:18:53] [PASSED] drm_test_check_mode_valid_reject_rate
[09:18:53] [PASSED] drm_test_check_mode_valid_reject_max_clock
[09:18:53] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[09:18:53] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[09:18:53] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[09:18:53] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[09:18:53] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[09:18:53] [PASSED] drm_test_check_infoframes
[09:18:53] [PASSED] drm_test_check_reject_avi_infoframe
[09:18:53] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[09:18:53] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[09:18:53] [PASSED] drm_test_check_reject_audio_infoframe
[09:18:53] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[09:18:53] ================= drm_managed (2 subtests) =================
[09:18:53] [PASSED] drm_test_managed_release_action
[09:18:53] [PASSED] drm_test_managed_run_action
[09:18:53] =================== [PASSED] drm_managed ===================
[09:18:53] =================== drm_mm (6 subtests) ====================
[09:18:53] [PASSED] drm_test_mm_init
[09:18:53] [PASSED] drm_test_mm_debug
[09:18:53] [PASSED] drm_test_mm_align32
[09:18:53] [PASSED] drm_test_mm_align64
[09:18:53] [PASSED] drm_test_mm_lowest
[09:18:53] [PASSED] drm_test_mm_highest
[09:18:53] ===================== [PASSED] drm_mm ======================
[09:18:53] ============= drm_modes_analog_tv (5 subtests) =============
[09:18:53] [PASSED] drm_test_modes_analog_tv_mono_576i
[09:18:53] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[09:18:53] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[09:18:53] [PASSED] drm_test_modes_analog_tv_pal_576i
[09:18:53] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[09:18:53] =============== [PASSED] drm_modes_analog_tv ===============
[09:18:53] ============== drm_plane_helper (2 subtests) ===============
[09:18:53] =============== drm_test_check_plane_state ================
[09:18:53] [PASSED] clipping_simple
[09:18:53] [PASSED] clipping_rotate_reflect
[09:18:53] [PASSED] positioning_simple
[09:18:53] [PASSED] upscaling
[09:18:53] [PASSED] downscaling
[09:18:53] [PASSED] rounding1
[09:18:53] [PASSED] rounding2
[09:18:53] [PASSED] rounding3
[09:18:53] [PASSED] rounding4
[09:18:53] =========== [PASSED] drm_test_check_plane_state ============
[09:18:53] =========== drm_test_check_invalid_plane_state ============
[09:18:53] [PASSED] positioning_invalid
[09:18:53] [PASSED] upscaling_invalid
[09:18:53] [PASSED] downscaling_invalid
[09:18:53] ======= [PASSED] drm_test_check_invalid_plane_state ========
[09:18:53] ================ [PASSED] drm_plane_helper =================
[09:18:53] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[09:18:53] ====== drm_test_connector_helper_tv_get_modes_check =======
[09:18:53] [PASSED] None
[09:18:53] [PASSED] PAL
[09:18:53] [PASSED] NTSC
[09:18:53] [PASSED] Both, NTSC Default
[09:18:53] [PASSED] Both, PAL Default
[09:18:53] [PASSED] Both, NTSC Default, with PAL on command-line
[09:18:53] [PASSED] Both, PAL Default, with NTSC on command-line
[09:18:53] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[09:18:53] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[09:18:53] ================== drm_rect (9 subtests) ===================
[09:18:53] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[09:18:53] [PASSED] drm_test_rect_clip_scaled_not_clipped
[09:18:53] [PASSED] drm_test_rect_clip_scaled_clipped
[09:18:53] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[09:18:53] ================= drm_test_rect_intersect =================
[09:18:53] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[09:18:53] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[09:18:53] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[09:18:53] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[09:18:53] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[09:18:53] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[09:18:53] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[09:18:53] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[09:18:53] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[09:18:53] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[09:18:53] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[09:18:53] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[09:18:53] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[09:18:53] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[09:18:53] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[09:18:53] ============= [PASSED] drm_test_rect_intersect =============
[09:18:53] ================ drm_test_rect_calc_hscale ================
[09:18:53] [PASSED] normal use
[09:18:53] [PASSED] out of max range
[09:18:53] [PASSED] out of min range
[09:18:53] [PASSED] zero dst
[09:18:53] [PASSED] negative src
[09:18:53] [PASSED] negative dst
[09:18:53] ============ [PASSED] drm_test_rect_calc_hscale ============
[09:18:53] ================ drm_test_rect_calc_vscale ================
[09:18:53] [PASSED] normal use
[09:18:53] [PASSED] out of max range
[09:18:53] [PASSED] out of min range
[09:18:53] [PASSED] zero dst
[09:18:53] [PASSED] negative src
[09:18:53] [PASSED] negative dst
[09:18:53] ============ [PASSED] drm_test_rect_calc_vscale ============
[09:18:53] ================== drm_test_rect_rotate ===================
[09:18:53] [PASSED] reflect-x
[09:18:53] [PASSED] reflect-y
[09:18:53] [PASSED] rotate-0
[09:18:53] [PASSED] rotate-90
[09:18:53] [PASSED] rotate-180
[09:18:53] [PASSED] rotate-270
[09:18:53] ============== [PASSED] drm_test_rect_rotate ===============
[09:18:53] ================ drm_test_rect_rotate_inv =================
[09:18:53] [PASSED] reflect-x
[09:18:53] [PASSED] reflect-y
[09:18:53] [PASSED] rotate-0
[09:18:53] [PASSED] rotate-90
[09:18:53] [PASSED] rotate-180
[09:18:53] [PASSED] rotate-270
[09:18:53] ============ [PASSED] drm_test_rect_rotate_inv =============
[09:18:53] ==================== [PASSED] drm_rect =====================
[09:18:53] ============ drm_sysfb_modeset_test (1 subtest) ============
[09:18:53] ============ drm_test_sysfb_build_fourcc_list =============
[09:18:53] [PASSED] no native formats
[09:18:53] [PASSED] XRGB8888 as native format
[09:18:53] [PASSED] remove duplicates
[09:18:53] [PASSED] convert alpha formats
[09:18:53] [PASSED] random formats
[09:18:53] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[09:18:53] ============= [PASSED] drm_sysfb_modeset_test ==============
[09:18:53] ================== drm_fixp (2 subtests) ===================
[09:18:53] [PASSED] drm_test_int2fixp
[09:18:53] [PASSED] drm_test_sm2fixp
[09:18:53] ==================== [PASSED] drm_fixp =====================
[09:18:53] ============================================================
[09:18:53] Testing complete. Ran 637 tests: passed: 637
[09:18:53] Elapsed time: 27.327s total, 1.823s configuring, 25.340s building, 0.134s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[09:18:53] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:18:55] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[09:19:05] Starting KUnit Kernel (1/1)...
[09:19:05] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:19:05] ================= ttm_device (5 subtests) ==================
[09:19:05] [PASSED] ttm_device_init_basic
[09:19:05] [PASSED] ttm_device_init_multiple
[09:19:05] [PASSED] ttm_device_fini_basic
[09:19:05] [PASSED] ttm_device_init_no_vma_man
[09:19:05] ================== ttm_device_init_pools ==================
[09:19:05] [PASSED] No DMA allocations, no DMA32 required
[09:19:05] [PASSED] DMA allocations, DMA32 required
[09:19:05] [PASSED] No DMA allocations, DMA32 required
[09:19:05] [PASSED] DMA allocations, no DMA32 required
[09:19:05] ============== [PASSED] ttm_device_init_pools ==============
[09:19:05] =================== [PASSED] ttm_device ====================
[09:19:05] ================== ttm_pool (8 subtests) ===================
[09:19:05] ================== ttm_pool_alloc_basic ===================
[09:19:05] [PASSED] One page
[09:19:05] [PASSED] More than one page
[09:19:05] [PASSED] Above the allocation limit
[09:19:05] [PASSED] One page, with coherent DMA mappings enabled
[09:19:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[09:19:05] ============== [PASSED] ttm_pool_alloc_basic ===============
[09:19:05] ============== ttm_pool_alloc_basic_dma_addr ==============
[09:19:05] [PASSED] One page
[09:19:05] [PASSED] More than one page
[09:19:05] [PASSED] Above the allocation limit
[09:19:05] [PASSED] One page, with coherent DMA mappings enabled
[09:19:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[09:19:05] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[09:19:05] [PASSED] ttm_pool_alloc_order_caching_match
[09:19:05] [PASSED] ttm_pool_alloc_caching_mismatch
[09:19:05] [PASSED] ttm_pool_alloc_order_mismatch
[09:19:05] [PASSED] ttm_pool_free_dma_alloc
[09:19:05] [PASSED] ttm_pool_free_no_dma_alloc
[09:19:05] [PASSED] ttm_pool_fini_basic
[09:19:05] ==================== [PASSED] ttm_pool =====================
[09:19:05] ================ ttm_resource (8 subtests) =================
[09:19:05] ================= ttm_resource_init_basic =================
[09:19:05] [PASSED] Init resource in TTM_PL_SYSTEM
[09:19:05] [PASSED] Init resource in TTM_PL_VRAM
[09:19:05] [PASSED] Init resource in a private placement
[09:19:05] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[09:19:05] ============= [PASSED] ttm_resource_init_basic =============
[09:19:05] [PASSED] ttm_resource_init_pinned
[09:19:05] [PASSED] ttm_resource_fini_basic
[09:19:05] [PASSED] ttm_resource_manager_init_basic
[09:19:05] [PASSED] ttm_resource_manager_usage_basic
[09:19:05] [PASSED] ttm_resource_manager_set_used_basic
[09:19:05] [PASSED] ttm_sys_man_alloc_basic
[09:19:05] [PASSED] ttm_sys_man_free_basic
[09:19:05] ================== [PASSED] ttm_resource ===================
[09:19:05] =================== ttm_tt (15 subtests) ===================
[09:19:05] ==================== ttm_tt_init_basic ====================
[09:19:05] [PASSED] Page-aligned size
[09:19:05] [PASSED] Extra pages requested
[09:19:05] ================ [PASSED] ttm_tt_init_basic ================
[09:19:05] [PASSED] ttm_tt_init_misaligned
[09:19:05] [PASSED] ttm_tt_fini_basic
[09:19:05] [PASSED] ttm_tt_fini_sg
[09:19:05] [PASSED] ttm_tt_fini_shmem
[09:19:05] [PASSED] ttm_tt_create_basic
[09:19:05] [PASSED] ttm_tt_create_invalid_bo_type
[09:19:05] [PASSED] ttm_tt_create_ttm_exists
[09:19:05] [PASSED] ttm_tt_create_failed
[09:19:05] [PASSED] ttm_tt_destroy_basic
[09:19:05] [PASSED] ttm_tt_populate_null_ttm
[09:19:05] [PASSED] ttm_tt_populate_populated_ttm
[09:19:05] [PASSED] ttm_tt_unpopulate_basic
[09:19:05] [PASSED] ttm_tt_unpopulate_empty_ttm
[09:19:05] [PASSED] ttm_tt_swapin_basic
[09:19:05] ===================== [PASSED] ttm_tt ======================
[09:19:05] =================== ttm_bo (14 subtests) ===================
[09:19:05] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[09:19:05] [PASSED] Cannot be interrupted and sleeps
[09:19:05] [PASSED] Cannot be interrupted, locks straight away
[09:19:05] [PASSED] Can be interrupted, sleeps
[09:19:05] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[09:19:05] [PASSED] ttm_bo_reserve_locked_no_sleep
[09:19:05] [PASSED] ttm_bo_reserve_no_wait_ticket
[09:19:05] [PASSED] ttm_bo_reserve_double_resv
[09:19:05] [PASSED] ttm_bo_reserve_interrupted
[09:19:05] [PASSED] ttm_bo_reserve_deadlock
[09:19:05] [PASSED] ttm_bo_unreserve_basic
[09:19:05] [PASSED] ttm_bo_unreserve_pinned
[09:19:05] [PASSED] ttm_bo_unreserve_bulk
[09:19:05] [PASSED] ttm_bo_fini_basic
[09:19:05] [PASSED] ttm_bo_fini_shared_resv
[09:19:05] [PASSED] ttm_bo_pin_basic
[09:19:05] [PASSED] ttm_bo_pin_unpin_resource
[09:19:05] [PASSED] ttm_bo_multiple_pin_one_unpin
[09:19:05] ===================== [PASSED] ttm_bo ======================
[09:19:05] ============== ttm_bo_validate (22 subtests) ===============
[09:19:05] ============== ttm_bo_init_reserved_sys_man ===============
[09:19:05] [PASSED] Buffer object for userspace
[09:19:05] [PASSED] Kernel buffer object
[09:19:05] [PASSED] Shared buffer object
[09:19:05] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[09:19:05] ============== ttm_bo_init_reserved_mock_man ==============
[09:19:05] [PASSED] Buffer object for userspace
[09:19:05] [PASSED] Kernel buffer object
[09:19:05] [PASSED] Shared buffer object
[09:19:05] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[09:19:05] [PASSED] ttm_bo_init_reserved_resv
[09:19:05] ================== ttm_bo_validate_basic ==================
[09:19:05] [PASSED] Buffer object for userspace
[09:19:05] [PASSED] Kernel buffer object
[09:19:05] [PASSED] Shared buffer object
[09:19:05] ============== [PASSED] ttm_bo_validate_basic ==============
[09:19:05] [PASSED] ttm_bo_validate_invalid_placement
[09:19:05] ============= ttm_bo_validate_same_placement ==============
[09:19:05] [PASSED] System manager
[09:19:05] [PASSED] VRAM manager
[09:19:05] ========= [PASSED] ttm_bo_validate_same_placement ==========
[09:19:05] [PASSED] ttm_bo_validate_failed_alloc
[09:19:05] [PASSED] ttm_bo_validate_pinned
[09:19:05] [PASSED] ttm_bo_validate_busy_placement
[09:19:05] ================ ttm_bo_validate_multihop =================
[09:19:05] [PASSED] Buffer object for userspace
[09:19:05] [PASSED] Kernel buffer object
[09:19:05] [PASSED] Shared buffer object
[09:19:05] ============ [PASSED] ttm_bo_validate_multihop =============
[09:19:05] ========== ttm_bo_validate_no_placement_signaled ==========
[09:19:05] [PASSED] Buffer object in system domain, no page vector
[09:19:05] [PASSED] Buffer object in system domain with an existing page vector
[09:19:05] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[09:19:05] ======== ttm_bo_validate_no_placement_not_signaled ========
[09:19:05] [PASSED] Buffer object for userspace
[09:19:05] [PASSED] Kernel buffer object
[09:19:05] [PASSED] Shared buffer object
[09:19:05] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[09:19:05] [PASSED] ttm_bo_validate_move_fence_signaled
[09:19:06] ========= ttm_bo_validate_move_fence_not_signaled =========
[09:19:06] [PASSED] Waits for GPU
[09:19:06] [PASSED] Tries to lock straight away
[09:19:06] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[09:19:06] [PASSED] ttm_bo_validate_swapout
[09:19:06] [PASSED] ttm_bo_validate_happy_evict
[09:19:06] [PASSED] ttm_bo_validate_all_pinned_evict
[09:19:06] [PASSED] ttm_bo_validate_allowed_only_evict
[09:19:06] [PASSED] ttm_bo_validate_deleted_evict
[09:19:06] [PASSED] ttm_bo_validate_busy_domain_evict
[09:19:06] [PASSED] ttm_bo_validate_evict_gutting
[09:19:06] [PASSED] ttm_bo_validate_recrusive_evict
[09:19:06] ================= [PASSED] ttm_bo_validate =================
[09:19:06] ============================================================
[09:19:06] Testing complete. Ran 102 tests: passed: 102
[09:19:06] Elapsed time: 12.097s total, 1.741s configuring, 10.142s building, 0.182s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[09:19:06] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:19:08] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[09:19:16] Starting KUnit Kernel (1/1)...
[09:19:16] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:19:16] =============== dma-buf-fence (12 subtests) ================
[09:19:16] [PASSED] test_sanitycheck
[09:19:16] [PASSED] test_signaling
[09:19:16] [PASSED] test_add_callback
[09:19:16] [PASSED] test_late_add_callback
[09:19:16] [PASSED] test_rm_callback
[09:19:16] [PASSED] test_late_rm_callback
[09:19:16] [PASSED] test_status
[09:19:16] [PASSED] test_error
[09:19:16] [PASSED] test_wait
[09:19:16] [PASSED] test_wait_timeout
[09:19:16] [PASSED] test_stub
[09:19:16] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[09:19:16] ================== [PASSED] dma-buf-fence ==================
[09:19:16] ============ dma-buf-fence-chain (11 subtests) =============
[09:19:16] [PASSED] test_sanitycheck
[09:19:16] [PASSED] test_find_seqno
[09:19:16] [PASSED] test_find_signaled
[09:19:16] [PASSED] test_find_out_of_order
[09:19:21] [PASSED] test_find_gap
[09:19:21] [PASSED] test_find_race
[09:19:21] [PASSED] test_signal_forward
[09:19:22] [PASSED] test_signal_backward
[09:19:22] [PASSED] test_wait_forward
[09:19:22] [PASSED] test_wait_backward
[09:19:22] [PASSED] test_wait_random
[09:19:22] =============== [PASSED] dma-buf-fence-chain ===============
[09:19:22] ============ dma-buf-fence-unwrap (10 subtests) ============
[09:19:22] [PASSED] test_sanitycheck
[09:19:22] [PASSED] test_unwrap_array
[09:19:22] [PASSED] test_unwrap_chain
[09:19:22] [PASSED] test_unwrap_chain_array
[09:19:22] [PASSED] test_unwrap_merge
[09:19:22] [PASSED] test_unwrap_merge_duplicate
[09:19:22] [PASSED] test_unwrap_merge_seqno
[09:19:22] [PASSED] test_unwrap_merge_order
[09:19:22] [PASSED] test_unwrap_merge_complex
[09:19:22] [PASSED] test_unwrap_merge_complex_seqno
[09:19:22] ============== [PASSED] dma-buf-fence-unwrap ===============
[09:19:22] ================ dma-buf-resv (5 subtests) =================
[09:19:22] [PASSED] test_sanitycheck
[09:19:22] ===================== test_signaling ======================
[09:19:22] [PASSED] kernel
[09:19:22] [PASSED] write
[09:19:22] [PASSED] read
[09:19:22] [PASSED] bookkeep
[09:19:22] ================= [PASSED] test_signaling ==================
[09:19:22] ====================== test_for_each ======================
[09:19:22] [PASSED] kernel
[09:19:22] [PASSED] write
[09:19:22] [PASSED] read
[09:19:22] [PASSED] bookkeep
[09:19:22] ================== [PASSED] test_for_each ==================
[09:19:22] ================= test_for_each_unlocked ==================
[09:19:22] [PASSED] kernel
[09:19:22] [PASSED] write
[09:19:22] [PASSED] read
[09:19:22] [PASSED] bookkeep
[09:19:22] ============= [PASSED] test_for_each_unlocked ==============
[09:19:22] ===================== test_get_fences =====================
[09:19:22] [PASSED] kernel
[09:19:22] [PASSED] write
[09:19:22] [PASSED] read
[09:19:22] [PASSED] bookkeep
[09:19:22] ================= [PASSED] test_get_fences =================
[09:19:22] ================== [PASSED] dma-buf-resv ===================
[09:19:22] ============================================================
[09:19:22] Testing complete. Ran 50 tests: passed: 49, skipped: 1
[09:19:22] Elapsed time: 15.858s total, 1.800s configuring, 8.737s building, 5.282s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 15+ messages in thread* ✗ Xe.CI.BAT: failure for Add support to handle memory double-bit ecc errors
2026-08-25 6:36 [PATCH 0/5] Add support to handle memory double-bit ecc errors Riana Tauro
` (5 preceding siblings ...)
2026-08-25 9:19 ` ✓ CI.KUnit: success for Add support to handle memory double-bit ecc errors Patchwork
@ 2026-08-25 9:57 ` Patchwork
2026-08-25 14:29 ` ✗ Xe.CI.FULL: " Patchwork
2026-08-28 15:15 ` [PATCH 0/5] " Rodrigo Vivi
8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-08-25 9:57 UTC (permalink / raw)
To: Tauro, Riana; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1734 bytes --]
== Series Details ==
Series: Add support to handle memory double-bit ecc errors
URL : https://patchwork.freedesktop.org/series/172710/
State : failure
== Summary ==
CI Bug Log - changes from xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad_BAT -> xe-pw-172710v1_BAT
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-172710v1_BAT absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-172710v1_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-172710v1_BAT:
### IGT changes ###
#### Possible regressions ####
* igt@xe_waitfence@reltime:
- bat-ptl-2: [PASS][1] -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/bat-ptl-2/igt@xe_waitfence@reltime.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/bat-ptl-2/igt@xe_waitfence@reltime.html
Build changes
-------------
* IGT: IGT_9071 -> IGT_9072
* Linux: xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad -> xe-pw-172710v1
IGT_9071: 9071
IGT_9072: 9072
xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad: 15e2ba2fb6d25c03d89519aec46f8d5be3e118ad
xe-pw-172710v1: 172710v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/index.html
[-- Attachment #2: Type: text/html, Size: 2333 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread* ✗ Xe.CI.FULL: failure for Add support to handle memory double-bit ecc errors
2026-08-25 6:36 [PATCH 0/5] Add support to handle memory double-bit ecc errors Riana Tauro
` (6 preceding siblings ...)
2026-08-25 9:57 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2026-08-25 14:29 ` Patchwork
2026-08-28 15:15 ` [PATCH 0/5] " Rodrigo Vivi
8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-08-25 14:29 UTC (permalink / raw)
To: Riana Tauro; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 33736 bytes --]
== Series Details ==
Series: Add support to handle memory double-bit ecc errors
URL : https://patchwork.freedesktop.org/series/172710/
State : failure
== Summary ==
CI Bug Log - changes from xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad_FULL -> xe-pw-172710v1_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-172710v1_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-172710v1_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-172710v1_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_pmu@fn-engine-activity-sched-if-idle:
- shard-bmg: [PASS][1] -> [SKIP][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-3/igt@xe_pmu@fn-engine-activity-sched-if-idle.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@xe_pmu@fn-engine-activity-sched-if-idle.html
Known issues
------------
Here are the changes found in xe-pw-172710v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#2233])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic:
- shard-bmg: [PASS][4] -> [FAIL][5] ([Intel XE#3718] / [Intel XE#6078])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-5/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-8/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
- shard-lnl: [PASS][6] -> [FAIL][7] ([Intel XE#3718] / [Intel XE#7265])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-lnl-5/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-lnl-6/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-edp-1:
- shard-lnl: [PASS][8] -> [FAIL][9] ([Intel XE#7265]) +1 other test fail
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-lnl-5/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-edp-1.html
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-lnl-6/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-edp-1.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-3:
- shard-bmg: [PASS][10] -> [FAIL][11] ([Intel XE#6078]) +3 other tests fail
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-5/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-3.html
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-8/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-3.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2327]) +2 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#1124]) +3 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@yf-tiled-addfb-size-overflow:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#610] / [Intel XE#7387])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html
* igt@kms_bw@linear-tiling-2-displays-target-1920x1080p:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#367]) +1 other test skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-6/igt@kms_bw@linear-tiling-2-displays-target-1920x1080p.html
* igt@kms_ccs@bad-aux-stride-yf-tiled-ccs:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2887]) +10 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-10/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-d-hdmi-a-3:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#2652]) +15 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-d-hdmi-a-3.html
* igt@kms_cdclk@plane-scaling:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#2724] / [Intel XE#7449])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-2/igt@kms_cdclk@plane-scaling.html
* igt@kms_chamelium_color@ctm-red-to-blue:
- shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#2325] / [Intel XE#7358]) +1 other test skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-1/igt@kms_chamelium_color@ctm-red-to-blue.html
* igt@kms_chamelium_hpd@hdmi-hpd-storm-disable:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#2252]) +4 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-10/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html
* igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#6974])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-8/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html
* igt@kms_content_protection@lic-type-0@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][22] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +1 other test fail
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-2/igt@kms_content_protection@lic-type-0@pipe-a-dp-2.html
* igt@kms_cursor_crc@cursor-offscreen-max-size:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#2320]) +4 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-5/igt@kms_cursor_crc@cursor-offscreen-max-size.html
* igt@kms_cursor_crc@cursor-random-512x170:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#2321] / [Intel XE#7355]) +1 other test skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@kms_cursor_crc@cursor-random-512x170.html
* igt@kms_dsc@dsc-with-bpc:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#8265]) +1 other test skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-5/igt@kms_dsc@dsc-with-bpc.html
* igt@kms_feature_discovery@display-4x:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#1138] / [Intel XE#7344])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-3/igt@kms_feature_discovery@display-4x.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#7178] / [Intel XE#7351])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#7178] / [Intel XE#7349]) +2 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#4141]) +12 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-argb161616f-draw-render:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#7061] / [Intel XE#7356]) +2 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-argb161616f-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2311]) +33 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#2313]) +34 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-10/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-render:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#7061]) +3 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-render.html
* igt@kms_joiner@basic-big-joiner:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#6901])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-5/igt@kms_joiner@basic-big-joiner.html
* igt@kms_joiner@basic-ultra-joiner:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#6911] / [Intel XE#7378])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@kms_joiner@basic-ultra-joiner.html
* igt@kms_pipe_stress@stress-xrgb8888-yftiled:
- shard-bmg: NOTRUN -> [SKIP][36] ([Intel XE#6912] / [Intel XE#7375])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-1/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
* igt@kms_plane@pixel-format-4-tiled-modifier@pipe-b-plane-5:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#8303]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@kms_plane@pixel-format-4-tiled-modifier@pipe-b-plane-5.html
* igt@kms_plane@pixel-format-y-tiled-modifier:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#7283]) +2 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-9/igt@kms_plane@pixel-format-y-tiled-modifier.html
* igt@kms_plane_lowres@tiling-yf:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#2393])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@kms_plane_lowres@tiling-yf.html
* igt@kms_plane_multiple@tiling-y:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#5020] / [Intel XE#7348])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-2/igt@kms_plane_multiple@tiling-y.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-b:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#2763] / [Intel XE#6886]) +4 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-b.html
* igt@kms_pm_backlight@fade-with-dpms:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#7376] / [Intel XE#7760] / [Intel XE#870])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-5/igt@kms_pm_backlight@fade-with-dpms.html
* igt@kms_pm_dc@dc3co-after-dc6:
- shard-bmg: NOTRUN -> [SKIP][43] ([Intel XE#8395] / [Intel XE#8396]) +3 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-6/igt@kms_pm_dc@dc3co-after-dc6.html
* igt@kms_pm_dc@dc3co-after-dc6@psr2-xrgb8888:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#8396]) +3 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-6/igt@kms_pm_dc@dc3co-after-dc6@psr2-xrgb8888.html
* igt@kms_pm_dc@dc5-pageflip-negative:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#6927])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@kms_pm_dc@dc5-pageflip-negative.html
* igt@kms_pm_rpm@package-g7:
- shard-bmg: NOTRUN -> [SKIP][46] ([Intel XE#6814] / [Intel XE#7428])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@kms_pm_rpm@package-g7.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#1489]) +6 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html
* igt@kms_psr@pr-sprite-plane-onoff:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#2234] / [Intel XE#2850]) +9 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-10/igt@kms_psr@pr-sprite-plane-onoff.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#7795])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-9/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_sharpness_filter@invalid-filter-with-plane:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#6503])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-10/igt@kms_sharpness_filter@invalid-filter-with-plane.html
* igt@kms_vrr@seamless-rr-switch-virtual:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#1499])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@kms_vrr@seamless-rr-switch-virtual.html
* igt@xe_compute_preempt@compute-preempt-many-vram-evict@engine-drm_xe_engine_class_compute:
- shard-bmg: [PASS][52] -> [ABORT][53] ([Intel XE#8536]) +1 other test abort
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-2/igt@xe_compute_preempt@compute-preempt-many-vram-evict@engine-drm_xe_engine_class_compute.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-3/igt@xe_compute_preempt@compute-preempt-many-vram-evict@engine-drm_xe_engine_class_compute.html
* igt@xe_evict@evict-beng-mixed-many-threads-small:
- shard-bmg: NOTRUN -> [INCOMPLETE][54] ([Intel XE#6321] / [Intel XE#8355])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-1/igt@xe_evict@evict-beng-mixed-many-threads-small.html
* igt@xe_evict@evict-small-multi-queue-cm:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#8370])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@xe_evict@evict-small-multi-queue-cm.html
* igt@xe_exec_basic@multigpu-once-null-rebind:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#2322] / [Intel XE#7372]) +3 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-6/igt@xe_exec_basic@multigpu-once-null-rebind.html
* igt@xe_exec_fault_mode@atomic-many:
- shard-bmg: [PASS][57] -> [FAIL][58] ([Intel XE#8578])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-9/igt@xe_exec_fault_mode@atomic-many.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-5/igt@xe_exec_fault_mode@atomic-many.html
* igt@xe_exec_fault_mode@twice-multi-queue:
- shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#8374]) +8 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-3/igt@xe_exec_fault_mode@twice-multi-queue.html
* igt@xe_exec_multi_queue@many-queues-preempt-mode-priority-smem:
- shard-bmg: NOTRUN -> [SKIP][60] ([Intel XE#8364]) +17 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-3/igt@xe_exec_multi_queue@many-queues-preempt-mode-priority-smem.html
* igt@xe_exec_reset@multi-queue-cat-error:
- shard-bmg: NOTRUN -> [SKIP][61] ([Intel XE#8369])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-6/igt@xe_exec_reset@multi-queue-cat-error.html
* igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr:
- shard-bmg: NOTRUN -> [SKIP][62] ([Intel XE#8378]) +3 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-3/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr.html
* igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early:
- shard-bmg: [PASS][63] -> [ABORT][64] ([Intel XE#8007]) +2 other tests abort
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-2/igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-6/igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early.html
* igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
- shard-bmg: NOTRUN -> [SKIP][65] ([Intel XE#2229])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html
* igt@xe_live_ktest@xe_eudebug:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#2833])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-8/igt@xe_live_ktest@xe_eudebug.html
* igt@xe_multigpu_svm@mgpu-coherency-prefetch:
- shard-bmg: NOTRUN -> [SKIP][67] ([Intel XE#6964])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-4/igt@xe_multigpu_svm@mgpu-coherency-prefetch.html
* igt@xe_page_reclaim@binds-null-vma:
- shard-bmg: NOTRUN -> [SKIP][68] ([Intel XE#7793]) +2 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-1/igt@xe_page_reclaim@binds-null-vma.html
* igt@xe_pat@l2-flush-opt-svm-pat-restrict:
- shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#7590])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-3/igt@xe_pat@l2-flush-opt-svm-pat-restrict.html
* igt@xe_pat@pat-index-xelp:
- shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#2245] / [Intel XE#7590])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-2/igt@xe_pat@pat-index-xelp.html
* igt@xe_peer2peer@read:
- shard-bmg: NOTRUN -> [SKIP][71] ([Intel XE#2427] / [Intel XE#6953] / [Intel XE#7326] / [Intel XE#7353])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-8/igt@xe_peer2peer@read.html
* igt@xe_pm@d3cold-mocs:
- shard-bmg: NOTRUN -> [SKIP][72] ([Intel XE#2284] / [Intel XE#7370]) +1 other test skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-6/igt@xe_pm@d3cold-mocs.html
* igt@xe_pxp@pxp-stale-bo-exec-post-rpm:
- shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#4733] / [Intel XE#7417]) +2 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-1/igt@xe_pxp@pxp-stale-bo-exec-post-rpm.html
* igt@xe_query@multigpu-query-invalid-extension:
- shard-bmg: NOTRUN -> [SKIP][74] ([Intel XE#944]) +3 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-3/igt@xe_query@multigpu-query-invalid-extension.html
* igt@xe_sriov_vfio@bind-unbind-vfs@numvfs-6:
- shard-bmg: [PASS][75] -> [FAIL][76] ([Intel XE#7992]) +24 other tests fail
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-4/igt@xe_sriov_vfio@bind-unbind-vfs@numvfs-6.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@xe_sriov_vfio@bind-unbind-vfs@numvfs-6.html
#### Possible fixes ####
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [INCOMPLETE][77] ([Intel XE#7084] / [Intel XE#8150]) -> [PASS][78] +1 other test pass
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-9/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-lnl: [FAIL][79] ([Intel XE#301] / [Intel XE#3149]) -> [PASS][80] +2 other tests pass
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-lnl: [FAIL][81] ([Intel XE#301]) -> [PASS][82]
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
* igt@kms_flip@modeset-vs-vblank-race-interruptible@c-dp2:
- shard-bmg: [FAIL][83] ([Intel XE#3098]) -> [PASS][84] +1 other test pass
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-2/igt@kms_flip@modeset-vs-vblank-race-interruptible@c-dp2.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-8/igt@kms_flip@modeset-vs-vblank-race-interruptible@c-dp2.html
* igt@kms_hdmi_inject@inject-audio:
- shard-bmg: [SKIP][85] ([Intel XE#7308]) -> [PASS][86]
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-10/igt@kms_hdmi_inject@inject-audio.html
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-7/igt@kms_hdmi_inject@inject-audio.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [SKIP][87] ([Intel XE#1503]) -> [PASS][88]
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-5/igt@kms_hdr@invalid-hdr.html
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-8/igt@kms_hdr@invalid-hdr.html
* igt@xe_exec_reset@gt-stress-reset-mixed-engine-usage:
- shard-bmg: [INCOMPLETE][89] ([Intel XE#9041]) -> [PASS][90]
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-6/igt@xe_exec_reset@gt-stress-reset-mixed-engine-usage.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-10/igt@xe_exec_reset@gt-stress-reset-mixed-engine-usage.html
* igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
- shard-bmg: [ABORT][91] ([Intel XE#8007]) -> [PASS][92]
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-5/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-8/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
* igt@xe_sriov_flr@flr-vfs-parallel:
- shard-bmg: [FAIL][93] ([Intel XE#6569]) -> [PASS][94]
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-5/igt@xe_sriov_flr@flr-vfs-parallel.html
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-2/igt@xe_sriov_flr@flr-vfs-parallel.html
#### Warnings ####
* igt@kms_flip@flip-vs-expired-vblank:
- shard-lnl: [FAIL][95] ([Intel XE#301] / [Intel XE#3149]) -> [FAIL][96] ([Intel XE#301])
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-lnl-6/igt@kms_flip@flip-vs-expired-vblank.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-lnl-6/igt@kms_flip@flip-vs-expired-vblank.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][97] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][98] ([Intel XE#3544])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-6/igt@kms_hdr@brightness-with-hdr.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-9/igt@kms_hdr@brightness-with-hdr.html
* igt@sriov_basic@pf-unbind-with-vfs-enabled-numvfs-all:
- shard-bmg: [ABORT][99] ([Intel XE#8868]) -> [ABORT][100] ([Intel XE#8007] / [Intel XE#8868])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad/shard-bmg-2/igt@sriov_basic@pf-unbind-with-vfs-enabled-numvfs-all.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/shard-bmg-2/igt@sriov_basic@pf-unbind-with-vfs-enabled-numvfs-all.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393
[Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2833]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2833
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
[Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
[Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6814
[Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
[Intel XE#6901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6901
[Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
[Intel XE#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912
[Intel XE#6927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6927
[Intel XE#6953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6953
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7265
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7308
[Intel XE#7326]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7326
[Intel XE#7344]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7344
[Intel XE#7348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7348
[Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7353]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7353
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7375
[Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
[Intel XE#7378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7378
[Intel XE#7387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7387
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7428
[Intel XE#7449]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7449
[Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
[Intel XE#7760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7760
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7795]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7795
[Intel XE#7992]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7992
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8150]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8150
[Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
[Intel XE#8303]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8303
[Intel XE#8355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8355
[Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
[Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
[Intel XE#8370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8370
[Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
[Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
[Intel XE#8395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8395
[Intel XE#8396]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8396
[Intel XE#8536]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8536
[Intel XE#8578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8578
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#8868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8868
[Intel XE#9041]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9041
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* IGT: IGT_9071 -> IGT_9072
* Linux: xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad -> xe-pw-172710v1
IGT_9071: 9071
IGT_9072: 9072
xe-5642-15e2ba2fb6d25c03d89519aec46f8d5be3e118ad: 15e2ba2fb6d25c03d89519aec46f8d5be3e118ad
xe-pw-172710v1: 172710v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v1/index.html
[-- Attachment #2: Type: text/html, Size: 36919 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH 0/5] Add support to handle memory double-bit ecc errors
2026-08-25 6:36 [PATCH 0/5] Add support to handle memory double-bit ecc errors Riana Tauro
` (7 preceding siblings ...)
2026-08-25 14:29 ` ✗ Xe.CI.FULL: " Patchwork
@ 2026-08-28 15:15 ` Rodrigo Vivi
8 siblings, 0 replies; 15+ messages in thread
From: Rodrigo Vivi @ 2026-08-28 15:15 UTC (permalink / raw)
To: Riana Tauro
Cc: intel-xe, anshuman.gupta, aravind.iddamsetty, badal.nilawar,
raag.jadav, ravi.kishore.koppuravuri, mallesh.koujalagi,
soham.purkait, tejas.upadhyay, himal.prasad.ghimiray
On Tue, Aug 25, 2026 at 12:06:15PM +0530, Riana Tauro wrote:
> This series introduces the firmware commands required to handle
> uncorrectable memory double-bit ecc errors.
>
> When a error is detected, the driver determines whether the affected
> page can be offlined and sends an offline/decline request to firmware
> via sysctrl interface. Pages belonging to critical Bos or stolen memory
> require a Secondary Bus Reset(SBR) to recover.
> Pages configured for log-only handling are declined.
>
> For the rest of the valid pages, the first error is a poison error and a
> decline is sent to firmware to avoid marking the page as bad. On the
> second occurence at the same address, we request the firmware to offline
> the page as this would indicate a Double-bit ECC error. Any subsequent
> errors at the same address should be because of memory scrubber and a
> decline is sent to firmware to remove the page from queue. This is done
> by tracking the firmware offlined pages by Xe KMD.
>
> At module load, the driver queries firmware for both the offline list
> and the queue and processes them accordingly.
>
> This series is sent as RFC because it depends on the address fault
> handling function which is still in review
That seems to be trending good and we might get a drm-ras node RFC
as a replacement for the sysfs coming soon...
Meanwhile in this one, Sashiko seems to have some interesting findings that
we should address...
Thanks,
Rodrigo.
>
> https://lore.kernel.org/intel-xe/20260818104055.3833974-14-tejas.upadhyay@intel.com/
>
> Riana Tauro (5):
> drm/xe/xe_drm_ras: Rename ras to drm_ras in xe_device
> drm/xe/xe_ras: Handle page offline requests for device memory ECC
> errors
> drm/xe/xe_ras: Add support to query page offline queue and list
> drm/xe/xe_ras: Add function to get maximum pages firmware can store
> drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates
>
> drivers/gpu/drm/xe/xe_device.c | 4 +-
> drivers/gpu/drm/xe/xe_device_types.h | 6 +-
> drivers/gpu/drm/xe/xe_drm_ras.c | 12 +-
> drivers/gpu/drm/xe/xe_hw_error.c | 6 +-
> drivers/gpu/drm/xe/xe_ras.c | 269 +++++++++++++++++-
> drivers/gpu/drm/xe/xe_ras.h | 3 +-
> drivers/gpu/drm/xe/xe_ras_types.h | 94 ++++++
> drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h | 6 +
> 8 files changed, 381 insertions(+), 19 deletions(-)
>
> --
> 2.47.1
>
^ permalink raw reply [flat|nested] 15+ messages in thread