* [PATCH v6 00/25] Fix xe_force_wake_get() failure handling
@ 2024-09-30 5:31 Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 01/25] drm/xe: Add member initialized_domains to xe_force_wake() Himal Prasad Ghimiray
` (35 more replies)
0 siblings, 36 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Michal Wajdeczko, Badal Nilawar,
Rodrigo Vivi, Lucas De Marchi, Nirmoy Das, Matthew Brost,
Daniele Ceraolo Spurio, Ashutosh Dixit
In case of xe_force_wake_get() call the refcount for domains
are incremented irrespective of failure or success, which can lead to
undefined behaviour:
[1] subsequent forcewake call by callee function assumes domains are
already awake, which might not be true. This shows perfectly balanced
xe_force_wake_get/_put can also cause problem.
[2] The functions are using xe_force_wake_get() and return on failures.
In this scenario only the first caller returns and other functions will
always assume domains to be awake.
[1] func_a() {
XE_WARN(xe_force_wake_get()) <---> fails but increments refcount
func_b();
XE_WARN(xe_force_wake_put());<---> decrements refcounts
}
func_b() {
if(xe_force_wake_get()) <---> succeeds due to refcount of caller
return;
does mmio_operations(); <---> Domain might not be awake
xe_force_wake_put(); <---> decrement refcount
}
[2] func_a() {
int err = xe_force_wake_get(); <---> returns if fails, inc refcount
if (err)
return;
mmio_operations();
xe_force_wake_put();
}
func_b() {
if (xe_force_wake_get()) <---> succeeds due to refcnt of func_a()
return;
mmio_operations(); <---> Invalid accesses
xe_force_wake_put(); <---> decrements refcount for func_b
}
This series ensures refcount is not incremented in case of
xe_force_wake_get() failure and return mask of successfully refcount
incremented domains.
For single domains (except XE_FORCEWAKE_ALL), the return value will be
0 on failure and doesn't need call to xe_force_wake_put()(if called,
call will return with check since input mask will be 0).
For XE_FORCEWAKE_ALL caller need to compare the returned mask with
XE_FORCEWAKE_ALL to confirm the success of call and need to explicitly
call xe_force_wake_put() with returned mask to put awaken domains to
sleep.
-v2 (Rodrigo, Badal)
- Dont put successfully awaken domains to sleep. Instead rely on _put to
do that.
- Modified xe_force_wake_get() to return the refcount-incremented domain
mask and xe_force_wake_put() uses this returned mask.
-v3 (Michal, Badal)
- Use explicit type for domain masks.
- Dont use xe_assert in _get/_put error reporting.
- Restructure patches, so Patch 23 has only kernel-doc and return
change.
- use xe_gt_WARN_ON instead of XE_WARN in _put error.
- Improve kernel-doc for _get.
-v4
- Rebase fixes
-v5 (MattB, Rodrigo, Badal)
- Avoid explicit type unsigned int
- Use unsigned int as return for xe_force_wake_get()
- Add xe_gt_WARN_ON inside xe_force_wake_get() for ack failures
-v6 (Michal, Badal)
- Return actually refcounted domains by xe_force_wake_get(), to
accommodate change XE_FORCEWAKE_ALL to single bit.
- Define a helper to check domain is in fw_ref or not.
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Himal Prasad Ghimiray (25):
drm/xe: Add member initialized_domains to xe_force_wake()
drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain()
drm/xe: Error handling in xe_force_wake_get()
drm/xe: Modify xe_force_wake_put to handle _get returned mask
drm/xe/device: Update handling of xe_force_wake_get return
drm/xe/hdcp: Update handling of xe_force_wake_get return
drm/xe/gsc: Update handling of xe_force_wake_get return
drm/xe/gt: Update handling of xe_force_wake_get return
drm/xe/xe_gt_idle: Update handling of xe_force_wake_get return
drm/xe/devcoredump: Update handling of xe_force_wake_get return
drm/xe/tests/mocs: Update xe_force_wake_get() return handling
drm/xe/mocs: Update handling of xe_force_wake_get return
drm/xe/xe_drm_client: Update handling of xe_force_wake_get return
drm/xe/xe_gt_debugfs: Update handling of xe_force_wake_get return
drm/xe/guc: Update handling of xe_force_wake_get return
drm/xe/huc: Update handling of xe_force_wake_get return
drm/xe/oa: Handle force_wake_get failure in xe_oa_stream_init()
drm/xe/pat: Update handling of xe_force_wake_get return
drm/xe/gt_tlb_invalidation_ggtt: Update handling of xe_force_wake_get
return
drm/xe/xe_reg_sr: Update handling of xe_force_wake_get return
drm/xe/query: Update handling of xe_force_wake_get return
drm/xe/vram: Update handling of xe_force_wake_get return
drm/xe: forcewake debugfs open fails on xe_forcewake_get failure
drm/xe: Ensure __must_check for xe_force_wake_get() return
drm/xe: Change return type to void for xe_force_wake_put
drivers/gpu/drm/xe/display/xe_hdcp_gsc.c | 6 +-
drivers/gpu/drm/xe/tests/xe_mocs.c | 18 ++--
drivers/gpu/drm/xe/xe_debugfs.c | 27 ++++-
drivers/gpu/drm/xe/xe_devcoredump.c | 14 +--
drivers/gpu/drm/xe/xe_device.c | 25 +++--
drivers/gpu/drm/xe/xe_drm_client.c | 8 +-
drivers/gpu/drm/xe/xe_force_wake.c | 109 +++++++++++++++-----
drivers/gpu/drm/xe/xe_force_wake.h | 26 ++++-
drivers/gpu/drm/xe/xe_force_wake_types.h | 6 +-
drivers/gpu/drm/xe/xe_gsc.c | 23 ++---
drivers/gpu/drm/xe/xe_gsc_proxy.c | 9 +-
drivers/gpu/drm/xe/xe_gt.c | 105 ++++++++++---------
drivers/gpu/drm/xe/xe_gt_debugfs.c | 13 ++-
drivers/gpu/drm/xe/xe_gt_idle.c | 26 +++--
drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 5 +-
drivers/gpu/drm/xe/xe_guc.c | 13 +--
drivers/gpu/drm/xe/xe_guc_pc.c | 50 +++++----
drivers/gpu/drm/xe/xe_huc.c | 8 +-
drivers/gpu/drm/xe/xe_mocs.c | 14 +--
drivers/gpu/drm/xe/xe_oa.c | 11 +-
drivers/gpu/drm/xe/xe_pat.c | 66 ++++++------
drivers/gpu/drm/xe/xe_query.c | 8 +-
drivers/gpu/drm/xe/xe_reg_sr.c | 24 ++---
drivers/gpu/drm/xe/xe_vram.c | 12 ++-
24 files changed, 381 insertions(+), 245 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 54+ messages in thread
* [PATCH v6 01/25] drm/xe: Add member initialized_domains to xe_force_wake()
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 19:51 ` Michal Wajdeczko
2024-09-30 5:31 ` [PATCH v6 02/25] drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain() Himal Prasad Ghimiray
` (34 subsequent siblings)
35 siblings, 1 reply; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Michal Wajdeczko, Badal Nilawar,
Rodrigo Vivi
This field serves as a bitmask representing all initialized forcewake
domains on the GT.
While at it, fix the datatype for awake_domains since it can have
value different from enum xe_force_wake_domains.
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_force_wake.c | 24 +++++++++++++++++-------
drivers/gpu/drm/xe/xe_force_wake_types.h | 4 +++-
2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
index a64c14757c84..5ce9e912818a 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.c
+++ b/drivers/gpu/drm/xe/xe_force_wake.c
@@ -21,15 +21,25 @@ static const char *str_wake_sleep(bool wake)
return wake ? "wake" : "sleep";
}
-static void domain_init(struct xe_force_wake_domain *domain,
+static void mark_domain_initialized(struct xe_force_wake *fw,
+ enum xe_force_wake_domain_id id)
+{
+ fw->initialized_domains |= BIT(id);
+}
+
+static void domain_init(struct xe_force_wake *fw,
enum xe_force_wake_domain_id id,
struct xe_reg reg, struct xe_reg ack)
{
+ struct xe_force_wake_domain *domain = &fw->domains[id];
+
domain->id = id;
domain->reg_ctl = reg;
domain->reg_ack = ack;
domain->val = FORCEWAKE_MT(FORCEWAKE_KERNEL);
domain->mask = FORCEWAKE_MT_MASK(FORCEWAKE_KERNEL);
+
+ mark_domain_initialized(fw, id);
}
void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw)
@@ -43,12 +53,12 @@ void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw)
xe_gt_assert(gt, GRAPHICS_VER(gt_to_xe(gt)) >= 11);
if (xe->info.graphics_verx100 >= 1270) {
- domain_init(&fw->domains[XE_FW_DOMAIN_ID_GT],
+ domain_init(fw,
XE_FW_DOMAIN_ID_GT,
FORCEWAKE_GT,
FORCEWAKE_ACK_GT_MTL);
} else {
- domain_init(&fw->domains[XE_FW_DOMAIN_ID_GT],
+ domain_init(fw,
XE_FW_DOMAIN_ID_GT,
FORCEWAKE_GT,
FORCEWAKE_ACK_GT);
@@ -63,7 +73,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
xe_gt_assert(gt, GRAPHICS_VER(gt_to_xe(gt)) >= 11);
if (!xe_gt_is_media_type(gt))
- domain_init(&fw->domains[XE_FW_DOMAIN_ID_RENDER],
+ domain_init(fw,
XE_FW_DOMAIN_ID_RENDER,
FORCEWAKE_RENDER,
FORCEWAKE_ACK_RENDER);
@@ -72,7 +82,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
if (!(gt->info.engine_mask & BIT(i)))
continue;
- domain_init(&fw->domains[XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j],
+ domain_init(fw,
XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j,
FORCEWAKE_MEDIA_VDBOX(j),
FORCEWAKE_ACK_MEDIA_VDBOX(j));
@@ -82,14 +92,14 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
if (!(gt->info.engine_mask & BIT(i)))
continue;
- domain_init(&fw->domains[XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j],
+ domain_init(fw,
XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j,
FORCEWAKE_MEDIA_VEBOX(j),
FORCEWAKE_ACK_MEDIA_VEBOX(j));
}
if (gt->info.engine_mask & BIT(XE_HW_ENGINE_GSCCS0))
- domain_init(&fw->domains[XE_FW_DOMAIN_ID_GSC],
+ domain_init(fw,
XE_FW_DOMAIN_ID_GSC,
FORCEWAKE_GSC,
FORCEWAKE_ACK_GSC);
diff --git a/drivers/gpu/drm/xe/xe_force_wake_types.h b/drivers/gpu/drm/xe/xe_force_wake_types.h
index ed0edc2cdf9f..fde17dc3d01e 100644
--- a/drivers/gpu/drm/xe/xe_force_wake_types.h
+++ b/drivers/gpu/drm/xe/xe_force_wake_types.h
@@ -78,7 +78,9 @@ struct xe_force_wake {
/** @lock: protects everything force wake struct */
spinlock_t lock;
/** @awake_domains: mask of all domains awake */
- enum xe_force_wake_domains awake_domains;
+ unsigned int awake_domains;
+ /** @initialized_domains: mask of all initialized domains */
+ unsigned int initialized_domains;
/** @domains: force wake domains */
struct xe_force_wake_domain domains[XE_FW_DOMAIN_ID_COUNT];
};
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 02/25] drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain()
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 01/25] drm/xe: Add member initialized_domains to xe_force_wake() Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 20:04 ` Michal Wajdeczko
2024-09-30 5:31 ` [PATCH v6 03/25] drm/xe: Error handling in xe_force_wake_get() Himal Prasad Ghimiray
` (33 subsequent siblings)
35 siblings, 1 reply; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Michal Wajdeczko, Badal Nilawar,
Rodrigo Vivi
The helper xe_force_wake_ref_has_domain() checks if the input domain
has been successfully reference-counted and awakened in the reference
returned by the xe_force_wake_get() call.
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_force_wake.h | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
index a2577672f4e3..de720881a300 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.h
+++ b/drivers/gpu/drm/xe/xe_force_wake.h
@@ -46,4 +46,23 @@ xe_force_wake_assert_held(struct xe_force_wake *fw,
xe_gt_assert(fw->gt, fw->awake_domains & domain);
}
+/**
+ * xe_force_wake_ref_has_domain - verifies if the domains are in fw_ref
+ * @fw_ref : Return of xe_force_wake_get()
+ * @domain : forcewake domains to verify
+ *
+ * xe_force_wake_ref_has_domain() confirms whether xe_force_wake_get()
+ * is success or not for @domain.
+ * In the event of a failure, if the caller chooses to abort or return,
+ * they must call xe_force_wake_put(fw, @fw_ref) if the @domain
+ * parameter is XE_FORCE_WAKE_ALL
+ *
+ * Return: true on domain is refcounted.
+ */
+static inline bool
+xe_force_wake_ref_has_domain(unsigned int fw_ref, enum xe_force_wake_domains domain)
+{
+ return (fw_ref & domain);
+}
+
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 03/25] drm/xe: Error handling in xe_force_wake_get()
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 01/25] drm/xe: Add member initialized_domains to xe_force_wake() Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 02/25] drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain() Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-10-03 12:23 ` Nilawar, Badal
2024-09-30 5:31 ` [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask Himal Prasad Ghimiray
` (32 subsequent siblings)
35 siblings, 1 reply; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Michal Wajdeczko, Badal Nilawar,
Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
If an acknowledgment timeout occurs for a forcewake domain awake
request, do not increment the reference count for the domain. This
ensures that subsequent _get calls do not incorrectly assume the domain
is awake. The return value is a mask of domains that got refcounted,
and these domains need to be provided for subsequent xe_force_wake_put
call.
While at it, add simple kernel-doc for xe_force_wake_get()
v3
- Use explicit type for mask (Michal/Badal)
- Improve kernel-doc (Michal)
- Use unsigned int instead of abusing enum (Michal)
v5
- Use unsigned int for return (MattB/Badal/Rodrigo)
- use xe_gt_WARN for domain awake ack failure (Badal/Rodrigo)
v6
- Change XE_FORCEWAKE_ALL to single bit, this helps accommodate
actually refcounted domains in return. (Michal)
- Modify commit message and warn message (Badal)
- Remove unnecessary information in kernel-doc (Michal)
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_force_wake.c | 45 ++++++++++++++++++------
drivers/gpu/drm/xe/xe_force_wake.h | 4 +--
drivers/gpu/drm/xe/xe_force_wake_types.h | 2 +-
3 files changed, 38 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
index 5ce9e912818a..7f358e42c5d4 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.c
+++ b/drivers/gpu/drm/xe/xe_force_wake.c
@@ -160,29 +160,54 @@ static int domain_sleep_wait(struct xe_gt *gt,
(ffs(tmp__) - 1))) && \
domain__->reg_ctl.addr)
-int xe_force_wake_get(struct xe_force_wake *fw,
- enum xe_force_wake_domains domains)
+/**
+ * xe_force_wake_get() : Increase the domain refcount
+ * @fw: struct xe_force_wake
+ * @domains: forcewake domains to get refcount on
+ *
+ * This function takes references for the input @domains and wakes them if
+ * they are asleep.If requested domain is ALL then only
+ * applicable/initialized domains will be considered for refcount and it is
+ * a caller responsibilty to check returned ref if it includes any specific
+ * domain by using xe_force_wake_ref_has_domain() function. caller must call
+ * xe_force_wake_put() function to decrease incremented refcounts.
+ *
+ * Return: opaque reference to woken domains or zero if none of requested
+ * domains were awake.
+ */
+unsigned int xe_force_wake_get(struct xe_force_wake *fw,
+ enum xe_force_wake_domains domains)
{
struct xe_gt *gt = fw->gt;
struct xe_force_wake_domain *domain;
- enum xe_force_wake_domains tmp, woken = 0;
+ unsigned int ref_incr = 0, awake_rqst = 0, awake_failed = 0;
+ unsigned int tmp, ref_rqst;
unsigned long flags;
- int ret = 0;
+ ref_rqst = (domains == XE_FORCEWAKE_ALL) ? fw->initialized_domains : domains;
spin_lock_irqsave(&fw->lock, flags);
- for_each_fw_domain_masked(domain, domains, fw, tmp) {
+ for_each_fw_domain_masked(domain, ref_rqst, fw, tmp) {
if (!domain->ref++) {
- woken |= BIT(domain->id);
+ awake_rqst |= BIT(domain->id);
domain_wake(gt, domain);
}
+ ref_incr |= BIT(domain->id);
}
- for_each_fw_domain_masked(domain, woken, fw, tmp) {
- ret |= domain_wake_wait(gt, domain);
+ for_each_fw_domain_masked(domain, awake_rqst, fw, tmp) {
+ if (domain_wake_wait(gt, domain) == 0) {
+ fw->awake_domains |= BIT(domain->id);
+ } else {
+ awake_failed |= BIT(domain->id);
+ --domain->ref;
+ }
}
- fw->awake_domains |= woken;
+ ref_incr &= ~awake_failed;
spin_unlock_irqrestore(&fw->lock, flags);
- return ret;
+ xe_gt_WARN(gt, awake_failed, "Forcewake domain%s %#x failed to acknowledge awake request\n",
+ str_plural(hweight_long(awake_failed)), awake_failed);
+
+ return (ref_incr == fw->initialized_domains) ? ref_incr | XE_FORCEWAKE_ALL : ref_incr;
}
int xe_force_wake_put(struct xe_force_wake *fw,
diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
index de720881a300..eb638128952d 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.h
+++ b/drivers/gpu/drm/xe/xe_force_wake.h
@@ -15,8 +15,8 @@ void xe_force_wake_init_gt(struct xe_gt *gt,
struct xe_force_wake *fw);
void xe_force_wake_init_engines(struct xe_gt *gt,
struct xe_force_wake *fw);
-int xe_force_wake_get(struct xe_force_wake *fw,
- enum xe_force_wake_domains domains);
+unsigned int xe_force_wake_get(struct xe_force_wake *fw,
+ enum xe_force_wake_domains domains);
int xe_force_wake_put(struct xe_force_wake *fw,
enum xe_force_wake_domains domains);
diff --git a/drivers/gpu/drm/xe/xe_force_wake_types.h b/drivers/gpu/drm/xe/xe_force_wake_types.h
index fde17dc3d01e..899fbbcb3ea9 100644
--- a/drivers/gpu/drm/xe/xe_force_wake_types.h
+++ b/drivers/gpu/drm/xe/xe_force_wake_types.h
@@ -48,7 +48,7 @@ enum xe_force_wake_domains {
XE_FW_MEDIA_VEBOX2 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX2),
XE_FW_MEDIA_VEBOX3 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX3),
XE_FW_GSC = BIT(XE_FW_DOMAIN_ID_GSC),
- XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT) - 1
+ XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT)
};
/**
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (2 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 03/25] drm/xe: Error handling in xe_force_wake_get() Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 20:13 ` Michal Wajdeczko
2024-09-30 22:13 ` Matt Roper
2024-09-30 5:31 ` [PATCH v6 05/25] drm/xe/device: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
` (31 subsequent siblings)
35 siblings, 2 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Michal Wajdeczko, Badal Nilawar,
Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
Instead of calling xe_force_wake_put on all domains that were input to
xe_force_wake_get, call _put only on the domains whose reference counts
were successfully incremented by the _get call. Since the return value
of _get can be a mask that does not match any specific value in the enum
xe_force_wake_domains, change the input parameter of _put to unsigned int.
v3
- Move WARN to this patch (Badal)
- use xe_gt_WARN instead of XE_WARN (Michal)
- Stop using xe_force_wake_domains for non enum values.
- Remove kernel-doc from this patch (Badal)
-v5
- Fix global awake_domain
-v6
- put all initialized domains in case of FORCEWAKE_ALL.
- Modify ret variable name (Michal)
- Modify input var name (Michal)
- Modify commit message and warn (Badal)
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_force_wake.c | 28 +++++++++++++++++++++-------
drivers/gpu/drm/xe/xe_force_wake.h | 2 +-
2 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
index 7f358e42c5d4..372ea43b0d06 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.c
+++ b/drivers/gpu/drm/xe/xe_force_wake.c
@@ -211,26 +211,40 @@ unsigned int xe_force_wake_get(struct xe_force_wake *fw,
}
int xe_force_wake_put(struct xe_force_wake *fw,
- enum xe_force_wake_domains domains)
+ unsigned int fw_ref)
{
struct xe_gt *gt = fw->gt;
struct xe_force_wake_domain *domain;
- enum xe_force_wake_domains tmp, sleep = 0;
+ unsigned int tmp, sleep = 0;
unsigned long flags;
- int ret = 0;
+ int ack_fail = 0;
+
+ /*
+ * Avoid unnecessary lock and unlock when the function is called
+ * in error path of individual domains.
+ */
+ if (!fw_ref)
+ return 0;
+
+ if (fw_ref == XE_FORCEWAKE_ALL)
+ fw_ref = fw->initialized_domains;
spin_lock_irqsave(&fw->lock, flags);
- for_each_fw_domain_masked(domain, domains, fw, tmp) {
+ for_each_fw_domain_masked(domain, fw_ref, fw, tmp) {
if (!--domain->ref) {
sleep |= BIT(domain->id);
domain_sleep(gt, domain);
}
}
for_each_fw_domain_masked(domain, sleep, fw, tmp) {
- ret |= domain_sleep_wait(gt, domain);
+ if (domain_sleep_wait(gt, domain) == 0)
+ fw->awake_domains &= ~BIT(domain->id);
+ else
+ ack_fail |= BIT(domain->id);
}
- fw->awake_domains &= ~sleep;
spin_unlock_irqrestore(&fw->lock, flags);
- return ret;
+ xe_gt_WARN(gt, ack_fail, "Forcewake domain%s %#x failed to acknowledge sleep request\n",
+ str_plural(hweight_long(ack_fail)), ack_fail);
+ return ack_fail;
}
diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
index eb638128952d..b5a75544d86a 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.h
+++ b/drivers/gpu/drm/xe/xe_force_wake.h
@@ -18,7 +18,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt,
unsigned int xe_force_wake_get(struct xe_force_wake *fw,
enum xe_force_wake_domains domains);
int xe_force_wake_put(struct xe_force_wake *fw,
- enum xe_force_wake_domains domains);
+ unsigned int fw_ref);
static inline int
xe_force_wake_ref(struct xe_force_wake *fw,
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 05/25] drm/xe/device: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (3 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-10-04 7:18 ` Nilawar, Badal
2024-09-30 5:31 ` [PATCH v6 06/25] drm/xe/hdcp: " Himal Prasad Ghimiray
` (30 subsequent siblings)
35 siblings, 1 reply; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray, Badal Nilawar, Rodrigo Vivi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, the return value will be 0 for single domains (excluding
XE_FORCEWAKE_ALL) in the event of a failure. Modify the return handling
of xe_force_wake_get() accordingly and pass the return value as input to
xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be escalated/considered as
probing error. It internally WARNS on domain ack failure.
v5
- return unsigned int xe_force_wake_get()
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 8e9b551c7033..e885edacf39f 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -600,8 +600,8 @@ int xe_device_probe_early(struct xe_device *xe)
static int probe_has_flat_ccs(struct xe_device *xe)
{
struct xe_gt *gt;
+ unsigned int fw_ref;
u32 reg;
- int err;
/* Always enabled/disabled, no runtime check to do */
if (GRAPHICS_VER(xe) < 20 || !xe->info.has_flat_ccs)
@@ -609,9 +609,9 @@ static int probe_has_flat_ccs(struct xe_device *xe)
gt = xe_root_mmio_gt(xe);
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
- return err;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return -ETIMEDOUT;
reg = xe_gt_mcr_unicast_read_any(gt, XE2_FLAT_CCS_BASE_RANGE_LOWER);
xe->info.has_flat_ccs = (reg & XE2_FLAT_CCS_ENABLE);
@@ -620,7 +620,8 @@ static int probe_has_flat_ccs(struct xe_device *xe)
drm_dbg(&xe->drm,
"Flat CCS has been disabled in bios, May lead to performance impact");
- return xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ return 0;
}
int xe_device_probe(struct xe_device *xe)
@@ -871,6 +872,7 @@ void xe_device_wmb(struct xe_device *xe)
void xe_device_td_flush(struct xe_device *xe)
{
struct xe_gt *gt;
+ unsigned int fw_ref;
u8 id;
if (!IS_DGFX(xe) || GRAPHICS_VER(xe) < 20)
@@ -885,7 +887,8 @@ void xe_device_td_flush(struct xe_device *xe)
if (xe_gt_is_media_type(gt))
continue;
- if (xe_force_wake_get(gt_to_fw(gt), XE_FW_GT))
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
return;
xe_mmio_write32(>->mmio, XE2_TDF_CTRL, TRANSIENT_FLUSH_REQUEST);
@@ -900,22 +903,22 @@ void xe_device_td_flush(struct xe_device *xe)
150, NULL, false))
xe_gt_err_once(gt, "TD flush timeout\n");
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
}
void xe_device_l2_flush(struct xe_device *xe)
{
struct xe_gt *gt;
- int err;
+ uint fw_ref;
gt = xe_root_mmio_gt(xe);
if (!XE_WA(gt, 16023588340))
return;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
return;
spin_lock(>->global_invl_lock);
@@ -925,7 +928,7 @@ void xe_device_l2_flush(struct xe_device *xe)
xe_gt_err_once(gt, "Global invalidation timeout\n");
spin_unlock(>->global_invl_lock);
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
u32 xe_device_ccs_bytes(struct xe_device *xe, u64 size)
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 06/25] drm/xe/hdcp: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (4 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 05/25] drm/xe/device: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 07/25] drm/xe/gsc: " Himal Prasad Ghimiray
` (29 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Suraj Kandpal, Daniele Ceraolo Spurio,
Rodrigo Vivi, Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented
domain mask, the return value will be 0 for single domains (excluding
XE_FORCEWAKE_ALL) in the event of a failure. Modify the return
handling of xe_force_wake_get() accordingly and pass the return value as
input to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
v5
- return unsigned int for xe_force_wake_get()
Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>(#rev2)
---
drivers/gpu/drm/xe/display/xe_hdcp_gsc.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index 6619a40aed15..3567f474b6cb 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -41,6 +41,7 @@ bool intel_hdcp_gsc_check_status(struct xe_device *xe)
struct xe_gt *gt = tile->media_gt;
struct xe_gsc *gsc = >->uc.gsc;
bool ret = true;
+ unsigned int fw_ref;
if (!gsc && !xe_uc_fw_is_enabled(&gsc->fw)) {
drm_dbg_kms(&xe->drm,
@@ -49,7 +50,8 @@ bool intel_hdcp_gsc_check_status(struct xe_device *xe)
}
xe_pm_runtime_get(xe);
- if (xe_force_wake_get(gt_to_fw(gt), XE_FW_GSC)) {
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GSC);
+ if (!fw_ref) {
drm_dbg_kms(&xe->drm,
"failed to get forcewake to check proxy status\n");
ret = false;
@@ -59,7 +61,7 @@ bool intel_hdcp_gsc_check_status(struct xe_device *xe)
if (!xe_gsc_proxy_init_done(gsc))
ret = false;
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
out:
xe_pm_runtime_put(xe);
return ret;
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 07/25] drm/xe/gsc: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (5 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 06/25] drm/xe/hdcp: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 08/25] drm/xe/gt: " Himal Prasad Ghimiray
` (28 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Daniele Ceraolo Spurio, Rodrigo Vivi,
Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains
(excluding XE_FORCEWAKE_ALL).
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
v5
- return unsigned int for xe_force_wake_get()
- No need to WARN from caller in case of forcewake get failure.
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_gsc.c | 23 +++++++++++------------
drivers/gpu/drm/xe/xe_gsc_proxy.c | 9 ++++-----
2 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gsc.c b/drivers/gpu/drm/xe/xe_gsc.c
index 783b09bf3681..1eb791ddc375 100644
--- a/drivers/gpu/drm/xe/xe_gsc.c
+++ b/drivers/gpu/drm/xe/xe_gsc.c
@@ -261,19 +261,17 @@ static int gsc_upload_and_init(struct xe_gsc *gsc)
{
struct xe_gt *gt = gsc_to_gt(gsc);
struct xe_tile *tile = gt_to_tile(gt);
+ unsigned int fw_ref;
int ret;
if (XE_WA(tile->primary_gt, 14018094691)) {
- ret = xe_force_wake_get(gt_to_fw(tile->primary_gt), XE_FORCEWAKE_ALL);
+ fw_ref = xe_force_wake_get(gt_to_fw(tile->primary_gt), XE_FORCEWAKE_ALL);
/*
* If the forcewake fails we want to keep going, because the worst
* case outcome in failing to apply the WA is that PXP won't work,
- * which is not fatal. We still throw a warning so the issue is
- * seen if it happens.
+ * which is not fatal. Forcewake get warns implicitly in case of failure
*/
- xe_gt_WARN_ON(tile->primary_gt, ret);
-
xe_gt_mcr_multicast_write(tile->primary_gt,
EU_SYSTOLIC_LIC_THROTTLE_CTL_WITH_LOCK,
EU_SYSTOLIC_LIC_THROTTLE_CTL_LOCK_BIT);
@@ -282,7 +280,7 @@ static int gsc_upload_and_init(struct xe_gsc *gsc)
ret = gsc_upload(gsc);
if (XE_WA(tile->primary_gt, 14018094691))
- xe_force_wake_put(gt_to_fw(tile->primary_gt), XE_FORCEWAKE_ALL);
+ xe_force_wake_put(gt_to_fw(tile->primary_gt), fw_ref);
if (ret)
return ret;
@@ -352,6 +350,7 @@ static void gsc_work(struct work_struct *work)
struct xe_gsc *gsc = container_of(work, typeof(*gsc), work);
struct xe_gt *gt = gsc_to_gt(gsc);
struct xe_device *xe = gt_to_xe(gt);
+ unsigned int fw_ref;
u32 actions;
int ret;
@@ -361,7 +360,7 @@ static void gsc_work(struct work_struct *work)
spin_unlock_irq(&gsc->lock);
xe_pm_runtime_get(xe);
- xe_gt_WARN_ON(gt, xe_force_wake_get(gt_to_fw(gt), XE_FW_GSC));
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GSC);
if (actions & GSC_ACTION_ER_COMPLETE) {
ret = gsc_er_complete(gt);
@@ -381,7 +380,7 @@ static void gsc_work(struct work_struct *work)
xe_gsc_proxy_request_handler(gsc);
out:
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_pm_runtime_put(xe);
}
@@ -601,7 +600,7 @@ void xe_gsc_print_info(struct xe_gsc *gsc, struct drm_printer *p)
{
struct xe_gt *gt = gsc_to_gt(gsc);
struct xe_mmio *mmio = >->mmio;
- int err;
+ unsigned int fw_ref;
xe_uc_fw_print(&gsc->fw, p);
@@ -610,8 +609,8 @@ void xe_gsc_print_info(struct xe_gsc *gsc, struct drm_printer *p)
if (!xe_uc_fw_is_enabled(&gsc->fw))
return;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GSC);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GSC);
+ if (!fw_ref)
return;
drm_printf(p, "\nHECI1 FWSTS: 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x\n",
@@ -622,5 +621,5 @@ void xe_gsc_print_info(struct xe_gsc *gsc, struct drm_printer *p)
xe_mmio_read32(mmio, HECI_FWSTS5(MTL_GSC_HECI1_BASE)),
xe_mmio_read32(mmio, HECI_FWSTS6(MTL_GSC_HECI1_BASE)));
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
diff --git a/drivers/gpu/drm/xe/xe_gsc_proxy.c b/drivers/gpu/drm/xe/xe_gsc_proxy.c
index 6d89c22ae811..fc64b45d324b 100644
--- a/drivers/gpu/drm/xe/xe_gsc_proxy.c
+++ b/drivers/gpu/drm/xe/xe_gsc_proxy.c
@@ -450,22 +450,21 @@ void xe_gsc_proxy_remove(struct xe_gsc *gsc)
{
struct xe_gt *gt = gsc_to_gt(gsc);
struct xe_device *xe = gt_to_xe(gt);
- int err = 0;
+ unsigned int fw_ref = 0;
if (!gsc->proxy.component_added)
return;
/* disable HECI2 IRQs */
xe_pm_runtime_get(xe);
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GSC);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GSC);
+ if (!fw_ref)
xe_gt_err(gt, "failed to get forcewake to disable GSC interrupts\n");
/* try do disable irq even if forcewake failed */
gsc_proxy_irq_toggle(gsc, false);
- if (!err)
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_pm_runtime_put(xe);
xe_gsc_wait_for_worker_completion(gsc);
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 08/25] drm/xe/gt: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (6 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 07/25] drm/xe/gsc: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 09/25] drm/xe/xe_gt_idle: " Himal Prasad Ghimiray
` (27 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Matthew Brost, Rodrigo Vivi,
Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains
(excluding XE_FORCEWAKE_ALL).
A non-zero return value in the case of XE_FORCEWAKE_ALL does not
necessarily indicate success. Use helper xe_force_wake_ref_has_domain to
verify all domains are initialized or not.
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be checked. It internally
WARNS on domain ack failure.
v4
- Rebase fix
v5
- return unsigned int for xe_force_wake_get()
- remove redundant XE_WARN_ON()
v6
- use helper for checking all initialized domains are awake or not.
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_gt.c | 105 ++++++++++++++++++++-----------------
1 file changed, 58 insertions(+), 47 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index 274737417b0f..5359c5ed7931 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -99,14 +99,14 @@ void xe_gt_sanitize(struct xe_gt *gt)
static void xe_gt_enable_host_l2_vram(struct xe_gt *gt)
{
+ unsigned int fw_ref;
u32 reg;
- int err;
if (!XE_WA(gt, 16023588340))
return;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (WARN_ON(err))
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
return;
if (!xe_gt_is_media_type(gt)) {
@@ -117,13 +117,13 @@ static void xe_gt_enable_host_l2_vram(struct xe_gt *gt)
}
xe_gt_mcr_multicast_write(gt, XEHPC_L3CLOS_MASK(3), 0x3);
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
static void xe_gt_disable_host_l2_vram(struct xe_gt *gt)
{
+ unsigned int fw_ref;
u32 reg;
- int err;
if (!XE_WA(gt, 16023588340))
return;
@@ -131,15 +131,15 @@ static void xe_gt_disable_host_l2_vram(struct xe_gt *gt)
if (xe_gt_is_media_type(gt))
return;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (WARN_ON(err))
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (WARN_ON(!fw_ref))
return;
reg = xe_gt_mcr_unicast_read_any(gt, XE2_GAMREQSTRM_CTRL);
reg &= ~CG_DIS_CNTLBUS;
xe_gt_mcr_multicast_write(gt, XE2_GAMREQSTRM_CTRL, reg);
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
/**
@@ -405,11 +405,14 @@ static void dump_pat_on_error(struct xe_gt *gt)
static int gt_fw_domain_init(struct xe_gt *gt)
{
+ unsigned int fw_ref;
int err, i;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref) {
+ err = -ETIMEDOUT;
goto err_hw_fence_irq;
+ }
if (!xe_gt_is_media_type(gt)) {
err = xe_ggtt_init(gt_to_tile(gt)->mem.ggtt);
@@ -444,14 +447,12 @@ static int gt_fw_domain_init(struct xe_gt *gt)
*/
gt->info.gmdid = xe_mmio_read32(>->mmio, GMD_ID);
- err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
- XE_WARN_ON(err);
-
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
return 0;
err_force_wake:
dump_pat_on_error(gt);
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
err_hw_fence_irq:
for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i)
xe_hw_fence_irq_finish(>->fence_irq[i]);
@@ -461,11 +462,14 @@ static int gt_fw_domain_init(struct xe_gt *gt)
static int all_fw_domain_init(struct xe_gt *gt)
{
+ unsigned int fw_ref;
int err, i;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (err)
- goto err_hw_fence_irq;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
+ err = -ETIMEDOUT;
+ goto err_force_wake;
+ }
xe_gt_mcr_set_implicit_defaults(gt);
xe_reg_sr_apply_mmio(>->reg_sr, gt);
@@ -529,14 +533,12 @@ static int all_fw_domain_init(struct xe_gt *gt)
if (IS_SRIOV_PF(gt_to_xe(gt)))
xe_gt_sriov_pf_init_hw(gt);
- err = xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- XE_WARN_ON(err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
return 0;
err_force_wake:
- xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
-err_hw_fence_irq:
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i)
xe_hw_fence_irq_finish(>->fence_irq[i]);
@@ -549,11 +551,12 @@ static int all_fw_domain_init(struct xe_gt *gt)
*/
int xe_gt_init_hwconfig(struct xe_gt *gt)
{
+ unsigned int fw_ref;
int err;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
- goto out;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return -ETIMEDOUT;
xe_gt_mcr_init_early(gt);
xe_pat_init(gt);
@@ -571,8 +574,7 @@ int xe_gt_init_hwconfig(struct xe_gt *gt)
xe_gt_enable_host_l2_vram(gt);
out_fw:
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
-out:
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
return err;
}
@@ -767,6 +769,7 @@ static int do_gt_restart(struct xe_gt *gt)
static int gt_reset(struct xe_gt *gt)
{
+ unsigned int fw_ref;
int err;
if (xe_device_wedged(gt_to_xe(gt)))
@@ -787,9 +790,11 @@ static int gt_reset(struct xe_gt *gt)
xe_gt_sanitize(gt);
- err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (err)
- goto err_msg;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
+ err = -ETIMEDOUT;
+ goto err_out;
+ }
xe_uc_gucrc_disable(>->uc);
xe_uc_stop_prepare(>->uc);
@@ -807,8 +812,7 @@ static int gt_reset(struct xe_gt *gt)
if (err)
goto err_out;
- err = xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- XE_WARN_ON(err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_pm_runtime_put(gt_to_xe(gt));
xe_gt_info(gt, "reset done\n");
@@ -816,8 +820,7 @@ static int gt_reset(struct xe_gt *gt)
return 0;
err_out:
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
-err_msg:
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
XE_WARN_ON(xe_uc_start(>->uc));
err_fail:
xe_gt_err(gt, "reset failed (%pe)\n", ERR_PTR(err));
@@ -849,22 +852,25 @@ void xe_gt_reset_async(struct xe_gt *gt)
void xe_gt_suspend_prepare(struct xe_gt *gt)
{
- XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ unsigned int fw_ref;
+
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
xe_uc_stop_prepare(>->uc);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
int xe_gt_suspend(struct xe_gt *gt)
{
+ unsigned int fw_ref;
int err;
xe_gt_dbg(gt, "suspending\n");
xe_gt_sanitize(gt);
- err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
goto err_msg;
err = xe_uc_suspend(>->uc);
@@ -875,14 +881,15 @@ int xe_gt_suspend(struct xe_gt *gt)
xe_gt_disable_host_l2_vram(gt);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_gt_dbg(gt, "suspended\n");
return 0;
-err_force_wake:
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
err_msg:
+ err = -ETIMEDOUT;
+err_force_wake:
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_gt_err(gt, "suspend failed (%pe)\n", ERR_PTR(err));
return err;
@@ -890,9 +897,11 @@ int xe_gt_suspend(struct xe_gt *gt)
void xe_gt_shutdown(struct xe_gt *gt)
{
- xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ unsigned int fw_ref;
+
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
do_gt_reset(gt);
- xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
/**
@@ -915,11 +924,12 @@ int xe_gt_sanitize_freq(struct xe_gt *gt)
int xe_gt_resume(struct xe_gt *gt)
{
+ unsigned int fw_ref;
int err;
xe_gt_dbg(gt, "resuming\n");
- err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
goto err_msg;
err = do_gt_restart(gt);
@@ -928,14 +938,15 @@ int xe_gt_resume(struct xe_gt *gt)
xe_gt_idle_enable_pg(gt);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_gt_dbg(gt, "resumed\n");
return 0;
-err_force_wake:
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
err_msg:
+ err = -ETIMEDOUT;
+err_force_wake:
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_gt_err(gt, "resume failed (%pe)\n", ERR_PTR(err));
return err;
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 09/25] drm/xe/xe_gt_idle: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (7 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 08/25] drm/xe/gt: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 10/25] drm/xe/devcoredump: " Himal Prasad Ghimiray
` (26 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray, Rodrigo Vivi, Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains
(excluding XE_FORCEWAKE_ALL).
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be checked. It internally
WARNS on domain ack failure.
v4
- Rebase fix
v5
- return unsigned int for xe_force_wake_get()
- Remove reudandant WARN calls.
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_gt_idle.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt_idle.c b/drivers/gpu/drm/xe/xe_gt_idle.c
index 531924b6c0a1..125db68d9e67 100644
--- a/drivers/gpu/drm/xe/xe_gt_idle.c
+++ b/drivers/gpu/drm/xe/xe_gt_idle.c
@@ -106,6 +106,7 @@ void xe_gt_idle_enable_pg(struct xe_gt *gt)
struct xe_gt_idle *gtidle = >->gtidle;
struct xe_mmio *mmio = >->mmio;
u32 vcs_mask, vecs_mask;
+ unsigned int fw_ref;
int i, j;
if (IS_SRIOV_VF(xe))
@@ -132,7 +133,7 @@ void xe_gt_idle_enable_pg(struct xe_gt *gt)
VDN_MFXVDENC_POWERGATE_ENABLE(j));
}
- XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT));
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
if (xe->info.skip_guc_pc) {
/*
* GuC sets the hysteresis value when GuC PC is enabled
@@ -143,12 +144,13 @@ void xe_gt_idle_enable_pg(struct xe_gt *gt)
}
xe_mmio_write32(mmio, POWERGATE_ENABLE, gtidle->powergate_enable);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
void xe_gt_idle_disable_pg(struct xe_gt *gt)
{
struct xe_gt_idle *gtidle = >->gtidle;
+ unsigned int fw_ref;
if (IS_SRIOV_VF(gt_to_xe(gt)))
return;
@@ -156,9 +158,9 @@ void xe_gt_idle_disable_pg(struct xe_gt *gt)
xe_device_assert_mem_access(gt_to_xe(gt));
gtidle->powergate_enable = 0;
- XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT));
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
xe_mmio_write32(>->mmio, POWERGATE_ENABLE, gtidle->powergate_enable);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
/**
@@ -177,7 +179,8 @@ int xe_gt_idle_pg_print(struct xe_gt *gt, struct drm_printer *p)
enum xe_gt_idle_state state;
u32 pg_enabled, pg_status = 0;
u32 vcs_mask, vecs_mask;
- int err, n;
+ unsigned int fw_ref;
+ int n;
/*
* Media Slices
*
@@ -213,14 +216,14 @@ int xe_gt_idle_pg_print(struct xe_gt *gt, struct drm_printer *p)
/* Do not wake the GT to read powergating status */
if (state != GT_IDLE_C6) {
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
- return err;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return -ETIMEDOUT;
pg_enabled = xe_mmio_read32(>->mmio, POWERGATE_ENABLE);
pg_status = xe_mmio_read32(>->mmio, POWERGATE_DOMAIN_STATUS);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
if (gt->info.engine_mask & XE_HW_ENGINE_RCS_MASK) {
@@ -303,13 +306,14 @@ static void gt_idle_fini(void *arg)
{
struct kobject *kobj = arg;
struct xe_gt *gt = kobj_to_gt(kobj->parent);
+ unsigned int fw_ref;
xe_gt_idle_disable_pg(gt);
if (gt_to_xe(gt)->info.skip_guc_pc) {
- XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT));
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
xe_gt_idle_disable_c6(gt);
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
sysfs_remove_files(kobj, gt_idle_attrs);
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 10/25] drm/xe/devcoredump: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (8 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 09/25] drm/xe/xe_gt_idle: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 11/25] drm/xe/tests/mocs: Update xe_force_wake_get() return handling Himal Prasad Ghimiray
` (25 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray, Rodrigo Vivi, Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a non-zero return value in the case of XE_FORCEWAKE_ALL does not
necessarily indicate success. Use xe_force_wake_ref_has_domain() to
determine the status of the call.
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
v5
- return unsigned int for xe_force_wake_get()
v6
- use helper xe_force_wake_ref_has_domain()
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_devcoredump.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c
index bdb76e834e4c..48941176e2ef 100644
--- a/drivers/gpu/drm/xe/xe_devcoredump.c
+++ b/drivers/gpu/drm/xe/xe_devcoredump.c
@@ -141,13 +141,15 @@ static void xe_devcoredump_deferred_snap_work(struct work_struct *work)
{
struct xe_devcoredump_snapshot *ss = container_of(work, typeof(*ss), work);
struct xe_devcoredump *coredump = container_of(ss, typeof(*coredump), snapshot);
+ unsigned int fw_ref;
/* keep going if fw fails as we still want to save the memory and SW data */
- if (xe_force_wake_get(gt_to_fw(ss->gt), XE_FORCEWAKE_ALL))
+ fw_ref = xe_force_wake_get(gt_to_fw(ss->gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
xe_gt_info(ss->gt, "failed to get forcewake for coredump capture\n");
xe_vm_snapshot_capture_delayed(ss->vm);
xe_guc_exec_queue_snapshot_capture_delayed(ss->ge);
- xe_force_wake_put(gt_to_fw(ss->gt), XE_FORCEWAKE_ALL);
+ xe_force_wake_put(gt_to_fw(ss->gt), fw_ref);
/* Calculate devcoredump size */
ss->read.size = __xe_devcoredump_read(NULL, INT_MAX, coredump);
@@ -220,8 +222,9 @@ static void devcoredump_snapshot(struct xe_devcoredump *coredump,
u32 width_mask = (0x1 << q->width) - 1;
const char *process_name = "no process";
- int i;
+ unsigned int fw_ref;
bool cookie;
+ int i;
ss->snapshot_time = ktime_get_real();
ss->boot_time = ktime_get_boottime();
@@ -244,8 +247,7 @@ static void devcoredump_snapshot(struct xe_devcoredump *coredump,
}
/* keep going if fw fails as we still want to save the memory and SW data */
- if (xe_force_wake_get(gt_to_fw(q->gt), XE_FORCEWAKE_ALL))
- xe_gt_info(ss->gt, "failed to get forcewake for coredump capture\n");
+ fw_ref = xe_force_wake_get(gt_to_fw(q->gt), XE_FORCEWAKE_ALL);
coredump->snapshot.ct = xe_guc_ct_snapshot_capture(&guc->ct, true);
coredump->snapshot.ge = xe_guc_exec_queue_snapshot_capture(q);
@@ -263,7 +265,7 @@ static void devcoredump_snapshot(struct xe_devcoredump *coredump,
queue_work(system_unbound_wq, &ss->work);
- xe_force_wake_put(gt_to_fw(q->gt), XE_FORCEWAKE_ALL);
+ xe_force_wake_put(gt_to_fw(q->gt), fw_ref);
dma_fence_end_signalling(cookie);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 11/25] drm/xe/tests/mocs: Update xe_force_wake_get() return handling
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (9 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 10/25] drm/xe/devcoredump: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 12/25] drm/xe/mocs: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
` (24 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray, Rodrigo Vivi, Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains.
Change assert condition to incorporate this change in return and
pass the return value to xe_force_wake_put()
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
v5
- return unsigned int for xe_force_wake_get()
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/tests/xe_mocs.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/xe/tests/xe_mocs.c b/drivers/gpu/drm/xe/tests/xe_mocs.c
index ea932c051cc7..6f9b7a266b41 100644
--- a/drivers/gpu/drm/xe/tests/xe_mocs.c
+++ b/drivers/gpu/drm/xe/tests/xe_mocs.c
@@ -43,12 +43,11 @@ static void read_l3cc_table(struct xe_gt *gt,
{
struct kunit *test = kunit_get_current_test();
u32 l3cc, l3cc_expected;
- unsigned int i;
+ unsigned int fw_ref, i;
u32 reg_val;
- u32 ret;
- ret = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- KUNIT_ASSERT_EQ_MSG(test, ret, 0, "Forcewake Failed.\n");
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ KUNIT_ASSERT_NE_MSG(test, fw_ref, 0, "Forcewake Failed.\n");
for (i = 0; i < info->num_mocs_regs; i++) {
if (!(i & 1)) {
@@ -72,7 +71,7 @@ static void read_l3cc_table(struct xe_gt *gt,
KUNIT_EXPECT_EQ_MSG(test, l3cc_expected, l3cc,
"l3cc idx=%u has incorrect val.\n", i);
}
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
static void read_mocs_table(struct xe_gt *gt,
@@ -80,15 +79,14 @@ static void read_mocs_table(struct xe_gt *gt,
{
struct kunit *test = kunit_get_current_test();
u32 mocs, mocs_expected;
- unsigned int i;
+ unsigned int fw_ref, i;
u32 reg_val;
- u32 ret;
KUNIT_EXPECT_TRUE_MSG(test, info->unused_entries_index,
"Unused entries index should have been defined\n");
- ret = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- KUNIT_ASSERT_EQ_MSG(test, ret, 0, "Forcewake Failed.\n");
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ KUNIT_ASSERT_NE_MSG(test, fw_ref, 0, "Forcewake Failed.\n");
for (i = 0; i < info->num_mocs_regs; i++) {
if (regs_are_mcr(gt))
@@ -106,7 +104,7 @@ static void read_mocs_table(struct xe_gt *gt,
"mocs reg 0x%x has incorrect val.\n", i);
}
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
static int mocs_kernel_test_run_device(struct xe_device *xe)
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 12/25] drm/xe/mocs: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (10 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 11/25] drm/xe/tests/mocs: Update xe_force_wake_get() return handling Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 13/25] drm/xe/xe_drm_client: " Himal Prasad Ghimiray
` (23 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Michal Wajdeczko, Rodrigo Vivi,
Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains
(excluding XE_FORCEWAKE_ALL).
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- don't use xe_assert() to report HW errors (Michal)
v5
- return unsigned int from xe_force_wake_get()
- Remove redundant warn
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_mocs.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_mocs.c b/drivers/gpu/drm/xe/xe_mocs.c
index 8df41cd12d51..9b673d7bf4b9 100644
--- a/drivers/gpu/drm/xe/xe_mocs.c
+++ b/drivers/gpu/drm/xe/xe_mocs.c
@@ -773,25 +773,21 @@ void xe_mocs_init(struct xe_gt *gt)
void xe_mocs_dump(struct xe_gt *gt, struct drm_printer *p)
{
- struct xe_mocs_info table;
- unsigned int flags;
- u32 ret;
struct xe_device *xe = gt_to_xe(gt);
+ struct xe_mocs_info table;
+ unsigned int fw_ref, flags;
flags = get_mocs_settings(xe, &table);
xe_pm_runtime_get_noresume(xe);
- ret = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
-
- if (ret)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
goto err_fw;
table.ops->dump(&table, flags, gt, p);
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
-
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
err_fw:
- xe_assert(xe, !ret);
xe_pm_runtime_put(xe);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 13/25] drm/xe/xe_drm_client: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (11 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 12/25] drm/xe/mocs: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 14/25] drm/xe/xe_gt_debugfs: " Himal Prasad Ghimiray
` (22 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray, Rodrigo Vivi, Lucas De Marchi
Since xe_force_wake_get() now returns a domain mask with an incremented
reference count, a return value of 0 indicates a failure, while a
non-zero return value that matches the input domain parameter signifies
success.
Update the return handling of xe_force_wake_get() to reflect this, and
ensure that the return value is passed to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be checked. It internally
WARNS on domain ack failure.
v5
- return unsigned int from xe_force_wake_get()
v6
- use xe_force_wake_ref_has_domain()
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_drm_client.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_drm_client.c b/drivers/gpu/drm/xe/xe_drm_client.c
index fb52a23e28f8..22f0f1a6dfd5 100644
--- a/drivers/gpu/drm/xe/xe_drm_client.c
+++ b/drivers/gpu/drm/xe/xe_drm_client.c
@@ -278,6 +278,7 @@ static void show_run_ticks(struct drm_printer *p, struct drm_file *file)
struct xe_hw_engine *hwe;
struct xe_exec_queue *q;
u64 gpu_timestamp;
+ unsigned int fw_ref;
xe_pm_runtime_get(xe);
@@ -303,13 +304,16 @@ static void show_run_ticks(struct drm_printer *p, struct drm_file *file)
continue;
fw = xe_hw_engine_to_fw_domain(hwe);
- if (xe_force_wake_get(gt_to_fw(gt), fw)) {
+
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), fw);
+ if (!xe_force_wake_ref_has_domain(fw_ref, fw)) {
hwe = NULL;
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
break;
}
gpu_timestamp = xe_hw_engine_read_timestamp(hwe);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), fw));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
break;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 14/25] drm/xe/xe_gt_debugfs: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (12 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 13/25] drm/xe/xe_drm_client: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 15/25] drm/xe/guc: " Himal Prasad Ghimiray
` (21 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray, Rodrigo Vivi, Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented
domain mask, a non-zero return value in the case of XE_FORCEWAKE_ALL does
not necessarily indicate success. Use xe_force_wake_ref_has_domain()
determine the status of the call.
Modify the return handling of xe_force_wake_get() accordingly and
pass the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be checked. It internally
WARNS on domain ack failure.
v5
- return unsigned int for xe_force_wake_get()
v6
- use helper xe_force_wake_ref_has_domain()
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_gt_debugfs.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt_debugfs.c b/drivers/gpu/drm/xe/xe_gt_debugfs.c
index cbc43973ff7e..3e8c351a0eab 100644
--- a/drivers/gpu/drm/xe/xe_gt_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_debugfs.c
@@ -90,22 +90,21 @@ static int hw_engines(struct xe_gt *gt, struct drm_printer *p)
struct xe_device *xe = gt_to_xe(gt);
struct xe_hw_engine *hwe;
enum xe_hw_engine_id id;
- int err;
+ unsigned int fw_ref;
xe_pm_runtime_get(xe);
- err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (err) {
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
xe_pm_runtime_put(xe);
- return err;
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ return -ETIMEDOUT;
}
for_each_hw_engine(hwe, gt, id)
xe_hw_engine_print(hwe, p);
- err = xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_pm_runtime_put(xe);
- if (err)
- return err;
return 0;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 15/25] drm/xe/guc: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (13 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 14/25] drm/xe/xe_gt_debugfs: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 16/25] drm/xe/huc: " Himal Prasad Ghimiray
` (20 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Matthew Brost, Rodrigo Vivi,
Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains
(excluding XE_FORCEWAKE_ALL).
A non-zero return value in the case of XE_FORCEWAKE_ALL does not
necessarily indicate success. Use xe_force_wake_ref_has_domain() to
determine the status of the call.
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be checked. It internally
WARNS on domain ack failure.
v5
- return unsigned int from xe_force_wake_get()
- Remove redundant xe_gt_WARN_ON
v6
- use helper xe_force_wake_ref_has_domain()
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_guc.c | 13 +++++----
drivers/gpu/drm/xe/xe_guc_pc.c | 50 +++++++++++++++++++++-------------
2 files changed, 38 insertions(+), 25 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index c2ddf883702b..3b39e5e33799 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -247,10 +247,11 @@ static void guc_fini_hw(void *arg)
{
struct xe_guc *guc = arg;
struct xe_gt *gt = guc_to_gt(guc);
+ unsigned int fw_ref;
- xe_gt_WARN_ON(gt, xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
xe_uc_fini_hw(&guc_to_gt(guc)->uc);
- xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
/**
@@ -1150,14 +1151,14 @@ int xe_guc_start(struct xe_guc *guc)
void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)
{
struct xe_gt *gt = guc_to_gt(guc);
+ unsigned int fw_ref;
u32 status;
- int err;
int i;
xe_uc_fw_print(&guc->fw, p);
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
return;
status = xe_mmio_read32(>->mmio, GUC_STATUS);
@@ -1178,7 +1179,7 @@ void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)
i, xe_mmio_read32(>->mmio, SOFT_SCRATCH(i)));
}
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_guc_ct_print(&guc->ct, p, false);
xe_guc_submit_print(guc, p);
diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index 2b654f820ae2..e8b9faeaef64 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -415,22 +415,24 @@ u32 xe_guc_pc_get_act_freq(struct xe_guc_pc *pc)
int xe_guc_pc_get_cur_freq(struct xe_guc_pc *pc, u32 *freq)
{
struct xe_gt *gt = pc_to_gt(pc);
- int ret;
+ unsigned int fw_ref;
/*
* GuC SLPC plays with cur freq request when GuCRC is enabled
* Block RC6 for a more reliable read.
*/
- ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (ret)
- return ret;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ return -ETIMEDOUT;
+ }
*freq = xe_mmio_read32(>->mmio, RPNSWREQ);
*freq = REG_FIELD_GET(REQ_RATIO_MASK, *freq);
*freq = decode_freq(*freq);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
return 0;
}
@@ -480,6 +482,7 @@ u32 xe_guc_pc_get_rpn_freq(struct xe_guc_pc *pc)
int xe_guc_pc_get_min_freq(struct xe_guc_pc *pc, u32 *freq)
{
struct xe_gt *gt = pc_to_gt(pc);
+ unsigned int fw_ref;
int ret;
mutex_lock(&pc->freq_lock);
@@ -493,9 +496,11 @@ int xe_guc_pc_get_min_freq(struct xe_guc_pc *pc, u32 *freq)
* GuC SLPC plays with min freq request when GuCRC is enabled
* Block RC6 for a more reliable read.
*/
- ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (ret)
- goto out;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
+ ret = -ETIMEDOUT;
+ goto fw;
+ }
ret = pc_action_query_task_state(pc);
if (ret)
@@ -504,7 +509,7 @@ int xe_guc_pc_get_min_freq(struct xe_guc_pc *pc, u32 *freq)
*freq = pc_get_min_freq(pc);
fw:
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
out:
mutex_unlock(&pc->freq_lock);
return ret;
@@ -855,6 +860,7 @@ int xe_guc_pc_gucrc_disable(struct xe_guc_pc *pc)
{
struct xe_device *xe = pc_to_xe(pc);
struct xe_gt *gt = pc_to_gt(pc);
+ unsigned int fw_ref;
int ret = 0;
if (xe->info.skip_guc_pc)
@@ -864,13 +870,15 @@ int xe_guc_pc_gucrc_disable(struct xe_guc_pc *pc)
if (ret)
return ret;
- ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (ret)
- return ret;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ return -ETIMEDOUT;
+ }
xe_gt_idle_disable_c6(gt);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
return 0;
}
@@ -956,13 +964,16 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
struct xe_device *xe = pc_to_xe(pc);
struct xe_gt *gt = pc_to_gt(pc);
u32 size = PAGE_ALIGN(sizeof(struct slpc_shared_data));
+ unsigned int fw_ref;
int ret;
xe_gt_assert(gt, xe_device_uc_enabled(xe));
- ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (ret)
- return ret;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ return -ETIMEDOUT;
+ }
if (xe->info.skip_guc_pc) {
if (xe->info.platform != XE_PVC)
@@ -1005,7 +1016,7 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
ret = pc_action_setup_gucrc(pc, GUCRC_FIRMWARE_CONTROL);
out:
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
return ret;
}
@@ -1037,18 +1048,19 @@ static void xe_guc_pc_fini_hw(void *arg)
{
struct xe_guc_pc *pc = arg;
struct xe_device *xe = pc_to_xe(pc);
+ unsigned int fw_ref;
if (xe_device_wedged(xe))
return;
- XE_WARN_ON(xe_force_wake_get(gt_to_fw(pc_to_gt(pc)), XE_FORCEWAKE_ALL));
+ fw_ref = xe_force_wake_get(gt_to_fw(pc_to_gt(pc)), XE_FORCEWAKE_ALL);
xe_guc_pc_gucrc_disable(pc);
XE_WARN_ON(xe_guc_pc_stop(pc));
/* Bind requested freq to mert_freq_cap before unload */
pc_set_cur_freq(pc, min(pc_max_freq_cap(pc), pc->rpe_freq));
- xe_force_wake_put(gt_to_fw(pc_to_gt(pc)), XE_FORCEWAKE_ALL);
+ xe_force_wake_put(gt_to_fw(pc_to_gt(pc)), fw_ref);
}
/**
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 16/25] drm/xe/huc: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (14 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 15/25] drm/xe/guc: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 17/25] drm/xe/oa: Handle force_wake_get failure in xe_oa_stream_init() Himal Prasad Ghimiray
` (19 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Daniele Ceraolo Spurio, Rodrigo Vivi,
Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains
(excluding XE_FORCEWAKE_ALL).
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
v5
- return unsigned int from xe_force_wake_get()
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_huc.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_huc.c b/drivers/gpu/drm/xe/xe_huc.c
index 77c5830309cf..6a846e4cb221 100644
--- a/drivers/gpu/drm/xe/xe_huc.c
+++ b/drivers/gpu/drm/xe/xe_huc.c
@@ -296,19 +296,19 @@ void xe_huc_sanitize(struct xe_huc *huc)
void xe_huc_print_info(struct xe_huc *huc, struct drm_printer *p)
{
struct xe_gt *gt = huc_to_gt(huc);
- int err;
+ unsigned int fw_ref;
xe_uc_fw_print(&huc->fw, p);
if (!xe_uc_fw_is_enabled(&huc->fw))
return;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
return;
drm_printf(p, "\nHuC status: 0x%08x\n",
xe_mmio_read32(>->mmio, HUC_KERNEL_LOAD_INFO));
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 17/25] drm/xe/oa: Handle force_wake_get failure in xe_oa_stream_init()
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (15 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 16/25] drm/xe/huc: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 18/25] drm/xe/pat: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
` (18 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Ashutosh Dixit, Rodrigo Vivi,
Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a non-zero return value in the case of XE_FORCEWAKE_ALL does not
necessarily indicate success. use xe_force_wake_ref_has_domain ()
to determine the status of the call.
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be checked. It internally
WARNS on domain ack failure.
v5
- return unsigned int from xe_force_wake_get()
v6
- Use helper xe_force_wake_ref_has_domain()
Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_oa.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
index 4c7b677115a8..ecbfbe246861 100644
--- a/drivers/gpu/drm/xe/xe_oa.c
+++ b/drivers/gpu/drm/xe/xe_oa.c
@@ -837,7 +837,7 @@ static void xe_oa_stream_destroy(struct xe_oa_stream *stream)
xe_oa_free_oa_buffer(stream);
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
xe_pm_runtime_put(stream->oa->xe);
/* Wa_1509372804:pvc: Unset the override of GUCRC mode to enable rc6 */
@@ -1354,6 +1354,7 @@ static int xe_oa_stream_init(struct xe_oa_stream *stream,
{
struct xe_oa_unit *u = param->hwe->oa_unit;
struct xe_gt *gt = param->hwe->gt;
+ unsigned int fw_ref;
int ret;
stream->exec_q = param->exec_q;
@@ -1414,7 +1415,11 @@ static int xe_oa_stream_init(struct xe_oa_stream *stream,
/* Take runtime pm ref and forcewake to disable RC6 */
xe_pm_runtime_get(stream->oa->xe);
- XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
+ ret = -ETIMEDOUT;
+ goto err_fw_put;
+ }
ret = xe_oa_alloc_oa_buffer(stream);
if (ret)
@@ -1456,7 +1461,7 @@ static int xe_oa_stream_init(struct xe_oa_stream *stream,
err_free_oa_buf:
xe_oa_free_oa_buffer(stream);
err_fw_put:
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
xe_pm_runtime_put(stream->oa->xe);
if (stream->override_gucrc)
xe_gt_WARN_ON(gt, xe_guc_pc_unset_gucrc_mode(>->uc.guc.pc));
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 18/25] drm/xe/pat: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (16 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 17/25] drm/xe/oa: Handle force_wake_get failure in xe_oa_stream_init() Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 19/25] drm/xe/gt_tlb_invalidation_ggtt: " Himal Prasad Ghimiray
` (17 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Michal Wajdeczko, Rodrigo Vivi,
Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains
(excluding XE_FORCEWAKE_ALL).
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be checked. It internally
WARNS on domain ack failure.
- don't use xe_assert() to report HW errors (Michal)
v5
- return unsigned int from xe_force_wake_get()
- remove redundant warns
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_pat.c | 66 +++++++++++++++++--------------------
1 file changed, 31 insertions(+), 35 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pat.c b/drivers/gpu/drm/xe/xe_pat.c
index 6bd6adfdfc74..ecfe868248bc 100644
--- a/drivers/gpu/drm/xe/xe_pat.c
+++ b/drivers/gpu/drm/xe/xe_pat.c
@@ -15,6 +15,7 @@
#include "xe_force_wake.h"
#include "xe_gt.h"
#include "xe_gt_mcr.h"
+#include "xe_gt_printk.h"
#include "xe_mmio.h"
#include "xe_sriov.h"
#include "xe_wa.h"
@@ -182,11 +183,12 @@ static void program_pat_mcr(struct xe_gt *gt, const struct xe_pat_table_entry ta
static void xelp_dump(struct xe_gt *gt, struct drm_printer *p)
{
struct xe_device *xe = gt_to_xe(gt);
- int i, err;
+ unsigned int fw_ref;
+ int i;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
- goto err_fw;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return;
drm_printf(p, "PAT table:\n");
@@ -198,9 +200,7 @@ static void xelp_dump(struct xe_gt *gt, struct drm_printer *p)
XELP_MEM_TYPE_STR_MAP[mem_type], pat);
}
- err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
-err_fw:
- xe_assert(xe, !err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
static const struct xe_pat_ops xelp_pat_ops = {
@@ -211,11 +211,12 @@ static const struct xe_pat_ops xelp_pat_ops = {
static void xehp_dump(struct xe_gt *gt, struct drm_printer *p)
{
struct xe_device *xe = gt_to_xe(gt);
- int i, err;
+ unsigned int fw_ref;
+ int i;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
- goto err_fw;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return;
drm_printf(p, "PAT table:\n");
@@ -229,9 +230,7 @@ static void xehp_dump(struct xe_gt *gt, struct drm_printer *p)
XELP_MEM_TYPE_STR_MAP[mem_type], pat);
}
- err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
-err_fw:
- xe_assert(xe, !err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
static const struct xe_pat_ops xehp_pat_ops = {
@@ -242,11 +241,12 @@ static const struct xe_pat_ops xehp_pat_ops = {
static void xehpc_dump(struct xe_gt *gt, struct drm_printer *p)
{
struct xe_device *xe = gt_to_xe(gt);
- int i, err;
+ unsigned int fw_ref;
+ int i;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
- goto err_fw;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return;
drm_printf(p, "PAT table:\n");
@@ -258,9 +258,7 @@ static void xehpc_dump(struct xe_gt *gt, struct drm_printer *p)
REG_FIELD_GET(XEHPC_CLOS_LEVEL_MASK, pat), pat);
}
- err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
-err_fw:
- xe_assert(xe, !err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
static const struct xe_pat_ops xehpc_pat_ops = {
@@ -271,11 +269,12 @@ static const struct xe_pat_ops xehpc_pat_ops = {
static void xelpg_dump(struct xe_gt *gt, struct drm_printer *p)
{
struct xe_device *xe = gt_to_xe(gt);
- int i, err;
+ unsigned int fw_ref;
+ int i;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
- goto err_fw;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return;
drm_printf(p, "PAT table:\n");
@@ -292,9 +291,7 @@ static void xelpg_dump(struct xe_gt *gt, struct drm_printer *p)
REG_FIELD_GET(XELPG_INDEX_COH_MODE_MASK, pat), pat);
}
- err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
-err_fw:
- xe_assert(xe, !err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
/*
@@ -330,12 +327,13 @@ static void xe2lpm_program_pat(struct xe_gt *gt, const struct xe_pat_table_entry
static void xe2_dump(struct xe_gt *gt, struct drm_printer *p)
{
struct xe_device *xe = gt_to_xe(gt);
- int i, err;
+ unsigned int fw_ref;
u32 pat;
+ int i;
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
- goto err_fw;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return;
drm_printf(p, "PAT table:\n");
@@ -374,9 +372,7 @@ static void xe2_dump(struct xe_gt *gt, struct drm_printer *p)
REG_FIELD_GET(XE2_COH_MODE, pat),
pat);
- err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
-err_fw:
- xe_assert(xe, !err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
static const struct xe_pat_ops xe2_pat_ops = {
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 19/25] drm/xe/gt_tlb_invalidation_ggtt: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (17 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 18/25] drm/xe/pat: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 20/25] drm/xe/xe_reg_sr: " Himal Prasad Ghimiray
` (16 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Matthew Brost, Rodrigo Vivi,
Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains
(excluding XE_FORCEWAKE_ALL).
Modify the return handling of xe_force_wake_get() accordingly and pass
the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
v5
- return unsigned int from xe_force_wake_get()
- remove redundant warns
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
index 98616de0c5bb..302ac48186d3 100644
--- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
+++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
@@ -259,6 +259,7 @@ static int xe_gt_tlb_invalidation_guc(struct xe_gt *gt,
int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt)
{
struct xe_device *xe = gt_to_xe(gt);
+ unsigned int fw_ref;
if (xe_guc_ct_enabled(>->uc.guc.ct) &&
gt->uc.guc.submission_state.enabled) {
@@ -279,7 +280,7 @@ int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt)
if (IS_SRIOV_VF(xe))
return 0;
- xe_gt_WARN_ON(gt, xe_force_wake_get(gt_to_fw(gt), XE_FW_GT));
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
if (xe->info.platform == XE_PVC || GRAPHICS_VER(xe) >= 20) {
xe_mmio_write32(mmio, PVC_GUC_TLB_INV_DESC1,
PVC_GUC_TLB_INV_DESC1_INVALIDATE);
@@ -289,7 +290,7 @@ int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt)
xe_mmio_write32(mmio, GUC_TLB_INV_CR,
GUC_TLB_INV_CR_INVALIDATE);
}
- xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
}
return 0;
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 20/25] drm/xe/xe_reg_sr: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (18 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 19/25] drm/xe/gt_tlb_invalidation_ggtt: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 21/25] drm/xe/query: " Himal Prasad Ghimiray
` (15 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray, Rodrigo Vivi, Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented
domain mask, a non-zero return value in the case of XE_FORCEWAKE_ALL does
not necessarily indicate success. Use xe_force_wake_ref_has_domain()
to determine the status of the call.
Modify the return handling of xe_force_wake_get() accordingly and
pass the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be checked. It internally
WARNS on domain ack failure.
v5
- return unsigned int from xe_force_wake_get()
v6
- use helper xe_force_wake_ref_has_domain()
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_reg_sr.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_reg_sr.c b/drivers/gpu/drm/xe/xe_reg_sr.c
index 191cb4121acd..e1a0e27cda14 100644
--- a/drivers/gpu/drm/xe/xe_reg_sr.c
+++ b/drivers/gpu/drm/xe/xe_reg_sr.c
@@ -188,27 +188,27 @@ void xe_reg_sr_apply_mmio(struct xe_reg_sr *sr, struct xe_gt *gt)
{
struct xe_reg_sr_entry *entry;
unsigned long reg;
- int err;
+ unsigned int fw_ref;
if (xa_empty(&sr->xa))
return;
xe_gt_dbg(gt, "Applying %s save-restore MMIOs\n", sr->name);
- err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
goto err_force_wake;
xa_for_each(&sr->xa, reg, entry)
apply_one_mmio(gt, entry);
- err = xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- XE_WARN_ON(err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
return;
err_force_wake:
- xe_gt_err(gt, "Failed to apply, err=%d\n", err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ xe_gt_err(gt, "Failed to apply, err=-ETIMEDOUT\n");
}
void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
@@ -221,15 +221,15 @@ void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
u32 mmio_base = hwe->mmio_base;
unsigned long reg;
unsigned int slot = 0;
- int err;
+ unsigned int fw_ref;
if (xa_empty(&sr->xa))
return;
drm_dbg(&xe->drm, "Whitelisting %s registers\n", sr->name);
- err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- if (err)
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
goto err_force_wake;
p = drm_dbg_printer(&xe->drm, DRM_UT_DRIVER, NULL);
@@ -254,13 +254,13 @@ void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
xe_mmio_write32(>->mmio, RING_FORCE_TO_NONPRIV(mmio_base, slot), addr);
}
- err = xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
- XE_WARN_ON(err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
return;
err_force_wake:
- drm_err(&xe->drm, "Failed to apply, err=%d\n", err);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ drm_err(&xe->drm, "Failed to apply, err=-ETIMEDOUT\n");
}
/**
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 21/25] drm/xe/query: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (19 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 20/25] drm/xe/xe_reg_sr: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 22/25] drm/xe/vram: " Himal Prasad Ghimiray
` (14 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray, Rodrigo Vivi, Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented
domain mask, a non-zero return value in the case of XE_FORCEWAKE_ALL
does not necessarily indicate success. Use xe_force_wake_ref_has_domain()
to determine the status of the call.
Modify the return handling of xe_force_wake_get() accordingly and
pass the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be checked. It internally
WARNS on domain ack failure.
v5
- return unsigned int from xe_force_wake_get()
v6
- Use helper Use xe_force_wake_ref_has_domain()
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_query.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
index 5246a4a2740e..6e950c13944d 100644
--- a/drivers/gpu/drm/xe/xe_query.c
+++ b/drivers/gpu/drm/xe/xe_query.c
@@ -118,6 +118,7 @@ query_engine_cycles(struct xe_device *xe,
__ktime_func_t cpu_clock;
struct xe_hw_engine *hwe;
struct xe_gt *gt;
+ unsigned int fw_ref;
if (query->size == 0) {
query->size = size;
@@ -150,8 +151,11 @@ query_engine_cycles(struct xe_device *xe,
if (!hwe)
return -EINVAL;
- if (xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL))
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL)) {
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
return -EIO;
+ }
__read_timestamps(gt,
RING_TIMESTAMP(hwe->mmio_base),
@@ -161,7 +165,7 @@ query_engine_cycles(struct xe_device *xe,
&resp.cpu_delta,
cpu_clock);
- xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
resp.width = 36;
/* Only write to the output fields of user query */
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 22/25] drm/xe/vram: Update handling of xe_force_wake_get return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (20 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 21/25] drm/xe/query: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 23/25] drm/xe: forcewake debugfs open fails on xe_forcewake_get failure Himal Prasad Ghimiray
` (13 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe; +Cc: Himal Prasad Ghimiray, Rodrigo Vivi, Lucas De Marchi
With xe_force_wake_get() now returning the refcount-incremented domain
mask, a return value of 0 indicates failure for single domains
(excluding XE_FORCEWAKE_ALL).
Modify the return handling of xe_force_wake_get() accordingly and
pass the return value to xe_force_wake_put().
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
- xe_force_wake_put() error doesn't need to be escalated/considered as
probing error. It internally WARNS on domain ack failure.
v5
- return unsigned int from xe_force_wake_get()
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_vram.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
index 2a623bfcda7e..b1f81dca610d 100644
--- a/drivers/gpu/drm/xe/xe_vram.c
+++ b/drivers/gpu/drm/xe/xe_vram.c
@@ -220,8 +220,8 @@ static int tile_vram_size(struct xe_tile *tile, u64 *vram_size,
{
struct xe_device *xe = tile_to_xe(tile);
struct xe_gt *gt = tile->primary_gt;
+ unsigned int fw_ref;
u64 offset;
- int err;
u32 reg;
if (IS_SRIOV_VF(xe)) {
@@ -240,9 +240,9 @@ static int tile_vram_size(struct xe_tile *tile, u64 *vram_size,
return 0;
}
- err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
- if (err)
- return err;
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+ if (!fw_ref)
+ return -ETIMEDOUT;
/* actual size */
if (unlikely(xe->info.platform == XE_DG1)) {
@@ -264,7 +264,9 @@ static int tile_vram_size(struct xe_tile *tile, u64 *vram_size,
/* remove the tile offset so we have just the available size */
*vram_size = offset - *tile_offset;
- return xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+
+ return 0;
}
static void vram_fini(void *arg)
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 23/25] drm/xe: forcewake debugfs open fails on xe_forcewake_get failure
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (21 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 22/25] drm/xe/vram: " Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 24/25] drm/xe: Ensure __must_check for xe_force_wake_get() return Himal Prasad Ghimiray
` (12 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Badal Nilawar, Rodrigo Vivi,
Lucas De Marchi
A failure in xe_force_wake_get() no longer increments the domain's
refcount. Therefore, if xe_force_wake_get() fails during forcewake
debugfs open, return an error. This ensures there are no valid file
descriptors to close via forcewake debugfs, preventing refcount
mismanagement.
v3
- return xe_wakeref_t instead of int in xe_force_wake_get()
v5
- return unsigned int from xe_force_wake_get()
v6
- Use helper xe_force_wake_ref_has_domain()
to determine the status of the call.
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_debugfs.c | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index a64bae36e0e3..6bbe1ba8240c 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -92,13 +92,32 @@ static int forcewake_open(struct inode *inode, struct file *file)
{
struct xe_device *xe = inode->i_private;
struct xe_gt *gt;
- u8 id;
+ u8 id, last_gt;
+ unsigned int fw_ref;
xe_pm_runtime_get(xe);
- for_each_gt(gt, xe, id)
- XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ for_each_gt(gt, xe, id) {
+ last_gt = id;
+
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
+ goto err_fw_get;
+ }
return 0;
+
+err_fw_get:
+ for_each_gt(gt, xe, id) {
+ if (id < last_gt)
+ xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ else if (id == last_gt)
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ else
+ break;
+ }
+
+ xe_pm_runtime_put(xe);
+ return -ETIMEDOUT;
}
static int forcewake_release(struct inode *inode, struct file *file)
@@ -108,7 +127,7 @@ static int forcewake_release(struct inode *inode, struct file *file)
u8 id;
for_each_gt(gt, xe, id)
- XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
+ xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
xe_pm_runtime_put(xe);
return 0;
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 24/25] drm/xe: Ensure __must_check for xe_force_wake_get() return
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (22 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 23/25] drm/xe: forcewake debugfs open fails on xe_forcewake_get failure Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 25/25] drm/xe: Change return type to void for xe_force_wake_put Himal Prasad Ghimiray
` (11 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Badal Nilawar, Rodrigo Vivi,
Lucas De Marchi, Nirmoy Das
Add __must_check attribute for xe_force_wake_get().
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> (#rev1)
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_force_wake.c | 4 ++--
drivers/gpu/drm/xe/xe_force_wake.h | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
index 372ea43b0d06..6a89d3c7929d 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.c
+++ b/drivers/gpu/drm/xe/xe_force_wake.c
@@ -175,8 +175,8 @@ static int domain_sleep_wait(struct xe_gt *gt,
* Return: opaque reference to woken domains or zero if none of requested
* domains were awake.
*/
-unsigned int xe_force_wake_get(struct xe_force_wake *fw,
- enum xe_force_wake_domains domains)
+unsigned int __must_check xe_force_wake_get(struct xe_force_wake *fw,
+ enum xe_force_wake_domains domains)
{
struct xe_gt *gt = fw->gt;
struct xe_force_wake_domain *domain;
diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
index b5a75544d86a..9026d17a751d 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.h
+++ b/drivers/gpu/drm/xe/xe_force_wake.h
@@ -15,8 +15,8 @@ void xe_force_wake_init_gt(struct xe_gt *gt,
struct xe_force_wake *fw);
void xe_force_wake_init_engines(struct xe_gt *gt,
struct xe_force_wake *fw);
-unsigned int xe_force_wake_get(struct xe_force_wake *fw,
- enum xe_force_wake_domains domains);
+unsigned int __must_check xe_force_wake_get(struct xe_force_wake *fw,
+ enum xe_force_wake_domains domains);
int xe_force_wake_put(struct xe_force_wake *fw,
unsigned int fw_ref);
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v6 25/25] drm/xe: Change return type to void for xe_force_wake_put
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (23 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 24/25] drm/xe: Ensure __must_check for xe_force_wake_get() return Himal Prasad Ghimiray
@ 2024-09-30 5:31 ` Himal Prasad Ghimiray
2024-09-30 6:02 ` ✓ CI.Patch_applied: success for Fix xe_force_wake_get() failure handling (rev6) Patchwork
` (10 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Himal Prasad Ghimiray @ 2024-09-30 5:31 UTC (permalink / raw)
To: intel-xe
Cc: Himal Prasad Ghimiray, Michal Wajdeczko, Badal Nilawar,
Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
There is no need to return an error from xe_force_wake_put(), as a
failure implicitly indicates that the domain failed to sleep.
v3
- Move kernel-doc to this patch (Badal)
v5
- change parameter to unsigned int in xe_force_wake_put()
v6
- Remove unneccsary wrapping (Michal)
- Remove non required header (Michal)
- Mention timeout(Michal)
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
drivers/gpu/drm/xe/xe_force_wake.c | 18 ++++++++++++++----
drivers/gpu/drm/xe/xe_force_wake.h | 3 +--
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
index 6a89d3c7929d..1837089c5944 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.c
+++ b/drivers/gpu/drm/xe/xe_force_wake.c
@@ -210,8 +210,19 @@ unsigned int __must_check xe_force_wake_get(struct xe_force_wake *fw,
return (ref_incr == fw->initialized_domains) ? ref_incr | XE_FORCEWAKE_ALL : ref_incr;
}
-int xe_force_wake_put(struct xe_force_wake *fw,
- unsigned int fw_ref)
+/**
+ * xe_force_wake_put - Decrement the refcount and put domain to sleep if refcount becomes 0
+ * @fw: Pointer to the force wake structure
+ * @domains_mask: forcewake domain mask to put reference
+ *
+ * This function reduces the reference counts for specified domain mask. If
+ * refcount for any of the specified domain reaches 0, it puts the domain to sleep
+ * and waits for acknowledgment for domain to sleep within 50 milisec timeout.
+ * Ensure this function is always called with return of xe_force_wake_get() as
+ * @domains_mask.
+ * Warns in case of timeout of ack from domain.
+ */
+void xe_force_wake_put(struct xe_force_wake *fw, unsigned int fw_ref)
{
struct xe_gt *gt = fw->gt;
struct xe_force_wake_domain *domain;
@@ -224,7 +235,7 @@ int xe_force_wake_put(struct xe_force_wake *fw,
* in error path of individual domains.
*/
if (!fw_ref)
- return 0;
+ return;
if (fw_ref == XE_FORCEWAKE_ALL)
fw_ref = fw->initialized_domains;
@@ -246,5 +257,4 @@ int xe_force_wake_put(struct xe_force_wake *fw,
xe_gt_WARN(gt, ack_fail, "Forcewake domain%s %#x failed to acknowledge sleep request\n",
str_plural(hweight_long(ack_fail)), ack_fail);
- return ack_fail;
}
diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
index 9026d17a751d..b310dd1bffb5 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.h
+++ b/drivers/gpu/drm/xe/xe_force_wake.h
@@ -17,8 +17,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt,
struct xe_force_wake *fw);
unsigned int __must_check xe_force_wake_get(struct xe_force_wake *fw,
enum xe_force_wake_domains domains);
-int xe_force_wake_put(struct xe_force_wake *fw,
- unsigned int fw_ref);
+void xe_force_wake_put(struct xe_force_wake *fw, unsigned int fw_ref);
static inline int
xe_force_wake_ref(struct xe_force_wake *fw,
--
2.34.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* ✓ CI.Patch_applied: success for Fix xe_force_wake_get() failure handling (rev6)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (24 preceding siblings ...)
2024-09-30 5:31 ` [PATCH v6 25/25] drm/xe: Change return type to void for xe_force_wake_put Himal Prasad Ghimiray
@ 2024-09-30 6:02 ` Patchwork
2024-09-30 6:03 ` ✓ CI.checkpatch: " Patchwork
` (9 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-09-30 6:02 UTC (permalink / raw)
To: Himal Prasad Ghimiray; +Cc: intel-xe
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev6)
URL : https://patchwork.freedesktop.org/series/137982/
State : success
== Summary ==
=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 1accf1380ac2 drm-tip: 2024y-09m-30d-04h-27m-01s UTC integration manifest
=== git am output follows ===
Applying: drm/xe: Add member initialized_domains to xe_force_wake()
Applying: drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain()
Applying: drm/xe: Error handling in xe_force_wake_get()
Applying: drm/xe: Modify xe_force_wake_put to handle _get returned mask
Applying: drm/xe/device: Update handling of xe_force_wake_get return
Applying: drm/xe/hdcp: Update handling of xe_force_wake_get return
Applying: drm/xe/gsc: Update handling of xe_force_wake_get return
Applying: drm/xe/gt: Update handling of xe_force_wake_get return
Applying: drm/xe/xe_gt_idle: Update handling of xe_force_wake_get return
Applying: drm/xe/devcoredump: Update handling of xe_force_wake_get return
Applying: drm/xe/tests/mocs: Update xe_force_wake_get() return handling
Applying: drm/xe/mocs: Update handling of xe_force_wake_get return
Applying: drm/xe/xe_drm_client: Update handling of xe_force_wake_get return
Applying: drm/xe/xe_gt_debugfs: Update handling of xe_force_wake_get return
Applying: drm/xe/guc: Update handling of xe_force_wake_get return
Applying: drm/xe/huc: Update handling of xe_force_wake_get return
Applying: drm/xe/oa: Handle force_wake_get failure in xe_oa_stream_init()
Applying: drm/xe/pat: Update handling of xe_force_wake_get return
Applying: drm/xe/gt_tlb_invalidation_ggtt: Update handling of xe_force_wake_get return
Applying: drm/xe/xe_reg_sr: Update handling of xe_force_wake_get return
Applying: drm/xe/query: Update handling of xe_force_wake_get return
Applying: drm/xe/vram: Update handling of xe_force_wake_get return
Applying: drm/xe: forcewake debugfs open fails on xe_forcewake_get failure
Applying: drm/xe: Ensure __must_check for xe_force_wake_get() return
Applying: drm/xe: Change return type to void for xe_force_wake_put
^ permalink raw reply [flat|nested] 54+ messages in thread
* ✓ CI.checkpatch: success for Fix xe_force_wake_get() failure handling (rev6)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (25 preceding siblings ...)
2024-09-30 6:02 ` ✓ CI.Patch_applied: success for Fix xe_force_wake_get() failure handling (rev6) Patchwork
@ 2024-09-30 6:03 ` Patchwork
2024-09-30 6:03 ` ✗ CI.KUnit: failure " Patchwork
` (8 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-09-30 6:03 UTC (permalink / raw)
To: Himal Prasad Ghimiray; +Cc: intel-xe
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev6)
URL : https://patchwork.freedesktop.org/series/137982/
State : success
== 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 1b8e7194f609fc8f87758b086b25338535ef3cde
Author: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Date: Mon Sep 30 11:01:49 2024 +0530
drm/xe: Change return type to void for xe_force_wake_put
There is no need to return an error from xe_force_wake_put(), as a
failure implicitly indicates that the domain failed to sleep.
v3
- Move kernel-doc to this patch (Badal)
v5
- change parameter to unsigned int in xe_force_wake_put()
v6
- Remove unneccsary wrapping (Michal)
- Remove non required header (Michal)
- Mention timeout(Michal)
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
+ /mt/dim checkpatch 1accf1380ac2afd6da0ebfd3a62971335fc9214b drm-intel
5dcec7ce9922 drm/xe: Add member initialized_domains to xe_force_wake()
d2c37854a7d7 drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain()
dee8b2fa63c2 drm/xe: Error handling in xe_force_wake_get()
0efcbf2f27e0 drm/xe: Modify xe_force_wake_put to handle _get returned mask
5ecd49a731f4 drm/xe/device: Update handling of xe_force_wake_get return
42862ddc16af drm/xe/hdcp: Update handling of xe_force_wake_get return
909db6e1810b drm/xe/gsc: Update handling of xe_force_wake_get return
b4b942954867 drm/xe/gt: Update handling of xe_force_wake_get return
3f4ac9040fc7 drm/xe/xe_gt_idle: Update handling of xe_force_wake_get return
aad0564f4ce9 drm/xe/devcoredump: Update handling of xe_force_wake_get return
9b0493e1f778 drm/xe/tests/mocs: Update xe_force_wake_get() return handling
7b034bb10862 drm/xe/mocs: Update handling of xe_force_wake_get return
46d5292e8ee4 drm/xe/xe_drm_client: Update handling of xe_force_wake_get return
ecc736fbf1f2 drm/xe/xe_gt_debugfs: Update handling of xe_force_wake_get return
6d3a58a5fa7c drm/xe/guc: Update handling of xe_force_wake_get return
400c86b8f0e7 drm/xe/huc: Update handling of xe_force_wake_get return
1ebf1b967595 drm/xe/oa: Handle force_wake_get failure in xe_oa_stream_init()
22f0a9841e47 drm/xe/pat: Update handling of xe_force_wake_get return
790df3247711 drm/xe/gt_tlb_invalidation_ggtt: Update handling of xe_force_wake_get return
bc5ac1d22b82 drm/xe/xe_reg_sr: Update handling of xe_force_wake_get return
1cdf3fd7f398 drm/xe/query: Update handling of xe_force_wake_get return
bc1eeea44b4c drm/xe/vram: Update handling of xe_force_wake_get return
72ef34ec253e drm/xe: forcewake debugfs open fails on xe_forcewake_get failure
473efe438935 drm/xe: Ensure __must_check for xe_force_wake_get() return
1b8e7194f609 drm/xe: Change return type to void for xe_force_wake_put
^ permalink raw reply [flat|nested] 54+ messages in thread
* ✗ CI.KUnit: failure for Fix xe_force_wake_get() failure handling (rev6)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (26 preceding siblings ...)
2024-09-30 6:03 ` ✓ CI.checkpatch: " Patchwork
@ 2024-09-30 6:03 ` Patchwork
2024-09-30 7:35 ` Ghimiray, Himal Prasad
2024-09-30 20:55 ` ✓ CI.Patch_applied: success for Fix xe_force_wake_get() failure handling (rev7) Patchwork
` (7 subsequent siblings)
35 siblings, 1 reply; 54+ messages in thread
From: Patchwork @ 2024-09-30 6:03 UTC (permalink / raw)
To: Himal Prasad Ghimiray; +Cc: intel-xe
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev6)
URL : https://patchwork.freedesktop.org/series/137982/
State : failure
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
ERROR:root:../drivers/gpu/drm/xe/xe_gt_idle.c:56:27: error: redefinition of ‘str_up_down’
56 | static inline const char *str_up_down(bool v)
| ^~~~~~~~~~~
In file included from ../include/linux/string_helpers.h:7,
from ../drivers/gpu/drm/xe/xe_assert.h:9,
from ../drivers/gpu/drm/xe/xe_force_wake.h:9,
from ../drivers/gpu/drm/xe/xe_gt_idle.c:8:
../include/linux/string_choices.h:62:27: note: previous definition of ‘str_up_down’ with type ‘const char *(bool)’ {aka ‘const char *(_Bool)’}
62 | static inline const char *str_up_down(bool v)
| ^~~~~~~~~~~
make[7]: *** [../scripts/Makefile.build:229: drivers/gpu/drm/xe/xe_gt_idle.o] Error 1
make[7]: *** Waiting for unfinished jobs....
make[6]: *** [../scripts/Makefile.build:478: drivers/gpu/drm/xe] Error 2
make[6]: *** Waiting for unfinished jobs....
../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)
| ^~~~~~~~~~~~~~~~~
make[5]: *** [../scripts/Makefile.build:478: drivers/gpu/drm] Error 2
make[4]: *** [../scripts/Makefile.build:478: drivers/gpu] Error 2
make[3]: *** [../scripts/Makefile.build:478: drivers] Error 2
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [/kernel/Makefile:1936: .] Error 2
make[1]: *** [/kernel/Makefile:224: __sub-make] Error 2
make: *** [Makefile:224: __sub-make] Error 2
[06:03:18] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[06:03:23] 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
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: ✗ CI.KUnit: failure for Fix xe_force_wake_get() failure handling (rev6)
2024-09-30 6:03 ` ✗ CI.KUnit: failure " Patchwork
@ 2024-09-30 7:35 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 54+ messages in thread
From: Ghimiray, Himal Prasad @ 2024-09-30 7:35 UTC (permalink / raw)
To: intel-xe, Rodrigo Vivi, Lucas De Marchi, Michal Wajdeczko
On 30-09-2024 11:33, Patchwork wrote:
> == Series Details ==
>
> Series: Fix xe_force_wake_get() failure handling (rev6)
> URL : https://patchwork.freedesktop.org/series/137982/
> State : failure
>
> == Summary ==
>
> + trap cleanup EXIT
> + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
> ERROR:root:../drivers/gpu/drm/xe/xe_gt_idle.c:56:27: error: redefinition of ‘str_up_down’
> 56 | static inline const char *str_up_down(bool v)
Author: Michal Wajdeczko <michal.wajdeczko@intel.com>
Date: 10 weeks ago
lib/string_choices: Add str_up_down() helper
Add str_up_down() helper to return "up" or "down" string literal.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Link:
https://lore.kernel.org/r/20240725101841.574-1-michal.wajdeczko@intel.com
Signed-off-by: Kees Cook <kees@kernel.org>
Is merged to drm-tip needs to be backported to drm-xe-next, along with
removing local copy of str_up_down from xe_gt_idle.c.
Failure is not related https://patchwork.freedesktop.org/series/137982/.
> | ^~~~~~~~~~~
> In file included from ../include/linux/string_helpers.h:7,
> from ../drivers/gpu/drm/xe/xe_assert.h:9,
> from ../drivers/gpu/drm/xe/xe_force_wake.h:9,
> from ../drivers/gpu/drm/xe/xe_gt_idle.c:8:
> ../include/linux/string_choices.h:62:27: note: previous definition of ‘str_up_down’ with type ‘const char *(bool)’ {aka ‘const char *(_Bool)’}
> 62 | static inline const char *str_up_down(bool v)
> | ^~~~~~~~~~~
> make[7]: *** [../scripts/Makefile.build:229: drivers/gpu/drm/xe/xe_gt_idle.o] Error 1
> make[7]: *** Waiting for unfinished jobs....
> make[6]: *** [../scripts/Makefile.build:478: drivers/gpu/drm/xe] Error 2
> make[6]: *** Waiting for unfinished jobs....
> ../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)
> | ^~~~~~~~~~~~~~~~~
> make[5]: *** [../scripts/Makefile.build:478: drivers/gpu/drm] Error 2
> make[4]: *** [../scripts/Makefile.build:478: drivers/gpu] Error 2
> make[3]: *** [../scripts/Makefile.build:478: drivers] Error 2
> make[3]: *** Waiting for unfinished jobs....
> make[2]: *** [/kernel/Makefile:1936: .] Error 2
> make[1]: *** [/kernel/Makefile:224: __sub-make] Error 2
> make: *** [Makefile:224: __sub-make] Error 2
>
> [06:03:18] Configuring KUnit Kernel ...
> Generating .config ...
> Populating config with:
> $ make ARCH=um O=.kunit olddefconfig
> [06:03:23] 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
> + cleanup
> ++ stat -c %u:%g /kernel
> + chown -R 1003:1003 /kernel
>
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 01/25] drm/xe: Add member initialized_domains to xe_force_wake()
2024-09-30 5:31 ` [PATCH v6 01/25] drm/xe: Add member initialized_domains to xe_force_wake() Himal Prasad Ghimiray
@ 2024-09-30 19:51 ` Michal Wajdeczko
2024-10-01 5:03 ` Ghimiray, Himal Prasad
0 siblings, 1 reply; 54+ messages in thread
From: Michal Wajdeczko @ 2024-09-30 19:51 UTC (permalink / raw)
To: Himal Prasad Ghimiray, intel-xe; +Cc: Badal Nilawar, Rodrigo Vivi
On 30.09.2024 07:31, Himal Prasad Ghimiray wrote:
> This field serves as a bitmask representing all initialized forcewake
> domains on the GT.
>
> While at it, fix the datatype for awake_domains since it can have
> value different from enum xe_force_wake_domains.
up to maintainers, but for me this is unrelated change
>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Badal Nilawar <badal.nilawar@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> drivers/gpu/drm/xe/xe_force_wake.c | 24 +++++++++++++++++-------
> drivers/gpu/drm/xe/xe_force_wake_types.h | 4 +++-
> 2 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
> index a64c14757c84..5ce9e912818a 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake.c
> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
> @@ -21,15 +21,25 @@ static const char *str_wake_sleep(bool wake)
> return wake ? "wake" : "sleep";
> }
>
> -static void domain_init(struct xe_force_wake_domain *domain,
> +static void mark_domain_initialized(struct xe_force_wake *fw,
> + enum xe_force_wake_domain_id id)
> +{
> + fw->initialized_domains |= BIT(id);
> +}
> +
> +static void domain_init(struct xe_force_wake *fw,
since this function is no longer taking 'domain' as param, then IMO it
should be named like:
init_domain(fw, id, reg, ack)
> enum xe_force_wake_domain_id id,
> struct xe_reg reg, struct xe_reg ack)
> {
> + struct xe_force_wake_domain *domain = &fw->domains[id];
> +
> domain->id = id;
> domain->reg_ctl = reg;
> domain->reg_ack = ack;
> domain->val = FORCEWAKE_MT(FORCEWAKE_KERNEL);
> domain->mask = FORCEWAKE_MT_MASK(FORCEWAKE_KERNEL);
> +
> + mark_domain_initialized(fw, id);
> }
>
> void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw)
> @@ -43,12 +53,12 @@ void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw)
> xe_gt_assert(gt, GRAPHICS_VER(gt_to_xe(gt)) >= 11);
>
> if (xe->info.graphics_verx100 >= 1270) {
> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_GT],
> + domain_init(fw,
> XE_FW_DOMAIN_ID_GT,
> FORCEWAKE_GT,
> FORCEWAKE_ACK_GT_MTL);
likely above alignment could be optimized at least to:
init_domain(fw, XE_FW_DOMAIN_ID_GT,
FORCEWAKE_GT,
FORCEWAKE_ACK_GT_MTL);
> } else {
> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_GT],
> + domain_init(fw,
> XE_FW_DOMAIN_ID_GT,
> FORCEWAKE_GT,
> FORCEWAKE_ACK_GT);
> @@ -63,7 +73,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
> xe_gt_assert(gt, GRAPHICS_VER(gt_to_xe(gt)) >= 11);
>
> if (!xe_gt_is_media_type(gt))
> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_RENDER],
> + domain_init(fw,
> XE_FW_DOMAIN_ID_RENDER,
> FORCEWAKE_RENDER,
> FORCEWAKE_ACK_RENDER);
> @@ -72,7 +82,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
> if (!(gt->info.engine_mask & BIT(i)))
> continue;
>
> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j],
> + domain_init(fw,
> XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j,
> FORCEWAKE_MEDIA_VDBOX(j),
> FORCEWAKE_ACK_MEDIA_VDBOX(j));
> @@ -82,14 +92,14 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
> if (!(gt->info.engine_mask & BIT(i)))
> continue;
>
> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j],
> + domain_init(fw,
> XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j,
> FORCEWAKE_MEDIA_VEBOX(j),
> FORCEWAKE_ACK_MEDIA_VEBOX(j));
> }
>
> if (gt->info.engine_mask & BIT(XE_HW_ENGINE_GSCCS0))
> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_GSC],
> + domain_init(fw,
> XE_FW_DOMAIN_ID_GSC,
> FORCEWAKE_GSC,
> FORCEWAKE_ACK_GSC);
> diff --git a/drivers/gpu/drm/xe/xe_force_wake_types.h b/drivers/gpu/drm/xe/xe_force_wake_types.h
> index ed0edc2cdf9f..fde17dc3d01e 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake_types.h
> +++ b/drivers/gpu/drm/xe/xe_force_wake_types.h
> @@ -78,7 +78,9 @@ struct xe_force_wake {
> /** @lock: protects everything force wake struct */
> spinlock_t lock;
> /** @awake_domains: mask of all domains awake */
> - enum xe_force_wake_domains awake_domains;
> + unsigned int awake_domains;
> + /** @initialized_domains: mask of all initialized domains */
> + unsigned int initialized_domains;
> /** @domains: force wake domains */
> struct xe_force_wake_domain domains[XE_FW_DOMAIN_ID_COUNT];
> };
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 02/25] drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain()
2024-09-30 5:31 ` [PATCH v6 02/25] drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain() Himal Prasad Ghimiray
@ 2024-09-30 20:04 ` Michal Wajdeczko
2024-10-01 5:06 ` Ghimiray, Himal Prasad
0 siblings, 1 reply; 54+ messages in thread
From: Michal Wajdeczko @ 2024-09-30 20:04 UTC (permalink / raw)
To: Himal Prasad Ghimiray, intel-xe; +Cc: Badal Nilawar, Rodrigo Vivi
On 30.09.2024 07:31, Himal Prasad Ghimiray wrote:
> The helper xe_force_wake_ref_has_domain() checks if the input domain
> has been successfully reference-counted and awakened in the reference
> returned by the xe_force_wake_get() call.
hmm
but at this point of the series, xe_force_wake_get() still returns errno
>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Badal Nilawar <badal.nilawar@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> drivers/gpu/drm/xe/xe_force_wake.h | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
> index a2577672f4e3..de720881a300 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake.h
> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
> @@ -46,4 +46,23 @@ xe_force_wake_assert_held(struct xe_force_wake *fw,
> xe_gt_assert(fw->gt, fw->awake_domains & domain);
> }
>
> +/**
> + * xe_force_wake_ref_has_domain - verifies if the domains are in fw_ref
> + * @fw_ref : Return of xe_force_wake_get()
for now you may only refer to this only as: "the force_wake reference"
and once you update xe_force_wake_get() you may say there that it
returns "a force_wake reference" that could be checked by this helper
> + * @domain : forcewake domains to verify
domain or domains ?
> + *
> + * xe_force_wake_ref_has_domain() confirms whether xe_force_wake_get()
> + * is success or not for @domain.
This function confirms whether the @fw_ref includes a reference to the
specified @domain.
> + * In the event of a failure, if the caller chooses to abort or return,
> + * they must call xe_force_wake_put(fw, @fw_ref) if the @domain
> + * parameter is XE_FORCE_WAKE_ALL
hmm, this last sentence is IMO not applicable here, it should be rather
placed in xe_force_wake_get() doc that may refer to this function
> + *
> + * Return: true on domain is refcounted.
s/on/if
> + */
> +static inline bool
> +xe_force_wake_ref_has_domain(unsigned int fw_ref, enum xe_force_wake_domains domain)
> +{
> + return (fw_ref & domain);
you don't need these ( )
> +}
> +
> #endif
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask
2024-09-30 5:31 ` [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask Himal Prasad Ghimiray
@ 2024-09-30 20:13 ` Michal Wajdeczko
2024-09-30 20:15 ` Michal Wajdeczko
2024-09-30 22:13 ` Matt Roper
1 sibling, 1 reply; 54+ messages in thread
From: Michal Wajdeczko @ 2024-09-30 20:13 UTC (permalink / raw)
To: Himal Prasad Ghimiray, intel-xe
Cc: Badal Nilawar, Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
On 30.09.2024 07:31, Himal Prasad Ghimiray wrote:
> Instead of calling xe_force_wake_put on all domains that were input to
> xe_force_wake_get, call _put only on the domains whose reference counts
> were successfully incremented by the _get call. Since the return value
> of _get can be a mask that does not match any specific value in the enum
> xe_force_wake_domains, change the input parameter of _put to unsigned int.
at this point in the series xe_force_wake_get() still returns errno
maybe rephrase this to something like:
"Prepare xe_force_wake_put() to accept force_wake reference with
refcounted domains"
and also maybe it is a good time to change this function to void (or
maybe even do it before this path?
>
> v3
> - Move WARN to this patch (Badal)
> - use xe_gt_WARN instead of XE_WARN (Michal)
> - Stop using xe_force_wake_domains for non enum values.
> - Remove kernel-doc from this patch (Badal)
>
> -v5
> - Fix global awake_domain
>
> -v6
> - put all initialized domains in case of FORCEWAKE_ALL.
> - Modify ret variable name (Michal)
> - Modify input var name (Michal)
> - Modify commit message and warn (Badal)
>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Badal Nilawar <badal.nilawar@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: Nirmoy Das <nirmoy.das@intel.com>
> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
probably this applies to some earlier #rev, so please mark it as such
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> drivers/gpu/drm/xe/xe_force_wake.c | 28 +++++++++++++++++++++-------
> drivers/gpu/drm/xe/xe_force_wake.h | 2 +-
> 2 files changed, 22 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
> index 7f358e42c5d4..372ea43b0d06 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake.c
> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
> @@ -211,26 +211,40 @@ unsigned int xe_force_wake_get(struct xe_force_wake *fw,
> }
>
> int xe_force_wake_put(struct xe_force_wake *fw,
> - enum xe_force_wake_domains domains)
> + unsigned int fw_ref)
> {
> struct xe_gt *gt = fw->gt;
> struct xe_force_wake_domain *domain;
> - enum xe_force_wake_domains tmp, sleep = 0;
> + unsigned int tmp, sleep = 0;
> unsigned long flags;
> - int ret = 0;
> + int ack_fail = 0;
> +
> + /*
> + * Avoid unnecessary lock and unlock when the function is called
> + * in error path of individual domains.
> + */
> + if (!fw_ref)
> + return 0;
> +
> + if (fw_ref == XE_FORCEWAKE_ALL)
> + fw_ref = fw->initialized_domains;
>
> spin_lock_irqsave(&fw->lock, flags);
> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
> + for_each_fw_domain_masked(domain, fw_ref, fw, tmp) {
> if (!--domain->ref) {
> sleep |= BIT(domain->id);
> domain_sleep(gt, domain);
> }
> }
> for_each_fw_domain_masked(domain, sleep, fw, tmp) {
> - ret |= domain_sleep_wait(gt, domain);
> + if (domain_sleep_wait(gt, domain) == 0)
> + fw->awake_domains &= ~BIT(domain->id);
> + else
> + ack_fail |= BIT(domain->id);
> }
> - fw->awake_domains &= ~sleep;
> spin_unlock_irqrestore(&fw->lock, flags);
>
> - return ret;
> + xe_gt_WARN(gt, ack_fail, "Forcewake domain%s %#x failed to acknowledge sleep request\n",
> + str_plural(hweight_long(ack_fail)), ack_fail);
> + return ack_fail;
> }
> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
> index eb638128952d..b5a75544d86a 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake.h
> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
> @@ -18,7 +18,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt,
> unsigned int xe_force_wake_get(struct xe_force_wake *fw,
> enum xe_force_wake_domains domains);
> int xe_force_wake_put(struct xe_force_wake *fw,
> - enum xe_force_wake_domains domains);
> + unsigned int fw_ref);
>
> static inline int
> xe_force_wake_ref(struct xe_force_wake *fw,
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask
2024-09-30 20:13 ` Michal Wajdeczko
@ 2024-09-30 20:15 ` Michal Wajdeczko
2024-10-01 5:11 ` Ghimiray, Himal Prasad
0 siblings, 1 reply; 54+ messages in thread
From: Michal Wajdeczko @ 2024-09-30 20:15 UTC (permalink / raw)
To: Himal Prasad Ghimiray, intel-xe
Cc: Badal Nilawar, Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
On 30.09.2024 22:13, Michal Wajdeczko wrote:
>
>
> On 30.09.2024 07:31, Himal Prasad Ghimiray wrote:
>> Instead of calling xe_force_wake_put on all domains that were input to
>> xe_force_wake_get, call _put only on the domains whose reference counts
>> were successfully incremented by the _get call. Since the return value
>> of _get can be a mask that does not match any specific value in the enum
>> xe_force_wake_domains, change the input parameter of _put to unsigned int.
>
> at this point in the series xe_force_wake_get() still returns errno
oops, scratch that, somehow missed patch 03/25
>
> maybe rephrase this to something like:
>
> "Prepare xe_force_wake_put() to accept force_wake reference with
> refcounted domains"
>
> and also maybe it is a good time to change this function to void (or
> maybe even do it before this path?
>
>>
>> v3
>> - Move WARN to this patch (Badal)
>> - use xe_gt_WARN instead of XE_WARN (Michal)
>> - Stop using xe_force_wake_domains for non enum values.
>> - Remove kernel-doc from this patch (Badal)
>>
>> -v5
>> - Fix global awake_domain
>>
>> -v6
>> - put all initialized domains in case of FORCEWAKE_ALL.
>> - Modify ret variable name (Michal)
>> - Modify input var name (Michal)
>> - Modify commit message and warn (Badal)
>>
>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>> Cc: Nirmoy Das <nirmoy.das@intel.com>
>> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
>
> probably this applies to some earlier #rev, so please mark it as such
>
>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_force_wake.c | 28 +++++++++++++++++++++-------
>> drivers/gpu/drm/xe/xe_force_wake.h | 2 +-
>> 2 files changed, 22 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
>> index 7f358e42c5d4..372ea43b0d06 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake.c
>> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
>> @@ -211,26 +211,40 @@ unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>> }
>>
>> int xe_force_wake_put(struct xe_force_wake *fw,
>> - enum xe_force_wake_domains domains)
>> + unsigned int fw_ref)
>> {
>> struct xe_gt *gt = fw->gt;
>> struct xe_force_wake_domain *domain;
>> - enum xe_force_wake_domains tmp, sleep = 0;
>> + unsigned int tmp, sleep = 0;
>> unsigned long flags;
>> - int ret = 0;
>> + int ack_fail = 0;
>> +
>> + /*
>> + * Avoid unnecessary lock and unlock when the function is called
>> + * in error path of individual domains.
>> + */
>> + if (!fw_ref)
>> + return 0;
>> +
>> + if (fw_ref == XE_FORCEWAKE_ALL)
>> + fw_ref = fw->initialized_domains;
>>
>> spin_lock_irqsave(&fw->lock, flags);
>> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
>> + for_each_fw_domain_masked(domain, fw_ref, fw, tmp) {
>> if (!--domain->ref) {
>> sleep |= BIT(domain->id);
>> domain_sleep(gt, domain);
>> }
>> }
>> for_each_fw_domain_masked(domain, sleep, fw, tmp) {
>> - ret |= domain_sleep_wait(gt, domain);
>> + if (domain_sleep_wait(gt, domain) == 0)
>> + fw->awake_domains &= ~BIT(domain->id);
>> + else
>> + ack_fail |= BIT(domain->id);
>> }
>> - fw->awake_domains &= ~sleep;
>> spin_unlock_irqrestore(&fw->lock, flags);
>>
>> - return ret;
>> + xe_gt_WARN(gt, ack_fail, "Forcewake domain%s %#x failed to acknowledge sleep request\n",
>> + str_plural(hweight_long(ack_fail)), ack_fail);
>> + return ack_fail;
>> }
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
>> index eb638128952d..b5a75544d86a 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake.h
>> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
>> @@ -18,7 +18,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt,
>> unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>> enum xe_force_wake_domains domains);
>> int xe_force_wake_put(struct xe_force_wake *fw,
>> - enum xe_force_wake_domains domains);
>> + unsigned int fw_ref);
>>
>> static inline int
>> xe_force_wake_ref(struct xe_force_wake *fw,
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* ✓ CI.Patch_applied: success for Fix xe_force_wake_get() failure handling (rev7)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (27 preceding siblings ...)
2024-09-30 6:03 ` ✗ CI.KUnit: failure " Patchwork
@ 2024-09-30 20:55 ` Patchwork
2024-09-30 20:55 ` ✓ CI.checkpatch: " Patchwork
` (6 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-09-30 20:55 UTC (permalink / raw)
To: Ghimiray, Himal Prasad; +Cc: intel-xe
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev7)
URL : https://patchwork.freedesktop.org/series/137982/
State : success
== Summary ==
=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 4e4d7873ac76 drm-tip: 2024y-09m-30d-16h-43m-25s UTC integration manifest
=== git am output follows ===
Applying: drm/xe: Add member initialized_domains to xe_force_wake()
Applying: drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain()
Applying: drm/xe: Error handling in xe_force_wake_get()
Applying: drm/xe: Modify xe_force_wake_put to handle _get returned mask
Applying: drm/xe/device: Update handling of xe_force_wake_get return
Applying: drm/xe/hdcp: Update handling of xe_force_wake_get return
Applying: drm/xe/gsc: Update handling of xe_force_wake_get return
Applying: drm/xe/gt: Update handling of xe_force_wake_get return
Applying: drm/xe/xe_gt_idle: Update handling of xe_force_wake_get return
Applying: drm/xe/devcoredump: Update handling of xe_force_wake_get return
Applying: drm/xe/tests/mocs: Update xe_force_wake_get() return handling
Applying: drm/xe/mocs: Update handling of xe_force_wake_get return
Applying: drm/xe/xe_drm_client: Update handling of xe_force_wake_get return
Applying: drm/xe/xe_gt_debugfs: Update handling of xe_force_wake_get return
Applying: drm/xe/guc: Update handling of xe_force_wake_get return
Applying: drm/xe/huc: Update handling of xe_force_wake_get return
Applying: drm/xe/oa: Handle force_wake_get failure in xe_oa_stream_init()
Applying: drm/xe/pat: Update handling of xe_force_wake_get return
Applying: drm/xe/gt_tlb_invalidation_ggtt: Update handling of xe_force_wake_get return
Applying: drm/xe/xe_reg_sr: Update handling of xe_force_wake_get return
Applying: drm/xe/query: Update handling of xe_force_wake_get return
Applying: drm/xe/vram: Update handling of xe_force_wake_get return
Applying: drm/xe: forcewake debugfs open fails on xe_forcewake_get failure
Applying: drm/xe: Ensure __must_check for xe_force_wake_get() return
Applying: drm/xe: Change return type to void for xe_force_wake_put
^ permalink raw reply [flat|nested] 54+ messages in thread
* ✓ CI.checkpatch: success for Fix xe_force_wake_get() failure handling (rev7)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (28 preceding siblings ...)
2024-09-30 20:55 ` ✓ CI.Patch_applied: success for Fix xe_force_wake_get() failure handling (rev7) Patchwork
@ 2024-09-30 20:55 ` Patchwork
2024-09-30 20:57 ` ✓ CI.KUnit: " Patchwork
` (5 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-09-30 20:55 UTC (permalink / raw)
To: Ghimiray, Himal Prasad; +Cc: intel-xe
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev7)
URL : https://patchwork.freedesktop.org/series/137982/
State : success
== 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 a403ff294bf3238f1509a75116aa6f5adfcfabd6
Author: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Date: Mon Sep 30 11:01:49 2024 +0530
drm/xe: Change return type to void for xe_force_wake_put
There is no need to return an error from xe_force_wake_put(), as a
failure implicitly indicates that the domain failed to sleep.
v3
- Move kernel-doc to this patch (Badal)
v5
- change parameter to unsigned int in xe_force_wake_put()
v6
- Remove unneccsary wrapping (Michal)
- Remove non required header (Michal)
- Mention timeout(Michal)
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Badal Nilawar <badal.nilawar@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
+ /mt/dim checkpatch 4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1 drm-intel
6b4980fda15c drm/xe: Add member initialized_domains to xe_force_wake()
0924eb63e373 drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain()
47bf81320c0f drm/xe: Error handling in xe_force_wake_get()
e134f6bafb1a drm/xe: Modify xe_force_wake_put to handle _get returned mask
061e8a2f20f9 drm/xe/device: Update handling of xe_force_wake_get return
641383dae676 drm/xe/hdcp: Update handling of xe_force_wake_get return
f44d1b237f4b drm/xe/gsc: Update handling of xe_force_wake_get return
1706c6523e55 drm/xe/gt: Update handling of xe_force_wake_get return
2408485b63bf drm/xe/xe_gt_idle: Update handling of xe_force_wake_get return
2a744042b463 drm/xe/devcoredump: Update handling of xe_force_wake_get return
d1e9fa872fe8 drm/xe/tests/mocs: Update xe_force_wake_get() return handling
b0b953b20a11 drm/xe/mocs: Update handling of xe_force_wake_get return
37e22a5d442d drm/xe/xe_drm_client: Update handling of xe_force_wake_get return
b228edbb0fbb drm/xe/xe_gt_debugfs: Update handling of xe_force_wake_get return
9c32691a1754 drm/xe/guc: Update handling of xe_force_wake_get return
b227bde3524b drm/xe/huc: Update handling of xe_force_wake_get return
fc030c6d7951 drm/xe/oa: Handle force_wake_get failure in xe_oa_stream_init()
fbf2277e5c16 drm/xe/pat: Update handling of xe_force_wake_get return
15834092fcd8 drm/xe/gt_tlb_invalidation_ggtt: Update handling of xe_force_wake_get return
18f01c3e3d3a drm/xe/xe_reg_sr: Update handling of xe_force_wake_get return
ccb7d1def1c4 drm/xe/query: Update handling of xe_force_wake_get return
50f1dba995e9 drm/xe/vram: Update handling of xe_force_wake_get return
3fe144fbed32 drm/xe: forcewake debugfs open fails on xe_forcewake_get failure
be5c4ff77e39 drm/xe: Ensure __must_check for xe_force_wake_get() return
a403ff294bf3 drm/xe: Change return type to void for xe_force_wake_put
^ permalink raw reply [flat|nested] 54+ messages in thread
* ✓ CI.KUnit: success for Fix xe_force_wake_get() failure handling (rev7)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (29 preceding siblings ...)
2024-09-30 20:55 ` ✓ CI.checkpatch: " Patchwork
@ 2024-09-30 20:57 ` Patchwork
2024-09-30 21:08 ` ✓ CI.Build: " Patchwork
` (4 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-09-30 20:57 UTC (permalink / raw)
To: Ghimiray, Himal Prasad; +Cc: intel-xe
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev7)
URL : https://patchwork.freedesktop.org/series/137982/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[20:55:58] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:56:03] 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)
| ^~~~~~~~~~~~~~~~~
[20:56:31] Starting KUnit Kernel (1/1)...
[20:56:31] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:56:31] =================== guc_dbm (7 subtests) ===================
[20:56:31] [PASSED] test_empty
[20:56:31] [PASSED] test_default
[20:56:31] ======================== test_size ========================
[20:56:31] [PASSED] 4
[20:56:31] [PASSED] 8
[20:56:31] [PASSED] 32
[20:56:31] [PASSED] 256
[20:56:31] ==================== [PASSED] test_size ====================
[20:56:31] ======================= test_reuse ========================
[20:56:31] [PASSED] 4
[20:56:31] [PASSED] 8
[20:56:31] [PASSED] 32
[20:56:31] [PASSED] 256
[20:56:31] =================== [PASSED] test_reuse ====================
[20:56:31] =================== test_range_overlap ====================
[20:56:31] [PASSED] 4
[20:56:31] [PASSED] 8
[20:56:31] [PASSED] 32
[20:56:31] [PASSED] 256
[20:56:31] =============== [PASSED] test_range_overlap ================
[20:56:31] =================== test_range_compact ====================
[20:56:31] [PASSED] 4
[20:56:31] [PASSED] 8
[20:56:31] [PASSED] 32
[20:56:31] [PASSED] 256
[20:56:31] =============== [PASSED] test_range_compact ================
[20:56:31] ==================== test_range_spare =====================
[20:56:31] [PASSED] 4
[20:56:31] [PASSED] 8
[20:56:31] [PASSED] 32
[20:56:31] [PASSED] 256
[20:56:31] ================ [PASSED] test_range_spare =================
[20:56:31] ===================== [PASSED] guc_dbm =====================
[20:56:31] =================== guc_idm (6 subtests) ===================
[20:56:31] [PASSED] bad_init
[20:56:31] [PASSED] no_init
[20:56:31] [PASSED] init_fini
[20:56:31] [PASSED] check_used
[20:56:31] [PASSED] check_quota
[20:56:31] [PASSED] check_all
[20:56:31] ===================== [PASSED] guc_idm =====================
[20:56:31] ================== no_relay (3 subtests) ===================
[20:56:31] [PASSED] xe_drops_guc2pf_if_not_ready
[20:56:31] [PASSED] xe_drops_guc2vf_if_not_ready
[20:56:31] [PASSED] xe_rejects_send_if_not_ready
[20:56:31] ==================== [PASSED] no_relay =====================
[20:56:31] ================== pf_relay (14 subtests) ==================
[20:56:31] [PASSED] pf_rejects_guc2pf_too_short
[20:56:31] [PASSED] pf_rejects_guc2pf_too_long
[20:56:31] [PASSED] pf_rejects_guc2pf_no_payload
[20:56:31] [PASSED] pf_fails_no_payload
[20:56:31] [PASSED] pf_fails_bad_origin
[20:56:31] [PASSED] pf_fails_bad_type
[20:56:31] [PASSED] pf_txn_reports_error
[20:56:31] [PASSED] pf_txn_sends_pf2guc
[20:56:31] [PASSED] pf_sends_pf2guc
[20:56:31] [SKIPPED] pf_loopback_nop
[20:56:31] [SKIPPED] pf_loopback_echo
[20:56:31] [SKIPPED] pf_loopback_fail
[20:56:31] [SKIPPED] pf_loopback_busy
[20:56:31] [SKIPPED] pf_loopback_retry
[20:56:31] ==================== [PASSED] pf_relay =====================
[20:56:31] ================== vf_relay (3 subtests) ===================
[20:56:31] [PASSED] vf_rejects_guc2vf_too_short
[20:56:31] [PASSED] vf_rejects_guc2vf_too_long
[20:56:31] [PASSED] vf_rejects_guc2vf_no_payload
[20:56:31] ==================== [PASSED] vf_relay =====================
[20:56:31] ================= pf_service (11 subtests) =================
[20:56:31] [PASSED] pf_negotiate_any
[20:56:31] [PASSED] pf_negotiate_base_match
[20:56:31] [PASSED] pf_negotiate_base_newer
[20:56:31] [PASSED] pf_negotiate_base_next
[20:56:31] [SKIPPED] pf_negotiate_base_older
[20:56:31] [PASSED] pf_negotiate_base_prev
[20:56:31] [PASSED] pf_negotiate_latest_match
[20:56:31] [PASSED] pf_negotiate_latest_newer
[20:56:31] [PASSED] pf_negotiate_latest_next
[20:56:31] [SKIPPED] pf_negotiate_latest_older
[20:56:31] [SKIPPED] pf_negotiate_latest_prev
[20:56:31] =================== [PASSED] pf_service ====================
[20:56:31] ===================== lmtt (1 subtest) =====================
[20:56:31] ======================== test_ops =========================
[20:56:31] [PASSED] 2-level
[20:56:31] [PASSED] multi-level
[20:56:31] ==================== [PASSED] test_ops =====================
[20:56:31] ====================== [PASSED] lmtt =======================
[20:56:31] =================== xe_mocs (2 subtests) ===================
[20:56:31] ================ xe_live_mocs_kernel_kunit ================
[20:56:31] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[20:56:31] ================ xe_live_mocs_reset_kunit =================
[20:56:31] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[20:56:31] ==================== [SKIPPED] xe_mocs =====================
[20:56:31] ================= xe_migrate (2 subtests) ==================
[20:56:31] ================= xe_migrate_sanity_kunit =================
[20:56:31] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[20:56:31] ================== xe_validate_ccs_kunit ==================
[20:56:31] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[20:56:31] =================== [SKIPPED] xe_migrate ===================
[20:56:31] ================== xe_dma_buf (1 subtest) ==================
[20:56:31] ==================== xe_dma_buf_kunit =====================
[20:56:31] ================ [SKIPPED] xe_dma_buf_kunit ================
[20:56:31] =================== [SKIPPED] xe_dma_buf ===================
[20:56:31] ==================== xe_bo (3 subtests) ====================
[20:56:31] ================== xe_ccs_migrate_kunit ===================
[20:56:31] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[20:56:31] ==================== xe_bo_evict_kunit ====================
[20:56:31] =============== [SKIPPED] xe_bo_evict_kunit ================
[20:56:31] =================== xe_bo_shrink_kunit ====================
[20:56:31] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[20:56:31] ===================== [SKIPPED] xe_bo ======================
[20:56:31] ==================== args (11 subtests) ====================
[20:56:31] [PASSED] count_args_test
[20:56:31] [PASSED] call_args_example
[20:56:31] [PASSED] call_args_test
[20:56:31] [PASSED] drop_first_arg_example
[20:56:31] [PASSED] drop_first_arg_test
[20:56:31] [PASSED] first_arg_example
[20:56:31] [PASSED] first_arg_test
[20:56:31] [PASSED] last_arg_example
[20:56:31] [PASSED] last_arg_test
[20:56:31] [PASSED] pick_arg_example
[20:56:31] [PASSED] sep_comma_examplestty: 'standard input': Inappropriate ioctl for device
[20:56:31] ====================== [PASSED] args =======================
[20:56:31] =================== xe_pci (2 subtests) ====================
[20:56:31] [PASSED] xe_gmdid_graphics_ip
[20:56:31] [PASSED] xe_gmdid_media_ip
[20:56:31] ===================== [PASSED] xe_pci ======================
[20:56:31] =================== xe_rtp (2 subtests) ====================
[20:56:31] =============== xe_rtp_process_to_sr_tests ================
[20:56:31] [PASSED] coalesce-same-reg
[20:56:31] [PASSED] no-match-no-add
[20:56:31] [PASSED] match-or
[20:56:31] [PASSED] match-or-xfail
[20:56:31] [PASSED] no-match-no-add-multiple-rules
[20:56:31] [PASSED] two-regs-two-entries
[20:56:31] [PASSED] clr-one-set-other
[20:56:31] [PASSED] set-field
[20:56:31] [PASSED] conflict-duplicate
[20:56:31] [PASSED] conflict-not-disjoint
[20:56:31] [PASSED] conflict-reg-type
[20:56:31] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[20:56:31] ================== xe_rtp_process_tests ===================
[20:56:31] [PASSED] active1
[20:56:31] [PASSED] active2
[20:56:31] [PASSED] active-inactive
[20:56:31] [PASSED] inactive-active
[20:56:31] [PASSED] inactive-1st_or_active-inactive
[20:56:31] [PASSED] inactive-2nd_or_active-inactive
[20:56:31] [PASSED] inactive-last_or_active-inactive
[20:56:31] [PASSED] inactive-no_or_active-inactive
[20:56:31] ============== [PASSED] xe_rtp_process_tests ===============
[20:56:31] ===================== [PASSED] xe_rtp ======================
[20:56:31] ==================== xe_wa (1 subtest) =====================
[20:56:31] ======================== xe_wa_gt =========================
[20:56:31] [PASSED] TIGERLAKE (B0)
[20:56:31] [PASSED] DG1 (A0)
[20:56:31] [PASSED] DG1 (B0)
[20:56:31] [PASSED] ALDERLAKE_S (A0)
[20:56:31] [PASSED] ALDERLAKE_S (B0)
[20:56:31] [PASSED] ALDERLAKE_S (C0)
[20:56:31] [PASSED] ALDERLAKE_S (D0)
[20:56:31] [PASSED] ALDERLAKE_P (A0)
[20:56:31] [PASSED] ALDERLAKE_P (B0)
[20:56:31] [PASSED] ALDERLAKE_P (C0)
[20:56:31] [PASSED] ALDERLAKE_S_RPLS (D0)
[20:56:31] [PASSED] ALDERLAKE_P_RPLU (E0)
[20:56:31] [PASSED] DG2_G10 (C0)
[20:56:31] [PASSED] DG2_G11 (B1)
[20:56:31] [PASSED] DG2_G12 (A1)
[20:56:31] [PASSED] METEORLAKE (g:A0, m:A0)
[20:56:31] [PASSED] METEORLAKE (g:A0, m:A0)
[20:56:31] [PASSED] METEORLAKE (g:A0, m:A0)
[20:56:31] [PASSED] LUNARLAKE (g:A0, m:A0)
[20:56:31] [PASSED] LUNARLAKE (g:B0, m:A0)
[20:56:31] [PASSED] BATTLEMAGE (g:A0, m:A1)
[20:56:31] ==================== [PASSED] xe_wa_gt =====================
[20:56:31] ====================== [PASSED] xe_wa ======================
[20:56:31] ============================================================
[20:56:31] Testing complete. Ran 122 tests: passed: 106, skipped: 16
[20:56:31] Elapsed time: 32.537s total, 4.402s configuring, 27.919s building, 0.207s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[20:56:31] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:56:33] 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)
| ^~~~~~~~~~~~~~~~~
[20:56:55] Starting KUnit Kernel (1/1)...
[20:56:55] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:56:56] ============ drm_test_pick_cmdline (2 subtests) ============
[20:56:56] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[20:56:56] =============== drm_test_pick_cmdline_named ===============
[20:56:56] [PASSED] NTSC
[20:56:56] [PASSED] NTSC-J
[20:56:56] [PASSED] PAL
[20:56:56] [PASSED] PAL-M
[20:56:56] =========== [PASSED] drm_test_pick_cmdline_named ===========
[20:56:56] ============== [PASSED] drm_test_pick_cmdline ==============
[20:56:56] ================== drm_buddy (7 subtests) ==================
[20:56:56] [PASSED] drm_test_buddy_alloc_limit
[20:56:56] [PASSED] drm_test_buddy_alloc_optimistic
[20:56:56] [PASSED] drm_test_buddy_alloc_pessimistic
[20:56:56] [PASSED] drm_test_buddy_alloc_pathological
[20:56:56] [PASSED] drm_test_buddy_alloc_contiguous
[20:56:56] [PASSED] drm_test_buddy_alloc_clear
[20:56:56] [PASSED] drm_test_buddy_alloc_range_bias
[20:56:56] ==================== [PASSED] drm_buddy ====================
[20:56:56] ============= drm_cmdline_parser (40 subtests) =============
[20:56:56] [PASSED] drm_test_cmdline_force_d_only
[20:56:56] [PASSED] drm_test_cmdline_force_D_only_dvi
[20:56:56] [PASSED] drm_test_cmdline_force_D_only_hdmi
[20:56:56] [PASSED] drm_test_cmdline_force_D_only_not_digital
[20:56:56] [PASSED] drm_test_cmdline_force_e_only
[20:56:56] [PASSED] drm_test_cmdline_res
[20:56:56] [PASSED] drm_test_cmdline_res_vesa
[20:56:56] [PASSED] drm_test_cmdline_res_vesa_rblank
[20:56:56] [PASSED] drm_test_cmdline_res_rblank
[20:56:56] [PASSED] drm_test_cmdline_res_bpp
[20:56:56] [PASSED] drm_test_cmdline_res_refresh
[20:56:56] [PASSED] drm_test_cmdline_res_bpp_refresh
[20:56:56] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[20:56:56] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[20:56:56] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[20:56:56] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[20:56:56] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[20:56:56] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[20:56:56] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[20:56:56] [PASSED] drm_test_cmdline_res_margins_force_on
[20:56:56] [PASSED] drm_test_cmdline_res_vesa_margins
[20:56:56] [PASSED] drm_test_cmdline_name
[20:56:56] [PASSED] drm_test_cmdline_name_bpp
[20:56:56] [PASSED] drm_test_cmdline_name_option
[20:56:56] [PASSED] drm_test_cmdline_name_bpp_option
[20:56:56] [PASSED] drm_test_cmdline_rotate_0
[20:56:56] [PASSED] drm_test_cmdline_rotate_90
[20:56:56] [PASSED] drm_test_cmdline_rotate_180
[20:56:56] [PASSED] drm_test_cmdline_rotate_270
[20:56:56] [PASSED] drm_test_cmdline_hmirror
[20:56:56] [PASSED] drm_test_cmdline_vmirror
[20:56:56] [PASSED] drm_test_cmdline_margin_options
[20:56:56] [PASSED] drm_test_cmdline_multiple_options
[20:56:56] [PASSED] drm_test_cmdline_bpp_extra_and_option
[20:56:56] [PASSED] drm_test_cmdline_extra_and_option
[20:56:56] [PASSED] drm_test_cmdline_freestanding_options
[20:56:56] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[20:56:56] [PASSED] drm_test_cmdline_panel_orientation
[20:56:56] ================ drm_test_cmdline_invalid =================
[20:56:56] [PASSED] margin_only
[20:56:56] [PASSED] interlace_only
[20:56:56] [PASSED] res_missing_x
[20:56:56] [PASSED] res_missing_y
[20:56:56] [PASSED] res_bad_y
[20:56:56] [PASSED] res_missing_y_bpp
[20:56:56] [PASSED] res_bad_bpp
[20:56:56] [PASSED] res_bad_refresh
[20:56:56] [PASSED] res_bpp_refresh_force_on_off
[20:56:56] [PASSED] res_invalid_mode
[20:56:56] [PASSED] res_bpp_wrong_place_mode
[20:56:56] [PASSED] name_bpp_refresh
[20:56:56] [PASSED] name_refresh
[20:56:56] [PASSED] name_refresh_wrong_mode
[20:56:56] [PASSED] name_refresh_invalid_mode
[20:56:56] [PASSED] rotate_multiple
[20:56:56] [PASSED] rotate_invalid_val
[20:56:56] [PASSED] rotate_truncated
[20:56:56] [PASSED] invalid_option
[20:56:56] [PASSED] invalid_tv_option
[20:56:56] [PASSED] truncated_tv_option
[20:56:56] ============ [PASSED] drm_test_cmdline_invalid =============
[20:56:56] =============== drm_test_cmdline_tv_options ===============
[20:56:56] [PASSED] NTSC
[20:56:56] [PASSED] NTSC_443
[20:56:56] [PASSED] NTSC_J
[20:56:56] [PASSED] PAL
[20:56:56] [PASSED] PAL_M
[20:56:56] [PASSED] PAL_N
[20:56:56] [PASSED] SECAM
[20:56:56] [PASSED] MONO_525
[20:56:56] [PASSED] MONO_625
[20:56:56] =========== [PASSED] drm_test_cmdline_tv_options ===========
[20:56:56] =============== [PASSED] drm_cmdline_parser ================
[20:56:56] ========== drmm_connector_hdmi_init (19 subtests) ==========
[20:56:56] [PASSED] drm_test_connector_hdmi_init_valid
[20:56:56] [PASSED] drm_test_connector_hdmi_init_bpc_8
[20:56:56] [PASSED] drm_test_connector_hdmi_init_bpc_10
[20:56:56] [PASSED] drm_test_connector_hdmi_init_bpc_12
[20:56:56] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[20:56:56] [PASSED] drm_test_connector_hdmi_init_bpc_null
[20:56:56] [PASSED] drm_test_connector_hdmi_init_formats_empty
[20:56:56] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[20:56:56] [PASSED] drm_test_connector_hdmi_init_null_ddc
[20:56:56] [PASSED] drm_test_connector_hdmi_init_null_product
[20:56:56] [PASSED] drm_test_connector_hdmi_init_null_vendor
[20:56:56] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[20:56:56] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[20:56:56] [PASSED] drm_test_connector_hdmi_init_product_valid
[20:56:56] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[20:56:56] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[20:56:56] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[20:56:56] ========= drm_test_connector_hdmi_init_type_valid =========
[20:56:56] [PASSED] HDMI-A
[20:56:56] [PASSED] HDMI-B
[20:56:56] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[20:56:56] ======== drm_test_connector_hdmi_init_type_invalid ========
[20:56:56] [PASSED] Unknown
[20:56:56] [PASSED] VGA
[20:56:56] [PASSED] DVI-I
[20:56:56] [PASSED] DVI-D
[20:56:56] [PASSED] DVI-A
[20:56:56] [PASSED] Composite
[20:56:56] [PASSED] SVIDEO
[20:56:56] [PASSED] LVDS
[20:56:56] [PASSED] Component
[20:56:56] [PASSED] DIN
[20:56:56] [PASSED] DP
[20:56:56] [PASSED] TV
[20:56:56] [PASSED] eDP
[20:56:56] [PASSED] Virtual
[20:56:56] [PASSED] DSI
[20:56:56] [PASSED] DPI
[20:56:56] [PASSED] Writeback
[20:56:56] [PASSED] SPI
[20:56:56] [PASSED] USB
[20:56:56] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[20:56:56] ============ [PASSED] drmm_connector_hdmi_init =============
[20:56:56] ============= drmm_connector_init (3 subtests) =============
[20:56:56] [PASSED] drm_test_drmm_connector_init
[20:56:56] [PASSED] drm_test_drmm_connector_init_null_ddc
[20:56:56] ========= drm_test_drmm_connector_init_type_valid =========
[20:56:56] [PASSED] Unknown
[20:56:56] [PASSED] VGA
[20:56:56] [PASSED] DVI-I
[20:56:56] [PASSED] DVI-D
[20:56:56] [PASSED] DVI-A
[20:56:56] [PASSED] Composite
[20:56:56] [PASSED] SVIDEO
[20:56:56] [PASSED] LVDS
[20:56:56] [PASSED] Component
[20:56:56] [PASSED] DIN
[20:56:56] [PASSED] DP
[20:56:56] [PASSED] HDMI-A
[20:56:56] [PASSED] HDMI-B
[20:56:56] [PASSED] TV
[20:56:56] [PASSED] eDP
[20:56:56] [PASSED] Virtual
[20:56:56] [PASSED] DSI
[20:56:56] [PASSED] DPI
[20:56:56] [PASSED] Writeback
[20:56:56] [PASSED] SPI
[20:56:56] [PASSED] USB
[20:56:56] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[20:56:56] =============== [PASSED] drmm_connector_init ===============
[20:56:56] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[20:56:56] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[20:56:56] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[20:56:56] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[20:56:56] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[20:56:56] ========== drm_test_get_tv_mode_from_name_valid ===========
[20:56:56] [PASSED] NTSC
[20:56:56] [PASSED] NTSC-443
[20:56:56] [PASSED] NTSC-J
[20:56:56] [PASSED] PAL
[20:56:56] [PASSED] PAL-M
[20:56:56] [PASSED] PAL-N
[20:56:56] [PASSED] SECAM
[20:56:56] [PASSED] Mono
[20:56:56] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[20:56:56] [PASSED] drm_test_get_tv_mode_from_name_truncated
[20:56:56] ============ [PASSED] drm_get_tv_mode_from_name ============
[20:56:56] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[20:56:56] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[20:56:56] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[20:56:56] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[20:56:56] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[20:56:56] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[20:56:56] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[20:56:56] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[20:56:56] [PASSED] VIC 96
[20:56:56] [PASSED] VIC 97
[20:56:56] [PASSED] VIC 101
[20:56:56] [PASSED] VIC 102
[20:56:56] [PASSED] VIC 106
[20:56:56] [PASSED] VIC 107
[20:56:56] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[20:56:56] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[20:56:56] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[20:56:56] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[20:56:56] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[20:56:56] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[20:56:56] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[20:56:56] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[20:56:56] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[20:56:56] [PASSED] Automatic
[20:56:56] [PASSED] Full
[20:56:56] [PASSED] Limited 16:235
[20:56:56] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[20:56:56] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[20:56:56] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[20:56:56] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[20:56:56] === drm_test_drm_hdmi_connector_get_output_format_name ====
[20:56:56] [PASSED] RGB
[20:56:56] [PASSED] YUV 4:2:0
[20:56:56] [PASSED] YUV 4:2:2
[20:56:56] [PASSED] YUV 4:4:4
[20:56:56] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[20:56:56] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[20:56:56] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[20:56:56] ============= drm_damage_helper (21 subtests) ==============
[20:56:56] [PASSED] drm_test_damage_iter_no_damage
[20:56:56] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[20:56:56] [PASSED] drm_test_damage_iter_no_damage_src_moved
[20:56:56] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[20:56:56] [PASSED] drm_test_damage_iter_no_damage_not_visible
[20:56:56] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[20:56:56] [PASSED] drm_test_damage_iter_no_damage_no_fb
[20:56:56] [PASSED] drm_test_damage_iter_simple_damage
[20:56:56] [PASSED] drm_test_damage_iter_single_damage
[20:56:56] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[20:56:56] [PASSED] drm_test_damage_iter_single_damage_outside_src
[20:56:56] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[20:56:56] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[20:56:56] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[20:56:56] [PASSED] drm_test_damage_iter_single_damage_src_moved
[20:56:56] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[20:56:56] [PASSED] drm_test_damage_iter_damage
[20:56:56] [PASSED] drm_test_damage_iter_damage_one_intersect
[20:56:56] [PASSED] drm_test_damage_iter_damage_one_outside
[20:56:56] [PASSED] drm_test_damage_iter_damage_src_moved
[20:56:56] [PASSED] drm_test_damage_iter_damage_not_visible
[20:56:56] ================ [PASSED] drm_damage_helper ================
[20:56:56] ============== drm_dp_mst_helper (3 subtests) ==============
[20:56:56] ============== drm_test_dp_mst_calc_pbn_mode ==============
[20:56:56] [PASSED] Clock 154000 BPP 30 DSC disabled
[20:56:56] [PASSED] Clock 234000 BPP 30 DSC disabled
[20:56:56] [PASSED] Clock 297000 BPP 24 DSC disabled
[20:56:56] [PASSED] Clock 332880 BPP 24 DSC enabled
[20:56:56] [PASSED] Clock 324540 BPP 24 DSC enabled
[20:56:56] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[20:56:56] ============== drm_test_dp_mst_calc_pbn_div ===============
[20:56:56] [PASSED] Link rate 2000000 lane count 4
[20:56:56] [PASSED] Link rate 2000000 lane count 2
[20:56:56] [PASSED] Link rate 2000000 lane count 1
[20:56:56] [PASSED] Link rate 1350000 lane count 4
[20:56:56] [PASSED] Link rate 1350000 lane count 2
[20:56:56] [PASSED] Link rate 1350000 lane count 1
[20:56:56] [PASSED] Link rate 1000000 lane count 4
[20:56:56] [PASSED] Link rate 1000000 lane count 2
[20:56:56] [PASSED] Link rate 1000000 lane count 1
[20:56:56] [PASSED] Link rate 810000 lane count 4
[20:56:56] [PASSED] Link rate 810000 lane count 2
[20:56:56] [PASSED] Link rate 810000 lane count 1
[20:56:56] [PASSED] Link rate 540000 lane count 4
[20:56:56] [PASSED] Link rate 540000 lane count 2
[20:56:56] [PASSED] Link rate 540000 lane count 1
[20:56:56] [PASSED] Link rate 270000 lane count 4
[20:56:56] [PASSED] Link rate 270000 lane count 2
[20:56:56] [PASSED] Link rate 270000 lane count 1
[20:56:56] [PASSED] Link rate 162000 lane count 4
[20:56:56] [PASSED] Link rate 162000 lane count 2
[20:56:56] [PASSED] Link rate 162000 lane count 1
[20:56:56] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[20:56:56] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[20:56:56] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[20:56:56] [PASSED] DP_POWER_UP_PHY with port number
[20:56:56] [PASSED] DP_POWER_DOWN_PHY with port number
[20:56:56] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[20:56:56] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[20:56:56] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[20:56:56] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[20:56:56] [PASSED] DP_QUERY_PAYLOAD with port number
[20:56:56] [PASSED] DP_QUERY_PAYLOAD with VCPI
[20:56:56] [PASSED] DP_REMOTE_DPCD_READ with port number
[20:56:56] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[20:56:56] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[20:56:56] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[20:56:56] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[20:56:56] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[20:56:56] [PASSED] DP_REMOTE_I2C_READ with port number
[20:56:56] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[20:56:56] [PASSED] DP_REMOTE_I2C_READ with transactions array
[20:56:56] [PASSED] DP_REMOTE_I2C_WRITE with port number
[20:56:56] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[20:56:56] [PASSED] DP_REMOTE_I2C_WRITE with data array
[20:56:56] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[20:56:56] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[20:56:56] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[20:56:56] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[20:56:56] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[20:56:56] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[20:56:56] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[20:56:56] ================ [PASSED] drm_dp_mst_helper ================
[20:56:56] ================== drm_exec (7 subtests) ===================
[20:56:56] [PASSED] sanitycheck
[20:56:56] [PASSED] test_lock
[20:56:56] [PASSED] test_lock_unlock
[20:56:56] [PASSED] test_duplicates
[20:56:56] [PASSED] test_prepare
[20:56:56] [PASSED] test_prepare_array
[20:56:56] [PASSED] test_multiple_loops
[20:56:56] ==================== [PASSED] drm_exec =====================
[20:56:56] =========== drm_format_helper_test (17 subtests) ===========
[20:56:56] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[20:56:56] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[20:56:56] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[20:56:56] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[20:56:56] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[20:56:56] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[20:56:56] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[20:56:56] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[20:56:56] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[20:56:56] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[20:56:56] ============== drm_test_fb_xrgb8888_to_mono ===============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[20:56:56] ==================== drm_test_fb_swab =====================
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ================ [PASSED] drm_test_fb_swab =================
[20:56:56] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[20:56:56] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[20:56:56] [PASSED] single_pixel_source_buffer
[20:56:56] [PASSED] single_pixel_clip_rectangle
[20:56:56] [PASSED] well_known_colors
[20:56:56] [PASSED] destination_pitch
[20:56:56] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[20:56:56] ================= drm_test_fb_clip_offset =================
[20:56:56] [PASSED] pass through
[20:56:56] [PASSED] horizontal offset
[20:56:56] [PASSED] vertical offset
[20:56:56] [PASSED] horizontal and vertical offset
[20:56:56] [PASSED] horizontal offset (custom pitch)
[20:56:56] [PASSED] vertical offset (custom pitch)
[20:56:56] [PASSED] horizontal and vertical offset (custom pitch)
[20:56:56] ============= [PASSED] drm_test_fb_clip_offset =============
[20:56:56] ============== drm_test_fb_build_fourcc_list ==============
[20:56:56] [PASSED] no native formats
[20:56:56] [PASSED] XRGB8888 as native format
[20:56:56] [PASSED] remove duplicates
[20:56:56] [PASSED] convert alpha formats
[20:56:56] [PASSED] random formats
[20:56:56] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[20:56:56] =================== drm_test_fb_memcpy ====================
[20:56:56] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[20:56:56] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[20:56:56] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[20:56:56] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[20:56:56] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[20:56:56] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[20:56:56] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[20:56:56] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[20:56:56] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[20:56:56] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[20:56:56] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[20:56:56] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[20:56:56] =============== [PASSED] drm_test_fb_memcpy ================
[20:56:56] ============= [PASSED] drm_format_helper_test ==============
[20:56:56] ================= drm_format (18 subtests) =================
[20:56:56] [PASSED] drm_test_format_block_width_invalid
[20:56:56] [PASSED] drm_test_format_block_width_one_plane
[20:56:56] [PASSED] drm_test_format_block_width_two_plane
[20:56:56] [PASSED] drm_test_format_block_width_three_plane
[20:56:56] [PASSED] drm_test_format_block_width_tiled
[20:56:56] [PASSED] drm_test_format_block_height_invalid
[20:56:56] [PASSED] drm_test_format_block_height_one_plane
[20:56:56] [PASSED] drm_test_format_block_height_two_plane
[20:56:56] [PASSED] drm_test_format_block_height_three_plane
[20:56:56] [PASSED] drm_test_format_block_height_tiled
[20:56:56] [PASSED] drm_test_format_min_pitch_invalid
[20:56:56] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[20:56:56] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[20:56:56] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[20:56:56] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[20:56:56] [PASSED] drm_test_format_min_pitch_two_plane
[20:56:56] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[20:56:56] [PASSED] drm_test_format_min_pitch_tiled
[20:56:56] =================== [PASSED] drm_format ====================
[20:56:56] ============== drm_framebuffer (10 subtests) ===============
[20:56:56] ========== drm_test_framebuffer_check_src_coords ==========
[20:56:56] [PASSED] Success: source fits into fb
[20:56:56] [PASSED] Fail: overflowing fb with x-axis coordinate
[20:56:56] [PASSED] Fail: overflowing fb with y-axis coordinate
[20:56:56] [PASSED] Fail: overflowing fb with source width
[20:56:56] [PASSED] Fail: overflowing fb with source height
[20:56:56] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[20:56:56] [PASSED] drm_test_framebuffer_cleanup
[20:56:56] =============== drm_test_framebuffer_create ===============
[20:56:56] [PASSED] ABGR8888 normal sizes
[20:56:56] [PASSED] ABGR8888 max sizes
[20:56:56] [PASSED] ABGR8888 pitch greater than min required
[20:56:56] [PASSED] ABGR8888 pitch less than min required
[20:56:56] [PASSED] ABGR8888 Invalid width
[20:56:56] [PASSED] ABGR8888 Invalid buffer handle
[20:56:56] [PASSED] No pixel format
[20:56:56] [PASSED] ABGR8888 Width 0
[20:56:56] [PASSED] ABGR8888 Height 0
[20:56:56] [PASSED] ABGR8888 Out of bound height * pitch combination
[20:56:56] [PASSED] ABGR8888 Large buffer offset
[20:56:56] [PASSED] ABGR8888 Buffer offset for inexistent plane
[20:56:56] [PASSED] ABGR8888 Invalid flag
[20:56:56] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[20:56:56] [PASSED] ABGR8888 Valid buffer modifier
[20:56:56] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[20:56:56] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[20:56:56] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[20:56:56] [PASSED] NV12 Normal sizes
[20:56:56] [PASSED] NV12 Max sizes
[20:56:56] [PASSED] NV12 Invalid pitch
[20:56:56] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[20:56:56] [PASSED] NV12 different modifier per-plane
[20:56:56] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[20:56:56] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[20:56:56] [PASSED] NV12 Modifier for inexistent plane
[20:56:56] [PASSED] NV12 Handle for inexistent plane
[20:56:56] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[20:56:56] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[20:56:56] [PASSED] YVU420 Normal sizes
[20:56:56] [PASSED] YVU420 Max sizes
[20:56:56] [PASSED] YVU420 Invalid pitch
[20:56:56] [PASSED] YVU420 Different pitches
[20:56:56] [PASSED] YVU420 Different buffer offsets/pitches
[20:56:56] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[20:56:56] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[20:56:56] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[20:56:56] [PASSED] YVU420 Valid modifier
[20:56:56] [PASSED] YVU420 Different modifiers per plane
[20:56:56] [PASSED] YVU420 Modifier for inexistent plane
[20:56:56] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[20:56:56] [PASSED] X0L2 Normal sizes
[20:56:56] [PASSED] X0L2 Max sizes
[20:56:56] [PASSED] X0L2 Invalid pitch
[20:56:56] [PASSED] X0L2 Pitch greater than minimum required
[20:56:56] [PASSED] X0L2 Handle for inexistent plane
[20:56:56] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[20:56:56] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[20:56:56] [PASSED] X0L2 Valid modifier
[20:56:56] [PASSED] X0L2 Modifier for inexistent plane
[20:56:56] =========== [PASSED] drm_test_framebuffer_create ===========
[20:56:56] [PASSED] drm_test_framebuffer_free
[20:56:56] [PASSED] drm_test_framebuffer_init
[20:56:56] [PASSED] drm_test_framebuffer_init_bad_format
[20:56:56] [PASSED] drm_test_framebuffer_init_dev_mismatch
[20:56:56] [PASSED] drm_test_framebuffer_lookup
[20:56:56] [PASSED] drm_test_framebuffer_lookup_inexistent
[20:56:56] [PASSED] drm_test_framebuffer_modifiers_not_supported
[20:56:56] ================= [PASSED] drm_framebuffer =================
[20:56:56] ================ drm_gem_shmem (8 subtests) ================
[20:56:56] [PASSED] drm_gem_shmem_test_obj_create
[20:56:56] [PASSED] drm_gem_shmem_test_obj_create_private
[20:56:56] [PASSED] drm_gem_shmem_test_pin_pages
[20:56:56] [PASSED] drm_gem_shmem_test_vmap
[20:56:56] [PASSED] drm_gem_shmem_test_get_pages_sgt
[20:56:56] [PASSED] drm_gem_shmem_test_get_sg_table
[20:56:56] [PASSED] drm_gem_shmem_test_madvise
[20:56:56] [PASSED] drm_gem_shmem_test_purge
[20:56:56] ================== [PASSED] drm_gem_shmem ==================
[20:56:56] === drm_atomic_helper_connector_hdmi_check (22 subtests) ===
[20:56:56] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[20:56:56] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[20:56:56] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[20:56:56] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[20:56:56] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[20:56:56] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[20:56:56] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[20:56:56] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[20:56:56] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[20:56:56] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback
[20:56:56] [PASSED] drm_test_check_max_tmds_rate_format_fallback
[20:56:56] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[20:56:56] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[20:56:56] [PASSED] drm_test_check_output_bpc_dvi
[20:56:56] [PASSED] drm_test_check_output_bpc_format_vic_1
[20:56:56] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[20:56:56] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[20:56:56] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[20:56:56] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[20:56:56] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[20:56:56] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[20:56:56] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[20:56:56] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[20:56:56] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[20:56:56] [PASSED] drm_test_check_broadcast_rgb_value
[20:56:56] [PASSED] drm_test_check_bpc_8_value
[20:56:56] [PASSED] drm_test_check_bpc_10_value
[20:56:56] [PASSED] drm_test_check_bpc_12_value
[20:56:56] [PASSED] drm_test_check_format_value
[20:56:56] [PASSED] drm_test_check_tmds_char_value
[20:56:56] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[20:56:56] ================= drm_managed (2 subtests) =================
[20:56:56] [PASSED] drm_test_managed_release_action
[20:56:56] [PASSED] drm_test_managed_run_action
[20:56:56] =================== [PASSED] drm_managed ===================
[20:56:56] =================== drm_mm (6 subtests) ====================
[20:56:56] [PASSED] drm_test_mm_init
[20:56:56] [PASSED] drm_test_mm_debug
[20:56:56] [PASSED] drm_test_mm_align32
[20:56:56] [PASSED] drm_test_mm_align64
[20:56:56] [PASSED] drm_test_mm_lowest
[20:56:56] [PASSED] drm_test_mm_highest
[20:56:56] ===================== [PASSED] drm_mm ======================
[20:56:56] ============= drm_modes_analog_tv (5 subtests) =============
stty: 'standard input': Inappropriate ioctl for device
[20:56:56] [PASSED] drm_test_modes_analog_tv_mono_576i
[20:56:56] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[20:56:56] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[20:56:56] [PASSED] drm_test_modes_analog_tv_pal_576i
[20:56:56] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[20:56:56] =============== [PASSED] drm_modes_analog_tv ===============
[20:56:56] ============== drm_plane_helper (2 subtests) ===============
[20:56:56] =============== drm_test_check_plane_state ================
[20:56:56] [PASSED] clipping_simple
[20:56:56] [PASSED] clipping_rotate_reflect
[20:56:56] [PASSED] positioning_simple
[20:56:56] [PASSED] upscaling
[20:56:56] [PASSED] downscaling
[20:56:56] [PASSED] rounding1
[20:56:56] [PASSED] rounding2
[20:56:56] [PASSED] rounding3
[20:56:56] [PASSED] rounding4
[20:56:56] =========== [PASSED] drm_test_check_plane_state ============
[20:56:56] =========== drm_test_check_invalid_plane_state ============
[20:56:56] [PASSED] positioning_invalid
[20:56:56] [PASSED] upscaling_invalid
[20:56:56] [PASSED] downscaling_invalid
[20:56:56] ======= [PASSED] drm_test_check_invalid_plane_state ========
[20:56:56] ================ [PASSED] drm_plane_helper =================
[20:56:56] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[20:56:56] ====== drm_test_connector_helper_tv_get_modes_check =======
[20:56:56] [PASSED] None
[20:56:56] [PASSED] PAL
[20:56:56] [PASSED] NTSC
[20:56:56] [PASSED] Both, NTSC Default
[20:56:56] [PASSED] Both, PAL Default
[20:56:56] [PASSED] Both, NTSC Default, with PAL on command-line
[20:56:56] [PASSED] Both, PAL Default, with NTSC on command-line
[20:56:56] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[20:56:56] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[20:56:56] ================== drm_rect (9 subtests) ===================
[20:56:56] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[20:56:56] [PASSED] drm_test_rect_clip_scaled_not_clipped
[20:56:56] [PASSED] drm_test_rect_clip_scaled_clipped
[20:56:56] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[20:56:56] ================= drm_test_rect_intersect =================
[20:56:56] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[20:56:56] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[20:56:56] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[20:56:56] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[20:56:56] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[20:56:56] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[20:56:56] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[20:56:56] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[20:56:56] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[20:56:56] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[20:56:56] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[20:56:56] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[20:56:56] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[20:56:56] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[20:56:56] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[20:56:56] ============= [PASSED] drm_test_rect_intersect =============
[20:56:56] ================ drm_test_rect_calc_hscale ================
[20:56:56] [PASSED] normal use
[20:56:56] [PASSED] out of max range
[20:56:56] [PASSED] out of min range
[20:56:56] [PASSED] zero dst
[20:56:56] [PASSED] negative src
[20:56:56] [PASSED] negative dst
[20:56:56] ============ [PASSED] drm_test_rect_calc_hscale ============
[20:56:56] ================ drm_test_rect_calc_vscale ================
[20:56:56] [PASSED] normal use
[20:56:56] [PASSED] out of max range
[20:56:56] [PASSED] out of min range
[20:56:56] [PASSED] zero dst
[20:56:56] [PASSED] negative src
[20:56:56] [PASSED] negative dst
[20:56:56] ============ [PASSED] drm_test_rect_calc_vscale ============
[20:56:56] ================== drm_test_rect_rotate ===================
[20:56:56] [PASSED] reflect-x
[20:56:56] [PASSED] reflect-y
[20:56:56] [PASSED] rotate-0
[20:56:56] [PASSED] rotate-90
[20:56:56] [PASSED] rotate-180
[20:56:56] [PASSED] rotate-270
[20:56:56] ============== [PASSED] drm_test_rect_rotate ===============
[20:56:56] ================ drm_test_rect_rotate_inv =================
[20:56:56] [PASSED] reflect-x
[20:56:56] [PASSED] reflect-y
[20:56:56] [PASSED] rotate-0
[20:56:56] [PASSED] rotate-90
[20:56:56] [PASSED] rotate-180
[20:56:56] [PASSED] rotate-270
[20:56:56] ============ [PASSED] drm_test_rect_rotate_inv =============
[20:56:56] ==================== [PASSED] drm_rect =====================
[20:56:56] ============================================================
[20:56:56] Testing complete. Ran 531 tests: passed: 531
[20:56:56] Elapsed time: 24.828s total, 1.659s configuring, 22.952s building, 0.176s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[20:56:56] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:56:57] 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
[20:57:05] Starting KUnit Kernel (1/1)...
[20:57:05] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:57:05] ================= ttm_device (5 subtests) ==================
[20:57:05] [PASSED] ttm_device_init_basic
[20:57:05] [PASSED] ttm_device_init_multiple
[20:57:05] [PASSED] ttm_device_fini_basic
[20:57:05] [PASSED] ttm_device_init_no_vma_man
[20:57:05] ================== ttm_device_init_pools ==================
[20:57:05] [PASSED] No DMA allocations, no DMA32 required
[20:57:05] [PASSED] DMA allocations, DMA32 required
[20:57:05] [PASSED] No DMA allocations, DMA32 required
[20:57:05] [PASSED] DMA allocations, no DMA32 required
[20:57:05] ============== [PASSED] ttm_device_init_pools ==============
[20:57:05] =================== [PASSED] ttm_device ====================
[20:57:05] ================== ttm_pool (8 subtests) ===================
[20:57:05] ================== ttm_pool_alloc_basic ===================
[20:57:05] [PASSED] One page
[20:57:05] [PASSED] More than one page
[20:57:05] [PASSED] Above the allocation limit
[20:57:05] [PASSED] One page, with coherent DMA mappings enabled
[20:57:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[20:57:05] ============== [PASSED] ttm_pool_alloc_basic ===============
[20:57:05] ============== ttm_pool_alloc_basic_dma_addr ==============
[20:57:05] [PASSED] One page
[20:57:05] [PASSED] More than one page
[20:57:05] [PASSED] Above the allocation limit
[20:57:05] [PASSED] One page, with coherent DMA mappings enabled
[20:57:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[20:57:05] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[20:57:05] [PASSED] ttm_pool_alloc_order_caching_match
[20:57:05] [PASSED] ttm_pool_alloc_caching_mismatch
[20:57:05] [PASSED] ttm_pool_alloc_order_mismatch
[20:57:05] [PASSED] ttm_pool_free_dma_alloc
[20:57:05] [PASSED] ttm_pool_free_no_dma_alloc
[20:57:05] [PASSED] ttm_pool_fini_basic
[20:57:05] ==================== [PASSED] ttm_pool =====================
[20:57:05] ================ ttm_resource (8 subtests) =================
[20:57:05] ================= ttm_resource_init_basic =================
[20:57:05] [PASSED] Init resource in TTM_PL_SYSTEM
[20:57:05] [PASSED] Init resource in TTM_PL_VRAM
[20:57:05] [PASSED] Init resource in a private placement
[20:57:05] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[20:57:05] ============= [PASSED] ttm_resource_init_basic =============
[20:57:05] [PASSED] ttm_resource_init_pinned
[20:57:05] [PASSED] ttm_resource_fini_basic
[20:57:05] [PASSED] ttm_resource_manager_init_basic
[20:57:05] [PASSED] ttm_resource_manager_usage_basic
[20:57:05] [PASSED] ttm_resource_manager_set_used_basic
[20:57:05] [PASSED] ttm_sys_man_alloc_basic
[20:57:05] [PASSED] ttm_sys_man_free_basic
[20:57:05] ================== [PASSED] ttm_resource ===================
[20:57:05] =================== ttm_tt (15 subtests) ===================
[20:57:05] ==================== ttm_tt_init_basic ====================
[20:57:05] [PASSED] Page-aligned size
[20:57:05] [PASSED] Extra pages requested
[20:57:05] ================ [PASSED] ttm_tt_init_basic ================
[20:57:05] [PASSED] ttm_tt_init_misaligned
[20:57:05] [PASSED] ttm_tt_fini_basic
[20:57:05] [PASSED] ttm_tt_fini_sg
[20:57:05] [PASSED] ttm_tt_fini_shmem
[20:57:05] [PASSED] ttm_tt_create_basic
[20:57:05] [PASSED] ttm_tt_create_invalid_bo_type
[20:57:05] [PASSED] ttm_tt_create_ttm_exists
[20:57:05] [PASSED] ttm_tt_create_failed
[20:57:05] [PASSED] ttm_tt_destroy_basic
[20:57:05] [PASSED] ttm_tt_populate_null_ttm
[20:57:05] [PASSED] ttm_tt_populate_populated_ttm
[20:57:05] [PASSED] ttm_tt_unpopulate_basic
[20:57:05] [PASSED] ttm_tt_unpopulate_empty_ttm
[20:57:05] [PASSED] ttm_tt_swapin_basic
[20:57:05] ===================== [PASSED] ttm_tt ======================
[20:57:05] =================== ttm_bo (14 subtests) ===================
[20:57:05] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[20:57:05] [PASSED] Cannot be interrupted and sleeps
[20:57:05] [PASSED] Cannot be interrupted, locks straight away
[20:57:05] [PASSED] Can be interrupted, sleeps
[20:57:05] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[20:57:05] [PASSED] ttm_bo_reserve_locked_no_sleep
[20:57:05] [PASSED] ttm_bo_reserve_no_wait_ticket
[20:57:05] [PASSED] ttm_bo_reserve_double_resv
[20:57:05] [PASSED] ttm_bo_reserve_interrupted
[20:57:05] [PASSED] ttm_bo_reserve_deadlock
[20:57:05] [PASSED] ttm_bo_unreserve_basic
[20:57:05] [PASSED] ttm_bo_unreserve_pinned
[20:57:05] [PASSED] ttm_bo_unreserve_bulk
[20:57:05] [PASSED] ttm_bo_put_basic
[20:57:05] [PASSED] ttm_bo_put_shared_resv
[20:57:05] [PASSED] ttm_bo_pin_basic
[20:57:05] [PASSED] ttm_bo_pin_unpin_resource
[20:57:05] [PASSED] ttm_bo_multiple_pin_one_unpin
[20:57:05] ===================== [PASSED] ttm_bo ======================
[20:57:05] ============== ttm_bo_validate (22 subtests) ===============
[20:57:05] ============== ttm_bo_init_reserved_sys_man ===============
[20:57:05] [PASSED] Buffer object for userspace
[20:57:05] [PASSED] Kernel buffer object
[20:57:05] [PASSED] Shared buffer object
[20:57:05] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[20:57:05] ============== ttm_bo_init_reserved_mock_man ==============
[20:57:05] [PASSED] Buffer object for userspace
[20:57:05] [PASSED] Kernel buffer object
[20:57:05] [PASSED] Shared buffer object
[20:57:05] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[20:57:05] [PASSED] ttm_bo_init_reserved_resv
[20:57:05] ================== ttm_bo_validate_basic ==================
[20:57:05] [PASSED] Buffer object for userspace
[20:57:05] [PASSED] Kernel buffer object
[20:57:05] [PASSED] Shared buffer object
[20:57:05] ============== [PASSED] ttm_bo_validate_basic ==============
[20:57:05] [PASSED] ttm_bo_validate_invalid_placement
[20:57:05] ============= ttm_bo_validate_same_placement ==============
[20:57:05] [PASSED] System manager
[20:57:05] [PASSED] VRAM manager
[20:57:05] ========= [PASSED] ttm_bo_validate_same_placement ==========
[20:57:05] [PASSED] ttm_bo_validate_failed_alloc
[20:57:05] [PASSED] ttm_bo_validate_pinned
[20:57:05] [PASSED] ttm_bo_validate_busy_placement
[20:57:05] ================ ttm_bo_validate_multihop =================
[20:57:05] [PASSED] Buffer object for userspace
[20:57:05] [PASSED] Kernel buffer object
[20:57:05] [PASSED] Shared buffer object
[20:57:05] ============ [PASSED] ttm_bo_validate_multihop =============
[20:57:05] ========== ttm_bo_validate_no_placement_signaled ==========
[20:57:05] [PASSED] Buffer object in system domain, no page vector
[20:57:05] [PASSED] Buffer object in system domain with an existing page vector
[20:57:05] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[20:57:05] ======== ttm_bo_validate_no_placement_not_signaled ========
[20:57:05] [PASSED] Buffer object for userspace
[20:57:05] [PASSED] Kernel buffer object
[20:57:05] [PASSED] Shared buffer object
[20:57:05] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[20:57:05] [PASSED] ttm_bo_validate_move_fence_signaled
[20:57:05] ========= ttm_bo_validate_move_fence_not_signaled =========
[20:57:05] [PASSED] Waits for GPU
[20:57:05] [PASSED] Tries to lock straight away
[20:57:06] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[20:57:06] [PASSED] ttm_bo_validate_swapout
[20:57:06] [PASSED] ttm_bo_validate_happy_evict
[20:57:06] [PASSED] ttm_bo_validate_all_pinned_evict
[20:57:06] [PASSED] ttm_bo_validate_allowed_only_evict
[20:57:06] [PASSED] ttm_bo_validate_deleted_evict
[20:57:06] [PASSED] ttm_bo_validate_busy_domain_evict
[20:57:06] [PASSED] ttm_bo_validate_evict_gutting
[20:57:06] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[20:57:06] ================= [PASSED] ttm_bo_validate =================
[20:57:06] ============================================================
[20:57:06] Testing complete. Ran 102 tests: passed: 102
[20:57:06] Elapsed time: 9.831s total, 1.636s configuring, 7.578s building, 0.548s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 54+ messages in thread
* ✓ CI.Build: success for Fix xe_force_wake_get() failure handling (rev7)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (30 preceding siblings ...)
2024-09-30 20:57 ` ✓ CI.KUnit: " Patchwork
@ 2024-09-30 21:08 ` Patchwork
2024-09-30 21:10 ` ✗ CI.Hooks: failure " Patchwork
` (3 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-09-30 21:08 UTC (permalink / raw)
To: Ghimiray, Himal Prasad; +Cc: intel-xe
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev7)
URL : https://patchwork.freedesktop.org/series/137982/
State : success
== Summary ==
lib/modules/6.12.0-rc1-xe/kernel/sound/core/snd-hwdep.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/core/snd.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/core/snd-pcm.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/core/snd-compress.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/core/snd-timer.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soundcore.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/intel/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/intel/atom/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/intel/atom/sst/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-acpi.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-core.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/intel/common/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/intel/common/snd-soc-acpi-intel-match.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/amd/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/amd/acp/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/amd/acp/snd-soc-acpi-amd-match.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/amd/snd-acp-config.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-tgl.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-mlink.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-ptl.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-cnl.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-lnl.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-common.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-generic.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-mtl.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/amd/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/amd/snd-sof-amd-renoir.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/amd/snd-sof-amd-acp.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/snd-sof-utils.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/snd-sof-pci.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/snd-sof.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/snd-sof-probes.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/xtensa/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/sof/xtensa/snd-sof-xtensa-dsp.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/snd-soc-core.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/snd-soc-acpi.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/codecs/
lib/modules/6.12.0-rc1-xe/kernel/sound/soc/codecs/snd-soc-hdac-hda.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/hda/
lib/modules/6.12.0-rc1-xe/kernel/sound/hda/snd-intel-sdw-acpi.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/hda/ext/
lib/modules/6.12.0-rc1-xe/kernel/sound/hda/ext/snd-hda-ext-core.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/hda/snd-intel-dspcfg.ko
lib/modules/6.12.0-rc1-xe/kernel/sound/hda/snd-hda-core.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/kernel/
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/kernel/msr.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/kernel/cpuid.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/crypto/
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/crypto/sha512-ssse3.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/crypto/crct10dif-pclmul.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/crypto/ghash-clmulni-intel.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/crypto/sha1-ssse3.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/crypto/crc32-pclmul.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/crypto/sha256-ssse3.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/crypto/aesni-intel.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/crypto/polyval-clmulni.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/events/
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/events/intel/
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/events/intel/intel-cstate.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/events/rapl.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/kvm/
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.12.0-rc1-xe/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/
lib/modules/6.12.0-rc1-xe/kernel/crypto/crypto_simd.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/cmac.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/ccm.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/cryptd.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/polyval-generic.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/async_tx/
lib/modules/6.12.0-rc1-xe/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.12.0-rc1-xe/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.12.0-rc1-xe/build
lib/modules/6.12.0-rc1-xe/modules.alias.bin
lib/modules/6.12.0-rc1-xe/modules.builtin
lib/modules/6.12.0-rc1-xe/modules.softdep
lib/modules/6.12.0-rc1-xe/modules.alias
lib/modules/6.12.0-rc1-xe/modules.order
lib/modules/6.12.0-rc1-xe/modules.symbols
lib/modules/6.12.0-rc1-xe/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1727730513:package_x86_64_nodebug\r\e[0K'
^[[0Ksection_end:1727730513:package_x86_64_nodebug
^[[0K
+ sync
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 54+ messages in thread
* ✗ CI.Hooks: failure for Fix xe_force_wake_get() failure handling (rev7)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (31 preceding siblings ...)
2024-09-30 21:08 ` ✓ CI.Build: " Patchwork
@ 2024-09-30 21:10 ` Patchwork
2024-09-30 21:12 ` ✓ CI.checksparse: success " Patchwork
` (2 subsequent siblings)
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-09-30 21:10 UTC (permalink / raw)
To: Ghimiray, Himal Prasad; +Cc: intel-xe
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev7)
URL : https://patchwork.freedesktop.org/series/137982/
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
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool
UPD include/generated/utsrelease.h
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/arch/x86/special.o
CC /workspace/kernel/build64-default/tools/objtool/libstring.o
CC /workspace/kernel/build64-default/tools/objtool/libctype.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
CC /workspace/kernel/build64-default/tools/objtool/str_error_r.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
UPD include/generated/uapi/linux/version.h
WRAP arch/x86/include/generated/uapi/asm/ioctl.h
WRAP arch/x86/include/generated/uapi/asm/fcntl.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h
WRAP arch/x86/include/generated/uapi/asm/ioctls.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.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
SYSTBL arch/x86/include/generated/asm/syscalls_32.h
WRAP arch/x86/include/generated/uapi/asm/resource.h
WRAP arch/x86/include/generated/uapi/asm/sockios.h
WRAP arch/x86/include/generated/uapi/asm/socket.h
WRAP arch/x86/include/generated/uapi/asm/termbits.h
WRAP arch/x86/include/generated/uapi/asm/termios.h
WRAP arch/x86/include/generated/uapi/asm/types.h
HOSTCC arch/x86/tools/relocs_32.o
UPD include/generated/compile.h
HOSTCC arch/x86/tools/relocs_64.o
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
WRAP arch/x86/include/generated/asm/mmzone.h
WRAP arch/x86/include/generated/asm/irq_regs.h
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
HOSTCC scripts/kallsyms
WRAP arch/x86/include/generated/asm/rwonce.h
HOSTCC scripts/sorttable
WRAP arch/x86/include/generated/asm/unaligned.h
HOSTCC scripts/asn1_compiler
HOSTCC scripts/selinux/genheaders/genheaders
HOSTCC scripts/selinux/mdp/mdp
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-instrumented.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.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 ipc/util.o
CC init/do_mounts_initrd.o
CC ipc/msgutil.o
UPD init/utsversion-tmp.h
CC init/initramfs.o
CC ipc/msg.o
CC ipc/sem.o
CC init/calibrate.o
CC io_uring/io_uring.o
CC block/bdev.o
CC security/commoncap.o
CC mm/filemap.o
CC ipc/shm.o
CC arch/x86/realmode/init.o
CC security/lsm_syscalls.o
AS arch/x86/lib/atomic64_cx8_32.o
CC block/fops.o
AR arch/x86/crypto/built-in.a
CC arch/x86/power/cpu.o
CC security/keys/gc.o
GEN security/selinux/flask.h security/selinux/av_permissions.h
CC arch/x86/pci/i386.o
AR arch/x86/net/built-in.a
CC arch/x86/video/video-common.o
CC security/integrity/iint.o
AR virt/lib/built-in.a
AR net/802/built-in.a
CC block/partitions/core.o
CC arch/x86/events/amd/core.o
CC fs/nfs_common/nfsacl.o
CC net/ethernet/eth.o
CC arch/x86/events/intel/core.o
CC arch/x86/mm/pat/set_memory.o
CC arch/x86/events/zhaoxin/core.o
CC net/core/sock.o
CC security/selinux/avc.o
AR drivers/cache/built-in.a
AR arch/x86/platform/atom/built-in.a
AR arch/x86/virt/svm/built-in.a
CC arch/x86/kernel/fpu/init.o
AR virt/built-in.a
CC security/selinux/hooks.o
CC lib/math/div64.o
CC io_uring/opdef.o
CC fs/notify/dnotify/dnotify.o
AR drivers/irqchip/built-in.a
CC sound/core/seq/seq.o
CC arch/x86/kernel/fpu/bugs.o
AR arch/x86/virt/vmx/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
AR arch/x86/virt/built-in.a
CC arch/x86/entry/vdso/vma.o
AR drivers/bus/mhi/built-in.a
CC arch/x86/kernel/fpu/core.o
AR drivers/bus/built-in.a
CC arch/x86/platform/efi/memmap.o
CC kernel/sched/core.o
CC arch/x86/lib/cmdline.o
AR drivers/pwm/built-in.a
CC crypto/asymmetric_keys/asymmetric_type.o
AR drivers/leds/trigger/built-in.a
AR drivers/leds/blink/built-in.a
AR drivers/leds/simple/built-in.a
CC drivers/leds/led-core.o
CC crypto/api.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 lib/math/int_log.o
CC drivers/leds/led-class.o
GEN usr/initramfs_data.cpio
COPY usr/initramfs_inc_data
AS usr/initramfs_data.o
AR usr/built-in.a
HOSTCC certs/extract-cert
CC lib/math/int_pow.o
AS arch/x86/realmode/rm/header.o
CC lib/crypto/mpi/generic_mpih-lshift.o
AS arch/x86/realmode/rm/trampoline_32.o
CC lib/math/int_sqrt.o
AS arch/x86/realmode/rm/stack.o
AS arch/x86/realmode/rm/reboot.o
AS arch/x86/realmode/rm/wakeup_asm.o
CC arch/x86/realmode/rm/wakemain.o
CC lib/math/reciprocal_div.o
CC sound/core/seq/seq_lock.o
CC arch/x86/realmode/rm/video-mode.o
CC arch/x86/lib/delay.o
AS arch/x86/realmode/rm/copy.o
CC lib/math/rational.o
CC block/partitions/msdos.o
AR arch/x86/video/built-in.a
CC security/integrity/integrity_audit.o
CERT certs/x509_certificate_list
CERT certs/signing_key.x509
AS certs/system_certificates.o
AS arch/x86/realmode/rm/bioscall.o
AR certs/built-in.a
CC net/core/request_sock.o
CC arch/x86/realmode/rm/regs.o
CC fs/notify/inotify/inotify_fsnotify.o
CC io_uring/kbuf.o
CC fs/nfs_common/grace.o
CC fs/nfs_common/common.o
CC arch/x86/events/core.o
CC arch/x86/pci/init.o
CC arch/x86/realmode/rm/video-vga.o
CC crypto/asymmetric_keys/restrict.o
CC arch/x86/events/probe.o
CC security/keys/key.o
AR fs/notify/dnotify/built-in.a
CC arch/x86/entry/vdso/extable.o
CC arch/x86/platform/efi/quirks.o
CC kernel/locking/mutex.o
CC drivers/leds/led-triggers.o
CC arch/x86/power/hibernate_32.o
CC arch/x86/realmode/rm/video-vesa.o
AS arch/x86/lib/getuser.o
GEN arch/x86/lib/inat-tables.c
CC fs/iomap/trace.o
CC arch/x86/kernel/fpu/regset.o
CC arch/x86/lib/insn-eval.o
AR arch/x86/events/zhaoxin/built-in.a
CC fs/quota/dquot.o
CC arch/x86/realmode/rm/video-bios.o
CC fs/proc/task_mmu.o
CC sound/core/seq/seq_clientmgr.o
AR lib/math/built-in.a
CC lib/crypto/mpi/generic_mpih-mul1.o
CC sound/core/seq/seq_memory.o
PASYMS arch/x86/realmode/rm/pasyms.h
CC fs/quota/quota_v2.o
CC lib/zlib_inflate/inffast.o
LDS arch/x86/realmode/rm/realmode.lds
CC sound/core/seq/seq_queue.o
LD arch/x86/realmode/rm/realmode.elf
RELOCS arch/x86/realmode/rm/realmode.relocs
OBJCOPY arch/x86/realmode/rm/realmode.bin
AS arch/x86/realmode/rmpiggy.o
AR arch/x86/realmode/built-in.a
CC security/min_addr.o
CC arch/x86/kernel/acpi/boot.o
LDS arch/x86/entry/vdso/vdso32/vdso32.lds
CC fs/proc/inode.o
CC init/init_task.o
CC fs/kernfs/mount.o
CC arch/x86/events/amd/lbr.o
CC crypto/asymmetric_keys/signature.o
CC lib/zlib_inflate/inflate.o
CC fs/notify/inotify/inotify_user.o
CC fs/kernfs/inode.o
CC security/selinux/selinuxfs.o
CC fs/kernfs/dir.o
AR security/integrity/built-in.a
CC security/selinux/netlink.o
CC arch/x86/mm/pat/memtype.o
CC arch/x86/pci/pcbios.o
AR net/ethernet/built-in.a
CC arch/x86/kernel/cpu/mce/severity.o
CC block/partitions/efi.o
CC arch/x86/kernel/apic/apic.o
AR fs/nfs_common/built-in.a
CC drivers/pci/msi/pcidev_msi.o
CC drivers/video/console/dummycon.o
AS arch/x86/power/hibernate_asm_32.o
CC lib/crypto/mpi/generic_mpih-mul2.o
CC arch/x86/power/hibernate.o
AS arch/x86/entry/vdso/vdso32/note.o
AS arch/x86/entry/vdso/vdso32/system_call.o
AS arch/x86/entry/vdso/vdso32/sigreturn.o
AR drivers/leds/built-in.a
CC arch/x86/entry/vdso/vdso32/vclock_gettime.o
CC drivers/video/backlight/backlight.o
CC security/keys/keyring.o
CC arch/x86/events/amd/ibs.o
CC arch/x86/events/amd/uncore.o
CC arch/x86/kernel/fpu/signal.o
CC crypto/asymmetric_keys/public_key.o
CC ipc/syscall.o
CC arch/x86/platform/efi/efi.o
CC arch/x86/lib/insn.o
CC lib/zlib_deflate/deflate.o
CC lib/zlib_deflate/deftree.o
CC arch/x86/platform/efi/efi_32.o
CC arch/x86/kernel/fpu/xstate.o
CC lib/lzo/lzo1x_compress.o
CC lib/zlib_inflate/infutil.o
CC init/version.o
CC kernel/power/qos.o
CC arch/x86/events/utils.o
CC fs/quota/quota_tree.o
CC lib/zlib_inflate/inftrees.o
AR init/built-in.a
CC security/security.o
CC arch/x86/pci/mmconfig_32.o
CC kernel/locking/semaphore.o
CC arch/x86/lib/kaslr.o
CC fs/iomap/iter.o
CC drivers/video/console/vgacon.o
CC fs/sysfs/file.o
CC drivers/pci/msi/api.o
CC lib/crypto/mpi/generic_mpih-mul3.o
AR fs/notify/inotify/built-in.a
CC fs/devpts/inode.o
AR fs/notify/fanotify/built-in.a
CC fs/notify/fsnotify.o
CC lib/crypto/mpi/generic_mpih-rshift.o
CC arch/x86/kernel/cpu/mce/genpool.o
CC lib/zlib_inflate/inflate_syms.o
AR arch/x86/power/built-in.a
CC arch/x86/mm/pat/memtype_interval.o
CC arch/x86/kernel/cpu/mtrr/mtrr.o
CC arch/x86/entry/vdso/vdso32/vgetcpu.o
CC sound/core/seq/seq_fifo.o
AR block/partitions/built-in.a
CC arch/x86/kernel/acpi/sleep.o
CC arch/x86/lib/memcpy_32.o
CC block/bio.o
HOSTCC arch/x86/entry/vdso/vdso2c
CC lib/lzo/lzo1x_decompress_safe.o
AS arch/x86/lib/memmove_32.o
CC arch/x86/lib/misc.o
ASN.1 crypto/asymmetric_keys/x509.asn1.[ch]
ASN.1 crypto/asymmetric_keys/x509_akid.asn1.[ch]
CC crypto/asymmetric_keys/x509_loader.o
CC arch/x86/lib/pc-conf-reg.o
CC lib/crypto/mpi/generic_mpih-sub1.o
AR drivers/video/backlight/built-in.a
CC ipc/ipc_sysctl.o
CC arch/x86/kernel/cpu/microcode/core.o
CC fs/kernfs/file.o
CC arch/x86/kernel/cpu/cacheinfo.o
AR lib/zlib_inflate/built-in.a
CC sound/core/seq/seq_prioq.o
CC sound/core/seq/seq_timer.o
AS arch/x86/lib/putuser.o
CC lib/zlib_deflate/deflate_syms.o
AS arch/x86/lib/retpoline.o
CC crypto/asymmetric_keys/x509_public_key.o
CC arch/x86/lib/string_32.o
CC fs/proc/root.o
CC arch/x86/pci/direct.o
CC arch/x86/lib/strstr_32.o
AS arch/x86/platform/efi/efi_stub_32.o
CC mm/mempool.o
CC arch/x86/entry/vdso/vdso32-setup.o
CC arch/x86/lib/usercopy.o
CC arch/x86/kernel/cpu/scattered.o
CC kernel/locking/rwsem.o
CC arch/x86/kernel/cpu/topology_common.o
CC arch/x86/platform/efi/runtime-map.o
CC crypto/cipher.o
CC drivers/pci/msi/msi.o
CC fs/iomap/buffered-io.o
AR lib/lzo/built-in.a
CC arch/x86/kernel/cpu/mce/intel.o
VDSO arch/x86/entry/vdso/vdso32.so.dbg
AR arch/x86/mm/pat/built-in.a
CC security/keys/keyctl.o
CC arch/x86/mm/init.o
AR arch/x86/events/amd/built-in.a
CC lib/crypto/mpi/generic_mpih-add1.o
CC kernel/sched/fair.o
CC kernel/sched/build_policy.o
CC fs/quota/quota.o
CC fs/sysfs/dir.o
CC arch/x86/kernel/kprobes/core.o
CC fs/quota/kqid.o
AR fs/devpts/built-in.a
CC arch/x86/kernel/cpu/microcode/intel.o
AR lib/zlib_deflate/built-in.a
CC arch/x86/pci/mmconfig-shared.o
CC kernel/printk/printk.o
CC net/core/skbuff.o
CC ipc/mqueue.o
AR drivers/video/fbdev/core/built-in.a
CC fs/iomap/direct-io.o
AR drivers/video/fbdev/omap/built-in.a
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
AR drivers/video/fbdev/omap2/omapfb/dss/built-in.a
AR drivers/video/fbdev/omap2/omapfb/displays/built-in.a
AR drivers/video/fbdev/omap2/omapfb/built-in.a
CC arch/x86/kernel/cpu/mtrr/if.o
CC kernel/power/main.o
AR drivers/video/fbdev/omap2/built-in.a
CC arch/x86/lib/usercopy_32.o
AR drivers/video/fbdev/built-in.a
CC fs/notify/notification.o
AR arch/x86/kernel/fpu/built-in.a
CC fs/iomap/fiemap.o
CC ipc/namespace.o
AS arch/x86/kernel/acpi/wakeup_32.o
CC arch/x86/kernel/acpi/cstate.o
CC arch/x86/events/intel/bts.o
AR drivers/video/console/built-in.a
CC drivers/video/aperture.o
CC security/selinux/nlmsgtab.o
CC kernel/power/console.o
ASN.1 crypto/asymmetric_keys/pkcs7.asn1.[ch]
CC crypto/asymmetric_keys/pkcs7_trust.o
CC arch/x86/kernel/cpu/mce/amd.o
CC fs/notify/group.o
CC arch/x86/kernel/apic/apic_common.o
AR arch/x86/entry/vdso/built-in.a
AR arch/x86/entry/vsyscall/built-in.a
AS arch/x86/entry/entry.o
AS arch/x86/entry/entry_32.o
CC sound/core/seq/seq_system.o
CC arch/x86/lib/msr-smp.o
CC arch/x86/entry/syscall_32.o
CC fs/kernfs/symlink.o
CC arch/x86/mm/init_32.o
CC drivers/pci/msi/irqdomain.o
CC fs/sysfs/symlink.o
CC lib/crypto/mpi/mpicoder.o
CC fs/proc/base.o
CC mm/oom_kill.o
CC lib/crypto/mpi/mpi-add.o
AR arch/x86/platform/efi/built-in.a
CC arch/x86/kernel/kprobes/opt.o
AR arch/x86/platform/geode/built-in.a
CC kernel/printk/printk_safe.o
AR arch/x86/platform/iris/built-in.a
CC arch/x86/platform/intel/iosf_mbi.o
CC crypto/asymmetric_keys/pkcs7_verify.o
CC kernel/locking/percpu-rwsem.o
CC arch/x86/lib/cache-smp.o
CC arch/x86/kernel/cpu/mtrr/generic.o
AR arch/x86/kernel/acpi/built-in.a
CC arch/x86/kernel/cpu/mtrr/cleanup.o
CC security/keys/permission.o
CC arch/x86/kernel/apic/apic_noop.o
CC security/keys/process_keys.o
AR sound/i2c/other/built-in.a
CC arch/x86/kernel/cpu/microcode/amd.o
AR sound/i2c/built-in.a
CC security/keys/request_key.o
CC security/keys/request_key_auth.o
CC drivers/pci/pcie/portdrv.o
CC fs/netfs/buffered_read.o
CC arch/x86/lib/msr.o
CC mm/fadvise.o
CC sound/core/seq/seq_ports.o
CC arch/x86/pci/fixup.o
CC io_uring/rsrc.o
CC arch/x86/events/rapl.o
CC drivers/video/cmdline.o
CC fs/notify/mark.o
CC crypto/asymmetric_keys/x509.asn1.o
CC crypto/asymmetric_keys/x509_akid.asn1.o
CC crypto/asymmetric_keys/x509_cert_parser.o
CC crypto/compress.o
CC block/elevator.o
CC fs/quota/netlink.o
CC arch/x86/events/msr.o
CC kernel/power/process.o
CC arch/x86/kernel/apic/ipi.o
AR fs/kernfs/built-in.a
CC fs/sysfs/mount.o
CC security/selinux/netif.o
AR drivers/pci/pwrctl/built-in.a
CC mm/maccess.o
CC arch/x86/events/intel/ds.o
CC net/sched/sch_generic.o
CC lib/crypto/mpi/mpi-bit.o
CC net/netlink/af_netlink.o
AR drivers/pci/msi/built-in.a
CC fs/notify/fdinfo.o
CC kernel/locking/spinlock.o
AR arch/x86/platform/intel/built-in.a
AR arch/x86/platform/intel-mid/built-in.a
AR arch/x86/platform/intel-quark/built-in.a
AR arch/x86/platform/olpc/built-in.a
CC arch/x86/mm/fault.o
AR arch/x86/platform/scx200/built-in.a
AR arch/x86/platform/ts5500/built-in.a
AR arch/x86/platform/uv/built-in.a
CC arch/x86/entry/common.o
CC drivers/video/nomodeset.o
AR arch/x86/platform/built-in.a
CC arch/x86/kernel/cpu/mce/threshold.o
AR arch/x86/kernel/kprobes/built-in.a
CC lib/crypto/mpi/mpi-cmp.o
CC net/core/datagram.o
CC fs/ext4/balloc.o
CC ipc/mq_sysctl.o
CC drivers/pci/pcie/rcec.o
CC kernel/locking/osq_lock.o
AR arch/x86/kernel/cpu/microcode/built-in.a
CC drivers/video/hdmi.o
CC arch/x86/kernel/apic/vector.o
CC crypto/asymmetric_keys/pkcs7.asn1.o
CC kernel/sched/build_utility.o
CC lib/crypto/mpi/mpi-sub-ui.o
CC crypto/asymmetric_keys/pkcs7_parser.o
CC arch/x86/kernel/cpu/mtrr/amd.o
AS arch/x86/lib/msr-reg.o
CC arch/x86/lib/msr-reg-export.o
CC sound/core/seq/seq_info.o
CC security/selinux/netnode.o
CC io_uring/notif.o
CC security/keys/user_defined.o
CC security/keys/proc.o
CC fs/proc/generic.o
CC fs/ext4/bitmap.o
CC fs/iomap/seek.o
CC arch/x86/pci/acpi.o
CC kernel/locking/qspinlock.o
CC sound/core/sound.o
CC net/core/stream.o
CC net/core/scm.o
CC kernel/power/suspend.o
AR fs/quota/built-in.a
AR ipc/built-in.a
CC net/sched/sch_mq.o
CC lib/crypto/memneq.o
CC fs/iomap/swapfile.o
AS arch/x86/lib/hweight.o
AR fs/notify/built-in.a
CC fs/sysfs/group.o
CC arch/x86/events/intel/knc.o
CC arch/x86/lib/iomem.o
CC arch/x86/events/intel/lbr.o
AR net/bpf/built-in.a
AS arch/x86/entry/thunk.o
CC drivers/pci/hotplug/pci_hotplug_core.o
CC fs/netfs/buffered_write.o
AR crypto/asymmetric_keys/built-in.a
CC crypto/algapi.o
AR arch/x86/entry/built-in.a
CC kernel/locking/rtmutex_api.o
CC mm/page-writeback.o
CC kernel/printk/nbcon.o
LDS arch/x86/kernel/vmlinux.lds
CC arch/x86/kernel/cpu/mtrr/cyrix.o
CC net/core/gen_stats.o
CC lib/crypto/mpi/mpi-div.o
CC drivers/pci/pcie/aspm.o
AR sound/drivers/opl3/built-in.a
CC sound/core/seq/seq_dummy.o
AR sound/isa/ad1816a/built-in.a
CC arch/x86/lib/atomic64_32.o
AR sound/drivers/opl4/built-in.a
AR sound/isa/ad1848/built-in.a
AR sound/drivers/mpu401/built-in.a
AR sound/isa/cs423x/built-in.a
AR sound/drivers/vx/built-in.a
AR sound/isa/es1688/built-in.a
AR sound/drivers/pcsp/built-in.a
AR sound/pci/ac97/built-in.a
AR sound/isa/galaxy/built-in.a
AR sound/drivers/built-in.a
AR sound/pci/ali5451/built-in.a
AR sound/isa/gus/built-in.a
CC fs/ext4/block_validity.o
CC arch/x86/lib/inat.o
AR sound/pci/asihpi/built-in.a
AR sound/isa/msnd/built-in.a
AR sound/pci/au88x0/built-in.a
CC crypto/scatterwalk.o
AR sound/isa/opti9xx/built-in.a
AR sound/pci/aw2/built-in.a
AR sound/isa/sb/built-in.a
AR sound/pci/ctxfi/built-in.a
AR sound/pci/ca0106/built-in.a
CC kernel/irq/irqdesc.o
CC security/keys/sysctl.o
AR sound/isa/wavefront/built-in.a
AR sound/pci/cs46xx/built-in.a
AR drivers/video/built-in.a
AR sound/isa/wss/built-in.a
CC block/blk-core.o
AR sound/isa/built-in.a
CC net/netlink/genetlink.o
AR sound/pci/cs5535audio/built-in.a
AR drivers/idle/built-in.a
AR sound/pci/lola/built-in.a
CC security/lsm_audit.o
CC drivers/pci/pcie/pme.o
AR sound/pci/lx6464es/built-in.a
AR sound/pci/echoaudio/built-in.a
AR sound/pci/emu10k1/built-in.a
AR sound/pci/hda/built-in.a
AR sound/pci/ice1712/built-in.a
CC [M] sound/pci/hda/hda_bind.o
AR arch/x86/lib/built-in.a
CC kernel/locking/qrwlock.o
AR arch/x86/lib/lib.a
CC net/ethtool/ioctl.o
AR arch/x86/kernel/cpu/mce/built-in.a
CC fs/netfs/direct_read.o
CC [M] sound/pci/hda/hda_codec.o
AR sound/pci/korg1212/built-in.a
CC security/selinux/netport.o
CC arch/x86/pci/legacy.o
AR fs/sysfs/built-in.a
CC io_uring/tctx.o
CC arch/x86/mm/ioremap.o
AR fs/iomap/built-in.a
CC io_uring/filetable.o
CC fs/proc/array.o
CC arch/x86/kernel/cpu/mtrr/centaur.o
CC block/blk-sysfs.o
AR sound/core/seq/built-in.a
CC sound/core/init.o
CC net/netlink/policy.o
CC net/core/gen_estimator.o
CC drivers/pci/hotplug/acpi_pcihp.o
CC lib/crypto/mpi/mpi-mod.o
CC mm/folio-compat.o
CC lib/crypto/mpi/mpi-mul.o
CC lib/crypto/mpi/mpih-cmp.o
CC security/keys/keyctl_pkey.o
AS arch/x86/kernel/head_32.o
CC mm/readahead.o
CC arch/x86/kernel/apic/init.o
CC kernel/rcu/update.o
CC kernel/power/hibernate.o
CC kernel/printk/printk_ringbuffer.o
AR drivers/char/ipmi/built-in.a
CC kernel/printk/sysctl.o
CC kernel/irq/handle.o
AR kernel/locking/built-in.a
CC net/sched/sch_frag.o
CC fs/ext4/dir.o
CC arch/x86/pci/irq.o
CC arch/x86/kernel/apic/hw_nmi.o
CC sound/core/memory.o
CC fs/netfs/direct_write.o
CC arch/x86/kernel/cpu/topology_ext.o
CC security/selinux/status.o
CC arch/x86/kernel/cpu/mtrr/legacy.o
CC security/device_cgroup.o
CC arch/x86/events/intel/p4.o
CC crypto/proc.o
CC arch/x86/kernel/apic/io_apic.o
CC io_uring/rw.o
CC arch/x86/mm/extable.o
CC block/blk-flush.o
CC fs/jbd2/transaction.o
CC drivers/acpi/acpica/dsargs.o
CC fs/ramfs/inode.o
CC lib/crypto/mpi/mpih-div.o
CC arch/x86/pci/common.o
CC mm/swap.o
AR drivers/pci/pcie/built-in.a
CC fs/hugetlbfs/inode.o
AR security/keys/built-in.a
CC fs/proc/fd.o
CC arch/x86/kernel/head32.o
AR drivers/pci/hotplug/built-in.a
AR sound/pci/mixart/built-in.a
AR drivers/pci/switch/built-in.a
AR drivers/pci/controller/dwc/built-in.a
AR sound/pci/nm256/built-in.a
AR drivers/pci/controller/mobiveil/built-in.a
CC arch/x86/pci/early.o
AR arch/x86/kernel/cpu/mtrr/built-in.a
AR drivers/pci/controller/plda/built-in.a
CC fs/ext4/ext4_jbd2.o
AR drivers/pci/controller/built-in.a
CC drivers/pci/access.o
CC mm/truncate.o
CC sound/core/control.o
CC lib/crypto/mpi/mpih-mul.o
CC kernel/irq/manage.o
CC arch/x86/kernel/cpu/topology_amd.o
CC net/ethtool/common.o
CC lib/crypto/utils.o
AR kernel/printk/built-in.a
AR drivers/acpi/pmic/built-in.a
CC arch/x86/mm/mmap.o
CC drivers/acpi/dptf/int340x_thermal.o
CC fs/ext4/extents.o
CC net/sched/sch_api.o
CC drivers/acpi/x86/apple.o
CC drivers/acpi/acpica/dscontrol.o
CC crypto/aead.o
CC drivers/pnp/pnpacpi/core.o
CC drivers/acpi/acpica/dsdebug.o
AR net/netlink/built-in.a
CC drivers/acpi/acpica/dsfield.o
CC drivers/acpi/acpica/dsinit.o
CC arch/x86/kernel/cpu/common.o
AR sound/pci/oxygen/built-in.a
CC drivers/pci/bus.o
AR sound/pci/pcxhr/built-in.a
CC fs/proc/proc_tty.o
CC fs/netfs/iterator.o
CC io_uring/net.o
AR drivers/acpi/dptf/built-in.a
CC lib/crypto/mpi/mpi-pow.o
CC fs/ramfs/file-mmu.o
CC kernel/power/snapshot.o
CC arch/x86/events/intel/p6.o
AR kernel/livepatch/built-in.a
CC net/core/net_namespace.o
CC security/selinux/ss/ebitmap.o
CC net/core/secure_seq.o
CC security/selinux/ss/hashtab.o
AR drivers/amba/built-in.a
CC drivers/acpi/x86/cmos_rtc.o
CC lib/lz4/lz4_decompress.o
CC drivers/pnp/core.o
CC net/netfilter/core.o
CC arch/x86/mm/pgtable.o
CC arch/x86/pci/bus_numa.o
CC crypto/geniv.o
CC block/blk-settings.o
CC drivers/acpi/acpica/dsmethod.o
CC arch/x86/kernel/cpu/rdrand.o
CC arch/x86/kernel/cpu/match.o
CC net/sched/sch_blackhole.o
CC kernel/dma/mapping.o
CC kernel/irq/spurious.o
CC drivers/pnp/card.o
CC arch/x86/events/intel/pt.o
CC block/blk-ioc.o
CC [M] sound/pci/hda/hda_jack.o
CC sound/core/misc.o
CC drivers/pnp/pnpacpi/rsparser.o
CC arch/x86/kernel/apic/msi.o
AR fs/hugetlbfs/built-in.a
CC fs/ext4/extents_status.o
CC drivers/acpi/tables.o
CC lib/crypto/chacha.o
CC lib/zstd/zstd_decompress_module.o
CC security/selinux/ss/symtab.o
CC mm/vmscan.o
CC drivers/acpi/acpica/dsmthdat.o
CC fs/proc/cmdline.o
AR fs/ramfs/built-in.a
AR sound/pci/riptide/built-in.a
CC crypto/lskcipher.o
CC kernel/irq/resend.o
CC lib/crypto/mpi/mpiutil.o
CC kernel/rcu/sync.o
CC net/ethtool/netlink.o
CC kernel/power/swap.o
CC io_uring/poll.o
CC drivers/acpi/x86/lpss.o
CC drivers/pci/probe.o
CC net/netfilter/nf_log.o
CC arch/x86/pci/amd_bus.o
CC sound/core/device.o
CC fs/jbd2/commit.o
CC security/selinux/ss/sidtab.o
CC arch/x86/mm/physaddr.o
CC drivers/acpi/acpica/dsobject.o
CC fs/netfs/locking.o
CC lib/zstd/decompress/huf_decompress.o
CC drivers/acpi/osi.o
CC kernel/entry/common.o
CC drivers/acpi/acpica/dsopcode.o
CC fs/proc/consoles.o
CC fs/ext4/file.o
CC drivers/acpi/x86/s2idle.o
CC block/blk-map.o
CC kernel/rcu/srcutree.o
CC fs/fat/cache.o
CC drivers/pci/host-bridge.o
AR kernel/sched/built-in.a
CC sound/core/info.o
CC drivers/pci/remove.o
CC kernel/irq/chip.o
CC kernel/irq/dummychip.o
CC arch/x86/kernel/apic/probe_32.o
CC [M] sound/pci/hda/hda_auto_parser.o
CC drivers/pci/pci.o
AR lib/crypto/mpi/built-in.a
CC lib/crypto/aes.o
CC net/ipv4/netfilter/nf_defrag_ipv4.o
AR sound/pci/rme9652/built-in.a
AR drivers/pnp/pnpacpi/built-in.a
CC drivers/pnp/driver.o
CC net/ipv4/route.o
CC arch/x86/mm/tlb.o
AR lib/lz4/built-in.a
CC net/ipv4/inetpeer.o
CC drivers/acpi/acpica/dspkginit.o
CC drivers/acpi/acpica/dsutils.o
CC fs/netfs/main.o
CC net/core/flow_dissector.o
CC fs/netfs/misc.o
CC net/core/sysctl_net_core.o
CC kernel/dma/direct.o
CC arch/x86/kernel/cpu/bugs.o
CC net/sched/cls_api.o
CC arch/x86/events/intel/uncore.o
CC fs/proc/cpuinfo.o
AR arch/x86/pci/built-in.a
CC fs/proc/devices.o
CC crypto/skcipher.o
AR drivers/clk/actions/built-in.a
AR arch/x86/kernel/apic/built-in.a
CC mm/shrinker.o
AR drivers/clk/analogbits/built-in.a
CC [M] sound/pci/hda/hda_sysfs.o
AR drivers/clk/bcm/built-in.a
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 fs/isofs/namei.o
AR drivers/clk/microchip/built-in.a
AR drivers/clk/mstar/built-in.a
AR drivers/clk/mvebu/built-in.a
AR drivers/clk/ralink/built-in.a
AR drivers/clk/renesas/built-in.a
CC kernel/power/user.o
AR drivers/clk/socfpga/built-in.a
AR drivers/clk/sophgo/built-in.a
CC fs/proc/interrupts.o
AR drivers/clk/sprd/built-in.a
AR drivers/clk/starfive/built-in.a
AR drivers/clk/sunxi-ng/built-in.a
CC drivers/acpi/acpica/dswexec.o
CC crypto/seqiv.o
CC drivers/dma/dw/core.o
AR drivers/clk/ti/built-in.a
CC lib/crypto/arc4.o
AR drivers/clk/versatile/built-in.a
AR drivers/clk/xilinx/built-in.a
AR drivers/clk/built-in.a
CC net/ethtool/bitset.o
CC drivers/pnp/resource.o
CC drivers/acpi/x86/utils.o
CC kernel/entry/syscall_user_dispatch.o
CC net/netfilter/nf_queue.o
CC fs/fat/dir.o
CC sound/core/isadma.o
CC drivers/pci/pci-driver.o
CC block/blk-merge.o
CC drivers/dma/hsu/hsu.o
CC fs/fat/fatent.o
CC security/selinux/ss/avtab.o
CC net/ipv4/protocol.o
CC kernel/irq/devres.o
CC crypto/echainiv.o
CC fs/jbd2/recovery.o
CC drivers/acpi/osl.o
CC kernel/rcu/tree.o
CC lib/zstd/decompress/zstd_ddict.o
CC lib/crypto/gf128mul.o
CC drivers/acpi/acpica/dswload.o
CC fs/proc/loadavg.o
CC drivers/dma/dw/dw.o
CC [M] sound/pci/hda/hda_controller.o
CC arch/x86/kernel/cpu/aperfmperf.o
CC lib/zstd/decompress/zstd_decompress.o
CC kernel/dma/ops_helpers.o
CC io_uring/eventfd.o
CC net/ipv4/netfilter/nf_reject_ipv4.o
CC drivers/acpi/x86/blacklist.o
CC arch/x86/mm/cpu_entry_area.o
CC sound/core/vmaster.o
CC fs/isofs/inode.o
CC net/ipv4/netfilter/ip_tables.o
CC fs/netfs/objects.o
AR kernel/entry/built-in.a
CC kernel/power/poweroff.o
CC drivers/pci/search.o
CC fs/jbd2/checkpoint.o
CC kernel/irq/autoprobe.o
CC fs/nfs/client.o
CC drivers/acpi/acpica/dswload2.o
CC arch/x86/kernel/ebda.o
CC lib/xz/xz_dec_syms.o
CC crypto/ahash.o
AR kernel/power/built-in.a
AR drivers/dma/hsu/built-in.a
CC kernel/module/main.o
CC block/blk-timeout.o
CC fs/proc/meminfo.o
AR drivers/acpi/x86/built-in.a
CC arch/x86/mm/maccess.o
CC lib/crypto/blake2s.o
CC drivers/pnp/manager.o
CC net/xfrm/xfrm_policy.o
CC drivers/dma/dw/idma32.o
CC sound/core/ctljack.o
CC kernel/dma/remap.o
CC io_uring/uring_cmd.o
CC arch/x86/kernel/platform-quirks.o
CC kernel/rcu/rcu_segcblist.o
CC net/core/dev.o
CC kernel/irq/irqdomain.o
CC block/blk-lib.o
CC lib/xz/xz_dec_stream.o
CC arch/x86/events/intel/uncore_nhmex.o
CC drivers/acpi/acpica/dswscope.o
CC drivers/acpi/acpica/dswstate.o
CC net/xfrm/xfrm_state.o
CC net/ethtool/strset.o
CC net/netfilter/nf_sockopt.o
CC lib/xz/xz_dec_lzma2.o
CC arch/x86/mm/pgprot.o
CC arch/x86/kernel/cpu/cpuid-deps.o
CC arch/x86/kernel/cpu/umwait.o
CC lib/zstd/decompress/zstd_decompress_block.o
CC security/selinux/ss/policydb.o
MKCAP arch/x86/kernel/cpu/capflags.c
CC lib/crypto/blake2s-generic.o
CC kernel/irq/proc.o
CC sound/core/jack.o
CC mm/shmem.o
CC fs/fat/file.o
CC net/unix/af_unix.o
CC net/ipv6/netfilter/ip6_tables.o
CC fs/nfs/dir.o
CC fs/nfs/file.o
AR sound/ppc/built-in.a
CC net/ipv4/ip_input.o
CC drivers/pnp/support.o
CC drivers/pnp/interface.o
CC net/ipv4/ip_fragment.o
CC fs/proc/stat.o
CC fs/netfs/read_collect.o
CC drivers/acpi/acpica/evevent.o
CC fs/isofs/dir.o
AR kernel/dma/built-in.a
CC drivers/acpi/acpica/evgpe.o
CC fs/jbd2/revoke.o
CC security/selinux/ss/services.o
CC drivers/pnp/quirks.o
CC drivers/dma/dw/acpi.o
CC arch/x86/mm/pgtable_32.o
CC lib/crypto/sha1.o
CC fs/ext4/fsmap.o
CC block/blk-mq.o
CC [M] sound/pci/hda/hda_proc.o
CC crypto/shash.o
CC fs/netfs/read_pgpriv2.o
CC fs/netfs/read_retry.o
CC net/ipv4/netfilter/iptable_filter.o
CC lib/xz/xz_dec_bcj.o
CC drivers/pci/rom.o
CC kernel/irq/migration.o
CC net/unix/garbage.o
CC sound/core/timer.o
CC drivers/acpi/utils.o
CC drivers/acpi/acpica/evgpeblk.o
CC net/netfilter/utils.o
CC fs/nfs/getroot.o
CC net/sched/act_api.o
CC fs/proc/uptime.o
CC lib/crypto/sha256.o
CC crypto/akcipher.o
CC net/ipv4/netfilter/iptable_mangle.o
CC io_uring/openclose.o
CC fs/netfs/write_collect.o
CC arch/x86/events/intel/uncore_snb.o
CC fs/isofs/util.o
CC net/ethtool/linkinfo.o
AR drivers/dma/dw/built-in.a
AR drivers/dma/idxd/built-in.a
CC arch/x86/mm/iomap_32.o
AR drivers/dma/amd/built-in.a
AR drivers/dma/mediatek/built-in.a
CC fs/fat/inode.o
AR drivers/dma/qcom/built-in.a
AR drivers/dma/stm32/built-in.a
AR drivers/dma/ti/built-in.a
AR drivers/dma/xilinx/built-in.a
CC drivers/dma/dmaengine.o
CC drivers/pnp/system.o
CC kernel/irq/cpuhotplug.o
AR lib/xz/built-in.a
CC drivers/dma/virt-dma.o
CC fs/jbd2/journal.o
CC drivers/acpi/acpica/evgpeinit.o
CC drivers/pci/setup-res.o
CC net/ipv4/ip_forward.o
CC fs/proc/util.o
AR lib/crypto/built-in.a
CC drivers/pci/irq.o
CC security/selinux/ss/conditional.o
CC kernel/module/strict_rwx.o
CC kernel/irq/pm.o
CC kernel/irq/msi.o
CC drivers/acpi/acpica/evgpeutil.o
CC [M] sound/pci/hda/hda_hwdep.o
CC fs/isofs/rock.o
CC fs/ext4/fsync.o
CC net/xfrm/xfrm_hash.o
CC io_uring/sqpoll.o
CC arch/x86/mm/hugetlbpage.o
CC arch/x86/events/intel/uncore_snbep.o
AR drivers/pnp/built-in.a
CC crypto/sig.o
CC net/unix/sysctl_net_unix.o
CC lib/zstd/zstd_common_module.o
CC net/ipv6/netfilter/ip6table_filter.o
CC fs/ext4/hash.o
CC net/ethtool/linkmodes.o
CC net/ipv4/netfilter/ipt_REJECT.o
CC net/xfrm/xfrm_input.o
AR sound/pci/trident/built-in.a
CC sound/core/hrtimer.o
CC drivers/acpi/reboot.o
CC drivers/acpi/acpica/evglock.o
CC fs/proc/version.o
CC fs/proc/softirqs.o
CC net/netfilter/nfnetlink.o
CC fs/isofs/export.o
CC kernel/module/kmod.o
AR sound/arm/built-in.a
CC drivers/pci/vpd.o
CC kernel/time/time.o
CC kernel/futex/core.o
CC lib/zstd/common/debug.o
CC fs/ext4/ialloc.o
CC lib/zstd/common/entropy_common.o
CC [M] sound/pci/hda/patch_hdmi.o
CC net/netfilter/nfnetlink_log.o
AR sound/sh/built-in.a
CC drivers/acpi/acpica/evhandler.o
CC arch/x86/mm/dump_pagetables.o
CC fs/netfs/write_issue.o
CC sound/core/seq_device.o
CC net/packet/af_packet.o
CC lib/zstd/common/error_private.o
CC net/ipv4/ip_options.o
CC drivers/dma/acpi-dma.o
CC fs/fat/misc.o
CC lib/zstd/common/fse_decompress.o
CC mm/util.o
CC kernel/time/timer.o
AR sound/pci/ymfpci/built-in.a
CC crypto/kpp.o
CC kernel/irq/affinity.o
CC kernel/irq/matrix.o
CC drivers/pci/setup-bus.o
CC fs/proc/namespaces.o
AR net/unix/built-in.a
CC net/sched/sch_fifo.o
CC net/core/dev_addr_lists.o
CC fs/ext4/indirect.o
CC io_uring/xattr.o
CC [M] net/ipv4/netfilter/iptable_nat.o
CC [M] sound/pci/hda/hda_eld.o
CC kernel/futex/syscalls.o
CC drivers/acpi/acpica/evmisc.o
CC net/ipv6/af_inet6.o
CC fs/isofs/joliet.o
CC security/selinux/ss/mls.o
CC kernel/module/tree_lookup.o
CC drivers/acpi/acpica/evregion.o
CC drivers/acpi/acpica/evrgnini.o
AR kernel/rcu/built-in.a
CC net/ethtool/rss.o
CC drivers/acpi/acpica/evsci.o
CC lib/zstd/common/zstd_common.o
CC [M] sound/core/hwdep.o
ASN.1 crypto/rsapubkey.asn1.[ch]
CC net/ipv6/netfilter/ip6table_mangle.o
CC kernel/module/kallsyms.o
CC net/xfrm/xfrm_output.o
AR lib/zstd/built-in.a
CC lib/dim/dim.o
CC arch/x86/events/intel/uncore_discovery.o
AR drivers/soc/apple/built-in.a
AR drivers/soc/aspeed/built-in.a
CC arch/x86/mm/highmem_32.o
AR drivers/dma/built-in.a
CC [M] sound/pci/hda/hda_intel.o
AR drivers/soc/bcm/built-in.a
AR drivers/soc/fsl/built-in.a
AR drivers/soc/fujitsu/built-in.a
AR drivers/soc/hisilicon/built-in.a
AR drivers/soc/imx/built-in.a
AR drivers/soc/ixp4xx/built-in.a
CC mm/mmzone.o
AR drivers/soc/loongson/built-in.a
AR drivers/soc/mediatek/built-in.a
CC fs/ext4/inline.o
CC fs/exportfs/expfs.o
AR drivers/soc/microchip/built-in.a
AR drivers/soc/nuvoton/built-in.a
AR drivers/soc/pxa/built-in.a
AR drivers/soc/amlogic/built-in.a
ASN.1 crypto/rsaprivkey.asn1.[ch]
CC fs/fat/nfs.o
AR drivers/soc/qcom/built-in.a
CC crypto/rsa.o
CC block/blk-mq-tag.o
AR drivers/soc/renesas/built-in.a
AR drivers/soc/rockchip/built-in.a
CC fs/nfs/inode.o
AR drivers/soc/sunxi/built-in.a
AR drivers/soc/ti/built-in.a
AR sound/pci/vx222/built-in.a
AR drivers/soc/versatile/built-in.a
CC drivers/acpi/acpica/evxface.o
AR drivers/soc/xilinx/built-in.a
AR drivers/soc/built-in.a
AR net/dsa/built-in.a
CC fs/proc/self.o
CC fs/isofs/compress.o
CC kernel/cgroup/cgroup.o
CC net/core/dst.o
AR sound/synth/emux/built-in.a
AR sound/synth/built-in.a
CC drivers/acpi/nvs.o
CC lib/dim/net_dim.o
CC security/selinux/ss/context.o
CC arch/x86/events/intel/cstate.o
CC net/ipv4/ip_output.o
AR fs/netfs/built-in.a
CC kernel/time/hrtimer.o
CC io_uring/nop.o
CC arch/x86/kernel/cpu/powerflags.o
CC kernel/futex/pi.o
CC net/netfilter/nf_conntrack_core.o
CC crypto/rsa_helper.o
CC [M] sound/core/pcm.o
CC net/sched/cls_cgroup.o
AR fs/jbd2/built-in.a
CC kernel/trace/trace_clock.o
CC net/sunrpc/auth_gss/auth_gss.o
CC kernel/module/procfs.o
CC net/sunrpc/clnt.o
AR kernel/irq/built-in.a
CC net/sunrpc/xprt.o
CC fs/proc/thread_self.o
CC drivers/acpi/wakeup.o
CC mm/vmstat.o
AR net/ipv4/netfilter/built-in.a
AR arch/x86/mm/built-in.a
CC [M] sound/core/pcm_native.o
CC net/ipv6/anycast.o
AR fs/exportfs/built-in.a
CC drivers/acpi/acpica/evxfevnt.o
CC drivers/acpi/acpica/evxfgpe.o
CC block/blk-stat.o
CC [M] sound/core/pcm_lib.o
CC net/ethtool/linkstate.o
CC crypto/rsa-pkcs1pad.o
CC fs/fat/namei_vfat.o
CC security/selinux/netlabel.o
AR sound/usb/misc/built-in.a
CC kernel/trace/ring_buffer.o
CC kernel/trace/trace.o
AR sound/usb/usx2y/built-in.a
AR sound/usb/caiaq/built-in.a
CC arch/x86/kernel/cpu/topology.o
AR sound/usb/6fire/built-in.a
AR sound/usb/hiface/built-in.a
AR sound/usb/bcd2000/built-in.a
CC net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
AR sound/usb/built-in.a
CC kernel/time/timekeeping.o
CC drivers/pci/vc.o
CC drivers/pci/mmap.o
AR fs/isofs/built-in.a
CC mm/backing-dev.o
CC fs/ext4/inode.o
CC fs/nfs/super.o
CC lib/fonts/fonts.o
CC lib/argv_split.o
AR arch/x86/events/intel/built-in.a
CC kernel/futex/requeue.o
CC kernel/module/sysfs.o
CC drivers/acpi/acpica/evxfregn.o
AR arch/x86/events/built-in.a
CC drivers/acpi/acpica/exconcat.o
CC lib/dim/rdma_dim.o
CC fs/proc/proc_sysctl.o
AR sound/firewire/built-in.a
CC lib/fonts/font_8x16.o
CC io_uring/fs.o
CC [M] sound/core/pcm_misc.o
CC net/xfrm/xfrm_sysctl.o
CC net/sched/ematch.o
CC block/blk-mq-sysfs.o
CC arch/x86/kernel/process_32.o
CC net/core/netevent.o
CC drivers/pci/devres.o
LD [M] sound/pci/hda/snd-hda-codec.o
CC arch/x86/kernel/cpu/proc.o
LD [M] sound/pci/hda/snd-hda-codec-hdmi.o
LD [M] sound/pci/hda/snd-hda-intel.o
AR sound/pci/built-in.a
CC crypto/acompress.o
CC [M] sound/core/pcm_memory.o
AR lib/fonts/built-in.a
CC net/xfrm/xfrm_replay.o
CC drivers/acpi/acpica/exconfig.o
CC drivers/acpi/acpica/exconvrt.o
CC net/xfrm/xfrm_device.o
AR lib/dim/built-in.a
CC lib/bug.o
CC [M] sound/core/memalloc.o
CC net/ethtool/debug.o
CC fs/fat/namei_msdos.o
CC block/blk-mq-cpumap.o
CC arch/x86/kernel/signal.o
CC fs/lockd/clntlock.o
CC mm/mm_init.o
CC kernel/futex/waitwake.o
AR kernel/module/built-in.a
CC net/sunrpc/auth_gss/gss_generic_token.o
CC fs/lockd/clntproc.o
CC io_uring/splice.o
CC fs/proc/proc_net.o
CC drivers/acpi/acpica/excreate.o
CC fs/nfs/io.o
CC net/ipv4/ip_sockglue.o
CC net/sunrpc/socklib.o
CC arch/x86/kernel/cpu/feat_ctl.o
AR security/selinux/built-in.a
AR security/built-in.a
CC net/ethtool/wol.o
CC net/ipv6/netfilter/nf_conntrack_reasm.o
CC net/netfilter/nf_conntrack_standalone.o
CC net/xfrm/xfrm_nat_keepalive.o
CC lib/buildid.o
AR net/packet/built-in.a
CC lib/clz_tab.o
CC lib/cmdline.o
CC net/sunrpc/xprtsock.o
CC net/sunrpc/auth_gss/gss_mech_switch.o
CC drivers/pci/proc.o
CC fs/proc/kcore.o
CC fs/ext4/ioctl.o
CC crypto/scompress.o
CC block/blk-mq-sched.o
CC drivers/acpi/acpica/exdebug.o
CC fs/nls/nls_base.o
CC fs/nfs/direct.o
CC kernel/time/ntp.o
CC kernel/time/clocksource.o
AR net/sched/built-in.a
CC mm/percpu.o
AR sound/sparc/built-in.a
CC arch/x86/kernel/signal_32.o
CC arch/x86/kernel/cpu/intel.o
CC drivers/virtio/virtio.o
AR kernel/futex/built-in.a
CC kernel/bpf/core.o
CC fs/proc/vmcore.o
CC fs/lockd/clntxdr.o
AR fs/fat/built-in.a
CC net/ipv6/ip6_output.o
CC kernel/events/core.o
CC [M] sound/core/pcm_timer.o
CC kernel/fork.o
CC mm/slab_common.o
CC fs/ext4/mballoc.o
CC net/ipv6/netfilter/nf_reject_ipv6.o
CC drivers/acpi/acpica/exdump.o
CC net/netfilter/nf_conntrack_expect.o
CC io_uring/sync.o
CC fs/nls/nls_cp437.o
CC block/ioctl.o
CC lib/cpumask.o
CC drivers/pci/pci-sysfs.o
AR sound/spi/built-in.a
CC drivers/tty/vt/vt_ioctl.o
CC net/ethtool/features.o
CC net/ethtool/privflags.o
CC drivers/acpi/acpica/exfield.o
CC drivers/tty/hvc/hvc_console.o
CC kernel/events/ring_buffer.o
CC crypto/algboss.o
CC fs/ext4/migrate.o
CC fs/nls/nls_ascii.o
CC fs/nls/nls_iso8859-1.o
CC drivers/acpi/sleep.o
CC net/xfrm/xfrm_algo.o
LD [M] sound/core/snd-hwdep.o
LD [M] sound/core/snd-pcm.o
AR sound/core/built-in.a
CC drivers/tty/vt/vc_screen.o
CC drivers/virtio/virtio_ring.o
AR sound/parisc/built-in.a
CC kernel/time/jiffies.o
AR sound/pcmcia/vx/built-in.a
AR sound/mips/built-in.a
CC arch/x86/kernel/traps.o
CC kernel/exec_domain.o
AR sound/pcmcia/pdaudiocf/built-in.a
AR sound/pcmcia/built-in.a
AR sound/soc/built-in.a
AR sound/atmel/built-in.a
AR sound/hda/built-in.a
CC mm/compaction.o
CC [M] sound/hda/hda_bus_type.o
CC net/core/neighbour.o
CC drivers/acpi/acpica/exfldio.o
CC lib/ctype.o
CC fs/proc/kmsg.o
CC lib/dec_and_lock.o
CC io_uring/msg_ring.o
CC net/sunrpc/sched.o
CC fs/nls/nls_utf8.o
CC net/sunrpc/auth.o
CC fs/lockd/host.o
CC drivers/tty/serial/8250/8250_core.o
CC arch/x86/kernel/cpu/tsx.o
CC fs/lockd/svc.o
CC net/sunrpc/auth_gss/svcauth_gss.o
CC kernel/time/timer_list.o
CC lib/decompress.o
CC lib/decompress_bunzip2.o
CC block/genhd.o
CC net/ipv4/inet_hashtables.o
AR sound/x86/built-in.a
CC kernel/trace/trace_output.o
AR fs/nls/built-in.a
CC fs/nfs/pagelist.o
AR drivers/tty/hvc/built-in.a
CC drivers/acpi/acpica/exmisc.o
CC crypto/testmgr.o
CC net/ethtool/rings.o
CC [M] sound/hda/hdac_bus.o
CC drivers/pci/slot.o
CC fs/proc/page.o
CC net/ipv6/netfilter/ip6t_ipv6header.o
CC kernel/trace/trace_seq.o
AR net/wireless/tests/built-in.a
CC net/wireless/core.o
CC drivers/acpi/device_sysfs.o
CC arch/x86/kernel/cpu/intel_epb.o
CC kernel/trace/trace_stat.o
CC kernel/cgroup/rstat.o
CC lib/decompress_inflate.o
CC [M] sound/hda/hdac_device.o
CC drivers/tty/vt/selection.o
CC net/netfilter/nf_conntrack_helper.o
CC kernel/time/timeconv.o
CC net/xfrm/xfrm_user.o
CC block/ioprio.o
CC drivers/acpi/acpica/exmutex.o
CC drivers/char/hw_random/core.o
CC drivers/char/agp/backend.o
CC io_uring/advise.o
CC arch/x86/kernel/cpu/amd.o
CC fs/lockd/svclock.o
CC drivers/acpi/acpica/exnames.o
CC crypto/cmac.o
CC drivers/tty/serial/8250/8250_platform.o
CC drivers/tty/serial/serial_core.o
CC drivers/tty/serial/8250/8250_pnp.o
CC drivers/acpi/device_pm.o
CC [M] sound/hda/hdac_sysfs.o
CC kernel/time/timecounter.o
CC lib/decompress_unlz4.o
CC kernel/time/alarmtimer.o
CC drivers/virtio/virtio_anchor.o
CC net/sunrpc/auth_gss/gss_rpc_upcall.o
CC drivers/pci/pci-acpi.o
AR fs/proc/built-in.a
AR drivers/iommu/amd/built-in.a
AR drivers/iommu/intel/built-in.a
CC net/ipv6/netfilter/ip6t_REJECT.o
AR drivers/gpu/host1x/built-in.a
AR drivers/iommu/arm/arm-smmu/built-in.a
CC net/wireless/sysfs.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 kernel/panic.o
CC drivers/tty/vt/keyboard.o
CC net/sunrpc/auth_gss/gss_rpc_xdr.o
AR drivers/gpu/drm/tests/built-in.a
CC net/sunrpc/auth_gss/trace.o
CC drivers/acpi/acpica/exoparg1.o
AR drivers/gpu/drm/arm/built-in.a
CC drivers/gpu/drm/display/drm_display_helper_mod.o
CC net/ethtool/channels.o
CC crypto/hmac.o
CC fs/ext4/mmp.o
CC kernel/events/callchain.o
CC block/badblocks.o
CC block/blk-rq-qos.o
CC drivers/char/hw_random/intel-rng.o
CC drivers/char/agp/generic.o
AR kernel/bpf/built-in.a
AR drivers/tty/ipwireless/built-in.a
CC net/netfilter/nf_conntrack_proto.o
CC net/core/rtnetlink.o
CC lib/decompress_unlzma.o
CC drivers/virtio/virtio_pci_modern_dev.o
CC io_uring/epoll.o
CC kernel/trace/trace_printk.o
CC drivers/char/mem.o
CC drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
CC drivers/tty/serial/8250/8250_rsa.o
CC kernel/cgroup/namespace.o
CC [M] sound/hda/hdac_regmap.o
CC drivers/acpi/acpica/exoparg2.o
CC arch/x86/kernel/cpu/hygon.o
CC kernel/cgroup/cgroup-v1.o
CC kernel/cgroup/freezer.o
CC kernel/cgroup/legacy_freezer.o
CC net/ipv4/inet_timewait_sock.o
CC kernel/trace/pid_list.o
CC mm/show_mem.o
CC crypto/crypto_null.o
CC crypto/md5.o
CC fs/ext4/move_extent.o
CC net/ethtool/coalesce.o
CC fs/lockd/svcshare.o
CC kernel/time/posix-timers.o
CC drivers/char/hw_random/amd-rng.o
CC drivers/pci/iomap.o
CC drivers/acpi/acpica/exoparg3.o
CC net/sunrpc/auth_null.o
CC arch/x86/kernel/cpu/centaur.o
CC drivers/connector/cn_queue.o
AR net/ipv6/netfilter/built-in.a
CC net/ipv6/ip6_input.o
CC lib/decompress_unlzo.o
CC drivers/tty/serial/8250/8250_port.o
CC net/ipv4/inet_connection_sock.o
CC block/disk-events.o
CC crypto/sha256_generic.o
CC drivers/virtio/virtio_pci_legacy_dev.o
CC net/sunrpc/auth_gss/gss_krb5_mech.o
CC io_uring/statx.o
CC drivers/acpi/proc.o
CC net/netfilter/nf_conntrack_proto_generic.o
CC drivers/gpu/drm/display/drm_dp_helper.o
CC drivers/tty/serial/serial_base_bus.o
CC kernel/time/posix-cpu-timers.o
CC kernel/time/posix-clock.o
CC [M] sound/hda/hdac_controller.o
CC drivers/char/agp/isoch.o
CC drivers/acpi/acpica/exoparg6.o
CC kernel/trace/trace_sched_switch.o
CC drivers/tty/vt/vt.o
CC fs/ext4/namei.o
CC fs/nfs/read.o
CC arch/x86/kernel/cpu/transmeta.o
CC drivers/tty/tty_io.o
CC drivers/pci/quirks.o
CC drivers/char/hw_random/geode-rng.o
CC lib/decompress_unxz.o
CC kernel/events/hw_breakpoint.o
CC drivers/char/agp/amd64-agp.o
AR fs/unicode/built-in.a
CC net/ipv6/addrconf.o
CC crypto/sha512_generic.o
CC drivers/acpi/acpica/exprep.o
CC mm/interval_tree.o
CC drivers/virtio/virtio_pci_modern.o
CC drivers/iommu/iommu-traces.o
AR net/xfrm/built-in.a
CC drivers/tty/serial/8250/8250_dma.o
CC drivers/gpu/drm/ttm/ttm_tt.o
CC block/blk-ia-ranges.o
CC drivers/connector/connector.o
CC fs/lockd/svcproc.o
CC net/sunrpc/auth_gss/gss_krb5_seal.o
CC kernel/cgroup/pids.o
CC lib/decompress_unzstd.o
CC drivers/virtio/virtio_pci_common.o
CC kernel/trace/trace_nop.o
CC crypto/sha3_generic.o
CC arch/x86/kernel/cpu/zhaoxin.o
CC net/ethtool/pause.o
CC io_uring/timeout.o
AR net/mac80211/tests/built-in.a
CC net/netlabel/netlabel_user.o
CC net/mac80211/main.o
CC net/netlabel/netlabel_kapi.o
CC drivers/acpi/acpica/exregion.o
CC net/netfilter/nf_conntrack_proto_tcp.o
CC [M] sound/hda/hdac_stream.o
CC net/mac80211/status.o
CC drivers/char/hw_random/via-rng.o
CC crypto/ecb.o
CC drivers/virtio/virtio_pci_legacy.o
CC drivers/tty/serial/serial_ctrl.o
CC arch/x86/kernel/cpu/vortex.o
CC mm/list_lru.o
CC drivers/iommu/iommu-sysfs.o
CC lib/dump_stack.o
CC drivers/iommu/dma-iommu.o
CC drivers/acpi/acpica/exresnte.o
CC kernel/time/itimer.o
CC drivers/char/agp/intel-agp.o
CC drivers/connector/cn_proc.o
CC kernel/cgroup/rdma.o
AR drivers/char/hw_random/built-in.a
CC kernel/events/uprobes.o
CC crypto/cbc.o
CC net/wireless/radiotap.o
CC block/early-lookup.o
CC fs/nfs/symlink.o
CC block/bounce.o
CC fs/autofs/init.o
CC kernel/trace/blktrace.o
CC kernel/cgroup/cpuset.o
CC drivers/gpu/drm/ttm/ttm_bo.o
COPY drivers/tty/vt/defkeymap.c
CC net/ipv4/tcp.o
CC arch/x86/kernel/cpu/perfctr-watchdog.o
CC net/sunrpc/auth_tls.o
CC arch/x86/kernel/idt.o
CC drivers/acpi/acpica/exresolv.o
CC drivers/tty/serial/8250/8250_dwlib.o
CC fs/lockd/svcsubs.o
CC drivers/virtio/virtio_pci_admin_legacy_io.o
CC net/sunrpc/auth_gss/gss_krb5_unseal.o
CC io_uring/fdinfo.o
CC net/ethtool/eee.o
CC drivers/gpu/drm/display/drm_dp_mst_topology.o
CC crypto/ctr.o
CC kernel/trace/trace_events.o
CC net/sunrpc/auth_gss/gss_krb5_wrap.o
CC [M] sound/hda/array.o
CC net/ipv6/addrlabel.o
AR drivers/gpu/vga/built-in.a
CC arch/x86/kernel/cpu/vmware.o
CC lib/earlycpio.o
CC block/bsg.o
AR sound/xen/built-in.a
CC block/blk-cgroup.o
CC drivers/acpi/acpica/exresop.o
CC mm/workingset.o
CC net/core/utils.o
CC lib/extable.o
CC fs/autofs/inode.o
CC kernel/time/clockevents.o
CC drivers/char/agp/intel-gtt.o
CC net/netlabel/netlabel_domainhash.o
CC kernel/cpu.o
CC kernel/trace/trace_export.o
CC net/mac80211/driver-ops.o
CC crypto/gcm.o
CC drivers/pci/pci-label.o
CC net/wireless/util.o
CC drivers/virtio/virtio_input.o
CC drivers/tty/n_tty.o
CC drivers/tty/serial/8250/8250_pcilib.o
CC fs/nfs/unlink.o
CC drivers/acpi/acpica/exserial.o
CC drivers/gpu/drm/ttm/ttm_bo_util.o
AR drivers/connector/built-in.a
CC fs/ext4/page-io.o
CC drivers/tty/vt/consolemap.o
CC lib/flex_proportions.o
CC mm/debug.o
CC [M] sound/hda/hdmi_chmap.o
CC net/netfilter/nf_conntrack_proto_udp.o
CC arch/x86/kernel/cpu/hypervisor.o
CC arch/x86/kernel/cpu/mshyperv.o
CC drivers/iommu/iova.o
CC drivers/gpu/drm/i915/i915_config.o
CC drivers/acpi/bus.o
CC io_uring/cancel.o
CC drivers/base/power/sysfs.o
CC net/ethtool/tsinfo.o
CC kernel/time/tick-common.o
CC drivers/acpi/acpica/exstore.o
CC drivers/char/random.o
CC fs/lockd/mon.o
CC drivers/base/power/generic_ops.o
CC fs/autofs/root.o
CC lib/idr.o
CC drivers/base/firmware_loader/builtin/main.o
CC net/sunrpc/auth_gss/gss_krb5_crypto.o
CC drivers/gpu/drm/i915/i915_driver.o
AR kernel/events/built-in.a
CC kernel/cgroup/misc.o
CC drivers/gpu/drm/display/drm_dsc_helper.o
CC kernel/time/tick-broadcast.o
CC drivers/tty/serial/8250/8250_early.o
CC drivers/pci/vgaarb.o
CC block/blk-ioprio.o
AR drivers/char/agp/built-in.a
CC block/blk-iolatency.o
CC drivers/virtio/virtio_dma_buf.o
CC drivers/acpi/acpica/exstoren.o
CC net/core/link_watch.o
AR drivers/base/firmware_loader/builtin/built-in.a
CC drivers/base/firmware_loader/main.o
CC crypto/ccm.o
CC net/core/filter.o
CC drivers/base/power/common.o
CC mm/gup.o
HOSTCC drivers/tty/vt/conmakehash
CC net/netlabel/netlabel_addrlist.o
CC lib/irq_regs.o
CC drivers/gpu/drm/ttm/ttm_bo_vm.o
CC [M] sound/hda/trace.o
CC block/blk-iocost.o
CC arch/x86/kernel/cpu/debugfs.o
CC fs/nfs/write.o
AR drivers/iommu/built-in.a
CC fs/lockd/trace.o
CC kernel/cgroup/debug.o
CC net/wireless/reg.o
CC drivers/acpi/acpica/exstorob.o
CC drivers/tty/vt/defkeymap.o
CC lib/is_single_threaded.o
CC io_uring/waitid.o
CC fs/ext4/readpage.o
CC drivers/tty/serial/serial_port.o
CC drivers/tty/serial/8250/8250_exar.o
AR sound/virtio/built-in.a
CC kernel/exit.o
CC drivers/tty/serial/earlycon.o
CC net/ethtool/cabletest.o
CC net/netfilter/nf_conntrack_proto_icmp.o
AR drivers/virtio/built-in.a
CC fs/autofs/symlink.o
CC drivers/base/regmap/regmap.o
CONMK drivers/tty/vt/consolemap_deftbl.c
CC drivers/tty/vt/consolemap_deftbl.o
CC fs/9p/vfs_super.o
AR drivers/tty/vt/built-in.a
CC drivers/char/misc.o
CC drivers/base/power/qos.o
CC drivers/gpu/drm/display/drm_hdcp_helper.o
CC kernel/time/tick-broadcast-hrtimer.o
CC net/ethtool/tunnels.o
CC drivers/gpu/drm/ttm/ttm_module.o
CC net/netlabel/netlabel_mgmt.o
CC drivers/acpi/acpica/exsystem.o
CC fs/ext4/resize.o
CC lib/klist.o
CC arch/x86/kernel/cpu/capflags.o
AR drivers/pci/built-in.a
CC io_uring/register.o
AR arch/x86/kernel/cpu/built-in.a
CC arch/x86/kernel/irq.o
CC kernel/trace/trace_event_perf.o
CC net/ethtool/fec.o
CC crypto/aes_generic.o
AR drivers/base/firmware_loader/built-in.a
CC crypto/crc32c_generic.o
CC fs/9p/vfs_inode.o
CC net/sunrpc/auth_gss/gss_krb5_keys.o
CC sound/sound_core.o
CC kernel/time/tick-oneshot.o
CC drivers/gpu/drm/i915/i915_drm_client.o
AR kernel/cgroup/built-in.a
CC net/ipv6/route.o
CC drivers/tty/serial/8250/8250_lpss.o
CC lib/kobject.o
CC drivers/acpi/acpica/extrace.o
CC fs/ext4/super.o
CC fs/autofs/waitq.o
CC [M] sound/hda/hdac_component.o
AR drivers/base/test/built-in.a
CC fs/autofs/expire.o
CC kernel/time/tick-sched.o
CC drivers/char/virtio_console.o
CC drivers/gpu/drm/display/drm_hdmi_helper.o
CC drivers/gpu/drm/ttm/ttm_execbuf_util.o
CC net/ethtool/eeprom.o
CC arch/x86/kernel/irq_32.o
CC drivers/acpi/acpica/exutils.o
CC drivers/acpi/acpica/hwacpi.o
CC net/ipv4/tcp_input.o
CC net/ipv6/ip6_fib.o
CC [M] sound/hda/hdac_i915.o
CC fs/lockd/xdr.o
CC fs/lockd/clnt4xdr.o
CC net/core/sock_diag.o
CC net/core/dev_ioctl.o
CC net/netfilter/nf_conntrack_extend.o
CC drivers/base/power/runtime.o
CC arch/x86/kernel/dumpstack_32.o
AR drivers/gpu/drm/renesas/rcar-du/built-in.a
CC net/mac80211/sta_info.o
AR drivers/gpu/drm/renesas/rz-du/built-in.a
CC drivers/acpi/acpica/hwesleep.o
AR drivers/gpu/drm/renesas/built-in.a
CC fs/lockd/xdr4.o
CC crypto/authenc.o
CC lib/kobject_uevent.o
CC drivers/tty/serial/8250/8250_mid.o
CC drivers/base/power/wakeirq.o
CC kernel/trace/trace_events_filter.o
CC drivers/gpu/drm/ttm/ttm_range_manager.o
CC drivers/gpu/drm/ttm/ttm_resource.o
CC drivers/gpu/drm/display/drm_scdc_helper.o
CC drivers/gpu/drm/i915/i915_getparam.o
CC drivers/base/regmap/regcache.o
CC drivers/base/component.o
CC net/netlabel/netlabel_unlabeled.o
CC drivers/base/power/main.o
CC fs/autofs/dev-ioctl.o
CC sound/last.o
CC drivers/acpi/glue.o
CC drivers/acpi/acpica/hwgpe.o
CC [M] sound/hda/intel-dsp-config.o
CC mm/mmap_lock.o
CC fs/9p/vfs_inode_dotl.o
AR net/sunrpc/auth_gss/built-in.a
CC net/sunrpc/auth_unix.o
AR drivers/gpu/drm/omapdrm/built-in.a
CC kernel/trace/trace_events_trigger.o
CC net/ethtool/stats.o
CC drivers/gpu/drm/i915/i915_ioctl.o
CC kernel/time/timer_migration.o
CC drivers/acpi/acpica/hwregs.o
CC io_uring/truncate.o
CC net/ipv6/ipv6_sockglue.o
CC fs/ext4/symlink.o
CC net/rfkill/core.o
CC drivers/acpi/scan.o
CC net/core/tso.o
CC drivers/char/hpet.o
CC drivers/tty/serial/8250/8250_pci.o
CC net/netfilter/nf_conntrack_acct.o
CC drivers/block/loop.o
CC block/mq-deadline.o
CC arch/x86/kernel/time.o
CC kernel/trace/trace_eprobe.o
CC kernel/time/vsyscall.o
CC crypto/authencesn.o
CC drivers/acpi/acpica/hwsleep.o
CC net/wireless/scan.o
CC fs/9p/vfs_addr.o
AR drivers/gpu/drm/display/built-in.a
CC drivers/tty/tty_ioctl.o
CC drivers/gpu/drm/ttm/ttm_pool.o
CC drivers/gpu/drm/ttm/ttm_device.o
CC [M] sound/hda/intel-nhlt.o
CC drivers/tty/tty_ldisc.o
CC lib/logic_pio.o
CC fs/lockd/svc4proc.o
CC kernel/time/timekeeping_debug.o
CC net/netlabel/netlabel_cipso_v4.o
AR fs/autofs/built-in.a
CC arch/x86/kernel/ioport.o
CC mm/highmem.o
CC fs/nfs/namespace.o
CC drivers/acpi/acpica/hwvalid.o
CC drivers/base/power/wakeup.o
CC kernel/softirq.o
CC net/ipv6/ndisc.o
CC fs/lockd/procfs.o
CC drivers/base/regmap/regcache-rbtree.o
CC drivers/gpu/drm/i915/i915_irq.o
CC drivers/gpu/drm/i915/i915_mitigations.o
CC net/sunrpc/svc.o
CC io_uring/memmap.o
CC drivers/char/nvram.o
CC fs/9p/vfs_file.o
CC fs/nfs/mount_clnt.o
CC [M] sound/hda/intel-sdw-acpi.o
CC net/ethtool/phc_vclocks.o
CC block/kyber-iosched.o
CC net/rfkill/input.o
CC lib/maple_tree.o
CC lib/memcat_p.o
CC drivers/acpi/acpica/hwxface.o
CC drivers/tty/serial/8250/8250_pericom.o
AR drivers/gpu/drm/tilcdc/built-in.a
CC net/sunrpc/svcsock.o
CC net/netfilter/nf_conntrack_seqadj.o
CC net/core/sock_reuseport.o
CC net/sunrpc/svcauth.o
CC drivers/acpi/acpica/hwxfsleep.o
CC kernel/trace/trace_kprobe.o
CC drivers/block/virtio_blk.o
CC crypto/lzo.o
CC arch/x86/kernel/dumpstack.o
CC drivers/gpu/drm/ttm/ttm_sys_manager.o
CC drivers/base/core.o
LD [M] sound/hda/snd-hda-core.o
CC drivers/gpu/drm/virtio/virtgpu_drv.o
CC drivers/base/regmap/regcache-flat.o
LD [M] sound/hda/snd-intel-dspcfg.o
LD [M] sound/hda/snd-intel-sdw-acpi.o
CC drivers/gpu/drm/ttm/ttm_agp_backend.o
AR sound/built-in.a
CC mm/memory.o
CC mm/mincore.o
AR drivers/gpu/drm/imx/built-in.a
CC kernel/trace/error_report-traces.o
CC drivers/base/bus.o
CC kernel/time/namespace.o
CC drivers/acpi/acpica/hwpci.o
CC io_uring/io-wq.o
AR fs/lockd/built-in.a
CC crypto/lzo-rle.o
CC net/ipv4/tcp_output.o
AR drivers/misc/eeprom/built-in.a
AR drivers/misc/cb710/built-in.a
AR drivers/misc/ti-st/built-in.a
AR drivers/misc/lis3lv02d/built-in.a
AR net/rfkill/built-in.a
AR drivers/misc/cardreader/built-in.a
CC io_uring/futex.o
AR drivers/misc/keba/built-in.a
CC fs/nfs/nfstrace.o
AR drivers/misc/built-in.a
CC fs/9p/vfs_dir.o
CC fs/9p/vfs_dentry.o
CC net/netlabel/netlabel_calipso.o
AR drivers/char/built-in.a
CC drivers/acpi/acpica/nsaccess.o
CC kernel/resource.o
AR drivers/gpu/drm/i2c/built-in.a
AR drivers/tty/serial/8250/built-in.a
CC kernel/trace/power-traces.o
CC net/netfilter/nf_conntrack_proto_icmpv6.o
AR drivers/tty/serial/built-in.a
CC crypto/rng.o
CC drivers/tty/tty_buffer.o
CC fs/9p/v9fs.o
CC net/ethtool/mm.o
CC arch/x86/kernel/nmi.o
CC drivers/acpi/mipi-disco-img.o
CC net/mac80211/wep.o
CC drivers/base/regmap/regcache-maple.o
CC net/9p/mod.o
CC drivers/base/power/wakeup_stats.o
CC io_uring/napi.o
AR drivers/gpu/drm/ttm/built-in.a
CC drivers/base/dd.o
CC drivers/gpu/drm/virtio/virtgpu_kms.o
CC drivers/acpi/acpica/nsalloc.o
CC drivers/gpu/drm/i915/i915_module.o
CC drivers/base/syscore.o
AR drivers/mfd/built-in.a
CC fs/ext4/sysfs.o
CC net/ipv4/tcp_timer.o
AR kernel/time/built-in.a
CC fs/ext4/xattr.o
CC net/core/fib_notifier.o
CC mm/mlock.o
CC drivers/base/regmap/regmap-debugfs.o
CC drivers/base/power/trace.o
CC fs/ext4/xattr_hurd.o
AR drivers/block/built-in.a
CC kernel/trace/rpm-traces.o
CC crypto/drbg.o
CC block/blk-mq-pci.o
CC net/9p/client.o
CC drivers/acpi/acpica/nsarguments.o
CC drivers/tty/tty_port.o
CC fs/9p/fid.o
CC block/blk-mq-virtio.o
CC arch/x86/kernel/ldt.o
CC fs/nfs/export.o
AR net/netlabel/built-in.a
CC net/ethtool/module.o
CC kernel/trace/trace_dynevent.o
CC net/mac80211/aead_api.o
CC net/ipv6/udp.o
CC drivers/gpu/drm/virtio/virtgpu_gem.o
AR fs/hostfs/built-in.a
CC lib/nmi_backtrace.o
CC net/core/xdp.o
CC drivers/acpi/acpica/nsconvert.o
CC net/sunrpc/svcauth_unix.o
CC block/blk-mq-debugfs.o
CC mm/mmap.o
CC net/netfilter/nf_conntrack_netlink.o
CC drivers/tty/tty_mutex.o
CC net/netfilter/nf_conntrack_ftp.o
CC drivers/acpi/acpica/nsdump.o
AR drivers/base/power/built-in.a
CC drivers/acpi/acpica/nseval.o
CC fs/9p/xattr.o
AR drivers/base/regmap/built-in.a
CC kernel/trace/trace_probe.o
AR drivers/nfc/built-in.a
CC lib/objpool.o
CC net/mac80211/wpa.o
CC net/ipv4/tcp_ipv4.o
CC net/netfilter/nf_conntrack_irc.o
CC drivers/tty/tty_ldsem.o
CC drivers/gpu/drm/i915/i915_params.o
CC drivers/acpi/resource.o
CC drivers/gpu/drm/virtio/virtgpu_vram.o
CC crypto/jitterentropy.o
CC net/sunrpc/addr.o
CC net/sunrpc/rpcb_clnt.o
CC fs/nfs/sysfs.o
CC crypto/jitterentropy-kcapi.o
CC net/netfilter/nf_conntrack_sip.o
CC net/9p/error.o
CC net/9p/protocol.o
CC net/ethtool/cmis_fw_update.o
AR io_uring/built-in.a
CC fs/ext4/xattr_trusted.o
CC arch/x86/kernel/setup.o
CC net/ipv4/tcp_minisocks.o
CC drivers/acpi/acpi_processor.o
CC drivers/acpi/acpica/nsinit.o
CC drivers/gpu/drm/i915/i915_pci.o
CC net/ethtool/cmis_cdb.o
CC net/wireless/nl80211.o
CC drivers/gpu/drm/virtio/virtgpu_display.o
CC drivers/tty/tty_baudrate.o
CC net/ethtool/pse-pd.o
CC kernel/sysctl.o
CC drivers/base/driver.o
AR fs/9p/built-in.a
AR drivers/gpu/drm/panel/built-in.a
CC kernel/capability.o
CC kernel/ptrace.o
CC crypto/ghash-generic.o
CC block/blk-pm.o
CC drivers/acpi/acpica/nsload.o
CC lib/plist.o
CC net/core/flow_offload.o
CC net/netfilter/nf_nat_core.o
CC net/wireless/mlme.o
CC net/ipv4/tcp_cong.o
AR drivers/dax/hmem/built-in.a
AR drivers/dax/built-in.a
CC arch/x86/kernel/x86_init.o
CC kernel/trace/trace_uprobe.o
CC crypto/hash_info.o
CC net/9p/trans_common.o
CC lib/radix-tree.o
CC drivers/base/class.o
CC crypto/rsapubkey.asn1.o
CC drivers/tty/tty_jobctrl.o
CC drivers/acpi/acpica/nsnames.o
CC crypto/rsaprivkey.asn1.o
CC drivers/acpi/acpica/nsobject.o
AR crypto/built-in.a
CC kernel/user.o
CC net/9p/trans_fd.o
CC net/9p/trans_virtio.o
CC drivers/gpu/drm/virtio/virtgpu_vq.o
CC drivers/acpi/acpica/nsparse.o
CC fs/debugfs/inode.o
CC net/mac80211/scan.o
CC kernel/trace/rethook.o
CC drivers/gpu/drm/i915/i915_scatterlist.o
CC drivers/gpu/drm/i915/i915_suspend.o
CC net/wireless/ibss.o
CC net/ipv6/udplite.o
CC block/holder.o
CC drivers/base/platform.o
CC drivers/acpi/processor_core.o
CC drivers/acpi/acpica/nspredef.o
CC net/core/gro.o
CC net/ipv4/tcp_metrics.o
CC net/ethtool/plca.o
CC fs/tracefs/inode.o
CC mm/mmu_gather.o
AR drivers/gpu/drm/bridge/analogix/built-in.a
CC fs/tracefs/event_inode.o
CC arch/x86/kernel/i8259.o
AR drivers/gpu/drm/bridge/cadence/built-in.a
AR drivers/gpu/drm/bridge/imx/built-in.a
CC fs/debugfs/file.o
CC drivers/gpu/drm/i915/i915_switcheroo.o
AR drivers/gpu/drm/bridge/synopsys/built-in.a
AR drivers/gpu/drm/bridge/built-in.a
CC kernel/signal.o
CC net/ethtool/phy.o
CC drivers/acpi/processor_pdc.o
CC fs/ext4/xattr_user.o
CC net/sunrpc/timer.o
CC drivers/gpu/drm/virtio/virtgpu_fence.o
CC drivers/acpi/acpica/nsprepkg.o
CC net/core/netdev-genl.o
CC drivers/acpi/acpica/nsrepair.o
CC drivers/tty/n_null.o
CC net/ipv4/tcp_fastopen.o
CC [M] fs/efivarfs/inode.o
AR drivers/gpu/drm/hisilicon/built-in.a
CC drivers/acpi/ec.o
AR block/built-in.a
CC net/wireless/sme.o
CC net/dns_resolver/dns_key.o
CC net/mac80211/offchannel.o
CC fs/ext4/fast_commit.o
CC net/ipv4/tcp_rate.o
CC net/dns_resolver/dns_query.o
CC arch/x86/kernel/irqinit.o
CC kernel/sys.o
CC drivers/base/cpu.o
CC lib/ratelimit.o
CC net/wireless/chan.o
CC drivers/acpi/acpica/nsrepair2.o
CC [M] fs/efivarfs/file.o
CC net/ipv6/raw.o
CC mm/mprotect.o
CC drivers/acpi/dock.o
CC net/netfilter/nf_nat_proto.o
AR drivers/gpu/drm/mxsfb/built-in.a
CC fs/nfs/fs_context.o
CC net/sunrpc/xdr.o
CC drivers/acpi/pci_root.o
CC fs/ext4/orphan.o
AR net/9p/built-in.a
CC net/netfilter/nf_nat_helper.o
CC drivers/dma-buf/dma-buf.o
AR fs/tracefs/built-in.a
CC net/devres.o
CC net/handshake/alert.o
CC net/core/netdev-genl-gen.o
CC drivers/base/firmware.o
CC drivers/tty/pty.o
CC fs/ext4/acl.o
CC drivers/gpu/drm/i915/i915_sysfs.o
CC drivers/gpu/drm/virtio/virtgpu_object.o
CC drivers/acpi/acpica/nssearch.o
AR net/ethtool/built-in.a
CC arch/x86/kernel/jump_label.o
CC net/mac80211/ht.o
AR fs/debugfs/built-in.a
AR kernel/trace/built-in.a
CC net/netfilter/nf_nat_masquerade.o
CC drivers/base/init.o
CC drivers/gpu/drm/virtio/virtgpu_debugfs.o
CC drivers/acpi/pci_link.o
AR net/dns_resolver/built-in.a
CC [M] fs/efivarfs/super.o
CC mm/mremap.o
CC drivers/dma-buf/dma-fence.o
CC drivers/tty/tty_audit.o
CC drivers/acpi/acpica/nsutils.o
CC net/handshake/genl.o
CC lib/rbtree.o
AR drivers/cxl/core/built-in.a
AR drivers/cxl/built-in.a
CC net/mac80211/agg-tx.o
CC drivers/gpu/drm/virtio/virtgpu_plane.o
CC kernel/umh.o
CC drivers/gpu/drm/i915/i915_utils.o
CC lib/seq_buf.o
CC arch/x86/kernel/irq_work.o
CC net/wireless/ethtool.o
CC net/netfilter/nf_nat_ftp.o
CC net/core/gso.o
CC net/ipv4/tcp_recovery.o
CC drivers/base/map.o
CC net/mac80211/agg-rx.o
CC drivers/base/devres.o
CC drivers/tty/sysrq.o
CC net/handshake/netlink.o
CC drivers/acpi/pci_irq.o
CC net/sunrpc/sunrpc_syms.o
CC fs/nfs/nfsroot.o
CC net/mac80211/vht.o
CC drivers/acpi/acpica/nswalk.o
CC net/socket.o
CC net/sunrpc/cache.o
CC drivers/macintosh/mac_hid.o
CC [M] fs/efivarfs/vars.o
CC net/wireless/mesh.o
CC net/netfilter/nf_nat_irc.o
AR drivers/gpu/drm/tiny/built-in.a
AR drivers/gpu/drm/xlnx/built-in.a
CC net/ipv4/tcp_ulp.o
AR drivers/gpu/drm/gud/built-in.a
CC drivers/dma-buf/dma-fence-array.o
CC net/ipv4/tcp_offload.o
CC drivers/base/attribute_container.o
CC lib/siphash.o
CC drivers/acpi/acpica/nsxfeval.o
CC drivers/gpu/drm/virtio/virtgpu_ioctl.o
CC mm/msync.o
CC fs/open.o
CC net/sysctl_net.o
CC net/wireless/ap.o
AR drivers/scsi/pcmcia/built-in.a
CC drivers/scsi/scsi.o
CC kernel/workqueue.o
CC fs/nfs/sysctl.o
CC fs/ext4/xattr_security.o
AR drivers/nvme/common/built-in.a
AR drivers/nvme/host/built-in.a
AR drivers/nvme/target/built-in.a
CC drivers/gpu/drm/i915/intel_clock_gating.o
AR drivers/nvme/built-in.a
CC drivers/scsi/hosts.o
CC drivers/ata/libata-core.o
CC fs/read_write.o
CC net/ipv6/icmp.o
AR drivers/macintosh/built-in.a
CC drivers/acpi/acpica/nsxfname.o
CC net/core/net-sysfs.o
CC lib/string.o
CC drivers/dma-buf/dma-fence-chain.o
CC arch/x86/kernel/probe_roms.o
CC drivers/base/transport_class.o
CC net/ipv6/mcast.o
AR drivers/tty/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_prime.o
CC net/sunrpc/rpc_pipe.o
CC drivers/gpu/drm/virtio/virtgpu_trace_points.o
AR drivers/gpu/drm/solomon/built-in.a
CC arch/x86/kernel/sys_ia32.o
LD [M] fs/efivarfs/efivarfs.o
CC drivers/acpi/acpi_apd.o
CC fs/nfs/nfs3super.o
CC drivers/gpu/drm/i915/intel_device_info.o
CC lib/timerqueue.o
CC net/handshake/request.o
AR drivers/net/phy/qcom/built-in.a
CC drivers/net/phy/mdio-boardinfo.o
CC net/wireless/trace.o
CC lib/union_find.o
CC fs/file_table.o
CC net/netfilter/nf_nat_sip.o
CC drivers/acpi/acpica/nsxfobj.o
CC mm/page_vma_mapped.o
CC lib/vsprintf.o
CC drivers/base/topology.o
CC drivers/dma-buf/dma-fence-unwrap.o
AR fs/ext4/built-in.a
CC drivers/ata/libata-scsi.o
CC drivers/scsi/scsi_ioctl.o
CC drivers/dma-buf/dma-resv.o
CC [M] drivers/gpu/drm/scheduler/sched_main.o
CC net/wireless/ocb.o
CC drivers/gpu/drm/i915/intel_memory_region.o
CC net/netfilter/x_tables.o
AR drivers/net/pse-pd/built-in.a
CC kernel/pid.o
CC drivers/acpi/acpica/psargs.o
CC lib/win_minmax.o
CC fs/super.o
CC arch/x86/kernel/ksysfs.o
CC drivers/firewire/init_ohci1394_dma.o
CC drivers/gpu/drm/virtio/virtgpu_submit.o
CC net/ipv4/tcp_plb.o
CC drivers/dma-buf/sync_file.o
CC fs/char_dev.o
CC drivers/net/phy/stubs.o
CC net/handshake/tlshd.o
CC drivers/base/container.o
CC fs/nfs/nfs3client.o
CC net/core/hotdata.o
CC net/handshake/trace.o
CC mm/pagewalk.o
CC drivers/gpu/drm/i915/intel_pcode.o
HOSTCC drivers/gpu/drm/xe/xe_gen_wa_oob
CC drivers/net/phy/mdio_devres.o
CC drivers/acpi/acpica/psloop.o
CC drivers/cdrom/cdrom.o
GEN xe_wa_oob.c xe_wa_oob.h
CC [M] drivers/gpu/drm/xe/xe_bb.o
CC net/sunrpc/sysfs.o
CC kernel/task_work.o
CC drivers/scsi/scsicam.o
CC drivers/base/property.o
CC mm/pgtable-generic.o
CC arch/x86/kernel/bootflag.o
CC [M] drivers/gpu/drm/scheduler/sched_fence.o
CC drivers/acpi/acpica/psobject.o
AR drivers/firewire/built-in.a
CC lib/xarray.o
CC net/core/netdev_rx_queue.o
CC net/wireless/pmsr.o
CC drivers/net/phy/phy.o
AR drivers/dma-buf/built-in.a
CC net/mac80211/he.o
CC net/netfilter/xt_tcpudp.o
CC drivers/gpu/drm/drm_aperture.o
CC drivers/acpi/acpica/psopcode.o
CC fs/nfs/nfs3proc.o
AR drivers/gpu/drm/virtio/built-in.a
CC net/sunrpc/svc_xprt.o
CC fs/stat.o
CC drivers/acpi/acpi_platform.o
CC arch/x86/kernel/e820.o
CC arch/x86/kernel/pci-dma.o
CC drivers/ata/libata-eh.o
AR drivers/auxdisplay/built-in.a
CC drivers/acpi/acpi_pnp.o
CC [M] drivers/gpu/drm/scheduler/sched_entity.o
CC drivers/base/cacheinfo.o
GEN net/wireless/shipped-certs.c
CC net/ipv6/reassembly.o
CC drivers/gpu/drm/i915/intel_region_ttm.o
CC drivers/acpi/acpica/psopinfo.o
CC net/netfilter/xt_CONNSECMARK.o
CC [M] drivers/gpu/drm/xe/xe_bo.o
CC net/ipv4/datagram.o
CC fs/nfs/nfs3xdr.o
CC drivers/base/swnode.o
CC arch/x86/kernel/quirks.o
CC drivers/scsi/scsi_error.o
CC drivers/pcmcia/cs.o
CC drivers/usb/common/common.o
CC drivers/usb/core/usb.o
CC mm/rmap.o
CC drivers/pcmcia/socket_sysfs.o
CC drivers/input/serio/serio.o
CC drivers/usb/core/hub.o
CC lib/lockref.o
CC drivers/acpi/acpica/psparse.o
CC drivers/acpi/acpica/psscope.o
CC net/ipv4/raw.o
CC net/core/net-procfs.o
CC drivers/base/auxiliary.o
CC drivers/pcmcia/cardbus.o
CC drivers/ata/libata-transport.o
AR drivers/usb/phy/built-in.a
CC kernel/extable.o
CC fs/nfs/nfs3acl.o
AR net/handshake/built-in.a
CC drivers/ata/libata-trace.o
CC drivers/base/devtmpfs.o
CC drivers/scsi/scsi_lib.o
LD [M] drivers/gpu/drm/scheduler/gpu-sched.o
CC drivers/acpi/power.o
CC fs/exec.o
CC net/mac80211/s1g.o
CC drivers/input/serio/i8042.o
CC mm/vmalloc.o
CC drivers/usb/common/debug.o
CC drivers/acpi/acpica/pstree.o
CC net/sunrpc/xprtmultipath.o
CC drivers/ata/libata-sata.o
CC net/core/netpoll.o
AR drivers/usb/common/built-in.a
CC drivers/scsi/constants.o
CC drivers/input/keyboard/atkbd.o
CC drivers/rtc/lib.o
CC net/ipv4/udp.o
CC drivers/gpu/drm/i915/intel_runtime_pm.o
CC lib/bcd.o
CC drivers/input/serio/serport.o
CC net/sunrpc/stats.o
CC arch/x86/kernel/kdebugfs.o
CC drivers/gpu/drm/drm_atomic.o
CC drivers/net/phy/phy-c45.o
AR drivers/cdrom/built-in.a
CC drivers/ata/libata-sff.o
CC drivers/input/serio/libps2.o
CC net/netfilter/xt_NFLOG.o
CC [M] drivers/gpu/drm/xe/xe_bo_evict.o
CC lib/sort.o
CC drivers/pcmcia/ds.o
CC [M] drivers/gpu/drm/xe/xe_devcoredump.o
CC drivers/acpi/acpica/psutils.o
CC drivers/input/mouse/psmouse-base.o
CC lib/parser.o
AR drivers/input/joystick/built-in.a
CC net/ipv6/tcp_ipv6.o
CC net/ipv6/ping.o
CC drivers/acpi/acpica/pswalk.o
CC net/ipv6/exthdrs.o
CC drivers/base/module.o
CC net/sunrpc/sysctl.o
CC drivers/rtc/class.o
CC kernel/params.o
CC fs/nfs/nfs4proc.o
CC arch/x86/kernel/alternative.o
CC drivers/input/mouse/synaptics.o
CC drivers/acpi/event.o
CC lib/debug_locks.o
CC net/wireless/shipped-certs.o
CC drivers/usb/core/hcd.o
CC drivers/gpu/drm/drm_atomic_uapi.o
CC drivers/acpi/acpica/psxface.o
CC drivers/pcmcia/pcmcia_resource.o
CC net/ipv4/udplite.o
CC lib/random32.o
CC drivers/input/mouse/focaltech.o
CC drivers/base/auxiliary_sysfs.o
CC net/netfilter/xt_SECMARK.o
CC drivers/base/devcoredump.o
AR drivers/input/keyboard/built-in.a
CC [M] drivers/gpu/drm/xe/xe_device.o
CC net/ipv4/udp_offload.o
CC drivers/net/phy/phy-core.o
CC drivers/gpu/drm/i915/intel_sbi.o
CC net/mac80211/ibss.o
AR drivers/input/serio/built-in.a
CC net/ipv6/datagram.o
CC drivers/net/mdio/acpi_mdio.o
CC drivers/gpu/drm/drm_auth.o
CC drivers/rtc/interface.o
CC drivers/acpi/acpica/rsaddr.o
CC [M] drivers/gpu/drm/xe/xe_device_sysfs.o
CC lib/bust_spinlocks.o
CC arch/x86/kernel/i8253.o
CC drivers/usb/core/urb.o
CC net/ipv4/arp.o
CC fs/pipe.o
CC drivers/scsi/scsi_lib_dma.o
CC net/core/fib_rules.o
CC drivers/acpi/evged.o
CC net/ipv6/ip6_flowlabel.o
CC drivers/gpu/drm/i915/intel_step.o
CC drivers/acpi/acpica/rscalc.o
CC kernel/kthread.o
CC drivers/ata/libata-pmp.o
CC net/ipv4/icmp.o
CC net/mac80211/iface.o
CC drivers/usb/core/message.o
CC lib/kasprintf.o
CC fs/nfs/nfs4xdr.o
CC drivers/base/platform-msi.o
CC drivers/net/phy/phy_device.o
CC drivers/pcmcia/cistpl.o
CC lib/bitmap.o
CC net/netfilter/xt_TCPMSS.o
CC arch/x86/kernel/hw_breakpoint.o
CC drivers/gpu/drm/drm_blend.o
CC drivers/acpi/sysfs.o
CC net/ipv6/inet6_connection_sock.o
CC drivers/input/mouse/alps.o
CC drivers/gpu/drm/i915/intel_uncore.o
CC drivers/scsi/scsi_scan.o
GEN drivers/scsi/scsi_devinfo_tbl.c
CC drivers/acpi/acpica/rscreate.o
CC drivers/ata/libata-acpi.o
CC net/ipv4/devinet.o
CC fs/nfs/nfs4state.o
CC drivers/usb/core/driver.o
CC drivers/net/mdio/fwnode_mdio.o
CC drivers/rtc/nvmem.o
CC drivers/base/physical_location.o
CC drivers/usb/mon/mon_main.o
CC drivers/gpu/drm/i915/intel_wakeref.o
CC drivers/usb/host/pci-quirks.o
CC [M] drivers/gpu/drm/xe/xe_dma_buf.o
CC drivers/gpu/drm/i915/vlv_sideband.o
CC drivers/i2c/algos/i2c-algo-bit.o
CC drivers/i2c/busses/i2c-i801.o
AR net/sunrpc/built-in.a
CC drivers/input/mouse/byd.o
CC drivers/acpi/acpica/rsdumpinfo.o
CC net/ipv6/udp_offload.o
AR drivers/net/pcs/built-in.a
CC [M] drivers/gpu/drm/xe/xe_drm_client.o
CC fs/namei.o
CC drivers/base/trace.o
CC drivers/pcmcia/pcmcia_cis.o
CC drivers/usb/mon/mon_stat.o
CC lib/scatterlist.o
CC drivers/acpi/acpica/rsinfo.o
CC drivers/acpi/acpica/rsio.o
CC arch/x86/kernel/tsc.o
CC arch/x86/kernel/tsc_msr.o
CC net/mac80211/link.o
CC mm/vma.o
CC drivers/rtc/dev.o
CC net/ipv4/af_inet.o
CC drivers/input/mouse/logips2pp.o
AR drivers/net/mdio/built-in.a
CC drivers/scsi/scsi_devinfo.o
CC fs/nfs/nfs4renewd.o
CC drivers/usb/host/ehci-hcd.o
CC [M] drivers/gpu/drm/xe/xe_exec.o
CC drivers/acpi/acpica/rsirq.o
CC kernel/sys_ni.o
CC net/core/net-traces.o
CC net/ipv4/igmp.o
CC drivers/ata/libata-pata-timings.o
AR drivers/i3c/built-in.a
CC mm/process_vm_access.o
CC drivers/usb/core/config.o
CC arch/x86/kernel/io_delay.o
CC net/netfilter/xt_conntrack.o
CC drivers/scsi/scsi_sysctl.o
CC drivers/usb/class/usblp.o
CC fs/fcntl.o
CC drivers/input/mouse/lifebook.o
CC drivers/gpu/drm/drm_bridge.o
CC drivers/usb/mon/mon_text.o
CC drivers/net/phy/linkmode.o
AR drivers/i2c/algos/built-in.a
CC fs/nfs/nfs4super.o
CC [M] drivers/gpu/drm/xe/xe_execlist.o
CC net/core/selftests.o
CC kernel/nsproxy.o
CC drivers/acpi/acpica/rslist.o
AR drivers/base/built-in.a
CC drivers/acpi/acpica/rsmemory.o
CC net/ipv6/seg6.o
CC fs/ioctl.o
CC mm/page_alloc.o
CC drivers/rtc/proc.o
AR drivers/i2c/busses/built-in.a
AR drivers/i2c/muxes/built-in.a
CC drivers/i2c/i2c-boardinfo.o
CC drivers/gpu/drm/i915/vlv_suspend.o
CC drivers/usb/mon/mon_bin.o
CC drivers/pcmcia/rsrc_mgr.o
CC drivers/net/phy/phy_link_topology.o
CC drivers/net/phy/mdio_bus.o
CC drivers/rtc/sysfs.o
CC drivers/gpu/drm/drm_cache.o
CC drivers/acpi/acpica/rsmisc.o
CC arch/x86/kernel/rtc.o
CC drivers/scsi/scsi_proc.o
CC lib/list_sort.o
CC drivers/ata/ahci.o
CC drivers/input/mouse/pixart_ps2.o
CC kernel/notifier.o
CC net/core/ptp_classifier.o
CC lib/uuid.o
CC drivers/acpi/property.o
CC lib/iov_iter.o
CC drivers/usb/storage/scsiglue.o
AR drivers/usb/misc/built-in.a
AR drivers/usb/class/built-in.a
CC net/netfilter/xt_policy.o
CC drivers/acpi/acpica/rsserial.o
CC net/core/netprio_cgroup.o
CC drivers/net/phy/mdio_device.o
AR drivers/net/ethernet/3com/built-in.a
CC drivers/net/ethernet/8390/ne2k-pci.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/usb/core/file.o
AR drivers/net/wireless/broadcom/built-in.a
AR drivers/net/wireless/intel/built-in.a
CC [M] drivers/gpu/drm/xe/xe_exec_queue.o
AR drivers/net/wireless/intersil/built-in.a
CC drivers/usb/storage/protocol.o
AR drivers/net/usb/built-in.a
AR drivers/net/wireless/marvell/built-in.a
CC drivers/usb/storage/transport.o
AR drivers/net/wireless/mediatek/built-in.a
CC mm/init-mm.o
AR drivers/net/wireless/microchip/built-in.a
AR drivers/net/wireless/purelifi/built-in.a
AR drivers/net/wireless/quantenna/built-in.a
CC drivers/i2c/i2c-core-base.o
AR drivers/net/wireless/ralink/built-in.a
CC drivers/i2c/i2c-core-smbus.o
AR drivers/net/wireless/realtek/built-in.a
AR drivers/net/wireless/rsi/built-in.a
CC drivers/pcmcia/rsrc_nonstatic.o
AR drivers/net/wireless/silabs/built-in.a
AR drivers/net/wireless/st/built-in.a
AR drivers/net/wireless/ti/built-in.a
AR drivers/net/wireless/zydas/built-in.a
CC drivers/usb/host/ehci-pci.o
CC fs/readdir.o
AR drivers/net/wireless/virtual/built-in.a
AR drivers/net/wireless/built-in.a
CC fs/select.o
CC drivers/i2c/i2c-core-acpi.o
CC drivers/rtc/rtc-mc146818-lib.o
CC arch/x86/kernel/resource.o
CC drivers/usb/early/ehci-dbgp.o
CC drivers/acpi/acpica/rsutils.o
AR drivers/input/tablet/built-in.a
CC net/core/netclassid_cgroup.o
CC drivers/input/mouse/trackpoint.o
CC net/ipv6/fib6_notifier.o
CC net/netfilter/xt_state.o
AS arch/x86/kernel/irqflags.o
CC drivers/net/mii.o
AR drivers/usb/mon/built-in.a
CC drivers/scsi/scsi_debugfs.o
CC drivers/net/ethernet/8390/8390.o
CC [M] drivers/gpu/drm/xe/xe_force_wake.o
CC arch/x86/kernel/static_call.o
CC kernel/ksysfs.o
CC arch/x86/kernel/process.o
CC drivers/gpu/drm/i915/soc/intel_dram.o
CC [M] drivers/gpu/drm/xe/xe_ggtt.o
CC drivers/usb/core/buffer.o
CC drivers/net/phy/swphy.o
CC net/ipv6/rpl.o
CC drivers/ata/libahci.o
CC drivers/net/phy/fixed_phy.o
CC net/mac80211/rate.o
CC drivers/acpi/acpica/rsxface.o
CC net/ipv4/fib_frontend.o
CC drivers/usb/host/ohci-hcd.o
AR drivers/media/i2c/built-in.a
AR drivers/media/tuners/built-in.a
AR drivers/media/rc/keymaps/built-in.a
AR drivers/media/rc/built-in.a
AR drivers/input/touchscreen/built-in.a
CC drivers/acpi/acpica/tbdata.o
CC drivers/input/mouse/cypress_ps2.o
AR drivers/media/common/b2c2/built-in.a
AR drivers/media/common/saa7146/built-in.a
CC drivers/rtc/rtc-cmos.o
AR drivers/media/common/siano/built-in.a
CC drivers/acpi/acpica/tbfadt.o
AR drivers/media/common/v4l2-tpg/built-in.a
CC drivers/net/loopback.o
AR drivers/media/common/videobuf2/built-in.a
AR drivers/media/common/built-in.a
AR drivers/media/platform/allegro-dvt/built-in.a
AR drivers/media/platform/amlogic/meson-ge2d/built-in.a
AR drivers/media/platform/amlogic/built-in.a
CC drivers/acpi/debugfs.o
CC drivers/usb/storage/usb.o
AR drivers/media/platform/amphion/built-in.a
AR drivers/media/platform/aspeed/built-in.a
CC drivers/net/netconsole.o
AR drivers/media/platform/atmel/built-in.a
CC drivers/ata/ata_piix.o
AR drivers/media/platform/broadcom/built-in.a
AR drivers/media/platform/cadence/built-in.a
CC fs/nfs/nfs4file.o
AR drivers/media/pci/ttpci/built-in.a
CC drivers/pcmcia/yenta_socket.o
AR drivers/media/pci/b2c2/built-in.a
AR drivers/media/platform/chips-media/coda/built-in.a
AR drivers/media/pci/pluto2/built-in.a
AR drivers/media/platform/chips-media/wave5/built-in.a
AR drivers/media/platform/chips-media/built-in.a
AR drivers/media/pci/dm1105/built-in.a
AR drivers/media/pci/pt1/built-in.a
AR drivers/media/platform/imagination/built-in.a
AR drivers/media/pci/pt3/built-in.a
AR drivers/media/platform/intel/built-in.a
CC drivers/scsi/scsi_trace.o
AR drivers/media/pci/mantis/built-in.a
AR drivers/media/platform/marvell/built-in.a
AR drivers/media/pci/ngene/built-in.a
CC drivers/usb/storage/initializers.o
AR drivers/media/platform/mediatek/jpeg/built-in.a
AR drivers/usb/early/built-in.a
AR drivers/media/pci/ddbridge/built-in.a
CC drivers/usb/storage/sierra_ms.o
AR drivers/media/platform/mediatek/mdp/built-in.a
AR drivers/media/pci/saa7146/built-in.a
AR drivers/net/ethernet/adaptec/built-in.a
AR drivers/media/platform/mediatek/vcodec/common/built-in.a
CC lib/clz_ctz.o
AR drivers/media/pci/smipcie/built-in.a
CC lib/bsearch.o
AR drivers/media/platform/mediatek/vcodec/encoder/built-in.a
CC drivers/gpu/drm/i915/soc/intel_gmch.o
AR drivers/media/pci/netup_unidvb/built-in.a
AR drivers/media/platform/mediatek/vcodec/decoder/built-in.a
AR drivers/media/platform/mediatek/vcodec/built-in.a
CC kernel/cred.o
AR drivers/media/pci/intel/ipu3/built-in.a
AR drivers/media/pci/intel/ivsc/built-in.a
AR drivers/media/platform/mediatek/vpu/built-in.a
AR drivers/media/pci/intel/built-in.a
AR drivers/media/platform/mediatek/mdp3/built-in.a
AR drivers/media/pci/built-in.a
AR drivers/media/platform/mediatek/built-in.a
CC drivers/ata/pata_amd.o
AR drivers/media/platform/microchip/built-in.a
CC mm/memblock.o
CC net/mac80211/michael.o
AR drivers/media/platform/nuvoton/built-in.a
AR drivers/media/platform/nvidia/tegra-vde/built-in.a
AR drivers/media/platform/nvidia/built-in.a
CC drivers/usb/core/sysfs.o
CC drivers/ata/pata_oldpiix.o
AR drivers/media/platform/nxp/dw100/built-in.a
AR drivers/media/platform/nxp/imx-jpeg/built-in.a
AR drivers/media/platform/nxp/imx8-isi/built-in.a
CC drivers/scsi/scsi_logging.o
CC drivers/net/phy/realtek.o
AR drivers/media/platform/nxp/built-in.a
AR drivers/media/platform/qcom/camss/built-in.a
CC drivers/scsi/scsi_pm.o
CC drivers/acpi/acpica/tbfind.o
AR drivers/media/platform/qcom/venus/built-in.a
AR drivers/media/platform/qcom/built-in.a
CC drivers/acpi/acpica/tbinstal.o
AR drivers/media/platform/raspberrypi/pisp_be/built-in.a
AR drivers/media/platform/raspberrypi/built-in.a
AR drivers/media/platform/renesas/rcar-vin/built-in.a
CC [M] net/netfilter/nf_log_syslog.o
AR drivers/media/platform/renesas/rzg2l-cru/built-in.a
CC drivers/usb/core/endpoint.o
AR drivers/media/platform/renesas/vsp1/built-in.a
AR drivers/media/platform/renesas/built-in.a
CC drivers/ata/pata_sch.o
CC drivers/usb/storage/option_ms.o
AR drivers/media/platform/rockchip/rga/built-in.a
AR drivers/media/platform/rockchip/rkisp1/built-in.a
AR drivers/media/platform/rockchip/built-in.a
CC net/core/dst_cache.o
AR drivers/media/platform/samsung/exynos-gsc/built-in.a
AR drivers/media/platform/samsung/exynos4-is/built-in.a
AR drivers/net/ethernet/8390/built-in.a
AR drivers/media/platform/samsung/s3c-camif/built-in.a
CC drivers/input/mouse/psmouse-smbus.o
AR drivers/net/ethernet/agere/built-in.a
AR drivers/media/platform/samsung/s5p-g2d/built-in.a
AR drivers/net/ethernet/alacritech/built-in.a
AR drivers/media/platform/samsung/s5p-jpeg/built-in.a
AR drivers/net/ethernet/alteon/built-in.a
AR drivers/media/platform/samsung/s5p-mfc/built-in.a
AR drivers/media/platform/samsung/built-in.a
AR drivers/net/ethernet/amazon/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gpu_scheduler.o
AR drivers/net/ethernet/amd/built-in.a
AR drivers/media/platform/st/sti/bdisp/built-in.a
AR drivers/net/ethernet/aquantia/built-in.a
AR drivers/media/platform/st/sti/c8sectpfe/built-in.a
AR drivers/net/ethernet/arc/built-in.a
AR drivers/media/platform/st/sti/delta/built-in.a
AR drivers/net/ethernet/asix/built-in.a
AR drivers/media/platform/st/sti/hva/built-in.a
AR drivers/net/ethernet/atheros/built-in.a
AR drivers/media/platform/st/stm32/built-in.a
AR drivers/net/ethernet/cadence/built-in.a
AR drivers/media/platform/st/built-in.a
CC drivers/net/ethernet/broadcom/bnx2.o
AR drivers/media/platform/sunxi/sun4i-csi/built-in.a
CC drivers/net/ethernet/broadcom/tg3.o
AR drivers/media/platform/sunxi/sun6i-csi/built-in.a
AR drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
AR drivers/media/usb/b2c2/built-in.a
AR drivers/media/mmc/siano/built-in.a
AR drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
AR drivers/media/mmc/built-in.a
AR drivers/media/usb/dvb-usb/built-in.a
CC drivers/net/virtio_net.o
AR drivers/media/platform/sunxi/sun8i-di/built-in.a
CC net/ipv6/ioam6.o
AR drivers/media/usb/dvb-usb-v2/built-in.a
AR drivers/media/platform/sunxi/sun8i-rotate/built-in.a
AR drivers/media/platform/sunxi/built-in.a
AR drivers/media/usb/s2255/built-in.a
AR drivers/media/usb/siano/built-in.a
CC net/mac80211/tkip.o
AR drivers/input/misc/built-in.a
CC arch/x86/kernel/ptrace.o
CC drivers/acpi/acpica/tbprint.o
AR drivers/media/platform/ti/am437x/built-in.a
CC [M] net/netfilter/xt_mark.o
AR drivers/media/usb/ttusb-budget/built-in.a
CC drivers/gpu/drm/drm_client.o
AR drivers/media/platform/ti/cal/built-in.a
AR drivers/media/usb/ttusb-dec/built-in.a
AR drivers/media/usb/built-in.a
AR drivers/media/platform/ti/vpe/built-in.a
AR drivers/media/platform/ti/davinci/built-in.a
AR drivers/media/platform/ti/omap/built-in.a
AR drivers/media/platform/ti/j721e-csi2rx/built-in.a
CC fs/nfs/delegation.o
CC net/ipv4/fib_semantics.o
AR drivers/rtc/built-in.a
AR drivers/media/platform/ti/omap3isp/built-in.a
CC lib/find_bit.o
CC drivers/net/net_failover.o
AR drivers/media/platform/ti/built-in.a
CC drivers/ata/pata_mpiix.o
AR drivers/media/platform/verisilicon/built-in.a
AR drivers/media/platform/via/built-in.a
AR drivers/media/platform/xilinx/built-in.a
CC fs/dcache.o
AR drivers/media/platform/built-in.a
CC drivers/i2c/i2c-smbus.o
AR drivers/media/firewire/built-in.a
AR drivers/media/spi/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc.o
CC drivers/gpu/drm/i915/soc/intel_pch.o
AR drivers/media/test-drivers/built-in.a
AR drivers/media/built-in.a
CC mm/slub.o
CC net/mac80211/aes_cmac.o
CC net/core/gro_cells.o
CC drivers/usb/core/devio.o
CC drivers/scsi/scsi_bsg.o
AR drivers/pps/clients/built-in.a
AR drivers/pps/generators/built-in.a
CC drivers/pps/pps.o
CC net/core/failover.o
CC lib/llist.o
CC drivers/usb/core/notify.o
CC kernel/reboot.o
CC drivers/acpi/acpica/tbutils.o
CC fs/inode.o
CC fs/attr.o
CC net/ipv4/fib_trie.o
CC drivers/usb/storage/usual-tables.o
CC lib/lwq.o
CC drivers/input/input.o
CC [M] drivers/gpu/drm/xe/xe_gsc_debugfs.o
AR drivers/net/ethernet/brocade/built-in.a
CC drivers/pps/kapi.o
AR drivers/pcmcia/built-in.a
CC net/mac80211/aes_gmac.o
AR drivers/input/mouse/built-in.a
CC drivers/gpu/drm/i915/i915_memcpy.o
CC drivers/acpi/acpi_lpat.o
CC mm/madvise.o
CC lib/memweight.o
CC net/ipv6/sysctl_net_ipv6.o
AR drivers/net/phy/built-in.a
CC drivers/gpu/drm/drm_client_modeset.o
CC lib/kfifo.o
CC drivers/acpi/acpica/tbxface.o
CC drivers/pps/sysfs.o
CC net/mac80211/fils_aead.o
CC drivers/ata/ata_generic.o
CC kernel/async.o
CC fs/nfs/nfs4idmap.o
CC arch/x86/kernel/tls.o
AR drivers/i2c/built-in.a
CC drivers/gpu/drm/drm_color_mgmt.o
CC drivers/gpu/drm/drm_connector.o
CC lib/percpu-refcount.o
CC drivers/gpu/drm/drm_crtc.o
CC drivers/scsi/scsi_common.o
AR drivers/usb/storage/built-in.a
CC drivers/gpu/drm/i915/i915_mm.o
CC drivers/usb/host/ohci-pci.o
CC drivers/input/input-compat.o
CC net/ipv4/fib_notifier.o
CC fs/bad_inode.o
AR drivers/pps/built-in.a
CC mm/page_io.o
CC [M] drivers/gpu/drm/xe/xe_gsc_proxy.o
CC net/ipv4/inet_fragment.o
CC drivers/acpi/acpica/tbxfload.o
CC kernel/range.o
CC [M] net/netfilter/xt_nat.o
CC lib/rhashtable.o
CC drivers/gpu/drm/drm_displayid.o
CC drivers/ptp/ptp_clock.o
CC drivers/power/supply/power_supply_core.o
CC drivers/acpi/acpi_pcc.o
CC net/mac80211/cfg.o
CC [M] net/netfilter/xt_LOG.o
AR net/core/built-in.a
CC drivers/scsi/scsi_transport_spi.o
CC kernel/smpboot.o
CC drivers/power/supply/power_supply_sysfs.o
CC drivers/ptp/ptp_chardev.o
CC net/ipv4/ping.o
CC fs/file.o
CC drivers/acpi/acpica/tbxfroot.o
AR drivers/ata/built-in.a
CC drivers/usb/core/generic.o
CC arch/x86/kernel/step.o
CC drivers/gpu/drm/drm_drv.o
CC drivers/power/supply/power_supply_leds.o
CC drivers/power/supply/power_supply_hwmon.o
CC drivers/acpi/ac.o
CC net/ipv6/xfrm6_policy.o
CC drivers/usb/host/uhci-hcd.o
CC [M] net/netfilter/xt_MASQUERADE.o
CC drivers/usb/core/quirks.o
CC mm/swap_state.o
CC drivers/hwmon/hwmon.o
CC drivers/usb/host/xhci.o
AR drivers/thermal/broadcom/built-in.a
CC drivers/gpu/drm/i915/i915_sw_fence.o
CC kernel/ucount.o
CC drivers/acpi/acpica/utaddress.o
AR drivers/thermal/renesas/built-in.a
AR drivers/thermal/samsung/built-in.a
AR net/wireless/built-in.a
CC drivers/thermal/intel/intel_tcc.o
CC drivers/acpi/button.o
CC drivers/input/input-mt.o
CC drivers/gpu/drm/i915/i915_sw_fence_work.o
CC [M] drivers/gpu/drm/xe/xe_gsc_submit.o
CC arch/x86/kernel/i8237.o
CC lib/base64.o
CC lib/once.o
AR drivers/net/ethernet/cavium/common/built-in.a
CC lib/refcount.o
AR drivers/net/ethernet/cavium/thunder/built-in.a
CC net/mac80211/ethtool.o
AR drivers/net/ethernet/cavium/liquidio/built-in.a
AR drivers/net/ethernet/cavium/octeon/built-in.a
AR drivers/net/ethernet/cavium/built-in.a
CC net/ipv6/xfrm6_state.o
CC drivers/thermal/intel/therm_throt.o
CC drivers/usb/host/xhci-mem.o
AR drivers/power/supply/built-in.a
AR drivers/power/built-in.a
CC drivers/usb/core/devices.o
CC net/ipv6/xfrm6_input.o
CC drivers/ptp/ptp_sysfs.o
CC net/ipv4/ip_tunnel_core.o
CC drivers/gpu/drm/i915/i915_syncmap.o
CC fs/nfs/callback.o
CC arch/x86/kernel/stacktrace.o
CC drivers/acpi/fan_core.o
CC drivers/gpu/drm/i915/i915_user_extensions.o
CC drivers/gpu/drm/drm_dumb_buffers.o
CC drivers/usb/host/xhci-ext-caps.o
CC drivers/scsi/virtio_scsi.o
CC drivers/acpi/acpica/utalloc.o
AR drivers/thermal/st/built-in.a
CC net/ipv4/gre_offload.o
CC fs/nfs/callback_xdr.o
CC arch/x86/kernel/reboot.o
CC net/ipv6/xfrm6_output.o
CC kernel/regset.o
AR drivers/net/ethernet/chelsio/built-in.a
CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.o
CC lib/rcuref.o
CC [M] drivers/gpu/drm/xe/xe_gt.o
CC drivers/gpu/drm/drm_edid.o
CC fs/nfs/callback_proc.o
CC arch/x86/kernel/msr.o
CC drivers/acpi/fan_attr.o
CC drivers/scsi/sd.o
CC drivers/usb/host/xhci-ring.o
CC lib/usercopy.o
CC drivers/gpu/drm/i915/i915_debugfs.o
CC drivers/acpi/acpica/utascii.o
CC arch/x86/kernel/cpuid.o
CC drivers/input/input-poller.o
CC kernel/ksyms_common.o
CC mm/swapfile.o
CC net/ipv6/xfrm6_protocol.o
CC [M] drivers/gpu/drm/xe/xe_gt_ccs_mode.o
CC drivers/input/ff-core.o
CC drivers/usb/host/xhci-hub.o
CC drivers/acpi/fan_hwmon.o
CC [M] net/netfilter/xt_addrtype.o
CC fs/filesystems.o
AR drivers/net/ethernet/cisco/built-in.a
CC drivers/usb/host/xhci-dbg.o
CC lib/errseq.o
CC drivers/gpu/drm/i915/i915_debugfs_params.o
CC drivers/usb/core/phy.o
CC drivers/ptp/ptp_vclock.o
CC drivers/acpi/acpica/utbuffer.o
AR drivers/thermal/qcom/built-in.a
CC fs/nfs/nfs4namespace.o
AR drivers/watchdog/built-in.a
CC lib/bucket_locks.o
CC drivers/gpu/drm/drm_eld.o
AR drivers/hwmon/built-in.a
CC lib/generic-radix-tree.o
CC drivers/gpu/drm/drm_encoder.o
CC drivers/acpi/acpica/utcksum.o
CC drivers/input/touchscreen.o
AR drivers/thermal/intel/built-in.a
AR drivers/thermal/tegra/built-in.a
AR drivers/thermal/mediatek/built-in.a
CC drivers/thermal/thermal_core.o
CC drivers/ptp/ptp_kvm_x86.o
CC net/mac80211/rx.o
CC drivers/gpu/drm/i915/i915_pmu.o
CC drivers/md/md.o
CC drivers/cpufreq/cpufreq.o
AR drivers/net/ethernet/cortina/built-in.a
CC drivers/gpu/drm/drm_file.o
CC arch/x86/kernel/early-quirks.o
CC net/mac80211/spectmgmt.o
CC drivers/thermal/thermal_sysfs.o
CC kernel/groups.o
CC drivers/ptp/ptp_kvm_common.o
CC drivers/input/ff-memless.o
CC arch/x86/kernel/smp.o
CC drivers/md/md-bitmap.o
CC net/mac80211/tx.o
CC drivers/usb/core/port.o
CC drivers/acpi/acpica/utcopy.o
CC [M] drivers/gpu/drm/xe/xe_gt_clock.o
CC drivers/gpu/drm/i915/gt/gen2_engine_cs.o
AR drivers/net/ethernet/dlink/built-in.a
CC lib/bitmap-str.o
CC arch/x86/kernel/smpboot.o
AR drivers/net/ethernet/dec/tulip/built-in.a
AR drivers/net/ethernet/dec/built-in.a
CC net/ipv4/metrics.o
CC lib/string_helpers.o
CC drivers/thermal/thermal_trip.o
CC drivers/md/md-autodetect.o
CC fs/nfs/nfs4getroot.o
CC drivers/acpi/acpi_video.o
CC drivers/gpu/drm/i915/gt/gen6_engine_cs.o
CC drivers/scsi/sr.o
CC net/ipv6/netfilter.o
CC net/ipv6/proc.o
CC drivers/acpi/acpica/utexcep.o
CC arch/x86/kernel/tsc_sync.o
CC fs/namespace.o
CC [M] drivers/gpu/drm/xe/xe_gt_freq.o
CC [M] drivers/gpu/drm/xe/xe_gt_idle.o
CC drivers/usb/core/hcd-pci.o
CC drivers/cpuidle/governors/menu.o
AR net/netfilter/built-in.a
CC drivers/cpuidle/cpuidle.o
CC net/ipv4/netlink.o
CC drivers/input/sparse-keymap.o
CC kernel/kcmp.o
AR drivers/ptp/built-in.a
CC net/mac80211/key.o
CC [M] drivers/gpu/drm/xe/xe_gt_mcr.o
CC drivers/cpufreq/freq_table.o
CC fs/seq_file.o
AR drivers/net/ethernet/emulex/built-in.a
CC drivers/input/vivaldi-fmap.o
CC mm/swap_slots.o
CC drivers/acpi/acpica/utdebug.o
CC drivers/usb/core/usb-acpi.o
CC drivers/md/dm.o
CC drivers/md/dm-table.o
CC lib/hexdump.o
CC drivers/gpu/drm/i915/gt/gen6_ppgtt.o
CC kernel/freezer.o
CC net/ipv4/nexthop.o
CC drivers/thermal/thermal_helpers.o
CC drivers/acpi/video_detect.o
CC drivers/cpuidle/driver.o
CC drivers/acpi/acpica/utdecode.o
CC drivers/cpuidle/governors/haltpoll.o
CC arch/x86/kernel/setup_percpu.o
CC drivers/gpu/drm/i915/gt/gen7_renderclear.o
CC fs/xattr.o
CC lib/kstrtox.o
CC fs/nfs/nfs4client.o
CC net/ipv6/syncookies.o
CC net/ipv6/calipso.o
CC net/ipv4/udp_tunnel_stub.o
CC fs/nfs/nfs4session.o
CC drivers/input/input-leds.o
CC [M] drivers/gpu/drm/xe/xe_gt_pagefault.o
CC mm/dmapool.o
CC drivers/gpu/drm/drm_fourcc.o
CC drivers/scsi/sr_ioctl.o
CC net/mac80211/util.o
CC lib/iomap.o
CC drivers/cpuidle/governor.o
CC drivers/acpi/acpica/utdelete.o
CC mm/hugetlb.o
AR drivers/mmc/built-in.a
CC drivers/gpu/drm/i915/gt/gen8_engine_cs.o
CC drivers/thermal/thermal_hwmon.o
CC kernel/profile.o
AR drivers/net/ethernet/engleder/built-in.a
CC drivers/scsi/sr_vendor.o
CC arch/x86/kernel/mpparse.o
CC net/ipv4/ip_tunnel.o
CC fs/libfs.o
CC drivers/scsi/sg.o
AR drivers/usb/core/built-in.a
CC drivers/input/evdev.o
CC drivers/cpufreq/cpufreq_performance.o
CC drivers/md/dm-target.o
CC fs/nfs/dns_resolve.o
CC [M] drivers/gpu/drm/xe/xe_gt_sysfs.o
CC net/ipv4/sysctl_net_ipv4.o
CC drivers/usb/host/xhci-trace.o
CC drivers/cpuidle/sysfs.o
CC drivers/thermal/gov_step_wise.o
CC lib/iomap_copy.o
AR drivers/net/ethernet/ezchip/built-in.a
CC net/ipv6/ah6.o
AR drivers/ufs/built-in.a
CC net/mac80211/parse.o
CC fs/fs-writeback.o
CC drivers/acpi/acpica/uterror.o
CC fs/nfs/nfs4trace.o
CC [M] drivers/gpu/drm/xe/xe_gt_throttle.o
CC drivers/scsi/scsi_sysfs.o
CC drivers/acpi/processor_driver.o
CC drivers/cpufreq/cpufreq_userspace.o
CC net/mac80211/wme.o
AR drivers/cpuidle/governors/built-in.a
CC drivers/acpi/acpica/uteval.o
CC lib/devres.o
CC drivers/gpu/drm/drm_framebuffer.o
AR drivers/firmware/arm_ffa/built-in.a
AR drivers/firmware/arm_scmi/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
AR drivers/firmware/broadcom/built-in.a
CC kernel/stacktrace.o
AR drivers/firmware/cirrus/built-in.a
CC drivers/gpu/drm/drm_gem.o
AR drivers/firmware/meson/built-in.a
AR drivers/firmware/microchip/built-in.a
CC drivers/usb/host/xhci-debugfs.o
CC drivers/thermal/gov_user_space.o
CC drivers/cpufreq/cpufreq_ondemand.o
CC drivers/cpuidle/poll_state.o
CC drivers/firmware/efi/libstub/efi-stub-helper.o
CC drivers/md/dm-linear.o
CC lib/check_signature.o
AR drivers/net/ethernet/fujitsu/built-in.a
AR drivers/firmware/imx/built-in.a
CC arch/x86/kernel/trace_clock.o
CC drivers/cpufreq/cpufreq_governor.o
CC drivers/firmware/efi/efi-bgrt.o
CC drivers/acpi/acpica/utglobal.o
CC fs/pnode.o
CC kernel/dma.o
CC fs/splice.o
CC drivers/md/dm-stripe.o
AR drivers/crypto/stm32/built-in.a
AR drivers/crypto/xilinx/built-in.a
AR drivers/crypto/hisilicon/built-in.a
CC lib/interval_tree.o
CC drivers/cpuidle/cpuidle-haltpoll.o
AR drivers/crypto/intel/keembay/built-in.a
AR drivers/crypto/starfive/built-in.a
CC arch/x86/kernel/trace.o
AR drivers/crypto/intel/ixp4xx/built-in.a
AR drivers/crypto/intel/built-in.a
CC lib/assoc_array.o
AR drivers/crypto/built-in.a
CC drivers/acpi/acpica/uthex.o
CC drivers/usb/host/xhci-pci.o
AR drivers/input/built-in.a
CC drivers/gpu/drm/drm_ioctl.o
CC fs/nfs/nfs4sysctl.o
CC net/mac80211/chan.o
AR drivers/thermal/built-in.a
AR drivers/net/ethernet/fungible/built-in.a
CC drivers/acpi/processor_thermal.o
CC lib/bitrev.o
CC drivers/firmware/efi/libstub/gop.o
CC drivers/firmware/efi/efi.o
CC net/ipv4/proc.o
CC drivers/gpu/drm/i915/gt/gen8_ppgtt.o
AR drivers/firmware/psci/built-in.a
AR drivers/firmware/qcom/built-in.a
CC fs/sync.o
AR drivers/net/ethernet/google/built-in.a
CC drivers/gpu/drm/drm_lease.o
CC drivers/acpi/acpica/utids.o
CC kernel/smp.o
AR drivers/cpuidle/built-in.a
CC drivers/firmware/efi/libstub/secureboot.o
CC net/mac80211/trace.o
CC drivers/cpufreq/cpufreq_governor_attr_set.o
CC drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
CC net/ipv6/esp6.o
CC lib/crc-ccitt.o
CC drivers/gpu/drm/drm_managed.o
CC drivers/acpi/processor_idle.o
CC drivers/clocksource/acpi_pm.o
CC drivers/gpu/drm/drm_mm.o
CC drivers/acpi/acpica/utinit.o
AR drivers/scsi/built-in.a
CC drivers/md/dm-ioctl.o
CC net/ipv4/fib_rules.o
CC arch/x86/kernel/rethook.o
AR drivers/net/ethernet/huawei/built-in.a
CC kernel/uid16.o
CC drivers/firmware/efi/vars.o
CC drivers/cpufreq/acpi-cpufreq.o
CC net/mac80211/mlme.o
CC drivers/firmware/efi/libstub/tpm.o
CC [M] drivers/gpu/drm/xe/xe_gt_topology.o
CC fs/utimes.o
CC drivers/clocksource/i8253.o
CC lib/crc16.o
HOSTCC lib/gen_crc32table
CC net/ipv6/sit.o
CC drivers/firmware/efi/reboot.o
CC kernel/kallsyms.o
CC arch/x86/kernel/vmcore_info_32.o
CC drivers/acpi/acpica/utlock.o
CC [M] drivers/gpu/drm/xe/xe_guc.o
CC drivers/firmware/efi/memattr.o
CC net/mac80211/tdls.o
CC drivers/gpu/drm/drm_mode_config.o
CC mm/mmu_notifier.o
CC arch/x86/kernel/machine_kexec_32.o
CC drivers/hid/usbhid/hid-core.o
CC drivers/hid/hid-core.o
CC fs/d_path.o
AR drivers/clocksource/built-in.a
CC lib/xxhash.o
CC drivers/gpu/drm/drm_mode_object.o
CC net/ipv6/addrconf_core.o
CC drivers/acpi/acpica/utmath.o
CC drivers/md/dm-io.o
AR drivers/firmware/smccc/built-in.a
CC drivers/gpu/drm/i915/gt/intel_context.o
CC net/ipv4/ipmr.o
CC net/ipv4/ipmr_base.o
CC drivers/acpi/processor_throttling.o
CC drivers/md/dm-kcopyd.o
CC kernel/acct.o
CC drivers/firmware/efi/libstub/file.o
CC lib/genalloc.o
AR drivers/usb/host/built-in.a
CC drivers/cpufreq/amd-pstate.o
AR drivers/usb/built-in.a
CC net/ipv4/syncookies.o
CC mm/migrate.o
AR drivers/platform/x86/amd/built-in.a
CC drivers/cpufreq/amd-pstate-trace.o
AR drivers/platform/x86/intel/built-in.a
CC drivers/platform/x86/wmi.o
CC [M] drivers/gpu/drm/xe/xe_guc_ads.o
CC drivers/acpi/acpica/utmisc.o
CC net/mac80211/ocb.o
AR drivers/platform/surface/built-in.a
CC net/ipv6/exthdrs_core.o
CC drivers/firmware/efi/tpm.o
AR drivers/firmware/tegra/built-in.a
CC drivers/gpu/drm/drm_modes.o
CC drivers/gpu/drm/i915/gt/intel_context_sseu.o
CC drivers/gpu/drm/i915/gt/intel_engine_cs.o
CC kernel/vmcore_info.o
AS arch/x86/kernel/relocate_kernel_32.o
CC drivers/md/dm-sysfs.o
CC drivers/firmware/efi/libstub/mem.o
CC arch/x86/kernel/crash_dump_32.o
CC drivers/mailbox/mailbox.o
CC kernel/elfcorehdr.o
CC drivers/acpi/acpica/utmutex.o
CC net/ipv6/ip6_checksum.o
CC drivers/hid/usbhid/hiddev.o
CC [M] drivers/gpu/drm/xe/xe_guc_ct.o
CC drivers/net/ethernet/intel/e1000/e1000_main.o
CC net/ipv6/ip6_icmp.o
CC drivers/mailbox/pcc.o
CC drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
CC lib/percpu_counter.o
CC lib/audit.o
CC mm/page_counter.o
AR drivers/net/ethernet/broadcom/built-in.a
AR drivers/firmware/xilinx/built-in.a
AR drivers/perf/built-in.a
CC arch/x86/kernel/crash.o
CC drivers/md/dm-stats.o
CC kernel/crash_reserve.o
CC drivers/acpi/acpica/utnonansi.o
CC drivers/cpufreq/intel_pstate.o
CC drivers/net/ethernet/intel/e1000/e1000_hw.o
CC drivers/gpu/drm/drm_modeset_lock.o
CC drivers/hid/hid-input.o
CC drivers/firmware/efi/libstub/random.o
CC [M] drivers/gpu/drm/xe/xe_guc_db_mgr.o
CC fs/stack.o
CC lib/syscall.o
CC drivers/platform/x86/wmi-bmof.o
AR fs/nfs/built-in.a
CC fs/fs_struct.o
CC net/ipv4/tunnel4.o
CC drivers/net/ethernet/intel/e1000/e1000_ethtool.o
CC net/ipv4/ipconfig.o
CC mm/hugetlb_cgroup.o
CC net/ipv6/output_core.o
CC drivers/acpi/processor_perflib.o
CC drivers/gpu/drm/i915/gt/intel_engine_pm.o
CC fs/statfs.o
CC drivers/hid/hid-quirks.o
CC drivers/acpi/acpica/utobject.o
CC drivers/acpi/acpica/utosi.o
AR drivers/mailbox/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_hwconfig.o
CC drivers/acpi/container.o
CC drivers/gpu/drm/drm_plane.o
CC fs/fs_pin.o
CC drivers/acpi/thermal_lib.o
CC drivers/net/ethernet/intel/e1000e/82571.o
CC drivers/platform/x86/eeepc-laptop.o
CC arch/x86/kernel/module.o
CC mm/early_ioremap.o
CC mm/secretmem.o
CC kernel/kexec_core.o
CC drivers/firmware/efi/libstub/randomalloc.o
CC lib/errname.o
CC drivers/hid/usbhid/hid-pidff.o
CC drivers/net/ethernet/intel/e100.o
CC drivers/firmware/efi/libstub/pci.o
AR drivers/hwtracing/intel_th/built-in.a
CC drivers/firmware/dmi_scan.o
CC net/mac80211/airtime.o
CC lib/nlattr.o
CC drivers/gpu/drm/drm_prime.o
CC net/ipv6/protocol.o
CC drivers/acpi/acpica/utownerid.o
CC net/ipv4/netfilter.o
CC drivers/hid/hid-debug.o
CC drivers/net/ethernet/intel/e1000e/ich8lan.o
CC drivers/md/dm-rq.o
CC drivers/hid/hidraw.o
CC drivers/hid/hid-generic.o
CC net/ipv6/ip6_offload.o
CC arch/x86/kernel/doublefault_32.o
CC fs/nsfs.o
CC drivers/md/dm-io-rewind.o
CC drivers/acpi/acpica/utpredef.o
CC net/ipv4/tcp_cubic.o
CC drivers/gpu/drm/drm_print.o
CC lib/cpu_rmap.o
CC arch/x86/kernel/early_printk.o
CC [M] drivers/gpu/drm/xe/xe_guc_id_mgr.o
AR drivers/android/built-in.a
CC drivers/gpu/drm/i915/gt/intel_engine_user.o
CC kernel/crash_core.o
CC drivers/gpu/drm/i915/gt/intel_execlists_submission.o
CC drivers/firmware/efi/libstub/skip_spaces.o
CC drivers/firmware/efi/memmap.o
CC net/ipv6/tcpv6_offload.o
CC drivers/gpu/drm/drm_property.o
CC drivers/firmware/efi/libstub/lib-cmdline.o
CC drivers/gpu/drm/drm_rect.o
CC drivers/acpi/acpica/utresdecode.o
CC drivers/platform/x86/p2sb.o
CC mm/hmm.o
CC drivers/firmware/efi/libstub/lib-ctype.o
CC lib/dynamic_queue_limits.o
CC drivers/firmware/efi/libstub/alignedmem.o
CC drivers/md/dm-builtin.o
CC drivers/net/ethernet/intel/e1000/e1000_param.o
CC drivers/net/ethernet/intel/e1000e/80003es2lan.o
CC drivers/net/ethernet/intel/e1000e/mac.o
CC kernel/kexec.o
CC net/ipv4/tcp_sigpool.o
CC drivers/firmware/efi/capsule.o
CC drivers/acpi/acpica/utresrc.o
CC net/ipv6/exthdrs_offload.o
CC drivers/firmware/dmi-id.o
CC net/ipv6/inet6_hashtables.o
CC drivers/firmware/efi/libstub/relocate.o
CC mm/memfd.o
CC fs/fs_types.o
CC drivers/hid/hid-a4tech.o
CC net/mac80211/eht.o
CC drivers/firmware/efi/libstub/printk.o
CC drivers/acpi/acpica/utstate.o
CC drivers/md/dm-raid1.o
CC arch/x86/kernel/hpet.o
CC drivers/gpu/drm/i915/gt/intel_ggtt.o
AR drivers/hid/usbhid/built-in.a
CC drivers/firmware/efi/esrt.o
CC net/ipv4/cipso_ipv4.o
CC drivers/acpi/thermal.o
CC mm/ptdump.o
CC [M] drivers/gpu/drm/xe/xe_guc_klv_helpers.o
CC drivers/firmware/efi/libstub/vsprintf.o
CC net/ipv6/mcast_snoop.o
AR drivers/nvmem/layouts/built-in.a
CC drivers/nvmem/core.o
CC drivers/acpi/acpica/utstring.o
CC arch/x86/kernel/amd_nb.o
AR drivers/cpufreq/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_log.o
AR drivers/platform/x86/built-in.a
CC drivers/firmware/memmap.o
AR drivers/platform/built-in.a
CC drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
AR drivers/net/ethernet/i825xx/built-in.a
CC drivers/acpi/nhlt.o
CC drivers/gpu/drm/drm_syncobj.o
CC kernel/utsname.o
CC drivers/md/dm-log.o
CC lib/glob.o
CC fs/fs_context.o
CC drivers/hid/hid-apple.o
CC [M] drivers/gpu/drm/xe/xe_guc_pc.o
CC drivers/acpi/acpi_memhotplug.o
CC arch/x86/kernel/kvm.o
CC drivers/md/dm-region-hash.o
CC net/mac80211/led.o
CC drivers/firmware/efi/libstub/x86-stub.o
AR drivers/net/ethernet/microsoft/built-in.a
AR drivers/net/ethernet/litex/built-in.a
CC drivers/gpu/drm/drm_sysfs.o
CC drivers/acpi/acpica/utstrsuppt.o
AR drivers/net/ethernet/marvell/octeon_ep/built-in.a
CC drivers/firmware/efi/libstub/smbios.o
AR drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
AR drivers/net/ethernet/marvell/octeontx2/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt.o
AR drivers/net/ethernet/marvell/prestera/built-in.a
CC net/ipv4/xfrm4_policy.o
CC drivers/net/ethernet/marvell/sky2.o
CC drivers/gpu/drm/drm_trace_points.o
CC net/ipv4/xfrm4_state.o
CC net/mac80211/pm.o
CC drivers/gpu/drm/drm_vblank.o
CC drivers/firmware/efi/runtime-wrappers.o
CC kernel/pid_namespace.o
CC mm/execmem.o
AR drivers/net/ethernet/mellanox/built-in.a
CC drivers/firmware/efi/capsule-loader.o
CC net/mac80211/rc80211_minstrel_ht.o
CC lib/strncpy_from_user.o
CC kernel/stop_machine.o
CC drivers/acpi/acpica/utstrtoul64.o
CC drivers/hid/hid-belkin.o
AR drivers/net/ethernet/intel/e1000/built-in.a
CC drivers/gpu/drm/drm_vblank_work.o
CC drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
CC drivers/firmware/efi/earlycon.o
AR drivers/net/ethernet/meta/built-in.a
CC lib/strnlen_user.o
CC drivers/gpu/drm/drm_vma_manager.o
CC net/ipv4/xfrm4_input.o
AR drivers/net/ethernet/micrel/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
CC kernel/audit.o
CC drivers/md/dm-zero.o
CC drivers/hid/hid-cherry.o
CC fs/fs_parser.o
CC [M] drivers/gpu/drm/xe/xe_guc_submit.o
CC drivers/acpi/acpica/utxface.o
CC net/mac80211/wbrf.o
AR net/ipv6/built-in.a
CC fs/fsopen.o
AR drivers/nvmem/built-in.a
CC lib/net_utils.o
CC fs/init.o
CC arch/x86/kernel/kvmclock.o
AR mm/built-in.a
CC drivers/net/ethernet/intel/e1000e/manage.o
STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
CC drivers/hid/hid-chicony.o
CC [M] drivers/gpu/drm/xe/xe_heci_gsc.o
STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
CC drivers/acpi/ioapic.o
STUBCPY drivers/firmware/efi/libstub/file.stub.o
STUBCPY drivers/firmware/efi/libstub/gop.stub.o
STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
STUBCPY drivers/firmware/efi/libstub/mem.stub.o
STUBCPY drivers/firmware/efi/libstub/pci.stub.o
AR drivers/net/ethernet/microchip/built-in.a
STUBCPY drivers/firmware/efi/libstub/printk.stub.o
STUBCPY drivers/firmware/efi/libstub/random.stub.o
CC net/ipv4/xfrm4_output.o
AR drivers/net/ethernet/mscc/built-in.a
CC kernel/auditfilter.o
CC drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
CC drivers/acpi/battery.o
STUBCPY drivers/firmware/efi/libstub/smbios.stub.o
STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
CC drivers/acpi/acpica/utxfinit.o
STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
CC lib/sg_pool.o
STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
AR drivers/firmware/efi/libstub/lib.a
CC net/ipv4/xfrm4_protocol.o
CC drivers/hid/hid-cypress.o
CC drivers/acpi/acpica/utxferror.o
CC drivers/gpu/drm/drm_writeback.o
CC drivers/acpi/acpica/utxfmutex.o
CC drivers/gpu/drm/drm_panel.o
CC drivers/gpu/drm/drm_pci.o
CC drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
CC fs/kernel_read_file.o
AR drivers/net/ethernet/myricom/built-in.a
CC [M] drivers/gpu/drm/xe/xe_hw_engine.o
AR drivers/net/ethernet/natsemi/built-in.a
AR drivers/firmware/efi/built-in.a
CC drivers/acpi/bgrt.o
CC fs/mnt_idmapping.o
AR drivers/firmware/built-in.a
CC drivers/hid/hid-ezkey.o
CC drivers/gpu/drm/drm_debugfs.o
CC kernel/auditsc.o
AR drivers/md/built-in.a
CC lib/stackdepot.o
CC lib/asn1_decoder.o
CC [M] drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
CC drivers/net/ethernet/intel/e1000e/nvm.o
CC fs/remap_range.o
AR drivers/net/ethernet/neterion/built-in.a
CC arch/x86/kernel/paravirt.o
CC kernel/audit_watch.o
CC drivers/gpu/drm/drm_debugfs_crc.o
CC drivers/acpi/spcr.o
CC drivers/net/ethernet/intel/e1000e/phy.o
AR drivers/acpi/acpica/built-in.a
CC [M] drivers/gpu/drm/xe/xe_hw_engine_group.o
CC drivers/gpu/drm/drm_panel_orientation_quirks.o
CC drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
CC arch/x86/kernel/pvclock.o
GEN lib/oid_registry_data.c
CC drivers/net/ethernet/intel/e1000e/param.o
CC drivers/hid/hid-gyration.o
CC drivers/hid/hid-ite.o
CC drivers/hid/hid-kensington.o
AR drivers/net/ethernet/netronome/built-in.a
AR drivers/net/ethernet/ni/built-in.a
CC arch/x86/kernel/pcspeaker.o
CC lib/ucs2_string.o
CC lib/sbitmap.o
CC drivers/net/ethernet/intel/e1000e/ethtool.o
CC kernel/audit_fsnotify.o
CC kernel/audit_tree.o
CC drivers/gpu/drm/drm_buddy.o
CC lib/group_cpus.o
CC drivers/gpu/drm/drm_gem_shmem_helper.o
CC drivers/gpu/drm/i915/gt/intel_gt_irq.o
CC arch/x86/kernel/check.o
CC lib/fw_table.o
CC kernel/kprobes.o
CC [M] drivers/gpu/drm/xe/xe_hw_fence.o
CC drivers/net/ethernet/nvidia/forcedeth.o
CC arch/x86/kernel/uprobes.o
CC drivers/net/ethernet/intel/e1000e/netdev.o
CC drivers/gpu/drm/drm_atomic_helper.o
AR drivers/net/ethernet/oki-semi/built-in.a
CC drivers/hid/hid-lg.o
CC drivers/gpu/drm/i915/gt/intel_gt_mcr.o
CC kernel/seccomp.o
CC fs/pidfs.o
CC drivers/hid/hid-lgff.o
CC [M] drivers/gpu/drm/xe/xe_huc.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm.o
AR net/ipv4/built-in.a
AR drivers/acpi/built-in.a
AR drivers/net/ethernet/packetengines/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
AR drivers/net/ethernet/qlogic/built-in.a
AR lib/lib.a
AR drivers/net/ethernet/qualcomm/emac/built-in.a
AR drivers/net/ethernet/qualcomm/built-in.a
CC drivers/net/ethernet/intel/e1000e/ptp.o
CC arch/x86/kernel/perf_regs.o
CC drivers/gpu/drm/drm_atomic_state_helper.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
GEN lib/crc32table.h
CC drivers/hid/hid-lg4ff.o
CC [M] drivers/gpu/drm/xe/xe_irq.o
CC drivers/hid/hid-lg-g15.o
CC drivers/gpu/drm/i915/gt/intel_gt_requests.o
CC [M] drivers/gpu/drm/xe/xe_lrc.o
CC arch/x86/kernel/tracepoint.o
CC fs/buffer.o
CC drivers/net/ethernet/realtek/8139too.o
AR drivers/net/ethernet/renesas/built-in.a
CC drivers/gpu/drm/drm_crtc_helper.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
CC fs/mpage.o
AR drivers/net/ethernet/rdc/built-in.a
CC lib/oid_registry.o
CC drivers/net/ethernet/realtek/r8169_main.o
CC drivers/net/ethernet/realtek/r8169_firmware.o
CC arch/x86/kernel/itmt.o
CC [M] drivers/gpu/drm/xe/xe_migrate.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
CC fs/proc_namespace.o
CC drivers/gpu/drm/drm_damage_helper.o
CC [M] drivers/gpu/drm/xe/xe_mmio.o
CC drivers/hid/hid-microsoft.o
AR drivers/net/ethernet/rocker/built-in.a
CC drivers/net/ethernet/realtek/r8169_phy_config.o
CC kernel/relay.o
CC lib/crc32.o
CC drivers/gpu/drm/i915/gt/intel_gtt.o
CC fs/direct-io.o
CC kernel/utsname_sysctl.o
CC [M] drivers/gpu/drm/xe/xe_mocs.o
CC arch/x86/kernel/umip.o
AR drivers/net/ethernet/marvell/built-in.a
CC drivers/gpu/drm/drm_encoder_slave.o
CC drivers/gpu/drm/drm_flip_work.o
CC drivers/hid/hid-monterey.o
CC arch/x86/kernel/unwind_frame.o
AR drivers/net/ethernet/samsung/built-in.a
CC fs/eventpoll.o
CC drivers/gpu/drm/i915/gt/intel_llc.o
CC [M] drivers/gpu/drm/xe/xe_module.o
CC drivers/gpu/drm/drm_format_helper.o
AR drivers/net/ethernet/seeq/built-in.a
AR drivers/net/ethernet/silan/built-in.a
CC kernel/delayacct.o
CC [M] drivers/gpu/drm/xe/xe_oa.o
CC fs/anon_inodes.o
CC drivers/gpu/drm/drm_gem_atomic_helper.o
CC drivers/gpu/drm/i915/gt/intel_lrc.o
CC kernel/taskstats.o
CC drivers/hid/hid-ntrig.o
CC fs/signalfd.o
AR drivers/net/ethernet/sis/built-in.a
CC drivers/gpu/drm/drm_gem_framebuffer_helper.o
AR lib/built-in.a
CC drivers/gpu/drm/i915/gt/intel_migrate.o
CC [M] drivers/gpu/drm/xe/xe_observation.o
CC drivers/gpu/drm/drm_kms_helper_common.o
CC drivers/gpu/drm/i915/gt/intel_mocs.o
CC drivers/gpu/drm/drm_modeset_helper.o
CC drivers/gpu/drm/i915/gt/intel_ppgtt.o
CC fs/timerfd.o
CC drivers/hid/hid-pl.o
CC kernel/tsacct.o
CC [M] drivers/gpu/drm/xe/xe_pat.o
CC drivers/gpu/drm/i915/gt/intel_rc6.o
CC [M] drivers/gpu/drm/xe/xe_pci.o
CC [M] drivers/gpu/drm/xe/xe_pcode.o
CC kernel/tracepoint.o
CC [M] drivers/gpu/drm/xe/xe_pm.o
CC drivers/gpu/drm/drm_plane_helper.o
CC fs/eventfd.o
CC drivers/gpu/drm/drm_probe_helper.o
CC kernel/irq_work.o
AR arch/x86/kernel/built-in.a
AR drivers/net/ethernet/sfc/built-in.a
CC drivers/hid/hid-petalynx.o
CC drivers/hid/hid-redragon.o
AR arch/x86/built-in.a
CC drivers/gpu/drm/i915/gt/intel_region_lmem.o
CC drivers/gpu/drm/drm_self_refresh_helper.o
CC fs/aio.o
CC kernel/static_call.o
CC [M] drivers/gpu/drm/xe/xe_preempt_fence.o
AR drivers/net/ethernet/smsc/built-in.a
CC drivers/hid/hid-samsung.o
AR drivers/net/ethernet/socionext/built-in.a
AR net/mac80211/built-in.a
CC [M] drivers/gpu/drm/xe/xe_pt.o
CC drivers/gpu/drm/i915/gt/intel_renderstate.o
AR net/built-in.a
CC drivers/gpu/drm/drm_simple_kms_helper.o
CC fs/locks.o
CC kernel/padata.o
CC [M] drivers/gpu/drm/xe/xe_pt_walk.o
AR drivers/net/ethernet/stmicro/built-in.a
AR drivers/net/ethernet/sun/built-in.a
CC drivers/gpu/drm/i915/gt/intel_reset.o
CC drivers/hid/hid-sony.o
CC fs/binfmt_misc.o
CC kernel/jump_label.o
CC [M] drivers/gpu/drm/xe/xe_query.o
AR drivers/net/ethernet/tehuti/built-in.a
CC drivers/gpu/drm/i915/gt/intel_ring.o
CC drivers/hid/hid-sunplus.o
CC drivers/gpu/drm/bridge/panel.o
CC kernel/context_tracking.o
CC fs/binfmt_script.o
CC drivers/hid/hid-topseed.o
AR drivers/net/ethernet/ti/built-in.a
CC drivers/gpu/drm/i915/gt/intel_ring_submission.o
CC fs/binfmt_elf.o
CC drivers/gpu/drm/drm_mipi_dsi.o
AR drivers/net/ethernet/vertexcom/built-in.a
CC kernel/iomem.o
CC [M] drivers/gpu/drm/drm_exec.o
CC [M] drivers/gpu/drm/drm_gpuvm.o
CC drivers/gpu/drm/i915/gt/intel_rps.o
CC [M] drivers/gpu/drm/xe/xe_range_fence.o
CC fs/mbcache.o
AR drivers/net/ethernet/via/built-in.a
CC kernel/rseq.o
CC drivers/gpu/drm/i915/gt/intel_sa_media.o
CC [M] drivers/gpu/drm/drm_suballoc.o
CC [M] drivers/gpu/drm/xe/xe_reg_sr.o
AR drivers/net/ethernet/wangxun/built-in.a
CC drivers/gpu/drm/i915/gt/intel_sseu.o
CC [M] drivers/gpu/drm/xe/xe_reg_whitelist.o
AR drivers/net/ethernet/wiznet/built-in.a
AR drivers/net/ethernet/xilinx/built-in.a
AR drivers/net/ethernet/xircom/built-in.a
CC fs/posix_acl.o
CC drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
CC fs/coredump.o
CC [M] drivers/gpu/drm/xe/xe_rtp.o
CC [M] drivers/gpu/drm/xe/xe_ring_ops.o
CC [M] drivers/gpu/drm/drm_gem_ttm_helper.o
AR drivers/net/ethernet/synopsys/built-in.a
CC [M] drivers/gpu/drm/xe/xe_sa.o
CC fs/drop_caches.o
CC fs/sysctls.o
CC [M] drivers/gpu/drm/xe/xe_sched_job.o
CC drivers/gpu/drm/i915/gt/intel_timeline.o
AR drivers/net/ethernet/pensando/built-in.a
CC [M] drivers/gpu/drm/xe/xe_step.o
CC fs/fhandle.o
CC [M] drivers/gpu/drm/xe/xe_sync.o
CC drivers/gpu/drm/i915/gt/intel_tlb.o
CC [M] drivers/gpu/drm/xe/xe_tile.o
AR drivers/net/ethernet/nvidia/built-in.a
CC [M] drivers/gpu/drm/xe/xe_tile_sysfs.o
CC [M] drivers/gpu/drm/xe/xe_trace.o
CC drivers/gpu/drm/i915/gt/intel_wopcm.o
CC [M] drivers/gpu/drm/xe/xe_trace_bo.o
CC drivers/gpu/drm/i915/gt/intel_workarounds.o
CC drivers/gpu/drm/i915/gt/shmem_utils.o
CC [M] drivers/gpu/drm/xe/xe_trace_guc.o
CC drivers/gpu/drm/i915/gt/sysfs_engines.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
CC drivers/gpu/drm/i915/gt/gen6_renderstate.o
CC [M] drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
LD [M] drivers/gpu/drm/drm_suballoc_helper.o
CC [M] drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
CC drivers/gpu/drm/i915/gt/gen7_renderstate.o
CC drivers/gpu/drm/i915/gt/gen8_renderstate.o
AR drivers/hid/built-in.a
CC [M] drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
CC drivers/gpu/drm/i915/gt/gen9_renderstate.o
CC [M] drivers/gpu/drm/xe/xe_tuning.o
CC [M] drivers/gpu/drm/xe/xe_uc.o
CC [M] drivers/gpu/drm/xe/xe_uc_fw.o
AR drivers/net/ethernet/realtek/built-in.a
CC [M] drivers/gpu/drm/xe/xe_vm.o
CC [M] drivers/gpu/drm/xe/xe_vram.o
CC drivers/gpu/drm/i915/gem/i915_gem_busy.o
CC [M] drivers/gpu/drm/xe/xe_vram_freq.o
CC drivers/gpu/drm/i915/gem/i915_gem_clflush.o
LD [M] drivers/gpu/drm/drm_ttm_helper.o
CC [M] drivers/gpu/drm/xe/xe_wait_user_fence.o
CC drivers/gpu/drm/i915/gem/i915_gem_context.o
CC [M] drivers/gpu/drm/xe/xe_wa.o
CC drivers/gpu/drm/i915/gem/i915_gem_create.o
AR kernel/built-in.a
CC [M] drivers/gpu/drm/xe/xe_wopcm.o
CC drivers/gpu/drm/i915/gem/i915_gem_dmabuf.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_hmm.o
CC [M] drivers/gpu/drm/xe/xe_hwmon.o
CC drivers/gpu/drm/i915/gem/i915_gem_internal.o
CC [M] drivers/gpu/drm/xe/xe_gt_sriov_vf.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_guc_relay.o
CC drivers/gpu/drm/i915/gem/i915_gem_object.o
CC [M] drivers/gpu/drm/xe/xe_memirq.o
CC drivers/gpu/drm/i915/gem/i915_gem_pages.o
CC [M] drivers/gpu/drm/xe/xe_sriov.o
CC drivers/gpu/drm/i915/gem/i915_gem_phys.o
CC drivers/gpu/drm/i915/gem/i915_gem_pm.o
CC [M] drivers/gpu/drm/xe/display/ext/i915_irq.o
CC drivers/gpu/drm/i915/gem/i915_gem_region.o
CC [M] drivers/gpu/drm/xe/display/ext/i915_utils.o
CC drivers/gpu/drm/i915/gem/i915_gem_shmem.o
CC drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
CC [M] drivers/gpu/drm/xe/display/intel_bo.o
CC drivers/gpu/drm/i915/gem/i915_gem_stolen.o
CC [M] drivers/gpu/drm/xe/display/intel_fb_bo.o
CC [M] drivers/gpu/drm/xe/display/intel_fbdev_fb.o
CC [M] drivers/gpu/drm/xe/display/xe_display.o
CC [M] drivers/gpu/drm/xe/display/xe_display_misc.o
CC [M] drivers/gpu/drm/xe/display/xe_display_rps.o
CC drivers/gpu/drm/i915/gem/i915_gem_throttle.o
CC [M] drivers/gpu/drm/xe/display/xe_display_wa.o
CC drivers/gpu/drm/i915/gem/i915_gem_tiling.o
CC [M] drivers/gpu/drm/xe/display/xe_dsb_buffer.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
CC [M] drivers/gpu/drm/xe/display/xe_fb_pin.o
CC [M] drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
CC drivers/gpu/drm/i915/gem/i915_gem_userptr.o
AR fs/built-in.a
CC [M] drivers/gpu/drm/xe/display/xe_plane_initial.o
CC drivers/gpu/drm/i915/gem/i915_gem_wait.o
CC [M] drivers/gpu/drm/xe/display/xe_tdf.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_dram.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_pch.o
CC [M] drivers/gpu/drm/xe/i915-display/icl_dsi.o
AR drivers/net/ethernet/intel/e1000e/built-in.a
CC drivers/gpu/drm/i915/gem/i915_gemfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_alpm.o
AR drivers/net/ethernet/intel/built-in.a
CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic.o
CC drivers/gpu/drm/i915/i915_active.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
AR drivers/net/ethernet/built-in.a
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_cmd_parser.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_bios.o
AR drivers/net/built-in.a
CC [M] drivers/gpu/drm/xe/i915-display/intel_bw.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_deps.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_connector.o
CC drivers/gpu/drm/i915/i915_gem.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/i915_gem_evict.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 drivers/gpu/drm/i915/i915_gem_gtt.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display.o
CC drivers/gpu/drm/i915/i915_gem_ww.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_device.o
CC drivers/gpu/drm/i915/i915_query.o
CC drivers/gpu/drm/i915/i915_request.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_driver.o
CC drivers/gpu/drm/i915/i915_scheduler.o
CC drivers/gpu/drm/i915/i915_trace_points.o
CC drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_irq.o
CC drivers/gpu/drm/i915/i915_vma.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_params.o
CC drivers/gpu/drm/i915/i915_vma_resource.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.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_power_map.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_trace.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_wa.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dmc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_test.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_fw.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 drivers/gpu/drm/i915/gt/intel_gsc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
CC drivers/gpu/drm/i915/i915_hwmon.o
CC drivers/gpu/drm/i915/display/hsw_ips.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_drrs.o
CC drivers/gpu/drm/i915/display/i9xx_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsb.o
CC drivers/gpu/drm/i915/display/i9xx_wm.o
CC drivers/gpu/drm/i915/display/intel_alpm.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi.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_atomic.o
CC drivers/gpu/drm/i915/display/intel_atomic_plane.o
CC drivers/gpu/drm/i915/display/intel_audio.o
CC drivers/gpu/drm/i915/display/intel_bios.o
CC drivers/gpu/drm/i915/display/intel_bo.o
CC drivers/gpu/drm/i915/display/intel_bw.o
CC drivers/gpu/drm/i915/display/intel_cdclk.o
CC drivers/gpu/drm/i915/display/intel_color.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_encoder.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fb.o
CC drivers/gpu/drm/i915/display/intel_combo_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fbc.o
CC drivers/gpu/drm/i915/display/intel_connector.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fdi.o
CC drivers/gpu/drm/i915/display/intel_crtc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
CC drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
CC drivers/gpu/drm/i915/display/intel_cursor.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
CC drivers/gpu/drm/i915/display/intel_display.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_global_state.o
CC drivers/gpu/drm/i915/display/intel_display_driver.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_gmbus.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_hdcp.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
CC drivers/gpu/drm/i915/display/intel_display_power.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdmi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hotplug.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_hotplug_irq.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hti.o
CC drivers/gpu/drm/i915/display/intel_display_reset.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_link_bw.o
CC drivers/gpu/drm/i915/display/intel_display_rps.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_lspcon.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_setup.o
CC drivers/gpu/drm/i915/display/intel_display_snapshot.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 [M] drivers/gpu/drm/xe/i915-display/intel_pmdemand.o
CC drivers/gpu/drm/i915/display/intel_display_wa.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pps.o
CC drivers/gpu/drm/i915/display/intel_dmc.o
CC drivers/gpu/drm/i915/display/intel_dmc_wl.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_psr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
CC drivers/gpu/drm/i915/display/intel_dpio_phy.o
CC drivers/gpu/drm/i915/display/intel_dpll.o
CC drivers/gpu/drm/i915/display/intel_dpll_mgr.o
CC drivers/gpu/drm/i915/display/intel_dpt.o
CC drivers/gpu/drm/i915/display/intel_dpt_common.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_quirks.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
CC drivers/gpu/drm/i915/display/intel_drrs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_tc.o
CC drivers/gpu/drm/i915/display/intel_dsb.o
CC drivers/gpu/drm/i915/display/intel_dsb_buffer.o
CC drivers/gpu/drm/i915/display/intel_fb.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vblank.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_fb_bo.o
CC drivers/gpu/drm/i915/display/intel_fb_pin.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
CC drivers/gpu/drm/i915/display/intel_fbc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_wm.o
CC drivers/gpu/drm/i915/display/intel_fdi.o
CC drivers/gpu/drm/i915/display/intel_fifo_underrun.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_scaler.o
CC drivers/gpu/drm/i915/display/intel_frontbuffer.o
CC drivers/gpu/drm/i915/display/intel_global_state.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
CC drivers/gpu/drm/i915/display/intel_hdcp.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 drivers/gpu/drm/i915/display/intel_hotplug.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_opregion.o
CC [M] drivers/gpu/drm/xe/xe_debugfs.o
CC drivers/gpu/drm/i915/display/intel_hotplug_irq.o
CC [M] drivers/gpu/drm/xe/xe_gt_debugfs.o
CC drivers/gpu/drm/i915/display/intel_hti.o
CC [M] drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.o
CC drivers/gpu/drm/i915/display/intel_link_bw.o
CC drivers/gpu/drm/i915/display/intel_load_detect.o
CC [M] drivers/gpu/drm/xe/xe_gt_stats.o
CC drivers/gpu/drm/i915/display/intel_lpe_audio.o
CC drivers/gpu/drm/i915/display/intel_modeset_lock.o
CC drivers/gpu/drm/i915/display/intel_modeset_setup.o
CC drivers/gpu/drm/i915/display/intel_modeset_verify.o
CC drivers/gpu/drm/i915/display/intel_overlay.o
CC [M] drivers/gpu/drm/xe/xe_guc_debugfs.o
CC drivers/gpu/drm/i915/display/intel_pch_display.o
CC [M] drivers/gpu/drm/xe/xe_huc_debugfs.o
CC drivers/gpu/drm/i915/display/intel_pch_refclk.o
CC drivers/gpu/drm/i915/display/intel_plane_initial.o
CC drivers/gpu/drm/i915/display/intel_pmdemand.o
CC [M] drivers/gpu/drm/xe/xe_uc_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_debugfs.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 [M] drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
CC drivers/gpu/drm/i915/display/intel_sprite_uapi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pipe_crc.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_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_suballoc_helper.mod.o
CC [M] drivers/gpu/drm/drm_gpuvm.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/gpu/drm/drm_gpuvm.ko
LD [M] drivers/gpu/drm/drm_suballoc_helper.ko
LD [M] drivers/gpu/drm/drm_ttm_helper.ko
LD [M] drivers/gpu/drm/scheduler/gpu-sched.ko
LD [M] drivers/thermal/intel/x86_pkg_temp_thermal.ko
LD [M] sound/core/snd-pcm.ko
LD [M] sound/hda/snd-intel-sdw-acpi.ko
LD [M] net/netfilter/xt_nat.ko
LD [M] drivers/gpu/drm/xe/xe.ko
LD [M] sound/pci/hda/snd-hda-codec-hdmi.ko
LD [M] sound/hda/snd-hda-core.ko
LD [M] sound/pci/hda/snd-hda-codec.ko
LD [M] sound/hda/snd-intel-dspcfg.ko
LD [M] drivers/gpu/drm/drm_exec.ko
LD [M] sound/core/snd-hwdep.ko
LD [M] net/ipv4/netfilter/iptable_nat.ko
LD [M] net/netfilter/xt_mark.ko
LD [M] sound/pci/hda/snd-hda-intel.ko
LD [M] net/netfilter/nf_log_syslog.ko
LD [M] net/netfilter/xt_MASQUERADE.ko
LD [M] net/netfilter/xt_LOG.ko
LD [M] net/netfilter/xt_addrtype.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
AS arch/x86/boot/compressed/head_32.o
VOFFSET arch/x86/boot/compressed/../voffset.h
CPUSTR arch/x86/boot/cpustr.h
CC arch/x86/boot/compressed/string.o
CC arch/x86/boot/compressed/cmdline.o
CC arch/x86/boot/compressed/error.o
CC arch/x86/boot/cpu.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_force_wake.c:227: warning: Function parameter or struct member 'fw_ref' not described in 'xe_force_wake_put'
drivers/gpu/drm/xe/xe_force_wake.c:227: warning: Excess function parameter 'domains_mask' description in 'xe_force_wake_put'
2 warnings as Errors
run-parts: /workspace/ci/hooks/20-kernel-doc exited with return code 123
^ permalink raw reply [flat|nested] 54+ messages in thread
* ✓ CI.checksparse: success for Fix xe_force_wake_get() failure handling (rev7)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (32 preceding siblings ...)
2024-09-30 21:10 ` ✗ CI.Hooks: failure " Patchwork
@ 2024-09-30 21:12 ` Patchwork
2024-09-30 21:39 ` ✗ CI.BAT: failure " Patchwork
2024-10-01 6:20 ` ✗ CI.FULL: " Patchwork
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-09-30 21:12 UTC (permalink / raw)
To: Ghimiray, Himal Prasad; +Cc: intel-xe
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev7)
URL : https://patchwork.freedesktop.org/series/137982/
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 4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1
/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] 54+ messages in thread
* ✗ CI.BAT: failure for Fix xe_force_wake_get() failure handling (rev7)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (33 preceding siblings ...)
2024-09-30 21:12 ` ✓ CI.checksparse: success " Patchwork
@ 2024-09-30 21:39 ` Patchwork
2024-10-01 6:20 ` ✗ CI.FULL: " Patchwork
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-09-30 21:39 UTC (permalink / raw)
To: Ghimiray, Himal Prasad; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1971 bytes --]
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev7)
URL : https://patchwork.freedesktop.org/series/137982/
State : failure
== Summary ==
CI Bug Log - changes from xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1_BAT -> xe-pw-137982v7_BAT
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-137982v7_BAT absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-137982v7_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (9 -> 8)
------------------------------
Missing (1): bat-adlp-vf
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-137982v7_BAT:
### IGT changes ###
#### Possible regressions ####
* igt@xe_module_load@load:
- bat-atsm-2: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/bat-atsm-2/igt@xe_module_load@load.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/bat-atsm-2/igt@xe_module_load@load.html
- bat-adlp-7: [PASS][3] -> [ABORT][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/bat-adlp-7/igt@xe_module_load@load.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/bat-adlp-7/igt@xe_module_load@load.html
Build changes
-------------
* Linux: xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1 -> xe-pw-137982v7
IGT_8043: 8043
xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1: 4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1
xe-pw-137982v7: 137982v7
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/index.html
[-- Attachment #2: Type: text/html, Size: 2564 bytes --]
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask
2024-09-30 5:31 ` [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask Himal Prasad Ghimiray
2024-09-30 20:13 ` Michal Wajdeczko
@ 2024-09-30 22:13 ` Matt Roper
2024-10-01 5:31 ` Ghimiray, Himal Prasad
1 sibling, 1 reply; 54+ messages in thread
From: Matt Roper @ 2024-09-30 22:13 UTC (permalink / raw)
To: Himal Prasad Ghimiray
Cc: intel-xe, Michal Wajdeczko, Badal Nilawar, Rodrigo Vivi,
Lucas De Marchi, Nirmoy Das
On Mon, Sep 30, 2024 at 11:01:28AM +0530, Himal Prasad Ghimiray wrote:
> Instead of calling xe_force_wake_put on all domains that were input to
> xe_force_wake_get, call _put only on the domains whose reference counts
> were successfully incremented by the _get call. Since the return value
> of _get can be a mask that does not match any specific value in the enum
> xe_force_wake_domains, change the input parameter of _put to unsigned int.
>
> v3
> - Move WARN to this patch (Badal)
> - use xe_gt_WARN instead of XE_WARN (Michal)
> - Stop using xe_force_wake_domains for non enum values.
> - Remove kernel-doc from this patch (Badal)
>
> -v5
> - Fix global awake_domain
>
> -v6
> - put all initialized domains in case of FORCEWAKE_ALL.
> - Modify ret variable name (Michal)
> - Modify input var name (Michal)
> - Modify commit message and warn (Badal)
>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Badal Nilawar <badal.nilawar@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: Nirmoy Das <nirmoy.das@intel.com>
> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> drivers/gpu/drm/xe/xe_force_wake.c | 28 +++++++++++++++++++++-------
> drivers/gpu/drm/xe/xe_force_wake.h | 2 +-
> 2 files changed, 22 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
> index 7f358e42c5d4..372ea43b0d06 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake.c
> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
> @@ -211,26 +211,40 @@ unsigned int xe_force_wake_get(struct xe_force_wake *fw,
> }
>
> int xe_force_wake_put(struct xe_force_wake *fw,
> - enum xe_force_wake_domains domains)
> + unsigned int fw_ref)
> {
> struct xe_gt *gt = fw->gt;
> struct xe_force_wake_domain *domain;
> - enum xe_force_wake_domains tmp, sleep = 0;
> + unsigned int tmp, sleep = 0;
> unsigned long flags;
> - int ret = 0;
> + int ack_fail = 0;
> +
> + /*
> + * Avoid unnecessary lock and unlock when the function is called
> + * in error path of individual domains.
> + */
> + if (!fw_ref)
> + return 0;
> +
> + if (fw_ref == XE_FORCEWAKE_ALL)
> + fw_ref = fw->initialized_domains;
>
> spin_lock_irqsave(&fw->lock, flags);
> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
> + for_each_fw_domain_masked(domain, fw_ref, fw, tmp) {
> if (!--domain->ref) {
> sleep |= BIT(domain->id);
> domain_sleep(gt, domain);
> }
> }
> for_each_fw_domain_masked(domain, sleep, fw, tmp) {
> - ret |= domain_sleep_wait(gt, domain);
> + if (domain_sleep_wait(gt, domain) == 0)
One of the long-standing bugs with Xe's forcewake implementation is that
we shouldn't be waiting in the 'put' function at all. The idea is that
the driver is supposed to just submit a request to sleep and then move
on; the hardware will actually go to sleep asynchronously and it's
perfectly expected for that to not happen immediately when we request
it. Waiting here adds an unnecessary delay and slows down the whole
system. We probably/hopefully don't wake/sleep forcewake often enough
in the Xe driver for this to cause a major user-noticeable performance
impact, but the current synchronous sleep is definitely not the intended
design or what we want going forward.
What we actually need to do is drop the wait here and add a check+wait
at the beginning of the 'get' function to ensure that any previously
submitted sleeps have actually completed before we start the next wake.
Usually they will have already completed while the driver was doing
other work, so there will be no extra artificial delays added as we have
today.
Matt
> + fw->awake_domains &= ~BIT(domain->id);
> + else
> + ack_fail |= BIT(domain->id);
> }
> - fw->awake_domains &= ~sleep;
> spin_unlock_irqrestore(&fw->lock, flags);
>
> - return ret;
> + xe_gt_WARN(gt, ack_fail, "Forcewake domain%s %#x failed to acknowledge sleep request\n",
> + str_plural(hweight_long(ack_fail)), ack_fail);
> + return ack_fail;
> }
> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
> index eb638128952d..b5a75544d86a 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake.h
> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
> @@ -18,7 +18,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt,
> unsigned int xe_force_wake_get(struct xe_force_wake *fw,
> enum xe_force_wake_domains domains);
> int xe_force_wake_put(struct xe_force_wake *fw,
> - enum xe_force_wake_domains domains);
> + unsigned int fw_ref);
>
> static inline int
> xe_force_wake_ref(struct xe_force_wake *fw,
> --
> 2.34.1
>
--
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 01/25] drm/xe: Add member initialized_domains to xe_force_wake()
2024-09-30 19:51 ` Michal Wajdeczko
@ 2024-10-01 5:03 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 54+ messages in thread
From: Ghimiray, Himal Prasad @ 2024-10-01 5:03 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Badal Nilawar, Rodrigo Vivi
On 01-10-2024 01:21, Michal Wajdeczko wrote:
>
>
> On 30.09.2024 07:31, Himal Prasad Ghimiray wrote:
>> This field serves as a bitmask representing all initialized forcewake
>> domains on the GT.
>>
>> While at it, fix the datatype for awake_domains since it can have
>> value different from enum xe_force_wake_domains.
>
> up to maintainers, but for me this is unrelated change
Ok. Will move it to separate patch.
>
>>
>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_force_wake.c | 24 +++++++++++++++++-------
>> drivers/gpu/drm/xe/xe_force_wake_types.h | 4 +++-
>> 2 files changed, 20 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
>> index a64c14757c84..5ce9e912818a 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake.c
>> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
>> @@ -21,15 +21,25 @@ static const char *str_wake_sleep(bool wake)
>> return wake ? "wake" : "sleep";
>> }
>>
>> -static void domain_init(struct xe_force_wake_domain *domain,
>> +static void mark_domain_initialized(struct xe_force_wake *fw,
>> + enum xe_force_wake_domain_id id)
>> +{
>> + fw->initialized_domains |= BIT(id);
>> +}
>> +
>> +static void domain_init(struct xe_force_wake *fw,
>
> since this function is no longer taking 'domain' as param, then IMO it
> should be named like:
Ok.
>
> init_domain(fw, id, reg, ack)
>
>> enum xe_force_wake_domain_id id,
>> struct xe_reg reg, struct xe_reg ack)
>> {
>> + struct xe_force_wake_domain *domain = &fw->domains[id];
>> +
>> domain->id = id;
>> domain->reg_ctl = reg;
>> domain->reg_ack = ack;
>> domain->val = FORCEWAKE_MT(FORCEWAKE_KERNEL);
>> domain->mask = FORCEWAKE_MT_MASK(FORCEWAKE_KERNEL);
>> +
>> + mark_domain_initialized(fw, id);
>> }
>>
>> void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw)
>> @@ -43,12 +53,12 @@ void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw)
>> xe_gt_assert(gt, GRAPHICS_VER(gt_to_xe(gt)) >= 11);
>>
>> if (xe->info.graphics_verx100 >= 1270) {
>> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_GT],
>> + domain_init(fw,
>> XE_FW_DOMAIN_ID_GT,
>> FORCEWAKE_GT,
>> FORCEWAKE_ACK_GT_MTL);
>
> likely above alignment could be optimized at least to:
>
> init_domain(fw, XE_FW_DOMAIN_ID_GT,
> FORCEWAKE_GT,
> FORCEWAKE_ACK_GT_MTL);
>
ok
>
>> } else {
>> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_GT],
>> + domain_init(fw,
>> XE_FW_DOMAIN_ID_GT,
>> FORCEWAKE_GT,
>> FORCEWAKE_ACK_GT);
>> @@ -63,7 +73,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
>> xe_gt_assert(gt, GRAPHICS_VER(gt_to_xe(gt)) >= 11);
>>
>> if (!xe_gt_is_media_type(gt))
>> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_RENDER],
>> + domain_init(fw,
>> XE_FW_DOMAIN_ID_RENDER,
>> FORCEWAKE_RENDER,
>> FORCEWAKE_ACK_RENDER);
>> @@ -72,7 +82,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
>> if (!(gt->info.engine_mask & BIT(i)))
>> continue;
>>
>> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j],
>> + domain_init(fw,
>> XE_FW_DOMAIN_ID_MEDIA_VDBOX0 + j,
>> FORCEWAKE_MEDIA_VDBOX(j),
>> FORCEWAKE_ACK_MEDIA_VDBOX(j));
>> @@ -82,14 +92,14 @@ void xe_force_wake_init_engines(struct xe_gt *gt, struct xe_force_wake *fw)
>> if (!(gt->info.engine_mask & BIT(i)))
>> continue;
>>
>> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j],
>> + domain_init(fw,
>> XE_FW_DOMAIN_ID_MEDIA_VEBOX0 + j,
>> FORCEWAKE_MEDIA_VEBOX(j),
>> FORCEWAKE_ACK_MEDIA_VEBOX(j));
>> }
>>
>> if (gt->info.engine_mask & BIT(XE_HW_ENGINE_GSCCS0))
>> - domain_init(&fw->domains[XE_FW_DOMAIN_ID_GSC],
>> + domain_init(fw,
>> XE_FW_DOMAIN_ID_GSC,
>> FORCEWAKE_GSC,
>> FORCEWAKE_ACK_GSC);
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake_types.h b/drivers/gpu/drm/xe/xe_force_wake_types.h
>> index ed0edc2cdf9f..fde17dc3d01e 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake_types.h
>> +++ b/drivers/gpu/drm/xe/xe_force_wake_types.h
>> @@ -78,7 +78,9 @@ struct xe_force_wake {
>> /** @lock: protects everything force wake struct */
>> spinlock_t lock;
>> /** @awake_domains: mask of all domains awake */
>> - enum xe_force_wake_domains awake_domains;
>> + unsigned int awake_domains;
>> + /** @initialized_domains: mask of all initialized domains */
>> + unsigned int initialized_domains;
>> /** @domains: force wake domains */
>> struct xe_force_wake_domain domains[XE_FW_DOMAIN_ID_COUNT];
>> };
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 02/25] drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain()
2024-09-30 20:04 ` Michal Wajdeczko
@ 2024-10-01 5:06 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 54+ messages in thread
From: Ghimiray, Himal Prasad @ 2024-10-01 5:06 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Badal Nilawar, Rodrigo Vivi
On 01-10-2024 01:34, Michal Wajdeczko wrote:
>
>
> On 30.09.2024 07:31, Himal Prasad Ghimiray wrote:
>> The helper xe_force_wake_ref_has_domain() checks if the input domain
>> has been successfully reference-counted and awakened in the reference
>> returned by the xe_force_wake_get() call.
>
> hmm
> but at this point of the series, xe_force_wake_get() still returns errno
Yup, will remove returned by the xe_force_wake_get() call.
>
>>
>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_force_wake.h | 19 +++++++++++++++++++
>> 1 file changed, 19 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
>> index a2577672f4e3..de720881a300 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake.h
>> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
>> @@ -46,4 +46,23 @@ xe_force_wake_assert_held(struct xe_force_wake *fw,
>> xe_gt_assert(fw->gt, fw->awake_domains & domain);
>> }
>>
>> +/**
>> + * xe_force_wake_ref_has_domain - verifies if the domains are in fw_ref
>> + * @fw_ref : Return of xe_force_wake_get()
>
> for now you may only refer to this only as: "the force_wake reference"
> and once you update xe_force_wake_get() you may say there that it
> returns "a force_wake reference" that could be checked by this helper
Ok
>
>> + * @domain : forcewake domains to verify
>
> domain or domains ?
>
>> + *
>> + * xe_force_wake_ref_has_domain() confirms whether xe_force_wake_get()
>> + * is success or not for @domain.
>
> This function confirms whether the @fw_ref includes a reference to the
> specified @domain.
OK
>
>> + * In the event of a failure, if the caller chooses to abort or return,
>> + * they must call xe_force_wake_put(fw, @fw_ref) if the @domain
>> + * parameter is XE_FORCE_WAKE_ALL
>
> hmm, this last sentence is IMO not applicable here, it should be rather
> placed in xe_force_wake_get() doc that may refer to this function
Sure
>
>> + *
>> + * Return: true on domain is refcounted.
>
> s/on/if
ok
>
>> + */
>> +static inline bool
>> +xe_force_wake_ref_has_domain(unsigned int fw_ref, enum xe_force_wake_domains domain)
>> +{
>> + return (fw_ref & domain);
>
> you don't need these ( )
ok
>
>> +}
>> +
>> #endif
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask
2024-09-30 20:15 ` Michal Wajdeczko
@ 2024-10-01 5:11 ` Ghimiray, Himal Prasad
2024-10-04 3:21 ` Nilawar, Badal
0 siblings, 1 reply; 54+ messages in thread
From: Ghimiray, Himal Prasad @ 2024-10-01 5:11 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe
Cc: Badal Nilawar, Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
On 01-10-2024 01:45, Michal Wajdeczko wrote:
>
>
> On 30.09.2024 22:13, Michal Wajdeczko wrote:
>>
>>
>> On 30.09.2024 07:31, Himal Prasad Ghimiray wrote:
>>> Instead of calling xe_force_wake_put on all domains that were input to
>>> xe_force_wake_get, call _put only on the domains whose reference counts
>>> were successfully incremented by the _get call. Since the return value
>>> of _get can be a mask that does not match any specific value in the enum
>>> xe_force_wake_domains, change the input parameter of _put to unsigned int.
>>
>> at this point in the series xe_force_wake_get() still returns errno
>
> oops, scratch that, somehow missed patch 03/25
>
>>
>> maybe rephrase this to something like:
>>
>> "Prepare xe_force_wake_put() to accept force_wake reference with
>> refcounted domains"
>>
>> and also maybe it is a good time to change this function to void (or
>> maybe even do it before this path?
Changing this to void here or before this patch will break the
compilation, since the cleanup is in subsequent patches. Therefore,
patch 25/25 addresses changing it to void after all the cleanups.
>>
>>>
>>> v3
>>> - Move WARN to this patch (Badal)
>>> - use xe_gt_WARN instead of XE_WARN (Michal)
>>> - Stop using xe_force_wake_domains for non enum values.
>>> - Remove kernel-doc from this patch (Badal)
>>>
>>> -v5
>>> - Fix global awake_domain
>>>
>>> -v6
>>> - put all initialized domains in case of FORCEWAKE_ALL.
>>> - Modify ret variable name (Michal)
>>> - Modify input var name (Michal)
>>> - Modify commit message and warn (Badal)
>>>
>>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>> Cc: Nirmoy Das <nirmoy.das@intel.com>
>>> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
>>
>> probably this applies to some earlier #rev, so please mark it as such
Sure. Miss at my end. Will do in this patch and others.
>>
>>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>>> ---
>>> drivers/gpu/drm/xe/xe_force_wake.c | 28 +++++++++++++++++++++-------
>>> drivers/gpu/drm/xe/xe_force_wake.h | 2 +-
>>> 2 files changed, 22 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
>>> index 7f358e42c5d4..372ea43b0d06 100644
>>> --- a/drivers/gpu/drm/xe/xe_force_wake.c
>>> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
>>> @@ -211,26 +211,40 @@ unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>>> }
>>>
>>> int xe_force_wake_put(struct xe_force_wake *fw,
>>> - enum xe_force_wake_domains domains)
>>> + unsigned int fw_ref)
>>> {
>>> struct xe_gt *gt = fw->gt;
>>> struct xe_force_wake_domain *domain;
>>> - enum xe_force_wake_domains tmp, sleep = 0;
>>> + unsigned int tmp, sleep = 0;
>>> unsigned long flags;
>>> - int ret = 0;
>>> + int ack_fail = 0;
>>> +
>>> + /*
>>> + * Avoid unnecessary lock and unlock when the function is called
>>> + * in error path of individual domains.
>>> + */
>>> + if (!fw_ref)
>>> + return 0;
>>> +
>>> + if (fw_ref == XE_FORCEWAKE_ALL)
>>> + fw_ref = fw->initialized_domains;
>>>
>>> spin_lock_irqsave(&fw->lock, flags);
>>> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
>>> + for_each_fw_domain_masked(domain, fw_ref, fw, tmp) {
>>> if (!--domain->ref) {
>>> sleep |= BIT(domain->id);
>>> domain_sleep(gt, domain);
>>> }
>>> }
>>> for_each_fw_domain_masked(domain, sleep, fw, tmp) {
>>> - ret |= domain_sleep_wait(gt, domain);
>>> + if (domain_sleep_wait(gt, domain) == 0)
>>> + fw->awake_domains &= ~BIT(domain->id);
>>> + else
>>> + ack_fail |= BIT(domain->id);
>>> }
>>> - fw->awake_domains &= ~sleep;
>>> spin_unlock_irqrestore(&fw->lock, flags);
>>>
>>> - return ret;
>>> + xe_gt_WARN(gt, ack_fail, "Forcewake domain%s %#x failed to acknowledge sleep request\n",
>>> + str_plural(hweight_long(ack_fail)), ack_fail);
>>> + return ack_fail;
>>> }
>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
>>> index eb638128952d..b5a75544d86a 100644
>>> --- a/drivers/gpu/drm/xe/xe_force_wake.h
>>> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
>>> @@ -18,7 +18,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt,
>>> unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>>> enum xe_force_wake_domains domains);
>>> int xe_force_wake_put(struct xe_force_wake *fw,
>>> - enum xe_force_wake_domains domains);
>>> + unsigned int fw_ref);
>>>
>>> static inline int
>>> xe_force_wake_ref(struct xe_force_wake *fw,
>>
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask
2024-09-30 22:13 ` Matt Roper
@ 2024-10-01 5:31 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 54+ messages in thread
From: Ghimiray, Himal Prasad @ 2024-10-01 5:31 UTC (permalink / raw)
To: Matt Roper
Cc: intel-xe, Michal Wajdeczko, Badal Nilawar, Rodrigo Vivi,
Lucas De Marchi, Nirmoy Das
On 01-10-2024 03:43, Matt Roper wrote:
> On Mon, Sep 30, 2024 at 11:01:28AM +0530, Himal Prasad Ghimiray wrote:
>> Instead of calling xe_force_wake_put on all domains that were input to
>> xe_force_wake_get, call _put only on the domains whose reference counts
>> were successfully incremented by the _get call. Since the return value
>> of _get can be a mask that does not match any specific value in the enum
>> xe_force_wake_domains, change the input parameter of _put to unsigned int.
>>
>> v3
>> - Move WARN to this patch (Badal)
>> - use xe_gt_WARN instead of XE_WARN (Michal)
>> - Stop using xe_force_wake_domains for non enum values.
>> - Remove kernel-doc from this patch (Badal)
>>
>> -v5
>> - Fix global awake_domain
>>
>> -v6
>> - put all initialized domains in case of FORCEWAKE_ALL.
>> - Modify ret variable name (Michal)
>> - Modify input var name (Michal)
>> - Modify commit message and warn (Badal)
>>
>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>> Cc: Nirmoy Das <nirmoy.das@intel.com>
>> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_force_wake.c | 28 +++++++++++++++++++++-------
>> drivers/gpu/drm/xe/xe_force_wake.h | 2 +-
>> 2 files changed, 22 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
>> index 7f358e42c5d4..372ea43b0d06 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake.c
>> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
>> @@ -211,26 +211,40 @@ unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>> }
>>
>> int xe_force_wake_put(struct xe_force_wake *fw,
>> - enum xe_force_wake_domains domains)
>> + unsigned int fw_ref)
>> {
>> struct xe_gt *gt = fw->gt;
>> struct xe_force_wake_domain *domain;
>> - enum xe_force_wake_domains tmp, sleep = 0;
>> + unsigned int tmp, sleep = 0;
>> unsigned long flags;
>> - int ret = 0;
>> + int ack_fail = 0;
>> +
>> + /*
>> + * Avoid unnecessary lock and unlock when the function is called
>> + * in error path of individual domains.
>> + */
>> + if (!fw_ref)
>> + return 0;
>> +
>> + if (fw_ref == XE_FORCEWAKE_ALL)
>> + fw_ref = fw->initialized_domains;
>>
>> spin_lock_irqsave(&fw->lock, flags);
>> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
>> + for_each_fw_domain_masked(domain, fw_ref, fw, tmp) {
>> if (!--domain->ref) {
>> sleep |= BIT(domain->id);
>> domain_sleep(gt, domain);
>> }
>> }
>> for_each_fw_domain_masked(domain, sleep, fw, tmp) {
>> - ret |= domain_sleep_wait(gt, domain);
>> + if (domain_sleep_wait(gt, domain) == 0)
>
> One of the long-standing bugs with Xe's forcewake implementation is that
> we shouldn't be waiting in the 'put' function at all. The idea is that
> the driver is supposed to just submit a request to sleep and then move
> on; the hardware will actually go to sleep asynchronously and it's
> perfectly expected for that to not happen immediately when we request
> it. Waiting here adds an unnecessary delay and slows down the whole
> system. We probably/hopefully don't wake/sleep forcewake often enough
> in the Xe driver for this to cause a major user-noticeable performance
> impact, but the current synchronous sleep is definitely not the intended
> design or what we want going forward.
>
> What we actually need to do is drop the wait here and add a check+wait
> at the beginning of the 'get' function to ensure that any previously
> submitted sleeps have actually completed before we start the next wake.
> Usually they will have already completed while the driver was doing
> other work, so there will be no extra artificial delays added as we have
> today.
I don't have any objections on my end. The only downside I see is that
we won't have a definitive time for sleep acknowledgment with this approach.
I'd prefer to keep the current changes separate from this, and we can
address it in future patches.
BR
Himal
>
>
> Matt
>
>> + fw->awake_domains &= ~BIT(domain->id);
>> + else
>> + ack_fail |= BIT(domain->id);
>> }
>> - fw->awake_domains &= ~sleep;
>> spin_unlock_irqrestore(&fw->lock, flags);
>>
>> - return ret;
>> + xe_gt_WARN(gt, ack_fail, "Forcewake domain%s %#x failed to acknowledge sleep request\n",
>> + str_plural(hweight_long(ack_fail)), ack_fail);
>> + return ack_fail;
>> }
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
>> index eb638128952d..b5a75544d86a 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake.h
>> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
>> @@ -18,7 +18,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt,
>> unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>> enum xe_force_wake_domains domains);
>> int xe_force_wake_put(struct xe_force_wake *fw,
>> - enum xe_force_wake_domains domains);
>> + unsigned int fw_ref);
>>
>> static inline int
>> xe_force_wake_ref(struct xe_force_wake *fw,
>> --
>> 2.34.1
>>
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* ✗ CI.FULL: failure for Fix xe_force_wake_get() failure handling (rev7)
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
` (34 preceding siblings ...)
2024-09-30 21:39 ` ✗ CI.BAT: failure " Patchwork
@ 2024-10-01 6:20 ` Patchwork
35 siblings, 0 replies; 54+ messages in thread
From: Patchwork @ 2024-10-01 6:20 UTC (permalink / raw)
To: Ghimiray, Himal Prasad; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 23191 bytes --]
== Series Details ==
Series: Fix xe_force_wake_get() failure handling (rev7)
URL : https://patchwork.freedesktop.org/series/137982/
State : failure
== Summary ==
CI Bug Log - changes from xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1_full -> xe-pw-137982v7_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-137982v7_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-137982v7_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-137982v7_full:
### IGT changes ###
#### Possible regressions ####
* igt@kms_psr@psr2-suspend:
- shard-lnl: [PASS][1] -> [DMESG-WARN][2] +3 other tests dmesg-warn
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-7/igt@kms_psr@psr2-suspend.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-3/igt@kms_psr@psr2-suspend.html
#### Warnings ####
* igt@xe_exec_reset@gt-reset-stress:
- shard-lnl: [FAIL][3] ([Intel XE#2895]) -> [FAIL][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-1/igt@xe_exec_reset@gt-reset-stress.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-7/igt@xe_exec_reset@gt-reset-stress.html
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* igt@kms_async_flips@crc@pipe-b-hdmi-a-3:
- {shard-bmg}: [FAIL][5] ([Intel XE#1288]) -> [DMESG-FAIL][6]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-bmg-5/igt@kms_async_flips@crc@pipe-b-hdmi-a-3.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-bmg-4/igt@kms_async_flips@crc@pipe-b-hdmi-a-3.html
* igt@xe_exec_reset@gt-reset-stress:
- {shard-bmg}: [FAIL][7] ([Intel XE#2895]) -> [FAIL][8]
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-bmg-5/igt@xe_exec_reset@gt-reset-stress.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-bmg-4/igt@xe_exec_reset@gt-reset-stress.html
Known issues
------------
Here are the changes found in xe-pw-137982v7_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_atomic_transition@modeset-transition-nonblocking-fencing@1x-outputs:
- shard-lnl: [PASS][9] -> [FAIL][10] ([Intel XE#1701]) +1 other test fail
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-7/igt@kms_atomic_transition@modeset-transition-nonblocking-fencing@1x-outputs.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-3/igt@kms_atomic_transition@modeset-transition-nonblocking-fencing@1x-outputs.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-lnl: [PASS][11] -> [FAIL][12] ([Intel XE#1659])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-90:
- shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#1407])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
- shard-lnl: NOTRUN -> [SKIP][14] ([Intel XE#1124]) +2 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-7/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
* igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p:
- shard-lnl: NOTRUN -> [SKIP][15] ([Intel XE#1512])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html
* igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs:
- shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#2887]) +5 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs.html
* igt@kms_chamelium_frames@hdmi-aspect-ratio:
- shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#373]) +2 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_chamelium_frames@hdmi-aspect-ratio.html
* igt@kms_cursor_crc@cursor-offscreen-512x170:
- shard-lnl: NOTRUN -> [SKIP][18] ([Intel XE#1413])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_cursor_crc@cursor-offscreen-512x170.html
* igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size:
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#309]) +1 other test skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-7/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
- shard-lnl: [PASS][20] -> [FAIL][21] ([Intel XE#1475])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-7/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-3/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
* igt@kms_feature_discovery@display-3x:
- shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#703])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_feature_discovery@display-3x.html
* igt@kms_flip@bo-too-big-interruptible:
- shard-lnl: NOTRUN -> [TIMEOUT][23] ([Intel XE#1504]) +1 other test timeout
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_flip@bo-too-big-interruptible.html
* igt@kms_flip@flip-vs-blocking-wf-vblank:
- shard-lnl: [PASS][24] -> [FAIL][25] ([Intel XE#886]) +7 other tests fail
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-4/igt@kms_flip@flip-vs-blocking-wf-vblank.html
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-8/igt@kms_flip@flip-vs-blocking-wf-vblank.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#651]) +3 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][27] ([Intel XE#656]) +7 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_invalid_mode@clock-too-high:
- shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#1450] / [Intel XE#2568] / [Intel XE#599])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_invalid_mode@clock-too-high.html
* igt@kms_invalid_mode@clock-too-high@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][29] ([Intel XE#1450]) +1 other test skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_invalid_mode@clock-too-high@pipe-a-edp-1.html
* igt@kms_invalid_mode@clock-too-high@pipe-c-edp-1:
- shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#1450] / [Intel XE#599])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_invalid_mode@clock-too-high@pipe-c-edp-1.html
* igt@kms_plane@plane-position-covered:
- shard-lnl: [PASS][31] -> [DMESG-FAIL][32] ([Intel XE#324]) +2 other tests dmesg-fail
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-7/igt@kms_plane@plane-position-covered.html
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-3/igt@kms_plane@plane-position-covered.html
* igt@kms_plane@plane-position-covered@pipe-b-plane-1:
- shard-lnl: [PASS][33] -> [DMESG-WARN][34] ([Intel XE#324]) +1 other test dmesg-warn
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-7/igt@kms_plane@plane-position-covered@pipe-b-plane-1.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-3/igt@kms_plane@plane-position-covered@pipe-b-plane-1.html
* igt@kms_pm_dc@deep-pkgc:
- shard-lnl: [PASS][35] -> [FAIL][36] ([Intel XE#2029])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-7/igt@kms_pm_dc@deep-pkgc.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#2893])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html
* igt@kms_psr@pr-cursor-plane-move:
- shard-lnl: NOTRUN -> [SKIP][38] ([Intel XE#1406])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_psr@pr-cursor-plane-move.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#1437])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_writeback@writeback-check-output-xrgb2101010:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#756])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_writeback@writeback-check-output-xrgb2101010.html
* igt@xe_evict@evict-mixed-threads-small:
- shard-lnl: NOTRUN -> [SKIP][41] ([Intel XE#688]) +2 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@xe_evict@evict-mixed-threads-small.html
* igt@xe_exec_basic@multigpu-once-userptr-invalidate:
- shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#1392]) +1 other test skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@xe_exec_basic@multigpu-once-userptr-invalidate.html
* igt@xe_gt_freq@freq_suspend:
- shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#584])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-7/igt@xe_gt_freq@freq_suspend.html
* igt@xe_pat@pat-index-xelp:
- shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#977])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@xe_pat@pat-index-xelp.html
* igt@xe_peer2peer@write:
- shard-lnl: NOTRUN -> [SKIP][45] ([Intel XE#1061])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@xe_peer2peer@write.html
* igt@xe_pm@s4-basic-exec:
- shard-lnl: [PASS][46] -> [ABORT][47] ([Intel XE#1358] / [Intel XE#1607] / [Intel XE#1794])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-1/igt@xe_pm@s4-basic-exec.html
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-2/igt@xe_pm@s4-basic-exec.html
#### Possible fixes ####
* igt@kms_big_fb@4-tiled-64bpp-rotate-180:
- shard-lnl: [FAIL][48] ([Intel XE#1659]) -> [PASS][49] +1 other test pass
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-3/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-7/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html
* igt@kms_cursor_edge_walk@64x64-left-edge:
- shard-lnl: [DMESG-WARN][50] ([Intel XE#2055]) -> [PASS][51] +1 other test pass
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-8/igt@kms_cursor_edge_walk@64x64-left-edge.html
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-5/igt@kms_cursor_edge_walk@64x64-left-edge.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
- {shard-bmg}: [DMESG-WARN][52] ([Intel XE#2791] / [Intel XE#877]) -> [PASS][53]
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-bmg-8/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-bmg-5/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
* igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible:
- {shard-bmg}: [DMESG-WARN][54] ([Intel XE#877]) -> [PASS][55] +9 other tests pass
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-bmg-5/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-bmg-4/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html
* igt@kms_flip@dpms-vs-vblank-race-interruptible:
- shard-lnl: [FAIL][56] -> [PASS][57] +1 other test pass
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-3/igt@kms_flip@dpms-vs-vblank-race-interruptible.html
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-7/igt@kms_flip@dpms-vs-vblank-race-interruptible.html
* igt@kms_flip@plain-flip-ts-check@a-edp1:
- shard-lnl: [FAIL][58] ([Intel XE#886]) -> [PASS][59] +7 other tests pass
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-2/igt@kms_flip@plain-flip-ts-check@a-edp1.html
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@kms_flip@plain-flip-ts-check@a-edp1.html
* igt@kms_plane@plane-position-hole@pipe-a-plane-3:
- shard-lnl: [DMESG-FAIL][60] ([Intel XE#324]) -> [PASS][61]
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-5/igt@kms_plane@plane-position-hole@pipe-a-plane-3.html
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-5/igt@kms_plane@plane-position-hole@pipe-a-plane-3.html
* igt@kms_plane@plane-position-hole@pipe-b-plane-4:
- shard-lnl: [DMESG-WARN][62] ([Intel XE#324]) -> [PASS][63]
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-5/igt@kms_plane@plane-position-hole@pipe-b-plane-4.html
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-5/igt@kms_plane@plane-position-hole@pipe-b-plane-4.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1:
- shard-lnl: [FAIL][64] ([Intel XE#899]) -> [PASS][65] +1 other test pass
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-5/igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1.html
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-8/igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1.html
* igt@xe_ccs@suspend-resume@xmajor-compressed-compfmt0-system-system:
- shard-lnl: [DMESG-WARN][66] -> [PASS][67] +1 other test pass
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-7/igt@xe_ccs@suspend-resume@xmajor-compressed-compfmt0-system-system.html
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-3/igt@xe_ccs@suspend-resume@xmajor-compressed-compfmt0-system-system.html
* igt@xe_evict@evict-mixed-many-threads-small:
- {shard-bmg}: [TIMEOUT][68] ([Intel XE#1473] / [Intel XE#2472]) -> [PASS][69]
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-bmg-7/igt@xe_evict@evict-mixed-many-threads-small.html
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html
* igt@xe_gt_freq@freq_reset_multiple:
- shard-lnl: [FAIL][70] ([Intel XE#2676]) -> [PASS][71]
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-2/igt@xe_gt_freq@freq_reset_multiple.html
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@xe_gt_freq@freq_reset_multiple.html
* igt@xe_oa@oa-exponents:
- shard-lnl: [FAIL][72] ([Intel XE#2723]) -> [PASS][73]
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-2/igt@xe_oa@oa-exponents.html
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@xe_oa@oa-exponents.html
* igt@xe_oa@oa-formats:
- shard-lnl: [SKIP][74] -> [PASS][75]
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-8/igt@xe_oa@oa-formats.html
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-4/igt@xe_oa@oa-formats.html
* igt@xe_pm@s4-exec-after:
- shard-lnl: [ABORT][76] ([Intel XE#1358] / [Intel XE#1607]) -> [PASS][77]
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-2/igt@xe_pm@s4-exec-after.html
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-1/igt@xe_pm@s4-exec-after.html
* igt@xe_wedged@wedged-mode-toggle:
- shard-lnl: [ABORT][78] ([Intel XE#2310]) -> [PASS][79]
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-1/igt@xe_wedged@wedged-mode-toggle.html
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-7/igt@xe_wedged@wedged-mode-toggle.html
#### Warnings ####
* igt@kms_plane@plane-position-hole:
- shard-lnl: [DMESG-FAIL][80] ([Intel XE#324]) -> [DMESG-WARN][81] ([Intel XE#324])
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1/shard-lnl-5/igt@kms_plane@plane-position-hole.html
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/shard-lnl-5/igt@kms_plane@plane-position-hole.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1288
[Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1413
[Intel XE#1437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1437
[Intel XE#1450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1450
[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#1504]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1504
[Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
[Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
[Intel XE#1659]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1659
[Intel XE#1701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1701
[Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
[Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
[Intel XE#2055]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2055
[Intel XE#2310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2310
[Intel XE#2472]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2472
[Intel XE#2514]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2514
[Intel XE#2568]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2568
[Intel XE#2676]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2676
[Intel XE#2723]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2723
[Intel XE#2791]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2791
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#2895]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2895
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[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#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
[Intel XE#827]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/827
[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#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
Build changes
-------------
* Linux: xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1 -> xe-pw-137982v7
IGT_8043: 8043
xe-1993-4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1: 4e4d7873ac763aa0bd9207ea9ec2b89bb52a6fe1
xe-pw-137982v7: 137982v7
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137982v7/index.html
[-- Attachment #2: Type: text/html, Size: 25793 bytes --]
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 03/25] drm/xe: Error handling in xe_force_wake_get()
2024-09-30 5:31 ` [PATCH v6 03/25] drm/xe: Error handling in xe_force_wake_get() Himal Prasad Ghimiray
@ 2024-10-03 12:23 ` Nilawar, Badal
2024-10-03 16:10 ` Ghimiray, Himal Prasad
0 siblings, 1 reply; 54+ messages in thread
From: Nilawar, Badal @ 2024-10-03 12:23 UTC (permalink / raw)
To: Himal Prasad Ghimiray, intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
On 30-09-2024 11:01, Himal Prasad Ghimiray wrote:
> If an acknowledgment timeout occurs for a forcewake domain awake
> request, do not increment the reference count for the domain. This
> ensures that subsequent _get calls do not incorrectly assume the domain
> is awake. The return value is a mask of domains that got refcounted,
> and these domains need to be provided for subsequent xe_force_wake_put
> call.
>
> While at it, add simple kernel-doc for xe_force_wake_get()
>
> v3
> - Use explicit type for mask (Michal/Badal)
> - Improve kernel-doc (Michal)
> - Use unsigned int instead of abusing enum (Michal)
>
> v5
> - Use unsigned int for return (MattB/Badal/Rodrigo)
> - use xe_gt_WARN for domain awake ack failure (Badal/Rodrigo)
>
> v6
> - Change XE_FORCEWAKE_ALL to single bit, this helps accommodate
> actually refcounted domains in return. (Michal)
> - Modify commit message and warn message (Badal)
> - Remove unnecessary information in kernel-doc (Michal)
>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Badal Nilawar <badal.nilawar@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: Nirmoy Das <nirmoy.das@intel.com>
> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> drivers/gpu/drm/xe/xe_force_wake.c | 45 ++++++++++++++++++------
> drivers/gpu/drm/xe/xe_force_wake.h | 4 +--
> drivers/gpu/drm/xe/xe_force_wake_types.h | 2 +-
> 3 files changed, 38 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
> index 5ce9e912818a..7f358e42c5d4 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake.c
> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
> @@ -160,29 +160,54 @@ static int domain_sleep_wait(struct xe_gt *gt,
> (ffs(tmp__) - 1))) && \
> domain__->reg_ctl.addr)
>
> -int xe_force_wake_get(struct xe_force_wake *fw,
> - enum xe_force_wake_domains domains)
> +/**
> + * xe_force_wake_get() : Increase the domain refcount
> + * @fw: struct xe_force_wake
> + * @domains: forcewake domains to get refcount on
> + *
> + * This function takes references for the input @domains and wakes them if
> + * they are asleep.If requested domain is ALL then only
> + * applicable/initialized domains will be considered for refcount and it is
> + * a caller responsibilty to check returned ref if it includes any specific
> + * domain by using xe_force_wake_ref_has_domain() function. caller must call
> + * xe_force_wake_put() function to decrease incremented refcounts.
> + *
> + * Return: opaque reference to woken domains or zero if none of requested
> + * domains were awake.
> + */
> +unsigned int xe_force_wake_get(struct xe_force_wake *fw,
> + enum xe_force_wake_domains domains)
> {
> struct xe_gt *gt = fw->gt;
> struct xe_force_wake_domain *domain;
> - enum xe_force_wake_domains tmp, woken = 0;
> + unsigned int ref_incr = 0, awake_rqst = 0, awake_failed = 0;
> + unsigned int tmp, ref_rqst;
> unsigned long flags;
> - int ret = 0;
>
As we have fw->initialized_domains lets add check if valid domain is
being passed and assert otherwise.
Regards,
Badal
> + ref_rqst = (domains == XE_FORCEWAKE_ALL) ? fw->initialized_domains : domains;
> spin_lock_irqsave(&fw->lock, flags);
> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
> + for_each_fw_domain_masked(domain, ref_rqst, fw, tmp) {
> if (!domain->ref++) {
> - woken |= BIT(domain->id);
> + awake_rqst |= BIT(domain->id);
> domain_wake(gt, domain);
> }
> + ref_incr |= BIT(domain->id);
> }
> - for_each_fw_domain_masked(domain, woken, fw, tmp) {
> - ret |= domain_wake_wait(gt, domain);
> + for_each_fw_domain_masked(domain, awake_rqst, fw, tmp) {
> + if (domain_wake_wait(gt, domain) == 0) {
> + fw->awake_domains |= BIT(domain->id);
> + } else {
> + awake_failed |= BIT(domain->id);
> + --domain->ref;
> + }
> }
> - fw->awake_domains |= woken;
> + ref_incr &= ~awake_failed;
> spin_unlock_irqrestore(&fw->lock, flags);
>
> - return ret;
> + xe_gt_WARN(gt, awake_failed, "Forcewake domain%s %#x failed to acknowledge awake request\n",
> + str_plural(hweight_long(awake_failed)), awake_failed);
> +
> + return (ref_incr == fw->initialized_domains) ? ref_incr | XE_FORCEWAKE_ALL : ref_incr;
> }
>
> int xe_force_wake_put(struct xe_force_wake *fw,
> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
> index de720881a300..eb638128952d 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake.h
> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
> @@ -15,8 +15,8 @@ void xe_force_wake_init_gt(struct xe_gt *gt,
> struct xe_force_wake *fw);
> void xe_force_wake_init_engines(struct xe_gt *gt,
> struct xe_force_wake *fw);
> -int xe_force_wake_get(struct xe_force_wake *fw,
> - enum xe_force_wake_domains domains);
> +unsigned int xe_force_wake_get(struct xe_force_wake *fw,
> + enum xe_force_wake_domains domains);
> int xe_force_wake_put(struct xe_force_wake *fw,
> enum xe_force_wake_domains domains);
>
> diff --git a/drivers/gpu/drm/xe/xe_force_wake_types.h b/drivers/gpu/drm/xe/xe_force_wake_types.h
> index fde17dc3d01e..899fbbcb3ea9 100644
> --- a/drivers/gpu/drm/xe/xe_force_wake_types.h
> +++ b/drivers/gpu/drm/xe/xe_force_wake_types.h
> @@ -48,7 +48,7 @@ enum xe_force_wake_domains {
> XE_FW_MEDIA_VEBOX2 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX2),
> XE_FW_MEDIA_VEBOX3 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX3),
> XE_FW_GSC = BIT(XE_FW_DOMAIN_ID_GSC),
> - XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT) - 1
> + XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT)
> };
>
> /**
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 03/25] drm/xe: Error handling in xe_force_wake_get()
2024-10-03 12:23 ` Nilawar, Badal
@ 2024-10-03 16:10 ` Ghimiray, Himal Prasad
2024-10-04 7:40 ` Nilawar, Badal
0 siblings, 1 reply; 54+ messages in thread
From: Ghimiray, Himal Prasad @ 2024-10-03 16:10 UTC (permalink / raw)
To: Nilawar, Badal, intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
On 03-10-2024 17:53, Nilawar, Badal wrote:
>
>
> On 30-09-2024 11:01, Himal Prasad Ghimiray wrote:
>> If an acknowledgment timeout occurs for a forcewake domain awake
>> request, do not increment the reference count for the domain. This
>> ensures that subsequent _get calls do not incorrectly assume the domain
>> is awake. The return value is a mask of domains that got refcounted,
>> and these domains need to be provided for subsequent xe_force_wake_put
>> call.
>>
>> While at it, add simple kernel-doc for xe_force_wake_get()
>>
>> v3
>> - Use explicit type for mask (Michal/Badal)
>> - Improve kernel-doc (Michal)
>> - Use unsigned int instead of abusing enum (Michal)
>>
>> v5
>> - Use unsigned int for return (MattB/Badal/Rodrigo)
>> - use xe_gt_WARN for domain awake ack failure (Badal/Rodrigo)
>>
>> v6
>> - Change XE_FORCEWAKE_ALL to single bit, this helps accommodate
>> actually refcounted domains in return. (Michal)
>> - Modify commit message and warn message (Badal)
>> - Remove unnecessary information in kernel-doc (Michal)
>>
>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>> Cc: Nirmoy Das <nirmoy.das@intel.com>
>> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_force_wake.c | 45 ++++++++++++++++++------
>> drivers/gpu/drm/xe/xe_force_wake.h | 4 +--
>> drivers/gpu/drm/xe/xe_force_wake_types.h | 2 +-
>> 3 files changed, 38 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/
>> xe_force_wake.c
>> index 5ce9e912818a..7f358e42c5d4 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake.c
>> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
>> @@ -160,29 +160,54 @@ static int domain_sleep_wait(struct xe_gt *gt,
>> (ffs(tmp__) - 1))) && \
>> domain__->reg_ctl.addr)
>> -int xe_force_wake_get(struct xe_force_wake *fw,
>> - enum xe_force_wake_domains domains)
>> +/**
>> + * xe_force_wake_get() : Increase the domain refcount
>> + * @fw: struct xe_force_wake
>> + * @domains: forcewake domains to get refcount on
>> + *
>> + * This function takes references for the input @domains and wakes
>> them if
>> + * they are asleep.If requested domain is ALL then only
>> + * applicable/initialized domains will be considered for refcount and
>> it is
>> + * a caller responsibilty to check returned ref if it includes any
>> specific
>> + * domain by using xe_force_wake_ref_has_domain() function. caller
>> must call
>> + * xe_force_wake_put() function to decrease incremented refcounts.
>> + *
>> + * Return: opaque reference to woken domains or zero if none of
>> requested
>> + * domains were awake.
>> + */
>> +unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>> + enum xe_force_wake_domains domains)
>> {
>> struct xe_gt *gt = fw->gt;
>> struct xe_force_wake_domain *domain;
>> - enum xe_force_wake_domains tmp, woken = 0;
>> + unsigned int ref_incr = 0, awake_rqst = 0, awake_failed = 0;
>> + unsigned int tmp, ref_rqst;
>> unsigned long flags;
>> - int ret = 0;
>
> As we have fw->initialized_domains lets add check if valid domain is
> being passed and assert otherwise.
Sounds good check to have. Will add it.
>
> Regards,
> Badal
>
>> + ref_rqst = (domains == XE_FORCEWAKE_ALL) ? fw-
>> >initialized_domains : domains;
>> spin_lock_irqsave(&fw->lock, flags);
>> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
>> + for_each_fw_domain_masked(domain, ref_rqst, fw, tmp) {
>> if (!domain->ref++) {
>> - woken |= BIT(domain->id);
>> + awake_rqst |= BIT(domain->id);
>> domain_wake(gt, domain);
>> }
>> + ref_incr |= BIT(domain->id);
>> }
>> - for_each_fw_domain_masked(domain, woken, fw, tmp) {
>> - ret |= domain_wake_wait(gt, domain);
>> + for_each_fw_domain_masked(domain, awake_rqst, fw, tmp) {
>> + if (domain_wake_wait(gt, domain) == 0) {
>> + fw->awake_domains |= BIT(domain->id);
>> + } else {
>> + awake_failed |= BIT(domain->id);
>> + --domain->ref;
>> + }
>> }
>> - fw->awake_domains |= woken;
>> + ref_incr &= ~awake_failed;
>> spin_unlock_irqrestore(&fw->lock, flags);
>> - return ret;
>> + xe_gt_WARN(gt, awake_failed, "Forcewake domain%s %#x failed to
>> acknowledge awake request\n",
>> + str_plural(hweight_long(awake_failed)), awake_failed);
>> +
>> + return (ref_incr == fw->initialized_domains) ? ref_incr |
>> XE_FORCEWAKE_ALL : ref_incr;
>> }
>> int xe_force_wake_put(struct xe_force_wake *fw,
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/
>> xe_force_wake.h
>> index de720881a300..eb638128952d 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake.h
>> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
>> @@ -15,8 +15,8 @@ void xe_force_wake_init_gt(struct xe_gt *gt,
>> struct xe_force_wake *fw);
>> void xe_force_wake_init_engines(struct xe_gt *gt,
>> struct xe_force_wake *fw);
>> -int xe_force_wake_get(struct xe_force_wake *fw,
>> - enum xe_force_wake_domains domains);
>> +unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>> + enum xe_force_wake_domains domains);
>> int xe_force_wake_put(struct xe_force_wake *fw,
>> enum xe_force_wake_domains domains);
>> diff --git a/drivers/gpu/drm/xe/xe_force_wake_types.h b/drivers/gpu/
>> drm/xe/xe_force_wake_types.h
>> index fde17dc3d01e..899fbbcb3ea9 100644
>> --- a/drivers/gpu/drm/xe/xe_force_wake_types.h
>> +++ b/drivers/gpu/drm/xe/xe_force_wake_types.h
>> @@ -48,7 +48,7 @@ enum xe_force_wake_domains {
>> XE_FW_MEDIA_VEBOX2 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX2),
>> XE_FW_MEDIA_VEBOX3 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX3),
>> XE_FW_GSC = BIT(XE_FW_DOMAIN_ID_GSC),
>> - XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT) - 1
>> + XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT)
>> };
>> /**
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask
2024-10-01 5:11 ` Ghimiray, Himal Prasad
@ 2024-10-04 3:21 ` Nilawar, Badal
0 siblings, 0 replies; 54+ messages in thread
From: Nilawar, Badal @ 2024-10-04 3:21 UTC (permalink / raw)
To: Ghimiray, Himal Prasad, Michal Wajdeczko, intel-xe
Cc: Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
On 01-10-2024 10:41, Ghimiray, Himal Prasad wrote:
>
>
> On 01-10-2024 01:45, Michal Wajdeczko wrote:
>>
>>
>> On 30.09.2024 22:13, Michal Wajdeczko wrote:
>>>
>>>
>>> On 30.09.2024 07:31, Himal Prasad Ghimiray wrote:
>>>> Instead of calling xe_force_wake_put on all domains that were input to
>>>> xe_force_wake_get, call _put only on the domains whose reference counts
>>>> were successfully incremented by the _get call. Since the return value
>>>> of _get can be a mask that does not match any specific value in the
>>>> enum
>>>> xe_force_wake_domains, change the input parameter of _put to
>>>> unsigned int.
>>>
>>> at this point in the series xe_force_wake_get() still returns errno
>>
>> oops, scratch that, somehow missed patch 03/25
>>
>>>
>>> maybe rephrase this to something like:
>>>
>>> "Prepare xe_force_wake_put() to accept force_wake reference with
>>> refcounted domains"
>>>
>>> and also maybe it is a good time to change this function to void (or
>>> maybe even do it before this path?
>
> Changing this to void here or before this patch will break the
> compilation, since the cleanup is in subsequent patches. Therefore,
> patch 25/25 addresses changing it to void after all the cleanups.
>
>>>
>>>>
>>>> v3
>>>> - Move WARN to this patch (Badal)
>>>> - use xe_gt_WARN instead of XE_WARN (Michal)
>>>> - Stop using xe_force_wake_domains for non enum values.
>>>> - Remove kernel-doc from this patch (Badal)
>>>>
>>>> -v5
>>>> - Fix global awake_domain
>>>>
>>>> -v6
>>>> - put all initialized domains in case of FORCEWAKE_ALL.
>>>> - Modify ret variable name (Michal)
>>>> - Modify input var name (Michal)
>>>> - Modify commit message and warn (Badal)
>>>>
>>>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>>>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>>> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>> Cc: Nirmoy Das <nirmoy.das@intel.com>
>>>> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
>>>
>>> probably this applies to some earlier #rev, so please mark it as such
>
> Sure. Miss at my end. Will do in this patch and others.
Changes in this patch looks good to me. Please maintain my RB.
Regards,
Badal
>
>>>
>>>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>>>> ---
>>>> drivers/gpu/drm/xe/xe_force_wake.c | 28 +++++++++++++++++++++-------
>>>> drivers/gpu/drm/xe/xe_force_wake.h | 2 +-
>>>> 2 files changed, 22 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/
>>>> xe/xe_force_wake.c
>>>> index 7f358e42c5d4..372ea43b0d06 100644
>>>> --- a/drivers/gpu/drm/xe/xe_force_wake.c
>>>> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
>>>> @@ -211,26 +211,40 @@ unsigned int xe_force_wake_get(struct
>>>> xe_force_wake *fw,
>>>> }
>>>> int xe_force_wake_put(struct xe_force_wake *fw,
>>>> - enum xe_force_wake_domains domains)
>>>> + unsigned int fw_ref)
>>>> {
>>>> struct xe_gt *gt = fw->gt;
>>>> struct xe_force_wake_domain *domain;
>>>> - enum xe_force_wake_domains tmp, sleep = 0;
>>>> + unsigned int tmp, sleep = 0;
>>>> unsigned long flags;
>>>> - int ret = 0;
>>>> + int ack_fail = 0;
>>>> +
>>>> + /*
>>>> + * Avoid unnecessary lock and unlock when the function is called
>>>> + * in error path of individual domains.
>>>> + */
>>>> + if (!fw_ref)
>>>> + return 0;
>>>> +
>>>> + if (fw_ref == XE_FORCEWAKE_ALL)
>>>> + fw_ref = fw->initialized_domains;
>>>> spin_lock_irqsave(&fw->lock, flags);
>>>> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
>>>> + for_each_fw_domain_masked(domain, fw_ref, fw, tmp) {
>>>> if (!--domain->ref) {
>>>> sleep |= BIT(domain->id);
>>>> domain_sleep(gt, domain);
>>>> }
>>>> }
>>>> for_each_fw_domain_masked(domain, sleep, fw, tmp) {
>>>> - ret |= domain_sleep_wait(gt, domain);
>>>> + if (domain_sleep_wait(gt, domain) == 0)
>>>> + fw->awake_domains &= ~BIT(domain->id);
>>>> + else
>>>> + ack_fail |= BIT(domain->id);
>>>> }
>>>> - fw->awake_domains &= ~sleep;
>>>> spin_unlock_irqrestore(&fw->lock, flags);
>>>> - return ret;
>>>> + xe_gt_WARN(gt, ack_fail, "Forcewake domain%s %#x failed to
>>>> acknowledge sleep request\n",
>>>> + str_plural(hweight_long(ack_fail)), ack_fail);
>>>> + return ack_fail;
>>>> }
>>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/
>>>> xe/xe_force_wake.h
>>>> index eb638128952d..b5a75544d86a 100644
>>>> --- a/drivers/gpu/drm/xe/xe_force_wake.h
>>>> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
>>>> @@ -18,7 +18,7 @@ void xe_force_wake_init_engines(struct xe_gt *gt,
>>>> unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>>>> enum xe_force_wake_domains domains);
>>>> int xe_force_wake_put(struct xe_force_wake *fw,
>>>> - enum xe_force_wake_domains domains);
>>>> + unsigned int fw_ref);
>>>> static inline int
>>>> xe_force_wake_ref(struct xe_force_wake *fw,
>>>
>>
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 05/25] drm/xe/device: Update handling of xe_force_wake_get return
2024-09-30 5:31 ` [PATCH v6 05/25] drm/xe/device: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
@ 2024-10-04 7:18 ` Nilawar, Badal
2024-10-07 3:40 ` Ghimiray, Himal Prasad
0 siblings, 1 reply; 54+ messages in thread
From: Nilawar, Badal @ 2024-10-04 7:18 UTC (permalink / raw)
To: Himal Prasad Ghimiray, intel-xe; +Cc: Rodrigo Vivi
On 30-09-2024 11:01, Himal Prasad Ghimiray wrote:
> With xe_force_wake_get() now returning the refcount-incremented domain
> mask, the return value will be 0 for single domains (excluding
> XE_FORCEWAKE_ALL) in the event of a failure. Modify the return handling
> of xe_force_wake_get() accordingly and pass the return value as input to
> xe_force_wake_put().
Now with changes in patch 3, return value 0 indicates failure for
XE_FORCEWAKE_ALL, i.e. no domains awake, as well. Please rephrase the
commit message accordingly.
Regards,
Badal
>
> v3
> - return xe_wakeref_t instead of int in xe_force_wake_get()
> - xe_force_wake_put() error doesn't need to be escalated/considered as
> probing error. It internally WARNS on domain ack failure.
>
> v5
> - return unsigned int xe_force_wake_get()
>
> Cc: Badal Nilawar <badal.nilawar@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 25 ++++++++++++++-----------
> 1 file changed, 14 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 8e9b551c7033..e885edacf39f 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -600,8 +600,8 @@ int xe_device_probe_early(struct xe_device *xe)
> static int probe_has_flat_ccs(struct xe_device *xe)
> {
> struct xe_gt *gt;
> + unsigned int fw_ref;
> u32 reg;
> - int err;
>
> /* Always enabled/disabled, no runtime check to do */
> if (GRAPHICS_VER(xe) < 20 || !xe->info.has_flat_ccs)
> @@ -609,9 +609,9 @@ static int probe_has_flat_ccs(struct xe_device *xe)
>
> gt = xe_root_mmio_gt(xe);
>
> - err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
> - if (err)
> - return err;
> + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
> + if (!fw_ref)
> + return -ETIMEDOUT;
>
> reg = xe_gt_mcr_unicast_read_any(gt, XE2_FLAT_CCS_BASE_RANGE_LOWER);
> xe->info.has_flat_ccs = (reg & XE2_FLAT_CCS_ENABLE);
> @@ -620,7 +620,8 @@ static int probe_has_flat_ccs(struct xe_device *xe)
> drm_dbg(&xe->drm,
> "Flat CCS has been disabled in bios, May lead to performance impact");
>
> - return xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> + return 0;
> }
>
> int xe_device_probe(struct xe_device *xe)
> @@ -871,6 +872,7 @@ void xe_device_wmb(struct xe_device *xe)
> void xe_device_td_flush(struct xe_device *xe)
> {
> struct xe_gt *gt;
> + unsigned int fw_ref;
> u8 id;
>
> if (!IS_DGFX(xe) || GRAPHICS_VER(xe) < 20)
> @@ -885,7 +887,8 @@ void xe_device_td_flush(struct xe_device *xe)
> if (xe_gt_is_media_type(gt))
> continue;
>
> - if (xe_force_wake_get(gt_to_fw(gt), XE_FW_GT))
> + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
> + if (!fw_ref)
> return;
>
> xe_mmio_write32(>->mmio, XE2_TDF_CTRL, TRANSIENT_FLUSH_REQUEST);
> @@ -900,22 +903,22 @@ void xe_device_td_flush(struct xe_device *xe)
> 150, NULL, false))
> xe_gt_err_once(gt, "TD flush timeout\n");
>
> - xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> }
> }
>
> void xe_device_l2_flush(struct xe_device *xe)
> {
> struct xe_gt *gt;
> - int err;
> + uint fw_ref;
>
> gt = xe_root_mmio_gt(xe);
>
> if (!XE_WA(gt, 16023588340))
> return;
>
> - err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
> - if (err)
> + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
> + if (!fw_ref)
> return;
>
> spin_lock(>->global_invl_lock);
> @@ -925,7 +928,7 @@ void xe_device_l2_flush(struct xe_device *xe)
> xe_gt_err_once(gt, "Global invalidation timeout\n");
> spin_unlock(>->global_invl_lock);
>
> - xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> }
>
> u32 xe_device_ccs_bytes(struct xe_device *xe, u64 size)
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 03/25] drm/xe: Error handling in xe_force_wake_get()
2024-10-03 16:10 ` Ghimiray, Himal Prasad
@ 2024-10-04 7:40 ` Nilawar, Badal
2024-10-07 3:14 ` Ghimiray, Himal Prasad
0 siblings, 1 reply; 54+ messages in thread
From: Nilawar, Badal @ 2024-10-04 7:40 UTC (permalink / raw)
To: Ghimiray, Himal Prasad, intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
On 03-10-2024 21:40, Ghimiray, Himal Prasad wrote:
>
>
> On 03-10-2024 17:53, Nilawar, Badal wrote:
>>
>>
>> On 30-09-2024 11:01, Himal Prasad Ghimiray wrote:
>>> If an acknowledgment timeout occurs for a forcewake domain awake
>>> request, do not increment the reference count for the domain. This
>>> ensures that subsequent _get calls do not incorrectly assume the domain
>>> is awake. The return value is a mask of domains that got refcounted,
>>> and these domains need to be provided for subsequent xe_force_wake_put
>>> call.
>>>
>>> While at it, add simple kernel-doc for xe_force_wake_get()
>>>
>>> v3
>>> - Use explicit type for mask (Michal/Badal)
>>> - Improve kernel-doc (Michal)
>>> - Use unsigned int instead of abusing enum (Michal)
>>>
>>> v5
>>> - Use unsigned int for return (MattB/Badal/Rodrigo)
>>> - use xe_gt_WARN for domain awake ack failure (Badal/Rodrigo)
>>>
>>> v6
>>> - Change XE_FORCEWAKE_ALL to single bit, this helps accommodate
>>> actually refcounted domains in return. (Michal)
>>> - Modify commit message and warn message (Badal)
>>> - Remove unnecessary information in kernel-doc (Michal)
>>>
>>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>> Cc: Nirmoy Das <nirmoy.das@intel.com>
>>> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
>>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>>> ---
>>> drivers/gpu/drm/xe/xe_force_wake.c | 45 ++++++++++++++++++------
>>> drivers/gpu/drm/xe/xe_force_wake.h | 4 +--
>>> drivers/gpu/drm/xe/xe_force_wake_types.h | 2 +-
>>> 3 files changed, 38 insertions(+), 13 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/
>>> xe_force_wake.c
>>> index 5ce9e912818a..7f358e42c5d4 100644
>>> --- a/drivers/gpu/drm/xe/xe_force_wake.c
>>> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
>>> @@ -160,29 +160,54 @@ static int domain_sleep_wait(struct xe_gt *gt,
>>> (ffs(tmp__) - 1))) && \
>>> domain__->reg_ctl.addr)
>>> -int xe_force_wake_get(struct xe_force_wake *fw,
>>> - enum xe_force_wake_domains domains)
>>> +/**
>>> + * xe_force_wake_get() : Increase the domain refcount
>>> + * @fw: struct xe_force_wake
>>> + * @domains: forcewake domains to get refcount on
>>> + *
>>> + * This function takes references for the input @domains and wakes
>>> them if
>>> + * they are asleep.If requested domain is ALL then only
>>> + * applicable/initialized domains will be considered for refcount
>>> and it is
>>> + * a caller responsibilty to check returned ref if it includes any
>>> specific
>>> + * domain by using xe_force_wake_ref_has_domain() function. caller
>>> must call
>>> + * xe_force_wake_put() function to decrease incremented refcounts.
>>> + *
>>> + * Return: opaque reference to woken domains or zero if none of
>>> requested
>>> + * domains were awake.
>>> + */
>>> +unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>>> + enum xe_force_wake_domains domains)
>>> {
>>> struct xe_gt *gt = fw->gt;
>>> struct xe_force_wake_domain *domain;
>>> - enum xe_force_wake_domains tmp, woken = 0;
>>> + unsigned int ref_incr = 0, awake_rqst = 0, awake_failed = 0;
>>> + unsigned int tmp, ref_rqst;
>>> unsigned long flags;
>>> - int ret = 0;
>>
>> As we have fw->initialized_domains lets add check if valid domain is
>> being passed and assert otherwise.
>
> Sounds good check to have. Will add it.
>
>
>>
>> Regards,
>> Badal
>>
>>> + ref_rqst = (domains == XE_FORCEWAKE_ALL) ? fw-
>>> >initialized_domains : domains;
>>> spin_lock_irqsave(&fw->lock, flags);
>>> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
>>> + for_each_fw_domain_masked(domain, ref_rqst, fw, tmp) {
>>> if (!domain->ref++) {
>>> - woken |= BIT(domain->id);
>>> + awake_rqst |= BIT(domain->id);
>>> domain_wake(gt, domain);
>>> }
>>> + ref_incr |= BIT(domain->id);
>>> }
>>> - for_each_fw_domain_masked(domain, woken, fw, tmp) {
>>> - ret |= domain_wake_wait(gt, domain);
>>> + for_each_fw_domain_masked(domain, awake_rqst, fw, tmp) {
>>> + if (domain_wake_wait(gt, domain) == 0) {
>>> + fw->awake_domains |= BIT(domain->id);
>>> + } else {
>>> + awake_failed |= BIT(domain->id);
>>> + --domain->ref;
>>> + }
>>> }
>>> - fw->awake_domains |= woken;
>>> + ref_incr &= ~awake_failed;
>>> spin_unlock_irqrestore(&fw->lock, flags);
>>> - return ret;
>>> + xe_gt_WARN(gt, awake_failed, "Forcewake domain%s %#x failed to
>>> acknowledge awake request\n",
>>> + str_plural(hweight_long(awake_failed)), awake_failed);
>>> +
>>> + return (ref_incr == fw->initialized_domains) ? ref_incr |
>>> XE_FORCEWAKE_ALL : ref_incr;
How about we simply return ref_incr at this point? Then, in patch 2,
given that we have a helper function available, we can validate ref_incr
against fw->initialized_domains, particularly for XE_FORCEWAKE_ALL,
within that helper function.
Regards,
Badal
>>> }
>>> int xe_force_wake_put(struct xe_force_wake *fw,
>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/
>>> xe_force_wake.h
>>> index de720881a300..eb638128952d 100644
>>> --- a/drivers/gpu/drm/xe/xe_force_wake.h
>>> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
>>> @@ -15,8 +15,8 @@ void xe_force_wake_init_gt(struct xe_gt *gt,
>>> struct xe_force_wake *fw);
>>> void xe_force_wake_init_engines(struct xe_gt *gt,
>>> struct xe_force_wake *fw);
>>> -int xe_force_wake_get(struct xe_force_wake *fw,
>>> - enum xe_force_wake_domains domains);
>>> +unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>>> + enum xe_force_wake_domains domains);
>>> int xe_force_wake_put(struct xe_force_wake *fw,
>>> enum xe_force_wake_domains domains);
>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake_types.h b/drivers/gpu/
>>> drm/xe/xe_force_wake_types.h
>>> index fde17dc3d01e..899fbbcb3ea9 100644
>>> --- a/drivers/gpu/drm/xe/xe_force_wake_types.h
>>> +++ b/drivers/gpu/drm/xe/xe_force_wake_types.h
>>> @@ -48,7 +48,7 @@ enum xe_force_wake_domains {
>>> XE_FW_MEDIA_VEBOX2 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX2),
>>> XE_FW_MEDIA_VEBOX3 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX3),
>>> XE_FW_GSC = BIT(XE_FW_DOMAIN_ID_GSC),
>>> - XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT) - 1
>>> + XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT)
>>> };
>>> /**
>>
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 03/25] drm/xe: Error handling in xe_force_wake_get()
2024-10-04 7:40 ` Nilawar, Badal
@ 2024-10-07 3:14 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 54+ messages in thread
From: Ghimiray, Himal Prasad @ 2024-10-07 3:14 UTC (permalink / raw)
To: Nilawar, Badal, intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Lucas De Marchi, Nirmoy Das
On 04-10-2024 13:10, Nilawar, Badal wrote:
>
>
> On 03-10-2024 21:40, Ghimiray, Himal Prasad wrote:
>>
>>
>> On 03-10-2024 17:53, Nilawar, Badal wrote:
>>>
>>>
>>> On 30-09-2024 11:01, Himal Prasad Ghimiray wrote:
>>>> If an acknowledgment timeout occurs for a forcewake domain awake
>>>> request, do not increment the reference count for the domain. This
>>>> ensures that subsequent _get calls do not incorrectly assume the domain
>>>> is awake. The return value is a mask of domains that got refcounted,
>>>> and these domains need to be provided for subsequent xe_force_wake_put
>>>> call.
>>>>
>>>> While at it, add simple kernel-doc for xe_force_wake_get()
>>>>
>>>> v3
>>>> - Use explicit type for mask (Michal/Badal)
>>>> - Improve kernel-doc (Michal)
>>>> - Use unsigned int instead of abusing enum (Michal)
>>>>
>>>> v5
>>>> - Use unsigned int for return (MattB/Badal/Rodrigo)
>>>> - use xe_gt_WARN for domain awake ack failure (Badal/Rodrigo)
>>>>
>>>> v6
>>>> - Change XE_FORCEWAKE_ALL to single bit, this helps accommodate
>>>> actually refcounted domains in return. (Michal)
>>>> - Modify commit message and warn message (Badal)
>>>> - Remove unnecessary information in kernel-doc (Michal)
>>>>
>>>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>>>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>>> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>> Cc: Nirmoy Das <nirmoy.das@intel.com>
>>>> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com>
>>>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>>>> ---
>>>> drivers/gpu/drm/xe/xe_force_wake.c | 45 +++++++++++++++++
>>>> +------
>>>> drivers/gpu/drm/xe/xe_force_wake.h | 4 +--
>>>> drivers/gpu/drm/xe/xe_force_wake_types.h | 2 +-
>>>> 3 files changed, 38 insertions(+), 13 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/
>>>> xe/ xe_force_wake.c
>>>> index 5ce9e912818a..7f358e42c5d4 100644
>>>> --- a/drivers/gpu/drm/xe/xe_force_wake.c
>>>> +++ b/drivers/gpu/drm/xe/xe_force_wake.c
>>>> @@ -160,29 +160,54 @@ static int domain_sleep_wait(struct xe_gt *gt,
>>>> (ffs(tmp__) - 1))) && \
>>>> domain__->reg_ctl.addr)
>>>> -int xe_force_wake_get(struct xe_force_wake *fw,
>>>> - enum xe_force_wake_domains domains)
>>>> +/**
>>>> + * xe_force_wake_get() : Increase the domain refcount
>>>> + * @fw: struct xe_force_wake
>>>> + * @domains: forcewake domains to get refcount on
>>>> + *
>>>> + * This function takes references for the input @domains and wakes
>>>> them if
>>>> + * they are asleep.If requested domain is ALL then only
>>>> + * applicable/initialized domains will be considered for refcount
>>>> and it is
>>>> + * a caller responsibilty to check returned ref if it includes any
>>>> specific
>>>> + * domain by using xe_force_wake_ref_has_domain() function. caller
>>>> must call
>>>> + * xe_force_wake_put() function to decrease incremented refcounts.
>>>> + *
>>>> + * Return: opaque reference to woken domains or zero if none of
>>>> requested
>>>> + * domains were awake.
>>>> + */
>>>> +unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>>>> + enum xe_force_wake_domains domains)
>>>> {
>>>> struct xe_gt *gt = fw->gt;
>>>> struct xe_force_wake_domain *domain;
>>>> - enum xe_force_wake_domains tmp, woken = 0;
>>>> + unsigned int ref_incr = 0, awake_rqst = 0, awake_failed = 0;
>>>> + unsigned int tmp, ref_rqst;
>>>> unsigned long flags;
>>>> - int ret = 0;
>>>
>>> As we have fw->initialized_domains lets add check if valid domain is
>>> being passed and assert otherwise.
>>
>> Sounds good check to have. Will add it.
>>
>>
>>>
>>> Regards,
>>> Badal
>>>
>>>> + ref_rqst = (domains == XE_FORCEWAKE_ALL) ? fw-
>>>> >initialized_domains : domains;
>>>> spin_lock_irqsave(&fw->lock, flags);
>>>> - for_each_fw_domain_masked(domain, domains, fw, tmp) {
>>>> + for_each_fw_domain_masked(domain, ref_rqst, fw, tmp) {
>>>> if (!domain->ref++) {
>>>> - woken |= BIT(domain->id);
>>>> + awake_rqst |= BIT(domain->id);
>>>> domain_wake(gt, domain);
>>>> }
>>>> + ref_incr |= BIT(domain->id);
>>>> }
>>>> - for_each_fw_domain_masked(domain, woken, fw, tmp) {
>>>> - ret |= domain_wake_wait(gt, domain);
>>>> + for_each_fw_domain_masked(domain, awake_rqst, fw, tmp) {
>>>> + if (domain_wake_wait(gt, domain) == 0) {
>>>> + fw->awake_domains |= BIT(domain->id);
>>>> + } else {
>>>> + awake_failed |= BIT(domain->id);
>>>> + --domain->ref;
>>>> + }
>>>> }
>>>> - fw->awake_domains |= woken;
>>>> + ref_incr &= ~awake_failed;
>>>> spin_unlock_irqrestore(&fw->lock, flags);
>>>> - return ret;
>>>> + xe_gt_WARN(gt, awake_failed, "Forcewake domain%s %#x failed to
>>>> acknowledge awake request\n",
>>>> + str_plural(hweight_long(awake_failed)), awake_failed);
>>>> +
>>>> + return (ref_incr == fw->initialized_domains) ? ref_incr |
>>>> XE_FORCEWAKE_ALL : ref_incr;
>
> How about we simply return ref_incr at this point? Then, in patch 2,
> given that we have a helper function available, we can validate ref_incr
> against fw->initialized_domains, particularly for XE_FORCEWAKE_ALL,
> within that helper function.
That approach is perfectly fine as well. The reasoning for this method
was to maintain the independence of the API/helper from the fw.
>
> Regards,
> Badal
>
>>>> }
>>>> int xe_force_wake_put(struct xe_force_wake *fw,
>>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/
>>>> xe/ xe_force_wake.h
>>>> index de720881a300..eb638128952d 100644
>>>> --- a/drivers/gpu/drm/xe/xe_force_wake.h
>>>> +++ b/drivers/gpu/drm/xe/xe_force_wake.h
>>>> @@ -15,8 +15,8 @@ void xe_force_wake_init_gt(struct xe_gt *gt,
>>>> struct xe_force_wake *fw);
>>>> void xe_force_wake_init_engines(struct xe_gt *gt,
>>>> struct xe_force_wake *fw);
>>>> -int xe_force_wake_get(struct xe_force_wake *fw,
>>>> - enum xe_force_wake_domains domains);
>>>> +unsigned int xe_force_wake_get(struct xe_force_wake *fw,
>>>> + enum xe_force_wake_domains domains);
>>>> int xe_force_wake_put(struct xe_force_wake *fw,
>>>> enum xe_force_wake_domains domains);
>>>> diff --git a/drivers/gpu/drm/xe/xe_force_wake_types.h b/drivers/gpu/
>>>> drm/xe/xe_force_wake_types.h
>>>> index fde17dc3d01e..899fbbcb3ea9 100644
>>>> --- a/drivers/gpu/drm/xe/xe_force_wake_types.h
>>>> +++ b/drivers/gpu/drm/xe/xe_force_wake_types.h
>>>> @@ -48,7 +48,7 @@ enum xe_force_wake_domains {
>>>> XE_FW_MEDIA_VEBOX2 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX2),
>>>> XE_FW_MEDIA_VEBOX3 = BIT(XE_FW_DOMAIN_ID_MEDIA_VEBOX3),
>>>> XE_FW_GSC = BIT(XE_FW_DOMAIN_ID_GSC),
>>>> - XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT) - 1
>>>> + XE_FORCEWAKE_ALL = BIT(XE_FW_DOMAIN_ID_COUNT)
>>>> };
>>>> /**
>>>
>>
>
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v6 05/25] drm/xe/device: Update handling of xe_force_wake_get return
2024-10-04 7:18 ` Nilawar, Badal
@ 2024-10-07 3:40 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 54+ messages in thread
From: Ghimiray, Himal Prasad @ 2024-10-07 3:40 UTC (permalink / raw)
To: Nilawar, Badal, intel-xe; +Cc: Rodrigo Vivi
On 04-10-2024 12:48, Nilawar, Badal wrote:
>
>
> On 30-09-2024 11:01, Himal Prasad Ghimiray wrote:
>> With xe_force_wake_get() now returning the refcount-incremented domain
>> mask, the return value will be 0 for single domains (excluding
>> XE_FORCEWAKE_ALL) in the event of a failure. Modify the return handling
>> of xe_force_wake_get() accordingly and pass the return value as input to
>> xe_force_wake_put().
>
> Now with changes in patch 3, return value 0 indicates failure for
> XE_FORCEWAKE_ALL, i.e. no domains awake, as well. Please rephrase the
> commit message accordingly.
Sure. Will update this.
>
> Regards,
> Badal
>
>>
>> v3
>> - return xe_wakeref_t instead of int in xe_force_wake_get()
>> - xe_force_wake_put() error doesn't need to be escalated/considered as
>> probing error. It internally WARNS on domain ack failure.
>>
>> v5
>> - return unsigned int xe_force_wake_get()
>>
>> Cc: Badal Nilawar <badal.nilawar@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_device.c | 25 ++++++++++++++-----------
>> 1 file changed, 14 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/
>> xe_device.c
>> index 8e9b551c7033..e885edacf39f 100644
>> --- a/drivers/gpu/drm/xe/xe_device.c
>> +++ b/drivers/gpu/drm/xe/xe_device.c
>> @@ -600,8 +600,8 @@ int xe_device_probe_early(struct xe_device *xe)
>> static int probe_has_flat_ccs(struct xe_device *xe)
>> {
>> struct xe_gt *gt;
>> + unsigned int fw_ref;
>> u32 reg;
>> - int err;
>> /* Always enabled/disabled, no runtime check to do */
>> if (GRAPHICS_VER(xe) < 20 || !xe->info.has_flat_ccs)
>> @@ -609,9 +609,9 @@ static int probe_has_flat_ccs(struct xe_device *xe)
>> gt = xe_root_mmio_gt(xe);
>> - err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
>> - if (err)
>> - return err;
>> + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
>> + if (!fw_ref)
>> + return -ETIMEDOUT;
>> reg = xe_gt_mcr_unicast_read_any(gt,
>> XE2_FLAT_CCS_BASE_RANGE_LOWER);
>> xe->info.has_flat_ccs = (reg & XE2_FLAT_CCS_ENABLE);
>> @@ -620,7 +620,8 @@ static int probe_has_flat_ccs(struct xe_device *xe)
>> drm_dbg(&xe->drm,
>> "Flat CCS has been disabled in bios, May lead to
>> performance impact");
>> - return xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
>> + return 0;
>> }
>> int xe_device_probe(struct xe_device *xe)
>> @@ -871,6 +872,7 @@ void xe_device_wmb(struct xe_device *xe)
>> void xe_device_td_flush(struct xe_device *xe)
>> {
>> struct xe_gt *gt;
>> + unsigned int fw_ref;
>> u8 id;
>> if (!IS_DGFX(xe) || GRAPHICS_VER(xe) < 20)
>> @@ -885,7 +887,8 @@ void xe_device_td_flush(struct xe_device *xe)
>> if (xe_gt_is_media_type(gt))
>> continue;
>> - if (xe_force_wake_get(gt_to_fw(gt), XE_FW_GT))
>> + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
>> + if (!fw_ref)
>> return;
>> xe_mmio_write32(>->mmio, XE2_TDF_CTRL,
>> TRANSIENT_FLUSH_REQUEST);
>> @@ -900,22 +903,22 @@ void xe_device_td_flush(struct xe_device *xe)
>> 150, NULL, false))
>> xe_gt_err_once(gt, "TD flush timeout\n");
>> - xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
>> }
>> }
>> void xe_device_l2_flush(struct xe_device *xe)
>> {
>> struct xe_gt *gt;
>> - int err;
>> + uint fw_ref;
>> gt = xe_root_mmio_gt(xe);
>> if (!XE_WA(gt, 16023588340))
>> return;
>> - err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
>> - if (err)
>> + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
>> + if (!fw_ref)
>> return;
>> spin_lock(>->global_invl_lock);
>> @@ -925,7 +928,7 @@ void xe_device_l2_flush(struct xe_device *xe)
>> xe_gt_err_once(gt, "Global invalidation timeout\n");
>> spin_unlock(>->global_invl_lock);
>> - xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
>> }
>> u32 xe_device_ccs_bytes(struct xe_device *xe, u64 size)
>
^ permalink raw reply [flat|nested] 54+ messages in thread
end of thread, other threads:[~2024-10-07 3:43 UTC | newest]
Thread overview: 54+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-30 5:31 [PATCH v6 00/25] Fix xe_force_wake_get() failure handling Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 01/25] drm/xe: Add member initialized_domains to xe_force_wake() Himal Prasad Ghimiray
2024-09-30 19:51 ` Michal Wajdeczko
2024-10-01 5:03 ` Ghimiray, Himal Prasad
2024-09-30 5:31 ` [PATCH v6 02/25] drm/xe/forcewake: Add a helper xe_force_wake_ref_has_domain() Himal Prasad Ghimiray
2024-09-30 20:04 ` Michal Wajdeczko
2024-10-01 5:06 ` Ghimiray, Himal Prasad
2024-09-30 5:31 ` [PATCH v6 03/25] drm/xe: Error handling in xe_force_wake_get() Himal Prasad Ghimiray
2024-10-03 12:23 ` Nilawar, Badal
2024-10-03 16:10 ` Ghimiray, Himal Prasad
2024-10-04 7:40 ` Nilawar, Badal
2024-10-07 3:14 ` Ghimiray, Himal Prasad
2024-09-30 5:31 ` [PATCH v6 04/25] drm/xe: Modify xe_force_wake_put to handle _get returned mask Himal Prasad Ghimiray
2024-09-30 20:13 ` Michal Wajdeczko
2024-09-30 20:15 ` Michal Wajdeczko
2024-10-01 5:11 ` Ghimiray, Himal Prasad
2024-10-04 3:21 ` Nilawar, Badal
2024-09-30 22:13 ` Matt Roper
2024-10-01 5:31 ` Ghimiray, Himal Prasad
2024-09-30 5:31 ` [PATCH v6 05/25] drm/xe/device: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
2024-10-04 7:18 ` Nilawar, Badal
2024-10-07 3:40 ` Ghimiray, Himal Prasad
2024-09-30 5:31 ` [PATCH v6 06/25] drm/xe/hdcp: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 07/25] drm/xe/gsc: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 08/25] drm/xe/gt: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 09/25] drm/xe/xe_gt_idle: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 10/25] drm/xe/devcoredump: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 11/25] drm/xe/tests/mocs: Update xe_force_wake_get() return handling Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 12/25] drm/xe/mocs: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 13/25] drm/xe/xe_drm_client: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 14/25] drm/xe/xe_gt_debugfs: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 15/25] drm/xe/guc: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 16/25] drm/xe/huc: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 17/25] drm/xe/oa: Handle force_wake_get failure in xe_oa_stream_init() Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 18/25] drm/xe/pat: Update handling of xe_force_wake_get return Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 19/25] drm/xe/gt_tlb_invalidation_ggtt: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 20/25] drm/xe/xe_reg_sr: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 21/25] drm/xe/query: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 22/25] drm/xe/vram: " Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 23/25] drm/xe: forcewake debugfs open fails on xe_forcewake_get failure Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 24/25] drm/xe: Ensure __must_check for xe_force_wake_get() return Himal Prasad Ghimiray
2024-09-30 5:31 ` [PATCH v6 25/25] drm/xe: Change return type to void for xe_force_wake_put Himal Prasad Ghimiray
2024-09-30 6:02 ` ✓ CI.Patch_applied: success for Fix xe_force_wake_get() failure handling (rev6) Patchwork
2024-09-30 6:03 ` ✓ CI.checkpatch: " Patchwork
2024-09-30 6:03 ` ✗ CI.KUnit: failure " Patchwork
2024-09-30 7:35 ` Ghimiray, Himal Prasad
2024-09-30 20:55 ` ✓ CI.Patch_applied: success for Fix xe_force_wake_get() failure handling (rev7) Patchwork
2024-09-30 20:55 ` ✓ CI.checkpatch: " Patchwork
2024-09-30 20:57 ` ✓ CI.KUnit: " Patchwork
2024-09-30 21:08 ` ✓ CI.Build: " Patchwork
2024-09-30 21:10 ` ✗ CI.Hooks: failure " Patchwork
2024-09-30 21:12 ` ✓ CI.checksparse: success " Patchwork
2024-09-30 21:39 ` ✗ CI.BAT: failure " Patchwork
2024-10-01 6:20 ` ✗ CI.FULL: " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox