* [PATCH 1/3] drm/xe/pmu: Enable PMU interface
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
@ 2024-11-08 18:15 ` Vinay Belgaumkar
2024-11-08 22:30 ` Rodrigo Vivi
2024-11-08 18:15 ` [PATCH 2/3] drm/xe/pmu: Add GT C6 events Vinay Belgaumkar
` (9 subsequent siblings)
10 siblings, 1 reply; 22+ messages in thread
From: Vinay Belgaumkar @ 2024-11-08 18:15 UTC (permalink / raw)
To: intel-xe
Cc: Aravind Iddamsetty, Bommu Krishnaiah, Riana Tauro, Rodrigo Vivi,
Vinay Belgaumkar
From: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com>
Basic PMU enabling patch. Setup the basic framework
for adding events/timers. This patch was previously
reviewed here -
https://patchwork.freedesktop.org/series/119504/
The pmu base implementation is still from the
i915 driver.
v2: Review comments(Rodrigo) and do not init pmu for VFs
as they don't have access to freq and c6 residency anyways.
v3: Fix kunit issue, move xe_pmu entry in Makefile (Jani) and
move drm uapi definitions (Lucas)
v4: Adapt Lucas's recent PMU fixes for i915
Co-developed-by: Bommu Krishnaiah <krishnaiah.bommu@intel.com>
Signed-off-by: Bommu Krishnaiah <krishnaiah.bommu@intel.com>
Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com>
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
---
drivers/gpu/drm/xe/Makefile | 2 +
drivers/gpu/drm/xe/xe_device.c | 6 +
drivers/gpu/drm/xe/xe_device_types.h | 4 +
drivers/gpu/drm/xe/xe_module.c | 5 +
drivers/gpu/drm/xe/xe_pmu.c | 577 +++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_pmu.h | 26 ++
drivers/gpu/drm/xe/xe_pmu_types.h | 70 ++++
7 files changed, 690 insertions(+)
create mode 100644 drivers/gpu/drm/xe/xe_pmu.c
create mode 100644 drivers/gpu/drm/xe/xe_pmu.h
create mode 100644 drivers/gpu/drm/xe/xe_pmu_types.h
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index a93e6fcc0ad9..c231ecaf86b8 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -299,6 +299,8 @@ ifeq ($(CONFIG_DEBUG_FS),y)
i915-display/intel_pipe_crc.o
endif
+xe-$(CONFIG_PERF_EVENTS) += xe_pmu.o
+
obj-$(CONFIG_DRM_XE) += xe.o
obj-$(CONFIG_DRM_XE_KUNIT_TEST) += tests/
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 0e2dd691bdae..89463cf7cc2c 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -759,6 +759,9 @@ int xe_device_probe(struct xe_device *xe)
for_each_gt(gt, xe, id)
xe_gt_sanitize_freq(gt);
+ if (!IS_SRIOV_VF(xe))
+ xe_pmu_register(&xe->pmu);
+
return devm_add_action_or_reset(xe->drm.dev, xe_device_sanitize, xe);
err_fini_display:
@@ -803,6 +806,9 @@ void xe_device_remove(struct xe_device *xe)
xe_heci_gsc_fini(xe);
+ if (!IS_SRIOV_VF(xe))
+ xe_pmu_unregister(&xe->pmu);
+
for_each_gt(gt, xe, id)
xe_gt_remove(gt);
}
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index bccca63c8a48..0cb8d650135a 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -18,6 +18,7 @@
#include "xe_memirq_types.h"
#include "xe_oa.h"
#include "xe_platform_types.h"
+#include "xe_pmu.h"
#include "xe_pt_types.h"
#include "xe_sriov_types.h"
#include "xe_step_types.h"
@@ -509,6 +510,9 @@ struct xe_device {
int mode;
} wedged;
+ /** @pmu: performance monitoring unit */
+ struct xe_pmu pmu;
+
#ifdef TEST_VM_OPS_ERROR
/**
* @vm_inject_error_position: inject errors at different places in VM
diff --git a/drivers/gpu/drm/xe/xe_module.c b/drivers/gpu/drm/xe/xe_module.c
index 77ce9f9ca7a5..1bf2bf8447c0 100644
--- a/drivers/gpu/drm/xe/xe_module.c
+++ b/drivers/gpu/drm/xe/xe_module.c
@@ -14,6 +14,7 @@
#include "xe_hw_fence.h"
#include "xe_pci.h"
#include "xe_pm.h"
+#include "xe_pmu.h"
#include "xe_observation.h"
#include "xe_sched_job.h"
@@ -96,6 +97,10 @@ static const struct init_funcs init_funcs[] = {
.init = xe_sched_job_module_init,
.exit = xe_sched_job_module_exit,
},
+ {
+ .init = xe_pmu_init,
+ .exit = xe_pmu_exit,
+ },
{
.init = xe_register_pci_driver,
.exit = xe_unregister_pci_driver,
diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
new file mode 100644
index 000000000000..7ce66c022e27
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pmu.c
@@ -0,0 +1,577 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <drm/drm_drv.h>
+#include <drm/drm_managed.h>
+#include <drm/xe_drm.h>
+
+#include "regs/xe_gt_regs.h"
+#include "xe_device.h"
+#include "xe_force_wake.h"
+#include "xe_gt_clock.h"
+#include "xe_mmio.h"
+#include "xe_macros.h"
+#include "xe_pm.h"
+
+/**
+ * CPU mask is defined/initialized at a module level. All devices
+ * inside this module share this mask.
+ */
+static cpumask_t xe_pmu_cpumask;
+static unsigned int xe_pmu_target_cpu = -1;
+
+/**
+ * DOC: Xe PMU (Performance Monitoring Unit)
+ *
+ * Expose events/counters like C6 residency and GT frequency to user land.
+ * Perf tool can be used to list these counters from the command line.
+ *
+ * Example commands to list/record supported perf events-
+ *
+ * $ ls -ld /sys/bus/event_source/devices/xe_*
+ * $ ls /sys/bus/event_source/devices/xe_0000_00_02.0/events/
+ *
+ * You can also use the perf tool to grep for a certain event-
+ * $ perf list | grep rc6
+ *
+ * To list a specific event at regular intervals-
+ * $ perf stat -e <event_name> -I <interval>
+ *
+ */
+
+static unsigned int config_gt_id(const u64 config)
+{
+ return config >> __XE_PMU_GT_SHIFT;
+}
+
+static u64 config_counter(const u64 config)
+{
+ return config & ~(~0ULL << __XE_PMU_GT_SHIFT);
+}
+
+static void xe_pmu_event_destroy(struct perf_event *event)
+{
+ struct xe_device *xe =
+ container_of(event->pmu, typeof(*xe), pmu.base);
+
+ drm_WARN_ON(&xe->drm, event->parent);
+
+ drm_dev_put(&xe->drm);
+}
+
+static int
+config_status(struct xe_device *xe, u64 config)
+{
+ unsigned int gt_id = config_gt_id(config);
+
+ if (gt_id >= XE_MAX_GT_PER_TILE)
+ return -ENOENT;
+
+ switch (config_counter(config)) {
+ default:
+ return -ENOENT;
+ }
+
+ return 0;
+}
+
+static int xe_pmu_event_init(struct perf_event *event)
+{
+ struct xe_device *xe =
+ container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
+ int ret;
+
+ if (!pmu->registered)
+ return -ENODEV;
+
+ if (event->attr.type != event->pmu->type)
+ return -ENOENT;
+
+ /* unsupported modes and filters */
+ if (event->attr.sample_period) /* no sampling */
+ return -EINVAL;
+
+ if (has_branch_stack(event))
+ return -EOPNOTSUPP;
+
+ if (event->cpu < 0)
+ return -EINVAL;
+
+ /* only allow running on one cpu at a time */
+ if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask))
+ return -EINVAL;
+
+ ret = config_status(xe, event->attr.config);
+ if (ret)
+ return ret;
+
+ if (!event->parent) {
+ drm_dev_get(&xe->drm);
+ event->destroy = xe_pmu_event_destroy;
+ }
+
+ return 0;
+}
+
+static u64 __xe_pmu_event_read(struct perf_event *event)
+{
+ struct xe_device *xe =
+ container_of(event->pmu, typeof(*xe), pmu.base);
+ const unsigned int gt_id = config_gt_id(event->attr.config);
+ const u64 config = event->attr.config;
+ struct xe_gt *gt = xe_device_get_gt(xe, gt_id);
+ u64 val = 0;
+
+ switch (config_counter(config)) {
+ default:
+ drm_warn(>->tile->xe->drm, "unknown pmu event\n");
+ }
+
+ return val;
+}
+
+static void xe_pmu_event_read(struct perf_event *event)
+{
+ struct xe_device *xe =
+ container_of(event->pmu, typeof(*xe), pmu.base);
+ struct hw_perf_event *hwc = &event->hw;
+ struct xe_pmu *pmu = &xe->pmu;
+ u64 prev, new;
+
+ if (!pmu->registered) {
+ event->hw.state = PERF_HES_STOPPED;
+ return;
+ }
+again:
+ prev = local64_read(&hwc->prev_count);
+ new = __xe_pmu_event_read(event);
+
+ if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev)
+ goto again;
+
+ local64_add(new - prev, &event->count);
+}
+
+static void xe_pmu_enable(struct perf_event *event)
+{
+ /*
+ * Store the current counter value so we can report the correct delta
+ * for all listeners. Even when the event was already enabled and has
+ * an existing non-zero value.
+ */
+ local64_set(&event->hw.prev_count, __xe_pmu_event_read(event));
+}
+
+static void xe_pmu_event_start(struct perf_event *event, int flags)
+{
+ struct xe_device *xe =
+ container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ if (!pmu->registered)
+ return;
+
+ xe_pmu_enable(event);
+ event->hw.state = 0;
+}
+
+static void xe_pmu_event_stop(struct perf_event *event, int flags)
+{
+ struct xe_device *xe =
+ container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ if (!pmu->registered)
+ goto out;
+
+ if (flags & PERF_EF_UPDATE)
+ xe_pmu_event_read(event);
+
+out:
+ event->hw.state = PERF_HES_STOPPED;
+}
+
+static int xe_pmu_event_add(struct perf_event *event, int flags)
+{
+ struct xe_device *xe =
+ container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ if (!pmu->registered)
+ return -ENODEV;
+
+ if (flags & PERF_EF_START)
+ xe_pmu_event_start(event, flags);
+
+ return 0;
+}
+
+static void xe_pmu_event_del(struct perf_event *event, int flags)
+{
+ xe_pmu_event_stop(event, PERF_EF_UPDATE);
+}
+
+static int xe_pmu_event_event_idx(struct perf_event *event)
+{
+ return 0;
+}
+
+struct xe_ext_attribute {
+ struct device_attribute attr;
+ unsigned long val;
+};
+
+static ssize_t xe_pmu_event_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct xe_ext_attribute *eattr;
+
+ eattr = container_of(attr, struct xe_ext_attribute, attr);
+ return sprintf(buf, "config=0x%lx\n", eattr->val);
+}
+
+static ssize_t cpumask_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ return cpumap_print_to_pagebuf(true, buf, &xe_pmu_cpumask);
+}
+
+static DEVICE_ATTR_RO(cpumask);
+
+static struct attribute *xe_cpumask_attrs[] = {
+ &dev_attr_cpumask.attr,
+ NULL,
+};
+
+static const struct attribute_group xe_pmu_cpumask_attr_group = {
+ .attrs = xe_cpumask_attrs,
+};
+
+#define __event(__counter, __name, __unit) \
+{ \
+ .counter = (__counter), \
+ .name = (__name), \
+ .unit = (__unit), \
+}
+
+static struct xe_ext_attribute *
+add_xe_attr(struct xe_ext_attribute *attr, const char *name, u64 config)
+{
+ sysfs_attr_init(&attr->attr.attr);
+ attr->attr.attr.name = name;
+ attr->attr.attr.mode = 0444;
+ attr->attr.show = xe_pmu_event_show;
+ attr->val = config;
+
+ return ++attr;
+}
+
+static struct perf_pmu_events_attr *
+add_pmu_attr(struct perf_pmu_events_attr *attr, const char *name,
+ const char *str)
+{
+ sysfs_attr_init(&attr->attr.attr);
+ attr->attr.attr.name = name;
+ attr->attr.attr.mode = 0444;
+ attr->attr.show = perf_event_sysfs_show;
+ attr->event_str = str;
+
+ return ++attr;
+}
+
+static struct attribute **
+create_event_attributes(struct xe_pmu *pmu)
+{
+ struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
+ static const struct {
+ unsigned int counter;
+ const char *name;
+ const char *unit;
+ } events[] = {
+ };
+
+ struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
+ struct xe_ext_attribute *xe_attr = NULL, *xe_iter;
+ struct attribute **attr = NULL, **attr_iter;
+ unsigned int count = 0;
+ unsigned int i, j;
+ struct xe_gt *gt;
+
+ /* Count how many counters we will be exposing. */
+ for_each_gt(gt, xe, j) {
+ for (i = 0; i < ARRAY_SIZE(events); i++) {
+ u64 config = ___XE_PMU_OTHER(j, events[i].counter);
+
+ if (!config_status(xe, config))
+ count++;
+ }
+ }
+
+ /* Allocate attribute objects and table. */
+ xe_attr = kcalloc(count, sizeof(*xe_attr), GFP_KERNEL);
+ if (!xe_attr)
+ goto err_alloc;
+
+ pmu_attr = kcalloc(count, sizeof(*pmu_attr), GFP_KERNEL);
+ if (!pmu_attr)
+ goto err_alloc;
+
+ /* Max one pointer of each attribute type plus a termination entry. */
+ attr = kcalloc(count * 2 + 1, sizeof(*attr), GFP_KERNEL);
+ if (!attr)
+ goto err_alloc;
+
+ xe_iter = xe_attr;
+ pmu_iter = pmu_attr;
+ attr_iter = attr;
+
+ for_each_gt(gt, xe, j) {
+ for (i = 0; i < ARRAY_SIZE(events); i++) {
+ u64 config = ___XE_PMU_OTHER(j, events[i].counter);
+ char *str;
+
+ if (config_status(xe, config))
+ continue;
+
+ str = kasprintf(GFP_KERNEL, "%s-gt%u",
+ events[i].name, j);
+ if (!str)
+ goto err;
+
+ *attr_iter++ = &xe_iter->attr.attr;
+ xe_iter = add_xe_attr(xe_iter, str, config);
+
+ if (events[i].unit) {
+ str = kasprintf(GFP_KERNEL, "%s-gt%u.unit",
+ events[i].name, j);
+ if (!str)
+ goto err;
+
+ *attr_iter++ = &pmu_iter->attr.attr;
+ pmu_iter = add_pmu_attr(pmu_iter, str,
+ events[i].unit);
+ }
+ }
+ }
+
+ pmu->xe_attr = xe_attr;
+ pmu->pmu_attr = pmu_attr;
+
+ return attr;
+
+err:
+ for (attr_iter = attr; *attr_iter; attr_iter++)
+ kfree((*attr_iter)->name);
+
+err_alloc:
+ kfree(attr);
+ kfree(xe_attr);
+ kfree(pmu_attr);
+
+ return NULL;
+}
+
+static void free_event_attributes(struct xe_pmu *pmu)
+{
+ struct attribute **attr_iter = pmu->events_attr_group.attrs;
+
+ for (; *attr_iter; attr_iter++)
+ kfree((*attr_iter)->name);
+
+ kfree(pmu->events_attr_group.attrs);
+ kfree(pmu->xe_attr);
+ kfree(pmu->pmu_attr);
+
+ pmu->events_attr_group.attrs = NULL;
+ pmu->xe_attr = NULL;
+ pmu->pmu_attr = NULL;
+}
+
+static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node)
+{
+ struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node);
+
+ /* Select the first online CPU as a designated reader. */
+ if (cpumask_empty(&xe_pmu_cpumask))
+ cpumask_set_cpu(cpu, &xe_pmu_cpumask);
+
+ return 0;
+}
+
+static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node)
+{
+ struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node);
+ unsigned int target = xe_pmu_target_cpu;
+
+ /*
+ * Unregistering an instance generates a CPU offline event which we must
+ * ignore to avoid incorrectly modifying the shared xe_pmu_cpumask.
+ */
+ if (!pmu->registered)
+ return 0;
+
+ if (cpumask_test_and_clear_cpu(cpu, &xe_pmu_cpumask)) {
+ target = cpumask_any_but(topology_sibling_cpumask(cpu), cpu);
+
+ /* Migrate events if there is a valid target */
+ if (target < nr_cpu_ids) {
+ cpumask_set_cpu(target, &xe_pmu_cpumask);
+ xe_pmu_target_cpu = target;
+ }
+ }
+
+ if (target < nr_cpu_ids && target != pmu->cpuhp.cpu) {
+ perf_pmu_migrate_context(&pmu->base, cpu, target);
+ pmu->cpuhp.cpu = target;
+ }
+
+ return 0;
+}
+
+static enum cpuhp_state cpuhp_state = CPUHP_INVALID;
+
+/**
+ * xe_pmu_init() - Setup CPU hotplug state/callbacks for Xe PMU
+ *
+ * Returns: 0 if successful, else error code
+ */
+int xe_pmu_init(void)
+{
+ int ret;
+
+ ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN,
+ "perf/x86/intel/xe:online",
+ xe_pmu_cpu_online,
+ xe_pmu_cpu_offline);
+ if (ret < 0)
+ pr_notice("Failed to setup cpuhp state for xe PMU! (%d)\n",
+ ret);
+ else
+ cpuhp_state = ret;
+
+ return 0;
+}
+
+/**
+ * xe_pmu_exit() - Remove CPU hotplug state/callbacks for Xe PMU
+ */
+void xe_pmu_exit(void)
+{
+ if (cpuhp_state != CPUHP_INVALID)
+ cpuhp_remove_multi_state(cpuhp_state);
+}
+
+static int xe_pmu_register_cpuhp_state(struct xe_pmu *pmu)
+{
+ if (cpuhp_state == CPUHP_INVALID)
+ return -EINVAL;
+
+ return cpuhp_state_add_instance(cpuhp_state, &pmu->cpuhp.node);
+}
+
+static void xe_pmu_unregister_cpuhp_state(struct xe_pmu *pmu)
+{
+ cpuhp_state_remove_instance(cpuhp_state, &pmu->cpuhp.node);
+}
+
+/**
+ * xe_pmu_unregister() - Remove/cleanup PMU registration
+ */
+void xe_pmu_unregister(void *arg)
+{
+ struct xe_pmu *pmu = arg;
+
+ if (!pmu->registered)
+ return;
+
+ pmu->registered = false;
+
+ xe_pmu_unregister_cpuhp_state(pmu);
+
+ perf_pmu_unregister(&pmu->base);
+ kfree(pmu->base.attr_groups);
+ kfree(pmu->name);
+ free_event_attributes(pmu);
+}
+
+/**
+ * xe_pmu_register() - Define basic PMU properties for Xe and add event callbacks.
+ *
+ */
+void xe_pmu_register(struct xe_pmu *pmu)
+{
+ struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
+ const struct attribute_group *attr_groups[] = {
+ &pmu->events_attr_group,
+ &xe_pmu_cpumask_attr_group,
+ NULL
+ };
+
+ int ret = -ENOMEM;
+
+ spin_lock_init(&pmu->lock);
+ pmu->cpuhp.cpu = -1;
+
+ pmu->name = kasprintf(GFP_KERNEL,
+ "xe_%s",
+ dev_name(xe->drm.dev));
+ if (pmu->name) {
+ /* tools/perf reserves colons as special. */
+ strreplace((char *)pmu->name, ':', '_');
+ }
+
+ if (!pmu->name)
+ goto err;
+
+ pmu->events_attr_group.name = "events";
+ pmu->events_attr_group.attrs = create_event_attributes(pmu);
+ if (!pmu->events_attr_group.attrs)
+ goto err_name;
+
+ pmu->base.attr_groups = kmemdup(attr_groups, sizeof(attr_groups),
+ GFP_KERNEL);
+ if (!pmu->base.attr_groups)
+ goto err_attr;
+
+ pmu->base.module = THIS_MODULE;
+ pmu->base.task_ctx_nr = perf_invalid_context;
+ pmu->base.event_init = xe_pmu_event_init;
+ pmu->base.add = xe_pmu_event_add;
+ pmu->base.del = xe_pmu_event_del;
+ pmu->base.start = xe_pmu_event_start;
+ pmu->base.stop = xe_pmu_event_stop;
+ pmu->base.read = xe_pmu_event_read;
+ pmu->base.event_idx = xe_pmu_event_event_idx;
+
+ ret = perf_pmu_register(&pmu->base, pmu->name, -1);
+ if (ret)
+ goto err_groups;
+
+ ret = xe_pmu_register_cpuhp_state(pmu);
+ if (ret)
+ goto err_unreg;
+
+ ret = devm_add_action_or_reset(xe->drm.dev, xe_pmu_unregister, pmu);
+ if (ret)
+ goto err_cpuhp;
+
+ pmu->registered = true;
+
+ return;
+
+err_cpuhp:
+ xe_pmu_unregister_cpuhp_state(pmu);
+err_unreg:
+ perf_pmu_unregister(&pmu->base);
+err_groups:
+ kfree(pmu->base.attr_groups);
+err_attr:
+ free_event_attributes(pmu);
+err_name:
+ kfree(pmu->name);
+err:
+ drm_notice(&xe->drm, "Failed to register PMU!\n");
+}
diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
new file mode 100644
index 000000000000..d07e5dfdfec0
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pmu.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef _XE_PMU_H_
+#define _XE_PMU_H_
+
+#include "xe_pmu_types.h"
+
+struct xe_gt;
+
+#if IS_ENABLED(CONFIG_PERF_EVENTS)
+int xe_pmu_init(void);
+void xe_pmu_exit(void);
+void xe_pmu_register(struct xe_pmu *pmu);
+void xe_pmu_unregister(void *arg);
+#else
+static inline int xe_pmu_init(void) { return 0; }
+static inline void xe_pmu_exit(void) {}
+static inline void xe_pmu_register(struct xe_pmu *pmu) {}
+static inline void xe_pmu_unregister(void *arg) {}
+#endif
+
+#endif
+
diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
new file mode 100644
index 000000000000..4da96b8fadd1
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pmu_types.h
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef _XE_PMU_TYPES_H_
+#define _XE_PMU_TYPES_H_
+
+#include <linux/perf_event.h>
+#include <linux/spinlock_types.h>
+
+enum {
+ __XE_NUM_PMU_SAMPLERS
+};
+
+#define XE_PMU_MAX_GT 2
+
+/*
+ * Top bits of every counter are GT id.
+ */
+#define __XE_PMU_GT_SHIFT (56)
+
+#define ___XE_PMU_OTHER(gt, x) \
+ (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT))
+
+struct xe_pmu {
+ /**
+ * @cpuhp: Struct used for CPU hotplug handling.
+ */
+ struct {
+ struct hlist_node node;
+ unsigned int cpu;
+ } cpuhp;
+ /**
+ * @base: PMU base.
+ */
+ struct pmu base;
+ /**
+ * @registered: PMU is registered and not in the unregistering process.
+ */
+ bool registered;
+ /**
+ * @name: Name as registered with perf core.
+ */
+ const char *name;
+ /**
+ * @lock: Lock protecting enable mask and ref count handling.
+ */
+ spinlock_t lock;
+ /**
+ * @sample: Current and previous (raw) counters.
+ *
+ * These counters are updated when the device is awake.
+ */
+ u64 sample[XE_PMU_MAX_GT][__XE_NUM_PMU_SAMPLERS];
+ /**
+ * @events_attr_group: Device events attribute group.
+ */
+ struct attribute_group events_attr_group;
+ /**
+ * @xe_attr: Memory block holding device attributes.
+ */
+ void *xe_attr;
+ /**
+ * @pmu_attr: Memory block holding device attributes.
+ */
+ void *pmu_attr;
+};
+
+#endif
--
2.38.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* Re: [PATCH 1/3] drm/xe/pmu: Enable PMU interface
2024-11-08 18:15 ` [PATCH 1/3] drm/xe/pmu: Enable PMU interface Vinay Belgaumkar
@ 2024-11-08 22:30 ` Rodrigo Vivi
0 siblings, 0 replies; 22+ messages in thread
From: Rodrigo Vivi @ 2024-11-08 22:30 UTC (permalink / raw)
To: Vinay Belgaumkar
Cc: intel-xe, Aravind Iddamsetty, Bommu Krishnaiah, Riana Tauro
On Fri, Nov 08, 2024 at 10:15:10AM -0800, Vinay Belgaumkar wrote:
> From: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com>
>
> Basic PMU enabling patch. Setup the basic framework
> for adding events/timers. This patch was previously
> reviewed here -
> https://patchwork.freedesktop.org/series/119504/
>
> The pmu base implementation is still from the
> i915 driver.
>
> v2: Review comments(Rodrigo) and do not init pmu for VFs
> as they don't have access to freq and c6 residency anyways.
>
> v3: Fix kunit issue, move xe_pmu entry in Makefile (Jani) and
> move drm uapi definitions (Lucas)
>
> v4: Adapt Lucas's recent PMU fixes for i915
I believe this already deserves
Co-developed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
> Co-developed-by: Bommu Krishnaiah <krishnaiah.bommu@intel.com>
> Signed-off-by: Bommu Krishnaiah <krishnaiah.bommu@intel.com>
> Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com>
> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
> ---
> drivers/gpu/drm/xe/Makefile | 2 +
> drivers/gpu/drm/xe/xe_device.c | 6 +
> drivers/gpu/drm/xe/xe_device_types.h | 4 +
> drivers/gpu/drm/xe/xe_module.c | 5 +
> drivers/gpu/drm/xe/xe_pmu.c | 577 +++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_pmu.h | 26 ++
> drivers/gpu/drm/xe/xe_pmu_types.h | 70 ++++
> 7 files changed, 690 insertions(+)
> create mode 100644 drivers/gpu/drm/xe/xe_pmu.c
> create mode 100644 drivers/gpu/drm/xe/xe_pmu.h
> create mode 100644 drivers/gpu/drm/xe/xe_pmu_types.h
>
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index a93e6fcc0ad9..c231ecaf86b8 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -299,6 +299,8 @@ ifeq ($(CONFIG_DEBUG_FS),y)
> i915-display/intel_pipe_crc.o
> endif
>
> +xe-$(CONFIG_PERF_EVENTS) += xe_pmu.o
> +
> obj-$(CONFIG_DRM_XE) += xe.o
> obj-$(CONFIG_DRM_XE_KUNIT_TEST) += tests/
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 0e2dd691bdae..89463cf7cc2c 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -759,6 +759,9 @@ int xe_device_probe(struct xe_device *xe)
> for_each_gt(gt, xe, id)
> xe_gt_sanitize_freq(gt);
>
> + if (!IS_SRIOV_VF(xe))
> + xe_pmu_register(&xe->pmu);
> +
> return devm_add_action_or_reset(xe->drm.dev, xe_device_sanitize, xe);
>
> err_fini_display:
> @@ -803,6 +806,9 @@ void xe_device_remove(struct xe_device *xe)
>
> xe_heci_gsc_fini(xe);
>
> + if (!IS_SRIOV_VF(xe))
> + xe_pmu_unregister(&xe->pmu);
> +
> for_each_gt(gt, xe, id)
> xe_gt_remove(gt);
> }
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index bccca63c8a48..0cb8d650135a 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -18,6 +18,7 @@
> #include "xe_memirq_types.h"
> #include "xe_oa.h"
> #include "xe_platform_types.h"
> +#include "xe_pmu.h"
> #include "xe_pt_types.h"
> #include "xe_sriov_types.h"
> #include "xe_step_types.h"
> @@ -509,6 +510,9 @@ struct xe_device {
> int mode;
> } wedged;
>
> + /** @pmu: performance monitoring unit */
> + struct xe_pmu pmu;
> +
> #ifdef TEST_VM_OPS_ERROR
> /**
> * @vm_inject_error_position: inject errors at different places in VM
> diff --git a/drivers/gpu/drm/xe/xe_module.c b/drivers/gpu/drm/xe/xe_module.c
> index 77ce9f9ca7a5..1bf2bf8447c0 100644
> --- a/drivers/gpu/drm/xe/xe_module.c
> +++ b/drivers/gpu/drm/xe/xe_module.c
> @@ -14,6 +14,7 @@
> #include "xe_hw_fence.h"
> #include "xe_pci.h"
> #include "xe_pm.h"
> +#include "xe_pmu.h"
> #include "xe_observation.h"
> #include "xe_sched_job.h"
>
> @@ -96,6 +97,10 @@ static const struct init_funcs init_funcs[] = {
> .init = xe_sched_job_module_init,
> .exit = xe_sched_job_module_exit,
> },
> + {
> + .init = xe_pmu_init,
> + .exit = xe_pmu_exit,
> + },
> {
> .init = xe_register_pci_driver,
> .exit = xe_unregister_pci_driver,
> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
> new file mode 100644
> index 000000000000..7ce66c022e27
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_pmu.c
> @@ -0,0 +1,577 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#include <drm/drm_drv.h>
> +#include <drm/drm_managed.h>
> +#include <drm/xe_drm.h>
> +
> +#include "regs/xe_gt_regs.h"
> +#include "xe_device.h"
> +#include "xe_force_wake.h"
> +#include "xe_gt_clock.h"
> +#include "xe_mmio.h"
> +#include "xe_macros.h"
> +#include "xe_pm.h"
> +
> +/**
> + * CPU mask is defined/initialized at a module level. All devices
> + * inside this module share this mask.
> + */
> +static cpumask_t xe_pmu_cpumask;
> +static unsigned int xe_pmu_target_cpu = -1;
> +
> +/**
> + * DOC: Xe PMU (Performance Monitoring Unit)
> + *
> + * Expose events/counters like C6 residency and GT frequency to user land.
> + * Perf tool can be used to list these counters from the command line.
> + *
> + * Example commands to list/record supported perf events-
> + *
> + * $ ls -ld /sys/bus/event_source/devices/xe_*
> + * $ ls /sys/bus/event_source/devices/xe_0000_00_02.0/events/
> + *
> + * You can also use the perf tool to grep for a certain event-
> + * $ perf list | grep rc6
> + *
> + * To list a specific event at regular intervals-
> + * $ perf stat -e <event_name> -I <interval>
> + *
> + */
> +
> +static unsigned int config_gt_id(const u64 config)
> +{
> + return config >> __XE_PMU_GT_SHIFT;
> +}
> +
> +static u64 config_counter(const u64 config)
> +{
> + return config & ~(~0ULL << __XE_PMU_GT_SHIFT);
> +}
> +
> +static void xe_pmu_event_destroy(struct perf_event *event)
> +{
> + struct xe_device *xe =
> + container_of(event->pmu, typeof(*xe), pmu.base);
> +
> + drm_WARN_ON(&xe->drm, event->parent);
> +
> + drm_dev_put(&xe->drm);
> +}
> +
> +static int
> +config_status(struct xe_device *xe, u64 config)
> +{
> + unsigned int gt_id = config_gt_id(config);
> +
> + if (gt_id >= XE_MAX_GT_PER_TILE)
> + return -ENOENT;
> +
> + switch (config_counter(config)) {
> + default:
> + return -ENOENT;
> + }
> +
> + return 0;
> +}
> +
> +static int xe_pmu_event_init(struct perf_event *event)
> +{
> + struct xe_device *xe =
> + container_of(event->pmu, typeof(*xe), pmu.base);
> + struct xe_pmu *pmu = &xe->pmu;
> + int ret;
> +
> + if (!pmu->registered)
> + return -ENODEV;
> +
> + if (event->attr.type != event->pmu->type)
> + return -ENOENT;
> +
> + /* unsupported modes and filters */
> + if (event->attr.sample_period) /* no sampling */
> + return -EINVAL;
> +
> + if (has_branch_stack(event))
> + return -EOPNOTSUPP;
> +
> + if (event->cpu < 0)
> + return -EINVAL;
> +
> + /* only allow running on one cpu at a time */
> + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask))
> + return -EINVAL;
> +
> + ret = config_status(xe, event->attr.config);
> + if (ret)
> + return ret;
> +
> + if (!event->parent) {
> + drm_dev_get(&xe->drm);
> + event->destroy = xe_pmu_event_destroy;
> + }
> +
> + return 0;
> +}
> +
> +static u64 __xe_pmu_event_read(struct perf_event *event)
> +{
> + struct xe_device *xe =
> + container_of(event->pmu, typeof(*xe), pmu.base);
> + const unsigned int gt_id = config_gt_id(event->attr.config);
> + const u64 config = event->attr.config;
> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id);
> + u64 val = 0;
> +
> + switch (config_counter(config)) {
> + default:
> + drm_warn(>->tile->xe->drm, "unknown pmu event\n");
> + }
> +
> + return val;
> +}
> +
> +static void xe_pmu_event_read(struct perf_event *event)
> +{
> + struct xe_device *xe =
> + container_of(event->pmu, typeof(*xe), pmu.base);
> + struct hw_perf_event *hwc = &event->hw;
> + struct xe_pmu *pmu = &xe->pmu;
> + u64 prev, new;
> +
> + if (!pmu->registered) {
> + event->hw.state = PERF_HES_STOPPED;
> + return;
> + }
> +again:
> + prev = local64_read(&hwc->prev_count);
> + new = __xe_pmu_event_read(event);
> +
> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev)
> + goto again;
> +
> + local64_add(new - prev, &event->count);
> +}
> +
> +static void xe_pmu_enable(struct perf_event *event)
> +{
> + /*
> + * Store the current counter value so we can report the correct delta
> + * for all listeners. Even when the event was already enabled and has
> + * an existing non-zero value.
> + */
> + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event));
> +}
> +
> +static void xe_pmu_event_start(struct perf_event *event, int flags)
> +{
> + struct xe_device *xe =
> + container_of(event->pmu, typeof(*xe), pmu.base);
> + struct xe_pmu *pmu = &xe->pmu;
> +
> + if (!pmu->registered)
> + return;
> +
> + xe_pmu_enable(event);
> + event->hw.state = 0;
> +}
> +
> +static void xe_pmu_event_stop(struct perf_event *event, int flags)
> +{
> + struct xe_device *xe =
> + container_of(event->pmu, typeof(*xe), pmu.base);
> + struct xe_pmu *pmu = &xe->pmu;
> +
> + if (!pmu->registered)
> + goto out;
> +
> + if (flags & PERF_EF_UPDATE)
> + xe_pmu_event_read(event);
> +
> +out:
> + event->hw.state = PERF_HES_STOPPED;
> +}
> +
> +static int xe_pmu_event_add(struct perf_event *event, int flags)
> +{
> + struct xe_device *xe =
> + container_of(event->pmu, typeof(*xe), pmu.base);
> + struct xe_pmu *pmu = &xe->pmu;
> +
> + if (!pmu->registered)
> + return -ENODEV;
> +
> + if (flags & PERF_EF_START)
> + xe_pmu_event_start(event, flags);
> +
> + return 0;
> +}
> +
> +static void xe_pmu_event_del(struct perf_event *event, int flags)
> +{
> + xe_pmu_event_stop(event, PERF_EF_UPDATE);
> +}
> +
> +static int xe_pmu_event_event_idx(struct perf_event *event)
> +{
> + return 0;
> +}
> +
> +struct xe_ext_attribute {
> + struct device_attribute attr;
> + unsigned long val;
> +};
> +
> +static ssize_t xe_pmu_event_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + struct xe_ext_attribute *eattr;
> +
> + eattr = container_of(attr, struct xe_ext_attribute, attr);
> + return sprintf(buf, "config=0x%lx\n", eattr->val);
> +}
> +
> +static ssize_t cpumask_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + return cpumap_print_to_pagebuf(true, buf, &xe_pmu_cpumask);
> +}
> +
> +static DEVICE_ATTR_RO(cpumask);
> +
> +static struct attribute *xe_cpumask_attrs[] = {
> + &dev_attr_cpumask.attr,
> + NULL,
> +};
> +
> +static const struct attribute_group xe_pmu_cpumask_attr_group = {
> + .attrs = xe_cpumask_attrs,
> +};
> +
> +#define __event(__counter, __name, __unit) \
> +{ \
> + .counter = (__counter), \
> + .name = (__name), \
> + .unit = (__unit), \
> +}
> +
> +static struct xe_ext_attribute *
> +add_xe_attr(struct xe_ext_attribute *attr, const char *name, u64 config)
> +{
> + sysfs_attr_init(&attr->attr.attr);
> + attr->attr.attr.name = name;
> + attr->attr.attr.mode = 0444;
> + attr->attr.show = xe_pmu_event_show;
> + attr->val = config;
> +
> + return ++attr;
> +}
> +
> +static struct perf_pmu_events_attr *
> +add_pmu_attr(struct perf_pmu_events_attr *attr, const char *name,
> + const char *str)
> +{
> + sysfs_attr_init(&attr->attr.attr);
> + attr->attr.attr.name = name;
> + attr->attr.attr.mode = 0444;
> + attr->attr.show = perf_event_sysfs_show;
> + attr->event_str = str;
> +
> + return ++attr;
> +}
> +
> +static struct attribute **
> +create_event_attributes(struct xe_pmu *pmu)
> +{
> + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
> + static const struct {
> + unsigned int counter;
> + const char *name;
> + const char *unit;
> + } events[] = {
> + };
> +
> + struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
> + struct xe_ext_attribute *xe_attr = NULL, *xe_iter;
> + struct attribute **attr = NULL, **attr_iter;
> + unsigned int count = 0;
> + unsigned int i, j;
> + struct xe_gt *gt;
> +
> + /* Count how many counters we will be exposing. */
> + for_each_gt(gt, xe, j) {
> + for (i = 0; i < ARRAY_SIZE(events); i++) {
> + u64 config = ___XE_PMU_OTHER(j, events[i].counter);
> +
> + if (!config_status(xe, config))
> + count++;
> + }
> + }
> +
> + /* Allocate attribute objects and table. */
> + xe_attr = kcalloc(count, sizeof(*xe_attr), GFP_KERNEL);
> + if (!xe_attr)
> + goto err_alloc;
> +
> + pmu_attr = kcalloc(count, sizeof(*pmu_attr), GFP_KERNEL);
> + if (!pmu_attr)
> + goto err_alloc;
> +
> + /* Max one pointer of each attribute type plus a termination entry. */
> + attr = kcalloc(count * 2 + 1, sizeof(*attr), GFP_KERNEL);
> + if (!attr)
> + goto err_alloc;
> +
> + xe_iter = xe_attr;
> + pmu_iter = pmu_attr;
> + attr_iter = attr;
> +
> + for_each_gt(gt, xe, j) {
> + for (i = 0; i < ARRAY_SIZE(events); i++) {
> + u64 config = ___XE_PMU_OTHER(j, events[i].counter);
> + char *str;
> +
> + if (config_status(xe, config))
> + continue;
> +
> + str = kasprintf(GFP_KERNEL, "%s-gt%u",
> + events[i].name, j);
> + if (!str)
> + goto err;
> +
> + *attr_iter++ = &xe_iter->attr.attr;
> + xe_iter = add_xe_attr(xe_iter, str, config);
> +
> + if (events[i].unit) {
> + str = kasprintf(GFP_KERNEL, "%s-gt%u.unit",
> + events[i].name, j);
> + if (!str)
> + goto err;
> +
> + *attr_iter++ = &pmu_iter->attr.attr;
> + pmu_iter = add_pmu_attr(pmu_iter, str,
> + events[i].unit);
> + }
> + }
> + }
> +
> + pmu->xe_attr = xe_attr;
> + pmu->pmu_attr = pmu_attr;
> +
> + return attr;
> +
> +err:
> + for (attr_iter = attr; *attr_iter; attr_iter++)
> + kfree((*attr_iter)->name);
> +
> +err_alloc:
> + kfree(attr);
> + kfree(xe_attr);
> + kfree(pmu_attr);
> +
> + return NULL;
> +}
> +
> +static void free_event_attributes(struct xe_pmu *pmu)
> +{
> + struct attribute **attr_iter = pmu->events_attr_group.attrs;
> +
> + for (; *attr_iter; attr_iter++)
> + kfree((*attr_iter)->name);
> +
> + kfree(pmu->events_attr_group.attrs);
> + kfree(pmu->xe_attr);
> + kfree(pmu->pmu_attr);
> +
> + pmu->events_attr_group.attrs = NULL;
> + pmu->xe_attr = NULL;
> + pmu->pmu_attr = NULL;
> +}
> +
> +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node)
> +{
> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node);
> +
> + /* Select the first online CPU as a designated reader. */
> + if (cpumask_empty(&xe_pmu_cpumask))
> + cpumask_set_cpu(cpu, &xe_pmu_cpumask);
> +
> + return 0;
> +}
> +
> +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node)
> +{
> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node);
> + unsigned int target = xe_pmu_target_cpu;
> +
> + /*
> + * Unregistering an instance generates a CPU offline event which we must
> + * ignore to avoid incorrectly modifying the shared xe_pmu_cpumask.
> + */
> + if (!pmu->registered)
> + return 0;
> +
> + if (cpumask_test_and_clear_cpu(cpu, &xe_pmu_cpumask)) {
> + target = cpumask_any_but(topology_sibling_cpumask(cpu), cpu);
> +
> + /* Migrate events if there is a valid target */
> + if (target < nr_cpu_ids) {
> + cpumask_set_cpu(target, &xe_pmu_cpumask);
> + xe_pmu_target_cpu = target;
> + }
> + }
> +
> + if (target < nr_cpu_ids && target != pmu->cpuhp.cpu) {
> + perf_pmu_migrate_context(&pmu->base, cpu, target);
> + pmu->cpuhp.cpu = target;
> + }
> +
> + return 0;
> +}
> +
> +static enum cpuhp_state cpuhp_state = CPUHP_INVALID;
> +
> +/**
> + * xe_pmu_init() - Setup CPU hotplug state/callbacks for Xe PMU
> + *
> + * Returns: 0 if successful, else error code
> + */
> +int xe_pmu_init(void)
> +{
> + int ret;
> +
> + ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN,
> + "perf/x86/intel/xe:online",
> + xe_pmu_cpu_online,
> + xe_pmu_cpu_offline);
> + if (ret < 0)
> + pr_notice("Failed to setup cpuhp state for xe PMU! (%d)\n",
> + ret);
> + else
> + cpuhp_state = ret;
> +
> + return 0;
> +}
> +
> +/**
> + * xe_pmu_exit() - Remove CPU hotplug state/callbacks for Xe PMU
> + */
> +void xe_pmu_exit(void)
> +{
> + if (cpuhp_state != CPUHP_INVALID)
> + cpuhp_remove_multi_state(cpuhp_state);
> +}
> +
> +static int xe_pmu_register_cpuhp_state(struct xe_pmu *pmu)
> +{
> + if (cpuhp_state == CPUHP_INVALID)
> + return -EINVAL;
> +
> + return cpuhp_state_add_instance(cpuhp_state, &pmu->cpuhp.node);
> +}
> +
> +static void xe_pmu_unregister_cpuhp_state(struct xe_pmu *pmu)
> +{
> + cpuhp_state_remove_instance(cpuhp_state, &pmu->cpuhp.node);
> +}
> +
> +/**
> + * xe_pmu_unregister() - Remove/cleanup PMU registration
> + */
> +void xe_pmu_unregister(void *arg)
> +{
> + struct xe_pmu *pmu = arg;
> +
> + if (!pmu->registered)
> + return;
> +
> + pmu->registered = false;
> +
> + xe_pmu_unregister_cpuhp_state(pmu);
> +
> + perf_pmu_unregister(&pmu->base);
> + kfree(pmu->base.attr_groups);
> + kfree(pmu->name);
> + free_event_attributes(pmu);
> +}
> +
> +/**
> + * xe_pmu_register() - Define basic PMU properties for Xe and add event callbacks.
> + *
> + */
> +void xe_pmu_register(struct xe_pmu *pmu)
> +{
> + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
> + const struct attribute_group *attr_groups[] = {
> + &pmu->events_attr_group,
> + &xe_pmu_cpumask_attr_group,
> + NULL
> + };
> +
> + int ret = -ENOMEM;
> +
> + spin_lock_init(&pmu->lock);
> + pmu->cpuhp.cpu = -1;
> +
> + pmu->name = kasprintf(GFP_KERNEL,
> + "xe_%s",
> + dev_name(xe->drm.dev));
> + if (pmu->name) {
> + /* tools/perf reserves colons as special. */
> + strreplace((char *)pmu->name, ':', '_');
> + }
> +
> + if (!pmu->name)
> + goto err;
> +
> + pmu->events_attr_group.name = "events";
> + pmu->events_attr_group.attrs = create_event_attributes(pmu);
> + if (!pmu->events_attr_group.attrs)
> + goto err_name;
> +
> + pmu->base.attr_groups = kmemdup(attr_groups, sizeof(attr_groups),
> + GFP_KERNEL);
> + if (!pmu->base.attr_groups)
> + goto err_attr;
> +
> + pmu->base.module = THIS_MODULE;
> + pmu->base.task_ctx_nr = perf_invalid_context;
> + pmu->base.event_init = xe_pmu_event_init;
> + pmu->base.add = xe_pmu_event_add;
> + pmu->base.del = xe_pmu_event_del;
> + pmu->base.start = xe_pmu_event_start;
> + pmu->base.stop = xe_pmu_event_stop;
> + pmu->base.read = xe_pmu_event_read;
> + pmu->base.event_idx = xe_pmu_event_event_idx;
> +
> + ret = perf_pmu_register(&pmu->base, pmu->name, -1);
> + if (ret)
> + goto err_groups;
> +
> + ret = xe_pmu_register_cpuhp_state(pmu);
> + if (ret)
> + goto err_unreg;
> +
> + ret = devm_add_action_or_reset(xe->drm.dev, xe_pmu_unregister, pmu);
> + if (ret)
> + goto err_cpuhp;
> +
> + pmu->registered = true;
> +
> + return;
> +
> +err_cpuhp:
> + xe_pmu_unregister_cpuhp_state(pmu);
> +err_unreg:
> + perf_pmu_unregister(&pmu->base);
> +err_groups:
> + kfree(pmu->base.attr_groups);
> +err_attr:
> + free_event_attributes(pmu);
> +err_name:
> + kfree(pmu->name);
> +err:
> + drm_notice(&xe->drm, "Failed to register PMU!\n");
> +}
> diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
> new file mode 100644
> index 000000000000..d07e5dfdfec0
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_pmu.h
> @@ -0,0 +1,26 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#ifndef _XE_PMU_H_
> +#define _XE_PMU_H_
> +
> +#include "xe_pmu_types.h"
> +
> +struct xe_gt;
> +
> +#if IS_ENABLED(CONFIG_PERF_EVENTS)
> +int xe_pmu_init(void);
> +void xe_pmu_exit(void);
> +void xe_pmu_register(struct xe_pmu *pmu);
> +void xe_pmu_unregister(void *arg);
> +#else
> +static inline int xe_pmu_init(void) { return 0; }
> +static inline void xe_pmu_exit(void) {}
> +static inline void xe_pmu_register(struct xe_pmu *pmu) {}
> +static inline void xe_pmu_unregister(void *arg) {}
> +#endif
> +
> +#endif
> +
> diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
> new file mode 100644
> index 000000000000..4da96b8fadd1
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_pmu_types.h
> @@ -0,0 +1,70 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#ifndef _XE_PMU_TYPES_H_
> +#define _XE_PMU_TYPES_H_
> +
> +#include <linux/perf_event.h>
> +#include <linux/spinlock_types.h>
> +
> +enum {
> + __XE_NUM_PMU_SAMPLERS
> +};
> +
> +#define XE_PMU_MAX_GT 2
> +
> +/*
> + * Top bits of every counter are GT id.
> + */
> +#define __XE_PMU_GT_SHIFT (56)
> +
> +#define ___XE_PMU_OTHER(gt, x) \
> + (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT))
> +
> +struct xe_pmu {
> + /**
> + * @cpuhp: Struct used for CPU hotplug handling.
> + */
> + struct {
> + struct hlist_node node;
> + unsigned int cpu;
> + } cpuhp;
> + /**
> + * @base: PMU base.
> + */
> + struct pmu base;
> + /**
> + * @registered: PMU is registered and not in the unregistering process.
> + */
> + bool registered;
> + /**
> + * @name: Name as registered with perf core.
> + */
> + const char *name;
> + /**
> + * @lock: Lock protecting enable mask and ref count handling.
> + */
> + spinlock_t lock;
> + /**
> + * @sample: Current and previous (raw) counters.
> + *
> + * These counters are updated when the device is awake.
> + */
> + u64 sample[XE_PMU_MAX_GT][__XE_NUM_PMU_SAMPLERS];
> + /**
> + * @events_attr_group: Device events attribute group.
> + */
> + struct attribute_group events_attr_group;
> + /**
> + * @xe_attr: Memory block holding device attributes.
> + */
> + void *xe_attr;
> + /**
> + * @pmu_attr: Memory block holding device attributes.
> + */
> + void *pmu_attr;
> +};
> +
> +#endif
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 2/3] drm/xe/pmu: Add GT C6 events
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
2024-11-08 18:15 ` [PATCH 1/3] drm/xe/pmu: Enable PMU interface Vinay Belgaumkar
@ 2024-11-08 18:15 ` Vinay Belgaumkar
2024-11-08 22:32 ` Rodrigo Vivi
2024-11-08 18:15 ` [PATCH 3/3] drm/xe/pmu: Add GT frequency events Vinay Belgaumkar
` (8 subsequent siblings)
10 siblings, 1 reply; 22+ messages in thread
From: Vinay Belgaumkar @ 2024-11-08 18:15 UTC (permalink / raw)
To: intel-xe; +Cc: Vinay Belgaumkar, Rodrigo Vivi
Provide a PMU interface for GT C6 residency counters. The implementation
is ported over from the i915 PMU code. Residency is provided in units of
ms(like sysfs entry in - /sys/class/drm/card0/device/tile0/gt0/gtidle).
Sample usage and output-
$ perf list | grep rc6
xe_0000_00_02.0/rc6-residency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/rc6-residency-gt1/ [Kernel PMU event]
$ perf stat -e xe_0000_00_02.0/rc6-residency-gt0/
Performance counter stats for 'system wide':
1907 ms xe/rc6-residency-gt0/
1.907581788 seconds time elapsed
v2: Checkpatch fix, move timer code to next patch
v3: Fix kunit issue
v4: Fix for locking issue, fix review comments (Riana)
v5: Add xe_pmu_disable() function to reset enable_count
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
---
drivers/gpu/drm/xe/xe_gt.c | 2 +
drivers/gpu/drm/xe/xe_gt_idle.c | 17 ++-
drivers/gpu/drm/xe/xe_gt_idle.h | 1 +
drivers/gpu/drm/xe/xe_pmu.c | 220 +++++++++++++++++++++++++++++-
drivers/gpu/drm/xe/xe_pmu.h | 2 +
drivers/gpu/drm/xe/xe_pmu_types.h | 63 +++++++++
6 files changed, 299 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index d6744be01a68..fd18bbce99da 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -877,6 +877,8 @@ int xe_gt_suspend(struct xe_gt *gt)
xe_gt_idle_disable_pg(gt);
+ xe_pmu_suspend(gt);
+
xe_gt_disable_host_l2_vram(gt);
xe_force_wake_put(gt_to_fw(gt), fw_ref);
diff --git a/drivers/gpu/drm/xe/xe_gt_idle.c b/drivers/gpu/drm/xe/xe_gt_idle.c
index fd80afeef56a..47b5696c7137 100644
--- a/drivers/gpu/drm/xe/xe_gt_idle.c
+++ b/drivers/gpu/drm/xe/xe_gt_idle.c
@@ -275,18 +275,25 @@ static ssize_t idle_status_show(struct device *dev,
}
static DEVICE_ATTR_RO(idle_status);
+u64 xe_gt_idle_residency(struct xe_gt_idle *gtidle)
+{
+ struct xe_guc_pc *pc = gtidle_to_pc(gtidle);
+
+ return get_residency_ms(gtidle, gtidle->idle_residency(pc));
+}
+
static ssize_t idle_residency_ms_show(struct device *dev,
struct device_attribute *attr, char *buff)
{
struct xe_gt_idle *gtidle = dev_to_gtidle(dev);
- struct xe_guc_pc *pc = gtidle_to_pc(gtidle);
+ struct xe_gt *gt = gtidle_to_gt(gtidle);
u64 residency;
- xe_pm_runtime_get(pc_to_xe(pc));
- residency = gtidle->idle_residency(pc);
- xe_pm_runtime_put(pc_to_xe(pc));
+ xe_pm_runtime_get(gt_to_xe(gt));
+ residency = xe_gt_idle_residency(gtidle);
+ xe_pm_runtime_put(gt_to_xe(gt));
- return sysfs_emit(buff, "%llu\n", get_residency_ms(gtidle, residency));
+ return sysfs_emit(buff, "%llu\n", residency);
}
static DEVICE_ATTR_RO(idle_residency_ms);
diff --git a/drivers/gpu/drm/xe/xe_gt_idle.h b/drivers/gpu/drm/xe/xe_gt_idle.h
index 4455a6501cb0..795a02c9d89c 100644
--- a/drivers/gpu/drm/xe/xe_gt_idle.h
+++ b/drivers/gpu/drm/xe/xe_gt_idle.h
@@ -17,5 +17,6 @@ void xe_gt_idle_disable_c6(struct xe_gt *gt);
void xe_gt_idle_enable_pg(struct xe_gt *gt);
void xe_gt_idle_disable_pg(struct xe_gt *gt);
int xe_gt_idle_pg_print(struct xe_gt *gt, struct drm_printer *p);
+u64 xe_gt_idle_residency(struct xe_gt_idle *gtidle);
#endif /* _XE_GT_IDLE_H_ */
diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
index 7ce66c022e27..80d78628006e 100644
--- a/drivers/gpu/drm/xe/xe_pmu.c
+++ b/drivers/gpu/drm/xe/xe_pmu.c
@@ -11,8 +11,11 @@
#include "xe_device.h"
#include "xe_force_wake.h"
#include "xe_gt_clock.h"
+#include "xe_gt_idle.h"
+#include "xe_guc_pc.h"
#include "xe_mmio.h"
#include "xe_macros.h"
+#include "xe_module.h"
#include "xe_pm.h"
/**
@@ -22,6 +25,8 @@
static cpumask_t xe_pmu_cpumask;
static unsigned int xe_pmu_target_cpu = -1;
+#define FREQUENCY 200
+
/**
* DOC: Xe PMU (Performance Monitoring Unit)
*
@@ -31,7 +36,9 @@ static unsigned int xe_pmu_target_cpu = -1;
* Example commands to list/record supported perf events-
*
* $ ls -ld /sys/bus/event_source/devices/xe_*
- * $ ls /sys/bus/event_source/devices/xe_0000_00_02.0/events/
+ * $ lrwxrwxrwx 1 root root 0 Oct 25 00:19 /sys/bus/event_source/devices/xe_0000_03_00.0 ->
+ * ../../../devices/xe_0000_03_00.0
+ * $ ls /sys/bus/event_source/devices/xe_0000_03_00.0/events/
*
* You can also use the perf tool to grep for a certain event-
* $ perf list | grep rc6
@@ -39,8 +46,30 @@ static unsigned int xe_pmu_target_cpu = -1;
* To list a specific event at regular intervals-
* $ perf stat -e <event_name> -I <interval>
*
+ * For RC6, following command will give GT residency per second-
+ * $ perf stat -e xe_0000_03_00.0/rc6-residency-gt0/ -I 1000
+ * # time counts unit events
+ * 1.001153792 1002 ms xe_0000_03_00.0/rc6-residency-gt0/
+ * 2.008338100 1007 ms xe_0000_03_00.0/rc6-residency-gt0/
+ * 3.009887054 1002 ms xe_0000_03_00.0/rc6-residency-gt0/
+ * 4.011383318 1001 ms xe_0000_03_00.0/rc6-residency-gt0/
+ *
+ * To verify this matches with sysfs values of rc6, you can run following command-
+ * $ for i in {1..10} ; do cat /sys/class/drm/card0/device/tile0/gt0/gtidle/idle_residency_ms;
+ * sleep 1; done
+ * 2348877
+ * 2349901
+ * 2350917
+ * 2352945
+ *
+ * Each value is roughly a 1000ms increment here as well. This is expected GT residency when idle.
*/
+static struct xe_pmu *event_to_pmu(struct perf_event *event)
+{
+ return container_of(event->pmu, struct xe_pmu, base);
+}
+
static unsigned int config_gt_id(const u64 config)
{
return config >> __XE_PMU_GT_SHIFT;
@@ -51,6 +80,35 @@ static u64 config_counter(const u64 config)
return config & ~(~0ULL << __XE_PMU_GT_SHIFT);
}
+static unsigned int other_bit(const u64 config)
+{
+ unsigned int val;
+
+ switch (config_counter(config)) {
+ case XE_PMU_RC6_RESIDENCY:
+ val = __XE_PMU_RC6_RESIDENCY_ENABLED;
+ break;
+ default:
+ /*
+ * Events that do not require sampling, or tracking state
+ * transitions between enabled and disabled can be ignored.
+ */
+ return -1;
+ }
+
+ return config_gt_id(config) * __XE_PMU_TRACKED_EVENT_COUNT + val;
+}
+
+static unsigned int config_bit(const u64 config)
+{
+ return other_bit(config);
+}
+
+static unsigned int event_bit(struct perf_event *event)
+{
+ return config_bit(event->attr.config);
+}
+
static void xe_pmu_event_destroy(struct perf_event *event)
{
struct xe_device *xe =
@@ -70,6 +128,10 @@ config_status(struct xe_device *xe, u64 config)
return -ENOENT;
switch (config_counter(config)) {
+ case XE_PMU_RC6_RESIDENCY:
+ if (xe->info.skip_guc_pc)
+ return -ENODEV;
+ break;
default:
return -ENOENT;
}
@@ -116,6 +178,63 @@ static int xe_pmu_event_init(struct perf_event *event)
return 0;
}
+static inline s64 ktime_since_raw(const ktime_t kt)
+{
+ return ktime_to_ms(ktime_sub(ktime_get_raw(), kt));
+}
+
+static u64 read_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample)
+{
+ return pmu->event_sample[gt_id][sample].cur;
+}
+
+static void
+store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
+{
+ pmu->event_sample[gt_id][sample].cur = val;
+}
+
+static u64 get_rc6(struct xe_gt *gt)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ const unsigned int gt_id = gt->info.id;
+ struct xe_pmu *pmu = &xe->pmu;
+ bool device_awake;
+ unsigned long flags;
+ u64 val;
+
+ device_awake = xe_pm_runtime_get_if_active(xe);
+ if (device_awake) {
+ val = xe_gt_idle_residency(>->gtidle);
+ xe_pm_runtime_put(xe);
+ }
+
+ spin_lock_irqsave(&pmu->lock, flags);
+
+ if (device_awake) {
+ store_sample(pmu, gt_id, __XE_SAMPLE_RC6, val);
+ } else {
+ /*
+ * We think we are runtime suspended.
+ *
+ * Report the delta from when the device was suspended to now,
+ * on top of the last known real value, as the approximated RC6
+ * counter value.
+ */
+ val = ktime_since_raw(pmu->sleep_last[gt_id]);
+ val += read_sample(pmu, gt_id, __XE_SAMPLE_RC6);
+ }
+
+ if (val < read_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED))
+ val = read_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED);
+ else
+ store_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED, val);
+
+ spin_unlock_irqrestore(&pmu->lock, flags);
+
+ return val;
+}
+
static u64 __xe_pmu_event_read(struct perf_event *event)
{
struct xe_device *xe =
@@ -126,6 +245,9 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
u64 val = 0;
switch (config_counter(config)) {
+ case XE_PMU_RC6_RESIDENCY:
+ val = get_rc6(gt);
+ break;
default:
drm_warn(>->tile->xe->drm, "unknown pmu event\n");
}
@@ -157,6 +279,28 @@ static void xe_pmu_event_read(struct perf_event *event)
static void xe_pmu_enable(struct perf_event *event)
{
+ struct xe_pmu *pmu = event_to_pmu(event);
+ const unsigned int bit = event_bit(event);
+ unsigned long flags;
+
+ if (bit == -1)
+ goto update;
+
+ spin_lock_irqsave(&pmu->lock, flags);
+
+ /*
+ * Update the bitmask of enabled events and increment
+ * the event reference counter.
+ */
+ BUILD_BUG_ON(ARRAY_SIZE(pmu->enable_count) != XE_PMU_MASK_BITS);
+ XE_WARN_ON(bit >= ARRAY_SIZE(pmu->enable_count));
+ XE_WARN_ON(pmu->enable_count[bit] == ~0);
+
+ pmu->enable |= BIT(bit);
+ pmu->enable_count[bit]++;
+
+ spin_unlock_irqrestore(&pmu->lock, flags);
+update:
/*
* Store the current counter value so we can report the correct delta
* for all listeners. Even when the event was already enabled and has
@@ -165,6 +309,31 @@ static void xe_pmu_enable(struct perf_event *event)
local64_set(&event->hw.prev_count, __xe_pmu_event_read(event));
}
+static void xe_pmu_disable(struct perf_event *event)
+{
+ struct xe_device *xe =
+ container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
+ const unsigned int bit = event_bit(event);
+ unsigned long flags;
+
+ if (bit == -1)
+ return;
+
+ spin_lock_irqsave(&pmu->lock, flags);
+
+ XE_WARN_ON(bit >= ARRAY_SIZE(pmu->enable_count));
+ XE_WARN_ON(pmu->enable_count[bit] == 0);
+ /*
+ * Decrement the reference count and clear the enabled
+ * bitmask when the last listener on an event goes away.
+ */
+ if (--pmu->enable_count[bit] == 0)
+ pmu->enable &= ~BIT(bit);
+
+ spin_unlock_irqrestore(&pmu->lock, flags);
+}
+
static void xe_pmu_event_start(struct perf_event *event, int flags)
{
struct xe_device *xe =
@@ -190,6 +359,8 @@ static void xe_pmu_event_stop(struct perf_event *event, int flags)
if (flags & PERF_EF_UPDATE)
xe_pmu_event_read(event);
+ xe_pmu_disable(event);
+
out:
event->hw.state = PERF_HES_STOPPED;
}
@@ -291,6 +462,7 @@ create_event_attributes(struct xe_pmu *pmu)
const char *name;
const char *unit;
} events[] = {
+ __event(0, "rc6-residency", "ms"),
};
struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
@@ -477,6 +649,32 @@ static void xe_pmu_unregister_cpuhp_state(struct xe_pmu *pmu)
cpuhp_state_remove_instance(cpuhp_state, &pmu->cpuhp.node);
}
+static void store_rc6_residency(struct xe_gt *gt)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ store_sample(pmu, gt->info.id, __XE_SAMPLE_RC6,
+ xe_gt_idle_residency(>->gtidle));
+ pmu->sleep_last[gt->info.id] = ktime_get_raw();
+}
+
+/**
+ * xe_pmu_suspend() - Save residency count before suspend
+ */
+void xe_pmu_suspend(struct xe_gt *gt)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ if (!pmu->base.event_init)
+ return;
+
+ spin_lock_irq(&pmu->lock);
+ store_rc6_residency(gt);
+ spin_unlock_irq(&pmu->lock);
+}
+
/**
* xe_pmu_unregister() - Remove/cleanup PMU registration
*/
@@ -497,6 +695,24 @@ void xe_pmu_unregister(void *arg)
free_event_attributes(pmu);
}
+static void init_rc6(struct xe_pmu *pmu)
+{
+ struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
+ struct xe_gt *gt;
+ unsigned int j;
+
+ for_each_gt(gt, xe, j) {
+ xe_pm_runtime_get(xe);
+ u64 val = xe_gt_idle_residency(>->gtidle);
+
+ store_sample(pmu, j, __XE_SAMPLE_RC6, val);
+ store_sample(pmu, j, __XE_SAMPLE_RC6_LAST_REPORTED,
+ val);
+ pmu->sleep_last[j] = ktime_get_raw();
+ xe_pm_runtime_put(xe);
+ }
+}
+
/**
* xe_pmu_register() - Define basic PMU properties for Xe and add event callbacks.
*
@@ -531,6 +747,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
if (!pmu->events_attr_group.attrs)
goto err_name;
+ init_rc6(pmu);
+
pmu->base.attr_groups = kmemdup(attr_groups, sizeof(attr_groups),
GFP_KERNEL);
if (!pmu->base.attr_groups)
diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
index d07e5dfdfec0..17f5a8d7d45c 100644
--- a/drivers/gpu/drm/xe/xe_pmu.h
+++ b/drivers/gpu/drm/xe/xe_pmu.h
@@ -15,11 +15,13 @@ int xe_pmu_init(void);
void xe_pmu_exit(void);
void xe_pmu_register(struct xe_pmu *pmu);
void xe_pmu_unregister(void *arg);
+void xe_pmu_suspend(struct xe_gt *gt);
#else
static inline int xe_pmu_init(void) { return 0; }
static inline void xe_pmu_exit(void) {}
static inline void xe_pmu_register(struct xe_pmu *pmu) {}
static inline void xe_pmu_unregister(void *arg) {}
+static inline void xe_pmu_suspend(struct xe_gt *gt) {}
#endif
#endif
diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
index 4da96b8fadd1..59d7718c59ce 100644
--- a/drivers/gpu/drm/xe/xe_pmu_types.h
+++ b/drivers/gpu/drm/xe/xe_pmu_types.h
@@ -10,6 +10,8 @@
#include <linux/spinlock_types.h>
enum {
+ __XE_SAMPLE_RC6,
+ __XE_SAMPLE_RC6_LAST_REPORTED,
__XE_NUM_PMU_SAMPLERS
};
@@ -23,6 +25,32 @@ enum {
#define ___XE_PMU_OTHER(gt, x) \
(((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT))
+#define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
+
+#define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
+#define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
+
+/**
+ * Non-engine events that we need to track enabled-disabled transition and
+ * current state.
+ */
+enum xe_pmu_tracked_events {
+ __XE_PMU_RC6_RESIDENCY_ENABLED,
+ __XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
+};
+
+/**
+ * How many different events we track in the global PMU mask.
+ *
+ * It is also used to know to needed number of event reference counters.
+ */
+#define XE_PMU_MASK_BITS \
+ (XE_PMU_MAX_GT * __XE_PMU_TRACKED_EVENT_COUNT)
+
+struct xe_pmu_sample {
+ u64 cur;
+};
+
struct xe_pmu {
/**
* @cpuhp: Struct used for CPU hotplug handling.
@@ -65,6 +93,41 @@ struct xe_pmu {
* @pmu_attr: Memory block holding device attributes.
*/
void *pmu_attr;
+
+ /**
+ * @enable: Bitmask of specific enabled events.
+ *
+ * For some events we need to track their state and do some internal
+ * house keeping.
+ *
+ * Each engine event sampler type and event listed in enum
+ * i915_pmu_tracked_events gets a bit in this field.
+ *
+ * Low bits are engine samplers and other events continue from there.
+ */
+ u32 enable;
+
+ /**
+ * @enable_count: Reference counter for enabled events.
+ *
+ * Array indices are mapped in the same way as bits in the @enable field
+ * and they are used to control sampling on/off when multiple clients
+ * are using the PMU API.
+ */
+ unsigned int enable_count[XE_PMU_MASK_BITS];
+ /**
+ * @sample: Current and previous (raw) counters for sampling events.
+ *
+ * These counters are updated from the i915 PMU sampling timer.
+ *
+ * Only global counters are held here, while the per-engine ones are in
+ * struct intel_engine_cs.
+ */
+ struct xe_pmu_sample event_sample[XE_PMU_MAX_GT][__XE_NUM_PMU_SAMPLERS];
+ /**
+ * @sleep_last: Last time GT parked for RC6 estimation.
+ */
+ ktime_t sleep_last[XE_PMU_MAX_GT];
};
#endif
--
2.38.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* Re: [PATCH 2/3] drm/xe/pmu: Add GT C6 events
2024-11-08 18:15 ` [PATCH 2/3] drm/xe/pmu: Add GT C6 events Vinay Belgaumkar
@ 2024-11-08 22:32 ` Rodrigo Vivi
2024-11-12 5:56 ` Riana Tauro
0 siblings, 1 reply; 22+ messages in thread
From: Rodrigo Vivi @ 2024-11-08 22:32 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
On Fri, Nov 08, 2024 at 10:15:11AM -0800, Vinay Belgaumkar wrote:
> Provide a PMU interface for GT C6 residency counters. The implementation
> is ported over from the i915 PMU code. Residency is provided in units of
> ms(like sysfs entry in - /sys/class/drm/card0/device/tile0/gt0/gtidle).
>
> Sample usage and output-
>
> $ perf list | grep rc6
>
> xe_0000_00_02.0/rc6-residency-gt0/ [Kernel PMU event]
> xe_0000_00_02.0/rc6-residency-gt1/ [Kernel PMU event]
>
> $ perf stat -e xe_0000_00_02.0/rc6-residency-gt0/
>
> Performance counter stats for 'system wide':
>
> 1907 ms xe/rc6-residency-gt0/
> 1.907581788 seconds time elapsed
>
> v2: Checkpatch fix, move timer code to next patch
> v3: Fix kunit issue
> v4: Fix for locking issue, fix review comments (Riana)
> v5: Add xe_pmu_disable() function to reset enable_count
>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
> ---
> drivers/gpu/drm/xe/xe_gt.c | 2 +
> drivers/gpu/drm/xe/xe_gt_idle.c | 17 ++-
> drivers/gpu/drm/xe/xe_gt_idle.h | 1 +
> drivers/gpu/drm/xe/xe_pmu.c | 220 +++++++++++++++++++++++++++++-
> drivers/gpu/drm/xe/xe_pmu.h | 2 +
> drivers/gpu/drm/xe/xe_pmu_types.h | 63 +++++++++
> 6 files changed, 299 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> index d6744be01a68..fd18bbce99da 100644
> --- a/drivers/gpu/drm/xe/xe_gt.c
> +++ b/drivers/gpu/drm/xe/xe_gt.c
> @@ -877,6 +877,8 @@ int xe_gt_suspend(struct xe_gt *gt)
>
> xe_gt_idle_disable_pg(gt);
>
> + xe_pmu_suspend(gt);
> +
> xe_gt_disable_host_l2_vram(gt);
>
> xe_force_wake_put(gt_to_fw(gt), fw_ref);
> diff --git a/drivers/gpu/drm/xe/xe_gt_idle.c b/drivers/gpu/drm/xe/xe_gt_idle.c
> index fd80afeef56a..47b5696c7137 100644
> --- a/drivers/gpu/drm/xe/xe_gt_idle.c
> +++ b/drivers/gpu/drm/xe/xe_gt_idle.c
> @@ -275,18 +275,25 @@ static ssize_t idle_status_show(struct device *dev,
> }
> static DEVICE_ATTR_RO(idle_status);
>
> +u64 xe_gt_idle_residency(struct xe_gt_idle *gtidle)
> +{
> + struct xe_guc_pc *pc = gtidle_to_pc(gtidle);
> +
> + return get_residency_ms(gtidle, gtidle->idle_residency(pc));
> +}
> +
> static ssize_t idle_residency_ms_show(struct device *dev,
> struct device_attribute *attr, char *buff)
> {
> struct xe_gt_idle *gtidle = dev_to_gtidle(dev);
> - struct xe_guc_pc *pc = gtidle_to_pc(gtidle);
> + struct xe_gt *gt = gtidle_to_gt(gtidle);
> u64 residency;
>
> - xe_pm_runtime_get(pc_to_xe(pc));
> - residency = gtidle->idle_residency(pc);
> - xe_pm_runtime_put(pc_to_xe(pc));
> + xe_pm_runtime_get(gt_to_xe(gt));
> + residency = xe_gt_idle_residency(gtidle);
> + xe_pm_runtime_put(gt_to_xe(gt));
>
> - return sysfs_emit(buff, "%llu\n", get_residency_ms(gtidle, residency));
> + return sysfs_emit(buff, "%llu\n", residency);
> }
> static DEVICE_ATTR_RO(idle_residency_ms);
>
> diff --git a/drivers/gpu/drm/xe/xe_gt_idle.h b/drivers/gpu/drm/xe/xe_gt_idle.h
> index 4455a6501cb0..795a02c9d89c 100644
> --- a/drivers/gpu/drm/xe/xe_gt_idle.h
> +++ b/drivers/gpu/drm/xe/xe_gt_idle.h
> @@ -17,5 +17,6 @@ void xe_gt_idle_disable_c6(struct xe_gt *gt);
> void xe_gt_idle_enable_pg(struct xe_gt *gt);
> void xe_gt_idle_disable_pg(struct xe_gt *gt);
> int xe_gt_idle_pg_print(struct xe_gt *gt, struct drm_printer *p);
> +u64 xe_gt_idle_residency(struct xe_gt_idle *gtidle);
>
> #endif /* _XE_GT_IDLE_H_ */
> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
> index 7ce66c022e27..80d78628006e 100644
> --- a/drivers/gpu/drm/xe/xe_pmu.c
> +++ b/drivers/gpu/drm/xe/xe_pmu.c
> @@ -11,8 +11,11 @@
> #include "xe_device.h"
> #include "xe_force_wake.h"
> #include "xe_gt_clock.h"
> +#include "xe_gt_idle.h"
> +#include "xe_guc_pc.h"
> #include "xe_mmio.h"
> #include "xe_macros.h"
> +#include "xe_module.h"
> #include "xe_pm.h"
>
> /**
> @@ -22,6 +25,8 @@
> static cpumask_t xe_pmu_cpumask;
> static unsigned int xe_pmu_target_cpu = -1;
>
> +#define FREQUENCY 200
> +
> /**
> * DOC: Xe PMU (Performance Monitoring Unit)
> *
> @@ -31,7 +36,9 @@ static unsigned int xe_pmu_target_cpu = -1;
> * Example commands to list/record supported perf events-
> *
> * $ ls -ld /sys/bus/event_source/devices/xe_*
> - * $ ls /sys/bus/event_source/devices/xe_0000_00_02.0/events/
> + * $ lrwxrwxrwx 1 root root 0 Oct 25 00:19 /sys/bus/event_source/devices/xe_0000_03_00.0 ->
> + * ../../../devices/xe_0000_03_00.0
> + * $ ls /sys/bus/event_source/devices/xe_0000_03_00.0/events/
> *
> * You can also use the perf tool to grep for a certain event-
> * $ perf list | grep rc6
> @@ -39,8 +46,30 @@ static unsigned int xe_pmu_target_cpu = -1;
> * To list a specific event at regular intervals-
> * $ perf stat -e <event_name> -I <interval>
> *
> + * For RC6, following command will give GT residency per second-
> + * $ perf stat -e xe_0000_03_00.0/rc6-residency-gt0/ -I 1000
> + * # time counts unit events
> + * 1.001153792 1002 ms xe_0000_03_00.0/rc6-residency-gt0/
> + * 2.008338100 1007 ms xe_0000_03_00.0/rc6-residency-gt0/
> + * 3.009887054 1002 ms xe_0000_03_00.0/rc6-residency-gt0/
> + * 4.011383318 1001 ms xe_0000_03_00.0/rc6-residency-gt0/
> + *
> + * To verify this matches with sysfs values of rc6, you can run following command-
> + * $ for i in {1..10} ; do cat /sys/class/drm/card0/device/tile0/gt0/gtidle/idle_residency_ms;
> + * sleep 1; done
> + * 2348877
> + * 2349901
> + * 2350917
> + * 2352945
> + *
> + * Each value is roughly a 1000ms increment here as well. This is expected GT residency when idle.
> */
>
> +static struct xe_pmu *event_to_pmu(struct perf_event *event)
> +{
> + return container_of(event->pmu, struct xe_pmu, base);
> +}
> +
> static unsigned int config_gt_id(const u64 config)
> {
> return config >> __XE_PMU_GT_SHIFT;
> @@ -51,6 +80,35 @@ static u64 config_counter(const u64 config)
> return config & ~(~0ULL << __XE_PMU_GT_SHIFT);
> }
>
> +static unsigned int other_bit(const u64 config)
> +{
> + unsigned int val;
> +
> + switch (config_counter(config)) {
> + case XE_PMU_RC6_RESIDENCY:
> + val = __XE_PMU_RC6_RESIDENCY_ENABLED;
> + break;
> + default:
> + /*
> + * Events that do not require sampling, or tracking state
> + * transitions between enabled and disabled can be ignored.
> + */
> + return -1;
> + }
> +
> + return config_gt_id(config) * __XE_PMU_TRACKED_EVENT_COUNT + val;
> +}
> +
> +static unsigned int config_bit(const u64 config)
> +{
> + return other_bit(config);
> +}
> +
> +static unsigned int event_bit(struct perf_event *event)
> +{
> + return config_bit(event->attr.config);
> +}
> +
> static void xe_pmu_event_destroy(struct perf_event *event)
> {
> struct xe_device *xe =
> @@ -70,6 +128,10 @@ config_status(struct xe_device *xe, u64 config)
> return -ENOENT;
>
> switch (config_counter(config)) {
> + case XE_PMU_RC6_RESIDENCY:
> + if (xe->info.skip_guc_pc)
> + return -ENODEV;
> + break;
> default:
> return -ENOENT;
> }
> @@ -116,6 +178,63 @@ static int xe_pmu_event_init(struct perf_event *event)
> return 0;
> }
>
> +static inline s64 ktime_since_raw(const ktime_t kt)
> +{
> + return ktime_to_ms(ktime_sub(ktime_get_raw(), kt));
> +}
> +
> +static u64 read_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample)
> +{
> + return pmu->event_sample[gt_id][sample].cur;
> +}
> +
> +static void
> +store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
> +{
> + pmu->event_sample[gt_id][sample].cur = val;
> +}
> +
> +static u64 get_rc6(struct xe_gt *gt)
> +{
> + struct xe_device *xe = gt_to_xe(gt);
> + const unsigned int gt_id = gt->info.id;
> + struct xe_pmu *pmu = &xe->pmu;
> + bool device_awake;
> + unsigned long flags;
> + u64 val;
> +
> + device_awake = xe_pm_runtime_get_if_active(xe);
> + if (device_awake) {
> + val = xe_gt_idle_residency(>->gtidle);
> + xe_pm_runtime_put(xe);
> + }
> +
> + spin_lock_irqsave(&pmu->lock, flags);
> +
> + if (device_awake) {
> + store_sample(pmu, gt_id, __XE_SAMPLE_RC6, val);
> + } else {
> + /*
> + * We think we are runtime suspended.
> + *
> + * Report the delta from when the device was suspended to now,
> + * on top of the last known real value, as the approximated RC6
> + * counter value.
> + */
> + val = ktime_since_raw(pmu->sleep_last[gt_id]);
> + val += read_sample(pmu, gt_id, __XE_SAMPLE_RC6);
> + }
> +
> + if (val < read_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED))
> + val = read_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED);
> + else
> + store_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED, val);
> +
> + spin_unlock_irqrestore(&pmu->lock, flags);
> +
> + return val;
> +}
> +
> static u64 __xe_pmu_event_read(struct perf_event *event)
> {
> struct xe_device *xe =
> @@ -126,6 +245,9 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
> u64 val = 0;
>
> switch (config_counter(config)) {
> + case XE_PMU_RC6_RESIDENCY:
> + val = get_rc6(gt);
> + break;
> default:
> drm_warn(>->tile->xe->drm, "unknown pmu event\n");
> }
> @@ -157,6 +279,28 @@ static void xe_pmu_event_read(struct perf_event *event)
>
> static void xe_pmu_enable(struct perf_event *event)
> {
> + struct xe_pmu *pmu = event_to_pmu(event);
> + const unsigned int bit = event_bit(event);
> + unsigned long flags;
> +
> + if (bit == -1)
> + goto update;
> +
> + spin_lock_irqsave(&pmu->lock, flags);
> +
> + /*
> + * Update the bitmask of enabled events and increment
> + * the event reference counter.
> + */
> + BUILD_BUG_ON(ARRAY_SIZE(pmu->enable_count) != XE_PMU_MASK_BITS);
> + XE_WARN_ON(bit >= ARRAY_SIZE(pmu->enable_count));
> + XE_WARN_ON(pmu->enable_count[bit] == ~0);
> +
> + pmu->enable |= BIT(bit);
> + pmu->enable_count[bit]++;
> +
> + spin_unlock_irqrestore(&pmu->lock, flags);
> +update:
> /*
> * Store the current counter value so we can report the correct delta
> * for all listeners. Even when the event was already enabled and has
> @@ -165,6 +309,31 @@ static void xe_pmu_enable(struct perf_event *event)
> local64_set(&event->hw.prev_count, __xe_pmu_event_read(event));
> }
>
> +static void xe_pmu_disable(struct perf_event *event)
> +{
> + struct xe_device *xe =
> + container_of(event->pmu, typeof(*xe), pmu.base);
> + struct xe_pmu *pmu = &xe->pmu;
> + const unsigned int bit = event_bit(event);
> + unsigned long flags;
> +
> + if (bit == -1)
> + return;
> +
> + spin_lock_irqsave(&pmu->lock, flags);
> +
> + XE_WARN_ON(bit >= ARRAY_SIZE(pmu->enable_count));
> + XE_WARN_ON(pmu->enable_count[bit] == 0);
> + /*
> + * Decrement the reference count and clear the enabled
> + * bitmask when the last listener on an event goes away.
> + */
> + if (--pmu->enable_count[bit] == 0)
> + pmu->enable &= ~BIT(bit);
> +
> + spin_unlock_irqrestore(&pmu->lock, flags);
> +}
> +
> static void xe_pmu_event_start(struct perf_event *event, int flags)
> {
> struct xe_device *xe =
> @@ -190,6 +359,8 @@ static void xe_pmu_event_stop(struct perf_event *event, int flags)
> if (flags & PERF_EF_UPDATE)
> xe_pmu_event_read(event);
>
> + xe_pmu_disable(event);
> +
> out:
> event->hw.state = PERF_HES_STOPPED;
> }
> @@ -291,6 +462,7 @@ create_event_attributes(struct xe_pmu *pmu)
> const char *name;
> const char *unit;
> } events[] = {
> + __event(0, "rc6-residency", "ms"),
> };
>
> struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
> @@ -477,6 +649,32 @@ static void xe_pmu_unregister_cpuhp_state(struct xe_pmu *pmu)
> cpuhp_state_remove_instance(cpuhp_state, &pmu->cpuhp.node);
> }
>
> +static void store_rc6_residency(struct xe_gt *gt)
> +{
> + struct xe_device *xe = gt_to_xe(gt);
> + struct xe_pmu *pmu = &xe->pmu;
> +
> + store_sample(pmu, gt->info.id, __XE_SAMPLE_RC6,
> + xe_gt_idle_residency(>->gtidle));
> + pmu->sleep_last[gt->info.id] = ktime_get_raw();
> +}
> +
> +/**
> + * xe_pmu_suspend() - Save residency count before suspend
> + */
> +void xe_pmu_suspend(struct xe_gt *gt)
> +{
> + struct xe_device *xe = gt_to_xe(gt);
> + struct xe_pmu *pmu = &xe->pmu;
> +
> + if (!pmu->base.event_init)
> + return;
> +
> + spin_lock_irq(&pmu->lock);
> + store_rc6_residency(gt);
> + spin_unlock_irq(&pmu->lock);
> +}
> +
> /**
> * xe_pmu_unregister() - Remove/cleanup PMU registration
> */
> @@ -497,6 +695,24 @@ void xe_pmu_unregister(void *arg)
> free_event_attributes(pmu);
> }
>
> +static void init_rc6(struct xe_pmu *pmu)
> +{
> + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
> + struct xe_gt *gt;
> + unsigned int j;
> +
> + for_each_gt(gt, xe, j) {
> + xe_pm_runtime_get(xe);
> + u64 val = xe_gt_idle_residency(>->gtidle);
> +
> + store_sample(pmu, j, __XE_SAMPLE_RC6, val);
> + store_sample(pmu, j, __XE_SAMPLE_RC6_LAST_REPORTED,
> + val);
> + pmu->sleep_last[j] = ktime_get_raw();
> + xe_pm_runtime_put(xe);
> + }
> +}
> +
> /**
> * xe_pmu_register() - Define basic PMU properties for Xe and add event callbacks.
> *
> @@ -531,6 +747,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
> if (!pmu->events_attr_group.attrs)
> goto err_name;
>
> + init_rc6(pmu);
> +
> pmu->base.attr_groups = kmemdup(attr_groups, sizeof(attr_groups),
> GFP_KERNEL);
> if (!pmu->base.attr_groups)
> diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
> index d07e5dfdfec0..17f5a8d7d45c 100644
> --- a/drivers/gpu/drm/xe/xe_pmu.h
> +++ b/drivers/gpu/drm/xe/xe_pmu.h
> @@ -15,11 +15,13 @@ int xe_pmu_init(void);
> void xe_pmu_exit(void);
> void xe_pmu_register(struct xe_pmu *pmu);
> void xe_pmu_unregister(void *arg);
> +void xe_pmu_suspend(struct xe_gt *gt);
> #else
> static inline int xe_pmu_init(void) { return 0; }
> static inline void xe_pmu_exit(void) {}
> static inline void xe_pmu_register(struct xe_pmu *pmu) {}
> static inline void xe_pmu_unregister(void *arg) {}
> +static inline void xe_pmu_suspend(struct xe_gt *gt) {}
> #endif
>
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
> index 4da96b8fadd1..59d7718c59ce 100644
> --- a/drivers/gpu/drm/xe/xe_pmu_types.h
> +++ b/drivers/gpu/drm/xe/xe_pmu_types.h
> @@ -10,6 +10,8 @@
> #include <linux/spinlock_types.h>
>
> enum {
> + __XE_SAMPLE_RC6,
> + __XE_SAMPLE_RC6_LAST_REPORTED,
> __XE_NUM_PMU_SAMPLERS
> };
>
> @@ -23,6 +25,32 @@ enum {
> #define ___XE_PMU_OTHER(gt, x) \
> (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT))
>
> +#define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
> +
> +#define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
> +#define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
> +
> +/**
> + * Non-engine events that we need to track enabled-disabled transition and
> + * current state.
> + */
> +enum xe_pmu_tracked_events {
> + __XE_PMU_RC6_RESIDENCY_ENABLED,
> + __XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
> +};
> +
> +/**
> + * How many different events we track in the global PMU mask.
> + *
> + * It is also used to know to needed number of event reference counters.
> + */
> +#define XE_PMU_MASK_BITS \
> + (XE_PMU_MAX_GT * __XE_PMU_TRACKED_EVENT_COUNT)
> +
> +struct xe_pmu_sample {
> + u64 cur;
> +};
> +
> struct xe_pmu {
> /**
> * @cpuhp: Struct used for CPU hotplug handling.
> @@ -65,6 +93,41 @@ struct xe_pmu {
> * @pmu_attr: Memory block holding device attributes.
> */
> void *pmu_attr;
> +
> + /**
> + * @enable: Bitmask of specific enabled events.
> + *
> + * For some events we need to track their state and do some internal
> + * house keeping.
> + *
> + * Each engine event sampler type and event listed in enum
> + * i915_pmu_tracked_events gets a bit in this field.
> + *
> + * Low bits are engine samplers and other events continue from there.
> + */
> + u32 enable;
> +
> + /**
> + * @enable_count: Reference counter for enabled events.
> + *
> + * Array indices are mapped in the same way as bits in the @enable field
> + * and they are used to control sampling on/off when multiple clients
> + * are using the PMU API.
> + */
> + unsigned int enable_count[XE_PMU_MASK_BITS];
> + /**
> + * @sample: Current and previous (raw) counters for sampling events.
> + *
> + * These counters are updated from the i915 PMU sampling timer.
> + *
> + * Only global counters are held here, while the per-engine ones are in
> + * struct intel_engine_cs.
> + */
> + struct xe_pmu_sample event_sample[XE_PMU_MAX_GT][__XE_NUM_PMU_SAMPLERS];
> + /**
> + * @sleep_last: Last time GT parked for RC6 estimation.
> + */
> + ktime_t sleep_last[XE_PMU_MAX_GT];
> };
>
> #endif
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 22+ messages in thread* Re: [PATCH 2/3] drm/xe/pmu: Add GT C6 events
2024-11-08 22:32 ` Rodrigo Vivi
@ 2024-11-12 5:56 ` Riana Tauro
2024-11-12 6:52 ` Belgaumkar, Vinay
0 siblings, 1 reply; 22+ messages in thread
From: Riana Tauro @ 2024-11-12 5:56 UTC (permalink / raw)
To: Rodrigo Vivi, Vinay Belgaumkar; +Cc: intel-xe
Hi Vinay
On 11/9/2024 4:02 AM, Rodrigo Vivi wrote:
> On Fri, Nov 08, 2024 at 10:15:11AM -0800, Vinay Belgaumkar wrote:
>> Provide a PMU interface for GT C6 residency counters. The implementation
>> is ported over from the i915 PMU code. Residency is provided in units of
>> ms(like sysfs entry in - /sys/class/drm/card0/device/tile0/gt0/gtidle).
>>
>> Sample usage and output-
>>
>> $ perf list | grep rc6
>>
>> xe_0000_00_02.0/rc6-residency-gt0/ [Kernel PMU event]
>> xe_0000_00_02.0/rc6-residency-gt1/ [Kernel PMU event]
>>
>> $ perf stat -e xe_0000_00_02.0/rc6-residency-gt0/
>>
>> Performance counter stats for 'system wide':
>>
>> 1907 ms xe/rc6-residency-gt0/
>> 1.907581788 seconds time elapsed
For the sysfs, it was suggested to rename it to a generic name instead
of using rc6. The sysfs was renamed to gt-c6.
PMU also would require a similar change as it exposes per-gt.
Thanks,
Riana
>>
>> v2: Checkpatch fix, move timer code to next patch
>> v3: Fix kunit issue
>> v4: Fix for locking issue, fix review comments (Riana)
>> v5: Add xe_pmu_disable() function to reset enable_count
>>
>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_gt.c | 2 +
>> drivers/gpu/drm/xe/xe_gt_idle.c | 17 ++-
>> drivers/gpu/drm/xe/xe_gt_idle.h | 1 +
>> drivers/gpu/drm/xe/xe_pmu.c | 220 +++++++++++++++++++++++++++++-
>> drivers/gpu/drm/xe/xe_pmu.h | 2 +
>> drivers/gpu/drm/xe/xe_pmu_types.h | 63 +++++++++
>> 6 files changed, 299 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
>> index d6744be01a68..fd18bbce99da 100644
>> --- a/drivers/gpu/drm/xe/xe_gt.c
>> +++ b/drivers/gpu/drm/xe/xe_gt.c
>> @@ -877,6 +877,8 @@ int xe_gt_suspend(struct xe_gt *gt)
>>
>> xe_gt_idle_disable_pg(gt);
>>
>> + xe_pmu_suspend(gt);
>> +
>> xe_gt_disable_host_l2_vram(gt);
>>
>> xe_force_wake_put(gt_to_fw(gt), fw_ref);
>> diff --git a/drivers/gpu/drm/xe/xe_gt_idle.c b/drivers/gpu/drm/xe/xe_gt_idle.c
>> index fd80afeef56a..47b5696c7137 100644
>> --- a/drivers/gpu/drm/xe/xe_gt_idle.c
>> +++ b/drivers/gpu/drm/xe/xe_gt_idle.c
>> @@ -275,18 +275,25 @@ static ssize_t idle_status_show(struct device *dev,
>> }
>> static DEVICE_ATTR_RO(idle_status);
>>
>> +u64 xe_gt_idle_residency(struct xe_gt_idle *gtidle)
>> +{
>> + struct xe_guc_pc *pc = gtidle_to_pc(gtidle);
>> +
>> + return get_residency_ms(gtidle, gtidle->idle_residency(pc));
>> +}
>> +
>> static ssize_t idle_residency_ms_show(struct device *dev,
>> struct device_attribute *attr, char *buff)
>> {
>> struct xe_gt_idle *gtidle = dev_to_gtidle(dev);
>> - struct xe_guc_pc *pc = gtidle_to_pc(gtidle);
>> + struct xe_gt *gt = gtidle_to_gt(gtidle);
>> u64 residency;
>>
>> - xe_pm_runtime_get(pc_to_xe(pc));
>> - residency = gtidle->idle_residency(pc);
>> - xe_pm_runtime_put(pc_to_xe(pc));
>> + xe_pm_runtime_get(gt_to_xe(gt));
>> + residency = xe_gt_idle_residency(gtidle);
>> + xe_pm_runtime_put(gt_to_xe(gt));
>>
>> - return sysfs_emit(buff, "%llu\n", get_residency_ms(gtidle, residency));
>> + return sysfs_emit(buff, "%llu\n", residency);
>> }
>> static DEVICE_ATTR_RO(idle_residency_ms);
>>
>> diff --git a/drivers/gpu/drm/xe/xe_gt_idle.h b/drivers/gpu/drm/xe/xe_gt_idle.h
>> index 4455a6501cb0..795a02c9d89c 100644
>> --- a/drivers/gpu/drm/xe/xe_gt_idle.h
>> +++ b/drivers/gpu/drm/xe/xe_gt_idle.h
>> @@ -17,5 +17,6 @@ void xe_gt_idle_disable_c6(struct xe_gt *gt);
>> void xe_gt_idle_enable_pg(struct xe_gt *gt);
>> void xe_gt_idle_disable_pg(struct xe_gt *gt);
>> int xe_gt_idle_pg_print(struct xe_gt *gt, struct drm_printer *p);
>> +u64 xe_gt_idle_residency(struct xe_gt_idle *gtidle);
>>
>> #endif /* _XE_GT_IDLE_H_ */
>> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
>> index 7ce66c022e27..80d78628006e 100644
>> --- a/drivers/gpu/drm/xe/xe_pmu.c
>> +++ b/drivers/gpu/drm/xe/xe_pmu.c
>> @@ -11,8 +11,11 @@
>> #include "xe_device.h"
>> #include "xe_force_wake.h"
>> #include "xe_gt_clock.h"
>> +#include "xe_gt_idle.h"
>> +#include "xe_guc_pc.h"
>> #include "xe_mmio.h"
>> #include "xe_macros.h"
>> +#include "xe_module.h"
>> #include "xe_pm.h"
>>
>> /**
>> @@ -22,6 +25,8 @@
>> static cpumask_t xe_pmu_cpumask;
>> static unsigned int xe_pmu_target_cpu = -1;
>>
>> +#define FREQUENCY 200
>> +
>> /**
>> * DOC: Xe PMU (Performance Monitoring Unit)
>> *
>> @@ -31,7 +36,9 @@ static unsigned int xe_pmu_target_cpu = -1;
>> * Example commands to list/record supported perf events-
>> *
>> * $ ls -ld /sys/bus/event_source/devices/xe_*
>> - * $ ls /sys/bus/event_source/devices/xe_0000_00_02.0/events/
>> + * $ lrwxrwxrwx 1 root root 0 Oct 25 00:19 /sys/bus/event_source/devices/xe_0000_03_00.0 ->
>> + * ../../../devices/xe_0000_03_00.0
>> + * $ ls /sys/bus/event_source/devices/xe_0000_03_00.0/events/
>> *
>> * You can also use the perf tool to grep for a certain event-
>> * $ perf list | grep rc6
>> @@ -39,8 +46,30 @@ static unsigned int xe_pmu_target_cpu = -1;
>> * To list a specific event at regular intervals-
>> * $ perf stat -e <event_name> -I <interval>
>> *
>> + * For RC6, following command will give GT residency per second-
>> + * $ perf stat -e xe_0000_03_00.0/rc6-residency-gt0/ -I 1000
>> + * # time counts unit events
>> + * 1.001153792 1002 ms xe_0000_03_00.0/rc6-residency-gt0/
>> + * 2.008338100 1007 ms xe_0000_03_00.0/rc6-residency-gt0/
>> + * 3.009887054 1002 ms xe_0000_03_00.0/rc6-residency-gt0/
>> + * 4.011383318 1001 ms xe_0000_03_00.0/rc6-residency-gt0/
>> + *
>> + * To verify this matches with sysfs values of rc6, you can run following command-
>> + * $ for i in {1..10} ; do cat /sys/class/drm/card0/device/tile0/gt0/gtidle/idle_residency_ms;
>> + * sleep 1; done
>> + * 2348877
>> + * 2349901
>> + * 2350917
>> + * 2352945
>> + *
>> + * Each value is roughly a 1000ms increment here as well. This is expected GT residency when idle.
>> */
>>
>> +static struct xe_pmu *event_to_pmu(struct perf_event *event)
>> +{
>> + return container_of(event->pmu, struct xe_pmu, base);
>> +}
>> +
>> static unsigned int config_gt_id(const u64 config)
>> {
>> return config >> __XE_PMU_GT_SHIFT;
>> @@ -51,6 +80,35 @@ static u64 config_counter(const u64 config)
>> return config & ~(~0ULL << __XE_PMU_GT_SHIFT);
>> }
>>
>> +static unsigned int other_bit(const u64 config)
>> +{
>> + unsigned int val;
>> +
>> + switch (config_counter(config)) {
>> + case XE_PMU_RC6_RESIDENCY:
>> + val = __XE_PMU_RC6_RESIDENCY_ENABLED;
>> + break;
>> + default:
>> + /*
>> + * Events that do not require sampling, or tracking state
>> + * transitions between enabled and disabled can be ignored.
>> + */
>> + return -1;
>> + }
>> +
>> + return config_gt_id(config) * __XE_PMU_TRACKED_EVENT_COUNT + val;
>> +}
>> +
>> +static unsigned int config_bit(const u64 config)
>> +{
>> + return other_bit(config);
>> +}
>> +
>> +static unsigned int event_bit(struct perf_event *event)
>> +{
>> + return config_bit(event->attr.config);
>> +}
>> +
>> static void xe_pmu_event_destroy(struct perf_event *event)
>> {
>> struct xe_device *xe =
>> @@ -70,6 +128,10 @@ config_status(struct xe_device *xe, u64 config)
>> return -ENOENT;
>>
>> switch (config_counter(config)) {
>> + case XE_PMU_RC6_RESIDENCY:
>> + if (xe->info.skip_guc_pc)
>> + return -ENODEV;
>> + break;
>> default:
>> return -ENOENT;
>> }
>> @@ -116,6 +178,63 @@ static int xe_pmu_event_init(struct perf_event *event)
>> return 0;
>> }
>>
>> +static inline s64 ktime_since_raw(const ktime_t kt)
>> +{
>> + return ktime_to_ms(ktime_sub(ktime_get_raw(), kt));
>> +}
>> +
>> +static u64 read_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample)
>> +{
>> + return pmu->event_sample[gt_id][sample].cur;
>> +}
>> +
>> +static void
>> +store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
>> +{
>> + pmu->event_sample[gt_id][sample].cur = val;
>> +}
>> +
>> +static u64 get_rc6(struct xe_gt *gt)
>> +{
>> + struct xe_device *xe = gt_to_xe(gt);
>> + const unsigned int gt_id = gt->info.id;
>> + struct xe_pmu *pmu = &xe->pmu;
>> + bool device_awake;
>> + unsigned long flags;
>> + u64 val;
>> +
>> + device_awake = xe_pm_runtime_get_if_active(xe);
>> + if (device_awake) {
>> + val = xe_gt_idle_residency(>->gtidle);
>> + xe_pm_runtime_put(xe);
>> + }
>> +
>> + spin_lock_irqsave(&pmu->lock, flags);
>> +
>> + if (device_awake) {
>> + store_sample(pmu, gt_id, __XE_SAMPLE_RC6, val);
>> + } else {
>> + /*
>> + * We think we are runtime suspended.
>> + *
>> + * Report the delta from when the device was suspended to now,
>> + * on top of the last known real value, as the approximated RC6
>> + * counter value.
>> + */
>> + val = ktime_since_raw(pmu->sleep_last[gt_id]);
>> + val += read_sample(pmu, gt_id, __XE_SAMPLE_RC6);
>> + }
>> +
>> + if (val < read_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED))
>> + val = read_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED);
>> + else
>> + store_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED, val);
>> +
>> + spin_unlock_irqrestore(&pmu->lock, flags);
>> +
>> + return val;
>> +}
>> +
>> static u64 __xe_pmu_event_read(struct perf_event *event)
>> {
>> struct xe_device *xe =
>> @@ -126,6 +245,9 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
>> u64 val = 0;
>>
>> switch (config_counter(config)) {
>> + case XE_PMU_RC6_RESIDENCY:
>> + val = get_rc6(gt);
>> + break;
>> default:
>> drm_warn(>->tile->xe->drm, "unknown pmu event\n");
>> }
>> @@ -157,6 +279,28 @@ static void xe_pmu_event_read(struct perf_event *event)
>>
>> static void xe_pmu_enable(struct perf_event *event)
>> {
>> + struct xe_pmu *pmu = event_to_pmu(event);
>> + const unsigned int bit = event_bit(event);
>> + unsigned long flags;
>> +
>> + if (bit == -1)
>> + goto update;
>> +
>> + spin_lock_irqsave(&pmu->lock, flags);
>> +
>> + /*
>> + * Update the bitmask of enabled events and increment
>> + * the event reference counter.
>> + */
>> + BUILD_BUG_ON(ARRAY_SIZE(pmu->enable_count) != XE_PMU_MASK_BITS);
>> + XE_WARN_ON(bit >= ARRAY_SIZE(pmu->enable_count));
>> + XE_WARN_ON(pmu->enable_count[bit] == ~0);
>> +
>> + pmu->enable |= BIT(bit);
>> + pmu->enable_count[bit]++;
>> +
>> + spin_unlock_irqrestore(&pmu->lock, flags);
>> +update:
>> /*
>> * Store the current counter value so we can report the correct delta
>> * for all listeners. Even when the event was already enabled and has
>> @@ -165,6 +309,31 @@ static void xe_pmu_enable(struct perf_event *event)
>> local64_set(&event->hw.prev_count, __xe_pmu_event_read(event));
>> }
>>
>> +static void xe_pmu_disable(struct perf_event *event)
>> +{
>> + struct xe_device *xe =
>> + container_of(event->pmu, typeof(*xe), pmu.base);
>> + struct xe_pmu *pmu = &xe->pmu;
>> + const unsigned int bit = event_bit(event);
>> + unsigned long flags;
>> +
>> + if (bit == -1)
>> + return;
>> +
>> + spin_lock_irqsave(&pmu->lock, flags);
>> +
>> + XE_WARN_ON(bit >= ARRAY_SIZE(pmu->enable_count));
>> + XE_WARN_ON(pmu->enable_count[bit] == 0);
>> + /*
>> + * Decrement the reference count and clear the enabled
>> + * bitmask when the last listener on an event goes away.
>> + */
>> + if (--pmu->enable_count[bit] == 0)
>> + pmu->enable &= ~BIT(bit);
>> +
>> + spin_unlock_irqrestore(&pmu->lock, flags);
>> +}
>> +
>> static void xe_pmu_event_start(struct perf_event *event, int flags)
>> {
>> struct xe_device *xe =
>> @@ -190,6 +359,8 @@ static void xe_pmu_event_stop(struct perf_event *event, int flags)
>> if (flags & PERF_EF_UPDATE)
>> xe_pmu_event_read(event);
>>
>> + xe_pmu_disable(event);
>> +
>> out:
>> event->hw.state = PERF_HES_STOPPED;
>> }
>> @@ -291,6 +462,7 @@ create_event_attributes(struct xe_pmu *pmu)
>> const char *name;
>> const char *unit;
>> } events[] = {
>> + __event(0, "rc6-residency", "ms"),
>> };
>>
>> struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
>> @@ -477,6 +649,32 @@ static void xe_pmu_unregister_cpuhp_state(struct xe_pmu *pmu)
>> cpuhp_state_remove_instance(cpuhp_state, &pmu->cpuhp.node);
>> }
>>
>> +static void store_rc6_residency(struct xe_gt *gt)
>> +{
>> + struct xe_device *xe = gt_to_xe(gt);
>> + struct xe_pmu *pmu = &xe->pmu;
>> +
>> + store_sample(pmu, gt->info.id, __XE_SAMPLE_RC6,
>> + xe_gt_idle_residency(>->gtidle));
>> + pmu->sleep_last[gt->info.id] = ktime_get_raw();
>> +}
>> +
>> +/**
>> + * xe_pmu_suspend() - Save residency count before suspend
>> + */
>> +void xe_pmu_suspend(struct xe_gt *gt)
>> +{
>> + struct xe_device *xe = gt_to_xe(gt);
>> + struct xe_pmu *pmu = &xe->pmu;
>> +
>> + if (!pmu->base.event_init)
>> + return;
>> +
>> + spin_lock_irq(&pmu->lock);
>> + store_rc6_residency(gt);
>> + spin_unlock_irq(&pmu->lock);
>> +}
>> +
>> /**
>> * xe_pmu_unregister() - Remove/cleanup PMU registration
>> */
>> @@ -497,6 +695,24 @@ void xe_pmu_unregister(void *arg)
>> free_event_attributes(pmu);
>> }
>>
>> +static void init_rc6(struct xe_pmu *pmu)
>> +{
>> + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
>> + struct xe_gt *gt;
>> + unsigned int j;
>> +
>> + for_each_gt(gt, xe, j) {
>> + xe_pm_runtime_get(xe);
>> + u64 val = xe_gt_idle_residency(>->gtidle);
>> +
>> + store_sample(pmu, j, __XE_SAMPLE_RC6, val);
>> + store_sample(pmu, j, __XE_SAMPLE_RC6_LAST_REPORTED,
>> + val);
>> + pmu->sleep_last[j] = ktime_get_raw();
>> + xe_pm_runtime_put(xe);
>> + }
>> +}
>> +
>> /**
>> * xe_pmu_register() - Define basic PMU properties for Xe and add event callbacks.
>> *
>> @@ -531,6 +747,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
>> if (!pmu->events_attr_group.attrs)
>> goto err_name;
>>
>> + init_rc6(pmu);
>> +
>> pmu->base.attr_groups = kmemdup(attr_groups, sizeof(attr_groups),
>> GFP_KERNEL);
>> if (!pmu->base.attr_groups)
>> diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
>> index d07e5dfdfec0..17f5a8d7d45c 100644
>> --- a/drivers/gpu/drm/xe/xe_pmu.h
>> +++ b/drivers/gpu/drm/xe/xe_pmu.h
>> @@ -15,11 +15,13 @@ int xe_pmu_init(void);
>> void xe_pmu_exit(void);
>> void xe_pmu_register(struct xe_pmu *pmu);
>> void xe_pmu_unregister(void *arg);
>> +void xe_pmu_suspend(struct xe_gt *gt);
>> #else
>> static inline int xe_pmu_init(void) { return 0; }
>> static inline void xe_pmu_exit(void) {}
>> static inline void xe_pmu_register(struct xe_pmu *pmu) {}
>> static inline void xe_pmu_unregister(void *arg) {}
>> +static inline void xe_pmu_suspend(struct xe_gt *gt) {}
>> #endif
>>
>> #endif
>> diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
>> index 4da96b8fadd1..59d7718c59ce 100644
>> --- a/drivers/gpu/drm/xe/xe_pmu_types.h
>> +++ b/drivers/gpu/drm/xe/xe_pmu_types.h
>> @@ -10,6 +10,8 @@
>> #include <linux/spinlock_types.h>
>>
>> enum {
>> + __XE_SAMPLE_RC6,
>> + __XE_SAMPLE_RC6_LAST_REPORTED,
>> __XE_NUM_PMU_SAMPLERS
>> };
>>
>> @@ -23,6 +25,32 @@ enum {
>> #define ___XE_PMU_OTHER(gt, x) \
>> (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT))
>>
>> +#define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
>> +
>> +#define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
>> +#define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
>> +
>> +/**
>> + * Non-engine events that we need to track enabled-disabled transition and
>> + * current state.
>> + */
>> +enum xe_pmu_tracked_events {
>> + __XE_PMU_RC6_RESIDENCY_ENABLED,
>> + __XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
>> +};
>> +
>> +/**
>> + * How many different events we track in the global PMU mask.
>> + *
>> + * It is also used to know to needed number of event reference counters.
>> + */
>> +#define XE_PMU_MASK_BITS \
>> + (XE_PMU_MAX_GT * __XE_PMU_TRACKED_EVENT_COUNT)
>> +
>> +struct xe_pmu_sample {
>> + u64 cur;
>> +};
>> +
>> struct xe_pmu {
>> /**
>> * @cpuhp: Struct used for CPU hotplug handling.
>> @@ -65,6 +93,41 @@ struct xe_pmu {
>> * @pmu_attr: Memory block holding device attributes.
>> */
>> void *pmu_attr;
>> +
>> + /**
>> + * @enable: Bitmask of specific enabled events.
>> + *
>> + * For some events we need to track their state and do some internal
>> + * house keeping.
>> + *
>> + * Each engine event sampler type and event listed in enum
>> + * i915_pmu_tracked_events gets a bit in this field.
>> + *
>> + * Low bits are engine samplers and other events continue from there.
>> + */
>> + u32 enable;
>> +
>> + /**
>> + * @enable_count: Reference counter for enabled events.
>> + *
>> + * Array indices are mapped in the same way as bits in the @enable field
>> + * and they are used to control sampling on/off when multiple clients
>> + * are using the PMU API.
>> + */
>> + unsigned int enable_count[XE_PMU_MASK_BITS];
>> + /**
>> + * @sample: Current and previous (raw) counters for sampling events.
>> + *
>> + * These counters are updated from the i915 PMU sampling timer.
>> + *
>> + * Only global counters are held here, while the per-engine ones are in
>> + * struct intel_engine_cs.
>> + */
>> + struct xe_pmu_sample event_sample[XE_PMU_MAX_GT][__XE_NUM_PMU_SAMPLERS];
>> + /**
>> + * @sleep_last: Last time GT parked for RC6 estimation.
>> + */
>> + ktime_t sleep_last[XE_PMU_MAX_GT];
>> };
>>
>> #endif
>> --
>> 2.38.1
>>
^ permalink raw reply [flat|nested] 22+ messages in thread* Re: [PATCH 2/3] drm/xe/pmu: Add GT C6 events
2024-11-12 5:56 ` Riana Tauro
@ 2024-11-12 6:52 ` Belgaumkar, Vinay
0 siblings, 0 replies; 22+ messages in thread
From: Belgaumkar, Vinay @ 2024-11-12 6:52 UTC (permalink / raw)
To: Riana Tauro, Rodrigo Vivi; +Cc: intel-xe
On 11/11/2024 9:56 PM, Riana Tauro wrote:
> Hi Vinay
>
> On 11/9/2024 4:02 AM, Rodrigo Vivi wrote:
>> On Fri, Nov 08, 2024 at 10:15:11AM -0800, Vinay Belgaumkar wrote:
>>> Provide a PMU interface for GT C6 residency counters. The
>>> implementation
>>> is ported over from the i915 PMU code. Residency is provided in
>>> units of
>>> ms(like sysfs entry in - /sys/class/drm/card0/device/tile0/gt0/gtidle).
>>>
>>> Sample usage and output-
>>>
>>> $ perf list | grep rc6
>>>
>>> xe_0000_00_02.0/rc6-residency-gt0/ [Kernel PMU
>>> event]
>>> xe_0000_00_02.0/rc6-residency-gt1/ [Kernel PMU
>>> event]
>>>
>>> $ perf stat -e xe_0000_00_02.0/rc6-residency-gt0/
>>>
>>> Performance counter stats for 'system wide':
>>>
>>> 1907 ms xe/rc6-residency-gt0/
>>> 1.907581788 seconds time elapsed
> For the sysfs, it was suggested to rename it to a generic name instead
> of using rc6. The sysfs was renamed to gt-c6.
>
> PMU also would require a similar change as it exposes per-gt.
Ok, can change it to c6-residency-gt<n>.
Thanks,
Vinay.
>
> Thanks,
> Riana
>>>
>>> v2: Checkpatch fix, move timer code to next patch
>>> v3: Fix kunit issue
>>> v4: Fix for locking issue, fix review comments (Riana)
>>> v5: Add xe_pmu_disable() function to reset enable_count
>>>
>>
>> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>
>>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>> Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
>>> ---
>>> drivers/gpu/drm/xe/xe_gt.c | 2 +
>>> drivers/gpu/drm/xe/xe_gt_idle.c | 17 ++-
>>> drivers/gpu/drm/xe/xe_gt_idle.h | 1 +
>>> drivers/gpu/drm/xe/xe_pmu.c | 220
>>> +++++++++++++++++++++++++++++-
>>> drivers/gpu/drm/xe/xe_pmu.h | 2 +
>>> drivers/gpu/drm/xe/xe_pmu_types.h | 63 +++++++++
>>> 6 files changed, 299 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
>>> index d6744be01a68..fd18bbce99da 100644
>>> --- a/drivers/gpu/drm/xe/xe_gt.c
>>> +++ b/drivers/gpu/drm/xe/xe_gt.c
>>> @@ -877,6 +877,8 @@ int xe_gt_suspend(struct xe_gt *gt)
>>> xe_gt_idle_disable_pg(gt);
>>> + xe_pmu_suspend(gt);
>>> +
>>> xe_gt_disable_host_l2_vram(gt);
>>> xe_force_wake_put(gt_to_fw(gt), fw_ref);
>>> diff --git a/drivers/gpu/drm/xe/xe_gt_idle.c
>>> b/drivers/gpu/drm/xe/xe_gt_idle.c
>>> index fd80afeef56a..47b5696c7137 100644
>>> --- a/drivers/gpu/drm/xe/xe_gt_idle.c
>>> +++ b/drivers/gpu/drm/xe/xe_gt_idle.c
>>> @@ -275,18 +275,25 @@ static ssize_t idle_status_show(struct device
>>> *dev,
>>> }
>>> static DEVICE_ATTR_RO(idle_status);
>>> +u64 xe_gt_idle_residency(struct xe_gt_idle *gtidle)
>>> +{
>>> + struct xe_guc_pc *pc = gtidle_to_pc(gtidle);
>>> +
>>> + return get_residency_ms(gtidle, gtidle->idle_residency(pc));
>>> +}
>>> +
>>> static ssize_t idle_residency_ms_show(struct device *dev,
>>> struct device_attribute *attr, char *buff)
>>> {
>>> struct xe_gt_idle *gtidle = dev_to_gtidle(dev);
>>> - struct xe_guc_pc *pc = gtidle_to_pc(gtidle);
>>> + struct xe_gt *gt = gtidle_to_gt(gtidle);
>>> u64 residency;
>>> - xe_pm_runtime_get(pc_to_xe(pc));
>>> - residency = gtidle->idle_residency(pc);
>>> - xe_pm_runtime_put(pc_to_xe(pc));
>>> + xe_pm_runtime_get(gt_to_xe(gt));
>>> + residency = xe_gt_idle_residency(gtidle);
>>> + xe_pm_runtime_put(gt_to_xe(gt));
>>> - return sysfs_emit(buff, "%llu\n", get_residency_ms(gtidle,
>>> residency));
>>> + return sysfs_emit(buff, "%llu\n", residency);
>>> }
>>> static DEVICE_ATTR_RO(idle_residency_ms);
>>> diff --git a/drivers/gpu/drm/xe/xe_gt_idle.h
>>> b/drivers/gpu/drm/xe/xe_gt_idle.h
>>> index 4455a6501cb0..795a02c9d89c 100644
>>> --- a/drivers/gpu/drm/xe/xe_gt_idle.h
>>> +++ b/drivers/gpu/drm/xe/xe_gt_idle.h
>>> @@ -17,5 +17,6 @@ void xe_gt_idle_disable_c6(struct xe_gt *gt);
>>> void xe_gt_idle_enable_pg(struct xe_gt *gt);
>>> void xe_gt_idle_disable_pg(struct xe_gt *gt);
>>> int xe_gt_idle_pg_print(struct xe_gt *gt, struct drm_printer *p);
>>> +u64 xe_gt_idle_residency(struct xe_gt_idle *gtidle);
>>> #endif /* _XE_GT_IDLE_H_ */
>>> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
>>> index 7ce66c022e27..80d78628006e 100644
>>> --- a/drivers/gpu/drm/xe/xe_pmu.c
>>> +++ b/drivers/gpu/drm/xe/xe_pmu.c
>>> @@ -11,8 +11,11 @@
>>> #include "xe_device.h"
>>> #include "xe_force_wake.h"
>>> #include "xe_gt_clock.h"
>>> +#include "xe_gt_idle.h"
>>> +#include "xe_guc_pc.h"
>>> #include "xe_mmio.h"
>>> #include "xe_macros.h"
>>> +#include "xe_module.h"
>>> #include "xe_pm.h"
>>> /**
>>> @@ -22,6 +25,8 @@
>>> static cpumask_t xe_pmu_cpumask;
>>> static unsigned int xe_pmu_target_cpu = -1;
>>> +#define FREQUENCY 200
>>> +
>>> /**
>>> * DOC: Xe PMU (Performance Monitoring Unit)
>>> *
>>> @@ -31,7 +36,9 @@ static unsigned int xe_pmu_target_cpu = -1;
>>> * Example commands to list/record supported perf events-
>>> *
>>> * $ ls -ld /sys/bus/event_source/devices/xe_*
>>> - * $ ls /sys/bus/event_source/devices/xe_0000_00_02.0/events/
>>> + * $ lrwxrwxrwx 1 root root 0 Oct 25 00:19
>>> /sys/bus/event_source/devices/xe_0000_03_00.0 ->
>>> + * ../../../devices/xe_0000_03_00.0
>>> + * $ ls /sys/bus/event_source/devices/xe_0000_03_00.0/events/
>>> *
>>> * You can also use the perf tool to grep for a certain event-
>>> * $ perf list | grep rc6
>>> @@ -39,8 +46,30 @@ static unsigned int xe_pmu_target_cpu = -1;
>>> * To list a specific event at regular intervals-
>>> * $ perf stat -e <event_name> -I <interval>
>>> *
>>> + * For RC6, following command will give GT residency per second-
>>> + * $ perf stat -e xe_0000_03_00.0/rc6-residency-gt0/ -I 1000
>>> + * # time counts unit events
>>> + * 1.001153792 1002 ms
>>> xe_0000_03_00.0/rc6-residency-gt0/
>>> + * 2.008338100 1007 ms
>>> xe_0000_03_00.0/rc6-residency-gt0/
>>> + * 3.009887054 1002 ms
>>> xe_0000_03_00.0/rc6-residency-gt0/
>>> + * 4.011383318 1001 ms
>>> xe_0000_03_00.0/rc6-residency-gt0/
>>> + *
>>> + * To verify this matches with sysfs values of rc6, you can run
>>> following command-
>>> + * $ for i in {1..10} ; do cat
>>> /sys/class/drm/card0/device/tile0/gt0/gtidle/idle_residency_ms;
>>> + * sleep 1; done
>>> + * 2348877
>>> + * 2349901
>>> + * 2350917
>>> + * 2352945
>>> + *
>>> + * Each value is roughly a 1000ms increment here as well. This is
>>> expected GT residency when idle.
>>> */
>>> +static struct xe_pmu *event_to_pmu(struct perf_event *event)
>>> +{
>>> + return container_of(event->pmu, struct xe_pmu, base);
>>> +}
>>> +
>>> static unsigned int config_gt_id(const u64 config)
>>> {
>>> return config >> __XE_PMU_GT_SHIFT;
>>> @@ -51,6 +80,35 @@ static u64 config_counter(const u64 config)
>>> return config & ~(~0ULL << __XE_PMU_GT_SHIFT);
>>> }
>>> +static unsigned int other_bit(const u64 config)
>>> +{
>>> + unsigned int val;
>>> +
>>> + switch (config_counter(config)) {
>>> + case XE_PMU_RC6_RESIDENCY:
>>> + val = __XE_PMU_RC6_RESIDENCY_ENABLED;
>>> + break;
>>> + default:
>>> + /*
>>> + * Events that do not require sampling, or tracking state
>>> + * transitions between enabled and disabled can be ignored.
>>> + */
>>> + return -1;
>>> + }
>>> +
>>> + return config_gt_id(config) * __XE_PMU_TRACKED_EVENT_COUNT + val;
>>> +}
>>> +
>>> +static unsigned int config_bit(const u64 config)
>>> +{
>>> + return other_bit(config);
>>> +}
>>> +
>>> +static unsigned int event_bit(struct perf_event *event)
>>> +{
>>> + return config_bit(event->attr.config);
>>> +}
>>> +
>>> static void xe_pmu_event_destroy(struct perf_event *event)
>>> {
>>> struct xe_device *xe =
>>> @@ -70,6 +128,10 @@ config_status(struct xe_device *xe, u64 config)
>>> return -ENOENT;
>>> switch (config_counter(config)) {
>>> + case XE_PMU_RC6_RESIDENCY:
>>> + if (xe->info.skip_guc_pc)
>>> + return -ENODEV;
>>> + break;
>>> default:
>>> return -ENOENT;
>>> }
>>> @@ -116,6 +178,63 @@ static int xe_pmu_event_init(struct perf_event
>>> *event)
>>> return 0;
>>> }
>>> +static inline s64 ktime_since_raw(const ktime_t kt)
>>> +{
>>> + return ktime_to_ms(ktime_sub(ktime_get_raw(), kt));
>>> +}
>>> +
>>> +static u64 read_sample(struct xe_pmu *pmu, unsigned int gt_id, int
>>> sample)
>>> +{
>>> + return pmu->event_sample[gt_id][sample].cur;
>>> +}
>>> +
>>> +static void
>>> +store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample,
>>> u64 val)
>>> +{
>>> + pmu->event_sample[gt_id][sample].cur = val;
>>> +}
>>> +
>>> +static u64 get_rc6(struct xe_gt *gt)
>>> +{
>>> + struct xe_device *xe = gt_to_xe(gt);
>>> + const unsigned int gt_id = gt->info.id;
>>> + struct xe_pmu *pmu = &xe->pmu;
>>> + bool device_awake;
>>> + unsigned long flags;
>>> + u64 val;
>>> +
>>> + device_awake = xe_pm_runtime_get_if_active(xe);
>>> + if (device_awake) {
>>> + val = xe_gt_idle_residency(>->gtidle);
>>> + xe_pm_runtime_put(xe);
>>> + }
>>> +
>>> + spin_lock_irqsave(&pmu->lock, flags);
>>> +
>>> + if (device_awake) {
>>> + store_sample(pmu, gt_id, __XE_SAMPLE_RC6, val);
>>> + } else {
>>> + /*
>>> + * We think we are runtime suspended.
>>> + *
>>> + * Report the delta from when the device was suspended to now,
>>> + * on top of the last known real value, as the approximated
>>> RC6
>>> + * counter value.
>>> + */
>>> + val = ktime_since_raw(pmu->sleep_last[gt_id]);
>>> + val += read_sample(pmu, gt_id, __XE_SAMPLE_RC6);
>>> + }
>>> +
>>> + if (val < read_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED))
>>> + val = read_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED);
>>> + else
>>> + store_sample(pmu, gt_id, __XE_SAMPLE_RC6_LAST_REPORTED, val);
>>> +
>>> + spin_unlock_irqrestore(&pmu->lock, flags);
>>> +
>>> + return val;
>>> +}
>>> +
>>> static u64 __xe_pmu_event_read(struct perf_event *event)
>>> {
>>> struct xe_device *xe =
>>> @@ -126,6 +245,9 @@ static u64 __xe_pmu_event_read(struct perf_event
>>> *event)
>>> u64 val = 0;
>>> switch (config_counter(config)) {
>>> + case XE_PMU_RC6_RESIDENCY:
>>> + val = get_rc6(gt);
>>> + break;
>>> default:
>>> drm_warn(>->tile->xe->drm, "unknown pmu event\n");
>>> }
>>> @@ -157,6 +279,28 @@ static void xe_pmu_event_read(struct perf_event
>>> *event)
>>> static void xe_pmu_enable(struct perf_event *event)
>>> {
>>> + struct xe_pmu *pmu = event_to_pmu(event);
>>> + const unsigned int bit = event_bit(event);
>>> + unsigned long flags;
>>> +
>>> + if (bit == -1)
>>> + goto update;
>>> +
>>> + spin_lock_irqsave(&pmu->lock, flags);
>>> +
>>> + /*
>>> + * Update the bitmask of enabled events and increment
>>> + * the event reference counter.
>>> + */
>>> + BUILD_BUG_ON(ARRAY_SIZE(pmu->enable_count) != XE_PMU_MASK_BITS);
>>> + XE_WARN_ON(bit >= ARRAY_SIZE(pmu->enable_count));
>>> + XE_WARN_ON(pmu->enable_count[bit] == ~0);
>>> +
>>> + pmu->enable |= BIT(bit);
>>> + pmu->enable_count[bit]++;
>>> +
>>> + spin_unlock_irqrestore(&pmu->lock, flags);
>>> +update:
>>> /*
>>> * Store the current counter value so we can report the
>>> correct delta
>>> * for all listeners. Even when the event was already enabled
>>> and has
>>> @@ -165,6 +309,31 @@ static void xe_pmu_enable(struct perf_event
>>> *event)
>>> local64_set(&event->hw.prev_count, __xe_pmu_event_read(event));
>>> }
>>> +static void xe_pmu_disable(struct perf_event *event)
>>> +{
>>> + struct xe_device *xe =
>>> + container_of(event->pmu, typeof(*xe), pmu.base);
>>> + struct xe_pmu *pmu = &xe->pmu;
>>> + const unsigned int bit = event_bit(event);
>>> + unsigned long flags;
>>> +
>>> + if (bit == -1)
>>> + return;
>>> +
>>> + spin_lock_irqsave(&pmu->lock, flags);
>>> +
>>> + XE_WARN_ON(bit >= ARRAY_SIZE(pmu->enable_count));
>>> + XE_WARN_ON(pmu->enable_count[bit] == 0);
>>> + /*
>>> + * Decrement the reference count and clear the enabled
>>> + * bitmask when the last listener on an event goes away.
>>> + */
>>> + if (--pmu->enable_count[bit] == 0)
>>> + pmu->enable &= ~BIT(bit);
>>> +
>>> + spin_unlock_irqrestore(&pmu->lock, flags);
>>> +}
>>> +
>>> static void xe_pmu_event_start(struct perf_event *event, int flags)
>>> {
>>> struct xe_device *xe =
>>> @@ -190,6 +359,8 @@ static void xe_pmu_event_stop(struct perf_event
>>> *event, int flags)
>>> if (flags & PERF_EF_UPDATE)
>>> xe_pmu_event_read(event);
>>> + xe_pmu_disable(event);
>>> +
>>> out:
>>> event->hw.state = PERF_HES_STOPPED;
>>> }
>>> @@ -291,6 +462,7 @@ create_event_attributes(struct xe_pmu *pmu)
>>> const char *name;
>>> const char *unit;
>>> } events[] = {
>>> + __event(0, "rc6-residency", "ms"),
>>> };
>>> struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
>>> @@ -477,6 +649,32 @@ static void
>>> xe_pmu_unregister_cpuhp_state(struct xe_pmu *pmu)
>>> cpuhp_state_remove_instance(cpuhp_state, &pmu->cpuhp.node);
>>> }
>>> +static void store_rc6_residency(struct xe_gt *gt)
>>> +{
>>> + struct xe_device *xe = gt_to_xe(gt);
>>> + struct xe_pmu *pmu = &xe->pmu;
>>> +
>>> + store_sample(pmu, gt->info.id, __XE_SAMPLE_RC6,
>>> + xe_gt_idle_residency(>->gtidle));
>>> + pmu->sleep_last[gt->info.id] = ktime_get_raw();
>>> +}
>>> +
>>> +/**
>>> + * xe_pmu_suspend() - Save residency count before suspend
>>> + */
>>> +void xe_pmu_suspend(struct xe_gt *gt)
>>> +{
>>> + struct xe_device *xe = gt_to_xe(gt);
>>> + struct xe_pmu *pmu = &xe->pmu;
>>> +
>>> + if (!pmu->base.event_init)
>>> + return;
>>> +
>>> + spin_lock_irq(&pmu->lock);
>>> + store_rc6_residency(gt);
>>> + spin_unlock_irq(&pmu->lock);
>>> +}
>>> +
>>> /**
>>> * xe_pmu_unregister() - Remove/cleanup PMU registration
>>> */
>>> @@ -497,6 +695,24 @@ void xe_pmu_unregister(void *arg)
>>> free_event_attributes(pmu);
>>> }
>>> +static void init_rc6(struct xe_pmu *pmu)
>>> +{
>>> + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
>>> + struct xe_gt *gt;
>>> + unsigned int j;
>>> +
>>> + for_each_gt(gt, xe, j) {
>>> + xe_pm_runtime_get(xe);
>>> + u64 val = xe_gt_idle_residency(>->gtidle);
>>> +
>>> + store_sample(pmu, j, __XE_SAMPLE_RC6, val);
>>> + store_sample(pmu, j, __XE_SAMPLE_RC6_LAST_REPORTED,
>>> + val);
>>> + pmu->sleep_last[j] = ktime_get_raw();
>>> + xe_pm_runtime_put(xe);
>>> + }
>>> +}
>>> +
>>> /**
>>> * xe_pmu_register() - Define basic PMU properties for Xe and add
>>> event callbacks.
>>> *
>>> @@ -531,6 +747,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
>>> if (!pmu->events_attr_group.attrs)
>>> goto err_name;
>>> + init_rc6(pmu);
>>> +
>>> pmu->base.attr_groups = kmemdup(attr_groups, sizeof(attr_groups),
>>> GFP_KERNEL);
>>> if (!pmu->base.attr_groups)
>>> diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
>>> index d07e5dfdfec0..17f5a8d7d45c 100644
>>> --- a/drivers/gpu/drm/xe/xe_pmu.h
>>> +++ b/drivers/gpu/drm/xe/xe_pmu.h
>>> @@ -15,11 +15,13 @@ int xe_pmu_init(void);
>>> void xe_pmu_exit(void);
>>> void xe_pmu_register(struct xe_pmu *pmu);
>>> void xe_pmu_unregister(void *arg);
>>> +void xe_pmu_suspend(struct xe_gt *gt);
>>> #else
>>> static inline int xe_pmu_init(void) { return 0; }
>>> static inline void xe_pmu_exit(void) {}
>>> static inline void xe_pmu_register(struct xe_pmu *pmu) {}
>>> static inline void xe_pmu_unregister(void *arg) {}
>>> +static inline void xe_pmu_suspend(struct xe_gt *gt) {}
>>> #endif
>>> #endif
>>> diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h
>>> b/drivers/gpu/drm/xe/xe_pmu_types.h
>>> index 4da96b8fadd1..59d7718c59ce 100644
>>> --- a/drivers/gpu/drm/xe/xe_pmu_types.h
>>> +++ b/drivers/gpu/drm/xe/xe_pmu_types.h
>>> @@ -10,6 +10,8 @@
>>> #include <linux/spinlock_types.h>
>>> enum {
>>> + __XE_SAMPLE_RC6,
>>> + __XE_SAMPLE_RC6_LAST_REPORTED,
>>> __XE_NUM_PMU_SAMPLERS
>>> };
>>> @@ -23,6 +25,32 @@ enum {
>>> #define ___XE_PMU_OTHER(gt, x) \
>>> (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT))
>>> +#define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
>>> +
>>> +#define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
>>> +#define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
>>> +
>>> +/**
>>> + * Non-engine events that we need to track enabled-disabled
>>> transition and
>>> + * current state.
>>> + */
>>> +enum xe_pmu_tracked_events {
>>> + __XE_PMU_RC6_RESIDENCY_ENABLED,
>>> + __XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
>>> +};
>>> +
>>> +/**
>>> + * How many different events we track in the global PMU mask.
>>> + *
>>> + * It is also used to know to needed number of event reference
>>> counters.
>>> + */
>>> +#define XE_PMU_MASK_BITS \
>>> + (XE_PMU_MAX_GT * __XE_PMU_TRACKED_EVENT_COUNT)
>>> +
>>> +struct xe_pmu_sample {
>>> + u64 cur;
>>> +};
>>> +
>>> struct xe_pmu {
>>> /**
>>> * @cpuhp: Struct used for CPU hotplug handling.
>>> @@ -65,6 +93,41 @@ struct xe_pmu {
>>> * @pmu_attr: Memory block holding device attributes.
>>> */
>>> void *pmu_attr;
>>> +
>>> + /**
>>> + * @enable: Bitmask of specific enabled events.
>>> + *
>>> + * For some events we need to track their state and do some
>>> internal
>>> + * house keeping.
>>> + *
>>> + * Each engine event sampler type and event listed in enum
>>> + * i915_pmu_tracked_events gets a bit in this field.
>>> + *
>>> + * Low bits are engine samplers and other events continue from
>>> there.
>>> + */
>>> + u32 enable;
>>> +
>>> + /**
>>> + * @enable_count: Reference counter for enabled events.
>>> + *
>>> + * Array indices are mapped in the same way as bits in the
>>> @enable field
>>> + * and they are used to control sampling on/off when multiple
>>> clients
>>> + * are using the PMU API.
>>> + */
>>> + unsigned int enable_count[XE_PMU_MASK_BITS];
>>> + /**
>>> + * @sample: Current and previous (raw) counters for sampling
>>> events.
>>> + *
>>> + * These counters are updated from the i915 PMU sampling timer.
>>> + *
>>> + * Only global counters are held here, while the per-engine
>>> ones are in
>>> + * struct intel_engine_cs.
>>> + */
>>> + struct xe_pmu_sample
>>> event_sample[XE_PMU_MAX_GT][__XE_NUM_PMU_SAMPLERS];
>>> + /**
>>> + * @sleep_last: Last time GT parked for RC6 estimation.
>>> + */
>>> + ktime_t sleep_last[XE_PMU_MAX_GT];
>>> };
>>> #endif
>>> --
>>> 2.38.1
>>>
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 3/3] drm/xe/pmu: Add GT frequency events
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
2024-11-08 18:15 ` [PATCH 1/3] drm/xe/pmu: Enable PMU interface Vinay Belgaumkar
2024-11-08 18:15 ` [PATCH 2/3] drm/xe/pmu: Add GT C6 events Vinay Belgaumkar
@ 2024-11-08 18:15 ` Vinay Belgaumkar
2024-11-08 22:35 ` Rodrigo Vivi
2024-11-08 18:26 ` ✓ CI.Patch_applied: success for drm/xe/pmu: PMU interface for Xe (rev4) Patchwork
` (7 subsequent siblings)
10 siblings, 1 reply; 22+ messages in thread
From: Vinay Belgaumkar @ 2024-11-08 18:15 UTC (permalink / raw)
To: intel-xe; +Cc: Vinay Belgaumkar, Rodrigo Vivi
Define PMU events for GT frequency (actual and requested). This is
a port from the i915 driver implementation, where an internal timer
is used to aggregate GT frequencies over certain fixed interval.
Following PMU events are being added-
xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
Standard perf commands can be used to monitor GT frequency-
$ perf stat -e xe_0000_00_02.0/requested-frequency-gt0/ -I1000
1.001175175 700 M xe/requested-frequency-gt0/
2.005891881 703 M xe/requested-frequency-gt0/
3.007318169 700 M xe/requested-frequency-gt0/
Actual/requested frequencies will be 0 when GT is suspended.
v2: Checkpatch fix, moved timer code to this patch
v3: Fix kunit issue
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
---
drivers/gpu/drm/xe/xe_gt.c | 2 +
drivers/gpu/drm/xe/xe_pmu.c | 247 +++++++++++++++++++++++++++++-
drivers/gpu/drm/xe/xe_pmu.h | 2 +
drivers/gpu/drm/xe/xe_pmu_types.h | 26 ++++
4 files changed, 276 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index fd18bbce99da..ef27db83c09c 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -940,6 +940,8 @@ int xe_gt_resume(struct xe_gt *gt)
xe_gt_idle_enable_pg(gt);
+ xe_pmu_resume(gt);
+
xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_gt_dbg(gt, "resumed\n");
diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
index 80d78628006e..4fbd5a99dbcc 100644
--- a/drivers/gpu/drm/xe/xe_pmu.c
+++ b/drivers/gpu/drm/xe/xe_pmu.c
@@ -63,6 +63,31 @@ static unsigned int xe_pmu_target_cpu = -1;
* 2352945
*
* Each value is roughly a 1000ms increment here as well. This is expected GT residency when idle.
+ *
+ * PMU frequency events use a software timer to aggregate GT freq values over the time of capture.
+ * This allows us to calculate a rough average over the timespan. This is why sysfs is the best way
+ * to obtain instantaneous frequency if accuracy is intended. Advantage of using PMU is that it
+ * results in lesser CPU utilization as compared to dumping sysfs entries repeatedly.
+ *
+ * To list GT frequency events, use the following-
+ *
+ * $ perf list | grep frequency-gt
+ * xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
+ * xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
+ * xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
+ * xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
+ *
+ * $ perf stat -e xe_0000_00_02.0/requested-frequency-gt0/ -I1000
+ * # time counts unit events
+ * 1.001189056 1950 M xe_0000_00_02.0/requested-frequency-gt0/
+ * 2.006388494 1960 M xe_0000_00_02.0/requested-frequency-gt0/
+ * 3.007930311 1959 M xe_0000_00_02.0/requested-frequency-gt0/
+ *
+ * Dumping requested freq from sysfs-
+ * $ while true; do cat /sys/class/drm/card0/device/tile0/gt0/freq0/cur_freq ; sleep 1; done
+ * 1950
+ * 1950
+ * 1950
*/
static struct xe_pmu *event_to_pmu(struct perf_event *event)
@@ -88,6 +113,12 @@ static unsigned int other_bit(const u64 config)
case XE_PMU_RC6_RESIDENCY:
val = __XE_PMU_RC6_RESIDENCY_ENABLED;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val = __XE_PMU_ACTUAL_FREQUENCY_ENABLED;
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val = __XE_PMU_REQUESTED_FREQUENCY_ENABLED;
+ break;
default:
/*
* Events that do not require sampling, or tracking state
@@ -104,6 +135,22 @@ static unsigned int config_bit(const u64 config)
return other_bit(config);
}
+static u32 config_mask(const u64 config)
+{
+ unsigned int bit = config_bit(config);
+
+ if (__builtin_constant_p(config))
+ BUILD_BUG_ON(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+ else
+ WARN_ON_ONCE(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+
+ return BIT(config_bit(config));
+}
+
static unsigned int event_bit(struct perf_event *event)
{
return config_bit(event->attr.config);
@@ -132,6 +179,10 @@ config_status(struct xe_device *xe, u64 config)
if (xe->info.skip_guc_pc)
return -ENODEV;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ fallthrough;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ break;
default:
return -ENOENT;
}
@@ -194,6 +245,12 @@ store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
pmu->event_sample[gt_id][sample].cur = val;
}
+static void
+add_sample_mult(struct xe_pmu *pmu, unsigned int gt_id, int sample, u32 val, u32 mul)
+{
+ pmu->event_sample[gt_id][sample].cur += mul_u32_u32(val, mul);
+}
+
static u64 get_rc6(struct xe_gt *gt)
{
struct xe_device *xe = gt_to_xe(gt);
@@ -239,6 +296,7 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
{
struct xe_device *xe =
container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
const unsigned int gt_id = config_gt_id(event->attr.config);
const u64 config = event->attr.config;
struct xe_gt *gt = xe_device_get_gt(xe, gt_id);
@@ -248,6 +306,18 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
case XE_PMU_RC6_RESIDENCY:
val = get_rc6(gt);
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_ACT),
+ USEC_PER_SEC /* to MHz */);
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_REQ),
+ USEC_PER_SEC /* to MHz */);
+ break;
default:
drm_warn(>->tile->xe->drm, "unknown pmu event\n");
}
@@ -277,6 +347,144 @@ static void xe_pmu_event_read(struct perf_event *event)
local64_add(new - prev, &event->count);
}
+static u32 frequency_enabled_mask(void)
+{
+ unsigned int i;
+ u32 mask = 0;
+
+ for (i = 0; i < XE_PMU_MAX_GT; i++)
+ mask |= config_mask(__XE_PMU_ACTUAL_FREQUENCY(i)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(i));
+
+ return mask;
+}
+
+static bool
+frequency_sampling_enabled(struct xe_pmu *pmu, unsigned int gt)
+{
+ return pmu->enable &
+ (config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt)));
+}
+
+static void
+frequency_sample(struct xe_gt *gt, unsigned int period_ns)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ const unsigned int gt_id = gt->info.id;
+ struct xe_pmu *pmu = &xe->pmu;
+ bool device_awake;
+ int ret;
+ u32 cur_freq;
+
+ if (!frequency_sampling_enabled(pmu, gt_id))
+ return;
+
+ /* Report 0/0 (actual/requested) frequency while GT is suspended. */
+ device_awake = xe_pm_runtime_get_if_active(xe);
+ if (!device_awake)
+ return;
+
+ if (pmu->enable & config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt_id))) {
+ u32 val;
+
+ /*
+ * We take a quick peek here without using forcewake
+ * so that we don't perturb the system under observation
+ * (forcewake => !rc6 => increased power use). We expect
+ * that if the read fails because it is outside of the
+ * mmio power well, then it will return 0 -- in which
+ * case we assume the system is running at the intended
+ * frequency. Fortunately, the read should rarely fail!
+ */
+ val = xe_guc_pc_get_act_freq(>->uc.guc.pc);
+
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_ACT,
+ val, period_ns / 1000);
+ }
+
+ if (pmu->enable & config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt_id))) {
+ ret = xe_guc_pc_get_cur_freq(>->uc.guc.pc, &cur_freq);
+ if (!ret)
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_REQ,
+ cur_freq,
+ period_ns / 1000);
+ }
+
+ xe_pm_runtime_put(xe);
+}
+
+static enum hrtimer_restart xe_sample(struct hrtimer *hrtimer)
+{
+ struct xe_pmu *pmu = container_of(hrtimer, struct xe_pmu, timer);
+ struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+ unsigned int period_ns;
+ struct xe_gt *gt;
+ unsigned int i;
+ ktime_t now;
+
+ if (!READ_ONCE(pmu->timer_enabled))
+ return HRTIMER_NORESTART;
+
+ now = ktime_get();
+ period_ns = ktime_to_ns(ktime_sub(now, pmu->timer_last));
+ pmu->timer_last = now;
+
+ /*
+ * Strictly speaking the passed in period may not be 100% accurate for
+ * all internal calculation, since some amount of time can be spent on
+ * grabbing the forcewake. However the potential error from timer call-
+ * back delay greatly dominates this so we keep it simple.
+ */
+
+ for_each_gt(gt, xe, i) {
+ if (!(pmu->active_gts & BIT(i)))
+ continue;
+ frequency_sample(gt, period_ns);
+ }
+
+ hrtimer_forward(hrtimer, now, ns_to_ktime(period));
+
+ return HRTIMER_RESTART;
+}
+
+static bool pmu_needs_timer(struct xe_pmu *pmu)
+{
+ u32 enable;
+
+ /*
+ * Only some counters need the sampling timer.
+ *
+ * We start with a bitmask of all currently enabled events.
+ */
+ enable = pmu->enable;
+
+ /*
+ * Mask out all the ones which do not need the timer, or in
+ * other words keep all the ones that could need the timer.
+ */
+ enable &= frequency_enabled_mask();
+
+ /*
+ * If some bits remain it means we need the sampling timer running.
+ */
+ return enable;
+}
+
+static void __xe_pmu_maybe_start_timer(struct xe_pmu *pmu)
+{
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+
+ if (!pmu->timer_enabled && pmu_needs_timer(pmu)) {
+ pmu->timer_enabled = true;
+ pmu->timer_last = ktime_get();
+ hrtimer_start_range_ns(&pmu->timer,
+ ns_to_ktime(period), 0,
+ HRTIMER_MODE_REL_PINNED);
+ }
+}
+
static void xe_pmu_enable(struct perf_event *event)
{
struct xe_pmu *pmu = event_to_pmu(event);
@@ -299,6 +507,11 @@ static void xe_pmu_enable(struct perf_event *event)
pmu->enable |= BIT(bit);
pmu->enable_count[bit]++;
+ /*
+ * Start the sampling timer if needed and not already enabled.
+ */
+ __xe_pmu_maybe_start_timer(pmu);
+
spin_unlock_irqrestore(&pmu->lock, flags);
update:
/*
@@ -328,8 +541,10 @@ static void xe_pmu_disable(struct perf_event *event)
* Decrement the reference count and clear the enabled
* bitmask when the last listener on an event goes away.
*/
- if (--pmu->enable_count[bit] == 0)
+ if (--pmu->enable_count[bit] == 0) {
pmu->enable &= ~BIT(bit);
+ pmu->timer_enabled &= pmu_needs_timer(pmu);
+ }
spin_unlock_irqrestore(&pmu->lock, flags);
}
@@ -463,6 +678,8 @@ create_event_attributes(struct xe_pmu *pmu)
const char *unit;
} events[] = {
__event(0, "rc6-residency", "ms"),
+ __event(1, "actual-frequency", "M"),
+ __event(2, "requested-frequency", "M"),
};
struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
@@ -675,6 +892,30 @@ void xe_pmu_suspend(struct xe_gt *gt)
spin_unlock_irq(&pmu->lock);
}
+/**
+ * xe_pmu_resume() - Restart the timer if needed
+ */
+void xe_pmu_resume(struct xe_gt *gt)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ if (!pmu->base.event_init)
+ return;
+
+ spin_lock_irq(&pmu->lock);
+
+ /*
+ * Re-enable sampling timer when GPU goes active.
+ */
+ if (pmu->active_gts == 0)
+ __xe_pmu_maybe_start_timer(pmu);
+
+ pmu->active_gts |= BIT(gt->info.id);
+
+ spin_unlock_irq(&pmu->lock);
+}
+
/**
* xe_pmu_unregister() - Remove/cleanup PMU registration
*/
@@ -687,6 +928,8 @@ void xe_pmu_unregister(void *arg)
pmu->registered = false;
+ hrtimer_cancel(&pmu->timer);
+
xe_pmu_unregister_cpuhp_state(pmu);
perf_pmu_unregister(&pmu->base);
@@ -729,6 +972,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
int ret = -ENOMEM;
spin_lock_init(&pmu->lock);
+ hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ pmu->timer.function = xe_sample;
pmu->cpuhp.cpu = -1;
pmu->name = kasprintf(GFP_KERNEL,
diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
index 17f5a8d7d45c..fb6e3819d7bc 100644
--- a/drivers/gpu/drm/xe/xe_pmu.h
+++ b/drivers/gpu/drm/xe/xe_pmu.h
@@ -16,12 +16,14 @@ void xe_pmu_exit(void);
void xe_pmu_register(struct xe_pmu *pmu);
void xe_pmu_unregister(void *arg);
void xe_pmu_suspend(struct xe_gt *gt);
+void xe_pmu_resume(struct xe_gt *gt);
#else
static inline int xe_pmu_init(void) { return 0; }
static inline void xe_pmu_exit(void) {}
static inline void xe_pmu_register(struct xe_pmu *pmu) {}
static inline void xe_pmu_unregister(void *arg) {}
static inline void xe_pmu_suspend(struct xe_gt *gt) {}
+static inline void xe_pmu_resume(struct xe_gt *gt) {}
#endif
#endif
diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
index 59d7718c59ce..c44c3d79b970 100644
--- a/drivers/gpu/drm/xe/xe_pmu_types.h
+++ b/drivers/gpu/drm/xe/xe_pmu_types.h
@@ -12,6 +12,8 @@
enum {
__XE_SAMPLE_RC6,
__XE_SAMPLE_RC6_LAST_REPORTED,
+ __XE_SAMPLE_FREQ_ACT,
+ __XE_SAMPLE_FREQ_REQ,
__XE_NUM_PMU_SAMPLERS
};
@@ -28,13 +30,19 @@ enum {
#define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
#define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
+#define XE_PMU_ACTUAL_FREQUENCY __XE_PMU_OTHER(1)
+#define XE_PMU_REQUESTED_FREQUENCY __XE_PMU_OTHER(2)
#define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
+#define __XE_PMU_ACTUAL_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 1)
+#define __XE_PMU_REQUESTED_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 2)
/**
* Non-engine events that we need to track enabled-disabled transition and
* current state.
*/
enum xe_pmu_tracked_events {
+ __XE_PMU_ACTUAL_FREQUENCY_ENABLED,
+ __XE_PMU_REQUESTED_FREQUENCY_ENABLED,
__XE_PMU_RC6_RESIDENCY_ENABLED,
__XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
};
@@ -128,6 +136,24 @@ struct xe_pmu {
* @sleep_last: Last time GT parked for RC6 estimation.
*/
ktime_t sleep_last[XE_PMU_MAX_GT];
+ /**
+ * @timer: Timer for internal Xe PMU sampling.
+ */
+ struct hrtimer timer;
+ /**
+ * @timer_last:
+ *
+ * Timestmap of the previous timer invocation.
+ */
+ ktime_t timer_last;
+ /**
+ * @timer_enabled: Should the internal sampling timer be running.
+ */
+ bool timer_enabled;
+ /**
+ * @active_gts: GT active mask.
+ */
+ unsigned int active_gts;
};
#endif
--
2.38.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* Re: [PATCH 3/3] drm/xe/pmu: Add GT frequency events
2024-11-08 18:15 ` [PATCH 3/3] drm/xe/pmu: Add GT frequency events Vinay Belgaumkar
@ 2024-11-08 22:35 ` Rodrigo Vivi
0 siblings, 0 replies; 22+ messages in thread
From: Rodrigo Vivi @ 2024-11-08 22:35 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
On Fri, Nov 08, 2024 at 10:15:12AM -0800, Vinay Belgaumkar wrote:
> Define PMU events for GT frequency (actual and requested). This is
> a port from the i915 driver implementation, where an internal timer
> is used to aggregate GT frequencies over certain fixed interval.
> Following PMU events are being added-
>
> xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
> xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
> xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
> xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
>
> Standard perf commands can be used to monitor GT frequency-
> $ perf stat -e xe_0000_00_02.0/requested-frequency-gt0/ -I1000
>
> 1.001175175 700 M xe/requested-frequency-gt0/
> 2.005891881 703 M xe/requested-frequency-gt0/
> 3.007318169 700 M xe/requested-frequency-gt0/
>
> Actual/requested frequencies will be 0 when GT is suspended.
>
> v2: Checkpatch fix, moved timer code to this patch
> v3: Fix kunit issue
>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
> ---
> drivers/gpu/drm/xe/xe_gt.c | 2 +
> drivers/gpu/drm/xe/xe_pmu.c | 247 +++++++++++++++++++++++++++++-
> drivers/gpu/drm/xe/xe_pmu.h | 2 +
> drivers/gpu/drm/xe/xe_pmu_types.h | 26 ++++
> 4 files changed, 276 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> index fd18bbce99da..ef27db83c09c 100644
> --- a/drivers/gpu/drm/xe/xe_gt.c
> +++ b/drivers/gpu/drm/xe/xe_gt.c
> @@ -940,6 +940,8 @@ int xe_gt_resume(struct xe_gt *gt)
>
> xe_gt_idle_enable_pg(gt);
>
> + xe_pmu_resume(gt);
> +
> xe_force_wake_put(gt_to_fw(gt), fw_ref);
> xe_gt_dbg(gt, "resumed\n");
>
> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
> index 80d78628006e..4fbd5a99dbcc 100644
> --- a/drivers/gpu/drm/xe/xe_pmu.c
> +++ b/drivers/gpu/drm/xe/xe_pmu.c
> @@ -63,6 +63,31 @@ static unsigned int xe_pmu_target_cpu = -1;
> * 2352945
> *
> * Each value is roughly a 1000ms increment here as well. This is expected GT residency when idle.
> + *
> + * PMU frequency events use a software timer to aggregate GT freq values over the time of capture.
> + * This allows us to calculate a rough average over the timespan. This is why sysfs is the best way
> + * to obtain instantaneous frequency if accuracy is intended. Advantage of using PMU is that it
> + * results in lesser CPU utilization as compared to dumping sysfs entries repeatedly.
> + *
> + * To list GT frequency events, use the following-
> + *
> + * $ perf list | grep frequency-gt
> + * xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
> + * xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
> + * xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
> + * xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
> + *
> + * $ perf stat -e xe_0000_00_02.0/requested-frequency-gt0/ -I1000
> + * # time counts unit events
> + * 1.001189056 1950 M xe_0000_00_02.0/requested-frequency-gt0/
> + * 2.006388494 1960 M xe_0000_00_02.0/requested-frequency-gt0/
> + * 3.007930311 1959 M xe_0000_00_02.0/requested-frequency-gt0/
> + *
> + * Dumping requested freq from sysfs-
> + * $ while true; do cat /sys/class/drm/card0/device/tile0/gt0/freq0/cur_freq ; sleep 1; done
> + * 1950
> + * 1950
> + * 1950
Thank you so much for adding this!
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> */
>
> static struct xe_pmu *event_to_pmu(struct perf_event *event)
> @@ -88,6 +113,12 @@ static unsigned int other_bit(const u64 config)
> case XE_PMU_RC6_RESIDENCY:
> val = __XE_PMU_RC6_RESIDENCY_ENABLED;
> break;
> + case XE_PMU_ACTUAL_FREQUENCY:
> + val = __XE_PMU_ACTUAL_FREQUENCY_ENABLED;
> + break;
> + case XE_PMU_REQUESTED_FREQUENCY:
> + val = __XE_PMU_REQUESTED_FREQUENCY_ENABLED;
> + break;
> default:
> /*
> * Events that do not require sampling, or tracking state
> @@ -104,6 +135,22 @@ static unsigned int config_bit(const u64 config)
> return other_bit(config);
> }
>
> +static u32 config_mask(const u64 config)
> +{
> + unsigned int bit = config_bit(config);
> +
> + if (__builtin_constant_p(config))
> + BUILD_BUG_ON(bit >
> + BITS_PER_TYPE(typeof_member(struct xe_pmu,
> + enable)) - 1);
> + else
> + WARN_ON_ONCE(bit >
> + BITS_PER_TYPE(typeof_member(struct xe_pmu,
> + enable)) - 1);
> +
> + return BIT(config_bit(config));
> +}
> +
> static unsigned int event_bit(struct perf_event *event)
> {
> return config_bit(event->attr.config);
> @@ -132,6 +179,10 @@ config_status(struct xe_device *xe, u64 config)
> if (xe->info.skip_guc_pc)
> return -ENODEV;
> break;
> + case XE_PMU_ACTUAL_FREQUENCY:
> + fallthrough;
> + case XE_PMU_REQUESTED_FREQUENCY:
> + break;
> default:
> return -ENOENT;
> }
> @@ -194,6 +245,12 @@ store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
> pmu->event_sample[gt_id][sample].cur = val;
> }
>
> +static void
> +add_sample_mult(struct xe_pmu *pmu, unsigned int gt_id, int sample, u32 val, u32 mul)
> +{
> + pmu->event_sample[gt_id][sample].cur += mul_u32_u32(val, mul);
> +}
> +
> static u64 get_rc6(struct xe_gt *gt)
> {
> struct xe_device *xe = gt_to_xe(gt);
> @@ -239,6 +296,7 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
> {
> struct xe_device *xe =
> container_of(event->pmu, typeof(*xe), pmu.base);
> + struct xe_pmu *pmu = &xe->pmu;
> const unsigned int gt_id = config_gt_id(event->attr.config);
> const u64 config = event->attr.config;
> struct xe_gt *gt = xe_device_get_gt(xe, gt_id);
> @@ -248,6 +306,18 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
> case XE_PMU_RC6_RESIDENCY:
> val = get_rc6(gt);
> break;
> + case XE_PMU_ACTUAL_FREQUENCY:
> + val =
> + div_u64(read_sample(pmu, gt_id,
> + __XE_SAMPLE_FREQ_ACT),
> + USEC_PER_SEC /* to MHz */);
> + break;
> + case XE_PMU_REQUESTED_FREQUENCY:
> + val =
> + div_u64(read_sample(pmu, gt_id,
> + __XE_SAMPLE_FREQ_REQ),
> + USEC_PER_SEC /* to MHz */);
> + break;
> default:
> drm_warn(>->tile->xe->drm, "unknown pmu event\n");
> }
> @@ -277,6 +347,144 @@ static void xe_pmu_event_read(struct perf_event *event)
> local64_add(new - prev, &event->count);
> }
>
> +static u32 frequency_enabled_mask(void)
> +{
> + unsigned int i;
> + u32 mask = 0;
> +
> + for (i = 0; i < XE_PMU_MAX_GT; i++)
> + mask |= config_mask(__XE_PMU_ACTUAL_FREQUENCY(i)) |
> + config_mask(__XE_PMU_REQUESTED_FREQUENCY(i));
> +
> + return mask;
> +}
> +
> +static bool
> +frequency_sampling_enabled(struct xe_pmu *pmu, unsigned int gt)
> +{
> + return pmu->enable &
> + (config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt)) |
> + config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt)));
> +}
> +
> +static void
> +frequency_sample(struct xe_gt *gt, unsigned int period_ns)
> +{
> + struct xe_device *xe = gt_to_xe(gt);
> + const unsigned int gt_id = gt->info.id;
> + struct xe_pmu *pmu = &xe->pmu;
> + bool device_awake;
> + int ret;
> + u32 cur_freq;
> +
> + if (!frequency_sampling_enabled(pmu, gt_id))
> + return;
> +
> + /* Report 0/0 (actual/requested) frequency while GT is suspended. */
> + device_awake = xe_pm_runtime_get_if_active(xe);
> + if (!device_awake)
> + return;
> +
> + if (pmu->enable & config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt_id))) {
> + u32 val;
> +
> + /*
> + * We take a quick peek here without using forcewake
> + * so that we don't perturb the system under observation
> + * (forcewake => !rc6 => increased power use). We expect
> + * that if the read fails because it is outside of the
> + * mmio power well, then it will return 0 -- in which
> + * case we assume the system is running at the intended
> + * frequency. Fortunately, the read should rarely fail!
> + */
> + val = xe_guc_pc_get_act_freq(>->uc.guc.pc);
> +
> + add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_ACT,
> + val, period_ns / 1000);
> + }
> +
> + if (pmu->enable & config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt_id))) {
> + ret = xe_guc_pc_get_cur_freq(>->uc.guc.pc, &cur_freq);
> + if (!ret)
> + add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_REQ,
> + cur_freq,
> + period_ns / 1000);
> + }
> +
> + xe_pm_runtime_put(xe);
> +}
> +
> +static enum hrtimer_restart xe_sample(struct hrtimer *hrtimer)
> +{
> + struct xe_pmu *pmu = container_of(hrtimer, struct xe_pmu, timer);
> + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
> + u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
> + unsigned int period_ns;
> + struct xe_gt *gt;
> + unsigned int i;
> + ktime_t now;
> +
> + if (!READ_ONCE(pmu->timer_enabled))
> + return HRTIMER_NORESTART;
> +
> + now = ktime_get();
> + period_ns = ktime_to_ns(ktime_sub(now, pmu->timer_last));
> + pmu->timer_last = now;
> +
> + /*
> + * Strictly speaking the passed in period may not be 100% accurate for
> + * all internal calculation, since some amount of time can be spent on
> + * grabbing the forcewake. However the potential error from timer call-
> + * back delay greatly dominates this so we keep it simple.
> + */
> +
> + for_each_gt(gt, xe, i) {
> + if (!(pmu->active_gts & BIT(i)))
> + continue;
> + frequency_sample(gt, period_ns);
> + }
> +
> + hrtimer_forward(hrtimer, now, ns_to_ktime(period));
> +
> + return HRTIMER_RESTART;
> +}
> +
> +static bool pmu_needs_timer(struct xe_pmu *pmu)
> +{
> + u32 enable;
> +
> + /*
> + * Only some counters need the sampling timer.
> + *
> + * We start with a bitmask of all currently enabled events.
> + */
> + enable = pmu->enable;
> +
> + /*
> + * Mask out all the ones which do not need the timer, or in
> + * other words keep all the ones that could need the timer.
> + */
> + enable &= frequency_enabled_mask();
> +
> + /*
> + * If some bits remain it means we need the sampling timer running.
> + */
> + return enable;
> +}
> +
> +static void __xe_pmu_maybe_start_timer(struct xe_pmu *pmu)
> +{
> + u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
> +
> + if (!pmu->timer_enabled && pmu_needs_timer(pmu)) {
> + pmu->timer_enabled = true;
> + pmu->timer_last = ktime_get();
> + hrtimer_start_range_ns(&pmu->timer,
> + ns_to_ktime(period), 0,
> + HRTIMER_MODE_REL_PINNED);
> + }
> +}
> +
> static void xe_pmu_enable(struct perf_event *event)
> {
> struct xe_pmu *pmu = event_to_pmu(event);
> @@ -299,6 +507,11 @@ static void xe_pmu_enable(struct perf_event *event)
> pmu->enable |= BIT(bit);
> pmu->enable_count[bit]++;
>
> + /*
> + * Start the sampling timer if needed and not already enabled.
> + */
> + __xe_pmu_maybe_start_timer(pmu);
> +
> spin_unlock_irqrestore(&pmu->lock, flags);
> update:
> /*
> @@ -328,8 +541,10 @@ static void xe_pmu_disable(struct perf_event *event)
> * Decrement the reference count and clear the enabled
> * bitmask when the last listener on an event goes away.
> */
> - if (--pmu->enable_count[bit] == 0)
> + if (--pmu->enable_count[bit] == 0) {
> pmu->enable &= ~BIT(bit);
> + pmu->timer_enabled &= pmu_needs_timer(pmu);
> + }
>
> spin_unlock_irqrestore(&pmu->lock, flags);
> }
> @@ -463,6 +678,8 @@ create_event_attributes(struct xe_pmu *pmu)
> const char *unit;
> } events[] = {
> __event(0, "rc6-residency", "ms"),
> + __event(1, "actual-frequency", "M"),
> + __event(2, "requested-frequency", "M"),
> };
>
> struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
> @@ -675,6 +892,30 @@ void xe_pmu_suspend(struct xe_gt *gt)
> spin_unlock_irq(&pmu->lock);
> }
>
> +/**
> + * xe_pmu_resume() - Restart the timer if needed
> + */
> +void xe_pmu_resume(struct xe_gt *gt)
> +{
> + struct xe_device *xe = gt_to_xe(gt);
> + struct xe_pmu *pmu = &xe->pmu;
> +
> + if (!pmu->base.event_init)
> + return;
> +
> + spin_lock_irq(&pmu->lock);
> +
> + /*
> + * Re-enable sampling timer when GPU goes active.
> + */
> + if (pmu->active_gts == 0)
> + __xe_pmu_maybe_start_timer(pmu);
> +
> + pmu->active_gts |= BIT(gt->info.id);
> +
> + spin_unlock_irq(&pmu->lock);
> +}
> +
> /**
> * xe_pmu_unregister() - Remove/cleanup PMU registration
> */
> @@ -687,6 +928,8 @@ void xe_pmu_unregister(void *arg)
>
> pmu->registered = false;
>
> + hrtimer_cancel(&pmu->timer);
> +
> xe_pmu_unregister_cpuhp_state(pmu);
>
> perf_pmu_unregister(&pmu->base);
> @@ -729,6 +972,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
> int ret = -ENOMEM;
>
> spin_lock_init(&pmu->lock);
> + hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
> + pmu->timer.function = xe_sample;
> pmu->cpuhp.cpu = -1;
>
> pmu->name = kasprintf(GFP_KERNEL,
> diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
> index 17f5a8d7d45c..fb6e3819d7bc 100644
> --- a/drivers/gpu/drm/xe/xe_pmu.h
> +++ b/drivers/gpu/drm/xe/xe_pmu.h
> @@ -16,12 +16,14 @@ void xe_pmu_exit(void);
> void xe_pmu_register(struct xe_pmu *pmu);
> void xe_pmu_unregister(void *arg);
> void xe_pmu_suspend(struct xe_gt *gt);
> +void xe_pmu_resume(struct xe_gt *gt);
> #else
> static inline int xe_pmu_init(void) { return 0; }
> static inline void xe_pmu_exit(void) {}
> static inline void xe_pmu_register(struct xe_pmu *pmu) {}
> static inline void xe_pmu_unregister(void *arg) {}
> static inline void xe_pmu_suspend(struct xe_gt *gt) {}
> +static inline void xe_pmu_resume(struct xe_gt *gt) {}
> #endif
>
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
> index 59d7718c59ce..c44c3d79b970 100644
> --- a/drivers/gpu/drm/xe/xe_pmu_types.h
> +++ b/drivers/gpu/drm/xe/xe_pmu_types.h
> @@ -12,6 +12,8 @@
> enum {
> __XE_SAMPLE_RC6,
> __XE_SAMPLE_RC6_LAST_REPORTED,
> + __XE_SAMPLE_FREQ_ACT,
> + __XE_SAMPLE_FREQ_REQ,
> __XE_NUM_PMU_SAMPLERS
> };
>
> @@ -28,13 +30,19 @@ enum {
> #define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
>
> #define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
> +#define XE_PMU_ACTUAL_FREQUENCY __XE_PMU_OTHER(1)
> +#define XE_PMU_REQUESTED_FREQUENCY __XE_PMU_OTHER(2)
> #define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
> +#define __XE_PMU_ACTUAL_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 1)
> +#define __XE_PMU_REQUESTED_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 2)
>
> /**
> * Non-engine events that we need to track enabled-disabled transition and
> * current state.
> */
> enum xe_pmu_tracked_events {
> + __XE_PMU_ACTUAL_FREQUENCY_ENABLED,
> + __XE_PMU_REQUESTED_FREQUENCY_ENABLED,
> __XE_PMU_RC6_RESIDENCY_ENABLED,
> __XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
> };
> @@ -128,6 +136,24 @@ struct xe_pmu {
> * @sleep_last: Last time GT parked for RC6 estimation.
> */
> ktime_t sleep_last[XE_PMU_MAX_GT];
> + /**
> + * @timer: Timer for internal Xe PMU sampling.
> + */
> + struct hrtimer timer;
> + /**
> + * @timer_last:
> + *
> + * Timestmap of the previous timer invocation.
> + */
> + ktime_t timer_last;
> + /**
> + * @timer_enabled: Should the internal sampling timer be running.
> + */
> + bool timer_enabled;
> + /**
> + * @active_gts: GT active mask.
> + */
> + unsigned int active_gts;
> };
>
> #endif
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* ✓ CI.Patch_applied: success for drm/xe/pmu: PMU interface for Xe (rev4)
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
` (2 preceding siblings ...)
2024-11-08 18:15 ` [PATCH 3/3] drm/xe/pmu: Add GT frequency events Vinay Belgaumkar
@ 2024-11-08 18:26 ` Patchwork
2024-11-08 18:26 ` ✗ CI.checkpatch: warning " Patchwork
` (6 subsequent siblings)
10 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-11-08 18:26 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
== Series Details ==
Series: drm/xe/pmu: PMU interface for Xe (rev4)
URL : https://patchwork.freedesktop.org/series/139121/
State : success
== Summary ==
=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 7881884ed71d drm-tip: 2024y-11m-08d-18h-01m-17s UTC integration manifest
=== git am output follows ===
.git/rebase-apply/patch:710: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
Applying: drm/xe/pmu: Enable PMU interface
Applying: drm/xe/pmu: Add GT C6 events
Applying: drm/xe/pmu: Add GT frequency events
^ permalink raw reply [flat|nested] 22+ messages in thread* ✗ CI.checkpatch: warning for drm/xe/pmu: PMU interface for Xe (rev4)
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
` (3 preceding siblings ...)
2024-11-08 18:26 ` ✓ CI.Patch_applied: success for drm/xe/pmu: PMU interface for Xe (rev4) Patchwork
@ 2024-11-08 18:26 ` Patchwork
2024-11-08 18:27 ` ✓ CI.KUnit: success " Patchwork
` (5 subsequent siblings)
10 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-11-08 18:26 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
== Series Details ==
Series: drm/xe/pmu: PMU interface for Xe (rev4)
URL : https://patchwork.freedesktop.org/series/139121/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
30ab6715fc09baee6cc14cb3c89ad8858688d474
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 18d5e995636c8d99f5c3ecd0413d6714f3cd7f19
Author: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Date: Fri Nov 8 10:15:12 2024 -0800
drm/xe/pmu: Add GT frequency events
Define PMU events for GT frequency (actual and requested). This is
a port from the i915 driver implementation, where an internal timer
is used to aggregate GT frequencies over certain fixed interval.
Following PMU events are being added-
xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
Standard perf commands can be used to monitor GT frequency-
$ perf stat -e xe_0000_00_02.0/requested-frequency-gt0/ -I1000
1.001175175 700 M xe/requested-frequency-gt0/
2.005891881 703 M xe/requested-frequency-gt0/
3.007318169 700 M xe/requested-frequency-gt0/
Actual/requested frequencies will be 0 when GT is suspended.
v2: Checkpatch fix, moved timer code to this patch
v3: Fix kunit issue
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
+ /mt/dim checkpatch 7881884ed71da8aae8eb6b6e910c2fbce09a7436 drm-intel
09c14406fa60 drm/xe/pmu: Enable PMU interface
-:112: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#112:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 732 lines checked
b50c3fc9768d drm/xe/pmu: Add GT C6 events
18d5e995636c drm/xe/pmu: Add GT frequency events
-:104: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#104: FILE: drivers/gpu/drm/xe/xe_pmu.c:145:
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
total: 0 errors, 0 warnings, 1 checks, 405 lines checked
^ permalink raw reply [flat|nested] 22+ messages in thread* ✓ CI.KUnit: success for drm/xe/pmu: PMU interface for Xe (rev4)
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
` (4 preceding siblings ...)
2024-11-08 18:26 ` ✗ CI.checkpatch: warning " Patchwork
@ 2024-11-08 18:27 ` Patchwork
2024-11-08 18:39 ` ✓ CI.Build: " Patchwork
` (4 subsequent siblings)
10 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-11-08 18:27 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
== Series Details ==
Series: drm/xe/pmu: PMU interface for Xe (rev4)
URL : https://patchwork.freedesktop.org/series/139121/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[18:26:30] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:26:34] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[18:27:03] Starting KUnit Kernel (1/1)...
[18:27:03] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:27:03] =================== guc_dbm (7 subtests) ===================
[18:27:03] [PASSED] test_empty
[18:27:03] [PASSED] test_default
[18:27:03] ======================== test_size ========================
[18:27:03] [PASSED] 4
[18:27:03] [PASSED] 8
[18:27:03] [PASSED] 32
[18:27:03] [PASSED] 256
[18:27:03] ==================== [PASSED] test_size ====================
[18:27:03] ======================= test_reuse ========================
[18:27:03] [PASSED] 4
[18:27:03] [PASSED] 8
[18:27:03] [PASSED] 32
[18:27:03] [PASSED] 256
[18:27:03] =================== [PASSED] test_reuse ====================
[18:27:03] =================== test_range_overlap ====================
[18:27:03] [PASSED] 4
[18:27:03] [PASSED] 8
[18:27:03] [PASSED] 32
[18:27:03] [PASSED] 256
[18:27:03] =============== [PASSED] test_range_overlap ================
[18:27:03] =================== test_range_compact ====================
[18:27:03] [PASSED] 4
[18:27:03] [PASSED] 8
[18:27:03] [PASSED] 32
[18:27:03] [PASSED] 256
[18:27:03] =============== [PASSED] test_range_compact ================
[18:27:03] ==================== test_range_spare =====================
[18:27:03] [PASSED] 4
[18:27:03] [PASSED] 8
[18:27:03] [PASSED] 32
[18:27:03] [PASSED] 256
[18:27:03] ================ [PASSED] test_range_spare =================
[18:27:03] ===================== [PASSED] guc_dbm =====================
[18:27:03] =================== guc_idm (6 subtests) ===================
[18:27:03] [PASSED] bad_init
[18:27:03] [PASSED] no_init
[18:27:03] [PASSED] init_fini
[18:27:03] [PASSED] check_used
[18:27:03] [PASSED] check_quota
[18:27:03] [PASSED] check_all
[18:27:03] ===================== [PASSED] guc_idm =====================
[18:27:03] ================== no_relay (3 subtests) ===================
[18:27:03] [PASSED] xe_drops_guc2pf_if_not_ready
[18:27:03] [PASSED] xe_drops_guc2vf_if_not_ready
[18:27:03] [PASSED] xe_rejects_send_if_not_ready
[18:27:03] ==================== [PASSED] no_relay =====================
[18:27:03] ================== pf_relay (14 subtests) ==================
[18:27:03] [PASSED] pf_rejects_guc2pf_too_short
[18:27:03] [PASSED] pf_rejects_guc2pf_too_long
[18:27:03] [PASSED] pf_rejects_guc2pf_no_payload
[18:27:03] [PASSED] pf_fails_no_payload
[18:27:03] [PASSED] pf_fails_bad_origin
[18:27:03] [PASSED] pf_fails_bad_type
[18:27:03] [PASSED] pf_txn_reports_error
[18:27:03] [PASSED] pf_txn_sends_pf2guc
[18:27:03] [PASSED] pf_sends_pf2guc
[18:27:03] [SKIPPED] pf_loopback_nop
[18:27:03] [SKIPPED] pf_loopback_echo
[18:27:03] [SKIPPED] pf_loopback_fail
[18:27:03] [SKIPPED] pf_loopback_busy
[18:27:03] [SKIPPED] pf_loopback_retry
[18:27:03] ==================== [PASSED] pf_relay =====================
[18:27:03] ================== vf_relay (3 subtests) ===================
[18:27:03] [PASSED] vf_rejects_guc2vf_too_short
[18:27:03] [PASSED] vf_rejects_guc2vf_too_long
[18:27:03] [PASSED] vf_rejects_guc2vf_no_payload
[18:27:03] ==================== [PASSED] vf_relay =====================
[18:27:03] ================= pf_service (11 subtests) =================
[18:27:03] [PASSED] pf_negotiate_any
[18:27:03] [PASSED] pf_negotiate_base_match
[18:27:03] [PASSED] pf_negotiate_base_newer
[18:27:03] [PASSED] pf_negotiate_base_next
[18:27:03] [SKIPPED] pf_negotiate_base_older
[18:27:03] [PASSED] pf_negotiate_base_prev
[18:27:03] [PASSED] pf_negotiate_latest_match
[18:27:03] [PASSED] pf_negotiate_latest_newer
[18:27:03] [PASSED] pf_negotiate_latest_next
[18:27:03] [SKIPPED] pf_negotiate_latest_older
[18:27:03] [SKIPPED] pf_negotiate_latest_prev
[18:27:03] =================== [PASSED] pf_service ====================
[18:27:03] ===================== lmtt (1 subtest) =====================
[18:27:03] ======================== test_ops =========================
[18:27:03] [PASSED] 2-level
[18:27:03] [PASSED] multi-level
[18:27:03] ==================== [PASSED] test_ops =====================
[18:27:03] ====================== [PASSED] lmtt =======================
[18:27:03] =================== xe_mocs (2 subtests) ===================
[18:27:03] ================ xe_live_mocs_kernel_kunit ================
[18:27:03] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[18:27:03] ================ xe_live_mocs_reset_kunit =================
[18:27:03] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[18:27:03] ==================== [SKIPPED] xe_mocs =====================
[18:27:03] ================= xe_migrate (2 subtests) ==================
[18:27:03] ================= xe_migrate_sanity_kunit =================
[18:27:03] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[18:27:03] ================== xe_validate_ccs_kunit ==================
[18:27:03] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[18:27:03] =================== [SKIPPED] xe_migrate ===================
[18:27:03] ================== xe_dma_buf (1 subtest) ==================
[18:27:03] ==================== xe_dma_buf_kunit =====================
[18:27:03] ================ [SKIPPED] xe_dma_buf_kunit ================
[18:27:03] =================== [SKIPPED] xe_dma_buf ===================
[18:27:03] ==================== xe_bo (3 subtests) ====================
[18:27:03] ================== xe_ccs_migrate_kunit ===================
[18:27:03] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[18:27:03] ==================== xe_bo_evict_kunit ====================
[18:27:03] =============== [SKIPPED] xe_bo_evict_kunit ================
[18:27:03] =================== xe_bo_shrink_kunit ====================
[18:27:03] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[18:27:03] ===================== [SKIPPED] xe_bo ======================
[18:27:03] ==================== args (11 subtests) ====================
[18:27:03] [PASSED] count_args_test
[18:27:03] [PASSED] call_args_example
[18:27:03] [PASSED] call_args_test
[18:27:03] [PASSED] drop_first_arg_example
[18:27:03] [PASSED] drop_first_arg_test
[18:27:03] [PASSED] first_arg_example
[18:27:03] [PASSED] first_arg_test
[18:27:03] [PASSED] last_arg_example
[18:27:03] [PASSED] last_arg_test
[18:27:03] [PASSED] pick_arg_example
[18:27:03] [PASSED] sep_comma_examplestty: 'standard input': Inappropriate ioctl for device
[18:27:03] ====================== [PASSED] args =======================
[18:27:03] =================== xe_pci (2 subtests) ====================
[18:27:03] [PASSED] xe_gmdid_graphics_ip
[18:27:03] [PASSED] xe_gmdid_media_ip
[18:27:03] ===================== [PASSED] xe_pci ======================
[18:27:03] =================== xe_rtp (2 subtests) ====================
[18:27:03] =============== xe_rtp_process_to_sr_tests ================
[18:27:03] [PASSED] coalesce-same-reg
[18:27:03] [PASSED] no-match-no-add
[18:27:03] [PASSED] match-or
[18:27:03] [PASSED] match-or-xfail
[18:27:03] [PASSED] no-match-no-add-multiple-rules
[18:27:03] [PASSED] two-regs-two-entries
[18:27:03] [PASSED] clr-one-set-other
[18:27:03] [PASSED] set-field
[18:27:03] [PASSED] conflict-duplicate
[18:27:03] [PASSED] conflict-not-disjoint
[18:27:03] [PASSED] conflict-reg-type
[18:27:03] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[18:27:03] ================== xe_rtp_process_tests ===================
[18:27:03] [PASSED] active1
[18:27:03] [PASSED] active2
[18:27:03] [PASSED] active-inactive
[18:27:03] [PASSED] inactive-active
[18:27:03] [PASSED] inactive-1st_or_active-inactive
[18:27:03] [PASSED] inactive-2nd_or_active-inactive
[18:27:03] [PASSED] inactive-last_or_active-inactive
[18:27:03] [PASSED] inactive-no_or_active-inactive
[18:27:03] ============== [PASSED] xe_rtp_process_tests ===============
[18:27:03] ===================== [PASSED] xe_rtp ======================
[18:27:03] ==================== xe_wa (1 subtest) =====================
[18:27:03] ======================== xe_wa_gt =========================
[18:27:03] [PASSED] TIGERLAKE (B0)
[18:27:03] [PASSED] DG1 (A0)
[18:27:03] [PASSED] DG1 (B0)
[18:27:03] [PASSED] ALDERLAKE_S (A0)
[18:27:03] [PASSED] ALDERLAKE_S (B0)
[18:27:03] [PASSED] ALDERLAKE_S (C0)
[18:27:03] [PASSED] ALDERLAKE_S (D0)
[18:27:03] [PASSED] ALDERLAKE_P (A0)
[18:27:03] [PASSED] ALDERLAKE_P (B0)
[18:27:03] [PASSED] ALDERLAKE_P (C0)
[18:27:03] [PASSED] ALDERLAKE_S_RPLS (D0)
[18:27:03] [PASSED] ALDERLAKE_P_RPLU (E0)
[18:27:03] [PASSED] DG2_G10 (C0)
[18:27:03] [PASSED] DG2_G11 (B1)
[18:27:03] [PASSED] DG2_G12 (A1)
[18:27:03] [PASSED] METEORLAKE (g:A0, m:A0)
[18:27:03] [PASSED] METEORLAKE (g:A0, m:A0)
[18:27:03] [PASSED] METEORLAKE (g:A0, m:A0)
[18:27:03] [PASSED] LUNARLAKE (g:A0, m:A0)
[18:27:03] [PASSED] LUNARLAKE (g:B0, m:A0)
[18:27:03] [PASSED] BATTLEMAGE (g:A0, m:A1)
[18:27:03] ==================== [PASSED] xe_wa_gt =====================
[18:27:03] ====================== [PASSED] xe_wa ======================
[18:27:03] ============================================================
[18:27:03] Testing complete. Ran 122 tests: passed: 106, skipped: 16
[18:27:03] Elapsed time: 32.973s total, 4.462s configuring, 28.245s building, 0.213s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[18:27:03] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:27:05] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[18:27:27] Starting KUnit Kernel (1/1)...
[18:27:27] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:27:27] ================== drm_buddy (7 subtests) ==================
[18:27:27] [PASSED] drm_test_buddy_alloc_limit
[18:27:27] [PASSED] drm_test_buddy_alloc_optimistic
[18:27:27] [PASSED] drm_test_buddy_alloc_pessimistic
[18:27:27] [PASSED] drm_test_buddy_alloc_pathological
[18:27:27] [PASSED] drm_test_buddy_alloc_contiguous
[18:27:27] [PASSED] drm_test_buddy_alloc_clear
[18:27:27] [PASSED] drm_test_buddy_alloc_range_bias
[18:27:27] ==================== [PASSED] drm_buddy ====================
[18:27:27] ============= drm_cmdline_parser (40 subtests) =============
[18:27:27] [PASSED] drm_test_cmdline_force_d_only
[18:27:27] [PASSED] drm_test_cmdline_force_D_only_dvi
[18:27:27] [PASSED] drm_test_cmdline_force_D_only_hdmi
[18:27:27] [PASSED] drm_test_cmdline_force_D_only_not_digital
[18:27:27] [PASSED] drm_test_cmdline_force_e_only
[18:27:27] [PASSED] drm_test_cmdline_res
[18:27:27] [PASSED] drm_test_cmdline_res_vesa
[18:27:27] [PASSED] drm_test_cmdline_res_vesa_rblank
[18:27:27] [PASSED] drm_test_cmdline_res_rblank
[18:27:27] [PASSED] drm_test_cmdline_res_bpp
[18:27:27] [PASSED] drm_test_cmdline_res_refresh
[18:27:27] [PASSED] drm_test_cmdline_res_bpp_refresh
[18:27:27] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[18:27:27] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[18:27:27] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[18:27:27] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[18:27:27] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[18:27:27] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[18:27:27] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[18:27:27] [PASSED] drm_test_cmdline_res_margins_force_on
[18:27:27] [PASSED] drm_test_cmdline_res_vesa_margins
[18:27:27] [PASSED] drm_test_cmdline_name
[18:27:27] [PASSED] drm_test_cmdline_name_bpp
[18:27:27] [PASSED] drm_test_cmdline_name_option
[18:27:27] [PASSED] drm_test_cmdline_name_bpp_option
[18:27:27] [PASSED] drm_test_cmdline_rotate_0
[18:27:27] [PASSED] drm_test_cmdline_rotate_90
[18:27:27] [PASSED] drm_test_cmdline_rotate_180
[18:27:27] [PASSED] drm_test_cmdline_rotate_270
[18:27:27] [PASSED] drm_test_cmdline_hmirror
[18:27:27] [PASSED] drm_test_cmdline_vmirror
[18:27:27] [PASSED] drm_test_cmdline_margin_options
[18:27:27] [PASSED] drm_test_cmdline_multiple_options
[18:27:27] [PASSED] drm_test_cmdline_bpp_extra_and_option
[18:27:27] [PASSED] drm_test_cmdline_extra_and_option
[18:27:27] [PASSED] drm_test_cmdline_freestanding_options
[18:27:27] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[18:27:27] [PASSED] drm_test_cmdline_panel_orientation
[18:27:27] ================ drm_test_cmdline_invalid =================
[18:27:27] [PASSED] margin_only
[18:27:27] [PASSED] interlace_only
[18:27:27] [PASSED] res_missing_x
[18:27:27] [PASSED] res_missing_y
[18:27:27] [PASSED] res_bad_y
[18:27:27] [PASSED] res_missing_y_bpp
[18:27:27] [PASSED] res_bad_bpp
[18:27:27] [PASSED] res_bad_refresh
[18:27:27] [PASSED] res_bpp_refresh_force_on_off
[18:27:27] [PASSED] res_invalid_mode
[18:27:27] [PASSED] res_bpp_wrong_place_mode
[18:27:27] [PASSED] name_bpp_refresh
[18:27:27] [PASSED] name_refresh
[18:27:27] [PASSED] name_refresh_wrong_mode
[18:27:27] [PASSED] name_refresh_invalid_mode
[18:27:27] [PASSED] rotate_multiple
[18:27:27] [PASSED] rotate_invalid_val
[18:27:27] [PASSED] rotate_truncated
[18:27:27] [PASSED] invalid_option
[18:27:27] [PASSED] invalid_tv_option
[18:27:27] [PASSED] truncated_tv_option
[18:27:27] ============ [PASSED] drm_test_cmdline_invalid =============
[18:27:27] =============== drm_test_cmdline_tv_options ===============
[18:27:27] [PASSED] NTSC
[18:27:27] [PASSED] NTSC_443
[18:27:27] [PASSED] NTSC_J
[18:27:27] [PASSED] PAL
[18:27:27] [PASSED] PAL_M
[18:27:27] [PASSED] PAL_N
[18:27:27] [PASSED] SECAM
[18:27:27] [PASSED] MONO_525
[18:27:27] [PASSED] MONO_625
[18:27:27] =========== [PASSED] drm_test_cmdline_tv_options ===========
[18:27:27] =============== [PASSED] drm_cmdline_parser ================
[18:27:27] ========== drmm_connector_hdmi_init (19 subtests) ==========
[18:27:27] [PASSED] drm_test_connector_hdmi_init_valid
[18:27:27] [PASSED] drm_test_connector_hdmi_init_bpc_8
[18:27:27] [PASSED] drm_test_connector_hdmi_init_bpc_10
[18:27:27] [PASSED] drm_test_connector_hdmi_init_bpc_12
[18:27:27] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[18:27:27] [PASSED] drm_test_connector_hdmi_init_bpc_null
[18:27:27] [PASSED] drm_test_connector_hdmi_init_formats_empty
[18:27:27] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[18:27:27] [PASSED] drm_test_connector_hdmi_init_null_ddc
[18:27:27] [PASSED] drm_test_connector_hdmi_init_null_product
[18:27:27] [PASSED] drm_test_connector_hdmi_init_null_vendor
[18:27:27] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[18:27:27] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[18:27:27] [PASSED] drm_test_connector_hdmi_init_product_valid
[18:27:27] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[18:27:27] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[18:27:27] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[18:27:27] ========= drm_test_connector_hdmi_init_type_valid =========
[18:27:27] [PASSED] HDMI-A
[18:27:27] [PASSED] HDMI-B
[18:27:27] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[18:27:27] ======== drm_test_connector_hdmi_init_type_invalid ========
[18:27:27] [PASSED] Unknown
[18:27:27] [PASSED] VGA
[18:27:27] [PASSED] DVI-I
[18:27:27] [PASSED] DVI-D
[18:27:27] [PASSED] DVI-A
[18:27:27] [PASSED] Composite
[18:27:27] [PASSED] SVIDEO
[18:27:27] [PASSED] LVDS
[18:27:27] [PASSED] Component
[18:27:27] [PASSED] DIN
[18:27:27] [PASSED] DP
[18:27:27] [PASSED] TV
[18:27:27] [PASSED] eDP
[18:27:27] [PASSED] Virtual
[18:27:27] [PASSED] DSI
[18:27:27] [PASSED] DPI
[18:27:27] [PASSED] Writeback
[18:27:27] [PASSED] SPI
[18:27:27] [PASSED] USB
[18:27:27] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[18:27:27] ============ [PASSED] drmm_connector_hdmi_init =============
[18:27:27] ============= drmm_connector_init (3 subtests) =============
[18:27:27] [PASSED] drm_test_drmm_connector_init
[18:27:27] [PASSED] drm_test_drmm_connector_init_null_ddc
[18:27:27] ========= drm_test_drmm_connector_init_type_valid =========
[18:27:27] [PASSED] Unknown
[18:27:27] [PASSED] VGA
[18:27:27] [PASSED] DVI-I
[18:27:27] [PASSED] DVI-D
[18:27:27] [PASSED] DVI-A
[18:27:27] [PASSED] Composite
[18:27:27] [PASSED] SVIDEO
[18:27:27] [PASSED] LVDS
[18:27:27] [PASSED] Component
[18:27:27] [PASSED] DIN
[18:27:27] [PASSED] DP
[18:27:27] [PASSED] HDMI-A
[18:27:27] [PASSED] HDMI-B
[18:27:27] [PASSED] TV
[18:27:27] [PASSED] eDP
[18:27:27] [PASSED] Virtual
[18:27:27] [PASSED] DSI
[18:27:27] [PASSED] DPI
[18:27:27] [PASSED] Writeback
[18:27:27] [PASSED] SPI
[18:27:27] [PASSED] USB
[18:27:27] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[18:27:27] =============== [PASSED] drmm_connector_init ===============
[18:27:27] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[18:27:27] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[18:27:27] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[18:27:27] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[18:27:27] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[18:27:27] ========== drm_test_get_tv_mode_from_name_valid ===========
[18:27:27] [PASSED] NTSC
[18:27:27] [PASSED] NTSC-443
[18:27:27] [PASSED] NTSC-J
[18:27:27] [PASSED] PAL
[18:27:27] [PASSED] PAL-M
[18:27:27] [PASSED] PAL-N
[18:27:27] [PASSED] SECAM
[18:27:27] [PASSED] Mono
[18:27:27] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[18:27:27] [PASSED] drm_test_get_tv_mode_from_name_truncated
[18:27:27] ============ [PASSED] drm_get_tv_mode_from_name ============
[18:27:27] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[18:27:27] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[18:27:27] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[18:27:27] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[18:27:27] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[18:27:27] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[18:27:27] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[18:27:27] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[18:27:27] [PASSED] VIC 96
[18:27:27] [PASSED] VIC 97
[18:27:27] [PASSED] VIC 101
[18:27:27] [PASSED] VIC 102
[18:27:27] [PASSED] VIC 106
[18:27:27] [PASSED] VIC 107
[18:27:27] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[18:27:27] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[18:27:27] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[18:27:27] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[18:27:27] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[18:27:27] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[18:27:27] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[18:27:27] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[18:27:27] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[18:27:27] [PASSED] Automatic
[18:27:27] [PASSED] Full
[18:27:27] [PASSED] Limited 16:235
[18:27:27] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[18:27:27] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[18:27:27] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[18:27:27] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[18:27:27] === drm_test_drm_hdmi_connector_get_output_format_name ====
[18:27:27] [PASSED] RGB
[18:27:27] [PASSED] YUV 4:2:0
[18:27:27] [PASSED] YUV 4:2:2
[18:27:27] [PASSED] YUV 4:4:4
[18:27:27] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[18:27:27] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[18:27:27] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[18:27:27] ============= drm_damage_helper (21 subtests) ==============
[18:27:27] [PASSED] drm_test_damage_iter_no_damage
[18:27:27] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[18:27:27] [PASSED] drm_test_damage_iter_no_damage_src_moved
[18:27:27] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[18:27:27] [PASSED] drm_test_damage_iter_no_damage_not_visible
[18:27:27] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[18:27:27] [PASSED] drm_test_damage_iter_no_damage_no_fb
[18:27:27] [PASSED] drm_test_damage_iter_simple_damage
[18:27:27] [PASSED] drm_test_damage_iter_single_damage
[18:27:27] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[18:27:27] [PASSED] drm_test_damage_iter_single_damage_outside_src
[18:27:27] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[18:27:27] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[18:27:27] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[18:27:27] [PASSED] drm_test_damage_iter_single_damage_src_moved
[18:27:27] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[18:27:27] [PASSED] drm_test_damage_iter_damage
[18:27:27] [PASSED] drm_test_damage_iter_damage_one_intersect
[18:27:27] [PASSED] drm_test_damage_iter_damage_one_outside
[18:27:27] [PASSED] drm_test_damage_iter_damage_src_moved
[18:27:27] [PASSED] drm_test_damage_iter_damage_not_visible
[18:27:27] ================ [PASSED] drm_damage_helper ================
[18:27:27] ============== drm_dp_mst_helper (3 subtests) ==============
[18:27:27] ============== drm_test_dp_mst_calc_pbn_mode ==============
[18:27:27] [PASSED] Clock 154000 BPP 30 DSC disabled
[18:27:27] [PASSED] Clock 234000 BPP 30 DSC disabled
[18:27:27] [PASSED] Clock 297000 BPP 24 DSC disabled
[18:27:27] [PASSED] Clock 332880 BPP 24 DSC enabled
[18:27:27] [PASSED] Clock 324540 BPP 24 DSC enabled
[18:27:27] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[18:27:27] ============== drm_test_dp_mst_calc_pbn_div ===============
[18:27:27] [PASSED] Link rate 2000000 lane count 4
[18:27:27] [PASSED] Link rate 2000000 lane count 2
[18:27:27] [PASSED] Link rate 2000000 lane count 1
[18:27:27] [PASSED] Link rate 1350000 lane count 4
[18:27:27] [PASSED] Link rate 1350000 lane count 2
[18:27:27] [PASSED] Link rate 1350000 lane count 1
[18:27:27] [PASSED] Link rate 1000000 lane count 4
[18:27:27] [PASSED] Link rate 1000000 lane count 2
[18:27:27] [PASSED] Link rate 1000000 lane count 1
[18:27:27] [PASSED] Link rate 810000 lane count 4
[18:27:27] [PASSED] Link rate 810000 lane count 2
[18:27:27] [PASSED] Link rate 810000 lane count 1
[18:27:27] [PASSED] Link rate 540000 lane count 4
[18:27:27] [PASSED] Link rate 540000 lane count 2
[18:27:27] [PASSED] Link rate 540000 lane count 1
[18:27:27] [PASSED] Link rate 270000 lane count 4
[18:27:27] [PASSED] Link rate 270000 lane count 2
[18:27:27] [PASSED] Link rate 270000 lane count 1
[18:27:27] [PASSED] Link rate 162000 lane count 4
[18:27:27] [PASSED] Link rate 162000 lane count 2
[18:27:27] [PASSED] Link rate 162000 lane count 1
[18:27:27] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[18:27:27] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[18:27:27] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[18:27:27] [PASSED] DP_POWER_UP_PHY with port number
[18:27:27] [PASSED] DP_POWER_DOWN_PHY with port number
[18:27:27] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[18:27:27] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[18:27:27] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[18:27:27] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[18:27:27] [PASSED] DP_QUERY_PAYLOAD with port number
[18:27:27] [PASSED] DP_QUERY_PAYLOAD with VCPI
[18:27:27] [PASSED] DP_REMOTE_DPCD_READ with port number
[18:27:27] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[18:27:27] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[18:27:27] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[18:27:27] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[18:27:27] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[18:27:27] [PASSED] DP_REMOTE_I2C_READ with port number
[18:27:27] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[18:27:27] [PASSED] DP_REMOTE_I2C_READ with transactions array
[18:27:27] [PASSED] DP_REMOTE_I2C_WRITE with port number
[18:27:27] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[18:27:27] [PASSED] DP_REMOTE_I2C_WRITE with data array
[18:27:27] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[18:27:27] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[18:27:27] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[18:27:27] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[18:27:27] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[18:27:27] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[18:27:27] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[18:27:27] ================ [PASSED] drm_dp_mst_helper ================
[18:27:27] ================== drm_exec (7 subtests) ===================
[18:27:27] [PASSED] sanitycheck
[18:27:27] [PASSED] test_lock
[18:27:27] [PASSED] test_lock_unlock
[18:27:27] [PASSED] test_duplicates
[18:27:27] [PASSED] test_prepare
[18:27:27] [PASSED] test_prepare_array
[18:27:27] [PASSED] test_multiple_loops
[18:27:27] ==================== [PASSED] drm_exec =====================
[18:27:27] =========== drm_format_helper_test (17 subtests) ===========
[18:27:27] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[18:27:27] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[18:27:27] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[18:27:27] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[18:27:27] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[18:27:27] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[18:27:27] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[18:27:27] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[18:27:27] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[18:27:27] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[18:27:27] ============== drm_test_fb_xrgb8888_to_mono ===============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[18:27:27] ==================== drm_test_fb_swab =====================
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ================ [PASSED] drm_test_fb_swab =================
[18:27:27] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[18:27:27] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[18:27:27] [PASSED] single_pixel_source_buffer
[18:27:27] [PASSED] single_pixel_clip_rectangle
[18:27:27] [PASSED] well_known_colors
[18:27:27] [PASSED] destination_pitch
[18:27:27] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[18:27:27] ================= drm_test_fb_clip_offset =================
[18:27:27] [PASSED] pass through
[18:27:27] [PASSED] horizontal offset
[18:27:27] [PASSED] vertical offset
[18:27:27] [PASSED] horizontal and vertical offset
[18:27:27] [PASSED] horizontal offset (custom pitch)
[18:27:27] [PASSED] vertical offset (custom pitch)
[18:27:27] [PASSED] horizontal and vertical offset (custom pitch)
[18:27:27] ============= [PASSED] drm_test_fb_clip_offset =============
[18:27:27] ============== drm_test_fb_build_fourcc_list ==============
[18:27:27] [PASSED] no native formats
[18:27:27] [PASSED] XRGB8888 as native format
[18:27:27] [PASSED] remove duplicates
[18:27:27] [PASSED] convert alpha formats
[18:27:27] [PASSED] random formats
[18:27:27] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[18:27:27] =================== drm_test_fb_memcpy ====================
[18:27:27] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[18:27:27] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[18:27:27] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[18:27:27] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[18:27:27] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[18:27:27] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[18:27:27] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[18:27:27] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[18:27:27] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[18:27:27] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[18:27:27] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[18:27:27] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[18:27:27] =============== [PASSED] drm_test_fb_memcpy ================
[18:27:27] ============= [PASSED] drm_format_helper_test ==============
[18:27:27] ================= drm_format (18 subtests) =================
[18:27:27] [PASSED] drm_test_format_block_width_invalid
[18:27:27] [PASSED] drm_test_format_block_width_one_plane
[18:27:27] [PASSED] drm_test_format_block_width_two_plane
[18:27:27] [PASSED] drm_test_format_block_width_three_plane
[18:27:27] [PASSED] drm_test_format_block_width_tiled
[18:27:27] [PASSED] drm_test_format_block_height_invalid
[18:27:27] [PASSED] drm_test_format_block_height_one_plane
[18:27:27] [PASSED] drm_test_format_block_height_two_plane
[18:27:27] [PASSED] drm_test_format_block_height_three_plane
[18:27:27] [PASSED] drm_test_format_block_height_tiled
[18:27:27] [PASSED] drm_test_format_min_pitch_invalid
[18:27:27] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[18:27:27] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[18:27:27] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[18:27:27] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[18:27:27] [PASSED] drm_test_format_min_pitch_two_plane
[18:27:27] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[18:27:27] [PASSED] drm_test_format_min_pitch_tiled
[18:27:27] =================== [PASSED] drm_format ====================
[18:27:27] ============== drm_framebuffer (10 subtests) ===============
[18:27:27] ========== drm_test_framebuffer_check_src_coords ==========
[18:27:27] [PASSED] Success: source fits into fb
[18:27:27] [PASSED] Fail: overflowing fb with x-axis coordinate
[18:27:27] [PASSED] Fail: overflowing fb with y-axis coordinate
[18:27:27] [PASSED] Fail: overflowing fb with source width
[18:27:27] [PASSED] Fail: overflowing fb with source height
[18:27:27] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[18:27:27] [PASSED] drm_test_framebuffer_cleanup
[18:27:27] =============== drm_test_framebuffer_create ===============
[18:27:27] [PASSED] ABGR8888 normal sizes
[18:27:27] [PASSED] ABGR8888 max sizes
[18:27:27] [PASSED] ABGR8888 pitch greater than min required
[18:27:27] [PASSED] ABGR8888 pitch less than min required
[18:27:27] [PASSED] ABGR8888 Invalid width
[18:27:27] [PASSED] ABGR8888 Invalid buffer handle
[18:27:27] [PASSED] No pixel format
[18:27:27] [PASSED] ABGR8888 Width 0
[18:27:27] [PASSED] ABGR8888 Height 0
[18:27:27] [PASSED] ABGR8888 Out of bound height * pitch combination
[18:27:27] [PASSED] ABGR8888 Large buffer offset
[18:27:27] [PASSED] ABGR8888 Buffer offset for inexistent plane
[18:27:27] [PASSED] ABGR8888 Invalid flag
[18:27:27] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[18:27:27] [PASSED] ABGR8888 Valid buffer modifier
[18:27:27] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[18:27:27] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[18:27:27] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[18:27:27] [PASSED] NV12 Normal sizes
[18:27:27] [PASSED] NV12 Max sizes
[18:27:27] [PASSED] NV12 Invalid pitch
[18:27:27] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[18:27:27] [PASSED] NV12 different modifier per-plane
[18:27:27] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[18:27:27] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[18:27:27] [PASSED] NV12 Modifier for inexistent plane
[18:27:27] [PASSED] NV12 Handle for inexistent plane
[18:27:27] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[18:27:27] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[18:27:27] [PASSED] YVU420 Normal sizes
[18:27:27] [PASSED] YVU420 Max sizes
[18:27:27] [PASSED] YVU420 Invalid pitch
[18:27:27] [PASSED] YVU420 Different pitches
[18:27:27] [PASSED] YVU420 Different buffer offsets/pitches
[18:27:27] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[18:27:27] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[18:27:27] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[18:27:27] [PASSED] YVU420 Valid modifier
[18:27:27] [PASSED] YVU420 Different modifiers per plane
[18:27:27] [PASSED] YVU420 Modifier for inexistent plane
[18:27:27] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[18:27:27] [PASSED] X0L2 Normal sizes
[18:27:27] [PASSED] X0L2 Max sizes
[18:27:27] [PASSED] X0L2 Invalid pitch
[18:27:27] [PASSED] X0L2 Pitch greater than minimum required
[18:27:27] [PASSED] X0L2 Handle for inexistent plane
[18:27:27] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[18:27:27] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[18:27:27] [PASSED] X0L2 Valid modifier
[18:27:27] [PASSED] X0L2 Modifier for inexistent plane
[18:27:27] =========== [PASSED] drm_test_framebuffer_create ===========
[18:27:27] [PASSED] drm_test_framebuffer_free
[18:27:27] [PASSED] drm_test_framebuffer_init
[18:27:27] [PASSED] drm_test_framebuffer_init_bad_format
[18:27:27] [PASSED] drm_test_framebuffer_init_dev_mismatch
[18:27:27] [PASSED] drm_test_framebuffer_lookup
[18:27:27] [PASSED] drm_test_framebuffer_lookup_inexistent
[18:27:27] [PASSED] drm_test_framebuffer_modifiers_not_supported
[18:27:27] ================= [PASSED] drm_framebuffer =================
[18:27:27] ================ drm_gem_shmem (8 subtests) ================
[18:27:27] [PASSED] drm_gem_shmem_test_obj_create
[18:27:27] [PASSED] drm_gem_shmem_test_obj_create_private
[18:27:27] [PASSED] drm_gem_shmem_test_pin_pages
[18:27:27] [PASSED] drm_gem_shmem_test_vmap
[18:27:27] [PASSED] drm_gem_shmem_test_get_pages_sgt
[18:27:27] [PASSED] drm_gem_shmem_test_get_sg_table
[18:27:27] [PASSED] drm_gem_shmem_test_madvise
[18:27:27] [PASSED] drm_gem_shmem_test_purge
[18:27:27] ================== [PASSED] drm_gem_shmem ==================
[18:27:27] === drm_atomic_helper_connector_hdmi_check (22 subtests) ===
[18:27:27] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[18:27:27] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[18:27:27] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[18:27:27] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[18:27:27] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[18:27:27] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[18:27:27] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[18:27:27] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[18:27:27] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[18:27:27] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback
[18:27:27] [PASSED] drm_test_check_max_tmds_rate_format_fallback
[18:27:27] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[18:27:27] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[18:27:27] [PASSED] drm_test_check_output_bpc_dvi
[18:27:27] [PASSED] drm_test_check_output_bpc_format_vic_1
[18:27:27] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[18:27:27] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[18:27:27] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[18:27:27] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[18:27:27] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[18:27:27] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[18:27:27] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[18:27:27] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[18:27:27] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[18:27:27] [PASSED] drm_test_check_broadcast_rgb_value
[18:27:27] [PASSED] drm_test_check_bpc_8_value
[18:27:27] [PASSED] drm_test_check_bpc_10_value
[18:27:27] [PASSED] drm_test_check_bpc_12_value
[18:27:27] [PASSED] drm_test_check_format_value
[18:27:27] [PASSED] drm_test_check_tmds_char_value
[18:27:27] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[18:27:27] ================= drm_managed (2 subtests) =================
[18:27:27] [PASSED] drm_test_managed_release_action
[18:27:27] [PASSED] drm_test_managed_run_action
[18:27:27] =================== [PASSED] drm_managed ===================
[18:27:27] =================== drm_mm (6 subtests) ====================
[18:27:27] [PASSED] drm_test_mm_init
[18:27:27] [PASSED] drm_test_mm_debug
[18:27:27] [PASSED] drm_test_mm_align32
[18:27:27] [PASSED] drm_test_mm_align64
[18:27:27] [PASSED] drm_test_mm_lowest
[18:27:27] [PASSED] drm_test_mm_highest
[18:27:27] ===================== [PASSED] drm_mm ======================
[18:27:27] ============= drm_modes_analog_tv (5 subtests) =============
[18:27:27] [PASSED] drm_test_modes_analog_tv_mono_576i
[18:27:27] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[18:27:27] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[18:27:27] [PASSED] drm_test_modes_analog_tv_pal_576i
[18:27:27] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[18:27:27] =============== [PASSED] drm_modes_analog_tv ===============
stty: 'standard input': Inappropriate ioctl for device
[18:27:27] ============== drm_plane_helper (2 subtests) ===============
[18:27:27] =============== drm_test_check_plane_state ================
[18:27:27] [PASSED] clipping_simple
[18:27:27] [PASSED] clipping_rotate_reflect
[18:27:27] [PASSED] positioning_simple
[18:27:27] [PASSED] upscaling
[18:27:27] [PASSED] downscaling
[18:27:27] [PASSED] rounding1
[18:27:27] [PASSED] rounding2
[18:27:27] [PASSED] rounding3
[18:27:27] [PASSED] rounding4
[18:27:27] =========== [PASSED] drm_test_check_plane_state ============
[18:27:27] =========== drm_test_check_invalid_plane_state ============
[18:27:27] [PASSED] positioning_invalid
[18:27:27] [PASSED] upscaling_invalid
[18:27:27] [PASSED] downscaling_invalid
[18:27:27] ======= [PASSED] drm_test_check_invalid_plane_state ========
[18:27:27] ================ [PASSED] drm_plane_helper =================
[18:27:27] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[18:27:27] ====== drm_test_connector_helper_tv_get_modes_check =======
[18:27:27] [PASSED] None
[18:27:27] [PASSED] PAL
[18:27:27] [PASSED] NTSC
[18:27:27] [PASSED] Both, NTSC Default
[18:27:27] [PASSED] Both, PAL Default
[18:27:27] [PASSED] Both, NTSC Default, with PAL on command-line
[18:27:27] [PASSED] Both, PAL Default, with NTSC on command-line
[18:27:27] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[18:27:27] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[18:27:27] ================== drm_rect (9 subtests) ===================
[18:27:27] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[18:27:27] [PASSED] drm_test_rect_clip_scaled_not_clipped
[18:27:27] [PASSED] drm_test_rect_clip_scaled_clipped
[18:27:27] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[18:27:27] ================= drm_test_rect_intersect =================
[18:27:27] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[18:27:27] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[18:27:27] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[18:27:27] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[18:27:27] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[18:27:27] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[18:27:27] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[18:27:27] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[18:27:27] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[18:27:27] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[18:27:27] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[18:27:27] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[18:27:27] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[18:27:27] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[18:27:27] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[18:27:27] ============= [PASSED] drm_test_rect_intersect =============
[18:27:27] ================ drm_test_rect_calc_hscale ================
[18:27:27] [PASSED] normal use
[18:27:27] [PASSED] out of max range
[18:27:27] [PASSED] out of min range
[18:27:27] [PASSED] zero dst
[18:27:27] [PASSED] negative src
[18:27:27] [PASSED] negative dst
[18:27:27] ============ [PASSED] drm_test_rect_calc_hscale ============
[18:27:27] ================ drm_test_rect_calc_vscale ================
[18:27:27] [PASSED] normal use
[18:27:27] [PASSED] out of max range
[18:27:27] [PASSED] out of min range
[18:27:27] [PASSED] zero dst
[18:27:27] [PASSED] negative src
[18:27:27] [PASSED] negative dst
[18:27:27] ============ [PASSED] drm_test_rect_calc_vscale ============
[18:27:27] ================== drm_test_rect_rotate ===================
[18:27:27] [PASSED] reflect-x
[18:27:27] [PASSED] reflect-y
[18:27:27] [PASSED] rotate-0
[18:27:27] [PASSED] rotate-90
[18:27:27] [PASSED] rotate-180
[18:27:27] [PASSED] rotate-270
[18:27:27] ============== [PASSED] drm_test_rect_rotate ===============
[18:27:27] ================ drm_test_rect_rotate_inv =================
[18:27:27] [PASSED] reflect-x
[18:27:27] [PASSED] reflect-y
[18:27:27] [PASSED] rotate-0
[18:27:27] [PASSED] rotate-90
[18:27:27] [PASSED] rotate-180
[18:27:27] [PASSED] rotate-270
[18:27:27] ============ [PASSED] drm_test_rect_rotate_inv =============
[18:27:27] ==================== [PASSED] drm_rect =====================
[18:27:27] ============================================================
[18:27:27] Testing complete. Ran 526 tests: passed: 526
[18:27:27] Elapsed time: 24.299s total, 1.634s configuring, 22.498s building, 0.166s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[18:27:28] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:27:29] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
[18:27:37] Starting KUnit Kernel (1/1)...
[18:27:37] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:27:37] ================= ttm_device (5 subtests) ==================
[18:27:37] [PASSED] ttm_device_init_basic
[18:27:37] [PASSED] ttm_device_init_multiple
[18:27:37] [PASSED] ttm_device_fini_basic
[18:27:37] [PASSED] ttm_device_init_no_vma_man
[18:27:37] ================== ttm_device_init_pools ==================
[18:27:37] [PASSED] No DMA allocations, no DMA32 required
[18:27:37] [PASSED] DMA allocations, DMA32 required
[18:27:37] [PASSED] No DMA allocations, DMA32 required
[18:27:37] [PASSED] DMA allocations, no DMA32 required
[18:27:37] ============== [PASSED] ttm_device_init_pools ==============
[18:27:37] =================== [PASSED] ttm_device ====================
[18:27:37] ================== ttm_pool (8 subtests) ===================
[18:27:37] ================== ttm_pool_alloc_basic ===================
[18:27:37] [PASSED] One page
[18:27:37] [PASSED] More than one page
[18:27:37] [PASSED] Above the allocation limit
[18:27:37] [PASSED] One page, with coherent DMA mappings enabled
[18:27:37] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[18:27:37] ============== [PASSED] ttm_pool_alloc_basic ===============
[18:27:37] ============== ttm_pool_alloc_basic_dma_addr ==============
[18:27:37] [PASSED] One page
[18:27:37] [PASSED] More than one page
[18:27:37] [PASSED] Above the allocation limit
[18:27:37] [PASSED] One page, with coherent DMA mappings enabled
[18:27:37] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[18:27:37] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[18:27:37] [PASSED] ttm_pool_alloc_order_caching_match
[18:27:37] [PASSED] ttm_pool_alloc_caching_mismatch
[18:27:37] [PASSED] ttm_pool_alloc_order_mismatch
[18:27:37] [PASSED] ttm_pool_free_dma_alloc
[18:27:37] [PASSED] ttm_pool_free_no_dma_alloc
[18:27:37] [PASSED] ttm_pool_fini_basic
[18:27:37] ==================== [PASSED] ttm_pool =====================
[18:27:37] ================ ttm_resource (8 subtests) =================
[18:27:37] ================= ttm_resource_init_basic =================
[18:27:37] [PASSED] Init resource in TTM_PL_SYSTEM
[18:27:37] [PASSED] Init resource in TTM_PL_VRAM
[18:27:37] [PASSED] Init resource in a private placement
[18:27:37] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[18:27:37] ============= [PASSED] ttm_resource_init_basic =============
[18:27:37] [PASSED] ttm_resource_init_pinned
[18:27:37] [PASSED] ttm_resource_fini_basic
[18:27:37] [PASSED] ttm_resource_manager_init_basic
[18:27:37] [PASSED] ttm_resource_manager_usage_basic
[18:27:37] [PASSED] ttm_resource_manager_set_used_basic
[18:27:37] [PASSED] ttm_sys_man_alloc_basic
[18:27:37] [PASSED] ttm_sys_man_free_basic
[18:27:37] ================== [PASSED] ttm_resource ===================
[18:27:37] =================== ttm_tt (15 subtests) ===================
[18:27:37] ==================== ttm_tt_init_basic ====================
[18:27:37] [PASSED] Page-aligned size
[18:27:37] [PASSED] Extra pages requested
[18:27:37] ================ [PASSED] ttm_tt_init_basic ================
[18:27:37] [PASSED] ttm_tt_init_misaligned
[18:27:37] [PASSED] ttm_tt_fini_basic
[18:27:37] [PASSED] ttm_tt_fini_sg
[18:27:37] [PASSED] ttm_tt_fini_shmem
[18:27:37] [PASSED] ttm_tt_create_basic
[18:27:37] [PASSED] ttm_tt_create_invalid_bo_type
[18:27:37] [PASSED] ttm_tt_create_ttm_exists
[18:27:37] [PASSED] ttm_tt_create_failed
[18:27:37] [PASSED] ttm_tt_destroy_basic
[18:27:37] [PASSED] ttm_tt_populate_null_ttm
[18:27:37] [PASSED] ttm_tt_populate_populated_ttm
[18:27:37] [PASSED] ttm_tt_unpopulate_basic
[18:27:37] [PASSED] ttm_tt_unpopulate_empty_ttm
[18:27:37] [PASSED] ttm_tt_swapin_basic
[18:27:37] ===================== [PASSED] ttm_tt ======================
[18:27:37] =================== ttm_bo (14 subtests) ===================
[18:27:37] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[18:27:37] [PASSED] Cannot be interrupted and sleeps
[18:27:37] [PASSED] Cannot be interrupted, locks straight away
[18:27:37] [PASSED] Can be interrupted, sleeps
[18:27:37] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[18:27:37] [PASSED] ttm_bo_reserve_locked_no_sleep
[18:27:37] [PASSED] ttm_bo_reserve_no_wait_ticket
[18:27:37] [PASSED] ttm_bo_reserve_double_resv
[18:27:37] [PASSED] ttm_bo_reserve_interrupted
[18:27:37] [PASSED] ttm_bo_reserve_deadlock
[18:27:37] [PASSED] ttm_bo_unreserve_basic
[18:27:37] [PASSED] ttm_bo_unreserve_pinned
[18:27:37] [PASSED] ttm_bo_unreserve_bulk
[18:27:37] [PASSED] ttm_bo_put_basic
[18:27:37] [PASSED] ttm_bo_put_shared_resv
[18:27:37] [PASSED] ttm_bo_pin_basic
[18:27:37] [PASSED] ttm_bo_pin_unpin_resource
[18:27:37] [PASSED] ttm_bo_multiple_pin_one_unpin
[18:27:37] ===================== [PASSED] ttm_bo ======================
[18:27:37] ============== ttm_bo_validate (22 subtests) ===============
[18:27:37] ============== ttm_bo_init_reserved_sys_man ===============
[18:27:37] [PASSED] Buffer object for userspace
[18:27:37] [PASSED] Kernel buffer object
[18:27:37] [PASSED] Shared buffer object
[18:27:37] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[18:27:37] ============== ttm_bo_init_reserved_mock_man ==============
[18:27:37] [PASSED] Buffer object for userspace
[18:27:37] [PASSED] Kernel buffer object
[18:27:37] [PASSED] Shared buffer object
[18:27:37] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[18:27:37] [PASSED] ttm_bo_init_reserved_resv
[18:27:37] ================== ttm_bo_validate_basic ==================
[18:27:37] [PASSED] Buffer object for userspace
[18:27:37] [PASSED] Kernel buffer object
[18:27:37] [PASSED] Shared buffer object
[18:27:37] ============== [PASSED] ttm_bo_validate_basic ==============
[18:27:37] [PASSED] ttm_bo_validate_invalid_placement
[18:27:37] ============= ttm_bo_validate_same_placement ==============
[18:27:37] [PASSED] System manager
[18:27:37] [PASSED] VRAM manager
[18:27:37] ========= [PASSED] ttm_bo_validate_same_placement ==========
[18:27:37] [PASSED] ttm_bo_validate_failed_alloc
[18:27:37] [PASSED] ttm_bo_validate_pinned
[18:27:37] [PASSED] ttm_bo_validate_busy_placement
[18:27:37] ================ ttm_bo_validate_multihop =================
[18:27:37] [PASSED] Buffer object for userspace
[18:27:37] [PASSED] Kernel buffer object
[18:27:37] [PASSED] Shared buffer object
[18:27:37] ============ [PASSED] ttm_bo_validate_multihop =============
[18:27:37] ========== ttm_bo_validate_no_placement_signaled ==========
[18:27:37] [PASSED] Buffer object in system domain, no page vector
[18:27:37] [PASSED] Buffer object in system domain with an existing page vector
[18:27:37] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[18:27:37] ======== ttm_bo_validate_no_placement_not_signaled ========
[18:27:37] [PASSED] Buffer object for userspace
[18:27:37] [PASSED] Kernel buffer object
[18:27:37] [PASSED] Shared buffer object
[18:27:37] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[18:27:37] [PASSED] ttm_bo_validate_move_fence_signaled
[18:27:37] ========= ttm_bo_validate_move_fence_not_signaled =========
[18:27:37] [PASSED] Waits for GPU
[18:27:37] [PASSED] Tries to lock straight away
[18:27:37] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[18:27:37] [PASSED] ttm_bo_validate_swapout
[18:27:37] [PASSED] ttm_bo_validate_happy_evict
[18:27:37] [PASSED] ttm_bo_validate_all_pinned_evict
[18:27:37] [PASSED] ttm_bo_validate_allowed_only_evict
[18:27:37] [PASSED] ttm_bo_validate_deleted_evict
[18:27:37] [PASSED] ttm_bo_validate_busy_domain_evict
[18:27:37] [PASSED] ttm_bo_validate_evict_gutting
[18:27:37] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[18:27:37] ================= [PASSED] ttm_bo_validate =================
[18:27:37] ============================================================
[18:27:37] Testing complete. Ran 102 tests: passed: 102
[18:27:37] Elapsed time: 9.812s total, 1.624s configuring, 7.571s building, 0.549s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 22+ messages in thread* ✓ CI.Build: success for drm/xe/pmu: PMU interface for Xe (rev4)
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
` (5 preceding siblings ...)
2024-11-08 18:27 ` ✓ CI.KUnit: success " Patchwork
@ 2024-11-08 18:39 ` Patchwork
2024-11-08 18:41 ` ✗ CI.Hooks: failure " Patchwork
` (3 subsequent siblings)
10 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-11-08 18:39 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
== Series Details ==
Series: drm/xe/pmu: PMU interface for Xe (rev4)
URL : https://patchwork.freedesktop.org/series/139121/
State : success
== Summary ==
lib/modules/6.12.0-rc6-xe/kernel/sound/core/snd-hwdep.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/core/snd.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/core/snd-pcm.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/core/snd-compress.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/core/snd-timer.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soundcore.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/intel/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/intel/atom/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/intel/atom/sst/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-acpi.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-core.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/intel/common/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/intel/common/snd-soc-acpi-intel-match.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/amd/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/amd/acp/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/amd/acp/snd-soc-acpi-amd-match.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/amd/snd-acp-config.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-tgl.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-mlink.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-ptl.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-cnl.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-lnl.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-common.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-generic.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-mtl.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/amd/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/amd/snd-sof-amd-renoir.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/amd/snd-sof-amd-acp.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/snd-sof-utils.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/snd-sof-pci.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/snd-sof.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/snd-sof-probes.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/xtensa/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/sof/xtensa/snd-sof-xtensa-dsp.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/snd-soc-core.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/snd-soc-acpi.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/codecs/
lib/modules/6.12.0-rc6-xe/kernel/sound/soc/codecs/snd-soc-hdac-hda.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/hda/
lib/modules/6.12.0-rc6-xe/kernel/sound/hda/snd-intel-sdw-acpi.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/hda/ext/
lib/modules/6.12.0-rc6-xe/kernel/sound/hda/ext/snd-hda-ext-core.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/hda/snd-intel-dspcfg.ko
lib/modules/6.12.0-rc6-xe/kernel/sound/hda/snd-hda-core.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/kernel/
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/kernel/msr.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/kernel/cpuid.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/crypto/
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/crypto/sha512-ssse3.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/crypto/crct10dif-pclmul.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/crypto/ghash-clmulni-intel.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/crypto/sha1-ssse3.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/crypto/crc32-pclmul.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/crypto/sha256-ssse3.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/crypto/aesni-intel.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/crypto/polyval-clmulni.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/events/
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/events/intel/
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/events/intel/intel-cstate.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/events/rapl.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/kvm/
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.12.0-rc6-xe/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/
lib/modules/6.12.0-rc6-xe/kernel/crypto/crypto_simd.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/cmac.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/ccm.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/cryptd.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/polyval-generic.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/async_tx/
lib/modules/6.12.0-rc6-xe/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.12.0-rc6-xe/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.12.0-rc6-xe/build
lib/modules/6.12.0-rc6-xe/modules.alias.bin
lib/modules/6.12.0-rc6-xe/modules.builtin
lib/modules/6.12.0-rc6-xe/modules.softdep
lib/modules/6.12.0-rc6-xe/modules.alias
lib/modules/6.12.0-rc6-xe/modules.order
lib/modules/6.12.0-rc6-xe/modules.symbols
lib/modules/6.12.0-rc6-xe/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1731091148:package_x86_64_nodebug\r\e[0K'
+ sync
^[[0Ksection_end:1731091148:package_x86_64_nodebug
^[[0K
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 22+ messages in thread* ✗ CI.Hooks: failure for drm/xe/pmu: PMU interface for Xe (rev4)
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
` (6 preceding siblings ...)
2024-11-08 18:39 ` ✓ CI.Build: " Patchwork
@ 2024-11-08 18:41 ` Patchwork
2024-11-08 18:43 ` ✓ CI.checksparse: success " Patchwork
` (2 subsequent siblings)
10 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-11-08 18:41 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
== Series Details ==
Series: drm/xe/pmu: PMU interface for Xe (rev4)
URL : https://patchwork.freedesktop.org/series/139121/
State : failure
== Summary ==
run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
GEN Makefile
UPD include/config/kernel.release
UPD include/generated/utsrelease.h
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool
CALL ../scripts/checksyscalls.sh
INSTALL libsubcmd_headers
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
LD /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
AR /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
CC /workspace/kernel/build64-default/tools/objtool/weak.o
CC /workspace/kernel/build64-default/tools/objtool/check.o
CC /workspace/kernel/build64-default/tools/objtool/special.o
CC /workspace/kernel/build64-default/tools/objtool/builtin-check.o
CC /workspace/kernel/build64-default/tools/objtool/elf.o
CC /workspace/kernel/build64-default/tools/objtool/objtool.o
CC /workspace/kernel/build64-default/tools/objtool/orc_gen.o
CC /workspace/kernel/build64-default/tools/objtool/orc_dump.o
CC /workspace/kernel/build64-default/tools/objtool/libstring.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
CC /workspace/kernel/build64-default/tools/objtool/libctype.o
CC /workspace/kernel/build64-default/tools/objtool/str_error_r.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
CC /workspace/kernel/build64-default/tools/objtool/librbtree.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
LD /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
LD /workspace/kernel/build64-default/tools/objtool/objtool-in.o
LINK /workspace/kernel/build64-default/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-default'
++ nproc
+ make -j48 O=/workspace/kernel/build64-default W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-default'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
make[1]: Leaving directory '/workspace/kernel/build64-default'
run-parts: executing /workspace/ci/hooks/11-build-32b
+++ realpath /workspace/ci/hooks/11-build-32b
++ dirname /workspace/ci/hooks/11-build-32b
+ THIS_SCRIPT_DIR=/workspace/ci/hooks
+ SRC_DIR=/workspace/kernel
+ TOOLS_SRC_DIR=/workspace/ci
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ BUILD_DIR=/workspace/kernel/build64-default/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-default/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-default/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-default/build32'
GEN Makefile
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
make[1]: Leaving directory '/workspace/kernel/build64-default/build32'
+ cd /workspace/kernel/build64-default/build32
+ /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=m
Value of CONFIG_SND_DEBUG is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_SND_DEBUG is not set
New value: CONFIG_SND_DEBUG=y
Value of CONFIG_SND_HDA_INTEL is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: CONFIG_SND_HDA_INTEL=y
New value: CONFIG_SND_HDA_INTEL=m
Value of CONFIG_SND_HDA_CODEC_HDMI is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_SND_HDA_CODEC_HDMI is not set
New value: CONFIG_SND_HDA_CODEC_HDMI=m
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
#
# configuration written to .config
#
Value requested for CONFIG_HAVE_UID16 not in final .config
Requested value: CONFIG_HAVE_UID16=y
Actual value:
Value requested for CONFIG_UID16 not in final .config
Requested value: CONFIG_UID16=y
Actual value:
Value requested for CONFIG_X86_32 not in final .config
Requested value: CONFIG_X86_32=y
Actual value:
Value requested for CONFIG_OUTPUT_FORMAT not in final .config
Requested value: CONFIG_OUTPUT_FORMAT="elf32-i386"
Actual value: CONFIG_OUTPUT_FORMAT="elf64-x86-64"
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MIN not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MIN=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MIN=28
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MAX not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MAX=16
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MAX=32
Value requested for CONFIG_PGTABLE_LEVELS not in final .config
Requested value: CONFIG_PGTABLE_LEVELS=2
Actual value: CONFIG_PGTABLE_LEVELS=5
Value requested for CONFIG_X86_BIGSMP not in final .config
Requested value: # CONFIG_X86_BIGSMP is not set
Actual value:
Value requested for CONFIG_X86_INTEL_QUARK not in final .config
Requested value: # CONFIG_X86_INTEL_QUARK is not set
Actual value:
Value requested for CONFIG_X86_RDC321X not in final .config
Requested value: # CONFIG_X86_RDC321X is not set
Actual value:
Value requested for CONFIG_X86_32_NON_STANDARD not in final .config
Requested value: # CONFIG_X86_32_NON_STANDARD is not set
Actual value:
Value requested for CONFIG_X86_32_IRIS not in final .config
Requested value: # CONFIG_X86_32_IRIS is not set
Actual value:
Value requested for CONFIG_M486SX not in final .config
Requested value: # CONFIG_M486SX is not set
Actual value:
Value requested for CONFIG_M486 not in final .config
Requested value: # CONFIG_M486 is not set
Actual value:
Value requested for CONFIG_M586 not in final .config
Requested value: # CONFIG_M586 is not set
Actual value:
Value requested for CONFIG_M586TSC not in final .config
Requested value: # CONFIG_M586TSC is not set
Actual value:
Value requested for CONFIG_M586MMX not in final .config
Requested value: # CONFIG_M586MMX is not set
Actual value:
Value requested for CONFIG_M686 not in final .config
Requested value: CONFIG_M686=y
Actual value:
Value requested for CONFIG_MPENTIUMII not in final .config
Requested value: # CONFIG_MPENTIUMII is not set
Actual value:
Value requested for CONFIG_MPENTIUMIII not in final .config
Requested value: # CONFIG_MPENTIUMIII is not set
Actual value:
Value requested for CONFIG_MPENTIUMM not in final .config
Requested value: # CONFIG_MPENTIUMM is not set
Actual value:
Value requested for CONFIG_MPENTIUM4 not in final .config
Requested value: # CONFIG_MPENTIUM4 is not set
Actual value:
Value requested for CONFIG_MK6 not in final .config
Requested value: # CONFIG_MK6 is not set
Actual value:
Value requested for CONFIG_MK7 not in final .config
Requested value: # CONFIG_MK7 is not set
Actual value:
Value requested for CONFIG_MCRUSOE not in final .config
Requested value: # CONFIG_MCRUSOE is not set
Actual value:
Value requested for CONFIG_MEFFICEON not in final .config
Requested value: # CONFIG_MEFFICEON is not set
Actual value:
Value requested for CONFIG_MWINCHIPC6 not in final .config
Requested value: # CONFIG_MWINCHIPC6 is not set
Actual value:
Value requested for CONFIG_MWINCHIP3D not in final .config
Requested value: # CONFIG_MWINCHIP3D is not set
Actual value:
Value requested for CONFIG_MELAN not in final .config
Requested value: # CONFIG_MELAN is not set
Actual value:
Value requested for CONFIG_MGEODEGX1 not in final .config
Requested value: # CONFIG_MGEODEGX1 is not set
Actual value:
Value requested for CONFIG_MGEODE_LX not in final .config
Requested value: # CONFIG_MGEODE_LX is not set
Actual value:
Value requested for CONFIG_MCYRIXIII not in final .config
Requested value: # CONFIG_MCYRIXIII is not set
Actual value:
Value requested for CONFIG_MVIAC3_2 not in final .config
Requested value: # CONFIG_MVIAC3_2 is not set
Actual value:
Value requested for CONFIG_MVIAC7 not in final .config
Requested value: # CONFIG_MVIAC7 is not set
Actual value:
Value requested for CONFIG_X86_GENERIC not in final .config
Requested value: # CONFIG_X86_GENERIC is not set
Actual value:
Value requested for CONFIG_X86_INTERNODE_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_INTERNODE_CACHE_SHIFT=5
Actual value: CONFIG_X86_INTERNODE_CACHE_SHIFT=6
Value requested for CONFIG_X86_L1_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_L1_CACHE_SHIFT=5
Actual value: CONFIG_X86_L1_CACHE_SHIFT=6
Value requested for CONFIG_X86_USE_PPRO_CHECKSUM not in final .config
Requested value: CONFIG_X86_USE_PPRO_CHECKSUM=y
Actual value:
Value requested for CONFIG_X86_MINIMUM_CPU_FAMILY not in final .config
Requested value: CONFIG_X86_MINIMUM_CPU_FAMILY=6
Actual value: CONFIG_X86_MINIMUM_CPU_FAMILY=64
Value requested for CONFIG_CPU_SUP_TRANSMETA_32 not in final .config
Requested value: CONFIG_CPU_SUP_TRANSMETA_32=y
Actual value:
Value requested for CONFIG_CPU_SUP_VORTEX_32 not in final .config
Requested value: CONFIG_CPU_SUP_VORTEX_32=y
Actual value:
Value requested for CONFIG_HPET_TIMER not in final .config
Requested value: # CONFIG_HPET_TIMER is not set
Actual value: CONFIG_HPET_TIMER=y
Value requested for CONFIG_NR_CPUS_RANGE_END not in final .config
Requested value: CONFIG_NR_CPUS_RANGE_END=8
Actual value: CONFIG_NR_CPUS_RANGE_END=512
Value requested for CONFIG_NR_CPUS_DEFAULT not in final .config
Requested value: CONFIG_NR_CPUS_DEFAULT=8
Actual value: CONFIG_NR_CPUS_DEFAULT=64
Value requested for CONFIG_X86_ANCIENT_MCE not in final .config
Requested value: # CONFIG_X86_ANCIENT_MCE is not set
Actual value:
Value requested for CONFIG_X86_LEGACY_VM86 not in final .config
Requested value: # CONFIG_X86_LEGACY_VM86 is not set
Actual value:
Value requested for CONFIG_X86_ESPFIX32 not in final .config
Requested value: CONFIG_X86_ESPFIX32=y
Actual value:
Value requested for CONFIG_TOSHIBA not in final .config
Requested value: # CONFIG_TOSHIBA is not set
Actual value:
Value requested for CONFIG_X86_REBOOTFIXUPS not in final .config
Requested value: # CONFIG_X86_REBOOTFIXUPS is not set
Actual value:
Value requested for CONFIG_MICROCODE_INITRD32 not in final .config
Requested value: CONFIG_MICROCODE_INITRD32=y
Actual value:
Value requested for CONFIG_NOHIGHMEM not in final .config
Requested value: # CONFIG_NOHIGHMEM is not set
Actual value:
Value requested for CONFIG_HIGHMEM4G not in final .config
Requested value: CONFIG_HIGHMEM4G=y
Actual value:
Value requested for CONFIG_HIGHMEM64G not in final .config
Requested value: # CONFIG_HIGHMEM64G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_3G not in final .config
Requested value: CONFIG_VMSPLIT_3G=y
Actual value:
Value requested for CONFIG_VMSPLIT_3G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_3G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G not in final .config
Requested value: # CONFIG_VMSPLIT_2G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_2G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_1G not in final .config
Requested value: # CONFIG_VMSPLIT_1G is not set
Actual value:
Value requested for CONFIG_PAGE_OFFSET not in final .config
Requested value: CONFIG_PAGE_OFFSET=0xC0000000
Actual value:
Value requested for CONFIG_HIGHMEM not in final .config
Requested value: CONFIG_HIGHMEM=y
Actual value:
Value requested for CONFIG_X86_PAE not in final .config
Requested value: # CONFIG_X86_PAE is not set
Actual value:
Value requested for CONFIG_ARCH_FLATMEM_ENABLE not in final .config
Requested value: CONFIG_ARCH_FLATMEM_ENABLE=y
Actual value:
Value requested for CONFIG_ARCH_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_ARCH_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_ILLEGAL_POINTER_VALUE not in final .config
Requested value: CONFIG_ILLEGAL_POINTER_VALUE=0
Actual value: CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
Value requested for CONFIG_HIGHPTE not in final .config
Requested value: # CONFIG_HIGHPTE is not set
Actual value:
Value requested for CONFIG_COMPAT_VDSO not in final .config
Requested value: # CONFIG_COMPAT_VDSO is not set
Actual value:
Value requested for CONFIG_FUNCTION_PADDING_CFI not in final .config
Requested value: CONFIG_FUNCTION_PADDING_CFI=0
Actual value: CONFIG_FUNCTION_PADDING_CFI=11
Value requested for CONFIG_FUNCTION_PADDING_BYTES not in final .config
Requested value: CONFIG_FUNCTION_PADDING_BYTES=4
Actual value: CONFIG_FUNCTION_PADDING_BYTES=16
Value requested for CONFIG_APM not in final .config
Requested value: # CONFIG_APM is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K6 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K6 is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K7 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K7 is not set
Actual value:
Value requested for CONFIG_X86_GX_SUSPMOD not in final .config
Requested value: # CONFIG_X86_GX_SUSPMOD is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_ICH not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_ICH is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_SMI not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_SMI is not set
Actual value:
Value requested for CONFIG_X86_CPUFREQ_NFORCE2 not in final .config
Requested value: # CONFIG_X86_CPUFREQ_NFORCE2 is not set
Actual value:
Value requested for CONFIG_X86_LONGRUN not in final .config
Requested value: # CONFIG_X86_LONGRUN is not set
Actual value:
Value requested for CONFIG_X86_LONGHAUL not in final .config
Requested value: # CONFIG_X86_LONGHAUL is not set
Actual value:
Value requested for CONFIG_X86_E_POWERSAVER not in final .config
Requested value: # CONFIG_X86_E_POWERSAVER is not set
Actual value:
Value requested for CONFIG_PCI_GOBIOS not in final .config
Requested value: # CONFIG_PCI_GOBIOS is not set
Actual value:
Value requested for CONFIG_PCI_GOMMCONFIG not in final .config
Requested value: # CONFIG_PCI_GOMMCONFIG is not set
Actual value:
Value requested for CONFIG_PCI_GODIRECT not in final .config
Requested value: # CONFIG_PCI_GODIRECT is not set
Actual value:
Value requested for CONFIG_PCI_GOANY not in final .config
Requested value: CONFIG_PCI_GOANY=y
Actual value:
Value requested for CONFIG_PCI_BIOS not in final .config
Requested value: CONFIG_PCI_BIOS=y
Actual value:
Value requested for CONFIG_ISA not in final .config
Requested value: # CONFIG_ISA is not set
Actual value:
Value requested for CONFIG_SCx200 not in final .config
Requested value: # CONFIG_SCx200 is not set
Actual value:
Value requested for CONFIG_OLPC not in final .config
Requested value: # CONFIG_OLPC is not set
Actual value:
Value requested for CONFIG_ALIX not in final .config
Requested value: # CONFIG_ALIX is not set
Actual value:
Value requested for CONFIG_NET5501 not in final .config
Requested value: # CONFIG_NET5501 is not set
Actual value:
Value requested for CONFIG_GEOS not in final .config
Requested value: # CONFIG_GEOS is not set
Actual value:
Value requested for CONFIG_COMPAT_32 not in final .config
Requested value: CONFIG_COMPAT_32=y
Actual value:
Value requested for CONFIG_HAVE_ATOMIC_IOMAP not in final .config
Requested value: CONFIG_HAVE_ATOMIC_IOMAP=y
Actual value:
Value requested for CONFIG_ARCH_32BIT_OFF_T not in final .config
Requested value: CONFIG_ARCH_32BIT_OFF_T=y
Actual value:
Value requested for CONFIG_ARCH_WANT_IPC_PARSE_VERSION not in final .config
Requested value: CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
Actual value:
Value requested for CONFIG_MODULES_USE_ELF_REL not in final .config
Requested value: CONFIG_MODULES_USE_ELF_REL=y
Actual value:
Value requested for CONFIG_ARCH_MMAP_RND_BITS not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS=28
Value requested for CONFIG_CLONE_BACKWARDS not in final .config
Requested value: CONFIG_CLONE_BACKWARDS=y
Actual value:
Value requested for CONFIG_OLD_SIGSUSPEND3 not in final .config
Requested value: CONFIG_OLD_SIGSUSPEND3=y
Actual value:
Value requested for CONFIG_OLD_SIGACTION not in final .config
Requested value: CONFIG_OLD_SIGACTION=y
Actual value:
Value requested for CONFIG_ARCH_SPLIT_ARG64 not in final .config
Requested value: CONFIG_ARCH_SPLIT_ARG64=y
Actual value:
Value requested for CONFIG_FUNCTION_ALIGNMENT not in final .config
Requested value: CONFIG_FUNCTION_ALIGNMENT=4
Actual value: CONFIG_FUNCTION_ALIGNMENT=16
Value requested for CONFIG_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_FLATMEM_MANUAL not in final .config
Requested value: CONFIG_FLATMEM_MANUAL=y
Actual value:
Value requested for CONFIG_SPARSEMEM_MANUAL not in final .config
Requested value: # CONFIG_SPARSEMEM_MANUAL is not set
Actual value:
Value requested for CONFIG_FLATMEM not in final .config
Requested value: CONFIG_FLATMEM=y
Actual value:
Value requested for CONFIG_SPARSEMEM_STATIC not in final .config
Requested value: CONFIG_SPARSEMEM_STATIC=y
Actual value:
Value requested for CONFIG_BOUNCE not in final .config
Requested value: CONFIG_BOUNCE=y
Actual value:
Value requested for CONFIG_KMAP_LOCAL not in final .config
Requested value: CONFIG_KMAP_LOCAL=y
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_COMPAQ not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_COMPAQ is not set
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_IBM not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_IBM is not set
Actual value:
Value requested for CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH not in final .config
Requested value: CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH=y
Actual value:
Value requested for CONFIG_PCH_PHUB not in final .config
Requested value: # CONFIG_PCH_PHUB is not set
Actual value:
Value requested for CONFIG_SCSI_NSP32 not in final .config
Requested value: # CONFIG_SCSI_NSP32 is not set
Actual value:
Value requested for CONFIG_PATA_CS5520 not in final .config
Requested value: # CONFIG_PATA_CS5520 is not set
Actual value:
Value requested for CONFIG_PATA_CS5530 not in final .config
Requested value: # CONFIG_PATA_CS5530 is not set
Actual value:
Value requested for CONFIG_PATA_CS5535 not in final .config
Requested value: # CONFIG_PATA_CS5535 is not set
Actual value:
Value requested for CONFIG_PATA_CS5536 not in final .config
Requested value: # CONFIG_PATA_CS5536 is not set
Actual value:
Value requested for CONFIG_PATA_SC1200 not in final .config
Requested value: # CONFIG_PATA_SC1200 is not set
Actual value:
Value requested for CONFIG_PCH_GBE not in final .config
Requested value: # CONFIG_PCH_GBE is not set
Actual value:
Value requested for CONFIG_INPUT_WISTRON_BTNS not in final .config
Requested value: # CONFIG_INPUT_WISTRON_BTNS is not set
Actual value:
Value requested for CONFIG_SERIAL_TIMBERDALE not in final .config
Requested value: # CONFIG_SERIAL_TIMBERDALE is not set
Actual value:
Value requested for CONFIG_SERIAL_PCH_UART not in final .config
Requested value: # CONFIG_SERIAL_PCH_UART is not set
Actual value:
Value requested for CONFIG_HW_RANDOM_GEODE not in final .config
Requested value: CONFIG_HW_RANDOM_GEODE=y
Actual value:
Value requested for CONFIG_SONYPI not in final .config
Requested value: # CONFIG_SONYPI is not set
Actual value:
Value requested for CONFIG_PC8736x_GPIO not in final .config
Requested value: # CONFIG_PC8736x_GPIO is not set
Actual value:
Value requested for CONFIG_NSC_GPIO not in final .config
Requested value: # CONFIG_NSC_GPIO is not set
Actual value:
Value requested for CONFIG_I2C_EG20T not in final .config
Requested value: # CONFIG_I2C_EG20T is not set
Actual value:
Value requested for CONFIG_SCx200_ACB not in final .config
Requested value: # CONFIG_SCx200_ACB is not set
Actual value:
Value requested for CONFIG_PTP_1588_CLOCK_PCH not in final .config
Requested value: # CONFIG_PTP_1588_CLOCK_PCH is not set
Actual value:
Value requested for CONFIG_SBC8360_WDT not in final .config
Requested value: # CONFIG_SBC8360_WDT is not set
Actual value:
Value requested for CONFIG_SBC7240_WDT not in final .config
Requested value: # CONFIG_SBC7240_WDT is not set
Actual value:
Value requested for CONFIG_MFD_CS5535 not in final .config
Requested value: # CONFIG_MFD_CS5535 is not set
Actual value:
Value requested for CONFIG_AGP_ALI not in final .config
Requested value: # CONFIG_AGP_ALI is not set
Actual value:
Value requested for CONFIG_AGP_ATI not in final .config
Requested value: # CONFIG_AGP_ATI is not set
Actual value:
Value requested for CONFIG_AGP_AMD not in final .config
Requested value: # CONFIG_AGP_AMD is not set
Actual value:
Value requested for CONFIG_AGP_NVIDIA not in final .config
Requested value: # CONFIG_AGP_NVIDIA is not set
Actual value:
Value requested for CONFIG_AGP_SWORKS not in final .config
Requested value: # CONFIG_AGP_SWORKS is not set
Actual value:
Value requested for CONFIG_AGP_EFFICEON not in final .config
Requested value: # CONFIG_AGP_EFFICEON is not set
Actual value:
Value requested for CONFIG_SND_PCM not in final .config
Requested value: CONFIG_SND_PCM=y
Actual value: CONFIG_SND_PCM=m
Value requested for CONFIG_SND_HWDEP not in final .config
Requested value: CONFIG_SND_HWDEP=y
Actual value: CONFIG_SND_HWDEP=m
Value requested for CONFIG_SND_DYNAMIC_MINORS not in final .config
Requested value: # CONFIG_SND_DYNAMIC_MINORS is not set
Actual value: CONFIG_SND_DYNAMIC_MINORS=y
Value requested for CONFIG_SND_CS5530 not in final .config
Requested value: # CONFIG_SND_CS5530 is not set
Actual value:
Value requested for CONFIG_SND_CS5535AUDIO not in final .config
Requested value: # CONFIG_SND_CS5535AUDIO is not set
Actual value:
Value requested for CONFIG_SND_SIS7019 not in final .config
Requested value: # CONFIG_SND_SIS7019 is not set
Actual value:
Value requested for CONFIG_SND_HDA not in final .config
Requested value: CONFIG_SND_HDA=y
Actual value: CONFIG_SND_HDA=m
Value requested for CONFIG_SND_HDA_CORE not in final .config
Requested value: CONFIG_SND_HDA_CORE=y
Actual value: CONFIG_SND_HDA_CORE=m
Value requested for CONFIG_SND_INTEL_DSP_CONFIG not in final .config
Requested value: CONFIG_SND_INTEL_DSP_CONFIG=y
Actual value: CONFIG_SND_INTEL_DSP_CONFIG=m
Value requested for CONFIG_SND_INTEL_SOUNDWIRE_ACPI not in final .config
Requested value: CONFIG_SND_INTEL_SOUNDWIRE_ACPI=y
Actual value: CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m
Value requested for CONFIG_LEDS_OT200 not in final .config
Requested value: # CONFIG_LEDS_OT200 is not set
Actual value:
Value requested for CONFIG_PCH_DMA not in final .config
Requested value: # CONFIG_PCH_DMA is not set
Actual value:
Value requested for CONFIG_CLKSRC_I8253 not in final .config
Requested value: CONFIG_CLKSRC_I8253=y
Actual value:
Value requested for CONFIG_MAILBOX not in final .config
Requested value: # CONFIG_MAILBOX is not set
Actual value: CONFIG_MAILBOX=y
Value requested for CONFIG_CRYPTO_SERPENT_SSE2_586 not in final .config
Requested value: # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_TWOFISH_586 not in final .config
Requested value: # CONFIG_CRYPTO_TWOFISH_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_GEODE not in final .config
Requested value: # CONFIG_CRYPTO_DEV_GEODE is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_HIFN_795X not in final .config
Requested value: # CONFIG_CRYPTO_DEV_HIFN_795X is not set
Actual value:
Value requested for CONFIG_CRYPTO_LIB_POLY1305_RSIZE not in final .config
Requested value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
Actual value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
Value requested for CONFIG_AUDIT_GENERIC not in final .config
Requested value: CONFIG_AUDIT_GENERIC=y
Actual value:
Value requested for CONFIG_GENERIC_VDSO_32 not in final .config
Requested value: CONFIG_GENERIC_VDSO_32=y
Actual value:
Value requested for CONFIG_DEBUG_KMAP_LOCAL not in final .config
Requested value: # CONFIG_DEBUG_KMAP_LOCAL is not set
Actual value:
Value requested for CONFIG_DEBUG_HIGHMEM not in final .config
Requested value: # CONFIG_DEBUG_HIGHMEM is not set
Actual value:
Value requested for CONFIG_HAVE_DEBUG_STACKOVERFLOW not in final .config
Requested value: CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
Actual value:
Value requested for CONFIG_DEBUG_STACKOVERFLOW not in final .config
Requested value: # CONFIG_DEBUG_STACKOVERFLOW is not set
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_TRACER not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_RETVAL not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
Actual value:
Value requested for CONFIG_DRM_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_KUNIT_TEST=m
Actual value:
Value requested for CONFIG_DRM_XE_WERROR not in final .config
Requested value: CONFIG_DRM_XE_WERROR=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG not in final .config
Requested value: CONFIG_DRM_XE_DEBUG=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG_MEM not in final .config
Requested value: CONFIG_DRM_XE_DEBUG_MEM=y
Actual value:
Value requested for CONFIG_DRM_XE_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_XE_KUNIT_TEST=m
Actual value:
++ nproc
+ make -j48 ARCH=i386 olddefconfig
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
#
# configuration written to .config
#
++ nproc
+ make -j48 ARCH=i386
SYNC include/config/auto.conf.cmd
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
GEN Makefile
WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h
WRAP arch/x86/include/generated/uapi/asm/errno.h
WRAP arch/x86/include/generated/uapi/asm/fcntl.h
WRAP arch/x86/include/generated/uapi/asm/ioctl.h
UPD include/generated/uapi/linux/version.h
WRAP arch/x86/include/generated/uapi/asm/ioctls.h
WRAP arch/x86/include/generated/uapi/asm/ipcbuf.h
WRAP arch/x86/include/generated/uapi/asm/param.h
WRAP arch/x86/include/generated/uapi/asm/poll.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h
WRAP arch/x86/include/generated/uapi/asm/resource.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h
WRAP arch/x86/include/generated/uapi/asm/socket.h
WRAP arch/x86/include/generated/uapi/asm/sockios.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h
WRAP arch/x86/include/generated/uapi/asm/termbits.h
WRAP arch/x86/include/generated/uapi/asm/termios.h
SYSTBL arch/x86/include/generated/asm/syscalls_32.h
WRAP arch/x86/include/generated/uapi/asm/types.h
HOSTCC arch/x86/tools/relocs_32.o
HOSTCC arch/x86/tools/relocs_64.o
UPD include/generated/compile.h
HOSTCC arch/x86/tools/relocs_common.o
WRAP arch/x86/include/generated/asm/early_ioremap.h
WRAP arch/x86/include/generated/asm/mcs_spinlock.h
HOSTCC scripts/kallsyms
HOSTCC scripts/sorttable
WRAP arch/x86/include/generated/asm/mmzone.h
WRAP arch/x86/include/generated/asm/irq_regs.h
HOSTCC scripts/asn1_compiler
WRAP arch/x86/include/generated/asm/kmap_size.h
WRAP arch/x86/include/generated/asm/local64.h
WRAP arch/x86/include/generated/asm/mmiowb.h
WRAP arch/x86/include/generated/asm/module.lds.h
WRAP arch/x86/include/generated/asm/rwonce.h
HOSTCC scripts/selinux/mdp/mdp
HOSTCC scripts/selinux/genheaders/genheaders
HOSTLD arch/x86/tools/relocs
UPD include/config/kernel.release
UPD include/generated/utsrelease.h
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
CC scripts/mod/devicetable-offsets.s
UPD scripts/mod/devicetable-offsets.h
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/sumversion.o
HOSTCC scripts/mod/symsearch.o
HOSTLD scripts/mod/modpost
CC kernel/bounds.s
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
UPD include/generated/timeconst.h
UPD include/generated/bounds.h
CC arch/x86/kernel/asm-offsets.s
UPD include/generated/asm-offsets.h
CALL /workspace/kernel/scripts/checksyscalls.sh
LDS scripts/module.lds
HOSTCC usr/gen_init_cpio
CC init/main.o
CC certs/system_keyring.o
CC init/do_mounts.o
CC init/do_mounts_initrd.o
UPD init/utsversion-tmp.h
CC init/initramfs.o
CC ipc/util.o
CC init/calibrate.o
CC ipc/msgutil.o
CC mm/filemap.o
CC ipc/msg.o
CC init/init_task.o
CC arch/x86/realmode/init.o
CC block/bdev.o
CC mm/mempool.o
CC io_uring/io_uring.o
CC ipc/sem.o
CC io_uring/opdef.o
AS arch/x86/entry/entry.o
CC security/commoncap.o
AS arch/x86/lib/atomic64_cx8_32.o
CC mm/oom_kill.o
AR arch/x86/crypto/built-in.a
CC security/keys/gc.o
GEN security/selinux/flask.h security/selinux/av_permissions.h
AR arch/x86/net/built-in.a
CC arch/x86/video/video-common.o
CC block/partitions/core.o
CC security/integrity/iint.o
AR virt/lib/built-in.a
CC arch/x86/pci/i386.o
CC arch/x86/mm/pat/set_memory.o
AS arch/x86/realmode/rm/header.o
CC arch/x86/power/cpu.o
CC arch/x86/events/amd/core.o
CC security/selinux/avc.o
AR arch/x86/entry/vsyscall/built-in.a
AR arch/x86/virt/svm/built-in.a
AR arch/x86/platform/atom/built-in.a
CC fs/notify/dnotify/dnotify.o
AR drivers/cache/built-in.a
CC security/lsm_syscalls.o
CC lib/math/div64.o
CC net/core/sock.o
CC sound/core/seq/seq.o
AR drivers/irqchip/built-in.a
AR arch/x86/virt/vmx/built-in.a
AR virt/built-in.a
CC arch/x86/kernel/fpu/init.o
HOSTCC certs/extract-cert
CC security/keys/key.o
AR arch/x86/virt/built-in.a
AR arch/x86/platform/ce4100/built-in.a
AS arch/x86/lib/checksum_32.o
CC arch/x86/kernel/cpu/mce/core.o
AS arch/x86/realmode/rm/trampoline_32.o
CC arch/x86/entry/vdso/vma.o
CC arch/x86/platform/efi/memmap.o
AR drivers/pwm/built-in.a
AR drivers/bus/mhi/built-in.a
CC kernel/sched/core.o
AS arch/x86/realmode/rm/stack.o
AR drivers/bus/built-in.a
CC arch/x86/events/amd/lbr.o
AR drivers/leds/trigger/built-in.a
CC arch/x86/lib/cmdline.o
AR drivers/leds/blink/built-in.a
CC drivers/pci/msi/pcidev_msi.o
AS arch/x86/realmode/rm/reboot.o
CC crypto/asymmetric_keys/asymmetric_type.o
CC security/keys/keyring.o
AR drivers/leds/simple/built-in.a
CC drivers/leds/led-core.o
AS arch/x86/realmode/rm/wakeup_asm.o
CC arch/x86/realmode/rm/wakemain.o
AS arch/x86/lib/cmpxchg8b_emu.o
CC lib/math/gcd.o
CC arch/x86/lib/cpu.o
CC lib/math/lcm.o
CC security/keys/keyctl.o
CC arch/x86/realmode/rm/video-mode.o
CC lib/math/int_log.o
GEN usr/initramfs_data.cpio
CC lib/crypto/mpi/generic_mpih-lshift.o
COPY usr/initramfs_inc_data
CERT certs/x509_certificate_list
AS usr/initramfs_data.o
CERT certs/signing_key.x509
AS certs/system_certificates.o
AR usr/built-in.a
AR certs/built-in.a
CC lib/crypto/memneq.o
CC lib/math/int_pow.o
CC arch/x86/kernel/fpu/bugs.o
AS arch/x86/realmode/rm/copy.o
CC net/ethernet/eth.o
AS arch/x86/realmode/rm/bioscall.o
CC lib/math/int_sqrt.o
CC arch/x86/realmode/rm/regs.o
CC arch/x86/kernel/fpu/core.o
CC sound/core/seq/seq_lock.o
CC arch/x86/kernel/cpu/mce/severity.o
CC lib/math/reciprocal_div.o
CC arch/x86/realmode/rm/video-vga.o
AR arch/x86/video/built-in.a
CC arch/x86/kernel/cpu/mce/genpool.o
CC lib/math/rational.o
CC arch/x86/realmode/rm/video-vesa.o
CC security/integrity/integrity_audit.o
CC lib/crypto/mpi/generic_mpih-mul1.o
CC arch/x86/lib/delay.o
CC arch/x86/entry/vdso/extable.o
CC drivers/pci/msi/api.o
CC drivers/leds/led-class.o
CC lib/crypto/mpi/generic_mpih-mul2.o
CC crypto/asymmetric_keys/restrict.o
LDS arch/x86/entry/vdso/vdso32/vdso32.lds
CC arch/x86/realmode/rm/video-bios.o
CC kernel/locking/mutex.o
CC kernel/power/qos.o
AR fs/notify/dnotify/built-in.a
CC kernel/printk/printk.o
CC kernel/irq/irqdesc.o
CC kernel/rcu/update.o
CC arch/x86/pci/init.o
CC fs/notify/inotify/inotify_fsnotify.o
CC net/core/request_sock.o
CC arch/x86/power/hibernate_32.o
PASYMS arch/x86/realmode/rm/pasyms.h
CC arch/x86/platform/efi/quirks.o
CC net/core/skbuff.o
CC block/partitions/msdos.o
LDS arch/x86/realmode/rm/realmode.lds
AR kernel/livepatch/built-in.a
CC lib/crypto/mpi/generic_mpih-mul3.o
CC net/core/datagram.o
LD arch/x86/realmode/rm/realmode.elf
AS arch/x86/lib/getuser.o
CC sound/core/seq/seq_clientmgr.o
RELOCS arch/x86/realmode/rm/realmode.relocs
OBJCOPY arch/x86/realmode/rm/realmode.bin
AS arch/x86/realmode/rmpiggy.o
CC net/core/stream.o
GEN arch/x86/lib/inat-tables.c
AR arch/x86/realmode/built-in.a
CC arch/x86/lib/insn-eval.o
CC lib/crypto/mpi/generic_mpih-rshift.o
CC kernel/rcu/sync.o
CC arch/x86/platform/efi/efi.o
CC arch/x86/platform/efi/efi_32.o
AR lib/math/built-in.a
CC lib/crypto/mpi/generic_mpih-sub1.o
CC arch/x86/events/amd/ibs.o
CC crypto/asymmetric_keys/signature.o
CC arch/x86/kernel/fpu/regset.o
CC arch/x86/kernel/fpu/signal.o
AS arch/x86/platform/efi/efi_stub_32.o
CC sound/core/seq/seq_memory.o
CC drivers/leds/led-triggers.o
CC arch/x86/mm/pat/memtype.o
CC arch/x86/kernel/fpu/xstate.o
CC block/fops.o
CC fs/notify/inotify/inotify_user.o
CC sound/core/seq/seq_queue.o
CC arch/x86/lib/insn.o
AS arch/x86/entry/vdso/vdso32/note.o
CC security/keys/permission.o
CC drivers/pci/msi/msi.o
AS arch/x86/entry/vdso/vdso32/system_call.o
AS arch/x86/power/hibernate_asm_32.o
AR security/integrity/built-in.a
CC arch/x86/power/hibernate.o
AS arch/x86/entry/vdso/vdso32/sigreturn.o
CC arch/x86/pci/pcbios.o
CC arch/x86/events/intel/core.o
CC arch/x86/entry/vdso/vdso32/vclock_gettime.o
CC kernel/irq/handle.o
CC kernel/irq/manage.o
CC arch/x86/events/zhaoxin/core.o
CC kernel/irq/spurious.o
CC ipc/shm.o
CC init/version.o
CC kernel/irq/resend.o
CC crypto/asymmetric_keys/public_key.o
CC block/partitions/efi.o
CC kernel/rcu/srcutree.o
CC lib/crypto/mpi/generic_mpih-add1.o
CC security/selinux/hooks.o
AR net/ethernet/built-in.a
CC arch/x86/kernel/cpu/mce/intel.o
CC arch/x86/events/intel/bts.o
CC net/core/scm.o
CC net/core/gen_stats.o
CC kernel/irq/chip.o
CC arch/x86/lib/kaslr.o
CC kernel/power/main.o
CC kernel/irq/dummychip.o
AR init/built-in.a
CC kernel/irq/devres.o
CC kernel/locking/semaphore.o
CC mm/fadvise.o
CC arch/x86/events/intel/ds.o
AR drivers/leds/built-in.a
CC security/keys/process_keys.o
CC security/keys/request_key.o
CC arch/x86/platform/efi/runtime-map.o
CC arch/x86/lib/memcpy_32.o
CC security/keys/request_key_auth.o
CC kernel/power/console.o
AS arch/x86/lib/memmove_32.o
CC arch/x86/mm/pat/memtype_interval.o
CC kernel/power/process.o
CC lib/crypto/utils.o
CC arch/x86/lib/misc.o
CC arch/x86/entry/vdso/vdso32/vgetcpu.o
CC crypto/api.o
CC arch/x86/lib/pc-conf-reg.o
AR arch/x86/power/built-in.a
CC kernel/power/suspend.o
CC arch/x86/events/amd/uncore.o
HOSTCC arch/x86/entry/vdso/vdso2c
AR fs/notify/inotify/built-in.a
CC kernel/power/hibernate.o
AR fs/notify/fanotify/built-in.a
CC fs/notify/fsnotify.o
CC kernel/rcu/tree.o
CC lib/crypto/mpi/mpicoder.o
CC sound/core/seq/seq_fifo.o
AR arch/x86/events/zhaoxin/built-in.a
CC arch/x86/pci/mmconfig_32.o
CC fs/nfs_common/nfsacl.o
CC arch/x86/kernel/acpi/boot.o
CC arch/x86/kernel/cpu/mce/amd.o
CC fs/iomap/trace.o
CC drivers/pci/msi/irqdomain.o
AS arch/x86/lib/putuser.o
AS arch/x86/lib/retpoline.o
ASN.1 crypto/asymmetric_keys/x509.asn1.[ch]
ASN.1 crypto/asymmetric_keys/x509_akid.asn1.[ch]
AR arch/x86/kernel/fpu/built-in.a
CC crypto/asymmetric_keys/x509_loader.o
CC fs/iomap/iter.o
CC arch/x86/lib/string_32.o
CC arch/x86/kernel/acpi/sleep.o
AS arch/x86/kernel/acpi/wakeup_32.o
CC arch/x86/lib/strstr_32.o
CC fs/iomap/buffered-io.o
CC arch/x86/lib/usercopy.o
AR block/partitions/built-in.a
CC arch/x86/kernel/cpu/mce/threshold.o
CC block/bio.o
CC arch/x86/entry/vdso/vdso32-setup.o
CC kernel/locking/rwsem.o
CC fs/iomap/direct-io.o
CC fs/iomap/fiemap.o
CC crypto/asymmetric_keys/x509_public_key.o
AR arch/x86/mm/pat/built-in.a
CC arch/x86/mm/init.o
CC fs/iomap/seek.o
ASN.1 crypto/asymmetric_keys/pkcs7.asn1.[ch]
CC fs/nfs_common/grace.o
CC ipc/syscall.o
CC lib/crypto/chacha.o
CC lib/crypto/aes.o
CC arch/x86/events/core.o
AR arch/x86/platform/efi/built-in.a
CC arch/x86/kernel/acpi/cstate.o
AR arch/x86/platform/geode/built-in.a
CC kernel/irq/autoprobe.o
AR arch/x86/platform/iris/built-in.a
CC arch/x86/platform/intel/iosf_mbi.o
CC arch/x86/lib/usercopy_32.o
CC kernel/printk/printk_safe.o
CC arch/x86/events/probe.o
CC security/keys/user_defined.o
CC lib/crypto/mpi/mpi-add.o
CC sound/core/seq/seq_prioq.o
VDSO arch/x86/entry/vdso/vdso32.so.dbg
CC mm/maccess.o
CC arch/x86/events/utils.o
CC arch/x86/pci/direct.o
OBJCOPY arch/x86/entry/vdso/vdso32.so
VDSO2C arch/x86/entry/vdso/vdso-image-32.c
CC arch/x86/entry/vdso/vdso-image-32.o
CC kernel/irq/irqdomain.o
CC fs/notify/notification.o
CC arch/x86/events/rapl.o
CC security/min_addr.o
CC arch/x86/lib/msr-smp.o
CC crypto/asymmetric_keys/pkcs7_trust.o
CC security/security.o
CC arch/x86/lib/cache-smp.o
AR arch/x86/entry/vdso/built-in.a
AS arch/x86/entry/entry_32.o
CC security/lsm_audit.o
AR drivers/pci/msi/built-in.a
CC security/device_cgroup.o
CC lib/crypto/mpi/mpi-bit.o
CC drivers/pci/pcie/portdrv.o
CC arch/x86/entry/syscall_32.o
CC drivers/pci/pcie/rcec.o
AR arch/x86/events/amd/built-in.a
CC drivers/pci/pcie/aspm.o
CC arch/x86/lib/msr.o
CC ipc/ipc_sysctl.o
AS arch/x86/lib/msr-reg.o
CC kernel/sched/fair.o
CC kernel/sched/build_policy.o
CC drivers/pci/pcie/pme.o
CC kernel/locking/percpu-rwsem.o
AR arch/x86/kernel/acpi/built-in.a
CC kernel/sched/build_utility.o
CC kernel/irq/proc.o
CC fs/nfs_common/common.o
CC crypto/asymmetric_keys/pkcs7_verify.o
CC kernel/printk/nbcon.o
CC fs/iomap/swapfile.o
CC io_uring/kbuf.o
CC security/keys/proc.o
CC io_uring/rsrc.o
CC crypto/cipher.o
CC arch/x86/pci/mmconfig-shared.o
CC kernel/power/snapshot.o
AR arch/x86/platform/intel/built-in.a
CC arch/x86/mm/init_32.o
AR arch/x86/platform/intel-mid/built-in.a
CC mm/page-writeback.o
AR arch/x86/platform/intel-quark/built-in.a
CC fs/notify/group.o
AR arch/x86/platform/olpc/built-in.a
CC io_uring/notif.o
AR arch/x86/platform/scx200/built-in.a
CC sound/core/seq/seq_timer.o
CC io_uring/tctx.o
AR arch/x86/platform/ts5500/built-in.a
CC ipc/mqueue.o
CC io_uring/filetable.o
AR arch/x86/platform/uv/built-in.a
AR arch/x86/platform/built-in.a
AR arch/x86/kernel/cpu/mce/built-in.a
AR drivers/pci/pwrctl/built-in.a
CC mm/folio-compat.o
CC arch/x86/kernel/cpu/mtrr/mtrr.o
CC arch/x86/kernel/cpu/mtrr/if.o
AR sound/i2c/other/built-in.a
AR sound/i2c/built-in.a
CC crypto/asymmetric_keys/x509.asn1.o
CC arch/x86/kernel/cpu/mtrr/generic.o
CC crypto/asymmetric_keys/x509_akid.asn1.o
CC lib/crypto/mpi/mpi-cmp.o
CC crypto/asymmetric_keys/x509_cert_parser.o
CC lib/crypto/mpi/mpi-sub-ui.o
CC arch/x86/kernel/cpu/mtrr/cleanup.o
CC crypto/asymmetric_keys/pkcs7.asn1.o
CC kernel/locking/spinlock.o
CC arch/x86/lib/msr-reg-export.o
CC kernel/printk/printk_ringbuffer.o
CC security/keys/sysctl.o
CC kernel/printk/sysctl.o
CC security/selinux/selinuxfs.o
AR fs/nfs_common/built-in.a
CC lib/crypto/mpi/mpi-div.o
AR sound/drivers/opl3/built-in.a
AR sound/drivers/opl4/built-in.a
AR sound/drivers/mpu401/built-in.a
CC ipc/namespace.o
AR sound/drivers/vx/built-in.a
AR sound/drivers/pcsp/built-in.a
CC kernel/irq/migration.o
AS arch/x86/lib/hweight.o
AR sound/drivers/built-in.a
CC crypto/compress.o
CC block/elevator.o
CC arch/x86/entry/common.o
CC security/keys/keyctl_pkey.o
CC arch/x86/lib/iomem.o
CC fs/notify/mark.o
CC kernel/irq/cpuhotplug.o
AR fs/iomap/built-in.a
CC fs/notify/fdinfo.o
CC sound/core/sound.o
CC kernel/locking/osq_lock.o
CC arch/x86/pci/fixup.o
CC crypto/algapi.o
CC arch/x86/pci/acpi.o
AR drivers/pci/pcie/built-in.a
CC drivers/pci/hotplug/pci_hotplug_core.o
AR drivers/pci/controller/dwc/built-in.a
AR drivers/pci/controller/mobiveil/built-in.a
AR drivers/pci/controller/plda/built-in.a
CC drivers/pci/hotplug/acpi_pcihp.o
AR drivers/pci/controller/built-in.a
CC sound/core/seq/seq_system.o
CC crypto/asymmetric_keys/pkcs7_parser.o
CC arch/x86/mm/fault.o
AR sound/isa/ad1816a/built-in.a
CC arch/x86/events/intel/knc.o
CC drivers/video/console/dummycon.o
AR sound/isa/ad1848/built-in.a
AR sound/isa/cs423x/built-in.a
CC arch/x86/kernel/cpu/mtrr/amd.o
AR sound/isa/es1688/built-in.a
CC drivers/video/console/vgacon.o
CC kernel/irq/pm.o
AR sound/pci/ac97/built-in.a
AR sound/pci/ali5451/built-in.a
AR sound/isa/galaxy/built-in.a
CC arch/x86/mm/ioremap.o
AR sound/pci/asihpi/built-in.a
AR sound/isa/gus/built-in.a
CC kernel/locking/qspinlock.o
AR sound/isa/msnd/built-in.a
CC arch/x86/lib/atomic64_32.o
AR sound/pci/au88x0/built-in.a
AR sound/isa/opti9xx/built-in.a
CC arch/x86/pci/legacy.o
AR sound/pci/aw2/built-in.a
CC arch/x86/events/msr.o
AR sound/isa/sb/built-in.a
AR sound/pci/ctxfi/built-in.a
CC lib/crypto/mpi/mpi-mod.o
AR sound/ppc/built-in.a
AR sound/isa/wavefront/built-in.a
CC io_uring/rw.o
AR sound/pci/ca0106/built-in.a
AR sound/isa/wss/built-in.a
AR kernel/printk/built-in.a
AR sound/pci/cs46xx/built-in.a
AR sound/isa/built-in.a
CC io_uring/net.o
AR sound/pci/cs5535audio/built-in.a
CC io_uring/poll.o
CC arch/x86/lib/inat.o
CC io_uring/eventfd.o
AR sound/pci/lola/built-in.a
CC arch/x86/events/intel/lbr.o
AR sound/pci/lx6464es/built-in.a
CC arch/x86/kernel/apic/apic.o
AR sound/pci/echoaudio/built-in.a
AR sound/pci/emu10k1/built-in.a
AR sound/pci/hda/built-in.a
CC [M] sound/pci/hda/hda_bind.o
AR sound/pci/ice1712/built-in.a
CC [M] sound/pci/hda/hda_codec.o
AR security/keys/built-in.a
CC arch/x86/events/intel/p4.o
CC arch/x86/pci/irq.o
AR arch/x86/lib/built-in.a
AR arch/x86/lib/lib.a
CC kernel/irq/msi.o
CC arch/x86/events/intel/p6.o
CC arch/x86/events/intel/pt.o
AR sound/arm/built-in.a
CC lib/crypto/arc4.o
CC arch/x86/events/intel/uncore.o
CC lib/crypto/gf128mul.o
AR crypto/asymmetric_keys/built-in.a
AS arch/x86/entry/thunk.o
CC lib/crypto/blake2s.o
CC kernel/locking/rtmutex_api.o
AR arch/x86/entry/built-in.a
CC arch/x86/kernel/cpu/mtrr/cyrix.o
CC lib/crypto/blake2s-generic.o
CC sound/core/seq/seq_ports.o
CC lib/crypto/mpi/mpi-mul.o
CC kernel/power/swap.o
AR drivers/pci/switch/built-in.a
CC ipc/mq_sysctl.o
CC drivers/video/backlight/backlight.o
CC fs/quota/dquot.o
CC lib/crypto/mpi/mpih-cmp.o
AR sound/sh/built-in.a
CC arch/x86/kernel/kprobes/core.o
AR drivers/pci/hotplug/built-in.a
CC lib/crypto/mpi/mpih-div.o
CC drivers/pci/access.o
CC fs/quota/quota_v2.o
CC lib/crypto/mpi/mpih-mul.o
CC fs/quota/quota_tree.o
CC lib/crypto/mpi/mpi-pow.o
AR fs/notify/built-in.a
CC [M] sound/pci/hda/hda_jack.o
AR sound/pci/korg1212/built-in.a
CC lib/crypto/mpi/mpiutil.o
CC lib/zlib_inflate/inffast.o
CC net/core/gen_estimator.o
CC block/blk-core.o
CC mm/readahead.o
CC net/core/net_namespace.o
CC crypto/scatterwalk.o
CC lib/zlib_inflate/inflate.o
AR ipc/built-in.a
AR drivers/video/console/built-in.a
CC lib/zlib_inflate/infutil.o
CC arch/x86/kernel/apic/apic_common.o
CC kernel/locking/qrwlock.o
CC arch/x86/kernel/cpu/mtrr/centaur.o
CC kernel/dma/mapping.o
CC kernel/entry/common.o
CC kernel/module/main.o
CC kernel/module/strict_rwx.o
CC security/selinux/netlink.o
CC kernel/module/kmod.o
CC arch/x86/mm/extable.o
CC kernel/entry/syscall_user_dispatch.o
CC sound/core/seq/seq_info.o
CC sound/core/seq/seq_dummy.o
CC kernel/module/tree_lookup.o
CC arch/x86/kernel/cpu/microcode/core.o
CC kernel/module/kallsyms.o
CC kernel/rcu/rcu_segcblist.o
CC lib/crypto/sha1.o
CC security/selinux/nlmsgtab.o
CC net/core/secure_seq.o
CC arch/x86/kernel/kprobes/opt.o
CC kernel/dma/direct.o
CC arch/x86/pci/common.o
CC drivers/pci/bus.o
AR drivers/video/backlight/built-in.a
CC arch/x86/pci/early.o
CC kernel/dma/ops_helpers.o
AR drivers/video/fbdev/core/built-in.a
CC kernel/irq/affinity.o
AR drivers/video/fbdev/omap/built-in.a
AR drivers/video/fbdev/omap2/omapfb/dss/built-in.a
AR drivers/video/fbdev/omap2/omapfb/displays/built-in.a
CC arch/x86/kernel/cpu/mtrr/legacy.o
AR drivers/video/fbdev/omap2/omapfb/built-in.a
CC kernel/dma/remap.o
CC lib/zlib_inflate/inftrees.o
AR sound/pci/mixart/built-in.a
AR kernel/locking/built-in.a
AR lib/crypto/mpi/built-in.a
AR drivers/video/fbdev/omap2/built-in.a
CC arch/x86/pci/bus_numa.o
CC arch/x86/pci/amd_bus.o
AR drivers/video/fbdev/built-in.a
AR net/802/built-in.a
CC crypto/proc.o
CC lib/crypto/sha256.o
CC drivers/video/aperture.o
CC io_uring/uring_cmd.o
CC crypto/aead.o
CC arch/x86/kernel/cpu/cacheinfo.o
CC lib/zlib_inflate/inflate_syms.o
CC mm/swap.o
CC kernel/power/user.o
CC arch/x86/kernel/cpu/scattered.o
CC crypto/geniv.o
CC arch/x86/kernel/cpu/microcode/intel.o
AR sound/synth/emux/built-in.a
AR sound/core/seq/built-in.a
AR sound/synth/built-in.a
CC sound/core/init.o
CC arch/x86/events/intel/uncore_nhmex.o
CC fs/quota/quota.o
CC fs/quota/kqid.o
AR kernel/rcu/built-in.a
CC kernel/time/time.o
CC kernel/irq/matrix.o
CC kernel/futex/core.o
CC kernel/power/poweroff.o
CC arch/x86/kernel/cpu/topology_common.o
AR arch/x86/kernel/cpu/mtrr/built-in.a
CC arch/x86/kernel/apic/apic_noop.o
CC kernel/time/timer.o
AR sound/pci/nm256/built-in.a
CC fs/quota/netlink.o
CC arch/x86/kernel/cpu/topology_ext.o
CC kernel/cgroup/cgroup.o
CC kernel/cgroup/rstat.o
CC arch/x86/mm/mmap.o
AR lib/zlib_inflate/built-in.a
AR kernel/entry/built-in.a
CC net/core/flow_dissector.o
CC kernel/cgroup/namespace.o
CC kernel/trace/trace_clock.o
CC drivers/pci/probe.o
CC kernel/module/procfs.o
CC kernel/futex/syscalls.o
CC drivers/video/cmdline.o
AR lib/crypto/built-in.a
CC lib/zlib_deflate/deflate.o
CC arch/x86/kernel/cpu/microcode/amd.o
AR arch/x86/kernel/kprobes/built-in.a
CC kernel/futex/pi.o
CC security/selinux/netif.o
CC lib/zlib_deflate/deftree.o
CC arch/x86/kernel/apic/ipi.o
AR sound/usb/misc/built-in.a
CC io_uring/openclose.o
CC net/netlink/af_netlink.o
AR sound/usb/usx2y/built-in.a
CC net/sched/sch_generic.o
AR sound/usb/caiaq/built-in.a
CC net/sched/sch_mq.o
AR arch/x86/pci/built-in.a
AR sound/usb/6fire/built-in.a
CC kernel/bpf/core.o
AR sound/usb/hiface/built-in.a
CC kernel/time/hrtimer.o
CC kernel/time/timekeeping.o
AR sound/usb/bcd2000/built-in.a
AR net/bpf/built-in.a
AR sound/usb/built-in.a
CC io_uring/sqpoll.o
CC io_uring/xattr.o
CC io_uring/nop.o
CC kernel/trace/ring_buffer.o
CC net/sched/sch_frag.o
CC [M] sound/pci/hda/hda_auto_parser.o
CC kernel/events/core.o
CC net/sched/sch_api.o
CC crypto/lskcipher.o
CC arch/x86/mm/pgtable.o
CC kernel/time/ntp.o
AR kernel/power/built-in.a
CC kernel/module/sysfs.o
CC kernel/events/ring_buffer.o
CC kernel/events/callchain.o
CC sound/core/memory.o
CC net/sched/sch_blackhole.o
CC net/netlink/genetlink.o
CC net/ethtool/ioctl.o
AR kernel/dma/built-in.a
CC block/blk-sysfs.o
CC drivers/video/nomodeset.o
CC net/netfilter/core.o
AR sound/pci/oxygen/built-in.a
CC drivers/video/hdmi.o
AR fs/quota/built-in.a
CC io_uring/fs.o
CC fs/proc/task_mmu.o
CC net/ipv4/netfilter/nf_defrag_ipv4.o
CC arch/x86/kernel/apic/vector.o
CC fs/proc/inode.o
CC kernel/futex/requeue.o
AR kernel/irq/built-in.a
CC net/netfilter/nf_log.o
CC arch/x86/events/intel/uncore_snb.o
CC kernel/trace/trace.o
CC lib/zlib_deflate/deflate_syms.o
AR arch/x86/kernel/cpu/microcode/built-in.a
CC net/netfilter/nf_queue.o
CC arch/x86/kernel/cpu/topology_amd.o
CC fs/proc/root.o
CC mm/truncate.o
AR kernel/sched/built-in.a
CC fs/proc/base.o
CC net/ipv4/route.o
CC sound/core/control.o
CC lib/lzo/lzo1x_compress.o
CC net/ethtool/common.o
CC security/selinux/netnode.o
CC lib/lzo/lzo1x_decompress_safe.o
AR kernel/module/built-in.a
CC security/selinux/netport.o
CC arch/x86/mm/physaddr.o
CC security/selinux/status.o
AR lib/zlib_deflate/built-in.a
CC security/selinux/ss/ebitmap.o
CC crypto/skcipher.o
CC security/selinux/ss/hashtab.o
CC kernel/trace/trace_output.o
CC arch/x86/kernel/cpu/common.o
CC [M] sound/pci/hda/hda_sysfs.o
CC arch/x86/kernel/apic/init.o
AR drivers/video/built-in.a
CC arch/x86/kernel/apic/hw_nmi.o
CC arch/x86/kernel/apic/io_apic.o
CC kernel/futex/waitwake.o
CC block/blk-flush.o
CC drivers/pci/host-bridge.o
CC net/xfrm/xfrm_policy.o
CC net/xfrm/xfrm_state.o
CC drivers/pci/remove.o
CC net/unix/af_unix.o
CC net/ipv6/netfilter/ip6_tables.o
CC net/ipv4/netfilter/nf_reject_ipv4.o
CC io_uring/splice.o
CC arch/x86/kernel/apic/msi.o
AR lib/lzo/built-in.a
CC lib/lz4/lz4_decompress.o
CC kernel/time/clocksource.o
CC arch/x86/kernel/apic/probe_32.o
CC net/core/sysctl_net_core.o
CC arch/x86/mm/tlb.o
CC net/ipv6/af_inet6.o
CC arch/x86/events/intel/uncore_snbep.o
CC net/unix/garbage.o
CC mm/vmscan.o
CC net/ethtool/netlink.o
CC fs/proc/generic.o
CC net/netfilter/nf_sockopt.o
CC net/sched/cls_api.o
CC [M] sound/pci/hda/hda_controller.o
CC kernel/trace/trace_seq.o
CC kernel/fork.o
CC lib/zstd/zstd_decompress_module.o
CC lib/zstd/decompress/huf_decompress.o
CC arch/x86/events/intel/uncore_discovery.o
AR kernel/futex/built-in.a
CC lib/zstd/decompress/zstd_ddict.o
CC drivers/pci/pci.o
CC net/ipv6/netfilter/ip6table_filter.o
CC block/blk-settings.o
CC lib/zstd/decompress/zstd_decompress.o
CC lib/zstd/decompress/zstd_decompress_block.o
CC net/sched/act_api.o
CC lib/xz/xz_dec_syms.o
CC net/sched/sch_fifo.o
CC net/sched/cls_cgroup.o
CC security/selinux/ss/symtab.o
CC net/netlink/policy.o
CC crypto/seqiv.o
CC io_uring/sync.o
CC kernel/trace/trace_stat.o
CC sound/core/misc.o
CC fs/proc/array.o
CC security/selinux/ss/sidtab.o
CC kernel/time/jiffies.o
CC net/packet/af_packet.o
AR kernel/bpf/built-in.a
CC arch/x86/kernel/cpu/rdrand.o
CC arch/x86/kernel/cpu/match.o
CC lib/xz/xz_dec_stream.o
CC arch/x86/mm/cpu_entry_area.o
CC net/netfilter/utils.o
CC net/xfrm/xfrm_hash.o
CC kernel/exec_domain.o
CC net/ipv4/netfilter/ip_tables.o
CC net/core/dev.o
CC fs/proc/fd.o
CC lib/xz/xz_dec_lzma2.o
AR lib/lz4/built-in.a
CC io_uring/msg_ring.o
CC net/ipv6/netfilter/ip6table_mangle.o
CC block/blk-ioc.o
CC security/selinux/ss/avtab.o
CC arch/x86/kernel/cpu/bugs.o
CC kernel/time/timer_list.o
CC crypto/echainiv.o
CC net/ethtool/bitset.o
CC net/ethtool/strset.o
CC security/selinux/ss/policydb.o
CC net/ethtool/linkinfo.o
CC sound/core/device.o
AR arch/x86/kernel/apic/built-in.a
CC net/ethtool/linkmodes.o
CC kernel/panic.o
CC fs/proc/proc_tty.o
AR net/netlink/built-in.a
CC fs/proc/cmdline.o
CC fs/proc/consoles.o
CC fs/proc/cpuinfo.o
CC fs/proc/devices.o
CC fs/proc/interrupts.o
CC [M] sound/pci/hda/hda_proc.o
CC fs/proc/loadavg.o
AR drivers/idle/built-in.a
CC kernel/time/timeconv.o
CC kernel/time/timecounter.o
CC arch/x86/mm/maccess.o
CC fs/proc/meminfo.o
CC arch/x86/events/intel/cstate.o
CC io_uring/advise.o
CC sound/core/info.o
CC io_uring/epoll.o
CC kernel/cgroup/cgroup-v1.o
CC net/core/dev_addr_lists.o
CC lib/xz/xz_dec_bcj.o
CC arch/x86/mm/pgprot.o
CC net/unix/sysctl_net_unix.o
CC lib/dim/dim.o
CC arch/x86/kernel/cpu/aperfmperf.o
CC kernel/time/alarmtimer.o
CC arch/x86/kernel/cpu/cpuid-deps.o
CC block/blk-map.o
CC net/ipv4/inetpeer.o
CC arch/x86/kernel/cpu/umwait.o
MKCAP arch/x86/kernel/cpu/capflags.c
CC net/ipv4/protocol.o
CC crypto/ahash.o
CC net/netfilter/nfnetlink.o
CC arch/x86/kernel/cpu/powerflags.o
CC arch/x86/kernel/cpu/topology.o
CC kernel/time/posix-timers.o
CC net/ipv4/ip_input.o
CC net/ipv4/ip_fragment.o
CC kernel/time/posix-cpu-timers.o
CC kernel/cgroup/freezer.o
CC kernel/cgroup/legacy_freezer.o
CC lib/zstd/zstd_common_module.o
CC kernel/cgroup/pids.o
CC lib/dim/net_dim.o
CC kernel/cgroup/rdma.o
CC fs/proc/stat.o
AR drivers/char/ipmi/built-in.a
CC fs/kernfs/mount.o
AR lib/xz/built-in.a
CC drivers/acpi/acpica/dsargs.o
CC drivers/acpi/acpica/dscontrol.o
CC arch/x86/mm/pgtable_32.o
CC net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
AR drivers/acpi/pmic/built-in.a
AR arch/x86/events/intel/built-in.a
CC net/ipv4/netfilter/iptable_filter.o
CC drivers/acpi/acpica/dsdebug.o
AR arch/x86/events/built-in.a
CC net/ethtool/rss.o
CC fs/kernfs/inode.o
CC drivers/acpi/acpica/dsfield.o
CC lib/zstd/common/debug.o
CC kernel/trace/trace_printk.o
CC drivers/acpi/acpica/dsinit.o
CC sound/core/isadma.o
CC lib/zstd/common/entropy_common.o
CC fs/kernfs/dir.o
CC mm/shrinker.o
CC io_uring/statx.o
CC [M] sound/pci/hda/hda_hwdep.o
CC net/ipv4/ip_forward.o
CC drivers/acpi/acpica/dsmethod.o
AR net/unix/built-in.a
CC net/sched/ematch.o
AR sound/pci/pcxhr/built-in.a
CC net/xfrm/xfrm_input.o
LDS arch/x86/kernel/vmlinux.lds
AS arch/x86/kernel/head_32.o
CC sound/core/vmaster.o
CC lib/zstd/common/error_private.o
CC kernel/events/hw_breakpoint.o
CC kernel/events/uprobes.o
CC arch/x86/kernel/cpu/proc.o
CC drivers/pci/pci-driver.o
CC block/blk-merge.o
CC lib/zstd/common/fse_decompress.o
CC drivers/pci/search.o
CC arch/x86/mm/iomap_32.o
CC fs/proc/uptime.o
CC lib/zstd/common/zstd_common.o
CC drivers/pci/rom.o
CC drivers/pci/setup-res.o
CC net/core/dst.o
CC drivers/pci/irq.o
CC kernel/trace/pid_list.o
CC crypto/shash.o
CC net/ipv4/netfilter/iptable_mangle.o
CC net/netfilter/nfnetlink_log.o
CC io_uring/timeout.o
CC drivers/acpi/acpica/dsmthdat.o
CC net/ipv6/netfilter/nf_conntrack_reasm.o
CC kernel/time/posix-clock.o
CC kernel/time/itimer.o
CC lib/dim/rdma_dim.o
CC kernel/cpu.o
CC io_uring/fdinfo.o
CC kernel/cgroup/cpuset.o
CC kernel/trace/trace_sched_switch.o
CC net/ipv4/netfilter/ipt_REJECT.o
CC drivers/pnp/pnpacpi/core.o
CC [M] sound/pci/hda/patch_hdmi.o
CC arch/x86/kernel/cpu/feat_ctl.o
CC sound/core/ctljack.o
CC io_uring/cancel.o
AR lib/zstd/built-in.a
CC mm/shmem.o
CC arch/x86/mm/hugetlbpage.o
CC fs/proc/util.o
CC drivers/pnp/core.o
CC drivers/pnp/card.o
CC arch/x86/mm/dump_pagetables.o
CC drivers/acpi/acpica/dsobject.o
CC block/blk-timeout.o
CC net/xfrm/xfrm_output.o
AR lib/dim/built-in.a
CC net/ethtool/linkstate.o
CC lib/fonts/fonts.o
CC net/ethtool/debug.o
CC net/xfrm/xfrm_sysctl.o
AR net/packet/built-in.a
CC net/xfrm/xfrm_replay.o
CC security/selinux/ss/services.o
CC net/ethtool/wol.o
CC lib/fonts/font_8x16.o
CC fs/kernfs/file.o
CC net/ethtool/features.o
CC sound/core/jack.o
AR net/sched/built-in.a
CC net/ethtool/privflags.o
CC kernel/time/clockevents.o
CC drivers/acpi/dptf/int340x_thermal.o
CC net/xfrm/xfrm_device.o
CC drivers/pnp/pnpacpi/rsparser.o
CC crypto/akcipher.o
CC net/xfrm/xfrm_nat_keepalive.o
CC fs/proc/version.o
CC drivers/acpi/acpica/dsopcode.o
CC net/xfrm/xfrm_algo.o
CC net/xfrm/xfrm_user.o
CC [M] sound/pci/hda/hda_eld.o
AR lib/fonts/built-in.a
CC lib/argv_split.o
CC kernel/exit.o
AR net/dsa/built-in.a
CC kernel/softirq.o
CC net/netfilter/nf_conntrack_core.o
CC drivers/acpi/acpica/dspkginit.o
CC kernel/resource.o
CC kernel/sysctl.o
AR drivers/acpi/dptf/built-in.a
CC kernel/capability.o
CC kernel/ptrace.o
CC net/ipv6/anycast.o
CC [M] net/ipv4/netfilter/iptable_nat.o
CC drivers/pci/vpd.o
CC kernel/user.o
CC net/ipv6/netfilter/nf_reject_ipv6.o
CC arch/x86/mm/highmem_32.o
CC io_uring/waitid.o
CC block/blk-lib.o
CC kernel/signal.o
CC net/ipv4/ip_options.o
CC kernel/time/tick-common.o
CC lib/bug.o
CC sound/core/timer.o
CC fs/sysfs/file.o
AR kernel/events/built-in.a
CC fs/sysfs/dir.o
CC io_uring/register.o
CC fs/proc/softirqs.o
CC drivers/acpi/acpica/dsutils.o
CC io_uring/truncate.o
CC io_uring/memmap.o
CC kernel/trace/trace_nop.o
CC kernel/trace/blktrace.o
CC net/ethtool/rings.o
CC fs/kernfs/symlink.o
AR drivers/amba/built-in.a
CC drivers/acpi/acpica/dswexec.o
AR drivers/clk/actions/built-in.a
AR drivers/clk/analogbits/built-in.a
AR drivers/clk/bcm/built-in.a
CC crypto/sig.o
AR drivers/clk/imgtec/built-in.a
AR drivers/clk/imx/built-in.a
AR drivers/clk/ingenic/built-in.a
AR drivers/clk/mediatek/built-in.a
CC io_uring/io-wq.o
AR drivers/clk/microchip/built-in.a
CC fs/sysfs/symlink.o
AR drivers/clk/mstar/built-in.a
AR drivers/clk/mvebu/built-in.a
AR drivers/pnp/pnpacpi/built-in.a
CC drivers/pnp/driver.o
AR drivers/clk/ralink/built-in.a
AR drivers/clk/renesas/built-in.a
CC fs/proc/namespaces.o
AR drivers/clk/socfpga/built-in.a
CC arch/x86/kernel/head32.o
AR drivers/clk/sophgo/built-in.a
AR arch/x86/mm/built-in.a
AR drivers/clk/sprd/built-in.a
CC net/ipv4/ip_output.o
CC io_uring/futex.o
AR drivers/clk/starfive/built-in.a
CC lib/buildid.o
AR drivers/clk/sunxi-ng/built-in.a
AR drivers/clk/ti/built-in.a
CC net/ipv4/ip_sockglue.o
CC arch/x86/kernel/ebda.o
CC drivers/pci/setup-bus.o
AR drivers/clk/versatile/built-in.a
CC net/ipv4/inet_hashtables.o
CC drivers/acpi/acpica/dswload.o
CC block/blk-mq.o
CC arch/x86/kernel/cpu/intel.o
AR drivers/clk/xilinx/built-in.a
AR drivers/clk/built-in.a
CC net/ipv4/inet_timewait_sock.o
CC [M] sound/pci/hda/hda_intel.o
AR net/ipv4/netfilter/built-in.a
CC kernel/cgroup/misc.o
AR sound/pci/riptide/built-in.a
AR sound/pci/rme9652/built-in.a
CC net/ipv4/inet_connection_sock.o
CC net/ipv4/tcp.o
CC net/ipv4/tcp_input.o
CC net/ipv4/tcp_output.o
CC net/ipv4/tcp_timer.o
AR sound/firewire/built-in.a
CC net/netfilter/nf_conntrack_standalone.o
CC drivers/dma/dw/core.o
CC drivers/dma/hsu/hsu.o
AR fs/kernfs/built-in.a
CC kernel/time/tick-broadcast.o
CC drivers/dma/dw/dw.o
CC drivers/acpi/x86/apple.o
CC drivers/dma/dw/idma32.o
CC crypto/kpp.o
CC drivers/acpi/tables.o
CC drivers/acpi/x86/cmos_rtc.o
CC drivers/pnp/resource.o
CC drivers/acpi/acpica/dswload2.o
CC net/ethtool/channels.o
CC fs/sysfs/mount.o
CC drivers/acpi/x86/lpss.o
CC fs/proc/self.o
CC drivers/acpi/x86/s2idle.o
CC mm/util.o
CC lib/clz_tab.o
CC net/ipv6/netfilter/ip6t_ipv6header.o
CC lib/cmdline.o
CC kernel/cgroup/debug.o
CC sound/core/hrtimer.o
CC net/core/netevent.o
CC drivers/acpi/osi.o
CC lib/cpumask.o
CC lib/ctype.o
CC net/ethtool/coalesce.o
CC security/selinux/ss/conditional.o
CC drivers/acpi/osl.o
CC kernel/time/tick-broadcast-hrtimer.o
CC drivers/acpi/acpica/dswscope.o
CC drivers/acpi/acpica/dswstate.o
CC arch/x86/kernel/cpu/tsx.o
CC fs/sysfs/group.o
AR drivers/soc/apple/built-in.a
CC net/ipv6/ip6_output.o
AR drivers/soc/aspeed/built-in.a
AR drivers/soc/bcm/built-in.a
AR drivers/soc/fsl/built-in.a
CC kernel/trace/trace_events.o
CC net/ipv6/ip6_input.o
AR drivers/soc/fujitsu/built-in.a
CC io_uring/napi.o
AR drivers/dma/hsu/built-in.a
CC fs/proc/thread_self.o
AR drivers/soc/hisilicon/built-in.a
CC net/ipv6/addrconf.o
AR drivers/soc/imx/built-in.a
AR drivers/soc/ixp4xx/built-in.a
AR sound/sparc/built-in.a
AR drivers/soc/loongson/built-in.a
AR drivers/soc/mediatek/built-in.a
AR drivers/soc/microchip/built-in.a
CC net/ipv6/addrlabel.o
CC net/ethtool/pause.o
AR drivers/soc/nuvoton/built-in.a
AR drivers/soc/pxa/built-in.a
CC sound/core/seq_device.o
ASN.1 crypto/rsapubkey.asn1.[ch]
AR drivers/soc/amlogic/built-in.a
ASN.1 crypto/rsaprivkey.asn1.[ch]
CC crypto/rsa.o
AR drivers/soc/qcom/built-in.a
CC drivers/acpi/acpica/evevent.o
CC fs/proc/proc_sysctl.o
AR drivers/soc/renesas/built-in.a
CC mm/mmzone.o
CC kernel/time/tick-oneshot.o
CC drivers/dma/dw/acpi.o
AR drivers/soc/rockchip/built-in.a
CC crypto/rsa_helper.o
AR drivers/soc/sunxi/built-in.a
AR net/xfrm/built-in.a
AR drivers/soc/ti/built-in.a
CC mm/vmstat.o
AR drivers/soc/versatile/built-in.a
CC fs/devpts/inode.o
CC net/netfilter/nf_conntrack_expect.o
AR drivers/soc/xilinx/built-in.a
CC lib/dec_and_lock.o
AR drivers/soc/built-in.a
CC arch/x86/kernel/platform-quirks.o
CC net/ethtool/eee.o
CC arch/x86/kernel/cpu/intel_epb.o
AR kernel/cgroup/built-in.a
CC drivers/pnp/manager.o
CC fs/proc/proc_net.o
LD [M] sound/pci/hda/snd-hda-codec.o
CC kernel/time/tick-sched.o
LD [M] sound/pci/hda/snd-hda-codec-hdmi.o
LD [M] sound/pci/hda/snd-hda-intel.o
AR sound/pci/trident/built-in.a
CC drivers/acpi/x86/utils.o
CC drivers/acpi/x86/blacklist.o
AR sound/pci/ymfpci/built-in.a
CC drivers/pci/vc.o
AR sound/pci/vx222/built-in.a
AR sound/pci/built-in.a
CC kernel/time/timer_migration.o
AR drivers/dma/idxd/built-in.a
CC lib/decompress.o
AR sound/spi/built-in.a
AR sound/parisc/built-in.a
CC fs/netfs/buffered_read.o
CC kernel/time/vsyscall.o
CC fs/ext4/balloc.o
AR sound/pcmcia/vx/built-in.a
AR sound/pcmcia/pdaudiocf/built-in.a
AR sound/pcmcia/built-in.a
CC drivers/acpi/acpica/evgpe.o
CC fs/jbd2/transaction.o
CC lib/decompress_bunzip2.o
CC fs/netfs/buffered_write.o
CC fs/ramfs/inode.o
AR fs/sysfs/built-in.a
CC net/netfilter/nf_conntrack_helper.o
CC fs/jbd2/commit.o
CC fs/jbd2/recovery.o
CC net/ipv6/netfilter/ip6t_REJECT.o
CC [M] sound/core/hwdep.o
CC net/netfilter/nf_conntrack_proto.o
CC fs/ext4/bitmap.o
AR drivers/dma/dw/built-in.a
CC fs/jbd2/checkpoint.o
AR drivers/dma/amd/built-in.a
CC net/netfilter/nf_conntrack_proto_generic.o
CC crypto/rsa-pkcs1pad.o
AR drivers/dma/mediatek/built-in.a
CC drivers/acpi/acpica/evgpeblk.o
AR drivers/dma/qcom/built-in.a
CC security/selinux/ss/mls.o
AR drivers/dma/stm32/built-in.a
AR drivers/dma/ti/built-in.a
CC drivers/pci/mmap.o
AR drivers/dma/xilinx/built-in.a
CC drivers/dma/dmaengine.o
CC drivers/pci/devres.o
CC crypto/acompress.o
AR drivers/acpi/x86/built-in.a
AR fs/devpts/built-in.a
CC security/selinux/ss/context.o
CC fs/ext4/block_validity.o
CC kernel/trace/trace_export.o
CC drivers/pnp/support.o
CC drivers/virtio/virtio.o
CC drivers/tty/vt/vt_ioctl.o
CC drivers/tty/hvc/hvc_console.o
CC drivers/virtio/virtio_ring.o
CC net/ethtool/tsinfo.o
CC drivers/acpi/utils.o
CC fs/ramfs/file-mmu.o
CC drivers/acpi/acpica/evgpeinit.o
AR io_uring/built-in.a
CC drivers/tty/vt/vc_screen.o
CC lib/decompress_inflate.o
CC drivers/tty/serial/8250/8250_core.o
CC [M] sound/core/pcm.o
CC drivers/tty/serial/8250/8250_platform.o
CC drivers/tty/serial/8250/8250_pnp.o
CC drivers/pnp/interface.o
CC mm/backing-dev.o
CC net/core/neighbour.o
CC drivers/tty/tty_io.o
CC fs/proc/kcore.o
AR drivers/tty/ipwireless/built-in.a
CC drivers/tty/serial/8250/8250_rsa.o
CC arch/x86/kernel/cpu/amd.o
CC drivers/virtio/virtio_anchor.o
CC drivers/pci/proc.o
CC drivers/tty/serial/8250/8250_port.o
CC arch/x86/kernel/cpu/hygon.o
AR sound/mips/built-in.a
CC kernel/sys.o
CC drivers/acpi/acpica/evgpeutil.o
CC kernel/umh.o
CC drivers/acpi/reboot.o
CC crypto/scompress.o
CC net/ipv4/tcp_ipv4.o
CC drivers/acpi/nvs.o
CC fs/netfs/direct_read.o
CC drivers/acpi/wakeup.o
AR net/ipv6/netfilter/built-in.a
CC kernel/workqueue.o
CC lib/decompress_unlz4.o
CC kernel/pid.o
CC security/selinux/netlabel.o
AR fs/ramfs/built-in.a
CC kernel/task_work.o
AR drivers/tty/hvc/built-in.a
CC drivers/acpi/sleep.o
CC drivers/dma/virt-dma.o
CC net/sunrpc/auth_gss/auth_gss.o
CC fs/jbd2/revoke.o
CC net/sunrpc/auth_gss/gss_generic_token.o
CC kernel/time/timekeeping_debug.o
CC drivers/acpi/acpica/evglock.o
CC net/sunrpc/auth_gss/gss_mech_switch.o
CC drivers/pnp/quirks.o
CC net/ethtool/cabletest.o
CC net/netfilter/nf_conntrack_proto_tcp.o
AR net/wireless/tests/built-in.a
CC kernel/trace/trace_event_perf.o
CC net/wireless/core.o
CC net/wireless/sysfs.o
CC block/blk-mq-tag.o
CC drivers/tty/vt/selection.o
CC kernel/trace/trace_events_filter.o
CC net/netlabel/netlabel_user.o
CC net/mac80211/main.o
AR net/mac80211/tests/built-in.a
CC net/netlabel/netlabel_kapi.o
CC net/wireless/radiotap.o
CC [M] sound/core/pcm_native.o
CC fs/netfs/direct_write.o
CC lib/decompress_unlzma.o
CC fs/proc/vmcore.o
CC net/rfkill/core.o
CC fs/ext4/dir.o
CC drivers/acpi/acpica/evhandler.o
CC fs/netfs/iterator.o
CC net/ipv4/tcp_minisocks.o
CC drivers/pci/pci-sysfs.o
CC net/rfkill/input.o
CC crypto/algboss.o
CC net/sunrpc/clnt.o
CC mm/mm_init.o
CC drivers/dma/acpi-dma.o
CC kernel/time/namespace.o
CC drivers/virtio/virtio_pci_modern_dev.o
CC net/sunrpc/xprt.o
CC net/sunrpc/socklib.o
CC drivers/pnp/system.o
CC net/sunrpc/xprtsock.o
CC drivers/acpi/acpica/evmisc.o
CC fs/jbd2/journal.o
CC net/sunrpc/sched.o
CC mm/percpu.o
CC drivers/tty/vt/keyboard.o
AR security/selinux/built-in.a
AR security/built-in.a
CC mm/slab_common.o
CC mm/compaction.o
AR sound/soc/built-in.a
CC lib/decompress_unlzo.o
CC mm/show_mem.o
CC net/ethtool/tunnels.o
CC block/blk-stat.o
CC net/ethtool/fec.o
CC drivers/tty/serial/serial_core.o
CC mm/interval_tree.o
CC mm/list_lru.o
AR drivers/pnp/built-in.a
CC net/sunrpc/auth.o
CC drivers/acpi/acpica/evregion.o
CC net/ethtool/eeprom.o
CC mm/workingset.o
CC fs/ext4/ext4_jbd2.o
CC fs/proc/kmsg.o
AR drivers/dma/built-in.a
CC net/mac80211/status.o
CC arch/x86/kernel/process_32.o
CC crypto/testmgr.o
AR net/rfkill/built-in.a
CC net/ipv4/tcp_cong.o
AR kernel/time/built-in.a
CC drivers/acpi/device_sysfs.o
CC fs/netfs/locking.o
CC drivers/tty/serial/8250/8250_dma.o
CC drivers/virtio/virtio_pci_legacy_dev.o
CC net/netlabel/netlabel_domainhash.o
CC net/netfilter/nf_conntrack_proto_udp.o
CC net/ipv6/route.o
CC drivers/pci/slot.o
CC lib/decompress_unxz.o
CC kernel/trace/trace_events_trigger.o
CC drivers/acpi/acpica/evrgnini.o
CC lib/decompress_unzstd.o
CC fs/proc/page.o
CC net/netlabel/netlabel_addrlist.o
CC arch/x86/kernel/cpu/centaur.o
CC block/blk-mq-sysfs.o
CC net/netlabel/netlabel_mgmt.o
CC drivers/acpi/acpica/evsci.o
CC crypto/cmac.o
CC net/sunrpc/auth_gss/svcauth_gss.o
CC drivers/acpi/acpica/evxface.o
CC drivers/acpi/acpica/evxfevnt.o
CC fs/ext4/extents.o
CC drivers/virtio/virtio_pci_modern.o
CC fs/netfs/main.o
CC drivers/char/hw_random/core.o
CC net/core/rtnetlink.o
CC drivers/char/agp/backend.o
CC drivers/char/agp/generic.o
CC net/wireless/util.o
CC drivers/tty/serial/8250/8250_dwlib.o
CC net/sunrpc/auth_gss/gss_rpc_upcall.o
CC lib/dump_stack.o
CC net/ethtool/stats.o
CC arch/x86/kernel/cpu/transmeta.o
CC drivers/tty/vt/vt.o
COPY drivers/tty/vt/defkeymap.c
CC fs/ext4/extents_status.o
CC drivers/char/mem.o
CC drivers/pci/pci-acpi.o
CC fs/ext4/file.o
CC drivers/acpi/acpica/evxfgpe.o
AR fs/proc/built-in.a
CC fs/ext4/fsmap.o
CC net/mac80211/driver-ops.o
CC crypto/hmac.o
CC block/blk-mq-cpumap.o
CC net/netfilter/nf_conntrack_proto_icmp.o
CC drivers/char/random.o
CC drivers/virtio/virtio_pci_common.o
CC [M] sound/core/pcm_lib.o
CC crypto/crypto_null.o
CC lib/earlycpio.o
CC drivers/char/hw_random/intel-rng.o
CC block/blk-mq-sched.o
CC net/ipv4/tcp_metrics.o
CC arch/x86/kernel/cpu/zhaoxin.o
CC lib/extable.o
CC drivers/char/misc.o
CC drivers/char/virtio_console.o
CC net/mac80211/sta_info.o
CC drivers/tty/serial/8250/8250_pcilib.o
CC kernel/trace/trace_eprobe.o
CC lib/flex_proportions.o
CC drivers/acpi/acpica/evxfregn.o
CC drivers/char/hpet.o
CC drivers/tty/n_tty.o
CC net/netlabel/netlabel_unlabeled.o
AR fs/jbd2/built-in.a
CC drivers/tty/tty_ioctl.o
CC net/netfilter/nf_conntrack_extend.o
CC net/sunrpc/auth_gss/gss_rpc_xdr.o
CC arch/x86/kernel/cpu/vortex.o
CC [M] sound/core/pcm_misc.o
CC net/ethtool/phc_vclocks.o
CC drivers/char/agp/isoch.o
CC net/9p/mod.o
CC crypto/md5.o
CC net/dns_resolver/dns_key.o
CC net/handshake/alert.o
CC net/handshake/genl.o
AR drivers/iommu/amd/built-in.a
CC drivers/pci/iomap.o
AR drivers/iommu/intel/built-in.a
AR drivers/iommu/arm/arm-smmu/built-in.a
CC mm/debug.o
CC drivers/char/hw_random/amd-rng.o
CC drivers/acpi/acpica/exconcat.o
AR drivers/iommu/arm/arm-smmu-v3/built-in.a
AR drivers/iommu/arm/built-in.a
AR drivers/iommu/iommufd/built-in.a
CC drivers/iommu/iommu.o
CC net/9p/client.o
CC lib/idr.o
CC arch/x86/kernel/cpu/perfctr-watchdog.o
CC net/devres.o
CC fs/netfs/misc.o
CC drivers/virtio/virtio_pci_legacy.o
CC drivers/tty/serial/8250/8250_early.o
CC net/socket.o
CC net/sysctl_net.o
CC block/ioctl.o
CC crypto/sha256_generic.o
CC drivers/acpi/acpica/exconfig.o
CC net/dns_resolver/dns_query.o
CC net/handshake/netlink.o
CC drivers/virtio/virtio_pci_admin_legacy_io.o
CC net/handshake/request.o
AR sound/atmel/built-in.a
CC net/mac80211/wep.o
CC net/handshake/tlshd.o
CC drivers/char/agp/amd64-agp.o
CC net/core/utils.o
CC net/core/link_watch.o
CC drivers/pci/quirks.o
CC net/core/filter.o
CC [M] sound/core/pcm_memory.o
CC drivers/char/hw_random/geode-rng.o
CC net/core/sock_diag.o
CC lib/irq_regs.o
CC kernel/trace/trace_kprobe.o
CC net/ethtool/mm.o
CC net/ipv4/tcp_fastopen.o
CC mm/gup.o
CC arch/x86/kernel/cpu/vmware.o
CC net/core/dev_ioctl.o
CC drivers/acpi/acpica/exconvrt.o
CC lib/is_single_threaded.o
CC fs/netfs/objects.o
CC net/sunrpc/auth_gss/trace.o
CC lib/klist.o
CC net/netfilter/nf_conntrack_acct.o
CC drivers/tty/serial/8250/8250_exar.o
CC net/ethtool/module.o
CC drivers/tty/vt/consolemap.o
CC crypto/sha512_generic.o
HOSTCC drivers/tty/vt/conmakehash
CC drivers/virtio/virtio_input.o
AR net/dns_resolver/built-in.a
CC lib/kobject.o
CC crypto/sha3_generic.o
CC net/netlabel/netlabel_cipso_v4.o
CC drivers/char/hw_random/via-rng.o
CC kernel/trace/error_report-traces.o
CC drivers/acpi/acpica/excreate.o
CC crypto/ecb.o
CC net/ethtool/cmis_fw_update.o
CC block/genhd.o
CC drivers/char/agp/intel-agp.o
CC drivers/acpi/acpica/exdebug.o
CC net/ethtool/cmis_cdb.o
CC kernel/trace/power-traces.o
CC [M] sound/core/memalloc.o
CC arch/x86/kernel/cpu/hypervisor.o
CC net/9p/error.o
CC drivers/tty/serial/serial_base_bus.o
AR drivers/char/hw_random/built-in.a
CC net/ipv6/ip6_fib.o
CC net/mac80211/aead_api.o
CC net/sunrpc/auth_gss/gss_krb5_mech.o
AR drivers/gpu/host1x/built-in.a
CC drivers/tty/serial/8250/8250_lpss.o
CC kernel/extable.o
CC drivers/acpi/acpica/exdump.o
CC arch/x86/kernel/cpu/mshyperv.o
AR drivers/gpu/vga/built-in.a
CC drivers/acpi/acpica/exfield.o
CC drivers/acpi/acpica/exfldio.o
CC net/sunrpc/auth_gss/gss_krb5_seal.o
CC lib/kobject_uevent.o
CC crypto/cbc.o
CC drivers/iommu/iommu-traces.o
CC drivers/virtio/virtio_dma_buf.o
CC drivers/acpi/acpica/exmisc.o
CC drivers/acpi/acpica/exmutex.o
CC fs/netfs/read_collect.o
AR drivers/gpu/drm/tests/built-in.a
CC drivers/char/agp/intel-gtt.o
AR drivers/gpu/drm/arm/built-in.a
CC drivers/gpu/drm/display/drm_display_helper_mod.o
CC drivers/gpu/drm/ttm/ttm_tt.o
CC net/9p/protocol.o
AR drivers/gpu/drm/renesas/rcar-du/built-in.a
CC net/netfilter/nf_conntrack_seqadj.o
AR drivers/gpu/drm/renesas/rz-du/built-in.a
CC drivers/gpu/drm/i915/i915_config.o
AR drivers/gpu/drm/renesas/built-in.a
CC drivers/gpu/drm/i915/i915_driver.o
CC net/handshake/trace.o
CC net/ipv4/tcp_rate.o
CC net/9p/trans_common.o
CC drivers/tty/vt/defkeymap.o
CC drivers/acpi/acpica/exnames.o
CC drivers/connector/cn_queue.o
CC net/9p/trans_fd.o
CC drivers/tty/tty_ldisc.o
CC net/wireless/reg.o
CC fs/hugetlbfs/inode.o
CC crypto/ctr.o
CC mm/mmap_lock.o
AR sound/hda/built-in.a
AR sound/x86/built-in.a
CC [M] sound/hda/hda_bus_type.o
CC [M] sound/hda/hdac_bus.o
AR sound/xen/built-in.a
CC fs/netfs/read_pgpriv2.o
CC drivers/acpi/device_pm.o
CC net/ethtool/pse-pd.o
CC drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
CONMK drivers/tty/vt/consolemap_deftbl.c
CC drivers/tty/vt/consolemap_deftbl.o
CC block/ioprio.o
CC [M] sound/core/pcm_timer.o
AR drivers/tty/vt/built-in.a
CC drivers/tty/serial/8250/8250_mid.o
CC drivers/connector/connector.o
AR drivers/virtio/built-in.a
CC drivers/gpu/drm/display/drm_dp_helper.o
CC fs/fat/cache.o
CC net/sunrpc/auth_gss/gss_krb5_unseal.o
CC net/netlabel/netlabel_calipso.o
CC drivers/acpi/acpica/exoparg1.o
CC crypto/gcm.o
CC net/core/tso.o
CC drivers/pci/pci-label.o
CC drivers/gpu/drm/display/drm_dp_mst_topology.o
CC drivers/acpi/proc.o
CC net/mac80211/wpa.o
CC drivers/iommu/iommu-sysfs.o
CC arch/x86/kernel/cpu/debugfs.o
CC fs/ext4/fsync.o
CC drivers/tty/tty_buffer.o
CC drivers/tty/tty_port.o
CC drivers/tty/tty_mutex.o
CC net/ethtool/plca.o
AR drivers/char/agp/built-in.a
CC drivers/char/nvram.o
CC lib/logic_pio.o
CC net/ethtool/phy.o
CC drivers/gpu/drm/ttm/ttm_bo.o
CC arch/x86/kernel/signal.o
CC [M] sound/hda/hdac_device.o
CC net/core/sock_reuseport.o
CC drivers/acpi/acpica/exoparg2.o
LD [M] sound/core/snd-hwdep.o
CC net/core/fib_notifier.o
LD [M] sound/core/snd-pcm.o
AR sound/core/built-in.a
CC mm/highmem.o
CC drivers/tty/serial/8250/8250_pci.o
CC lib/maple_tree.o
CC net/ipv6/ipv6_sockglue.o
AR drivers/gpu/drm/omapdrm/built-in.a
CC lib/memcat_p.o
CC kernel/trace/rpm-traces.o
CC fs/netfs/read_retry.o
CC drivers/pci/vgaarb.o
CC block/badblocks.o
CC net/netfilter/nf_conntrack_proto_icmpv6.o
CC fs/fat/dir.o
CC net/ipv4/tcp_recovery.o
CC arch/x86/kernel/cpu/capflags.o
CC drivers/iommu/dma-iommu.o
CC net/9p/trans_virtio.o
AR arch/x86/kernel/cpu/built-in.a
CC block/blk-rq-qos.o
CC block/disk-events.o
AR fs/hugetlbfs/built-in.a
CC drivers/connector/cn_proc.o
CC kernel/params.o
CC drivers/acpi/acpica/exoparg3.o
CC drivers/tty/tty_ldsem.o
CC drivers/gpu/drm/ttm/ttm_bo_util.o
AR net/handshake/built-in.a
CC drivers/tty/tty_baudrate.o
AR net/netlabel/built-in.a
CC drivers/acpi/acpica/exoparg6.o
CC net/wireless/scan.o
CC fs/isofs/namei.o
CC arch/x86/kernel/signal_32.o
CC fs/isofs/inode.o
CC fs/isofs/dir.o
CC arch/x86/kernel/traps.o
CC crypto/ccm.o
CC net/sunrpc/auth_gss/gss_krb5_wrap.o
CC arch/x86/kernel/idt.o
AR drivers/char/built-in.a
CC fs/netfs/write_collect.o
CC net/wireless/nl80211.o
CC net/sunrpc/auth_null.o
CC block/blk-ia-ranges.o
CC drivers/gpu/drm/i915/i915_drm_client.o
CC drivers/iommu/iova.o
CC [M] sound/hda/hdac_sysfs.o
CC net/wireless/mlme.o
CC net/netfilter/nf_conntrack_netlink.o
CC mm/memory.o
CC drivers/acpi/acpica/exprep.o
CC drivers/acpi/bus.o
AR net/ethtool/built-in.a
AR drivers/gpu/drm/tilcdc/built-in.a
CC kernel/kthread.o
CC drivers/acpi/acpica/exregion.o
CC kernel/trace/trace_dynevent.o
CC drivers/tty/serial/8250/8250_pericom.o
CC drivers/gpu/drm/display/drm_dsc_helper.o
CC fs/nfs/client.o
CC fs/nfs/dir.o
CC fs/nfs/file.o
CC net/mac80211/scan.o
CC drivers/gpu/drm/display/drm_hdcp_helper.o
CC fs/nfs/getroot.o
CC drivers/gpu/drm/ttm/ttm_bo_vm.o
AR drivers/pci/built-in.a
CC net/sunrpc/auth_gss/gss_krb5_crypto.o
CC fs/nfs/inode.o
CC net/sunrpc/auth_gss/gss_krb5_keys.o
CC fs/nfs/super.o
CC net/netfilter/nf_conntrack_ftp.o
CC fs/ext4/hash.o
CC kernel/trace/trace_probe.o
AR drivers/connector/built-in.a
CC kernel/trace/trace_uprobe.o
CC drivers/acpi/acpica/exresnte.o
CC fs/netfs/write_issue.o
CC net/ipv4/tcp_ulp.o
CC net/mac80211/offchannel.o
CC block/early-lookup.o
CC net/mac80211/ht.o
CC crypto/aes_generic.o
CC net/ipv4/tcp_offload.o
CC drivers/gpu/drm/virtio/virtgpu_drv.o
CC arch/x86/kernel/irq.o
CC fs/fat/fatent.o
AR net/9p/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_kms.o
CC [M] sound/hda/hdac_regmap.o
AR drivers/tty/serial/8250/built-in.a
CC net/mac80211/agg-tx.o
CC drivers/tty/serial/serial_ctrl.o
AR drivers/iommu/built-in.a
CC fs/isofs/util.o
CC drivers/acpi/acpica/exresolv.o
CC net/ipv6/ndisc.o
AR drivers/gpu/drm/imx/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_gem.o
CC net/core/xdp.o
CC net/wireless/ibss.o
CC drivers/gpu/drm/ttm/ttm_module.o
CC fs/nfs/io.o
CC net/ipv4/tcp_plb.o
CC net/ipv4/datagram.o
CC drivers/gpu/drm/i915/i915_getparam.o
CC fs/ext4/ialloc.o
CC drivers/acpi/acpica/exresop.o
CC net/ipv4/raw.o
CC block/bounce.o
CC crypto/crc32c_generic.o
CC drivers/gpu/drm/display/drm_hdmi_helper.o
CC net/ipv4/udp.o
CC fs/isofs/rock.o
CC [M] sound/hda/hdac_controller.o
CC fs/isofs/export.o
CC fs/isofs/joliet.o
CC drivers/tty/serial/serial_port.o
CC net/wireless/sme.o
AR fs/netfs/built-in.a
AR net/sunrpc/auth_gss/built-in.a
CC fs/isofs/compress.o
CC net/sunrpc/auth_tls.o
CC drivers/gpu/drm/ttm/ttm_execbuf_util.o
CC lib/nmi_backtrace.o
CC net/core/flow_offload.o
CC drivers/gpu/drm/virtio/virtgpu_vram.o
CC drivers/acpi/acpica/exserial.o
CC net/wireless/chan.o
CC crypto/authenc.o
CC fs/fat/file.o
CC net/core/gro.o
CC fs/fat/inode.o
CC drivers/gpu/drm/display/drm_scdc_helper.o
CC fs/fat/misc.o
CC drivers/tty/tty_jobctrl.o
CC drivers/gpu/drm/i915/i915_ioctl.o
CC fs/fat/nfs.o
CC drivers/gpu/drm/i915/i915_irq.o
CC fs/fat/namei_vfat.o
CC drivers/acpi/acpica/exstore.o
CC net/netfilter/nf_conntrack_irc.o
CC fs/fat/namei_msdos.o
CC net/ipv6/udp.o
CC drivers/gpu/drm/ttm/ttm_range_manager.o
CC kernel/trace/rethook.o
CC mm/mincore.o
CC drivers/tty/serial/earlycon.o
CC [M] sound/hda/hdac_stream.o
CC mm/mlock.o
CC block/bsg.o
CC arch/x86/kernel/irq_32.o
CC mm/mmap.o
AR fs/isofs/built-in.a
CC net/netfilter/nf_conntrack_sip.o
CC mm/mmu_gather.o
CC drivers/gpu/drm/virtio/virtgpu_display.o
CC drivers/acpi/acpica/exstoren.o
CC net/sunrpc/auth_unix.o
CC kernel/sys_ni.o
CC drivers/acpi/glue.o
CC net/mac80211/agg-rx.o
CC crypto/authencesn.o
CC net/mac80211/vht.o
CC net/wireless/ethtool.o
CC drivers/gpu/drm/virtio/virtgpu_vq.o
AR drivers/gpu/drm/display/built-in.a
CC drivers/acpi/acpica/exstorob.o
CC drivers/gpu/drm/ttm/ttm_resource.o
AR kernel/trace/built-in.a
CC drivers/gpu/drm/ttm/ttm_pool.o
CC arch/x86/kernel/dumpstack_32.o
CC crypto/lzo.o
CC net/netfilter/nf_nat_core.o
AR sound/virtio/built-in.a
CC fs/ext4/indirect.o
CC drivers/gpu/drm/ttm/ttm_device.o
CC kernel/nsproxy.o
AR drivers/tty/serial/built-in.a
CC drivers/tty/n_null.o
CC net/wireless/mesh.o
CC block/blk-cgroup.o
CC fs/exportfs/expfs.o
CC drivers/base/power/sysfs.o
CC net/netfilter/nf_nat_proto.o
CC drivers/base/firmware_loader/builtin/main.o
CC [M] sound/hda/array.o
CC drivers/acpi/acpica/exsystem.o
CC drivers/base/component.o
CC drivers/base/regmap/regmap.o
AR drivers/base/test/built-in.a
AR fs/fat/built-in.a
CC drivers/base/regmap/regcache.o
CC drivers/gpu/drm/i915/i915_mitigations.o
CC drivers/gpu/drm/virtio/virtgpu_fence.o
CC fs/ext4/inline.o
CC fs/nfs/direct.o
CC drivers/base/regmap/regcache-rbtree.o
CC drivers/gpu/drm/i915/i915_module.o
CC [M] sound/hda/hdmi_chmap.o
CC drivers/gpu/drm/i915/i915_params.o
CC drivers/gpu/drm/i915/i915_pci.o
CC net/core/netdev-genl.o
CC drivers/gpu/drm/i915/i915_scatterlist.o
CC drivers/gpu/drm/i915/i915_suspend.o
CC net/netfilter/nf_nat_helper.o
CC drivers/acpi/acpica/extrace.o
CC arch/x86/kernel/time.o
AR drivers/base/firmware_loader/builtin/built-in.a
CC drivers/base/firmware_loader/main.o
CC net/ipv4/udplite.o
CC net/ipv4/udp_offload.o
CC drivers/tty/pty.o
CC net/ipv4/arp.o
CC net/sunrpc/svc.o
CC crypto/lzo-rle.o
CC drivers/base/power/generic_ops.o
AR fs/exportfs/built-in.a
CC [M] sound/hda/trace.o
CC net/mac80211/he.o
CC drivers/gpu/drm/ttm/ttm_sys_manager.o
CC drivers/gpu/drm/ttm/ttm_agp_backend.o
CC drivers/acpi/acpica/exutils.o
CC net/netfilter/nf_nat_masquerade.o
CC arch/x86/kernel/ioport.o
CC arch/x86/kernel/dumpstack.o
CC kernel/notifier.o
CC mm/mprotect.o
CC drivers/gpu/drm/virtio/virtgpu_object.o
CC drivers/block/loop.o
CC arch/x86/kernel/nmi.o
CC arch/x86/kernel/ldt.o
CC drivers/base/power/common.o
CC net/netfilter/nf_nat_ftp.o
CC crypto/rng.o
CC block/blk-ioprio.o
CC drivers/acpi/acpica/hwacpi.o
CC net/core/netdev-genl-gen.o
CC net/core/gso.o
CC net/ipv6/udplite.o
CC lib/objpool.o
AR drivers/misc/cb710/built-in.a
AR drivers/misc/eeprom/built-in.a
CC drivers/acpi/scan.o
CC drivers/tty/tty_audit.o
AR drivers/misc/ti-st/built-in.a
CC fs/ext4/inode.o
AR drivers/misc/lis3lv02d/built-in.a
AR drivers/misc/cardreader/built-in.a
CC fs/ext4/ioctl.o
AR drivers/misc/keba/built-in.a
AR drivers/misc/built-in.a
AR drivers/gpu/drm/ttm/built-in.a
CC fs/ext4/mballoc.o
CC net/wireless/ap.o
CC sound/sound_core.o
AR drivers/base/firmware_loader/built-in.a
CC sound/last.o
CC drivers/gpu/drm/i915/i915_switcheroo.o
CC drivers/acpi/mipi-disco-img.o
CC net/wireless/trace.o
CC net/wireless/ocb.o
CC drivers/acpi/acpica/hwesleep.o
CC net/wireless/pmsr.o
CC [M] sound/hda/hdac_component.o
CC drivers/base/power/qos.o
CC drivers/acpi/resource.o
CC fs/ext4/migrate.o
CC drivers/gpu/drm/virtio/virtgpu_debugfs.o
CC lib/plist.o
CC drivers/base/regmap/regcache-flat.o
CC net/ipv4/icmp.o
CC drivers/gpu/drm/i915/i915_sysfs.o
CC kernel/ksysfs.o
CC drivers/base/core.o
GEN net/wireless/shipped-certs.c
CC drivers/tty/sysrq.o
CC lib/radix-tree.o
CC fs/nfs/pagelist.o
CC drivers/acpi/acpi_processor.o
CC fs/lockd/clntlock.o
CC drivers/acpi/acpica/hwgpe.o
AR fs/unicode/built-in.a
CC fs/nls/nls_base.o
CC fs/nls/nls_cp437.o
CC fs/lockd/clntproc.o
CC crypto/drbg.o
CC block/blk-iolatency.o
CC fs/ext4/mmp.o
CC arch/x86/kernel/setup.o
CC net/mac80211/s1g.o
AR drivers/mfd/built-in.a
CC block/blk-iocost.o
CC mm/mremap.o
AR drivers/gpu/drm/i2c/built-in.a
CC lib/ratelimit.o
CC net/ipv6/raw.o
CC drivers/gpu/drm/virtio/virtgpu_plane.o
CC drivers/acpi/acpica/hwregs.o
CC fs/autofs/init.o
CC net/sunrpc/svcsock.o
CC net/core/net-sysfs.o
CC net/mac80211/ibss.o
CC fs/9p/vfs_super.o
CC [M] sound/hda/hdac_i915.o
CC fs/9p/vfs_inode.o
CC drivers/base/power/runtime.o
CC drivers/base/power/wakeirq.o
CC drivers/block/virtio_blk.o
CC fs/9p/vfs_inode_dotl.o
CC kernel/cred.o
CC net/netfilter/nf_nat_irc.o
CC fs/9p/vfs_addr.o
CC fs/nls/nls_ascii.o
CC drivers/base/power/main.o
CC fs/9p/vfs_file.o
CC lib/rbtree.o
AR drivers/tty/built-in.a
CC drivers/acpi/acpica/hwsleep.o
CC fs/9p/vfs_dir.o
CC drivers/base/regmap/regcache-maple.o
CC drivers/gpu/drm/i915/i915_utils.o
CC drivers/base/power/wakeup.o
CC crypto/jitterentropy.o
AR fs/hostfs/built-in.a
CC net/mac80211/iface.o
CC arch/x86/kernel/x86_init.o
CC crypto/jitterentropy-kcapi.o
CC fs/nls/nls_iso8859-1.o
CC fs/autofs/inode.o
CC fs/nls/nls_utf8.o
CC crypto/ghash-generic.o
CC drivers/gpu/drm/virtio/virtgpu_ioctl.o
CC fs/debugfs/inode.o
CC [M] sound/hda/intel-dsp-config.o
CC lib/seq_buf.o
CC drivers/acpi/acpica/hwvalid.o
CC net/mac80211/link.o
CC crypto/hash_info.o
CC mm/msync.o
CC drivers/gpu/drm/virtio/virtgpu_prime.o
AR drivers/nfc/built-in.a
CC block/mq-deadline.o
AR fs/nls/built-in.a
CC drivers/base/regmap/regmap-debugfs.o
AR drivers/dax/hmem/built-in.a
AR drivers/dax/built-in.a
AR drivers/gpu/drm/panel/built-in.a
AR drivers/gpu/drm/hisilicon/built-in.a
AR drivers/gpu/drm/bridge/analogix/built-in.a
CC drivers/base/power/wakeup_stats.o
CC block/kyber-iosched.o
AR drivers/gpu/drm/bridge/cadence/built-in.a
CC crypto/rsapubkey.asn1.o
CC arch/x86/kernel/i8259.o
AR drivers/gpu/drm/bridge/imx/built-in.a
CC crypto/rsaprivkey.asn1.o
AR drivers/gpu/drm/bridge/synopsys/built-in.a
CC kernel/reboot.o
CC kernel/async.o
AR drivers/gpu/drm/bridge/built-in.a
CC net/ipv4/devinet.o
AR crypto/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_trace_points.o
CC arch/x86/kernel/irqinit.o
CC fs/tracefs/inode.o
CC [M] fs/efivarfs/inode.o
CC drivers/gpu/drm/virtio/virtgpu_submit.o
CC fs/tracefs/event_inode.o
CC drivers/acpi/acpica/hwxface.o
CC fs/lockd/clntxdr.o
AR drivers/block/built-in.a
CC net/core/hotdata.o
CC net/netfilter/nf_nat_sip.o
CC fs/9p/vfs_dentry.o
CC fs/autofs/root.o
CC fs/lockd/host.o
CC fs/lockd/svc.o
CC lib/siphash.o
CC drivers/gpu/drm/i915/intel_clock_gating.o
CC [M] sound/hda/intel-nhlt.o
CC net/core/netdev_rx_queue.o
CC drivers/acpi/acpica/hwxfsleep.o
CC [M] fs/efivarfs/file.o
CC mm/page_vma_mapped.o
CC fs/lockd/svclock.o
AR drivers/gpu/drm/mxsfb/built-in.a
CC drivers/base/power/trace.o
CC fs/debugfs/file.o
CC fs/ext4/move_extent.o
AR drivers/base/regmap/built-in.a
CC net/wireless/shipped-certs.o
CC fs/ext4/namei.o
CC net/ipv6/icmp.o
CC fs/nfs/read.o
CC drivers/acpi/processor_core.o
CC fs/nfs/symlink.o
AR drivers/gpu/drm/tiny/built-in.a
CC fs/nfs/unlink.o
CC fs/open.o
CC fs/9p/v9fs.o
CC lib/string.o
CC fs/nfs/write.o
CC drivers/acpi/acpica/hwpci.o
CC fs/nfs/namespace.o
AR drivers/gpu/drm/virtio/built-in.a
CC fs/ext4/page-io.o
CC arch/x86/kernel/jump_label.o
CC lib/timerqueue.o
CC fs/nfs/mount_clnt.o
CC fs/nfs/nfstrace.o
CC kernel/range.o
CC fs/autofs/symlink.o
CC [M] sound/hda/intel-sdw-acpi.o
CC [M] fs/efivarfs/super.o
AR fs/tracefs/built-in.a
CC fs/autofs/waitq.o
CC fs/autofs/expire.o
CC fs/nfs/export.o
CC fs/autofs/dev-ioctl.o
CC fs/nfs/sysfs.o
CC fs/nfs/fs_context.o
CC lib/union_find.o
CC kernel/smpboot.o
CC arch/x86/kernel/irq_work.o
CC drivers/acpi/acpica/nsaccess.o
CC lib/vsprintf.o
AR drivers/base/power/built-in.a
CC drivers/base/bus.o
CC mm/pagewalk.o
CC net/netfilter/x_tables.o
CC net/core/net-procfs.o
CC block/blk-mq-pci.o
CC fs/9p/fid.o
CC kernel/ucount.o
CC kernel/regset.o
CC fs/9p/xattr.o
CC fs/nfs/nfsroot.o
CC drivers/acpi/processor_pdc.o
CC net/core/netpoll.o
AR fs/debugfs/built-in.a
CC block/blk-mq-virtio.o
LD [M] sound/hda/snd-hda-core.o
CC drivers/acpi/acpica/nsalloc.o
LD [M] sound/hda/snd-intel-dspcfg.o
LD [M] sound/hda/snd-intel-sdw-acpi.o
AR sound/built-in.a
CC net/netfilter/xt_tcpudp.o
CC drivers/gpu/drm/i915/intel_device_info.o
CC net/sunrpc/svcauth.o
CC kernel/ksyms_common.o
CC arch/x86/kernel/probe_roms.o
CC fs/lockd/svcshare.o
CC net/ipv4/af_inet.o
CC drivers/acpi/acpica/nsarguments.o
CC fs/read_write.o
CC fs/file_table.o
CC drivers/acpi/acpica/nsconvert.o
CC drivers/gpu/drm/i915/intel_memory_region.o
CC fs/nfs/sysctl.o
CC drivers/acpi/acpica/nsdump.o
CC drivers/acpi/acpica/nseval.o
CC net/ipv4/igmp.o
CC [M] fs/efivarfs/vars.o
CC net/ipv4/fib_frontend.o
CC net/ipv4/fib_semantics.o
CC net/ipv6/mcast.o
CC net/ipv4/fib_trie.o
AR fs/autofs/built-in.a
CC drivers/base/dd.o
CC net/sunrpc/svcauth_unix.o
CC drivers/dma-buf/dma-buf.o
AR drivers/cxl/core/built-in.a
CC mm/pgtable-generic.o
AR drivers/cxl/built-in.a
CC drivers/dma-buf/dma-fence.o
CC drivers/dma-buf/dma-fence-array.o
CC drivers/gpu/drm/i915/intel_pcode.o
AR fs/9p/built-in.a
CC block/blk-mq-debugfs.o
CC drivers/dma-buf/dma-fence-chain.o
CC drivers/acpi/ec.o
CC net/netfilter/xt_CONNSECMARK.o
CC drivers/dma-buf/dma-fence-unwrap.o
CC kernel/groups.o
CC drivers/acpi/acpica/nsinit.o
CC kernel/kcmp.o
CC net/mac80211/rate.o
CC kernel/freezer.o
CC kernel/profile.o
CC kernel/stacktrace.o
CC drivers/dma-buf/dma-resv.o
CC arch/x86/kernel/sys_ia32.o
CC drivers/dma-buf/sync_file.o
CC kernel/dma.o
CC kernel/smp.o
CC kernel/uid16.o
CC kernel/kallsyms.o
CC drivers/acpi/acpica/nsload.o
LD [M] fs/efivarfs/efivarfs.o
CC fs/lockd/svcproc.o
CC kernel/acct.o
CC arch/x86/kernel/ksysfs.o
CC net/mac80211/michael.o
CC mm/rmap.o
CC kernel/vmcore_info.o
CC fs/ext4/readpage.o
CC net/sunrpc/addr.o
CC drivers/base/syscore.o
CC net/ipv6/reassembly.o
CC drivers/acpi/acpica/nsnames.o
CC net/core/fib_rules.o
CC net/core/net-traces.o
CC lib/win_minmax.o
CC block/blk-pm.o
CC net/core/selftests.o
CC drivers/macintosh/mac_hid.o
CC net/mac80211/tkip.o
AR drivers/scsi/pcmcia/built-in.a
CC drivers/scsi/scsi.o
CC drivers/acpi/dock.o
AR drivers/nvme/common/built-in.a
CC drivers/gpu/drm/i915/intel_region_ttm.o
AR drivers/nvme/host/built-in.a
AR drivers/nvme/target/built-in.a
CC fs/lockd/svcsubs.o
CC drivers/acpi/pci_root.o
AR drivers/nvme/built-in.a
CC net/mac80211/aes_cmac.o
CC net/netfilter/xt_NFLOG.o
CC net/ipv4/fib_notifier.o
CC drivers/acpi/acpica/nsobject.o
CC net/ipv4/inet_fragment.o
CC net/netfilter/xt_SECMARK.o
AR drivers/dma-buf/built-in.a
CC fs/ext4/resize.o
CC arch/x86/kernel/bootflag.o
CC net/netfilter/xt_TCPMSS.o
CC net/netfilter/xt_conntrack.o
CC drivers/ata/libata-core.o
CC net/netfilter/xt_policy.o
CC net/netfilter/xt_state.o
AR drivers/macintosh/built-in.a
CC fs/lockd/mon.o
CC drivers/acpi/acpica/nsparse.o
CC [M] net/netfilter/nf_log_syslog.o
CC [M] net/netfilter/xt_mark.o
CC block/holder.o
CC net/sunrpc/rpcb_clnt.o
CC drivers/base/driver.o
CC fs/ext4/super.o
CC drivers/scsi/hosts.o
CC [M] net/netfilter/xt_nat.o
CC kernel/elfcorehdr.o
CC lib/xarray.o
CC drivers/base/class.o
AR drivers/gpu/drm/xlnx/built-in.a
CC net/ipv4/ping.o
AR drivers/gpu/drm/gud/built-in.a
CC [M] net/netfilter/xt_LOG.o
CC drivers/base/platform.o
CC drivers/base/cpu.o
CC arch/x86/kernel/e820.o
CC drivers/gpu/drm/i915/intel_runtime_pm.o
AR drivers/net/phy/qcom/built-in.a
CC drivers/acpi/acpica/nspredef.o
CC drivers/net/phy/mdio-boardinfo.o
CC drivers/net/phy/stubs.o
AR drivers/net/pse-pd/built-in.a
CC drivers/scsi/scsi_ioctl.o
CC drivers/ata/libata-scsi.o
CC fs/ext4/symlink.o
CC drivers/net/phy/mdio_devres.o
CC kernel/crash_reserve.o
CC net/ipv4/ip_tunnel_core.o
AR block/built-in.a
CC drivers/acpi/acpica/nsprepkg.o
CC net/ipv4/gre_offload.o
CC drivers/net/phy/phy.o
CC drivers/acpi/pci_link.o
CC drivers/net/phy/phy-c45.o
CC drivers/acpi/pci_irq.o
CC drivers/net/phy/phy-core.o
CC drivers/firewire/init_ohci1394_dma.o
CC mm/vmalloc.o
CC drivers/base/firmware.o
CC drivers/acpi/acpi_apd.o
CC lib/lockref.o
CC net/mac80211/aes_gmac.o
CC net/ipv6/tcp_ipv6.o
CC mm/vma.o
CC fs/lockd/trace.o
AR drivers/gpu/drm/solomon/built-in.a
CC net/core/ptp_classifier.o
CC drivers/ata/libata-eh.o
CC net/core/netprio_cgroup.o
CC mm/process_vm_access.o
CC fs/ext4/sysfs.o
CC net/core/netclassid_cgroup.o
CC drivers/acpi/acpica/nsrepair.o
CC drivers/acpi/acpica/nsrepair2.o
CC drivers/acpi/acpica/nssearch.o
CC kernel/kexec_core.o
CC net/ipv6/ping.o
CC net/core/dst_cache.o
CC arch/x86/kernel/pci-dma.o
CC drivers/base/init.o
CC mm/page_alloc.o
CC arch/x86/kernel/quirks.o
CC drivers/scsi/scsicam.o
CC mm/init-mm.o
AR drivers/firewire/built-in.a
CC lib/bcd.o
CC fs/ext4/xattr.o
CC fs/ext4/xattr_hurd.o
CC drivers/net/mdio/acpi_mdio.o
CC drivers/acpi/acpica/nsutils.o
CC net/mac80211/fils_aead.o
CC lib/sort.o
CC drivers/net/phy/phy_device.o
CC [M] net/netfilter/xt_MASQUERADE.o
CC drivers/net/mdio/fwnode_mdio.o
CC fs/ext4/xattr_trusted.o
CC drivers/gpu/drm/i915/intel_sbi.o
CC net/sunrpc/timer.o
CC fs/nfs/nfs3super.o
CC lib/parser.o
CC drivers/gpu/drm/i915/intel_step.o
CC net/core/gro_cells.o
CC drivers/gpu/drm/i915/intel_uncore.o
CC drivers/base/map.o
CC drivers/acpi/acpi_platform.o
CC net/sunrpc/xdr.o
CC drivers/acpi/acpica/nswalk.o
CC net/sunrpc/sunrpc_syms.o
CC [M] net/netfilter/xt_addrtype.o
CC net/sunrpc/cache.o
CC net/sunrpc/rpc_pipe.o
CC drivers/scsi/scsi_error.o
CC lib/debug_locks.o
CC fs/super.o
AR drivers/net/pcs/built-in.a
CC fs/nfs/nfs3client.o
CC net/core/failover.o
CC [M] drivers/gpu/drm/scheduler/sched_main.o
CC net/sunrpc/sysfs.o
CC net/ipv4/metrics.o
CC arch/x86/kernel/kdebugfs.o
CC lib/random32.o
CC [M] drivers/gpu/drm/scheduler/sched_fence.o
CC [M] drivers/gpu/drm/scheduler/sched_entity.o
CC drivers/cdrom/cdrom.o
CC fs/lockd/xdr.o
CC fs/lockd/clnt4xdr.o
CC drivers/base/devres.o
CC fs/lockd/xdr4.o
CC drivers/acpi/acpica/nsxfeval.o
CC kernel/crash_core.o
HOSTCC drivers/gpu/drm/xe/xe_gen_wa_oob
CC drivers/net/phy/linkmode.o
AR drivers/net/mdio/built-in.a
CC lib/bust_spinlocks.o
CC fs/nfs/nfs3proc.o
CC lib/kasprintf.o
CC net/sunrpc/svc_xprt.o
GEN xe_wa_oob.c xe_wa_oob.h
CC [M] drivers/gpu/drm/xe/xe_bb.o
CC lib/bitmap.o
CC lib/scatterlist.o
CC lib/list_sort.o
CC fs/lockd/svc4proc.o
CC net/ipv6/exthdrs.o
CC drivers/base/attribute_container.o
CC net/mac80211/cfg.o
CC mm/memblock.o
CC kernel/kexec.o
CC net/ipv4/netlink.o
CC arch/x86/kernel/alternative.o
AR drivers/auxdisplay/built-in.a
CC drivers/gpu/drm/drm_atomic.o
CC drivers/acpi/acpica/nsxfname.o
CC drivers/net/phy/phy_link_topology.o
CC fs/nfs/nfs3xdr.o
CC [M] drivers/gpu/drm/xe/xe_bo.o
CC drivers/base/transport_class.o
CC drivers/acpi/acpi_pnp.o
CC net/mac80211/ethtool.o
CC kernel/utsname.o
CC drivers/ata/libata-transport.o
CC drivers/pcmcia/cs.o
CC drivers/usb/common/common.o
CC drivers/usb/common/debug.o
CC drivers/input/serio/serio.o
CC drivers/acpi/acpica/nsxfobj.o
CC drivers/gpu/drm/drm_atomic_uapi.o
CC arch/x86/kernel/i8253.o
AR net/netfilter/built-in.a
CC drivers/gpu/drm/drm_auth.o
CC fs/lockd/procfs.o
CC drivers/gpu/drm/drm_blend.o
CC drivers/acpi/acpica/psargs.o
CC net/mac80211/rx.o
AR net/core/built-in.a
CC drivers/scsi/scsi_lib.o
CC [M] drivers/gpu/drm/xe/xe_bo_evict.o
CC drivers/input/keyboard/atkbd.o
CC drivers/acpi/acpica/psloop.o
LD [M] drivers/gpu/drm/scheduler/gpu-sched.o
CC net/mac80211/spectmgmt.o
CC drivers/gpu/drm/drm_bridge.o
CC drivers/base/topology.o
CC drivers/scsi/constants.o
CC net/mac80211/tx.o
CC drivers/pcmcia/socket_sysfs.o
CC drivers/scsi/scsi_lib_dma.o
CC kernel/pid_namespace.o
CC drivers/net/phy/mdio_bus.o
CC drivers/input/serio/i8042.o
CC drivers/scsi/scsi_scan.o
GEN drivers/scsi/scsi_devinfo_tbl.c
CC lib/uuid.o
CC drivers/input/mouse/psmouse-base.o
CC net/ipv4/nexthop.o
CC drivers/ata/libata-trace.o
CC lib/iov_iter.o
CC drivers/input/mouse/synaptics.o
AR drivers/usb/common/built-in.a
CC drivers/usb/core/usb.o
CC arch/x86/kernel/hw_breakpoint.o
AR drivers/input/joystick/built-in.a
AR drivers/input/tablet/built-in.a
CC drivers/acpi/power.o
AR drivers/usb/phy/built-in.a
AR drivers/cdrom/built-in.a
CC lib/clz_ctz.o
CC drivers/input/mouse/focaltech.o
CC drivers/usb/mon/mon_main.o
CC drivers/gpu/drm/i915/intel_wakeref.o
CC arch/x86/kernel/tsc.o
CC drivers/acpi/acpica/psobject.o
CC [M] drivers/gpu/drm/xe/xe_devcoredump.o
AR fs/lockd/built-in.a
AR drivers/input/touchscreen/built-in.a
CC drivers/usb/core/hub.o
CC drivers/ata/libata-sata.o
AR drivers/net/ethernet/3com/built-in.a
CC drivers/net/ethernet/8390/ne2k-pci.o
CC drivers/net/phy/mdio_device.o
CC drivers/net/phy/swphy.o
CC drivers/net/phy/fixed_phy.o
CC drivers/input/serio/serport.o
CC net/ipv6/datagram.o
CC drivers/input/serio/libps2.o
CC drivers/base/container.o
CC drivers/rtc/lib.o
CC drivers/pcmcia/cardbus.o
CC mm/slub.o
CC lib/bsearch.o
CC drivers/rtc/class.o
CC kernel/stop_machine.o
CC drivers/acpi/acpica/psopcode.o
CC fs/char_dev.o
AR drivers/input/keyboard/built-in.a
CC drivers/rtc/interface.o
CC drivers/usb/mon/mon_stat.o
CC fs/ext4/xattr_user.o
CC drivers/base/property.o
CC drivers/acpi/acpica/psopinfo.o
CC fs/stat.o
CC drivers/net/ethernet/8390/8390.o
AR net/wireless/built-in.a
CC fs/exec.o
CC fs/ext4/fast_commit.o
CC fs/pipe.o
CC fs/ext4/orphan.o
CC fs/namei.o
CC drivers/pcmcia/ds.o
CC fs/ext4/acl.o
CC drivers/acpi/acpica/psparse.o
CC fs/ext4/xattr_security.o
CC net/ipv4/udp_tunnel_stub.o
CC net/ipv4/ip_tunnel.o
AR drivers/input/serio/built-in.a
CC drivers/gpu/drm/i915/vlv_sideband.o
CC net/ipv4/sysctl_net_ipv4.o
CC mm/madvise.o
CC drivers/gpu/drm/i915/vlv_suspend.o
CC net/ipv4/proc.o
CC drivers/gpu/drm/i915/soc/intel_dram.o
CC arch/x86/kernel/tsc_msr.o
CC [M] drivers/gpu/drm/xe/xe_device.o
CC drivers/gpu/drm/i915/soc/intel_gmch.o
CC drivers/acpi/event.o
CC drivers/gpu/drm/i915/soc/intel_pch.o
CC drivers/scsi/scsi_devinfo.o
CC drivers/net/phy/realtek.o
CC drivers/gpu/drm/i915/soc/intel_rom.o
CC drivers/usb/mon/mon_text.o
CC drivers/gpu/drm/i915/i915_memcpy.o
CC kernel/audit.o
CC drivers/input/mouse/alps.o
CC fs/nfs/nfs3acl.o
CC drivers/input/mouse/byd.o
CC drivers/ata/libata-sff.o
CC drivers/usb/core/hcd.o
CC drivers/input/mouse/logips2pp.o
CC drivers/acpi/acpica/psscope.o
CC net/sunrpc/xprtmultipath.o
CC arch/x86/kernel/io_delay.o
CC net/sunrpc/stats.o
CC net/ipv6/ip6_flowlabel.o
CC drivers/input/mouse/lifebook.o
CC drivers/acpi/acpica/pstree.o
AR drivers/net/ethernet/adaptec/built-in.a
CC lib/find_bit.o
CC arch/x86/kernel/rtc.o
AR drivers/net/wireless/admtek/built-in.a
AR drivers/net/wireless/ath/built-in.a
AR drivers/net/wireless/atmel/built-in.a
CC drivers/scsi/scsi_sysctl.o
AR drivers/net/wireless/broadcom/built-in.a
CC kernel/auditfilter.o
AR drivers/net/ethernet/agere/built-in.a
AR drivers/net/wireless/intel/built-in.a
CC drivers/pcmcia/pcmcia_resource.o
CC drivers/ata/libata-pmp.o
CC drivers/base/cacheinfo.o
AR drivers/net/wireless/intersil/built-in.a
CC net/ipv4/fib_rules.o
CC mm/page_io.o
AR drivers/net/wireless/marvell/built-in.a
CC drivers/usb/mon/mon_bin.o
AR drivers/net/wireless/mediatek/built-in.a
CC net/ipv4/ipmr.o
AR drivers/net/wireless/microchip/built-in.a
CC net/ipv4/ipmr_base.o
AR drivers/net/wireless/purelifi/built-in.a
AR drivers/net/wireless/quantenna/built-in.a
AR drivers/net/wireless/ralink/built-in.a
AR drivers/net/wireless/realtek/built-in.a
CC net/ipv4/syncookies.o
CC net/ipv4/tunnel4.o
AR drivers/net/wireless/rsi/built-in.a
AR drivers/net/ethernet/alacritech/built-in.a
CC arch/x86/kernel/resource.o
AR drivers/net/wireless/silabs/built-in.a
AS arch/x86/kernel/irqflags.o
AR drivers/net/wireless/st/built-in.a
CC drivers/rtc/nvmem.o
CC lib/llist.o
AR drivers/net/wireless/ti/built-in.a
CC drivers/rtc/dev.o
AR drivers/net/wireless/zydas/built-in.a
CC net/mac80211/key.o
AR drivers/net/ethernet/8390/built-in.a
AR drivers/net/wireless/virtual/built-in.a
AR drivers/net/wireless/built-in.a
AR drivers/net/ethernet/alteon/built-in.a
CC drivers/acpi/acpica/psutils.o
AR drivers/net/ethernet/amazon/built-in.a
CC drivers/scsi/scsi_proc.o
AR drivers/net/ethernet/amd/built-in.a
CC drivers/scsi/scsi_debugfs.o
AR drivers/net/ethernet/aquantia/built-in.a
AR drivers/net/ethernet/arc/built-in.a
AR drivers/net/ethernet/asix/built-in.a
CC lib/lwq.o
CC drivers/base/swnode.o
AR drivers/net/ethernet/atheros/built-in.a
AR drivers/net/ethernet/cadence/built-in.a
CC drivers/net/ethernet/broadcom/bnx2.o
AR drivers/net/ethernet/brocade/built-in.a
CC net/mac80211/util.o
AR drivers/net/phy/built-in.a
CC kernel/auditsc.o
CC drivers/gpu/drm/i915/i915_mm.o
CC net/mac80211/parse.o
CC [M] drivers/gpu/drm/xe/xe_device_sysfs.o
CC arch/x86/kernel/static_call.o
CC fs/nfs/nfs4proc.o
CC lib/memweight.o
CC net/mac80211/wme.o
CC net/mac80211/chan.o
CC [M] drivers/gpu/drm/xe/xe_dma_buf.o
CC kernel/audit_watch.o
CC drivers/acpi/acpica/pswalk.o
CC kernel/audit_fsnotify.o
CC lib/kfifo.o
CC kernel/audit_tree.o
CC [M] drivers/gpu/drm/xe/xe_drm_client.o
CC drivers/usb/core/urb.o
CC drivers/rtc/proc.o
CC drivers/gpu/drm/i915/i915_sw_fence.o
CC arch/x86/kernel/process.o
CC drivers/i2c/algos/i2c-algo-bit.o
CC drivers/input/mouse/trackpoint.o
CC net/ipv6/inet6_connection_sock.o
CC drivers/i2c/busses/i2c-i801.o
CC drivers/acpi/acpica/psxface.o
CC net/ipv6/udp_offload.o
AR drivers/i2c/muxes/built-in.a
CC fs/nfs/nfs4xdr.o
CC drivers/scsi/scsi_trace.o
CC drivers/rtc/sysfs.o
CC net/ipv4/ipconfig.o
AR drivers/usb/mon/built-in.a
CC net/sunrpc/sysctl.o
CC kernel/kprobes.o
CC drivers/pcmcia/cistpl.o
CC arch/x86/kernel/ptrace.o
CC drivers/base/auxiliary.o
CC drivers/input/mouse/cypress_ps2.o
CC drivers/ata/libata-acpi.o
AR drivers/net/ethernet/cavium/common/built-in.a
AR drivers/net/ethernet/chelsio/built-in.a
AR drivers/net/ethernet/cavium/thunder/built-in.a
AR drivers/net/ethernet/cavium/liquidio/built-in.a
CC drivers/net/ethernet/broadcom/tg3.o
AR drivers/net/ethernet/cavium/octeon/built-in.a
AR drivers/net/ethernet/cavium/built-in.a
AR drivers/input/misc/built-in.a
CC net/ipv4/netfilter.o
CC [M] drivers/gpu/drm/xe/xe_exec.o
CC drivers/acpi/acpica/rsaddr.o
CC net/ipv4/tcp_cubic.o
CC drivers/gpu/drm/i915/i915_sw_fence_work.o
CC drivers/base/devtmpfs.o
AR drivers/net/ethernet/cisco/built-in.a
CC drivers/i2c/i2c-boardinfo.o
CC drivers/usb/core/message.o
CC lib/percpu-refcount.o
CC drivers/pcmcia/pcmcia_cis.o
AR drivers/net/usb/built-in.a
CC fs/fcntl.o
CC net/ipv6/seg6.o
CC arch/x86/kernel/tls.o
CC drivers/usb/host/pci-quirks.o
CC drivers/i2c/i2c-core-base.o
CC drivers/acpi/acpica/rscalc.o
CC drivers/rtc/rtc-mc146818-lib.o
CC drivers/rtc/rtc-cmos.o
CC mm/swap_state.o
CC drivers/scsi/scsi_logging.o
AR drivers/i2c/algos/built-in.a
CC drivers/usb/host/ehci-hcd.o
CC drivers/gpu/drm/i915/i915_syncmap.o
CC drivers/pcmcia/rsrc_mgr.o
CC drivers/input/mouse/psmouse-smbus.o
CC lib/rhashtable.o
CC drivers/net/mii.o
CC drivers/acpi/acpica/rscreate.o
CC drivers/net/loopback.o
CC drivers/net/netconsole.o
AR fs/ext4/built-in.a
CC fs/ioctl.o
CC drivers/acpi/acpica/rsdumpinfo.o
CC drivers/usb/class/usblp.o
AR net/sunrpc/built-in.a
AR drivers/i2c/busses/built-in.a
CC net/ipv4/tcp_sigpool.o
CC net/ipv4/cipso_ipv4.o
CC drivers/pcmcia/rsrc_nonstatic.o
CC net/ipv4/xfrm4_policy.o
CC drivers/net/virtio_net.o
CC mm/swapfile.o
CC drivers/base/module.o
CC lib/base64.o
CC drivers/net/net_failover.o
CC drivers/ata/libata-pata-timings.o
CC [M] drivers/gpu/drm/xe/xe_execlist.o
CC drivers/usb/host/ehci-pci.o
CC drivers/usb/host/ohci-hcd.o
CC drivers/gpu/drm/i915/i915_user_extensions.o
AR drivers/net/ethernet/cortina/built-in.a
CC mm/swap_slots.o
CC drivers/ata/ahci.o
CC drivers/ata/libahci.o
CC [M] drivers/gpu/drm/xe/xe_exec_queue.o
CC drivers/scsi/scsi_pm.o
CC arch/x86/kernel/step.o
CC drivers/acpi/acpica/rsinfo.o
CC kernel/seccomp.o
CC drivers/acpi/acpica/rsio.o
CC drivers/i2c/i2c-core-smbus.o
CC drivers/gpu/drm/i915/i915_debugfs.o
CC drivers/base/auxiliary_sysfs.o
CC fs/nfs/nfs4state.o
CC net/ipv6/fib6_notifier.o
CC arch/x86/kernel/i8237.o
AR drivers/rtc/built-in.a
AR drivers/input/mouse/built-in.a
AR drivers/net/ethernet/dec/tulip/built-in.a
AR drivers/net/ethernet/dec/built-in.a
AR drivers/net/ethernet/dlink/built-in.a
CC drivers/input/input.o
CC fs/readdir.o
CC drivers/gpu/drm/drm_cache.o
CC fs/select.o
CC drivers/usb/core/driver.o
CC drivers/usb/core/config.o
CC drivers/input/input-compat.o
CC drivers/acpi/acpica/rsirq.o
CC lib/once.o
CC drivers/base/devcoredump.o
CC drivers/pcmcia/yenta_socket.o
CC drivers/input/input-mt.o
AR drivers/usb/class/built-in.a
CC net/ipv6/rpl.o
CC drivers/usb/core/file.o
CC drivers/ata/ata_piix.o
CC fs/nfs/nfs4renewd.o
AR drivers/net/ethernet/emulex/built-in.a
CC net/mac80211/trace.o
CC arch/x86/kernel/stacktrace.o
CC [M] drivers/gpu/drm/xe/xe_force_wake.o
CC drivers/usb/host/ohci-pci.o
CC drivers/i2c/i2c-core-acpi.o
CC drivers/scsi/scsi_bsg.o
CC arch/x86/kernel/reboot.o
CC drivers/acpi/acpica/rslist.o
CC kernel/relay.o
CC drivers/ata/pata_amd.o
CC drivers/scsi/scsi_common.o
CC drivers/gpu/drm/drm_color_mgmt.o
CC lib/refcount.o
CC drivers/ata/pata_oldpiix.o
CC drivers/gpu/drm/i915/i915_debugfs_params.o
CC kernel/utsname_sysctl.o
CC drivers/i2c/i2c-smbus.o
AR drivers/net/ethernet/engleder/built-in.a
CC net/ipv6/ioam6.o
CC lib/rcuref.o
CC lib/usercopy.o
CC mm/dmapool.o
CC drivers/acpi/evged.o
CC drivers/base/platform-msi.o
CC arch/x86/kernel/msr.o
CC drivers/acpi/acpica/rsmemory.o
CC fs/nfs/nfs4super.o
CC lib/errseq.o
AR drivers/net/ethernet/ezchip/built-in.a
CC fs/dcache.o
CC net/ipv6/sysctl_net_ipv6.o
CC drivers/ata/pata_sch.o
CC drivers/usb/host/uhci-hcd.o
CC net/ipv4/xfrm4_state.o
CC drivers/scsi/scsi_transport_spi.o
CC drivers/base/physical_location.o
CC drivers/scsi/virtio_scsi.o
CC lib/bucket_locks.o
CC drivers/ata/pata_mpiix.o
CC drivers/usb/core/buffer.o
CC drivers/usb/core/sysfs.o
CC drivers/ata/ata_generic.o
CC [M] drivers/gpu/drm/xe/xe_ggtt.o
CC kernel/delayacct.o
CC drivers/acpi/acpica/rsmisc.o
CC drivers/acpi/acpica/rsserial.o
AR drivers/net/ethernet/fujitsu/built-in.a
CC fs/inode.o
AR drivers/net/ethernet/fungible/built-in.a
CC drivers/gpu/drm/i915/i915_pmu.o
CC drivers/usb/storage/scsiglue.o
CC drivers/usb/host/xhci.o
CC [M] drivers/gpu/drm/xe/xe_gpu_scheduler.o
CC net/ipv6/xfrm6_policy.o
CC mm/hugetlb.o
CC drivers/input/input-poller.o
CC drivers/acpi/sysfs.o
AR drivers/i3c/built-in.a
CC drivers/base/trace.o
AR drivers/i2c/built-in.a
CC fs/nfs/nfs4file.o
AR drivers/pcmcia/built-in.a
CC drivers/usb/host/xhci-mem.o
CC drivers/usb/host/xhci-ext-caps.o
CC net/ipv6/xfrm6_state.o
AR drivers/usb/misc/built-in.a
CC fs/attr.o
CC lib/generic-radix-tree.o
CC drivers/acpi/property.o
CC kernel/taskstats.o
CC drivers/acpi/acpica/rsutils.o
CC drivers/usb/storage/protocol.o
CC drivers/usb/early/ehci-dbgp.o
CC arch/x86/kernel/cpuid.o
CC drivers/gpu/drm/drm_connector.o
CC arch/x86/kernel/early-quirks.o
CC drivers/usb/host/xhci-ring.o
CC drivers/scsi/sd.o
CC drivers/usb/core/endpoint.o
CC drivers/scsi/sr.o
CC drivers/scsi/sr_ioctl.o
CC drivers/acpi/debugfs.o
CC [M] drivers/gpu/drm/xe/xe_gsc.o
CC fs/nfs/delegation.o
CC fs/bad_inode.o
AR drivers/ata/built-in.a
CC drivers/usb/storage/transport.o
CC drivers/usb/storage/usb.o
CC drivers/input/ff-core.o
CC lib/bitmap-str.o
CC net/ipv6/xfrm6_input.o
CC drivers/acpi/acpica/rsxface.o
CC net/ipv4/xfrm4_input.o
CC net/mac80211/mlme.o
CC mm/mmu_notifier.o
CC drivers/input/touchscreen.o
AR drivers/net/ethernet/google/built-in.a
AR drivers/media/i2c/built-in.a
CC kernel/tsacct.o
CC kernel/tracepoint.o
AR drivers/media/tuners/built-in.a
CC drivers/scsi/sr_vendor.o
AR drivers/media/rc/keymaps/built-in.a
AR drivers/media/rc/built-in.a
AR drivers/base/built-in.a
CC drivers/gpu/drm/i915/gt/gen2_engine_cs.o
AR drivers/media/common/b2c2/built-in.a
AR drivers/media/common/saa7146/built-in.a
AR drivers/media/common/siano/built-in.a
CC drivers/acpi/acpica/tbdata.o
AR drivers/media/common/v4l2-tpg/built-in.a
CC kernel/irq_work.o
CC drivers/acpi/acpica/tbfadt.o
AR drivers/media/common/videobuf2/built-in.a
AR drivers/media/common/built-in.a
AR drivers/pps/clients/built-in.a
AR drivers/media/platform/allegro-dvt/built-in.a
AR drivers/pps/generators/built-in.a
CC drivers/pps/pps.o
AR drivers/media/platform/amlogic/meson-ge2d/built-in.a
AR drivers/net/ethernet/huawei/built-in.a
CC net/ipv6/xfrm6_output.o
CC drivers/usb/core/devio.o
CC drivers/input/ff-memless.o
AR drivers/media/platform/amlogic/built-in.a
CC drivers/ptp/ptp_clock.o
AR drivers/media/platform/amphion/built-in.a
AR drivers/media/platform/aspeed/built-in.a
CC drivers/power/supply/power_supply_core.o
AR drivers/usb/early/built-in.a
AR drivers/media/platform/atmel/built-in.a
CC kernel/static_call.o
CC drivers/hwmon/hwmon.o
AR drivers/media/platform/broadcom/built-in.a
CC kernel/padata.o
AR drivers/media/platform/cadence/built-in.a
AR drivers/media/platform/chips-media/coda/built-in.a
CC drivers/gpu/drm/i915/gt/gen6_engine_cs.o
AR drivers/media/platform/chips-media/wave5/built-in.a
AR drivers/media/platform/chips-media/built-in.a
CC arch/x86/kernel/smp.o
AR drivers/media/platform/imagination/built-in.a
AR drivers/media/platform/intel/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc_debugfs.o
AR drivers/media/platform/marvell/built-in.a
CC net/ipv4/xfrm4_output.o
AR drivers/media/platform/mediatek/jpeg/built-in.a
CC net/ipv4/xfrm4_protocol.o
AR drivers/media/platform/mediatek/mdp/built-in.a
CC arch/x86/kernel/smpboot.o
AR drivers/media/platform/mediatek/vcodec/common/built-in.a
AR drivers/media/platform/mediatek/vcodec/encoder/built-in.a
CC drivers/usb/storage/initializers.o
AR drivers/media/platform/mediatek/vcodec/decoder/built-in.a
CC net/mac80211/tdls.o
AR drivers/media/platform/mediatek/vcodec/built-in.a
CC lib/string_helpers.o
CC net/mac80211/ocb.o
AR drivers/media/platform/mediatek/vpu/built-in.a
CC drivers/usb/core/notify.o
AR drivers/media/platform/mediatek/mdp3/built-in.a
AR drivers/media/platform/mediatek/built-in.a
CC drivers/net/ethernet/intel/e1000/e1000_main.o
AR drivers/media/platform/microchip/built-in.a
CC drivers/net/ethernet/intel/e1000e/82571.o
CC drivers/acpi/acpi_lpat.o
AR drivers/media/platform/nuvoton/built-in.a
CC drivers/acpi/acpica/tbfind.o
AR drivers/media/platform/nvidia/tegra-vde/built-in.a
AR drivers/media/platform/nvidia/built-in.a
AR drivers/net/ethernet/i825xx/built-in.a
AR drivers/media/platform/qcom/camss/built-in.a
AR drivers/media/platform/qcom/venus/built-in.a
AR drivers/media/platform/nxp/dw100/built-in.a
AR drivers/media/platform/qcom/built-in.a
CC fs/nfs/nfs4idmap.o
AR drivers/media/platform/nxp/imx-jpeg/built-in.a
CC fs/file.o
CC lib/hexdump.o
AR drivers/media/platform/nxp/imx8-isi/built-in.a
CC arch/x86/kernel/tsc_sync.o
AR drivers/media/platform/nxp/built-in.a
AR drivers/media/platform/raspberrypi/pisp_be/built-in.a
AR drivers/media/platform/raspberrypi/built-in.a
CC drivers/usb/storage/sierra_ms.o
AR drivers/media/platform/renesas/rcar-vin/built-in.a
CC drivers/net/ethernet/intel/e1000e/ich8lan.o
AR drivers/media/platform/renesas/rzg2l-cru/built-in.a
AR drivers/thermal/broadcom/built-in.a
AR drivers/media/platform/rockchip/rga/built-in.a
AR drivers/media/platform/renesas/vsp1/built-in.a
AR drivers/thermal/renesas/built-in.a
AR drivers/media/platform/renesas/built-in.a
AR drivers/media/platform/rockchip/rkisp1/built-in.a
CC drivers/acpi/acpica/tbinstal.o
AR drivers/media/platform/rockchip/built-in.a
AR drivers/thermal/samsung/built-in.a
CC drivers/thermal/intel/intel_tcc.o
CC drivers/pps/kapi.o
AR drivers/media/platform/samsung/exynos-gsc/built-in.a
CC drivers/net/ethernet/intel/e100.o
AR drivers/media/platform/samsung/exynos4-is/built-in.a
CC lib/kstrtox.o
AR drivers/media/platform/samsung/s3c-camif/built-in.a
AR drivers/media/platform/samsung/s5p-g2d/built-in.a
AR drivers/media/platform/samsung/s5p-jpeg/built-in.a
AR drivers/media/platform/samsung/s5p-mfc/built-in.a
AR drivers/media/platform/samsung/built-in.a
AR drivers/media/platform/st/sti/bdisp/built-in.a
AR drivers/media/platform/st/sti/c8sectpfe/built-in.a
AR drivers/media/platform/st/sti/delta/built-in.a
CC drivers/input/sparse-keymap.o
AR drivers/media/platform/st/sti/hva/built-in.a
AR drivers/media/platform/st/stm32/built-in.a
AR drivers/media/platform/st/built-in.a
CC lib/iomap.o
AR drivers/media/platform/sunxi/sun4i-csi/built-in.a
CC arch/x86/kernel/setup_percpu.o
CC drivers/usb/storage/option_ms.o
AR drivers/media/platform/sunxi/sun6i-csi/built-in.a
AR drivers/media/platform/ti/am437x/built-in.a
AR drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
AR drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
AR drivers/media/platform/ti/cal/built-in.a
AR drivers/media/platform/sunxi/sun8i-di/built-in.a
AR drivers/media/platform/ti/vpe/built-in.a
CC drivers/power/supply/power_supply_sysfs.o
AR drivers/media/platform/sunxi/sun8i-rotate/built-in.a
CC kernel/jump_label.o
AR drivers/media/platform/ti/davinci/built-in.a
AR drivers/media/platform/sunxi/built-in.a
CC drivers/acpi/acpi_pcc.o
AR drivers/media/platform/ti/j721e-csi2rx/built-in.a
CC drivers/usb/storage/usual-tables.o
CC drivers/thermal/intel/therm_throt.o
AR drivers/media/platform/ti/omap/built-in.a
CC arch/x86/kernel/mpparse.o
CC drivers/net/ethernet/intel/e1000e/80003es2lan.o
CC net/mac80211/airtime.o
AR drivers/media/platform/ti/omap3isp/built-in.a
AR drivers/net/ethernet/microsoft/built-in.a
AR drivers/media/platform/ti/built-in.a
CC drivers/ptp/ptp_chardev.o
AR drivers/media/platform/verisilicon/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc_proxy.o
AR drivers/media/platform/via/built-in.a
CC drivers/acpi/acpica/tbprint.o
AR drivers/media/platform/xilinx/built-in.a
CC net/ipv6/xfrm6_protocol.o
AR drivers/media/platform/built-in.a
AR drivers/media/pci/ttpci/built-in.a
AR drivers/media/pci/b2c2/built-in.a
AR drivers/media/pci/pluto2/built-in.a
AR drivers/media/pci/dm1105/built-in.a
CC drivers/gpu/drm/i915/gt/gen6_ppgtt.o
AR drivers/media/usb/b2c2/built-in.a
AR drivers/media/pci/pt1/built-in.a
AR drivers/media/usb/dvb-usb/built-in.a
AR drivers/media/pci/pt3/built-in.a
AR drivers/media/usb/dvb-usb-v2/built-in.a
AR drivers/media/usb/s2255/built-in.a
AR drivers/media/pci/mantis/built-in.a
AR drivers/media/pci/ngene/built-in.a
AR drivers/media/usb/siano/built-in.a
AR drivers/media/pci/ddbridge/built-in.a
CC mm/migrate.o
AR drivers/media/usb/ttusb-budget/built-in.a
AR drivers/media/pci/saa7146/built-in.a
AR drivers/media/usb/ttusb-dec/built-in.a
CC drivers/pps/sysfs.o
AR drivers/media/pci/smipcie/built-in.a
AR drivers/media/usb/built-in.a
AR drivers/media/pci/netup_unidvb/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc_submit.o
CC drivers/usb/core/generic.o
CC mm/page_counter.o
CC mm/hugetlb_cgroup.o
AR drivers/media/pci/intel/ipu3/built-in.a
CC drivers/usb/core/quirks.o
AR drivers/media/pci/intel/ivsc/built-in.a
AR drivers/media/pci/intel/built-in.a
AR drivers/thermal/st/built-in.a
CC drivers/input/vivaldi-fmap.o
AR drivers/media/pci/built-in.a
CC lib/iomap_copy.o
AR drivers/media/mmc/siano/built-in.a
AR drivers/media/mmc/built-in.a
CC lib/devres.o
AR drivers/media/firewire/built-in.a
CC drivers/gpu/drm/i915/gt/gen7_renderclear.o
CC fs/filesystems.o
AR net/ipv4/built-in.a
CC drivers/acpi/acpica/tbutils.o
AR drivers/media/spi/built-in.a
AR drivers/hwmon/built-in.a
CC fs/namespace.o
CC drivers/gpu/drm/i915/gt/gen8_engine_cs.o
AR drivers/media/test-drivers/built-in.a
AR drivers/media/built-in.a
CC drivers/power/supply/power_supply_leds.o
CC fs/seq_file.o
CC drivers/net/ethernet/intel/e1000/e1000_hw.o
AR drivers/net/ethernet/litex/built-in.a
CC drivers/ptp/ptp_sysfs.o
CC drivers/usb/host/xhci-hub.o
CC drivers/net/ethernet/intel/e1000e/mac.o
CC drivers/net/ethernet/intel/e1000e/manage.o
AR drivers/usb/storage/built-in.a
CC drivers/net/ethernet/intel/e1000e/nvm.o
CC drivers/net/ethernet/intel/e1000e/phy.o
CC drivers/net/ethernet/intel/e1000e/param.o
AR drivers/pps/built-in.a
CC drivers/scsi/sg.o
CC drivers/power/supply/power_supply_hwmon.o
CC drivers/input/input-leds.o
CC kernel/context_tracking.o
CC fs/xattr.o
CC drivers/acpi/acpica/tbxface.o
CC lib/check_signature.o
CC fs/libfs.o
CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.o
CC drivers/usb/core/devices.o
CC lib/interval_tree.o
CC fs/nfs/callback.o
CC net/ipv6/netfilter.o
CC arch/x86/kernel/trace_clock.o
CC drivers/net/ethernet/intel/e1000e/ethtool.o
CC fs/nfs/callback_xdr.o
CC kernel/iomem.o
CC drivers/net/ethernet/intel/e1000/e1000_ethtool.o
CC drivers/acpi/ac.o
CC drivers/input/evdev.o
CC arch/x86/kernel/trace.o
CC lib/assoc_array.o
AR drivers/power/supply/built-in.a
AR drivers/power/built-in.a
CC net/mac80211/eht.o
AR drivers/watchdog/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt.o
CC fs/nfs/callback_proc.o
CC drivers/gpu/drm/drm_crtc.o
CC drivers/acpi/button.o
CC net/mac80211/led.o
CC drivers/acpi/acpica/tbxfload.o
CC kernel/rseq.o
CC drivers/net/ethernet/intel/e1000/e1000_param.o
CC drivers/ptp/ptp_vclock.o
AR drivers/thermal/qcom/built-in.a
AR drivers/thermal/tegra/built-in.a
CC net/ipv6/proc.o
CC net/ipv6/syncookies.o
CC net/mac80211/pm.o
CC net/mac80211/rc80211_minstrel_ht.o
AR drivers/thermal/intel/built-in.a
CC drivers/md/md.o
AR drivers/thermal/mediatek/built-in.a
CC arch/x86/kernel/rethook.o
CC drivers/thermal/thermal_core.o
CC drivers/md/md-bitmap.o
CC drivers/acpi/acpica/tbxfroot.o
CC arch/x86/kernel/vmcore_info_32.o
CC drivers/usb/core/phy.o
CC drivers/usb/host/xhci-dbg.o
CC drivers/acpi/fan_core.o
CC drivers/gpu/drm/i915/gt/gen8_ppgtt.o
CC mm/early_ioremap.o
AR drivers/net/ethernet/marvell/octeon_ep/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_ccs_mode.o
AR drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
AR drivers/net/ethernet/marvell/octeontx2/built-in.a
AR drivers/net/ethernet/marvell/prestera/built-in.a
CC drivers/usb/host/xhci-trace.o
CC drivers/net/ethernet/marvell/sky2.o
CC lib/bitrev.o
CC drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
CC drivers/usb/host/xhci-debugfs.o
CC [M] drivers/gpu/drm/xe/xe_gt_clock.o
CC drivers/acpi/acpica/utaddress.o
CC drivers/usb/host/xhci-pci.o
AR drivers/input/built-in.a
CC drivers/ptp/ptp_kvm_x86.o
CC drivers/md/md-autodetect.o
CC drivers/scsi/scsi_sysfs.o
CC drivers/md/dm.o
CC net/mac80211/wbrf.o
AR kernel/built-in.a
CC drivers/md/dm-table.o
CC arch/x86/kernel/machine_kexec_32.o
CC drivers/net/ethernet/intel/e1000e/netdev.o
CC drivers/thermal/thermal_sysfs.o
CC drivers/md/dm-target.o
CC drivers/net/ethernet/intel/e1000e/ptp.o
CC drivers/cpufreq/cpufreq.o
CC lib/crc-ccitt.o
AS arch/x86/kernel/relocate_kernel_32.o
CC lib/crc16.o
HOSTCC lib/gen_crc32table
CC drivers/acpi/acpica/utalloc.o
CC mm/secretmem.o
CC drivers/cpufreq/freq_table.o
CC drivers/usb/core/port.o
CC drivers/cpufreq/cpufreq_performance.o
CC drivers/gpu/drm/drm_displayid.o
CC drivers/acpi/fan_attr.o
CC mm/hmm.o
CC drivers/thermal/thermal_trip.o
AR drivers/net/ethernet/mellanox/built-in.a
CC drivers/thermal/thermal_helpers.o
CC net/ipv6/calipso.o
CC drivers/thermal/thermal_hwmon.o
CC arch/x86/kernel/crash_dump_32.o
CC lib/xxhash.o
CC drivers/cpuidle/governors/menu.o
AR drivers/net/ethernet/intel/e1000/built-in.a
CC drivers/cpuidle/cpuidle.o
CC drivers/cpuidle/driver.o
CC drivers/acpi/acpica/utascii.o
CC drivers/gpu/drm/drm_drv.o
CC drivers/acpi/fan_hwmon.o
CC drivers/ptp/ptp_kvm_common.o
CC drivers/acpi/acpi_video.o
CC drivers/cpuidle/governor.o
CC fs/nfs/nfs4namespace.o
CC [M] drivers/gpu/drm/xe/xe_gt_freq.o
CC drivers/acpi/acpica/utbuffer.o
CC drivers/cpuidle/governors/haltpoll.o
CC drivers/md/dm-linear.o
CC drivers/usb/core/hcd-pci.o
CC drivers/usb/core/usb-acpi.o
CC mm/memfd.o
AR drivers/net/ethernet/meta/built-in.a
CC drivers/gpu/drm/drm_dumb_buffers.o
CC drivers/cpufreq/cpufreq_userspace.o
CC lib/genalloc.o
CC drivers/gpu/drm/i915/gt/intel_context.o
CC drivers/cpufreq/cpufreq_ondemand.o
CC fs/fs-writeback.o
CC drivers/cpufreq/cpufreq_governor.o
CC drivers/cpufreq/cpufreq_governor_attr_set.o
CC drivers/thermal/gov_step_wise.o
CC drivers/md/dm-stripe.o
CC arch/x86/kernel/crash.o
CC drivers/acpi/acpica/utcksum.o
CC fs/nfs/nfs4getroot.o
CC drivers/acpi/acpica/utcopy.o
CC drivers/acpi/acpica/utexcep.o
CC mm/ptdump.o
CC drivers/md/dm-ioctl.o
CC mm/execmem.o
AR drivers/scsi/built-in.a
CC drivers/gpu/drm/drm_edid.o
CC drivers/gpu/drm/i915/gt/intel_context_sseu.o
CC net/ipv6/ah6.o
CC drivers/gpu/drm/drm_eld.o
CC drivers/cpufreq/acpi-cpufreq.o
CC drivers/thermal/gov_user_space.o
CC [M] drivers/gpu/drm/xe/xe_gt_idle.o
AR drivers/ptp/built-in.a
CC drivers/md/dm-io.o
CC [M] drivers/gpu/drm/xe/xe_gt_mcr.o
CC fs/nfs/nfs4client.o
CC drivers/acpi/video_detect.o
CC drivers/gpu/drm/i915/gt/intel_engine_cs.o
AR drivers/net/ethernet/broadcom/built-in.a
CC drivers/gpu/drm/drm_encoder.o
CC arch/x86/kernel/module.o
CC net/ipv6/esp6.o
CC drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
CC drivers/gpu/drm/drm_file.o
CC drivers/md/dm-kcopyd.o
CC drivers/acpi/acpica/utdebug.o
CC lib/percpu_counter.o
AR drivers/mmc/built-in.a
CC drivers/cpuidle/sysfs.o
AR drivers/net/ethernet/micrel/built-in.a
CC drivers/gpu/drm/i915/gt/intel_engine_pm.o
AR drivers/usb/core/built-in.a
CC drivers/gpu/drm/drm_fourcc.o
CC drivers/gpu/drm/i915/gt/intel_engine_user.o
CC [M] drivers/gpu/drm/xe/xe_gt_pagefault.o
CC drivers/gpu/drm/i915/gt/intel_execlists_submission.o
CC drivers/gpu/drm/drm_framebuffer.o
AR drivers/cpuidle/governors/built-in.a
AR drivers/net/ethernet/microchip/built-in.a
CC fs/nfs/nfs4session.o
CC fs/nfs/dns_resolve.o
CC arch/x86/kernel/doublefault_32.o
CC drivers/acpi/processor_driver.o
AR drivers/thermal/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_sysfs.o
AR mm/built-in.a
CC drivers/acpi/processor_thermal.o
CC lib/audit.o
CC drivers/acpi/acpica/utdecode.o
CC drivers/cpuidle/poll_state.o
CC drivers/gpu/drm/drm_gem.o
AR drivers/usb/host/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_throttle.o
AR drivers/usb/built-in.a
CC drivers/gpu/drm/drm_ioctl.o
AR drivers/net/ethernet/mscc/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
CC [M] drivers/gpu/drm/xe/xe_gt_topology.o
CC drivers/acpi/acpica/utdelete.o
CC drivers/cpufreq/amd-pstate.o
CC fs/pnode.o
CC drivers/gpu/drm/i915/gt/intel_ggtt.o
CC drivers/cpufreq/amd-pstate-trace.o
CC drivers/cpuidle/cpuidle-haltpoll.o
CC fs/splice.o
CC drivers/acpi/processor_idle.o
CC fs/sync.o
AR drivers/net/ethernet/myricom/built-in.a
AR drivers/ufs/built-in.a
CC fs/nfs/nfs4trace.o
CC drivers/md/dm-sysfs.o
CC drivers/gpu/drm/drm_lease.o
AR drivers/net/ethernet/natsemi/built-in.a
CC fs/nfs/nfs4sysctl.o
CC arch/x86/kernel/early_printk.o
CC drivers/cpufreq/intel_pstate.o
CC fs/utimes.o
CC lib/syscall.o
CC drivers/acpi/acpica/uterror.o
CC drivers/gpu/drm/drm_managed.o
CC drivers/acpi/acpica/uteval.o
CC drivers/gpu/drm/drm_mm.o
AR drivers/net/ethernet/neterion/built-in.a
CC drivers/md/dm-stats.o
AR drivers/net/ethernet/marvell/built-in.a
CC fs/d_path.o
CC lib/errname.o
CC arch/x86/kernel/hpet.o
AR drivers/cpuidle/built-in.a
CC drivers/acpi/acpica/utglobal.o
CC drivers/gpu/drm/drm_mode_config.o
CC lib/nlattr.o
AR net/mac80211/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc.o
CC drivers/gpu/drm/drm_mode_object.o
CC arch/x86/kernel/amd_nb.o
AR drivers/firmware/arm_ffa/built-in.a
AR drivers/firmware/arm_scmi/built-in.a
CC fs/stack.o
AR drivers/net/ethernet/netronome/built-in.a
AR drivers/firmware/broadcom/built-in.a
CC drivers/acpi/processor_throttling.o
CC fs/fs_struct.o
CC lib/cpu_rmap.o
AR drivers/firmware/cirrus/built-in.a
AR drivers/firmware/meson/built-in.a
AR drivers/firmware/microchip/built-in.a
AR drivers/crypto/stm32/built-in.a
AR drivers/crypto/xilinx/built-in.a
CC lib/dynamic_queue_limits.o
AR drivers/firmware/imx/built-in.a
AR drivers/crypto/hisilicon/built-in.a
CC drivers/firmware/efi/efi-bgrt.o
CC arch/x86/kernel/kvm.o
AR drivers/crypto/intel/keembay/built-in.a
CC lib/glob.o
AR drivers/crypto/intel/ixp4xx/built-in.a
AR drivers/firmware/psci/built-in.a
AR drivers/crypto/intel/built-in.a
CC drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
CC drivers/firmware/efi/libstub/efi-stub-helper.o
CC drivers/clocksource/acpi_pm.o
AR drivers/firmware/qcom/built-in.a
AR drivers/crypto/starfive/built-in.a
AR drivers/crypto/built-in.a
CC drivers/hid/usbhid/hid-core.o
CC drivers/firmware/efi/libstub/gop.o
CC drivers/hid/usbhid/hiddev.o
CC fs/statfs.o
CC drivers/acpi/acpica/uthex.o
CC drivers/firmware/efi/efi.o
CC [M] drivers/gpu/drm/xe/xe_guc_ads.o
CC [M] drivers/gpu/drm/xe/xe_guc_capture.o
CC drivers/hid/hid-core.o
CC [M] drivers/gpu/drm/xe/xe_guc_ct.o
CC net/ipv6/sit.o
AR drivers/net/ethernet/ni/built-in.a
CC drivers/hid/usbhid/hid-pidff.o
CC drivers/clocksource/i8253.o
AR drivers/platform/x86/amd/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_db_mgr.o
AR drivers/platform/x86/intel/built-in.a
CC drivers/platform/x86/wmi.o
CC drivers/acpi/acpica/utids.o
CC drivers/acpi/acpica/utinit.o
CC drivers/net/ethernet/nvidia/forcedeth.o
CC drivers/gpu/drm/i915/gt/intel_gt.o
CC arch/x86/kernel/kvmclock.o
CC drivers/mailbox/mailbox.o
AR drivers/perf/built-in.a
CC drivers/gpu/drm/drm_modes.o
CC drivers/firmware/efi/vars.o
CC drivers/firmware/efi/reboot.o
AR drivers/hwtracing/intel_th/built-in.a
CC drivers/platform/x86/wmi-bmof.o
CC net/ipv6/addrconf_core.o
AR drivers/net/ethernet/oki-semi/built-in.a
CC arch/x86/kernel/paravirt.o
AR drivers/firmware/smccc/built-in.a
CC drivers/md/dm-rq.o
CC drivers/firmware/efi/libstub/secureboot.o
CC drivers/firmware/efi/libstub/tpm.o
CC drivers/firmware/efi/libstub/file.o
CC lib/strncpy_from_user.o
CC lib/strnlen_user.o
AR drivers/clocksource/built-in.a
CC drivers/platform/x86/eeepc-laptop.o
CC fs/fs_pin.o
CC drivers/acpi/acpica/utlock.o
CC drivers/gpu/drm/drm_modeset_lock.o
CC lib/net_utils.o
CC fs/nsfs.o
AR drivers/firmware/tegra/built-in.a
AR drivers/net/ethernet/packetengines/built-in.a
CC drivers/acpi/processor_perflib.o
CC drivers/platform/x86/p2sb.o
CC drivers/hid/hid-input.o
CC drivers/hid/hid-quirks.o
CC arch/x86/kernel/pvclock.o
CC drivers/mailbox/pcc.o
CC arch/x86/kernel/pcspeaker.o
CC drivers/gpu/drm/drm_plane.o
AR drivers/platform/surface/built-in.a
CC arch/x86/kernel/check.o
CC drivers/firmware/efi/libstub/mem.o
CC lib/sg_pool.o
CC fs/fs_types.o
CC drivers/hid/hid-debug.o
CC drivers/acpi/acpica/utmath.o
AR drivers/android/built-in.a
CC drivers/firmware/efi/libstub/random.o
AR drivers/nvmem/layouts/built-in.a
AR drivers/net/ethernet/qlogic/built-in.a
AR drivers/net/ethernet/qualcomm/emac/built-in.a
CC drivers/nvmem/core.o
CC drivers/net/ethernet/realtek/8139too.o
CC drivers/firmware/efi/libstub/randomalloc.o
AR drivers/net/ethernet/qualcomm/built-in.a
CC drivers/firmware/efi/libstub/pci.o
CC drivers/acpi/container.o
CC lib/stackdepot.o
CC drivers/firmware/efi/libstub/skip_spaces.o
CC drivers/gpu/drm/drm_prime.o
CC drivers/firmware/efi/memattr.o
CC drivers/md/dm-io-rewind.o
CC drivers/hid/hidraw.o
CC net/ipv6/exthdrs_core.o
CC net/ipv6/ip6_checksum.o
CC drivers/firmware/efi/tpm.o
AR drivers/net/ethernet/renesas/built-in.a
CC drivers/acpi/thermal_lib.o
AR drivers/net/ethernet/intel/e1000e/built-in.a
AR drivers/net/ethernet/intel/built-in.a
CC drivers/md/dm-builtin.o
CC arch/x86/kernel/uprobes.o
CC fs/fs_context.o
AR drivers/hid/usbhid/built-in.a
CC drivers/acpi/acpica/utmisc.o
CC drivers/md/dm-raid1.o
CC arch/x86/kernel/perf_regs.o
CC net/ipv6/ip6_icmp.o
AR drivers/cpufreq/built-in.a
AR drivers/firmware/xilinx/built-in.a
CC drivers/acpi/thermal.o
CC drivers/firmware/efi/libstub/lib-cmdline.o
CC drivers/firmware/efi/memmap.o
AR drivers/net/ethernet/rdc/built-in.a
AR drivers/net/ethernet/rocker/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_hwconfig.o
CC drivers/firmware/dmi_scan.o
CC [M] drivers/gpu/drm/xe/xe_guc_id_mgr.o
CC drivers/acpi/acpica/utmutex.o
CC [M] drivers/gpu/drm/xe/xe_guc_klv_helpers.o
AR drivers/mailbox/built-in.a
CC drivers/firmware/dmi-id.o
CC drivers/firmware/efi/capsule.o
CC drivers/md/dm-log.o
CC drivers/acpi/acpica/utnonansi.o
AR drivers/net/ethernet/samsung/built-in.a
CC drivers/acpi/nhlt.o
CC drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
CC arch/x86/kernel/tracepoint.o
CC drivers/acpi/acpi_memhotplug.o
CC drivers/net/ethernet/realtek/r8169_main.o
CC net/ipv6/output_core.o
AR drivers/platform/x86/built-in.a
AR drivers/platform/built-in.a
CC drivers/firmware/efi/esrt.o
CC drivers/firmware/efi/runtime-wrappers.o
CC drivers/hid/hid-generic.o
CC drivers/acpi/acpica/utobject.o
CC drivers/net/ethernet/realtek/r8169_firmware.o
CC drivers/firmware/efi/libstub/lib-ctype.o
CC arch/x86/kernel/itmt.o
CC fs/fs_parser.o
CC drivers/firmware/efi/libstub/alignedmem.o
CC drivers/hid/hid-a4tech.o
CC [M] drivers/gpu/drm/xe/xe_guc_log.o
CC net/ipv6/protocol.o
CC lib/asn1_decoder.o
CC arch/x86/kernel/umip.o
CC drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
CC drivers/firmware/memmap.o
CC fs/fsopen.o
CC drivers/acpi/acpica/utosi.o
CC drivers/firmware/efi/capsule-loader.o
CC drivers/firmware/efi/libstub/relocate.o
CC drivers/acpi/ioapic.o
CC drivers/net/ethernet/realtek/r8169_phy_config.o
GEN lib/oid_registry_data.c
CC drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
CC drivers/acpi/acpica/utownerid.o
CC drivers/firmware/efi/libstub/printk.o
CC drivers/firmware/efi/earlycon.o
CC fs/init.o
CC drivers/md/dm-region-hash.o
CC drivers/hid/hid-apple.o
AR drivers/nvmem/built-in.a
CC lib/ucs2_string.o
CC [M] drivers/gpu/drm/xe/xe_guc_pc.o
CC fs/kernel_read_file.o
CC drivers/firmware/efi/libstub/vsprintf.o
CC fs/mnt_idmapping.o
CC drivers/md/dm-zero.o
CC drivers/acpi/battery.o
CC drivers/acpi/acpica/utpredef.o
CC drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
CC drivers/acpi/acpica/utresdecode.o
CC drivers/firmware/efi/libstub/x86-stub.o
AR drivers/net/ethernet/seeq/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_submit.o
CC fs/remap_range.o
CC drivers/acpi/acpica/utresrc.o
CC drivers/gpu/drm/drm_print.o
CC lib/sbitmap.o
CC drivers/firmware/efi/libstub/smbios.o
STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
CC arch/x86/kernel/unwind_frame.o
CC drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
CC drivers/hid/hid-belkin.o
AR drivers/net/ethernet/silan/built-in.a
CC drivers/gpu/drm/drm_property.o
CC drivers/gpu/drm/i915/gt/intel_gt_irq.o
CC fs/pidfs.o
AR fs/nfs/built-in.a
CC lib/group_cpus.o
CC drivers/gpu/drm/i915/gt/intel_gt_mcr.o
CC net/ipv6/ip6_offload.o
CC drivers/acpi/acpica/utstate.o
CC drivers/gpu/drm/drm_rect.o
STUBCPY drivers/firmware/efi/libstub/file.stub.o
CC drivers/gpu/drm/drm_syncobj.o
CC net/ipv6/tcpv6_offload.o
CC [M] drivers/gpu/drm/xe/xe_heci_gsc.o
AR drivers/net/ethernet/sis/built-in.a
CC lib/fw_table.o
CC drivers/acpi/bgrt.o
CC fs/buffer.o
CC net/ipv6/exthdrs_offload.o
AR drivers/net/ethernet/sfc/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_pm.o
CC drivers/acpi/spcr.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
CC drivers/hid/hid-cherry.o
CC drivers/acpi/acpica/utstring.o
CC drivers/gpu/drm/drm_sysfs.o
CC net/ipv6/inet6_hashtables.o
STUBCPY drivers/firmware/efi/libstub/gop.stub.o
CC [M] drivers/gpu/drm/xe/xe_hw_engine.o
CC [M] drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
CC drivers/hid/hid-chicony.o
STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
CC drivers/acpi/acpica/utstrsuppt.o
CC [M] drivers/gpu/drm/xe/xe_hw_engine_group.o
AR drivers/net/ethernet/nvidia/built-in.a
AR lib/lib.a
GEN lib/crc32table.h
AR drivers/net/ethernet/smsc/built-in.a
AR drivers/net/ethernet/socionext/built-in.a
CC fs/mpage.o
CC drivers/acpi/acpica/utstrtoul64.o
AR drivers/net/ethernet/stmicro/built-in.a
CC drivers/hid/hid-cypress.o
CC drivers/acpi/acpica/utxface.o
CC drivers/acpi/acpica/utxfinit.o
CC net/ipv6/mcast_snoop.o
AR drivers/md/built-in.a
CC drivers/acpi/acpica/utxferror.o
CC [M] drivers/gpu/drm/xe/xe_hw_fence.o
STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
AR drivers/net/ethernet/sun/built-in.a
CC fs/proc_namespace.o
AR drivers/firmware/efi/built-in.a
CC drivers/acpi/acpica/utxfmutex.o
CC fs/direct-io.o
CC lib/oid_registry.o
AR arch/x86/kernel/built-in.a
AR arch/x86/built-in.a
CC drivers/hid/hid-ezkey.o
STUBCPY drivers/firmware/efi/libstub/mem.stub.o
CC [M] drivers/gpu/drm/xe/xe_huc.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
CC lib/crc32.o
CC fs/eventpoll.o
STUBCPY drivers/firmware/efi/libstub/pci.stub.o
CC fs/anon_inodes.o
CC drivers/hid/hid-gyration.o
STUBCPY drivers/firmware/efi/libstub/printk.stub.o
STUBCPY drivers/firmware/efi/libstub/random.stub.o
STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
CC [M] drivers/gpu/drm/xe/xe_irq.o
STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
STUBCPY drivers/firmware/efi/libstub/smbios.stub.o
AR drivers/net/ethernet/ti/built-in.a
AR drivers/net/ethernet/tehuti/built-in.a
STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
CC [M] drivers/gpu/drm/xe/xe_lrc.o
CC drivers/gpu/drm/drm_trace_points.o
STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
AR drivers/net/ethernet/vertexcom/built-in.a
CC drivers/hid/hid-ite.o
STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
CC drivers/gpu/drm/drm_vblank.o
AR drivers/firmware/efi/libstub/lib.a
CC [M] drivers/gpu/drm/xe/xe_migrate.o
CC drivers/gpu/drm/drm_vblank_work.o
AR drivers/firmware/built-in.a
AR drivers/net/ethernet/via/built-in.a
CC drivers/hid/hid-kensington.o
CC drivers/gpu/drm/drm_vma_manager.o
CC fs/signalfd.o
CC [M] drivers/gpu/drm/xe/xe_mmio.o
AR drivers/acpi/acpica/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_requests.o
CC [M] drivers/gpu/drm/xe/xe_mocs.o
CC fs/timerfd.o
AR drivers/acpi/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
AR drivers/net/ethernet/wangxun/built-in.a
CC fs/eventfd.o
AR drivers/net/ethernet/wiznet/built-in.a
CC drivers/hid/hid-lg.o
AR drivers/net/ethernet/xilinx/built-in.a
CC fs/aio.o
CC drivers/hid/hid-lgff.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
AR lib/built-in.a
CC [M] drivers/gpu/drm/xe/xe_module.o
CC fs/locks.o
AR drivers/net/ethernet/xircom/built-in.a
CC fs/binfmt_misc.o
CC drivers/gpu/drm/drm_writeback.o
CC [M] drivers/gpu/drm/xe/xe_oa.o
CC drivers/hid/hid-lg4ff.o
CC drivers/gpu/drm/drm_panel.o
AR drivers/net/ethernet/synopsys/built-in.a
CC [M] drivers/gpu/drm/xe/xe_observation.o
CC drivers/gpu/drm/drm_pci.o
CC drivers/hid/hid-lg-g15.o
CC drivers/gpu/drm/i915/gt/intel_gtt.o
CC fs/binfmt_script.o
AR drivers/net/ethernet/pensando/built-in.a
CC drivers/gpu/drm/i915/gt/intel_llc.o
CC fs/binfmt_elf.o
CC drivers/hid/hid-microsoft.o
CC [M] drivers/gpu/drm/xe/xe_pat.o
CC drivers/hid/hid-monterey.o
CC drivers/gpu/drm/drm_debugfs.o
CC drivers/gpu/drm/i915/gt/intel_lrc.o
CC fs/mbcache.o
CC [M] drivers/gpu/drm/xe/xe_pci.o
CC drivers/gpu/drm/i915/gt/intel_migrate.o
CC drivers/hid/hid-ntrig.o
CC drivers/gpu/drm/i915/gt/intel_mocs.o
CC fs/posix_acl.o
CC drivers/gpu/drm/drm_debugfs_crc.o
CC [M] drivers/gpu/drm/xe/xe_pcode.o
AR net/ipv6/built-in.a
CC drivers/gpu/drm/i915/gt/intel_ppgtt.o
CC fs/coredump.o
AR net/built-in.a
CC drivers/gpu/drm/i915/gt/intel_rc6.o
CC drivers/gpu/drm/drm_panel_orientation_quirks.o
CC fs/drop_caches.o
CC drivers/hid/hid-pl.o
CC drivers/gpu/drm/i915/gt/intel_region_lmem.o
CC drivers/gpu/drm/drm_buddy.o
CC drivers/hid/hid-petalynx.o
CC [M] drivers/gpu/drm/xe/xe_pm.o
CC drivers/gpu/drm/i915/gt/intel_renderstate.o
CC drivers/hid/hid-redragon.o
CC [M] drivers/gpu/drm/xe/xe_preempt_fence.o
CC drivers/gpu/drm/i915/gt/intel_reset.o
CC fs/sysctls.o
CC [M] drivers/gpu/drm/xe/xe_pt.o
AR drivers/net/ethernet/realtek/built-in.a
AR drivers/net/ethernet/built-in.a
CC fs/fhandle.o
AR drivers/net/built-in.a
CC drivers/hid/hid-samsung.o
CC drivers/gpu/drm/i915/gt/intel_ring.o
CC drivers/hid/hid-sony.o
CC drivers/gpu/drm/drm_gem_shmem_helper.o
CC drivers/gpu/drm/drm_atomic_helper.o
CC drivers/gpu/drm/i915/gt/intel_ring_submission.o
CC [M] drivers/gpu/drm/xe/xe_pt_walk.o
CC drivers/hid/hid-sunplus.o
CC drivers/gpu/drm/i915/gt/intel_rps.o
CC drivers/hid/hid-topseed.o
CC drivers/gpu/drm/drm_atomic_state_helper.o
CC [M] drivers/gpu/drm/xe/xe_query.o
CC [M] drivers/gpu/drm/xe/xe_range_fence.o
CC drivers/gpu/drm/i915/gt/intel_sa_media.o
CC [M] drivers/gpu/drm/xe/xe_reg_sr.o
CC drivers/gpu/drm/drm_crtc_helper.o
CC drivers/gpu/drm/i915/gt/intel_sseu.o
CC drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
CC [M] drivers/gpu/drm/xe/xe_reg_whitelist.o
CC drivers/gpu/drm/drm_damage_helper.o
CC drivers/gpu/drm/i915/gt/intel_timeline.o
CC [M] drivers/gpu/drm/xe/xe_rtp.o
CC drivers/gpu/drm/i915/gt/intel_tlb.o
CC drivers/gpu/drm/drm_encoder_slave.o
CC drivers/gpu/drm/i915/gt/intel_wopcm.o
CC [M] drivers/gpu/drm/xe/xe_ring_ops.o
CC drivers/gpu/drm/i915/gt/intel_workarounds.o
CC drivers/gpu/drm/drm_flip_work.o
CC [M] drivers/gpu/drm/xe/xe_sa.o
CC drivers/gpu/drm/i915/gt/shmem_utils.o
CC [M] drivers/gpu/drm/xe/xe_sched_job.o
CC drivers/gpu/drm/drm_format_helper.o
CC drivers/gpu/drm/drm_gem_atomic_helper.o
CC drivers/gpu/drm/i915/gt/sysfs_engines.o
CC [M] drivers/gpu/drm/xe/xe_step.o
CC drivers/gpu/drm/drm_gem_framebuffer_helper.o
CC [M] drivers/gpu/drm/xe/xe_sync.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
CC [M] drivers/gpu/drm/xe/xe_tile.o
CC drivers/gpu/drm/drm_kms_helper_common.o
CC [M] drivers/gpu/drm/xe/xe_tile_sysfs.o
CC [M] drivers/gpu/drm/xe/xe_trace.o
CC drivers/gpu/drm/drm_modeset_helper.o
CC [M] drivers/gpu/drm/xe/xe_trace_bo.o
CC drivers/gpu/drm/drm_plane_helper.o
CC [M] drivers/gpu/drm/xe/xe_trace_guc.o
CC drivers/gpu/drm/i915/gt/gen6_renderstate.o
CC [M] drivers/gpu/drm/xe/xe_trace_lrc.o
CC drivers/gpu/drm/drm_probe_helper.o
CC [M] drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
CC [M] drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
CC [M] drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
CC drivers/gpu/drm/i915/gt/gen7_renderstate.o
CC [M] drivers/gpu/drm/xe/xe_tuning.o
AR drivers/hid/built-in.a
CC [M] drivers/gpu/drm/xe/xe_uc.o
CC drivers/gpu/drm/drm_self_refresh_helper.o
CC drivers/gpu/drm/i915/gt/gen8_renderstate.o
CC drivers/gpu/drm/drm_simple_kms_helper.o
CC [M] drivers/gpu/drm/xe/xe_uc_fw.o
AR fs/built-in.a
CC drivers/gpu/drm/i915/gt/gen9_renderstate.o
CC [M] drivers/gpu/drm/xe/xe_vm.o
CC drivers/gpu/drm/bridge/panel.o
CC drivers/gpu/drm/i915/gem/i915_gem_busy.o
CC [M] drivers/gpu/drm/xe/xe_vram.o
CC drivers/gpu/drm/i915/gem/i915_gem_clflush.o
CC drivers/gpu/drm/drm_mipi_dsi.o
CC [M] drivers/gpu/drm/xe/xe_vram_freq.o
CC [M] drivers/gpu/drm/drm_exec.o
CC [M] drivers/gpu/drm/drm_gpuvm.o
CC drivers/gpu/drm/i915/gem/i915_gem_context.o
CC [M] drivers/gpu/drm/xe/xe_wait_user_fence.o
CC [M] drivers/gpu/drm/xe/xe_wa.o
CC [M] drivers/gpu/drm/xe/xe_wopcm.o
CC [M] drivers/gpu/drm/drm_suballoc.o
CC drivers/gpu/drm/i915/gem/i915_gem_create.o
CC [M] drivers/gpu/drm/xe/xe_hmm.o
CC [M] drivers/gpu/drm/xe/xe_hwmon.o
CC drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
CC [M] drivers/gpu/drm/drm_gem_ttm_helper.o
CC [M] drivers/gpu/drm/xe/xe_gt_sriov_vf.o
CC drivers/gpu/drm/i915/gem/i915_gem_domain.o
CC drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
CC [M] drivers/gpu/drm/xe/xe_guc_relay.o
CC drivers/gpu/drm/i915/gem/i915_gem_internal.o
CC [M] drivers/gpu/drm/xe/xe_memirq.o
CC [M] drivers/gpu/drm/xe/xe_sriov.o
CC drivers/gpu/drm/i915/gem/i915_gem_lmem.o
CC drivers/gpu/drm/i915/gem/i915_gem_mman.o
CC [M] drivers/gpu/drm/xe/xe_sriov_vf.o
CC [M] drivers/gpu/drm/xe/display/ext/i915_irq.o
CC drivers/gpu/drm/i915/gem/i915_gem_object.o
CC [M] drivers/gpu/drm/xe/display/ext/i915_utils.o
CC drivers/gpu/drm/i915/gem/i915_gem_pages.o
CC [M] drivers/gpu/drm/xe/display/intel_bo.o
CC [M] drivers/gpu/drm/xe/display/intel_fb_bo.o
CC drivers/gpu/drm/i915/gem/i915_gem_phys.o
CC [M] drivers/gpu/drm/xe/display/intel_fbdev_fb.o
CC drivers/gpu/drm/i915/gem/i915_gem_pm.o
CC [M] drivers/gpu/drm/xe/display/xe_display.o
CC drivers/gpu/drm/i915/gem/i915_gem_region.o
CC drivers/gpu/drm/i915/gem/i915_gem_shmem.o
CC [M] drivers/gpu/drm/xe/display/xe_display_misc.o
CC drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
CC drivers/gpu/drm/i915/gem/i915_gem_stolen.o
CC [M] drivers/gpu/drm/xe/display/xe_display_rps.o
LD [M] drivers/gpu/drm/drm_suballoc_helper.o
CC [M] drivers/gpu/drm/xe/display/xe_display_wa.o
CC [M] drivers/gpu/drm/xe/display/xe_dsb_buffer.o
CC [M] drivers/gpu/drm/xe/display/xe_fb_pin.o
CC drivers/gpu/drm/i915/gem/i915_gem_throttle.o
CC [M] drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
LD [M] drivers/gpu/drm/drm_ttm_helper.o
CC [M] drivers/gpu/drm/xe/display/xe_plane_initial.o
CC drivers/gpu/drm/i915/gem/i915_gem_tiling.o
CC [M] drivers/gpu/drm/xe/display/xe_tdf.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_dram.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_pch.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_rom.o
CC drivers/gpu/drm/i915/gem/i915_gem_userptr.o
CC drivers/gpu/drm/i915/gem/i915_gem_wait.o
CC [M] drivers/gpu/drm/xe/i915-display/icl_dsi.o
CC drivers/gpu/drm/i915/gem/i915_gemfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_alpm.o
CC drivers/gpu/drm/i915/i915_active.o
CC drivers/gpu/drm/i915/i915_cmd_parser.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic.o
CC drivers/gpu/drm/i915/i915_deps.o
CC drivers/gpu/drm/i915/i915_gem.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_audio.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_backlight.o
CC drivers/gpu/drm/i915/i915_gem_evict.o
CC drivers/gpu/drm/i915/i915_gem_gtt.o
CC drivers/gpu/drm/i915/i915_gem_ww.o
CC drivers/gpu/drm/i915/i915_query.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_bios.o
CC drivers/gpu/drm/i915/i915_request.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_bw.o
CC drivers/gpu/drm/i915/i915_scheduler.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cdclk.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_color.o
CC drivers/gpu/drm/i915/i915_trace_points.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
CC drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_connector.o
CC drivers/gpu/drm/i915/i915_vma.o
CC drivers/gpu/drm/i915/i915_vma_resource.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_crtc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cursor.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_device.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_driver.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_irq.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_params.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_trace.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_wa.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dmc.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_fw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
CC drivers/gpu/drm/i915/gt/intel_gsc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
CC drivers/gpu/drm/i915/i915_hwmon.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
CC drivers/gpu/drm/i915/display/hsw_ips.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
CC drivers/gpu/drm/i915/display/i9xx_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_test.o
CC drivers/gpu/drm/i915/display/i9xx_wm.o
CC drivers/gpu/drm/i915/display/intel_alpm.o
CC drivers/gpu/drm/i915/display/intel_atomic.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
CC drivers/gpu/drm/i915/display/intel_atomic_plane.o
CC drivers/gpu/drm/i915/display/intel_audio.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
CC drivers/gpu/drm/i915/display/intel_bios.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_drrs.o
CC drivers/gpu/drm/i915/display/intel_bo.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsb.o
CC drivers/gpu/drm/i915/display/intel_bw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi.o
CC drivers/gpu/drm/i915/display/intel_cdclk.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi_dcs_backlight.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o
CC drivers/gpu/drm/i915/display/intel_color.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_encoder.o
CC drivers/gpu/drm/i915/display/intel_combo_phy.o
CC drivers/gpu/drm/i915/display/intel_connector.o
CC drivers/gpu/drm/i915/display/intel_crtc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fb.o
CC drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
CC drivers/gpu/drm/i915/display/intel_cursor.o
CC drivers/gpu/drm/i915/display/intel_display.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fbc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fdi.o
CC drivers/gpu/drm/i915/display/intel_display_driver.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
CC drivers/gpu/drm/i915/display/intel_display_irq.o
CC drivers/gpu/drm/i915/display/intel_display_params.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_global_state.o
CC drivers/gpu/drm/i915/display/intel_display_power.o
CC drivers/gpu/drm/i915/display/intel_display_power_map.o
CC drivers/gpu/drm/i915/display/intel_display_power_well.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_gmbus.o
CC drivers/gpu/drm/i915/display/intel_display_reset.o
CC drivers/gpu/drm/i915/display/intel_display_rps.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdcp.o
CC drivers/gpu/drm/i915/display/intel_display_snapshot.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdmi.o
CC drivers/gpu/drm/i915/display/intel_display_wa.o
CC drivers/gpu/drm/i915/display/intel_dmc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hotplug.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hti.o
CC drivers/gpu/drm/i915/display/intel_dmc_wl.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_link_bw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_lspcon.o
CC drivers/gpu/drm/i915/display/intel_dpio_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o
CC drivers/gpu/drm/i915/display/intel_dpll.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_setup.o
CC drivers/gpu/drm/i915/display/intel_dpll_mgr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_panel.o
CC drivers/gpu/drm/i915/display/intel_dpt.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pfit.o
CC drivers/gpu/drm/i915/display/intel_dpt_common.o
CC drivers/gpu/drm/i915/display/intel_drrs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pmdemand.o
CC drivers/gpu/drm/i915/display/intel_dsb.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pps.o
CC drivers/gpu/drm/i915/display/intel_dsb_buffer.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_psr.o
CC drivers/gpu/drm/i915/display/intel_fb.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
CC drivers/gpu/drm/i915/display/intel_fb_bo.o
CC drivers/gpu/drm/i915/display/intel_fb_pin.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_quirks.o
CC drivers/gpu/drm/i915/display/intel_fbc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_tc.o
CC drivers/gpu/drm/i915/display/intel_fdi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vblank.o
CC drivers/gpu/drm/i915/display/intel_fifo_underrun.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vdsc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vga.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vrr.o
CC drivers/gpu/drm/i915/display/intel_frontbuffer.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_wm.o
CC drivers/gpu/drm/i915/display/intel_global_state.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_scaler.o
CC drivers/gpu/drm/i915/display/intel_hdcp.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_watermark.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_acpi.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_opregion.o
CC [M] drivers/gpu/drm/xe/xe_debugfs.o
CC [M] drivers/gpu/drm/xe/xe_gt_debugfs.o
CC [M] drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.o
CC drivers/gpu/drm/i915/display/intel_hotplug.o
CC drivers/gpu/drm/i915/display/intel_hotplug_irq.o
CC drivers/gpu/drm/i915/display/intel_hti.o
CC drivers/gpu/drm/i915/display/intel_link_bw.o
CC [M] drivers/gpu/drm/xe/xe_gt_stats.o
CC drivers/gpu/drm/i915/display/intel_load_detect.o
CC drivers/gpu/drm/i915/display/intel_lpe_audio.o
CC [M] drivers/gpu/drm/xe/xe_guc_debugfs.o
CC drivers/gpu/drm/i915/display/intel_modeset_lock.o
CC drivers/gpu/drm/i915/display/intel_modeset_setup.o
CC [M] drivers/gpu/drm/xe/xe_huc_debugfs.o
CC drivers/gpu/drm/i915/display/intel_modeset_verify.o
CC [M] drivers/gpu/drm/xe/xe_uc_debugfs.o
CC drivers/gpu/drm/i915/display/intel_overlay.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
CC drivers/gpu/drm/i915/display/intel_pch_display.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
CC drivers/gpu/drm/i915/display/intel_pch_refclk.o
CC drivers/gpu/drm/i915/display/intel_plane_initial.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
CC [M] drivers/gpu/drm/xe/xe_pmu.o
CC drivers/gpu/drm/i915/display/intel_pmdemand.o
CC drivers/gpu/drm/i915/display/intel_psr.o
CC drivers/gpu/drm/i915/display/intel_quirks.o
CC drivers/gpu/drm/i915/display/intel_sprite.o
CC drivers/gpu/drm/i915/display/intel_sprite_uapi.o
CC drivers/gpu/drm/i915/display/intel_tc.o
CC drivers/gpu/drm/i915/display/intel_vblank.o
CC drivers/gpu/drm/i915/display/intel_vga.o
CC drivers/gpu/drm/i915/display/intel_wm.o
CC drivers/gpu/drm/i915/display/skl_scaler.o
CC drivers/gpu/drm/i915/display/skl_universal_plane.o
CC drivers/gpu/drm/i915/display/skl_watermark.o
CC drivers/gpu/drm/i915/display/intel_acpi.o
CC drivers/gpu/drm/i915/display/intel_opregion.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs_params.o
CC drivers/gpu/drm/i915/display/intel_pipe_crc.o
CC drivers/gpu/drm/i915/display/dvo_ch7017.o
CC drivers/gpu/drm/i915/display/dvo_ch7xxx.o
CC drivers/gpu/drm/i915/display/dvo_ivch.o
CC drivers/gpu/drm/i915/display/dvo_ns2501.o
CC drivers/gpu/drm/i915/display/dvo_sil164.o
CC drivers/gpu/drm/i915/display/dvo_tfp410.o
CC drivers/gpu/drm/i915/display/g4x_dp.o
CC drivers/gpu/drm/i915/display/g4x_hdmi.o
CC drivers/gpu/drm/i915/display/icl_dsi.o
CC drivers/gpu/drm/i915/display/intel_backlight.o
CC drivers/gpu/drm/i915/display/intel_crt.o
CC drivers/gpu/drm/i915/display/intel_cx0_phy.o
CC drivers/gpu/drm/i915/display/intel_ddi.o
CC drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o
CC drivers/gpu/drm/i915/display/intel_display_device.o
CC drivers/gpu/drm/i915/display/intel_display_trace.o
CC drivers/gpu/drm/i915/display/intel_dkl_phy.o
CC drivers/gpu/drm/i915/display/intel_dp.o
CC drivers/gpu/drm/i915/display/intel_dp_aux.o
CC drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o
CC drivers/gpu/drm/i915/display/intel_dp_hdcp.o
CC drivers/gpu/drm/i915/display/intel_dp_link_training.o
CC drivers/gpu/drm/i915/display/intel_dp_mst.o
CC drivers/gpu/drm/i915/display/intel_dp_test.o
CC drivers/gpu/drm/i915/display/intel_dsi.o
CC drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o
CC drivers/gpu/drm/i915/display/intel_dsi_vbt.o
CC drivers/gpu/drm/i915/display/intel_dvo.o
CC drivers/gpu/drm/i915/display/intel_encoder.o
CC drivers/gpu/drm/i915/display/intel_gmbus.o
CC drivers/gpu/drm/i915/display/intel_hdmi.o
CC drivers/gpu/drm/i915/display/intel_lspcon.o
CC drivers/gpu/drm/i915/display/intel_lvds.o
CC drivers/gpu/drm/i915/display/intel_panel.o
CC drivers/gpu/drm/i915/display/intel_pfit.o
CC drivers/gpu/drm/i915/display/intel_pps.o
CC drivers/gpu/drm/i915/display/intel_qp_tables.o
CC drivers/gpu/drm/i915/display/intel_sdvo.o
CC drivers/gpu/drm/i915/display/intel_snps_phy.o
CC drivers/gpu/drm/i915/display/intel_tv.o
CC drivers/gpu/drm/i915/display/intel_vdsc.o
CC drivers/gpu/drm/i915/display/intel_vrr.o
CC drivers/gpu/drm/i915/display/vlv_dsi.o
CC drivers/gpu/drm/i915/display/vlv_dsi_pll.o
CC drivers/gpu/drm/i915/i915_perf.o
CC drivers/gpu/drm/i915/pxp/intel_pxp.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_huc.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_tee.o
LD [M] drivers/gpu/drm/xe/xe.o
CC drivers/gpu/drm/i915/i915_gpu_error.o
CC drivers/gpu/drm/i915/i915_vgpu.o
AR drivers/gpu/drm/i915/built-in.a
AR drivers/gpu/drm/built-in.a
AR drivers/gpu/built-in.a
AR drivers/built-in.a
AR built-in.a
AR vmlinux.a
LD vmlinux.o
OBJCOPY modules.builtin.modinfo
GEN modules.builtin
MODPOST Module.symvers
CC .vmlinux.export.o
CC [M] fs/efivarfs/efivarfs.mod.o
CC [M] .module-common.o
CC [M] drivers/gpu/drm/drm_exec.mod.o
CC [M] drivers/gpu/drm/drm_gpuvm.mod.o
CC [M] drivers/gpu/drm/drm_suballoc_helper.mod.o
CC [M] drivers/gpu/drm/drm_ttm_helper.mod.o
CC [M] drivers/gpu/drm/scheduler/gpu-sched.mod.o
CC [M] drivers/gpu/drm/xe/xe.mod.o
CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.mod.o
CC [M] sound/core/snd-hwdep.mod.o
CC [M] sound/core/snd-pcm.mod.o
CC [M] sound/pci/hda/snd-hda-codec.mod.o
CC [M] sound/pci/hda/snd-hda-codec-hdmi.mod.o
CC [M] sound/pci/hda/snd-hda-intel.mod.o
CC [M] sound/hda/snd-hda-core.mod.o
CC [M] sound/hda/snd-intel-dspcfg.mod.o
CC [M] sound/hda/snd-intel-sdw-acpi.mod.o
CC [M] net/netfilter/nf_log_syslog.mod.o
CC [M] net/netfilter/xt_mark.mod.o
CC [M] net/netfilter/xt_nat.mod.o
CC [M] net/netfilter/xt_LOG.mod.o
CC [M] net/netfilter/xt_MASQUERADE.mod.o
CC [M] net/netfilter/xt_addrtype.mod.o
CC [M] net/ipv4/netfilter/iptable_nat.mod.o
LD [M] fs/efivarfs/efivarfs.ko
LD [M] drivers/thermal/intel/x86_pkg_temp_thermal.ko
LD [M] drivers/gpu/drm/drm_ttm_helper.ko
LD [M] drivers/gpu/drm/drm_gpuvm.ko
LD [M] sound/core/snd-hwdep.ko
LD [M] drivers/gpu/drm/drm_exec.ko
LD [M] drivers/gpu/drm/xe/xe.ko
LD [M] sound/core/snd-pcm.ko
LD [M] net/netfilter/nf_log_syslog.ko
LD [M] sound/hda/snd-intel-dspcfg.ko
LD [M] sound/hda/snd-intel-sdw-acpi.ko
LD [M] sound/pci/hda/snd-hda-codec-hdmi.ko
LD [M] sound/pci/hda/snd-hda-intel.ko
LD [M] net/netfilter/xt_LOG.ko
LD [M] sound/pci/hda/snd-hda-codec.ko
LD [M] sound/hda/snd-hda-core.ko
LD [M] net/netfilter/xt_mark.ko
LD [M] net/netfilter/xt_MASQUERADE.ko
LD [M] net/netfilter/xt_nat.ko
LD [M] drivers/gpu/drm/drm_suballoc_helper.ko
LD [M] drivers/gpu/drm/scheduler/gpu-sched.ko
LD [M] net/netfilter/xt_addrtype.ko
LD [M] net/ipv4/netfilter/iptable_nat.ko
UPD include/generated/utsversion.h
CC init/version-timestamp.o
KSYMS .tmp_vmlinux0.kallsyms.S
AS .tmp_vmlinux0.kallsyms.o
LD .tmp_vmlinux1
NM .tmp_vmlinux1.syms
KSYMS .tmp_vmlinux1.kallsyms.S
AS .tmp_vmlinux1.kallsyms.o
LD .tmp_vmlinux2
NM .tmp_vmlinux2.syms
KSYMS .tmp_vmlinux2.kallsyms.S
AS .tmp_vmlinux2.kallsyms.o
LD vmlinux
NM System.map
SORTTAB vmlinux
RELOCS arch/x86/boot/compressed/vmlinux.relocs
RSTRIP vmlinux
CC arch/x86/boot/a20.o
AS arch/x86/boot/bioscall.o
CC arch/x86/boot/cmdline.o
AS arch/x86/boot/copy.o
HOSTCC arch/x86/boot/mkcpustr
CC arch/x86/boot/cpuflags.o
CC arch/x86/boot/cpucheck.o
CC arch/x86/boot/early_serial_console.o
CC arch/x86/boot/edd.o
CC arch/x86/boot/main.o
CC arch/x86/boot/memory.o
CC arch/x86/boot/pm.o
AS arch/x86/boot/pmjump.o
CC arch/x86/boot/printf.o
CC arch/x86/boot/regs.o
CC arch/x86/boot/string.o
CC arch/x86/boot/tty.o
CC arch/x86/boot/video.o
CC arch/x86/boot/video-mode.o
CC arch/x86/boot/version.o
CC arch/x86/boot/video-vga.o
CC arch/x86/boot/video-vesa.o
CC arch/x86/boot/video-bios.o
HOSTCC arch/x86/boot/tools/build
LDS arch/x86/boot/compressed/vmlinux.lds
AS arch/x86/boot/compressed/kernel_info.o
CPUSTR arch/x86/boot/cpustr.h
AS arch/x86/boot/compressed/head_32.o
VOFFSET arch/x86/boot/compressed/../voffset.h
CC arch/x86/boot/compressed/string.o
CC arch/x86/boot/compressed/cmdline.o
CC arch/x86/boot/cpu.o
CC arch/x86/boot/compressed/error.o
OBJCOPY arch/x86/boot/compressed/vmlinux.bin
HOSTCC arch/x86/boot/compressed/mkpiggy
CC arch/x86/boot/compressed/cpuflags.o
CC arch/x86/boot/compressed/early_serial_console.o
CC arch/x86/boot/compressed/kaslr.o
CC arch/x86/boot/compressed/acpi.o
CC arch/x86/boot/compressed/efi.o
GZIP arch/x86/boot/compressed/vmlinux.bin.gz
CC arch/x86/boot/compressed/misc.o
MKPIGGY arch/x86/boot/compressed/piggy.S
AS arch/x86/boot/compressed/piggy.o
LD arch/x86/boot/compressed/vmlinux
ZOFFSET arch/x86/boot/zoffset.h
OBJCOPY arch/x86/boot/vmlinux.bin
AS arch/x86/boot/header.o
LD arch/x86/boot/setup.elf
OBJCOPY arch/x86/boot/setup.bin
BUILD arch/x86/boot/bzImage
Kernel: arch/x86/boot/bzImage is ready (#1)
run-parts: executing /workspace/ci/hooks/20-kernel-doc
+ SRC_DIR=/workspace/kernel
+ cd /workspace/kernel
+ find drivers/gpu/drm/xe/ -name '*.[ch]' -not -path 'drivers/gpu/drm/xe/display/*'
+ xargs ./scripts/kernel-doc -Werror -none include/uapi/drm/xe_drm.h
date: invalid date ‘+%s’
drivers/gpu/drm/xe/xe_pmu.c:23: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* CPU mask is defined/initialized at a module level. All devices
drivers/gpu/drm/xe/xe_pmu.c:884: warning: Function parameter or struct member 'gt' not described in 'xe_pmu_suspend'
drivers/gpu/drm/xe/xe_pmu.c:900: warning: Function parameter or struct member 'gt' not described in 'xe_pmu_resume'
drivers/gpu/drm/xe/xe_pmu.c:924: warning: Function parameter or struct member 'arg' not described in 'xe_pmu_unregister'
drivers/gpu/drm/xe/xe_pmu.c:965: warning: Function parameter or struct member 'pmu' not described in 'xe_pmu_register'
drivers/gpu/drm/xe/xe_pmu_types.h:44: warning: cannot understand function prototype: 'enum xe_pmu_tracked_events '
drivers/gpu/drm/xe/xe_pmu_types.h:52: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* How many different events we track in the global PMU mask.
7 warnings as Errors
run-parts: /workspace/ci/hooks/20-kernel-doc exited with return code 123
^ permalink raw reply [flat|nested] 22+ messages in thread* ✓ CI.checksparse: success for drm/xe/pmu: PMU interface for Xe (rev4)
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
` (7 preceding siblings ...)
2024-11-08 18:41 ` ✗ CI.Hooks: failure " Patchwork
@ 2024-11-08 18:43 ` Patchwork
2024-11-08 19:00 ` ✓ CI.BAT: " Patchwork
2024-11-09 21:10 ` ✗ CI.FULL: failure " Patchwork
10 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-11-08 18:43 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
== Series Details ==
Series: drm/xe/pmu: PMU interface for Xe (rev4)
URL : https://patchwork.freedesktop.org/series/139121/
State : success
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 7881884ed71da8aae8eb6b6e910c2fbce09a7436
/root/linux/maintainer-tools/dim: line 2068: sparse: command not found
Sparse version:
Fast mode used, each commit won't be checked separately.
Okay!
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 22+ messages in thread* ✓ CI.BAT: success for drm/xe/pmu: PMU interface for Xe (rev4)
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
` (8 preceding siblings ...)
2024-11-08 18:43 ` ✓ CI.checksparse: success " Patchwork
@ 2024-11-08 19:00 ` Patchwork
2024-11-09 21:10 ` ✗ CI.FULL: failure " Patchwork
10 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-11-08 19:00 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 2155 bytes --]
== Series Details ==
Series: drm/xe/pmu: PMU interface for Xe (rev4)
URL : https://patchwork.freedesktop.org/series/139121/
State : success
== Summary ==
CI Bug Log - changes from xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25_BAT -> xe-pw-139121v4_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (9 -> 9)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-139121v4_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_flip@basic-flip-vs-wf_vblank:
- bat-lnl-1: [PASS][1] -> [FAIL][2] ([Intel XE#886]) +1 other test fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/bat-lnl-1/igt@kms_flip@basic-flip-vs-wf_vblank.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/bat-lnl-1/igt@kms_flip@basic-flip-vs-wf_vblank.html
#### Possible fixes ####
* igt@kms_frontbuffer_tracking@basic:
- bat-adlp-7: [FAIL][3] ([Intel XE#1861]) -> [PASS][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
[Intel XE#1861]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1861
[Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
Build changes
-------------
* IGT: IGT_8100 -> IGT_8101
* Linux: xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25 -> xe-pw-139121v4
IGT_8100: 84e42580f918da926481fd2fb37be01451d6ee9a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8101: 1235576931b5abdcb2c755672d194fb540fa6fb1 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25: 5521311ecd7ffbb0adf016dbf83bd0165fc94d25
xe-pw-139121v4: 139121v4
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/index.html
[-- Attachment #2: Type: text/html, Size: 2757 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread* ✗ CI.FULL: failure for drm/xe/pmu: PMU interface for Xe (rev4)
2024-11-08 18:15 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
` (9 preceding siblings ...)
2024-11-08 19:00 ` ✓ CI.BAT: " Patchwork
@ 2024-11-09 21:10 ` Patchwork
10 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2024-11-09 21:10 UTC (permalink / raw)
To: Vinay Belgaumkar; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 112716 bytes --]
== Series Details ==
Series: drm/xe/pmu: PMU interface for Xe (rev4)
URL : https://patchwork.freedesktop.org/series/139121/
State : failure
== Summary ==
CI Bug Log - changes from xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25_full -> xe-pw-139121v4_full
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with xe-pw-139121v4_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-139121v4_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 (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-139121v4_full:
### IGT changes ###
#### Warnings ####
* igt@kms_async_flips@alternate-sync-async-flip@pipe-b-hdmi-a-1:
- shard-adlp: [DMESG-FAIL][1] ([Intel XE#1033] / [Intel XE#1727]) -> [DMESG-WARN][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-4/igt@kms_async_flips@alternate-sync-async-flip@pipe-b-hdmi-a-1.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_async_flips@alternate-sync-async-flip@pipe-b-hdmi-a-1.html
* igt@kms_rotation_crc@bad-tiling:
- shard-dg2-set2: [SKIP][3] ([Intel XE#2423] / [i915#2575]) -> [SKIP][4] +2 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_rotation_crc@bad-tiling.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_rotation_crc@bad-tiling.html
Known issues
------------
Here are the changes found in xe-pw-139121v4_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@core_hotunplug@hotreplug:
- shard-dg2-set2: [PASS][5] -> [SKIP][6] ([Intel XE#1885]) +1 other test skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@core_hotunplug@hotreplug.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@core_hotunplug@hotreplug.html
* igt@fbdev@write:
- shard-dg2-set2: [PASS][7] -> [SKIP][8] ([Intel XE#2134]) +1 other test skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-435/igt@fbdev@write.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@fbdev@write.html
* igt@kms_addfb_basic@addfb25-x-tiled-legacy:
- shard-dg2-set2: NOTRUN -> [SKIP][9] ([Intel XE#2423] / [i915#2575]) +10 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-dp-5-4-mc-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][10] ([Intel XE#2550]) +11 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-dp-5-4-mc-ccs.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
- shard-adlp: [PASS][11] -> [FAIL][12] ([Intel XE#1426]) +1 other test fail
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-6/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-9/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-90:
- shard-adlp: NOTRUN -> [SKIP][13] ([Intel XE#1124]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-9/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html
* igt@kms_big_fb@4-tiled-8bpp-rotate-180:
- shard-dg2-set2: NOTRUN -> [SKIP][14] ([Intel XE#2890]) +6 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html
* igt@kms_big_fb@linear-64bpp-rotate-270:
- shard-dg2-set2: NOTRUN -> [SKIP][15] ([Intel XE#316])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_big_fb@linear-64bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-0:
- shard-adlp: [PASS][16] -> [FAIL][17] ([Intel XE#1874]) +2 other tests fail
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-1/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
* igt@kms_big_fb@y-tiled-8bpp-rotate-180:
- shard-dg2-set2: NOTRUN -> [SKIP][18] ([Intel XE#1124]) +1 other test skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
- shard-adlp: NOTRUN -> [FAIL][19] ([Intel XE#1231] / [Intel XE#1242])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
- shard-adlp: [PASS][20] -> [FAIL][21] ([Intel XE#1231] / [Intel XE#1242]) +2 other tests fail
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-6/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-adlp: NOTRUN -> [FAIL][22] ([Intel XE#1874]) +4 other tests fail
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-9/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#1124]) +1 other test skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-1/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p:
- shard-adlp: NOTRUN -> [SKIP][24] ([Intel XE#2191])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p.html
* igt@kms_bw@linear-tiling-3-displays-2560x1440p:
- shard-adlp: NOTRUN -> [SKIP][25] ([Intel XE#367])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@kms_bw@linear-tiling-3-displays-2560x1440p.html
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#367])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-6/igt@kms_bw@linear-tiling-3-displays-2560x1440p.html
* igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][27] ([Intel XE#455] / [Intel XE#787]) +22 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4.html
* igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-d-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][28] ([Intel XE#455] / [Intel XE#787]) +5 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc@pipe-a-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][29] ([Intel XE#787]) +117 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc@pipe-a-dp-4.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][30] ([Intel XE#2907])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-b-dp-2:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2652] / [Intel XE#787]) +8 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-b-dp-2.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][32] ([Intel XE#787]) +8 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
- shard-adlp: NOTRUN -> [SKIP][33] ([Intel XE#2907]) +1 other test skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-2/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][34] ([Intel XE#1195] / [Intel XE#1727])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-6:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][35] ([Intel XE#1195] / [Intel XE#3113])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-6.html
* igt@kms_chamelium_color@ctm-max:
- shard-adlp: NOTRUN -> [SKIP][36] ([Intel XE#306])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-9/igt@kms_chamelium_color@ctm-max.html
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#2325])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-5/igt@kms_chamelium_color@ctm-max.html
* igt@kms_chamelium_edid@hdmi-mode-timings:
- shard-lnl: NOTRUN -> [SKIP][38] ([Intel XE#373])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-4/igt@kms_chamelium_edid@hdmi-mode-timings.html
* igt@kms_chamelium_frames@hdmi-crc-single:
- shard-adlp: NOTRUN -> [SKIP][39] ([Intel XE#373]) +2 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_chamelium_frames@hdmi-crc-single.html
* igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#2252])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-2/igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode.html
* igt@kms_chamelium_hpd@hdmi-hpd-fast:
- shard-dg2-set2: NOTRUN -> [SKIP][41] ([Intel XE#373]) +2 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_chamelium_hpd@hdmi-hpd-fast.html
* igt@kms_color@ctm-0-75@pipe-a-edp-1:
- shard-lnl: [PASS][42] -> [DMESG-WARN][43] ([Intel XE#2929]) +3 other tests dmesg-warn
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-5/igt@kms_color@ctm-0-75@pipe-a-edp-1.html
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-3/igt@kms_color@ctm-0-75@pipe-a-edp-1.html
* igt@kms_content_protection@legacy:
- shard-dg2-set2: NOTRUN -> [FAIL][44] ([Intel XE#1178]) +1 other test fail
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@uevent@pipe-a-dp-4:
- shard-dg2-set2: NOTRUN -> [FAIL][45] ([Intel XE#1188])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_content_protection@uevent@pipe-a-dp-4.html
* igt@kms_cursor_crc@cursor-offscreen-max-size:
- shard-adlp: NOTRUN -> [SKIP][46] ([Intel XE#455]) +6 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-6/igt@kms_cursor_crc@cursor-offscreen-max-size.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#2321]) +2 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-3/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-onscreen-512x512:
- shard-adlp: NOTRUN -> [SKIP][48] ([Intel XE#308]) +2 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-8/igt@kms_cursor_crc@cursor-onscreen-512x512.html
* igt@kms_cursor_crc@cursor-sliding-64x21:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#2320])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-5/igt@kms_cursor_crc@cursor-sliding-64x21.html
* igt@kms_cursor_edge_walk@128x128-right-edge:
- shard-dg2-set2: [PASS][50] -> [SKIP][51] ([Intel XE#2423] / [i915#2575]) +94 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_cursor_edge_walk@128x128-right-edge.html
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_cursor_edge_walk@128x128-right-edge.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-adlp: NOTRUN -> [SKIP][52] ([Intel XE#309]) +1 other test skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size:
- shard-bmg: [PASS][53] -> [DMESG-WARN][54] ([Intel XE#877]) +1 other test dmesg-warn
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-4/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-7/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
- shard-adlp: [PASS][55] -> [FAIL][56] ([Intel XE#1475])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-6/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
* igt@kms_dp_aux_dev:
- shard-adlp: NOTRUN -> [SKIP][57] ([Intel XE#3009])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_dp_aux_dev.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-bmg: NOTRUN -> [SKIP][58] ([Intel XE#2244])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-1/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_feature_discovery@psr2:
- shard-adlp: NOTRUN -> [SKIP][59] ([Intel XE#1135])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-6/igt@kms_feature_discovery@psr2.html
* igt@kms_flip@2x-absolute-wf_vblank-interruptible:
- shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#1421])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-1/igt@kms_flip@2x-absolute-wf_vblank-interruptible.html
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bd-dp2-hdmi-a3:
- shard-bmg: [PASS][61] -> [FAIL][62] ([Intel XE#301]) +3 other tests fail
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bd-dp2-hdmi-a3.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-2/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bd-dp2-hdmi-a3.html
* igt@kms_flip@2x-flip-vs-expired-vblank@ab-hdmi-a6-dp4:
- shard-dg2-set2: NOTRUN -> [FAIL][63] ([Intel XE#301]) +4 other tests fail
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_flip@2x-flip-vs-expired-vblank@ab-hdmi-a6-dp4.html
* igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset:
- shard-adlp: NOTRUN -> [SKIP][64] ([Intel XE#310]) +1 other test skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-2/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling:
- shard-dg2-set2: [PASS][65] -> [SKIP][66] ([Intel XE#2890]) +33 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-dg2-set2: NOTRUN -> [SKIP][67] ([Intel XE#455]) +8 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_tiling@flip-change-tiling@pipe-b-edp-1-4-to-4-rc-ccs:
- shard-lnl: [PASS][68] -> [FAIL][69] ([Intel XE#1491]) +1 other test fail
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-6/igt@kms_flip_tiling@flip-change-tiling@pipe-b-edp-1-4-to-4-rc-ccs.html
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-4/igt@kms_flip_tiling@flip-change-tiling@pipe-b-edp-1-4-to-4-rc-ccs.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#2311]) +8 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
- shard-adlp: NOTRUN -> [SKIP][71] ([Intel XE#651]) +5 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt:
- shard-adlp: [PASS][72] -> [FAIL][73] ([Intel XE#1861])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move:
- shard-dg2-set2: [PASS][74] -> [SKIP][75] ([Intel XE#2351] / [Intel XE#2890]) +10 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render:
- shard-adlp: NOTRUN -> [SKIP][76] ([Intel XE#656]) +14 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html
- shard-bmg: NOTRUN -> [FAIL][77] ([Intel XE#2333]) +1 other test fail
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-pgflip-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][78] ([Intel XE#651]) +4 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff:
- shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#2313]) +4 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-onoff:
- shard-adlp: NOTRUN -> [SKIP][80] ([Intel XE#653]) +1 other test skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-onoff.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][81] ([Intel XE#2351] / [Intel XE#2890]) +3 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-render:
- shard-dg2-set2: NOTRUN -> [SKIP][82] ([Intel XE#653]) +5 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-render.html
* igt@kms_getfb@getfb-reject-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][83] ([Intel XE#605])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_getfb@getfb-reject-ccs.html
* igt@kms_joiner@invalid-modeset-big-joiner:
- shard-adlp: NOTRUN -> [SKIP][84] ([Intel XE#346])
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-9/igt@kms_joiner@invalid-modeset-big-joiner.html
* igt@kms_plane@pixel-format:
- shard-adlp: NOTRUN -> [INCOMPLETE][85] ([Intel XE#1035])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@kms_plane@pixel-format.html
* igt@kms_plane@pixel-format@pipe-a-plane-3:
- shard-adlp: NOTRUN -> [WARN][86] ([Intel XE#2078]) +1 other test warn
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@kms_plane@pixel-format@pipe-a-plane-3.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b:
- shard-dg2-set2: NOTRUN -> [SKIP][87] ([Intel XE#2763]) +5 other tests skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d:
- shard-dg2-set2: NOTRUN -> [SKIP][88] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d.html
* igt@kms_pm_backlight@fade-with-dpms:
- shard-lnl: [PASS][89] -> [DMESG-WARN][90] ([Intel XE#3184]) +1 other test dmesg-warn
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-5/igt@kms_pm_backlight@fade-with-dpms.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-8/igt@kms_pm_backlight@fade-with-dpms.html
* igt@kms_pm_dc@dc5-dpms:
- shard-lnl: [PASS][91] -> [FAIL][92] ([Intel XE#718])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-5/igt@kms_pm_dc@dc5-dpms.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-4/igt@kms_pm_dc@dc5-dpms.html
* igt@kms_pm_rpm@modeset-stress-extra-wait:
- shard-dg2-set2: NOTRUN -> [SKIP][93] ([Intel XE#2446]) +1 other test skip
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_pm_rpm@modeset-stress-extra-wait.html
* igt@kms_pm_rpm@universal-planes-dpms:
- shard-dg2-set2: [PASS][94] -> [SKIP][95] ([Intel XE#2446]) +1 other test skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@kms_pm_rpm@universal-planes-dpms.html
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_pm_rpm@universal-planes-dpms.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf:
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#1489]) +1 other test skip
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-2/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area:
- shard-adlp: NOTRUN -> [SKIP][97] ([Intel XE#1489]) +2 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area.html
* igt@kms_psr@fbc-psr2-sprite-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][98] ([Intel XE#2850] / [Intel XE#929])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_psr@fbc-psr2-sprite-blt.html
* igt@kms_psr@psr2-suspend:
- shard-adlp: NOTRUN -> [SKIP][99] ([Intel XE#2850] / [Intel XE#929]) +5 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_psr@psr2-suspend.html
- shard-bmg: NOTRUN -> [SKIP][100] ([Intel XE#2234] / [Intel XE#2850]) +1 other test skip
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-6/igt@kms_psr@psr2-suspend.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-adlp: NOTRUN -> [SKIP][101] ([Intel XE#1127])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_universal_plane@cursor-fb-leak:
- shard-adlp: [PASS][102] -> [FAIL][103] ([Intel XE#771] / [Intel XE#899])
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-1/igt@kms_universal_plane@cursor-fb-leak.html
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-2/igt@kms_universal_plane@cursor-fb-leak.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-a-edp-1:
- shard-lnl: [PASS][104] -> [FAIL][105] ([Intel XE#899]) +1 other test fail
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-3/igt@kms_universal_plane@cursor-fb-leak@pipe-a-edp-1.html
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-5/igt@kms_universal_plane@cursor-fb-leak@pipe-a-edp-1.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1:
- shard-adlp: [PASS][106] -> [FAIL][107] ([Intel XE#899])
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-1/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-2/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
* igt@xe_copy_basic@mem-copy-linear-0x369:
- shard-adlp: NOTRUN -> [SKIP][108] ([Intel XE#1123])
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@xe_copy_basic@mem-copy-linear-0x369.html
* igt@xe_copy_basic@mem-copy-linear-0xfd:
- shard-dg2-set2: NOTRUN -> [SKIP][109] ([Intel XE#1123])
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@xe_copy_basic@mem-copy-linear-0xfd.html
* igt@xe_eudebug@multiple-sessions:
- shard-bmg: NOTRUN -> [SKIP][110] ([Intel XE#2905]) +1 other test skip
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-3/igt@xe_eudebug@multiple-sessions.html
* igt@xe_eudebug_online@reset-with-attention:
- shard-adlp: NOTRUN -> [SKIP][111] ([Intel XE#2905]) +5 other tests skip
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@xe_eudebug_online@reset-with-attention.html
* igt@xe_eudebug_online@writes-caching-sram-bb-vram-target-vram:
- shard-dg2-set2: NOTRUN -> [SKIP][112] ([Intel XE#2905])
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@xe_eudebug_online@writes-caching-sram-bb-vram-target-vram.html
* igt@xe_evict@evict-beng-mixed-many-threads-small:
- shard-bmg: [PASS][113] -> [TIMEOUT][114] ([Intel XE#1473])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-3/igt@xe_evict@evict-beng-mixed-many-threads-small.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-3/igt@xe_evict@evict-beng-mixed-many-threads-small.html
* igt@xe_evict@evict-large:
- shard-adlp: NOTRUN -> [SKIP][115] ([Intel XE#261] / [Intel XE#688]) +2 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-8/igt@xe_evict@evict-large.html
* igt@xe_evict@evict-large-multi-vm-cm:
- shard-bmg: [PASS][116] -> [FAIL][117] ([Intel XE#2364])
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-8/igt@xe_evict@evict-large-multi-vm-cm.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-8/igt@xe_evict@evict-large-multi-vm-cm.html
* igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen:
- shard-dg2-set2: [PASS][118] -> [SKIP][119] ([Intel XE#1130]) +166 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-mmap:
- shard-adlp: NOTRUN -> [SKIP][120] ([Intel XE#1392]) +2 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-mmap.html
* igt@xe_exec_basic@multigpu-once-basic-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][121] ([Intel XE#1392])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-1/igt@xe_exec_basic@multigpu-once-basic-defer-mmap.html
* igt@xe_exec_basic@multigpu-once-userptr-invalidate-race:
- shard-bmg: NOTRUN -> [SKIP][122] ([Intel XE#2322]) +1 other test skip
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-3/igt@xe_exec_basic@multigpu-once-userptr-invalidate-race.html
* igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-race-imm:
- shard-bmg: [PASS][123] -> [FAIL][124] ([Intel XE#1630]) +1 other test fail
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-4/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-race-imm.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-2/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-race-imm.html
* igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-rebind-imm:
- shard-dg2-set2: NOTRUN -> [SKIP][125] ([Intel XE#288]) +4 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-rebind-imm.html
* igt@xe_exec_fault_mode@many-userptr-invalidate-race-prefetch:
- shard-lnl: [PASS][126] -> [FAIL][127] ([Intel XE#1630]) +2 other tests fail
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-7/igt@xe_exec_fault_mode@many-userptr-invalidate-race-prefetch.html
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-1/igt@xe_exec_fault_mode@many-userptr-invalidate-race-prefetch.html
* igt@xe_exec_fault_mode@twice-userptr-invalidate-imm:
- shard-adlp: NOTRUN -> [SKIP][128] ([Intel XE#288]) +5 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@xe_exec_fault_mode@twice-userptr-invalidate-imm.html
* igt@xe_live_ktest@xe_bo:
- shard-dg2-set2: [PASS][129] -> [TIMEOUT][130] ([Intel XE#2961] / [Intel XE#3191]) +1 other test timeout
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_live_ktest@xe_bo.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@xe_live_ktest@xe_bo.html
* igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit:
- shard-adlp: NOTRUN -> [FAIL][131] ([Intel XE#1999]) +2 other tests fail
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-8/igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit.html
* igt@xe_oa@invalid-oa-metric-set-id:
- shard-adlp: NOTRUN -> [SKIP][132] ([Intel XE#2541]) +1 other test skip
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@xe_oa@invalid-oa-metric-set-id.html
* igt@xe_oa@non-privileged-map-oa-buffer:
- shard-dg2-set2: NOTRUN -> [SKIP][133] ([Intel XE#2541]) +1 other test skip
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@xe_oa@non-privileged-map-oa-buffer.html
* igt@xe_pm@s2idle-vm-bind-unbind-all:
- shard-dg2-set2: [PASS][134] -> [ABORT][135] ([Intel XE#1694] / [Intel XE#1794])
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-433/igt@xe_pm@s2idle-vm-bind-unbind-all.html
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@xe_pm@s2idle-vm-bind-unbind-all.html
* igt@xe_pm@s3-vm-bind-prefetch:
- shard-dg2-set2: [PASS][136] -> [ABORT][137] ([Intel XE#1794])
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-435/igt@xe_pm@s3-vm-bind-prefetch.html
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@xe_pm@s3-vm-bind-prefetch.html
* igt@xe_query@multigpu-query-invalid-extension:
- shard-adlp: NOTRUN -> [SKIP][138] ([Intel XE#944]) +1 other test skip
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@xe_query@multigpu-query-invalid-extension.html
* igt@xe_query@multigpu-query-invalid-size:
- shard-dg2-set2: NOTRUN -> [SKIP][139] ([Intel XE#944])
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@xe_query@multigpu-query-invalid-size.html
* igt@xe_query@multigpu-query-mem-usage:
- shard-bmg: NOTRUN -> [SKIP][140] ([Intel XE#944]) +1 other test skip
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-6/igt@xe_query@multigpu-query-mem-usage.html
* igt@xe_spin_batch@spin-fixed-duration:
- shard-adlp: [PASS][141] -> [FAIL][142] ([Intel XE#1081])
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@xe_spin_batch@spin-fixed-duration.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-6/igt@xe_spin_batch@spin-fixed-duration.html
* igt@xe_vm@large-userptr-split-binds-1073741824:
- shard-dg2-set2: NOTRUN -> [SKIP][143] ([Intel XE#1130]) +15 other tests skip
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_vm@large-userptr-split-binds-1073741824.html
#### Possible fixes ####
* igt@core_getversion@all-cards:
- shard-dg2-set2: [FAIL][144] -> [PASS][145]
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@core_getversion@all-cards.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@core_getversion@all-cards.html
* igt@core_hotunplug@hotreplug-lateclose:
- shard-dg2-set2: [SKIP][146] ([Intel XE#1885]) -> [PASS][147] +1 other test pass
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@core_hotunplug@hotreplug-lateclose.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@core_hotunplug@hotreplug-lateclose.html
* igt@core_setmaster@master-drop-set-root:
- shard-dg2-set2: [FAIL][148] ([Intel XE#3130] / [Intel XE#3249]) -> [PASS][149]
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@core_setmaster@master-drop-set-root.html
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@core_setmaster@master-drop-set-root.html
* igt@fbdev@nullptr:
- shard-dg2-set2: [SKIP][150] ([Intel XE#2134]) -> [PASS][151] +1 other test pass
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@fbdev@nullptr.html
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@fbdev@nullptr.html
* igt@kms_async_flips@alternate-sync-async-flip@pipe-d-hdmi-a-1:
- shard-adlp: [DMESG-FAIL][152] ([Intel XE#1033] / [Intel XE#1727] / [Intel XE#3194]) -> [PASS][153]
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-4/igt@kms_async_flips@alternate-sync-async-flip@pipe-d-hdmi-a-1.html
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_async_flips@alternate-sync-async-flip@pipe-d-hdmi-a-1.html
* igt@kms_async_flips@async-flip-with-page-flip-events:
- shard-adlp: [DMESG-WARN][154] ([Intel XE#3194]) -> [PASS][155] +3 other tests pass
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-3/igt@kms_async_flips@async-flip-with-page-flip-events.html
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-8/igt@kms_async_flips@async-flip-with-page-flip-events.html
* igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-adlp: [FAIL][156] ([Intel XE#1242]) -> [PASS][157]
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-8/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-adlp: [FAIL][158] ([Intel XE#1231] / [Intel XE#1242]) -> [PASS][159] +1 other test pass
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-adlp: [FAIL][160] ([Intel XE#1874]) -> [PASS][161] +3 other tests pass
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-9/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
- shard-adlp: [DMESG-FAIL][162] ([Intel XE#3194]) -> [PASS][163] +3 other tests pass
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
* igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs:
- shard-dg2-set2: [SKIP][164] ([Intel XE#2351] / [Intel XE#2890]) -> [PASS][165] +9 other tests pass
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs.html
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs.html
* igt@kms_cursor_edge_walk@64x64-top-bottom@pipe-a-edp-1:
- shard-lnl: [FAIL][166] ([Intel XE#2577]) -> [PASS][167] +1 other test pass
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-2/igt@kms_cursor_edge_walk@64x64-top-bottom@pipe-a-edp-1.html
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-6/igt@kms_cursor_edge_walk@64x64-top-bottom@pipe-a-edp-1.html
* igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
- shard-lnl: [FAIL][168] ([Intel XE#1475]) -> [PASS][169]
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-7/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-1/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
* igt@kms_flip@2x-flip-vs-expired-vblank@ad-dp2-hdmi-a3:
- shard-bmg: [FAIL][170] ([Intel XE#301]) -> [PASS][171] +1 other test pass
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-2/igt@kms_flip@2x-flip-vs-expired-vblank@ad-dp2-hdmi-a3.html
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-3/igt@kms_flip@2x-flip-vs-expired-vblank@ad-dp2-hdmi-a3.html
* igt@kms_flip@busy-flip:
- shard-dg2-set2: [SKIP][172] ([Intel XE#2423] / [i915#2575]) -> [PASS][173] +92 other tests pass
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_flip@busy-flip.html
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_flip@busy-flip.html
* igt@kms_flip@flip-vs-absolute-wf_vblank:
- shard-lnl: [FAIL][174] ([Intel XE#886]) -> [PASS][175] +7 other tests pass
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-8/igt@kms_flip@flip-vs-absolute-wf_vblank.html
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-7/igt@kms_flip@flip-vs-absolute-wf_vblank.html
* igt@kms_flip@plain-flip-ts-check:
- shard-adlp: [FAIL][176] ([Intel XE#886]) -> [PASS][177] +1 other test pass
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-4/igt@kms_flip@plain-flip-ts-check.html
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-8/igt@kms_flip@plain-flip-ts-check.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render:
- shard-adlp: [FAIL][178] ([Intel XE#1861]) -> [PASS][179] +1 other test pass
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-9/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc:
- shard-dg2-set2: [SKIP][180] ([Intel XE#2890]) -> [PASS][181] +35 other tests pass
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc.html
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc.html
* igt@kms_pm_dc@dc5-psr:
- shard-lnl: [FAIL][182] ([Intel XE#718]) -> [PASS][183]
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-2/igt@kms_pm_dc@dc5-psr.html
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-2/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_rpm@cursor-dpms:
- shard-dg2-set2: [SKIP][184] ([Intel XE#2446]) -> [PASS][185] +5 other tests pass
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_pm_rpm@cursor-dpms.html
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@kms_pm_rpm@cursor-dpms.html
* igt@kms_pm_rpm@universal-planes-dpms:
- shard-lnl: [DMESG-WARN][186] ([Intel XE#2042]) -> [PASS][187]
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-4/igt@kms_pm_rpm@universal-planes-dpms.html
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-2/igt@kms_pm_rpm@universal-planes-dpms.html
* igt@kms_pm_rpm@universal-planes-dpms@plane-68:
- shard-lnl: [DMESG-WARN][188] -> [PASS][189]
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-4/igt@kms_pm_rpm@universal-planes-dpms@plane-68.html
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-2/igt@kms_pm_rpm@universal-planes-dpms@plane-68.html
* igt@kms_vblank@query-forked-hang:
- shard-bmg: [INCOMPLETE][190] -> [PASS][191] +1 other test pass
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-4/igt@kms_vblank@query-forked-hang.html
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-5/igt@kms_vblank@query-forked-hang.html
* igt@kms_vrr@cmrr@pipe-a-edp-1:
- shard-lnl: [FAIL][192] ([Intel XE#2159]) -> [PASS][193] +1 other test pass
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-3/igt@kms_vrr@cmrr@pipe-a-edp-1.html
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-4/igt@kms_vrr@cmrr@pipe-a-edp-1.html
* igt@testdisplay:
- shard-dg2-set2: [SKIP][194] ([Intel XE#2423]) -> [PASS][195] +2 other tests pass
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@testdisplay.html
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@testdisplay.html
* igt@xe_evict@evict-mixed-many-threads-large:
- shard-dg2-set2: [TIMEOUT][196] ([Intel XE#1473]) -> [PASS][197]
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-433/igt@xe_evict@evict-mixed-many-threads-large.html
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@xe_evict@evict-mixed-many-threads-large.html
* igt@xe_exec_balancer@many-execqueues-parallel-userptr-invalidate-race:
- shard-adlp: [TIMEOUT][198] ([Intel XE#1033] / [Intel XE#1727]) -> [PASS][199]
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@xe_exec_balancer@many-execqueues-parallel-userptr-invalidate-race.html
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@xe_exec_balancer@many-execqueues-parallel-userptr-invalidate-race.html
* igt@xe_exec_balancer@twice-virtual-basic:
- shard-dg2-set2: [SKIP][200] ([Intel XE#1130]) -> [PASS][201] +183 other tests pass
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_exec_balancer@twice-virtual-basic.html
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@xe_exec_balancer@twice-virtual-basic.html
* igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-invalidate-race-prefetch:
- shard-bmg: [FAIL][202] ([Intel XE#1630]) -> [PASS][203] +1 other test pass
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-1/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-invalidate-race-prefetch.html
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-3/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-invalidate-race-prefetch.html
* igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence:
- shard-lnl: [FAIL][204] ([Intel XE#1630]) -> [PASS][205] +1 other test pass
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-4/igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence.html
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-3/igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence.html
* igt@xe_gt_freq@freq_reset_multiple:
- shard-lnl: [DMESG-WARN][206] ([Intel XE#3184]) -> [PASS][207]
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-3/igt@xe_gt_freq@freq_reset_multiple.html
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-1/igt@xe_gt_freq@freq_reset_multiple.html
* igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit:
- shard-dg2-set2: [SKIP][208] ([Intel XE#2229]) -> [PASS][209] +1 other test pass
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html
* igt@xe_module_load@reload:
- shard-bmg: [FAIL][210] ([Intel XE#2136]) -> [PASS][211]
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-6/igt@xe_module_load@reload.html
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-3/igt@xe_module_load@reload.html
* igt@xe_module_load@reload-no-display:
- shard-dg2-set2: [FAIL][212] ([Intel XE#2136]) -> [PASS][213]
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_module_load@reload-no-display.html
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@xe_module_load@reload-no-display.html
* igt@xe_pm@s4-mocs:
- shard-lnl: [ABORT][214] ([Intel XE#1794]) -> [PASS][215]
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-2/igt@xe_pm@s4-mocs.html
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-5/igt@xe_pm@s4-mocs.html
* igt@xe_pm_residency@idle-residency-on-exec:
- shard-lnl: [FAIL][216] ([Intel XE#2564]) -> [PASS][217] +1 other test pass
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-lnl-2/igt@xe_pm_residency@idle-residency-on-exec.html
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-lnl-7/igt@xe_pm_residency@idle-residency-on-exec.html
#### Warnings ####
* igt@kms_async_flips@alternate-sync-async-flip:
- shard-adlp: [DMESG-FAIL][218] ([Intel XE#1033] / [Intel XE#1727] / [Intel XE#3194]) -> [DMESG-WARN][219] ([Intel XE#3194])
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-4/igt@kms_async_flips@alternate-sync-async-flip.html
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-1/igt@kms_async_flips@alternate-sync-async-flip.html
* igt@kms_async_flips@invalid-async-flip:
- shard-dg2-set2: [SKIP][220] ([Intel XE#2423] / [i915#2575]) -> [SKIP][221] ([Intel XE#873])
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_async_flips@invalid-async-flip.html
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_async_flips@invalid-async-flip.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-90:
- shard-dg2-set2: [SKIP][222] ([Intel XE#2351] / [Intel XE#2890]) -> [SKIP][223] ([Intel XE#316]) +1 other test skip
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-dg2-set2: [SKIP][224] ([Intel XE#316]) -> [SKIP][225] ([Intel XE#2890]) +4 other tests skip
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-270:
- shard-dg2-set2: [SKIP][226] ([Intel XE#2890]) -> [SKIP][227] ([Intel XE#316]) +3 other tests skip
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
[227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-adlp: [FAIL][228] ([Intel XE#1242]) -> [FAIL][229] ([Intel XE#1231] / [Intel XE#1242])
[228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
[229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
- shard-adlp: [DMESG-FAIL][230] -> [FAIL][231] ([Intel XE#1231] / [Intel XE#1242])
[230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-2/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
[231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
* igt@kms_big_fb@y-tiled-64bpp-rotate-180:
- shard-dg2-set2: [SKIP][232] ([Intel XE#2351] / [Intel XE#2890]) -> [SKIP][233] ([Intel XE#1124]) +5 other tests skip
[232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html
[233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html
* igt@kms_big_fb@y-tiled-addfb:
- shard-dg2-set2: [SKIP][234] ([Intel XE#2351] / [Intel XE#2890]) -> [SKIP][235] ([Intel XE#619])
[234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_big_fb@y-tiled-addfb.html
[235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_big_fb@y-tiled-addfb.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0:
- shard-dg2-set2: [SKIP][236] ([Intel XE#1124]) -> [SKIP][237] ([Intel XE#2890]) +5 other tests skip
[236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0.html
[237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0.html
* igt@kms_big_fb@yf-tiled-addfb:
- shard-dg2-set2: [SKIP][238] ([Intel XE#619]) -> [SKIP][239] ([Intel XE#2351] / [Intel XE#2890])
[238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_big_fb@yf-tiled-addfb.html
[239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_big_fb@yf-tiled-addfb.html
* igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
- shard-dg2-set2: [SKIP][240] ([Intel XE#607]) -> [SKIP][241] ([Intel XE#2890])
[240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-433/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
[241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-dg2-set2: [SKIP][242] ([Intel XE#1124]) -> [SKIP][243] ([Intel XE#2351] / [Intel XE#2890]) +2 other tests skip
[242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
[243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
- shard-dg2-set2: [SKIP][244] ([Intel XE#2890]) -> [SKIP][245] ([Intel XE#1124]) +6 other tests skip
[244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
[245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
* igt@kms_bw@connected-linear-tiling-1-displays-2560x1440p:
- shard-dg2-set2: [SKIP][246] ([Intel XE#367]) -> [SKIP][247] ([Intel XE#2423] / [i915#2575]) +2 other tests skip
[246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-433/igt@kms_bw@connected-linear-tiling-1-displays-2560x1440p.html
[247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_bw@connected-linear-tiling-1-displays-2560x1440p.html
* igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p:
- shard-dg2-set2: [SKIP][248] ([Intel XE#2191]) -> [SKIP][249] ([Intel XE#2423] / [i915#2575])
[248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-435/igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p.html
[249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p.html
* igt@kms_bw@linear-tiling-2-displays-1920x1080p:
- shard-dg2-set2: [SKIP][250] ([Intel XE#2423] / [i915#2575]) -> [SKIP][251] ([Intel XE#367]) +1 other test skip
[250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html
[251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html
* igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc:
- shard-dg2-set2: [SKIP][252] ([Intel XE#2351] / [Intel XE#2890]) -> [SKIP][253] ([Intel XE#455] / [Intel XE#787]) +2 other tests skip
[252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html
[253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs:
- shard-dg2-set2: [SKIP][254] ([Intel XE#2890]) -> [SKIP][255] ([Intel XE#455] / [Intel XE#787]) +8 other tests skip
[254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs.html
[255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc:
- shard-dg2-set2: [SKIP][256] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][257] ([Intel XE#2351] / [Intel XE#2890]) +2 other tests skip
[256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-433/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc.html
[257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
- shard-dg2-set2: [FAIL][258] ([Intel XE#616]) -> [SKIP][259] ([Intel XE#2890])
[258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html
[259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs:
- shard-dg2-set2: [SKIP][260] ([Intel XE#2907]) -> [SKIP][261] ([Intel XE#2890])
[260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html
[261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs:
- shard-dg2-set2: [SKIP][262] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][263] ([Intel XE#2890]) +5 other tests skip
[262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs.html
[263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
- shard-dg2-set2: [SKIP][264] ([Intel XE#2890]) -> [SKIP][265] ([Intel XE#2907]) +2 other tests skip
[264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
[265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
* igt@kms_chamelium_color@ctm-0-50:
- shard-dg2-set2: [SKIP][266] ([Intel XE#2423] / [i915#2575]) -> [SKIP][267] ([Intel XE#306]) +1 other test skip
[266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_chamelium_color@ctm-0-50.html
[267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_chamelium_color@ctm-0-50.html
* igt@kms_chamelium_color@gamma:
- shard-dg2-set2: [SKIP][268] ([Intel XE#306]) -> [SKIP][269] ([Intel XE#2423] / [i915#2575]) +1 other test skip
[268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-435/igt@kms_chamelium_color@gamma.html
[269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_chamelium_color@gamma.html
* igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats:
- shard-dg2-set2: [SKIP][270] ([Intel XE#2423] / [i915#2575]) -> [SKIP][271] ([Intel XE#373]) +11 other tests skip
[270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html
[271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html
* igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
- shard-dg2-set2: [SKIP][272] ([Intel XE#373]) -> [SKIP][273] ([Intel XE#2423] / [i915#2575]) +9 other tests skip
[272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html
[273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-dg2-set2: [SKIP][274] ([Intel XE#307]) -> [SKIP][275] ([Intel XE#2423] / [i915#2575])
[274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@kms_content_protection@dp-mst-type-0.html
[275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_content_protection@dp-mst-type-1:
- shard-adlp: [TIMEOUT][276] ([Intel XE#1033] / [Intel XE#1727]) -> [SKIP][277] ([Intel XE#307])
[276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@kms_content_protection@dp-mst-type-1.html
[277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@kms_content_protection@dp-mst-type-1.html
- shard-dg2-set2: [SKIP][278] ([Intel XE#2423] / [i915#2575]) -> [SKIP][279] ([Intel XE#307]) +1 other test skip
[278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_content_protection@dp-mst-type-1.html
[279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_content_protection@dp-mst-type-1.html
* igt@kms_content_protection@lic-type-1:
- shard-dg2-set2: [SKIP][280] ([Intel XE#455]) -> [SKIP][281] ([Intel XE#2423] / [i915#2575]) +7 other tests skip
[280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@kms_content_protection@lic-type-1.html
[281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_content_protection@lic-type-1.html
* igt@kms_content_protection@uevent:
- shard-dg2-set2: [SKIP][282] ([Intel XE#2423] / [i915#2575]) -> [FAIL][283] ([Intel XE#1188])
[282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_content_protection@uevent.html
[283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-dg2-set2: [SKIP][284] ([Intel XE#2423] / [i915#2575]) -> [SKIP][285] ([Intel XE#308])
[284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_cursor_crc@cursor-offscreen-512x512.html
[285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_cursor_crc@cursor-offscreen-512x512.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- shard-dg2-set2: [SKIP][286] ([Intel XE#323]) -> [SKIP][287] ([Intel XE#2423] / [i915#2575]) +1 other test skip
[286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
[287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-dg2-set2: [SKIP][288] ([Intel XE#2423] / [i915#2575]) -> [SKIP][289] ([Intel XE#323])
[288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
[289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_dsc@dsc-basic:
- shard-dg2-set2: [SKIP][290] ([Intel XE#455]) -> [SKIP][291] ([Intel XE#2351])
[290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_dsc@dsc-basic.html
[291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_dsc@dsc-basic.html
* igt@kms_fbcon_fbt@psr:
- shard-dg2-set2: [SKIP][292] ([Intel XE#776]) -> [SKIP][293] ([Intel XE#2890])
[292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-433/igt@kms_fbcon_fbt@psr.html
[293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_fbcon_fbt@psr.html
* igt@kms_feature_discovery@display-3x:
- shard-dg2-set2: [SKIP][294] ([Intel XE#703]) -> [SKIP][295] ([Intel XE#2423] / [i915#2575])
[294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@kms_feature_discovery@display-3x.html
[295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_feature_discovery@display-3x.html
* igt@kms_feature_discovery@dp-mst:
- shard-dg2-set2: [SKIP][296] ([Intel XE#1137]) -> [SKIP][297] ([Intel XE#2423] / [i915#2575])
[296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-433/igt@kms_feature_discovery@dp-mst.html
[297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_feature_discovery@dp-mst.html
* igt@kms_flip@2x-flip-vs-expired-vblank:
- shard-dg2-set2: [SKIP][298] ([Intel XE#2423] / [i915#2575]) -> [FAIL][299] ([Intel XE#301])
[298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_flip@2x-flip-vs-expired-vblank.html
[299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_flip@2x-flip-vs-expired-vblank.html
* igt@kms_flip@flip-vs-expired-vblank:
- shard-dg2-set2: [FAIL][300] ([Intel XE#301]) -> [SKIP][301] ([Intel XE#2423] / [i915#2575])
[300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@kms_flip@flip-vs-expired-vblank.html
[301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_flip@flip-vs-expired-vblank.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
- shard-dg2-set2: [SKIP][302] ([Intel XE#455]) -> [SKIP][303] ([Intel XE#2890]) +4 other tests skip
[302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
[303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
- shard-dg2-set2: [SKIP][304] ([Intel XE#2351] / [Intel XE#2890]) -> [SKIP][305] ([Intel XE#455]) +2 other tests skip
[304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
[305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling:
- shard-dg2-set2: [SKIP][306] ([Intel XE#2890]) -> [SKIP][307] ([Intel XE#455]) +4 other tests skip
[306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html
[307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-render:
- shard-dg2-set2: [SKIP][308] ([Intel XE#651]) -> [SKIP][309] ([Intel XE#2890]) +21 other tests skip
[308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-render.html
[309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen:
- shard-dg2-set2: [SKIP][310] ([Intel XE#2351] / [Intel XE#2890]) -> [SKIP][311] ([Intel XE#651]) +13 other tests skip
[310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen.html
[311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt:
- shard-adlp: [TIMEOUT][312] ([Intel XE#1033] / [Intel XE#1727]) -> [FAIL][313] ([Intel XE#1861])
[312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt.html
[313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-tiling-y:
- shard-dg2-set2: [SKIP][314] ([Intel XE#2351] / [Intel XE#2890]) -> [SKIP][315] ([Intel XE#658])
[314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
[315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render:
- shard-dg2-set2: [SKIP][316] ([Intel XE#2890]) -> [SKIP][317] ([Intel XE#651]) +24 other tests skip
[316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html
[317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff:
- shard-dg2-set2: [SKIP][318] ([Intel XE#651]) -> [SKIP][319] ([Intel XE#2351] / [Intel XE#2890]) +15 other tests skip
[318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff.html
[319]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
- shard-dg2-set2: [SKIP][320] ([Intel XE#658]) -> [SKIP][321] ([Intel XE#2351] / [Intel XE#2890])
[320]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html
[321]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt:
- shard-dg2-set2: [SKIP][322] ([Intel XE#653]) -> [SKIP][323] ([Intel XE#2890]) +28 other tests skip
[322]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html
[323]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render:
- shard-adlp: [TIMEOUT][324] ([Intel XE#1033] / [Intel XE#1727]) -> [SKIP][325] ([Intel XE#653])
[324]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render.html
[325]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-9/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render:
- shard-dg2-set2: [SKIP][326] ([Intel XE#653]) -> [SKIP][327] ([Intel XE#2351] / [Intel XE#2890]) +2 other tests skip
[326]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render.html
[327]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-onoff:
- shard-dg2-set2: [SKIP][328] ([Intel XE#2351] / [Intel XE#2890]) -> [SKIP][329] ([Intel XE#653]) +8 other tests skip
[328]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-onoff.html
[329]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@psr-slowdraw:
- shard-dg2-set2: [SKIP][330] ([Intel XE#2890]) -> [SKIP][331] ([Intel XE#653]) +27 other tests skip
[330]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-slowdraw.html
[331]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_frontbuffer_tracking@psr-slowdraw.html
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-dg2-set2: [SKIP][332] ([Intel XE#2890]) -> [SKIP][333] ([Intel XE#2925])
[332]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_joiner@basic-force-ultra-joiner.html
[333]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_joiner@invalid-modeset-big-joiner:
- shard-dg2-set2: [SKIP][334] ([Intel XE#346]) -> [SKIP][335] ([Intel XE#2890])
[334]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-435/igt@kms_joiner@invalid-modeset-big-joiner.html
[335]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_joiner@invalid-modeset-big-joiner.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-dg2-set2: [SKIP][336] ([Intel XE#2423] / [i915#2575]) -> [SKIP][337] ([Intel XE#356])
[336]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
[337]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_plane@pixel-format-source-clamping:
- shard-adlp: [INCOMPLETE][338] ([Intel XE#1035]) -> [INCOMPLETE][339] ([Intel XE#1035] / [Intel XE#1195])
[338]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-3/igt@kms_plane@pixel-format-source-clamping.html
[339]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-8/igt@kms_plane@pixel-format-source-clamping.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling:
- shard-dg2-set2: [SKIP][340] ([Intel XE#2423] / [i915#2575]) -> [SKIP][341] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip
[340]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html
[341]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html
* igt@kms_pm_backlight@brightness-with-dpms:
- shard-dg2-set2: [SKIP][342] ([Intel XE#2938]) -> [SKIP][343] ([Intel XE#2890])
[342]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@kms_pm_backlight@brightness-with-dpms.html
[343]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_pm_backlight@brightness-with-dpms.html
* igt@kms_pm_backlight@fade:
- shard-dg2-set2: [SKIP][344] ([Intel XE#2890]) -> [SKIP][345] ([Intel XE#870]) +1 other test skip
[344]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_pm_backlight@fade.html
[345]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_pm_backlight@fade.html
* igt@kms_pm_backlight@fade-with-suspend:
- shard-dg2-set2: [SKIP][346] ([Intel XE#870]) -> [SKIP][347] ([Intel XE#2890])
[346]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@kms_pm_backlight@fade-with-suspend.html
[347]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_pm_backlight@fade-with-suspend.html
* igt@kms_pm_dc@dc5-psr:
- shard-dg2-set2: [SKIP][348] ([Intel XE#1129]) -> [SKIP][349] ([Intel XE#2890])
[348]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-435/igt@kms_pm_dc@dc5-psr.html
[349]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_pm_dc@dc5-psr.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf:
- shard-dg2-set2: [SKIP][350] ([Intel XE#1489]) -> [SKIP][351] ([Intel XE#2890]) +9 other tests skip
[350]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html
[351]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-dg2-set2: [SKIP][352] ([Intel XE#2890]) -> [SKIP][353] ([Intel XE#1489]) +13 other tests skip
[352]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
[353]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_su@frontbuffer-xrgb8888:
- shard-dg2-set2: [SKIP][354] ([Intel XE#1122]) -> [SKIP][355] ([Intel XE#2890])
[354]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@kms_psr2_su@frontbuffer-xrgb8888.html
[355]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_psr2_su@frontbuffer-xrgb8888.html
* igt@kms_psr@fbc-pr-sprite-render:
- shard-dg2-set2: [SKIP][356] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][357] ([Intel XE#2351] / [Intel XE#2890]) +4 other tests skip
[356]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@kms_psr@fbc-pr-sprite-render.html
[357]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_psr@fbc-pr-sprite-render.html
* igt@kms_psr@fbc-psr-no-drrs:
- shard-dg2-set2: [SKIP][358] ([Intel XE#2351] / [Intel XE#2890]) -> [SKIP][359] ([Intel XE#2850] / [Intel XE#929]) +4 other tests skip
[358]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_psr@fbc-psr-no-drrs.html
[359]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@kms_psr@fbc-psr-no-drrs.html
* igt@kms_psr@fbc-psr2-primary-render:
- shard-dg2-set2: [SKIP][360] ([Intel XE#2890]) -> [SKIP][361] ([Intel XE#2850] / [Intel XE#929]) +12 other tests skip
[360]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_psr@fbc-psr2-primary-render.html
[361]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@kms_psr@fbc-psr2-primary-render.html
* igt@kms_psr@pr-basic:
- shard-dg2-set2: [SKIP][362] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][363] ([Intel XE#2890]) +10 other tests skip
[362]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@kms_psr@pr-basic.html
[363]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_psr@pr-basic.html
* igt@kms_psr@psr-primary-page-flip:
- shard-dg2-set2: [SKIP][364] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][365] ([Intel XE#2351])
[364]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_psr@psr-primary-page-flip.html
[365]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_psr@psr-primary-page-flip.html
* igt@kms_psr@psr-sprite-plane-onoff:
- shard-dg2-set2: [SKIP][366] ([Intel XE#2351]) -> [SKIP][367] ([Intel XE#2850] / [Intel XE#929])
[366]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_psr@psr-sprite-plane-onoff.html
[367]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@kms_rotation_crc@primary-rotation-90:
- shard-dg2-set2: [SKIP][368] -> [SKIP][369] ([Intel XE#2423] / [i915#2575]) +2 other tests skip
[368]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@kms_rotation_crc@primary-rotation-90.html
[369]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_rotation_crc@primary-rotation-90.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
- shard-dg2-set2: [SKIP][370] ([Intel XE#1127]) -> [SKIP][371] ([Intel XE#2423] / [i915#2575])
[370]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
[371]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-dg2-set2: [SKIP][372] ([Intel XE#2423] / [i915#2575]) -> [SKIP][373] ([Intel XE#1127])
[372]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
[373]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-dg2-set2: [SKIP][374] ([Intel XE#2423] / [i915#2575]) -> [SKIP][375] ([Intel XE#362])
[374]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_tiled_display@basic-test-pattern.html
[375]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][376] ([Intel XE#2509]) -> [SKIP][377] ([Intel XE#2426])
[376]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[377]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-dg2-set2: [SKIP][378] ([Intel XE#2423] / [i915#2575]) -> [SKIP][379] ([Intel XE#1500])
[378]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[379]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-435/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_vrr@cmrr:
- shard-dg2-set2: [SKIP][380] ([Intel XE#2423] / [i915#2575]) -> [SKIP][381] ([Intel XE#2168])
[380]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_vrr@cmrr.html
[381]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@kms_vrr@cmrr.html
* igt@kms_vrr@flipline:
- shard-dg2-set2: [SKIP][382] ([Intel XE#2423] / [i915#2575]) -> [SKIP][383] ([Intel XE#455]) +7 other tests skip
[382]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_vrr@flipline.html
[383]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@kms_vrr@flipline.html
* igt@kms_writeback@writeback-check-output-xrgb2101010:
- shard-dg2-set2: [SKIP][384] ([Intel XE#2423] / [i915#2575]) -> [SKIP][385] ([Intel XE#756])
[384]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@kms_writeback@writeback-check-output-xrgb2101010.html
[385]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@kms_writeback@writeback-check-output-xrgb2101010.html
* igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
- shard-dg2-set2: [SKIP][386] ([Intel XE#1091] / [Intel XE#2849]) -> [SKIP][387] ([Intel XE#2423] / [i915#2575]) +1 other test skip
[386]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
[387]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
* igt@xe_compute_preempt@compute-preempt-many:
- shard-dg2-set2: [SKIP][388] ([Intel XE#1280] / [Intel XE#455]) -> [SKIP][389] ([Intel XE#1130])
[388]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@xe_compute_preempt@compute-preempt-many.html
[389]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_compute_preempt@compute-preempt-many.html
* igt@xe_copy_basic@mem-copy-linear-0xfffe:
- shard-dg2-set2: [SKIP][390] ([Intel XE#1130]) -> [SKIP][391] ([Intel XE#1123]) +1 other test skip
[390]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_copy_basic@mem-copy-linear-0xfffe.html
[391]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@xe_copy_basic@mem-copy-linear-0xfffe.html
* igt@xe_create@multigpu-create-massive-size:
- shard-dg2-set2: [SKIP][392] ([Intel XE#944]) -> [SKIP][393] ([Intel XE#1130]) +1 other test skip
[392]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@xe_create@multigpu-create-massive-size.html
[393]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_create@multigpu-create-massive-size.html
* igt@xe_drm_fdinfo@utilization-single-full-load-destroy-queue:
- shard-dg2-set2: [SKIP][394] ([Intel XE#1130]) -> [FAIL][395] ([Intel XE#2667])
[394]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_drm_fdinfo@utilization-single-full-load-destroy-queue.html
[395]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@xe_drm_fdinfo@utilization-single-full-load-destroy-queue.html
* igt@xe_eudebug@basic-vm-bind-metadata-discovery:
- shard-dg2-set2: [SKIP][396] ([Intel XE#2905]) -> [SKIP][397] ([Intel XE#1130]) +9 other tests skip
[396]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@xe_eudebug@basic-vm-bind-metadata-discovery.html
[397]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_eudebug@basic-vm-bind-metadata-discovery.html
* igt@xe_evict@evict-beng-large-multi-vm-cm:
- shard-dg2-set2: [FAIL][398] ([Intel XE#1600]) -> [SKIP][399] ([Intel XE#1130])
[398]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@xe_evict@evict-beng-large-multi-vm-cm.html
[399]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_evict@evict-beng-large-multi-vm-cm.html
* igt@xe_evict@evict-beng-mixed-many-threads-large:
- shard-dg2-set2: [SKIP][400] ([Intel XE#1130]) -> [TIMEOUT][401] ([Intel XE#1473])
[400]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_evict@evict-beng-mixed-many-threads-large.html
[401]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@xe_evict@evict-beng-mixed-many-threads-large.html
* igt@xe_evict@evict-large-multi-vm-cm:
- shard-dg2-set2: [SKIP][402] ([Intel XE#1130]) -> [FAIL][403] ([Intel XE#1600])
[402]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_evict@evict-large-multi-vm-cm.html
[403]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-466/igt@xe_evict@evict-large-multi-vm-cm.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race:
- shard-adlp: [TIMEOUT][404] ([Intel XE#1033] / [Intel XE#1727] / [Intel XE#2981]) -> [SKIP][405] ([Intel XE#1392])
[404]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-adlp-8/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race.html
[405]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-adlp-3/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race.html
* igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch:
- shard-dg2-set2: [SKIP][406] ([Intel XE#1130]) -> [SKIP][407] ([Intel XE#288]) +29 other tests skip
[406]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch.html
[407]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch.html
* igt@xe_exec_fault_mode@twice-userptr-rebind-imm:
- shard-dg2-set2: [SKIP][408] ([Intel XE#288]) -> [SKIP][409] ([Intel XE#1130]) +25 other tests skip
[408]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-463/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html
[409]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html
* igt@xe_exec_sip_eudebug@breakpoint-writesip:
- shard-dg2-set2: [SKIP][410] ([Intel XE#1130]) -> [SKIP][411] ([Intel XE#2905]) +13 other tests skip
[410]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_exec_sip_eudebug@breakpoint-writesip.html
[411]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@xe_exec_sip_eudebug@breakpoint-writesip.html
* igt@xe_fault_injection@inject-fault-probe:
- shard-dg2-set2: [DMESG-WARN][412] ([Intel XE#3343]) -> [SKIP][413] ([Intel XE#1130])
[412]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-435/igt@xe_fault_injection@inject-fault-probe.html
[413]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_fault_injection@inject-fault-probe.html
* igt@xe_media_fill@media-fill:
- shard-dg2-set2: [SKIP][414] ([Intel XE#560]) -> [SKIP][415] ([Intel XE#1130])
[414]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@xe_media_fill@media-fill.html
[415]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_media_fill@media-fill.html
* igt@xe_oa@closed-fd-and-unmapped-access:
- shard-dg2-set2: [SKIP][416] ([Intel XE#2541]) -> [SKIP][417] ([Intel XE#1130]) +8 other tests skip
[416]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-464/igt@xe_oa@closed-fd-and-unmapped-access.html
[417]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_oa@closed-fd-and-unmapped-access.html
* igt@xe_oa@whitelisted-registers-userspace-config:
- shard-dg2-set2: [SKIP][418] ([Intel XE#1130]) -> [SKIP][419] ([Intel XE#2541]) +5 other tests skip
[418]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_oa@whitelisted-registers-userspace-config.html
[419]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@xe_oa@whitelisted-registers-userspace-config.html
* igt@xe_pat@pat-index-xehpc:
- shard-dg2-set2: [SKIP][420] ([Intel XE#1130]) -> [SKIP][421] ([Intel XE#2838] / [Intel XE#979])
[420]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_pat@pat-index-xehpc.html
[421]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-464/igt@xe_pat@pat-index-xehpc.html
* igt@xe_pm@d3cold-multiple-execs:
- shard-dg2-set2: [SKIP][422] ([Intel XE#2284] / [Intel XE#366]) -> [SKIP][423] ([Intel XE#1130])
[422]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@xe_pm@d3cold-multiple-execs.html
[423]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_pm@d3cold-multiple-execs.html
* igt@xe_pm@s4-d3cold-basic-exec:
- shard-dg2-set2: [SKIP][424] ([Intel XE#1130]) -> [SKIP][425] ([Intel XE#2284] / [Intel XE#366])
[424]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_pm@s4-d3cold-basic-exec.html
[425]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@xe_pm@s4-d3cold-basic-exec.html
* igt@xe_pm@s4-vm-bind-prefetch:
- shard-dg2-set2: [SKIP][426] ([Intel XE#1130]) -> [ABORT][427] ([Intel XE#1794])
[426]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_pm@s4-vm-bind-prefetch.html
[427]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-432/igt@xe_pm@s4-vm-bind-prefetch.html
* igt@xe_query@multigpu-query-engines:
- shard-dg2-set2: [SKIP][428] ([Intel XE#1130]) -> [SKIP][429] ([Intel XE#944]) +2 other tests skip
[428]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_query@multigpu-query-engines.html
[429]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-463/igt@xe_query@multigpu-query-engines.html
* igt@xe_sriov_flr@flr-each-isolation:
- shard-dg2-set2: [SKIP][430] ([Intel XE#3342]) -> [SKIP][431] ([Intel XE#1130])
[430]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-466/igt@xe_sriov_flr@flr-each-isolation.html
[431]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-434/igt@xe_sriov_flr@flr-each-isolation.html
* igt@xe_wedged@basic-wedged:
- shard-dg2-set2: [SKIP][432] ([Intel XE#1130]) -> [DMESG-WARN][433] ([Intel XE#2919])
[432]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_wedged@basic-wedged.html
[433]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@xe_wedged@basic-wedged.html
* igt@xe_wedged@wedged-mode-toggle:
- shard-dg2-set2: [SKIP][434] ([Intel XE#1130]) -> [ABORT][435] ([Intel XE#3075] / [Intel XE#3084])
[434]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25/shard-dg2-434/igt@xe_wedged@wedged-mode-toggle.html
[435]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/shard-dg2-433/igt@xe_wedged@wedged-mode-toggle.html
[Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
[Intel XE#1035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1035
[Intel XE#1081]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1081
[Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
[Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
[Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
[Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
[Intel XE#1130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1130
[Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
[Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1188]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1188
[Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
[Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
[Intel XE#1242]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1242
[Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1426
[Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
[Intel XE#1475]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1475
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1491]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1491
[Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
[Intel XE#1600]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1600
[Intel XE#1630]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1630
[Intel XE#1694]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1694
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
[Intel XE#1861]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1861
[Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
[Intel XE#1885]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1885
[Intel XE#1999]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1999
[Intel XE#2042]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2042
[Intel XE#2078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2078
[Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134
[Intel XE#2136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2136
[Intel XE#2159]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2159
[Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[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#2333]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2333
[Intel XE#2351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2351
[Intel XE#2364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2364
[Intel XE#2423]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2423
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2446]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2446
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
[Intel XE#2550]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2550
[Intel XE#2564]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2564
[Intel XE#2577]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2577
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2667]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2667
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838
[Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#2890]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2890
[Intel XE#2905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2905
[Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
[Intel XE#2919]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2919
[Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
[Intel XE#2929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2929
[Intel XE#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938
[Intel XE#2961]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2961
[Intel XE#2981]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2981
[Intel XE#3009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3009
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
[Intel XE#3075]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3075
[Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
[Intel XE#3084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3084
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#3130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3130
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#3184]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3184
[Intel XE#3191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3191
[Intel XE#3194]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3194
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#3249]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3249
[Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
[Intel XE#3343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3343
[Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
[Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#560]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/560
[Intel XE#605]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/605
[Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
[Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
[Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
[Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
[Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
[Intel XE#771]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/771
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/873
[Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
[Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
[Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
[Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
[i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575
Build changes
-------------
* IGT: IGT_8100 -> IGT_8101
* Linux: xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25 -> xe-pw-139121v4
IGT_8100: 84e42580f918da926481fd2fb37be01451d6ee9a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8101: 1235576931b5abdcb2c755672d194fb540fa6fb1 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-2190-5521311ecd7ffbb0adf016dbf83bd0165fc94d25: 5521311ecd7ffbb0adf016dbf83bd0165fc94d25
xe-pw-139121v4: 139121v4
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139121v4/index.html
[-- Attachment #2: Type: text/html, Size: 141806 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 3/3] drm/xe/pmu: Add GT frequency events
2024-11-12 20:51 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
@ 2024-11-12 20:51 ` Vinay Belgaumkar
0 siblings, 0 replies; 22+ messages in thread
From: Vinay Belgaumkar @ 2024-11-12 20:51 UTC (permalink / raw)
To: intel-xe; +Cc: Vinay Belgaumkar, Rodrigo Vivi
Define PMU events for GT frequency (actual and requested). This is
a port from the i915 driver implementation, where an internal timer
is used to aggregate GT frequencies over certain fixed interval.
Following PMU events are being added-
xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
Standard perf commands can be used to monitor GT frequency-
$ perf stat -e xe_0000_00_02.0/requested-frequency-gt0/ -I1000
1.001175175 700 M xe/requested-frequency-gt0/
2.005891881 703 M xe/requested-frequency-gt0/
3.007318169 700 M xe/requested-frequency-gt0/
Actual/requested frequencies will be 0 when GT is suspended.
v2: Checkpatch fix, moved timer code to this patch
v3: Fix kunit issue
v4: Checkpatch warning fixes
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
---
drivers/gpu/drm/xe/xe_gt.c | 2 +
drivers/gpu/drm/xe/xe_pmu.c | 248 +++++++++++++++++++++++++++++-
drivers/gpu/drm/xe/xe_pmu.h | 2 +
drivers/gpu/drm/xe/xe_pmu_types.h | 26 ++++
4 files changed, 277 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index fd18bbce99da..ef27db83c09c 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -940,6 +940,8 @@ int xe_gt_resume(struct xe_gt *gt)
xe_gt_idle_enable_pg(gt);
+ xe_pmu_resume(gt);
+
xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_gt_dbg(gt, "resumed\n");
diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
index 199344154408..633552fbf78d 100644
--- a/drivers/gpu/drm/xe/xe_pmu.c
+++ b/drivers/gpu/drm/xe/xe_pmu.c
@@ -63,6 +63,31 @@ static unsigned int xe_pmu_target_cpu = -1;
* 2352945
*
* Each value is roughly a 1000ms increment here as well. This is expected GT residency when idle.
+ *
+ * PMU frequency events use a software timer to aggregate GT freq values over the time of capture.
+ * This allows us to calculate a rough average over the timespan. This is why sysfs is the best way
+ * to obtain instantaneous frequency if accuracy is intended. Advantage of using PMU is that it
+ * results in lesser CPU utilization as compared to dumping sysfs entries repeatedly.
+ *
+ * To list GT frequency events, use the following-
+ *
+ * $ perf list | grep frequency-gt
+ * xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
+ * xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
+ * xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
+ * xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
+ *
+ * $ perf stat -e xe_0000_00_02.0/requested-frequency-gt0/ -I1000
+ * # time counts unit events
+ * 1.001189056 1950 M xe_0000_00_02.0/requested-frequency-gt0/
+ * 2.006388494 1960 M xe_0000_00_02.0/requested-frequency-gt0/
+ * 3.007930311 1959 M xe_0000_00_02.0/requested-frequency-gt0/
+ *
+ * Dumping requested freq from sysfs-
+ * $ while true; do cat /sys/class/drm/card0/device/tile0/gt0/freq0/cur_freq ; sleep 1; done
+ * 1950
+ * 1950
+ * 1950
*/
static struct xe_pmu *event_to_pmu(struct perf_event *event)
@@ -88,6 +113,12 @@ static unsigned int other_bit(const u64 config)
case XE_PMU_RC6_RESIDENCY:
val = __XE_PMU_RC6_RESIDENCY_ENABLED;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val = __XE_PMU_ACTUAL_FREQUENCY_ENABLED;
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val = __XE_PMU_REQUESTED_FREQUENCY_ENABLED;
+ break;
default:
/*
* Events that do not require sampling, or tracking state
@@ -104,6 +135,22 @@ static unsigned int config_bit(const u64 config)
return other_bit(config);
}
+static u32 config_mask(const u64 config)
+{
+ unsigned int bit = config_bit(config);
+
+ if (__builtin_constant_p(config))
+ BUILD_BUG_ON(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+ else
+ WARN_ON_ONCE(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+
+ return BIT(config_bit(config));
+}
+
static unsigned int event_bit(struct perf_event *event)
{
return config_bit(event->attr.config);
@@ -132,6 +179,10 @@ config_status(struct xe_device *xe, u64 config)
if (xe->info.skip_guc_pc)
return -ENODEV;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ fallthrough;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ break;
default:
return -ENOENT;
}
@@ -194,6 +245,12 @@ store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
pmu->event_sample[gt_id][sample].cur = val;
}
+static void
+add_sample_mult(struct xe_pmu *pmu, unsigned int gt_id, int sample, u32 val, u32 mul)
+{
+ pmu->event_sample[gt_id][sample].cur += mul_u32_u32(val, mul);
+}
+
static u64 get_rc6(struct xe_gt *gt)
{
struct xe_device *xe = gt_to_xe(gt);
@@ -239,6 +296,7 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
{
struct xe_device *xe =
container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
const unsigned int gt_id = config_gt_id(event->attr.config);
const u64 config = event->attr.config;
struct xe_gt *gt = xe_device_get_gt(xe, gt_id);
@@ -248,6 +306,18 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
case XE_PMU_RC6_RESIDENCY:
val = get_rc6(gt);
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_ACT),
+ USEC_PER_SEC /* to MHz */);
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_REQ),
+ USEC_PER_SEC /* to MHz */);
+ break;
default:
drm_warn(>->tile->xe->drm, "unknown pmu event\n");
}
@@ -277,6 +347,144 @@ static void xe_pmu_event_read(struct perf_event *event)
local64_add(new - prev, &event->count);
}
+static u32 frequency_enabled_mask(void)
+{
+ unsigned int i;
+ u32 mask = 0;
+
+ for (i = 0; i < XE_PMU_MAX_GT; i++)
+ mask |= config_mask(__XE_PMU_ACTUAL_FREQUENCY(i)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(i));
+
+ return mask;
+}
+
+static bool
+frequency_sampling_enabled(struct xe_pmu *pmu, unsigned int gt)
+{
+ return pmu->enable &
+ (config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt)));
+}
+
+static void
+frequency_sample(struct xe_gt *gt, unsigned int period_ns)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ const unsigned int gt_id = gt->info.id;
+ struct xe_pmu *pmu = &xe->pmu;
+ bool device_awake;
+ int ret;
+ u32 cur_freq;
+
+ if (!frequency_sampling_enabled(pmu, gt_id))
+ return;
+
+ /* Report 0/0 (actual/requested) frequency while GT is suspended. */
+ device_awake = xe_pm_runtime_get_if_active(xe);
+ if (!device_awake)
+ return;
+
+ if (pmu->enable & config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt_id))) {
+ u32 val;
+
+ /*
+ * We take a quick peek here without using forcewake
+ * so that we don't perturb the system under observation
+ * (forcewake => !rc6 => increased power use). We expect
+ * that if the read fails because it is outside of the
+ * mmio power well, then it will return 0 -- in which
+ * case we assume the system is running at the intended
+ * frequency. Fortunately, the read should rarely fail!
+ */
+ val = xe_guc_pc_get_act_freq(>->uc.guc.pc);
+
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_ACT,
+ val, period_ns / 1000);
+ }
+
+ if (pmu->enable & config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt_id))) {
+ ret = xe_guc_pc_get_cur_freq(>->uc.guc.pc, &cur_freq);
+ if (!ret)
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_REQ,
+ cur_freq,
+ period_ns / 1000);
+ }
+
+ xe_pm_runtime_put(xe);
+}
+
+static enum hrtimer_restart xe_sample(struct hrtimer *hrtimer)
+{
+ struct xe_pmu *pmu = container_of(hrtimer, struct xe_pmu, timer);
+ struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+ unsigned int period_ns;
+ struct xe_gt *gt;
+ unsigned int i;
+ ktime_t now;
+
+ if (!READ_ONCE(pmu->timer_enabled))
+ return HRTIMER_NORESTART;
+
+ now = ktime_get();
+ period_ns = ktime_to_ns(ktime_sub(now, pmu->timer_last));
+ pmu->timer_last = now;
+
+ /*
+ * Strictly speaking the passed in period may not be 100% accurate for
+ * all internal calculation, since some amount of time can be spent on
+ * grabbing the forcewake. However the potential error from timer call-
+ * back delay greatly dominates this so we keep it simple.
+ */
+
+ for_each_gt(gt, xe, i) {
+ if (!(pmu->active_gts & BIT(i)))
+ continue;
+ frequency_sample(gt, period_ns);
+ }
+
+ hrtimer_forward(hrtimer, now, ns_to_ktime(period));
+
+ return HRTIMER_RESTART;
+}
+
+static bool pmu_needs_timer(struct xe_pmu *pmu)
+{
+ u32 enable;
+
+ /*
+ * Only some counters need the sampling timer.
+ *
+ * We start with a bitmask of all currently enabled events.
+ */
+ enable = pmu->enable;
+
+ /*
+ * Mask out all the ones which do not need the timer, or in
+ * other words keep all the ones that could need the timer.
+ */
+ enable &= frequency_enabled_mask();
+
+ /*
+ * If some bits remain it means we need the sampling timer running.
+ */
+ return enable;
+}
+
+static void __xe_pmu_maybe_start_timer(struct xe_pmu *pmu)
+{
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+
+ if (!pmu->timer_enabled && pmu_needs_timer(pmu)) {
+ pmu->timer_enabled = true;
+ pmu->timer_last = ktime_get();
+ hrtimer_start_range_ns(&pmu->timer,
+ ns_to_ktime(period), 0,
+ HRTIMER_MODE_REL_PINNED);
+ }
+}
+
static void xe_pmu_enable(struct perf_event *event)
{
struct xe_pmu *pmu = event_to_pmu(event);
@@ -299,6 +507,11 @@ static void xe_pmu_enable(struct perf_event *event)
pmu->enable |= BIT(bit);
pmu->enable_count[bit]++;
+ /*
+ * Start the sampling timer if needed and not already enabled.
+ */
+ __xe_pmu_maybe_start_timer(pmu);
+
spin_unlock_irqrestore(&pmu->lock, flags);
update:
/*
@@ -328,8 +541,10 @@ static void xe_pmu_disable(struct perf_event *event)
* Decrement the reference count and clear the enabled
* bitmask when the last listener on an event goes away.
*/
- if (--pmu->enable_count[bit] == 0)
+ if (--pmu->enable_count[bit] == 0) {
pmu->enable &= ~BIT(bit);
+ pmu->timer_enabled &= pmu_needs_timer(pmu);
+ }
spin_unlock_irqrestore(&pmu->lock, flags);
}
@@ -463,6 +678,8 @@ create_event_attributes(struct xe_pmu *pmu)
const char *unit;
} events[] = {
__event(0, "c6-residency", "ms"),
+ __event(1, "actual-frequency", "M"),
+ __event(2, "requested-frequency", "M"),
};
struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
@@ -676,6 +893,31 @@ void xe_pmu_suspend(struct xe_gt *gt)
spin_unlock_irq(&pmu->lock);
}
+/**
+ * xe_pmu_resume() - Restart the timer if needed
+ * @gt: GT object
+ */
+void xe_pmu_resume(struct xe_gt *gt)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ if (!pmu->base.event_init)
+ return;
+
+ spin_lock_irq(&pmu->lock);
+
+ /*
+ * Re-enable sampling timer when GPU goes active.
+ */
+ if (pmu->active_gts == 0)
+ __xe_pmu_maybe_start_timer(pmu);
+
+ pmu->active_gts |= BIT(gt->info.id);
+
+ spin_unlock_irq(&pmu->lock);
+}
+
/**
* xe_pmu_unregister() - Remove/cleanup PMU registration
* @arg: Ptr to pmu
@@ -689,6 +931,8 @@ void xe_pmu_unregister(void *arg)
pmu->registered = false;
+ hrtimer_cancel(&pmu->timer);
+
xe_pmu_unregister_cpuhp_state(pmu);
perf_pmu_unregister(&pmu->base);
@@ -732,6 +976,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
int ret = -ENOMEM;
spin_lock_init(&pmu->lock);
+ hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ pmu->timer.function = xe_sample;
pmu->cpuhp.cpu = -1;
pmu->name = kasprintf(GFP_KERNEL,
diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
index 17f5a8d7d45c..fb6e3819d7bc 100644
--- a/drivers/gpu/drm/xe/xe_pmu.h
+++ b/drivers/gpu/drm/xe/xe_pmu.h
@@ -16,12 +16,14 @@ void xe_pmu_exit(void);
void xe_pmu_register(struct xe_pmu *pmu);
void xe_pmu_unregister(void *arg);
void xe_pmu_suspend(struct xe_gt *gt);
+void xe_pmu_resume(struct xe_gt *gt);
#else
static inline int xe_pmu_init(void) { return 0; }
static inline void xe_pmu_exit(void) {}
static inline void xe_pmu_register(struct xe_pmu *pmu) {}
static inline void xe_pmu_unregister(void *arg) {}
static inline void xe_pmu_suspend(struct xe_gt *gt) {}
+static inline void xe_pmu_resume(struct xe_gt *gt) {}
#endif
#endif
diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
index 59d7718c59ce..c44c3d79b970 100644
--- a/drivers/gpu/drm/xe/xe_pmu_types.h
+++ b/drivers/gpu/drm/xe/xe_pmu_types.h
@@ -12,6 +12,8 @@
enum {
__XE_SAMPLE_RC6,
__XE_SAMPLE_RC6_LAST_REPORTED,
+ __XE_SAMPLE_FREQ_ACT,
+ __XE_SAMPLE_FREQ_REQ,
__XE_NUM_PMU_SAMPLERS
};
@@ -28,13 +30,19 @@ enum {
#define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
#define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
+#define XE_PMU_ACTUAL_FREQUENCY __XE_PMU_OTHER(1)
+#define XE_PMU_REQUESTED_FREQUENCY __XE_PMU_OTHER(2)
#define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
+#define __XE_PMU_ACTUAL_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 1)
+#define __XE_PMU_REQUESTED_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 2)
/**
* Non-engine events that we need to track enabled-disabled transition and
* current state.
*/
enum xe_pmu_tracked_events {
+ __XE_PMU_ACTUAL_FREQUENCY_ENABLED,
+ __XE_PMU_REQUESTED_FREQUENCY_ENABLED,
__XE_PMU_RC6_RESIDENCY_ENABLED,
__XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
};
@@ -128,6 +136,24 @@ struct xe_pmu {
* @sleep_last: Last time GT parked for RC6 estimation.
*/
ktime_t sleep_last[XE_PMU_MAX_GT];
+ /**
+ * @timer: Timer for internal Xe PMU sampling.
+ */
+ struct hrtimer timer;
+ /**
+ * @timer_last:
+ *
+ * Timestmap of the previous timer invocation.
+ */
+ ktime_t timer_last;
+ /**
+ * @timer_enabled: Should the internal sampling timer be running.
+ */
+ bool timer_enabled;
+ /**
+ * @active_gts: GT active mask.
+ */
+ unsigned int active_gts;
};
#endif
--
2.38.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 3/3] drm/xe/pmu: Add GT frequency events
2024-10-28 19:23 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
@ 2024-10-28 19:24 ` Vinay Belgaumkar
0 siblings, 0 replies; 22+ messages in thread
From: Vinay Belgaumkar @ 2024-10-28 19:24 UTC (permalink / raw)
To: intel-xe; +Cc: Vinay Belgaumkar, Rodrigo Vivi
Define PMU events for GT frequency (actual and requested). This is
a port from the i915 driver implementation, where an internal timer
is used to aggregate GT frequencies over certain fixed interval.
Following PMU events are being added-
xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
Standard perf commands can be used to monitor GT frequency-
$ perf stat -e xe_0000_00_02.0/requested-frequency-gt0/ -I1000
1.001175175 700 M xe/requested-frequency-gt0/
2.005891881 703 M xe/requested-frequency-gt0/
3.007318169 700 M xe/requested-frequency-gt0/
Actual/requested frequencies will be 0 when GT is suspended.
v2: Checkpatch fix, moved timer code to this patch
v3: Fix kunit issue
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
---
drivers/gpu/drm/xe/xe_gt.c | 2 +
drivers/gpu/drm/xe/xe_pmu.c | 239 ++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_pmu.h | 2 +
drivers/gpu/drm/xe/xe_pmu_types.h | 26 ++++
4 files changed, 269 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index fd18bbce99da..ef27db83c09c 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -940,6 +940,8 @@ int xe_gt_resume(struct xe_gt *gt)
xe_gt_idle_enable_pg(gt);
+ xe_pmu_resume(gt);
+
xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_gt_dbg(gt, "resumed\n");
diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
index 0db14d609c04..f0976864bc9b 100644
--- a/drivers/gpu/drm/xe/xe_pmu.c
+++ b/drivers/gpu/drm/xe/xe_pmu.c
@@ -62,7 +62,28 @@ static unsigned int xe_pmu_target_cpu = -1;
* 2350917
* 2352945
*
+<<<<<<< HEAD
* Each value is roughly a 1000ms increment here as well. This is expected GT residency when idle.
+ *
+ * To list GT frequency events, use the following-
+ *
+ * $ perf list | grep frequency-gt
+ * xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
+ * xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
+ * xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
+ * xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
+ *
+ * $ perf stat -e xe_0000_00_02.0/requested-frequency-gt0/ -I1000
+ * # time counts unit events
+ * 1.001189056 1950 M xe_0000_00_02.0/requested-frequency-gt0/
+ * 2.006388494 1960 M xe_0000_00_02.0/requested-frequency-gt0/
+ * 3.007930311 1959 M xe_0000_00_02.0/requested-frequency-gt0/
+ *
+ * Dumping requested freq from sysfs-
+ * $ while true; do cat /sys/class/drm/card0/device/tile0/gt0/freq0/cur_freq ; sleep 1; done
+ * 1950
+ * 1950
+ * 1950
*/
static struct xe_pmu *event_to_pmu(struct perf_event *event)
@@ -88,6 +109,12 @@ static unsigned int other_bit(const u64 config)
case XE_PMU_RC6_RESIDENCY:
val = __XE_PMU_RC6_RESIDENCY_ENABLED;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val = __XE_PMU_ACTUAL_FREQUENCY_ENABLED;
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val = __XE_PMU_REQUESTED_FREQUENCY_ENABLED;
+ break;
default:
/*
* Events that do not require sampling, or tracking state
@@ -104,6 +131,22 @@ static unsigned int config_bit(const u64 config)
return other_bit(config);
}
+static u32 config_mask(const u64 config)
+{
+ unsigned int bit = config_bit(config);
+
+ if (__builtin_constant_p(config))
+ BUILD_BUG_ON(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+ else
+ WARN_ON_ONCE(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+
+ return BIT(config_bit(config));
+}
+
static unsigned int event_bit(struct perf_event *event)
{
return config_bit(event->attr.config);
@@ -132,6 +175,10 @@ config_status(struct xe_device *xe, u64 config)
if (xe->info.skip_guc_pc)
return -ENODEV;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ fallthrough;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ break;
default:
return -ENOENT;
}
@@ -194,6 +241,12 @@ store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
pmu->event_sample[gt_id][sample].cur = val;
}
+static void
+add_sample_mult(struct xe_pmu *pmu, unsigned int gt_id, int sample, u32 val, u32 mul)
+{
+ pmu->event_sample[gt_id][sample].cur += mul_u32_u32(val, mul);
+}
+
static u64 get_rc6(struct xe_gt *gt)
{
struct xe_device *xe = gt_to_xe(gt);
@@ -239,6 +292,7 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
{
struct xe_device *xe =
container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
const unsigned int gt_id = config_gt_id(event->attr.config);
const u64 config = event->attr.config;
struct xe_gt *gt = xe_device_get_gt(xe, gt_id);
@@ -248,6 +302,18 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
case XE_PMU_RC6_RESIDENCY:
val = get_rc6(gt);
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_ACT),
+ USEC_PER_SEC /* to MHz */);
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_REQ),
+ USEC_PER_SEC /* to MHz */);
+ break;
default:
drm_warn(>->tile->xe->drm, "unknown pmu event\n");
}
@@ -277,6 +343,144 @@ static void xe_pmu_event_read(struct perf_event *event)
local64_add(new - prev, &event->count);
}
+static u32 frequency_enabled_mask(void)
+{
+ unsigned int i;
+ u32 mask = 0;
+
+ for (i = 0; i < XE_PMU_MAX_GT; i++)
+ mask |= config_mask(__XE_PMU_ACTUAL_FREQUENCY(i)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(i));
+
+ return mask;
+}
+
+static bool
+frequency_sampling_enabled(struct xe_pmu *pmu, unsigned int gt)
+{
+ return pmu->enable &
+ (config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt)));
+}
+
+static void
+frequency_sample(struct xe_gt *gt, unsigned int period_ns)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ const unsigned int gt_id = gt->info.id;
+ struct xe_pmu *pmu = &xe->pmu;
+ bool device_awake;
+ int ret;
+ u32 cur_freq;
+
+ if (!frequency_sampling_enabled(pmu, gt_id))
+ return;
+
+ /* Report 0/0 (actual/requested) frequency while GT is suspended. */
+ device_awake = xe_pm_runtime_get_if_active(xe);
+ if (!device_awake)
+ return;
+
+ if (pmu->enable & config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt_id))) {
+ u32 val;
+
+ /*
+ * We take a quick peek here without using forcewake
+ * so that we don't perturb the system under observation
+ * (forcewake => !rc6 => increased power use). We expect
+ * that if the read fails because it is outside of the
+ * mmio power well, then it will return 0 -- in which
+ * case we assume the system is running at the intended
+ * frequency. Fortunately, the read should rarely fail!
+ */
+ val = xe_guc_pc_get_act_freq(>->uc.guc.pc);
+
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_ACT,
+ val, period_ns / 1000);
+ }
+
+ if (pmu->enable & config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt_id))) {
+ ret = xe_guc_pc_get_cur_freq(>->uc.guc.pc, &cur_freq);
+ if (!ret)
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_REQ,
+ cur_freq,
+ period_ns / 1000);
+ }
+
+ xe_pm_runtime_put(xe);
+}
+
+static enum hrtimer_restart xe_sample(struct hrtimer *hrtimer)
+{
+ struct xe_pmu *pmu = container_of(hrtimer, struct xe_pmu, timer);
+ struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+ unsigned int period_ns;
+ struct xe_gt *gt;
+ unsigned int i;
+ ktime_t now;
+
+ if (!READ_ONCE(pmu->timer_enabled))
+ return HRTIMER_NORESTART;
+
+ now = ktime_get();
+ period_ns = ktime_to_ns(ktime_sub(now, pmu->timer_last));
+ pmu->timer_last = now;
+
+ /*
+ * Strictly speaking the passed in period may not be 100% accurate for
+ * all internal calculation, since some amount of time can be spent on
+ * grabbing the forcewake. However the potential error from timer call-
+ * back delay greatly dominates this so we keep it simple.
+ */
+
+ for_each_gt(gt, xe, i) {
+ if (!(pmu->active_gts & BIT(i)))
+ continue;
+ frequency_sample(gt, period_ns);
+ }
+
+ hrtimer_forward(hrtimer, now, ns_to_ktime(period));
+
+ return HRTIMER_RESTART;
+}
+
+static bool pmu_needs_timer(struct xe_pmu *pmu)
+{
+ u32 enable;
+
+ /*
+ * Only some counters need the sampling timer.
+ *
+ * We start with a bitmask of all currently enabled events.
+ */
+ enable = pmu->enable;
+
+ /*
+ * Mask out all the ones which do not need the timer, or in
+ * other words keep all the ones that could need the timer.
+ */
+ enable &= frequency_enabled_mask();
+
+ /*
+ * If some bits remain it means we need the sampling timer running.
+ */
+ return enable;
+}
+
+static void __xe_pmu_maybe_start_timer(struct xe_pmu *pmu)
+{
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+
+ if (!pmu->timer_enabled && pmu_needs_timer(pmu)) {
+ pmu->timer_enabled = true;
+ pmu->timer_last = ktime_get();
+ hrtimer_start_range_ns(&pmu->timer,
+ ns_to_ktime(period), 0,
+ HRTIMER_MODE_REL_PINNED);
+ }
+}
+
static void xe_pmu_enable(struct perf_event *event)
{
struct xe_pmu *pmu = event_to_pmu(event);
@@ -288,6 +492,11 @@ static void xe_pmu_enable(struct perf_event *event)
spin_lock_irqsave(&pmu->lock, flags);
+ /*
+ * Start the sampling timer if needed and not already enabled.
+ */
+ __xe_pmu_maybe_start_timer(pmu);
+
/*
* Update the bitmask of enabled events and increment
* the event reference counter.
@@ -428,6 +637,8 @@ create_event_attributes(struct xe_pmu *pmu)
const char *unit;
} events[] = {
__event(0, "rc6-residency", "ms"),
+ __event(1, "actual-frequency", "M"),
+ __event(2, "requested-frequency", "M"),
};
struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
@@ -642,6 +853,30 @@ void xe_pmu_suspend(struct xe_gt *gt)
spin_unlock_irq(&pmu->lock);
}
+/**
+ * xe_pmu_resume() - Restart the timer if needed
+ */
+void xe_pmu_resume(struct xe_gt *gt)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ if (!pmu->base.event_init)
+ return;
+
+ spin_lock_irq(&pmu->lock);
+
+ /*
+ * Re-enable sampling timer when GPU goes active.
+ */
+ if (pmu->active_gts == 0)
+ __xe_pmu_maybe_start_timer(pmu);
+
+ pmu->active_gts |= BIT(gt->info.id);
+
+ spin_unlock_irq(&pmu->lock);
+}
+
/**
* xe_pmu_unregister() - Remove/cleanup PMU registration
*/
@@ -660,6 +895,8 @@ void xe_pmu_unregister(void *arg)
pmu->closed = true;
synchronize_rcu();
+ hrtimer_cancel(&pmu->timer);
+
xe_pmu_unregister_cpuhp_state(pmu);
perf_pmu_unregister(&pmu->base);
@@ -703,6 +940,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
int ret = -ENOMEM;
spin_lock_init(&pmu->lock);
+ hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ pmu->timer.function = xe_sample;
pmu->cpuhp.cpu = -1;
pmu->name = kasprintf(GFP_KERNEL,
diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
index 17f5a8d7d45c..fb6e3819d7bc 100644
--- a/drivers/gpu/drm/xe/xe_pmu.h
+++ b/drivers/gpu/drm/xe/xe_pmu.h
@@ -16,12 +16,14 @@ void xe_pmu_exit(void);
void xe_pmu_register(struct xe_pmu *pmu);
void xe_pmu_unregister(void *arg);
void xe_pmu_suspend(struct xe_gt *gt);
+void xe_pmu_resume(struct xe_gt *gt);
#else
static inline int xe_pmu_init(void) { return 0; }
static inline void xe_pmu_exit(void) {}
static inline void xe_pmu_register(struct xe_pmu *pmu) {}
static inline void xe_pmu_unregister(void *arg) {}
static inline void xe_pmu_suspend(struct xe_gt *gt) {}
+static inline void xe_pmu_resume(struct xe_gt *gt) {}
#endif
#endif
diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
index 9799aae25629..5b6f7558aa16 100644
--- a/drivers/gpu/drm/xe/xe_pmu_types.h
+++ b/drivers/gpu/drm/xe/xe_pmu_types.h
@@ -12,6 +12,8 @@
enum {
__XE_SAMPLE_RC6,
__XE_SAMPLE_RC6_LAST_REPORTED,
+ __XE_SAMPLE_FREQ_ACT,
+ __XE_SAMPLE_FREQ_REQ,
__XE_NUM_PMU_SAMPLERS
};
@@ -28,13 +30,19 @@ enum {
#define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
#define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
+#define XE_PMU_ACTUAL_FREQUENCY __XE_PMU_OTHER(1)
+#define XE_PMU_REQUESTED_FREQUENCY __XE_PMU_OTHER(2)
#define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
+#define __XE_PMU_ACTUAL_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 1)
+#define __XE_PMU_REQUESTED_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 2)
/**
* Non-engine events that we need to track enabled-disabled transition and
* current state.
*/
enum xe_pmu_tracked_events {
+ __XE_PMU_ACTUAL_FREQUENCY_ENABLED,
+ __XE_PMU_REQUESTED_FREQUENCY_ENABLED,
__XE_PMU_RC6_RESIDENCY_ENABLED,
__XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
};
@@ -128,6 +136,24 @@ struct xe_pmu {
* @sleep_last: Last time GT parked for RC6 estimation.
*/
ktime_t sleep_last[XE_PMU_MAX_GT];
+ /**
+ * @timer: Timer for internal Xe PMU sampling.
+ */
+ struct hrtimer timer;
+ /**
+ * @timer_last:
+ *
+ * Timestmap of the previous timer invocation.
+ */
+ ktime_t timer_last;
+ /**
+ * @timer_enabled: Should the internal sampling timer be running.
+ */
+ bool timer_enabled;
+ /**
+ * @active_gts: GT active mask.
+ */
+ unsigned int active_gts;
};
#endif
--
2.38.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 3/3] drm/xe/pmu: Add GT frequency events
2024-09-27 0:23 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
@ 2024-09-27 0:23 ` Vinay Belgaumkar
2024-09-30 9:42 ` Riana Tauro
0 siblings, 1 reply; 22+ messages in thread
From: Vinay Belgaumkar @ 2024-09-27 0:23 UTC (permalink / raw)
To: intel-xe; +Cc: Vinay Belgaumkar, Rodrigo Vivi
Define PMU events for GT frequency (actual and requested). This is
a port from the i915 driver implementation.
Following PMU events are being added-
xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
v2: Checkpatch fix, moved timer code to this patch
v3: Fix kunit issue
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
---
drivers/gpu/drm/xe/xe_gt.c | 2 +
drivers/gpu/drm/xe/xe_pmu.c | 218 ++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_pmu.h | 2 +
drivers/gpu/drm/xe/xe_pmu_types.h | 22 +++
include/uapi/drm/xe_drm.h | 5 +
5 files changed, 249 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index 7a190c49c573..796b330ffd62 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -929,6 +929,8 @@ int xe_gt_resume(struct xe_gt *gt)
xe_gt_idle_enable_pg(gt);
+ xe_pmu_resume(gt);
+
XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
xe_gt_dbg(gt, "resumed\n");
diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
index b1b38d245e00..39bae25a92ed 100644
--- a/drivers/gpu/drm/xe/xe_pmu.c
+++ b/drivers/gpu/drm/xe/xe_pmu.c
@@ -63,6 +63,12 @@ static unsigned int other_bit(const u64 config)
case XE_PMU_RC6_RESIDENCY:
val = __XE_PMU_RC6_RESIDENCY_ENABLED;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val = __XE_PMU_ACTUAL_FREQUENCY_ENABLED;
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val = __XE_PMU_REQUESTED_FREQUENCY_ENABLED;
+ break;
default:
/*
* Events that do not require sampling, or tracking state
@@ -79,6 +85,22 @@ static unsigned int config_bit(const u64 config)
return other_bit(config);
}
+static u32 config_mask(const u64 config)
+{
+ unsigned int bit = config_bit(config);
+
+ if (__builtin_constant_p(config))
+ BUILD_BUG_ON(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+ else
+ WARN_ON_ONCE(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+
+ return BIT(config_bit(config));
+}
+
static unsigned int event_bit(struct perf_event *event)
{
return config_bit(event->attr.config);
@@ -107,6 +129,10 @@ config_status(struct xe_device *xe, u64 config)
if (xe->info.skip_guc_pc)
return -ENODEV;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ fallthrough;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ break;
default:
return -ENOENT;
}
@@ -169,6 +195,12 @@ store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
pmu->event_sample[gt_id][sample].cur = val;
}
+static void
+add_sample_mult(struct xe_pmu *pmu, unsigned int gt_id, int sample, u32 val, u32 mul)
+{
+ pmu->event_sample[gt_id][sample].cur += mul_u32_u32(val, mul);
+}
+
static u64 get_rc6(struct xe_gt *gt)
{
struct xe_device *xe = gt_to_xe(gt);
@@ -214,6 +246,7 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
{
struct xe_device *xe =
container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
const unsigned int gt_id = config_gt_id(event->attr.config);
const u64 config = event->attr.config;
struct xe_gt *gt = xe_device_get_gt(xe, gt_id);
@@ -223,6 +256,18 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
case XE_PMU_RC6_RESIDENCY:
val = get_rc6(gt);
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_ACT),
+ USEC_PER_SEC /* to MHz */);
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_REQ),
+ USEC_PER_SEC /* to MHz */);
+ break;
default:
drm_warn(>->tile->xe->drm, "unknown pmu event\n");
}
@@ -252,6 +297,144 @@ static void xe_pmu_event_read(struct perf_event *event)
local64_add(new - prev, &event->count);
}
+static u32 frequency_enabled_mask(void)
+{
+ unsigned int i;
+ u32 mask = 0;
+
+ for (i = 0; i < XE_PMU_MAX_GT; i++)
+ mask |= config_mask(__XE_PMU_ACTUAL_FREQUENCY(i)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(i));
+
+ return mask;
+}
+
+static bool
+frequency_sampling_enabled(struct xe_pmu *pmu, unsigned int gt)
+{
+ return pmu->enable &
+ (config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt)));
+}
+
+static void
+frequency_sample(struct xe_gt *gt, unsigned int period_ns)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ const unsigned int gt_id = gt->info.id;
+ struct xe_pmu *pmu = &xe->pmu;
+ bool device_awake;
+ int ret;
+ u32 cur_freq;
+
+ if (!frequency_sampling_enabled(pmu, gt_id))
+ return;
+
+ /* Report 0/0 (actual/requested) frequency while GT is suspended. */
+ device_awake = xe_pm_runtime_get_if_active(xe);
+ if (!device_awake)
+ return;
+
+ if (pmu->enable & config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt_id))) {
+ u32 val;
+
+ /*
+ * We take a quick peek here without using forcewake
+ * so that we don't perturb the system under observation
+ * (forcewake => !rc6 => increased power use). We expect
+ * that if the read fails because it is outside of the
+ * mmio power well, then it will return 0 -- in which
+ * case we assume the system is running at the intended
+ * frequency. Fortunately, the read should rarely fail!
+ */
+ val = xe_guc_pc_get_act_freq(>->uc.guc.pc);
+
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_ACT,
+ val, period_ns / 1000);
+ }
+
+ if (pmu->enable & config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt_id))) {
+ ret = xe_guc_pc_get_cur_freq(>->uc.guc.pc, &cur_freq);
+ if (!ret)
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_REQ,
+ cur_freq,
+ period_ns / 1000);
+ }
+
+ xe_pm_runtime_put(xe);
+}
+
+static enum hrtimer_restart xe_sample(struct hrtimer *hrtimer)
+{
+ struct xe_pmu *pmu = container_of(hrtimer, struct xe_pmu, timer);
+ struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+ unsigned int period_ns;
+ struct xe_gt *gt;
+ unsigned int i;
+ ktime_t now;
+
+ if (!READ_ONCE(pmu->timer_enabled))
+ return HRTIMER_NORESTART;
+
+ now = ktime_get();
+ period_ns = ktime_to_ns(ktime_sub(now, pmu->timer_last));
+ pmu->timer_last = now;
+
+ /*
+ * Strictly speaking the passed in period may not be 100% accurate for
+ * all internal calculation, since some amount of time can be spent on
+ * grabbing the forcewake. However the potential error from timer call-
+ * back delay greatly dominates this so we keep it simple.
+ */
+
+ for_each_gt(gt, xe, i) {
+ if (!(pmu->active_gts & BIT(i)))
+ continue;
+ frequency_sample(gt, period_ns);
+ }
+
+ hrtimer_forward(hrtimer, now, ns_to_ktime(period));
+
+ return HRTIMER_RESTART;
+}
+
+static bool pmu_needs_timer(struct xe_pmu *pmu)
+{
+ u32 enable;
+
+ /*
+ * Only some counters need the sampling timer.
+ *
+ * We start with a bitmask of all currently enabled events.
+ */
+ enable = pmu->enable;
+
+ /*
+ * Mask out all the ones which do not need the timer, or in
+ * other words keep all the ones that could need the timer.
+ */
+ enable &= frequency_enabled_mask();
+
+ /*
+ * If some bits remain it means we need the sampling timer running.
+ */
+ return enable;
+}
+
+static void __xe_pmu_maybe_start_timer(struct xe_pmu *pmu)
+{
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+
+ if (!pmu->timer_enabled && pmu_needs_timer(pmu)) {
+ pmu->timer_enabled = true;
+ pmu->timer_last = ktime_get();
+ hrtimer_start_range_ns(&pmu->timer,
+ ns_to_ktime(period), 0,
+ HRTIMER_MODE_REL_PINNED);
+ }
+}
+
static void xe_pmu_enable(struct perf_event *event)
{
struct xe_pmu *pmu = event_to_pmu(event);
@@ -263,6 +446,11 @@ static void xe_pmu_enable(struct perf_event *event)
spin_lock_irqsave(&pmu->lock, flags);
+ /*
+ * Start the sampling timer if needed and not already enabled.
+ */
+ __xe_pmu_maybe_start_timer(pmu);
+
/*
* Update the bitmask of enabled events and increment
* the event reference counter.
@@ -403,6 +591,8 @@ create_event_attributes(struct xe_pmu *pmu)
const char *unit;
} events[] = {
__event(0, "rc6-residency", "ms"),
+ __event(1, "actual-frequency", "M"),
+ __event(2, "requested-frequency", "M"),
};
struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
@@ -617,6 +807,30 @@ void xe_pmu_suspend(struct xe_gt *gt)
spin_unlock_irq(&pmu->lock);
}
+/**
+ * xe_pmu_resume() - Restart the timer if needed
+ */
+void xe_pmu_resume(struct xe_gt *gt)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ if (!pmu->base.event_init)
+ return;
+
+ spin_lock_irq(&pmu->lock);
+
+ /*
+ * Re-enable sampling timer when GPU goes active.
+ */
+ if (pmu->active_gts == 0)
+ __xe_pmu_maybe_start_timer(pmu);
+
+ pmu->active_gts |= BIT(gt->info.id);
+
+ spin_unlock_irq(&pmu->lock);
+}
+
/**
* xe_pmu_unregister() - Remove/cleanup PMU registration
*/
@@ -635,6 +849,8 @@ void xe_pmu_unregister(void *arg)
pmu->closed = true;
synchronize_rcu();
+ hrtimer_cancel(&pmu->timer);
+
xe_pmu_unregister_cpuhp_state(pmu);
perf_pmu_unregister(&pmu->base);
@@ -678,6 +894,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
int ret = -ENOMEM;
spin_lock_init(&pmu->lock);
+ hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ pmu->timer.function = xe_sample;
pmu->cpuhp.cpu = -1;
pmu->name = kasprintf(GFP_KERNEL,
diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
index 17f5a8d7d45c..fb6e3819d7bc 100644
--- a/drivers/gpu/drm/xe/xe_pmu.h
+++ b/drivers/gpu/drm/xe/xe_pmu.h
@@ -16,12 +16,14 @@ void xe_pmu_exit(void);
void xe_pmu_register(struct xe_pmu *pmu);
void xe_pmu_unregister(void *arg);
void xe_pmu_suspend(struct xe_gt *gt);
+void xe_pmu_resume(struct xe_gt *gt);
#else
static inline int xe_pmu_init(void) { return 0; }
static inline void xe_pmu_exit(void) {}
static inline void xe_pmu_register(struct xe_pmu *pmu) {}
static inline void xe_pmu_unregister(void *arg) {}
static inline void xe_pmu_suspend(struct xe_gt *gt) {}
+static inline void xe_pmu_resume(struct xe_gt *gt) {}
#endif
#endif
diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
index 1213d2a73492..f4cf85d72aac 100644
--- a/drivers/gpu/drm/xe/xe_pmu_types.h
+++ b/drivers/gpu/drm/xe/xe_pmu_types.h
@@ -13,6 +13,8 @@
enum {
__XE_SAMPLE_RC6,
__XE_SAMPLE_RC6_LAST_REPORTED,
+ __XE_SAMPLE_FREQ_ACT,
+ __XE_SAMPLE_FREQ_REQ,
__XE_NUM_PMU_SAMPLERS
};
@@ -23,6 +25,8 @@ enum {
* current state.
*/
enum xe_pmu_tracked_events {
+ __XE_PMU_ACTUAL_FREQUENCY_ENABLED,
+ __XE_PMU_REQUESTED_FREQUENCY_ENABLED,
__XE_PMU_RC6_RESIDENCY_ENABLED,
__XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
};
@@ -116,6 +120,24 @@ struct xe_pmu {
* @sleep_last: Last time GT parked for RC6 estimation.
*/
ktime_t sleep_last[XE_PMU_MAX_GT];
+ /**
+ * @timer: Timer for internal Xe PMU sampling.
+ */
+ struct hrtimer timer;
+ /**
+ * @timer_last:
+ *
+ * Timestmap of the previous timer invocation.
+ */
+ ktime_t timer_last;
+ /**
+ * @timer_enabled: Should the internal sampling timer be running.
+ */
+ bool timer_enabled;
+ /**
+ * @active_gts: GT active mask.
+ */
+ unsigned int active_gts;
};
#endif
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index 3ef3926551dd..1f0ddbd77838 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -1399,7 +1399,12 @@ struct drm_xe_wait_user_fence {
#define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
#define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
+#define XE_PMU_ACTUAL_FREQUENCY __XE_PMU_OTHER(1)
+#define XE_PMU_REQUESTED_FREQUENCY __XE_PMU_OTHER(2)
+
#define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
+#define __XE_PMU_ACTUAL_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 1)
+#define __XE_PMU_REQUESTED_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 2)
/**
* enum drm_xe_observation_type - Observation stream types
--
2.38.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* Re: [PATCH 3/3] drm/xe/pmu: Add GT frequency events
2024-09-27 0:23 ` [PATCH 3/3] drm/xe/pmu: Add GT frequency events Vinay Belgaumkar
@ 2024-09-30 9:42 ` Riana Tauro
0 siblings, 0 replies; 22+ messages in thread
From: Riana Tauro @ 2024-09-30 9:42 UTC (permalink / raw)
To: Vinay Belgaumkar, intel-xe; +Cc: Rodrigo Vivi
Hi Vinay
On 9/27/2024 5:53 AM, Vinay Belgaumkar wrote:
> Define PMU events for GT frequency (actual and requested). This is
> a port from the i915 driver implementation.
>
> Following PMU events are being added-
>
> xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
> xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
> xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
> xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
>
> v2: Checkpatch fix, moved timer code to this patch
> v3: Fix kunit issue
>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
> ---
> drivers/gpu/drm/xe/xe_gt.c | 2 +
> drivers/gpu/drm/xe/xe_pmu.c | 218 ++++++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_pmu.h | 2 +
> drivers/gpu/drm/xe/xe_pmu_types.h | 22 +++
> include/uapi/drm/xe_drm.h | 5 +
> 5 files changed, 249 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> index 7a190c49c573..796b330ffd62 100644
> --- a/drivers/gpu/drm/xe/xe_gt.c
> +++ b/drivers/gpu/drm/xe/xe_gt.c
> @@ -929,6 +929,8 @@ int xe_gt_resume(struct xe_gt *gt)
>
> xe_gt_idle_enable_pg(gt);
>
> + xe_pmu_resume(gt);
> +
> XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
> xe_gt_dbg(gt, "resumed\n");
>
> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
> index b1b38d245e00..39bae25a92ed 100644
> --- a/drivers/gpu/drm/xe/xe_pmu.c
> +++ b/drivers/gpu/drm/xe/xe_pmu.c
> @@ -63,6 +63,12 @@ static unsigned int other_bit(const u64 config)
> case XE_PMU_RC6_RESIDENCY:
> val = __XE_PMU_RC6_RESIDENCY_ENABLED;
> break;
> + case XE_PMU_ACTUAL_FREQUENCY:
> + val = __XE_PMU_ACTUAL_FREQUENCY_ENABLED;
> + break;
> + case XE_PMU_REQUESTED_FREQUENCY:
> + val = __XE_PMU_REQUESTED_FREQUENCY_ENABLED;
> + break;
> default:
> /*
> * Events that do not require sampling, or tracking state
> @@ -79,6 +85,22 @@ static unsigned int config_bit(const u64 config)
> return other_bit(config);
> }
>
> +static u32 config_mask(const u64 config)
> +{
> + unsigned int bit = config_bit(config);
> +
> + if (__builtin_constant_p(config))
> + BUILD_BUG_ON(bit >
> + BITS_PER_TYPE(typeof_member(struct xe_pmu,
> + enable)) - 1);
> + else
> + WARN_ON_ONCE(bit >
> + BITS_PER_TYPE(typeof_member(struct xe_pmu,
> + enable)) - 1);
> +
> + return BIT(config_bit(config));
> +}
> +
> static unsigned int event_bit(struct perf_event *event)
> {
> return config_bit(event->attr.config);
> @@ -107,6 +129,10 @@ config_status(struct xe_device *xe, u64 config)
> if (xe->info.skip_guc_pc)
> return -ENODEV;
> break;
> + case XE_PMU_ACTUAL_FREQUENCY:
> + fallthrough;
> + case XE_PMU_REQUESTED_FREQUENCY:
> + break;
> default:
> return -ENOENT;
> }
> @@ -169,6 +195,12 @@ store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
> pmu->event_sample[gt_id][sample].cur = val;
> }
>
> +static void
> +add_sample_mult(struct xe_pmu *pmu, unsigned int gt_id, int sample, u32 val, u32 mul)
> +{
> + pmu->event_sample[gt_id][sample].cur += mul_u32_u32(val, mul);
> +}
> +
> static u64 get_rc6(struct xe_gt *gt)
> {
> struct xe_device *xe = gt_to_xe(gt);
> @@ -214,6 +246,7 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
> {
> struct xe_device *xe =
> container_of(event->pmu, typeof(*xe), pmu.base);
> + struct xe_pmu *pmu = &xe->pmu;
> const unsigned int gt_id = config_gt_id(event->attr.config);
> const u64 config = event->attr.config;
> struct xe_gt *gt = xe_device_get_gt(xe, gt_id);
> @@ -223,6 +256,18 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
> case XE_PMU_RC6_RESIDENCY:
> val = get_rc6(gt);
> break;
> + case XE_PMU_ACTUAL_FREQUENCY:
> + val =
> + div_u64(read_sample(pmu, gt_id,
> + __XE_SAMPLE_FREQ_ACT),
> + USEC_PER_SEC /* to MHz */);
> + break;
> + case XE_PMU_REQUESTED_FREQUENCY:
> + val =
> + div_u64(read_sample(pmu, gt_id,
> + __XE_SAMPLE_FREQ_REQ),
> + USEC_PER_SEC /* to MHz */);
> + break;
> default:
> drm_warn(>->tile->xe->drm, "unknown pmu event\n");
> }
> @@ -252,6 +297,144 @@ static void xe_pmu_event_read(struct perf_event *event)
> local64_add(new - prev, &event->count);
> }
>
> +static u32 frequency_enabled_mask(void)
> +{
> + unsigned int i;
> + u32 mask = 0;
> +
> + for (i = 0; i < XE_PMU_MAX_GT; i++)
> + mask |= config_mask(__XE_PMU_ACTUAL_FREQUENCY(i)) |
> + config_mask(__XE_PMU_REQUESTED_FREQUENCY(i));
> +
> + return mask;
> +}
> +
> +static bool
> +frequency_sampling_enabled(struct xe_pmu *pmu, unsigned int gt)
> +{
> + return pmu->enable &
> + (config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt)) |
> + config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt)));
> +}
> +
> +static void
> +frequency_sample(struct xe_gt *gt, unsigned int period_ns)
> +{
> + struct xe_device *xe = gt_to_xe(gt);
> + const unsigned int gt_id = gt->info.id;
> + struct xe_pmu *pmu = &xe->pmu;
> + bool device_awake;
> + int ret;
> + u32 cur_freq;
> +
> + if (!frequency_sampling_enabled(pmu, gt_id))
> + return;
> +
> + /* Report 0/0 (actual/requested) frequency while GT is suspended. */
> + device_awake = xe_pm_runtime_get_if_active(xe);
> + if (!device_awake)
> + return;
> +
> + if (pmu->enable & config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt_id))) {
> + u32 val;
> +
> + /*
> + * We take a quick peek here without using forcewake
> + * so that we don't perturb the system under observation
> + * (forcewake => !rc6 => increased power use). We expect
> + * that if the read fails because it is outside of the
> + * mmio power well, then it will return 0 -- in which
> + * case we assume the system is running at the intended
> + * frequency. Fortunately, the read should rarely fail!
> + */
> + val = xe_guc_pc_get_act_freq(>->uc.guc.pc);
> +
> + add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_ACT,
> + val, period_ns / 1000);
> + }
> +
> + if (pmu->enable & config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt_id))) {
> + ret = xe_guc_pc_get_cur_freq(>->uc.guc.pc, &cur_freq);
> + if (!ret)
> + add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_REQ,
> + cur_freq,
> + period_ns / 1000);
> + }
> +
> + xe_pm_runtime_put(xe);
> +}
> +
> +static enum hrtimer_restart xe_sample(struct hrtimer *hrtimer)
> +{
> + struct xe_pmu *pmu = container_of(hrtimer, struct xe_pmu, timer);
> + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
> + u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
> + unsigned int period_ns;
> + struct xe_gt *gt;
> + unsigned int i;
> + ktime_t now;
> +
> + if (!READ_ONCE(pmu->timer_enabled))
> + return HRTIMER_NORESTART;
> +
> + now = ktime_get();
> + period_ns = ktime_to_ns(ktime_sub(now, pmu->timer_last));
> + pmu->timer_last = now;
> +
> + /*
> + * Strictly speaking the passed in period may not be 100% accurate for
> + * all internal calculation, since some amount of time can be spent on
> + * grabbing the forcewake. However the potential error from timer call-
> + * back delay greatly dominates this so we keep it simple.
> + */
> +
> + for_each_gt(gt, xe, i) {
> + if (!(pmu->active_gts & BIT(i)))
> + continue;
> + frequency_sample(gt, period_ns);
> + }
> +
> + hrtimer_forward(hrtimer, now, ns_to_ktime(period));
> +
> + return HRTIMER_RESTART;
> +}
> +
> +static bool pmu_needs_timer(struct xe_pmu *pmu)
> +{
> + u32 enable;
> +
> + /*
> + * Only some counters need the sampling timer.
> + *
> + * We start with a bitmask of all currently enabled events.
> + */
> + enable = pmu->enable;
> +
> + /*
> + * Mask out all the ones which do not need the timer, or in
> + * other words keep all the ones that could need the timer.
> + */
> + enable &= frequency_enabled_mask();
> +
> + /*
> + * If some bits remain it means we need the sampling timer running.
> + */
> + return enable;
> +}
> +
> +static void __xe_pmu_maybe_start_timer(struct xe_pmu *pmu)
> +{
> + u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
> +
> + if (!pmu->timer_enabled && pmu_needs_timer(pmu)) {
> + pmu->timer_enabled = true;
> + pmu->timer_last = ktime_get();
> + hrtimer_start_range_ns(&pmu->timer,
> + ns_to_ktime(period), 0,
> + HRTIMER_MODE_REL_PINNED);
> + }
> +}
> +
> static void xe_pmu_enable(struct perf_event *event)
> {
> struct xe_pmu *pmu = event_to_pmu(event);
> @@ -263,6 +446,11 @@ static void xe_pmu_enable(struct perf_event *event)
>
> spin_lock_irqsave(&pmu->lock, flags);
>
> + /*
> + * Start the sampling timer if needed and not already enabled.
> + */
> + __xe_pmu_maybe_start_timer(pmu);
> +
> /*
> * Update the bitmask of enabled events and increment
> * the event reference counter.
> @@ -403,6 +591,8 @@ create_event_attributes(struct xe_pmu *pmu)
> const char *unit;
> } events[] = {
> __event(0, "rc6-residency", "ms"),
> + __event(1, "actual-frequency", "M"),
> + __event(2, "requested-frequency", "M"),
> };
>
> struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
> @@ -617,6 +807,30 @@ void xe_pmu_suspend(struct xe_gt *gt)
> spin_unlock_irq(&pmu->lock);
> }
>
> +/**
> + * xe_pmu_resume() - Restart the timer if needed
> + */missing kernel-doc format
Thanks,
Riana
> +void xe_pmu_resume(struct xe_gt *gt)
> +{
> + struct xe_device *xe = gt_to_xe(gt);
> + struct xe_pmu *pmu = &xe->pmu;
> +
> + if (!pmu->base.event_init)
> + return;
> +
> + spin_lock_irq(&pmu->lock);
> +
> + /*
> + * Re-enable sampling timer when GPU goes active.
> + */
> + if (pmu->active_gts == 0)
> + __xe_pmu_maybe_start_timer(pmu);
> +
> + pmu->active_gts |= BIT(gt->info.id);
> +
> + spin_unlock_irq(&pmu->lock);
> +}
> +
> /**
> * xe_pmu_unregister() - Remove/cleanup PMU registration
> */
> @@ -635,6 +849,8 @@ void xe_pmu_unregister(void *arg)
> pmu->closed = true;
> synchronize_rcu();
>
> + hrtimer_cancel(&pmu->timer);
> +
> xe_pmu_unregister_cpuhp_state(pmu);
>
> perf_pmu_unregister(&pmu->base);
> @@ -678,6 +894,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
> int ret = -ENOMEM;
>
> spin_lock_init(&pmu->lock);
> + hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
> + pmu->timer.function = xe_sample;
> pmu->cpuhp.cpu = -1;
>
> pmu->name = kasprintf(GFP_KERNEL,
> diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
> index 17f5a8d7d45c..fb6e3819d7bc 100644
> --- a/drivers/gpu/drm/xe/xe_pmu.h
> +++ b/drivers/gpu/drm/xe/xe_pmu.h
> @@ -16,12 +16,14 @@ void xe_pmu_exit(void);
> void xe_pmu_register(struct xe_pmu *pmu);
> void xe_pmu_unregister(void *arg);
> void xe_pmu_suspend(struct xe_gt *gt);
> +void xe_pmu_resume(struct xe_gt *gt);
> #else
> static inline int xe_pmu_init(void) { return 0; }
> static inline void xe_pmu_exit(void) {}
> static inline void xe_pmu_register(struct xe_pmu *pmu) {}
> static inline void xe_pmu_unregister(void *arg) {}
> static inline void xe_pmu_suspend(struct xe_gt *gt) {}
> +static inline void xe_pmu_resume(struct xe_gt *gt) {}
> #endif
>
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
> index 1213d2a73492..f4cf85d72aac 100644
> --- a/drivers/gpu/drm/xe/xe_pmu_types.h
> +++ b/drivers/gpu/drm/xe/xe_pmu_types.h
> @@ -13,6 +13,8 @@
> enum {
> __XE_SAMPLE_RC6,
> __XE_SAMPLE_RC6_LAST_REPORTED,
> + __XE_SAMPLE_FREQ_ACT,
> + __XE_SAMPLE_FREQ_REQ,
> __XE_NUM_PMU_SAMPLERS
> };
>
> @@ -23,6 +25,8 @@ enum {
> * current state.
> */
> enum xe_pmu_tracked_events {
> + __XE_PMU_ACTUAL_FREQUENCY_ENABLED,
> + __XE_PMU_REQUESTED_FREQUENCY_ENABLED,
> __XE_PMU_RC6_RESIDENCY_ENABLED,
> __XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
> };
> @@ -116,6 +120,24 @@ struct xe_pmu {
> * @sleep_last: Last time GT parked for RC6 estimation.
> */
> ktime_t sleep_last[XE_PMU_MAX_GT];
> + /**
> + * @timer: Timer for internal Xe PMU sampling.
> + */
> + struct hrtimer timer;
> + /**
> + * @timer_last:
> + *
> + * Timestmap of the previous timer invocation.
> + */
> + ktime_t timer_last;
> + /**
> + * @timer_enabled: Should the internal sampling timer be running.
> + */
> + bool timer_enabled;
> + /**
> + * @active_gts: GT active mask.
> + */
> + unsigned int active_gts;
> };
>
> #endif
> diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
> index 3ef3926551dd..1f0ddbd77838 100644
> --- a/include/uapi/drm/xe_drm.h
> +++ b/include/uapi/drm/xe_drm.h
> @@ -1399,7 +1399,12 @@ struct drm_xe_wait_user_fence {
> #define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
>
> #define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
> +#define XE_PMU_ACTUAL_FREQUENCY __XE_PMU_OTHER(1)
> +#define XE_PMU_REQUESTED_FREQUENCY __XE_PMU_OTHER(2)
> +
> #define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
> +#define __XE_PMU_ACTUAL_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 1)
> +#define __XE_PMU_REQUESTED_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 2)
>
> /**
> * enum drm_xe_observation_type - Observation stream types
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 3/3] drm/xe/pmu: Add GT frequency events
2024-09-25 23:21 [PATCH 0/3] drm/xe/pmu: PMU interface for Xe Vinay Belgaumkar
@ 2024-09-25 23:21 ` Vinay Belgaumkar
0 siblings, 0 replies; 22+ messages in thread
From: Vinay Belgaumkar @ 2024-09-25 23:21 UTC (permalink / raw)
To: intel-xe; +Cc: Vinay Belgaumkar, Rodrigo Vivi
Define PMU events for GT frequency (actual and requested). This is
a port from the i915 driver implementation.
Following PMU events are being added-
xe_0000_00_02.0/actual-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/actual-frequency-gt1/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt0/ [Kernel PMU event]
xe_0000_00_02.0/requested-frequency-gt1/ [Kernel PMU event]
v2: Checkpatch fix, moved timer code to this patch
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
---
drivers/gpu/drm/xe/xe_gt.c | 2 +
drivers/gpu/drm/xe/xe_pmu.c | 218 ++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_pmu.h | 2 +
drivers/gpu/drm/xe/xe_pmu_types.h | 22 +++
include/uapi/drm/xe_drm.h | 5 +
5 files changed, 249 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index 7a190c49c573..796b330ffd62 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -929,6 +929,8 @@ int xe_gt_resume(struct xe_gt *gt)
xe_gt_idle_enable_pg(gt);
+ xe_pmu_resume(gt);
+
XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
xe_gt_dbg(gt, "resumed\n");
diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c
index b1b38d245e00..39bae25a92ed 100644
--- a/drivers/gpu/drm/xe/xe_pmu.c
+++ b/drivers/gpu/drm/xe/xe_pmu.c
@@ -63,6 +63,12 @@ static unsigned int other_bit(const u64 config)
case XE_PMU_RC6_RESIDENCY:
val = __XE_PMU_RC6_RESIDENCY_ENABLED;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val = __XE_PMU_ACTUAL_FREQUENCY_ENABLED;
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val = __XE_PMU_REQUESTED_FREQUENCY_ENABLED;
+ break;
default:
/*
* Events that do not require sampling, or tracking state
@@ -79,6 +85,22 @@ static unsigned int config_bit(const u64 config)
return other_bit(config);
}
+static u32 config_mask(const u64 config)
+{
+ unsigned int bit = config_bit(config);
+
+ if (__builtin_constant_p(config))
+ BUILD_BUG_ON(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+ else
+ WARN_ON_ONCE(bit >
+ BITS_PER_TYPE(typeof_member(struct xe_pmu,
+ enable)) - 1);
+
+ return BIT(config_bit(config));
+}
+
static unsigned int event_bit(struct perf_event *event)
{
return config_bit(event->attr.config);
@@ -107,6 +129,10 @@ config_status(struct xe_device *xe, u64 config)
if (xe->info.skip_guc_pc)
return -ENODEV;
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ fallthrough;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ break;
default:
return -ENOENT;
}
@@ -169,6 +195,12 @@ store_sample(struct xe_pmu *pmu, unsigned int gt_id, int sample, u64 val)
pmu->event_sample[gt_id][sample].cur = val;
}
+static void
+add_sample_mult(struct xe_pmu *pmu, unsigned int gt_id, int sample, u32 val, u32 mul)
+{
+ pmu->event_sample[gt_id][sample].cur += mul_u32_u32(val, mul);
+}
+
static u64 get_rc6(struct xe_gt *gt)
{
struct xe_device *xe = gt_to_xe(gt);
@@ -214,6 +246,7 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
{
struct xe_device *xe =
container_of(event->pmu, typeof(*xe), pmu.base);
+ struct xe_pmu *pmu = &xe->pmu;
const unsigned int gt_id = config_gt_id(event->attr.config);
const u64 config = event->attr.config;
struct xe_gt *gt = xe_device_get_gt(xe, gt_id);
@@ -223,6 +256,18 @@ static u64 __xe_pmu_event_read(struct perf_event *event)
case XE_PMU_RC6_RESIDENCY:
val = get_rc6(gt);
break;
+ case XE_PMU_ACTUAL_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_ACT),
+ USEC_PER_SEC /* to MHz */);
+ break;
+ case XE_PMU_REQUESTED_FREQUENCY:
+ val =
+ div_u64(read_sample(pmu, gt_id,
+ __XE_SAMPLE_FREQ_REQ),
+ USEC_PER_SEC /* to MHz */);
+ break;
default:
drm_warn(>->tile->xe->drm, "unknown pmu event\n");
}
@@ -252,6 +297,144 @@ static void xe_pmu_event_read(struct perf_event *event)
local64_add(new - prev, &event->count);
}
+static u32 frequency_enabled_mask(void)
+{
+ unsigned int i;
+ u32 mask = 0;
+
+ for (i = 0; i < XE_PMU_MAX_GT; i++)
+ mask |= config_mask(__XE_PMU_ACTUAL_FREQUENCY(i)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(i));
+
+ return mask;
+}
+
+static bool
+frequency_sampling_enabled(struct xe_pmu *pmu, unsigned int gt)
+{
+ return pmu->enable &
+ (config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt)) |
+ config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt)));
+}
+
+static void
+frequency_sample(struct xe_gt *gt, unsigned int period_ns)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ const unsigned int gt_id = gt->info.id;
+ struct xe_pmu *pmu = &xe->pmu;
+ bool device_awake;
+ int ret;
+ u32 cur_freq;
+
+ if (!frequency_sampling_enabled(pmu, gt_id))
+ return;
+
+ /* Report 0/0 (actual/requested) frequency while GT is suspended. */
+ device_awake = xe_pm_runtime_get_if_active(xe);
+ if (!device_awake)
+ return;
+
+ if (pmu->enable & config_mask(__XE_PMU_ACTUAL_FREQUENCY(gt_id))) {
+ u32 val;
+
+ /*
+ * We take a quick peek here without using forcewake
+ * so that we don't perturb the system under observation
+ * (forcewake => !rc6 => increased power use). We expect
+ * that if the read fails because it is outside of the
+ * mmio power well, then it will return 0 -- in which
+ * case we assume the system is running at the intended
+ * frequency. Fortunately, the read should rarely fail!
+ */
+ val = xe_guc_pc_get_act_freq(>->uc.guc.pc);
+
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_ACT,
+ val, period_ns / 1000);
+ }
+
+ if (pmu->enable & config_mask(__XE_PMU_REQUESTED_FREQUENCY(gt_id))) {
+ ret = xe_guc_pc_get_cur_freq(>->uc.guc.pc, &cur_freq);
+ if (!ret)
+ add_sample_mult(pmu, gt_id, __XE_SAMPLE_FREQ_REQ,
+ cur_freq,
+ period_ns / 1000);
+ }
+
+ xe_pm_runtime_put(xe);
+}
+
+static enum hrtimer_restart xe_sample(struct hrtimer *hrtimer)
+{
+ struct xe_pmu *pmu = container_of(hrtimer, struct xe_pmu, timer);
+ struct xe_device *xe = container_of(pmu, typeof(*xe), pmu);
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+ unsigned int period_ns;
+ struct xe_gt *gt;
+ unsigned int i;
+ ktime_t now;
+
+ if (!READ_ONCE(pmu->timer_enabled))
+ return HRTIMER_NORESTART;
+
+ now = ktime_get();
+ period_ns = ktime_to_ns(ktime_sub(now, pmu->timer_last));
+ pmu->timer_last = now;
+
+ /*
+ * Strictly speaking the passed in period may not be 100% accurate for
+ * all internal calculation, since some amount of time can be spent on
+ * grabbing the forcewake. However the potential error from timer call-
+ * back delay greatly dominates this so we keep it simple.
+ */
+
+ for_each_gt(gt, xe, i) {
+ if (!(pmu->active_gts & BIT(i)))
+ continue;
+ frequency_sample(gt, period_ns);
+ }
+
+ hrtimer_forward(hrtimer, now, ns_to_ktime(period));
+
+ return HRTIMER_RESTART;
+}
+
+static bool pmu_needs_timer(struct xe_pmu *pmu)
+{
+ u32 enable;
+
+ /*
+ * Only some counters need the sampling timer.
+ *
+ * We start with a bitmask of all currently enabled events.
+ */
+ enable = pmu->enable;
+
+ /*
+ * Mask out all the ones which do not need the timer, or in
+ * other words keep all the ones that could need the timer.
+ */
+ enable &= frequency_enabled_mask();
+
+ /*
+ * If some bits remain it means we need the sampling timer running.
+ */
+ return enable;
+}
+
+static void __xe_pmu_maybe_start_timer(struct xe_pmu *pmu)
+{
+ u64 period = max_t(u64, 10000, NSEC_PER_SEC / FREQUENCY);
+
+ if (!pmu->timer_enabled && pmu_needs_timer(pmu)) {
+ pmu->timer_enabled = true;
+ pmu->timer_last = ktime_get();
+ hrtimer_start_range_ns(&pmu->timer,
+ ns_to_ktime(period), 0,
+ HRTIMER_MODE_REL_PINNED);
+ }
+}
+
static void xe_pmu_enable(struct perf_event *event)
{
struct xe_pmu *pmu = event_to_pmu(event);
@@ -263,6 +446,11 @@ static void xe_pmu_enable(struct perf_event *event)
spin_lock_irqsave(&pmu->lock, flags);
+ /*
+ * Start the sampling timer if needed and not already enabled.
+ */
+ __xe_pmu_maybe_start_timer(pmu);
+
/*
* Update the bitmask of enabled events and increment
* the event reference counter.
@@ -403,6 +591,8 @@ create_event_attributes(struct xe_pmu *pmu)
const char *unit;
} events[] = {
__event(0, "rc6-residency", "ms"),
+ __event(1, "actual-frequency", "M"),
+ __event(2, "requested-frequency", "M"),
};
struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter;
@@ -617,6 +807,30 @@ void xe_pmu_suspend(struct xe_gt *gt)
spin_unlock_irq(&pmu->lock);
}
+/**
+ * xe_pmu_resume() - Restart the timer if needed
+ */
+void xe_pmu_resume(struct xe_gt *gt)
+{
+ struct xe_device *xe = gt_to_xe(gt);
+ struct xe_pmu *pmu = &xe->pmu;
+
+ if (!pmu->base.event_init)
+ return;
+
+ spin_lock_irq(&pmu->lock);
+
+ /*
+ * Re-enable sampling timer when GPU goes active.
+ */
+ if (pmu->active_gts == 0)
+ __xe_pmu_maybe_start_timer(pmu);
+
+ pmu->active_gts |= BIT(gt->info.id);
+
+ spin_unlock_irq(&pmu->lock);
+}
+
/**
* xe_pmu_unregister() - Remove/cleanup PMU registration
*/
@@ -635,6 +849,8 @@ void xe_pmu_unregister(void *arg)
pmu->closed = true;
synchronize_rcu();
+ hrtimer_cancel(&pmu->timer);
+
xe_pmu_unregister_cpuhp_state(pmu);
perf_pmu_unregister(&pmu->base);
@@ -678,6 +894,8 @@ void xe_pmu_register(struct xe_pmu *pmu)
int ret = -ENOMEM;
spin_lock_init(&pmu->lock);
+ hrtimer_init(&pmu->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ pmu->timer.function = xe_sample;
pmu->cpuhp.cpu = -1;
pmu->name = kasprintf(GFP_KERNEL,
diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h
index 733f2c33039c..47d7f0a8e4bb 100644
--- a/drivers/gpu/drm/xe/xe_pmu.h
+++ b/drivers/gpu/drm/xe/xe_pmu.h
@@ -16,12 +16,14 @@ void xe_pmu_exit(void);
void xe_pmu_register(struct xe_pmu *pmu);
void xe_pmu_unregister(void *arg);
void xe_pmu_suspend(struct xe_gt *gt);
+void xe_pmu_resume(struct xe_gt *gt);
#else
static inline int xe_pmu_init(void) { return 0; }
static inline void xe_pmu_exit(void) {}
static inline void xe_pmu_register(struct xe_pmu *pmu) {}
static void xe_pmu_unregister(void *arg) {}
void xe_pmu_suspend(struct xe_gt *gt) {}
+void xe_pmu_resume(struct xe_gt *gt) {}
#endif
#endif
diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h
index 1213d2a73492..f4cf85d72aac 100644
--- a/drivers/gpu/drm/xe/xe_pmu_types.h
+++ b/drivers/gpu/drm/xe/xe_pmu_types.h
@@ -13,6 +13,8 @@
enum {
__XE_SAMPLE_RC6,
__XE_SAMPLE_RC6_LAST_REPORTED,
+ __XE_SAMPLE_FREQ_ACT,
+ __XE_SAMPLE_FREQ_REQ,
__XE_NUM_PMU_SAMPLERS
};
@@ -23,6 +25,8 @@ enum {
* current state.
*/
enum xe_pmu_tracked_events {
+ __XE_PMU_ACTUAL_FREQUENCY_ENABLED,
+ __XE_PMU_REQUESTED_FREQUENCY_ENABLED,
__XE_PMU_RC6_RESIDENCY_ENABLED,
__XE_PMU_TRACKED_EVENT_COUNT, /* count marker */
};
@@ -116,6 +120,24 @@ struct xe_pmu {
* @sleep_last: Last time GT parked for RC6 estimation.
*/
ktime_t sleep_last[XE_PMU_MAX_GT];
+ /**
+ * @timer: Timer for internal Xe PMU sampling.
+ */
+ struct hrtimer timer;
+ /**
+ * @timer_last:
+ *
+ * Timestmap of the previous timer invocation.
+ */
+ ktime_t timer_last;
+ /**
+ * @timer_enabled: Should the internal sampling timer be running.
+ */
+ bool timer_enabled;
+ /**
+ * @active_gts: GT active mask.
+ */
+ unsigned int active_gts;
};
#endif
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index 3ef3926551dd..1f0ddbd77838 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -1399,7 +1399,12 @@ struct drm_xe_wait_user_fence {
#define __XE_PMU_OTHER(x) ___XE_PMU_OTHER(0, x)
#define XE_PMU_RC6_RESIDENCY __XE_PMU_OTHER(0)
+#define XE_PMU_ACTUAL_FREQUENCY __XE_PMU_OTHER(1)
+#define XE_PMU_REQUESTED_FREQUENCY __XE_PMU_OTHER(2)
+
#define __XE_PMU_RC6_RESIDENCY(gt) ___XE_PMU_OTHER(gt, 0)
+#define __XE_PMU_ACTUAL_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 1)
+#define __XE_PMU_REQUESTED_FREQUENCY(gt) ___XE_PMU_OTHER(gt, 2)
/**
* enum drm_xe_observation_type - Observation stream types
--
2.38.1
^ permalink raw reply related [flat|nested] 22+ messages in thread