Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole
  2024-07-11 17:11 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
@ 2024-07-11 17:11 ` Rodrigo Vivi
  2024-07-11 20:00   ` Michal Wajdeczko
  0 siblings, 1 reply; 35+ messages in thread
From: Rodrigo Vivi @ 2024-07-11 17:11 UTC (permalink / raw)
  To: intel-xe; +Cc: Rodrigo Vivi, Michal Wajdeczko

Introduce a new xe_ggtt_largest_hole helper that attends the SRIOV
demand and continue with the goal of limiting drm_mm access to xe_ggtt.

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c               | 35 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++------------
 3 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 67337bfeb81e..dbaf1ce87fb4 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -584,6 +584,41 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
 }
 
+/**
+ * xe_ggtt_largest_hole - Largest GGTT hole
+ * @ggtt: the &xe_ggtt that will be inspected
+ * @alignment: mininum alignment
+ * @spare: If not NULL: in: desired memory size to be spared / out: Adjusted possible spare
+ *
+ * Return: size of the largest continuous GGTT region
+ */
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
+{
+	const struct drm_mm *mm = &ggtt->mm;
+	const struct drm_mm_node *entry;
+	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
+	u64 hole_start, hole_end, hole_size;
+	u64 max_hole = 0;
+
+	mutex_lock(&ggtt->lock);
+
+	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
+		hole_start = max(hole_start, hole_min_start);
+		hole_start = ALIGN(hole_start, alignment);
+		hole_end = ALIGN_DOWN(hole_end, alignment);
+		if (hole_start >= hole_end)
+			continue;
+		hole_size = hole_end - hole_start;
+		if (spare)
+			*spare -= min3(*spare, hole_size, max_hole);
+		max_hole = max(max_hole, hole_size);
+	}
+
+	mutex_unlock(&ggtt->lock);
+
+	return max_hole;
+}
+
 #ifdef CONFIG_PCI_IOV
 static u64 xe_encode_vfid_pte(u16 vfid)
 {
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index f816b3c0732b..31060fe7644b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -29,6 +29,7 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 			 u64 start, u64 end);
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
 
 int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
 
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index efaf188290ea..1d17c34fe5a4 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -590,30 +590,11 @@ int xe_gt_sriov_pf_config_bulk_set_ggtt(struct xe_gt *gt, unsigned int vfid,
 static u64 pf_get_max_ggtt(struct xe_gt *gt)
 {
 	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
-	const struct drm_mm *mm = &ggtt->mm;
-	const struct drm_mm_node *entry;
 	u64 alignment = pf_get_ggtt_alignment(gt);
 	u64 spare = pf_get_spare_ggtt(gt);
-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
-	u64 hole_start, hole_end, hole_size;
-	u64 max_hole = 0;
-
-	mutex_lock(&ggtt->lock);
-
-	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
-		hole_start = max(hole_start, hole_min_start);
-		hole_start = ALIGN(hole_start, alignment);
-		hole_end = ALIGN_DOWN(hole_end, alignment);
-		if (hole_start >= hole_end)
-			continue;
-		hole_size = hole_end - hole_start;
-		xe_gt_sriov_dbg_verbose(gt, "HOLE start %llx size %lluK\n",
-					hole_start, hole_size / SZ_1K);
-		spare -= min3(spare, hole_size, max_hole);
-		max_hole = max(max_hole, hole_size);
-	}
+	u64 max_hole;
 
-	mutex_unlock(&ggtt->lock);
+	max_hole = xe_ggtt_largest_hole(ggtt, alignment, &spare);
 
 	xe_gt_sriov_dbg_verbose(gt, "HOLE max %lluK reserved %lluK\n",
 				max_hole / SZ_1K, spare / SZ_1K);
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* Re: [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole
  2024-07-11 17:11 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
@ 2024-07-11 20:00   ` Michal Wajdeczko
  2024-08-09 21:33     ` Rodrigo Vivi
  0 siblings, 1 reply; 35+ messages in thread
From: Michal Wajdeczko @ 2024-07-11 20:00 UTC (permalink / raw)
  To: Rodrigo Vivi, intel-xe



On 11.07.2024 19:11, Rodrigo Vivi wrote:
> Introduce a new xe_ggtt_largest_hole helper that attends the SRIOV
> demand and continue with the goal of limiting drm_mm access to xe_ggtt.
> 
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_ggtt.c               | 35 ++++++++++++++++++++++
>  drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
>  drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++------------
>  3 files changed, 38 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index 67337bfeb81e..dbaf1ce87fb4 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -584,6 +584,41 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
>  			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
>  }
>  
> +/**
> + * xe_ggtt_largest_hole - Largest GGTT hole
> + * @ggtt: the &xe_ggtt that will be inspected
> + * @alignment: mininum alignment

typo: minimum

> + * @spare: If not NULL: in: desired memory size to be spared / out: Adjusted possible spare
> + *
> + * Return: size of the largest continuous GGTT region
> + */
> +u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
> +{
> +	const struct drm_mm *mm = &ggtt->mm;
> +	const struct drm_mm_node *entry;
> +	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));

this is likely not needed any more as xe_ggtt is always above WOPCM
(unlikely to previous driver ;)

> +	u64 hole_start, hole_end, hole_size;
> +	u64 max_hole = 0;
> +
> +	mutex_lock(&ggtt->lock);
> +
> +	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
> +		hole_start = max(hole_start, hole_min_start);
> +		hole_start = ALIGN(hole_start, alignment);
> +		hole_end = ALIGN_DOWN(hole_end, alignment);
> +		if (hole_start >= hole_end)
> +			continue;
> +		hole_size = hole_end - hole_start;
> +		if (spare)
> +			*spare -= min3(*spare, hole_size, max_hole);
> +		max_hole = max(max_hole, hole_size);
> +	}
> +
> +	mutex_unlock(&ggtt->lock);
> +
> +	return max_hole;
> +}
> +
>  #ifdef CONFIG_PCI_IOV
>  static u64 xe_encode_vfid_pte(u16 vfid)
>  {
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
> index f816b3c0732b..31060fe7644b 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.h
> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
> @@ -29,6 +29,7 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
>  int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
>  			 u64 start, u64 end);
>  void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
> +u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
>  
>  int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
>  
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> index efaf188290ea..1d17c34fe5a4 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> @@ -590,30 +590,11 @@ int xe_gt_sriov_pf_config_bulk_set_ggtt(struct xe_gt *gt, unsigned int vfid,
>  static u64 pf_get_max_ggtt(struct xe_gt *gt)
>  {
>  	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
> -	const struct drm_mm *mm = &ggtt->mm;
> -	const struct drm_mm_node *entry;
>  	u64 alignment = pf_get_ggtt_alignment(gt);
>  	u64 spare = pf_get_spare_ggtt(gt);
> -	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
> -	u64 hole_start, hole_end, hole_size;
> -	u64 max_hole = 0;
> -
> -	mutex_lock(&ggtt->lock);
> -
> -	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
> -		hole_start = max(hole_start, hole_min_start);
> -		hole_start = ALIGN(hole_start, alignment);
> -		hole_end = ALIGN_DOWN(hole_end, alignment);
> -		if (hole_start >= hole_end)
> -			continue;
> -		hole_size = hole_end - hole_start;
> -		xe_gt_sriov_dbg_verbose(gt, "HOLE start %llx size %lluK\n",
> -					hole_start, hole_size / SZ_1K);
> -		spare -= min3(spare, hole_size, max_hole);
> -		max_hole = max(max_hole, hole_size);
> -	}
> +	u64 max_hole;
>  
> -	mutex_unlock(&ggtt->lock);
> +	max_hole = xe_ggtt_largest_hole(ggtt, alignment, &spare);
>  
>  	xe_gt_sriov_dbg_verbose(gt, "HOLE max %lluK reserved %lluK\n",
>  				max_hole / SZ_1K, spare / SZ_1K);

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole
  2024-07-11 20:00   ` Michal Wajdeczko
@ 2024-08-09 21:33     ` Rodrigo Vivi
  0 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-09 21:33 UTC (permalink / raw)
  To: Michal Wajdeczko; +Cc: intel-xe

On Thu, Jul 11, 2024 at 10:00:51PM +0200, Michal Wajdeczko wrote:
> 
> 
> On 11.07.2024 19:11, Rodrigo Vivi wrote:
> > Introduce a new xe_ggtt_largest_hole helper that attends the SRIOV
> > demand and continue with the goal of limiting drm_mm access to xe_ggtt.
> > 
> > Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> >  drivers/gpu/drm/xe/xe_ggtt.c               | 35 ++++++++++++++++++++++
> >  drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
> >  drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++------------
> >  3 files changed, 38 insertions(+), 21 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> > index 67337bfeb81e..dbaf1ce87fb4 100644
> > --- a/drivers/gpu/drm/xe/xe_ggtt.c
> > +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> > @@ -584,6 +584,41 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
> >  			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
> >  }
> >  
> > +/**
> > + * xe_ggtt_largest_hole - Largest GGTT hole
> > + * @ggtt: the &xe_ggtt that will be inspected
> > + * @alignment: mininum alignment
> 
> typo: minimum

thanks, addressed this...

> 
> > + * @spare: If not NULL: in: desired memory size to be spared / out: Adjusted possible spare
> > + *
> > + * Return: size of the largest continuous GGTT region
> > + */
> > +u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
> > +{
> > +	const struct drm_mm *mm = &ggtt->mm;
> > +	const struct drm_mm_node *entry;
> > +	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
> 
> this is likely not needed any more as xe_ggtt is always above WOPCM
> (unlikely to previous driver ;)

hmmm... probably... but can we leave this to a follow up after we
get this series merged?
I'm trying to not modify the current behavior more then it is already
doing...

> 
> > +	u64 hole_start, hole_end, hole_size;
> > +	u64 max_hole = 0;
> > +
> > +	mutex_lock(&ggtt->lock);
> > +
> > +	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
> > +		hole_start = max(hole_start, hole_min_start);
> > +		hole_start = ALIGN(hole_start, alignment);
> > +		hole_end = ALIGN_DOWN(hole_end, alignment);
> > +		if (hole_start >= hole_end)
> > +			continue;
> > +		hole_size = hole_end - hole_start;
> > +		if (spare)
> > +			*spare -= min3(*spare, hole_size, max_hole);
> > +		max_hole = max(max_hole, hole_size);
> > +	}
> > +
> > +	mutex_unlock(&ggtt->lock);
> > +
> > +	return max_hole;
> > +}
> > +
> >  #ifdef CONFIG_PCI_IOV
> >  static u64 xe_encode_vfid_pte(u16 vfid)
> >  {
> > diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
> > index f816b3c0732b..31060fe7644b 100644
> > --- a/drivers/gpu/drm/xe/xe_ggtt.h
> > +++ b/drivers/gpu/drm/xe/xe_ggtt.h
> > @@ -29,6 +29,7 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
> >  int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
> >  			 u64 start, u64 end);
> >  void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
> > +u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
> >  
> >  int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
> >  
> > diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> > index efaf188290ea..1d17c34fe5a4 100644
> > --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> > +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> > @@ -590,30 +590,11 @@ int xe_gt_sriov_pf_config_bulk_set_ggtt(struct xe_gt *gt, unsigned int vfid,
> >  static u64 pf_get_max_ggtt(struct xe_gt *gt)
> >  {
> >  	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
> > -	const struct drm_mm *mm = &ggtt->mm;
> > -	const struct drm_mm_node *entry;
> >  	u64 alignment = pf_get_ggtt_alignment(gt);
> >  	u64 spare = pf_get_spare_ggtt(gt);
> > -	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
> > -	u64 hole_start, hole_end, hole_size;
> > -	u64 max_hole = 0;
> > -
> > -	mutex_lock(&ggtt->lock);
> > -
> > -	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
> > -		hole_start = max(hole_start, hole_min_start);
> > -		hole_start = ALIGN(hole_start, alignment);
> > -		hole_end = ALIGN_DOWN(hole_end, alignment);
> > -		if (hole_start >= hole_end)
> > -			continue;
> > -		hole_size = hole_end - hole_start;
> > -		xe_gt_sriov_dbg_verbose(gt, "HOLE start %llx size %lluK\n",
> > -					hole_start, hole_size / SZ_1K);
> > -		spare -= min3(spare, hole_size, max_hole);
> > -		max_hole = max(max_hole, hole_size);
> > -	}
> > +	u64 max_hole;
> >  
> > -	mutex_unlock(&ggtt->lock);
> > +	max_hole = xe_ggtt_largest_hole(ggtt, alignment, &spare);
> >  
> >  	xe_gt_sriov_dbg_verbose(gt, "HOLE max %lluK reserved %lluK\n",
> >  				max_hole / SZ_1K, spare / SZ_1K);

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole
  2024-08-15 22:07 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
@ 2024-08-15 22:07 ` Rodrigo Vivi
  0 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-15 22:07 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Michal Wajdeczko

Introduce a new xe_ggtt_largest_hole helper that attends the SRIOV
demand and continue with the goal of limiting drm_mm access to xe_ggtt.

v2: Fix a typo (Michal)

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c               | 35 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++------------
 3 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 7c8bbaa30fca..2d055f489879 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -584,6 +584,41 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
 }
 
+/**
+ * xe_ggtt_largest_hole - Largest GGTT hole
+ * @ggtt: the &xe_ggtt that will be inspected
+ * @alignment: minimum alignment
+ * @spare: If not NULL: in: desired memory size to be spared / out: Adjusted possible spare
+ *
+ * Return: size of the largest continuous GGTT region
+ */
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
+{
+	const struct drm_mm *mm = &ggtt->mm;
+	const struct drm_mm_node *entry;
+	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
+	u64 hole_start, hole_end, hole_size;
+	u64 max_hole = 0;
+
+	mutex_lock(&ggtt->lock);
+
+	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
+		hole_start = max(hole_start, hole_min_start);
+		hole_start = ALIGN(hole_start, alignment);
+		hole_end = ALIGN_DOWN(hole_end, alignment);
+		if (hole_start >= hole_end)
+			continue;
+		hole_size = hole_end - hole_start;
+		if (spare)
+			*spare -= min3(*spare, hole_size, max_hole);
+		max_hole = max(max_hole, hole_size);
+	}
+
+	mutex_unlock(&ggtt->lock);
+
+	return max_hole;
+}
+
 #ifdef CONFIG_PCI_IOV
 static u64 xe_encode_vfid_pte(u16 vfid)
 {
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index f816b3c0732b..31060fe7644b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -29,6 +29,7 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 			 u64 start, u64 end);
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
 
 int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
 
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 947750d97d7d..1852ff45bea4 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -590,30 +590,11 @@ int xe_gt_sriov_pf_config_bulk_set_ggtt(struct xe_gt *gt, unsigned int vfid,
 static u64 pf_get_max_ggtt(struct xe_gt *gt)
 {
 	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
-	const struct drm_mm *mm = &ggtt->mm;
-	const struct drm_mm_node *entry;
 	u64 alignment = pf_get_ggtt_alignment(gt);
 	u64 spare = pf_get_spare_ggtt(gt);
-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
-	u64 hole_start, hole_end, hole_size;
-	u64 max_hole = 0;
-
-	mutex_lock(&ggtt->lock);
-
-	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
-		hole_start = max(hole_start, hole_min_start);
-		hole_start = ALIGN(hole_start, alignment);
-		hole_end = ALIGN_DOWN(hole_end, alignment);
-		if (hole_start >= hole_end)
-			continue;
-		hole_size = hole_end - hole_start;
-		xe_gt_sriov_dbg_verbose(gt, "HOLE start %llx size %lluK\n",
-					hole_start, hole_size / SZ_1K);
-		spare -= min3(spare, hole_size, max_hole);
-		max_hole = max(max_hole, hole_size);
-	}
+	u64 max_hole;
 
-	mutex_unlock(&ggtt->lock);
+	max_hole = xe_ggtt_largest_hole(ggtt, alignment, &spare);
 
 	xe_gt_sriov_dbg_verbose(gt, "HOLE max %lluK reserved %lluK\n",
 				max_hole / SZ_1K, spare / SZ_1K);
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk
@ 2024-08-16 15:02 Rodrigo Vivi
  2024-08-16 15:02 ` [PATCH 02/12] drm/xe: Introduce GGTT documentation Rodrigo Vivi
                   ` (19 more replies)
  0 siblings, 20 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Himal Prasad Ghimiray

Apparently this was only useful when enabling ggtt support
for the very first time and never used again.
It is also not useful now that we have the ggtt_dump available
through debugfs.

Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c | 20 --------------------
 drivers/gpu/drm/xe/xe_ggtt.h |  1 -
 2 files changed, 21 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 0cdbc1296e88..add14f3dea1f 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -314,26 +314,6 @@ static void xe_ggtt_invalidate(struct xe_ggtt *ggtt)
 	ggtt_invalidate_gt_tlb(ggtt->tile->media_gt);
 }
 
-void xe_ggtt_printk(struct xe_ggtt *ggtt, const char *prefix)
-{
-	u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[XE_CACHE_WB];
-	u64 addr, scratch_pte;
-
-	scratch_pte = ggtt->pt_ops->pte_encode_bo(ggtt->scratch, 0, pat_index);
-
-	printk("%sGlobal GTT:", prefix);
-	for (addr = 0; addr < ggtt->size; addr += XE_PAGE_SIZE) {
-		unsigned int i = addr / XE_PAGE_SIZE;
-
-		xe_tile_assert(ggtt->tile, addr <= U32_MAX);
-		if (ggtt->gsm[i] == scratch_pte)
-			continue;
-
-		printk("%s    ggtt[0x%08x] = 0x%016llx",
-		       prefix, (u32)addr, ggtt->gsm[i]);
-	}
-}
-
 static void xe_ggtt_dump_node(struct xe_ggtt *ggtt,
 			      const struct drm_mm_node *node, const char *description)
 {
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 6a96fd54bf60..2546bab97507 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -12,7 +12,6 @@ struct drm_printer;
 
 int xe_ggtt_init_early(struct xe_ggtt *ggtt);
 int xe_ggtt_init(struct xe_ggtt *ggtt);
-void xe_ggtt_printk(struct xe_ggtt *ggtt, const char *prefix);
 
 int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct drm_mm_node *node);
 void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct drm_mm_node *node);
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 02/12] drm/xe: Introduce GGTT documentation
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:13   ` Lucas De Marchi
  2024-08-16 15:02 ` [PATCH 03/12] drm/xe: Remove unnecessary drm_mm.h includes Rodrigo Vivi
                   ` (18 subsequent siblings)
  19 siblings, 1 reply; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe
  Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Matthew Brost,
	Michal Wajdeczko, Himal Prasad Ghimiray

Document xe_ggtt and ensure it is part of the built kernel docs.

v2: - Accepted all Michal's suggestions
    - Rebased on top of new set_pte per platform/wa function pointer
v3: - Typos and other acronym fixes (Michal)

Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com> #v1
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 Documentation/gpu/xe/xe_mm.rst     |  15 ++++
 drivers/gpu/drm/xe/xe_ggtt.c       | 136 +++++++++++++++++++++++------
 drivers/gpu/drm/xe/xe_ggtt_types.h |  34 ++++++--
 3 files changed, 150 insertions(+), 35 deletions(-)

diff --git a/Documentation/gpu/xe/xe_mm.rst b/Documentation/gpu/xe/xe_mm.rst
index 6c8fd8b4a466..95864a4502dd 100644
--- a/Documentation/gpu/xe/xe_mm.rst
+++ b/Documentation/gpu/xe/xe_mm.rst
@@ -7,6 +7,21 @@ Memory Management
 .. kernel-doc:: drivers/gpu/drm/xe/xe_bo_doc.h
    :doc: Buffer Objects (BO)
 
+GGTT
+====
+
+.. kernel-doc:: drivers/gpu/drm/xe/xe_ggtt.c
+   :doc: Global Graphics Translation Table (GGTT)
+
+GGTT Internal API
+-----------------
+
+.. kernel-doc:: drivers/gpu/drm/xe/xe_ggtt_types.h
+   :internal:
+
+.. kernel-doc:: drivers/gpu/drm/xe/xe_ggtt.c
+   :internal:
+
 Pagetable building
 ==================
 
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index add14f3dea1f..dd5cd0df705c 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -30,6 +30,39 @@
 #include "xe_wa.h"
 #include "xe_wopcm.h"
 
+/**
+ * DOC: Global Graphics Translation Table (GGTT)
+ *
+ * Xe GGTT implements the support for a Global Virtual Address space that is used
+ * for resources that are accessible to privileged (i.e. kernel-mode) processes,
+ * and not tied to a specific user-level process. For example, the Graphics
+ * micro-Controller (GuC) and Display Engine (if present) utilize this Global
+ * address space.
+ *
+ * The Global GTT (GGTT) translates from the Global virtual address to a physical
+ * address that can be accessed by HW. The GGTT is a flat, single-level table.
+ *
+ * Xe implements a simplified version of the GGTT specifically managing only a
+ * certain range of it that goes from the Write Once Protected Content Memory (WOPCM)
+ * Layout to a predefined GUC_GGTT_TOP. This approach avoids complications related to
+ * the GuC (Graphics Microcontroller) hardware limitations. The GuC address space
+ * is limited on both ends of the GGTT, because the GuC shim HW redirects
+ * accesses to those addresses to other HW areas instead of going through the
+ * GGTT. On the bottom end, the GuC can't access offsets below the WOPCM size,
+ * while on the top side the limit is fixed at GUC_GGTT_TOP. To keep things
+ * simple, instead of checking each object to see if they are accessed by GuC or
+ * not, we just exclude those areas from the allocator. Additionally, to simplify
+ * the driver load, we use the maximum WOPCM size in this logic instead of the
+ * programmed one, so we don't need to wait until the actual size to be
+ * programmed is determined (which requires FW fetch) before initializing the
+ * GGTT. These simplifications might waste space in the GGTT (about 20-25 MBs
+ * depending on the platform) but we can live with this. Another benefit of this
+ * is the GuC bootrom can't access anything below the WOPCM max size so anything
+ * the bootrom needs to access (e.g. a RSA key) needs to be placed in the GGTT
+ * above the WOPCM max size. Starting the GGTT allocations above the WOPCM max
+ * give us the correct placement for free.
+ */
+
 static u64 xelp_ggtt_pte_encode_bo(struct xe_bo *bo, u64 bo_offset,
 				   u16 pat_index)
 {
@@ -164,12 +197,16 @@ static const struct xe_ggtt_pt_ops xelpg_pt_wa_ops = {
 	.ggtt_set_pte = xe_ggtt_set_pte_and_flush,
 };
 
-/*
- * Early GGTT initialization, which allows to create new mappings usable by the
- * GuC.
- * Mappings are not usable by the HW engines, as it doesn't have scratch /
+/**
+ * xe_ggtt_init_early - Early GGTT initialization
+ * @ggtt: the &xe_ggtt to be initialized
+ *
+ * It allows to create new mappings usable by the GuC.
+ * Mappings are not usable by the HW engines, as it doesn't have scratch nor
  * initial clear done to it yet. That will happen in the regular, non-early
- * GGTT init.
+ * GGTT initialization.
+ *
+ * Return: 0 on success or a negative error code on failure.
  */
 int xe_ggtt_init_early(struct xe_ggtt *ggtt)
 {
@@ -194,29 +231,6 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
 	if (IS_DGFX(xe) && xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
 		ggtt->flags |= XE_GGTT_FLAGS_64K;
 
-	/*
-	 * 8B per entry, each points to a 4KB page.
-	 *
-	 * The GuC address space is limited on both ends of the GGTT, because
-	 * the GuC shim HW redirects accesses to those addresses to other HW
-	 * areas instead of going through the GGTT. On the bottom end, the GuC
-	 * can't access offsets below the WOPCM size, while on the top side the
-	 * limit is fixed at GUC_GGTT_TOP. To keep things simple, instead of
-	 * checking each object to see if they are accessed by GuC or not, we
-	 * just exclude those areas from the allocator. Additionally, to
-	 * simplify the driver load, we use the maximum WOPCM size in this logic
-	 * instead of the programmed one, so we don't need to wait until the
-	 * actual size to be programmed is determined (which requires FW fetch)
-	 * before initializing the GGTT. These simplifications might waste space
-	 * in the GGTT (about 20-25 MBs depending on the platform) but we can
-	 * live with this.
-	 *
-	 * Another benifit of this is the GuC bootrom can't access anything
-	 * below the WOPCM max size so anything the bootom needs to access (e.g.
-	 * a RSA key) needs to be placed in the GGTT above the WOPCM max size.
-	 * Starting the GGTT allocations above the WOPCM max give us the correct
-	 * placement for free.
-	 */
 	if (ggtt->size > GUC_GGTT_TOP)
 		ggtt->size = GUC_GGTT_TOP;
 
@@ -262,6 +276,12 @@ static void xe_ggtt_initial_clear(struct xe_ggtt *ggtt)
 	mutex_unlock(&ggtt->lock);
 }
 
+/**
+ * xe_ggtt_init - Regular non-early GGTT initialization
+ * @ggtt: the &xe_ggtt to be initialized
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
 int xe_ggtt_init(struct xe_ggtt *ggtt)
 {
 	struct xe_device *xe = tile_to_xe(ggtt->tile);
@@ -382,6 +402,18 @@ void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct drm_mm_node *node)
 	mutex_unlock(&ggtt->lock);
 }
 
+/**
+ * xe_ggtt_insert_special_node_locked - Locked version to insert a &drm_mm_node into the GGTT
+ * @ggtt: the &xe_ggtt where node will be inserted
+ * @node: the &drm_mm_node to be inserted
+ * @size: size of the node
+ * @align: alignment constrain of the node
+ * @mm_flags: flags to control the node behavior
+ *
+ * To be used in cases where ggtt->lock is already taken.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
 int xe_ggtt_insert_special_node_locked(struct xe_ggtt *ggtt, struct drm_mm_node *node,
 				       u32 size, u32 align, u32 mm_flags)
 {
@@ -389,6 +421,15 @@ int xe_ggtt_insert_special_node_locked(struct xe_ggtt *ggtt, struct drm_mm_node
 					  mm_flags);
 }
 
+/**
+ * xe_ggtt_insert_special_node - Insert a &drm_mm_node into the GGTT
+ * @ggtt: the &xe_ggtt where node will be inserted
+ * @node: the &drm_mm_node to be inserted
+ * @size: size of the node
+ * @align: alignment constrain of the node
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
 int xe_ggtt_insert_special_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
 				u32 size, u32 align)
 {
@@ -402,6 +443,11 @@ int xe_ggtt_insert_special_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
 	return ret;
 }
 
+/**
+ * xe_ggtt_map_bo - Map the BO into GGTT
+ * @ggtt: the &xe_ggtt where node will be mapped
+ * @bo: the &xe_bo to be mapped
+ */
 void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 {
 	u16 cache_mode = bo->flags & XE_BO_FLAG_NEEDS_UC ? XE_CACHE_NONE : XE_CACHE_WB;
@@ -449,17 +495,39 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 	return err;
 }
 
+/**
+ * xe_ggtt_insert_bo_at - Insert BO at a specific GGTT space
+ * @ggtt: the &xe_ggtt where bo will be inserted
+ * @bo: the &xe_bo to be inserted
+ * @start: address where it will be inserted
+ * @end: end of the range where it will be inserted
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 			 u64 start, u64 end)
 {
 	return __xe_ggtt_insert_bo_at(ggtt, bo, start, end);
 }
 
+/**
+ * xe_ggtt_insert_bo - Insert BO into GGTT
+ * @ggtt: the &xe_ggtt where bo will be inserted
+ * @bo: the &xe_bo to be inserted
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
 int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 {
 	return __xe_ggtt_insert_bo_at(ggtt, bo, 0, U64_MAX);
 }
 
+/**
+ * xe_ggtt_remove_node - Remove a &drm_mm_node from the GGTT
+ * @ggtt: the &xe_ggtt where node will be removed
+ * @node: the &drm_mm_node to be removed
+ * @invalidate: if node needs invalidation upon removal
+ */
 void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
 			 bool invalidate)
 {
@@ -488,6 +556,11 @@ void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
 	drm_dev_exit(idx);
 }
 
+/**
+ * xe_ggtt_remove_bo - Remove a BO from the GGTT
+ * @ggtt: the &xe_ggtt where node will be removed
+ * @bo: the &xe_bo to be removed
+ */
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 {
 	if (XE_WARN_ON(!bo->ggtt_node.size))
@@ -544,6 +617,13 @@ void xe_ggtt_assign(struct xe_ggtt *ggtt, const struct drm_mm_node *node, u16 vf
 }
 #endif
 
+/**
+ * xe_ggtt_dump - Dump GGTT for debug
+ * @ggtt: the &xe_ggtt to be dumped
+ * @p: the &drm_mm_printer helper handle to be used to dump the information
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
 int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p)
 {
 	int err;
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index 2245d88d8f39..154de298a4e3 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -13,30 +13,50 @@
 struct xe_bo;
 struct xe_gt;
 
+/**
+ * struct xe_ggtt - Main GGTT struct
+ *
+ * In general, each tile can contains its own Global Graphics Translation Table
+ * (GGTT) instance.
+ */
 struct xe_ggtt {
+	/** @tile: Back pointer to tile where this GGTT belongs */
 	struct xe_tile *tile;
-
+	/** @size: Total size of this GGTT */
 	u64 size;
 
 #define XE_GGTT_FLAGS_64K BIT(0)
+	/**
+	 * @flags: Flags for this GGTT
+	 * Acceptable flags:
+	 * - %XE_GGTT_FLAGS_64K - if PTE size is 64K. Otherwise, regular is 4K.
+	 */
 	unsigned int flags;
-
+	/** @scratch: Internal object allocation used as a scratch page */
 	struct xe_bo *scratch;
-
+	/** @lock: Mutex lock to protect GGTT data */
 	struct mutex lock;
-
+	/**
+	 *  @gsm: The iomem pointer to the actual location of the translation
+	 * table located in the GSM for easy PTE manipulation
+	 */
 	u64 __iomem *gsm;
-
+	/** @pt_ops: Page Table operations per platform */
 	const struct xe_ggtt_pt_ops *pt_ops;
-
+	/** @mm: The memory manager used to manage individual GGTT allocations */
 	struct drm_mm mm;
-
 	/** @access_count: counts GGTT writes */
 	unsigned int access_count;
 };
 
+/**
+ * struct xe_ggtt_pt_ops - GGTT Page table operations
+ * Which can vary from platform to platform.
+ */
 struct xe_ggtt_pt_ops {
+	/** @pte_encode_bo: Encode PTE address for a given BO */
 	u64 (*pte_encode_bo)(struct xe_bo *bo, u64 bo_offset, u16 pat_index);
+	/** @ggtt_set_pte: Directly write into GGTT's PTE */
 	void (*ggtt_set_pte)(struct xe_ggtt *ggtt, u64 addr, u64 pte);
 };
 
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 03/12] drm/xe: Remove unnecessary drm_mm.h includes
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
  2024-08-16 15:02 ` [PATCH 02/12] drm/xe: Introduce GGTT documentation Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:02 ` [PATCH 04/12] drm/{i915, xe}: Avoid direct inspection of dpt_vma from outside dpt Rodrigo Vivi
                   ` (17 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Jonathan Cavitt

These includes are no longer necessary, and where appropriate
are replaced by the linux/types.h one.

Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_migrate.h        | 2 +-
 drivers/gpu/drm/xe/xe_res_cursor.h     | 1 -
 drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c | 1 -
 3 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_migrate.h b/drivers/gpu/drm/xe/xe_migrate.h
index 7929cc2425e8..0109866e398a 100644
--- a/drivers/gpu/drm/xe/xe_migrate.h
+++ b/drivers/gpu/drm/xe/xe_migrate.h
@@ -6,7 +6,7 @@
 #ifndef _XE_MIGRATE_
 #define _XE_MIGRATE_
 
-#include <drm/drm_mm.h>
+#include <linux/types.h>
 
 struct dma_fence;
 struct iosys_map;
diff --git a/drivers/gpu/drm/xe/xe_res_cursor.h b/drivers/gpu/drm/xe/xe_res_cursor.h
index 655af89b31a9..dca374b6521c 100644
--- a/drivers/gpu/drm/xe/xe_res_cursor.h
+++ b/drivers/gpu/drm/xe/xe_res_cursor.h
@@ -26,7 +26,6 @@
 
 #include <linux/scatterlist.h>
 
-#include <drm/drm_mm.h>
 #include <drm/ttm/ttm_placement.h>
 #include <drm/ttm/ttm_range_manager.h>
 #include <drm/ttm/ttm_resource.h>
diff --git a/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c b/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c
index f46fd2df84de..f7113cf6109d 100644
--- a/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c
@@ -5,7 +5,6 @@
  */
 
 #include <drm/drm_managed.h>
-#include <drm/drm_mm.h>
 
 #include <drm/ttm/ttm_device.h>
 #include <drm/ttm/ttm_placement.h>
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 04/12] drm/{i915, xe}: Avoid direct inspection of dpt_vma from outside dpt
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
  2024-08-16 15:02 ` [PATCH 02/12] drm/xe: Introduce GGTT documentation Rodrigo Vivi
  2024-08-16 15:02 ` [PATCH 03/12] drm/xe: Remove unnecessary drm_mm.h includes Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:02 ` [PATCH 05/12] drm/xe: Encapsulate drm_mm_node inside xe_ggtt_node Rodrigo Vivi
                   ` (16 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe
  Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Matthew Brost,
	Maarten Lankhorst, Juha-Pekka Heikkila, Jonathan Cavitt

DPT code is so dependent on i915 vma implementation and it is not
ported yet to Xe.

This patch limits inspection to DPT's VMA struct to intel_dpt
component only, so the Xe GGTT code can evolve.

Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dpt.c           | 4 ++++
 drivers/gpu/drm/i915/display/intel_dpt.h           | 3 +++
 drivers/gpu/drm/i915/display/skl_universal_plane.c | 3 ++-
 drivers/gpu/drm/xe/display/xe_fb_pin.c             | 9 +++++++--
 4 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dpt.c b/drivers/gpu/drm/i915/display/intel_dpt.c
index 73a1918e2537..3a6d99044828 100644
--- a/drivers/gpu/drm/i915/display/intel_dpt.c
+++ b/drivers/gpu/drm/i915/display/intel_dpt.c
@@ -317,3 +317,7 @@ void intel_dpt_destroy(struct i915_address_space *vm)
 	i915_vm_put(&dpt->vm);
 }
 
+u64 intel_dpt_offset(struct i915_vma *dpt_vma)
+{
+	return dpt_vma->node.start;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_dpt.h b/drivers/gpu/drm/i915/display/intel_dpt.h
index ff18a525bfbe..1f88b0ee17e7 100644
--- a/drivers/gpu/drm/i915/display/intel_dpt.h
+++ b/drivers/gpu/drm/i915/display/intel_dpt.h
@@ -6,6 +6,8 @@
 #ifndef __INTEL_DPT_H__
 #define __INTEL_DPT_H__
 
+#include <linux/types.h>
+
 struct drm_i915_private;
 
 struct i915_address_space;
@@ -20,5 +22,6 @@ void intel_dpt_suspend(struct drm_i915_private *i915);
 void intel_dpt_resume(struct drm_i915_private *i915);
 struct i915_address_space *
 intel_dpt_create(struct intel_framebuffer *fb);
+u64 intel_dpt_offset(struct i915_vma *dpt_vma);
 
 #endif /* __INTEL_DPT_H__ */
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index ba5a628b4757..1cf1d5c8b9dc 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -14,6 +14,7 @@
 #include "intel_de.h"
 #include "intel_display_irq.h"
 #include "intel_display_types.h"
+#include "intel_dpt.h"
 #include "intel_fb.h"
 #include "intel_fbc.h"
 #include "intel_frontbuffer.h"
@@ -1162,7 +1163,7 @@ static u32 skl_surf_address(const struct intel_plane_state *plane_state,
 		 * within the DPT is always 0.
 		 */
 		drm_WARN_ON(&i915->drm, plane_state->dpt_vma &&
-			    plane_state->dpt_vma->node.start);
+			    intel_dpt_offset(plane_state->dpt_vma));
 		drm_WARN_ON(&i915->drm, offset & 0x1fffff);
 		return offset >> 9;
 	} else {
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index d7db44e79eaf..42d431ff14e7 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -377,8 +377,8 @@ void intel_plane_unpin_fb(struct intel_plane_state *old_plane_state)
 }
 
 /*
- * For Xe introduce dummy intel_dpt_create which just return NULL and
- * intel_dpt_destroy which does nothing.
+ * For Xe introduce dummy intel_dpt_create which just return NULL,
+ * intel_dpt_destroy which does nothing, and fake intel_dpt_ofsset returning 0;
  */
 struct i915_address_space *intel_dpt_create(struct intel_framebuffer *fb)
 {
@@ -389,3 +389,8 @@ void intel_dpt_destroy(struct i915_address_space *vm)
 {
 	return;
 }
+
+u64 intel_dpt_offset(struct i915_vma *dpt_vma)
+{
+	return 0;
+}
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 05/12] drm/xe: Encapsulate drm_mm_node inside xe_ggtt_node
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (2 preceding siblings ...)
  2024-08-16 15:02 ` [PATCH 04/12] drm/{i915, xe}: Avoid direct inspection of dpt_vma from outside dpt Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:02 ` [PATCH 06/12] drm/xe: Rename xe_ggtt_node related functions Rodrigo Vivi
                   ` (15 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Matthew Brost

The xe_ggtt component uses drm_mm to manage the GGTT.
The drm_mm_node is just a node inside drm_mm, but in Xe we use that
only in the GGTT context. So, this patch encapsulates the drm_mm_node
into a xe_ggtt's new struct.

This is the first step towards limiting all the drm_mm access
through xe_ggtt. The ultimate goal is to have a better control of
the node insertion and removal, so the removal can be delegated
to a delayed workqueue.

v2: Fix includes and typos (Michal and Brost)

Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 .../gpu/drm/xe/compat-i915-headers/i915_vma.h |  7 +-
 drivers/gpu/drm/xe/display/xe_fb_pin.c        | 10 +--
 drivers/gpu/drm/xe/xe_bo.c                    |  2 +-
 drivers/gpu/drm/xe/xe_bo.h                    |  6 +-
 drivers/gpu/drm/xe/xe_bo_types.h              |  5 +-
 drivers/gpu/drm/xe/xe_device_types.h          |  2 +-
 drivers/gpu/drm/xe/xe_ggtt.c                  | 72 +++++++++----------
 drivers/gpu/drm/xe/xe_ggtt.h                  | 12 ++--
 drivers/gpu/drm/xe/xe_ggtt_types.h            |  8 +++
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c    | 39 +++++-----
 .../gpu/drm/xe/xe_gt_sriov_pf_config_types.h  |  5 +-
 11 files changed, 90 insertions(+), 78 deletions(-)

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
index a20d2638ea7a..3028ac1ba72f 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
@@ -7,7 +7,8 @@
 #define I915_VMA_H
 
 #include <uapi/drm/i915_drm.h>
-#include <drm/drm_mm.h>
+
+#include "xe_ggtt_types.h"
 
 /* We don't want these from i915_drm.h in case of Xe */
 #undef I915_TILING_X
@@ -19,7 +20,7 @@ struct xe_bo;
 
 struct i915_vma {
 	struct xe_bo *bo, *dpt;
-	struct drm_mm_node node;
+	struct xe_ggtt_node node;
 };
 
 #define i915_ggtt_clear_scanout(bo) do { } while (0)
@@ -28,7 +29,7 @@ struct i915_vma {
 
 static inline u32 i915_ggtt_offset(const struct i915_vma *vma)
 {
-	return vma->node.start;
+	return vma->node.base.start;
 }
 
 #endif
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index 42d431ff14e7..a93923fb8721 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -204,7 +204,7 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 	if (xe_bo_is_vram(bo) && ggtt->flags & XE_GGTT_FLAGS_64K)
 		align = max_t(u32, align, SZ_64K);
 
-	if (bo->ggtt_node.size && view->type == I915_GTT_VIEW_NORMAL) {
+	if (bo->ggtt_node.base.size && view->type == I915_GTT_VIEW_NORMAL) {
 		vma->node = bo->ggtt_node;
 	} else if (view->type == I915_GTT_VIEW_NORMAL) {
 		u32 x, size = bo->ttm.base.size;
@@ -218,7 +218,7 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 			u64 pte = ggtt->pt_ops->pte_encode_bo(bo, x,
 							      xe->pat.idx[XE_CACHE_NONE]);
 
-			ggtt->pt_ops->ggtt_set_pte(ggtt, vma->node.start + x, pte);
+			ggtt->pt_ops->ggtt_set_pte(ggtt, vma->node.base.start + x, pte);
 		}
 	} else {
 		u32 i, ggtt_ofs;
@@ -232,7 +232,7 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 		if (ret)
 			goto out_unlock;
 
-		ggtt_ofs = vma->node.start;
+		ggtt_ofs = vma->node.base.start;
 
 		for (i = 0; i < ARRAY_SIZE(rot_info->plane); i++)
 			write_ggtt_rotated(bo, ggtt, &ggtt_ofs,
@@ -325,8 +325,8 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
 
 	if (vma->dpt)
 		xe_bo_unpin_map_no_vm(vma->dpt);
-	else if (!drm_mm_node_allocated(&vma->bo->ggtt_node) ||
-		 vma->bo->ggtt_node.start != vma->node.start)
+	else if (!drm_mm_node_allocated(&vma->bo->ggtt_node.base) ||
+		 vma->bo->ggtt_node.base.start != vma->node.base.start)
 		xe_ggtt_remove_node(ggtt, &vma->node, false);
 
 	ttm_bo_reserve(&vma->bo->ttm, false, false, NULL);
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 56a089aa3916..74c850777246 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -1098,7 +1098,7 @@ static void xe_ttm_bo_destroy(struct ttm_buffer_object *ttm_bo)
 
 	xe_assert(xe, list_empty(&ttm_bo->base.gpuva.list));
 
-	if (bo->ggtt_node.size)
+	if (bo->ggtt_node.base.size)
 		xe_ggtt_remove_bo(bo->tile->mem.ggtt, bo);
 
 #ifdef CONFIG_PROC_FS
diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
index 1c9dc8adaaa3..faffbda55517 100644
--- a/drivers/gpu/drm/xe/xe_bo.h
+++ b/drivers/gpu/drm/xe/xe_bo.h
@@ -195,9 +195,9 @@ xe_bo_main_addr(struct xe_bo *bo, size_t page_size)
 static inline u32
 xe_bo_ggtt_addr(struct xe_bo *bo)
 {
-	XE_WARN_ON(bo->ggtt_node.size > bo->size);
-	XE_WARN_ON(bo->ggtt_node.start + bo->ggtt_node.size > (1ull << 32));
-	return bo->ggtt_node.start;
+	XE_WARN_ON(bo->ggtt_node.base.size > bo->size);
+	XE_WARN_ON(bo->ggtt_node.base.start + bo->ggtt_node.base.size > (1ull << 32));
+	return bo->ggtt_node.base.start;
 }
 
 int xe_bo_vmap(struct xe_bo *bo);
diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
index ebc8abf7930a..4b1de9f5be00 100644
--- a/drivers/gpu/drm/xe/xe_bo_types.h
+++ b/drivers/gpu/drm/xe/xe_bo_types.h
@@ -8,12 +8,13 @@
 
 #include <linux/iosys-map.h>
 
-#include <drm/drm_mm.h>
 #include <drm/ttm/ttm_bo.h>
 #include <drm/ttm/ttm_device.h>
 #include <drm/ttm/ttm_execbuf_util.h>
 #include <drm/ttm/ttm_placement.h>
 
+#include "xe_ggtt_types.h"
+
 struct xe_device;
 struct xe_vm;
 
@@ -39,7 +40,7 @@ struct xe_bo {
 	/** @placement: current placement for this BO */
 	struct ttm_placement placement;
 	/** @ggtt_node: GGTT node if this BO is mapped in the GGTT */
-	struct drm_mm_node ggtt_node;
+	struct xe_ggtt_node ggtt_node;
 	/** @vmap: iosys map of this buffer */
 	struct iosys_map vmap;
 	/** @ttm_kmap: TTM bo kmap object for internal use only. Keep off. */
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 16a24eadd94b..d2b3d8a0c1bd 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -204,7 +204,7 @@ struct xe_tile {
 			struct xe_memirq memirq;
 
 			/** @sriov.vf.ggtt_balloon: GGTT regions excluded from use. */
-			struct drm_mm_node ggtt_balloon[2];
+			struct xe_ggtt_node ggtt_balloon[2];
 		} vf;
 	} sriov;
 
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index dd5cd0df705c..1cf682d15253 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -351,61 +351,61 @@ static void xe_ggtt_dump_node(struct xe_ggtt *ggtt,
  * @ggtt: the &xe_ggtt where we want to make reservation
  * @start: the starting GGTT address of the reserved region
  * @end: then end GGTT address of the reserved region
- * @node: the &drm_mm_node to hold reserved GGTT node
+ * @node: the &xe_ggtt_node to hold reserved GGTT node
  *
  * Use xe_ggtt_deballoon() to release a reserved GGTT node.
  *
  * Return: 0 on success or a negative error code on failure.
  */
-int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct drm_mm_node *node)
+int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct xe_ggtt_node *node)
 {
 	int err;
 
 	xe_tile_assert(ggtt->tile, start < end);
 	xe_tile_assert(ggtt->tile, IS_ALIGNED(start, XE_PAGE_SIZE));
 	xe_tile_assert(ggtt->tile, IS_ALIGNED(end, XE_PAGE_SIZE));
-	xe_tile_assert(ggtt->tile, !drm_mm_node_allocated(node));
+	xe_tile_assert(ggtt->tile, !drm_mm_node_allocated(&node->base));
 
-	node->color = 0;
-	node->start = start;
-	node->size = end - start;
+	node->base.color = 0;
+	node->base.start = start;
+	node->base.size = end - start;
 
 	mutex_lock(&ggtt->lock);
-	err = drm_mm_reserve_node(&ggtt->mm, node);
+	err = drm_mm_reserve_node(&ggtt->mm, &node->base);
 	mutex_unlock(&ggtt->lock);
 
 	if (xe_gt_WARN(ggtt->tile->primary_gt, err,
 		       "Failed to balloon GGTT %#llx-%#llx (%pe)\n",
-		       node->start, node->start + node->size, ERR_PTR(err)))
+		       node->base.start, node->base.start + node->base.size, ERR_PTR(err)))
 		return err;
 
-	xe_ggtt_dump_node(ggtt, node, "balloon");
+	xe_ggtt_dump_node(ggtt, &node->base, "balloon");
 	return 0;
 }
 
 /**
  * xe_ggtt_deballoon - release a reserved GGTT region
  * @ggtt: the &xe_ggtt where reserved node belongs
- * @node: the &drm_mm_node with reserved GGTT region
+ * @node: the &xe_ggtt_node with reserved GGTT region
  *
  * See xe_ggtt_balloon() for details.
  */
-void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct drm_mm_node *node)
+void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
 {
-	if (!drm_mm_node_allocated(node))
+	if (!drm_mm_node_allocated(&node->base))
 		return;
 
-	xe_ggtt_dump_node(ggtt, node, "deballoon");
+	xe_ggtt_dump_node(ggtt, &node->base, "deballoon");
 
 	mutex_lock(&ggtt->lock);
-	drm_mm_remove_node(node);
+	drm_mm_remove_node(&node->base);
 	mutex_unlock(&ggtt->lock);
 }
 
 /**
- * xe_ggtt_insert_special_node_locked - Locked version to insert a &drm_mm_node into the GGTT
+ * xe_ggtt_insert_special_node_locked - Locked version to insert a &xe_ggtt_node into the GGTT
  * @ggtt: the &xe_ggtt where node will be inserted
- * @node: the &drm_mm_node to be inserted
+ * @node: the &xe_ggtt_node to be inserted
  * @size: size of the node
  * @align: alignment constrain of the node
  * @mm_flags: flags to control the node behavior
@@ -414,23 +414,23 @@ void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct drm_mm_node *node)
  *
  * Return: 0 on success or a negative error code on failure.
  */
-int xe_ggtt_insert_special_node_locked(struct xe_ggtt *ggtt, struct drm_mm_node *node,
+int xe_ggtt_insert_special_node_locked(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 				       u32 size, u32 align, u32 mm_flags)
 {
-	return drm_mm_insert_node_generic(&ggtt->mm, node, size, align, 0,
+	return drm_mm_insert_node_generic(&ggtt->mm, &node->base, size, align, 0,
 					  mm_flags);
 }
 
 /**
- * xe_ggtt_insert_special_node - Insert a &drm_mm_node into the GGTT
+ * xe_ggtt_insert_special_node - Insert a &xe_ggtt_node into the GGTT
  * @ggtt: the &xe_ggtt where node will be inserted
- * @node: the &drm_mm_node to be inserted
+ * @node: the &xe_ggtt_node to be inserted
  * @size: size of the node
  * @align: alignment constrain of the node
  *
  * Return: 0 on success or a negative error code on failure.
  */
-int xe_ggtt_insert_special_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
+int xe_ggtt_insert_special_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 				u32 size, u32 align)
 {
 	int ret;
@@ -452,7 +452,7 @@ void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 {
 	u16 cache_mode = bo->flags & XE_BO_FLAG_NEEDS_UC ? XE_CACHE_NONE : XE_CACHE_WB;
 	u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[cache_mode];
-	u64 start = bo->ggtt_node.start;
+	u64 start = bo->ggtt_node.base.start;
 	u64 offset, pte;
 
 	for (offset = 0; offset < bo->size; offset += XE_PAGE_SIZE) {
@@ -470,9 +470,9 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 	if (xe_bo_is_vram(bo) && ggtt->flags & XE_GGTT_FLAGS_64K)
 		alignment = SZ_64K;
 
-	if (XE_WARN_ON(bo->ggtt_node.size)) {
+	if (XE_WARN_ON(bo->ggtt_node.base.size)) {
 		/* Someone's already inserted this BO in the GGTT */
-		xe_tile_assert(ggtt->tile, bo->ggtt_node.size == bo->size);
+		xe_tile_assert(ggtt->tile, bo->ggtt_node.base.size == bo->size);
 		return 0;
 	}
 
@@ -482,7 +482,7 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 
 	xe_pm_runtime_get_noresume(tile_to_xe(ggtt->tile));
 	mutex_lock(&ggtt->lock);
-	err = drm_mm_insert_node_in_range(&ggtt->mm, &bo->ggtt_node, bo->size,
+	err = drm_mm_insert_node_in_range(&ggtt->mm, &bo->ggtt_node.base, bo->size,
 					  alignment, 0, start, end, 0);
 	if (!err)
 		xe_ggtt_map_bo(ggtt, bo);
@@ -523,12 +523,12 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 }
 
 /**
- * xe_ggtt_remove_node - Remove a &drm_mm_node from the GGTT
+ * xe_ggtt_remove_node - Remove a &xe_ggtt_node from the GGTT
  * @ggtt: the &xe_ggtt where node will be removed
- * @node: the &drm_mm_node to be removed
+ * @node: the &xe_ggtt_node to be removed
  * @invalidate: if node needs invalidation upon removal
  */
-void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
+void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 			 bool invalidate)
 {
 	struct xe_device *xe = tile_to_xe(ggtt->tile);
@@ -541,9 +541,9 @@ void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
 
 	mutex_lock(&ggtt->lock);
 	if (bound)
-		xe_ggtt_clear(ggtt, node->start, node->size);
-	drm_mm_remove_node(node);
-	node->size = 0;
+		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
+	drm_mm_remove_node(&node->base);
+	node->base.size = 0;
 	mutex_unlock(&ggtt->lock);
 
 	if (!bound)
@@ -563,11 +563,11 @@ void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
  */
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 {
-	if (XE_WARN_ON(!bo->ggtt_node.size))
+	if (XE_WARN_ON(!bo->ggtt_node.base.size))
 		return;
 
 	/* This BO is not currently in the GGTT */
-	xe_tile_assert(ggtt->tile, bo->ggtt_node.size == bo->size);
+	xe_tile_assert(ggtt->tile, bo->ggtt_node.base.size == bo->size);
 
 	xe_ggtt_remove_node(ggtt, &bo->ggtt_node,
 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
@@ -602,17 +602,17 @@ static void xe_ggtt_assign_locked(struct xe_ggtt *ggtt, const struct drm_mm_node
 /**
  * xe_ggtt_assign - assign a GGTT region to the VF
  * @ggtt: the &xe_ggtt where the node belongs
- * @node: the &drm_mm_node to update
+ * @node: the &xe_ggtt_node to update
  * @vfid: the VF identifier
  *
  * This function is used by the PF driver to assign a GGTT region to the VF.
  * In addition to PTE's VFID bits 11:2 also PRESENT bit 0 is set as on some
  * platforms VFs can't modify that either.
  */
-void xe_ggtt_assign(struct xe_ggtt *ggtt, const struct drm_mm_node *node, u16 vfid)
+void xe_ggtt_assign(struct xe_ggtt *ggtt, const struct xe_ggtt_node *node, u16 vfid)
 {
 	mutex_lock(&ggtt->lock);
-	xe_ggtt_assign_locked(ggtt, node, vfid);
+	xe_ggtt_assign_locked(ggtt, &node->base, vfid);
 	mutex_unlock(&ggtt->lock);
 }
 #endif
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 2546bab97507..30a521f7b075 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -13,15 +13,15 @@ struct drm_printer;
 int xe_ggtt_init_early(struct xe_ggtt *ggtt);
 int xe_ggtt_init(struct xe_ggtt *ggtt);
 
-int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct drm_mm_node *node);
-void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct drm_mm_node *node);
+int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct xe_ggtt_node *node);
+void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node);
 
-int xe_ggtt_insert_special_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
+int xe_ggtt_insert_special_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 				u32 size, u32 align);
 int xe_ggtt_insert_special_node_locked(struct xe_ggtt *ggtt,
-				       struct drm_mm_node *node,
+				       struct xe_ggtt_node *node,
 				       u32 size, u32 align, u32 mm_flags);
-void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
+void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 			 bool invalidate);
 void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
@@ -32,7 +32,7 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
 
 #ifdef CONFIG_PCI_IOV
-void xe_ggtt_assign(struct xe_ggtt *ggtt, const struct drm_mm_node *node, u16 vfid);
+void xe_ggtt_assign(struct xe_ggtt *ggtt, const struct xe_ggtt_node *node, u16 vfid);
 #endif
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index 154de298a4e3..af312a7d1031 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -49,6 +49,14 @@ struct xe_ggtt {
 	unsigned int access_count;
 };
 
+/**
+ * struct xe_ggtt_node - A node in GGTT
+ */
+struct xe_ggtt_node {
+	/** @base: A drm_mm_node */
+	struct drm_mm_node base;
+};
+
 /**
  * struct xe_ggtt_pt_ops - GGTT Page table operations
  * Which can vary from platform to platform.
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 227527785afd..f107ae550c0f 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -6,6 +6,9 @@
 #include <linux/string_choices.h>
 #include <linux/wordpart.h>
 
+/* FIXME: remove this after encapsulating all drm_mm_node access into xe_ggtt */
+#include <drm/drm_mm.h>
+
 #include "abi/guc_actions_sriov_abi.h"
 #include "abi/guc_klvs_abi.h"
 
@@ -232,14 +235,14 @@ static u32 encode_config_ggtt(u32 *cfg, const struct xe_gt_sriov_config *config)
 {
 	u32 n = 0;
 
-	if (drm_mm_node_allocated(&config->ggtt_region)) {
+	if (drm_mm_node_allocated(&config->ggtt_region.base)) {
 		cfg[n++] = PREP_GUC_KLV_TAG(VF_CFG_GGTT_START);
-		cfg[n++] = lower_32_bits(config->ggtt_region.start);
-		cfg[n++] = upper_32_bits(config->ggtt_region.start);
+		cfg[n++] = lower_32_bits(config->ggtt_region.base.start);
+		cfg[n++] = upper_32_bits(config->ggtt_region.base.start);
 
 		cfg[n++] = PREP_GUC_KLV_TAG(VF_CFG_GGTT_SIZE);
-		cfg[n++] = lower_32_bits(config->ggtt_region.size);
-		cfg[n++] = upper_32_bits(config->ggtt_region.size);
+		cfg[n++] = lower_32_bits(config->ggtt_region.base.size);
+		cfg[n++] = upper_32_bits(config->ggtt_region.base.size);
 	}
 
 	return n;
@@ -369,11 +372,11 @@ static int pf_distribute_config_ggtt(struct xe_tile *tile, unsigned int vfid, u6
 	return err ?: err2;
 }
 
-static void pf_release_ggtt(struct xe_tile *tile, struct drm_mm_node *node)
+static void pf_release_ggtt(struct xe_tile *tile, struct xe_ggtt_node *node)
 {
 	struct xe_ggtt *ggtt = tile->mem.ggtt;
 
-	if (drm_mm_node_allocated(node)) {
+	if (drm_mm_node_allocated(&node->base)) {
 		/*
 		 * explicit GGTT PTE assignment to the PF using xe_ggtt_assign()
 		 * is redundant, as PTE will be implicitly re-assigned to PF by
@@ -391,7 +394,7 @@ static void pf_release_vf_config_ggtt(struct xe_gt *gt, struct xe_gt_sriov_confi
 static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 {
 	struct xe_gt_sriov_config *config = pf_pick_vf_config(gt, vfid);
-	struct drm_mm_node *node = &config->ggtt_region;
+	struct xe_ggtt_node *node = &config->ggtt_region;
 	struct xe_tile *tile = gt_to_tile(gt);
 	struct xe_ggtt *ggtt = tile->mem.ggtt;
 	u64 alignment = pf_get_ggtt_alignment(gt);
@@ -403,14 +406,14 @@ static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 
 	size = round_up(size, alignment);
 
-	if (drm_mm_node_allocated(node)) {
+	if (drm_mm_node_allocated(&node->base)) {
 		err = pf_distribute_config_ggtt(tile, vfid, 0, 0);
 		if (unlikely(err))
 			return err;
 
 		pf_release_ggtt(tile, node);
 	}
-	xe_gt_assert(gt, !drm_mm_node_allocated(node));
+	xe_gt_assert(gt, !drm_mm_node_allocated(&node->base));
 
 	if (!size)
 		return 0;
@@ -421,9 +424,9 @@ static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 
 	xe_ggtt_assign(ggtt, node, vfid);
 	xe_gt_sriov_dbg_verbose(gt, "VF%u assigned GGTT %llx-%llx\n",
-				vfid, node->start, node->start + node->size - 1);
+				vfid, node->base.start, node->base.start + node->base.size - 1);
 
-	err = pf_distribute_config_ggtt(gt->tile, vfid, node->start, node->size);
+	err = pf_distribute_config_ggtt(gt->tile, vfid, node->base.start, node->base.size);
 	if (unlikely(err))
 		return err;
 
@@ -433,10 +436,10 @@ static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 static u64 pf_get_vf_config_ggtt(struct xe_gt *gt, unsigned int vfid)
 {
 	struct xe_gt_sriov_config *config = pf_pick_vf_config(gt, vfid);
-	struct drm_mm_node *node = &config->ggtt_region;
+	struct xe_ggtt_node *node = &config->ggtt_region;
 
 	xe_gt_assert(gt, !xe_gt_is_media_type(gt));
-	return drm_mm_node_allocated(node) ? node->size : 0;
+	return drm_mm_node_allocated(&node->base) ? node->base.size : 0;
 }
 
 /**
@@ -2025,13 +2028,13 @@ int xe_gt_sriov_pf_config_print_ggtt(struct xe_gt *gt, struct drm_printer *p)
 
 	for (n = 1; n <= total_vfs; n++) {
 		config = &gt->sriov.pf.vfs[n].config;
-		if (!drm_mm_node_allocated(&config->ggtt_region))
+		if (!drm_mm_node_allocated(&config->ggtt_region.base))
 			continue;
 
-		string_get_size(config->ggtt_region.size, 1, STRING_UNITS_2, buf, sizeof(buf));
+		string_get_size(config->ggtt_region.base.size, 1, STRING_UNITS_2, buf, sizeof(buf));
 		drm_printf(p, "VF%u:\t%#0llx-%#llx\t(%s)\n",
-			   n, config->ggtt_region.start,
-			   config->ggtt_region.start + config->ggtt_region.size - 1, buf);
+			   n, config->ggtt_region.base.start,
+			   config->ggtt_region.base.start + config->ggtt_region.base.size - 1, buf);
 	}
 
 	return 0;
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h
index 7bc66656fcc7..a73d9a4b9e64 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h
@@ -6,8 +6,7 @@
 #ifndef _XE_GT_SRIOV_PF_CONFIG_TYPES_H_
 #define _XE_GT_SRIOV_PF_CONFIG_TYPES_H_
 
-#include <drm/drm_mm.h>
-
+#include "xe_ggtt_types.h"
 #include "xe_guc_klv_thresholds_set_types.h"
 
 struct xe_bo;
@@ -19,7 +18,7 @@ struct xe_bo;
  */
 struct xe_gt_sriov_config {
 	/** @ggtt_region: GGTT region assigned to the VF. */
-	struct drm_mm_node ggtt_region;
+	struct xe_ggtt_node ggtt_region;
 	/** @lmem_obj: LMEM allocation for use by the VF. */
 	struct xe_bo *lmem_obj;
 	/** @num_ctxs: number of GuC contexts IDs.  */
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 06/12] drm/xe: Rename xe_ggtt_node related functions
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (3 preceding siblings ...)
  2024-08-16 15:02 ` [PATCH 05/12] drm/xe: Encapsulate drm_mm_node inside xe_ggtt_node Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:24   ` Lucas De Marchi
  2024-08-16 15:02 ` [PATCH 07/12] drm/xe: Limit drm_mm_node_allocated access to xe_ggtt_node Rodrigo Vivi
                   ` (14 subsequent siblings)
  19 siblings, 1 reply; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Matthew Brost

Bring some consistency and prepare for more xe_ggtt_node related
functions to be introduced.

Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/display/xe_fb_pin.c     |  8 +-
 drivers/gpu/drm/xe/xe_ggtt.c               | 86 +++++++++++-----------
 drivers/gpu/drm/xe/xe_ggtt.h               | 12 +--
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c |  4 +-
 4 files changed, 54 insertions(+), 56 deletions(-)

diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index a93923fb8721..db74c3395ef8 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -209,8 +209,7 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 	} else if (view->type == I915_GTT_VIEW_NORMAL) {
 		u32 x, size = bo->ttm.base.size;
 
-		ret = xe_ggtt_insert_special_node_locked(ggtt, &vma->node, size,
-							 align, 0);
+		ret = xe_ggtt_node_insert_locked(ggtt, &vma->node, size, align, 0);
 		if (ret)
 			goto out_unlock;
 
@@ -227,8 +226,7 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 		/* display seems to use tiles instead of bytes here, so convert it back.. */
 		u32 size = intel_rotation_info_size(rot_info) * XE_PAGE_SIZE;
 
-		ret = xe_ggtt_insert_special_node_locked(ggtt, &vma->node, size,
-							 align, 0);
+		ret = xe_ggtt_node_insert_locked(ggtt, &vma->node, size, align, 0);
 		if (ret)
 			goto out_unlock;
 
@@ -327,7 +325,7 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
 		xe_bo_unpin_map_no_vm(vma->dpt);
 	else if (!drm_mm_node_allocated(&vma->bo->ggtt_node.base) ||
 		 vma->bo->ggtt_node.base.start != vma->node.base.start)
-		xe_ggtt_remove_node(ggtt, &vma->node, false);
+		xe_ggtt_node_remove(ggtt, &vma->node, false);
 
 	ttm_bo_reserve(&vma->bo->ttm, false, false, NULL);
 	ttm_bo_unpin(&vma->bo->ttm);
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 1cf682d15253..e0da24bb5774 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -403,7 +403,7 @@ void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
 }
 
 /**
- * xe_ggtt_insert_special_node_locked - Locked version to insert a &xe_ggtt_node into the GGTT
+ * xe_ggtt_node_insert_locked - Locked version to insert a &xe_ggtt_node into the GGTT
  * @ggtt: the &xe_ggtt where node will be inserted
  * @node: the &xe_ggtt_node to be inserted
  * @size: size of the node
@@ -414,15 +414,15 @@ void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
  *
  * Return: 0 on success or a negative error code on failure.
  */
-int xe_ggtt_insert_special_node_locked(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
-				       u32 size, u32 align, u32 mm_flags)
+int xe_ggtt_node_insert_locked(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+			       u32 size, u32 align, u32 mm_flags)
 {
 	return drm_mm_insert_node_generic(&ggtt->mm, &node->base, size, align, 0,
 					  mm_flags);
 }
 
 /**
- * xe_ggtt_insert_special_node - Insert a &xe_ggtt_node into the GGTT
+ * xe_ggtt_node_insert - Insert a &xe_ggtt_node into the GGTT
  * @ggtt: the &xe_ggtt where node will be inserted
  * @node: the &xe_ggtt_node to be inserted
  * @size: size of the node
@@ -430,19 +430,53 @@ int xe_ggtt_insert_special_node_locked(struct xe_ggtt *ggtt, struct xe_ggtt_node
  *
  * Return: 0 on success or a negative error code on failure.
  */
-int xe_ggtt_insert_special_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
-				u32 size, u32 align)
+int xe_ggtt_node_insert(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+			u32 size, u32 align)
 {
 	int ret;
 
 	mutex_lock(&ggtt->lock);
-	ret = xe_ggtt_insert_special_node_locked(ggtt, node, size,
-						 align, DRM_MM_INSERT_HIGH);
+	ret = xe_ggtt_node_insert_locked(ggtt, node, size,
+					 align, DRM_MM_INSERT_HIGH);
 	mutex_unlock(&ggtt->lock);
 
 	return ret;
 }
 
+/**
+ * xe_ggtt_node_remove - Remove a &xe_ggtt_node from the GGTT
+ * @ggtt: the &xe_ggtt where node will be removed
+ * @node: the &xe_ggtt_node to be removed
+ * @invalidate: if node needs invalidation upon removal
+ */
+void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+			 bool invalidate)
+{
+	struct xe_device *xe = tile_to_xe(ggtt->tile);
+	bool bound;
+	int idx;
+
+	bound = drm_dev_enter(&xe->drm, &idx);
+	if (bound)
+		xe_pm_runtime_get_noresume(xe);
+
+	mutex_lock(&ggtt->lock);
+	if (bound)
+		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
+	drm_mm_remove_node(&node->base);
+	node->base.size = 0;
+	mutex_unlock(&ggtt->lock);
+
+	if (!bound)
+		return;
+
+	if (invalidate)
+		xe_ggtt_invalidate(ggtt);
+
+	xe_pm_runtime_put(xe);
+	drm_dev_exit(idx);
+}
+
 /**
  * xe_ggtt_map_bo - Map the BO into GGTT
  * @ggtt: the &xe_ggtt where node will be mapped
@@ -522,40 +556,6 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 	return __xe_ggtt_insert_bo_at(ggtt, bo, 0, U64_MAX);
 }
 
-/**
- * xe_ggtt_remove_node - Remove a &xe_ggtt_node from the GGTT
- * @ggtt: the &xe_ggtt where node will be removed
- * @node: the &xe_ggtt_node to be removed
- * @invalidate: if node needs invalidation upon removal
- */
-void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
-			 bool invalidate)
-{
-	struct xe_device *xe = tile_to_xe(ggtt->tile);
-	bool bound;
-	int idx;
-
-	bound = drm_dev_enter(&xe->drm, &idx);
-	if (bound)
-		xe_pm_runtime_get_noresume(xe);
-
-	mutex_lock(&ggtt->lock);
-	if (bound)
-		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
-	drm_mm_remove_node(&node->base);
-	node->base.size = 0;
-	mutex_unlock(&ggtt->lock);
-
-	if (!bound)
-		return;
-
-	if (invalidate)
-		xe_ggtt_invalidate(ggtt);
-
-	xe_pm_runtime_put(xe);
-	drm_dev_exit(idx);
-}
-
 /**
  * xe_ggtt_remove_bo - Remove a BO from the GGTT
  * @ggtt: the &xe_ggtt where node will be removed
@@ -569,7 +569,7 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 	/* This BO is not currently in the GGTT */
 	xe_tile_assert(ggtt->tile, bo->ggtt_node.base.size == bo->size);
 
-	xe_ggtt_remove_node(ggtt, &bo->ggtt_node,
+	xe_ggtt_node_remove(ggtt, &bo->ggtt_node,
 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
 }
 
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 30a521f7b075..5147930357de 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -16,12 +16,12 @@ int xe_ggtt_init(struct xe_ggtt *ggtt);
 int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct xe_ggtt_node *node);
 void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node);
 
-int xe_ggtt_insert_special_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
-				u32 size, u32 align);
-int xe_ggtt_insert_special_node_locked(struct xe_ggtt *ggtt,
-				       struct xe_ggtt_node *node,
-				       u32 size, u32 align, u32 mm_flags);
-void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+int xe_ggtt_node_insert(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+			u32 size, u32 align);
+int xe_ggtt_node_insert_locked(struct xe_ggtt *ggtt,
+			       struct xe_ggtt_node *node,
+			       u32 size, u32 align, u32 mm_flags);
+void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 			 bool invalidate);
 void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index f107ae550c0f..3ca98f8a0eae 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -382,7 +382,7 @@ static void pf_release_ggtt(struct xe_tile *tile, struct xe_ggtt_node *node)
 		 * is redundant, as PTE will be implicitly re-assigned to PF by
 		 * the xe_ggtt_clear() called by below xe_ggtt_remove_node().
 		 */
-		xe_ggtt_remove_node(ggtt, node, false);
+		xe_ggtt_node_remove(ggtt, node, false);
 	}
 }
 
@@ -418,7 +418,7 @@ static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 	if (!size)
 		return 0;
 
-	err = xe_ggtt_insert_special_node(ggtt, node, size, alignment);
+	err = xe_ggtt_node_insert(ggtt, node, size, alignment);
 	if (unlikely(err))
 		return err;
 
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 07/12] drm/xe: Limit drm_mm_node_allocated access to xe_ggtt_node
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (4 preceding siblings ...)
  2024-08-16 15:02 ` [PATCH 06/12] drm/xe: Rename xe_ggtt_node related functions Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:26   ` Lucas De Marchi
  2024-08-16 15:02 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
                   ` (13 subsequent siblings)
  19 siblings, 1 reply; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe
  Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Michal Wajdeczko,
	Matthew Brost

Continue with the encapsulation of drm_mm_node inside xe_ggtt.

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/display/xe_fb_pin.c     |  2 +-
 drivers/gpu/drm/xe/xe_ggtt.c               | 11 +++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 12 ++++++------
 4 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index db74c3395ef8..de4930b67a29 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -323,7 +323,7 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
 
 	if (vma->dpt)
 		xe_bo_unpin_map_no_vm(vma->dpt);
-	else if (!drm_mm_node_allocated(&vma->bo->ggtt_node.base) ||
+	else if (!xe_ggtt_node_allocated(&vma->bo->ggtt_node) ||
 		 vma->bo->ggtt_node.base.start != vma->node.base.start)
 		xe_ggtt_node_remove(ggtt, &vma->node, false);
 
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index e0da24bb5774..7c8bbaa30fca 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -477,6 +477,17 @@ void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 	drm_dev_exit(idx);
 }
 
+/**
+ * xe_ggtt_node_allocated - Check if node is allocated
+ * @node: the &xe_ggtt_node to be inspected
+ *
+ * Return: True if allocated, False otherwise.
+ */
+bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node)
+{
+	return drm_mm_node_allocated(&node->base);
+}
+
 /**
  * xe_ggtt_map_bo - Map the BO into GGTT
  * @ggtt: the &xe_ggtt where node will be mapped
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 5147930357de..f816b3c0732b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -23,6 +23,7 @@ int xe_ggtt_node_insert_locked(struct xe_ggtt *ggtt,
 			       u32 size, u32 align, u32 mm_flags);
 void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 			 bool invalidate);
+bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node);
 void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 3ca98f8a0eae..947750d97d7d 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -235,7 +235,7 @@ static u32 encode_config_ggtt(u32 *cfg, const struct xe_gt_sriov_config *config)
 {
 	u32 n = 0;
 
-	if (drm_mm_node_allocated(&config->ggtt_region.base)) {
+	if (xe_ggtt_node_allocated(&config->ggtt_region)) {
 		cfg[n++] = PREP_GUC_KLV_TAG(VF_CFG_GGTT_START);
 		cfg[n++] = lower_32_bits(config->ggtt_region.base.start);
 		cfg[n++] = upper_32_bits(config->ggtt_region.base.start);
@@ -376,7 +376,7 @@ static void pf_release_ggtt(struct xe_tile *tile, struct xe_ggtt_node *node)
 {
 	struct xe_ggtt *ggtt = tile->mem.ggtt;
 
-	if (drm_mm_node_allocated(&node->base)) {
+	if (xe_ggtt_node_allocated(node)) {
 		/*
 		 * explicit GGTT PTE assignment to the PF using xe_ggtt_assign()
 		 * is redundant, as PTE will be implicitly re-assigned to PF by
@@ -406,14 +406,14 @@ static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 
 	size = round_up(size, alignment);
 
-	if (drm_mm_node_allocated(&node->base)) {
+	if (xe_ggtt_node_allocated(node)) {
 		err = pf_distribute_config_ggtt(tile, vfid, 0, 0);
 		if (unlikely(err))
 			return err;
 
 		pf_release_ggtt(tile, node);
 	}
-	xe_gt_assert(gt, !drm_mm_node_allocated(&node->base));
+	xe_gt_assert(gt, !xe_ggtt_node_allocated(node));
 
 	if (!size)
 		return 0;
@@ -439,7 +439,7 @@ static u64 pf_get_vf_config_ggtt(struct xe_gt *gt, unsigned int vfid)
 	struct xe_ggtt_node *node = &config->ggtt_region;
 
 	xe_gt_assert(gt, !xe_gt_is_media_type(gt));
-	return drm_mm_node_allocated(&node->base) ? node->base.size : 0;
+	return xe_ggtt_node_allocated(node) ? node->base.size : 0;
 }
 
 /**
@@ -2028,7 +2028,7 @@ int xe_gt_sriov_pf_config_print_ggtt(struct xe_gt *gt, struct drm_printer *p)
 
 	for (n = 1; n <= total_vfs; n++) {
 		config = &gt->sriov.pf.vfs[n].config;
-		if (!drm_mm_node_allocated(&config->ggtt_region.base))
+		if (!xe_ggtt_node_allocated(&config->ggtt_region))
 			continue;
 
 		string_get_size(config->ggtt_region.base.size, 1, STRING_UNITS_2, buf, sizeof(buf));
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (5 preceding siblings ...)
  2024-08-16 15:02 ` [PATCH 07/12] drm/xe: Limit drm_mm_node_allocated access to xe_ggtt_node Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:35   ` Lucas De Marchi
  2024-08-16 15:02 ` [PATCH 09/12] drm/xe: Introduce xe_ggtt_print_holes Rodrigo Vivi
                   ` (12 subsequent siblings)
  19 siblings, 1 reply; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Michal Wajdeczko

Introduce a new xe_ggtt_largest_hole helper that attends the SRIOV
demand and continue with the goal of limiting drm_mm access to xe_ggtt.

v2: Fix a typo (Michal)

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c               | 35 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++------------
 3 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 7c8bbaa30fca..2d055f489879 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -584,6 +584,41 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
 }
 
+/**
+ * xe_ggtt_largest_hole - Largest GGTT hole
+ * @ggtt: the &xe_ggtt that will be inspected
+ * @alignment: minimum alignment
+ * @spare: If not NULL: in: desired memory size to be spared / out: Adjusted possible spare
+ *
+ * Return: size of the largest continuous GGTT region
+ */
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
+{
+	const struct drm_mm *mm = &ggtt->mm;
+	const struct drm_mm_node *entry;
+	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
+	u64 hole_start, hole_end, hole_size;
+	u64 max_hole = 0;
+
+	mutex_lock(&ggtt->lock);
+
+	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
+		hole_start = max(hole_start, hole_min_start);
+		hole_start = ALIGN(hole_start, alignment);
+		hole_end = ALIGN_DOWN(hole_end, alignment);
+		if (hole_start >= hole_end)
+			continue;
+		hole_size = hole_end - hole_start;
+		if (spare)
+			*spare -= min3(*spare, hole_size, max_hole);
+		max_hole = max(max_hole, hole_size);
+	}
+
+	mutex_unlock(&ggtt->lock);
+
+	return max_hole;
+}
+
 #ifdef CONFIG_PCI_IOV
 static u64 xe_encode_vfid_pte(u16 vfid)
 {
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index f816b3c0732b..31060fe7644b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -29,6 +29,7 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 			 u64 start, u64 end);
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
 
 int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
 
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 947750d97d7d..1852ff45bea4 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -590,30 +590,11 @@ int xe_gt_sriov_pf_config_bulk_set_ggtt(struct xe_gt *gt, unsigned int vfid,
 static u64 pf_get_max_ggtt(struct xe_gt *gt)
 {
 	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
-	const struct drm_mm *mm = &ggtt->mm;
-	const struct drm_mm_node *entry;
 	u64 alignment = pf_get_ggtt_alignment(gt);
 	u64 spare = pf_get_spare_ggtt(gt);
-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
-	u64 hole_start, hole_end, hole_size;
-	u64 max_hole = 0;
-
-	mutex_lock(&ggtt->lock);
-
-	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
-		hole_start = max(hole_start, hole_min_start);
-		hole_start = ALIGN(hole_start, alignment);
-		hole_end = ALIGN_DOWN(hole_end, alignment);
-		if (hole_start >= hole_end)
-			continue;
-		hole_size = hole_end - hole_start;
-		xe_gt_sriov_dbg_verbose(gt, "HOLE start %llx size %lluK\n",
-					hole_start, hole_size / SZ_1K);
-		spare -= min3(spare, hole_size, max_hole);
-		max_hole = max(max_hole, hole_size);
-	}
+	u64 max_hole;
 
-	mutex_unlock(&ggtt->lock);
+	max_hole = xe_ggtt_largest_hole(ggtt, alignment, &spare);
 
 	xe_gt_sriov_dbg_verbose(gt, "HOLE max %lluK reserved %lluK\n",
 				max_hole / SZ_1K, spare / SZ_1K);
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 09/12] drm/xe: Introduce xe_ggtt_print_holes
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (6 preceding siblings ...)
  2024-08-16 15:02 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:02 ` [PATCH 10/12] drm/xe: Rename xe_ggtt balloon functions to make the node clear Rodrigo Vivi
                   ` (11 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe
  Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Michal Wajdeczko,
	Jonathan Cavitt

Introduce a new xe_ggtt_print_holes helper that attends the SRIOV
demand and finishes the goal of limiting drm_mm access to xe_ggtt.

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c               | 40 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 25 +-------------
 3 files changed, 42 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 2d055f489879..960f5a28b7ed 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -682,3 +682,43 @@ int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p)
 	mutex_unlock(&ggtt->lock);
 	return err;
 }
+
+/**
+ * xe_ggtt_print_holes - Print holes
+ * @ggtt: the &xe_ggtt to be inspected
+ * @alignment: min alignment
+ * @p: the &drm_printer
+ *
+ * Print GGTT ranges that are available and return total size available.
+ *
+ * Return: Total available size.
+ */
+u64 xe_ggtt_print_holes(struct xe_ggtt *ggtt, u64 alignment, struct drm_printer *p)
+{
+	const struct drm_mm *mm = &ggtt->mm;
+	const struct drm_mm_node *entry;
+	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
+	u64 hole_start, hole_end, hole_size;
+	u64 total;
+	char buf[10];
+
+	mutex_lock(&ggtt->lock);
+
+	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
+		hole_start = max(hole_start, hole_min_start);
+		hole_start = ALIGN(hole_start, alignment);
+		hole_end = ALIGN_DOWN(hole_end, alignment);
+		if (hole_start >= hole_end)
+			continue;
+		hole_size = hole_end - hole_start;
+		total += hole_size;
+
+		string_get_size(hole_size, 1, STRING_UNITS_2, buf, sizeof(buf));
+		drm_printf(p, "range:\t%#llx-%#llx\t(%s)\n",
+			   hole_start, hole_end - 1, buf);
+	}
+
+	mutex_unlock(&ggtt->lock);
+
+	return total;
+}
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 31060fe7644b..67ae5f1602a3 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -32,6 +32,7 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
 
 int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
+u64 xe_ggtt_print_holes(struct xe_ggtt *ggtt, u64 alignment, struct drm_printer *p);
 
 #ifdef CONFIG_PCI_IOV
 void xe_ggtt_assign(struct xe_ggtt *ggtt, const struct xe_ggtt_node *node, u16 vfid);
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 1852ff45bea4..e133594cc6bd 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -6,9 +6,6 @@
 #include <linux/string_choices.h>
 #include <linux/wordpart.h>
 
-/* FIXME: remove this after encapsulating all drm_mm_node access into xe_ggtt */
-#include <drm/drm_mm.h>
-
 #include "abi/guc_actions_sriov_abi.h"
 #include "abi/guc_klvs_abi.h"
 
@@ -2103,11 +2100,7 @@ int xe_gt_sriov_pf_config_print_dbs(struct xe_gt *gt, struct drm_printer *p)
 int xe_gt_sriov_pf_config_print_available_ggtt(struct xe_gt *gt, struct drm_printer *p)
 {
 	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
-	const struct drm_mm *mm = &ggtt->mm;
-	const struct drm_mm_node *entry;
 	u64 alignment = pf_get_ggtt_alignment(gt);
-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
-	u64 hole_start, hole_end, hole_size;
 	u64 spare, avail, total = 0;
 	char buf[10];
 
@@ -2116,24 +2109,8 @@ int xe_gt_sriov_pf_config_print_available_ggtt(struct xe_gt *gt, struct drm_prin
 	mutex_lock(xe_gt_sriov_pf_master_mutex(gt));
 
 	spare = pf_get_spare_ggtt(gt);
+	total = xe_ggtt_print_holes(ggtt, alignment, p);
 
-	mutex_lock(&ggtt->lock);
-
-	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
-		hole_start = max(hole_start, hole_min_start);
-		hole_start = ALIGN(hole_start, alignment);
-		hole_end = ALIGN_DOWN(hole_end, alignment);
-		if (hole_start >= hole_end)
-			continue;
-		hole_size = hole_end - hole_start;
-		total += hole_size;
-
-		string_get_size(hole_size, 1, STRING_UNITS_2, buf, sizeof(buf));
-		drm_printf(p, "range:\t%#llx-%#llx\t(%s)\n",
-			   hole_start, hole_end - 1, buf);
-	}
-
-	mutex_unlock(&ggtt->lock);
 	mutex_unlock(xe_gt_sriov_pf_master_mutex(gt));
 
 	string_get_size(total, 1, STRING_UNITS_2, buf, sizeof(buf));
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 10/12] drm/xe: Rename xe_ggtt balloon functions to make the node clear
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (7 preceding siblings ...)
  2024-08-16 15:02 ` [PATCH 09/12] drm/xe: Introduce xe_ggtt_print_holes Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:45   ` Lucas De Marchi
  2024-08-16 15:02 ` [PATCH 11/12] drm/xe: Make xe_ggtt_node struct independent Rodrigo Vivi
                   ` (10 subsequent siblings)
  19 siblings, 1 reply; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Michal Wajdeczko

These operations are related to node. Convert them to the
new appropriate name space xe_ggtt_node.

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c        | 12 ++++++------
 drivers/gpu/drm/xe/xe_ggtt.h        |  4 ++--
 drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 10 +++++-----
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 960f5a28b7ed..05c3e6e929ae 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -347,17 +347,17 @@ static void xe_ggtt_dump_node(struct xe_ggtt *ggtt,
 }
 
 /**
- * xe_ggtt_balloon - prevent allocation of specified GGTT addresses
+ * xe_ggtt_node_balloon - prevent allocation of specified GGTT addresses
  * @ggtt: the &xe_ggtt where we want to make reservation
  * @start: the starting GGTT address of the reserved region
  * @end: then end GGTT address of the reserved region
  * @node: the &xe_ggtt_node to hold reserved GGTT node
  *
- * Use xe_ggtt_deballoon() to release a reserved GGTT node.
+ * Use xe_ggtt_node_deballoon() to release a reserved GGTT node.
  *
  * Return: 0 on success or a negative error code on failure.
  */
-int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct xe_ggtt_node *node)
+int xe_ggtt_node_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct xe_ggtt_node *node)
 {
 	int err;
 
@@ -384,13 +384,13 @@ int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct xe_ggtt_nod
 }
 
 /**
- * xe_ggtt_deballoon - release a reserved GGTT region
+ * xe_ggtt_node_deballoon - release a reserved GGTT region
  * @ggtt: the &xe_ggtt where reserved node belongs
  * @node: the &xe_ggtt_node with reserved GGTT region
  *
- * See xe_ggtt_balloon() for details.
+ * See xe_ggtt_node_balloon() for details.
  */
-void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
+void xe_ggtt_node_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
 {
 	if (!drm_mm_node_allocated(&node->base))
 		return;
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 67ae5f1602a3..e68cede2e6b5 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -13,8 +13,8 @@ struct drm_printer;
 int xe_ggtt_init_early(struct xe_ggtt *ggtt);
 int xe_ggtt_init(struct xe_ggtt *ggtt);
 
-int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct xe_ggtt_node *node);
-void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node);
+int xe_ggtt_node_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct xe_ggtt_node *node);
+void xe_ggtt_node_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node);
 
 int xe_ggtt_node_insert(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 			u32 size, u32 align);
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
index 47222bd9988d..9a1be23ae71d 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
@@ -528,7 +528,7 @@ static int vf_balloon_ggtt(struct xe_gt *gt)
 	start = xe_wopcm_size(xe);
 	end = config->ggtt_base;
 	if (end != start) {
-		err = xe_ggtt_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[0]);
+		err = xe_ggtt_node_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[0]);
 		if (err)
 			goto failed;
 	}
@@ -536,7 +536,7 @@ static int vf_balloon_ggtt(struct xe_gt *gt)
 	start = config->ggtt_base + config->ggtt_size;
 	end = GUC_GGTT_TOP;
 	if (end != start) {
-		err = xe_ggtt_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[1]);
+		err = xe_ggtt_node_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[1]);
 		if (err)
 			goto deballoon;
 	}
@@ -544,7 +544,7 @@ static int vf_balloon_ggtt(struct xe_gt *gt)
 	return 0;
 
 deballoon:
-	xe_ggtt_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
+	xe_ggtt_node_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
 failed:
 	return err;
 }
@@ -555,8 +555,8 @@ static void deballoon_ggtt(struct drm_device *drm, void *arg)
 	struct xe_ggtt *ggtt = tile->mem.ggtt;
 
 	xe_tile_assert(tile, IS_SRIOV_VF(tile_to_xe(tile)));
-	xe_ggtt_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[1]);
-	xe_ggtt_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
+	xe_ggtt_node_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[1]);
+	xe_ggtt_node_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
 }
 
 /**
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 11/12] drm/xe: Make xe_ggtt_node struct independent
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (8 preceding siblings ...)
  2024-08-16 15:02 ` [PATCH 10/12] drm/xe: Rename xe_ggtt balloon functions to make the node clear Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 15:02 ` [PATCH 12/12] drm/xe: Fix missing runtime outer protection for ggtt_remove_node Rodrigo Vivi
                   ` (9 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe
  Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Matthew Auld,
	Michal Wajdeczko, Matthew Brost

In some rare cases, the drm_mm node cannot be removed synchronously
due to runtime PM conditions. In this situation, the node removal will
be delegated to a workqueue that will be able to wake up the device
before removing the node.

However, in this situation, the lifetime of the xe_ggtt_node cannot
be restricted to the lifetime of the parent object. So, this patch
introduces the infrastructure so the xe_ggtt_node struct can be
allocated in advance and freed when needed.

By having the ggtt backpointer, it also ensure that the init function
is always called before any attempt to insert or reserve the node
in the GGTT.

v2: s/xe_ggtt_node_force_fini/xe_ggtt_node_fini and use it
    internaly (Brost)

Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 .../gpu/drm/xe/compat-i915-headers/i915_vma.h |   4 +-
 drivers/gpu/drm/xe/display/xe_fb_pin.c        |  36 ++++--
 drivers/gpu/drm/xe/xe_bo.c                    |   2 +-
 drivers/gpu/drm/xe/xe_bo.h                    |   9 +-
 drivers/gpu/drm/xe/xe_bo_types.h              |   2 +-
 drivers/gpu/drm/xe/xe_device_types.h          |   2 +-
 drivers/gpu/drm/xe/xe_ggtt.c                  | 103 ++++++++++++++++--
 drivers/gpu/drm/xe/xe_ggtt.h                  |   2 +
 drivers/gpu/drm/xe/xe_ggtt_types.h            |   8 +-
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c    |  34 +++---
 .../gpu/drm/xe/xe_gt_sriov_pf_config_types.h  |   2 +-
 drivers/gpu/drm/xe/xe_gt_sriov_vf.c           |  26 ++++-
 12 files changed, 181 insertions(+), 49 deletions(-)

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
index 3028ac1ba72f..bdae8392e125 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
@@ -20,7 +20,7 @@ struct xe_bo;
 
 struct i915_vma {
 	struct xe_bo *bo, *dpt;
-	struct xe_ggtt_node node;
+	struct xe_ggtt_node *node;
 };
 
 #define i915_ggtt_clear_scanout(bo) do { } while (0)
@@ -29,7 +29,7 @@ struct i915_vma {
 
 static inline u32 i915_ggtt_offset(const struct i915_vma *vma)
 {
-	return vma->node.base.start;
+	return vma->node->base.start;
 }
 
 #endif
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index de4930b67a29..087e553d9c65 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -204,20 +204,28 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 	if (xe_bo_is_vram(bo) && ggtt->flags & XE_GGTT_FLAGS_64K)
 		align = max_t(u32, align, SZ_64K);
 
-	if (bo->ggtt_node.base.size && view->type == I915_GTT_VIEW_NORMAL) {
+	if (bo->ggtt_node && view->type == I915_GTT_VIEW_NORMAL) {
 		vma->node = bo->ggtt_node;
 	} else if (view->type == I915_GTT_VIEW_NORMAL) {
 		u32 x, size = bo->ttm.base.size;
 
-		ret = xe_ggtt_node_insert_locked(ggtt, &vma->node, size, align, 0);
-		if (ret)
+		vma->node = xe_ggtt_node_init(ggtt);
+		if (IS_ERR(vma->node)) {
+			ret = PTR_ERR(vma->node);
 			goto out_unlock;
+		}
+
+		ret = xe_ggtt_node_insert_locked(ggtt, vma->node, size, align, 0);
+		if (ret) {
+			xe_ggtt_node_fini(vma->node);
+			goto out_unlock;
+		}
 
 		for (x = 0; x < size; x += XE_PAGE_SIZE) {
 			u64 pte = ggtt->pt_ops->pte_encode_bo(bo, x,
 							      xe->pat.idx[XE_CACHE_NONE]);
 
-			ggtt->pt_ops->ggtt_set_pte(ggtt, vma->node.base.start + x, pte);
+			ggtt->pt_ops->ggtt_set_pte(ggtt, vma->node->base.start + x, pte);
 		}
 	} else {
 		u32 i, ggtt_ofs;
@@ -226,11 +234,19 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 		/* display seems to use tiles instead of bytes here, so convert it back.. */
 		u32 size = intel_rotation_info_size(rot_info) * XE_PAGE_SIZE;
 
-		ret = xe_ggtt_node_insert_locked(ggtt, &vma->node, size, align, 0);
-		if (ret)
+		vma->node = xe_ggtt_node_init(ggtt);
+		if (IS_ERR(vma->node)) {
+			ret = PTR_ERR(vma->node);
 			goto out_unlock;
+		}
+
+		ret = xe_ggtt_node_insert_locked(ggtt, vma->node, size, align, 0);
+		if (ret) {
+			xe_ggtt_node_fini(vma->node);
+			goto out_unlock;
+		}
 
-		ggtt_ofs = vma->node.base.start;
+		ggtt_ofs = vma->node->base.start;
 
 		for (i = 0; i < ARRAY_SIZE(rot_info->plane); i++)
 			write_ggtt_rotated(bo, ggtt, &ggtt_ofs,
@@ -323,9 +339,9 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
 
 	if (vma->dpt)
 		xe_bo_unpin_map_no_vm(vma->dpt);
-	else if (!xe_ggtt_node_allocated(&vma->bo->ggtt_node) ||
-		 vma->bo->ggtt_node.base.start != vma->node.base.start)
-		xe_ggtt_node_remove(ggtt, &vma->node, false);
+	else if (!xe_ggtt_node_allocated(vma->bo->ggtt_node) ||
+		 vma->bo->ggtt_node->base.start != vma->node->base.start)
+		xe_ggtt_node_remove(ggtt, vma->node, false);
 
 	ttm_bo_reserve(&vma->bo->ttm, false, false, NULL);
 	ttm_bo_unpin(&vma->bo->ttm);
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 74c850777246..c4261527b1c7 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -1098,7 +1098,7 @@ static void xe_ttm_bo_destroy(struct ttm_buffer_object *ttm_bo)
 
 	xe_assert(xe, list_empty(&ttm_bo->base.gpuva.list));
 
-	if (bo->ggtt_node.base.size)
+	if (bo->ggtt_node)
 		xe_ggtt_remove_bo(bo->tile->mem.ggtt, bo);
 
 #ifdef CONFIG_PROC_FS
diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
index faffbda55517..f588e3a98105 100644
--- a/drivers/gpu/drm/xe/xe_bo.h
+++ b/drivers/gpu/drm/xe/xe_bo.h
@@ -195,9 +195,12 @@ xe_bo_main_addr(struct xe_bo *bo, size_t page_size)
 static inline u32
 xe_bo_ggtt_addr(struct xe_bo *bo)
 {
-	XE_WARN_ON(bo->ggtt_node.base.size > bo->size);
-	XE_WARN_ON(bo->ggtt_node.base.start + bo->ggtt_node.base.size > (1ull << 32));
-	return bo->ggtt_node.base.start;
+	if (XE_WARN_ON(!bo->ggtt_node))
+		return -ENOENT;
+
+	XE_WARN_ON(bo->ggtt_node->base.size > bo->size);
+	XE_WARN_ON(bo->ggtt_node->base.start + bo->ggtt_node->base.size > (1ull << 32));
+	return bo->ggtt_node->base.start;
 }
 
 int xe_bo_vmap(struct xe_bo *bo);
diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
index 4b1de9f5be00..2ed558ac2264 100644
--- a/drivers/gpu/drm/xe/xe_bo_types.h
+++ b/drivers/gpu/drm/xe/xe_bo_types.h
@@ -40,7 +40,7 @@ struct xe_bo {
 	/** @placement: current placement for this BO */
 	struct ttm_placement placement;
 	/** @ggtt_node: GGTT node if this BO is mapped in the GGTT */
-	struct xe_ggtt_node ggtt_node;
+	struct xe_ggtt_node *ggtt_node;
 	/** @vmap: iosys map of this buffer */
 	struct iosys_map vmap;
 	/** @ttm_kmap: TTM bo kmap object for internal use only. Keep off. */
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index d2b3d8a0c1bd..06fcb92568c7 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -204,7 +204,7 @@ struct xe_tile {
 			struct xe_memirq memirq;
 
 			/** @sriov.vf.ggtt_balloon: GGTT regions excluded from use. */
-			struct xe_ggtt_node ggtt_balloon[2];
+			struct xe_ggtt_node *ggtt_balloon[2];
 		} vf;
 	} sriov;
 
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 05c3e6e929ae..5c04c1bc8417 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -353,6 +353,7 @@ static void xe_ggtt_dump_node(struct xe_ggtt *ggtt,
  * @end: then end GGTT address of the reserved region
  * @node: the &xe_ggtt_node to hold reserved GGTT node
  *
+ * It cannot be called without first having called xe_ggtt_init().
  * Use xe_ggtt_node_deballoon() to release a reserved GGTT node.
  *
  * Return: 0 on success or a negative error code on failure.
@@ -361,6 +362,9 @@ int xe_ggtt_node_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct xe_ggt
 {
 	int err;
 
+	if (!node || !node->ggtt)
+		return -ENOENT;
+
 	xe_tile_assert(ggtt->tile, start < end);
 	xe_tile_assert(ggtt->tile, IS_ALIGNED(start, XE_PAGE_SIZE));
 	xe_tile_assert(ggtt->tile, IS_ALIGNED(end, XE_PAGE_SIZE));
@@ -392,14 +396,20 @@ int xe_ggtt_node_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct xe_ggt
  */
 void xe_ggtt_node_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
 {
-	if (!drm_mm_node_allocated(&node->base))
+	if (!node || !node->ggtt)
 		return;
 
+	if (!drm_mm_node_allocated(&node->base))
+		goto free_node;
+
 	xe_ggtt_dump_node(ggtt, &node->base, "deballoon");
 
 	mutex_lock(&ggtt->lock);
 	drm_mm_remove_node(&node->base);
 	mutex_unlock(&ggtt->lock);
+
+free_node:
+	xe_ggtt_node_fini(node);
 }
 
 /**
@@ -410,6 +420,7 @@ void xe_ggtt_node_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
  * @align: alignment constrain of the node
  * @mm_flags: flags to control the node behavior
  *
+ * It cannot be called without first having called xe_ggtt_init() once.
  * To be used in cases where ggtt->lock is already taken.
  *
  * Return: 0 on success or a negative error code on failure.
@@ -417,6 +428,9 @@ void xe_ggtt_node_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
 int xe_ggtt_node_insert_locked(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 			       u32 size, u32 align, u32 mm_flags)
 {
+	if (!node || !node->ggtt)
+		return -ENOENT;
+
 	return drm_mm_insert_node_generic(&ggtt->mm, &node->base, size, align, 0,
 					  mm_flags);
 }
@@ -428,6 +442,8 @@ int xe_ggtt_node_insert_locked(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
  * @size: size of the node
  * @align: alignment constrain of the node
  *
+ * It cannot be called without first having called xe_ggtt_init() once.
+ *
  * Return: 0 on success or a negative error code on failure.
  */
 int xe_ggtt_node_insert(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
@@ -435,6 +451,9 @@ int xe_ggtt_node_insert(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 {
 	int ret;
 
+	if (!node || !node->ggtt)
+		return -ENOENT;
+
 	mutex_lock(&ggtt->lock);
 	ret = xe_ggtt_node_insert_locked(ggtt, node, size,
 					 align, DRM_MM_INSERT_HIGH);
@@ -443,6 +462,43 @@ int xe_ggtt_node_insert(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 	return ret;
 }
 
+/**
+ * xe_ggtt_node_init - Initialize %xe_ggtt_node struct
+ * @ggtt: the &xe_ggtt where the new node will later be inserted/reserved.
+ *
+ * This function will allocated the struct %xe_ggtt_node and return it's pointer.
+ * This struct will then be freed after the node removal upon xe_ggtt_node_remove()
+ * or xe_ggtt_node_deballoon().
+ * Having %xe_ggtt_node struct allocated doesn't mean that the node is already allocated
+ * in GGTT. Only the xe_ggtt_node_insert(), xe_ggtt_node_insert_locked(),
+ * xe_ggtt_node_balloon() will ensure the node is inserted or reserved in GGTT.
+ *
+ * Return: A pointer to %xe_ggtt_node struct on success. An ERR_PTR otherwise.
+ **/
+struct xe_ggtt_node *xe_ggtt_node_init(struct xe_ggtt *ggtt)
+{
+	struct xe_ggtt_node *node = kzalloc(sizeof(*node), GFP_KERNEL);
+
+	if (!node)
+		return ERR_PTR(-ENOMEM);
+
+	node->ggtt = ggtt;
+	return node;
+}
+
+/**
+ * xe_ggtt_node_fini - Forcebly finalize %xe_ggtt_node struct
+ * @node: the &xe_ggtt_node to be freed
+ *
+ * If anything went wrong with either xe_ggtt_node_insert(), xe_ggtt_node_insert_locked(),
+ * or xe_ggtt_node_balloon(); and this @node is not going to be reused, then,
+ * this function needs to be called to free the %xe_ggtt_node struct
+ **/
+void xe_ggtt_node_fini(struct xe_ggtt_node *node)
+{
+	kfree(node);
+}
+
 /**
  * xe_ggtt_node_remove - Remove a &xe_ggtt_node from the GGTT
  * @ggtt: the &xe_ggtt where node will be removed
@@ -456,6 +512,9 @@ void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 	bool bound;
 	int idx;
 
+	if (!node || !node->ggtt)
+		return;
+
 	bound = drm_dev_enter(&xe->drm, &idx);
 	if (bound)
 		xe_pm_runtime_get_noresume(xe);
@@ -468,23 +527,29 @@ void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 	mutex_unlock(&ggtt->lock);
 
 	if (!bound)
-		return;
+		goto free_node;
 
 	if (invalidate)
 		xe_ggtt_invalidate(ggtt);
 
 	xe_pm_runtime_put(xe);
 	drm_dev_exit(idx);
+
+free_node:
+	xe_ggtt_node_fini(node);
 }
 
 /**
- * xe_ggtt_node_allocated - Check if node is allocated
+ * xe_ggtt_node_allocated - Check if node is allocated in GGTT
  * @node: the &xe_ggtt_node to be inspected
  *
  * Return: True if allocated, False otherwise.
  */
 bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node)
 {
+	if (!node || !node->ggtt)
+		return false;
+
 	return drm_mm_node_allocated(&node->base);
 }
 
@@ -497,9 +562,14 @@ void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 {
 	u16 cache_mode = bo->flags & XE_BO_FLAG_NEEDS_UC ? XE_CACHE_NONE : XE_CACHE_WB;
 	u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[cache_mode];
-	u64 start = bo->ggtt_node.base.start;
+	u64 start;
 	u64 offset, pte;
 
+	if (XE_WARN_ON(!bo->ggtt_node))
+		return;
+
+	start = bo->ggtt_node->base.start;
+
 	for (offset = 0; offset < bo->size; offset += XE_PAGE_SIZE) {
 		pte = ggtt->pt_ops->pte_encode_bo(bo, offset, pat_index);
 		ggtt->pt_ops->ggtt_set_pte(ggtt, start + offset, pte);
@@ -515,9 +585,9 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 	if (xe_bo_is_vram(bo) && ggtt->flags & XE_GGTT_FLAGS_64K)
 		alignment = SZ_64K;
 
-	if (XE_WARN_ON(bo->ggtt_node.base.size)) {
+	if (XE_WARN_ON(bo->ggtt_node)) {
 		/* Someone's already inserted this BO in the GGTT */
-		xe_tile_assert(ggtt->tile, bo->ggtt_node.base.size == bo->size);
+		xe_tile_assert(ggtt->tile, bo->ggtt_node->base.size == bo->size);
 		return 0;
 	}
 
@@ -526,15 +596,26 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 		return err;
 
 	xe_pm_runtime_get_noresume(tile_to_xe(ggtt->tile));
+
+	bo->ggtt_node = xe_ggtt_node_init(ggtt);
+	if (IS_ERR(bo->ggtt_node)) {
+		err = PTR_ERR(bo->ggtt_node);
+		goto out;
+	}
+
 	mutex_lock(&ggtt->lock);
-	err = drm_mm_insert_node_in_range(&ggtt->mm, &bo->ggtt_node.base, bo->size,
+	err = drm_mm_insert_node_in_range(&ggtt->mm, &bo->ggtt_node->base, bo->size,
 					  alignment, 0, start, end, 0);
-	if (!err)
+	if (err)
+		xe_ggtt_node_fini(bo->ggtt_node);
+	else
 		xe_ggtt_map_bo(ggtt, bo);
 	mutex_unlock(&ggtt->lock);
 
 	if (!err && bo->flags & XE_BO_FLAG_GGTT_INVALIDATE)
 		xe_ggtt_invalidate(ggtt);
+
+out:
 	xe_pm_runtime_put(tile_to_xe(ggtt->tile));
 
 	return err;
@@ -574,13 +655,13 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
  */
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 {
-	if (XE_WARN_ON(!bo->ggtt_node.base.size))
+	if (XE_WARN_ON(!bo->ggtt_node))
 		return;
 
 	/* This BO is not currently in the GGTT */
-	xe_tile_assert(ggtt->tile, bo->ggtt_node.base.size == bo->size);
+	xe_tile_assert(ggtt->tile, bo->ggtt_node->base.size == bo->size);
 
-	xe_ggtt_node_remove(ggtt, &bo->ggtt_node,
+	xe_ggtt_node_remove(ggtt, bo->ggtt_node,
 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
 }
 
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index e68cede2e6b5..0e6f8c396ae1 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -13,6 +13,8 @@ struct drm_printer;
 int xe_ggtt_init_early(struct xe_ggtt *ggtt);
 int xe_ggtt_init(struct xe_ggtt *ggtt);
 
+struct xe_ggtt_node *xe_ggtt_node_init(struct xe_ggtt *ggtt);
+void xe_ggtt_node_fini(struct xe_ggtt_node *node);
 int xe_ggtt_node_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct xe_ggtt_node *node);
 void xe_ggtt_node_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node);
 
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index af312a7d1031..0e8822ae13fc 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -50,9 +50,15 @@ struct xe_ggtt {
 };
 
 /**
- * struct xe_ggtt_node - A node in GGTT
+ * struct xe_ggtt_node - A node in GGTT.
+ *
+ * This struct needs to be initialized (only-once) with xe_ggtt_node_init() before any node
+ * insertion, reservation, or 'ballooning'.
+ * It will, then, be finalized by either xe_ggtt_node_remove() or xe_ggtt_node_deballoon().
  */
 struct xe_ggtt_node {
+	/** @ggtt: Back pointer to xe_ggtt where this region will be inserted at */
+	struct xe_ggtt *ggtt;
 	/** @base: A drm_mm_node */
 	struct drm_mm_node base;
 };
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index e133594cc6bd..c617cdc1e4db 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -232,14 +232,14 @@ static u32 encode_config_ggtt(u32 *cfg, const struct xe_gt_sriov_config *config)
 {
 	u32 n = 0;
 
-	if (xe_ggtt_node_allocated(&config->ggtt_region)) {
+	if (xe_ggtt_node_allocated(config->ggtt_region)) {
 		cfg[n++] = PREP_GUC_KLV_TAG(VF_CFG_GGTT_START);
-		cfg[n++] = lower_32_bits(config->ggtt_region.base.start);
-		cfg[n++] = upper_32_bits(config->ggtt_region.base.start);
+		cfg[n++] = lower_32_bits(config->ggtt_region->base.start);
+		cfg[n++] = upper_32_bits(config->ggtt_region->base.start);
 
 		cfg[n++] = PREP_GUC_KLV_TAG(VF_CFG_GGTT_SIZE);
-		cfg[n++] = lower_32_bits(config->ggtt_region.base.size);
-		cfg[n++] = upper_32_bits(config->ggtt_region.base.size);
+		cfg[n++] = lower_32_bits(config->ggtt_region->base.size);
+		cfg[n++] = upper_32_bits(config->ggtt_region->base.size);
 	}
 
 	return n;
@@ -385,13 +385,13 @@ static void pf_release_ggtt(struct xe_tile *tile, struct xe_ggtt_node *node)
 
 static void pf_release_vf_config_ggtt(struct xe_gt *gt, struct xe_gt_sriov_config *config)
 {
-	pf_release_ggtt(gt_to_tile(gt), &config->ggtt_region);
+	pf_release_ggtt(gt_to_tile(gt), config->ggtt_region);
 }
 
 static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 {
 	struct xe_gt_sriov_config *config = pf_pick_vf_config(gt, vfid);
-	struct xe_ggtt_node *node = &config->ggtt_region;
+	struct xe_ggtt_node *node = config->ggtt_region;
 	struct xe_tile *tile = gt_to_tile(gt);
 	struct xe_ggtt *ggtt = tile->mem.ggtt;
 	u64 alignment = pf_get_ggtt_alignment(gt);
@@ -415,9 +415,15 @@ static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 	if (!size)
 		return 0;
 
+	node = xe_ggtt_node_init(ggtt);
+	if (IS_ERR(node))
+		return PTR_ERR(node);
+
 	err = xe_ggtt_node_insert(ggtt, node, size, alignment);
-	if (unlikely(err))
+	if (unlikely(err)) {
+		xe_ggtt_node_fini(node);
 		return err;
+	}
 
 	xe_ggtt_assign(ggtt, node, vfid);
 	xe_gt_sriov_dbg_verbose(gt, "VF%u assigned GGTT %llx-%llx\n",
@@ -433,7 +439,7 @@ static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 static u64 pf_get_vf_config_ggtt(struct xe_gt *gt, unsigned int vfid)
 {
 	struct xe_gt_sriov_config *config = pf_pick_vf_config(gt, vfid);
-	struct xe_ggtt_node *node = &config->ggtt_region;
+	struct xe_ggtt_node *node = config->ggtt_region;
 
 	xe_gt_assert(gt, !xe_gt_is_media_type(gt));
 	return xe_ggtt_node_allocated(node) ? node->base.size : 0;
@@ -2006,13 +2012,15 @@ int xe_gt_sriov_pf_config_print_ggtt(struct xe_gt *gt, struct drm_printer *p)
 
 	for (n = 1; n <= total_vfs; n++) {
 		config = &gt->sriov.pf.vfs[n].config;
-		if (!xe_ggtt_node_allocated(&config->ggtt_region))
+		if (!xe_ggtt_node_allocated(config->ggtt_region))
 			continue;
 
-		string_get_size(config->ggtt_region.base.size, 1, STRING_UNITS_2, buf, sizeof(buf));
+		string_get_size(config->ggtt_region->base.size, 1, STRING_UNITS_2,
+				buf, sizeof(buf));
 		drm_printf(p, "VF%u:\t%#0llx-%#llx\t(%s)\n",
-			   n, config->ggtt_region.base.start,
-			   config->ggtt_region.base.start + config->ggtt_region.base.size - 1, buf);
+			   n, config->ggtt_region->base.start,
+			   config->ggtt_region->base.start + config->ggtt_region->base.size - 1,
+			   buf);
 	}
 
 	return 0;
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h
index a73d9a4b9e64..2d3b73d78f14 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h
@@ -18,7 +18,7 @@ struct xe_bo;
  */
 struct xe_gt_sriov_config {
 	/** @ggtt_region: GGTT region assigned to the VF. */
-	struct xe_ggtt_node ggtt_region;
+	struct xe_ggtt_node *ggtt_region;
 	/** @lmem_obj: LMEM allocation for use by the VF. */
 	struct xe_bo *lmem_obj;
 	/** @num_ctxs: number of GuC contexts IDs.  */
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
index 9a1be23ae71d..3d9f6a700564 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
@@ -495,6 +495,22 @@ u64 xe_gt_sriov_vf_lmem(struct xe_gt *gt)
 	return gt->sriov.vf.self_config.lmem_size;
 }
 
+static int vf_balloon_ggtt_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+				u64 start, u64 end)
+{
+	int err;
+
+	node = xe_ggtt_node_init(ggtt);
+	if (IS_ERR(node))
+		return PTR_ERR(node);
+
+	err = xe_ggtt_node_balloon(ggtt, start, end, node);
+	if (err)
+		xe_ggtt_node_fini(node);
+
+	return err;
+}
+
 static int vf_balloon_ggtt(struct xe_gt *gt)
 {
 	struct xe_gt_sriov_vf_selfconfig *config = &gt->sriov.vf.self_config;
@@ -528,7 +544,7 @@ static int vf_balloon_ggtt(struct xe_gt *gt)
 	start = xe_wopcm_size(xe);
 	end = config->ggtt_base;
 	if (end != start) {
-		err = xe_ggtt_node_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[0]);
+		err = vf_balloon_ggtt_node(ggtt, tile->sriov.vf.ggtt_balloon[0], start, end);
 		if (err)
 			goto failed;
 	}
@@ -536,7 +552,7 @@ static int vf_balloon_ggtt(struct xe_gt *gt)
 	start = config->ggtt_base + config->ggtt_size;
 	end = GUC_GGTT_TOP;
 	if (end != start) {
-		err = xe_ggtt_node_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[1]);
+		err = vf_balloon_ggtt_node(ggtt, tile->sriov.vf.ggtt_balloon[1], start, end);
 		if (err)
 			goto deballoon;
 	}
@@ -544,7 +560,7 @@ static int vf_balloon_ggtt(struct xe_gt *gt)
 	return 0;
 
 deballoon:
-	xe_ggtt_node_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
+	xe_ggtt_node_deballoon(ggtt, tile->sriov.vf.ggtt_balloon[0]);
 failed:
 	return err;
 }
@@ -555,8 +571,8 @@ static void deballoon_ggtt(struct drm_device *drm, void *arg)
 	struct xe_ggtt *ggtt = tile->mem.ggtt;
 
 	xe_tile_assert(tile, IS_SRIOV_VF(tile_to_xe(tile)));
-	xe_ggtt_node_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[1]);
-	xe_ggtt_node_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
+	xe_ggtt_node_deballoon(ggtt, tile->sriov.vf.ggtt_balloon[1]);
+	xe_ggtt_node_deballoon(ggtt, tile->sriov.vf.ggtt_balloon[0]);
 }
 
 /**
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 12/12] drm/xe: Fix missing runtime outer protection for ggtt_remove_node
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (9 preceding siblings ...)
  2024-08-16 15:02 ` [PATCH 11/12] drm/xe: Make xe_ggtt_node struct independent Rodrigo Vivi
@ 2024-08-16 15:02 ` Rodrigo Vivi
  2024-08-16 16:08   ` Lucas De Marchi
  2024-08-16 15:07 ` [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Lucas De Marchi
                   ` (8 subsequent siblings)
  19 siblings, 1 reply; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-16 15:02 UTC (permalink / raw)
  To: intel-xe
  Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Matthew Auld,
	Paulo Zanoni, Francois Dugast, Thomas Hellström,
	Matthew Brost

Defer the ggtt node removal to a thread if runtime_pm is not active.

The ggtt node removal can be called from multiple places, including
places where we cannot protect with outer callers and places we are
within other locks. So, try to grab the runtime reference if the
device is already active, otherwise defer the removal to a separate
thread from where we are sure we can wake the device up.

v2: - use xe wq instead of system wq (Matt and CI)
    - Avoid GFP_KERNEL to be future proof since this removal can
    be called from outside our drivers and we don't want to block
    if atomic is needed. (Brost)
v3: amend forgot chunk declaring xe_device.
v4: Use a xe_ggtt_region to encapsulate the node and remova info,
    wihtout the need for any memory allocation at runtime.
v5: Actually fill the delayed_removal.invalidate (Brost)
v6: - Ensure that ggtt_region is not freed before work finishes (Auld)
    - Own wq to ensures that the queued works are flushed before
      ggtt_fini (Brost)
v7: also free ggtt_region on early !bound return (Auld)
v8: Address the null deref (CI)
v9: Based on the new xe_ggtt_node for the proper care of the lifetime
    of the object.
v10: Redo the lost v5 change. (Brost)

Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: Francois Dugast <francois.dugast@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c       | 107 ++++++++++++++++++-----------
 drivers/gpu/drm/xe/xe_ggtt_types.h |  12 ++++
 2 files changed, 79 insertions(+), 40 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 5c04c1bc8417..110acf828974 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -161,6 +161,7 @@ static void ggtt_fini_early(struct drm_device *drm, void *arg)
 {
 	struct xe_ggtt *ggtt = arg;
 
+	destroy_workqueue(ggtt->wq);
 	mutex_destroy(&ggtt->lock);
 	drm_mm_takedown(&ggtt->mm);
 }
@@ -242,6 +243,8 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
 	else
 		ggtt->pt_ops = &xelp_pt_ops;
 
+	ggtt->wq = alloc_workqueue("xe-ggtt-wq", 0, 0);
+
 	drm_mm_init(&ggtt->mm, xe_wopcm_size(xe),
 		    ggtt->size - xe_wopcm_size(xe));
 	mutex_init(&ggtt->lock);
@@ -276,6 +279,68 @@ static void xe_ggtt_initial_clear(struct xe_ggtt *ggtt)
 	mutex_unlock(&ggtt->lock);
 }
 
+static void ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+			     bool invalidate)
+{
+	struct xe_device *xe = tile_to_xe(ggtt->tile);
+	bool bound;
+	int idx;
+
+	if (!node || !node->ggtt)
+		return;
+
+	bound = drm_dev_enter(&xe->drm, &idx);
+
+	mutex_lock(&ggtt->lock);
+	if (bound)
+		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
+	drm_mm_remove_node(&node->base);
+	node->base.size = 0;
+	mutex_unlock(&ggtt->lock);
+
+	if (!bound)
+		goto free_node;
+
+	if (invalidate)
+		xe_ggtt_invalidate(ggtt);
+
+	drm_dev_exit(idx);
+
+free_node:
+	xe_ggtt_node_fini(node);
+}
+
+static void ggtt_node_remove_work_func(struct work_struct *work)
+{
+	struct xe_ggtt_node *node = container_of(work, typeof(*node),
+						 delayed_removal.work);
+	struct xe_device *xe = tile_to_xe(node->ggtt->tile);
+
+	xe_pm_runtime_get(xe);
+	ggtt_node_remove(node->ggtt, node, node->delayed_removal.invalidate);
+	xe_pm_runtime_put(xe);
+}
+
+/**
+ * xe_ggtt_node_remove - Remove a &xe_ggtt_node from the GGTT
+ * @ggtt: the &xe_ggtt where node will be removed
+ * @node: the &xe_ggtt_node to be removed
+ * @invalidate: if node needs invalidation upon removal
+ */
+void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+			 bool invalidate)
+{
+	struct xe_device *xe = tile_to_xe(ggtt->tile);
+
+	if (xe_pm_runtime_get_if_active(xe)) {
+		ggtt_node_remove(ggtt, node, invalidate);
+		xe_pm_runtime_put(xe);
+	} else {
+		node->delayed_removal.invalidate = invalidate;
+		queue_work(ggtt->wq, &node->delayed_removal.work);
+	}
+}
+
 /**
  * xe_ggtt_init - Regular non-early GGTT initialization
  * @ggtt: the &xe_ggtt to be initialized
@@ -482,7 +547,9 @@ struct xe_ggtt_node *xe_ggtt_node_init(struct xe_ggtt *ggtt)
 	if (!node)
 		return ERR_PTR(-ENOMEM);
 
+	INIT_WORK(&node->delayed_removal.work, ggtt_node_remove_work_func);
 	node->ggtt = ggtt;
+
 	return node;
 }
 
@@ -499,46 +566,6 @@ void xe_ggtt_node_fini(struct xe_ggtt_node *node)
 	kfree(node);
 }
 
-/**
- * xe_ggtt_node_remove - Remove a &xe_ggtt_node from the GGTT
- * @ggtt: the &xe_ggtt where node will be removed
- * @node: the &xe_ggtt_node to be removed
- * @invalidate: if node needs invalidation upon removal
- */
-void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
-			 bool invalidate)
-{
-	struct xe_device *xe = tile_to_xe(ggtt->tile);
-	bool bound;
-	int idx;
-
-	if (!node || !node->ggtt)
-		return;
-
-	bound = drm_dev_enter(&xe->drm, &idx);
-	if (bound)
-		xe_pm_runtime_get_noresume(xe);
-
-	mutex_lock(&ggtt->lock);
-	if (bound)
-		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
-	drm_mm_remove_node(&node->base);
-	node->base.size = 0;
-	mutex_unlock(&ggtt->lock);
-
-	if (!bound)
-		goto free_node;
-
-	if (invalidate)
-		xe_ggtt_invalidate(ggtt);
-
-	xe_pm_runtime_put(xe);
-	drm_dev_exit(idx);
-
-free_node:
-	xe_ggtt_node_fini(node);
-}
-
 /**
  * xe_ggtt_node_allocated - Check if node is allocated in GGTT
  * @node: the &xe_ggtt_node to be inspected
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index 0e8822ae13fc..8b83610c6ee6 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -47,6 +47,8 @@ struct xe_ggtt {
 	struct drm_mm mm;
 	/** @access_count: counts GGTT writes */
 	unsigned int access_count;
+	/** @wq: Dedicated unordered work queue to process node removals */
+	struct workqueue_struct *wq;
 };
 
 /**
@@ -61,6 +63,16 @@ struct xe_ggtt_node {
 	struct xe_ggtt *ggtt;
 	/** @base: A drm_mm_node */
 	struct drm_mm_node base;
+	/**
+	 * @delayed_removal: Information for removal through work thread when
+	 * device runtime_pm is suspended
+	 */
+	struct {
+		/** @delayed_removal.work: The work struct for the delayed removal */
+		struct work_struct work;
+		/** @delayed_removal.invalidate: If it needs invalidation upon removal */
+		bool invalidate;
+	} delayed_removal;
 };
 
 /**
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* Re: [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (10 preceding siblings ...)
  2024-08-16 15:02 ` [PATCH 12/12] drm/xe: Fix missing runtime outer protection for ggtt_remove_node Rodrigo Vivi
@ 2024-08-16 15:07 ` Lucas De Marchi
  2024-08-16 15:09 ` ✓ CI.Patch_applied: success for series starting with [01/12] " Patchwork
                   ` (7 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Lucas De Marchi @ 2024-08-16 15:07 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe, jose.souza, Himal Prasad Ghimiray

On Fri, Aug 16, 2024 at 11:02:32AM GMT, Rodrigo Vivi wrote:
>Apparently this was only useful when enabling ggtt support
>for the very first time and never used again.
>It is also not useful now that we have the ggtt_dump available
>through debugfs.
>
>Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

>---
> drivers/gpu/drm/xe/xe_ggtt.c | 20 --------------------
> drivers/gpu/drm/xe/xe_ggtt.h |  1 -
> 2 files changed, 21 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
>index 0cdbc1296e88..add14f3dea1f 100644
>--- a/drivers/gpu/drm/xe/xe_ggtt.c
>+++ b/drivers/gpu/drm/xe/xe_ggtt.c
>@@ -314,26 +314,6 @@ static void xe_ggtt_invalidate(struct xe_ggtt *ggtt)
> 	ggtt_invalidate_gt_tlb(ggtt->tile->media_gt);
> }
>
>-void xe_ggtt_printk(struct xe_ggtt *ggtt, const char *prefix)
>-{
>-	u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[XE_CACHE_WB];
>-	u64 addr, scratch_pte;
>-
>-	scratch_pte = ggtt->pt_ops->pte_encode_bo(ggtt->scratch, 0, pat_index);
>-
>-	printk("%sGlobal GTT:", prefix);
>-	for (addr = 0; addr < ggtt->size; addr += XE_PAGE_SIZE) {
>-		unsigned int i = addr / XE_PAGE_SIZE;
>-
>-		xe_tile_assert(ggtt->tile, addr <= U32_MAX);
>-		if (ggtt->gsm[i] == scratch_pte)
>-			continue;
>-
>-		printk("%s    ggtt[0x%08x] = 0x%016llx",
>-		       prefix, (u32)addr, ggtt->gsm[i]);
>-	}
>-}
>-
> static void xe_ggtt_dump_node(struct xe_ggtt *ggtt,
> 			      const struct drm_mm_node *node, const char *description)
> {
>diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
>index 6a96fd54bf60..2546bab97507 100644
>--- a/drivers/gpu/drm/xe/xe_ggtt.h
>+++ b/drivers/gpu/drm/xe/xe_ggtt.h
>@@ -12,7 +12,6 @@ struct drm_printer;
>
> int xe_ggtt_init_early(struct xe_ggtt *ggtt);
> int xe_ggtt_init(struct xe_ggtt *ggtt);
>-void xe_ggtt_printk(struct xe_ggtt *ggtt, const char *prefix);
>
> int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct drm_mm_node *node);
> void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct drm_mm_node *node);
>-- 
>2.46.0
>

^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✓ CI.Patch_applied: success for series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (11 preceding siblings ...)
  2024-08-16 15:07 ` [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Lucas De Marchi
@ 2024-08-16 15:09 ` Patchwork
  2024-08-16 15:09 ` ✓ CI.checkpatch: " Patchwork
                   ` (6 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2024-08-16 15:09 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe

== Series Details ==

Series: series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
URL   : https://patchwork.freedesktop.org/series/137398/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 1f246caab12a drm-tip: 2024y-08m-16d-14h-57m-02s UTC integration manifest
=== git am output follows ===
Applying: drm/xe: Removed unused xe_ggtt_printk
Applying: drm/xe: Introduce GGTT documentation
Applying: drm/xe: Remove unnecessary drm_mm.h includes
Applying: drm/{i915, xe}: Avoid direct inspection of dpt_vma from outside dpt
Applying: drm/xe: Encapsulate drm_mm_node inside xe_ggtt_node
Applying: drm/xe: Rename xe_ggtt_node related functions
Applying: drm/xe: Limit drm_mm_node_allocated access to xe_ggtt_node
Applying: drm/xe: Introduce xe_ggtt_largest_hole
Applying: drm/xe: Introduce xe_ggtt_print_holes
Applying: drm/xe: Rename xe_ggtt balloon functions to make the node clear
Applying: drm/xe: Make xe_ggtt_node struct independent
Applying: drm/xe: Fix missing runtime outer protection for ggtt_remove_node



^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✓ CI.checkpatch: success for series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (12 preceding siblings ...)
  2024-08-16 15:09 ` ✓ CI.Patch_applied: success for series starting with [01/12] " Patchwork
@ 2024-08-16 15:09 ` Patchwork
  2024-08-16 15:12 ` ✓ CI.KUnit: " Patchwork
                   ` (5 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2024-08-16 15:09 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe

== Series Details ==

Series: series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
URL   : https://patchwork.freedesktop.org/series/137398/
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
9fe5037901cabbcdf27a6fe0dfb047ca1474d363
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 3d1c0d1e8188a1ff28a4a1ba92c58a5b34e2dda7
Author: Rodrigo Vivi <rodrigo.vivi@intel.com>
Date:   Fri Aug 16 11:02:43 2024 -0400

    drm/xe: Fix missing runtime outer protection for ggtt_remove_node
    
    Defer the ggtt node removal to a thread if runtime_pm is not active.
    
    The ggtt node removal can be called from multiple places, including
    places where we cannot protect with outer callers and places we are
    within other locks. So, try to grab the runtime reference if the
    device is already active, otherwise defer the removal to a separate
    thread from where we are sure we can wake the device up.
    
    v2: - use xe wq instead of system wq (Matt and CI)
        - Avoid GFP_KERNEL to be future proof since this removal can
        be called from outside our drivers and we don't want to block
        if atomic is needed. (Brost)
    v3: amend forgot chunk declaring xe_device.
    v4: Use a xe_ggtt_region to encapsulate the node and remova info,
        wihtout the need for any memory allocation at runtime.
    v5: Actually fill the delayed_removal.invalidate (Brost)
    v6: - Ensure that ggtt_region is not freed before work finishes (Auld)
        - Own wq to ensures that the queued works are flushed before
          ggtt_fini (Brost)
    v7: also free ggtt_region on early !bound return (Auld)
    v8: Address the null deref (CI)
    v9: Based on the new xe_ggtt_node for the proper care of the lifetime
        of the object.
    v10: Redo the lost v5 change. (Brost)
    
    Cc: Matthew Auld <matthew.auld@intel.com>
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Cc: Francois Dugast <francois.dugast@intel.com>
    Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
+ /mt/dim checkpatch 1f246caab12a2343f21ac227a26698e44a6490ff drm-intel
8fc79fcd9288 drm/xe: Removed unused xe_ggtt_printk
0b4a5719d01b drm/xe: Introduce GGTT documentation
380349575fd9 drm/xe: Remove unnecessary drm_mm.h includes
849c86d92ba3 drm/{i915, xe}: Avoid direct inspection of dpt_vma from outside dpt
8bb7a9baf447 drm/xe: Encapsulate drm_mm_node inside xe_ggtt_node
4d1b080abca8 drm/xe: Rename xe_ggtt_node related functions
c10860eb581b drm/xe: Limit drm_mm_node_allocated access to xe_ggtt_node
18c9f388645f drm/xe: Introduce xe_ggtt_largest_hole
2cb237015161 drm/xe: Introduce xe_ggtt_print_holes
49e5fbe135ec drm/xe: Rename xe_ggtt balloon functions to make the node clear
690b7b4b8775 drm/xe: Make xe_ggtt_node struct independent
3d1c0d1e8188 drm/xe: Fix missing runtime outer protection for ggtt_remove_node



^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✓ CI.KUnit: success for series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (13 preceding siblings ...)
  2024-08-16 15:09 ` ✓ CI.checkpatch: " Patchwork
@ 2024-08-16 15:12 ` Patchwork
  2024-08-16 15:27 ` ✓ CI.Build: " Patchwork
                   ` (4 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2024-08-16 15:12 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe

== Series Details ==

Series: series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
URL   : https://patchwork.freedesktop.org/series/137398/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[15:10:00] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:10:07] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make 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)
      |      ^~~~~~~~~~~~~~~~~

[15:11:05] Starting KUnit Kernel (1/1)...
[15:11:05] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:11:06] =================== guc_dbm (7 subtests) ===================
[15:11:06] [PASSED] test_empty
[15:11:06] [PASSED] test_default
[15:11:06] ======================== test_size  ========================
[15:11:06] [PASSED] 4
[15:11:06] [PASSED] 8
[15:11:06] [PASSED] 32
[15:11:06] [PASSED] 256
[15:11:06] ==================== [PASSED] test_size ====================
[15:11:06] ======================= test_reuse  ========================
[15:11:06] [PASSED] 4
[15:11:06] [PASSED] 8
[15:11:06] [PASSED] 32
[15:11:06] [PASSED] 256
[15:11:06] =================== [PASSED] test_reuse ====================
[15:11:06] =================== test_range_overlap  ====================
[15:11:06] [PASSED] 4
[15:11:06] [PASSED] 8
[15:11:06] [PASSED] 32
[15:11:06] [PASSED] 256
[15:11:06] =============== [PASSED] test_range_overlap ================
[15:11:06] =================== test_range_compact  ====================
[15:11:06] [PASSED] 4
[15:11:06] [PASSED] 8
[15:11:06] [PASSED] 32
[15:11:06] [PASSED] 256
[15:11:06] =============== [PASSED] test_range_compact ================
[15:11:06] ==================== test_range_spare  =====================
[15:11:06] [PASSED] 4
[15:11:06] [PASSED] 8
[15:11:06] [PASSED] 32
[15:11:06] [PASSED] 256
[15:11:06] ================ [PASSED] test_range_spare =================
[15:11:06] ===================== [PASSED] guc_dbm =====================
[15:11:06] =================== guc_idm (6 subtests) ===================
[15:11:06] [PASSED] bad_init
[15:11:06] [PASSED] no_init
[15:11:06] [PASSED] init_fini
[15:11:06] [PASSED] check_used
[15:11:06] [PASSED] check_quota
[15:11:06] [PASSED] check_all
[15:11:06] ===================== [PASSED] guc_idm =====================
[15:11:06] ================== no_relay (3 subtests) ===================
[15:11:06] [PASSED] xe_drops_guc2pf_if_not_ready
[15:11:06] [PASSED] xe_drops_guc2vf_if_not_ready
[15:11:06] [PASSED] xe_rejects_send_if_not_ready
[15:11:06] ==================== [PASSED] no_relay =====================
[15:11:06] ================== pf_relay (14 subtests) ==================
[15:11:06] [PASSED] pf_rejects_guc2pf_too_short
[15:11:06] [PASSED] pf_rejects_guc2pf_too_long
[15:11:06] [PASSED] pf_rejects_guc2pf_no_payload
[15:11:06] [PASSED] pf_fails_no_payload
[15:11:06] [PASSED] pf_fails_bad_origin
[15:11:06] [PASSED] pf_fails_bad_type
[15:11:06] [PASSED] pf_txn_reports_error
[15:11:06] [PASSED] pf_txn_sends_pf2guc
[15:11:06] [PASSED] pf_sends_pf2guc
[15:11:06] [SKIPPED] pf_loopback_nop
[15:11:06] [SKIPPED] pf_loopback_echo
[15:11:06] [SKIPPED] pf_loopback_fail
[15:11:06] [SKIPPED] pf_loopback_busy
[15:11:06] [SKIPPED] pf_loopback_retry
[15:11:06] ==================== [PASSED] pf_relay =====================
[15:11:06] ================== vf_relay (3 subtests) ===================
[15:11:06] [PASSED] vf_rejects_guc2vf_too_short
[15:11:06] [PASSED] vf_rejects_guc2vf_too_long
[15:11:06] [PASSED] vf_rejects_guc2vf_no_payload
[15:11:06] ==================== [PASSED] vf_relay =====================
[15:11:06] ================= pf_service (11 subtests) =================
[15:11:06] [PASSED] pf_negotiate_any
[15:11:06] [PASSED] pf_negotiate_base_match
[15:11:06] [PASSED] pf_negotiate_base_newer
[15:11:06] [PASSED] pf_negotiate_base_next
[15:11:06] [SKIPPED] pf_negotiate_base_older
[15:11:06] [PASSED] pf_negotiate_base_prev
[15:11:06] [PASSED] pf_negotiate_latest_match
[15:11:06] [PASSED] pf_negotiate_latest_newer
[15:11:06] [PASSED] pf_negotiate_latest_next
[15:11:06] [SKIPPED] pf_negotiate_latest_older
[15:11:06] [SKIPPED] pf_negotiate_latest_prev
[15:11:06] =================== [PASSED] pf_service ====================
[15:11:06] ===================== lmtt (1 subtest) =====================
[15:11:06] ======================== test_ops  =========================
[15:11:06] [PASSED] 2-level
[15:11:06] [PASSED] multi-level
[15:11:06] ==================== [PASSED] test_ops =====================
[15:11:06] ====================== [PASSED] lmtt =======================
[15:11:06] =================== xe_mocs (2 subtests) ===================
[15:11:06] ================ xe_live_mocs_kernel_kunit  ================
[15:11:06] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[15:11:06] ================ xe_live_mocs_reset_kunit  =================
[15:11:06] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[15:11:06] ==================== [SKIPPED] xe_mocs =====================
[15:11:06] ================= xe_migrate (2 subtests) ==================
[15:11:06] ================= xe_migrate_sanity_kunit  =================
[15:11:06] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[15:11:06] ================== xe_validate_ccs_kunit  ==================
[15:11:06] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[15:11:06] =================== [SKIPPED] xe_migrate ===================
[15:11:06] ================== xe_dma_buf (1 subtest) ==================
[15:11:06] ==================== xe_dma_buf_kunit  =====================
[15:11:06] ================ [SKIPPED] xe_dma_buf_kunit ================
[15:11:06] =================== [SKIPPED] xe_dma_buf ===================
[15:11:06] ==================== xe_bo (2 subtests) ====================
[15:11:06] ================== xe_ccs_migrate_kunit  ===================
[15:11:06] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[15:11:06] ==================== xe_bo_evict_kunit  ====================
[15:11:06] =============== [SKIPPED] xe_bo_evict_kunit ================
[15:11:06] ===================== [SKIPPED] xe_bo ======================
[15:11:06] ==================== args (11 subtests) ====================
[15:11:06] [PASSED] count_args_test
[15:11:06] [PASSED] call_args_example
[15:11:06] [PASSED] call_args_test
[15:11:06] [PASSED] drop_first_arg_example
[15:11:06] [PASSED] drop_first_arg_test
[15:11:06] [PASSED] first_arg_example
[15:11:06] [PASSED] first_arg_test
[15:11:06] [PASSED] last_arg_example
[15:11:06] [PASSED] last_arg_test
[15:11:06] [PASSED] pick_arg_example
[15:11:06] [PASSED] sep_comma_example
[15:11:06] ====================== [PASSED] args =======================
[15:11:06] =================== xe_pci (2 subtests) ====================
stty: 'standard input': Inappropriate ioctl for device
[15:11:06] [PASSED] xe_gmdid_graphics_ip
[15:11:06] [PASSED] xe_gmdid_media_ip
[15:11:06] ===================== [PASSED] xe_pci ======================
[15:11:06] =================== xe_rtp (2 subtests) ====================
[15:11:06] =============== xe_rtp_process_to_sr_tests  ================
[15:11:06] [PASSED] coalesce-same-reg
[15:11:06] [PASSED] no-match-no-add
[15:11:06] [PASSED] match-or
[15:11:06] [PASSED] match-or-xfail
[15:11:06] [PASSED] no-match-no-add-multiple-rules
[15:11:06] [PASSED] two-regs-two-entries
[15:11:06] [PASSED] clr-one-set-other
[15:11:06] [PASSED] set-field
[15:11:06] [PASSED] conflict-duplicate
[15:11:06] [PASSED] conflict-not-disjoint
[15:11:06] [PASSED] conflict-reg-type
[15:11:06] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[15:11:06] ================== xe_rtp_process_tests  ===================
[15:11:06] [PASSED] active1
[15:11:06] [PASSED] active2
[15:11:06] [PASSED] active-inactive
[15:11:06] [PASSED] inactive-active
[15:11:06] [PASSED] inactive-1st_or_active-inactive
[15:11:06] [PASSED] inactive-2nd_or_active-inactive
[15:11:06] [PASSED] inactive-last_or_active-inactive
[15:11:06] [PASSED] inactive-no_or_active-inactive
[15:11:06] ============== [PASSED] xe_rtp_process_tests ===============
[15:11:06] ===================== [PASSED] xe_rtp ======================
[15:11:06] ==================== xe_wa (1 subtest) =====================
[15:11:06] ======================== xe_wa_gt  =========================
[15:11:06] [PASSED] TIGERLAKE (B0)
[15:11:06] [PASSED] DG1 (A0)
[15:11:06] [PASSED] DG1 (B0)
[15:11:06] [PASSED] ALDERLAKE_S (A0)
[15:11:06] [PASSED] ALDERLAKE_S (B0)
[15:11:06] [PASSED] ALDERLAKE_S (C0)
[15:11:06] [PASSED] ALDERLAKE_S (D0)
[15:11:06] [PASSED] ALDERLAKE_P (A0)
[15:11:06] [PASSED] ALDERLAKE_P (B0)
[15:11:06] [PASSED] ALDERLAKE_P (C0)
[15:11:06] [PASSED] ALDERLAKE_S_RPLS (D0)
[15:11:06] [PASSED] ALDERLAKE_P_RPLU (E0)
[15:11:06] [PASSED] DG2_G10 (C0)
[15:11:06] [PASSED] DG2_G11 (B1)
[15:11:06] [PASSED] DG2_G12 (A1)
[15:11:06] [PASSED] METEORLAKE (g:A0, m:A0)
[15:11:06] [PASSED] METEORLAKE (g:A0, m:A0)
[15:11:06] [PASSED] METEORLAKE (g:A0, m:A0)
[15:11:06] [PASSED] LUNARLAKE (g:A0, m:A0)
[15:11:06] [PASSED] LUNARLAKE (g:B0, m:A0)
[15:11:06] [PASSED] BATTLEMAGE (g:A0, m:A1)
[15:11:06] ==================== [PASSED] xe_wa_gt =====================
[15:11:06] ====================== [PASSED] xe_wa ======================
[15:11:06] ============================================================
[15:11:06] Testing complete. Ran 121 tests: passed: 106, skipped: 15
[15:11:06] Elapsed time: 65.572s total, 6.867s configuring, 58.271s building, 0.414s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[15:11:06] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:11:09] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make 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)
      |      ^~~~~~~~~~~~~~~~~

[15:11:49] Starting KUnit Kernel (1/1)...
[15:11:49] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:11:49] ============ drm_test_pick_cmdline (2 subtests) ============
[15:11:49] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[15:11:49] =============== drm_test_pick_cmdline_named  ===============
[15:11:49] [PASSED] NTSC
[15:11:49] [PASSED] NTSC-J
[15:11:49] [PASSED] PAL
[15:11:49] [PASSED] PAL-M
[15:11:49] =========== [PASSED] drm_test_pick_cmdline_named ===========
[15:11:49] ============== [PASSED] drm_test_pick_cmdline ==============
[15:11:49] ================== drm_buddy (7 subtests) ==================
[15:11:49] [PASSED] drm_test_buddy_alloc_limit
[15:11:49] [PASSED] drm_test_buddy_alloc_optimistic
[15:11:49] [PASSED] drm_test_buddy_alloc_pessimistic
[15:11:49] [PASSED] drm_test_buddy_alloc_pathological
[15:11:49] [PASSED] drm_test_buddy_alloc_contiguous
[15:11:49] [PASSED] drm_test_buddy_alloc_clear
[15:11:49] [PASSED] drm_test_buddy_alloc_range_bias
[15:11:49] ==================== [PASSED] drm_buddy ====================
[15:11:49] ============= drm_cmdline_parser (40 subtests) =============
[15:11:49] [PASSED] drm_test_cmdline_force_d_only
[15:11:49] [PASSED] drm_test_cmdline_force_D_only_dvi
[15:11:49] [PASSED] drm_test_cmdline_force_D_only_hdmi
[15:11:49] [PASSED] drm_test_cmdline_force_D_only_not_digital
[15:11:49] [PASSED] drm_test_cmdline_force_e_only
[15:11:49] [PASSED] drm_test_cmdline_res
[15:11:49] [PASSED] drm_test_cmdline_res_vesa
[15:11:49] [PASSED] drm_test_cmdline_res_vesa_rblank
[15:11:49] [PASSED] drm_test_cmdline_res_rblank
[15:11:49] [PASSED] drm_test_cmdline_res_bpp
[15:11:49] [PASSED] drm_test_cmdline_res_refresh
[15:11:49] [PASSED] drm_test_cmdline_res_bpp_refresh
[15:11:49] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[15:11:49] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[15:11:49] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[15:11:49] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[15:11:49] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[15:11:49] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[15:11:49] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[15:11:49] [PASSED] drm_test_cmdline_res_margins_force_on
[15:11:49] [PASSED] drm_test_cmdline_res_vesa_margins
[15:11:49] [PASSED] drm_test_cmdline_name
[15:11:49] [PASSED] drm_test_cmdline_name_bpp
[15:11:49] [PASSED] drm_test_cmdline_name_option
[15:11:49] [PASSED] drm_test_cmdline_name_bpp_option
[15:11:49] [PASSED] drm_test_cmdline_rotate_0
[15:11:49] [PASSED] drm_test_cmdline_rotate_90
[15:11:49] [PASSED] drm_test_cmdline_rotate_180
[15:11:49] [PASSED] drm_test_cmdline_rotate_270
[15:11:49] [PASSED] drm_test_cmdline_hmirror
[15:11:49] [PASSED] drm_test_cmdline_vmirror
[15:11:49] [PASSED] drm_test_cmdline_margin_options
[15:11:49] [PASSED] drm_test_cmdline_multiple_options
[15:11:49] [PASSED] drm_test_cmdline_bpp_extra_and_option
[15:11:49] [PASSED] drm_test_cmdline_extra_and_option
[15:11:49] [PASSED] drm_test_cmdline_freestanding_options
[15:11:49] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[15:11:49] [PASSED] drm_test_cmdline_panel_orientation
[15:11:49] ================ drm_test_cmdline_invalid  =================
[15:11:49] [PASSED] margin_only
[15:11:49] [PASSED] interlace_only
[15:11:49] [PASSED] res_missing_x
[15:11:49] [PASSED] res_missing_y
[15:11:49] [PASSED] res_bad_y
[15:11:49] [PASSED] res_missing_y_bpp
[15:11:49] [PASSED] res_bad_bpp
[15:11:49] [PASSED] res_bad_refresh
[15:11:49] [PASSED] res_bpp_refresh_force_on_off
[15:11:49] [PASSED] res_invalid_mode
[15:11:49] [PASSED] res_bpp_wrong_place_mode
[15:11:49] [PASSED] name_bpp_refresh
[15:11:49] [PASSED] name_refresh
[15:11:49] [PASSED] name_refresh_wrong_mode
[15:11:49] [PASSED] name_refresh_invalid_mode
[15:11:49] [PASSED] rotate_multiple
[15:11:49] [PASSED] rotate_invalid_val
[15:11:49] [PASSED] rotate_truncated
[15:11:49] [PASSED] invalid_option
[15:11:49] [PASSED] invalid_tv_option
[15:11:49] [PASSED] truncated_tv_option
[15:11:49] ============ [PASSED] drm_test_cmdline_invalid =============
[15:11:49] =============== drm_test_cmdline_tv_options  ===============
[15:11:49] [PASSED] NTSC
[15:11:49] [PASSED] NTSC_443
[15:11:49] [PASSED] NTSC_J
[15:11:49] [PASSED] PAL
[15:11:49] [PASSED] PAL_M
[15:11:49] [PASSED] PAL_N
[15:11:49] [PASSED] SECAM
[15:11:49] [PASSED] MONO_525
[15:11:49] [PASSED] MONO_625
[15:11:49] =========== [PASSED] drm_test_cmdline_tv_options ===========
[15:11:49] =============== [PASSED] drm_cmdline_parser ================
[15:11:49] ========== drmm_connector_hdmi_init (19 subtests) ==========
[15:11:49] [PASSED] drm_test_connector_hdmi_init_valid
[15:11:49] [PASSED] drm_test_connector_hdmi_init_bpc_8
[15:11:49] [PASSED] drm_test_connector_hdmi_init_bpc_10
[15:11:49] [PASSED] drm_test_connector_hdmi_init_bpc_12
[15:11:49] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[15:11:49] [PASSED] drm_test_connector_hdmi_init_bpc_null
[15:11:49] [PASSED] drm_test_connector_hdmi_init_formats_empty
[15:11:49] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[15:11:49] [PASSED] drm_test_connector_hdmi_init_null_ddc
[15:11:49] [PASSED] drm_test_connector_hdmi_init_null_product
[15:11:49] [PASSED] drm_test_connector_hdmi_init_null_vendor
[15:11:49] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[15:11:49] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[15:11:49] [PASSED] drm_test_connector_hdmi_init_product_valid
[15:11:49] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[15:11:49] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[15:11:49] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[15:11:49] ========= drm_test_connector_hdmi_init_type_valid  =========
[15:11:49] [PASSED] HDMI-A
[15:11:49] [PASSED] HDMI-B
[15:11:49] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[15:11:49] ======== drm_test_connector_hdmi_init_type_invalid  ========
[15:11:49] [PASSED] Unknown
[15:11:49] [PASSED] VGA
[15:11:49] [PASSED] DVI-I
[15:11:49] [PASSED] DVI-D
[15:11:49] [PASSED] DVI-A
[15:11:49] [PASSED] Composite
[15:11:49] [PASSED] SVIDEO
[15:11:49] [PASSED] LVDS
[15:11:49] [PASSED] Component
[15:11:49] [PASSED] DIN
[15:11:49] [PASSED] DP
[15:11:49] [PASSED] TV
[15:11:49] [PASSED] eDP
[15:11:49] [PASSED] Virtual
[15:11:49] [PASSED] DSI
[15:11:49] [PASSED] DPI
[15:11:49] [PASSED] Writeback
[15:11:49] [PASSED] SPI
[15:11:49] [PASSED] USB
[15:11:49] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[15:11:49] ============ [PASSED] drmm_connector_hdmi_init =============
[15:11:49] ============= drmm_connector_init (3 subtests) =============
[15:11:49] [PASSED] drm_test_drmm_connector_init
[15:11:49] [PASSED] drm_test_drmm_connector_init_null_ddc
[15:11:49] ========= drm_test_drmm_connector_init_type_valid  =========
[15:11:49] [PASSED] Unknown
[15:11:49] [PASSED] VGA
[15:11:49] [PASSED] DVI-I
[15:11:49] [PASSED] DVI-D
[15:11:49] [PASSED] DVI-A
[15:11:49] [PASSED] Composite
[15:11:49] [PASSED] SVIDEO
[15:11:49] [PASSED] LVDS
[15:11:49] [PASSED] Component
[15:11:49] [PASSED] DIN
[15:11:49] [PASSED] DP
[15:11:49] [PASSED] HDMI-A
[15:11:49] [PASSED] HDMI-B
[15:11:49] [PASSED] TV
[15:11:49] [PASSED] eDP
[15:11:49] [PASSED] Virtual
[15:11:49] [PASSED] DSI
[15:11:49] [PASSED] DPI
[15:11:49] [PASSED] Writeback
[15:11:49] [PASSED] SPI
[15:11:49] [PASSED] USB
[15:11:49] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[15:11:49] =============== [PASSED] drmm_connector_init ===============
[15:11:49] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[15:11:49] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[15:11:49] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[15:11:49] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[15:11:49] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[15:11:49] ========== drm_test_get_tv_mode_from_name_valid  ===========
[15:11:49] [PASSED] NTSC
[15:11:49] [PASSED] NTSC-443
[15:11:49] [PASSED] NTSC-J
[15:11:49] [PASSED] PAL
[15:11:49] [PASSED] PAL-M
[15:11:49] [PASSED] PAL-N
[15:11:49] [PASSED] SECAM
[15:11:49] [PASSED] Mono
[15:11:49] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[15:11:49] [PASSED] drm_test_get_tv_mode_from_name_truncated
[15:11:49] ============ [PASSED] drm_get_tv_mode_from_name ============
[15:11:49] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[15:11:49] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[15:11:49] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[15:11:49] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[15:11:49] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[15:11:49] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[15:11:49] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[15:11:49] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[15:11:49] [PASSED] VIC 96
[15:11:49] [PASSED] VIC 97
[15:11:49] [PASSED] VIC 101
[15:11:49] [PASSED] VIC 102
[15:11:49] [PASSED] VIC 106
[15:11:49] [PASSED] VIC 107
[15:11:49] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[15:11:49] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[15:11:49] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[15:11:49] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[15:11:49] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[15:11:49] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[15:11:49] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[15:11:49] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[15:11:49] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[15:11:49] [PASSED] Automatic
[15:11:49] [PASSED] Full
[15:11:49] [PASSED] Limited 16:235
[15:11:49] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[15:11:49] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[15:11:49] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[15:11:49] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[15:11:49] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[15:11:49] [PASSED] RGB
[15:11:49] [PASSED] YUV 4:2:0
[15:11:49] [PASSED] YUV 4:2:2
[15:11:49] [PASSED] YUV 4:4:4
[15:11:49] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[15:11:49] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[15:11:49] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[15:11:49] ============= drm_damage_helper (21 subtests) ==============
[15:11:49] [PASSED] drm_test_damage_iter_no_damage
[15:11:49] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[15:11:49] [PASSED] drm_test_damage_iter_no_damage_src_moved
[15:11:49] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[15:11:49] [PASSED] drm_test_damage_iter_no_damage_not_visible
[15:11:49] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[15:11:49] [PASSED] drm_test_damage_iter_no_damage_no_fb
[15:11:49] [PASSED] drm_test_damage_iter_simple_damage
[15:11:49] [PASSED] drm_test_damage_iter_single_damage
[15:11:49] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[15:11:49] [PASSED] drm_test_damage_iter_single_damage_outside_src
[15:11:49] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[15:11:49] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[15:11:49] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[15:11:49] [PASSED] drm_test_damage_iter_single_damage_src_moved
[15:11:49] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[15:11:49] [PASSED] drm_test_damage_iter_damage
[15:11:49] [PASSED] drm_test_damage_iter_damage_one_intersect
[15:11:49] [PASSED] drm_test_damage_iter_damage_one_outside
[15:11:49] [PASSED] drm_test_damage_iter_damage_src_moved
[15:11:49] [PASSED] drm_test_damage_iter_damage_not_visible
[15:11:49] ================ [PASSED] drm_damage_helper ================
[15:11:49] ============== drm_dp_mst_helper (3 subtests) ==============
[15:11:49] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[15:11:49] [PASSED] Clock 154000 BPP 30 DSC disabled
[15:11:49] [PASSED] Clock 234000 BPP 30 DSC disabled
[15:11:49] [PASSED] Clock 297000 BPP 24 DSC disabled
[15:11:49] [PASSED] Clock 332880 BPP 24 DSC enabled
[15:11:49] [PASSED] Clock 324540 BPP 24 DSC enabled
[15:11:49] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[15:11:49] ============== drm_test_dp_mst_calc_pbn_div  ===============
[15:11:49] [PASSED] Link rate 2000000 lane count 4
[15:11:49] [PASSED] Link rate 2000000 lane count 2
[15:11:49] [PASSED] Link rate 2000000 lane count 1
[15:11:49] [PASSED] Link rate 1350000 lane count 4
[15:11:49] [PASSED] Link rate 1350000 lane count 2
[15:11:49] [PASSED] Link rate 1350000 lane count 1
[15:11:49] [PASSED] Link rate 1000000 lane count 4
[15:11:49] [PASSED] Link rate 1000000 lane count 2
[15:11:49] [PASSED] Link rate 1000000 lane count 1
[15:11:49] [PASSED] Link rate 810000 lane count 4
[15:11:49] [PASSED] Link rate 810000 lane count 2
[15:11:49] [PASSED] Link rate 810000 lane count 1
[15:11:49] [PASSED] Link rate 540000 lane count 4
[15:11:49] [PASSED] Link rate 540000 lane count 2
[15:11:49] [PASSED] Link rate 540000 lane count 1
[15:11:49] [PASSED] Link rate 270000 lane count 4
[15:11:49] [PASSED] Link rate 270000 lane count 2
[15:11:49] [PASSED] Link rate 270000 lane count 1
[15:11:49] [PASSED] Link rate 162000 lane count 4
[15:11:49] [PASSED] Link rate 162000 lane count 2
[15:11:49] [PASSED] Link rate 162000 lane count 1
[15:11:49] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[15:11:49] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[15:11:49] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[15:11:49] [PASSED] DP_POWER_UP_PHY with port number
[15:11:49] [PASSED] DP_POWER_DOWN_PHY with port number
[15:11:49] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[15:11:49] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[15:11:49] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[15:11:49] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[15:11:49] [PASSED] DP_QUERY_PAYLOAD with port number
[15:11:49] [PASSED] DP_QUERY_PAYLOAD with VCPI
[15:11:49] [PASSED] DP_REMOTE_DPCD_READ with port number
[15:11:49] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[15:11:49] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[15:11:49] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[15:11:49] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[15:11:49] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[15:11:49] [PASSED] DP_REMOTE_I2C_READ with port number
[15:11:49] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[15:11:49] [PASSED] DP_REMOTE_I2C_READ with transactions array
[15:11:49] [PASSED] DP_REMOTE_I2C_WRITE with port number
[15:11:49] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[15:11:49] [PASSED] DP_REMOTE_I2C_WRITE with data array
[15:11:49] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[15:11:49] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[15:11:49] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[15:11:49] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[15:11:49] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[15:11:49] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[15:11:49] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[15:11:49] ================ [PASSED] drm_dp_mst_helper ================
[15:11:49] ================== drm_exec (7 subtests) ===================
[15:11:49] [PASSED] sanitycheck
[15:11:49] [PASSED] test_lock
[15:11:49] [PASSED] test_lock_unlock
[15:11:49] [PASSED] test_duplicates
[15:11:49] [PASSED] test_prepare
[15:11:49] [PASSED] test_prepare_array
[15:11:49] [PASSED] test_multiple_loops
[15:11:49] ==================== [PASSED] drm_exec =====================
[15:11:49] =========== drm_format_helper_test (17 subtests) ===========
[15:11:49] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[15:11:49] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[15:11:49] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[15:11:49] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[15:11:49] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[15:11:49] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[15:11:49] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[15:11:49] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[15:11:49] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[15:11:49] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[15:11:49] ============== drm_test_fb_xrgb8888_to_mono  ===============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[15:11:49] ==================== drm_test_fb_swab  =====================
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ================ [PASSED] drm_test_fb_swab =================
[15:11:49] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[15:11:49] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[15:11:49] [PASSED] single_pixel_source_buffer
[15:11:49] [PASSED] single_pixel_clip_rectangle
[15:11:49] [PASSED] well_known_colors
[15:11:49] [PASSED] destination_pitch
[15:11:49] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[15:11:49] ================= drm_test_fb_clip_offset  =================
[15:11:49] [PASSED] pass through
[15:11:49] [PASSED] horizontal offset
[15:11:49] [PASSED] vertical offset
[15:11:49] [PASSED] horizontal and vertical offset
[15:11:49] [PASSED] horizontal offset (custom pitch)
[15:11:49] [PASSED] vertical offset (custom pitch)
[15:11:49] [PASSED] horizontal and vertical offset (custom pitch)
[15:11:49] ============= [PASSED] drm_test_fb_clip_offset =============
[15:11:49] ============== drm_test_fb_build_fourcc_list  ==============
[15:11:49] [PASSED] no native formats
[15:11:49] [PASSED] XRGB8888 as native format
[15:11:49] [PASSED] remove duplicates
[15:11:49] [PASSED] convert alpha formats
[15:11:49] [PASSED] random formats
[15:11:49] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[15:11:49] =================== drm_test_fb_memcpy  ====================
[15:11:49] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[15:11:49] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[15:11:49] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[15:11:49] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[15:11:49] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[15:11:49] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[15:11:49] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[15:11:49] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[15:11:49] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[15:11:49] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[15:11:49] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[15:11:49] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[15:11:49] =============== [PASSED] drm_test_fb_memcpy ================
[15:11:49] ============= [PASSED] drm_format_helper_test ==============
[15:11:49] ================= drm_format (18 subtests) =================
[15:11:49] [PASSED] drm_test_format_block_width_invalid
[15:11:49] [PASSED] drm_test_format_block_width_one_plane
[15:11:49] [PASSED] drm_test_format_block_width_two_plane
[15:11:49] [PASSED] drm_test_format_block_width_three_plane
[15:11:49] [PASSED] drm_test_format_block_width_tiled
[15:11:49] [PASSED] drm_test_format_block_height_invalid
[15:11:49] [PASSED] drm_test_format_block_height_one_plane
[15:11:49] [PASSED] drm_test_format_block_height_two_plane
[15:11:49] [PASSED] drm_test_format_block_height_three_plane
[15:11:49] [PASSED] drm_test_format_block_height_tiled
[15:11:49] [PASSED] drm_test_format_min_pitch_invalid
[15:11:49] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[15:11:49] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[15:11:49] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[15:11:49] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[15:11:49] [PASSED] drm_test_format_min_pitch_two_plane
[15:11:49] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[15:11:49] [PASSED] drm_test_format_min_pitch_tiled
[15:11:49] =================== [PASSED] drm_format ====================
[15:11:49] =============== drm_framebuffer (1 subtest) ================
[15:11:49] =============== drm_test_framebuffer_create  ===============
[15:11:49] [PASSED] ABGR8888 normal sizes
[15:11:49] [PASSED] ABGR8888 max sizes
[15:11:49] [PASSED] ABGR8888 pitch greater than min required
[15:11:49] [PASSED] ABGR8888 pitch less than min required
[15:11:49] [PASSED] ABGR8888 Invalid width
[15:11:49] [PASSED] ABGR8888 Invalid buffer handle
[15:11:49] [PASSED] No pixel format
[15:11:49] [PASSED] ABGR8888 Width 0
[15:11:49] [PASSED] ABGR8888 Height 0
[15:11:49] [PASSED] ABGR8888 Out of bound height * pitch combination
[15:11:49] [PASSED] ABGR8888 Large buffer offset
[15:11:49] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[15:11:49] [PASSED] ABGR8888 Valid buffer modifier
[15:11:49] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[15:11:49] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[15:11:49] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[15:11:49] [PASSED] NV12 Normal sizes
[15:11:49] [PASSED] NV12 Max sizes
[15:11:49] [PASSED] NV12 Invalid pitch
[15:11:49] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[15:11:49] [PASSED] NV12 different  modifier per-plane
[15:11:49] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[15:11:49] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[15:11:49] [PASSED] NV12 Modifier for inexistent plane
[15:11:49] [PASSED] NV12 Handle for inexistent plane
[15:11:49] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[15:11:49] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[15:11:49] [PASSED] YVU420 Normal sizes
[15:11:49] [PASSED] YVU420 Max sizes
[15:11:49] [PASSED] YVU420 Invalid pitch
[15:11:49] [PASSED] YVU420 Different pitches
[15:11:49] [PASSED] YVU420 Different buffer offsets/pitches
[15:11:49] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[15:11:49] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[15:11:49] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[15:11:49] [PASSED] YVU420 Valid modifier
[15:11:49] [PASSED] YVU420 Different modifiers per plane
[15:11:49] [PASSED] YVU420 Modifier for inexistent plane
[15:11:49] [PASSED] X0L2 Normal sizes
[15:11:49] [PASSED] X0L2 Max sizes
[15:11:49] [PASSED] X0L2 Invalid pitch
[15:11:49] [PASSED] X0L2 Pitch greater than minimum required
[15:11:49] [PASSED] X0L2 Handle for inexistent plane
[15:11:49] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[15:11:49] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[15:11:49] [PASSED] X0L2 Valid modifier
[15:11:49] [PASSED] X0L2 Modifier for inexistent plane
[15:11:49] =========== [PASSED] drm_test_framebuffer_create ===========
[15:11:49] ================= [PASSED] drm_framebuffer =================
[15:11:49] ================ drm_gem_shmem (8 subtests) ================
[15:11:49] [PASSED] drm_gem_shmem_test_obj_create
[15:11:49] [PASSED] drm_gem_shmem_test_obj_create_private
[15:11:49] [PASSED] drm_gem_shmem_test_pin_pages
[15:11:49] [PASSED] drm_gem_shmem_test_vmap
[15:11:49] [PASSED] drm_gem_shmem_test_get_pages_sgt
[15:11:49] [PASSED] drm_gem_shmem_test_get_sg_table
[15:11:49] [PASSED] drm_gem_shmem_test_madvise
[15:11:49] [PASSED] drm_gem_shmem_test_purge
[15:11:49] ================== [PASSED] drm_gem_shmem ==================
[15:11:49] === drm_atomic_helper_connector_hdmi_check (22 subtests) ===
[15:11:49] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[15:11:49] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[15:11:49] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[15:11:49] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[15:11:49] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[15:11:49] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[15:11:49] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[15:11:49] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[15:11:49] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[15:11:49] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback
[15:11:49] [PASSED] drm_test_check_max_tmds_rate_format_fallback
[15:11:49] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[15:11:49] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[15:11:49] [PASSED] drm_test_check_output_bpc_dvi
[15:11:49] [PASSED] drm_test_check_output_bpc_format_vic_1
[15:11:49] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[15:11:49] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[15:11:49] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[15:11:49] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[15:11:49] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[15:11:49] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[15:11:49] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[15:11:49] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[15:11:49] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[15:11:49] [PASSED] drm_test_check_broadcast_rgb_value
[15:11:49] [PASSED] drm_test_check_bpc_8_value
[15:11:49] [PASSED] drm_test_check_bpc_10_value
[15:11:49] [PASSED] drm_test_check_bpc_12_value
[15:11:49] [PASSED] drm_test_check_format_value
[15:11:49] [PASSED] drm_test_check_tmds_char_value
[15:11:49] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[15:11:49] ================= drm_managed (2 subtests) =================
[15:11:49] [PASSED] drm_test_managed_release_action
[15:11:49] [PASSED] drm_test_managed_run_action
[15:11:49] =================== [PASSED] drm_managed ===================
[15:11:49] =================== drm_mm (6 subtests) ====================
[15:11:49] [PASSED] drm_test_mm_init
[15:11:49] [PASSED] drm_test_mm_debug
[15:11:49] [PASSED] drm_test_mm_align32
[15:11:49] [PASSED] drm_test_mm_align64
[15:11:49] [PASSED] drm_test_mm_lowest
[15:11:49] [PASSED] drm_test_mm_highest
[15:11:49] ===================== [PASSED] drm_mm ======================
[15:11:49] ============= drm_modes_analog_tv (5 subtests) =============
[15:11:49] [PASSED] drm_test_modes_analog_tv_mono_576i
[15:11:49] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[15:11:49] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[15:11:49] [PASSED] drm_test_modes_analog_tv_pal_576i
[15:11:49] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[15:11:49] =============== [PASSED] drm_modes_analog_tv ===============
[15:11:49] ============== drm_plane_helper (2 subtests) ===============
[15:11:49] =============== drm_test_check_plane_state  ================
[15:11:49] [PASSED] clipping_simple
[15:11:49] [PASSED] clipping_rotate_reflect
[15:11:49] [PASSED] positioning_simple
[15:11:49] [PASSED] upscaling
[15:11:49] [PASSED] downscaling
[15:11:49] [PASSED] rounding1
[15:11:49] [PASSED] rounding2
[15:11:49] [PASSED] rounding3
[15:11:49] [PASSED] rounding4
[15:11:49] =========== [PASSED] drm_test_check_plane_state ============
[15:11:49] =========== drm_test_check_invalid_plane_state  ============
[15:11:49] [PASSED] positioning_invalid
[15:11:49] [PASSED] upscaling_invalid
stty: 'standard input': Inappropriate ioctl for device
[15:11:49] [PASSED] downscaling_invalid
[15:11:49] ======= [PASSED] drm_test_check_invalid_plane_state ========
[15:11:49] ================ [PASSED] drm_plane_helper =================
[15:11:49] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[15:11:49] ====== drm_test_connector_helper_tv_get_modes_check  =======
[15:11:49] [PASSED] None
[15:11:49] [PASSED] PAL
[15:11:49] [PASSED] NTSC
[15:11:49] [PASSED] Both, NTSC Default
[15:11:49] [PASSED] Both, PAL Default
[15:11:49] [PASSED] Both, NTSC Default, with PAL on command-line
[15:11:49] [PASSED] Both, PAL Default, with NTSC on command-line
[15:11:49] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[15:11:49] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[15:11:49] ================== drm_rect (9 subtests) ===================
[15:11:49] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[15:11:49] [PASSED] drm_test_rect_clip_scaled_not_clipped
[15:11:49] [PASSED] drm_test_rect_clip_scaled_clipped
[15:11:49] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[15:11:49] ================= drm_test_rect_intersect  =================
[15:11:49] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[15:11:49] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[15:11:49] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[15:11:49] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[15:11:49] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[15:11:49] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[15:11:49] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[15:11:49] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[15:11:49] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[15:11:49] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[15:11:49] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[15:11:49] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[15:11:49] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[15:11:49] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[15:11:49] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[15:11:49] ============= [PASSED] drm_test_rect_intersect =============
[15:11:49] ================ drm_test_rect_calc_hscale  ================
[15:11:49] [PASSED] normal use
[15:11:49] [PASSED] out of max range
[15:11:49] [PASSED] out of min range
[15:11:49] [PASSED] zero dst
[15:11:49] [PASSED] negative src
[15:11:49] [PASSED] negative dst
[15:11:49] ============ [PASSED] drm_test_rect_calc_hscale ============
[15:11:49] ================ drm_test_rect_calc_vscale  ================
[15:11:49] [PASSED] normal use
[15:11:49] [PASSED] out of max range
[15:11:49] [PASSED] out of min range
[15:11:49] [PASSED] zero dst
[15:11:49] [PASSED] negative src
[15:11:49] [PASSED] negative dst
[15:11:49] ============ [PASSED] drm_test_rect_calc_vscale ============
[15:11:49] ================== drm_test_rect_rotate  ===================
[15:11:49] [PASSED] reflect-x
[15:11:49] [PASSED] reflect-y
[15:11:49] [PASSED] rotate-0
[15:11:49] [PASSED] rotate-90
[15:11:49] [PASSED] rotate-180
[15:11:49] [PASSED] rotate-270
[15:11:49] ============== [PASSED] drm_test_rect_rotate ===============
[15:11:49] ================ drm_test_rect_rotate_inv  =================
[15:11:49] [PASSED] reflect-x
[15:11:49] [PASSED] reflect-y
[15:11:49] [PASSED] rotate-0
[15:11:49] [PASSED] rotate-90
[15:11:49] [PASSED] rotate-180
[15:11:49] [PASSED] rotate-270
[15:11:49] ============ [PASSED] drm_test_rect_rotate_inv =============
[15:11:49] ==================== [PASSED] drm_rect =====================
[15:11:49] ============================================================
[15:11:49] Testing complete. Ran 515 tests: passed: 515
[15:11:49] Elapsed time: 43.071s total, 2.863s configuring, 39.926s building, 0.246s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[15:11:49] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:11:52] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[15:12:05] Starting KUnit Kernel (1/1)...
[15:12:05] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:12:05] ================= ttm_device (5 subtests) ==================
[15:12:05] [PASSED] ttm_device_init_basic
[15:12:05] [PASSED] ttm_device_init_multiple
[15:12:05] [PASSED] ttm_device_fini_basic
[15:12:05] [PASSED] ttm_device_init_no_vma_man
[15:12:05] ================== ttm_device_init_pools  ==================
[15:12:05] [PASSED] No DMA allocations, no DMA32 required
[15:12:05] [PASSED] DMA allocations, DMA32 required
[15:12:05] [PASSED] No DMA allocations, DMA32 required
[15:12:05] [PASSED] DMA allocations, no DMA32 required
[15:12:05] ============== [PASSED] ttm_device_init_pools ==============
[15:12:05] =================== [PASSED] ttm_device ====================
[15:12:05] ================== ttm_pool (8 subtests) ===================
[15:12:05] ================== ttm_pool_alloc_basic  ===================
[15:12:05] [PASSED] One page
[15:12:05] [PASSED] More than one page
[15:12:05] [PASSED] Above the allocation limit
[15:12:05] [PASSED] One page, with coherent DMA mappings enabled
[15:12:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[15:12:05] ============== [PASSED] ttm_pool_alloc_basic ===============
[15:12:05] ============== ttm_pool_alloc_basic_dma_addr  ==============
[15:12:05] [PASSED] One page
[15:12:05] [PASSED] More than one page
[15:12:05] [PASSED] Above the allocation limit
[15:12:05] [PASSED] One page, with coherent DMA mappings enabled
[15:12:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[15:12:05] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[15:12:05] [PASSED] ttm_pool_alloc_order_caching_match
[15:12:05] [PASSED] ttm_pool_alloc_caching_mismatch
[15:12:05] [PASSED] ttm_pool_alloc_order_mismatch
[15:12:05] [PASSED] ttm_pool_free_dma_alloc
[15:12:05] [PASSED] ttm_pool_free_no_dma_alloc
[15:12:05] [PASSED] ttm_pool_fini_basic
[15:12:05] ==================== [PASSED] ttm_pool =====================
[15:12:05] ================ ttm_resource (8 subtests) =================
[15:12:05] ================= ttm_resource_init_basic  =================
[15:12:05] [PASSED] Init resource in TTM_PL_SYSTEM
[15:12:05] [PASSED] Init resource in TTM_PL_VRAM
[15:12:05] [PASSED] Init resource in a private placement
[15:12:05] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[15:12:05] ============= [PASSED] ttm_resource_init_basic =============
[15:12:05] [PASSED] ttm_resource_init_pinned
[15:12:05] [PASSED] ttm_resource_fini_basic
[15:12:05] [PASSED] ttm_resource_manager_init_basic
[15:12:05] [PASSED] ttm_resource_manager_usage_basic
[15:12:05] [PASSED] ttm_resource_manager_set_used_basic
[15:12:05] [PASSED] ttm_sys_man_alloc_basic
[15:12:05] [PASSED] ttm_sys_man_free_basic
[15:12:05] ================== [PASSED] ttm_resource ===================
[15:12:05] =================== ttm_tt (15 subtests) ===================
[15:12:05] ==================== ttm_tt_init_basic  ====================
[15:12:05] [PASSED] Page-aligned size
[15:12:05] [PASSED] Extra pages requested
[15:12:05] ================ [PASSED] ttm_tt_init_basic ================
[15:12:05] [PASSED] ttm_tt_init_misaligned
[15:12:05] [PASSED] ttm_tt_fini_basic
[15:12:05] [PASSED] ttm_tt_fini_sg
[15:12:05] [PASSED] ttm_tt_fini_shmem
[15:12:05] [PASSED] ttm_tt_create_basic
[15:12:05] [PASSED] ttm_tt_create_invalid_bo_type
[15:12:05] [PASSED] ttm_tt_create_ttm_exists
[15:12:05] [PASSED] ttm_tt_create_failed
[15:12:05] [PASSED] ttm_tt_destroy_basic
[15:12:05] [PASSED] ttm_tt_populate_null_ttm
[15:12:05] [PASSED] ttm_tt_populate_populated_ttm
[15:12:05] [PASSED] ttm_tt_unpopulate_basic
[15:12:05] [PASSED] ttm_tt_unpopulate_empty_ttm
[15:12:05] [PASSED] ttm_tt_swapin_basic
[15:12:05] ===================== [PASSED] ttm_tt ======================
[15:12:05] =================== ttm_bo (14 subtests) ===================
[15:12:05] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[15:12:05] [PASSED] Cannot be interrupted and sleeps
[15:12:05] [PASSED] Cannot be interrupted, locks straight away
[15:12:05] [PASSED] Can be interrupted, sleeps
[15:12:05] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[15:12:05] [PASSED] ttm_bo_reserve_locked_no_sleep
[15:12:05] [PASSED] ttm_bo_reserve_no_wait_ticket
[15:12:06] [PASSED] ttm_bo_reserve_double_resv
[15:12:06] [PASSED] ttm_bo_reserve_interrupted
[15:12:06] [PASSED] ttm_bo_reserve_deadlock
[15:12:06] [PASSED] ttm_bo_unreserve_basic
[15:12:06] [PASSED] ttm_bo_unreserve_pinned
[15:12:06] [PASSED] ttm_bo_unreserve_bulk
[15:12:06] [PASSED] ttm_bo_put_basic
[15:12:06] [PASSED] ttm_bo_put_shared_resv
[15:12:06] [PASSED] ttm_bo_pin_basic
[15:12:06] [PASSED] ttm_bo_pin_unpin_resource
[15:12:06] [PASSED] ttm_bo_multiple_pin_one_unpin
[15:12:06] ===================== [PASSED] ttm_bo ======================
[15:12:06] ============== ttm_bo_validate (22 subtests) ===============
[15:12:06] ============== ttm_bo_init_reserved_sys_man  ===============
[15:12:06] [PASSED] Buffer object for userspace
[15:12:06] [PASSED] Kernel buffer object
[15:12:06] [PASSED] Shared buffer object
[15:12:06] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[15:12:06] ============== ttm_bo_init_reserved_mock_man  ==============
[15:12:06] [PASSED] Buffer object for userspace
[15:12:06] [PASSED] Kernel buffer object
[15:12:06] [PASSED] Shared buffer object
[15:12:06] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[15:12:06] [PASSED] ttm_bo_init_reserved_resv
[15:12:06] ================== ttm_bo_validate_basic  ==================
[15:12:06] [PASSED] Buffer object for userspace
[15:12:06] [PASSED] Kernel buffer object
[15:12:06] [PASSED] Shared buffer object
[15:12:06] ============== [PASSED] ttm_bo_validate_basic ==============
[15:12:06] [PASSED] ttm_bo_validate_invalid_placement
[15:12:06] ============= ttm_bo_validate_same_placement  ==============
[15:12:06] [PASSED] System manager
[15:12:06] [PASSED] VRAM manager
[15:12:06] ========= [PASSED] ttm_bo_validate_same_placement ==========
[15:12:06] [PASSED] ttm_bo_validate_failed_alloc
[15:12:06] [PASSED] ttm_bo_validate_pinned
[15:12:06] [PASSED] ttm_bo_validate_busy_placement
[15:12:06] ================ ttm_bo_validate_multihop  =================
[15:12:06] [PASSED] Buffer object for userspace
[15:12:06] [PASSED] Kernel buffer object
[15:12:06] [PASSED] Shared buffer object
[15:12:06] ============ [PASSED] ttm_bo_validate_multihop =============
[15:12:06] ========== ttm_bo_validate_no_placement_signaled  ==========
[15:12:06] [PASSED] Buffer object in system domain, no page vector
[15:12:06] [PASSED] Buffer object in system domain with an existing page vector
[15:12:06] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[15:12:06] ======== ttm_bo_validate_no_placement_not_signaled  ========
[15:12:06] [PASSED] Buffer object for userspace
[15:12:06] [PASSED] Kernel buffer object
[15:12:06] [PASSED] Shared buffer object
[15:12:06] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[15:12:06] [PASSED] ttm_bo_validate_move_fence_signaled
[15:12:06] ========= ttm_bo_validate_move_fence_not_signaled  =========
[15:12:06] [PASSED] Waits for GPU
[15:12:06] [PASSED] Tries to lock straight away
[15:12:06] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[15:12:06] [PASSED] ttm_bo_validate_swapout
[15:12:06] [PASSED] ttm_bo_validate_happy_evict
[15:12:06] [PASSED] ttm_bo_validate_all_pinned_evict
[15:12:06] [PASSED] ttm_bo_validate_allowed_only_evict
[15:12:06] [PASSED] ttm_bo_validate_deleted_evict
[15:12:06] [PASSED] ttm_bo_validate_busy_domain_evict
[15:12:06] [PASSED] ttm_bo_validate_evict_gutting
[15:12:06] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[15:12:06] ================= [PASSED] ttm_bo_validate =================
[15:12:06] ============================================================
[15:12:06] Testing complete. Ran 102 tests: passed: 102
[15:12:06] Elapsed time: 17.062s total, 2.640s configuring, 13.595s building, 0.703s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 02/12] drm/xe: Introduce GGTT documentation
  2024-08-16 15:02 ` [PATCH 02/12] drm/xe: Introduce GGTT documentation Rodrigo Vivi
@ 2024-08-16 15:13   ` Lucas De Marchi
  0 siblings, 0 replies; 35+ messages in thread
From: Lucas De Marchi @ 2024-08-16 15:13 UTC (permalink / raw)
  To: Rodrigo Vivi
  Cc: intel-xe, jose.souza, Matthew Brost, Michal Wajdeczko,
	Himal Prasad Ghimiray

On Fri, Aug 16, 2024 at 11:02:33AM GMT, Rodrigo Vivi wrote:
>Document xe_ggtt and ensure it is part of the built kernel docs.
>
>v2: - Accepted all Michal's suggestions
>    - Rebased on top of new set_pte per platform/wa function pointer
>v3: - Typos and other acronym fixes (Michal)
>
>Cc: Matthew Brost <matthew.brost@intel.com>
>Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com> #v1
>Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 06/12] drm/xe: Rename xe_ggtt_node related functions
  2024-08-16 15:02 ` [PATCH 06/12] drm/xe: Rename xe_ggtt_node related functions Rodrigo Vivi
@ 2024-08-16 15:24   ` Lucas De Marchi
  0 siblings, 0 replies; 35+ messages in thread
From: Lucas De Marchi @ 2024-08-16 15:24 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe, jose.souza, Matthew Brost

On Fri, Aug 16, 2024 at 11:02:37AM GMT, Rodrigo Vivi wrote:
>+/**
>+ * xe_ggtt_node_remove - Remove a &xe_ggtt_node from the GGTT
>+ * @ggtt: the &xe_ggtt where node will be removed
>+ * @node: the &xe_ggtt_node to be removed
>+ * @invalidate: if node needs invalidation upon removal
>+ */
>+void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
>+			 bool invalidate)

pass by note for future... replace `bool invalidate` with `int flags`.

Lucas De Marchi

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 07/12] drm/xe: Limit drm_mm_node_allocated access to xe_ggtt_node
  2024-08-16 15:02 ` [PATCH 07/12] drm/xe: Limit drm_mm_node_allocated access to xe_ggtt_node Rodrigo Vivi
@ 2024-08-16 15:26   ` Lucas De Marchi
  0 siblings, 0 replies; 35+ messages in thread
From: Lucas De Marchi @ 2024-08-16 15:26 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe, jose.souza, Michal Wajdeczko, Matthew Brost

On Fri, Aug 16, 2024 at 11:02:38AM GMT, Rodrigo Vivi wrote:
>diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
>index e0da24bb5774..7c8bbaa30fca 100644
>--- a/drivers/gpu/drm/xe/xe_ggtt.c
>+++ b/drivers/gpu/drm/xe/xe_ggtt.c
>@@ -477,6 +477,17 @@ void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
> 	drm_dev_exit(idx);
> }
>
>+/**
>+ * xe_ggtt_node_allocated - Check if node is allocated
>+ * @node: the &xe_ggtt_node to be inspected
>+ *
>+ * Return: True if allocated, False otherwise.
>+ */
>+bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node)
>+{
>+	return drm_mm_node_allocated(&node->base);
>+}

since you could fwd declare the drm_mm_node, maybe this wrapper would be
better as a static inline. Not blocking this series though.

Lucas De Marchi

^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✓ CI.Build: success for series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (14 preceding siblings ...)
  2024-08-16 15:12 ` ✓ CI.KUnit: " Patchwork
@ 2024-08-16 15:27 ` Patchwork
  2024-08-16 15:30 ` ✓ CI.Hooks: " Patchwork
                   ` (3 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2024-08-16 15:27 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe

== Series Details ==

Series: series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
URL   : https://patchwork.freedesktop.org/series/137398/
State : success

== Summary ==

lib/modules/6.11.0-rc3-xe/kernel/sound/core/seq/
lib/modules/6.11.0-rc3-xe/kernel/sound/core/seq/snd-seq.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/core/snd-seq-device.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/core/snd-hwdep.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/core/snd.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/core/snd-pcm.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/core/snd-compress.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/core/snd-timer.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soundcore.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/intel/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/intel/atom/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/intel/atom/sst/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-acpi.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-core.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/intel/common/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/intel/common/snd-soc-acpi-intel-match.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/amd/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/amd/snd-acp-config.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/intel/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-tgl.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-mlink.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-cnl.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-lnl.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-common.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-generic.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-mtl.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/amd/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/amd/snd-sof-amd-renoir.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/amd/snd-sof-amd-acp.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/snd-sof-utils.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/snd-sof-pci.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/snd-sof.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/snd-sof-probes.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/xtensa/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/sof/xtensa/snd-sof-xtensa-dsp.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/snd-soc-core.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/snd-soc-acpi.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/codecs/
lib/modules/6.11.0-rc3-xe/kernel/sound/soc/codecs/snd-soc-hdac-hda.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/hda/
lib/modules/6.11.0-rc3-xe/kernel/sound/hda/snd-intel-sdw-acpi.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/hda/ext/
lib/modules/6.11.0-rc3-xe/kernel/sound/hda/ext/snd-hda-ext-core.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/hda/snd-intel-dspcfg.ko
lib/modules/6.11.0-rc3-xe/kernel/sound/hda/snd-hda-core.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/kernel/
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/kernel/msr.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/kernel/cpuid.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/crypto/
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/crypto/sha512-ssse3.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/crypto/crct10dif-pclmul.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/crypto/ghash-clmulni-intel.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/crypto/sha1-ssse3.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/crypto/crc32-pclmul.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/crypto/sha256-ssse3.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/crypto/aesni-intel.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/crypto/polyval-clmulni.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/events/
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/events/intel/
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/events/intel/intel-cstate.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/events/rapl.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/kvm/
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.11.0-rc3-xe/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/
lib/modules/6.11.0-rc3-xe/kernel/crypto/crypto_simd.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/cmac.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/ccm.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/cryptd.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/polyval-generic.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/async_tx/
lib/modules/6.11.0-rc3-xe/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.11.0-rc3-xe/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.11.0-rc3-xe/build
lib/modules/6.11.0-rc3-xe/modules.alias.bin
lib/modules/6.11.0-rc3-xe/modules.builtin
lib/modules/6.11.0-rc3-xe/modules.softdep
lib/modules/6.11.0-rc3-xe/modules.alias
lib/modules/6.11.0-rc3-xe/modules.order
lib/modules/6.11.0-rc3-xe/modules.symbols
lib/modules/6.11.0-rc3-xe/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1723822064:package_x86_64_nodebug\r\e[0K'
+ sync
^[[0Ksection_end:1723822064:package_x86_64_nodebug
^[[0K
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✓ CI.Hooks: success for series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (15 preceding siblings ...)
  2024-08-16 15:27 ` ✓ CI.Build: " Patchwork
@ 2024-08-16 15:30 ` Patchwork
  2024-08-16 15:31 ` ✗ CI.checksparse: warning " Patchwork
                   ` (2 subsequent siblings)
  19 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2024-08-16 15:30 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe

== Series Details ==

Series: series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
URL   : https://patchwork.freedesktop.org/series/137398/
State : success

== 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/generated/compile.h
  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
  HOSTCC  /workspace/kernel/build64-default/tools/objtool/fixdep.o
  CALL    ../scripts/checksyscalls.sh
  HOSTLD  /workspace/kernel/build64-default/tools/objtool/fixdep-in.o
  LINK    /workspace/kernel/build64-default/tools/objtool/fixdep
  INSTALL libsubcmd_headers
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
  LD      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
  CC      /workspace/kernel/build64-default/tools/objtool/weak.o
  CC      /workspace/kernel/build64-default/tools/objtool/check.o
  CC      /workspace/kernel/build64-default/tools/objtool/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/builtin-check.o
  CC      /workspace/kernel/build64-default/tools/objtool/elf.o
  CC      /workspace/kernel/build64-default/tools/objtool/objtool.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64-default/tools/objtool/libstring.o
  CC      /workspace/kernel/build64-default/tools/objtool/libctype.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/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.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
  UPD     include/generated/uapi/linux/version.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctls.h
  WRAP    arch/x86/include/generated/uapi/asm/ipcbuf.h
  WRAP    arch/x86/include/generated/uapi/asm/param.h
  WRAP    arch/x86/include/generated/uapi/asm/poll.h
  WRAP    arch/x86/include/generated/uapi/asm/resource.h
  WRAP    arch/x86/include/generated/uapi/asm/socket.h
  WRAP    arch/x86/include/generated/uapi/asm/sockios.h
  WRAP    arch/x86/include/generated/uapi/asm/termbits.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  WRAP    arch/x86/include/generated/uapi/asm/termios.h
  WRAP    arch/x86/include/generated/uapi/asm/types.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  HOSTCC  arch/x86/tools/relocs_32.o
  HOSTCC  arch/x86/tools/relocs_64.o
  HOSTCC  arch/x86/tools/relocs_common.o
  UPD     include/generated/compile.h
  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
  WRAP    arch/x86/include/generated/asm/kmap_size.h
  WRAP    arch/x86/include/generated/asm/irq_regs.h
  WRAP    arch/x86/include/generated/asm/local64.h
  WRAP    arch/x86/include/generated/asm/mmiowb.h
  WRAP    arch/x86/include/generated/asm/module.lds.h
  WRAP    arch/x86/include/generated/asm/rwonce.h
  WRAP    arch/x86/include/generated/asm/unaligned.h
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/sorttable
  HOSTCC  scripts/asn1_compiler
  HOSTCC  scripts/selinux/mdp/mdp
  HOSTCC  scripts/selinux/genheaders/genheaders
  HOSTLD  arch/x86/tools/relocs
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  CC      scripts/mod/devicetable-offsets.s
  UPD     scripts/mod/devicetable-offsets.h
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTCC  scripts/mod/symsearch.o
  HOSTLD  scripts/mod/modpost
  CC      kernel/bounds.s
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
  UPD     include/generated/timeconst.h
  UPD     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  UPD     include/generated/asm-offsets.h
  CALL    /workspace/kernel/scripts/checksyscalls.sh
  LDS     scripts/module.lds
  CC      ipc/util.o
  CC      ipc/msgutil.o
  CC      ipc/msg.o
  CC      ipc/sem.o
  HOSTCC  usr/gen_init_cpio
  CC      ipc/shm.o
  CC      ipc/syscall.o
  CC      init/main.o
  CC      certs/system_keyring.o
  CC      ipc/ipc_sysctl.o
  CC      mm/filemap.o
  CC      init/do_mounts.o
  CC      ipc/mqueue.o
  CC      io_uring/io_uring.o
  CC      mm/mempool.o
  CC      arch/x86/power/cpu.o
  CC      ipc/namespace.o
  AS      arch/x86/lib/atomic64_cx8_32.o
  CC      io_uring/opdef.o
  CC      block/bdev.o
  CC      arch/x86/pci/i386.o
  CC      arch/x86/video/video-common.o
  CC      mm/oom_kill.o
  CC      arch/x86/power/hibernate_32.o
  UPD     init/utsversion-tmp.h
  CC      arch/x86/realmode/init.o
  AR      arch/x86/net/built-in.a
  CC      security/keys/gc.o
  CC      arch/x86/mm/pat/set_memory.o
  AR      arch/x86/crypto/built-in.a
  CC      lib/math/div64.o
  CC      block/partitions/core.o
  GEN     security/selinux/flask.h security/selinux/av_permissions.h
  CC      security/integrity/iint.o
  AR      drivers/cache/built-in.a
  AR      sound/i2c/other/built-in.a
  AR      virt/lib/built-in.a
  CC      arch/x86/events/amd/core.o
  CC      net/core/sock.o
  CC      sound/core/seq/seq.o
  AR      sound/drivers/opl3/built-in.a
  AR      arch/x86/platform/atom/built-in.a
  CC      fs/notify/dnotify/dnotify.o
  CC      security/selinux/avc.o
  AR      arch/x86/virt/svm/built-in.a
  AR      sound/i2c/built-in.a
  AR      drivers/irqchip/built-in.a
  AR      virt/built-in.a
  CC      arch/x86/kernel/fpu/init.o
  CC      arch/x86/kernel/cpu/mce/core.o
  CC      security/selinux/hooks.o
  CC      arch/x86/kernel/acpi/boot.o
  AR      sound/drivers/opl4/built-in.a
  AS      arch/x86/lib/checksum_32.o
  AR      arch/x86/virt/vmx/built-in.a
  HOSTCC  certs/extract-cert
  CC      arch/x86/entry/vdso/vma.o
  AR      arch/x86/virt/built-in.a
  AR      arch/x86/platform/ce4100/built-in.a
  AR      sound/drivers/mpu401/built-in.a
  CC      kernel/sched/core.o
  CC      arch/x86/platform/efi/memmap.o
  AR      drivers/bus/mhi/built-in.a
  CC      arch/x86/platform/efi/quirks.o
  AR      sound/drivers/vx/built-in.a
  CC      arch/x86/events/intel/core.o
  AR      drivers/bus/built-in.a
  CC      arch/x86/lib/cmdline.o
  AR      sound/drivers/pcsp/built-in.a
  AR      sound/drivers/built-in.a
  AR      drivers/pwm/built-in.a
  CC      crypto/asymmetric_keys/asymmetric_type.o
  CC      lib/math/gcd.o
  CC      arch/x86/entry/vdso/extable.o
  CC      drivers/pci/msi/pcidev_msi.o
  CC      lib/math/lcm.o
  AS      arch/x86/lib/cmpxchg8b_emu.o
  CC      arch/x86/lib/cpu.o
  CC      lib/math/int_log.o
  GEN     usr/initramfs_data.cpio
  LDS     arch/x86/entry/vdso/vdso32/vdso32.lds
  COPY    usr/initramfs_inc_data
  AS      usr/initramfs_data.o
  CC      sound/core/seq/seq_lock.o
  CERT    certs/x509_certificate_list
  CERT    certs/signing_key.x509
  AS      certs/system_certificates.o
  AR      usr/built-in.a
  CC      lib/math/int_pow.o
  CC      arch/x86/kernel/fpu/bugs.o
  CC      arch/x86/pci/init.o
  AR      certs/built-in.a
  AS      arch/x86/power/hibernate_asm_32.o
  CC      lib/math/int_sqrt.o
  AS      arch/x86/entry/vdso/vdso32/note.o
  CC      arch/x86/platform/efi/efi.o
  CC      ipc/mq_sysctl.o
  CC      arch/x86/kernel/fpu/core.o
  CC      lib/math/reciprocal_div.o
  CC      arch/x86/mm/pat/memtype.o
  AS      arch/x86/realmode/rm/header.o
  CC      lib/crypto/mpi/generic_mpih-lshift.o
  AR      arch/x86/video/built-in.a
  AS      arch/x86/realmode/rm/trampoline_32.o
  CC      arch/x86/events/amd/lbr.o
  CC      lib/math/rational.o
  AS      arch/x86/realmode/rm/stack.o
  AS      arch/x86/realmode/rm/reboot.o
  CC      arch/x86/power/hibernate.o
  CC      arch/x86/mm/pat/memtype_interval.o
  AS      arch/x86/entry/vdso/vdso32/system_call.o
  AS      arch/x86/realmode/rm/wakeup_asm.o
  CC      security/integrity/integrity_audit.o
  CC      arch/x86/pci/pcbios.o
  CC      arch/x86/lib/delay.o
  CC      lib/crypto/mpi/generic_mpih-mul1.o
  CC      arch/x86/realmode/rm/wakemain.o
  CC      net/ethernet/eth.o
  CC      sound/core/seq/seq_clientmgr.o
  AR      fs/notify/dnotify/built-in.a
  CC      security/keys/key.o
  CC      fs/notify/inotify/inotify_fsnotify.o
  CC      crypto/asymmetric_keys/restrict.o
  AR      fs/notify/fanotify/built-in.a
  CC      arch/x86/realmode/rm/video-mode.o
  CC      lib/crypto/memneq.o
  CC      lib/crypto/mpi/generic_mpih-mul2.o
  AS      arch/x86/realmode/rm/copy.o
  CC      drivers/pci/msi/api.o
  CC      drivers/pci/msi/msi.o
  AR      net/802/built-in.a
  AR      sound/isa/ad1816a/built-in.a
  CC      block/partitions/msdos.o
  AS      arch/x86/entry/vdso/vdso32/sigreturn.o
  CC      arch/x86/entry/vdso/vdso32/vclock_gettime.o
  AR      sound/isa/ad1848/built-in.a
  CC      block/partitions/efi.o
  AR      sound/isa/cs423x/built-in.a
  AS      arch/x86/realmode/rm/bioscall.o
  AR      sound/isa/es1688/built-in.a
  CC      arch/x86/realmode/rm/regs.o
  CC      kernel/sched/fair.o
  AR      sound/isa/galaxy/built-in.a
  AR      lib/math/built-in.a
  AR      sound/isa/gus/built-in.a
  CC      kernel/sched/build_policy.o
  AS      arch/x86/lib/getuser.o
  CC      arch/x86/kernel/acpi/sleep.o
  GEN     arch/x86/lib/inat-tables.c
  AR      sound/isa/msnd/built-in.a
  CC      kernel/sched/build_utility.o
  CC      arch/x86/realmode/rm/video-vga.o
  AR      sound/isa/opti9xx/built-in.a
  AR      sound/isa/sb/built-in.a
  CC      fs/nfs_common/nfsacl.o
  AR      sound/isa/wavefront/built-in.a
  CC      arch/x86/lib/insn-eval.o
  CC      fs/iomap/trace.o
  AR      sound/isa/wss/built-in.a
  AR      sound/isa/built-in.a
  CC      arch/x86/platform/efi/efi_32.o
  CC      arch/x86/realmode/rm/video-vesa.o
  CC      arch/x86/lib/insn.o
  CC      arch/x86/entry/vdso/vdso32/vgetcpu.o
  CC      lib/crypto/mpi/generic_mpih-mul3.o
  CC      arch/x86/realmode/rm/video-bios.o
  CC      init/do_mounts_initrd.o
  CC      lib/crypto/mpi/generic_mpih-rshift.o
  AS      arch/x86/kernel/acpi/wakeup_32.o
  CC      block/fops.o
  CC      fs/iomap/iter.o
  PASYMS  arch/x86/realmode/rm/pasyms.h
  LDS     arch/x86/realmode/rm/realmode.lds
  CC      crypto/asymmetric_keys/signature.o
  CC      fs/notify/inotify/inotify_user.o
  CC      init/initramfs.o
  LD      arch/x86/realmode/rm/realmode.elf
  RELOCS  arch/x86/realmode/rm/realmode.relocs
  OBJCOPY arch/x86/realmode/rm/realmode.bin
  CC      arch/x86/events/intel/bts.o
  AS      arch/x86/realmode/rmpiggy.o
  CC      arch/x86/events/amd/ibs.o
  AR      arch/x86/realmode/built-in.a
  CC      block/bio.o
  CC      block/elevator.o
  AR      security/integrity/built-in.a
  AR      arch/x86/mm/pat/built-in.a
  CC      block/blk-core.o
  CC      arch/x86/mm/init.o
  CC      fs/nfs_common/grace.o
  AR      arch/x86/power/built-in.a
  CC      arch/x86/pci/mmconfig_32.o
  CC      arch/x86/mm/init_32.o
  CC      arch/x86/mm/fault.o
  CC      init/calibrate.o
  AR      sound/pci/ac97/built-in.a
  CC      init/init_task.o
  AR      sound/pci/ali5451/built-in.a
  AR      sound/pci/asihpi/built-in.a
  AR      ipc/built-in.a
  AR      sound/ppc/built-in.a
  AR      sound/pci/au88x0/built-in.a
  AR      sound/pci/aw2/built-in.a
  CC      arch/x86/lib/kaslr.o
  AR      arch/x86/platform/geode/built-in.a
  AR      sound/pci/ctxfi/built-in.a
  AR      sound/pci/ca0106/built-in.a
  CC      mm/fadvise.o
  HOSTCC  arch/x86/entry/vdso/vdso2c
  AR      sound/pci/cs46xx/built-in.a
  CC      arch/x86/entry/vdso/vdso32-setup.o
  CC      crypto/asymmetric_keys/public_key.o
  AR      sound/pci/cs5535audio/built-in.a
  AR      sound/pci/lola/built-in.a
  CC      arch/x86/kernel/cpu/mce/severity.o
  AR      sound/pci/lx6464es/built-in.a
  AR      sound/pci/echoaudio/built-in.a
  AR      sound/pci/emu10k1/built-in.a
  CC      security/keys/keyring.o
  CC      arch/x86/kernel/acpi/cstate.o
  AR      sound/pci/hda/built-in.a
  CC      fs/quota/dquot.o
  CC [M]  sound/pci/hda/hda_bind.o
  CC      lib/crypto/utils.o
  CC      arch/x86/kernel/fpu/regset.o
  CC [M]  sound/pci/hda/hda_codec.o
  CC      arch/x86/kernel/fpu/signal.o
  ASN.1   crypto/asymmetric_keys/x509.asn1.[ch]
  CC      lib/crypto/chacha.o
  AR      block/partitions/built-in.a
  CC      security/commoncap.o
  CC [M]  sound/pci/hda/hda_jack.o
  CC      lib/crypto/mpi/generic_mpih-sub1.o
  AS      arch/x86/platform/efi/efi_stub_32.o
  CC      drivers/pci/msi/irqdomain.o
  CC      arch/x86/platform/efi/runtime-map.o
  CC      arch/x86/kernel/fpu/xstate.o
  CC      arch/x86/lib/memcpy_32.o
  CC      sound/core/seq/seq_memory.o
  AS      arch/x86/lib/memmove_32.o
  CC      lib/zlib_inflate/inffast.o
  CC      arch/x86/lib/misc.o
  CC      lib/zlib_inflate/inflate.o
  CC      lib/crypto/aes.o
  VDSO    arch/x86/entry/vdso/vdso32.so.dbg
  AR      net/ethernet/built-in.a
  CC      arch/x86/pci/direct.o
  CC      arch/x86/lib/pc-conf-reg.o
  OBJCOPY arch/x86/entry/vdso/vdso32.so
  CC      lib/zlib_deflate/deflate.o
  VDSO2C  arch/x86/entry/vdso/vdso-image-32.c
  CC      init/version.o
  CC      arch/x86/entry/vdso/vdso-image-32.o
  AR      fs/notify/inotify/built-in.a
  AR      fs/nfs_common/built-in.a
  CC      fs/notify/fsnotify.o
  CC      arch/x86/pci/mmconfig-shared.o
  CC      fs/iomap/buffered-io.o
  ASN.1   crypto/asymmetric_keys/x509_akid.asn1.[ch]
  CC      fs/iomap/direct-io.o
  CC      crypto/asymmetric_keys/x509_loader.o
  CC      lib/lzo/lzo1x_compress.o
  AR      sound/pci/ice1712/built-in.a
  CC      lib/lzo/lzo1x_decompress_safe.o
  AR      arch/x86/kernel/acpi/built-in.a
  CC [M]  sound/pci/hda/hda_auto_parser.o
  AS      arch/x86/lib/putuser.o
  CC      security/lsm_syscalls.o
  CC      security/keys/keyctl.o
  CC      security/keys/permission.o
  CC      security/keys/process_keys.o
  AS      arch/x86/lib/retpoline.o
  CC      arch/x86/lib/string_32.o
  AR      init/built-in.a
  CC      arch/x86/events/amd/uncore.o
  CC      arch/x86/lib/strstr_32.o
  CC      lib/crypto/mpi/generic_mpih-add1.o
  AR      arch/x86/entry/vdso/built-in.a
  CC      arch/x86/kernel/cpu/mce/genpool.o
  CC      arch/x86/lib/usercopy.o
  CC      crypto/asymmetric_keys/x509_public_key.o
  AR      arch/x86/platform/iris/built-in.a
  AR      arch/x86/entry/vsyscall/built-in.a
  AS      arch/x86/entry/entry.o
  CC      security/keys/request_key.o
  AS      arch/x86/entry/entry_32.o
  CC      arch/x86/platform/intel/iosf_mbi.o
  CC [M]  sound/pci/hda/hda_sysfs.o
  CC      block/blk-sysfs.o
  CC      arch/x86/entry/syscall_32.o
  AR      arch/x86/platform/efi/built-in.a
  CC      arch/x86/entry/common.o
  AR      arch/x86/platform/intel-mid/built-in.a
  CC      arch/x86/kernel/cpu/mce/intel.o
  CC      mm/maccess.o
  AR      drivers/pci/msi/built-in.a
  CC      lib/lz4/lz4_decompress.o
  CC      drivers/pci/pcie/portdrv.o
  CC      lib/zlib_inflate/infutil.o
  CC      arch/x86/mm/ioremap.o
  CC      lib/zstd/zstd_decompress_module.o
  CC      sound/core/seq/seq_queue.o
  CC      arch/x86/lib/usercopy_32.o
  CC      arch/x86/mm/extable.o
  AR      lib/lzo/built-in.a
  ASN.1   crypto/asymmetric_keys/pkcs7.asn1.[ch]
  CC      arch/x86/lib/msr-smp.o
  CC      drivers/pci/pcie/rcec.o
  CC      sound/core/sound.o
  CC      net/core/request_sock.o
  CC      security/keys/request_key_auth.o
  CC      lib/zlib_deflate/deftree.o
  CC      lib/crypto/mpi/ec.o
  CC      block/blk-flush.o
  CC      arch/x86/events/intel/ds.o
  CC      lib/zlib_inflate/inftrees.o
  CC      security/min_addr.o
  CC      fs/notify/notification.o
  CC      crypto/asymmetric_keys/pkcs7_trust.o
  CC      arch/x86/events/intel/knc.o
  CC      arch/x86/kernel/cpu/mce/amd.o
  CC      arch/x86/lib/cache-smp.o
  AR      arch/x86/kernel/fpu/built-in.a
  CC      security/security.o
  CC      arch/x86/kernel/apic/apic.o
  CC      lib/zstd/decompress/huf_decompress.o
  CC      arch/x86/kernel/apic/apic_common.o
  CC      arch/x86/pci/fixup.o
  CC      lib/zlib_inflate/inflate_syms.o
  CC      lib/zstd/decompress/zstd_ddict.o
  AR      arch/x86/platform/intel/built-in.a
  CC      lib/zstd/decompress/zstd_decompress.o
  AR      arch/x86/platform/intel-quark/built-in.a
  CC      arch/x86/lib/msr.o
  AR      arch/x86/platform/olpc/built-in.a
  CC      arch/x86/pci/acpi.o
  AR      arch/x86/platform/scx200/built-in.a
  CC      arch/x86/kernel/apic/apic_noop.o
  CC      security/keys/user_defined.o
  AR      arch/x86/platform/ts5500/built-in.a
  CC      mm/page-writeback.o
  CC      fs/iomap/fiemap.o
  AR      arch/x86/platform/uv/built-in.a
  AR      arch/x86/platform/built-in.a
  AS      arch/x86/lib/msr-reg.o
  CC      sound/core/seq/seq_fifo.o
  CC      crypto/asymmetric_keys/pkcs7_verify.o
  CC      net/core/skbuff.o
  CC      block/blk-settings.o
  CC      lib/zlib_deflate/deflate_syms.o
  CC      block/blk-ioc.o
  CC      drivers/pci/pcie/aspm.o
  CC      block/blk-map.o
  CC      sound/core/init.o
  AR      arch/x86/events/amd/built-in.a
  CC      sound/core/memory.o
  CC      mm/folio-compat.o
  CC      fs/notify/group.o
  CC      arch/x86/events/intel/lbr.o
  AR      lib/zlib_inflate/built-in.a
  CC      security/selinux/selinuxfs.o
  CC      sound/core/control.o
  CC      net/sched/sch_generic.o
  CC      sound/core/misc.o
  CC      net/sched/sch_mq.o
  CC      fs/quota/quota_v2.o
  CC      io_uring/kbuf.o
  CC      arch/x86/mm/mmap.o
  CC      security/selinux/netlink.o
  CC      sound/core/seq/seq_prioq.o
  CC      mm/readahead.o
  CC [M]  sound/pci/hda/hda_controller.o
  AS      arch/x86/entry/thunk.o
  AR      lib/zlib_deflate/built-in.a
  CC      lib/xz/xz_dec_syms.o
  AR      lib/lz4/built-in.a
  AR      arch/x86/entry/built-in.a
  CC      arch/x86/events/zhaoxin/core.o
  CC      block/blk-merge.o
  CC      block/blk-timeout.o
  CC      crypto/asymmetric_keys/x509.asn1.o
  CC      lib/xz/xz_dec_stream.o
  CC      crypto/asymmetric_keys/x509_akid.asn1.o
  CC      crypto/asymmetric_keys/x509_cert_parser.o
  CC      security/keys/proc.o
  CC      lib/xz/xz_dec_lzma2.o
  CC      arch/x86/kernel/cpu/mce/threshold.o
  CC      lib/crypto/mpi/mpicoder.o
  CC      arch/x86/pci/legacy.o
  CC      fs/proc/task_mmu.o
  CC      fs/kernfs/mount.o
  CC      arch/x86/pci/irq.o
  CC      fs/iomap/seek.o
  CC      fs/proc/inode.o
  CC      arch/x86/lib/msr-reg-export.o
  AR      sound/pci/korg1212/built-in.a
  CC      fs/notify/mark.o
  CC      security/keys/sysctl.o
  AS      arch/x86/lib/hweight.o
  CC      arch/x86/mm/pgtable.o
  CC      net/netlink/af_netlink.o
  CC      fs/notify/fdinfo.o
  CC      net/netlink/genetlink.o
  CC      fs/quota/quota_tree.o
  CC      fs/quota/quota.o
  CC      arch/x86/lib/iomem.o
  CC      arch/x86/kernel/apic/ipi.o
  CC      sound/core/seq/seq_timer.o
  CC      fs/kernfs/inode.o
  CC      mm/swap.o
  CC      lib/zstd/decompress/zstd_decompress_block.o
  AR      net/bpf/built-in.a
  CC      lib/xz/xz_dec_bcj.o
  CC      crypto/asymmetric_keys/pkcs7.asn1.o
  CC      crypto/asymmetric_keys/pkcs7_parser.o
  CC      lib/crypto/mpi/mpi-add.o
  CC      arch/x86/kernel/apic/vector.o
  AR      drivers/pci/pwrctl/built-in.a
  CC      drivers/pci/hotplug/pci_hotplug_core.o
  CC      drivers/pci/pcie/pme.o
  CC      mm/truncate.o
  CC      lib/dim/dim.o
  CC      fs/kernfs/dir.o
  CC      lib/fonts/fonts.o
  CC      arch/x86/lib/atomic64_32.o
  AR      arch/x86/events/zhaoxin/built-in.a
  CC      mm/vmscan.o
  CC      fs/iomap/swapfile.o
  CC      mm/shrinker.o
  CC      drivers/pci/hotplug/acpi_pcihp.o
  CC      security/keys/keyctl_pkey.o
  CC      lib/dim/net_dim.o
  CC      io_uring/rsrc.o
  CC      io_uring/notif.o
  CC      arch/x86/lib/inat.o
  CC      arch/x86/kernel/kprobes/core.o
  CC      arch/x86/events/intel/p4.o
  CC      arch/x86/kernel/kprobes/opt.o
  CC      lib/crypto/mpi/mpi-bit.o
  AR      arch/x86/lib/built-in.a
  AR      lib/xz/built-in.a
  CC      lib/crypto/mpi/mpi-cmp.o
  CC      io_uring/tctx.o
  CC      lib/crypto/mpi/mpi-sub-ui.o
  CC      io_uring/filetable.o
  AR      arch/x86/lib/lib.a
  CC      arch/x86/mm/physaddr.o
  CC      arch/x86/mm/tlb.o
  CC      drivers/video/console/dummycon.o
  AR      crypto/asymmetric_keys/built-in.a
  CC      crypto/api.o
  LDS     arch/x86/kernel/vmlinux.lds
  CC      sound/core/seq/seq_system.o
  CC      fs/sysfs/file.o
  CC      lib/fonts/font_8x16.o
  CC      arch/x86/pci/common.o
  CC [M]  sound/pci/hda/hda_proc.o
  CC      fs/sysfs/dir.o
  CC      crypto/cipher.o
  AR      fs/notify/built-in.a
  CC      fs/sysfs/symlink.o
  AR      sound/pci/mixart/built-in.a
  CC      lib/crypto/mpi/mpi-div.o
  CC      lib/crypto/mpi/mpi-inv.o
  CC      security/selinux/nlmsgtab.o
  AR      arch/x86/kernel/cpu/mce/built-in.a
  AR      kernel/sched/built-in.a
  CC      arch/x86/kernel/cpu/mtrr/mtrr.o
  CC      kernel/locking/mutex.o
  CC      lib/dim/rdma_dim.o
  AR      drivers/pci/pcie/built-in.a
  AR      security/keys/built-in.a
  CC      lib/argv_split.o
  CC      block/blk-lib.o
  CC      security/lsm_audit.o
  AR      fs/iomap/built-in.a
  CC      fs/quota/kqid.o
  AR      drivers/pci/hotplug/built-in.a
  AR      lib/fonts/built-in.a
  CC      lib/bug.o
  CC      lib/crypto/mpi/mpi-mod.o
  AR      drivers/pci/controller/dwc/built-in.a
  AR      drivers/pci/controller/mobiveil/built-in.a
  CC      lib/buildid.o
  AR      drivers/pci/controller/plda/built-in.a
  AR      drivers/pci/controller/built-in.a
  CC      lib/clz_tab.o
  CC      fs/devpts/inode.o
  CC      fs/proc/root.o
  AR      drivers/pci/switch/built-in.a
  CC      arch/x86/kernel/cpu/mtrr/if.o
  CC      drivers/pci/access.o
  CC      drivers/pci/bus.o
  CC      net/sched/sch_frag.o
  CC      drivers/video/console/vgacon.o
  CC      fs/netfs/buffered_read.o
  CC      sound/core/seq/seq_ports.o
  CC      mm/shmem.o
  CC      net/ethtool/ioctl.o
  CC      net/netfilter/core.o
  CC      net/ipv4/netfilter/nf_defrag_ipv4.o
  AR      lib/dim/built-in.a
  CC      drivers/pci/probe.o
  CC      net/xfrm/xfrm_policy.o
  CC      net/unix/af_unix.o
  CC      crypto/compress.o
  AR      arch/x86/kernel/kprobes/built-in.a
  CC      net/unix/garbage.o
  CC      net/xfrm/xfrm_state.o
  CC      lib/cmdline.o
  CC      lib/cpumask.o
  CC      net/ipv4/netfilter/nf_reject_ipv4.o
  CC      fs/netfs/buffered_write.o
  CC      net/ipv4/route.o
  CC      net/netfilter/nf_log.o
  CC      fs/kernfs/file.o
  CC      arch/x86/pci/early.o
  CC      fs/sysfs/mount.o
  CC      arch/x86/events/intel/p6.o
  CC      net/sched/sch_api.o
  CC      net/ipv4/inetpeer.o
  CC      net/netfilter/nf_queue.o
  CC      fs/quota/netlink.o
  CC      arch/x86/mm/cpu_entry_area.o
  CC      lib/ctype.o
  CC      arch/x86/events/intel/pt.o
  CC      arch/x86/kernel/apic/init.o
  CC      arch/x86/kernel/cpu/mtrr/generic.o
  CC      lib/crypto/mpi/mpi-mul.o
  CC      arch/x86/kernel/cpu/mtrr/cleanup.o
  CC      security/selinux/netif.o
  CC      arch/x86/kernel/cpu/mtrr/amd.o
  CC      io_uring/rw.o
  CC      block/blk-mq.o
  CC [M]  sound/pci/hda/hda_hwdep.o
  AR      fs/devpts/built-in.a
  CC      fs/proc/base.o
  CC      fs/ext4/balloc.o
  CC      crypto/algapi.o
  CC      fs/ext4/bitmap.o
  CC      drivers/pci/host-bridge.o
  CC      sound/core/seq/seq_info.o
  CC      arch/x86/kernel/cpu/mtrr/cyrix.o
  CC      kernel/locking/semaphore.o
  CC      lib/zstd/zstd_common_module.o
  CC      arch/x86/pci/bus_numa.o
  CC      arch/x86/kernel/apic/hw_nmi.o
  CC      arch/x86/mm/maccess.o
  AR      drivers/video/console/built-in.a
  CC      net/netlink/policy.o
  CC      drivers/video/backlight/backlight.o
  CC      security/device_cgroup.o
  AR      drivers/video/fbdev/core/built-in.a
  CC      fs/sysfs/group.o
  AR      drivers/video/fbdev/omap/built-in.a
  CC      drivers/video/aperture.o
  AR      drivers/video/fbdev/omap2/omapfb/dss/built-in.a
  CC      lib/crypto/mpi/mpih-cmp.o
  AS      arch/x86/kernel/head_32.o
  AR      drivers/video/fbdev/omap2/omapfb/displays/built-in.a
  AR      fs/quota/built-in.a
  AR      drivers/video/fbdev/omap2/omapfb/built-in.a
  CC      drivers/video/cmdline.o
  CC      arch/x86/kernel/head32.o
  CC      net/ipv4/protocol.o
  CC      arch/x86/events/intel/uncore.o
  AR      drivers/video/fbdev/omap2/built-in.a
  AR      drivers/video/fbdev/built-in.a
  CC      crypto/scatterwalk.o
  CC      lib/dec_and_lock.o
  CC      crypto/proc.o
  CC      lib/zstd/common/debug.o
  CC      fs/kernfs/symlink.o
  CC      arch/x86/mm/pgprot.o
  CC      lib/zstd/common/entropy_common.o
  CC [M]  sound/pci/hda/patch_hdmi.o
  CC      kernel/locking/rwsem.o
  AR      drivers/idle/built-in.a
  CC      kernel/locking/percpu-rwsem.o
  CC      sound/core/seq/seq_dummy.o
  CC      fs/netfs/direct_read.o
  CC      lib/decompress.o
  CC      fs/proc/generic.o
  CC      net/netfilter/nf_sockopt.o
  CC      net/ipv4/netfilter/ip_tables.o
  CC      lib/zstd/common/error_private.o
  CC      lib/zstd/common/fse_decompress.o
  CC      lib/decompress_bunzip2.o
  CC      lib/zstd/common/zstd_common.o
  CC      arch/x86/kernel/cpu/mtrr/centaur.o
  CC      net/netfilter/utils.o
  CC      arch/x86/kernel/cpu/mtrr/legacy.o
  CC      kernel/locking/spinlock.o
  CC      arch/x86/pci/amd_bus.o
  CC      arch/x86/kernel/apic/io_apic.o
  CC      net/ipv4/netfilter/iptable_filter.o
  CC      security/selinux/netnode.o
  CC      drivers/pci/remove.o
  AR      fs/sysfs/built-in.a
  CC      kernel/locking/osq_lock.o
  CC      lib/crypto/mpi/mpih-div.o
  CC      arch/x86/kernel/ebda.o
  CC      arch/x86/mm/pgtable_32.o
  CC      sound/core/device.o
  CC      lib/crypto/mpi/mpih-mul.o
  CC      lib/decompress_inflate.o
  CC      crypto/aead.o
  CC      crypto/geniv.o
  AR      drivers/video/backlight/built-in.a
  CC      lib/decompress_unlz4.o
  CC      drivers/video/nomodeset.o
  AR      net/netlink/built-in.a
  CC      fs/jbd2/transaction.o
  CC      arch/x86/events/intel/uncore_nhmex.o
  CC      io_uring/net.o
  AR      sound/core/seq/built-in.a
  CC      arch/x86/events/intel/uncore_snb.o
  CC      fs/jbd2/commit.o
  CC      net/ipv6/netfilter/ip6_tables.o
  CC      fs/jbd2/recovery.o
  AR      lib/zstd/built-in.a
  AR      fs/kernfs/built-in.a
  CC      net/core/datagram.o
  CC      net/ipv6/netfilter/ip6table_filter.o
  CC      fs/ramfs/inode.o
  CC      net/ipv6/netfilter/ip6table_mangle.o
  AR      arch/x86/kernel/cpu/mtrr/built-in.a
  CC      arch/x86/kernel/cpu/microcode/core.o
  CC      net/ipv6/af_inet6.o
  CC      kernel/locking/qspinlock.o
  CC      net/ipv4/ip_input.o
  CC      net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
  CC      mm/util.o
  CC      arch/x86/kernel/cpu/cacheinfo.o
  CC      drivers/video/hdmi.o
  CC      fs/netfs/direct_write.o
  CC      net/sched/sch_blackhole.o
  AR      arch/x86/pci/built-in.a
  CC      fs/ramfs/file-mmu.o
  CC      sound/core/info.o
  CC      arch/x86/mm/iomap_32.o
  CC      arch/x86/kernel/platform-quirks.o
  CC      drivers/pci/pci.o
  CC      lib/decompress_unlzma.o
  CC      net/ethtool/common.o
  CC      arch/x86/kernel/process_32.o
  CC      fs/proc/array.o
  CC      net/unix/sysctl_net_unix.o
  AR      sound/pci/nm256/built-in.a
  AR      sound/pci/oxygen/built-in.a
  CC      lib/crypto/mpi/mpi-pow.o
  CC      net/sched/cls_api.o
  CC      net/ipv4/netfilter/iptable_mangle.o
  CC      fs/netfs/io.o
  CC      kernel/locking/rtmutex_api.o
  CC      net/ipv6/netfilter/nf_conntrack_reasm.o
  CC      security/selinux/netport.o
  AR      drivers/char/ipmi/built-in.a
  CC      fs/ext4/block_validity.o
  CC      crypto/lskcipher.o
  CC      net/netfilter/nfnetlink.o
  CC      drivers/acpi/acpica/dsargs.o
  CC      net/netfilter/nfnetlink_log.o
  CC      arch/x86/kernel/signal.o
  CC      net/netfilter/nf_conntrack_core.o
  CC      arch/x86/kernel/cpu/microcode/intel.o
  CC      arch/x86/mm/hugetlbpage.o
  CC      arch/x86/kernel/signal_32.o
  CC      arch/x86/events/intel/uncore_snbep.o
  CC      arch/x86/events/intel/uncore_discovery.o
  CC      net/ipv6/netfilter/nf_reject_ipv6.o
  AR      fs/ramfs/built-in.a
  AR      drivers/acpi/pmic/built-in.a
  CC      fs/hugetlbfs/inode.o
  AR      drivers/video/built-in.a
  CC      drivers/acpi/dptf/int340x_thermal.o
  CC [M]  sound/pci/hda/hda_eld.o
  CC      fs/jbd2/checkpoint.o
  CC      arch/x86/kernel/apic/msi.o
  CC      drivers/acpi/acpica/dscontrol.o
  CC      sound/core/isadma.o
  CC      drivers/acpi/acpica/dsdebug.o
  CC      sound/core/vmaster.o
  CC      net/sched/act_api.o
  CC      mm/mmzone.o
  AR      drivers/amba/built-in.a
  CC      drivers/pnp/pnpacpi/core.o
  CC      mm/vmstat.o
  CC      lib/crypto/mpi/mpiutil.o
  CC      mm/backing-dev.o
  CC      fs/jbd2/revoke.o
  CC      net/xfrm/xfrm_hash.o
  CC      arch/x86/kernel/traps.o
  AR      net/unix/built-in.a
  CC      net/packet/af_packet.o
  CC      drivers/acpi/x86/apple.o
  CC      drivers/pnp/pnpacpi/rsparser.o
  CC      fs/proc/fd.o
  CC      net/ethtool/netlink.o
  CC      arch/x86/kernel/apic/probe_32.o
  CC      net/ipv4/netfilter/ipt_REJECT.o
  CC      kernel/locking/qrwlock.o
  CC      drivers/acpi/acpica/dsfield.o
  CC      arch/x86/mm/dump_pagetables.o
  AR      drivers/acpi/dptf/built-in.a
  CC      net/ipv6/anycast.o
  CC      arch/x86/kernel/cpu/microcode/amd.o
  CC      drivers/acpi/tables.o
  CC      fs/ext4/dir.o
  CC      sound/core/ctljack.o
  CC      net/ipv6/netfilter/ip6t_ipv6header.o
  CC      net/ipv4/ip_fragment.o
  CC      net/core/stream.o
  CC      fs/netfs/iterator.o
  CC      crypto/skcipher.o
  CC      drivers/acpi/acpica/dsinit.o
  CC      net/ipv6/ip6_output.o
  CC      security/selinux/status.o
  CC      lib/crypto/arc4.o
  CC      arch/x86/kernel/idt.o
  CC      io_uring/poll.o
  CC      drivers/acpi/acpica/dsmethod.o
  CC      block/blk-mq-tag.o
  CC      block/blk-stat.o
  CC      net/xfrm/xfrm_input.o
  CC      fs/ext4/ext4_jbd2.o
  CC      drivers/acpi/x86/cmos_rtc.o
  AR      lib/crypto/mpi/built-in.a
  CC [M]  sound/pci/hda/hda_intel.o
  CC      arch/x86/events/intel/cstate.o
  CC      arch/x86/mm/highmem_32.o
  AR      arch/x86/kernel/apic/built-in.a
  CC      net/netfilter/nf_conntrack_standalone.o
  CC      drivers/pci/pci-driver.o
  AR      kernel/locking/built-in.a
  CC      net/ipv6/ip6_input.o
  CC      sound/core/jack.o
  CC      kernel/power/qos.o
  CC      kernel/power/main.o
  CC      drivers/acpi/acpica/dsmthdat.o
  CC      arch/x86/kernel/irq.o
  CC      lib/crypto/gf128mul.o
  CC      fs/jbd2/journal.o
  CC      fs/proc/proc_tty.o
  CC      fs/proc/cmdline.o
  CC      net/ipv6/addrconf.o
  CC      drivers/acpi/acpica/dsobject.o
  AR      drivers/pnp/pnpacpi/built-in.a
  AR      fs/hugetlbfs/built-in.a
  CC      drivers/pnp/core.o
  CC      sound/core/timer.o
  CC      fs/fat/cache.o
  CC      sound/core/hrtimer.o
  AR      arch/x86/kernel/cpu/microcode/built-in.a
  CC      arch/x86/kernel/cpu/scattered.o
  CC [M]  net/ipv4/netfilter/iptable_nat.o
  CC      net/xfrm/xfrm_output.o
  CC      drivers/acpi/osi.o
  CC      drivers/acpi/x86/lpss.o
  CC      crypto/seqiv.o
  CC      fs/fat/dir.o
  CC      mm/mm_init.o
  AR      arch/x86/mm/built-in.a
  CC      drivers/acpi/osl.o
  CC      block/blk-mq-sysfs.o
  CC      net/ethtool/bitset.o
  CC      fs/netfs/locking.o
  CC      sound/core/seq_device.o
  CC      drivers/acpi/acpica/dsopcode.o
  CC      arch/x86/kernel/cpu/topology_common.o
  CC      net/core/scm.o
  CC      lib/crypto/blake2s.o
  CC      drivers/acpi/utils.o
  CC      lib/crypto/blake2s-generic.o
  CC      net/ipv6/addrlabel.o
  CC      net/ipv6/route.o
  CC [M]  sound/core/hwdep.o
  CC      security/selinux/ss/ebitmap.o
  CC      fs/proc/consoles.o
  CC      arch/x86/kernel/cpu/topology_ext.o
  CC      net/xfrm/xfrm_sysctl.o
  CC      net/ipv6/netfilter/ip6t_REJECT.o
  CC      net/ipv6/ip6_fib.o
  CC      drivers/pnp/card.o
  CC      fs/isofs/namei.o
  CC      net/netfilter/nf_conntrack_expect.o
  CC      fs/isofs/inode.o
  CC      drivers/acpi/reboot.o
  CC      fs/isofs/dir.o
  AR      arch/x86/events/intel/built-in.a
  CC      arch/x86/events/core.o
  CC      kernel/power/console.o
  CC      net/sched/sch_fifo.o
  CC      drivers/pci/search.o
  CC      net/sched/cls_cgroup.o
  CC      drivers/acpi/acpica/dspkginit.o
  CC      crypto/echainiv.o
  CC      arch/x86/kernel/cpu/topology_amd.o
  CC      fs/isofs/util.o
  CC      lib/crypto/sha1.o
  CC      drivers/acpi/x86/s2idle.o
  CC      net/ethtool/strset.o
  CC      security/selinux/ss/hashtab.o
  CC      block/blk-mq-cpumap.o
  LD [M]  sound/pci/hda/snd-hda-codec.o
  LD [M]  sound/pci/hda/snd-hda-codec-hdmi.o
  LD [M]  sound/pci/hda/snd-hda-intel.o
  CC      net/netfilter/nf_conntrack_helper.o
  CC      fs/proc/cpuinfo.o
  AR      sound/pci/pcxhr/built-in.a
  AR      sound/pci/riptide/built-in.a
  AR      sound/pci/rme9652/built-in.a
  AR      sound/pci/trident/built-in.a
  AR      net/ipv4/netfilter/built-in.a
  CC      net/ipv6/ipv6_sockglue.o
  AR      sound/pci/ymfpci/built-in.a
  CC      net/ipv6/ndisc.o
  CC      io_uring/eventfd.o
  AR      sound/pci/vx222/built-in.a
  AR      sound/pci/built-in.a
  CC      drivers/acpi/x86/utils.o
  CC      fs/netfs/main.o
  CC      net/ipv4/ip_forward.o
  CC      drivers/pnp/driver.o
  CC      drivers/acpi/acpica/dsutils.o
  CC      drivers/acpi/nvs.o
  AR      drivers/clk/actions/built-in.a
  CC      fs/ext4/extents.o
  CC      fs/isofs/rock.o
  AR      drivers/clk/analogbits/built-in.a
  CC      lib/crypto/sha256.o
  AR      drivers/clk/bcm/built-in.a
  CC      arch/x86/kernel/cpu/common.o
  CC      fs/ext4/extents_status.o
  CC      drivers/pnp/resource.o
  AR      drivers/clk/imgtec/built-in.a
  CC      mm/percpu.o
  AR      drivers/clk/imx/built-in.a
  CC      arch/x86/kernel/cpu/rdrand.o
  AR      drivers/clk/ingenic/built-in.a
  CC      arch/x86/kernel/cpu/match.o
  CC      kernel/power/process.o
  CC [M]  sound/core/pcm.o
  AR      drivers/clk/mediatek/built-in.a
  AR      drivers/clk/microchip/built-in.a
  CC      kernel/printk/printk.o
  CC      drivers/pci/rom.o
  AR      drivers/clk/mstar/built-in.a
  AR      drivers/clk/mvebu/built-in.a
  CC      crypto/ahash.o
  CC      arch/x86/kernel/cpu/bugs.o
  AR      drivers/clk/ralink/built-in.a
  CC      drivers/pnp/manager.o
  AR      drivers/clk/renesas/built-in.a
  CC      net/xfrm/xfrm_replay.o
  AR      drivers/clk/socfpga/built-in.a
  CC      drivers/acpi/wakeup.o
  AR      drivers/clk/sophgo/built-in.a
  CC      net/core/gen_stats.o
  CC      security/selinux/ss/symtab.o
  AR      drivers/clk/sprd/built-in.a
  CC      fs/fat/fatent.o
  AR      drivers/clk/starfive/built-in.a
  CC      fs/proc/devices.o
  CC      net/xfrm/xfrm_device.o
  AR      drivers/clk/sunxi-ng/built-in.a
  AR      drivers/clk/ti/built-in.a
  CC      block/blk-mq-sched.o
  AR      drivers/clk/versatile/built-in.a
  AR      drivers/clk/xilinx/built-in.a
  AR      drivers/clk/built-in.a
  CC      drivers/acpi/sleep.o
  AR      net/ipv6/netfilter/built-in.a
  CC      drivers/acpi/device_sysfs.o
  CC      drivers/acpi/acpica/dswexec.o
  CC      fs/proc/interrupts.o
  CC      net/core/gen_estimator.o
  CC      drivers/acpi/x86/blacklist.o
  AR      net/packet/built-in.a
  CC      fs/ext4/file.o
  CC      net/sched/ematch.o
  CC      net/ipv6/udp.o
  CC      security/selinux/ss/sidtab.o
  CC      block/ioctl.o
  CC      io_uring/uring_cmd.o
  AR      lib/crypto/built-in.a
  CC      lib/decompress_unlzo.o
  CC      net/core/net_namespace.o
  CC      drivers/dma/dw/core.o
  CC      drivers/dma/hsu/hsu.o
  AR      drivers/dma/idxd/built-in.a
  AR      drivers/dma/mediatek/built-in.a
  CC      drivers/dma/dw/dw.o
  AR      drivers/soc/apple/built-in.a
  CC      drivers/pci/setup-res.o
  CC      drivers/virtio/virtio.o
  AR      drivers/soc/aspeed/built-in.a
  AR      drivers/soc/bcm/built-in.a
  CC      net/ethtool/linkinfo.o
  CC      fs/isofs/export.o
  AR      drivers/soc/fsl/built-in.a
  AR      drivers/soc/fujitsu/built-in.a
  AR      drivers/soc/hisilicon/built-in.a
  CC      drivers/acpi/acpica/dswload.o
  AR      drivers/soc/imx/built-in.a
  AR      drivers/soc/ixp4xx/built-in.a
  CC      drivers/virtio/virtio_ring.o
  AR      drivers/acpi/x86/built-in.a
  CC      drivers/virtio/virtio_anchor.o
  AR      drivers/soc/loongson/built-in.a
  CC      fs/proc/loadavg.o
  AR      fs/jbd2/built-in.a
  AR      drivers/soc/mediatek/built-in.a
  CC      fs/isofs/joliet.o
  AR      drivers/soc/microchip/built-in.a
  AR      drivers/dma/qcom/built-in.a
  CC      net/netfilter/nf_conntrack_proto.o
  AR      drivers/soc/nuvoton/built-in.a
  CC      fs/nfs/client.o
  CC      drivers/pnp/support.o
  AR      drivers/soc/pxa/built-in.a
  CC [M]  sound/core/pcm_native.o
  AR      drivers/soc/amlogic/built-in.a
  AR      drivers/soc/qcom/built-in.a
  CC      fs/nfs/dir.o
  AR      drivers/soc/renesas/built-in.a
  AR      drivers/soc/rockchip/built-in.a
  AR      drivers/soc/sunxi/built-in.a
  CC      lib/decompress_unxz.o
  AR      drivers/soc/ti/built-in.a
  AR      drivers/soc/xilinx/built-in.a
  AR      drivers/soc/built-in.a
  CC      crypto/shash.o
  CC      net/ipv4/ip_options.o
  CC      drivers/tty/vt/vt_ioctl.o
  CC      kernel/power/suspend.o
  CC      drivers/char/hw_random/core.o
  CC      drivers/acpi/acpica/dswload2.o
  CC      arch/x86/events/probe.o
  CC      drivers/tty/vt/vc_screen.o
  CC      net/xfrm/xfrm_nat_keepalive.o
  AR      drivers/iommu/amd/built-in.a
  AR      drivers/dma/hsu/built-in.a
  AR      drivers/iommu/intel/built-in.a
  CC      fs/netfs/misc.o
  CC      fs/ext4/fsmap.o
  CC      block/genhd.o
  CC      fs/fat/file.o
  CC      net/core/secure_seq.o
  AR      drivers/iommu/arm/arm-smmu/built-in.a
  CC      arch/x86/events/utils.o
  CC      arch/x86/events/rapl.o
  AR      drivers/iommu/arm/arm-smmu-v3/built-in.a
  AR      drivers/iommu/arm/built-in.a
  CC      drivers/pnp/interface.o
  CC      fs/proc/meminfo.o
  CC      fs/nfs/file.o
  AR      drivers/dma/stm32/built-in.a
  AR      net/sched/built-in.a
  AR      drivers/iommu/iommufd/built-in.a
  CC      arch/x86/events/msr.o
  CC      drivers/virtio/virtio_pci_modern_dev.o
  CC      drivers/iommu/iommu.o
  AR      drivers/dma/ti/built-in.a
  CC      drivers/pci/irq.o
  CC      fs/exportfs/expfs.o
  AR      sound/arm/built-in.a
  CC      drivers/pci/vpd.o
  CC      fs/isofs/compress.o
  CC      drivers/dma/dw/idma32.o
  CC      kernel/power/hibernate.o
  CC      lib/decompress_unzstd.o
  CC      fs/ext4/fsync.o
  CC      net/ethtool/linkmodes.o
  AR      drivers/dma/xilinx/built-in.a
  CC      arch/x86/kernel/cpu/aperfmperf.o
  CC      net/ethtool/rss.o
  CC      security/selinux/ss/avtab.o
  CC      fs/nfs/getroot.o
  CC      io_uring/openclose.o
  CC      drivers/acpi/acpica/dswscope.o
  CC      net/core/flow_dissector.o
  CC      drivers/char/hw_random/intel-rng.o
  CC      kernel/printk/printk_safe.o
  CC      drivers/pnp/quirks.o
  CC      mm/slab_common.o
  CC      crypto/akcipher.o
  CC      drivers/acpi/acpica/dswstate.o
  CC      lib/dump_stack.o
  CC      drivers/pci/setup-bus.o
  CC [M]  sound/core/pcm_lib.o
  AR      fs/exportfs/built-in.a
  CC      fs/proc/stat.o
  CC      crypto/sig.o
  CC      drivers/tty/vt/selection.o
  CC      io_uring/sqpoll.o
  CC      drivers/iommu/iommu-traces.o
  CC      lib/earlycpio.o
  CC      net/ipv4/ip_output.o
  CC      drivers/virtio/virtio_pci_legacy_dev.o
  CC      drivers/dma/dw/acpi.o
  AR      sound/sh/built-in.a
  AR      arch/x86/events/built-in.a
  CC      fs/netfs/objects.o
  CC      drivers/virtio/virtio_pci_modern.o
  AR      sound/synth/emux/built-in.a
  CC      fs/fat/inode.o
  AR      sound/synth/built-in.a
  CC      drivers/virtio/virtio_pci_common.o
  CC      arch/x86/kernel/cpu/cpuid-deps.o
  CC      net/xfrm/xfrm_algo.o
  CC      kernel/power/snapshot.o
  CC      kernel/power/swap.o
  AR      fs/isofs/built-in.a
  AR      net/dsa/built-in.a
  CC      fs/proc/uptime.o
  CC      net/netfilter/nf_conntrack_proto_generic.o
  CC      fs/proc/util.o
  CC      net/ipv4/ip_sockglue.o
  AR      sound/usb/misc/built-in.a
  AR      sound/usb/usx2y/built-in.a
  CC      fs/nfs/inode.o
  AR      sound/usb/caiaq/built-in.a
  AR      sound/usb/6fire/built-in.a
  CC      block/ioprio.o
  AR      sound/usb/hiface/built-in.a
  CC      net/ethtool/linkstate.o
  CC      drivers/acpi/acpica/evevent.o
  AR      sound/usb/bcd2000/built-in.a
  AR      sound/usb/built-in.a
  CC      kernel/printk/nbcon.o
  CC      lib/extable.o
  CC      drivers/char/hw_random/amd-rng.o
  CC [M]  sound/core/pcm_misc.o
  CC      lib/flex_proportions.o
  CC      arch/x86/kernel/cpu/umwait.o
  CC      lib/idr.o
  CC      net/ipv6/udplite.o
  CC      drivers/char/hw_random/geode-rng.o
  CC      net/core/sysctl_net_core.o
  CC      net/ipv6/raw.o
  CC      drivers/pnp/system.o
  CC      security/selinux/ss/policydb.o
  CC      drivers/pci/vc.o
  CC      drivers/pci/mmap.o
  CC      net/xfrm/xfrm_user.o
  AR      drivers/dma/dw/built-in.a
  CC      drivers/dma/dmaengine.o
  CC      drivers/tty/vt/keyboard.o
  CC      crypto/kpp.o
  CC      drivers/acpi/acpica/evgpe.o
  CC      fs/proc/version.o
  CC      kernel/printk/printk_ringbuffer.o
  CC      fs/proc/softirqs.o
  CC      lib/irq_regs.o
  CC      drivers/pci/devres.o
  CC      fs/ext4/hash.o
  CC      fs/lockd/clntlock.o
  CC      drivers/virtio/virtio_pci_legacy.o
  CC      drivers/iommu/iommu-sysfs.o
  CC      fs/lockd/clntproc.o
  AR      drivers/pnp/built-in.a
  CC      fs/lockd/clntxdr.o
  CC      fs/netfs/write_collect.o
  CC      fs/nls/nls_base.o
  AR      fs/unicode/built-in.a
  CC      lib/is_single_threaded.o
  CC      fs/nls/nls_cp437.o
  CC      fs/lockd/host.o
  CC      fs/lockd/svc.o
  CC      fs/nls/nls_ascii.o
  CC      drivers/char/hw_random/via-rng.o
  CC      fs/netfs/write_issue.o
  MKCAP   arch/x86/kernel/cpu/capflags.c
  CC      block/badblocks.o
  CC      net/netfilter/nf_conntrack_proto_tcp.o
  CC      drivers/acpi/acpica/evgpeblk.o
  CC      fs/autofs/init.o
  CC      net/ethtool/debug.o
  CC      net/ethtool/wol.o
  CC      fs/nls/nls_iso8859-1.o
  CC      fs/autofs/inode.o
  CC      kernel/printk/sysctl.o
  CC      lib/klist.o
  CC      drivers/acpi/acpica/evgpeinit.o
  CC      io_uring/xattr.o
  CC      mm/compaction.o
  CC [M]  sound/core/pcm_memory.o
  CC      fs/proc/namespaces.o
  CC      fs/fat/misc.o
  CC      drivers/acpi/acpica/evgpeutil.o
  CC      net/ethtool/features.o
  CC      mm/show_mem.o
  CC      drivers/pci/proc.o
  ASN.1   crypto/rsapubkey.asn1.[ch]
  ASN.1   crypto/rsaprivkey.asn1.[ch]
  CC      crypto/rsa.o
  AR      drivers/char/hw_random/built-in.a
  AR      kernel/printk/built-in.a
  CC      crypto/rsa_helper.o
  CC      crypto/rsa-pkcs1pad.o
  CC      drivers/char/agp/backend.o
  CC      drivers/char/mem.o
  CC      kernel/irq/irqdesc.o
  CC      drivers/iommu/dma-iommu.o
  CC      drivers/iommu/iova.o
  CC      lib/kobject.o
  CC      drivers/acpi/acpica/evglock.o
  CC      fs/nls/nls_utf8.o
  CC      kernel/power/user.o
  CC      fs/ext4/ialloc.o
  CC      drivers/virtio/virtio_pci_admin_legacy_io.o
  CC      kernel/power/poweroff.o
  CC      io_uring/nop.o
  CC      net/core/dev.o
  CC      drivers/dma/virt-dma.o
  CC      net/core/dev_addr_lists.o
  CC      fs/autofs/root.o
  CC      fs/nfs/super.o
  CC      kernel/rcu/update.o
  CC      fs/nfs/io.o
  CC      net/ipv4/inet_hashtables.o
  AR      fs/nls/built-in.a
  CC      drivers/acpi/acpica/evhandler.o
  CC      drivers/acpi/acpica/evmisc.o
  CC      block/blk-rq-qos.o
  CC      kernel/rcu/sync.o
  CC      fs/proc/self.o
  CC      security/selinux/ss/services.o
  CC      kernel/rcu/srcutree.o
  CC      drivers/tty/vt/vt.o
  CC [M]  sound/core/memalloc.o
  CC      arch/x86/kernel/cpu/powerflags.o
  CC      arch/x86/kernel/cpu/topology.o
  CC      fs/fat/nfs.o
  CC [M]  sound/core/pcm_timer.o
  CC      arch/x86/kernel/irq_32.o
  LD [M]  sound/core/snd-hwdep.o
  COPY    drivers/tty/vt/defkeymap.c
  CC      net/ethtool/privflags.o
  CC      fs/9p/vfs_super.o
  CC      net/ethtool/rings.o
  CC      lib/kobject_uevent.o
  CC      drivers/char/agp/generic.o
  CC      lib/logic_pio.o
  CC      fs/lockd/svclock.o
  CC      kernel/irq/handle.o
  CC      net/ipv4/inet_timewait_sock.o
  CC      drivers/pci/pci-sysfs.o
  CC      drivers/virtio/virtio_input.o
  CC      crypto/acompress.o
  CC      drivers/pci/slot.o
  CC      net/ipv6/icmp.o
  CC      crypto/scompress.o
  CC      drivers/acpi/acpica/evregion.o
  AR      kernel/power/built-in.a
  CC      drivers/pci/pci-acpi.o
  CC      drivers/pci/iomap.o
  CC      io_uring/fs.o
  CC      drivers/dma/acpi-dma.o
  CC      drivers/tty/hvc/hvc_console.o
  AR      fs/netfs/built-in.a
  CC      net/ethtool/channels.o
  CC      drivers/pci/quirks.o
  CC      fs/proc/thread_self.o
  CC      fs/autofs/symlink.o
  CC      block/disk-events.o
  CC      fs/proc/proc_sysctl.o
  CC      crypto/algboss.o
  CC      fs/proc/proc_net.o
  CC      net/netfilter/nf_conntrack_proto_udp.o
  CC      kernel/irq/manage.o
  CC      drivers/acpi/acpica/evrgnini.o
  CC      block/blk-ia-ranges.o
  CC      fs/9p/vfs_inode.o
  AR      net/xfrm/built-in.a
  CC      fs/fat/namei_vfat.o
  CC      block/early-lookup.o
  CC      fs/fat/namei_msdos.o
  CC      kernel/irq/spurious.o
  AR      drivers/iommu/built-in.a
  AR      fs/hostfs/built-in.a
  CC      drivers/char/random.o
  CC      net/core/dst.o
  AR      sound/core/built-in.a
  LD [M]  sound/core/snd-pcm.o
  AR      sound/firewire/built-in.a
  AR      sound/sparc/built-in.a
  CC      crypto/testmgr.o
  CC      net/sunrpc/auth_gss/auth_gss.o
  CC      net/sunrpc/clnt.o
  AR      sound/spi/built-in.a
  CC      drivers/virtio/virtio_dma_buf.o
  AR      sound/parisc/built-in.a
  AR      sound/pcmcia/vx/built-in.a
  CC      net/sunrpc/auth_gss/gss_generic_token.o
  AR      sound/pcmcia/pdaudiocf/built-in.a
  AR      sound/pcmcia/built-in.a
  CC      security/selinux/ss/conditional.o
  AR      sound/mips/built-in.a
  AR      sound/soc/built-in.a
  CC      arch/x86/kernel/dumpstack_32.o
  AR      sound/atmel/built-in.a
  AR      sound/hda/built-in.a
  CC [M]  sound/hda/hda_bus_type.o
  CC      net/ethtool/coalesce.o
  CC      drivers/char/agp/isoch.o
  CC [M]  sound/hda/hdac_bus.o
  CC      drivers/char/agp/amd64-agp.o
  AR      drivers/dma/built-in.a
  CC      drivers/acpi/acpica/evsci.o
  CC      lib/maple_tree.o
  AR      sound/x86/built-in.a
  CC      io_uring/splice.o
  CC      io_uring/sync.o
  CC      fs/nfs/direct.o
  CC      drivers/acpi/acpica/evxface.o
  CC      kernel/rcu/tree.o
  AR      drivers/tty/hvc/built-in.a
  CC      drivers/acpi/acpica/evxfevnt.o
  CC      fs/autofs/waitq.o
  CC      drivers/tty/serial/8250/8250_core.o
  AR      drivers/tty/ipwireless/built-in.a
  CC      drivers/tty/serial/8250/8250_platform.o
  CC      block/bounce.o
  CC      net/ipv4/inet_connection_sock.o
  CC      fs/lockd/svcshare.o
  CC      drivers/tty/tty_io.o
  CC      fs/lockd/svcproc.o
  CC      drivers/tty/serial/serial_core.o
  CC      fs/autofs/expire.o
  CC      crypto/cmac.o
  AR      drivers/virtio/built-in.a
  AR      drivers/gpu/host1x/built-in.a
  CC      crypto/hmac.o
  CC      mm/shmem_quota.o
  AR      drivers/gpu/vga/built-in.a
  CC      mm/interval_tree.o
  CC      net/ipv6/mcast.o
  CC      drivers/connector/cn_queue.o
  CC      drivers/base/power/sysfs.o
  CC      drivers/block/loop.o
  AR      drivers/gpu/drm/tests/built-in.a
  AR      drivers/gpu/drm/arm/built-in.a
  CC      drivers/acpi/acpica/evxfgpe.o
  CC      fs/9p/vfs_inode_dotl.o
  CC      drivers/gpu/drm/display/drm_display_helper_mod.o
  CC      drivers/base/regmap/regmap.o
  CC      drivers/base/firmware_loader/builtin/main.o
  CC      net/netfilter/nf_conntrack_proto_icmp.o
  CC      fs/lockd/svcsubs.o
  AR      drivers/base/test/built-in.a
  CC      drivers/base/firmware_loader/main.o
  CC      fs/ext4/indirect.o
  AR      fs/fat/built-in.a
  CC [M]  sound/hda/hdac_device.o
  CC      drivers/base/component.o
  CC      drivers/char/agp/intel-agp.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      drivers/misc/cardreader/built-in.a
  AR      drivers/misc/keba/built-in.a
  CC      fs/debugfs/inode.o
  AR      drivers/misc/built-in.a
  CC      fs/proc/kcore.o
  CC      fs/tracefs/inode.o
  CC      crypto/crypto_null.o
  CC      kernel/irq/resend.o
  CC      fs/proc/vmcore.o
  CC      io_uring/msg_ring.o
  AR      drivers/base/firmware_loader/builtin/built-in.a
  CC      io_uring/advise.o
  CC      net/core/netevent.o
  CC      drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
  CC      security/selinux/ss/mls.o
  CC      drivers/tty/serial/serial_base_bus.o
  CC      drivers/gpu/drm/ttm/ttm_tt.o
  CC      net/ethtool/pause.o
  CC      drivers/acpi/acpica/evxfregn.o
  CC      drivers/gpu/drm/ttm/ttm_bo.o
  CC      net/netfilter/nf_conntrack_extend.o
  CC      drivers/tty/vt/consolemap.o
  CC      drivers/tty/serial/8250/8250_pnp.o
  CC      drivers/base/power/generic_ops.o
  CC      fs/autofs/dev-ioctl.o
  CC      drivers/pci/pci-label.o
  CC      drivers/base/power/common.o
  CC      block/bsg.o
  CC      mm/list_lru.o
  CC      fs/lockd/mon.o
  CC      kernel/irq/chip.o
  CC      drivers/base/core.o
  CC      drivers/connector/connector.o
  CC      fs/9p/vfs_addr.o
  CC      drivers/acpi/acpica/exconcat.o
  CC      drivers/char/agp/intel-gtt.o
  CC      crypto/md5.o
  AR      drivers/base/firmware_loader/built-in.a
  CC      drivers/base/power/qos.o
  CC      crypto/sha256_generic.o
  CC [M]  sound/hda/hdac_sysfs.o
  CC      crypto/sha512_generic.o
  HOSTCC  drivers/tty/vt/conmakehash
  CC      net/sunrpc/auth_gss/gss_mech_switch.o
  CC      fs/lockd/trace.o
  CC      fs/tracefs/event_inode.o
  CC      drivers/tty/serial/8250/8250_rsa.o
  CC      net/netfilter/nf_conntrack_acct.o
  CC      drivers/gpu/drm/display/drm_dp_helper.o
  CC [M]  sound/hda/hdac_regmap.o
  CC      drivers/gpu/drm/display/drm_dp_mst_topology.o
  CC      io_uring/epoll.o
  CC      net/netfilter/nf_conntrack_seqadj.o
  CC      fs/debugfs/file.o
  CC      drivers/base/power/runtime.o
  CC      drivers/acpi/acpica/exconfig.o
  CC      drivers/pci/vgaarb.o
  CC      fs/proc/kmsg.o
  AR      fs/autofs/built-in.a
  CC      net/ipv4/tcp.o
  CC      drivers/block/virtio_blk.o
  AR      sound/xen/built-in.a
  CC      crypto/sha3_generic.o
  CC      drivers/tty/vt/defkeymap.o
  CC      net/ethtool/eee.o
  CC      crypto/ecb.o
  CC      block/blk-cgroup.o
  CC      mm/workingset.o
  CC      drivers/gpu/drm/ttm/ttm_bo_util.o
  CC      drivers/gpu/drm/ttm/ttm_bo_vm.o
  CC      drivers/base/regmap/regcache.o
  CC [M]  sound/hda/hdac_controller.o
  CONMK   drivers/tty/vt/consolemap_deftbl.c
  CC      drivers/tty/vt/consolemap_deftbl.o
  CC      kernel/irq/dummychip.o
  CC      security/selinux/ss/context.o
  AR      drivers/tty/vt/built-in.a
  CC      security/selinux/netlabel.o
  AR      drivers/mfd/built-in.a
  CC      drivers/acpi/acpica/exconvrt.o
  CC      net/ipv4/tcp_input.o
  CC      fs/nfs/pagelist.o
  CC      fs/9p/vfs_file.o
  CC      fs/nfs/read.o
  CC      fs/proc/page.o
  CC      drivers/connector/cn_proc.o
  CC      drivers/tty/serial/8250/8250_port.o
  CC      drivers/acpi/acpica/excreate.o
  CC      kernel/irq/devres.o
  CC      io_uring/statx.o
  AR      kernel/livepatch/built-in.a
  CC      crypto/cbc.o
  AR      drivers/char/agp/built-in.a
  CC      drivers/char/misc.o
  CC      drivers/acpi/device_pm.o
  CC      io_uring/timeout.o
  AR      drivers/nfc/built-in.a
  CC      net/netfilter/nf_conntrack_proto_icmpv6.o
  CC      fs/nfs/symlink.o
  CC      net/ipv6/reassembly.o
  AR      fs/tracefs/built-in.a
  CC      fs/nfs/unlink.o
  CC      drivers/gpu/drm/ttm/ttm_module.o
  CC      fs/lockd/xdr.o
  CC      fs/lockd/clnt4xdr.o
  CC      fs/ext4/inline.o
  CC      drivers/acpi/acpica/exdebug.o
  CC      mm/debug.o
  CC      drivers/acpi/acpica/exdump.o
  CC      drivers/base/power/wakeirq.o
  CC      drivers/char/virtio_console.o
  AR      fs/debugfs/built-in.a
  CC      drivers/acpi/proc.o
  CC      drivers/tty/serial/8250/8250_dma.o
  CC      net/ethtool/tsinfo.o
  AR      drivers/pci/built-in.a
  CC      kernel/irq/autoprobe.o
  CC      crypto/ctr.o
  CC      lib/memcat_p.o
  CC [M]  sound/hda/hdac_stream.o
  CC      net/sunrpc/auth_gss/svcauth_gss.o
  CC      crypto/gcm.o
  AR      drivers/block/built-in.a
  CC      io_uring/fdinfo.o
  CC      drivers/base/bus.o
  CC      fs/9p/vfs_dir.o
  CC      drivers/base/dd.o
  CC      io_uring/cancel.o
  CC      drivers/base/regmap/regcache-rbtree.o
  AR      fs/proc/built-in.a
  CC      drivers/acpi/acpica/exfield.o
  CC      drivers/acpi/acpica/exfldio.o
  CC      drivers/gpu/drm/i915/i915_config.o
  CC      drivers/gpu/drm/ttm/ttm_execbuf_util.o
  CC      drivers/gpu/drm/ttm/ttm_range_manager.o
  CC      drivers/acpi/acpica/exmisc.o
  CC      drivers/acpi/acpica/exmutex.o
  CC      drivers/base/power/main.o
  CC      drivers/acpi/acpica/exnames.o
  CC      kernel/irq/irqdomain.o
  AR      security/selinux/built-in.a
  AR      security/built-in.a
  AR      drivers/connector/built-in.a
  CC      crypto/ccm.o
  CC      net/ipv4/tcp_output.o
  CC      drivers/gpu/drm/i915/i915_driver.o
  CC      block/blk-ioprio.o
  CC      drivers/char/hpet.o
  AR      net/wireless/tests/built-in.a
  CC      arch/x86/kernel/cpu/proc.o
  CC      net/wireless/core.o
  CC      fs/nfs/write.o
  CC      kernel/irq/proc.o
  CC      fs/nfs/namespace.o
  CC      mm/gup.o
  CC      mm/mmap_lock.o
  CC      kernel/irq/migration.o
  CC      fs/lockd/xdr4.o
  CC      mm/highmem.o
  CC      fs/lockd/svc4proc.o
  CC      drivers/tty/serial/serial_ctrl.o
  CC      io_uring/waitid.o
  CC      kernel/rcu/rcu_segcblist.o
  CC      fs/9p/vfs_dentry.o
  CC      drivers/acpi/acpica/exoparg1.o
  CC      drivers/base/power/wakeup.o
  CC      net/netfilter/nf_conntrack_netlink.o
  CC      arch/x86/kernel/time.o
  CC      drivers/base/regmap/regcache-flat.o
  CC      net/ethtool/cabletest.o
  CC      fs/lockd/procfs.o
  CC [M]  sound/hda/array.o
  CC      drivers/gpu/drm/ttm/ttm_resource.o
  CC      drivers/gpu/drm/i915/i915_drm_client.o
  CC      mm/memory.o
  CC      net/ipv6/tcp_ipv6.o
  CC      mm/mincore.o
  CC      drivers/tty/serial/8250/8250_dwlib.o
  CC      kernel/irq/cpuhotplug.o
  CC      drivers/gpu/drm/i915/i915_getparam.o
  CC      kernel/dma/mapping.o
  CC      arch/x86/kernel/cpu/feat_ctl.o
  CC      block/blk-iolatency.o
  CC      fs/ext4/inode.o
  CC      kernel/dma/direct.o
  CC      kernel/irq/pm.o
  AR      kernel/rcu/built-in.a
  CC      drivers/acpi/acpica/exoparg2.o
  CC      kernel/entry/common.o
  CC      drivers/acpi/acpica/exoparg3.o
  CC      crypto/aes_generic.o
  CC      drivers/gpu/drm/display/drm_dsc_helper.o
  CC      drivers/tty/serial/serial_port.o
  CC      drivers/base/regmap/regcache-maple.o
  CC      fs/9p/v9fs.o
  CC      drivers/char/nvram.o
  CC      io_uring/register.o
  CC      net/ipv4/tcp_timer.o
  CC      lib/nmi_backtrace.o
  CC      lib/objpool.o
  CC      net/core/neighbour.o
  CC [M]  sound/hda/hdmi_chmap.o
  CC      arch/x86/kernel/cpu/intel.o
  CC      io_uring/truncate.o
  CC      mm/mlock.o
  CC      kernel/irq/msi.o
  CC      drivers/base/regmap/regmap-debugfs.o
  CC      net/ipv6/ping.o
  CC      drivers/acpi/acpica/exoparg6.o
  AR      drivers/dax/hmem/built-in.a
  CC      drivers/dma-buf/dma-buf.o
  CC      drivers/gpu/drm/ttm/ttm_pool.o
  AR      drivers/dax/built-in.a
  CC      drivers/tty/serial/8250/8250_pcilib.o
  CC      net/sunrpc/auth_gss/gss_rpc_upcall.o
  CC      drivers/tty/serial/8250/8250_early.o
  AR      fs/lockd/built-in.a
  CC      drivers/acpi/acpica/exprep.o
  AR      drivers/cxl/core/built-in.a
  AR      drivers/cxl/built-in.a
  CC      net/sunrpc/auth_gss/gss_rpc_xdr.o
  CC      net/core/rtnetlink.o
  CC      net/ethtool/tunnels.o
  CC      fs/9p/fid.o
  CC      net/ipv4/tcp_ipv4.o
  CC      drivers/gpu/drm/ttm/ttm_device.o
  CC      drivers/macintosh/mac_hid.o
  CC      kernel/dma/ops_helpers.o
  AR      drivers/scsi/pcmcia/built-in.a
  CC      drivers/scsi/scsi.o
  CC      drivers/base/power/wakeup_stats.o
  CC      kernel/dma/dummy.o
  AR      drivers/nvme/common/built-in.a
  CC      crypto/crc32c_generic.o
  AR      drivers/nvme/host/built-in.a
  CC      net/ipv4/tcp_minisocks.o
  AR      drivers/nvme/target/built-in.a
  CC      lib/plist.o
  AR      drivers/nvme/built-in.a
  CC      drivers/gpu/drm/i915/i915_ioctl.o
  CC      drivers/gpu/drm/i915/i915_irq.o
  CC      drivers/acpi/acpica/exregion.o
  CC      drivers/base/syscore.o
  AR      drivers/char/built-in.a
  CC      crypto/authenc.o
  CC      drivers/gpu/drm/display/drm_hdcp_helper.o
  CC      net/ipv6/exthdrs.o
  CC      lib/radix-tree.o
  CC      net/ipv6/datagram.o
  CC      kernel/entry/syscall_user_dispatch.o
  CC      drivers/tty/serial/8250/8250_exar.o
  CC      kernel/irq/affinity.o
  CC      net/ethtool/fec.o
  CC [M]  sound/hda/trace.o
  AR      drivers/base/regmap/built-in.a
  CC      net/ethtool/eeprom.o
  CC      fs/ext4/ioctl.o
  CC      drivers/base/power/trace.o
  CC      fs/ext4/mballoc.o
  AR      drivers/macintosh/built-in.a
  CC      drivers/acpi/acpica/exresnte.o
  CC      arch/x86/kernel/ioport.o
  CC      kernel/module/main.o
  CC      fs/9p/xattr.o
  CC      block/blk-iocost.o
  CC      kernel/time/time.o
  CC      kernel/dma/remap.o
  CC      kernel/time/timer.o
  CC      drivers/gpu/drm/ttm/ttm_sys_manager.o
  CC      kernel/module/strict_rwx.o
  CC      net/netfilter/nf_conntrack_ftp.o
  CC      net/netfilter/nf_conntrack_irc.o
  CC      arch/x86/kernel/cpu/tsx.o
  CC      drivers/dma-buf/dma-fence.o
  CC      kernel/module/kmod.o
  CC      kernel/irq/matrix.o
  CC      io_uring/memmap.o
  CC      net/ipv6/ip6_flowlabel.o
  AR      kernel/entry/built-in.a
  CC      drivers/acpi/acpica/exresolv.o
  CC      drivers/gpu/drm/display/drm_hdmi_helper.o
  CC [M]  sound/hda/hdac_component.o
  CC      net/sunrpc/auth_gss/trace.o
  CC      lib/ratelimit.o
  CC      net/ethtool/stats.o
  CC      mm/mmap.o
  CC      crypto/authencesn.o
  CC      drivers/gpu/drm/ttm/ttm_agp_backend.o
  CC      drivers/base/driver.o
  CC      fs/nfs/mount_clnt.o
  AR      drivers/base/power/built-in.a
  CC      arch/x86/kernel/cpu/intel_epb.o
  CC      drivers/scsi/hosts.o
  CC      lib/rbtree.o
  CC      crypto/lzo.o
  CC      arch/x86/kernel/dumpstack.o
  CC [M]  sound/hda/hdac_i915.o
  AR      fs/9p/built-in.a
  CC      drivers/acpi/acpica/exresop.o
  CC      drivers/tty/serial/8250/8250_lpss.o
  CC      drivers/tty/serial/8250/8250_mid.o
  AR      kernel/dma/built-in.a
  CC      drivers/tty/serial/8250/8250_pci.o
  CC      drivers/base/class.o
  CC      lib/seq_buf.o
  CC      net/ipv4/tcp_cong.o
  CC      net/ipv6/inet6_connection_sock.o
  CC      net/sunrpc/auth_gss/gss_krb5_mech.o
  CC      net/core/utils.o
  CC      drivers/gpu/drm/display/drm_scdc_helper.o
  CC      drivers/dma-buf/dma-fence-array.o
  CC      drivers/gpu/drm/i915/i915_mitigations.o
  CC      net/ipv6/udp_offload.o
  CC      drivers/gpu/drm/i915/i915_module.o
  CC      lib/siphash.o
  CC      drivers/base/platform.o
  CC      lib/string.o
  CC      io_uring/io-wq.o
  CC      kernel/time/hrtimer.o
  CC      arch/x86/kernel/cpu/amd.o
  CC      drivers/dma-buf/dma-fence-chain.o
  CC      net/wireless/sysfs.o
  CC      drivers/acpi/acpica/exserial.o
  AR      drivers/gpu/drm/ttm/built-in.a
  AR      drivers/gpu/drm/renesas/rcar-du/built-in.a
  AR      drivers/gpu/drm/renesas/rz-du/built-in.a
  CC      drivers/dma-buf/dma-fence-unwrap.o
  AR      drivers/gpu/drm/renesas/built-in.a
  CC      drivers/base/cpu.o
  CC      crypto/lzo-rle.o
  CC      drivers/acpi/acpica/exstore.o
  CC      drivers/gpu/drm/i915/i915_params.o
  AR      drivers/gpu/drm/omapdrm/built-in.a
  CC      mm/mmu_gather.o
  CC [M]  sound/hda/intel-dsp-config.o
  AR      drivers/gpu/drm/tilcdc/built-in.a
  CC      crypto/rng.o
  CC      drivers/gpu/drm/i915/i915_pci.o
  CC      drivers/dma-buf/dma-resv.o
  CC      drivers/scsi/scsi_ioctl.o
  AR      kernel/irq/built-in.a
  CC      net/netfilter/nf_conntrack_sip.o
  CC      drivers/scsi/scsicam.o
  CC      drivers/gpu/drm/virtio/virtgpu_drv.o
  CC      drivers/gpu/drm/virtio/virtgpu_kms.o
  CC      kernel/futex/core.o
  CC      drivers/gpu/drm/virtio/virtgpu_gem.o
  CC      drivers/dma-buf/sync_file.o
  CC      net/ethtool/phc_vclocks.o
  CC      drivers/gpu/drm/virtio/virtgpu_vram.o
  CC      net/core/link_watch.o
  CC      lib/timerqueue.o
  CC      net/core/filter.o
  CC      fs/nfs/nfstrace.o
  CC      net/sunrpc/auth_gss/gss_krb5_seal.o
  CC      drivers/acpi/acpica/exstoren.o
  AR      drivers/gpu/drm/display/built-in.a
  CC      arch/x86/kernel/nmi.o
  AR      drivers/gpu/drm/imx/built-in.a
  AR      drivers/gpu/drm/i2c/built-in.a
  AR      drivers/gpu/drm/panel/built-in.a
  AR      drivers/gpu/drm/bridge/analogix/built-in.a
  CC      lib/vsprintf.o
  AR      drivers/gpu/drm/bridge/cadence/built-in.a
  AR      drivers/gpu/drm/bridge/imx/built-in.a
  AR      drivers/gpu/drm/bridge/synopsys/built-in.a
  AR      drivers/gpu/drm/bridge/built-in.a
  CC      crypto/drbg.o
  AR      drivers/gpu/drm/hisilicon/built-in.a
  CC      kernel/module/tree_lookup.o
  CC      drivers/gpu/drm/i915/i915_scatterlist.o
  AR      drivers/gpu/drm/mxsfb/built-in.a
  AR      drivers/gpu/drm/tiny/built-in.a
  AR      drivers/gpu/drm/xlnx/built-in.a
  AR      drivers/gpu/drm/gud/built-in.a
  AR      drivers/gpu/drm/solomon/built-in.a
  CC      drivers/tty/serial/8250/8250_pericom.o
  CC [M]  drivers/gpu/drm/scheduler/sched_main.o
  CC      arch/x86/kernel/cpu/hygon.o
  CC      kernel/module/kallsyms.o
  CC      net/ipv6/seg6.o
  CC [M]  sound/hda/intel-nhlt.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC      kernel/module/procfs.o
  CC      net/core/sock_diag.o
  CC      lib/win_minmax.o
  CC      drivers/acpi/acpica/exstorob.o
  CC      arch/x86/kernel/ldt.o
  CC      crypto/jitterentropy.o
  CC      fs/ext4/migrate.o
  CC      drivers/base/firmware.o
  CC      drivers/base/init.o
  CC      fs/ext4/mmp.o
  CC      drivers/base/map.o
  GEN     xe_wa_oob.c xe_wa_oob.h
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  CC      net/ipv6/fib6_notifier.o
  CC      lib/xarray.o
  CC [M]  drivers/gpu/drm/scheduler/sched_fence.o
  AR      drivers/dma-buf/built-in.a
  CC      crypto/jitterentropy-kcapi.o
  CC      drivers/gpu/drm/i915/i915_suspend.o
  CC      crypto/ghash-generic.o
  CC      kernel/futex/syscalls.o
  CC      drivers/gpu/drm/virtio/virtgpu_display.o
  CC      drivers/scsi/scsi_error.o
  CC      io_uring/futex.o
  CC      kernel/time/timekeeping.o
  CC      block/mq-deadline.o
  CC      net/ipv4/tcp_metrics.o
  CC      net/ipv4/tcp_fastopen.o
  CC      net/sunrpc/auth_gss/gss_krb5_unseal.o
  CC      arch/x86/kernel/cpu/centaur.o
  CC      net/ethtool/mm.o
  CC      drivers/scsi/scsi_lib.o
  CC      net/sunrpc/auth_gss/gss_krb5_wrap.o
  CC      drivers/acpi/acpica/exsystem.o
  CC      kernel/module/sysfs.o
  CC      net/ipv6/rpl.o
  CC [M]  sound/hda/intel-sdw-acpi.o
  CC      fs/ext4/move_extent.o
  CC      drivers/scsi/constants.o
  CC      mm/mprotect.o
  AR      drivers/tty/serial/8250/built-in.a
  CC      drivers/tty/serial/earlycon.o
  CC      crypto/hash_info.o
  CC      mm/mremap.o
  LD [M]  sound/hda/snd-hda-core.o
  CC      net/netfilter/nf_nat_core.o
  CC      mm/msync.o
  CC      crypto/rsapubkey.asn1.o
  CC      crypto/rsaprivkey.asn1.o
  CC      mm/page_vma_mapped.o
  CC      net/core/dev_ioctl.o
  CC      mm/pagewalk.o
  AR      crypto/built-in.a
  CC      net/core/tso.o
  CC      net/core/sock_reuseport.o
  CC      drivers/base/devres.o
  CC      net/core/fib_notifier.o
  CC      mm/pgtable-generic.o
  CC      drivers/acpi/acpica/extrace.o
  CC      arch/x86/kernel/cpu/transmeta.o
  CC [M]  drivers/gpu/drm/xe/xe_bo.o
  CC      arch/x86/kernel/setup.o
  CC      net/sunrpc/auth_gss/gss_krb5_crypto.o
  CC      drivers/gpu/drm/virtio/virtgpu_vq.o
  CC [M]  fs/efivarfs/inode.o
  CC      fs/open.o
  LD [M]  sound/hda/snd-intel-dspcfg.o
  LD [M]  sound/hda/snd-intel-sdw-acpi.o
  CC [M]  fs/efivarfs/file.o
  AR      sound/virtio/built-in.a
  CC      kernel/futex/pi.o
  CC      sound/sound_core.o
  CC      lib/lockref.o
  CC [M]  fs/efivarfs/super.o
  CC      net/core/xdp.o
  CC [M]  drivers/gpu/drm/scheduler/sched_entity.o
  CC      net/sunrpc/auth_gss/gss_krb5_keys.o
  AR      kernel/module/built-in.a
  CC      drivers/acpi/acpica/exutils.o
  CC      fs/ext4/namei.o
  CC      drivers/scsi/scsi_lib_dma.o
  CC      io_uring/napi.o
  AR      drivers/tty/serial/built-in.a
  CC      drivers/tty/n_tty.o
  CC      drivers/gpu/drm/i915/i915_switcheroo.o
  CC      net/ethtool/module.o
  CC      lib/bcd.o
  CC      drivers/acpi/bus.o
  CC      net/sunrpc/xprt.o
  CC      sound/last.o
  CC      arch/x86/kernel/cpu/zhaoxin.o
  CC      net/ipv6/ioam6.o
  AR      net/mac80211/tests/built-in.a
  CC      net/mac80211/main.o
  CC      drivers/base/attribute_container.o
  CC      net/mac80211/status.o
  CC      net/mac80211/driver-ops.o
  CC      net/wireless/radiotap.o
  CC      net/mac80211/sta_info.o
  CC      drivers/tty/tty_ioctl.o
  CC      net/core/flow_offload.o
  CC      block/kyber-iosched.o
  CC      drivers/acpi/acpica/hwacpi.o
  CC      net/ipv6/sysctl_net_ipv6.o
  CC      net/mac80211/wep.o
  CC      drivers/gpu/drm/drm_aperture.o
  CC      mm/rmap.o
  CC      drivers/acpi/acpica/hwesleep.o
  CC      block/blk-mq-pci.o
  CC      net/ethtool/cmis_fw_update.o
  CC      kernel/futex/requeue.o
  CC      kernel/time/ntp.o
  CC      net/ipv4/tcp_rate.o
  LD [M]  drivers/gpu/drm/scheduler/gpu-sched.o
  CC      drivers/gpu/drm/drm_atomic.o
  CC      arch/x86/kernel/cpu/vortex.o
  CC      net/core/gro.o
  CC      lib/sort.o
  CC      net/wireless/util.o
  AR      sound/built-in.a
  CC      lib/parser.o
  CC [M]  fs/efivarfs/vars.o
  CC      net/core/netdev-genl.o
  CC      kernel/time/clocksource.o
  CC      lib/debug_locks.o
  CC      drivers/acpi/acpica/hwgpe.o
  AR      net/sunrpc/auth_gss/built-in.a
  CC      drivers/gpu/drm/drm_atomic_uapi.o
  CC      drivers/gpu/drm/drm_auth.o
  CC      drivers/base/transport_class.o
  CC      drivers/scsi/scsi_scan.o
  CC      net/mac80211/aead_api.o
  CC      net/netfilter/nf_nat_proto.o
  CC      net/mac80211/wpa.o
  CC      net/ipv4/tcp_recovery.o
  CC      drivers/gpu/drm/virtio/virtgpu_fence.o
  CC      net/core/netdev-genl-gen.o
  CC      arch/x86/kernel/cpu/perfctr-watchdog.o
  CC      drivers/gpu/drm/i915/i915_sysfs.o
  CC      lib/random32.o
  CC      drivers/acpi/glue.o
  CC      block/blk-mq-virtio.o
  CC      drivers/tty/tty_ldisc.o
  CC      net/ipv4/tcp_ulp.o
  CC      drivers/acpi/acpica/hwregs.o
  CC      drivers/base/topology.o
  CC      kernel/futex/waitwake.o
  CC      net/netlabel/netlabel_user.o
  CC      net/rfkill/core.o
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  AR      io_uring/built-in.a
  CC      net/rfkill/input.o
  CC      net/core/gso.o
  CC      kernel/time/jiffies.o
  CC      net/core/net-sysfs.o
  CC      kernel/time/timer_list.o
  CC      lib/bust_spinlocks.o
  CC      drivers/acpi/scan.o
  CC      drivers/tty/tty_buffer.o
  LD [M]  fs/efivarfs/efivarfs.o
  CC      drivers/tty/tty_port.o
  CC      lib/kasprintf.o
  CC      net/ethtool/cmis_cdb.o
  CC      kernel/time/timeconv.o
  CC      drivers/acpi/mipi-disco-img.o
  CC      arch/x86/kernel/cpu/vmware.o
  CC      net/core/hotdata.o
  CC      drivers/gpu/drm/virtio/virtgpu_object.o
  CC      fs/ext4/page-io.o
  CC      drivers/acpi/acpica/hwsleep.o
  CC      lib/bitmap.o
  CC      fs/read_write.o
  CC      kernel/time/timecounter.o
  CC      block/blk-mq-debugfs.o
  CC      drivers/base/container.o
  CC      kernel/time/alarmtimer.o
  CC      drivers/gpu/drm/drm_blend.o
  CC      net/ipv6/xfrm6_policy.o
  CC      drivers/gpu/drm/drm_bridge.o
  CC      kernel/time/posix-timers.o
  CC      drivers/tty/tty_mutex.o
  AR      kernel/futex/built-in.a
  CC      fs/file_table.o
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  GEN     drivers/scsi/scsi_devinfo_tbl.c
  CC      drivers/scsi/scsi_devinfo.o
  CC      drivers/gpu/drm/i915/i915_utils.o
  CC      drivers/gpu/drm/virtio/virtgpu_debugfs.o
  CC      drivers/gpu/drm/drm_cache.o
  CC      drivers/acpi/acpica/hwvalid.o
  CC      net/9p/mod.o
  CC      kernel/cgroup/cgroup.o
  CC      net/9p/client.o
  CC      net/dns_resolver/dns_key.o
  CC      kernel/cgroup/rstat.o
  CC      drivers/tty/tty_ldsem.o
  CC      mm/vmalloc.o
  AR      net/rfkill/built-in.a
  CC      net/dns_resolver/dns_query.o
  CC      drivers/tty/tty_baudrate.o
  CC      net/netlabel/netlabel_kapi.o
  CC      drivers/base/property.o
  CC      net/netfilter/nf_nat_helper.o
  CC      net/netfilter/nf_nat_masquerade.o
  CC      arch/x86/kernel/cpu/hypervisor.o
  CC      net/ipv4/tcp_offload.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  CC      drivers/gpu/drm/virtio/virtgpu_plane.o
  CC      fs/nfs/export.o
  CC      drivers/acpi/acpica/hwxface.o
  CC      fs/ext4/readpage.o
  CC      net/ethtool/pse-pd.o
  CC      drivers/base/cacheinfo.o
  CC      net/ethtool/plca.o
  CC      arch/x86/kernel/cpu/mshyperv.o
  CC      lib/scatterlist.o
  CC      drivers/gpu/drm/drm_client.o
  CC      net/9p/error.o
  CC      drivers/gpu/drm/drm_client_modeset.o
  CC      fs/ext4/resize.o
  CC      fs/ext4/super.o
  CC      block/blk-pm.o
  CC      drivers/tty/tty_jobctrl.o
  CC      net/mac80211/scan.o
  CC      net/mac80211/offchannel.o
  CC      arch/x86/kernel/x86_init.o
  CC      drivers/scsi/scsi_sysctl.o
  CC      net/mac80211/ht.o
  CC      net/mac80211/agg-tx.o
  CC      drivers/acpi/acpica/hwxfsleep.o
  AR      net/dns_resolver/built-in.a
  CC      fs/super.o
  CC      drivers/tty/n_null.o
  CC      drivers/acpi/acpica/hwpci.o
  CC      net/sunrpc/socklib.o
  CC      drivers/gpu/drm/i915/intel_clock_gating.o
  CC      kernel/time/posix-cpu-timers.o
  CC      net/ipv6/xfrm6_state.o
  CC      drivers/gpu/drm/i915/intel_device_info.o
  CC      fs/char_dev.o
  CC      drivers/gpu/drm/virtio/virtgpu_ioctl.o
  CC      net/mac80211/agg-rx.o
  CC      net/mac80211/vht.o
  CC      fs/nfs/sysfs.o
  CC      drivers/acpi/acpica/nsaccess.o
  CC      drivers/tty/pty.o
  CC      drivers/tty/tty_audit.o
  CC      block/holder.o
  CC      kernel/time/posix-clock.o
  CC      drivers/base/swnode.o
  CC      fs/nfs/fs_context.o
  CC      net/handshake/alert.o
  CC      drivers/tty/sysrq.o
  CC      drivers/base/auxiliary.o
  CC [M]  drivers/gpu/drm/xe/xe_device_sysfs.o
  CC      kernel/cgroup/namespace.o
  CC      kernel/cgroup/cgroup-v1.o
  CC      arch/x86/kernel/cpu/debugfs.o
  CC      net/netfilter/nf_nat_ftp.o
  CC      fs/ext4/symlink.o
  CC      drivers/scsi/scsi_proc.o
  CC      net/handshake/genl.o
  CC      net/netlabel/netlabel_domainhash.o
  AR      net/ethtool/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  CC      lib/list_sort.o
  CC      net/9p/protocol.o
  CC      lib/uuid.o
  CC      net/ipv4/tcp_plb.o
  CC      drivers/acpi/acpica/nsalloc.o
  CC      lib/iov_iter.o
  CC      net/9p/trans_common.o
  CC      drivers/gpu/drm/drm_color_mgmt.o
  CC      fs/stat.o
  CC      drivers/base/devtmpfs.o
  AR      block/built-in.a
  CC      net/sunrpc/xprtsock.o
  CC      net/sunrpc/sched.o
  CC      drivers/gpu/drm/virtio/virtgpu_prime.o
  CC      net/ipv6/xfrm6_input.o
  CC      net/core/net-procfs.o
  CC      arch/x86/kernel/cpu/capflags.o
  CC      drivers/scsi/scsi_debugfs.o
  AR      arch/x86/kernel/cpu/built-in.a
  CC      drivers/scsi/scsi_trace.o
  CC      arch/x86/kernel/i8259.o
  CC      net/netlabel/netlabel_addrlist.o
  CC      net/9p/trans_fd.o
  CC      drivers/acpi/acpica/nsarguments.o
  CC      drivers/gpu/drm/virtio/virtgpu_trace_points.o
  CC      drivers/gpu/drm/i915/intel_memory_region.o
  CC      kernel/time/itimer.o
  CC      net/mac80211/he.o
  CC      net/handshake/netlink.o
  CC      net/sunrpc/auth.o
  CC      net/netlabel/netlabel_mgmt.o
  CC      net/handshake/request.o
  CC      kernel/time/clockevents.o
  CC [M]  drivers/gpu/drm/xe/xe_drm_client.o
  CC      net/core/netpoll.o
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  CC      net/wireless/reg.o
  CC      net/core/fib_rules.o
  AR      drivers/tty/built-in.a
  CC      fs/ext4/sysfs.o
  CC      drivers/gpu/drm/virtio/virtgpu_submit.o
  CC      drivers/acpi/resource.o
  CC      net/netfilter/nf_nat_irc.o
  CC      drivers/acpi/acpica/nsconvert.o
  CC      drivers/gpu/drm/drm_connector.o
  CC      arch/x86/kernel/irqinit.o
  CC      drivers/gpu/drm/i915/intel_pcode.o
  CC      drivers/scsi/scsi_logging.o
  CC      net/handshake/tlshd.o
  CC      kernel/time/tick-common.o
  CC      drivers/scsi/scsi_pm.o
  CC      drivers/base/module.o
  CC      net/ipv4/datagram.o
  CC      kernel/cgroup/freezer.o
  CC      arch/x86/kernel/jump_label.o
  CC      fs/exec.o
  CC      drivers/acpi/acpica/nsdump.o
  CC      drivers/acpi/acpica/nseval.o
  CC      drivers/gpu/drm/drm_crtc.o
  CC      mm/process_vm_access.o
  CC      net/netlabel/netlabel_unlabeled.o
  CC      drivers/gpu/drm/drm_displayid.o
  CC      kernel/time/tick-broadcast.o
  CC      fs/pipe.o
  CC      drivers/base/auxiliary_sysfs.o
  CC      drivers/scsi/scsi_bsg.o
  CC      net/ipv6/xfrm6_output.o
  AR      drivers/gpu/drm/virtio/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  CC      lib/clz_ctz.o
  CC      kernel/cgroup/legacy_freezer.o
  CC      drivers/gpu/drm/i915/intel_region_ttm.o
  CC      kernel/cgroup/pids.o
  CC      net/9p/trans_virtio.o
  CC      lib/bsearch.o
  CC      fs/nfs/nfsroot.o
  CC      drivers/acpi/acpica/nsinit.o
  CC      drivers/acpi/acpica/nsload.o
  CC      fs/nfs/sysctl.o
  CC      fs/nfs/nfs3super.o
  CC      net/mac80211/s1g.o
  CC [M]  drivers/gpu/drm/xe/xe_exec_queue.o
  CC      arch/x86/kernel/irq_work.o
  CC      net/netlabel/netlabel_cipso_v4.o
  CC      drivers/scsi/scsi_common.o
  CC      drivers/acpi/acpica/nsnames.o
  CC      fs/ext4/xattr.o
  CC      kernel/cgroup/rdma.o
  CC      net/netfilter/nf_nat_sip.o
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  CC      net/netlabel/netlabel_calipso.o
  CC      fs/nfs/nfs3client.o
  CC      drivers/base/devcoredump.o
  CC      kernel/cgroup/cpuset.o
  CC      net/handshake/trace.o
  CC      kernel/time/tick-broadcast-hrtimer.o
  CC      net/netfilter/x_tables.o
  CC      fs/nfs/nfs3proc.o
  CC      drivers/gpu/drm/drm_drv.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  CC      fs/nfs/nfs3xdr.o
  CC      kernel/cgroup/misc.o
  CC      fs/ext4/xattr_hurd.o
  CC      drivers/acpi/acpica/nsobject.o
  CC      drivers/gpu/drm/drm_dumb_buffers.o
  CC      net/ipv4/raw.o
  CC      mm/page_alloc.o
  CC      net/netfilter/xt_tcpudp.o
  CC      drivers/acpi/acpica/nsparse.o
  CC      drivers/scsi/scsi_transport_spi.o
  CC      lib/find_bit.o
  CC      net/core/net-traces.o
  CC      net/core/selftests.o
  CC      kernel/cgroup/debug.o
  CC      kernel/time/tick-oneshot.o
  CC      kernel/time/tick-sched.o
  CC      drivers/acpi/acpi_processor.o
  CC      drivers/gpu/drm/i915/intel_runtime_pm.o
  CC      lib/llist.o
  CC      drivers/acpi/acpica/nspredef.o
  CC      lib/lwq.o
  CC      drivers/acpi/processor_core.o
  CC      fs/namei.o
  CC      drivers/acpi/processor_pdc.o
  CC      lib/memweight.o
  CC      lib/kfifo.o
  CC      kernel/time/timer_migration.o
  CC      drivers/base/platform-msi.o
  CC      fs/nfs/nfs3acl.o
  CC      fs/fcntl.o
  CC      net/netfilter/xt_CONNSECMARK.o
  CC      net/devres.o
  CC      net/netfilter/xt_NFLOG.o
  CC      net/socket.o
  CC      net/ipv6/xfrm6_protocol.o
  AR      net/9p/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_gpu_scheduler.o
  CC      fs/ioctl.o
  CC      net/sysctl_net.o
  CC      arch/x86/kernel/probe_roms.o
  CC      fs/readdir.o
  CC      drivers/base/physical_location.o
  CC      kernel/time/vsyscall.o
  CC      drivers/acpi/acpica/nsprepkg.o
  AR      net/netlabel/built-in.a
  CC      drivers/gpu/drm/drm_edid.o
  CC      kernel/time/timekeeping_debug.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc.o
  CC      net/sunrpc/auth_null.o
  CC      drivers/gpu/drm/i915/intel_sbi.o
  CC      drivers/acpi/ec.o
  CC      fs/select.o
  CC      drivers/gpu/drm/drm_eld.o
  CC      net/sunrpc/auth_tls.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_proxy.o
  CC      mm/init-mm.o
  CC      fs/dcache.o
  CC      fs/inode.o
  CC      drivers/acpi/dock.o
  CC      drivers/ata/libata-core.o
  CC      net/sunrpc/auth_unix.o
  CC      kernel/time/namespace.o
  CC      drivers/acpi/acpica/nsrepair.o
  CC      drivers/base/trace.o
  CC      lib/percpu-refcount.o
  AR      net/handshake/built-in.a
  CC      net/sunrpc/svc.o
  CC      drivers/scsi/virtio_scsi.o
  CC      drivers/scsi/sd.o
  CC      arch/x86/kernel/sys_ia32.o
  AR      drivers/net/phy/qcom/built-in.a
  CC      drivers/net/phy/mdio-boardinfo.o
  CC      drivers/firewire/init_ohci1394_dma.o
  CC      net/netfilter/xt_SECMARK.o
  CC      net/core/ptp_classifier.o
  CC      net/ipv4/udp.o
  CC      net/netfilter/xt_TCPMSS.o
  CC      net/netfilter/xt_conntrack.o
  CC      drivers/gpu/drm/drm_encoder.o
  CC      drivers/net/phy/stubs.o
  CC      drivers/acpi/acpica/nsrepair2.o
  CC      fs/nfs/nfs4proc.o
  CC      drivers/ata/libata-scsi.o
  CC      net/core/netprio_cgroup.o
  CC      net/core/netclassid_cgroup.o
  CC      drivers/gpu/drm/drm_file.o
  CC      net/ipv6/netfilter.o
  CC      mm/memblock.o
  CC      drivers/acpi/pci_root.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_submit.o
  CC      drivers/gpu/drm/i915/intel_step.o
  CC      fs/nfs/nfs4xdr.o
  CC      lib/rhashtable.o
  CC      lib/base64.o
  CC      drivers/gpu/drm/drm_fourcc.o
  AR      kernel/cgroup/built-in.a
  AR      drivers/base/built-in.a
  CC      net/ipv4/udplite.o
  CC      drivers/cdrom/cdrom.o
  CC      net/ipv4/udp_offload.o
  CC      fs/ext4/xattr_trusted.o
  CC      drivers/acpi/acpica/nssearch.o
  AR      drivers/firewire/built-in.a
  AR      drivers/auxdisplay/built-in.a
  CC      net/mac80211/ibss.o
  CC      drivers/pcmcia/cs.o
  AR      kernel/time/built-in.a
  CC      net/mac80211/iface.o
  CC      kernel/trace/trace_clock.o
  CC      arch/x86/kernel/ksysfs.o
  CC      net/mac80211/link.o
  CC      kernel/trace/ring_buffer.o
  CC      net/mac80211/rate.o
  CC      fs/nfs/nfs4state.o
  CC      fs/nfs/nfs4renewd.o
  CC      drivers/net/phy/mdio_devres.o
  CC      net/netfilter/xt_policy.o
  CC      drivers/gpu/drm/drm_framebuffer.o
  CC      drivers/acpi/acpica/nsutils.o
  CC      net/core/dst_cache.o
  CC      drivers/usb/common/common.o
  CC      net/wireless/scan.o
  CC      drivers/usb/core/usb.o
  CC      drivers/usb/common/debug.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC      net/sunrpc/svcsock.o
  CC      kernel/trace/trace.o
  CC      net/mac80211/michael.o
  AR      drivers/usb/phy/built-in.a
  CC      net/netfilter/xt_state.o
  CC      drivers/usb/mon/mon_main.o
  CC      fs/ext4/xattr_user.o
  CC      drivers/usb/host/pci-quirks.o
  CC      arch/x86/kernel/bootflag.o
  CC      drivers/gpu/drm/i915/intel_uncore.o
  CC      drivers/usb/host/ehci-hcd.o
  CC      mm/slub.o
  CC      kernel/bpf/core.o
  CC      drivers/acpi/acpica/nswalk.o
  CC      kernel/events/core.o
  CC      lib/once.o
  CC      drivers/pcmcia/socket_sysfs.o
  CC [M]  net/netfilter/nf_log_syslog.o
  CC      lib/refcount.o
  CC      drivers/net/phy/phy.o
  CC      fs/attr.o
  CC      net/ipv6/proc.o
  CC      lib/rcuref.o
  AR      drivers/usb/common/built-in.a
  CC      kernel/trace/trace_output.o
  CC      drivers/acpi/acpica/nsxfeval.o
  AR      drivers/net/pse-pd/built-in.a
  CC      fs/nfs/nfs4super.o
  CC [M]  net/netfilter/xt_mark.o
  CC      drivers/usb/host/ehci-pci.o
  CC      net/core/gro_cells.o
  CC      drivers/usb/mon/mon_stat.o
  CC      lib/usercopy.o
  CC      arch/x86/kernel/e820.o
  CC      net/core/failover.o
  CC      arch/x86/kernel/pci-dma.o
  CC      drivers/gpu/drm/drm_gem.o
  CC      fs/ext4/fast_commit.o
  AR      drivers/cdrom/built-in.a
  CC      drivers/scsi/sr.o
  CC      drivers/input/serio/serio.o
  CC      drivers/usb/core/hub.o
  CC      drivers/input/serio/i8042.o
  CC      drivers/pcmcia/cardbus.o
  CC [M]  net/netfilter/xt_nat.o
  CC      drivers/usb/host/ohci-hcd.o
  CC      lib/errseq.o
  CC      drivers/acpi/acpica/nsxfname.o
  CC [M]  net/netfilter/xt_LOG.o
  CC      lib/bucket_locks.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_ccs_mode.o
  CC      fs/bad_inode.o
  CC      drivers/usb/mon/mon_text.o
  CC      drivers/usb/host/ohci-pci.o
  CC      net/sunrpc/svcauth.o
  CC [M]  net/netfilter/xt_MASQUERADE.o
  CC      net/mac80211/tkip.o
  CC      drivers/acpi/acpica/nsxfobj.o
  CC      lib/generic-radix-tree.o
  CC      drivers/input/keyboard/atkbd.o
  CC      drivers/pcmcia/ds.o
  CC      drivers/input/mouse/psmouse-base.o
  CC      net/ipv6/syncookies.o
  AR      drivers/input/joystick/built-in.a
  CC      drivers/usb/mon/mon_bin.o
  CC      lib/bitmap-str.o
  CC      drivers/pcmcia/pcmcia_resource.o
  CC      drivers/net/phy/phy-c45.o
  CC      drivers/scsi/sr_ioctl.o
  AR      net/core/built-in.a
  CC      lib/string_helpers.o
  CC      fs/file.o
  CC      net/ipv6/calipso.o
  CC      net/ipv4/arp.o
  CC      drivers/pcmcia/cistpl.o
  CC      drivers/input/serio/serport.o
  CC      drivers/acpi/acpica/psargs.o
  CC      fs/ext4/orphan.o
  CC      drivers/input/serio/libps2.o
  CC      arch/x86/kernel/quirks.o
  CC      drivers/input/mouse/synaptics.o
  CC      net/wireless/nl80211.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  AR      drivers/input/tablet/built-in.a
  CC      drivers/usb/host/uhci-hcd.o
  CC      fs/nfs/nfs4file.o
  CC      drivers/gpu/drm/drm_ioctl.o
  AR      drivers/input/touchscreen/built-in.a
  CC      drivers/gpu/drm/drm_lease.o
  CC [M]  net/netfilter/xt_addrtype.o
  CC      drivers/pcmcia/pcmcia_cis.o
  AR      net/netfilter/built-in.a
  CC      drivers/pcmcia/rsrc_mgr.o
  CC      fs/ext4/acl.o
  CC      lib/hexdump.o
  CC      drivers/ata/libata-eh.o
  CC      drivers/acpi/acpica/psloop.o
  CC      drivers/gpu/drm/i915/intel_wakeref.o
  CC      kernel/trace/trace_seq.o
  AR      drivers/input/keyboard/built-in.a
  AR      drivers/input/misc/built-in.a
  CC      drivers/input/input.o
  CC      drivers/gpu/drm/drm_managed.o
  CC      drivers/ata/libata-transport.o
  CC      drivers/scsi/sr_vendor.o
  CC      drivers/ata/libata-trace.o
  CC      lib/kstrtox.o
  CC      drivers/input/mouse/focaltech.o
  AR      drivers/input/serio/built-in.a
  CC      drivers/acpi/acpica/psobject.o
  CC      drivers/acpi/acpica/psopcode.o
  CC      arch/x86/kernel/kdebugfs.o
  CC      net/mac80211/aes_cmac.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_freq.o
  CC      fs/ext4/xattr_security.o
  AR      drivers/usb/mon/built-in.a
  CC      drivers/usb/class/usblp.o
  CC      kernel/fork.o
  CC      drivers/usb/host/xhci.o
  CC      drivers/acpi/acpica/psopinfo.o
  AR      kernel/bpf/built-in.a
  CC      drivers/pcmcia/rsrc_nonstatic.o
  CC      kernel/exec_domain.o
  CC      drivers/usb/storage/scsiglue.o
  AR      drivers/usb/misc/built-in.a
  CC      net/ipv6/ah6.o
  CC      drivers/usb/storage/protocol.o
  CC      lib/iomap.o
  CC      kernel/panic.o
  CC      drivers/gpu/drm/drm_mm.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_idle.o
  CC      kernel/cpu.o
  CC      drivers/net/phy/phy-core.o
  CC      drivers/net/phy/phy_device.o
  CC      kernel/exit.o
  CC      mm/madvise.o
  CC      drivers/pcmcia/yenta_socket.o
  CC      drivers/gpu/drm/drm_mode_config.o
  CC      drivers/usb/storage/transport.o
  CC      drivers/rtc/lib.o
  CC      drivers/acpi/acpica/psparse.o
  CC      drivers/input/mouse/alps.o
  CC      drivers/rtc/class.o
  CC      drivers/rtc/interface.o
  CC      drivers/scsi/sg.o
  CC      fs/filesystems.o
  CC      arch/x86/kernel/alternative.o
  CC      drivers/usb/core/hcd.o
  CC      net/ipv4/icmp.o
  CC      net/ipv4/devinet.o
  CC      drivers/gpu/drm/i915/vlv_sideband.o
  CC      net/ipv4/af_inet.o
  CC      drivers/usb/storage/usb.o
  CC      kernel/trace/trace_stat.o
  CC      net/sunrpc/svcauth_unix.o
  AR      fs/ext4/built-in.a
  CC      net/sunrpc/addr.o
  CC      drivers/input/mouse/byd.o
  CC      fs/nfs/delegation.o
  CC      net/mac80211/aes_gmac.o
  CC      drivers/usb/core/urb.o
  CC      drivers/acpi/acpica/psscope.o
  CC      lib/iomap_copy.o
  CC      net/wireless/mlme.o
  AR      drivers/usb/class/built-in.a
  CC      net/wireless/ibss.o
  CC      net/wireless/sme.o
  CC      drivers/net/phy/linkmode.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC      kernel/events/ring_buffer.o
  CC      lib/devres.o
  CC      mm/page_io.o
  CC      fs/nfs/nfs4idmap.o
  CC      drivers/ata/libata-sata.o
  CC      drivers/input/input-compat.o
  CC      net/wireless/chan.o
  CC      kernel/softirq.o
  CC      drivers/usb/core/message.o
  CC      net/mac80211/fils_aead.o
  CC      drivers/acpi/acpica/pstree.o
  CC      fs/nfs/callback.o
  CC      drivers/input/input-mt.o
  CC      drivers/input/input-poller.o
  CC      kernel/resource.o
  CC      net/ipv6/esp6.o
  CC      kernel/trace/trace_printk.o
  AR      drivers/pcmcia/built-in.a
  CC      kernel/sysctl.o
  CC      lib/check_signature.o
  CC      drivers/usb/storage/initializers.o
  CC      drivers/gpu/drm/i915/vlv_suspend.o
  CC      drivers/acpi/pci_link.o
  CC      drivers/acpi/acpica/psutils.o
  CC      arch/x86/kernel/i8253.o
  CC      lib/interval_tree.o
  CC      drivers/input/ff-core.o
  CC      drivers/input/touchscreen.o
  CC      kernel/events/callchain.o
  CC      mm/swap_state.o
  CC      arch/x86/kernel/hw_breakpoint.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  CC      lib/assoc_array.o
  CC      drivers/rtc/nvmem.o
  CC      drivers/input/mouse/logips2pp.o
  CC      drivers/scsi/scsi_sysfs.o
  CC      drivers/input/ff-memless.o
  CC      drivers/i2c/algos/i2c-algo-bit.o
  CC      drivers/net/phy/mdio_bus.o
  AR      drivers/i3c/built-in.a
  CC      drivers/acpi/acpica/pswalk.o
  CC      drivers/net/phy/mdio_device.o
  CC      drivers/input/mouse/lifebook.o
  CC      lib/bitrev.o
  CC      drivers/i2c/busses/i2c-i801.o
  CC      drivers/usb/host/xhci-mem.o
  CC      kernel/capability.o
  CC      net/mac80211/cfg.o
  CC      drivers/ata/libata-sff.o
  AR      drivers/i2c/muxes/built-in.a
  CC      drivers/net/phy/swphy.o
  CC      net/ipv6/sit.o
  CC      drivers/usb/host/xhci-ext-caps.o
  CC      arch/x86/kernel/tsc.o
  CC      arch/x86/kernel/tsc_msr.o
  CC      drivers/usb/storage/sierra_ms.o
  CC      kernel/trace/pid_list.o
  CC      drivers/acpi/acpica/psxface.o
  CC      mm/swapfile.o
  CC      kernel/ptrace.o
  CC      net/mac80211/ethtool.o
  CC      drivers/gpu/drm/i915/soc/intel_dram.o
  CC      net/ipv4/igmp.o
  CC      kernel/events/hw_breakpoint.o
  CC      drivers/rtc/dev.o
  CC      net/sunrpc/rpcb_clnt.o
  CC      drivers/usb/storage/option_ms.o
  CC      drivers/acpi/pci_irq.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_throttle.o
  CC      drivers/input/mouse/trackpoint.o
  CC      lib/crc-ccitt.o
  CC      drivers/acpi/acpi_apd.o
  CC      drivers/usb/core/driver.o
  CC      kernel/user.o
  CC      net/mac80211/rx.o
  CC      net/ipv6/addrconf_core.o
  CC      drivers/input/mouse/cypress_ps2.o
  CC      drivers/acpi/acpica/rsaddr.o
  CC      fs/nfs/callback_xdr.o
  CC      net/sunrpc/timer.o
  CC      drivers/acpi/acpi_platform.o
  AR      drivers/i2c/algos/built-in.a
  CC      drivers/i2c/i2c-boardinfo.o
  CC      arch/x86/kernel/io_delay.o
  CC      drivers/acpi/acpica/rscalc.o
  CC      fs/nfs/callback_proc.o
  CC      drivers/input/sparse-keymap.o
  CC      drivers/acpi/acpi_pnp.o
  CC      lib/crc16.o
  CC      net/ipv4/fib_frontend.o
  CC      net/ipv6/exthdrs_core.o
  CC      drivers/gpu/drm/i915/soc/intel_gmch.o
  CC      fs/nfs/nfs4namespace.o
  CC      drivers/input/vivaldi-fmap.o
  CC      drivers/acpi/acpica/rscreate.o
  CC      kernel/signal.o
  AR      drivers/scsi/built-in.a
  CC      drivers/rtc/proc.o
  CC      kernel/trace/trace_sched_switch.o
  AR      drivers/media/i2c/built-in.a
  AR      drivers/media/tuners/built-in.a
  CC      drivers/net/phy/fixed_phy.o
  CC      drivers/usb/storage/usual-tables.o
  AR      drivers/media/rc/keymaps/built-in.a
  AR      drivers/media/rc/built-in.a
  AR      drivers/i2c/busses/built-in.a
  CC      drivers/rtc/sysfs.o
  CC      kernel/trace/trace_nop.o
  CC      fs/namespace.o
  AR      drivers/media/common/b2c2/built-in.a
  CC      drivers/usb/early/ehci-dbgp.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  AR      drivers/media/platform/allegro-dvt/built-in.a
  AR      drivers/media/common/saa7146/built-in.a
  CC      arch/x86/kernel/rtc.o
  AR      drivers/media/common/siano/built-in.a
  AR      drivers/media/platform/amlogic/meson-ge2d/built-in.a
  HOSTCC  lib/gen_crc32table
  AR      drivers/media/platform/amlogic/built-in.a
  AR      drivers/media/common/v4l2-tpg/built-in.a
  AR      drivers/media/platform/amphion/built-in.a
  AR      drivers/media/common/videobuf2/built-in.a
  AR      drivers/media/platform/aspeed/built-in.a
  AR      drivers/media/common/built-in.a
  AR      drivers/media/pci/ttpci/built-in.a
  AR      drivers/media/platform/atmel/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  AR      drivers/media/pci/b2c2/built-in.a
  AR      drivers/media/platform/broadcom/built-in.a
  AR      drivers/media/pci/pluto2/built-in.a
  CC      drivers/acpi/acpica/rsdumpinfo.o
  CC      lib/xxhash.o
  AR      drivers/media/platform/cadence/built-in.a
  AR      drivers/media/pci/dm1105/built-in.a
  CC      drivers/acpi/acpica/rsinfo.o
  AR      drivers/media/pci/pt1/built-in.a
  AR      drivers/media/platform/chips-media/coda/built-in.a
  CC      drivers/input/input-leds.o
  CC      drivers/input/mouse/psmouse-smbus.o
  AR      drivers/media/platform/chips-media/wave5/built-in.a
  CC      drivers/net/mdio/acpi_mdio.o
  AR      drivers/media/pci/pt3/built-in.a
  AR      drivers/media/platform/chips-media/built-in.a
  AR      drivers/media/pci/mantis/built-in.a
  CC      drivers/net/mdio/fwnode_mdio.o
  AR      drivers/media/pci/ngene/built-in.a
  AR      drivers/media/platform/imagination/built-in.a
  AR      drivers/media/platform/intel/built-in.a
  AR      drivers/media/pci/ddbridge/built-in.a
  CC      drivers/i2c/i2c-core-base.o
  AR      drivers/media/pci/saa7146/built-in.a
  AR      drivers/media/platform/marvell/built-in.a
  AR      drivers/media/platform/mediatek/jpeg/built-in.a
  CC      drivers/i2c/i2c-core-smbus.o
  CC      drivers/input/evdev.o
  AR      drivers/media/pci/smipcie/built-in.a
  AR      drivers/media/platform/mediatek/mdp/built-in.a
  AR      drivers/media/pci/netup_unidvb/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/common/built-in.a
  AR      drivers/media/pci/intel/ipu3/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/encoder/built-in.a
  AR      drivers/media/pci/intel/ivsc/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/decoder/built-in.a
  AR      drivers/media/pci/intel/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/built-in.a
  AR      drivers/media/pci/built-in.a
  AR      drivers/media/platform/mediatek/vpu/built-in.a
  CC      kernel/events/uprobes.o
  CC      drivers/i2c/i2c-core-acpi.o
  AR      drivers/media/platform/mediatek/mdp3/built-in.a
  CC      drivers/i2c/i2c-smbus.o
  AR      drivers/media/platform/mediatek/built-in.a
  CC      kernel/sys.o
  AR      drivers/media/platform/microchip/built-in.a
  AR      drivers/media/platform/nuvoton/built-in.a
  CC      arch/x86/kernel/resource.o
  CC      drivers/usb/core/config.o
  AR      drivers/media/platform/nvidia/tegra-vde/built-in.a
  AR      drivers/media/platform/nvidia/built-in.a
  AR      drivers/usb/storage/built-in.a
  AS      arch/x86/kernel/irqflags.o
  CC      net/wireless/ethtool.o
  CC      drivers/acpi/acpica/rsio.o
  AR      drivers/media/platform/nxp/dw100/built-in.a
  AR      drivers/media/platform/nxp/imx-jpeg/built-in.a
  CC      arch/x86/kernel/static_call.o
  AR      drivers/media/platform/nxp/imx8-isi/built-in.a
  CC      drivers/gpu/drm/i915/soc/intel_pch.o
  AR      drivers/media/platform/nxp/built-in.a
  AR      drivers/media/platform/qcom/camss/built-in.a
  CC      drivers/rtc/rtc-mc146818-lib.o
  AR      drivers/media/platform/qcom/venus/built-in.a
  AR      drivers/media/platform/qcom/built-in.a
  AR      drivers/media/platform/raspberrypi/pisp_be/built-in.a
  AR      drivers/media/platform/raspberrypi/built-in.a
  CC      fs/seq_file.o
  CC      arch/x86/kernel/process.o
  AR      drivers/media/platform/renesas/rcar-vin/built-in.a
  AR      drivers/media/platform/renesas/rzg2l-cru/built-in.a
  CC      lib/genalloc.o
  AR      drivers/media/platform/renesas/vsp1/built-in.a
  AR      drivers/media/platform/rockchip/rga/built-in.a
  AR      drivers/media/platform/renesas/built-in.a
  AR      drivers/media/platform/rockchip/rkisp1/built-in.a
  CC      drivers/ata/libata-pmp.o
  AR      drivers/media/platform/rockchip/built-in.a
  AR      drivers/media/usb/b2c2/built-in.a
  AR      drivers/media/mmc/siano/built-in.a
  CC      drivers/rtc/rtc-cmos.o
  CC      net/wireless/mesh.o
  AR      drivers/media/mmc/built-in.a
  CC      net/ipv6/ip6_checksum.o
  AR      drivers/media/usb/dvb-usb/built-in.a
  CC      net/ipv6/ip6_icmp.o
  AR      drivers/media/platform/samsung/exynos-gsc/built-in.a
  CC      net/wireless/ap.o
  AR      drivers/media/platform/samsung/exynos4-is/built-in.a
  AR      drivers/media/usb/dvb-usb-v2/built-in.a
  CC      drivers/usb/host/xhci-ring.o
  AR      drivers/media/platform/samsung/s3c-camif/built-in.a
  AR      drivers/media/usb/s2255/built-in.a
  AR      drivers/usb/early/built-in.a
  CC      drivers/acpi/acpica/rsirq.o
  AR      drivers/media/usb/siano/built-in.a
  AR      drivers/media/platform/samsung/s5p-g2d/built-in.a
  CC      drivers/net/phy/realtek.o
  AR      drivers/media/usb/ttusb-budget/built-in.a
  AR      drivers/media/platform/samsung/s5p-jpeg/built-in.a
  CC      net/wireless/trace.o
  AR      drivers/media/usb/ttusb-dec/built-in.a
  AR      drivers/media/platform/samsung/s5p-mfc/built-in.a
  AR      drivers/media/platform/samsung/built-in.a
  AR      drivers/media/usb/built-in.a
  AR      drivers/media/platform/st/sti/bdisp/built-in.a
  CC      fs/xattr.o
  CC      kernel/umh.o
  AR      drivers/media/platform/st/sti/c8sectpfe/built-in.a
  CC      kernel/workqueue.o
  AR      drivers/media/platform/st/sti/delta/built-in.a
  CC      arch/x86/kernel/ptrace.o
  AR      drivers/media/platform/st/sti/hva/built-in.a
  AR      drivers/input/mouse/built-in.a
  CC      fs/nfs/nfs4getroot.o
  AR      drivers/media/platform/st/stm32/built-in.a
  AR      drivers/media/platform/st/built-in.a
  CC      mm/swap_slots.o
  CC      arch/x86/kernel/tls.o
  AR      drivers/media/firewire/built-in.a
  AR      drivers/media/platform/sunxi/sun4i-csi/built-in.a
  AR      drivers/media/platform/verisilicon/built-in.a
  AR      drivers/media/platform/ti/am437x/built-in.a
  AR      drivers/media/platform/sunxi/sun6i-csi/built-in.a
  AR      drivers/media/platform/via/built-in.a
  AR      drivers/media/platform/ti/cal/built-in.a
  AR      drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
  CC      mm/dmapool.o
  AR      drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
  AR      drivers/media/platform/ti/vpe/built-in.a
  AR      drivers/media/platform/ti/davinci/built-in.a
  CC      mm/hugetlb.o
  AR      drivers/media/platform/sunxi/sun8i-di/built-in.a
  AR      drivers/media/platform/ti/j721e-csi2rx/built-in.a
  CC      kernel/trace/blktrace.o
  CC [M]  drivers/gpu/drm/xe/xe_guc.o
  AR      drivers/net/mdio/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-rotate/built-in.a
  AR      drivers/media/platform/ti/omap/built-in.a
  CC      kernel/trace/trace_events.o
  AR      drivers/media/platform/sunxi/built-in.a
  AR      drivers/media/platform/ti/omap3isp/built-in.a
  CC      drivers/usb/host/xhci-hub.o
  AR      drivers/media/platform/ti/built-in.a
  CC      kernel/trace/trace_export.o
  CC      drivers/acpi/acpica/rslist.o
  AR      drivers/media/platform/xilinx/built-in.a
  AR      drivers/media/platform/built-in.a
  CC      kernel/trace/trace_event_perf.o
  AR      drivers/media/spi/built-in.a
  CC      drivers/acpi/power.o
  AR      drivers/media/test-drivers/built-in.a
  AR      drivers/input/built-in.a
  AR      drivers/media/built-in.a
  CC      drivers/acpi/event.o
  AR      drivers/pps/clients/built-in.a
  CC      drivers/acpi/evged.o
  AR      drivers/pps/generators/built-in.a
  CC      drivers/acpi/sysfs.o
  CC      drivers/pps/pps.o
  CC      lib/percpu_counter.o
  CC      net/sunrpc/xdr.o
  CC      net/ipv4/fib_semantics.o
  CC      drivers/usb/core/file.o
  CC      drivers/acpi/acpica/rsmemory.o
  CC      net/ipv4/fib_trie.o
  CC      drivers/gpu/drm/i915/i915_memcpy.o
  CC      net/mac80211/spectmgmt.o
  CC      net/sunrpc/sunrpc_syms.o
  AR      drivers/rtc/built-in.a
  CC      net/mac80211/tx.o
  CC      drivers/ata/libata-acpi.o
  CC      drivers/ptp/ptp_clock.o
  CC      net/mac80211/key.o
  CC      mm/mmu_notifier.o
  CC      drivers/gpu/drm/i915/i915_mm.o
  CC      net/ipv6/output_core.o
  CC      drivers/acpi/property.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  CC      drivers/acpi/acpica/rsmisc.o
  CC      fs/nfs/nfs4client.o
  CC      drivers/usb/host/xhci-dbg.o
  CC      lib/audit.o
  AR      kernel/events/built-in.a
  CC      lib/syscall.o
  CC      lib/errname.o
  CC      net/mac80211/util.o
  AR      drivers/net/phy/built-in.a
  CC      drivers/pps/kapi.o
  AR      drivers/i2c/built-in.a
  AR      drivers/net/pcs/built-in.a
  CC      drivers/pps/sysfs.o
  CC      net/ipv6/protocol.o
  CC      drivers/usb/host/xhci-trace.o
  AR      drivers/net/ethernet/3com/built-in.a
  CC      fs/nfs/nfs4session.o
  CC      lib/nlattr.o
  CC      drivers/net/ethernet/8390/ne2k-pci.o
  CC      kernel/trace/trace_events_filter.o
  CC      drivers/net/ethernet/8390/8390.o
  CC      fs/nfs/dns_resolve.o
  CC      lib/cpu_rmap.o
  CC      arch/x86/kernel/step.o
  CC      drivers/usb/core/buffer.o
  CC      drivers/acpi/acpica/rsserial.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  CC      drivers/usb/host/xhci-debugfs.o
  CC      drivers/usb/host/xhci-pci.o
  CC      drivers/gpu/drm/i915/i915_sw_fence.o
  AR      drivers/net/wireless/admtek/built-in.a
  AR      drivers/net/wireless/ath/built-in.a
  AR      drivers/net/usb/built-in.a
  AR      drivers/pps/built-in.a
  CC      drivers/usb/core/sysfs.o
  CC      drivers/net/mii.o
  AR      drivers/net/wireless/atmel/built-in.a
  CC      drivers/usb/core/endpoint.o
  AR      drivers/net/wireless/broadcom/built-in.a
  AR      drivers/net/wireless/intel/built-in.a
  CC      drivers/power/supply/power_supply_core.o
  AR      drivers/net/wireless/intersil/built-in.a
  CC      drivers/ptp/ptp_chardev.o
  CC      drivers/hwmon/hwmon.o
  AR      drivers/net/wireless/marvell/built-in.a
  CC      drivers/acpi/acpica/rsutils.o
  CC      drivers/ata/libata-pata-timings.o
  AR      drivers/net/wireless/mediatek/built-in.a
  CC      net/sunrpc/cache.o
  AR      drivers/net/wireless/microchip/built-in.a
  CC      net/sunrpc/rpc_pipe.o
  AR      drivers/net/wireless/purelifi/built-in.a
  CC      kernel/pid.o
  AR      drivers/net/wireless/quantenna/built-in.a
  CC      fs/libfs.o
  AR      drivers/net/wireless/ralink/built-in.a
  CC      arch/x86/kernel/i8237.o
  AR      drivers/net/wireless/realtek/built-in.a
  AR      drivers/net/wireless/rsi/built-in.a
  CC      arch/x86/kernel/stacktrace.o
  CC      drivers/net/loopback.o
  AR      drivers/net/wireless/silabs/built-in.a
  CC      drivers/acpi/acpica/rsxface.o
  AR      drivers/net/wireless/st/built-in.a
  AR      drivers/net/wireless/ti/built-in.a
  AR      drivers/net/wireless/zydas/built-in.a
  AR      drivers/net/wireless/virtual/built-in.a
  AR      drivers/net/wireless/built-in.a
  CC      drivers/net/netconsole.o
  CC      net/mac80211/parse.o
  CC      net/ipv6/ip6_offload.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_db_mgr.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  CC      drivers/acpi/debugfs.o
  CC      drivers/gpu/drm/i915/i915_sw_fence_work.o
  CC      fs/nfs/nfs4trace.o
  CC      drivers/net/virtio_net.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_id_mgr.o
  CC      drivers/acpi/acpica/tbdata.o
  AR      drivers/net/ethernet/8390/built-in.a
  CC      lib/dynamic_queue_limits.o
  AR      drivers/net/ethernet/adaptec/built-in.a
  AR      drivers/net/ethernet/agere/built-in.a
  CC      arch/x86/kernel/reboot.o
  CC      net/wireless/ocb.o
  AR      drivers/net/ethernet/alacritech/built-in.a
  CC      drivers/acpi/acpi_lpat.o
  AR      drivers/net/ethernet/alteon/built-in.a
  CC      drivers/gpu/drm/i915/i915_syncmap.o
  AR      drivers/net/ethernet/amazon/built-in.a
  AR      drivers/net/ethernet/amd/built-in.a
  AR      drivers/net/ethernet/aquantia/built-in.a
  CC      drivers/ata/ahci.o
  AR      drivers/net/ethernet/arc/built-in.a
  AR      drivers/net/ethernet/asix/built-in.a
  CC      drivers/gpu/drm/i915/i915_user_extensions.o
  AR      drivers/net/ethernet/atheros/built-in.a
  AR      drivers/net/ethernet/cadence/built-in.a
  CC      drivers/gpu/drm/i915/i915_debugfs.o
  CC      drivers/net/ethernet/broadcom/bnx2.o
  CC      drivers/gpu/drm/i915/i915_debugfs_params.o
  CC      drivers/power/supply/power_supply_sysfs.o
  CC      kernel/trace/trace_events_trigger.o
  AR      drivers/net/ethernet/brocade/built-in.a
  CC      drivers/net/ethernet/broadcom/tg3.o
  CC      drivers/ata/libahci.o
  CC      drivers/gpu/drm/i915/i915_pmu.o
  CC      drivers/ptp/ptp_sysfs.o
  CC      net/ipv4/fib_notifier.o
  CC      drivers/usb/core/devio.o
  CC      drivers/usb/core/notify.o
  CC      drivers/net/net_failover.o
  CC      drivers/acpi/acpica/tbfadt.o
  CC      drivers/gpu/drm/i915/gt/gen2_engine_cs.o
  AR      drivers/net/ethernet/cavium/common/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen6_engine_cs.o
  AR      drivers/net/ethernet/cavium/thunder/built-in.a
  CC      net/mac80211/wme.o
  CC      net/mac80211/chan.o
  AR      drivers/net/ethernet/cavium/liquidio/built-in.a
  CC      kernel/trace/trace_eprobe.o
  CC      kernel/task_work.o
  CC      net/mac80211/trace.o
  AR      drivers/net/ethernet/cavium/octeon/built-in.a
  AR      drivers/net/ethernet/cavium/built-in.a
  CC      drivers/acpi/acpica/tbfind.o
  AR      drivers/net/ethernet/chelsio/built-in.a
  AR      drivers/hwmon/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen6_ppgtt.o
  CC      drivers/gpu/drm/i915/gt/gen7_renderclear.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_klv_helpers.o
  AR      drivers/thermal/broadcom/built-in.a
  CC      drivers/power/supply/power_supply_leds.o
  CC      drivers/power/supply/power_supply_hwmon.o
  AR      drivers/thermal/renesas/built-in.a
  CC      mm/migrate.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  AR      drivers/thermal/samsung/built-in.a
  CC      drivers/thermal/intel/intel_tcc.o
  CC      arch/x86/kernel/msr.o
  CC      lib/glob.o
  CC      drivers/gpu/drm/i915/gt/gen8_engine_cs.o
  CC      kernel/trace/trace_kprobe.o
  CC      drivers/acpi/acpica/tbinstal.o
  CC      net/sunrpc/sysfs.o
  CC      drivers/acpi/acpica/tbprint.o
  CC      drivers/gpu/drm/i915/gt/gen8_ppgtt.o
  CC      drivers/thermal/intel/therm_throt.o
  CC      net/ipv6/tcpv6_offload.o
  CC      drivers/acpi/acpica/tbutils.o
  CC      fs/fs-writeback.o
  CC      drivers/ptp/ptp_vclock.o
  AR      drivers/usb/host/built-in.a
  CC      net/wireless/pmsr.o
  AR      drivers/power/supply/built-in.a
  CC      drivers/acpi/acpi_pcc.o
  AR      drivers/power/built-in.a
  CC      drivers/ptp/ptp_kvm_x86.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC      lib/strncpy_from_user.o
  GEN     net/wireless/shipped-certs.c
  CC      net/sunrpc/svc_xprt.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  AR      drivers/watchdog/built-in.a
  CC      kernel/extable.o
  CC      drivers/usb/core/generic.o
  CC      net/ipv4/inet_fragment.o
  CC      kernel/trace/error_report-traces.o
  CC      net/sunrpc/xprtmultipath.o
  CC      drivers/acpi/acpica/tbxface.o
  CC      drivers/acpi/acpica/tbxfload.o
  CC      lib/strnlen_user.o
  CC      drivers/ptp/ptp_kvm_common.o
  CC      arch/x86/kernel/cpuid.o
  CC      mm/page_counter.o
  AR      drivers/thermal/st/built-in.a
  AR      drivers/thermal/qcom/built-in.a
  AR      drivers/thermal/tegra/built-in.a
  CC      fs/pnode.o
  CC      net/sunrpc/stats.o
  CC      drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
  CC      drivers/acpi/ac.o
  CC      lib/net_utils.o
  CC      drivers/ata/ata_piix.o
  AR      drivers/net/ethernet/cisco/built-in.a
  CC      kernel/trace/power-traces.o
  AR      drivers/thermal/mediatek/built-in.a
  CC      mm/hugetlb_cgroup.o
  CC      drivers/thermal/thermal_core.o
  CC      net/sunrpc/sysctl.o
  CC      net/ipv4/ping.o
  CC      drivers/acpi/acpica/tbxfroot.o
  CC      fs/splice.o
  CC      arch/x86/kernel/early-quirks.o
  CC      drivers/thermal/thermal_sysfs.o
  CC [M]  drivers/thermal/intel/x86_pkg_temp_thermal.o
  CC      drivers/usb/core/quirks.o
  CC      drivers/thermal/thermal_trip.o
  CC      arch/x86/kernel/smp.o
  CC      drivers/gpu/drm/i915/gt/intel_context.o
  CC      drivers/acpi/acpica/utaddress.o
  CC      fs/sync.o
  CC      drivers/acpi/acpica/utalloc.o
  CC      drivers/acpi/button.o
  AR      drivers/ptp/built-in.a
  CC      kernel/trace/rpm-traces.o
  CC [M]  drivers/gpu/drm/xe/xe_heci_gsc.o
  CC      arch/x86/kernel/smpboot.o
  CC      net/ipv6/exthdrs_offload.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  CC      mm/early_ioremap.o
  CC      drivers/thermal/thermal_helpers.o
  CC      net/mac80211/mlme.o
  CC      lib/sg_pool.o
  CC      drivers/thermal/thermal_hwmon.o
  CC      drivers/gpu/drm/drm_mode_object.o
  CC      kernel/trace/trace_dynevent.o
  CC      drivers/acpi/acpica/utascii.o
  CC      drivers/acpi/acpica/utbuffer.o
  CC      lib/stackdepot.o
  CC      fs/utimes.o
  CC      fs/d_path.o
  AR      drivers/net/ethernet/cortina/built-in.a
  AR      drivers/net/ethernet/dec/tulip/built-in.a
  AR      drivers/thermal/intel/built-in.a
  AR      drivers/net/ethernet/dec/built-in.a
  CC      net/wireless/shipped-certs.o
  CC      net/ipv6/inet6_hashtables.o
  CC      drivers/usb/core/devices.o
  AR      drivers/net/ethernet/dlink/built-in.a
  CC      mm/secretmem.o
  CC      arch/x86/kernel/tsc_sync.o
  CC      drivers/thermal/gov_step_wise.o
  CC      kernel/trace/trace_probe.o
  CC      drivers/md/md.o
  CC      drivers/thermal/gov_user_space.o
  CC      drivers/md/md-bitmap.o
  CC      arch/x86/kernel/setup_percpu.o
  CC      drivers/acpi/acpica/utcksum.o
  CC      net/ipv4/ip_tunnel_core.o
  CC      drivers/ata/pata_amd.o
  CC      drivers/md/md-autodetect.o
  AR      drivers/net/ethernet/emulex/built-in.a
  CC      lib/asn1_decoder.o
  AR      drivers/net/ethernet/engleder/built-in.a
  CC      fs/stack.o
  CC      drivers/md/dm.o
  CC      fs/nfs/nfs4sysctl.o
  CC      kernel/trace/trace_uprobe.o
  CC      arch/x86/kernel/mpparse.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
  CC      kernel/trace/rethook.o
  CC      drivers/gpu/drm/i915/gt/intel_context_sseu.o
  GEN     lib/oid_registry_data.c
  AR      drivers/net/ethernet/ezchip/built-in.a
  CC      kernel/params.o
  CC      fs/fs_struct.o
  CC      drivers/acpi/acpica/utcopy.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_cs.o
  AR      drivers/net/ethernet/fujitsu/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
  CC      fs/statfs.o
  CC      drivers/acpi/acpica/utexcep.o
  CC      drivers/gpu/drm/drm_modes.o
  AR      drivers/net/ethernet/fungible/built-in.a
  CC      drivers/acpi/acpica/utdebug.o
  AR      drivers/net/ethernet/google/built-in.a
  AR      drivers/thermal/built-in.a
  AR      drivers/net/ethernet/huawei/built-in.a
  CC      fs/fs_pin.o
  CC      drivers/net/ethernet/intel/e1000/e1000_main.o
  AR      drivers/net/ethernet/i825xx/built-in.a
  CC      fs/nsfs.o
  CC      fs/fs_types.o
  CC      fs/fs_context.o
  CC      lib/ucs2_string.o
  CC      lib/sbitmap.o
  CC      drivers/usb/core/phy.o
  CC      net/ipv6/mcast_snoop.o
  CC      drivers/usb/core/port.o
  CC      drivers/usb/core/hcd-pci.o
  CC      drivers/acpi/acpica/utdecode.o
  CC      mm/hmm.o
  CC      drivers/net/ethernet/intel/e1000e/82571.o
  CC      drivers/net/ethernet/intel/e100.o
  CC      net/mac80211/tdls.o
  CC      kernel/kthread.o
  CC      kernel/sys_ni.o
  CC      drivers/md/dm-table.o
  CC      fs/fs_parser.o
  CC      drivers/md/dm-target.o
  CC      drivers/md/dm-linear.o
  CC      lib/group_cpus.o
  AR      net/sunrpc/built-in.a
  CC      lib/fw_table.o
  CC      fs/fsopen.o
  CC      drivers/md/dm-stripe.o
  CC      kernel/nsproxy.o
  CC      drivers/ata/pata_oldpiix.o
  CC      drivers/acpi/acpica/utdelete.o
  CC      mm/memfd.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC      drivers/gpu/drm/drm_modeset_lock.o
  CC      drivers/gpu/drm/drm_plane.o
  AR      fs/nfs/built-in.a
  CC      fs/init.o
  CC      drivers/acpi/fan_core.o
  CC      drivers/acpi/acpica/uterror.o
  CC      arch/x86/kernel/trace_clock.o
  CC      mm/ptdump.o
  CC      drivers/usb/core/usb-acpi.o
  CC      kernel/notifier.o
  CC      drivers/net/ethernet/intel/e1000e/ich8lan.o
  CC      arch/x86/kernel/trace.o
  CC      kernel/ksysfs.o
  CC      net/ipv4/gre_offload.o
  AR      lib/lib.a
  CC      drivers/acpi/acpica/uteval.o
  CC      net/ipv4/metrics.o
  GEN     lib/crc32table.h
  CC      drivers/net/ethernet/intel/e1000e/80003es2lan.o
  CC      lib/oid_registry.o
  CC      kernel/cred.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_pm.o
  CC      drivers/acpi/acpica/utglobal.o
  CC      arch/x86/kernel/rethook.o
  CC      drivers/gpu/drm/drm_prime.o
  CC      drivers/md/dm-ioctl.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_user.o
  AR      net/ipv6/built-in.a
  CC      drivers/ata/pata_sch.o
  CC      fs/kernel_read_file.o
  CC      fs/mnt_idmapping.o
  CC      net/mac80211/ocb.o
  CC      drivers/gpu/drm/drm_print.o
  CC      drivers/acpi/fan_attr.o
  CC      drivers/gpu/drm/i915/gt/intel_execlists_submission.o
  CC      fs/remap_range.o
  CC      drivers/cpufreq/cpufreq.o
  CC      fs/pidfs.o
  CC      fs/buffer.o
  AR      kernel/trace/built-in.a
  CC      mm/execmem.o
  CC      drivers/acpi/acpica/uthex.o
  CC      kernel/reboot.o
  CC      drivers/cpuidle/governors/menu.o
  CC      lib/crc32.o
  CC      drivers/cpufreq/freq_table.o
  CC      drivers/gpu/drm/drm_property.o
  CC      net/mac80211/airtime.o
  CC      drivers/cpuidle/governors/haltpoll.o
  AR      drivers/usb/core/built-in.a
  AR      drivers/usb/built-in.a
  AR      drivers/mmc/built-in.a
  AR      drivers/ufs/built-in.a
  CC      kernel/async.o
  CC      kernel/range.o
  AR      drivers/leds/trigger/built-in.a
  AR      drivers/firmware/arm_ffa/built-in.a
  AR      drivers/leds/blink/built-in.a
  CC      arch/x86/kernel/vmcore_info_32.o
  AR      drivers/firmware/arm_scmi/built-in.a
  AR      drivers/leds/simple/built-in.a
  AR      drivers/firmware/broadcom/built-in.a
  CC      drivers/leds/led-core.o
  AR      drivers/firmware/cirrus/built-in.a
  CC      net/mac80211/eht.o
  AR      drivers/firmware/meson/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  AR      drivers/firmware/microchip/built-in.a
  CC      arch/x86/kernel/machine_kexec_32.o
  AS      arch/x86/kernel/relocate_kernel_32.o
  AR      drivers/firmware/imx/built-in.a
  CC      arch/x86/kernel/crash_dump_32.o
  CC      fs/mpage.o
  CC      arch/x86/kernel/crash.o
  CC      drivers/acpi/acpica/utids.o
  CC      drivers/firmware/efi/efi-bgrt.o
  CC      drivers/gpu/drm/drm_syncobj.o
  CC      drivers/firmware/efi/libstub/efi-stub-helper.o
  CC      drivers/gpu/drm/drm_sysfs.o
  CC      drivers/ata/pata_mpiix.o
  CC      drivers/firmware/efi/efi.o
  CC      drivers/firmware/efi/vars.o
  CC      drivers/ata/ata_generic.o
  CC      kernel/smpboot.o
  CC      drivers/net/ethernet/intel/e1000/e1000_hw.o
  AR      lib/built-in.a
  AR      mm/built-in.a
  CC      drivers/net/ethernet/intel/e1000/e1000_ethtool.o
  CC      drivers/net/ethernet/intel/e1000/e1000_param.o
  CC      fs/proc_namespace.o
  AR      drivers/firmware/psci/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  CC      kernel/ucount.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt.o
  CC      net/ipv4/netlink.o
  CC      net/ipv4/nexthop.o
  CC      drivers/acpi/acpica/utinit.o
  CC      fs/direct-io.o
  CC      drivers/cpufreq/cpufreq_performance.o
  AR      drivers/crypto/stm32/built-in.a
  CC      drivers/leds/led-class.o
  AR      drivers/crypto/xilinx/built-in.a
  CC      drivers/leds/led-triggers.o
  AR      drivers/crypto/hisilicon/built-in.a
  AR      drivers/crypto/starfive/built-in.a
  AR      drivers/crypto/intel/keembay/built-in.a
  CC      arch/x86/kernel/module.o
  CC      drivers/gpu/drm/drm_trace_points.o
  AR      drivers/crypto/intel/ixp4xx/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/mac.o
  AR      drivers/crypto/intel/built-in.a
  CC      arch/x86/kernel/doublefault_32.o
  AR      drivers/crypto/built-in.a
  CC      kernel/regset.o
  CC      arch/x86/kernel/early_printk.o
  CC      drivers/clocksource/acpi_pm.o
  CC      drivers/cpufreq/cpufreq_userspace.o
  CC      drivers/md/dm-io.o
  CC      drivers/clocksource/i8253.o
  CC      drivers/acpi/acpica/utlock.o
  AR      drivers/cpuidle/governors/built-in.a
  CC      arch/x86/kernel/hpet.o
  CC      drivers/cpuidle/cpuidle.o
  CC      drivers/acpi/acpica/utmath.o
  CC      drivers/firmware/efi/libstub/gop.o
  CC      drivers/cpufreq/cpufreq_ondemand.o
  CC      net/ipv4/udp_tunnel_stub.o
  AR      drivers/ata/built-in.a
  CC      net/ipv4/ip_tunnel.o
  CC      arch/x86/kernel/amd_nb.o
  CC      fs/eventpoll.o
  CC      drivers/net/ethernet/intel/e1000e/manage.o
  CC      drivers/firmware/efi/libstub/secureboot.o
  CC      drivers/gpu/drm/drm_vblank.o
  CC      drivers/gpu/drm/drm_vblank_work.o
  CC      kernel/ksyms_common.o
  CC      arch/x86/kernel/kvm.o
  CC      drivers/cpufreq/cpufreq_governor.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  CC      drivers/cpufreq/cpufreq_governor_attr_set.o
  CC      drivers/acpi/acpica/utmisc.o
  CC      drivers/cpufreq/acpi-cpufreq.o
  AR      drivers/net/ethernet/microsoft/built-in.a
  CC      drivers/cpufreq/amd-pstate.o
  AR      drivers/net/ethernet/litex/built-in.a
  CC      drivers/cpufreq/amd-pstate-trace.o
  AR      drivers/leds/built-in.a
  CC      drivers/cpufreq/intel_pstate.o
  CC      drivers/hid/usbhid/hid-core.o
  AR      drivers/platform/x86/amd/built-in.a
  AR      drivers/platform/x86/intel/built-in.a
  CC      drivers/platform/x86/wmi.o
  CC      drivers/mailbox/mailbox.o
  AR      drivers/platform/surface/built-in.a
  AR      drivers/clocksource/built-in.a
  CC      drivers/platform/x86/wmi-bmof.o
  AR      drivers/perf/built-in.a
  CC      net/mac80211/led.o
  AR      drivers/hwtracing/intel_th/built-in.a
  CC      drivers/platform/x86/eeepc-laptop.o
  CC      drivers/mailbox/pcc.o
  CC      drivers/gpu/drm/drm_vma_manager.o
  CC      drivers/hid/usbhid/hiddev.o
  CC      fs/anon_inodes.o
  CC      drivers/acpi/acpica/utmutex.o
  CC      net/ipv4/sysctl_net_ipv4.o
  AR      drivers/net/ethernet/marvell/octeon_ep/built-in.a
  CC      drivers/firmware/efi/libstub/tpm.o
  AR      drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
  CC      arch/x86/kernel/kvmclock.o
  AR      drivers/net/ethernet/marvell/octeontx2/built-in.a
  CC      kernel/groups.o
  CC      kernel/kcmp.o
  CC      drivers/net/ethernet/marvell/sky2.o
  AR      drivers/net/ethernet/marvell/prestera/built-in.a
  CC      drivers/firmware/efi/libstub/file.o
  CC      drivers/firmware/efi/libstub/mem.o
  CC      drivers/acpi/acpica/utnonansi.o
  CC      kernel/freezer.o
  CC      fs/signalfd.o
  CC      drivers/md/dm-kcopyd.o
  CC      drivers/hid/usbhid/hid-pidff.o
  AR      drivers/android/built-in.a
  AR      drivers/firmware/qcom/built-in.a
  AR      drivers/nvmem/layouts/built-in.a
  CC      drivers/nvmem/core.o
  CC      fs/timerfd.o
  CC      drivers/platform/x86/p2sb.o
  CC      net/mac80211/pm.o
  CC      drivers/acpi/acpica/utobject.o
  CC      drivers/acpi/acpica/utosi.o
  CC      drivers/gpu/drm/drm_writeback.o
  CC      drivers/net/ethernet/intel/e1000e/nvm.o
  CC      drivers/md/dm-sysfs.o
  AR      drivers/mailbox/built-in.a
  CC      fs/eventfd.o
  CC      drivers/acpi/acpica/utownerid.o
  CC      net/mac80211/rc80211_minstrel_ht.o
  CC      drivers/cpuidle/driver.o
  CC      drivers/firmware/efi/libstub/random.o
  CC      drivers/gpu/drm/drm_panel.o
  CC      drivers/firmware/efi/reboot.o
  AR      drivers/net/ethernet/intel/e1000/built-in.a
  CC      drivers/firmware/efi/memattr.o
  CC      arch/x86/kernel/paravirt.o
  CC      drivers/firmware/efi/libstub/randomalloc.o
  CC      drivers/md/dm-stats.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  CC      drivers/md/dm-rq.o
  CC      drivers/acpi/fan_hwmon.o
  CC      drivers/firmware/efi/tpm.o
  CC [M]  drivers/gpu/drm/xe/xe_mmio.o
  CC      drivers/gpu/drm/i915/gt/intel_gt.o
  CC      drivers/gpu/drm/drm_pci.o
  CC      drivers/acpi/acpica/utpredef.o
  CC [M]  drivers/gpu/drm/xe/xe_mocs.o
  CC      drivers/firmware/efi/libstub/pci.o
  CC      net/mac80211/wbrf.o
  CC      fs/aio.o
  CC      drivers/acpi/acpi_video.o
  CC      kernel/profile.o
  AR      net/wireless/built-in.a
  CC      arch/x86/kernel/pvclock.o
  AR      drivers/platform/x86/built-in.a
  CC      drivers/cpuidle/governor.o
  CC      kernel/stacktrace.o
  CC      drivers/cpuidle/sysfs.o
  AR      drivers/platform/built-in.a
  CC      drivers/firmware/efi/libstub/skip_spaces.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  CC      fs/locks.o
  CC      kernel/dma.o
  CC      drivers/acpi/acpica/utresdecode.o
  CC      drivers/acpi/acpica/utresrc.o
  CC      drivers/gpu/drm/drm_debugfs.o
  CC      drivers/firmware/efi/memmap.o
  CC      drivers/firmware/efi/libstub/lib-cmdline.o
  CC      net/ipv4/proc.o
  CC      drivers/acpi/acpica/utstate.o
  CC      drivers/cpuidle/poll_state.o
  CC      drivers/cpuidle/cpuidle-haltpoll.o
  CC      fs/binfmt_misc.o
  CC      kernel/smp.o
  CC      kernel/uid16.o
  CC      drivers/gpu/drm/drm_debugfs_crc.o
  AR      drivers/hid/usbhid/built-in.a
  CC      arch/x86/kernel/pcspeaker.o
  CC      drivers/firmware/efi/libstub/lib-ctype.o
  CC      drivers/hid/hid-core.o
  CC      drivers/firmware/efi/libstub/alignedmem.o
  CC      drivers/hid/hid-input.o
  CC      drivers/gpu/drm/drm_panel_orientation_quirks.o
  CC      arch/x86/kernel/check.o
  CC [M]  drivers/gpu/drm/xe/xe_oa.o
  CC [M]  drivers/gpu/drm/xe/xe_observation.o
  AR      drivers/nvmem/built-in.a
  CC      drivers/firmware/efi/libstub/relocate.o
  CC      drivers/acpi/video_detect.o
  CC      arch/x86/kernel/uprobes.o
  CC      drivers/md/dm-io-rewind.o
  CC      fs/binfmt_script.o
  CC      fs/binfmt_elf.o
  CC      drivers/net/ethernet/intel/e1000e/phy.o
  CC      drivers/firmware/efi/libstub/printk.o
  CC      net/ipv4/fib_rules.o
  CC      drivers/hid/hid-quirks.o
  CC      drivers/gpu/drm/drm_buddy.o
  AR      drivers/cpufreq/built-in.a
  CC      drivers/gpu/drm/drm_gem_shmem_helper.o
  CC      drivers/firmware/efi/capsule.o
  CC      drivers/acpi/acpica/utstring.o
  CC      drivers/firmware/efi/esrt.o
  CC      arch/x86/kernel/perf_regs.o
  CC      kernel/kallsyms.o
  AR      drivers/cpuidle/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
  CC      arch/x86/kernel/tracepoint.o
  AR      drivers/net/ethernet/broadcom/built-in.a
  CC      drivers/gpu/drm/drm_atomic_helper.o
  CC      kernel/acct.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC      drivers/firmware/efi/runtime-wrappers.o
  CC      net/ipv4/ipmr.o
  AR      drivers/firmware/smccc/built-in.a
  AR      drivers/firmware/tegra/built-in.a
  AR      drivers/firmware/xilinx/built-in.a
  CC      drivers/firmware/dmi_scan.o
  CC      drivers/gpu/drm/drm_atomic_state_helper.o
  CC      arch/x86/kernel/itmt.o
  CC      drivers/acpi/acpica/utstrsuppt.o
  CC      drivers/net/ethernet/intel/e1000e/param.o
  CC      kernel/vmcore_info.o
  CC      drivers/md/dm-builtin.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
  CC      drivers/hid/hid-debug.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
  CC      drivers/net/ethernet/intel/e1000e/ethtool.o
  CC      drivers/firmware/efi/libstub/vsprintf.o
  CC      kernel/elfcorehdr.o
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  AR      drivers/net/ethernet/mellanox/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  AR      drivers/net/ethernet/meta/built-in.a
  AR      drivers/net/ethernet/micrel/built-in.a
  AR      drivers/net/ethernet/microchip/built-in.a
  AR      drivers/net/ethernet/mscc/built-in.a
  AR      drivers/net/ethernet/myricom/built-in.a
  AR      drivers/net/ethernet/natsemi/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC      drivers/net/ethernet/intel/e1000e/netdev.o
  AR      drivers/net/ethernet/neterion/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/ptp.o
  AR      drivers/net/ethernet/netronome/built-in.a
  CC      drivers/acpi/processor_driver.o
  CC      drivers/hid/hidraw.o
  CC      drivers/acpi/processor_thermal.o
  AR      drivers/net/ethernet/ni/built-in.a
  CC      drivers/acpi/acpica/utstrtoul64.o
  CC      drivers/net/ethernet/nvidia/forcedeth.o
  AR      drivers/net/ethernet/oki-semi/built-in.a
  CC      drivers/firmware/efi/libstub/x86-stub.o
  AR      drivers/net/ethernet/packetengines/built-in.a
  CC      drivers/md/dm-raid1.o
  CC      drivers/md/dm-log.o
  CC      kernel/crash_reserve.o
  CC      drivers/gpu/drm/drm_bridge_connector.o
  CC      drivers/firmware/efi/capsule-loader.o
  CC      fs/mbcache.o
  CC      arch/x86/kernel/umip.o
  CC      drivers/acpi/processor_idle.o
  CC      drivers/firmware/efi/libstub/smbios.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC      drivers/firmware/efi/earlycon.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
  CC      drivers/acpi/acpica/utxface.o
  CC      kernel/kexec_core.o
  CC      drivers/hid/hid-generic.o
  CC      net/ipv4/ipmr_base.o
  CC      fs/posix_acl.o
  CC      drivers/gpu/drm/drm_crtc_helper.o
  AR      drivers/net/ethernet/marvell/built-in.a
  CC      drivers/md/dm-region-hash.o
  CC      drivers/gpu/drm/drm_damage_helper.o
  CC      drivers/acpi/processor_throttling.o
  CC      arch/x86/kernel/unwind_frame.o
  CC      fs/coredump.o
  AR      drivers/net/ethernet/qlogic/built-in.a
  CC      drivers/md/dm-zero.o
  AR      drivers/net/ethernet/qualcomm/emac/built-in.a
  AR      drivers/net/ethernet/qualcomm/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  CC      drivers/acpi/processor_perflib.o
  CC      net/ipv4/syncookies.o
  CC      drivers/acpi/container.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_irq.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_mcr.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  CC      drivers/hid/hid-a4tech.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  CC      drivers/acpi/acpica/utxfinit.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
  CC      drivers/net/ethernet/realtek/8139too.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_requests.o
  CC      drivers/net/ethernet/realtek/r8169_main.o
  CC      drivers/net/ethernet/realtek/r8169_firmware.o
  STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
  STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
  STUBCPY drivers/firmware/efi/libstub/file.stub.o
  CC      drivers/acpi/acpica/utxferror.o
  STUBCPY drivers/firmware/efi/libstub/gop.stub.o
  CC      kernel/crash_core.o
  STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
  CC      drivers/net/ethernet/realtek/r8169_phy_config.o
  STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
  CC      kernel/kexec.o
  STUBCPY drivers/firmware/efi/libstub/mem.stub.o
  STUBCPY drivers/firmware/efi/libstub/pci.stub.o
  STUBCPY drivers/firmware/efi/libstub/printk.stub.o
  STUBCPY drivers/firmware/efi/libstub/random.stub.o
  CC      kernel/utsname.o
  STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
  STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
  CC      kernel/pid_namespace.o
  CC      kernel/stop_machine.o
  STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
  STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
  CC      drivers/hid/hid-apple.o
  STUBCPY drivers/firmware/efi/libstub/smbios.stub.o
  STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
  AR      drivers/firmware/efi/built-in.a
  STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
  STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
  CC      drivers/acpi/thermal_lib.o
  AR      drivers/firmware/efi/libstub/lib.a
  AR      drivers/net/ethernet/renesas/built-in.a
  AR      arch/x86/kernel/built-in.a
  CC      drivers/firmware/dmi-id.o
  CC      drivers/hid/hid-belkin.o
  AR      drivers/net/ethernet/rdc/built-in.a
  AR      arch/x86/built-in.a
  AR      drivers/net/ethernet/rocker/built-in.a
  AR      drivers/net/ethernet/samsung/built-in.a
  CC      drivers/hid/hid-cherry.o
  AR      drivers/net/ethernet/seeq/built-in.a
  CC      drivers/gpu/drm/drm_encoder_slave.o
  CC      drivers/hid/hid-chicony.o
  CC      net/ipv4/tunnel4.o
  CC [M]  drivers/gpu/drm/xe/xe_range_fence.o
  CC      kernel/audit.o
  CC      drivers/acpi/acpica/utxfmutex.o
  CC      drivers/gpu/drm/drm_flip_work.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
  CC      kernel/auditfilter.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC      drivers/hid/hid-cypress.o
  CC      net/ipv4/ipconfig.o
  AR      drivers/net/ethernet/silan/built-in.a
  AR      drivers/md/built-in.a
  CC      net/ipv4/netfilter.o
  CC      drivers/acpi/thermal.o
  CC      drivers/acpi/nhlt.o
  CC      kernel/auditsc.o
  CC      kernel/audit_watch.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
  CC      drivers/hid/hid-ezkey.o
  AR      net/mac80211/built-in.a
  CC      net/ipv4/tcp_cubic.o
  CC      drivers/hid/hid-gyration.o
  CC      fs/drop_caches.o
  CC      drivers/acpi/acpi_memhotplug.o
  CC      drivers/firmware/memmap.o
  AR      drivers/acpi/acpica/built-in.a
  AR      drivers/net/ethernet/sis/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  AR      drivers/net/ethernet/sfc/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  CC      drivers/gpu/drm/drm_format_helper.o
  AR      drivers/net/ethernet/smsc/built-in.a
  CC      kernel/audit_fsnotify.o
  CC      net/ipv4/tcp_sigpool.o
  CC      drivers/gpu/drm/i915/gt/intel_gtt.o
  CC      kernel/audit_tree.o
  CC      drivers/hid/hid-ite.o
  CC      kernel/kprobes.o
  CC [M]  drivers/gpu/drm/xe/xe_ring_ops.o
  CC      drivers/gpu/drm/i915/gt/intel_llc.o
  CC      net/ipv4/cipso_ipv4.o
  CC      fs/sysctls.o
  CC [M]  drivers/gpu/drm/xe/xe_sa.o
  CC      drivers/hid/hid-kensington.o
  CC      drivers/gpu/drm/i915/gt/intel_lrc.o
  CC      drivers/acpi/ioapic.o
  CC      drivers/hid/hid-lg.o
  CC      net/ipv4/xfrm4_policy.o
  CC      net/ipv4/xfrm4_state.o
  CC      drivers/acpi/battery.o
  CC [M]  drivers/gpu/drm/xe/xe_sched_job.o
  CC      fs/fhandle.o
  CC      drivers/acpi/bgrt.o
  CC      drivers/hid/hid-lgff.o
  AR      drivers/net/ethernet/socionext/built-in.a
  AR      drivers/net/ethernet/stmicro/built-in.a
  CC      net/ipv4/xfrm4_input.o
  AR      drivers/net/ethernet/sun/built-in.a
  CC      net/ipv4/xfrm4_output.o
  AR      drivers/net/ethernet/tehuti/built-in.a
  CC      drivers/acpi/spcr.o
  CC      net/ipv4/xfrm4_protocol.o
  AR      drivers/net/ethernet/ti/built-in.a
  CC      drivers/hid/hid-lg4ff.o
  CC      drivers/hid/hid-lg-g15.o
  CC [M]  drivers/gpu/drm/xe/xe_step.o
  CC      drivers/hid/hid-microsoft.o
  CC      drivers/hid/hid-monterey.o
  CC      drivers/hid/hid-ntrig.o
  AR      drivers/firmware/built-in.a
  CC      drivers/hid/hid-pl.o
  CC [M]  drivers/gpu/drm/xe/xe_sync.o
  CC [M]  drivers/gpu/drm/xe/xe_tile.o
  CC      drivers/gpu/drm/drm_gem_atomic_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_tile_sysfs.o
  CC      kernel/seccomp.o
  CC      kernel/relay.o
  CC [M]  drivers/gpu/drm/xe/xe_trace.o
  CC      drivers/hid/hid-petalynx.o
  CC      kernel/utsname_sysctl.o
  CC      kernel/delayacct.o
  CC      drivers/hid/hid-redragon.o
  CC [M]  drivers/gpu/drm/xe/xe_trace_bo.o
  CC [M]  drivers/gpu/drm/xe/xe_trace_guc.o
  CC      drivers/gpu/drm/i915/gt/intel_migrate.o
  AR      drivers/net/ethernet/nvidia/built-in.a
  AR      drivers/net/ethernet/vertexcom/built-in.a
  AR      drivers/net/ethernet/via/built-in.a
  AR      drivers/net/ethernet/wangxun/built-in.a
  CC      kernel/taskstats.o
  AR      drivers/net/ethernet/wiznet/built-in.a
  CC      drivers/hid/hid-samsung.o
  AR      drivers/net/ethernet/xilinx/built-in.a
  AR      drivers/net/ethernet/xircom/built-in.a
  AR      drivers/net/ethernet/synopsys/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
  CC      drivers/hid/hid-sony.o
  CC      drivers/hid/hid-sunplus.o
  CC      drivers/gpu/drm/i915/gt/intel_mocs.o
  CC      drivers/gpu/drm/i915/gt/intel_ppgtt.o
  AR      fs/built-in.a
  CC      kernel/tsacct.o
  CC      kernel/tracepoint.o
  CC      kernel/irq_work.o
  CC      kernel/static_call.o
  AR      drivers/net/ethernet/pensando/built-in.a
  CC      kernel/padata.o
  CC      kernel/jump_label.o
  CC      drivers/hid/hid-topseed.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
  AR      drivers/acpi/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
  CC      drivers/gpu/drm/drm_gem_framebuffer_helper.o
  CC      drivers/gpu/drm/i915/gt/intel_rc6.o
  CC      drivers/gpu/drm/i915/gt/intel_region_lmem.o
  CC      kernel/context_tracking.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
  CC [M]  drivers/gpu/drm/xe/xe_vm.o
  CC      drivers/gpu/drm/drm_kms_helper_common.o
  CC      drivers/gpu/drm/drm_modeset_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_vram.o
  CC      drivers/gpu/drm/drm_plane_helper.o
  CC      drivers/gpu/drm/i915/gt/intel_renderstate.o
  CC      drivers/gpu/drm/drm_probe_helper.o
  CC      kernel/iomem.o
  CC [M]  drivers/gpu/drm/xe/xe_vram_freq.o
  CC      kernel/rseq.o
  CC      drivers/gpu/drm/drm_rect.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  CC      drivers/gpu/drm/i915/gt/intel_reset.o
  CC      drivers/gpu/drm/i915/gt/intel_ring.o
  CC [M]  drivers/gpu/drm/xe/xe_wopcm.o
  CC [M]  drivers/gpu/drm/xe/xe_hmm.o
  AR      drivers/net/ethernet/realtek/built-in.a
  CC      drivers/gpu/drm/drm_self_refresh_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_hwmon.o
  CC      drivers/gpu/drm/drm_simple_kms_helper.o
  CC      drivers/gpu/drm/bridge/panel.o
  CC      drivers/gpu/drm/i915/gt/intel_ring_submission.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_vf.o
  CC      drivers/gpu/drm/i915/gt/intel_rps.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_relay.o
  AR      net/ipv4/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_memirq.o
  CC [M]  drivers/gpu/drm/xe/xe_sriov.o
  AR      net/built-in.a
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_irq.o
  AR      drivers/net/ethernet/intel/e1000e/built-in.a
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_utils.o
  AR      drivers/net/ethernet/intel/built-in.a
  CC [M]  drivers/gpu/drm/xe/display/intel_fb_bo.o
  AR      drivers/net/ethernet/built-in.a
  CC [M]  drivers/gpu/drm/xe/display/intel_fbdev_fb.o
  CC      drivers/gpu/drm/i915/gt/intel_sa_media.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display.o
  CC      drivers/gpu/drm/i915/gt/intel_sseu.o
  CC      drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_misc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_rps.o
  CC      drivers/gpu/drm/i915/gt/intel_timeline.o
  CC      drivers/gpu/drm/drm_mipi_dsi.o
  CC      drivers/gpu/drm/i915/gt/intel_tlb.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_wa.o
  AR      drivers/net/built-in.a
  CC [M]  drivers/gpu/drm/xe/display/xe_dsb_buffer.o
  CC [M]  drivers/gpu/drm/xe/display/xe_fb_pin.o
  CC [M]  drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_plane_initial.o
  CC      drivers/gpu/drm/i915/gt/intel_wopcm.o
  CC [M]  drivers/gpu/drm/drm_exec.o
  AR      drivers/hid/built-in.a
  CC [M]  drivers/gpu/drm/xe/display/xe_tdf.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_dram.o
  CC      drivers/gpu/drm/i915/gt/intel_workarounds.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_pch.o
  CC [M]  drivers/gpu/drm/xe/i915-display/icl_dsi.o
  CC      drivers/gpu/drm/i915/gt/shmem_utils.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_alpm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
  CC [M]  drivers/gpu/drm/drm_gpuvm.o
  CC [M]  drivers/gpu/drm/drm_suballoc.o
  AR      kernel/built-in.a
  CC [M]  drivers/gpu/drm/drm_gem_ttm_helper.o
  CC      drivers/gpu/drm/i915/gt/sysfs_engines.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_audio.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bios.o
  CC      drivers/gpu/drm/i915/gt/gen6_renderstate.o
  CC      drivers/gpu/drm/i915/gt/gen7_renderstate.o
  CC      drivers/gpu/drm/i915/gt/gen8_renderstate.o
  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 [M]  drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_connector.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 [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/gt/gen9_renderstate.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_busy.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 [M]  drivers/gpu/drm/xe/i915-display/intel_display_device.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_clflush.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_context.o
  LD [M]  drivers/gpu/drm/drm_suballoc_helper.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_driver.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_irq.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_create.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_params.o
  LD [M]  drivers/gpu/drm/drm_ttm_helper.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_trace.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_domain.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_internal.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_lmem.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/gem/i915_gem_mman.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_object.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pages.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_phys.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pm.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_region.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_shmem.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux.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/gem/i915_gem_shrinker.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_stolen.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_drrs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsb.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_throttle.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 [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/gem/i915_gem_tiling.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbc.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_userptr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fdi.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_wait.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
  CC      drivers/gpu/drm/i915/gem/i915_gemfs.o
  CC      drivers/gpu/drm/i915/i915_active.o
  CC      drivers/gpu/drm/i915/i915_cmd_parser.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_global_state.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_gmbus.o
  CC      drivers/gpu/drm/i915/i915_deps.o
  CC      drivers/gpu/drm/i915/i915_gem.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdmi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hti.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_link_bw.o
  CC      drivers/gpu/drm/i915/i915_gem_evict.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/i915_gem_gtt.o
  CC      drivers/gpu/drm/i915/i915_gem_ww.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o
  CC      drivers/gpu/drm/i915/i915_query.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_panel.o
  CC      drivers/gpu/drm/i915/i915_request.o
  CC      drivers/gpu/drm/i915/i915_scheduler.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pmdemand.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_pps.o
  CC      drivers/gpu/drm/i915/i915_vma.o
  CC      drivers/gpu/drm/i915/i915_vma_resource.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/gt/uc/intel_gsc_fw.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.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 [M]  drivers/gpu/drm/xe/i915-display/intel_tc.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 [M]  drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_wm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_scaler.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_watermark.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_acpi.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_opregion.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_stats.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_debugfs.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_log.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      drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_huc.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      drivers/gpu/drm/i915/i915_hwmon.o
  CC      drivers/gpu/drm/i915/display/hsw_ips.o
  CC      drivers/gpu/drm/i915/display/i9xx_plane.o
  CC      drivers/gpu/drm/i915/display/i9xx_wm.o
  CC      drivers/gpu/drm/i915/display/intel_alpm.o
  CC      drivers/gpu/drm/i915/display/intel_atomic.o
  CC      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_bw.o
  CC      drivers/gpu/drm/i915/display/intel_cdclk.o
  CC      drivers/gpu/drm/i915/display/intel_color.o
  CC      drivers/gpu/drm/i915/display/intel_combo_phy.o
  CC      drivers/gpu/drm/i915/display/intel_connector.o
  CC      drivers/gpu/drm/i915/display/intel_crtc.o
  CC      drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
  CC      drivers/gpu/drm/i915/display/intel_cursor.o
  CC      drivers/gpu/drm/i915/display/intel_display.o
  CC      drivers/gpu/drm/i915/display/intel_display_driver.o
  CC      drivers/gpu/drm/i915/display/intel_display_irq.o
  CC      drivers/gpu/drm/i915/display/intel_display_params.o
  CC      drivers/gpu/drm/i915/display/intel_display_power.o
  CC      drivers/gpu/drm/i915/display/intel_display_power_map.o
  CC      drivers/gpu/drm/i915/display/intel_display_power_well.o
  CC      drivers/gpu/drm/i915/display/intel_display_reset.o
  CC      drivers/gpu/drm/i915/display/intel_display_rps.o
  CC      drivers/gpu/drm/i915/display/intel_display_wa.o
  CC      drivers/gpu/drm/i915/display/intel_dmc.o
  CC      drivers/gpu/drm/i915/display/intel_dmc_wl.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      drivers/gpu/drm/i915/display/intel_drrs.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      drivers/gpu/drm/i915/display/intel_fb_bo.o
  CC      drivers/gpu/drm/i915/display/intel_fb_pin.o
  CC      drivers/gpu/drm/i915/display/intel_fbc.o
  CC      drivers/gpu/drm/i915/display/intel_fdi.o
  CC      drivers/gpu/drm/i915/display/intel_fifo_underrun.o
  CC      drivers/gpu/drm/i915/display/intel_frontbuffer.o
  CC      drivers/gpu/drm/i915/display/intel_global_state.o
  CC      drivers/gpu/drm/i915/display/intel_hdcp.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      drivers/gpu/drm/i915/display/intel_hotplug_irq.o
  CC      drivers/gpu/drm/i915/display/intel_hti.o
  CC      drivers/gpu/drm/i915/display/intel_link_bw.o
  CC      drivers/gpu/drm/i915/display/intel_load_detect.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      drivers/gpu/drm/i915/display/intel_pch_display.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      drivers/gpu/drm/i915/display/intel_psr.o
  CC      drivers/gpu/drm/i915/display/intel_quirks.o
  CC      drivers/gpu/drm/i915/display/intel_sprite.o
  CC      drivers/gpu/drm/i915/display/intel_sprite_uapi.o
  CC      drivers/gpu/drm/i915/display/intel_tc.o
  CC      drivers/gpu/drm/i915/display/intel_vblank.o
  CC      drivers/gpu/drm/i915/display/intel_vga.o
  CC      drivers/gpu/drm/i915/display/intel_wm.o
  LD [M]  drivers/gpu/drm/xe/xe.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_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
  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]  drivers/gpu/drm/drm_exec.mod.o
  CC [M]  drivers/gpu/drm/drm_gpuvm.mod.o
  CC [M]  drivers/gpu/drm/drm_suballoc_helper.mod.o
  CC [M]  drivers/gpu/drm/drm_ttm_helper.mod.o
  CC [M]  drivers/gpu/drm/scheduler/gpu-sched.mod.o
  CC [M]  drivers/gpu/drm/xe/xe.mod.o
  CC [M]  drivers/thermal/intel/x86_pkg_temp_thermal.mod.o
  CC [M]  sound/core/snd-hwdep.mod.o
  CC [M]  sound/core/snd-pcm.mod.o
  CC [M]  sound/pci/hda/snd-hda-codec.mod.o
  CC [M]  sound/pci/hda/snd-hda-codec-hdmi.mod.o
  CC [M]  sound/pci/hda/snd-hda-intel.mod.o
  CC [M]  sound/hda/snd-hda-core.mod.o
  CC [M]  sound/hda/snd-intel-dspcfg.mod.o
  CC [M]  sound/hda/snd-intel-sdw-acpi.mod.o
  CC [M]  net/netfilter/nf_log_syslog.mod.o
  CC [M]  net/netfilter/xt_mark.mod.o
  CC [M]  net/netfilter/xt_nat.mod.o
  CC [M]  net/netfilter/xt_LOG.mod.o
  CC [M]  net/netfilter/xt_MASQUERADE.mod.o
  CC [M]  net/netfilter/xt_addrtype.mod.o
  CC [M]  net/ipv4/netfilter/iptable_nat.mod.o
  LD [M]  sound/hda/snd-intel-dspcfg.ko
  LD [M]  drivers/gpu/drm/drm_exec.ko
  LD [M]  drivers/gpu/drm/drm_ttm_helper.ko
  LD [M]  net/netfilter/xt_LOG.ko
  LD [M]  net/ipv4/netfilter/iptable_nat.ko
  LD [M]  drivers/gpu/drm/xe/xe.ko
  LD [M]  drivers/thermal/intel/x86_pkg_temp_thermal.ko
  LD [M]  sound/core/snd-hwdep.ko
  LD [M]  net/netfilter/nf_log_syslog.ko
  LD [M]  net/netfilter/xt_MASQUERADE.ko
  LD [M]  fs/efivarfs/efivarfs.ko
  LD [M]  net/netfilter/xt_addrtype.ko
  LD [M]  drivers/gpu/drm/drm_suballoc_helper.ko
  LD [M]  sound/pci/hda/snd-hda-codec.ko
  LD [M]  drivers/gpu/drm/scheduler/gpu-sched.ko
  LD [M]  sound/hda/snd-intel-sdw-acpi.ko
  LD [M]  sound/hda/snd-hda-core.ko
  LD [M]  sound/core/snd-pcm.ko
  LD [M]  sound/pci/hda/snd-hda-intel.ko
  LD [M]  drivers/gpu/drm/drm_gpuvm.ko
  LD [M]  net/netfilter/xt_nat.ko
  LD [M]  sound/pci/hda/snd-hda-codec-hdmi.ko
  LD [M]  net/netfilter/xt_mark.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
  CPUSTR  arch/x86/boot/cpustr.h
  CC      arch/x86/boot/cpu.o
  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
  CC      arch/x86/boot/compressed/string.o
  CC      arch/x86/boot/compressed/cmdline.o
  CC      arch/x86/boot/compressed/error.o
  OBJCOPY arch/x86/boot/compressed/vmlinux.bin
  HOSTCC  arch/x86/boot/compressed/mkpiggy
  CC      arch/x86/boot/compressed/cpuflags.o
  CC      arch/x86/boot/compressed/early_serial_console.o
  CC      arch/x86/boot/compressed/kaslr.o
  CC      arch/x86/boot/compressed/acpi.o
  CC      arch/x86/boot/compressed/efi.o
  GZIP    arch/x86/boot/compressed/vmlinux.bin.gz
  CC      arch/x86/boot/compressed/misc.o
  MKPIGGY arch/x86/boot/compressed/piggy.S
  AS      arch/x86/boot/compressed/piggy.o
  LD      arch/x86/boot/compressed/vmlinux
  ZOFFSET arch/x86/boot/zoffset.h
  OBJCOPY arch/x86/boot/vmlinux.bin
  AS      arch/x86/boot/header.o
  LD      arch/x86/boot/setup.elf
  OBJCOPY arch/x86/boot/setup.bin
  BUILD   arch/x86/boot/bzImage
Kernel: arch/x86/boot/bzImage is ready  (#1)
run-parts: executing /workspace/ci/hooks/20-kernel-doc
+ SRC_DIR=/workspace/kernel
+ cd /workspace/kernel
+ find drivers/gpu/drm/xe/ -name '*.[ch]' -not -path 'drivers/gpu/drm/xe/display/*'
+ xargs ./scripts/kernel-doc -Werror -none include/uapi/drm/xe_drm.h
All hooks done



^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✗ CI.checksparse: warning for series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (16 preceding siblings ...)
  2024-08-16 15:30 ` ✓ CI.Hooks: " Patchwork
@ 2024-08-16 15:31 ` Patchwork
  2024-08-16 16:29 ` ✗ CI.BAT: failure " Patchwork
  2024-08-17  1:50 ` ✗ CI.FULL: " Patchwork
  19 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2024-08-16 15:31 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe

== Series Details ==

Series: series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
URL   : https://patchwork.freedesktop.org/series/137398/
State : warning

== 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 1f246caab12a2343f21ac227a26698e44a6490ff
Sparse version: 0.6.1 (Ubuntu: 0.6.1-2build1)
Fast mode used, each commit won't be checked separately.
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole
  2024-08-16 15:02 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
@ 2024-08-16 15:35   ` Lucas De Marchi
  0 siblings, 0 replies; 35+ messages in thread
From: Lucas De Marchi @ 2024-08-16 15:35 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe, jose.souza, Michal Wajdeczko

On Fri, Aug 16, 2024 at 11:02:39AM GMT, Rodrigo Vivi wrote:
>Introduce a new xe_ggtt_largest_hole helper that attends the SRIOV
>demand and continue with the goal of limiting drm_mm access to xe_ggtt.
>
>v2: Fix a typo (Michal)
>
>Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>---
> drivers/gpu/drm/xe/xe_ggtt.c               | 35 ++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
> drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++------------
> 3 files changed, 38 insertions(+), 21 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
>index 7c8bbaa30fca..2d055f489879 100644
>--- a/drivers/gpu/drm/xe/xe_ggtt.c
>+++ b/drivers/gpu/drm/xe/xe_ggtt.c
>@@ -584,6 +584,41 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
> 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
> }
>
>+/**
>+ * xe_ggtt_largest_hole - Largest GGTT hole
>+ * @ggtt: the &xe_ggtt that will be inspected
>+ * @alignment: minimum alignment
>+ * @spare: If not NULL: in: desired memory size to be spared / out: Adjusted possible spare
>+ *
>+ * Return: size of the largest continuous GGTT region
>+ */
>+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
>+{
>+	const struct drm_mm *mm = &ggtt->mm;
>+	const struct drm_mm_node *entry;
>+	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
>+	u64 hole_start, hole_end, hole_size;
>+	u64 max_hole = 0;
>+
>+	mutex_lock(&ggtt->lock);
>+
>+	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
>+		hole_start = max(hole_start, hole_min_start);
>+		hole_start = ALIGN(hole_start, alignment);
>+		hole_end = ALIGN_DOWN(hole_end, alignment);
>+		if (hole_start >= hole_end)
>+			continue;
>+		hole_size = hole_end - hole_start;
>+		if (spare)
>+			*spare -= min3(*spare, hole_size, max_hole);
>+		max_hole = max(max_hole, hole_size);
>+	}
>+
>+	mutex_unlock(&ggtt->lock);
>+
>+	return max_hole;
>+}
>+
> #ifdef CONFIG_PCI_IOV
> static u64 xe_encode_vfid_pte(u16 vfid)
> {
>diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
>index f816b3c0732b..31060fe7644b 100644
>--- a/drivers/gpu/drm/xe/xe_ggtt.h
>+++ b/drivers/gpu/drm/xe/xe_ggtt.h
>@@ -29,6 +29,7 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
> int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
> 			 u64 start, u64 end);
> void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
>+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
>
> int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
>
>diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
>index 947750d97d7d..1852ff45bea4 100644
>--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
>+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
>@@ -590,30 +590,11 @@ int xe_gt_sriov_pf_config_bulk_set_ggtt(struct xe_gt *gt, unsigned int vfid,
> static u64 pf_get_max_ggtt(struct xe_gt *gt)
> {
> 	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
>-	const struct drm_mm *mm = &ggtt->mm;
>-	const struct drm_mm_node *entry;
> 	u64 alignment = pf_get_ggtt_alignment(gt);
> 	u64 spare = pf_get_spare_ggtt(gt);
>-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
>-	u64 hole_start, hole_end, hole_size;
>-	u64 max_hole = 0;
>-
>-	mutex_lock(&ggtt->lock);
>-
>-	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
>-		hole_start = max(hole_start, hole_min_start);
>-		hole_start = ALIGN(hole_start, alignment);
>-		hole_end = ALIGN_DOWN(hole_end, alignment);
>-		if (hole_start >= hole_end)
>-			continue;
>-		hole_size = hole_end - hole_start;
>-		xe_gt_sriov_dbg_verbose(gt, "HOLE start %llx size %lluK\n",
>-					hole_start, hole_size / SZ_1K);
>-		spare -= min3(spare, hole_size, max_hole);
>-		max_hole = max(max_hole, hole_size);
>-	}
>+	u64 max_hole;
>
>-	mutex_unlock(&ggtt->lock);
>+	max_hole = xe_ggtt_largest_hole(ggtt, alignment, &spare);

optional: I think this would read better with a single name for the same
thing:

	max_hole = xe_ggtt_max_hole(ggtt, alignment, &spare);

Anyway, checked with git show --color-moved to make sure it retains the
current behavior.


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

>
> 	xe_gt_sriov_dbg_verbose(gt, "HOLE max %lluK reserved %lluK\n",
> 				max_hole / SZ_1K, spare / SZ_1K);
>-- 
>2.46.0
>

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 10/12] drm/xe: Rename xe_ggtt balloon functions to make the node clear
  2024-08-16 15:02 ` [PATCH 10/12] drm/xe: Rename xe_ggtt balloon functions to make the node clear Rodrigo Vivi
@ 2024-08-16 15:45   ` Lucas De Marchi
  0 siblings, 0 replies; 35+ messages in thread
From: Lucas De Marchi @ 2024-08-16 15:45 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe, jose.souza, Michal Wajdeczko

On Fri, Aug 16, 2024 at 11:02:41AM GMT, Rodrigo Vivi wrote:
>These operations are related to node. Convert them to the
>new appropriate name space xe_ggtt_node.
>
>Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>---
> drivers/gpu/drm/xe/xe_ggtt.c        | 12 ++++++------
> drivers/gpu/drm/xe/xe_ggtt.h        |  4 ++--
> drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 10 +++++-----
> 3 files changed, 13 insertions(+), 13 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
>index 960f5a28b7ed..05c3e6e929ae 100644
>--- a/drivers/gpu/drm/xe/xe_ggtt.c
>+++ b/drivers/gpu/drm/xe/xe_ggtt.c
>@@ -347,17 +347,17 @@ static void xe_ggtt_dump_node(struct xe_ggtt *ggtt,
> }
>
> /**
>- * xe_ggtt_balloon - prevent allocation of specified GGTT addresses
>+ * xe_ggtt_node_balloon - prevent allocation of specified GGTT addresses
>  * @ggtt: the &xe_ggtt where we want to make reservation
>  * @start: the starting GGTT address of the reserved region
>  * @end: then end GGTT address of the reserved region
>  * @node: the &xe_ggtt_node to hold reserved GGTT node
>  *
>- * Use xe_ggtt_deballoon() to release a reserved GGTT node.
>+ * Use xe_ggtt_node_deballoon() to release a reserved GGTT node.
>  *
>  * Return: 0 on success or a negative error code on failure.
>  */
>-int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct xe_ggtt_node *node)
>+int xe_ggtt_node_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct xe_ggtt_node *node)

don't like the lack of consistency. All other functions use
foo(ggtt, node, ...), while this puts the node at the end.

Not even clear why we keep passing both as the node already has a
back pointer to ggtt. Using the back pointer coul be done on top, but
the lack of consistency bugs me :-/

with that,

// Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

> {
> 	int err;
>
>@@ -384,13 +384,13 @@ int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct xe_ggtt_nod
> }
>
> /**
>- * xe_ggtt_deballoon - release a reserved GGTT region
>+ * xe_ggtt_node_deballoon - release a reserved GGTT region
>  * @ggtt: the &xe_ggtt where reserved node belongs
>  * @node: the &xe_ggtt_node with reserved GGTT region
>  *
>- * See xe_ggtt_balloon() for details.
>+ * See xe_ggtt_node_balloon() for details.
>  */
>-void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
>+void xe_ggtt_node_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node)
> {
> 	if (!drm_mm_node_allocated(&node->base))
> 		return;
>diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
>index 67ae5f1602a3..e68cede2e6b5 100644
>--- a/drivers/gpu/drm/xe/xe_ggtt.h
>+++ b/drivers/gpu/drm/xe/xe_ggtt.h
>@@ -13,8 +13,8 @@ struct drm_printer;
> int xe_ggtt_init_early(struct xe_ggtt *ggtt);
> int xe_ggtt_init(struct xe_ggtt *ggtt);
>
>-int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct xe_ggtt_node *node);
>-void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node);
>+int xe_ggtt_node_balloon(struct xe_ggtt *ggtt, u64 start, u64 size, struct xe_ggtt_node *node);
>+void xe_ggtt_node_deballoon(struct xe_ggtt *ggtt, struct xe_ggtt_node *node);
>
> int xe_ggtt_node_insert(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
> 			u32 size, u32 align);
>diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>index 47222bd9988d..9a1be23ae71d 100644
>--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>@@ -528,7 +528,7 @@ static int vf_balloon_ggtt(struct xe_gt *gt)
> 	start = xe_wopcm_size(xe);
> 	end = config->ggtt_base;
> 	if (end != start) {
>-		err = xe_ggtt_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[0]);
>+		err = xe_ggtt_node_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[0]);
> 		if (err)
> 			goto failed;
> 	}
>@@ -536,7 +536,7 @@ static int vf_balloon_ggtt(struct xe_gt *gt)
> 	start = config->ggtt_base + config->ggtt_size;
> 	end = GUC_GGTT_TOP;
> 	if (end != start) {
>-		err = xe_ggtt_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[1]);
>+		err = xe_ggtt_node_balloon(ggtt, start, end, &tile->sriov.vf.ggtt_balloon[1]);
> 		if (err)
> 			goto deballoon;
> 	}
>@@ -544,7 +544,7 @@ static int vf_balloon_ggtt(struct xe_gt *gt)
> 	return 0;
>
> deballoon:
>-	xe_ggtt_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
>+	xe_ggtt_node_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
> failed:
> 	return err;
> }
>@@ -555,8 +555,8 @@ static void deballoon_ggtt(struct drm_device *drm, void *arg)
> 	struct xe_ggtt *ggtt = tile->mem.ggtt;
>
> 	xe_tile_assert(tile, IS_SRIOV_VF(tile_to_xe(tile)));
>-	xe_ggtt_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[1]);
>-	xe_ggtt_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
>+	xe_ggtt_node_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[1]);
>+	xe_ggtt_node_deballoon(ggtt, &tile->sriov.vf.ggtt_balloon[0]);
> }
>
> /**
>-- 
>2.46.0
>

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 12/12] drm/xe: Fix missing runtime outer protection for ggtt_remove_node
  2024-08-16 15:02 ` [PATCH 12/12] drm/xe: Fix missing runtime outer protection for ggtt_remove_node Rodrigo Vivi
@ 2024-08-16 16:08   ` Lucas De Marchi
  2024-08-17 10:14     ` Rodrigo Vivi
  0 siblings, 1 reply; 35+ messages in thread
From: Lucas De Marchi @ 2024-08-16 16:08 UTC (permalink / raw)
  To: Rodrigo Vivi
  Cc: intel-xe, jose.souza, Matthew Auld, Paulo Zanoni, Francois Dugast,
	Thomas Hellström, Matthew Brost

On Fri, Aug 16, 2024 at 11:02:43AM GMT, Rodrigo Vivi wrote:
>Defer the ggtt node removal to a thread if runtime_pm is not active.
>
>The ggtt node removal can be called from multiple places, including
>places where we cannot protect with outer callers and places we are
>within other locks. So, try to grab the runtime reference if the
>device is already active, otherwise defer the removal to a separate
>thread from where we are sure we can wake the device up.
>
>v2: - use xe wq instead of system wq (Matt and CI)
>    - Avoid GFP_KERNEL to be future proof since this removal can
>    be called from outside our drivers and we don't want to block
>    if atomic is needed. (Brost)
>v3: amend forgot chunk declaring xe_device.
>v4: Use a xe_ggtt_region to encapsulate the node and remova info,
>    wihtout the need for any memory allocation at runtime.
>v5: Actually fill the delayed_removal.invalidate (Brost)
>v6: - Ensure that ggtt_region is not freed before work finishes (Auld)
>    - Own wq to ensures that the queued works are flushed before
>      ggtt_fini (Brost)
>v7: also free ggtt_region on early !bound return (Auld)
>v8: Address the null deref (CI)
>v9: Based on the new xe_ggtt_node for the proper care of the lifetime
>    of the object.
>v10: Redo the lost v5 change. (Brost)
>
>Cc: Matthew Auld <matthew.auld@intel.com>
>Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
>Cc: Francois Dugast <francois.dugast@intel.com>
>Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
>Cc: Matthew Brost <matthew.brost@intel.com>
>Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>---
> drivers/gpu/drm/xe/xe_ggtt.c       | 107 ++++++++++++++++++-----------
> drivers/gpu/drm/xe/xe_ggtt_types.h |  12 ++++
> 2 files changed, 79 insertions(+), 40 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
>index 5c04c1bc8417..110acf828974 100644
>--- a/drivers/gpu/drm/xe/xe_ggtt.c
>+++ b/drivers/gpu/drm/xe/xe_ggtt.c
>@@ -161,6 +161,7 @@ static void ggtt_fini_early(struct drm_device *drm, void *arg)
> {
> 	struct xe_ggtt *ggtt = arg;
>
>+	destroy_workqueue(ggtt->wq);

better to follow the inverse order of init_early, but doesn't matter
much in this case.

> 	mutex_destroy(&ggtt->lock);
> 	drm_mm_takedown(&ggtt->mm);
> }
>@@ -242,6 +243,8 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
> 	else
> 		ggtt->pt_ops = &xelp_pt_ops;
>
>+	ggtt->wq = alloc_workqueue("xe-ggtt-wq", 0, 0);
>+
> 	drm_mm_init(&ggtt->mm, xe_wopcm_size(xe),
> 		    ggtt->size - xe_wopcm_size(xe));
> 	mutex_init(&ggtt->lock);
>@@ -276,6 +279,68 @@ static void xe_ggtt_initial_clear(struct xe_ggtt *ggtt)
> 	mutex_unlock(&ggtt->lock);
> }
>
>+static void ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
>+			     bool invalidate)

you don't need the invalidate arg anymore. Just make sure it's always
set in node.

>+{
>+	struct xe_device *xe = tile_to_xe(ggtt->tile);
>+	bool bound;
>+	int idx;
>+
>+	if (!node || !node->ggtt)
>+		return;
>+
>+	bound = drm_dev_enter(&xe->drm, &idx);
>+
>+	mutex_lock(&ggtt->lock);
>+	if (bound)
>+		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
>+	drm_mm_remove_node(&node->base);
>+	node->base.size = 0;
>+	mutex_unlock(&ggtt->lock);
>+
>+	if (!bound)
>+		goto free_node;
>+
>+	if (invalidate)
>+		xe_ggtt_invalidate(ggtt);
>+
>+	drm_dev_exit(idx);
>+
>+free_node:
>+	xe_ggtt_node_fini(node);
>+}
>+
>+static void ggtt_node_remove_work_func(struct work_struct *work)
>+{
>+	struct xe_ggtt_node *node = container_of(work, typeof(*node),
>+						 delayed_removal.work);
>+	struct xe_device *xe = tile_to_xe(node->ggtt->tile);
>+
>+	xe_pm_runtime_get(xe);
>+	ggtt_node_remove(node->ggtt, node, node->delayed_removal.invalidate);
>+	xe_pm_runtime_put(xe);
>+}
>+
>+/**
>+ * xe_ggtt_node_remove - Remove a &xe_ggtt_node from the GGTT
>+ * @ggtt: the &xe_ggtt where node will be removed
>+ * @node: the &xe_ggtt_node to be removed
>+ * @invalidate: if node needs invalidation upon removal
>+ */
>+void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
>+			 bool invalidate)
>+{
>+	struct xe_device *xe = tile_to_xe(ggtt->tile);
>+
>+	if (xe_pm_runtime_get_if_active(xe)) {
>+		ggtt_node_remove(ggtt, node, invalidate);
>+		xe_pm_runtime_put(xe);
>+	} else {
>+		node->delayed_removal.invalidate = invalidate;
>+		queue_work(ggtt->wq, &node->delayed_removal.work);
>+	}
>+}
>+
> /**
>  * xe_ggtt_init - Regular non-early GGTT initialization
>  * @ggtt: the &xe_ggtt to be initialized
>@@ -482,7 +547,9 @@ struct xe_ggtt_node *xe_ggtt_node_init(struct xe_ggtt *ggtt)
> 	if (!node)
> 		return ERR_PTR(-ENOMEM);
>
>+	INIT_WORK(&node->delayed_removal.work, ggtt_node_remove_work_func);
> 	node->ggtt = ggtt;
>+
> 	return node;
> }
>
>@@ -499,46 +566,6 @@ void xe_ggtt_node_fini(struct xe_ggtt_node *node)
> 	kfree(node);
> }
>
>-/**
>- * xe_ggtt_node_remove - Remove a &xe_ggtt_node from the GGTT
>- * @ggtt: the &xe_ggtt where node will be removed
>- * @node: the &xe_ggtt_node to be removed
>- * @invalidate: if node needs invalidation upon removal
>- */
>-void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
>-			 bool invalidate)
>-{
>-	struct xe_device *xe = tile_to_xe(ggtt->tile);
>-	bool bound;
>-	int idx;
>-
>-	if (!node || !node->ggtt)
>-		return;
>-
>-	bound = drm_dev_enter(&xe->drm, &idx);
>-	if (bound)
>-		xe_pm_runtime_get_noresume(xe);
>-
>-	mutex_lock(&ggtt->lock);
>-	if (bound)
>-		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
>-	drm_mm_remove_node(&node->base);
>-	node->base.size = 0;
>-	mutex_unlock(&ggtt->lock);
>-
>-	if (!bound)
>-		goto free_node;
>-
>-	if (invalidate)
>-		xe_ggtt_invalidate(ggtt);
>-
>-	xe_pm_runtime_put(xe);
>-	drm_dev_exit(idx);
>-
>-free_node:
>-	xe_ggtt_node_fini(node);
>-}
>-
> /**
>  * xe_ggtt_node_allocated - Check if node is allocated in GGTT
>  * @node: the &xe_ggtt_node to be inspected
>diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
>index 0e8822ae13fc..8b83610c6ee6 100644
>--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
>+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
>@@ -47,6 +47,8 @@ struct xe_ggtt {
> 	struct drm_mm mm;
> 	/** @access_count: counts GGTT writes */
> 	unsigned int access_count;
>+	/** @wq: Dedicated unordered work queue to process node removals */
>+	struct workqueue_struct *wq;
> };
>
> /**
>@@ -61,6 +63,16 @@ struct xe_ggtt_node {
> 	struct xe_ggtt *ggtt;
> 	/** @base: A drm_mm_node */
> 	struct drm_mm_node base;
>+	/**
>+	 * @delayed_removal: Information for removal through work thread when
>+	 * device runtime_pm is suspended
>+	 */
>+	struct {
>+		/** @delayed_removal.work: The work struct for the delayed removal */
>+		struct work_struct work;
>+		/** @delayed_removal.invalidate: If it needs invalidation upon removal */
>+		bool invalidate;

as noted above, I'd move this outside and always use it.

node->invalidate_on_remove

or something like that.... should make it simpler IMO so you can ignore
my comment about using a flags arg in a previous patch. Up to you if
doing in this patch or as a follow up

Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

>+	} delayed_removal;
> };
>
> /**
>-- 
>2.46.0
>

^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✗ CI.BAT: failure for series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (17 preceding siblings ...)
  2024-08-16 15:31 ` ✗ CI.checksparse: warning " Patchwork
@ 2024-08-16 16:29 ` Patchwork
  2024-08-17  1:50 ` ✗ CI.FULL: " Patchwork
  19 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2024-08-16 16:29 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe

[-- Attachment #1: Type: text/plain, Size: 5451 bytes --]

== Series Details ==

Series: series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
URL   : https://patchwork.freedesktop.org/series/137398/
State : failure

== Summary ==

CI Bug Log - changes from xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425_BAT -> xe-pw-137398v1_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-137398v1_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-137398v1_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 (8 -> 8)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in xe-pw-137398v1_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-adlp-vf:        [PASS][1] -> [DMESG-WARN][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/bat-adlp-vf/igt@core_hotunplug@unbind-rebind.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-adlp-vf/igt@core_hotunplug@unbind-rebind.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - bat-adlp-7:         [PASS][3] -> [ABORT][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/bat-adlp-7/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-adlp-7/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  * igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-1:
    - bat-atsm-2:         [PASS][5] -> [INCOMPLETE][6] +1 other test incomplete
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/bat-atsm-2/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-1.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-atsm-2/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-1.html

  * igt@xe_module_load@load:
    - bat-dg2-oem2:       [PASS][7] -> [ABORT][8]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/bat-dg2-oem2/igt@xe_module_load@load.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-dg2-oem2/igt@xe_module_load@load.html
    - bat-lnl-1:          [PASS][9] -> [ABORT][10]
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/bat-lnl-1/igt@xe_module_load@load.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-lnl-1/igt@xe_module_load@load.html
    - bat-bmg-1:          [PASS][11] -> [ABORT][12]
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/bat-bmg-1/igt@xe_module_load@load.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-bmg-1/igt@xe_module_load@load.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_force_connector_basic@force-connector-state:
    - {bat-bmg-2}:        [PASS][13] -> [ABORT][14]
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/bat-bmg-2/igt@kms_force_connector_basic@force-connector-state.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-bmg-2/igt@kms_force_connector_basic@force-connector-state.html

  
Known issues
------------

  Here are the changes found in xe-pw-137398v1_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@xe_live_ktest@xe_migrate:
    - bat-adlp-vf:        [PASS][15] -> [SKIP][16] ([Intel XE#1192]) +1 other test skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html

  
#### Warnings ####

  * igt@xe_live_ktest@xe_bo:
    - bat-adlp-vf:        [SKIP][17] ([Intel XE#2229] / [Intel XE#455]) -> [SKIP][18] ([Intel XE#1192])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455


Build changes
-------------

  * Linux: xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425 -> xe-pw-137398v1

  IGT_7973: 9c3a20d0403a2fe80bde618de5c2ef83b7e08d50 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425: cfdb0d68f7d07eecfafb5fda99e6dc313359d425
  xe-pw-137398v1: 137398v1

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/index.html

[-- Attachment #2: Type: text/html, Size: 6294 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✗ CI.FULL: failure for series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
  2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
                   ` (18 preceding siblings ...)
  2024-08-16 16:29 ` ✗ CI.BAT: failure " Patchwork
@ 2024-08-17  1:50 ` Patchwork
  19 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2024-08-17  1:50 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-xe

[-- Attachment #1: Type: text/plain, Size: 14219 bytes --]

== Series Details ==

Series: series starting with [01/12] drm/xe: Removed unused xe_ggtt_printk
URL   : https://patchwork.freedesktop.org/series/137398/
State : failure

== Summary ==

CI Bug Log - changes from xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425_full -> xe-pw-137398v1_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-137398v1_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-137398v1_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-137398v1_full:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_cursor_crc@cursor-offscreen-128x42:
    - shard-adlp:         [PASS][1] -> [ABORT][2] +33 other tests abort
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/shard-adlp-6/igt@kms_cursor_crc@cursor-offscreen-128x42.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-adlp-9/igt@kms_cursor_crc@cursor-offscreen-128x42.html

  * igt@runner@aborted:
    - shard-dg2-set2:     NOTRUN -> ([FAIL][3], [FAIL][4], [FAIL][5], [FAIL][6], [FAIL][7], [FAIL][8], [FAIL][9], [FAIL][10], [FAIL][11], [FAIL][12], [FAIL][13], [FAIL][14], [FAIL][15], [FAIL][16], [FAIL][17], [FAIL][18], [FAIL][19], [FAIL][20], [FAIL][21], [FAIL][22], [FAIL][23], [FAIL][24], [FAIL][25], [FAIL][26], [FAIL][27])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-433/igt@runner@aborted.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-466/igt@runner@aborted.html
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-466/igt@runner@aborted.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-463/igt@runner@aborted.html
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-434/igt@runner@aborted.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-432/igt@runner@aborted.html
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-433/igt@runner@aborted.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-435/igt@runner@aborted.html
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-434/igt@runner@aborted.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-463/igt@runner@aborted.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-466/igt@runner@aborted.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-463/igt@runner@aborted.html
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-433/igt@runner@aborted.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-435/igt@runner@aborted.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-432/igt@runner@aborted.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-432/igt@runner@aborted.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-435/igt@runner@aborted.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-433/igt@runner@aborted.html
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-463/igt@runner@aborted.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-466/igt@runner@aborted.html
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-432/igt@runner@aborted.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-463/igt@runner@aborted.html
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-434/igt@runner@aborted.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-435/igt@runner@aborted.html
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-dg2-435/igt@runner@aborted.html
    - shard-lnl:          NOTRUN -> ([FAIL][28], [FAIL][29], [FAIL][30], [FAIL][31], [FAIL][32], [FAIL][33], [FAIL][34], [FAIL][35], [FAIL][36], [FAIL][37], [FAIL][38], [FAIL][39], [FAIL][40], [FAIL][41], [FAIL][42], [FAIL][43], [FAIL][44], [FAIL][45], [FAIL][46], [FAIL][47], [FAIL][48], [FAIL][49], [FAIL][50], [FAIL][51], [FAIL][52])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-1/igt@runner@aborted.html
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-1/igt@runner@aborted.html
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-6/igt@runner@aborted.html
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-3/igt@runner@aborted.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-5/igt@runner@aborted.html
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-6/igt@runner@aborted.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-4/igt@runner@aborted.html
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-5/igt@runner@aborted.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-1/igt@runner@aborted.html
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-8/igt@runner@aborted.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-7/igt@runner@aborted.html
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-4/igt@runner@aborted.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-6/igt@runner@aborted.html
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-2/igt@runner@aborted.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-8/igt@runner@aborted.html
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-7/igt@runner@aborted.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-8/igt@runner@aborted.html
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-3/igt@runner@aborted.html
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-6/igt@runner@aborted.html
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-2/igt@runner@aborted.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-4/igt@runner@aborted.html
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-5/igt@runner@aborted.html
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-7/igt@runner@aborted.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-3/igt@runner@aborted.html
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-lnl-2/igt@runner@aborted.html

  * igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-all:
    - shard-adlp:         [PASS][53] -> [FAIL][54] +8 other tests fail
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/shard-adlp-4/igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-all.html
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-adlp-2/igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-all.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
    - shard-adlp:         [PASS][55] -> [DMESG-WARN][56]
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/shard-adlp-8/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-adlp-8/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html

  
#### Warnings ####

  * igt@kms_content_protection@uevent:
    - shard-adlp:         [SKIP][57] ([Intel XE#1201] / [Intel XE#455]) -> [ABORT][58] +1 other test abort
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/shard-adlp-6/igt@kms_content_protection@uevent.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-adlp-8/igt@kms_content_protection@uevent.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - shard-adlp:         [FAIL][59] ([Intel XE#771] / [Intel XE#899]) -> [ABORT][60]
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/shard-adlp-4/igt@kms_universal_plane@cursor-fb-leak.html
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-adlp-6/igt@kms_universal_plane@cursor-fb-leak.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@runner@aborted:
    - {shard-bmg}:        NOTRUN -> ([FAIL][61], [FAIL][62], [FAIL][63], [FAIL][64], [FAIL][65], [FAIL][66], [FAIL][67], [FAIL][68], [FAIL][69], [FAIL][70], [FAIL][71], [FAIL][72], [FAIL][73], [FAIL][74], [FAIL][75], [FAIL][76], [FAIL][77], [FAIL][78], [FAIL][79], [FAIL][80], [FAIL][81], [FAIL][82], [FAIL][83], [FAIL][84], [FAIL][85])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-3/igt@runner@aborted.html
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-7/igt@runner@aborted.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-5/igt@runner@aborted.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-4/igt@runner@aborted.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-5/igt@runner@aborted.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-2/igt@runner@aborted.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-6/igt@runner@aborted.html
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-1/igt@runner@aborted.html
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-4/igt@runner@aborted.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-3/igt@runner@aborted.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-6/igt@runner@aborted.html
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-1/igt@runner@aborted.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-5/igt@runner@aborted.html
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-7/igt@runner@aborted.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-3/igt@runner@aborted.html
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-4/igt@runner@aborted.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-2/igt@runner@aborted.html
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-1/igt@runner@aborted.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-8/igt@runner@aborted.html
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-6/igt@runner@aborted.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-8/igt@runner@aborted.html
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-7/igt@runner@aborted.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-2/igt@runner@aborted.html
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-8/igt@runner@aborted.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-bmg-6/igt@runner@aborted.html

  
Known issues
------------

  Here are the changes found in xe-pw-137398v1_full that come from known issues:

### IGT changes ###

#### Possible fixes ####

  * igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1:
    - shard-adlp:         [FAIL][86] ([Intel XE#899]) -> [PASS][87] +1 other test pass
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/shard-adlp-4/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-adlp-6/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html

  
#### Warnings ####

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-adlp:         [FAIL][88] ([Intel XE#1231]) -> [DMESG-FAIL][89] ([Intel XE#324])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425/shard-adlp-9/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/shard-adlp-1/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
  [Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#771]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/771
  [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899


Build changes
-------------

  * Linux: xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425 -> xe-pw-137398v1

  IGT_7973: 9c3a20d0403a2fe80bde618de5c2ef83b7e08d50 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1782-cfdb0d68f7d07eecfafb5fda99e6dc313359d425: cfdb0d68f7d07eecfafb5fda99e6dc313359d425
  xe-pw-137398v1: 137398v1

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/index.html

[-- Attachment #2: Type: text/html, Size: 15150 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 12/12] drm/xe: Fix missing runtime outer protection for ggtt_remove_node
  2024-08-16 16:08   ` Lucas De Marchi
@ 2024-08-17 10:14     ` Rodrigo Vivi
  0 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-17 10:14 UTC (permalink / raw)
  To: Lucas De Marchi
  Cc: intel-xe, jose.souza, Matthew Auld, Paulo Zanoni, Francois Dugast,
	Thomas Hellström, Matthew Brost

On Fri, Aug 16, 2024 at 11:08:26AM -0500, Lucas De Marchi wrote:
> On Fri, Aug 16, 2024 at 11:02:43AM GMT, Rodrigo Vivi wrote:
> > Defer the ggtt node removal to a thread if runtime_pm is not active.
> > 
> > The ggtt node removal can be called from multiple places, including
> > places where we cannot protect with outer callers and places we are
> > within other locks. So, try to grab the runtime reference if the
> > device is already active, otherwise defer the removal to a separate
> > thread from where we are sure we can wake the device up.
> > 
> > v2: - use xe wq instead of system wq (Matt and CI)
> >    - Avoid GFP_KERNEL to be future proof since this removal can
> >    be called from outside our drivers and we don't want to block
> >    if atomic is needed. (Brost)
> > v3: amend forgot chunk declaring xe_device.
> > v4: Use a xe_ggtt_region to encapsulate the node and remova info,
> >    wihtout the need for any memory allocation at runtime.
> > v5: Actually fill the delayed_removal.invalidate (Brost)
> > v6: - Ensure that ggtt_region is not freed before work finishes (Auld)
> >    - Own wq to ensures that the queued works are flushed before
> >      ggtt_fini (Brost)
> > v7: also free ggtt_region on early !bound return (Auld)
> > v8: Address the null deref (CI)
> > v9: Based on the new xe_ggtt_node for the proper care of the lifetime
> >    of the object.
> > v10: Redo the lost v5 change. (Brost)
> > 
> > Cc: Matthew Auld <matthew.auld@intel.com>
> > Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > Cc: Francois Dugast <francois.dugast@intel.com>
> > Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> > Cc: Matthew Brost <matthew.brost@intel.com>
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_ggtt.c       | 107 ++++++++++++++++++-----------
> > drivers/gpu/drm/xe/xe_ggtt_types.h |  12 ++++
> > 2 files changed, 79 insertions(+), 40 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> > index 5c04c1bc8417..110acf828974 100644
> > --- a/drivers/gpu/drm/xe/xe_ggtt.c
> > +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> > @@ -161,6 +161,7 @@ static void ggtt_fini_early(struct drm_device *drm, void *arg)
> > {
> > 	struct xe_ggtt *ggtt = arg;
> > 
> > +	destroy_workqueue(ggtt->wq);
> 
> better to follow the inverse order of init_early, but doesn't matter
> much in this case.

hmm...
maybe it does matter:
https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-137398v1/bat-adlp-vf/igt@core_hotunplug@unbind-rebind.html

but maybe this was only a missed case of xe_ggtt_node_fini that I just
fixed on VF case...

But I didn't understand why you believe this doesn't follow the init_early
order? I intended to flush the wq and get all the nodes removed before
we destroy the mutex and take mm down...

What am I missing?

Btw, thanks for all the comments. Addressed almost all of them with
the exception of s/invalidate/flag I believe...

> 
> > 	mutex_destroy(&ggtt->lock);
> > 	drm_mm_takedown(&ggtt->mm);
> > }
> > @@ -242,6 +243,8 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
> > 	else
> > 		ggtt->pt_ops = &xelp_pt_ops;
> > 
> > +	ggtt->wq = alloc_workqueue("xe-ggtt-wq", 0, 0);
> > +
> > 	drm_mm_init(&ggtt->mm, xe_wopcm_size(xe),
> > 		    ggtt->size - xe_wopcm_size(xe));
> > 	mutex_init(&ggtt->lock);
> > @@ -276,6 +279,68 @@ static void xe_ggtt_initial_clear(struct xe_ggtt *ggtt)
> > 	mutex_unlock(&ggtt->lock);
> > }
> > 
> > +static void ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
> > +			     bool invalidate)
> 
> you don't need the invalidate arg anymore. Just make sure it's always
> set in node.
> 
> > +{
> > +	struct xe_device *xe = tile_to_xe(ggtt->tile);
> > +	bool bound;
> > +	int idx;
> > +
> > +	if (!node || !node->ggtt)
> > +		return;
> > +
> > +	bound = drm_dev_enter(&xe->drm, &idx);
> > +
> > +	mutex_lock(&ggtt->lock);
> > +	if (bound)
> > +		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
> > +	drm_mm_remove_node(&node->base);
> > +	node->base.size = 0;
> > +	mutex_unlock(&ggtt->lock);
> > +
> > +	if (!bound)
> > +		goto free_node;
> > +
> > +	if (invalidate)
> > +		xe_ggtt_invalidate(ggtt);
> > +
> > +	drm_dev_exit(idx);
> > +
> > +free_node:
> > +	xe_ggtt_node_fini(node);
> > +}
> > +
> > +static void ggtt_node_remove_work_func(struct work_struct *work)
> > +{
> > +	struct xe_ggtt_node *node = container_of(work, typeof(*node),
> > +						 delayed_removal.work);
> > +	struct xe_device *xe = tile_to_xe(node->ggtt->tile);
> > +
> > +	xe_pm_runtime_get(xe);
> > +	ggtt_node_remove(node->ggtt, node, node->delayed_removal.invalidate);
> > +	xe_pm_runtime_put(xe);
> > +}
> > +
> > +/**
> > + * xe_ggtt_node_remove - Remove a &xe_ggtt_node from the GGTT
> > + * @ggtt: the &xe_ggtt where node will be removed
> > + * @node: the &xe_ggtt_node to be removed
> > + * @invalidate: if node needs invalidation upon removal
> > + */
> > +void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
> > +			 bool invalidate)
> > +{
> > +	struct xe_device *xe = tile_to_xe(ggtt->tile);
> > +
> > +	if (xe_pm_runtime_get_if_active(xe)) {
> > +		ggtt_node_remove(ggtt, node, invalidate);
> > +		xe_pm_runtime_put(xe);
> > +	} else {
> > +		node->delayed_removal.invalidate = invalidate;
> > +		queue_work(ggtt->wq, &node->delayed_removal.work);
> > +	}
> > +}
> > +
> > /**
> >  * xe_ggtt_init - Regular non-early GGTT initialization
> >  * @ggtt: the &xe_ggtt to be initialized
> > @@ -482,7 +547,9 @@ struct xe_ggtt_node *xe_ggtt_node_init(struct xe_ggtt *ggtt)
> > 	if (!node)
> > 		return ERR_PTR(-ENOMEM);
> > 
> > +	INIT_WORK(&node->delayed_removal.work, ggtt_node_remove_work_func);
> > 	node->ggtt = ggtt;
> > +
> > 	return node;
> > }
> > 
> > @@ -499,46 +566,6 @@ void xe_ggtt_node_fini(struct xe_ggtt_node *node)
> > 	kfree(node);
> > }
> > 
> > -/**
> > - * xe_ggtt_node_remove - Remove a &xe_ggtt_node from the GGTT
> > - * @ggtt: the &xe_ggtt where node will be removed
> > - * @node: the &xe_ggtt_node to be removed
> > - * @invalidate: if node needs invalidation upon removal
> > - */
> > -void xe_ggtt_node_remove(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
> > -			 bool invalidate)
> > -{
> > -	struct xe_device *xe = tile_to_xe(ggtt->tile);
> > -	bool bound;
> > -	int idx;
> > -
> > -	if (!node || !node->ggtt)
> > -		return;
> > -
> > -	bound = drm_dev_enter(&xe->drm, &idx);
> > -	if (bound)
> > -		xe_pm_runtime_get_noresume(xe);
> > -
> > -	mutex_lock(&ggtt->lock);
> > -	if (bound)
> > -		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
> > -	drm_mm_remove_node(&node->base);
> > -	node->base.size = 0;
> > -	mutex_unlock(&ggtt->lock);
> > -
> > -	if (!bound)
> > -		goto free_node;
> > -
> > -	if (invalidate)
> > -		xe_ggtt_invalidate(ggtt);
> > -
> > -	xe_pm_runtime_put(xe);
> > -	drm_dev_exit(idx);
> > -
> > -free_node:
> > -	xe_ggtt_node_fini(node);
> > -}
> > -
> > /**
> >  * xe_ggtt_node_allocated - Check if node is allocated in GGTT
> >  * @node: the &xe_ggtt_node to be inspected
> > diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
> > index 0e8822ae13fc..8b83610c6ee6 100644
> > --- a/drivers/gpu/drm/xe/xe_ggtt_types.h
> > +++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
> > @@ -47,6 +47,8 @@ struct xe_ggtt {
> > 	struct drm_mm mm;
> > 	/** @access_count: counts GGTT writes */
> > 	unsigned int access_count;
> > +	/** @wq: Dedicated unordered work queue to process node removals */
> > +	struct workqueue_struct *wq;
> > };
> > 
> > /**
> > @@ -61,6 +63,16 @@ struct xe_ggtt_node {
> > 	struct xe_ggtt *ggtt;
> > 	/** @base: A drm_mm_node */
> > 	struct drm_mm_node base;
> > +	/**
> > +	 * @delayed_removal: Information for removal through work thread when
> > +	 * device runtime_pm is suspended
> > +	 */
> > +	struct {
> > +		/** @delayed_removal.work: The work struct for the delayed removal */
> > +		struct work_struct work;
> > +		/** @delayed_removal.invalidate: If it needs invalidation upon removal */
> > +		bool invalidate;
> 
> as noted above, I'd move this outside and always use it.
> 
> node->invalidate_on_remove
> 
> or something like that.... should make it simpler IMO so you can ignore
> my comment about using a flags arg in a previous patch. Up to you if
> doing in this patch or as a follow up
> 
> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
> 
> Lucas De Marchi
> 
> > +	} delayed_removal;
> > };
> > 
> > /**
> > -- 
> > 2.46.0
> > 

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole
  2024-08-17 10:35 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
@ 2024-08-17 10:35 ` Rodrigo Vivi
  0 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-17 10:35 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, jose.souza, Rodrigo Vivi, Michal Wajdeczko

Introduce a new xe_ggtt_largest_hole helper that attends the SRIOV
demand and continue with the goal of limiting drm_mm access to xe_ggtt.

v2: Fix a typo (Michal)

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c               | 35 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++------------
 3 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 7c8bbaa30fca..2d055f489879 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -584,6 +584,41 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
 }
 
+/**
+ * xe_ggtt_largest_hole - Largest GGTT hole
+ * @ggtt: the &xe_ggtt that will be inspected
+ * @alignment: minimum alignment
+ * @spare: If not NULL: in: desired memory size to be spared / out: Adjusted possible spare
+ *
+ * Return: size of the largest continuous GGTT region
+ */
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
+{
+	const struct drm_mm *mm = &ggtt->mm;
+	const struct drm_mm_node *entry;
+	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
+	u64 hole_start, hole_end, hole_size;
+	u64 max_hole = 0;
+
+	mutex_lock(&ggtt->lock);
+
+	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
+		hole_start = max(hole_start, hole_min_start);
+		hole_start = ALIGN(hole_start, alignment);
+		hole_end = ALIGN_DOWN(hole_end, alignment);
+		if (hole_start >= hole_end)
+			continue;
+		hole_size = hole_end - hole_start;
+		if (spare)
+			*spare -= min3(*spare, hole_size, max_hole);
+		max_hole = max(max_hole, hole_size);
+	}
+
+	mutex_unlock(&ggtt->lock);
+
+	return max_hole;
+}
+
 #ifdef CONFIG_PCI_IOV
 static u64 xe_encode_vfid_pte(u16 vfid)
 {
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index f816b3c0732b..31060fe7644b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -29,6 +29,7 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 			 u64 start, u64 end);
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
 
 int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
 
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 947750d97d7d..1852ff45bea4 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -590,30 +590,11 @@ int xe_gt_sriov_pf_config_bulk_set_ggtt(struct xe_gt *gt, unsigned int vfid,
 static u64 pf_get_max_ggtt(struct xe_gt *gt)
 {
 	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
-	const struct drm_mm *mm = &ggtt->mm;
-	const struct drm_mm_node *entry;
 	u64 alignment = pf_get_ggtt_alignment(gt);
 	u64 spare = pf_get_spare_ggtt(gt);
-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
-	u64 hole_start, hole_end, hole_size;
-	u64 max_hole = 0;
-
-	mutex_lock(&ggtt->lock);
-
-	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
-		hole_start = max(hole_start, hole_min_start);
-		hole_start = ALIGN(hole_start, alignment);
-		hole_end = ALIGN_DOWN(hole_end, alignment);
-		if (hole_start >= hole_end)
-			continue;
-		hole_size = hole_end - hole_start;
-		xe_gt_sriov_dbg_verbose(gt, "HOLE start %llx size %lluK\n",
-					hole_start, hole_size / SZ_1K);
-		spare -= min3(spare, hole_size, max_hole);
-		max_hole = max(max_hole, hole_size);
-	}
+	u64 max_hole;
 
-	mutex_unlock(&ggtt->lock);
+	max_hole = xe_ggtt_largest_hole(ggtt, alignment, &spare);
 
 	xe_gt_sriov_dbg_verbose(gt, "HOLE max %lluK reserved %lluK\n",
 				max_hole / SZ_1K, spare / SZ_1K);
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole
  2024-08-20 20:25 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
@ 2024-08-20 20:25 ` Rodrigo Vivi
  0 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-20 20:25 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, Rodrigo Vivi, Michal Wajdeczko

Introduce a new xe_ggtt_largest_hole helper that attends the SRIOV
demand and continue with the goal of limiting drm_mm access to xe_ggtt.

v2: Fix a typo (Michal)

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c               | 35 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++------------
 3 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 7c8bbaa30fca..2d055f489879 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -584,6 +584,41 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
 }
 
+/**
+ * xe_ggtt_largest_hole - Largest GGTT hole
+ * @ggtt: the &xe_ggtt that will be inspected
+ * @alignment: minimum alignment
+ * @spare: If not NULL: in: desired memory size to be spared / out: Adjusted possible spare
+ *
+ * Return: size of the largest continuous GGTT region
+ */
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
+{
+	const struct drm_mm *mm = &ggtt->mm;
+	const struct drm_mm_node *entry;
+	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
+	u64 hole_start, hole_end, hole_size;
+	u64 max_hole = 0;
+
+	mutex_lock(&ggtt->lock);
+
+	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
+		hole_start = max(hole_start, hole_min_start);
+		hole_start = ALIGN(hole_start, alignment);
+		hole_end = ALIGN_DOWN(hole_end, alignment);
+		if (hole_start >= hole_end)
+			continue;
+		hole_size = hole_end - hole_start;
+		if (spare)
+			*spare -= min3(*spare, hole_size, max_hole);
+		max_hole = max(max_hole, hole_size);
+	}
+
+	mutex_unlock(&ggtt->lock);
+
+	return max_hole;
+}
+
 #ifdef CONFIG_PCI_IOV
 static u64 xe_encode_vfid_pte(u16 vfid)
 {
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index f816b3c0732b..31060fe7644b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -29,6 +29,7 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 			 u64 start, u64 end);
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
 
 int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
 
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 947750d97d7d..1852ff45bea4 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -590,30 +590,11 @@ int xe_gt_sriov_pf_config_bulk_set_ggtt(struct xe_gt *gt, unsigned int vfid,
 static u64 pf_get_max_ggtt(struct xe_gt *gt)
 {
 	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
-	const struct drm_mm *mm = &ggtt->mm;
-	const struct drm_mm_node *entry;
 	u64 alignment = pf_get_ggtt_alignment(gt);
 	u64 spare = pf_get_spare_ggtt(gt);
-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
-	u64 hole_start, hole_end, hole_size;
-	u64 max_hole = 0;
-
-	mutex_lock(&ggtt->lock);
-
-	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
-		hole_start = max(hole_start, hole_min_start);
-		hole_start = ALIGN(hole_start, alignment);
-		hole_end = ALIGN_DOWN(hole_end, alignment);
-		if (hole_start >= hole_end)
-			continue;
-		hole_size = hole_end - hole_start;
-		xe_gt_sriov_dbg_verbose(gt, "HOLE start %llx size %lluK\n",
-					hole_start, hole_size / SZ_1K);
-		spare -= min3(spare, hole_size, max_hole);
-		max_hole = max(max_hole, hole_size);
-	}
+	u64 max_hole;
 
-	mutex_unlock(&ggtt->lock);
+	max_hole = xe_ggtt_largest_hole(ggtt, alignment, &spare);
 
 	xe_gt_sriov_dbg_verbose(gt, "HOLE max %lluK reserved %lluK\n",
 				max_hole / SZ_1K, spare / SZ_1K);
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole
  2024-08-21 19:38 [PATCH 01/12] " Rodrigo Vivi
@ 2024-08-21 19:38 ` Rodrigo Vivi
  0 siblings, 0 replies; 35+ messages in thread
From: Rodrigo Vivi @ 2024-08-21 19:38 UTC (permalink / raw)
  To: intel-xe; +Cc: lucas.demarchi, Rodrigo Vivi, Michal Wajdeczko

Introduce a new xe_ggtt_largest_hole helper that attends the SRIOV
demand and continue with the goal of limiting drm_mm access to xe_ggtt.

v2: Fix a typo (Michal)

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c               | 35 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 23 ++------------
 3 files changed, 38 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 7c8bbaa30fca..2d055f489879 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -584,6 +584,41 @@ void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 			    bo->flags & XE_BO_FLAG_GGTT_INVALIDATE);
 }
 
+/**
+ * xe_ggtt_largest_hole - Largest GGTT hole
+ * @ggtt: the &xe_ggtt that will be inspected
+ * @alignment: minimum alignment
+ * @spare: If not NULL: in: desired memory size to be spared / out: Adjusted possible spare
+ *
+ * Return: size of the largest continuous GGTT region
+ */
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
+{
+	const struct drm_mm *mm = &ggtt->mm;
+	const struct drm_mm_node *entry;
+	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
+	u64 hole_start, hole_end, hole_size;
+	u64 max_hole = 0;
+
+	mutex_lock(&ggtt->lock);
+
+	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
+		hole_start = max(hole_start, hole_min_start);
+		hole_start = ALIGN(hole_start, alignment);
+		hole_end = ALIGN_DOWN(hole_end, alignment);
+		if (hole_start >= hole_end)
+			continue;
+		hole_size = hole_end - hole_start;
+		if (spare)
+			*spare -= min3(*spare, hole_size, max_hole);
+		max_hole = max(max_hole, hole_size);
+	}
+
+	mutex_unlock(&ggtt->lock);
+
+	return max_hole;
+}
+
 #ifdef CONFIG_PCI_IOV
 static u64 xe_encode_vfid_pte(u16 vfid)
 {
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index f816b3c0732b..31060fe7644b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -29,6 +29,7 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 			 u64 start, u64 end);
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
+u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
 
 int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p);
 
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 947750d97d7d..1852ff45bea4 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -590,30 +590,11 @@ int xe_gt_sriov_pf_config_bulk_set_ggtt(struct xe_gt *gt, unsigned int vfid,
 static u64 pf_get_max_ggtt(struct xe_gt *gt)
 {
 	struct xe_ggtt *ggtt = gt_to_tile(gt)->mem.ggtt;
-	const struct drm_mm *mm = &ggtt->mm;
-	const struct drm_mm_node *entry;
 	u64 alignment = pf_get_ggtt_alignment(gt);
 	u64 spare = pf_get_spare_ggtt(gt);
-	u64 hole_min_start = xe_wopcm_size(gt_to_xe(gt));
-	u64 hole_start, hole_end, hole_size;
-	u64 max_hole = 0;
-
-	mutex_lock(&ggtt->lock);
-
-	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
-		hole_start = max(hole_start, hole_min_start);
-		hole_start = ALIGN(hole_start, alignment);
-		hole_end = ALIGN_DOWN(hole_end, alignment);
-		if (hole_start >= hole_end)
-			continue;
-		hole_size = hole_end - hole_start;
-		xe_gt_sriov_dbg_verbose(gt, "HOLE start %llx size %lluK\n",
-					hole_start, hole_size / SZ_1K);
-		spare -= min3(spare, hole_size, max_hole);
-		max_hole = max(max_hole, hole_size);
-	}
+	u64 max_hole;
 
-	mutex_unlock(&ggtt->lock);
+	max_hole = xe_ggtt_largest_hole(ggtt, alignment, &spare);
 
 	xe_gt_sriov_dbg_verbose(gt, "HOLE max %lluK reserved %lluK\n",
 				max_hole / SZ_1K, spare / SZ_1K);
-- 
2.46.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2024-08-21 19:39 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-16 15:02 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
2024-08-16 15:02 ` [PATCH 02/12] drm/xe: Introduce GGTT documentation Rodrigo Vivi
2024-08-16 15:13   ` Lucas De Marchi
2024-08-16 15:02 ` [PATCH 03/12] drm/xe: Remove unnecessary drm_mm.h includes Rodrigo Vivi
2024-08-16 15:02 ` [PATCH 04/12] drm/{i915, xe}: Avoid direct inspection of dpt_vma from outside dpt Rodrigo Vivi
2024-08-16 15:02 ` [PATCH 05/12] drm/xe: Encapsulate drm_mm_node inside xe_ggtt_node Rodrigo Vivi
2024-08-16 15:02 ` [PATCH 06/12] drm/xe: Rename xe_ggtt_node related functions Rodrigo Vivi
2024-08-16 15:24   ` Lucas De Marchi
2024-08-16 15:02 ` [PATCH 07/12] drm/xe: Limit drm_mm_node_allocated access to xe_ggtt_node Rodrigo Vivi
2024-08-16 15:26   ` Lucas De Marchi
2024-08-16 15:02 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
2024-08-16 15:35   ` Lucas De Marchi
2024-08-16 15:02 ` [PATCH 09/12] drm/xe: Introduce xe_ggtt_print_holes Rodrigo Vivi
2024-08-16 15:02 ` [PATCH 10/12] drm/xe: Rename xe_ggtt balloon functions to make the node clear Rodrigo Vivi
2024-08-16 15:45   ` Lucas De Marchi
2024-08-16 15:02 ` [PATCH 11/12] drm/xe: Make xe_ggtt_node struct independent Rodrigo Vivi
2024-08-16 15:02 ` [PATCH 12/12] drm/xe: Fix missing runtime outer protection for ggtt_remove_node Rodrigo Vivi
2024-08-16 16:08   ` Lucas De Marchi
2024-08-17 10:14     ` Rodrigo Vivi
2024-08-16 15:07 ` [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Lucas De Marchi
2024-08-16 15:09 ` ✓ CI.Patch_applied: success for series starting with [01/12] " Patchwork
2024-08-16 15:09 ` ✓ CI.checkpatch: " Patchwork
2024-08-16 15:12 ` ✓ CI.KUnit: " Patchwork
2024-08-16 15:27 ` ✓ CI.Build: " Patchwork
2024-08-16 15:30 ` ✓ CI.Hooks: " Patchwork
2024-08-16 15:31 ` ✗ CI.checksparse: warning " Patchwork
2024-08-16 16:29 ` ✗ CI.BAT: failure " Patchwork
2024-08-17  1:50 ` ✗ CI.FULL: " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2024-08-21 19:38 [PATCH 01/12] " Rodrigo Vivi
2024-08-21 19:38 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
2024-08-20 20:25 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
2024-08-20 20:25 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
2024-08-17 10:35 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
2024-08-17 10:35 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
2024-08-15 22:07 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
2024-08-15 22:07 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
2024-07-11 17:11 [PATCH 01/12] drm/xe: Removed unused xe_ggtt_printk Rodrigo Vivi
2024-07-11 17:11 ` [PATCH 08/12] drm/xe: Introduce xe_ggtt_largest_hole Rodrigo Vivi
2024-07-11 20:00   ` Michal Wajdeczko
2024-08-09 21:33     ` Rodrigo Vivi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox