* [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters
@ 2025-03-07 19:25 Gustavo Sousa
2025-03-07 19:25 ` [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display Gustavo Sousa
` (5 more replies)
0 siblings, 6 replies; 14+ messages in thread
From: Gustavo Sousa @ 2025-03-07 19:25 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Matt Roper, Ville Syrjälä, Gustavo Sousa
Bandwidth parameters for Xe3_LPD have been updated with respect to
previous display releases. Encode them into xe3lpd_sa_info and use that
new struct.
Since we are touching intel_bw.c, also take the opportunity convert it
to intel_display.
Changes in v2:
- Fix typo in patch #2.
Changes in v3:
- Squash patches #1 and #2 into a single one and modify it to convert
intel_bw.c internally to intel_display (new patch subject is
"drm/i915/display: Convert intel_bw.c internally to intel_display").
- Add a new patch #2 to convert intel_bw.c externally to intel_display.
- Link to v2: https://lore.kernel.org/r/20250217153550.43909-1-gustavo.sousa@intel.com
---
Gustavo Sousa (3):
drm/i915/display: Convert intel_bw.c internally to intel_display
drm/i915/display: Convert intel_bw.c externally to intel_display
drm/i915/xe3lpd: Update bandwidth parameters
drivers/gpu/drm/i915/display/intel_bw.c | 440 +++++++++++----------
drivers/gpu/drm/i915/display/intel_bw.h | 9 +-
drivers/gpu/drm/i915/display/intel_cdclk.c | 3 +-
.../gpu/drm/i915/display/intel_display_driver.c | 2 +-
drivers/gpu/drm/i915/display/skl_watermark.c | 10 +-
drivers/gpu/drm/i915/i915_driver.c | 2 +-
drivers/gpu/drm/xe/display/xe_display.c | 2 +-
7 files changed, 245 insertions(+), 223 deletions(-)
---
base-commit: f811577f424491a57b1e8669bde62998227d6907
change-id: 20250228-xe3lpd-bandwidth-update-f011599c0c3e
Best regards,
--
Gustavo Sousa <gustavo.sousa@intel.com>
^ permalink raw reply [flat|nested] 14+ messages in thread* [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display 2025-03-07 19:25 [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa @ 2025-03-07 19:25 ` Gustavo Sousa 2025-03-10 16:47 ` Ville Syrjälä 2025-03-07 19:25 ` [PATCH v3 2/3] drm/i915/display: Convert intel_bw.c externally " Gustavo Sousa ` (4 subsequent siblings) 5 siblings, 1 reply; 14+ messages in thread From: Gustavo Sousa @ 2025-03-07 19:25 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: Matt Roper, Ville Syrjälä, Gustavo Sousa Update intel_bw.c internally use intel_display. Conversion of the public interface will come as a follow-up. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> --- drivers/gpu/drm/i915/display/intel_bw.c | 416 +++++++++++++++++--------------- 1 file changed, 217 insertions(+), 199 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c index 048be287224774110d94fe2944daa580d8dc20a6..d71dc796f1793f546fe04146e5987a9be56bae9b 100644 --- a/drivers/gpu/drm/i915/display/intel_bw.c +++ b/drivers/gpu/drm/i915/display/intel_bw.c @@ -11,6 +11,7 @@ #include "intel_atomic.h" #include "intel_bw.h" #include "intel_cdclk.h" +#include "intel_de.h" #include "intel_display_core.h" #include "intel_display_types.h" #include "skl_watermark.h" @@ -39,14 +40,14 @@ struct intel_qgv_info { u8 deinterleave; }; -static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, +static int dg1_mchbar_read_qgv_point_info(struct intel_display *display, struct intel_qgv_point *sp, int point) { u32 dclk_ratio, dclk_reference; u32 val; - val = intel_uncore_read(&dev_priv->uncore, SA_PERF_STATUS_0_0_0_MCHBAR_PC); + val = intel_de_read(display, SA_PERF_STATUS_0_0_0_MCHBAR_PC); dclk_ratio = REG_FIELD_GET(DG1_QCLK_RATIO_MASK, val); if (val & DG1_QCLK_REFERENCE) dclk_reference = 6; /* 6 * 16.666 MHz = 100 MHz */ @@ -54,18 +55,18 @@ static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, dclk_reference = 8; /* 8 * 16.666 MHz = 133 MHz */ sp->dclk = DIV_ROUND_UP((16667 * dclk_ratio * dclk_reference) + 500, 1000); - val = intel_uncore_read(&dev_priv->uncore, SKL_MC_BIOS_DATA_0_0_0_MCHBAR_PCU); + val = intel_de_read(display, SKL_MC_BIOS_DATA_0_0_0_MCHBAR_PCU); if (val & DG1_GEAR_TYPE) sp->dclk *= 2; if (sp->dclk == 0) return -EINVAL; - val = intel_uncore_read(&dev_priv->uncore, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR); + val = intel_de_read(display, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR); sp->t_rp = REG_FIELD_GET(DG1_DRAM_T_RP_MASK, val); sp->t_rdpre = REG_FIELD_GET(DG1_DRAM_T_RDPRE_MASK, val); - val = intel_uncore_read(&dev_priv->uncore, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR_HIGH); + val = intel_de_read(display, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR_HIGH); sp->t_rcd = REG_FIELD_GET(DG1_DRAM_T_RCD_MASK, val); sp->t_ras = REG_FIELD_GET(DG1_DRAM_T_RAS_MASK, val); @@ -74,22 +75,23 @@ static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, return 0; } -static int icl_pcode_read_qgv_point_info(struct drm_i915_private *dev_priv, +static int icl_pcode_read_qgv_point_info(struct intel_display *display, struct intel_qgv_point *sp, int point) { + struct drm_i915_private *i915 = to_i915(display->drm); u32 val = 0, val2 = 0; u16 dclk; int ret; - ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | + ret = snb_pcode_read(&i915->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | ICL_PCODE_MEM_SS_READ_QGV_POINT_INFO(point), &val, &val2); if (ret) return ret; dclk = val & 0xffff; - sp->dclk = DIV_ROUND_UP((16667 * dclk) + (DISPLAY_VER(dev_priv) >= 12 ? 500 : 0), + sp->dclk = DIV_ROUND_UP((16667 * dclk) + (DISPLAY_VER(display) >= 12 ? 500 : 0), 1000); sp->t_rp = (val & 0xff0000) >> 16; sp->t_rcd = (val & 0xff000000) >> 24; @@ -102,14 +104,15 @@ static int icl_pcode_read_qgv_point_info(struct drm_i915_private *dev_priv, return 0; } -static int adls_pcode_read_psf_gv_point_info(struct drm_i915_private *dev_priv, - struct intel_psf_gv_point *points) +static int adls_pcode_read_psf_gv_point_info(struct intel_display *display, + struct intel_psf_gv_point *points) { + struct drm_i915_private *i915 = to_i915(display->drm); u32 val = 0; int ret; int i; - ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | + ret = snb_pcode_read(&i915->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | ADL_PCODE_MEM_SS_READ_PSF_GV_INFO, &val, NULL); if (ret) return ret; @@ -122,10 +125,10 @@ static int adls_pcode_read_psf_gv_point_info(struct drm_i915_private *dev_priv, return 0; } -static u16 icl_qgv_points_mask(struct drm_i915_private *i915) +static u16 icl_qgv_points_mask(struct intel_display *display) { - unsigned int num_psf_gv_points = i915->display.bw.max[0].num_psf_gv_points; - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; + unsigned int num_psf_gv_points = display->bw.max[0].num_psf_gv_points; + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; u16 qgv_points = 0, psf_points = 0; /* @@ -142,18 +145,19 @@ static u16 icl_qgv_points_mask(struct drm_i915_private *i915) return ICL_PCODE_REQ_QGV_PT(qgv_points) | ADLS_PCODE_REQ_PSF_PT(psf_points); } -static bool is_sagv_enabled(struct drm_i915_private *i915, u16 points_mask) +static bool is_sagv_enabled(struct intel_display *display, u16 points_mask) { - return !is_power_of_2(~points_mask & icl_qgv_points_mask(i915) & + return !is_power_of_2(~points_mask & icl_qgv_points_mask(display) & ICL_PCODE_REQ_QGV_PT_MASK); } int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, u32 points_mask) { + struct intel_display *display = &dev_priv->display; int ret; - if (DISPLAY_VER(dev_priv) >= 14) + if (DISPLAY_VER(display) >= 14) return 0; /* bspec says to keep retrying for at least 1 ms */ @@ -164,27 +168,28 @@ int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, 1); if (ret < 0) { - drm_err(&dev_priv->drm, + drm_err(display->drm, "Failed to disable qgv points (0x%x) points: 0x%x\n", ret, points_mask); return ret; } - dev_priv->display.sagv.status = is_sagv_enabled(dev_priv, points_mask) ? + display->sagv.status = is_sagv_enabled(display, points_mask) ? I915_SAGV_ENABLED : I915_SAGV_DISABLED; return 0; } -static int mtl_read_qgv_point_info(struct drm_i915_private *dev_priv, +static int mtl_read_qgv_point_info(struct intel_display *display, struct intel_qgv_point *sp, int point) { + struct drm_i915_private *i915 = to_i915(display->drm); u32 val, val2; u16 dclk; - val = intel_uncore_read(&dev_priv->uncore, + val = intel_uncore_read(&i915->uncore, MTL_MEM_SS_INFO_QGV_POINT_LOW(point)); - val2 = intel_uncore_read(&dev_priv->uncore, + val2 = intel_uncore_read(&i915->uncore, MTL_MEM_SS_INFO_QGV_POINT_HIGH(point)); dclk = REG_FIELD_GET(MTL_DCLK_MASK, val); sp->dclk = DIV_ROUND_CLOSEST(16667 * dclk, 1000); @@ -200,29 +205,30 @@ static int mtl_read_qgv_point_info(struct drm_i915_private *dev_priv, } static int -intel_read_qgv_point_info(struct drm_i915_private *dev_priv, +intel_read_qgv_point_info(struct intel_display *display, struct intel_qgv_point *sp, int point) { - if (DISPLAY_VER(dev_priv) >= 14) - return mtl_read_qgv_point_info(dev_priv, sp, point); - else if (IS_DG1(dev_priv)) - return dg1_mchbar_read_qgv_point_info(dev_priv, sp, point); + if (DISPLAY_VER(display) >= 14) + return mtl_read_qgv_point_info(display, sp, point); + else if (display->platform.dg1) + return dg1_mchbar_read_qgv_point_info(display, sp, point); else - return icl_pcode_read_qgv_point_info(dev_priv, sp, point); + return icl_pcode_read_qgv_point_info(display, sp, point); } -static int icl_get_qgv_points(struct drm_i915_private *dev_priv, +static int icl_get_qgv_points(struct intel_display *display, struct intel_qgv_info *qi, bool is_y_tile) { - const struct dram_info *dram_info = &dev_priv->dram_info; + struct drm_i915_private *i915 = to_i915(display->drm); + const struct dram_info *dram_info = &i915->dram_info; int i, ret; qi->num_points = dram_info->num_qgv_points; qi->num_psf_points = dram_info->num_psf_gv_points; - if (DISPLAY_VER(dev_priv) >= 14) { + if (DISPLAY_VER(display) >= 14) { switch (dram_info->type) { case INTEL_DRAM_DDR4: qi->t_bl = 4; @@ -250,7 +256,7 @@ static int icl_get_qgv_points(struct drm_i915_private *dev_priv, MISSING_CASE(dram_info->type); return -EINVAL; } - } else if (DISPLAY_VER(dev_priv) >= 12) { + } else if (DISPLAY_VER(display) >= 12) { switch (dram_info->type) { case INTEL_DRAM_DDR4: qi->t_bl = is_y_tile ? 8 : 4; @@ -265,7 +271,7 @@ static int icl_get_qgv_points(struct drm_i915_private *dev_priv, qi->deinterleave = is_y_tile ? 1 : 2; break; case INTEL_DRAM_LPDDR4: - if (IS_ROCKETLAKE(dev_priv)) { + if (display->platform.rocketlake) { qi->t_bl = 8; qi->max_numchannels = 4; qi->channel_width = 32; @@ -284,39 +290,39 @@ static int icl_get_qgv_points(struct drm_i915_private *dev_priv, qi->max_numchannels = 1; break; } - } else if (DISPLAY_VER(dev_priv) == 11) { - qi->t_bl = dev_priv->dram_info.type == INTEL_DRAM_DDR4 ? 4 : 8; + } else if (DISPLAY_VER(display) == 11) { + qi->t_bl = dram_info->type == INTEL_DRAM_DDR4 ? 4 : 8; qi->max_numchannels = 1; } - if (drm_WARN_ON(&dev_priv->drm, + if (drm_WARN_ON(display->drm, qi->num_points > ARRAY_SIZE(qi->points))) qi->num_points = ARRAY_SIZE(qi->points); for (i = 0; i < qi->num_points; i++) { struct intel_qgv_point *sp = &qi->points[i]; - ret = intel_read_qgv_point_info(dev_priv, sp, i); + ret = intel_read_qgv_point_info(display, sp, i); if (ret) { - drm_dbg_kms(&dev_priv->drm, "Could not read QGV %d info\n", i); + drm_dbg_kms(display->drm, "Could not read QGV %d info\n", i); return ret; } - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "QGV %d: DCLK=%d tRP=%d tRDPRE=%d tRAS=%d tRCD=%d tRC=%d\n", i, sp->dclk, sp->t_rp, sp->t_rdpre, sp->t_ras, sp->t_rcd, sp->t_rc); } if (qi->num_psf_points > 0) { - ret = adls_pcode_read_psf_gv_point_info(dev_priv, qi->psf_points); + ret = adls_pcode_read_psf_gv_point_info(display, qi->psf_points); if (ret) { - drm_err(&dev_priv->drm, "Failed to read PSF point data; PSF points will not be considered in bandwidth calculations.\n"); + drm_err(display->drm, "Failed to read PSF point data; PSF points will not be considered in bandwidth calculations.\n"); qi->num_psf_points = 0; } for (i = 0; i < qi->num_psf_points; i++) - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "PSF GV %d: CLK=%d \n", i, qi->psf_points[i].clk); } @@ -398,20 +404,21 @@ static const struct intel_sa_info xe2_hpd_sa_info = { /* Other values not used by simplified algorithm */ }; -static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel_sa_info *sa) +static int icl_get_bw_info(struct intel_display *display, const struct intel_sa_info *sa) { + struct drm_i915_private *i915 = to_i915(display->drm); struct intel_qgv_info qi = {}; bool is_y_tile = true; /* assume y tile may be used */ - int num_channels = max_t(u8, 1, dev_priv->dram_info.num_channels); + int num_channels = max_t(u8, 1, i915->dram_info.num_channels); int ipqdepth, ipqdepthpch = 16; int dclk_max; int maxdebw; - int num_groups = ARRAY_SIZE(dev_priv->display.bw.max); + int num_groups = ARRAY_SIZE(display->bw.max); int i, ret; - ret = icl_get_qgv_points(dev_priv, &qi, is_y_tile); + ret = icl_get_qgv_points(display, &qi, is_y_tile); if (ret) { - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "Failed to get memory subsystem information, ignoring bandwidth limits"); return ret; } @@ -422,7 +429,7 @@ static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel qi.deinterleave = DIV_ROUND_UP(num_channels, is_y_tile ? 4 : 2); for (i = 0; i < num_groups; i++) { - struct intel_bw_info *bi = &dev_priv->display.bw.max[i]; + struct intel_bw_info *bi = &display->bw.max[i]; int clpchgroup; int j; @@ -449,7 +456,7 @@ static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel bi->deratedbw[j] = min(maxdebw, bw * (100 - sa->derating) / 100); - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "BW%d / QGV %d: num_planes=%d deratedbw=%u\n", i, j, bi->num_planes, bi->deratedbw[j]); } @@ -460,44 +467,45 @@ static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel * as it will fail and pointless anyway. */ if (qi.num_points == 1) - dev_priv->display.sagv.status = I915_SAGV_NOT_CONTROLLED; + display->sagv.status = I915_SAGV_NOT_CONTROLLED; else - dev_priv->display.sagv.status = I915_SAGV_ENABLED; + display->sagv.status = I915_SAGV_ENABLED; return 0; } -static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel_sa_info *sa) +static int tgl_get_bw_info(struct intel_display *display, const struct intel_sa_info *sa) { + struct drm_i915_private *i915 = to_i915(display->drm); struct intel_qgv_info qi = {}; - const struct dram_info *dram_info = &dev_priv->dram_info; + const struct dram_info *dram_info = &i915->dram_info; bool is_y_tile = true; /* assume y tile may be used */ - int num_channels = max_t(u8, 1, dev_priv->dram_info.num_channels); + int num_channels = max_t(u8, 1, dram_info->num_channels); int ipqdepth, ipqdepthpch = 16; int dclk_max; int maxdebw, peakbw; int clperchgroup; - int num_groups = ARRAY_SIZE(dev_priv->display.bw.max); + int num_groups = ARRAY_SIZE(display->bw.max); int i, ret; - ret = icl_get_qgv_points(dev_priv, &qi, is_y_tile); + ret = icl_get_qgv_points(display, &qi, is_y_tile); if (ret) { - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "Failed to get memory subsystem information, ignoring bandwidth limits"); return ret; } - if (DISPLAY_VER(dev_priv) < 14 && + if (DISPLAY_VER(display) < 14 && (dram_info->type == INTEL_DRAM_LPDDR4 || dram_info->type == INTEL_DRAM_LPDDR5)) num_channels *= 2; qi.deinterleave = qi.deinterleave ? : DIV_ROUND_UP(num_channels, is_y_tile ? 4 : 2); - if (num_channels < qi.max_numchannels && DISPLAY_VER(dev_priv) >= 12) + if (num_channels < qi.max_numchannels && DISPLAY_VER(display) >= 12) qi.deinterleave = max(DIV_ROUND_UP(qi.deinterleave, 2), 1); - if (DISPLAY_VER(dev_priv) >= 12 && num_channels > qi.max_numchannels) - drm_warn(&dev_priv->drm, "Number of channels exceeds max number of channels."); + if (DISPLAY_VER(display) >= 12 && num_channels > qi.max_numchannels) + drm_warn(display->drm, "Number of channels exceeds max number of channels."); if (qi.max_numchannels != 0) num_channels = min_t(u8, num_channels, qi.max_numchannels); @@ -514,7 +522,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel clperchgroup = 4 * DIV_ROUND_UP(8, num_channels) * qi.deinterleave; for (i = 0; i < num_groups; i++) { - struct intel_bw_info *bi = &dev_priv->display.bw.max[i]; + struct intel_bw_info *bi = &display->bw.max[i]; struct intel_bw_info *bi_next; int clpchgroup; int j; @@ -522,7 +530,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel clpchgroup = (sa->deburst * qi.deinterleave / num_channels) << i; if (i < num_groups - 1) { - bi_next = &dev_priv->display.bw.max[i + 1]; + bi_next = &display->bw.max[i + 1]; if (clpchgroup < clperchgroup) bi_next->num_planes = (ipqdepth - clpchgroup) / @@ -554,7 +562,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel num_channels * qi.channel_width, 8); - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "BW%d / QGV %d: num_planes=%d deratedbw=%u peakbw: %u\n", i, j, bi->num_planes, bi->deratedbw[j], bi->peakbw[j]); @@ -565,7 +573,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel bi->psf_bw[j] = adl_calc_psf_bw(sp->clk); - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "BW%d / PSF GV %d: num_planes=%d bw=%u\n", i, j, bi->num_planes, bi->psf_bw[j]); } @@ -577,17 +585,17 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel * as it will fail and pointless anyway. */ if (qi.num_points == 1) - dev_priv->display.sagv.status = I915_SAGV_NOT_CONTROLLED; + display->sagv.status = I915_SAGV_NOT_CONTROLLED; else - dev_priv->display.sagv.status = I915_SAGV_ENABLED; + display->sagv.status = I915_SAGV_ENABLED; return 0; } -static void dg2_get_bw_info(struct drm_i915_private *i915) +static void dg2_get_bw_info(struct intel_display *display) { - unsigned int deratedbw = IS_DG2_G11(i915) ? 38000 : 50000; - int num_groups = ARRAY_SIZE(i915->display.bw.max); + unsigned int deratedbw = display->platform.dg2_g11 ? 38000 : 50000; + int num_groups = ARRAY_SIZE(display->bw.max); int i; /* @@ -598,7 +606,7 @@ static void dg2_get_bw_info(struct drm_i915_private *i915) * whereas DG2-G11 platforms have 38 GB/s. */ for (i = 0; i < num_groups; i++) { - struct intel_bw_info *bi = &i915->display.bw.max[i]; + struct intel_bw_info *bi = &display->bw.max[i]; bi->num_planes = 1; /* Need only one dummy QGV point per group */ @@ -606,20 +614,21 @@ static void dg2_get_bw_info(struct drm_i915_private *i915) bi->deratedbw[0] = deratedbw; } - i915->display.sagv.status = I915_SAGV_NOT_CONTROLLED; + display->sagv.status = I915_SAGV_NOT_CONTROLLED; } -static int xe2_hpd_get_bw_info(struct drm_i915_private *i915, +static int xe2_hpd_get_bw_info(struct intel_display *display, const struct intel_sa_info *sa) { + struct drm_i915_private *i915 = to_i915(display->drm); struct intel_qgv_info qi = {}; int num_channels = i915->dram_info.num_channels; int peakbw, maxdebw; int ret, i; - ret = icl_get_qgv_points(i915, &qi, true); + ret = icl_get_qgv_points(display, &qi, true); if (ret) { - drm_dbg_kms(&i915->drm, + drm_dbg_kms(display->drm, "Failed to get memory subsystem information, ignoring bandwidth limits"); return ret; } @@ -631,33 +640,33 @@ static int xe2_hpd_get_bw_info(struct drm_i915_private *i915, const struct intel_qgv_point *point = &qi.points[i]; int bw = num_channels * (qi.channel_width / 8) * point->dclk; - i915->display.bw.max[0].deratedbw[i] = + display->bw.max[0].deratedbw[i] = min(maxdebw, (100 - sa->derating) * bw / 100); - i915->display.bw.max[0].peakbw[i] = bw; + display->bw.max[0].peakbw[i] = bw; - drm_dbg_kms(&i915->drm, "QGV %d: deratedbw=%u peakbw: %u\n", - i, i915->display.bw.max[0].deratedbw[i], - i915->display.bw.max[0].peakbw[i]); + drm_dbg_kms(display->drm, "QGV %d: deratedbw=%u peakbw: %u\n", + i, display->bw.max[0].deratedbw[i], + display->bw.max[0].peakbw[i]); } /* Bandwidth does not depend on # of planes; set all groups the same */ - i915->display.bw.max[0].num_planes = 1; - i915->display.bw.max[0].num_qgv_points = qi.num_points; - for (i = 1; i < ARRAY_SIZE(i915->display.bw.max); i++) - memcpy(&i915->display.bw.max[i], &i915->display.bw.max[0], - sizeof(i915->display.bw.max[0])); + display->bw.max[0].num_planes = 1; + display->bw.max[0].num_qgv_points = qi.num_points; + for (i = 1; i < ARRAY_SIZE(display->bw.max); i++) + memcpy(&display->bw.max[i], &display->bw.max[0], + sizeof(display->bw.max[0])); /* * Xe2_HPD should always have exactly two QGV points representing * battery and plugged-in operation. */ - drm_WARN_ON(&i915->drm, qi.num_points != 2); - i915->display.sagv.status = I915_SAGV_ENABLED; + drm_WARN_ON(display->drm, qi.num_points != 2); + display->sagv.status = I915_SAGV_ENABLED; return 0; } -static unsigned int icl_max_bw_index(struct drm_i915_private *dev_priv, +static unsigned int icl_max_bw_index(struct intel_display *display, int num_planes, int qgv_point) { int i; @@ -667,9 +676,9 @@ static unsigned int icl_max_bw_index(struct drm_i915_private *dev_priv, */ num_planes = max(1, num_planes); - for (i = 0; i < ARRAY_SIZE(dev_priv->display.bw.max); i++) { + for (i = 0; i < ARRAY_SIZE(display->bw.max); i++) { const struct intel_bw_info *bi = - &dev_priv->display.bw.max[i]; + &display->bw.max[i]; /* * Pcode will not expose all QGV points when @@ -685,7 +694,7 @@ static unsigned int icl_max_bw_index(struct drm_i915_private *dev_priv, return UINT_MAX; } -static unsigned int tgl_max_bw_index(struct drm_i915_private *dev_priv, +static unsigned int tgl_max_bw_index(struct intel_display *display, int num_planes, int qgv_point) { int i; @@ -695,9 +704,9 @@ static unsigned int tgl_max_bw_index(struct drm_i915_private *dev_priv, */ num_planes = max(1, num_planes); - for (i = ARRAY_SIZE(dev_priv->display.bw.max) - 1; i >= 0; i--) { + for (i = ARRAY_SIZE(display->bw.max) - 1; i >= 0; i--) { const struct intel_bw_info *bi = - &dev_priv->display.bw.max[i]; + &display->bw.max[i]; /* * Pcode will not expose all QGV points when @@ -713,52 +722,54 @@ static unsigned int tgl_max_bw_index(struct drm_i915_private *dev_priv, return 0; } -static unsigned int adl_psf_bw(struct drm_i915_private *dev_priv, +static unsigned int adl_psf_bw(struct intel_display *display, int psf_gv_point) { const struct intel_bw_info *bi = - &dev_priv->display.bw.max[0]; + &display->bw.max[0]; return bi->psf_bw[psf_gv_point]; } -static unsigned int icl_qgv_bw(struct drm_i915_private *i915, +static unsigned int icl_qgv_bw(struct intel_display *display, int num_active_planes, int qgv_point) { unsigned int idx; - if (DISPLAY_VER(i915) >= 12) - idx = tgl_max_bw_index(i915, num_active_planes, qgv_point); + if (DISPLAY_VER(display) >= 12) + idx = tgl_max_bw_index(display, num_active_planes, qgv_point); else - idx = icl_max_bw_index(i915, num_active_planes, qgv_point); + idx = icl_max_bw_index(display, num_active_planes, qgv_point); - if (idx >= ARRAY_SIZE(i915->display.bw.max)) + if (idx >= ARRAY_SIZE(display->bw.max)) return 0; - return i915->display.bw.max[idx].deratedbw[qgv_point]; + return display->bw.max[idx].deratedbw[qgv_point]; } void intel_bw_init_hw(struct drm_i915_private *dev_priv) { - if (!HAS_DISPLAY(dev_priv)) + struct intel_display *display = &dev_priv->display; + + if (!HAS_DISPLAY(display)) return; - if (DISPLAY_VERx100(dev_priv) >= 1401 && IS_DGFX(dev_priv)) - xe2_hpd_get_bw_info(dev_priv, &xe2_hpd_sa_info); - else if (DISPLAY_VER(dev_priv) >= 14) - tgl_get_bw_info(dev_priv, &mtl_sa_info); - else if (IS_DG2(dev_priv)) - dg2_get_bw_info(dev_priv); - else if (IS_ALDERLAKE_P(dev_priv)) - tgl_get_bw_info(dev_priv, &adlp_sa_info); - else if (IS_ALDERLAKE_S(dev_priv)) - tgl_get_bw_info(dev_priv, &adls_sa_info); - else if (IS_ROCKETLAKE(dev_priv)) - tgl_get_bw_info(dev_priv, &rkl_sa_info); - else if (DISPLAY_VER(dev_priv) == 12) - tgl_get_bw_info(dev_priv, &tgl_sa_info); - else if (DISPLAY_VER(dev_priv) == 11) - icl_get_bw_info(dev_priv, &icl_sa_info); + if (DISPLAY_VERx100(display) >= 1401 && display->platform.dgfx) + xe2_hpd_get_bw_info(display, &xe2_hpd_sa_info); + else if (DISPLAY_VER(display) >= 14) + tgl_get_bw_info(display, &mtl_sa_info); + else if (display->platform.dg2) + dg2_get_bw_info(display); + else if (display->platform.alderlake_p) + tgl_get_bw_info(display, &adlp_sa_info); + else if (display->platform.alderlake_s) + tgl_get_bw_info(display, &adls_sa_info); + else if (display->platform.rocketlake) + tgl_get_bw_info(display, &rkl_sa_info); + else if (DISPLAY_VER(display) == 12) + tgl_get_bw_info(display, &tgl_sa_info); + else if (DISPLAY_VER(display) == 11) + icl_get_bw_info(display, &icl_sa_info); } static unsigned int intel_bw_crtc_num_active_planes(const struct intel_crtc_state *crtc_state) @@ -772,8 +783,8 @@ static unsigned int intel_bw_crtc_num_active_planes(const struct intel_crtc_stat static unsigned int intel_bw_crtc_data_rate(const struct intel_crtc_state *crtc_state) { + struct intel_display *display = to_intel_display(crtc_state); struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); unsigned int data_rate = 0; enum plane_id plane_id; @@ -787,7 +798,7 @@ static unsigned int intel_bw_crtc_data_rate(const struct intel_crtc_state *crtc_ data_rate += crtc_state->data_rate[plane_id]; - if (DISPLAY_VER(i915) < 11) + if (DISPLAY_VER(display) < 11) data_rate += crtc_state->data_rate_y[plane_id]; } @@ -797,37 +808,37 @@ static unsigned int intel_bw_crtc_data_rate(const struct intel_crtc_state *crtc_ /* "Maximum Pipe Read Bandwidth" */ static int intel_bw_crtc_min_cdclk(const struct intel_crtc_state *crtc_state) { - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); + struct intel_display *display = to_intel_display(crtc_state); - if (DISPLAY_VER(i915) < 12) + if (DISPLAY_VER(display) < 12) return 0; return DIV_ROUND_UP_ULL(mul_u32_u32(intel_bw_crtc_data_rate(crtc_state), 10), 512); } -static unsigned int intel_bw_num_active_planes(struct drm_i915_private *dev_priv, +static unsigned int intel_bw_num_active_planes(struct intel_display *display, const struct intel_bw_state *bw_state) { unsigned int num_active_planes = 0; enum pipe pipe; - for_each_pipe(dev_priv, pipe) + for_each_pipe(display, pipe) num_active_planes += bw_state->num_active_planes[pipe]; return num_active_planes; } -static unsigned int intel_bw_data_rate(struct drm_i915_private *dev_priv, +static unsigned int intel_bw_data_rate(struct intel_display *display, const struct intel_bw_state *bw_state) { + struct drm_i915_private *i915 = to_i915(display->drm); unsigned int data_rate = 0; enum pipe pipe; - for_each_pipe(dev_priv, pipe) + for_each_pipe(display, pipe) data_rate += bw_state->data_rate[pipe]; - if (DISPLAY_VER(dev_priv) >= 13 && i915_vtd_active(dev_priv)) + if (DISPLAY_VER(display) >= 13 && i915_vtd_active(i915)) data_rate = DIV_ROUND_UP(data_rate * 105, 100); return data_rate; @@ -836,10 +847,10 @@ static unsigned int intel_bw_data_rate(struct drm_i915_private *dev_priv, struct intel_bw_state * intel_atomic_get_old_bw_state(struct intel_atomic_state *state) { - struct drm_i915_private *dev_priv = to_i915(state->base.dev); + struct intel_display *display = to_intel_display(state); struct intel_global_state *bw_state; - bw_state = intel_atomic_get_old_global_obj_state(state, &dev_priv->display.bw.obj); + bw_state = intel_atomic_get_old_global_obj_state(state, &display->bw.obj); return to_intel_bw_state(bw_state); } @@ -847,10 +858,10 @@ intel_atomic_get_old_bw_state(struct intel_atomic_state *state) struct intel_bw_state * intel_atomic_get_new_bw_state(struct intel_atomic_state *state) { - struct drm_i915_private *dev_priv = to_i915(state->base.dev); + struct intel_display *display = to_intel_display(state); struct intel_global_state *bw_state; - bw_state = intel_atomic_get_new_global_obj_state(state, &dev_priv->display.bw.obj); + bw_state = intel_atomic_get_new_global_obj_state(state, &display->bw.obj); return to_intel_bw_state(bw_state); } @@ -858,27 +869,27 @@ intel_atomic_get_new_bw_state(struct intel_atomic_state *state) struct intel_bw_state * intel_atomic_get_bw_state(struct intel_atomic_state *state) { - struct drm_i915_private *dev_priv = to_i915(state->base.dev); + struct intel_display *display = to_intel_display(state); struct intel_global_state *bw_state; - bw_state = intel_atomic_get_global_obj_state(state, &dev_priv->display.bw.obj); + bw_state = intel_atomic_get_global_obj_state(state, &display->bw.obj); if (IS_ERR(bw_state)) return ERR_CAST(bw_state); return to_intel_bw_state(bw_state); } -static unsigned int icl_max_bw_qgv_point_mask(struct drm_i915_private *i915, +static unsigned int icl_max_bw_qgv_point_mask(struct intel_display *display, int num_active_planes) { - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; unsigned int max_bw_point = 0; unsigned int max_bw = 0; int i; for (i = 0; i < num_qgv_points; i++) { unsigned int max_data_rate = - icl_qgv_bw(i915, num_active_planes, i); + icl_qgv_bw(display, num_active_planes, i); /* * We need to know which qgv point gives us @@ -897,23 +908,23 @@ static unsigned int icl_max_bw_qgv_point_mask(struct drm_i915_private *i915, return max_bw_point; } -static u16 icl_prepare_qgv_points_mask(struct drm_i915_private *i915, +static u16 icl_prepare_qgv_points_mask(struct intel_display *display, unsigned int qgv_points, unsigned int psf_points) { return ~(ICL_PCODE_REQ_QGV_PT(qgv_points) | - ADLS_PCODE_REQ_PSF_PT(psf_points)) & icl_qgv_points_mask(i915); + ADLS_PCODE_REQ_PSF_PT(psf_points)) & icl_qgv_points_mask(display); } -static unsigned int icl_max_bw_psf_gv_point_mask(struct drm_i915_private *i915) +static unsigned int icl_max_bw_psf_gv_point_mask(struct intel_display *display) { - unsigned int num_psf_gv_points = i915->display.bw.max[0].num_psf_gv_points; + unsigned int num_psf_gv_points = display->bw.max[0].num_psf_gv_points; unsigned int max_bw_point_mask = 0; unsigned int max_bw = 0; int i; for (i = 0; i < num_psf_gv_points; i++) { - unsigned int max_data_rate = adl_psf_bw(i915, i); + unsigned int max_data_rate = adl_psf_bw(display, i); if (max_data_rate > max_bw) { max_bw_point_mask = BIT(i); @@ -926,29 +937,31 @@ static unsigned int icl_max_bw_psf_gv_point_mask(struct drm_i915_private *i915) return max_bw_point_mask; } -static void icl_force_disable_sagv(struct drm_i915_private *i915, +static void icl_force_disable_sagv(struct intel_display *display, struct intel_bw_state *bw_state) { - unsigned int qgv_points = icl_max_bw_qgv_point_mask(i915, 0); - unsigned int psf_points = icl_max_bw_psf_gv_point_mask(i915); + struct drm_i915_private *i915 = to_i915(display->drm); + unsigned int qgv_points = icl_max_bw_qgv_point_mask(display, 0); + unsigned int psf_points = icl_max_bw_psf_gv_point_mask(display); - bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(i915, + bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(display, qgv_points, psf_points); - drm_dbg_kms(&i915->drm, "Forcing SAGV disable: mask 0x%x\n", + drm_dbg_kms(display->drm, "Forcing SAGV disable: mask 0x%x\n", bw_state->qgv_points_mask); icl_pcode_restrict_qgv_points(i915, bw_state->qgv_points_mask); } -static int mtl_find_qgv_points(struct drm_i915_private *i915, +static int mtl_find_qgv_points(struct intel_display *display, unsigned int data_rate, unsigned int num_active_planes, struct intel_bw_state *new_bw_state) { + struct drm_i915_private *i915 = to_i915(display->drm); unsigned int best_rate = UINT_MAX; - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; unsigned int qgv_peak_bw = 0; int i; int ret; @@ -964,7 +977,7 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, */ if (!intel_can_enable_sagv(i915, new_bw_state)) { new_bw_state->qgv_point_peakbw = U16_MAX; - drm_dbg_kms(&i915->drm, "No SAGV, use UINT_MAX as peak bw."); + drm_dbg_kms(display->drm, "No SAGV, use UINT_MAX as peak bw."); return 0; } @@ -974,27 +987,27 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, */ for (i = 0; i < num_qgv_points; i++) { unsigned int bw_index = - tgl_max_bw_index(i915, num_active_planes, i); + tgl_max_bw_index(display, num_active_planes, i); unsigned int max_data_rate; - if (bw_index >= ARRAY_SIZE(i915->display.bw.max)) + if (bw_index >= ARRAY_SIZE(display->bw.max)) continue; - max_data_rate = i915->display.bw.max[bw_index].deratedbw[i]; + max_data_rate = display->bw.max[bw_index].deratedbw[i]; if (max_data_rate < data_rate) continue; if (max_data_rate - data_rate < best_rate) { best_rate = max_data_rate - data_rate; - qgv_peak_bw = i915->display.bw.max[bw_index].peakbw[i]; + qgv_peak_bw = display->bw.max[bw_index].peakbw[i]; } - drm_dbg_kms(&i915->drm, "QGV point %d: max bw %d required %d qgv_peak_bw: %d\n", + drm_dbg_kms(display->drm, "QGV point %d: max bw %d required %d qgv_peak_bw: %d\n", i, max_data_rate, data_rate, qgv_peak_bw); } - drm_dbg_kms(&i915->drm, "Matching peaks QGV bw: %d for required data rate: %d\n", + drm_dbg_kms(display->drm, "Matching peaks QGV bw: %d for required data rate: %d\n", qgv_peak_bw, data_rate); /* @@ -1002,7 +1015,7 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, * satisfying the required data rate is found */ if (qgv_peak_bw == 0) { - drm_dbg_kms(&i915->drm, "No QGV points for bw %d for display configuration(%d active planes).\n", + drm_dbg_kms(display->drm, "No QGV points for bw %d for display configuration(%d active planes).\n", data_rate, num_active_planes); return -EINVAL; } @@ -1013,14 +1026,15 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, return 0; } -static int icl_find_qgv_points(struct drm_i915_private *i915, +static int icl_find_qgv_points(struct intel_display *display, unsigned int data_rate, unsigned int num_active_planes, const struct intel_bw_state *old_bw_state, struct intel_bw_state *new_bw_state) { - unsigned int num_psf_gv_points = i915->display.bw.max[0].num_psf_gv_points; - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; + struct drm_i915_private *i915 = to_i915(display->drm); + unsigned int num_psf_gv_points = display->bw.max[0].num_psf_gv_points; + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; u16 psf_points = 0; u16 qgv_points = 0; int i; @@ -1031,22 +1045,22 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, return ret; for (i = 0; i < num_qgv_points; i++) { - unsigned int max_data_rate = icl_qgv_bw(i915, + unsigned int max_data_rate = icl_qgv_bw(display, num_active_planes, i); if (max_data_rate >= data_rate) qgv_points |= BIT(i); - drm_dbg_kms(&i915->drm, "QGV point %d: max bw %d required %d\n", + drm_dbg_kms(display->drm, "QGV point %d: max bw %d required %d\n", i, max_data_rate, data_rate); } for (i = 0; i < num_psf_gv_points; i++) { - unsigned int max_data_rate = adl_psf_bw(i915, i); + unsigned int max_data_rate = adl_psf_bw(display, i); if (max_data_rate >= data_rate) psf_points |= BIT(i); - drm_dbg_kms(&i915->drm, "PSF GV point %d: max bw %d" + drm_dbg_kms(display->drm, "PSF GV point %d: max bw %d" " required %d\n", i, max_data_rate, data_rate); } @@ -1057,14 +1071,14 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, * reasons. */ if (qgv_points == 0) { - drm_dbg_kms(&i915->drm, "No QGV points provide sufficient memory" + drm_dbg_kms(display->drm, "No QGV points provide sufficient memory" " bandwidth %d for display configuration(%d active planes).\n", data_rate, num_active_planes); return -EINVAL; } if (num_psf_gv_points > 0 && psf_points == 0) { - drm_dbg_kms(&i915->drm, "No PSF GV points provide sufficient memory" + drm_dbg_kms(display->drm, "No PSF GV points provide sufficient memory" " bandwidth %d for display configuration(%d active planes).\n", data_rate, num_active_planes); return -EINVAL; @@ -1076,8 +1090,8 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, * cause. */ if (!intel_can_enable_sagv(i915, new_bw_state)) { - qgv_points = icl_max_bw_qgv_point_mask(i915, num_active_planes); - drm_dbg_kms(&i915->drm, "No SAGV, using single QGV point mask 0x%x\n", + qgv_points = icl_max_bw_qgv_point_mask(display, num_active_planes); + drm_dbg_kms(display->drm, "No SAGV, using single QGV point mask 0x%x\n", qgv_points); } @@ -1085,7 +1099,7 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, * We store the ones which need to be masked as that is what PCode * actually accepts as a parameter. */ - new_bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(i915, + new_bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(display, qgv_points, psf_points); /* @@ -1101,38 +1115,38 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, return 0; } -static int intel_bw_check_qgv_points(struct drm_i915_private *i915, +static int intel_bw_check_qgv_points(struct intel_display *display, const struct intel_bw_state *old_bw_state, struct intel_bw_state *new_bw_state) { - unsigned int data_rate = intel_bw_data_rate(i915, new_bw_state); + unsigned int data_rate = intel_bw_data_rate(display, new_bw_state); unsigned int num_active_planes = - intel_bw_num_active_planes(i915, new_bw_state); + intel_bw_num_active_planes(display, new_bw_state); data_rate = DIV_ROUND_UP(data_rate, 1000); - if (DISPLAY_VER(i915) >= 14) - return mtl_find_qgv_points(i915, data_rate, num_active_planes, + if (DISPLAY_VER(display) >= 14) + return mtl_find_qgv_points(display, data_rate, num_active_planes, new_bw_state); else - return icl_find_qgv_points(i915, data_rate, num_active_planes, + return icl_find_qgv_points(display, data_rate, num_active_planes, old_bw_state, new_bw_state); } -static bool intel_bw_state_changed(struct drm_i915_private *i915, +static bool intel_bw_state_changed(struct intel_display *display, const struct intel_bw_state *old_bw_state, const struct intel_bw_state *new_bw_state) { enum pipe pipe; - for_each_pipe(i915, pipe) { + for_each_pipe(display, pipe) { const struct intel_dbuf_bw *old_crtc_bw = &old_bw_state->dbuf_bw[pipe]; const struct intel_dbuf_bw *new_crtc_bw = &new_bw_state->dbuf_bw[pipe]; enum dbuf_slice slice; - for_each_dbuf_slice(i915, slice) { + for_each_dbuf_slice(display, slice) { if (old_crtc_bw->max_bw[slice] != new_crtc_bw->max_bw[slice] || old_crtc_bw->active_planes[slice] != new_crtc_bw->active_planes[slice]) return true; @@ -1151,7 +1165,8 @@ static void skl_plane_calc_dbuf_bw(struct intel_bw_state *bw_state, const struct skl_ddb_entry *ddb, unsigned int data_rate) { - struct drm_i915_private *i915 = to_i915(crtc->base.dev); + struct intel_display *display = to_intel_display(crtc); + struct drm_i915_private *i915 = to_i915(display->drm); struct intel_dbuf_bw *crtc_bw = &bw_state->dbuf_bw[crtc->pipe]; unsigned int dbuf_mask = skl_ddb_dbuf_slice_mask(i915, ddb); enum dbuf_slice slice; @@ -1160,7 +1175,7 @@ static void skl_plane_calc_dbuf_bw(struct intel_bw_state *bw_state, * The arbiter can only really guarantee an * equal share of the total bw to each plane. */ - for_each_dbuf_slice_in_mask(i915, slice, dbuf_mask) { + for_each_dbuf_slice_in_mask(display, slice, dbuf_mask) { crtc_bw->max_bw[slice] = max(crtc_bw->max_bw[slice], data_rate); crtc_bw->active_planes[slice] |= BIT(plane_id); } @@ -1169,8 +1184,8 @@ static void skl_plane_calc_dbuf_bw(struct intel_bw_state *bw_state, static void skl_crtc_calc_dbuf_bw(struct intel_bw_state *bw_state, const struct intel_crtc_state *crtc_state) { + struct intel_display *display = to_intel_display(crtc_state); struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); struct intel_dbuf_bw *crtc_bw = &bw_state->dbuf_bw[crtc->pipe]; enum plane_id plane_id; @@ -1191,7 +1206,7 @@ static void skl_crtc_calc_dbuf_bw(struct intel_bw_state *bw_state, &crtc_state->wm.skl.plane_ddb[plane_id], crtc_state->data_rate[plane_id]); - if (DISPLAY_VER(i915) < 11) + if (DISPLAY_VER(display) < 11) skl_plane_calc_dbuf_bw(bw_state, crtc, plane_id, &crtc_state->wm.skl.plane_ddb_y[plane_id], crtc_state->data_rate[plane_id]); @@ -1200,13 +1215,13 @@ static void skl_crtc_calc_dbuf_bw(struct intel_bw_state *bw_state, /* "Maximum Data Buffer Bandwidth" */ static int -intel_bw_dbuf_min_cdclk(struct drm_i915_private *i915, +intel_bw_dbuf_min_cdclk(struct intel_display *display, const struct intel_bw_state *bw_state) { unsigned int total_max_bw = 0; enum dbuf_slice slice; - for_each_dbuf_slice(i915, slice) { + for_each_dbuf_slice(display, slice) { int num_active_planes = 0; unsigned int max_bw = 0; enum pipe pipe; @@ -1215,7 +1230,7 @@ intel_bw_dbuf_min_cdclk(struct drm_i915_private *i915, * The arbiter can only really guarantee an * equal share of the total bw to each plane. */ - for_each_pipe(i915, pipe) { + for_each_pipe(display, pipe) { const struct intel_dbuf_bw *crtc_bw = &bw_state->dbuf_bw[pipe]; max_bw = max(crtc_bw->max_bw[slice], max_bw); @@ -1232,12 +1247,13 @@ intel_bw_dbuf_min_cdclk(struct drm_i915_private *i915, int intel_bw_min_cdclk(struct drm_i915_private *i915, const struct intel_bw_state *bw_state) { + struct intel_display *display = &i915->display; enum pipe pipe; int min_cdclk; - min_cdclk = intel_bw_dbuf_min_cdclk(i915, bw_state); + min_cdclk = intel_bw_dbuf_min_cdclk(display, bw_state); - for_each_pipe(i915, pipe) + for_each_pipe(display, pipe) min_cdclk = max(min_cdclk, bw_state->min_cdclk[pipe]); return min_cdclk; @@ -1246,6 +1262,7 @@ int intel_bw_min_cdclk(struct drm_i915_private *i915, int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, bool *need_cdclk_calc) { + struct intel_display *display = to_intel_display(state); struct drm_i915_private *dev_priv = to_i915(state->base.dev); struct intel_bw_state *new_bw_state = NULL; const struct intel_bw_state *old_bw_state = NULL; @@ -1255,7 +1272,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, struct intel_crtc *crtc; int i; - if (DISPLAY_VER(dev_priv) < 9) + if (DISPLAY_VER(display) < 9) return 0; for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) { @@ -1274,7 +1291,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, if (!old_bw_state) return 0; - if (intel_bw_state_changed(dev_priv, old_bw_state, new_bw_state)) { + if (intel_bw_state_changed(display, old_bw_state, new_bw_state)) { int ret = intel_atomic_lock_global_state(&new_bw_state->base); if (ret) return ret; @@ -1309,7 +1326,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, if (new_min_cdclk <= cdclk_state->bw_min_cdclk) return 0; - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "new bandwidth min cdclk (%d kHz) > old min cdclk (%d kHz)\n", new_min_cdclk, cdclk_state->bw_min_cdclk); *need_cdclk_calc = true; @@ -1319,7 +1336,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, static int intel_bw_check_data_rate(struct intel_atomic_state *state, bool *changed) { - struct drm_i915_private *i915 = to_i915(state->base.dev); + struct intel_display *display = to_intel_display(state); const struct intel_crtc_state *new_crtc_state, *old_crtc_state; struct intel_crtc *crtc; int i; @@ -1353,7 +1370,7 @@ static int intel_bw_check_data_rate(struct intel_atomic_state *state, bool *chan *changed = true; - drm_dbg_kms(&i915->drm, + drm_dbg_kms(display->drm, "[CRTC:%d:%s] data rate %u num active planes %u\n", crtc->base.base.id, crtc->base.name, new_bw_state->data_rate[crtc->pipe], @@ -1365,14 +1382,15 @@ static int intel_bw_check_data_rate(struct intel_atomic_state *state, bool *chan int intel_bw_atomic_check(struct intel_atomic_state *state) { + struct intel_display *display = to_intel_display(state); + struct drm_i915_private *i915 = to_i915(display->drm); bool changed = false; - struct drm_i915_private *i915 = to_i915(state->base.dev); struct intel_bw_state *new_bw_state; const struct intel_bw_state *old_bw_state; int ret; /* FIXME earlier gens need some checks too */ - if (DISPLAY_VER(i915) < 11) + if (DISPLAY_VER(display) < 11) return 0; ret = intel_bw_check_data_rate(state, &changed); @@ -1395,7 +1413,7 @@ int intel_bw_atomic_check(struct intel_atomic_state *state) if (!changed) return 0; - ret = intel_bw_check_qgv_points(i915, old_bw_state, new_bw_state); + ret = intel_bw_check_qgv_points(display, old_bw_state, new_bw_state); if (ret) return ret; @@ -1407,8 +1425,8 @@ int intel_bw_atomic_check(struct intel_atomic_state *state) static void intel_bw_crtc_update(struct intel_bw_state *bw_state, const struct intel_crtc_state *crtc_state) { + struct intel_display *display = to_intel_display(crtc_state); struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); - struct drm_i915_private *i915 = to_i915(crtc->base.dev); bw_state->data_rate[crtc->pipe] = intel_bw_crtc_data_rate(crtc_state); @@ -1416,7 +1434,7 @@ static void intel_bw_crtc_update(struct intel_bw_state *bw_state, intel_bw_crtc_num_active_planes(crtc_state); bw_state->force_check_qgv = true; - drm_dbg_kms(&i915->drm, "pipe %c data rate %u num active planes %u\n", + drm_dbg_kms(display->drm, "pipe %c data rate %u num active planes %u\n", pipe_name(crtc->pipe), bw_state->data_rate[crtc->pipe], bw_state->num_active_planes[crtc->pipe]); @@ -1499,8 +1517,8 @@ int intel_bw_init(struct drm_i915_private *i915) * Limit this only if we have SAGV. And for Display version 14 onwards * sagv is handled though pmdemand requests */ - if (intel_has_sagv(i915) && IS_DISPLAY_VER(i915, 11, 13)) - icl_force_disable_sagv(i915, state); + if (intel_has_sagv(i915) && IS_DISPLAY_VER(display, 11, 13)) + icl_force_disable_sagv(display, state); return 0; } -- 2.48.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display 2025-03-07 19:25 ` [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display Gustavo Sousa @ 2025-03-10 16:47 ` Ville Syrjälä 2025-03-10 19:00 ` Gustavo Sousa 0 siblings, 1 reply; 14+ messages in thread From: Ville Syrjälä @ 2025-03-10 16:47 UTC (permalink / raw) To: Gustavo Sousa; +Cc: intel-gfx, intel-xe, Matt Roper On Fri, Mar 07, 2025 at 04:25:11PM -0300, Gustavo Sousa wrote: > Update intel_bw.c internally use intel_display. Conversion of the public > interface will come as a follow-up. > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> > --- > drivers/gpu/drm/i915/display/intel_bw.c | 416 +++++++++++++++++--------------- > 1 file changed, 217 insertions(+), 199 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c > index 048be287224774110d94fe2944daa580d8dc20a6..d71dc796f1793f546fe04146e5987a9be56bae9b 100644 > --- a/drivers/gpu/drm/i915/display/intel_bw.c > +++ b/drivers/gpu/drm/i915/display/intel_bw.c > @@ -11,6 +11,7 @@ > #include "intel_atomic.h" > #include "intel_bw.h" > #include "intel_cdclk.h" > +#include "intel_de.h" > #include "intel_display_core.h" > #include "intel_display_types.h" > #include "skl_watermark.h" > @@ -39,14 +40,14 @@ struct intel_qgv_info { > u8 deinterleave; > }; > > -static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, > +static int dg1_mchbar_read_qgv_point_info(struct intel_display *display, > struct intel_qgv_point *sp, > int point) > { > u32 dclk_ratio, dclk_reference; > u32 val; > > - val = intel_uncore_read(&dev_priv->uncore, SA_PERF_STATUS_0_0_0_MCHBAR_PC); > + val = intel_de_read(display, SA_PERF_STATUS_0_0_0_MCHBAR_PC); Not entirely convinced we want to start using intel_de_*() on mchbar registers. Apart from that the rest looks fine. > dclk_ratio = REG_FIELD_GET(DG1_QCLK_RATIO_MASK, val); > if (val & DG1_QCLK_REFERENCE) > dclk_reference = 6; /* 6 * 16.666 MHz = 100 MHz */ > @@ -54,18 +55,18 @@ static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, > dclk_reference = 8; /* 8 * 16.666 MHz = 133 MHz */ > sp->dclk = DIV_ROUND_UP((16667 * dclk_ratio * dclk_reference) + 500, 1000); > > - val = intel_uncore_read(&dev_priv->uncore, SKL_MC_BIOS_DATA_0_0_0_MCHBAR_PCU); > + val = intel_de_read(display, SKL_MC_BIOS_DATA_0_0_0_MCHBAR_PCU); > if (val & DG1_GEAR_TYPE) > sp->dclk *= 2; > > if (sp->dclk == 0) > return -EINVAL; > > - val = intel_uncore_read(&dev_priv->uncore, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR); > + val = intel_de_read(display, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR); > sp->t_rp = REG_FIELD_GET(DG1_DRAM_T_RP_MASK, val); > sp->t_rdpre = REG_FIELD_GET(DG1_DRAM_T_RDPRE_MASK, val); > > - val = intel_uncore_read(&dev_priv->uncore, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR_HIGH); > + val = intel_de_read(display, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR_HIGH); > sp->t_rcd = REG_FIELD_GET(DG1_DRAM_T_RCD_MASK, val); > sp->t_ras = REG_FIELD_GET(DG1_DRAM_T_RAS_MASK, val); > > @@ -74,22 +75,23 @@ static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, > return 0; > } > > -static int icl_pcode_read_qgv_point_info(struct drm_i915_private *dev_priv, > +static int icl_pcode_read_qgv_point_info(struct intel_display *display, > struct intel_qgv_point *sp, > int point) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > u32 val = 0, val2 = 0; > u16 dclk; > int ret; > > - ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | > + ret = snb_pcode_read(&i915->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | > ICL_PCODE_MEM_SS_READ_QGV_POINT_INFO(point), > &val, &val2); > if (ret) > return ret; > > dclk = val & 0xffff; > - sp->dclk = DIV_ROUND_UP((16667 * dclk) + (DISPLAY_VER(dev_priv) >= 12 ? 500 : 0), > + sp->dclk = DIV_ROUND_UP((16667 * dclk) + (DISPLAY_VER(display) >= 12 ? 500 : 0), > 1000); > sp->t_rp = (val & 0xff0000) >> 16; > sp->t_rcd = (val & 0xff000000) >> 24; > @@ -102,14 +104,15 @@ static int icl_pcode_read_qgv_point_info(struct drm_i915_private *dev_priv, > return 0; > } > > -static int adls_pcode_read_psf_gv_point_info(struct drm_i915_private *dev_priv, > - struct intel_psf_gv_point *points) > +static int adls_pcode_read_psf_gv_point_info(struct intel_display *display, > + struct intel_psf_gv_point *points) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > u32 val = 0; > int ret; > int i; > > - ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | > + ret = snb_pcode_read(&i915->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | > ADL_PCODE_MEM_SS_READ_PSF_GV_INFO, &val, NULL); > if (ret) > return ret; > @@ -122,10 +125,10 @@ static int adls_pcode_read_psf_gv_point_info(struct drm_i915_private *dev_priv, > return 0; > } > > -static u16 icl_qgv_points_mask(struct drm_i915_private *i915) > +static u16 icl_qgv_points_mask(struct intel_display *display) > { > - unsigned int num_psf_gv_points = i915->display.bw.max[0].num_psf_gv_points; > - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; > + unsigned int num_psf_gv_points = display->bw.max[0].num_psf_gv_points; > + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; > u16 qgv_points = 0, psf_points = 0; > > /* > @@ -142,18 +145,19 @@ static u16 icl_qgv_points_mask(struct drm_i915_private *i915) > return ICL_PCODE_REQ_QGV_PT(qgv_points) | ADLS_PCODE_REQ_PSF_PT(psf_points); > } > > -static bool is_sagv_enabled(struct drm_i915_private *i915, u16 points_mask) > +static bool is_sagv_enabled(struct intel_display *display, u16 points_mask) > { > - return !is_power_of_2(~points_mask & icl_qgv_points_mask(i915) & > + return !is_power_of_2(~points_mask & icl_qgv_points_mask(display) & > ICL_PCODE_REQ_QGV_PT_MASK); > } > > int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, > u32 points_mask) > { > + struct intel_display *display = &dev_priv->display; > int ret; > > - if (DISPLAY_VER(dev_priv) >= 14) > + if (DISPLAY_VER(display) >= 14) > return 0; > > /* bspec says to keep retrying for at least 1 ms */ > @@ -164,27 +168,28 @@ int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, > 1); > > if (ret < 0) { > - drm_err(&dev_priv->drm, > + drm_err(display->drm, > "Failed to disable qgv points (0x%x) points: 0x%x\n", > ret, points_mask); > return ret; > } > > - dev_priv->display.sagv.status = is_sagv_enabled(dev_priv, points_mask) ? > + display->sagv.status = is_sagv_enabled(display, points_mask) ? > I915_SAGV_ENABLED : I915_SAGV_DISABLED; > > return 0; > } > > -static int mtl_read_qgv_point_info(struct drm_i915_private *dev_priv, > +static int mtl_read_qgv_point_info(struct intel_display *display, > struct intel_qgv_point *sp, int point) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > u32 val, val2; > u16 dclk; > > - val = intel_uncore_read(&dev_priv->uncore, > + val = intel_uncore_read(&i915->uncore, > MTL_MEM_SS_INFO_QGV_POINT_LOW(point)); > - val2 = intel_uncore_read(&dev_priv->uncore, > + val2 = intel_uncore_read(&i915->uncore, > MTL_MEM_SS_INFO_QGV_POINT_HIGH(point)); > dclk = REG_FIELD_GET(MTL_DCLK_MASK, val); > sp->dclk = DIV_ROUND_CLOSEST(16667 * dclk, 1000); > @@ -200,29 +205,30 @@ static int mtl_read_qgv_point_info(struct drm_i915_private *dev_priv, > } > > static int > -intel_read_qgv_point_info(struct drm_i915_private *dev_priv, > +intel_read_qgv_point_info(struct intel_display *display, > struct intel_qgv_point *sp, > int point) > { > - if (DISPLAY_VER(dev_priv) >= 14) > - return mtl_read_qgv_point_info(dev_priv, sp, point); > - else if (IS_DG1(dev_priv)) > - return dg1_mchbar_read_qgv_point_info(dev_priv, sp, point); > + if (DISPLAY_VER(display) >= 14) > + return mtl_read_qgv_point_info(display, sp, point); > + else if (display->platform.dg1) > + return dg1_mchbar_read_qgv_point_info(display, sp, point); > else > - return icl_pcode_read_qgv_point_info(dev_priv, sp, point); > + return icl_pcode_read_qgv_point_info(display, sp, point); > } > > -static int icl_get_qgv_points(struct drm_i915_private *dev_priv, > +static int icl_get_qgv_points(struct intel_display *display, > struct intel_qgv_info *qi, > bool is_y_tile) > { > - const struct dram_info *dram_info = &dev_priv->dram_info; > + struct drm_i915_private *i915 = to_i915(display->drm); > + const struct dram_info *dram_info = &i915->dram_info; > int i, ret; > > qi->num_points = dram_info->num_qgv_points; > qi->num_psf_points = dram_info->num_psf_gv_points; > > - if (DISPLAY_VER(dev_priv) >= 14) { > + if (DISPLAY_VER(display) >= 14) { > switch (dram_info->type) { > case INTEL_DRAM_DDR4: > qi->t_bl = 4; > @@ -250,7 +256,7 @@ static int icl_get_qgv_points(struct drm_i915_private *dev_priv, > MISSING_CASE(dram_info->type); > return -EINVAL; > } > - } else if (DISPLAY_VER(dev_priv) >= 12) { > + } else if (DISPLAY_VER(display) >= 12) { > switch (dram_info->type) { > case INTEL_DRAM_DDR4: > qi->t_bl = is_y_tile ? 8 : 4; > @@ -265,7 +271,7 @@ static int icl_get_qgv_points(struct drm_i915_private *dev_priv, > qi->deinterleave = is_y_tile ? 1 : 2; > break; > case INTEL_DRAM_LPDDR4: > - if (IS_ROCKETLAKE(dev_priv)) { > + if (display->platform.rocketlake) { > qi->t_bl = 8; > qi->max_numchannels = 4; > qi->channel_width = 32; > @@ -284,39 +290,39 @@ static int icl_get_qgv_points(struct drm_i915_private *dev_priv, > qi->max_numchannels = 1; > break; > } > - } else if (DISPLAY_VER(dev_priv) == 11) { > - qi->t_bl = dev_priv->dram_info.type == INTEL_DRAM_DDR4 ? 4 : 8; > + } else if (DISPLAY_VER(display) == 11) { > + qi->t_bl = dram_info->type == INTEL_DRAM_DDR4 ? 4 : 8; > qi->max_numchannels = 1; > } > > - if (drm_WARN_ON(&dev_priv->drm, > + if (drm_WARN_ON(display->drm, > qi->num_points > ARRAY_SIZE(qi->points))) > qi->num_points = ARRAY_SIZE(qi->points); > > for (i = 0; i < qi->num_points; i++) { > struct intel_qgv_point *sp = &qi->points[i]; > > - ret = intel_read_qgv_point_info(dev_priv, sp, i); > + ret = intel_read_qgv_point_info(display, sp, i); > if (ret) { > - drm_dbg_kms(&dev_priv->drm, "Could not read QGV %d info\n", i); > + drm_dbg_kms(display->drm, "Could not read QGV %d info\n", i); > return ret; > } > > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "QGV %d: DCLK=%d tRP=%d tRDPRE=%d tRAS=%d tRCD=%d tRC=%d\n", > i, sp->dclk, sp->t_rp, sp->t_rdpre, sp->t_ras, > sp->t_rcd, sp->t_rc); > } > > if (qi->num_psf_points > 0) { > - ret = adls_pcode_read_psf_gv_point_info(dev_priv, qi->psf_points); > + ret = adls_pcode_read_psf_gv_point_info(display, qi->psf_points); > if (ret) { > - drm_err(&dev_priv->drm, "Failed to read PSF point data; PSF points will not be considered in bandwidth calculations.\n"); > + drm_err(display->drm, "Failed to read PSF point data; PSF points will not be considered in bandwidth calculations.\n"); > qi->num_psf_points = 0; > } > > for (i = 0; i < qi->num_psf_points; i++) > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "PSF GV %d: CLK=%d \n", > i, qi->psf_points[i].clk); > } > @@ -398,20 +404,21 @@ static const struct intel_sa_info xe2_hpd_sa_info = { > /* Other values not used by simplified algorithm */ > }; > > -static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel_sa_info *sa) > +static int icl_get_bw_info(struct intel_display *display, const struct intel_sa_info *sa) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > struct intel_qgv_info qi = {}; > bool is_y_tile = true; /* assume y tile may be used */ > - int num_channels = max_t(u8, 1, dev_priv->dram_info.num_channels); > + int num_channels = max_t(u8, 1, i915->dram_info.num_channels); > int ipqdepth, ipqdepthpch = 16; > int dclk_max; > int maxdebw; > - int num_groups = ARRAY_SIZE(dev_priv->display.bw.max); > + int num_groups = ARRAY_SIZE(display->bw.max); > int i, ret; > > - ret = icl_get_qgv_points(dev_priv, &qi, is_y_tile); > + ret = icl_get_qgv_points(display, &qi, is_y_tile); > if (ret) { > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "Failed to get memory subsystem information, ignoring bandwidth limits"); > return ret; > } > @@ -422,7 +429,7 @@ static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel > qi.deinterleave = DIV_ROUND_UP(num_channels, is_y_tile ? 4 : 2); > > for (i = 0; i < num_groups; i++) { > - struct intel_bw_info *bi = &dev_priv->display.bw.max[i]; > + struct intel_bw_info *bi = &display->bw.max[i]; > int clpchgroup; > int j; > > @@ -449,7 +456,7 @@ static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel > bi->deratedbw[j] = min(maxdebw, > bw * (100 - sa->derating) / 100); > > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "BW%d / QGV %d: num_planes=%d deratedbw=%u\n", > i, j, bi->num_planes, bi->deratedbw[j]); > } > @@ -460,44 +467,45 @@ static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel > * as it will fail and pointless anyway. > */ > if (qi.num_points == 1) > - dev_priv->display.sagv.status = I915_SAGV_NOT_CONTROLLED; > + display->sagv.status = I915_SAGV_NOT_CONTROLLED; > else > - dev_priv->display.sagv.status = I915_SAGV_ENABLED; > + display->sagv.status = I915_SAGV_ENABLED; > > return 0; > } > > -static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel_sa_info *sa) > +static int tgl_get_bw_info(struct intel_display *display, const struct intel_sa_info *sa) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > struct intel_qgv_info qi = {}; > - const struct dram_info *dram_info = &dev_priv->dram_info; > + const struct dram_info *dram_info = &i915->dram_info; > bool is_y_tile = true; /* assume y tile may be used */ > - int num_channels = max_t(u8, 1, dev_priv->dram_info.num_channels); > + int num_channels = max_t(u8, 1, dram_info->num_channels); > int ipqdepth, ipqdepthpch = 16; > int dclk_max; > int maxdebw, peakbw; > int clperchgroup; > - int num_groups = ARRAY_SIZE(dev_priv->display.bw.max); > + int num_groups = ARRAY_SIZE(display->bw.max); > int i, ret; > > - ret = icl_get_qgv_points(dev_priv, &qi, is_y_tile); > + ret = icl_get_qgv_points(display, &qi, is_y_tile); > if (ret) { > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "Failed to get memory subsystem information, ignoring bandwidth limits"); > return ret; > } > > - if (DISPLAY_VER(dev_priv) < 14 && > + if (DISPLAY_VER(display) < 14 && > (dram_info->type == INTEL_DRAM_LPDDR4 || dram_info->type == INTEL_DRAM_LPDDR5)) > num_channels *= 2; > > qi.deinterleave = qi.deinterleave ? : DIV_ROUND_UP(num_channels, is_y_tile ? 4 : 2); > > - if (num_channels < qi.max_numchannels && DISPLAY_VER(dev_priv) >= 12) > + if (num_channels < qi.max_numchannels && DISPLAY_VER(display) >= 12) > qi.deinterleave = max(DIV_ROUND_UP(qi.deinterleave, 2), 1); > > - if (DISPLAY_VER(dev_priv) >= 12 && num_channels > qi.max_numchannels) > - drm_warn(&dev_priv->drm, "Number of channels exceeds max number of channels."); > + if (DISPLAY_VER(display) >= 12 && num_channels > qi.max_numchannels) > + drm_warn(display->drm, "Number of channels exceeds max number of channels."); > if (qi.max_numchannels != 0) > num_channels = min_t(u8, num_channels, qi.max_numchannels); > > @@ -514,7 +522,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel > clperchgroup = 4 * DIV_ROUND_UP(8, num_channels) * qi.deinterleave; > > for (i = 0; i < num_groups; i++) { > - struct intel_bw_info *bi = &dev_priv->display.bw.max[i]; > + struct intel_bw_info *bi = &display->bw.max[i]; > struct intel_bw_info *bi_next; > int clpchgroup; > int j; > @@ -522,7 +530,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel > clpchgroup = (sa->deburst * qi.deinterleave / num_channels) << i; > > if (i < num_groups - 1) { > - bi_next = &dev_priv->display.bw.max[i + 1]; > + bi_next = &display->bw.max[i + 1]; > > if (clpchgroup < clperchgroup) > bi_next->num_planes = (ipqdepth - clpchgroup) / > @@ -554,7 +562,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel > num_channels * > qi.channel_width, 8); > > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "BW%d / QGV %d: num_planes=%d deratedbw=%u peakbw: %u\n", > i, j, bi->num_planes, bi->deratedbw[j], > bi->peakbw[j]); > @@ -565,7 +573,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel > > bi->psf_bw[j] = adl_calc_psf_bw(sp->clk); > > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "BW%d / PSF GV %d: num_planes=%d bw=%u\n", > i, j, bi->num_planes, bi->psf_bw[j]); > } > @@ -577,17 +585,17 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel > * as it will fail and pointless anyway. > */ > if (qi.num_points == 1) > - dev_priv->display.sagv.status = I915_SAGV_NOT_CONTROLLED; > + display->sagv.status = I915_SAGV_NOT_CONTROLLED; > else > - dev_priv->display.sagv.status = I915_SAGV_ENABLED; > + display->sagv.status = I915_SAGV_ENABLED; > > return 0; > } > > -static void dg2_get_bw_info(struct drm_i915_private *i915) > +static void dg2_get_bw_info(struct intel_display *display) > { > - unsigned int deratedbw = IS_DG2_G11(i915) ? 38000 : 50000; > - int num_groups = ARRAY_SIZE(i915->display.bw.max); > + unsigned int deratedbw = display->platform.dg2_g11 ? 38000 : 50000; > + int num_groups = ARRAY_SIZE(display->bw.max); > int i; > > /* > @@ -598,7 +606,7 @@ static void dg2_get_bw_info(struct drm_i915_private *i915) > * whereas DG2-G11 platforms have 38 GB/s. > */ > for (i = 0; i < num_groups; i++) { > - struct intel_bw_info *bi = &i915->display.bw.max[i]; > + struct intel_bw_info *bi = &display->bw.max[i]; > > bi->num_planes = 1; > /* Need only one dummy QGV point per group */ > @@ -606,20 +614,21 @@ static void dg2_get_bw_info(struct drm_i915_private *i915) > bi->deratedbw[0] = deratedbw; > } > > - i915->display.sagv.status = I915_SAGV_NOT_CONTROLLED; > + display->sagv.status = I915_SAGV_NOT_CONTROLLED; > } > > -static int xe2_hpd_get_bw_info(struct drm_i915_private *i915, > +static int xe2_hpd_get_bw_info(struct intel_display *display, > const struct intel_sa_info *sa) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > struct intel_qgv_info qi = {}; > int num_channels = i915->dram_info.num_channels; > int peakbw, maxdebw; > int ret, i; > > - ret = icl_get_qgv_points(i915, &qi, true); > + ret = icl_get_qgv_points(display, &qi, true); > if (ret) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Failed to get memory subsystem information, ignoring bandwidth limits"); > return ret; > } > @@ -631,33 +640,33 @@ static int xe2_hpd_get_bw_info(struct drm_i915_private *i915, > const struct intel_qgv_point *point = &qi.points[i]; > int bw = num_channels * (qi.channel_width / 8) * point->dclk; > > - i915->display.bw.max[0].deratedbw[i] = > + display->bw.max[0].deratedbw[i] = > min(maxdebw, (100 - sa->derating) * bw / 100); > - i915->display.bw.max[0].peakbw[i] = bw; > + display->bw.max[0].peakbw[i] = bw; > > - drm_dbg_kms(&i915->drm, "QGV %d: deratedbw=%u peakbw: %u\n", > - i, i915->display.bw.max[0].deratedbw[i], > - i915->display.bw.max[0].peakbw[i]); > + drm_dbg_kms(display->drm, "QGV %d: deratedbw=%u peakbw: %u\n", > + i, display->bw.max[0].deratedbw[i], > + display->bw.max[0].peakbw[i]); > } > > /* Bandwidth does not depend on # of planes; set all groups the same */ > - i915->display.bw.max[0].num_planes = 1; > - i915->display.bw.max[0].num_qgv_points = qi.num_points; > - for (i = 1; i < ARRAY_SIZE(i915->display.bw.max); i++) > - memcpy(&i915->display.bw.max[i], &i915->display.bw.max[0], > - sizeof(i915->display.bw.max[0])); > + display->bw.max[0].num_planes = 1; > + display->bw.max[0].num_qgv_points = qi.num_points; > + for (i = 1; i < ARRAY_SIZE(display->bw.max); i++) > + memcpy(&display->bw.max[i], &display->bw.max[0], > + sizeof(display->bw.max[0])); > > /* > * Xe2_HPD should always have exactly two QGV points representing > * battery and plugged-in operation. > */ > - drm_WARN_ON(&i915->drm, qi.num_points != 2); > - i915->display.sagv.status = I915_SAGV_ENABLED; > + drm_WARN_ON(display->drm, qi.num_points != 2); > + display->sagv.status = I915_SAGV_ENABLED; > > return 0; > } > > -static unsigned int icl_max_bw_index(struct drm_i915_private *dev_priv, > +static unsigned int icl_max_bw_index(struct intel_display *display, > int num_planes, int qgv_point) > { > int i; > @@ -667,9 +676,9 @@ static unsigned int icl_max_bw_index(struct drm_i915_private *dev_priv, > */ > num_planes = max(1, num_planes); > > - for (i = 0; i < ARRAY_SIZE(dev_priv->display.bw.max); i++) { > + for (i = 0; i < ARRAY_SIZE(display->bw.max); i++) { > const struct intel_bw_info *bi = > - &dev_priv->display.bw.max[i]; > + &display->bw.max[i]; > > /* > * Pcode will not expose all QGV points when > @@ -685,7 +694,7 @@ static unsigned int icl_max_bw_index(struct drm_i915_private *dev_priv, > return UINT_MAX; > } > > -static unsigned int tgl_max_bw_index(struct drm_i915_private *dev_priv, > +static unsigned int tgl_max_bw_index(struct intel_display *display, > int num_planes, int qgv_point) > { > int i; > @@ -695,9 +704,9 @@ static unsigned int tgl_max_bw_index(struct drm_i915_private *dev_priv, > */ > num_planes = max(1, num_planes); > > - for (i = ARRAY_SIZE(dev_priv->display.bw.max) - 1; i >= 0; i--) { > + for (i = ARRAY_SIZE(display->bw.max) - 1; i >= 0; i--) { > const struct intel_bw_info *bi = > - &dev_priv->display.bw.max[i]; > + &display->bw.max[i]; > > /* > * Pcode will not expose all QGV points when > @@ -713,52 +722,54 @@ static unsigned int tgl_max_bw_index(struct drm_i915_private *dev_priv, > return 0; > } > > -static unsigned int adl_psf_bw(struct drm_i915_private *dev_priv, > +static unsigned int adl_psf_bw(struct intel_display *display, > int psf_gv_point) > { > const struct intel_bw_info *bi = > - &dev_priv->display.bw.max[0]; > + &display->bw.max[0]; > > return bi->psf_bw[psf_gv_point]; > } > > -static unsigned int icl_qgv_bw(struct drm_i915_private *i915, > +static unsigned int icl_qgv_bw(struct intel_display *display, > int num_active_planes, int qgv_point) > { > unsigned int idx; > > - if (DISPLAY_VER(i915) >= 12) > - idx = tgl_max_bw_index(i915, num_active_planes, qgv_point); > + if (DISPLAY_VER(display) >= 12) > + idx = tgl_max_bw_index(display, num_active_planes, qgv_point); > else > - idx = icl_max_bw_index(i915, num_active_planes, qgv_point); > + idx = icl_max_bw_index(display, num_active_planes, qgv_point); > > - if (idx >= ARRAY_SIZE(i915->display.bw.max)) > + if (idx >= ARRAY_SIZE(display->bw.max)) > return 0; > > - return i915->display.bw.max[idx].deratedbw[qgv_point]; > + return display->bw.max[idx].deratedbw[qgv_point]; > } > > void intel_bw_init_hw(struct drm_i915_private *dev_priv) > { > - if (!HAS_DISPLAY(dev_priv)) > + struct intel_display *display = &dev_priv->display; > + > + if (!HAS_DISPLAY(display)) > return; > > - if (DISPLAY_VERx100(dev_priv) >= 1401 && IS_DGFX(dev_priv)) > - xe2_hpd_get_bw_info(dev_priv, &xe2_hpd_sa_info); > - else if (DISPLAY_VER(dev_priv) >= 14) > - tgl_get_bw_info(dev_priv, &mtl_sa_info); > - else if (IS_DG2(dev_priv)) > - dg2_get_bw_info(dev_priv); > - else if (IS_ALDERLAKE_P(dev_priv)) > - tgl_get_bw_info(dev_priv, &adlp_sa_info); > - else if (IS_ALDERLAKE_S(dev_priv)) > - tgl_get_bw_info(dev_priv, &adls_sa_info); > - else if (IS_ROCKETLAKE(dev_priv)) > - tgl_get_bw_info(dev_priv, &rkl_sa_info); > - else if (DISPLAY_VER(dev_priv) == 12) > - tgl_get_bw_info(dev_priv, &tgl_sa_info); > - else if (DISPLAY_VER(dev_priv) == 11) > - icl_get_bw_info(dev_priv, &icl_sa_info); > + if (DISPLAY_VERx100(display) >= 1401 && display->platform.dgfx) > + xe2_hpd_get_bw_info(display, &xe2_hpd_sa_info); > + else if (DISPLAY_VER(display) >= 14) > + tgl_get_bw_info(display, &mtl_sa_info); > + else if (display->platform.dg2) > + dg2_get_bw_info(display); > + else if (display->platform.alderlake_p) > + tgl_get_bw_info(display, &adlp_sa_info); > + else if (display->platform.alderlake_s) > + tgl_get_bw_info(display, &adls_sa_info); > + else if (display->platform.rocketlake) > + tgl_get_bw_info(display, &rkl_sa_info); > + else if (DISPLAY_VER(display) == 12) > + tgl_get_bw_info(display, &tgl_sa_info); > + else if (DISPLAY_VER(display) == 11) > + icl_get_bw_info(display, &icl_sa_info); > } > > static unsigned int intel_bw_crtc_num_active_planes(const struct intel_crtc_state *crtc_state) > @@ -772,8 +783,8 @@ static unsigned int intel_bw_crtc_num_active_planes(const struct intel_crtc_stat > > static unsigned int intel_bw_crtc_data_rate(const struct intel_crtc_state *crtc_state) > { > + struct intel_display *display = to_intel_display(crtc_state); > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > unsigned int data_rate = 0; > enum plane_id plane_id; > > @@ -787,7 +798,7 @@ static unsigned int intel_bw_crtc_data_rate(const struct intel_crtc_state *crtc_ > > data_rate += crtc_state->data_rate[plane_id]; > > - if (DISPLAY_VER(i915) < 11) > + if (DISPLAY_VER(display) < 11) > data_rate += crtc_state->data_rate_y[plane_id]; > } > > @@ -797,37 +808,37 @@ static unsigned int intel_bw_crtc_data_rate(const struct intel_crtc_state *crtc_ > /* "Maximum Pipe Read Bandwidth" */ > static int intel_bw_crtc_min_cdclk(const struct intel_crtc_state *crtc_state) > { > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > + struct intel_display *display = to_intel_display(crtc_state); > > - if (DISPLAY_VER(i915) < 12) > + if (DISPLAY_VER(display) < 12) > return 0; > > return DIV_ROUND_UP_ULL(mul_u32_u32(intel_bw_crtc_data_rate(crtc_state), 10), 512); > } > > -static unsigned int intel_bw_num_active_planes(struct drm_i915_private *dev_priv, > +static unsigned int intel_bw_num_active_planes(struct intel_display *display, > const struct intel_bw_state *bw_state) > { > unsigned int num_active_planes = 0; > enum pipe pipe; > > - for_each_pipe(dev_priv, pipe) > + for_each_pipe(display, pipe) > num_active_planes += bw_state->num_active_planes[pipe]; > > return num_active_planes; > } > > -static unsigned int intel_bw_data_rate(struct drm_i915_private *dev_priv, > +static unsigned int intel_bw_data_rate(struct intel_display *display, > const struct intel_bw_state *bw_state) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > unsigned int data_rate = 0; > enum pipe pipe; > > - for_each_pipe(dev_priv, pipe) > + for_each_pipe(display, pipe) > data_rate += bw_state->data_rate[pipe]; > > - if (DISPLAY_VER(dev_priv) >= 13 && i915_vtd_active(dev_priv)) > + if (DISPLAY_VER(display) >= 13 && i915_vtd_active(i915)) > data_rate = DIV_ROUND_UP(data_rate * 105, 100); > > return data_rate; > @@ -836,10 +847,10 @@ static unsigned int intel_bw_data_rate(struct drm_i915_private *dev_priv, > struct intel_bw_state * > intel_atomic_get_old_bw_state(struct intel_atomic_state *state) > { > - struct drm_i915_private *dev_priv = to_i915(state->base.dev); > + struct intel_display *display = to_intel_display(state); > struct intel_global_state *bw_state; > > - bw_state = intel_atomic_get_old_global_obj_state(state, &dev_priv->display.bw.obj); > + bw_state = intel_atomic_get_old_global_obj_state(state, &display->bw.obj); > > return to_intel_bw_state(bw_state); > } > @@ -847,10 +858,10 @@ intel_atomic_get_old_bw_state(struct intel_atomic_state *state) > struct intel_bw_state * > intel_atomic_get_new_bw_state(struct intel_atomic_state *state) > { > - struct drm_i915_private *dev_priv = to_i915(state->base.dev); > + struct intel_display *display = to_intel_display(state); > struct intel_global_state *bw_state; > > - bw_state = intel_atomic_get_new_global_obj_state(state, &dev_priv->display.bw.obj); > + bw_state = intel_atomic_get_new_global_obj_state(state, &display->bw.obj); > > return to_intel_bw_state(bw_state); > } > @@ -858,27 +869,27 @@ intel_atomic_get_new_bw_state(struct intel_atomic_state *state) > struct intel_bw_state * > intel_atomic_get_bw_state(struct intel_atomic_state *state) > { > - struct drm_i915_private *dev_priv = to_i915(state->base.dev); > + struct intel_display *display = to_intel_display(state); > struct intel_global_state *bw_state; > > - bw_state = intel_atomic_get_global_obj_state(state, &dev_priv->display.bw.obj); > + bw_state = intel_atomic_get_global_obj_state(state, &display->bw.obj); > if (IS_ERR(bw_state)) > return ERR_CAST(bw_state); > > return to_intel_bw_state(bw_state); > } > > -static unsigned int icl_max_bw_qgv_point_mask(struct drm_i915_private *i915, > +static unsigned int icl_max_bw_qgv_point_mask(struct intel_display *display, > int num_active_planes) > { > - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; > + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; > unsigned int max_bw_point = 0; > unsigned int max_bw = 0; > int i; > > for (i = 0; i < num_qgv_points; i++) { > unsigned int max_data_rate = > - icl_qgv_bw(i915, num_active_planes, i); > + icl_qgv_bw(display, num_active_planes, i); > > /* > * We need to know which qgv point gives us > @@ -897,23 +908,23 @@ static unsigned int icl_max_bw_qgv_point_mask(struct drm_i915_private *i915, > return max_bw_point; > } > > -static u16 icl_prepare_qgv_points_mask(struct drm_i915_private *i915, > +static u16 icl_prepare_qgv_points_mask(struct intel_display *display, > unsigned int qgv_points, > unsigned int psf_points) > { > return ~(ICL_PCODE_REQ_QGV_PT(qgv_points) | > - ADLS_PCODE_REQ_PSF_PT(psf_points)) & icl_qgv_points_mask(i915); > + ADLS_PCODE_REQ_PSF_PT(psf_points)) & icl_qgv_points_mask(display); > } > > -static unsigned int icl_max_bw_psf_gv_point_mask(struct drm_i915_private *i915) > +static unsigned int icl_max_bw_psf_gv_point_mask(struct intel_display *display) > { > - unsigned int num_psf_gv_points = i915->display.bw.max[0].num_psf_gv_points; > + unsigned int num_psf_gv_points = display->bw.max[0].num_psf_gv_points; > unsigned int max_bw_point_mask = 0; > unsigned int max_bw = 0; > int i; > > for (i = 0; i < num_psf_gv_points; i++) { > - unsigned int max_data_rate = adl_psf_bw(i915, i); > + unsigned int max_data_rate = adl_psf_bw(display, i); > > if (max_data_rate > max_bw) { > max_bw_point_mask = BIT(i); > @@ -926,29 +937,31 @@ static unsigned int icl_max_bw_psf_gv_point_mask(struct drm_i915_private *i915) > return max_bw_point_mask; > } > > -static void icl_force_disable_sagv(struct drm_i915_private *i915, > +static void icl_force_disable_sagv(struct intel_display *display, > struct intel_bw_state *bw_state) > { > - unsigned int qgv_points = icl_max_bw_qgv_point_mask(i915, 0); > - unsigned int psf_points = icl_max_bw_psf_gv_point_mask(i915); > + struct drm_i915_private *i915 = to_i915(display->drm); > + unsigned int qgv_points = icl_max_bw_qgv_point_mask(display, 0); > + unsigned int psf_points = icl_max_bw_psf_gv_point_mask(display); > > - bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(i915, > + bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(display, > qgv_points, > psf_points); > > - drm_dbg_kms(&i915->drm, "Forcing SAGV disable: mask 0x%x\n", > + drm_dbg_kms(display->drm, "Forcing SAGV disable: mask 0x%x\n", > bw_state->qgv_points_mask); > > icl_pcode_restrict_qgv_points(i915, bw_state->qgv_points_mask); > } > > -static int mtl_find_qgv_points(struct drm_i915_private *i915, > +static int mtl_find_qgv_points(struct intel_display *display, > unsigned int data_rate, > unsigned int num_active_planes, > struct intel_bw_state *new_bw_state) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > unsigned int best_rate = UINT_MAX; > - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; > + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; > unsigned int qgv_peak_bw = 0; > int i; > int ret; > @@ -964,7 +977,7 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, > */ > if (!intel_can_enable_sagv(i915, new_bw_state)) { > new_bw_state->qgv_point_peakbw = U16_MAX; > - drm_dbg_kms(&i915->drm, "No SAGV, use UINT_MAX as peak bw."); > + drm_dbg_kms(display->drm, "No SAGV, use UINT_MAX as peak bw."); > return 0; > } > > @@ -974,27 +987,27 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, > */ > for (i = 0; i < num_qgv_points; i++) { > unsigned int bw_index = > - tgl_max_bw_index(i915, num_active_planes, i); > + tgl_max_bw_index(display, num_active_planes, i); > unsigned int max_data_rate; > > - if (bw_index >= ARRAY_SIZE(i915->display.bw.max)) > + if (bw_index >= ARRAY_SIZE(display->bw.max)) > continue; > > - max_data_rate = i915->display.bw.max[bw_index].deratedbw[i]; > + max_data_rate = display->bw.max[bw_index].deratedbw[i]; > > if (max_data_rate < data_rate) > continue; > > if (max_data_rate - data_rate < best_rate) { > best_rate = max_data_rate - data_rate; > - qgv_peak_bw = i915->display.bw.max[bw_index].peakbw[i]; > + qgv_peak_bw = display->bw.max[bw_index].peakbw[i]; > } > > - drm_dbg_kms(&i915->drm, "QGV point %d: max bw %d required %d qgv_peak_bw: %d\n", > + drm_dbg_kms(display->drm, "QGV point %d: max bw %d required %d qgv_peak_bw: %d\n", > i, max_data_rate, data_rate, qgv_peak_bw); > } > > - drm_dbg_kms(&i915->drm, "Matching peaks QGV bw: %d for required data rate: %d\n", > + drm_dbg_kms(display->drm, "Matching peaks QGV bw: %d for required data rate: %d\n", > qgv_peak_bw, data_rate); > > /* > @@ -1002,7 +1015,7 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, > * satisfying the required data rate is found > */ > if (qgv_peak_bw == 0) { > - drm_dbg_kms(&i915->drm, "No QGV points for bw %d for display configuration(%d active planes).\n", > + drm_dbg_kms(display->drm, "No QGV points for bw %d for display configuration(%d active planes).\n", > data_rate, num_active_planes); > return -EINVAL; > } > @@ -1013,14 +1026,15 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, > return 0; > } > > -static int icl_find_qgv_points(struct drm_i915_private *i915, > +static int icl_find_qgv_points(struct intel_display *display, > unsigned int data_rate, > unsigned int num_active_planes, > const struct intel_bw_state *old_bw_state, > struct intel_bw_state *new_bw_state) > { > - unsigned int num_psf_gv_points = i915->display.bw.max[0].num_psf_gv_points; > - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; > + struct drm_i915_private *i915 = to_i915(display->drm); > + unsigned int num_psf_gv_points = display->bw.max[0].num_psf_gv_points; > + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; > u16 psf_points = 0; > u16 qgv_points = 0; > int i; > @@ -1031,22 +1045,22 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, > return ret; > > for (i = 0; i < num_qgv_points; i++) { > - unsigned int max_data_rate = icl_qgv_bw(i915, > + unsigned int max_data_rate = icl_qgv_bw(display, > num_active_planes, i); > if (max_data_rate >= data_rate) > qgv_points |= BIT(i); > > - drm_dbg_kms(&i915->drm, "QGV point %d: max bw %d required %d\n", > + drm_dbg_kms(display->drm, "QGV point %d: max bw %d required %d\n", > i, max_data_rate, data_rate); > } > > for (i = 0; i < num_psf_gv_points; i++) { > - unsigned int max_data_rate = adl_psf_bw(i915, i); > + unsigned int max_data_rate = adl_psf_bw(display, i); > > if (max_data_rate >= data_rate) > psf_points |= BIT(i); > > - drm_dbg_kms(&i915->drm, "PSF GV point %d: max bw %d" > + drm_dbg_kms(display->drm, "PSF GV point %d: max bw %d" > " required %d\n", > i, max_data_rate, data_rate); > } > @@ -1057,14 +1071,14 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, > * reasons. > */ > if (qgv_points == 0) { > - drm_dbg_kms(&i915->drm, "No QGV points provide sufficient memory" > + drm_dbg_kms(display->drm, "No QGV points provide sufficient memory" > " bandwidth %d for display configuration(%d active planes).\n", > data_rate, num_active_planes); > return -EINVAL; > } > > if (num_psf_gv_points > 0 && psf_points == 0) { > - drm_dbg_kms(&i915->drm, "No PSF GV points provide sufficient memory" > + drm_dbg_kms(display->drm, "No PSF GV points provide sufficient memory" > " bandwidth %d for display configuration(%d active planes).\n", > data_rate, num_active_planes); > return -EINVAL; > @@ -1076,8 +1090,8 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, > * cause. > */ > if (!intel_can_enable_sagv(i915, new_bw_state)) { > - qgv_points = icl_max_bw_qgv_point_mask(i915, num_active_planes); > - drm_dbg_kms(&i915->drm, "No SAGV, using single QGV point mask 0x%x\n", > + qgv_points = icl_max_bw_qgv_point_mask(display, num_active_planes); > + drm_dbg_kms(display->drm, "No SAGV, using single QGV point mask 0x%x\n", > qgv_points); > } > > @@ -1085,7 +1099,7 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, > * We store the ones which need to be masked as that is what PCode > * actually accepts as a parameter. > */ > - new_bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(i915, > + new_bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(display, > qgv_points, > psf_points); > /* > @@ -1101,38 +1115,38 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, > return 0; > } > > -static int intel_bw_check_qgv_points(struct drm_i915_private *i915, > +static int intel_bw_check_qgv_points(struct intel_display *display, > const struct intel_bw_state *old_bw_state, > struct intel_bw_state *new_bw_state) > { > - unsigned int data_rate = intel_bw_data_rate(i915, new_bw_state); > + unsigned int data_rate = intel_bw_data_rate(display, new_bw_state); > unsigned int num_active_planes = > - intel_bw_num_active_planes(i915, new_bw_state); > + intel_bw_num_active_planes(display, new_bw_state); > > data_rate = DIV_ROUND_UP(data_rate, 1000); > > - if (DISPLAY_VER(i915) >= 14) > - return mtl_find_qgv_points(i915, data_rate, num_active_planes, > + if (DISPLAY_VER(display) >= 14) > + return mtl_find_qgv_points(display, data_rate, num_active_planes, > new_bw_state); > else > - return icl_find_qgv_points(i915, data_rate, num_active_planes, > + return icl_find_qgv_points(display, data_rate, num_active_planes, > old_bw_state, new_bw_state); > } > > -static bool intel_bw_state_changed(struct drm_i915_private *i915, > +static bool intel_bw_state_changed(struct intel_display *display, > const struct intel_bw_state *old_bw_state, > const struct intel_bw_state *new_bw_state) > { > enum pipe pipe; > > - for_each_pipe(i915, pipe) { > + for_each_pipe(display, pipe) { > const struct intel_dbuf_bw *old_crtc_bw = > &old_bw_state->dbuf_bw[pipe]; > const struct intel_dbuf_bw *new_crtc_bw = > &new_bw_state->dbuf_bw[pipe]; > enum dbuf_slice slice; > > - for_each_dbuf_slice(i915, slice) { > + for_each_dbuf_slice(display, slice) { > if (old_crtc_bw->max_bw[slice] != new_crtc_bw->max_bw[slice] || > old_crtc_bw->active_planes[slice] != new_crtc_bw->active_planes[slice]) > return true; > @@ -1151,7 +1165,8 @@ static void skl_plane_calc_dbuf_bw(struct intel_bw_state *bw_state, > const struct skl_ddb_entry *ddb, > unsigned int data_rate) > { > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > + struct intel_display *display = to_intel_display(crtc); > + struct drm_i915_private *i915 = to_i915(display->drm); > struct intel_dbuf_bw *crtc_bw = &bw_state->dbuf_bw[crtc->pipe]; > unsigned int dbuf_mask = skl_ddb_dbuf_slice_mask(i915, ddb); > enum dbuf_slice slice; > @@ -1160,7 +1175,7 @@ static void skl_plane_calc_dbuf_bw(struct intel_bw_state *bw_state, > * The arbiter can only really guarantee an > * equal share of the total bw to each plane. > */ > - for_each_dbuf_slice_in_mask(i915, slice, dbuf_mask) { > + for_each_dbuf_slice_in_mask(display, slice, dbuf_mask) { > crtc_bw->max_bw[slice] = max(crtc_bw->max_bw[slice], data_rate); > crtc_bw->active_planes[slice] |= BIT(plane_id); > } > @@ -1169,8 +1184,8 @@ static void skl_plane_calc_dbuf_bw(struct intel_bw_state *bw_state, > static void skl_crtc_calc_dbuf_bw(struct intel_bw_state *bw_state, > const struct intel_crtc_state *crtc_state) > { > + struct intel_display *display = to_intel_display(crtc_state); > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > struct intel_dbuf_bw *crtc_bw = &bw_state->dbuf_bw[crtc->pipe]; > enum plane_id plane_id; > > @@ -1191,7 +1206,7 @@ static void skl_crtc_calc_dbuf_bw(struct intel_bw_state *bw_state, > &crtc_state->wm.skl.plane_ddb[plane_id], > crtc_state->data_rate[plane_id]); > > - if (DISPLAY_VER(i915) < 11) > + if (DISPLAY_VER(display) < 11) > skl_plane_calc_dbuf_bw(bw_state, crtc, plane_id, > &crtc_state->wm.skl.plane_ddb_y[plane_id], > crtc_state->data_rate[plane_id]); > @@ -1200,13 +1215,13 @@ static void skl_crtc_calc_dbuf_bw(struct intel_bw_state *bw_state, > > /* "Maximum Data Buffer Bandwidth" */ > static int > -intel_bw_dbuf_min_cdclk(struct drm_i915_private *i915, > +intel_bw_dbuf_min_cdclk(struct intel_display *display, > const struct intel_bw_state *bw_state) > { > unsigned int total_max_bw = 0; > enum dbuf_slice slice; > > - for_each_dbuf_slice(i915, slice) { > + for_each_dbuf_slice(display, slice) { > int num_active_planes = 0; > unsigned int max_bw = 0; > enum pipe pipe; > @@ -1215,7 +1230,7 @@ intel_bw_dbuf_min_cdclk(struct drm_i915_private *i915, > * The arbiter can only really guarantee an > * equal share of the total bw to each plane. > */ > - for_each_pipe(i915, pipe) { > + for_each_pipe(display, pipe) { > const struct intel_dbuf_bw *crtc_bw = &bw_state->dbuf_bw[pipe]; > > max_bw = max(crtc_bw->max_bw[slice], max_bw); > @@ -1232,12 +1247,13 @@ intel_bw_dbuf_min_cdclk(struct drm_i915_private *i915, > int intel_bw_min_cdclk(struct drm_i915_private *i915, > const struct intel_bw_state *bw_state) > { > + struct intel_display *display = &i915->display; > enum pipe pipe; > int min_cdclk; > > - min_cdclk = intel_bw_dbuf_min_cdclk(i915, bw_state); > + min_cdclk = intel_bw_dbuf_min_cdclk(display, bw_state); > > - for_each_pipe(i915, pipe) > + for_each_pipe(display, pipe) > min_cdclk = max(min_cdclk, bw_state->min_cdclk[pipe]); > > return min_cdclk; > @@ -1246,6 +1262,7 @@ int intel_bw_min_cdclk(struct drm_i915_private *i915, > int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, > bool *need_cdclk_calc) > { > + struct intel_display *display = to_intel_display(state); > struct drm_i915_private *dev_priv = to_i915(state->base.dev); > struct intel_bw_state *new_bw_state = NULL; > const struct intel_bw_state *old_bw_state = NULL; > @@ -1255,7 +1272,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, > struct intel_crtc *crtc; > int i; > > - if (DISPLAY_VER(dev_priv) < 9) > + if (DISPLAY_VER(display) < 9) > return 0; > > for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) { > @@ -1274,7 +1291,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, > if (!old_bw_state) > return 0; > > - if (intel_bw_state_changed(dev_priv, old_bw_state, new_bw_state)) { > + if (intel_bw_state_changed(display, old_bw_state, new_bw_state)) { > int ret = intel_atomic_lock_global_state(&new_bw_state->base); > if (ret) > return ret; > @@ -1309,7 +1326,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, > if (new_min_cdclk <= cdclk_state->bw_min_cdclk) > return 0; > > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "new bandwidth min cdclk (%d kHz) > old min cdclk (%d kHz)\n", > new_min_cdclk, cdclk_state->bw_min_cdclk); > *need_cdclk_calc = true; > @@ -1319,7 +1336,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, > > static int intel_bw_check_data_rate(struct intel_atomic_state *state, bool *changed) > { > - struct drm_i915_private *i915 = to_i915(state->base.dev); > + struct intel_display *display = to_intel_display(state); > const struct intel_crtc_state *new_crtc_state, *old_crtc_state; > struct intel_crtc *crtc; > int i; > @@ -1353,7 +1370,7 @@ static int intel_bw_check_data_rate(struct intel_atomic_state *state, bool *chan > > *changed = true; > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "[CRTC:%d:%s] data rate %u num active planes %u\n", > crtc->base.base.id, crtc->base.name, > new_bw_state->data_rate[crtc->pipe], > @@ -1365,14 +1382,15 @@ static int intel_bw_check_data_rate(struct intel_atomic_state *state, bool *chan > > int intel_bw_atomic_check(struct intel_atomic_state *state) > { > + struct intel_display *display = to_intel_display(state); > + struct drm_i915_private *i915 = to_i915(display->drm); > bool changed = false; > - struct drm_i915_private *i915 = to_i915(state->base.dev); > struct intel_bw_state *new_bw_state; > const struct intel_bw_state *old_bw_state; > int ret; > > /* FIXME earlier gens need some checks too */ > - if (DISPLAY_VER(i915) < 11) > + if (DISPLAY_VER(display) < 11) > return 0; > > ret = intel_bw_check_data_rate(state, &changed); > @@ -1395,7 +1413,7 @@ int intel_bw_atomic_check(struct intel_atomic_state *state) > if (!changed) > return 0; > > - ret = intel_bw_check_qgv_points(i915, old_bw_state, new_bw_state); > + ret = intel_bw_check_qgv_points(display, old_bw_state, new_bw_state); > if (ret) > return ret; > > @@ -1407,8 +1425,8 @@ int intel_bw_atomic_check(struct intel_atomic_state *state) > static void intel_bw_crtc_update(struct intel_bw_state *bw_state, > const struct intel_crtc_state *crtc_state) > { > + struct intel_display *display = to_intel_display(crtc_state); > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > - struct drm_i915_private *i915 = to_i915(crtc->base.dev); > > bw_state->data_rate[crtc->pipe] = > intel_bw_crtc_data_rate(crtc_state); > @@ -1416,7 +1434,7 @@ static void intel_bw_crtc_update(struct intel_bw_state *bw_state, > intel_bw_crtc_num_active_planes(crtc_state); > bw_state->force_check_qgv = true; > > - drm_dbg_kms(&i915->drm, "pipe %c data rate %u num active planes %u\n", > + drm_dbg_kms(display->drm, "pipe %c data rate %u num active planes %u\n", > pipe_name(crtc->pipe), > bw_state->data_rate[crtc->pipe], > bw_state->num_active_planes[crtc->pipe]); > @@ -1499,8 +1517,8 @@ int intel_bw_init(struct drm_i915_private *i915) > * Limit this only if we have SAGV. And for Display version 14 onwards > * sagv is handled though pmdemand requests > */ > - if (intel_has_sagv(i915) && IS_DISPLAY_VER(i915, 11, 13)) > - icl_force_disable_sagv(i915, state); > + if (intel_has_sagv(i915) && IS_DISPLAY_VER(display, 11, 13)) > + icl_force_disable_sagv(display, state); > > return 0; > } > > -- > 2.48.1 -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display 2025-03-10 16:47 ` Ville Syrjälä @ 2025-03-10 19:00 ` Gustavo Sousa 2025-03-11 9:26 ` Jani Nikula 0 siblings, 1 reply; 14+ messages in thread From: Gustavo Sousa @ 2025-03-10 19:00 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx, intel-xe, Matt Roper Quoting Ville Syrjälä (2025-03-10 13:47:57-03:00) >On Fri, Mar 07, 2025 at 04:25:11PM -0300, Gustavo Sousa wrote: >> Update intel_bw.c internally use intel_display. Conversion of the public >> interface will come as a follow-up. >> >> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> >> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> >> --- >> drivers/gpu/drm/i915/display/intel_bw.c | 416 +++++++++++++++++--------------- >> 1 file changed, 217 insertions(+), 199 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c >> index 048be287224774110d94fe2944daa580d8dc20a6..d71dc796f1793f546fe04146e5987a9be56bae9b 100644 >> --- a/drivers/gpu/drm/i915/display/intel_bw.c >> +++ b/drivers/gpu/drm/i915/display/intel_bw.c >> @@ -11,6 +11,7 @@ >> #include "intel_atomic.h" >> #include "intel_bw.h" >> #include "intel_cdclk.h" >> +#include "intel_de.h" >> #include "intel_display_core.h" >> #include "intel_display_types.h" >> #include "skl_watermark.h" >> @@ -39,14 +40,14 @@ struct intel_qgv_info { >> u8 deinterleave; >> }; >> >> -static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, >> +static int dg1_mchbar_read_qgv_point_info(struct intel_display *display, >> struct intel_qgv_point *sp, >> int point) >> { >> u32 dclk_ratio, dclk_reference; >> u32 val; >> >> - val = intel_uncore_read(&dev_priv->uncore, SA_PERF_STATUS_0_0_0_MCHBAR_PC); >> + val = intel_de_read(display, SA_PERF_STATUS_0_0_0_MCHBAR_PC); > >Not entirely convinced we want to start using intel_de_*() on >mchbar registers. > >Apart from that the rest looks fine. Okay. I sent v4 with reverting this function to use intel_uncore_read(). Thanks! -- Gustavo Sousa > >> dclk_ratio = REG_FIELD_GET(DG1_QCLK_RATIO_MASK, val); >> if (val & DG1_QCLK_REFERENCE) >> dclk_reference = 6; /* 6 * 16.666 MHz = 100 MHz */ >> @@ -54,18 +55,18 @@ static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, >> dclk_reference = 8; /* 8 * 16.666 MHz = 133 MHz */ >> sp->dclk = DIV_ROUND_UP((16667 * dclk_ratio * dclk_reference) + 500, 1000); >> >> - val = intel_uncore_read(&dev_priv->uncore, SKL_MC_BIOS_DATA_0_0_0_MCHBAR_PCU); >> + val = intel_de_read(display, SKL_MC_BIOS_DATA_0_0_0_MCHBAR_PCU); >> if (val & DG1_GEAR_TYPE) >> sp->dclk *= 2; >> >> if (sp->dclk == 0) >> return -EINVAL; >> >> - val = intel_uncore_read(&dev_priv->uncore, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR); >> + val = intel_de_read(display, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR); >> sp->t_rp = REG_FIELD_GET(DG1_DRAM_T_RP_MASK, val); >> sp->t_rdpre = REG_FIELD_GET(DG1_DRAM_T_RDPRE_MASK, val); >> >> - val = intel_uncore_read(&dev_priv->uncore, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR_HIGH); >> + val = intel_de_read(display, MCHBAR_CH0_CR_TC_PRE_0_0_0_MCHBAR_HIGH); >> sp->t_rcd = REG_FIELD_GET(DG1_DRAM_T_RCD_MASK, val); >> sp->t_ras = REG_FIELD_GET(DG1_DRAM_T_RAS_MASK, val); >> >> @@ -74,22 +75,23 @@ static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, >> return 0; >> } >> >> -static int icl_pcode_read_qgv_point_info(struct drm_i915_private *dev_priv, >> +static int icl_pcode_read_qgv_point_info(struct intel_display *display, >> struct intel_qgv_point *sp, >> int point) >> { >> + struct drm_i915_private *i915 = to_i915(display->drm); >> u32 val = 0, val2 = 0; >> u16 dclk; >> int ret; >> >> - ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | >> + ret = snb_pcode_read(&i915->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | >> ICL_PCODE_MEM_SS_READ_QGV_POINT_INFO(point), >> &val, &val2); >> if (ret) >> return ret; >> >> dclk = val & 0xffff; >> - sp->dclk = DIV_ROUND_UP((16667 * dclk) + (DISPLAY_VER(dev_priv) >= 12 ? 500 : 0), >> + sp->dclk = DIV_ROUND_UP((16667 * dclk) + (DISPLAY_VER(display) >= 12 ? 500 : 0), >> 1000); >> sp->t_rp = (val & 0xff0000) >> 16; >> sp->t_rcd = (val & 0xff000000) >> 24; >> @@ -102,14 +104,15 @@ static int icl_pcode_read_qgv_point_info(struct drm_i915_private *dev_priv, >> return 0; >> } >> >> -static int adls_pcode_read_psf_gv_point_info(struct drm_i915_private *dev_priv, >> - struct intel_psf_gv_point *points) >> +static int adls_pcode_read_psf_gv_point_info(struct intel_display *display, >> + struct intel_psf_gv_point *points) >> { >> + struct drm_i915_private *i915 = to_i915(display->drm); >> u32 val = 0; >> int ret; >> int i; >> >> - ret = snb_pcode_read(&dev_priv->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | >> + ret = snb_pcode_read(&i915->uncore, ICL_PCODE_MEM_SUBSYSYSTEM_INFO | >> ADL_PCODE_MEM_SS_READ_PSF_GV_INFO, &val, NULL); >> if (ret) >> return ret; >> @@ -122,10 +125,10 @@ static int adls_pcode_read_psf_gv_point_info(struct drm_i915_private *dev_priv, >> return 0; >> } >> >> -static u16 icl_qgv_points_mask(struct drm_i915_private *i915) >> +static u16 icl_qgv_points_mask(struct intel_display *display) >> { >> - unsigned int num_psf_gv_points = i915->display.bw.max[0].num_psf_gv_points; >> - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; >> + unsigned int num_psf_gv_points = display->bw.max[0].num_psf_gv_points; >> + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; >> u16 qgv_points = 0, psf_points = 0; >> >> /* >> @@ -142,18 +145,19 @@ static u16 icl_qgv_points_mask(struct drm_i915_private *i915) >> return ICL_PCODE_REQ_QGV_PT(qgv_points) | ADLS_PCODE_REQ_PSF_PT(psf_points); >> } >> >> -static bool is_sagv_enabled(struct drm_i915_private *i915, u16 points_mask) >> +static bool is_sagv_enabled(struct intel_display *display, u16 points_mask) >> { >> - return !is_power_of_2(~points_mask & icl_qgv_points_mask(i915) & >> + return !is_power_of_2(~points_mask & icl_qgv_points_mask(display) & >> ICL_PCODE_REQ_QGV_PT_MASK); >> } >> >> int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, >> u32 points_mask) >> { >> + struct intel_display *display = &dev_priv->display; >> int ret; >> >> - if (DISPLAY_VER(dev_priv) >= 14) >> + if (DISPLAY_VER(display) >= 14) >> return 0; >> >> /* bspec says to keep retrying for at least 1 ms */ >> @@ -164,27 +168,28 @@ int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, >> 1); >> >> if (ret < 0) { >> - drm_err(&dev_priv->drm, >> + drm_err(display->drm, >> "Failed to disable qgv points (0x%x) points: 0x%x\n", >> ret, points_mask); >> return ret; >> } >> >> - dev_priv->display.sagv.status = is_sagv_enabled(dev_priv, points_mask) ? >> + display->sagv.status = is_sagv_enabled(display, points_mask) ? >> I915_SAGV_ENABLED : I915_SAGV_DISABLED; >> >> return 0; >> } >> >> -static int mtl_read_qgv_point_info(struct drm_i915_private *dev_priv, >> +static int mtl_read_qgv_point_info(struct intel_display *display, >> struct intel_qgv_point *sp, int point) >> { >> + struct drm_i915_private *i915 = to_i915(display->drm); >> u32 val, val2; >> u16 dclk; >> >> - val = intel_uncore_read(&dev_priv->uncore, >> + val = intel_uncore_read(&i915->uncore, >> MTL_MEM_SS_INFO_QGV_POINT_LOW(point)); >> - val2 = intel_uncore_read(&dev_priv->uncore, >> + val2 = intel_uncore_read(&i915->uncore, >> MTL_MEM_SS_INFO_QGV_POINT_HIGH(point)); >> dclk = REG_FIELD_GET(MTL_DCLK_MASK, val); >> sp->dclk = DIV_ROUND_CLOSEST(16667 * dclk, 1000); >> @@ -200,29 +205,30 @@ static int mtl_read_qgv_point_info(struct drm_i915_private *dev_priv, >> } >> >> static int >> -intel_read_qgv_point_info(struct drm_i915_private *dev_priv, >> +intel_read_qgv_point_info(struct intel_display *display, >> struct intel_qgv_point *sp, >> int point) >> { >> - if (DISPLAY_VER(dev_priv) >= 14) >> - return mtl_read_qgv_point_info(dev_priv, sp, point); >> - else if (IS_DG1(dev_priv)) >> - return dg1_mchbar_read_qgv_point_info(dev_priv, sp, point); >> + if (DISPLAY_VER(display) >= 14) >> + return mtl_read_qgv_point_info(display, sp, point); >> + else if (display->platform.dg1) >> + return dg1_mchbar_read_qgv_point_info(display, sp, point); >> else >> - return icl_pcode_read_qgv_point_info(dev_priv, sp, point); >> + return icl_pcode_read_qgv_point_info(display, sp, point); >> } >> >> -static int icl_get_qgv_points(struct drm_i915_private *dev_priv, >> +static int icl_get_qgv_points(struct intel_display *display, >> struct intel_qgv_info *qi, >> bool is_y_tile) >> { >> - const struct dram_info *dram_info = &dev_priv->dram_info; >> + struct drm_i915_private *i915 = to_i915(display->drm); >> + const struct dram_info *dram_info = &i915->dram_info; >> int i, ret; >> >> qi->num_points = dram_info->num_qgv_points; >> qi->num_psf_points = dram_info->num_psf_gv_points; >> >> - if (DISPLAY_VER(dev_priv) >= 14) { >> + if (DISPLAY_VER(display) >= 14) { >> switch (dram_info->type) { >> case INTEL_DRAM_DDR4: >> qi->t_bl = 4; >> @@ -250,7 +256,7 @@ static int icl_get_qgv_points(struct drm_i915_private *dev_priv, >> MISSING_CASE(dram_info->type); >> return -EINVAL; >> } >> - } else if (DISPLAY_VER(dev_priv) >= 12) { >> + } else if (DISPLAY_VER(display) >= 12) { >> switch (dram_info->type) { >> case INTEL_DRAM_DDR4: >> qi->t_bl = is_y_tile ? 8 : 4; >> @@ -265,7 +271,7 @@ static int icl_get_qgv_points(struct drm_i915_private *dev_priv, >> qi->deinterleave = is_y_tile ? 1 : 2; >> break; >> case INTEL_DRAM_LPDDR4: >> - if (IS_ROCKETLAKE(dev_priv)) { >> + if (display->platform.rocketlake) { >> qi->t_bl = 8; >> qi->max_numchannels = 4; >> qi->channel_width = 32; >> @@ -284,39 +290,39 @@ static int icl_get_qgv_points(struct drm_i915_private *dev_priv, >> qi->max_numchannels = 1; >> break; >> } >> - } else if (DISPLAY_VER(dev_priv) == 11) { >> - qi->t_bl = dev_priv->dram_info.type == INTEL_DRAM_DDR4 ? 4 : 8; >> + } else if (DISPLAY_VER(display) == 11) { >> + qi->t_bl = dram_info->type == INTEL_DRAM_DDR4 ? 4 : 8; >> qi->max_numchannels = 1; >> } >> >> - if (drm_WARN_ON(&dev_priv->drm, >> + if (drm_WARN_ON(display->drm, >> qi->num_points > ARRAY_SIZE(qi->points))) >> qi->num_points = ARRAY_SIZE(qi->points); >> >> for (i = 0; i < qi->num_points; i++) { >> struct intel_qgv_point *sp = &qi->points[i]; >> >> - ret = intel_read_qgv_point_info(dev_priv, sp, i); >> + ret = intel_read_qgv_point_info(display, sp, i); >> if (ret) { >> - drm_dbg_kms(&dev_priv->drm, "Could not read QGV %d info\n", i); >> + drm_dbg_kms(display->drm, "Could not read QGV %d info\n", i); >> return ret; >> } >> >> - drm_dbg_kms(&dev_priv->drm, >> + drm_dbg_kms(display->drm, >> "QGV %d: DCLK=%d tRP=%d tRDPRE=%d tRAS=%d tRCD=%d tRC=%d\n", >> i, sp->dclk, sp->t_rp, sp->t_rdpre, sp->t_ras, >> sp->t_rcd, sp->t_rc); >> } >> >> if (qi->num_psf_points > 0) { >> - ret = adls_pcode_read_psf_gv_point_info(dev_priv, qi->psf_points); >> + ret = adls_pcode_read_psf_gv_point_info(display, qi->psf_points); >> if (ret) { >> - drm_err(&dev_priv->drm, "Failed to read PSF point data; PSF points will not be considered in bandwidth calculations.\n"); >> + drm_err(display->drm, "Failed to read PSF point data; PSF points will not be considered in bandwidth calculations.\n"); >> qi->num_psf_points = 0; >> } >> >> for (i = 0; i < qi->num_psf_points; i++) >> - drm_dbg_kms(&dev_priv->drm, >> + drm_dbg_kms(display->drm, >> "PSF GV %d: CLK=%d \n", >> i, qi->psf_points[i].clk); >> } >> @@ -398,20 +404,21 @@ static const struct intel_sa_info xe2_hpd_sa_info = { >> /* Other values not used by simplified algorithm */ >> }; >> >> -static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel_sa_info *sa) >> +static int icl_get_bw_info(struct intel_display *display, const struct intel_sa_info *sa) >> { >> + struct drm_i915_private *i915 = to_i915(display->drm); >> struct intel_qgv_info qi = {}; >> bool is_y_tile = true; /* assume y tile may be used */ >> - int num_channels = max_t(u8, 1, dev_priv->dram_info.num_channels); >> + int num_channels = max_t(u8, 1, i915->dram_info.num_channels); >> int ipqdepth, ipqdepthpch = 16; >> int dclk_max; >> int maxdebw; >> - int num_groups = ARRAY_SIZE(dev_priv->display.bw.max); >> + int num_groups = ARRAY_SIZE(display->bw.max); >> int i, ret; >> >> - ret = icl_get_qgv_points(dev_priv, &qi, is_y_tile); >> + ret = icl_get_qgv_points(display, &qi, is_y_tile); >> if (ret) { >> - drm_dbg_kms(&dev_priv->drm, >> + drm_dbg_kms(display->drm, >> "Failed to get memory subsystem information, ignoring bandwidth limits"); >> return ret; >> } >> @@ -422,7 +429,7 @@ static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel >> qi.deinterleave = DIV_ROUND_UP(num_channels, is_y_tile ? 4 : 2); >> >> for (i = 0; i < num_groups; i++) { >> - struct intel_bw_info *bi = &dev_priv->display.bw.max[i]; >> + struct intel_bw_info *bi = &display->bw.max[i]; >> int clpchgroup; >> int j; >> >> @@ -449,7 +456,7 @@ static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel >> bi->deratedbw[j] = min(maxdebw, >> bw * (100 - sa->derating) / 100); >> >> - drm_dbg_kms(&dev_priv->drm, >> + drm_dbg_kms(display->drm, >> "BW%d / QGV %d: num_planes=%d deratedbw=%u\n", >> i, j, bi->num_planes, bi->deratedbw[j]); >> } >> @@ -460,44 +467,45 @@ static int icl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel >> * as it will fail and pointless anyway. >> */ >> if (qi.num_points == 1) >> - dev_priv->display.sagv.status = I915_SAGV_NOT_CONTROLLED; >> + display->sagv.status = I915_SAGV_NOT_CONTROLLED; >> else >> - dev_priv->display.sagv.status = I915_SAGV_ENABLED; >> + display->sagv.status = I915_SAGV_ENABLED; >> >> return 0; >> } >> >> -static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel_sa_info *sa) >> +static int tgl_get_bw_info(struct intel_display *display, const struct intel_sa_info *sa) >> { >> + struct drm_i915_private *i915 = to_i915(display->drm); >> struct intel_qgv_info qi = {}; >> - const struct dram_info *dram_info = &dev_priv->dram_info; >> + const struct dram_info *dram_info = &i915->dram_info; >> bool is_y_tile = true; /* assume y tile may be used */ >> - int num_channels = max_t(u8, 1, dev_priv->dram_info.num_channels); >> + int num_channels = max_t(u8, 1, dram_info->num_channels); >> int ipqdepth, ipqdepthpch = 16; >> int dclk_max; >> int maxdebw, peakbw; >> int clperchgroup; >> - int num_groups = ARRAY_SIZE(dev_priv->display.bw.max); >> + int num_groups = ARRAY_SIZE(display->bw.max); >> int i, ret; >> >> - ret = icl_get_qgv_points(dev_priv, &qi, is_y_tile); >> + ret = icl_get_qgv_points(display, &qi, is_y_tile); >> if (ret) { >> - drm_dbg_kms(&dev_priv->drm, >> + drm_dbg_kms(display->drm, >> "Failed to get memory subsystem information, ignoring bandwidth limits"); >> return ret; >> } >> >> - if (DISPLAY_VER(dev_priv) < 14 && >> + if (DISPLAY_VER(display) < 14 && >> (dram_info->type == INTEL_DRAM_LPDDR4 || dram_info->type == INTEL_DRAM_LPDDR5)) >> num_channels *= 2; >> >> qi.deinterleave = qi.deinterleave ? : DIV_ROUND_UP(num_channels, is_y_tile ? 4 : 2); >> >> - if (num_channels < qi.max_numchannels && DISPLAY_VER(dev_priv) >= 12) >> + if (num_channels < qi.max_numchannels && DISPLAY_VER(display) >= 12) >> qi.deinterleave = max(DIV_ROUND_UP(qi.deinterleave, 2), 1); >> >> - if (DISPLAY_VER(dev_priv) >= 12 && num_channels > qi.max_numchannels) >> - drm_warn(&dev_priv->drm, "Number of channels exceeds max number of channels."); >> + if (DISPLAY_VER(display) >= 12 && num_channels > qi.max_numchannels) >> + drm_warn(display->drm, "Number of channels exceeds max number of channels."); >> if (qi.max_numchannels != 0) >> num_channels = min_t(u8, num_channels, qi.max_numchannels); >> >> @@ -514,7 +522,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel >> clperchgroup = 4 * DIV_ROUND_UP(8, num_channels) * qi.deinterleave; >> >> for (i = 0; i < num_groups; i++) { >> - struct intel_bw_info *bi = &dev_priv->display.bw.max[i]; >> + struct intel_bw_info *bi = &display->bw.max[i]; >> struct intel_bw_info *bi_next; >> int clpchgroup; >> int j; >> @@ -522,7 +530,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel >> clpchgroup = (sa->deburst * qi.deinterleave / num_channels) << i; >> >> if (i < num_groups - 1) { >> - bi_next = &dev_priv->display.bw.max[i + 1]; >> + bi_next = &display->bw.max[i + 1]; >> >> if (clpchgroup < clperchgroup) >> bi_next->num_planes = (ipqdepth - clpchgroup) / >> @@ -554,7 +562,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel >> num_channels * >> qi.channel_width, 8); >> >> - drm_dbg_kms(&dev_priv->drm, >> + drm_dbg_kms(display->drm, >> "BW%d / QGV %d: num_planes=%d deratedbw=%u peakbw: %u\n", >> i, j, bi->num_planes, bi->deratedbw[j], >> bi->peakbw[j]); >> @@ -565,7 +573,7 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel >> >> bi->psf_bw[j] = adl_calc_psf_bw(sp->clk); >> >> - drm_dbg_kms(&dev_priv->drm, >> + drm_dbg_kms(display->drm, >> "BW%d / PSF GV %d: num_planes=%d bw=%u\n", >> i, j, bi->num_planes, bi->psf_bw[j]); >> } >> @@ -577,17 +585,17 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intel >> * as it will fail and pointless anyway. >> */ >> if (qi.num_points == 1) >> - dev_priv->display.sagv.status = I915_SAGV_NOT_CONTROLLED; >> + display->sagv.status = I915_SAGV_NOT_CONTROLLED; >> else >> - dev_priv->display.sagv.status = I915_SAGV_ENABLED; >> + display->sagv.status = I915_SAGV_ENABLED; >> >> return 0; >> } >> >> -static void dg2_get_bw_info(struct drm_i915_private *i915) >> +static void dg2_get_bw_info(struct intel_display *display) >> { >> - unsigned int deratedbw = IS_DG2_G11(i915) ? 38000 : 50000; >> - int num_groups = ARRAY_SIZE(i915->display.bw.max); >> + unsigned int deratedbw = display->platform.dg2_g11 ? 38000 : 50000; >> + int num_groups = ARRAY_SIZE(display->bw.max); >> int i; >> >> /* >> @@ -598,7 +606,7 @@ static void dg2_get_bw_info(struct drm_i915_private *i915) >> * whereas DG2-G11 platforms have 38 GB/s. >> */ >> for (i = 0; i < num_groups; i++) { >> - struct intel_bw_info *bi = &i915->display.bw.max[i]; >> + struct intel_bw_info *bi = &display->bw.max[i]; >> >> bi->num_planes = 1; >> /* Need only one dummy QGV point per group */ >> @@ -606,20 +614,21 @@ static void dg2_get_bw_info(struct drm_i915_private *i915) >> bi->deratedbw[0] = deratedbw; >> } >> >> - i915->display.sagv.status = I915_SAGV_NOT_CONTROLLED; >> + display->sagv.status = I915_SAGV_NOT_CONTROLLED; >> } >> >> -static int xe2_hpd_get_bw_info(struct drm_i915_private *i915, >> +static int xe2_hpd_get_bw_info(struct intel_display *display, >> const struct intel_sa_info *sa) >> { >> + struct drm_i915_private *i915 = to_i915(display->drm); >> struct intel_qgv_info qi = {}; >> int num_channels = i915->dram_info.num_channels; >> int peakbw, maxdebw; >> int ret, i; >> >> - ret = icl_get_qgv_points(i915, &qi, true); >> + ret = icl_get_qgv_points(display, &qi, true); >> if (ret) { >> - drm_dbg_kms(&i915->drm, >> + drm_dbg_kms(display->drm, >> "Failed to get memory subsystem information, ignoring bandwidth limits"); >> return ret; >> } >> @@ -631,33 +640,33 @@ static int xe2_hpd_get_bw_info(struct drm_i915_private *i915, >> const struct intel_qgv_point *point = &qi.points[i]; >> int bw = num_channels * (qi.channel_width / 8) * point->dclk; >> >> - i915->display.bw.max[0].deratedbw[i] = >> + display->bw.max[0].deratedbw[i] = >> min(maxdebw, (100 - sa->derating) * bw / 100); >> - i915->display.bw.max[0].peakbw[i] = bw; >> + display->bw.max[0].peakbw[i] = bw; >> >> - drm_dbg_kms(&i915->drm, "QGV %d: deratedbw=%u peakbw: %u\n", >> - i, i915->display.bw.max[0].deratedbw[i], >> - i915->display.bw.max[0].peakbw[i]); >> + drm_dbg_kms(display->drm, "QGV %d: deratedbw=%u peakbw: %u\n", >> + i, display->bw.max[0].deratedbw[i], >> + display->bw.max[0].peakbw[i]); >> } >> >> /* Bandwidth does not depend on # of planes; set all groups the same */ >> - i915->display.bw.max[0].num_planes = 1; >> - i915->display.bw.max[0].num_qgv_points = qi.num_points; >> - for (i = 1; i < ARRAY_SIZE(i915->display.bw.max); i++) >> - memcpy(&i915->display.bw.max[i], &i915->display.bw.max[0], >> - sizeof(i915->display.bw.max[0])); >> + display->bw.max[0].num_planes = 1; >> + display->bw.max[0].num_qgv_points = qi.num_points; >> + for (i = 1; i < ARRAY_SIZE(display->bw.max); i++) >> + memcpy(&display->bw.max[i], &display->bw.max[0], >> + sizeof(display->bw.max[0])); >> >> /* >> * Xe2_HPD should always have exactly two QGV points representing >> * battery and plugged-in operation. >> */ >> - drm_WARN_ON(&i915->drm, qi.num_points != 2); >> - i915->display.sagv.status = I915_SAGV_ENABLED; >> + drm_WARN_ON(display->drm, qi.num_points != 2); >> + display->sagv.status = I915_SAGV_ENABLED; >> >> return 0; >> } >> >> -static unsigned int icl_max_bw_index(struct drm_i915_private *dev_priv, >> +static unsigned int icl_max_bw_index(struct intel_display *display, >> int num_planes, int qgv_point) >> { >> int i; >> @@ -667,9 +676,9 @@ static unsigned int icl_max_bw_index(struct drm_i915_private *dev_priv, >> */ >> num_planes = max(1, num_planes); >> >> - for (i = 0; i < ARRAY_SIZE(dev_priv->display.bw.max); i++) { >> + for (i = 0; i < ARRAY_SIZE(display->bw.max); i++) { >> const struct intel_bw_info *bi = >> - &dev_priv->display.bw.max[i]; >> + &display->bw.max[i]; >> >> /* >> * Pcode will not expose all QGV points when >> @@ -685,7 +694,7 @@ static unsigned int icl_max_bw_index(struct drm_i915_private *dev_priv, >> return UINT_MAX; >> } >> >> -static unsigned int tgl_max_bw_index(struct drm_i915_private *dev_priv, >> +static unsigned int tgl_max_bw_index(struct intel_display *display, >> int num_planes, int qgv_point) >> { >> int i; >> @@ -695,9 +704,9 @@ static unsigned int tgl_max_bw_index(struct drm_i915_private *dev_priv, >> */ >> num_planes = max(1, num_planes); >> >> - for (i = ARRAY_SIZE(dev_priv->display.bw.max) - 1; i >= 0; i--) { >> + for (i = ARRAY_SIZE(display->bw.max) - 1; i >= 0; i--) { >> const struct intel_bw_info *bi = >> - &dev_priv->display.bw.max[i]; >> + &display->bw.max[i]; >> >> /* >> * Pcode will not expose all QGV points when >> @@ -713,52 +722,54 @@ static unsigned int tgl_max_bw_index(struct drm_i915_private *dev_priv, >> return 0; >> } >> >> -static unsigned int adl_psf_bw(struct drm_i915_private *dev_priv, >> +static unsigned int adl_psf_bw(struct intel_display *display, >> int psf_gv_point) >> { >> const struct intel_bw_info *bi = >> - &dev_priv->display.bw.max[0]; >> + &display->bw.max[0]; >> >> return bi->psf_bw[psf_gv_point]; >> } >> >> -static unsigned int icl_qgv_bw(struct drm_i915_private *i915, >> +static unsigned int icl_qgv_bw(struct intel_display *display, >> int num_active_planes, int qgv_point) >> { >> unsigned int idx; >> >> - if (DISPLAY_VER(i915) >= 12) >> - idx = tgl_max_bw_index(i915, num_active_planes, qgv_point); >> + if (DISPLAY_VER(display) >= 12) >> + idx = tgl_max_bw_index(display, num_active_planes, qgv_point); >> else >> - idx = icl_max_bw_index(i915, num_active_planes, qgv_point); >> + idx = icl_max_bw_index(display, num_active_planes, qgv_point); >> >> - if (idx >= ARRAY_SIZE(i915->display.bw.max)) >> + if (idx >= ARRAY_SIZE(display->bw.max)) >> return 0; >> >> - return i915->display.bw.max[idx].deratedbw[qgv_point]; >> + return display->bw.max[idx].deratedbw[qgv_point]; >> } >> >> void intel_bw_init_hw(struct drm_i915_private *dev_priv) >> { >> - if (!HAS_DISPLAY(dev_priv)) >> + struct intel_display *display = &dev_priv->display; >> + >> + if (!HAS_DISPLAY(display)) >> return; >> >> - if (DISPLAY_VERx100(dev_priv) >= 1401 && IS_DGFX(dev_priv)) >> - xe2_hpd_get_bw_info(dev_priv, &xe2_hpd_sa_info); >> - else if (DISPLAY_VER(dev_priv) >= 14) >> - tgl_get_bw_info(dev_priv, &mtl_sa_info); >> - else if (IS_DG2(dev_priv)) >> - dg2_get_bw_info(dev_priv); >> - else if (IS_ALDERLAKE_P(dev_priv)) >> - tgl_get_bw_info(dev_priv, &adlp_sa_info); >> - else if (IS_ALDERLAKE_S(dev_priv)) >> - tgl_get_bw_info(dev_priv, &adls_sa_info); >> - else if (IS_ROCKETLAKE(dev_priv)) >> - tgl_get_bw_info(dev_priv, &rkl_sa_info); >> - else if (DISPLAY_VER(dev_priv) == 12) >> - tgl_get_bw_info(dev_priv, &tgl_sa_info); >> - else if (DISPLAY_VER(dev_priv) == 11) >> - icl_get_bw_info(dev_priv, &icl_sa_info); >> + if (DISPLAY_VERx100(display) >= 1401 && display->platform.dgfx) >> + xe2_hpd_get_bw_info(display, &xe2_hpd_sa_info); >> + else if (DISPLAY_VER(display) >= 14) >> + tgl_get_bw_info(display, &mtl_sa_info); >> + else if (display->platform.dg2) >> + dg2_get_bw_info(display); >> + else if (display->platform.alderlake_p) >> + tgl_get_bw_info(display, &adlp_sa_info); >> + else if (display->platform.alderlake_s) >> + tgl_get_bw_info(display, &adls_sa_info); >> + else if (display->platform.rocketlake) >> + tgl_get_bw_info(display, &rkl_sa_info); >> + else if (DISPLAY_VER(display) == 12) >> + tgl_get_bw_info(display, &tgl_sa_info); >> + else if (DISPLAY_VER(display) == 11) >> + icl_get_bw_info(display, &icl_sa_info); >> } >> >> static unsigned int intel_bw_crtc_num_active_planes(const struct intel_crtc_state *crtc_state) >> @@ -772,8 +783,8 @@ static unsigned int intel_bw_crtc_num_active_planes(const struct intel_crtc_stat >> >> static unsigned int intel_bw_crtc_data_rate(const struct intel_crtc_state *crtc_state) >> { >> + struct intel_display *display = to_intel_display(crtc_state); >> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> unsigned int data_rate = 0; >> enum plane_id plane_id; >> >> @@ -787,7 +798,7 @@ static unsigned int intel_bw_crtc_data_rate(const struct intel_crtc_state *crtc_ >> >> data_rate += crtc_state->data_rate[plane_id]; >> >> - if (DISPLAY_VER(i915) < 11) >> + if (DISPLAY_VER(display) < 11) >> data_rate += crtc_state->data_rate_y[plane_id]; >> } >> >> @@ -797,37 +808,37 @@ static unsigned int intel_bw_crtc_data_rate(const struct intel_crtc_state *crtc_ >> /* "Maximum Pipe Read Bandwidth" */ >> static int intel_bw_crtc_min_cdclk(const struct intel_crtc_state *crtc_state) >> { >> - struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> + struct intel_display *display = to_intel_display(crtc_state); >> >> - if (DISPLAY_VER(i915) < 12) >> + if (DISPLAY_VER(display) < 12) >> return 0; >> >> return DIV_ROUND_UP_ULL(mul_u32_u32(intel_bw_crtc_data_rate(crtc_state), 10), 512); >> } >> >> -static unsigned int intel_bw_num_active_planes(struct drm_i915_private *dev_priv, >> +static unsigned int intel_bw_num_active_planes(struct intel_display *display, >> const struct intel_bw_state *bw_state) >> { >> unsigned int num_active_planes = 0; >> enum pipe pipe; >> >> - for_each_pipe(dev_priv, pipe) >> + for_each_pipe(display, pipe) >> num_active_planes += bw_state->num_active_planes[pipe]; >> >> return num_active_planes; >> } >> >> -static unsigned int intel_bw_data_rate(struct drm_i915_private *dev_priv, >> +static unsigned int intel_bw_data_rate(struct intel_display *display, >> const struct intel_bw_state *bw_state) >> { >> + struct drm_i915_private *i915 = to_i915(display->drm); >> unsigned int data_rate = 0; >> enum pipe pipe; >> >> - for_each_pipe(dev_priv, pipe) >> + for_each_pipe(display, pipe) >> data_rate += bw_state->data_rate[pipe]; >> >> - if (DISPLAY_VER(dev_priv) >= 13 && i915_vtd_active(dev_priv)) >> + if (DISPLAY_VER(display) >= 13 && i915_vtd_active(i915)) >> data_rate = DIV_ROUND_UP(data_rate * 105, 100); >> >> return data_rate; >> @@ -836,10 +847,10 @@ static unsigned int intel_bw_data_rate(struct drm_i915_private *dev_priv, >> struct intel_bw_state * >> intel_atomic_get_old_bw_state(struct intel_atomic_state *state) >> { >> - struct drm_i915_private *dev_priv = to_i915(state->base.dev); >> + struct intel_display *display = to_intel_display(state); >> struct intel_global_state *bw_state; >> >> - bw_state = intel_atomic_get_old_global_obj_state(state, &dev_priv->display.bw.obj); >> + bw_state = intel_atomic_get_old_global_obj_state(state, &display->bw.obj); >> >> return to_intel_bw_state(bw_state); >> } >> @@ -847,10 +858,10 @@ intel_atomic_get_old_bw_state(struct intel_atomic_state *state) >> struct intel_bw_state * >> intel_atomic_get_new_bw_state(struct intel_atomic_state *state) >> { >> - struct drm_i915_private *dev_priv = to_i915(state->base.dev); >> + struct intel_display *display = to_intel_display(state); >> struct intel_global_state *bw_state; >> >> - bw_state = intel_atomic_get_new_global_obj_state(state, &dev_priv->display.bw.obj); >> + bw_state = intel_atomic_get_new_global_obj_state(state, &display->bw.obj); >> >> return to_intel_bw_state(bw_state); >> } >> @@ -858,27 +869,27 @@ intel_atomic_get_new_bw_state(struct intel_atomic_state *state) >> struct intel_bw_state * >> intel_atomic_get_bw_state(struct intel_atomic_state *state) >> { >> - struct drm_i915_private *dev_priv = to_i915(state->base.dev); >> + struct intel_display *display = to_intel_display(state); >> struct intel_global_state *bw_state; >> >> - bw_state = intel_atomic_get_global_obj_state(state, &dev_priv->display.bw.obj); >> + bw_state = intel_atomic_get_global_obj_state(state, &display->bw.obj); >> if (IS_ERR(bw_state)) >> return ERR_CAST(bw_state); >> >> return to_intel_bw_state(bw_state); >> } >> >> -static unsigned int icl_max_bw_qgv_point_mask(struct drm_i915_private *i915, >> +static unsigned int icl_max_bw_qgv_point_mask(struct intel_display *display, >> int num_active_planes) >> { >> - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; >> + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; >> unsigned int max_bw_point = 0; >> unsigned int max_bw = 0; >> int i; >> >> for (i = 0; i < num_qgv_points; i++) { >> unsigned int max_data_rate = >> - icl_qgv_bw(i915, num_active_planes, i); >> + icl_qgv_bw(display, num_active_planes, i); >> >> /* >> * We need to know which qgv point gives us >> @@ -897,23 +908,23 @@ static unsigned int icl_max_bw_qgv_point_mask(struct drm_i915_private *i915, >> return max_bw_point; >> } >> >> -static u16 icl_prepare_qgv_points_mask(struct drm_i915_private *i915, >> +static u16 icl_prepare_qgv_points_mask(struct intel_display *display, >> unsigned int qgv_points, >> unsigned int psf_points) >> { >> return ~(ICL_PCODE_REQ_QGV_PT(qgv_points) | >> - ADLS_PCODE_REQ_PSF_PT(psf_points)) & icl_qgv_points_mask(i915); >> + ADLS_PCODE_REQ_PSF_PT(psf_points)) & icl_qgv_points_mask(display); >> } >> >> -static unsigned int icl_max_bw_psf_gv_point_mask(struct drm_i915_private *i915) >> +static unsigned int icl_max_bw_psf_gv_point_mask(struct intel_display *display) >> { >> - unsigned int num_psf_gv_points = i915->display.bw.max[0].num_psf_gv_points; >> + unsigned int num_psf_gv_points = display->bw.max[0].num_psf_gv_points; >> unsigned int max_bw_point_mask = 0; >> unsigned int max_bw = 0; >> int i; >> >> for (i = 0; i < num_psf_gv_points; i++) { >> - unsigned int max_data_rate = adl_psf_bw(i915, i); >> + unsigned int max_data_rate = adl_psf_bw(display, i); >> >> if (max_data_rate > max_bw) { >> max_bw_point_mask = BIT(i); >> @@ -926,29 +937,31 @@ static unsigned int icl_max_bw_psf_gv_point_mask(struct drm_i915_private *i915) >> return max_bw_point_mask; >> } >> >> -static void icl_force_disable_sagv(struct drm_i915_private *i915, >> +static void icl_force_disable_sagv(struct intel_display *display, >> struct intel_bw_state *bw_state) >> { >> - unsigned int qgv_points = icl_max_bw_qgv_point_mask(i915, 0); >> - unsigned int psf_points = icl_max_bw_psf_gv_point_mask(i915); >> + struct drm_i915_private *i915 = to_i915(display->drm); >> + unsigned int qgv_points = icl_max_bw_qgv_point_mask(display, 0); >> + unsigned int psf_points = icl_max_bw_psf_gv_point_mask(display); >> >> - bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(i915, >> + bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(display, >> qgv_points, >> psf_points); >> >> - drm_dbg_kms(&i915->drm, "Forcing SAGV disable: mask 0x%x\n", >> + drm_dbg_kms(display->drm, "Forcing SAGV disable: mask 0x%x\n", >> bw_state->qgv_points_mask); >> >> icl_pcode_restrict_qgv_points(i915, bw_state->qgv_points_mask); >> } >> >> -static int mtl_find_qgv_points(struct drm_i915_private *i915, >> +static int mtl_find_qgv_points(struct intel_display *display, >> unsigned int data_rate, >> unsigned int num_active_planes, >> struct intel_bw_state *new_bw_state) >> { >> + struct drm_i915_private *i915 = to_i915(display->drm); >> unsigned int best_rate = UINT_MAX; >> - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; >> + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; >> unsigned int qgv_peak_bw = 0; >> int i; >> int ret; >> @@ -964,7 +977,7 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, >> */ >> if (!intel_can_enable_sagv(i915, new_bw_state)) { >> new_bw_state->qgv_point_peakbw = U16_MAX; >> - drm_dbg_kms(&i915->drm, "No SAGV, use UINT_MAX as peak bw."); >> + drm_dbg_kms(display->drm, "No SAGV, use UINT_MAX as peak bw."); >> return 0; >> } >> >> @@ -974,27 +987,27 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, >> */ >> for (i = 0; i < num_qgv_points; i++) { >> unsigned int bw_index = >> - tgl_max_bw_index(i915, num_active_planes, i); >> + tgl_max_bw_index(display, num_active_planes, i); >> unsigned int max_data_rate; >> >> - if (bw_index >= ARRAY_SIZE(i915->display.bw.max)) >> + if (bw_index >= ARRAY_SIZE(display->bw.max)) >> continue; >> >> - max_data_rate = i915->display.bw.max[bw_index].deratedbw[i]; >> + max_data_rate = display->bw.max[bw_index].deratedbw[i]; >> >> if (max_data_rate < data_rate) >> continue; >> >> if (max_data_rate - data_rate < best_rate) { >> best_rate = max_data_rate - data_rate; >> - qgv_peak_bw = i915->display.bw.max[bw_index].peakbw[i]; >> + qgv_peak_bw = display->bw.max[bw_index].peakbw[i]; >> } >> >> - drm_dbg_kms(&i915->drm, "QGV point %d: max bw %d required %d qgv_peak_bw: %d\n", >> + drm_dbg_kms(display->drm, "QGV point %d: max bw %d required %d qgv_peak_bw: %d\n", >> i, max_data_rate, data_rate, qgv_peak_bw); >> } >> >> - drm_dbg_kms(&i915->drm, "Matching peaks QGV bw: %d for required data rate: %d\n", >> + drm_dbg_kms(display->drm, "Matching peaks QGV bw: %d for required data rate: %d\n", >> qgv_peak_bw, data_rate); >> >> /* >> @@ -1002,7 +1015,7 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, >> * satisfying the required data rate is found >> */ >> if (qgv_peak_bw == 0) { >> - drm_dbg_kms(&i915->drm, "No QGV points for bw %d for display configuration(%d active planes).\n", >> + drm_dbg_kms(display->drm, "No QGV points for bw %d for display configuration(%d active planes).\n", >> data_rate, num_active_planes); >> return -EINVAL; >> } >> @@ -1013,14 +1026,15 @@ static int mtl_find_qgv_points(struct drm_i915_private *i915, >> return 0; >> } >> >> -static int icl_find_qgv_points(struct drm_i915_private *i915, >> +static int icl_find_qgv_points(struct intel_display *display, >> unsigned int data_rate, >> unsigned int num_active_planes, >> const struct intel_bw_state *old_bw_state, >> struct intel_bw_state *new_bw_state) >> { >> - unsigned int num_psf_gv_points = i915->display.bw.max[0].num_psf_gv_points; >> - unsigned int num_qgv_points = i915->display.bw.max[0].num_qgv_points; >> + struct drm_i915_private *i915 = to_i915(display->drm); >> + unsigned int num_psf_gv_points = display->bw.max[0].num_psf_gv_points; >> + unsigned int num_qgv_points = display->bw.max[0].num_qgv_points; >> u16 psf_points = 0; >> u16 qgv_points = 0; >> int i; >> @@ -1031,22 +1045,22 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, >> return ret; >> >> for (i = 0; i < num_qgv_points; i++) { >> - unsigned int max_data_rate = icl_qgv_bw(i915, >> + unsigned int max_data_rate = icl_qgv_bw(display, >> num_active_planes, i); >> if (max_data_rate >= data_rate) >> qgv_points |= BIT(i); >> >> - drm_dbg_kms(&i915->drm, "QGV point %d: max bw %d required %d\n", >> + drm_dbg_kms(display->drm, "QGV point %d: max bw %d required %d\n", >> i, max_data_rate, data_rate); >> } >> >> for (i = 0; i < num_psf_gv_points; i++) { >> - unsigned int max_data_rate = adl_psf_bw(i915, i); >> + unsigned int max_data_rate = adl_psf_bw(display, i); >> >> if (max_data_rate >= data_rate) >> psf_points |= BIT(i); >> >> - drm_dbg_kms(&i915->drm, "PSF GV point %d: max bw %d" >> + drm_dbg_kms(display->drm, "PSF GV point %d: max bw %d" >> " required %d\n", >> i, max_data_rate, data_rate); >> } >> @@ -1057,14 +1071,14 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, >> * reasons. >> */ >> if (qgv_points == 0) { >> - drm_dbg_kms(&i915->drm, "No QGV points provide sufficient memory" >> + drm_dbg_kms(display->drm, "No QGV points provide sufficient memory" >> " bandwidth %d for display configuration(%d active planes).\n", >> data_rate, num_active_planes); >> return -EINVAL; >> } >> >> if (num_psf_gv_points > 0 && psf_points == 0) { >> - drm_dbg_kms(&i915->drm, "No PSF GV points provide sufficient memory" >> + drm_dbg_kms(display->drm, "No PSF GV points provide sufficient memory" >> " bandwidth %d for display configuration(%d active planes).\n", >> data_rate, num_active_planes); >> return -EINVAL; >> @@ -1076,8 +1090,8 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, >> * cause. >> */ >> if (!intel_can_enable_sagv(i915, new_bw_state)) { >> - qgv_points = icl_max_bw_qgv_point_mask(i915, num_active_planes); >> - drm_dbg_kms(&i915->drm, "No SAGV, using single QGV point mask 0x%x\n", >> + qgv_points = icl_max_bw_qgv_point_mask(display, num_active_planes); >> + drm_dbg_kms(display->drm, "No SAGV, using single QGV point mask 0x%x\n", >> qgv_points); >> } >> >> @@ -1085,7 +1099,7 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, >> * We store the ones which need to be masked as that is what PCode >> * actually accepts as a parameter. >> */ >> - new_bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(i915, >> + new_bw_state->qgv_points_mask = icl_prepare_qgv_points_mask(display, >> qgv_points, >> psf_points); >> /* >> @@ -1101,38 +1115,38 @@ static int icl_find_qgv_points(struct drm_i915_private *i915, >> return 0; >> } >> >> -static int intel_bw_check_qgv_points(struct drm_i915_private *i915, >> +static int intel_bw_check_qgv_points(struct intel_display *display, >> const struct intel_bw_state *old_bw_state, >> struct intel_bw_state *new_bw_state) >> { >> - unsigned int data_rate = intel_bw_data_rate(i915, new_bw_state); >> + unsigned int data_rate = intel_bw_data_rate(display, new_bw_state); >> unsigned int num_active_planes = >> - intel_bw_num_active_planes(i915, new_bw_state); >> + intel_bw_num_active_planes(display, new_bw_state); >> >> data_rate = DIV_ROUND_UP(data_rate, 1000); >> >> - if (DISPLAY_VER(i915) >= 14) >> - return mtl_find_qgv_points(i915, data_rate, num_active_planes, >> + if (DISPLAY_VER(display) >= 14) >> + return mtl_find_qgv_points(display, data_rate, num_active_planes, >> new_bw_state); >> else >> - return icl_find_qgv_points(i915, data_rate, num_active_planes, >> + return icl_find_qgv_points(display, data_rate, num_active_planes, >> old_bw_state, new_bw_state); >> } >> >> -static bool intel_bw_state_changed(struct drm_i915_private *i915, >> +static bool intel_bw_state_changed(struct intel_display *display, >> const struct intel_bw_state *old_bw_state, >> const struct intel_bw_state *new_bw_state) >> { >> enum pipe pipe; >> >> - for_each_pipe(i915, pipe) { >> + for_each_pipe(display, pipe) { >> const struct intel_dbuf_bw *old_crtc_bw = >> &old_bw_state->dbuf_bw[pipe]; >> const struct intel_dbuf_bw *new_crtc_bw = >> &new_bw_state->dbuf_bw[pipe]; >> enum dbuf_slice slice; >> >> - for_each_dbuf_slice(i915, slice) { >> + for_each_dbuf_slice(display, slice) { >> if (old_crtc_bw->max_bw[slice] != new_crtc_bw->max_bw[slice] || >> old_crtc_bw->active_planes[slice] != new_crtc_bw->active_planes[slice]) >> return true; >> @@ -1151,7 +1165,8 @@ static void skl_plane_calc_dbuf_bw(struct intel_bw_state *bw_state, >> const struct skl_ddb_entry *ddb, >> unsigned int data_rate) >> { >> - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> + struct intel_display *display = to_intel_display(crtc); >> + struct drm_i915_private *i915 = to_i915(display->drm); >> struct intel_dbuf_bw *crtc_bw = &bw_state->dbuf_bw[crtc->pipe]; >> unsigned int dbuf_mask = skl_ddb_dbuf_slice_mask(i915, ddb); >> enum dbuf_slice slice; >> @@ -1160,7 +1175,7 @@ static void skl_plane_calc_dbuf_bw(struct intel_bw_state *bw_state, >> * The arbiter can only really guarantee an >> * equal share of the total bw to each plane. >> */ >> - for_each_dbuf_slice_in_mask(i915, slice, dbuf_mask) { >> + for_each_dbuf_slice_in_mask(display, slice, dbuf_mask) { >> crtc_bw->max_bw[slice] = max(crtc_bw->max_bw[slice], data_rate); >> crtc_bw->active_planes[slice] |= BIT(plane_id); >> } >> @@ -1169,8 +1184,8 @@ static void skl_plane_calc_dbuf_bw(struct intel_bw_state *bw_state, >> static void skl_crtc_calc_dbuf_bw(struct intel_bw_state *bw_state, >> const struct intel_crtc_state *crtc_state) >> { >> + struct intel_display *display = to_intel_display(crtc_state); >> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> struct intel_dbuf_bw *crtc_bw = &bw_state->dbuf_bw[crtc->pipe]; >> enum plane_id plane_id; >> >> @@ -1191,7 +1206,7 @@ static void skl_crtc_calc_dbuf_bw(struct intel_bw_state *bw_state, >> &crtc_state->wm.skl.plane_ddb[plane_id], >> crtc_state->data_rate[plane_id]); >> >> - if (DISPLAY_VER(i915) < 11) >> + if (DISPLAY_VER(display) < 11) >> skl_plane_calc_dbuf_bw(bw_state, crtc, plane_id, >> &crtc_state->wm.skl.plane_ddb_y[plane_id], >> crtc_state->data_rate[plane_id]); >> @@ -1200,13 +1215,13 @@ static void skl_crtc_calc_dbuf_bw(struct intel_bw_state *bw_state, >> >> /* "Maximum Data Buffer Bandwidth" */ >> static int >> -intel_bw_dbuf_min_cdclk(struct drm_i915_private *i915, >> +intel_bw_dbuf_min_cdclk(struct intel_display *display, >> const struct intel_bw_state *bw_state) >> { >> unsigned int total_max_bw = 0; >> enum dbuf_slice slice; >> >> - for_each_dbuf_slice(i915, slice) { >> + for_each_dbuf_slice(display, slice) { >> int num_active_planes = 0; >> unsigned int max_bw = 0; >> enum pipe pipe; >> @@ -1215,7 +1230,7 @@ intel_bw_dbuf_min_cdclk(struct drm_i915_private *i915, >> * The arbiter can only really guarantee an >> * equal share of the total bw to each plane. >> */ >> - for_each_pipe(i915, pipe) { >> + for_each_pipe(display, pipe) { >> const struct intel_dbuf_bw *crtc_bw = &bw_state->dbuf_bw[pipe]; >> >> max_bw = max(crtc_bw->max_bw[slice], max_bw); >> @@ -1232,12 +1247,13 @@ intel_bw_dbuf_min_cdclk(struct drm_i915_private *i915, >> int intel_bw_min_cdclk(struct drm_i915_private *i915, >> const struct intel_bw_state *bw_state) >> { >> + struct intel_display *display = &i915->display; >> enum pipe pipe; >> int min_cdclk; >> >> - min_cdclk = intel_bw_dbuf_min_cdclk(i915, bw_state); >> + min_cdclk = intel_bw_dbuf_min_cdclk(display, bw_state); >> >> - for_each_pipe(i915, pipe) >> + for_each_pipe(display, pipe) >> min_cdclk = max(min_cdclk, bw_state->min_cdclk[pipe]); >> >> return min_cdclk; >> @@ -1246,6 +1262,7 @@ int intel_bw_min_cdclk(struct drm_i915_private *i915, >> int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, >> bool *need_cdclk_calc) >> { >> + struct intel_display *display = to_intel_display(state); >> struct drm_i915_private *dev_priv = to_i915(state->base.dev); >> struct intel_bw_state *new_bw_state = NULL; >> const struct intel_bw_state *old_bw_state = NULL; >> @@ -1255,7 +1272,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, >> struct intel_crtc *crtc; >> int i; >> >> - if (DISPLAY_VER(dev_priv) < 9) >> + if (DISPLAY_VER(display) < 9) >> return 0; >> >> for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) { >> @@ -1274,7 +1291,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, >> if (!old_bw_state) >> return 0; >> >> - if (intel_bw_state_changed(dev_priv, old_bw_state, new_bw_state)) { >> + if (intel_bw_state_changed(display, old_bw_state, new_bw_state)) { >> int ret = intel_atomic_lock_global_state(&new_bw_state->base); >> if (ret) >> return ret; >> @@ -1309,7 +1326,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, >> if (new_min_cdclk <= cdclk_state->bw_min_cdclk) >> return 0; >> >> - drm_dbg_kms(&dev_priv->drm, >> + drm_dbg_kms(display->drm, >> "new bandwidth min cdclk (%d kHz) > old min cdclk (%d kHz)\n", >> new_min_cdclk, cdclk_state->bw_min_cdclk); >> *need_cdclk_calc = true; >> @@ -1319,7 +1336,7 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, >> >> static int intel_bw_check_data_rate(struct intel_atomic_state *state, bool *changed) >> { >> - struct drm_i915_private *i915 = to_i915(state->base.dev); >> + struct intel_display *display = to_intel_display(state); >> const struct intel_crtc_state *new_crtc_state, *old_crtc_state; >> struct intel_crtc *crtc; >> int i; >> @@ -1353,7 +1370,7 @@ static int intel_bw_check_data_rate(struct intel_atomic_state *state, bool *chan >> >> *changed = true; >> >> - drm_dbg_kms(&i915->drm, >> + drm_dbg_kms(display->drm, >> "[CRTC:%d:%s] data rate %u num active planes %u\n", >> crtc->base.base.id, crtc->base.name, >> new_bw_state->data_rate[crtc->pipe], >> @@ -1365,14 +1382,15 @@ static int intel_bw_check_data_rate(struct intel_atomic_state *state, bool *chan >> >> int intel_bw_atomic_check(struct intel_atomic_state *state) >> { >> + struct intel_display *display = to_intel_display(state); >> + struct drm_i915_private *i915 = to_i915(display->drm); >> bool changed = false; >> - struct drm_i915_private *i915 = to_i915(state->base.dev); >> struct intel_bw_state *new_bw_state; >> const struct intel_bw_state *old_bw_state; >> int ret; >> >> /* FIXME earlier gens need some checks too */ >> - if (DISPLAY_VER(i915) < 11) >> + if (DISPLAY_VER(display) < 11) >> return 0; >> >> ret = intel_bw_check_data_rate(state, &changed); >> @@ -1395,7 +1413,7 @@ int intel_bw_atomic_check(struct intel_atomic_state *state) >> if (!changed) >> return 0; >> >> - ret = intel_bw_check_qgv_points(i915, old_bw_state, new_bw_state); >> + ret = intel_bw_check_qgv_points(display, old_bw_state, new_bw_state); >> if (ret) >> return ret; >> >> @@ -1407,8 +1425,8 @@ int intel_bw_atomic_check(struct intel_atomic_state *state) >> static void intel_bw_crtc_update(struct intel_bw_state *bw_state, >> const struct intel_crtc_state *crtc_state) >> { >> + struct intel_display *display = to_intel_display(crtc_state); >> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); >> - struct drm_i915_private *i915 = to_i915(crtc->base.dev); >> >> bw_state->data_rate[crtc->pipe] = >> intel_bw_crtc_data_rate(crtc_state); >> @@ -1416,7 +1434,7 @@ static void intel_bw_crtc_update(struct intel_bw_state *bw_state, >> intel_bw_crtc_num_active_planes(crtc_state); >> bw_state->force_check_qgv = true; >> >> - drm_dbg_kms(&i915->drm, "pipe %c data rate %u num active planes %u\n", >> + drm_dbg_kms(display->drm, "pipe %c data rate %u num active planes %u\n", >> pipe_name(crtc->pipe), >> bw_state->data_rate[crtc->pipe], >> bw_state->num_active_planes[crtc->pipe]); >> @@ -1499,8 +1517,8 @@ int intel_bw_init(struct drm_i915_private *i915) >> * Limit this only if we have SAGV. And for Display version 14 onwards >> * sagv is handled though pmdemand requests >> */ >> - if (intel_has_sagv(i915) && IS_DISPLAY_VER(i915, 11, 13)) >> - icl_force_disable_sagv(i915, state); >> + if (intel_has_sagv(i915) && IS_DISPLAY_VER(display, 11, 13)) >> + icl_force_disable_sagv(display, state); >> >> return 0; >> } >> >> -- >> 2.48.1 > >-- >Ville Syrjälä >Intel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display 2025-03-10 19:00 ` Gustavo Sousa @ 2025-03-11 9:26 ` Jani Nikula 2025-03-11 11:43 ` Gustavo Sousa 0 siblings, 1 reply; 14+ messages in thread From: Jani Nikula @ 2025-03-11 9:26 UTC (permalink / raw) To: Gustavo Sousa, Ville Syrjälä; +Cc: intel-gfx, intel-xe, Matt Roper On Mon, 10 Mar 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote: > Quoting Ville Syrjälä (2025-03-10 13:47:57-03:00) >>On Fri, Mar 07, 2025 at 04:25:11PM -0300, Gustavo Sousa wrote: >>> Update intel_bw.c internally use intel_display. Conversion of the public >>> interface will come as a follow-up. >>> >>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> >>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> >>> --- >>> drivers/gpu/drm/i915/display/intel_bw.c | 416 +++++++++++++++++--------------- >>> 1 file changed, 217 insertions(+), 199 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c >>> index 048be287224774110d94fe2944daa580d8dc20a6..d71dc796f1793f546fe04146e5987a9be56bae9b 100644 >>> --- a/drivers/gpu/drm/i915/display/intel_bw.c >>> +++ b/drivers/gpu/drm/i915/display/intel_bw.c >>> @@ -11,6 +11,7 @@ >>> #include "intel_atomic.h" >>> #include "intel_bw.h" >>> #include "intel_cdclk.h" >>> +#include "intel_de.h" >>> #include "intel_display_core.h" >>> #include "intel_display_types.h" >>> #include "skl_watermark.h" >>> @@ -39,14 +40,14 @@ struct intel_qgv_info { >>> u8 deinterleave; >>> }; >>> >>> -static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, >>> +static int dg1_mchbar_read_qgv_point_info(struct intel_display *display, >>> struct intel_qgv_point *sp, >>> int point) >>> { >>> u32 dclk_ratio, dclk_reference; >>> u32 val; >>> >>> - val = intel_uncore_read(&dev_priv->uncore, SA_PERF_STATUS_0_0_0_MCHBAR_PC); >>> + val = intel_de_read(display, SA_PERF_STATUS_0_0_0_MCHBAR_PC); >> >>Not entirely convinced we want to start using intel_de_*() on >>mchbar registers. >> >>Apart from that the rest looks fine. > > Okay. I sent v4 with reverting this function to use intel_uncore_read(). The question becomes, *what* are we supposed to do with this stuff in the future? Kind of want to get rid of all intel_uncore_* in display/. BR, Jani. -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display 2025-03-11 9:26 ` Jani Nikula @ 2025-03-11 11:43 ` Gustavo Sousa 0 siblings, 0 replies; 14+ messages in thread From: Gustavo Sousa @ 2025-03-11 11:43 UTC (permalink / raw) To: Ville Syrjälä, Jani Nikula; +Cc: intel-gfx, intel-xe, Matt Roper Quoting Jani Nikula (2025-03-11 06:26:32-03:00) >On Mon, 10 Mar 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote: >> Quoting Ville Syrjälä (2025-03-10 13:47:57-03:00) >>>On Fri, Mar 07, 2025 at 04:25:11PM -0300, Gustavo Sousa wrote: >>>> Update intel_bw.c internally use intel_display. Conversion of the public >>>> interface will come as a follow-up. >>>> >>>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> >>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> >>>> --- >>>> drivers/gpu/drm/i915/display/intel_bw.c | 416 +++++++++++++++++--------------- >>>> 1 file changed, 217 insertions(+), 199 deletions(-) >>>> >>>> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c >>>> index 048be287224774110d94fe2944daa580d8dc20a6..d71dc796f1793f546fe04146e5987a9be56bae9b 100644 >>>> --- a/drivers/gpu/drm/i915/display/intel_bw.c >>>> +++ b/drivers/gpu/drm/i915/display/intel_bw.c >>>> @@ -11,6 +11,7 @@ >>>> #include "intel_atomic.h" >>>> #include "intel_bw.h" >>>> #include "intel_cdclk.h" >>>> +#include "intel_de.h" >>>> #include "intel_display_core.h" >>>> #include "intel_display_types.h" >>>> #include "skl_watermark.h" >>>> @@ -39,14 +40,14 @@ struct intel_qgv_info { >>>> u8 deinterleave; >>>> }; >>>> >>>> -static int dg1_mchbar_read_qgv_point_info(struct drm_i915_private *dev_priv, >>>> +static int dg1_mchbar_read_qgv_point_info(struct intel_display *display, >>>> struct intel_qgv_point *sp, >>>> int point) >>>> { >>>> u32 dclk_ratio, dclk_reference; >>>> u32 val; >>>> >>>> - val = intel_uncore_read(&dev_priv->uncore, SA_PERF_STATUS_0_0_0_MCHBAR_PC); >>>> + val = intel_de_read(display, SA_PERF_STATUS_0_0_0_MCHBAR_PC); >>> >>>Not entirely convinced we want to start using intel_de_*() on >>>mchbar registers. >>> >>>Apart from that the rest looks fine. >> >> Okay. I sent v4 with reverting this function to use intel_uncore_read(). > >The question becomes, *what* are we supposed to do with this stuff in >the future? Kind of want to get rid of all intel_uncore_* in display/. The first thing that comes to mind is a common interface that is provided to display by both xe and i915... -- Gustavo Sousa ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v3 2/3] drm/i915/display: Convert intel_bw.c externally to intel_display 2025-03-07 19:25 [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa 2025-03-07 19:25 ` [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display Gustavo Sousa @ 2025-03-07 19:25 ` Gustavo Sousa 2025-03-10 16:49 ` Ville Syrjälä 2025-03-07 19:25 ` [PATCH v3 3/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa ` (3 subsequent siblings) 5 siblings, 1 reply; 14+ messages in thread From: Gustavo Sousa @ 2025-03-07 19:25 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: Matt Roper, Ville Syrjälä, Gustavo Sousa We already have internal interface for intel_bw.c converted to use intel_display. Now convert the external interface as well. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> --- drivers/gpu/drm/i915/display/intel_bw.c | 25 +++++++++------------- drivers/gpu/drm/i915/display/intel_bw.h | 9 ++++---- drivers/gpu/drm/i915/display/intel_cdclk.c | 3 +-- .../gpu/drm/i915/display/intel_display_driver.c | 2 +- drivers/gpu/drm/i915/display/skl_watermark.c | 10 +++++---- drivers/gpu/drm/i915/i915_driver.c | 2 +- drivers/gpu/drm/xe/display/xe_display.c | 2 +- 7 files changed, 24 insertions(+), 29 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c index d71dc796f1793f546fe04146e5987a9be56bae9b..39644ae6932047f2b83f0ae34ed93f73a100685f 100644 --- a/drivers/gpu/drm/i915/display/intel_bw.c +++ b/drivers/gpu/drm/i915/display/intel_bw.c @@ -151,17 +151,17 @@ static bool is_sagv_enabled(struct intel_display *display, u16 points_mask) ICL_PCODE_REQ_QGV_PT_MASK); } -int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, +int icl_pcode_restrict_qgv_points(struct intel_display *display, u32 points_mask) { - struct intel_display *display = &dev_priv->display; + struct drm_i915_private *i915 = to_i915(display->drm); int ret; if (DISPLAY_VER(display) >= 14) return 0; /* bspec says to keep retrying for at least 1 ms */ - ret = skl_pcode_request(&dev_priv->uncore, ICL_PCODE_SAGV_DE_MEM_SS_CONFIG, + ret = skl_pcode_request(&i915->uncore, ICL_PCODE_SAGV_DE_MEM_SS_CONFIG, points_mask, ICL_PCODE_REP_QGV_MASK | ADLS_PCODE_REP_PSF_MASK, ICL_PCODE_REP_QGV_SAFE | ADLS_PCODE_REP_PSF_SAFE, @@ -747,10 +747,8 @@ static unsigned int icl_qgv_bw(struct intel_display *display, return display->bw.max[idx].deratedbw[qgv_point]; } -void intel_bw_init_hw(struct drm_i915_private *dev_priv) +void intel_bw_init_hw(struct intel_display *display) { - struct intel_display *display = &dev_priv->display; - if (!HAS_DISPLAY(display)) return; @@ -940,7 +938,6 @@ static unsigned int icl_max_bw_psf_gv_point_mask(struct intel_display *display) static void icl_force_disable_sagv(struct intel_display *display, struct intel_bw_state *bw_state) { - struct drm_i915_private *i915 = to_i915(display->drm); unsigned int qgv_points = icl_max_bw_qgv_point_mask(display, 0); unsigned int psf_points = icl_max_bw_psf_gv_point_mask(display); @@ -951,7 +948,7 @@ static void icl_force_disable_sagv(struct intel_display *display, drm_dbg_kms(display->drm, "Forcing SAGV disable: mask 0x%x\n", bw_state->qgv_points_mask); - icl_pcode_restrict_qgv_points(i915, bw_state->qgv_points_mask); + icl_pcode_restrict_qgv_points(display, bw_state->qgv_points_mask); } static int mtl_find_qgv_points(struct intel_display *display, @@ -1244,10 +1241,9 @@ intel_bw_dbuf_min_cdclk(struct intel_display *display, return DIV_ROUND_UP(total_max_bw, 64); } -int intel_bw_min_cdclk(struct drm_i915_private *i915, +int intel_bw_min_cdclk(struct intel_display *display, const struct intel_bw_state *bw_state) { - struct intel_display *display = &i915->display; enum pipe pipe; int min_cdclk; @@ -1263,7 +1259,6 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, bool *need_cdclk_calc) { struct intel_display *display = to_intel_display(state); - struct drm_i915_private *dev_priv = to_i915(state->base.dev); struct intel_bw_state *new_bw_state = NULL; const struct intel_bw_state *old_bw_state = NULL; const struct intel_cdclk_state *cdclk_state; @@ -1297,8 +1292,8 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, return ret; } - old_min_cdclk = intel_bw_min_cdclk(dev_priv, old_bw_state); - new_min_cdclk = intel_bw_min_cdclk(dev_priv, new_bw_state); + old_min_cdclk = intel_bw_min_cdclk(display, old_bw_state); + new_min_cdclk = intel_bw_min_cdclk(display, new_bw_state); /* * No need to check against the cdclk state if @@ -1501,9 +1496,9 @@ static const struct intel_global_state_funcs intel_bw_funcs = { .atomic_destroy_state = intel_bw_destroy_state, }; -int intel_bw_init(struct drm_i915_private *i915) +int intel_bw_init(struct intel_display *display) { - struct intel_display *display = &i915->display; + struct drm_i915_private *i915 = to_i915(display->drm); struct intel_bw_state *state; state = kzalloc(sizeof(*state), GFP_KERNEL); diff --git a/drivers/gpu/drm/i915/display/intel_bw.h b/drivers/gpu/drm/i915/display/intel_bw.h index 3313e4eac4f00dc5be0a290219c488216a2ae1f8..c18126c83d2e458daaaef0cda82be46974c5d500 100644 --- a/drivers/gpu/drm/i915/display/intel_bw.h +++ b/drivers/gpu/drm/i915/display/intel_bw.h @@ -12,7 +12,6 @@ #include "intel_display_power.h" #include "intel_global_state.h" -struct drm_i915_private; struct intel_atomic_state; struct intel_crtc; struct intel_crtc_state; @@ -72,14 +71,14 @@ intel_atomic_get_new_bw_state(struct intel_atomic_state *state); struct intel_bw_state * intel_atomic_get_bw_state(struct intel_atomic_state *state); -void intel_bw_init_hw(struct drm_i915_private *dev_priv); -int intel_bw_init(struct drm_i915_private *dev_priv); +void intel_bw_init_hw(struct intel_display *display); +int intel_bw_init(struct intel_display *display); int intel_bw_atomic_check(struct intel_atomic_state *state); -int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, +int icl_pcode_restrict_qgv_points(struct intel_display *display, u32 points_mask); int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, bool *need_cdclk_calc); -int intel_bw_min_cdclk(struct drm_i915_private *i915, +int intel_bw_min_cdclk(struct intel_display *display, const struct intel_bw_state *bw_state); void intel_bw_update_hw_state(struct intel_display *display); void intel_bw_crtc_disable_noatomic(struct intel_crtc *crtc); diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c index 2a8749a0213e74dbd5cf5f8c94ff5e32226c45fe..984fd9f98c9f77777f903456f5838179a774af5e 100644 --- a/drivers/gpu/drm/i915/display/intel_cdclk.c +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c @@ -2808,7 +2808,6 @@ static int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_stat static int intel_compute_min_cdclk(struct intel_atomic_state *state) { struct intel_display *display = to_intel_display(state); - struct drm_i915_private *dev_priv = to_i915(display->drm); struct intel_cdclk_state *cdclk_state = intel_atomic_get_new_cdclk_state(state); const struct intel_bw_state *bw_state; @@ -2836,7 +2835,7 @@ static int intel_compute_min_cdclk(struct intel_atomic_state *state) bw_state = intel_atomic_get_new_bw_state(state); if (bw_state) { - min_cdclk = intel_bw_min_cdclk(dev_priv, bw_state); + min_cdclk = intel_bw_min_cdclk(display, bw_state); if (cdclk_state->bw_min_cdclk != min_cdclk) { int ret; diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c index 31740a677dd807a5cffaad3696268e22b829b70a..5ad2f4090a2db41f984ab3dc0f64e608f0b61fb4 100644 --- a/drivers/gpu/drm/i915/display/intel_display_driver.c +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c @@ -259,7 +259,7 @@ int intel_display_driver_probe_noirq(struct intel_display *display) if (ret) goto cleanup_vga_client_pw_domain_dmc; - ret = intel_bw_init(i915); + ret = intel_bw_init(display); if (ret) goto cleanup_vga_client_pw_domain_dmc; diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c index 2d0de1c63308fc293e7f0f13ed6489b18928bf58..008919d4d3792ba1ff38c70418c48241aafe1796 100644 --- a/drivers/gpu/drm/i915/display/skl_watermark.c +++ b/drivers/gpu/drm/i915/display/skl_watermark.c @@ -249,7 +249,8 @@ static void skl_sagv_post_plane_update(struct intel_atomic_state *state) static void icl_sagv_pre_plane_update(struct intel_atomic_state *state) { - struct drm_i915_private *i915 = to_i915(state->base.dev); + struct intel_display *display = to_intel_display(state); + struct drm_i915_private *i915 = to_i915(display->drm); const struct intel_bw_state *old_bw_state = intel_atomic_get_old_bw_state(state); const struct intel_bw_state *new_bw_state = @@ -276,12 +277,13 @@ static void icl_sagv_pre_plane_update(struct intel_atomic_state *state) * time. Also masking should be done before updating the configuration * and unmasking afterwards. */ - icl_pcode_restrict_qgv_points(i915, new_mask); + icl_pcode_restrict_qgv_points(display, new_mask); } static void icl_sagv_post_plane_update(struct intel_atomic_state *state) { - struct drm_i915_private *i915 = to_i915(state->base.dev); + struct intel_display *display = to_intel_display(state); + struct drm_i915_private *i915 = to_i915(display->drm); const struct intel_bw_state *old_bw_state = intel_atomic_get_old_bw_state(state); const struct intel_bw_state *new_bw_state = @@ -308,7 +310,7 @@ static void icl_sagv_post_plane_update(struct intel_atomic_state *state) * time. Also masking should be done before updating the configuration * and unmasking afterwards. */ - icl_pcode_restrict_qgv_points(i915, new_mask); + icl_pcode_restrict_qgv_points(display, new_mask); } void intel_sagv_pre_plane_update(struct intel_atomic_state *state) diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c index ce3cc93ea211bb8c7805d56ae5e67b371fb5fba9..6507dcfe4bf534db83c501606efaf39079fb6b68 100644 --- a/drivers/gpu/drm/i915/i915_driver.c +++ b/drivers/gpu/drm/i915/i915_driver.c @@ -578,7 +578,7 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv) */ intel_dram_detect(dev_priv); - intel_bw_init_hw(dev_priv); + intel_bw_init_hw(display); return 0; diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c index 0b0aca7a25afd09a9dab089249f89d33dc1c06a9..7fb6028ae73c4ecb283406e953063c62e346812a 100644 --- a/drivers/gpu/drm/xe/display/xe_display.c +++ b/drivers/gpu/drm/xe/display/xe_display.c @@ -147,7 +147,7 @@ int xe_display_init_early(struct xe_device *xe) */ intel_dram_detect(xe); - intel_bw_init_hw(xe); + intel_bw_init_hw(display); intel_display_device_info_runtime_init(display); -- 2.48.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v3 2/3] drm/i915/display: Convert intel_bw.c externally to intel_display 2025-03-07 19:25 ` [PATCH v3 2/3] drm/i915/display: Convert intel_bw.c externally " Gustavo Sousa @ 2025-03-10 16:49 ` Ville Syrjälä 0 siblings, 0 replies; 14+ messages in thread From: Ville Syrjälä @ 2025-03-10 16:49 UTC (permalink / raw) To: Gustavo Sousa; +Cc: intel-gfx, intel-xe, Matt Roper On Fri, Mar 07, 2025 at 04:25:12PM -0300, Gustavo Sousa wrote: > We already have internal interface for intel_bw.c converted to use > intel_display. Now convert the external interface as well. > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/display/intel_bw.c | 25 +++++++++------------- > drivers/gpu/drm/i915/display/intel_bw.h | 9 ++++---- > drivers/gpu/drm/i915/display/intel_cdclk.c | 3 +-- > .../gpu/drm/i915/display/intel_display_driver.c | 2 +- > drivers/gpu/drm/i915/display/skl_watermark.c | 10 +++++---- > drivers/gpu/drm/i915/i915_driver.c | 2 +- > drivers/gpu/drm/xe/display/xe_display.c | 2 +- > 7 files changed, 24 insertions(+), 29 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c > index d71dc796f1793f546fe04146e5987a9be56bae9b..39644ae6932047f2b83f0ae34ed93f73a100685f 100644 > --- a/drivers/gpu/drm/i915/display/intel_bw.c > +++ b/drivers/gpu/drm/i915/display/intel_bw.c > @@ -151,17 +151,17 @@ static bool is_sagv_enabled(struct intel_display *display, u16 points_mask) > ICL_PCODE_REQ_QGV_PT_MASK); > } > > -int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, > +int icl_pcode_restrict_qgv_points(struct intel_display *display, > u32 points_mask) > { > - struct intel_display *display = &dev_priv->display; > + struct drm_i915_private *i915 = to_i915(display->drm); > int ret; > > if (DISPLAY_VER(display) >= 14) > return 0; > > /* bspec says to keep retrying for at least 1 ms */ > - ret = skl_pcode_request(&dev_priv->uncore, ICL_PCODE_SAGV_DE_MEM_SS_CONFIG, > + ret = skl_pcode_request(&i915->uncore, ICL_PCODE_SAGV_DE_MEM_SS_CONFIG, > points_mask, > ICL_PCODE_REP_QGV_MASK | ADLS_PCODE_REP_PSF_MASK, > ICL_PCODE_REP_QGV_SAFE | ADLS_PCODE_REP_PSF_SAFE, > @@ -747,10 +747,8 @@ static unsigned int icl_qgv_bw(struct intel_display *display, > return display->bw.max[idx].deratedbw[qgv_point]; > } > > -void intel_bw_init_hw(struct drm_i915_private *dev_priv) > +void intel_bw_init_hw(struct intel_display *display) > { > - struct intel_display *display = &dev_priv->display; > - > if (!HAS_DISPLAY(display)) > return; > > @@ -940,7 +938,6 @@ static unsigned int icl_max_bw_psf_gv_point_mask(struct intel_display *display) > static void icl_force_disable_sagv(struct intel_display *display, > struct intel_bw_state *bw_state) > { > - struct drm_i915_private *i915 = to_i915(display->drm); > unsigned int qgv_points = icl_max_bw_qgv_point_mask(display, 0); > unsigned int psf_points = icl_max_bw_psf_gv_point_mask(display); > > @@ -951,7 +948,7 @@ static void icl_force_disable_sagv(struct intel_display *display, > drm_dbg_kms(display->drm, "Forcing SAGV disable: mask 0x%x\n", > bw_state->qgv_points_mask); > > - icl_pcode_restrict_qgv_points(i915, bw_state->qgv_points_mask); > + icl_pcode_restrict_qgv_points(display, bw_state->qgv_points_mask); > } > > static int mtl_find_qgv_points(struct intel_display *display, > @@ -1244,10 +1241,9 @@ intel_bw_dbuf_min_cdclk(struct intel_display *display, > return DIV_ROUND_UP(total_max_bw, 64); > } > > -int intel_bw_min_cdclk(struct drm_i915_private *i915, > +int intel_bw_min_cdclk(struct intel_display *display, > const struct intel_bw_state *bw_state) > { > - struct intel_display *display = &i915->display; > enum pipe pipe; > int min_cdclk; > > @@ -1263,7 +1259,6 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, > bool *need_cdclk_calc) > { > struct intel_display *display = to_intel_display(state); > - struct drm_i915_private *dev_priv = to_i915(state->base.dev); > struct intel_bw_state *new_bw_state = NULL; > const struct intel_bw_state *old_bw_state = NULL; > const struct intel_cdclk_state *cdclk_state; > @@ -1297,8 +1292,8 @@ int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, > return ret; > } > > - old_min_cdclk = intel_bw_min_cdclk(dev_priv, old_bw_state); > - new_min_cdclk = intel_bw_min_cdclk(dev_priv, new_bw_state); > + old_min_cdclk = intel_bw_min_cdclk(display, old_bw_state); > + new_min_cdclk = intel_bw_min_cdclk(display, new_bw_state); > > /* > * No need to check against the cdclk state if > @@ -1501,9 +1496,9 @@ static const struct intel_global_state_funcs intel_bw_funcs = { > .atomic_destroy_state = intel_bw_destroy_state, > }; > > -int intel_bw_init(struct drm_i915_private *i915) > +int intel_bw_init(struct intel_display *display) > { > - struct intel_display *display = &i915->display; > + struct drm_i915_private *i915 = to_i915(display->drm); > struct intel_bw_state *state; > > state = kzalloc(sizeof(*state), GFP_KERNEL); > diff --git a/drivers/gpu/drm/i915/display/intel_bw.h b/drivers/gpu/drm/i915/display/intel_bw.h > index 3313e4eac4f00dc5be0a290219c488216a2ae1f8..c18126c83d2e458daaaef0cda82be46974c5d500 100644 > --- a/drivers/gpu/drm/i915/display/intel_bw.h > +++ b/drivers/gpu/drm/i915/display/intel_bw.h > @@ -12,7 +12,6 @@ > #include "intel_display_power.h" > #include "intel_global_state.h" > > -struct drm_i915_private; > struct intel_atomic_state; > struct intel_crtc; > struct intel_crtc_state; > @@ -72,14 +71,14 @@ intel_atomic_get_new_bw_state(struct intel_atomic_state *state); > struct intel_bw_state * > intel_atomic_get_bw_state(struct intel_atomic_state *state); > > -void intel_bw_init_hw(struct drm_i915_private *dev_priv); > -int intel_bw_init(struct drm_i915_private *dev_priv); > +void intel_bw_init_hw(struct intel_display *display); > +int intel_bw_init(struct intel_display *display); > int intel_bw_atomic_check(struct intel_atomic_state *state); > -int icl_pcode_restrict_qgv_points(struct drm_i915_private *dev_priv, > +int icl_pcode_restrict_qgv_points(struct intel_display *display, > u32 points_mask); > int intel_bw_calc_min_cdclk(struct intel_atomic_state *state, > bool *need_cdclk_calc); > -int intel_bw_min_cdclk(struct drm_i915_private *i915, > +int intel_bw_min_cdclk(struct intel_display *display, > const struct intel_bw_state *bw_state); > void intel_bw_update_hw_state(struct intel_display *display); > void intel_bw_crtc_disable_noatomic(struct intel_crtc *crtc); > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c > index 2a8749a0213e74dbd5cf5f8c94ff5e32226c45fe..984fd9f98c9f77777f903456f5838179a774af5e 100644 > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c > @@ -2808,7 +2808,6 @@ static int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_stat > static int intel_compute_min_cdclk(struct intel_atomic_state *state) > { > struct intel_display *display = to_intel_display(state); > - struct drm_i915_private *dev_priv = to_i915(display->drm); > struct intel_cdclk_state *cdclk_state = > intel_atomic_get_new_cdclk_state(state); > const struct intel_bw_state *bw_state; > @@ -2836,7 +2835,7 @@ static int intel_compute_min_cdclk(struct intel_atomic_state *state) > > bw_state = intel_atomic_get_new_bw_state(state); > if (bw_state) { > - min_cdclk = intel_bw_min_cdclk(dev_priv, bw_state); > + min_cdclk = intel_bw_min_cdclk(display, bw_state); > > if (cdclk_state->bw_min_cdclk != min_cdclk) { > int ret; > diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c > index 31740a677dd807a5cffaad3696268e22b829b70a..5ad2f4090a2db41f984ab3dc0f64e608f0b61fb4 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_driver.c > +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c > @@ -259,7 +259,7 @@ int intel_display_driver_probe_noirq(struct intel_display *display) > if (ret) > goto cleanup_vga_client_pw_domain_dmc; > > - ret = intel_bw_init(i915); > + ret = intel_bw_init(display); > if (ret) > goto cleanup_vga_client_pw_domain_dmc; > > diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c > index 2d0de1c63308fc293e7f0f13ed6489b18928bf58..008919d4d3792ba1ff38c70418c48241aafe1796 100644 > --- a/drivers/gpu/drm/i915/display/skl_watermark.c > +++ b/drivers/gpu/drm/i915/display/skl_watermark.c > @@ -249,7 +249,8 @@ static void skl_sagv_post_plane_update(struct intel_atomic_state *state) > > static void icl_sagv_pre_plane_update(struct intel_atomic_state *state) > { > - struct drm_i915_private *i915 = to_i915(state->base.dev); > + struct intel_display *display = to_intel_display(state); > + struct drm_i915_private *i915 = to_i915(display->drm); > const struct intel_bw_state *old_bw_state = > intel_atomic_get_old_bw_state(state); > const struct intel_bw_state *new_bw_state = > @@ -276,12 +277,13 @@ static void icl_sagv_pre_plane_update(struct intel_atomic_state *state) > * time. Also masking should be done before updating the configuration > * and unmasking afterwards. > */ > - icl_pcode_restrict_qgv_points(i915, new_mask); > + icl_pcode_restrict_qgv_points(display, new_mask); > } > > static void icl_sagv_post_plane_update(struct intel_atomic_state *state) > { > - struct drm_i915_private *i915 = to_i915(state->base.dev); > + struct intel_display *display = to_intel_display(state); > + struct drm_i915_private *i915 = to_i915(display->drm); > const struct intel_bw_state *old_bw_state = > intel_atomic_get_old_bw_state(state); > const struct intel_bw_state *new_bw_state = > @@ -308,7 +310,7 @@ static void icl_sagv_post_plane_update(struct intel_atomic_state *state) > * time. Also masking should be done before updating the configuration > * and unmasking afterwards. > */ > - icl_pcode_restrict_qgv_points(i915, new_mask); > + icl_pcode_restrict_qgv_points(display, new_mask); > } > > void intel_sagv_pre_plane_update(struct intel_atomic_state *state) > diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c > index ce3cc93ea211bb8c7805d56ae5e67b371fb5fba9..6507dcfe4bf534db83c501606efaf39079fb6b68 100644 > --- a/drivers/gpu/drm/i915/i915_driver.c > +++ b/drivers/gpu/drm/i915/i915_driver.c > @@ -578,7 +578,7 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv) > */ > intel_dram_detect(dev_priv); > > - intel_bw_init_hw(dev_priv); > + intel_bw_init_hw(display); > > return 0; > > diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c > index 0b0aca7a25afd09a9dab089249f89d33dc1c06a9..7fb6028ae73c4ecb283406e953063c62e346812a 100644 > --- a/drivers/gpu/drm/xe/display/xe_display.c > +++ b/drivers/gpu/drm/xe/display/xe_display.c > @@ -147,7 +147,7 @@ int xe_display_init_early(struct xe_device *xe) > */ > intel_dram_detect(xe); > > - intel_bw_init_hw(xe); > + intel_bw_init_hw(display); > > intel_display_device_info_runtime_init(display); > > > -- > 2.48.1 -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v3 3/3] drm/i915/xe3lpd: Update bandwidth parameters 2025-03-07 19:25 [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa 2025-03-07 19:25 ` [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display Gustavo Sousa 2025-03-07 19:25 ` [PATCH v3 2/3] drm/i915/display: Convert intel_bw.c externally " Gustavo Sousa @ 2025-03-07 19:25 ` Gustavo Sousa 2025-03-07 20:29 ` ✗ Fi.CI.SPARSE: warning for drm/i915/xe3lpd: Update bandwidth parameters (rev3) Patchwork ` (2 subsequent siblings) 5 siblings, 0 replies; 14+ messages in thread From: Gustavo Sousa @ 2025-03-07 19:25 UTC (permalink / raw) To: intel-gfx, intel-xe; +Cc: Matt Roper, Ville Syrjälä, Gustavo Sousa Bandwidth parameters for Xe3_LPD have been updated with respect to previous display releases. Encode them into xe3lpd_sa_info and use that new struct. Bspec: 68859 Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com> --- drivers/gpu/drm/i915/display/intel_bw.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c index 39644ae6932047f2b83f0ae34ed93f73a100685f..ee3e2fbd4a42a232b58f8e2344c134f6a1db1ac4 100644 --- a/drivers/gpu/drm/i915/display/intel_bw.c +++ b/drivers/gpu/drm/i915/display/intel_bw.c @@ -404,6 +404,13 @@ static const struct intel_sa_info xe2_hpd_sa_info = { /* Other values not used by simplified algorithm */ }; +static const struct intel_sa_info xe3lpd_sa_info = { + .deburst = 32, + .deprogbwlimit = 65, /* GB/s */ + .displayrtids = 256, + .derating = 10, +}; + static int icl_get_bw_info(struct intel_display *display, const struct intel_sa_info *sa) { struct drm_i915_private *i915 = to_i915(display->drm); @@ -752,7 +759,9 @@ void intel_bw_init_hw(struct intel_display *display) if (!HAS_DISPLAY(display)) return; - if (DISPLAY_VERx100(display) >= 1401 && display->platform.dgfx) + if (DISPLAY_VER(display) >= 30) + tgl_get_bw_info(display, &xe3lpd_sa_info); + else if (DISPLAY_VERx100(display) >= 1401 && display->platform.dgfx) xe2_hpd_get_bw_info(display, &xe2_hpd_sa_info); else if (DISPLAY_VER(display) >= 14) tgl_get_bw_info(display, &mtl_sa_info); -- 2.48.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* ✗ Fi.CI.SPARSE: warning for drm/i915/xe3lpd: Update bandwidth parameters (rev3) 2025-03-07 19:25 [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa ` (2 preceding siblings ...) 2025-03-07 19:25 ` [PATCH v3 3/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa @ 2025-03-07 20:29 ` Patchwork 2025-03-07 20:57 ` ✗ i915.CI.BAT: failure " Patchwork 2025-03-10 13:12 ` [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Jani Nikula 5 siblings, 0 replies; 14+ messages in thread From: Patchwork @ 2025-03-07 20:29 UTC (permalink / raw) To: Gustavo Sousa; +Cc: intel-gfx == Series Details == Series: drm/i915/xe3lpd: Update bandwidth parameters (rev3) URL : https://patchwork.freedesktop.org/series/144441/ State : warning == Summary == Error: dim sparse failed Sparse version: v0.6.2 Fast mode used, each commit won't be checked separately. +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:116:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:245:9: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:137:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:140:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:151:1: warning: too many warnings +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:154:9: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' +./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return' /home/kbuild/linux/maintainer-tools/dim: line 2110: echo: write error: Broken pipe ^ permalink raw reply [flat|nested] 14+ messages in thread
* ✗ i915.CI.BAT: failure for drm/i915/xe3lpd: Update bandwidth parameters (rev3) 2025-03-07 19:25 [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa ` (3 preceding siblings ...) 2025-03-07 20:29 ` ✗ Fi.CI.SPARSE: warning for drm/i915/xe3lpd: Update bandwidth parameters (rev3) Patchwork @ 2025-03-07 20:57 ` Patchwork 2025-03-10 13:12 ` [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Jani Nikula 5 siblings, 0 replies; 14+ messages in thread From: Patchwork @ 2025-03-07 20:57 UTC (permalink / raw) To: Gustavo Sousa; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 13483 bytes --] == Series Details == Series: drm/i915/xe3lpd: Update bandwidth parameters (rev3) URL : https://patchwork.freedesktop.org/series/144441/ State : failure == Summary == CI Bug Log - changes from CI_DRM_16246 -> Patchwork_144441v3 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_144441v3 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_144441v3, 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. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/index.html Participating hosts (43 -> 43) ------------------------------ Additional (1): bat-arlh-2 Missing (1): fi-snb-2520m Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_144441v3: ### IGT changes ### #### Possible regressions #### * igt@i915_module_load@reload: - fi-cfl-8109u: [PASS][1] -> [DMESG-WARN][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/fi-cfl-8109u/igt@i915_module_load@reload.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/fi-cfl-8109u/igt@i915_module_load@reload.html Known issues ------------ Here are the changes found in Patchwork_144441v3 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@debugfs_test@basic-hwmon: - bat-arlh-2: NOTRUN -> [SKIP][3] ([i915#11346] / [i915#9318]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@debugfs_test@basic-hwmon.html * igt@dmabuf@all-tests: - bat-apl-1: [PASS][4] -> [INCOMPLETE][5] ([i915#12904]) +1 other test incomplete [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-apl-1/igt@dmabuf@all-tests.html [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-apl-1/igt@dmabuf@all-tests.html - bat-jsl-3: [PASS][6] -> [INCOMPLETE][7] ([i915#13241]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-jsl-3/igt@dmabuf@all-tests.html [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-jsl-3/igt@dmabuf@all-tests.html * igt@fbdev@eof: - bat-arlh-2: NOTRUN -> [SKIP][8] ([i915#11345] / [i915#11346]) +3 other tests skip [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@fbdev@eof.html * igt@fbdev@info: - bat-arlh-2: NOTRUN -> [SKIP][9] ([i915#11346] / [i915#1849]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@fbdev@info.html - fi-kbl-8809g: NOTRUN -> [SKIP][10] ([i915#1849]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/fi-kbl-8809g/igt@fbdev@info.html * igt@gem_huc_copy@huc-copy: - fi-kbl-8809g: NOTRUN -> [SKIP][11] ([i915#2190]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html * igt@gem_lmem_swapping@basic: - bat-arlh-2: NOTRUN -> [SKIP][12] ([i915#10213] / [i915#11346] / [i915#11671]) +3 other tests skip [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@gem_lmem_swapping@basic.html * igt@gem_lmem_swapping@parallel-random-engines: - fi-kbl-8809g: NOTRUN -> [SKIP][13] ([i915#4613]) +3 other tests skip [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/fi-kbl-8809g/igt@gem_lmem_swapping@parallel-random-engines.html * igt@gem_mmap@basic: - bat-arlh-2: NOTRUN -> [SKIP][14] ([i915#11343] / [i915#11346]) [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@gem_mmap@basic.html * igt@gem_render_tiled_blits@basic: - bat-arlh-2: NOTRUN -> [SKIP][15] ([i915#10197] / [i915#10211] / [i915#11346] / [i915#11725]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@gem_render_tiled_blits@basic.html * igt@gem_tiled_blits@basic: - bat-arlh-2: NOTRUN -> [SKIP][16] ([i915#11346] / [i915#12637]) +4 other tests skip [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@gem_tiled_blits@basic.html * igt@gem_tiled_pread_basic: - bat-arlh-2: NOTRUN -> [SKIP][17] ([i915#10206] / [i915#11346] / [i915#11724]) [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@gem_tiled_pread_basic.html * igt@i915_pm_rpm@module-reload: - bat-adls-6: [PASS][18] -> [FAIL][19] ([i915#13633]) [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-adls-6/igt@i915_pm_rpm@module-reload.html [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-adls-6/igt@i915_pm_rpm@module-reload.html - bat-dg1-7: [PASS][20] -> [FAIL][21] ([i915#13633]) [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-dg1-7/igt@i915_pm_rpm@module-reload.html [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-dg1-7/igt@i915_pm_rpm@module-reload.html - bat-rpls-4: [PASS][22] -> [FAIL][23] ([i915#13633]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-rpls-4/igt@i915_pm_rpm@module-reload.html [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-rpls-4/igt@i915_pm_rpm@module-reload.html * igt@i915_pm_rps@basic-api: - bat-arlh-2: NOTRUN -> [SKIP][24] ([i915#10209] / [i915#11346] / [i915#11681]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@i915_pm_rps@basic-api.html * igt@i915_selftest@live: - bat-mtlp-8: [PASS][25] -> [DMESG-FAIL][26] ([i915#12061]) +1 other test dmesg-fail [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-mtlp-8/igt@i915_selftest@live.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-mtlp-8/igt@i915_selftest@live.html - bat-arlh-3: [PASS][27] -> [DMESG-FAIL][28] ([i915#12061] / [i915#12435]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-arlh-3/igt@i915_selftest@live.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-3/igt@i915_selftest@live.html - bat-arlh-2: NOTRUN -> [DMESG-FAIL][29] ([i915#12061] / [i915#12435]) [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@i915_selftest@live.html * igt@i915_selftest@live@workarounds: - bat-arlh-3: [PASS][30] -> [DMESG-FAIL][31] ([i915#12061]) [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-arlh-3/igt@i915_selftest@live@workarounds.html [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-3/igt@i915_selftest@live@workarounds.html - bat-arlh-2: NOTRUN -> [DMESG-FAIL][32] ([i915#12061]) [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@i915_selftest@live@workarounds.html * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy: - bat-arlh-2: NOTRUN -> [SKIP][33] ([i915#10200] / [i915#11346] / [i915#11666] / [i915#12203]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html * igt@kms_addfb_basic@basic-x-tiled-legacy: - bat-arlh-2: NOTRUN -> [SKIP][34] ([i915#10200] / [i915#11346] / [i915#11666]) +8 other tests skip [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@kms_addfb_basic@basic-x-tiled-legacy.html * igt@kms_dsc@dsc-basic: - fi-kbl-8809g: NOTRUN -> [SKIP][35] +34 other tests skip [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/fi-kbl-8809g/igt@kms_dsc@dsc-basic.html * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence: - bat-dg2-11: [PASS][36] -> [SKIP][37] ([i915#9197]) +2 other tests skip [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html * igt@kms_psr@psr-primary-page-flip: - bat-arlh-2: NOTRUN -> [SKIP][38] ([i915#11346]) +32 other tests skip [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@kms_psr@psr-primary-page-flip.html * igt@kms_setmode@basic-clone-single-crtc: - bat-arlh-2: NOTRUN -> [SKIP][39] ([i915#10208] / [i915#11346] / [i915#8809]) [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@kms_setmode@basic-clone-single-crtc.html * igt@prime_vgem@basic-fence-read: - bat-arlh-2: NOTRUN -> [SKIP][40] ([i915#10212] / [i915#11346] / [i915#11726]) [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@prime_vgem@basic-fence-read.html * igt@prime_vgem@basic-read: - bat-arlh-2: NOTRUN -> [SKIP][41] ([i915#10214] / [i915#11346] / [i915#11726]) [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@prime_vgem@basic-read.html * igt@prime_vgem@basic-write: - bat-arlh-2: NOTRUN -> [SKIP][42] ([i915#10216] / [i915#11346] / [i915#11723]) [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-arlh-2/igt@prime_vgem@basic-write.html #### Possible fixes #### * igt@i915_selftest@live@workarounds: - bat-mtlp-9: [DMESG-FAIL][43] ([i915#12061]) -> [PASS][44] +1 other test pass [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-mtlp-9/igt@i915_selftest@live@workarounds.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-mtlp-9/igt@i915_selftest@live@workarounds.html #### Warnings #### * igt@i915_selftest@live@mman: - bat-atsm-1: [ABORT][45] ([i915#13679]) -> [ABORT][46] ([i915#13465] / [i915#13679]) +1 other test abort [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16246/bat-atsm-1/igt@i915_selftest@live@mman.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/bat-atsm-1/igt@i915_selftest@live@mman.html [i915#10197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10197 [i915#10200]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10200 [i915#10206]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10206 [i915#10208]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10208 [i915#10209]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10209 [i915#10211]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10211 [i915#10212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10212 [i915#10213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10213 [i915#10214]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10214 [i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216 [i915#11343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11343 [i915#11345]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11345 [i915#11346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11346 [i915#11666]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11666 [i915#11671]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11671 [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681 [i915#11723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11723 [i915#11724]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11724 [i915#11725]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11725 [i915#11726]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11726 [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061 [i915#12203]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12203 [i915#12435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12435 [i915#12637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12637 [i915#12904]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12904 [i915#13241]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13241 [i915#13465]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13465 [i915#13633]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13633 [i915#13679]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13679 [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849 [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190 [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613 [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809 [i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197 [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318 Build changes ------------- * Linux: CI_DRM_16246 -> Patchwork_144441v3 CI-20190529: 20190529 CI_DRM_16246: f811577f424491a57b1e8669bde62998227d6907 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_8264: 8264 Patchwork_144441v3: f811577f424491a57b1e8669bde62998227d6907 @ git://anongit.freedesktop.org/gfx-ci/linux == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144441v3/index.html [-- Attachment #2: Type: text/html, Size: 16819 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters 2025-03-07 19:25 [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa ` (4 preceding siblings ...) 2025-03-07 20:57 ` ✗ i915.CI.BAT: failure " Patchwork @ 2025-03-10 13:12 ` Jani Nikula 2025-03-10 16:37 ` Ville Syrjälä 5 siblings, 1 reply; 14+ messages in thread From: Jani Nikula @ 2025-03-10 13:12 UTC (permalink / raw) To: Gustavo Sousa, intel-gfx, intel-xe Cc: Matt Roper, Ville Syrjälä, Gustavo Sousa On Fri, 07 Mar 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote: > Bandwidth parameters for Xe3_LPD have been updated with respect to > previous display releases. Encode them into xe3lpd_sa_info and use that > new struct. > > Since we are touching intel_bw.c, also take the opportunity convert it > to intel_display. In case you didn't notice already, this series and [1] from Ville will conflict badly with each other. Please collaborate to sort out which series to merge first. Thanks, Jani. [1] https://lore.kernel.org/r/20250307180139.15744-1-ville.syrjala@linux.intel.com > > Changes in v2: > - Fix typo in patch #2. > > Changes in v3: > - Squash patches #1 and #2 into a single one and modify it to convert > intel_bw.c internally to intel_display (new patch subject is > "drm/i915/display: Convert intel_bw.c internally to intel_display"). > - Add a new patch #2 to convert intel_bw.c externally to intel_display. > - Link to v2: https://lore.kernel.org/r/20250217153550.43909-1-gustavo.sousa@intel.com > > --- > Gustavo Sousa (3): > drm/i915/display: Convert intel_bw.c internally to intel_display > drm/i915/display: Convert intel_bw.c externally to intel_display > drm/i915/xe3lpd: Update bandwidth parameters > > drivers/gpu/drm/i915/display/intel_bw.c | 440 +++++++++++---------- > drivers/gpu/drm/i915/display/intel_bw.h | 9 +- > drivers/gpu/drm/i915/display/intel_cdclk.c | 3 +- > .../gpu/drm/i915/display/intel_display_driver.c | 2 +- > drivers/gpu/drm/i915/display/skl_watermark.c | 10 +- > drivers/gpu/drm/i915/i915_driver.c | 2 +- > drivers/gpu/drm/xe/display/xe_display.c | 2 +- > 7 files changed, 245 insertions(+), 223 deletions(-) > --- > base-commit: f811577f424491a57b1e8669bde62998227d6907 > change-id: 20250228-xe3lpd-bandwidth-update-f011599c0c3e > > Best regards, -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters 2025-03-10 13:12 ` [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Jani Nikula @ 2025-03-10 16:37 ` Ville Syrjälä 2025-03-10 19:01 ` Gustavo Sousa 0 siblings, 1 reply; 14+ messages in thread From: Ville Syrjälä @ 2025-03-10 16:37 UTC (permalink / raw) To: Jani Nikula; +Cc: Gustavo Sousa, intel-gfx, intel-xe, Matt Roper On Mon, Mar 10, 2025 at 03:12:43PM +0200, Jani Nikula wrote: > On Fri, 07 Mar 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote: > > Bandwidth parameters for Xe3_LPD have been updated with respect to > > previous display releases. Encode them into xe3lpd_sa_info and use that > > new struct. > > > > Since we are touching intel_bw.c, also take the opportunity convert it > > to intel_display. > > In case you didn't notice already, this series and [1] from Ville will > conflict badly with each other. Please collaborate to sort out which > series to merge first. I can rebase my stuff, so no worries. > > Thanks, > Jani. > > > [1] https://lore.kernel.org/r/20250307180139.15744-1-ville.syrjala@linux.intel.com > > > > > > Changes in v2: > > - Fix typo in patch #2. > > > > Changes in v3: > > - Squash patches #1 and #2 into a single one and modify it to convert > > intel_bw.c internally to intel_display (new patch subject is > > "drm/i915/display: Convert intel_bw.c internally to intel_display"). > > - Add a new patch #2 to convert intel_bw.c externally to intel_display. > > - Link to v2: https://lore.kernel.org/r/20250217153550.43909-1-gustavo.sousa@intel.com > > > > --- > > Gustavo Sousa (3): > > drm/i915/display: Convert intel_bw.c internally to intel_display > > drm/i915/display: Convert intel_bw.c externally to intel_display > > drm/i915/xe3lpd: Update bandwidth parameters > > > > drivers/gpu/drm/i915/display/intel_bw.c | 440 +++++++++++---------- > > drivers/gpu/drm/i915/display/intel_bw.h | 9 +- > > drivers/gpu/drm/i915/display/intel_cdclk.c | 3 +- > > .../gpu/drm/i915/display/intel_display_driver.c | 2 +- > > drivers/gpu/drm/i915/display/skl_watermark.c | 10 +- > > drivers/gpu/drm/i915/i915_driver.c | 2 +- > > drivers/gpu/drm/xe/display/xe_display.c | 2 +- > > 7 files changed, 245 insertions(+), 223 deletions(-) > > --- > > base-commit: f811577f424491a57b1e8669bde62998227d6907 > > change-id: 20250228-xe3lpd-bandwidth-update-f011599c0c3e > > > > Best regards, > > -- > Jani Nikula, Intel -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters 2025-03-10 16:37 ` Ville Syrjälä @ 2025-03-10 19:01 ` Gustavo Sousa 0 siblings, 0 replies; 14+ messages in thread From: Gustavo Sousa @ 2025-03-10 19:01 UTC (permalink / raw) To: Ville Syrjälä, Jani Nikula; +Cc: intel-gfx, intel-xe, Matt Roper Quoting Ville Syrjälä (2025-03-10 13:37:15-03:00) >On Mon, Mar 10, 2025 at 03:12:43PM +0200, Jani Nikula wrote: >> On Fri, 07 Mar 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote: >> > Bandwidth parameters for Xe3_LPD have been updated with respect to >> > previous display releases. Encode them into xe3lpd_sa_info and use that >> > new struct. >> > >> > Since we are touching intel_bw.c, also take the opportunity convert it >> > to intel_display. >> >> In case you didn't notice already, this series and [1] from Ville will >> conflict badly with each other. Please collaborate to sort out which >> series to merge first. Thanks for the heads-up, Jani. > >I can rebase my stuff, so no worries. Thanks, Ville. -- Gustavo Sousa ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2025-03-11 11:44 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-03-07 19:25 [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa 2025-03-07 19:25 ` [PATCH v3 1/3] drm/i915/display: Convert intel_bw.c internally to intel_display Gustavo Sousa 2025-03-10 16:47 ` Ville Syrjälä 2025-03-10 19:00 ` Gustavo Sousa 2025-03-11 9:26 ` Jani Nikula 2025-03-11 11:43 ` Gustavo Sousa 2025-03-07 19:25 ` [PATCH v3 2/3] drm/i915/display: Convert intel_bw.c externally " Gustavo Sousa 2025-03-10 16:49 ` Ville Syrjälä 2025-03-07 19:25 ` [PATCH v3 3/3] drm/i915/xe3lpd: Update bandwidth parameters Gustavo Sousa 2025-03-07 20:29 ` ✗ Fi.CI.SPARSE: warning for drm/i915/xe3lpd: Update bandwidth parameters (rev3) Patchwork 2025-03-07 20:57 ` ✗ i915.CI.BAT: failure " Patchwork 2025-03-10 13:12 ` [PATCH v3 0/3] drm/i915/xe3lpd: Update bandwidth parameters Jani Nikula 2025-03-10 16:37 ` Ville Syrjälä 2025-03-10 19:01 ` Gustavo Sousa
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox