* [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups
@ 2024-06-06 11:15 Jani Nikula
2024-06-06 11:15 ` [PATCH v2 01/14] drm/i915/wm: rename intel_get_cxsr_latency -> pnv_get_cxsr_latency Jani Nikula
` (16 more replies)
0 siblings, 17 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:15 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
v2 of https://lore.kernel.org/r/cover.1716906179.git.jani.nikula@intel.com
Jani Nikula (14):
drm/i915/wm: rename intel_get_cxsr_latency -> pnv_get_cxsr_latency
drm/i915/wm: clarify logging on not finding CxSR latency config
drm/i915/dram: separate fsb freq detection from mem freq
drm/i915/dram: split out pnv DDR3 detection
drm/i915/dram: rearrange mem freq init
drm/i915/gt: remove mem freq from gt debugfs
drm/i915: convert fsb_freq and mem_freq to kHz
drm/i915: extend the fsb_freq initialization to more platforms
drm/i915: use i9xx_fsb_freq() for GT clock frequency
drm/i915/cdclk: use i9xx_fsb_freq() for rawclk_freq initialization
drm/i915: move rawclk init to intel_cdclk_init()
drm/i915: move rawclk from runtime to display runtime info
drm/xe/display: drop unused rawclk_freq and RUNTIME_INFO()
drm/i915: move comments about FSB straps to proper place
drivers/gpu/drm/i915/display/i9xx_wm.c | 27 +--
.../gpu/drm/i915/display/intel_backlight.c | 10 +-
drivers/gpu/drm/i915/display/intel_cdclk.c | 80 ++-----
drivers/gpu/drm/i915/display/intel_cdclk.h | 1 -
.../drm/i915/display/intel_display_device.c | 2 +
.../drm/i915/display/intel_display_device.h | 2 +
.../i915/display/intel_display_power_well.c | 4 +-
drivers/gpu/drm/i915/display/intel_dp_aux.c | 4 +-
drivers/gpu/drm/i915/display/intel_pps.c | 2 +-
.../gpu/drm/i915/gt/intel_gt_clock_utils.c | 3 +-
drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c | 1 -
drivers/gpu/drm/i915/gt/intel_rps.c | 11 +-
drivers/gpu/drm/i915/intel_device_info.c | 5 -
drivers/gpu/drm/i915/intel_device_info.h | 2 -
drivers/gpu/drm/i915/soc/intel_dram.c | 212 +++++++++++-------
drivers/gpu/drm/i915/soc/intel_dram.h | 1 +
.../gpu/drm/xe/compat-i915-headers/i915_drv.h | 1 -
drivers/gpu/drm/xe/xe_device_types.h | 6 -
18 files changed, 176 insertions(+), 198 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 01/14] drm/i915/wm: rename intel_get_cxsr_latency -> pnv_get_cxsr_latency
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
@ 2024-06-06 11:15 ` Jani Nikula
2024-06-06 11:15 ` [PATCH v2 02/14] drm/i915/wm: clarify logging on not finding CxSR latency config Jani Nikula
` (15 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:15 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, Matt Roper
Clarify that the function is specific to PNV, making subsequent changes
slightly easier to grasp.
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/i9xx_wm.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/i9xx_wm.c b/drivers/gpu/drm/i915/display/i9xx_wm.c
index 628e7192ebc9..8657ec0abd2d 100644
--- a/drivers/gpu/drm/i915/display/i9xx_wm.c
+++ b/drivers/gpu/drm/i915/display/i9xx_wm.c
@@ -70,7 +70,7 @@ static const struct cxsr_latency cxsr_latency_table[] = {
{0, 1, 400, 800, 6042, 36042, 6584, 36584}, /* DDR3-800 SC */
};
-static const struct cxsr_latency *intel_get_cxsr_latency(struct drm_i915_private *i915)
+static const struct cxsr_latency *pnv_get_cxsr_latency(struct drm_i915_private *i915)
{
int i;
@@ -635,7 +635,7 @@ static void pnv_update_wm(struct drm_i915_private *dev_priv)
u32 reg;
unsigned int wm;
- latency = intel_get_cxsr_latency(dev_priv);
+ latency = pnv_get_cxsr_latency(dev_priv);
if (!latency) {
drm_dbg_kms(&dev_priv->drm,
"Unknown FSB/MEM found, disable CxSR\n");
@@ -4022,7 +4022,7 @@ void i9xx_wm_init(struct drm_i915_private *dev_priv)
g4x_setup_wm_latency(dev_priv);
dev_priv->display.funcs.wm = &g4x_wm_funcs;
} else if (IS_PINEVIEW(dev_priv)) {
- if (!intel_get_cxsr_latency(dev_priv)) {
+ if (!pnv_get_cxsr_latency(dev_priv)) {
drm_info(&dev_priv->drm,
"failed to find known CxSR latency "
"(found ddr%s fsb freq %d, mem freq %d), "
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 02/14] drm/i915/wm: clarify logging on not finding CxSR latency config
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
2024-06-06 11:15 ` [PATCH v2 01/14] drm/i915/wm: rename intel_get_cxsr_latency -> pnv_get_cxsr_latency Jani Nikula
@ 2024-06-06 11:15 ` Jani Nikula
2024-06-06 11:15 ` [PATCH v2 03/14] drm/i915/dram: separate fsb freq detection from mem freq Jani Nikula
` (14 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:15 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Clarify and unify the logging on not finding PNV CxSR latency
config.
Just let the i915->fsb_freq == 0 || i915->mem_freq == 0 case go through
the table instead of checking for it separately.
v2: Do not check for fsb == 0 || mem == 0 separately (Matt)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/i9xx_wm.c | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/i9xx_wm.c b/drivers/gpu/drm/i915/display/i9xx_wm.c
index 8657ec0abd2d..a63ecd5cf3b5 100644
--- a/drivers/gpu/drm/i915/display/i9xx_wm.c
+++ b/drivers/gpu/drm/i915/display/i9xx_wm.c
@@ -74,9 +74,6 @@ static const struct cxsr_latency *pnv_get_cxsr_latency(struct drm_i915_private *
{
int i;
- if (i915->fsb_freq == 0 || i915->mem_freq == 0)
- return NULL;
-
for (i = 0; i < ARRAY_SIZE(cxsr_latency_table); i++) {
const struct cxsr_latency *latency = &cxsr_latency_table[i];
bool is_desktop = !IS_MOBILE(i915);
@@ -88,7 +85,9 @@ static const struct cxsr_latency *pnv_get_cxsr_latency(struct drm_i915_private *
return latency;
}
- drm_dbg_kms(&i915->drm, "Unknown FSB/MEM found, disable CxSR\n");
+ drm_dbg_kms(&i915->drm,
+ "Could not find CxSR latency for DDR%s, FSB %u MHz, MEM %u MHz\n",
+ i915->is_ddr3 ? "3" : "2", i915->fsb_freq, i915->mem_freq);
return NULL;
}
@@ -637,8 +636,7 @@ static void pnv_update_wm(struct drm_i915_private *dev_priv)
latency = pnv_get_cxsr_latency(dev_priv);
if (!latency) {
- drm_dbg_kms(&dev_priv->drm,
- "Unknown FSB/MEM found, disable CxSR\n");
+ drm_dbg_kms(&dev_priv->drm, "Unknown FSB/MEM, disabling CxSR\n");
intel_set_memory_cxsr(dev_priv, false);
return;
}
@@ -4023,12 +4021,7 @@ void i9xx_wm_init(struct drm_i915_private *dev_priv)
dev_priv->display.funcs.wm = &g4x_wm_funcs;
} else if (IS_PINEVIEW(dev_priv)) {
if (!pnv_get_cxsr_latency(dev_priv)) {
- drm_info(&dev_priv->drm,
- "failed to find known CxSR latency "
- "(found ddr%s fsb freq %d, mem freq %d), "
- "disabling CxSR\n",
- (dev_priv->is_ddr3 == 1) ? "3" : "2",
- dev_priv->fsb_freq, dev_priv->mem_freq);
+ drm_info(&dev_priv->drm, "Unknown FSB/MEM, disabling CxSR\n");
/* Disable CxSR and never update its watermark again */
intel_set_memory_cxsr(dev_priv, false);
dev_priv->display.funcs.wm = &nop_funcs;
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 03/14] drm/i915/dram: separate fsb freq detection from mem freq
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
2024-06-06 11:15 ` [PATCH v2 01/14] drm/i915/wm: rename intel_get_cxsr_latency -> pnv_get_cxsr_latency Jani Nikula
2024-06-06 11:15 ` [PATCH v2 02/14] drm/i915/wm: clarify logging on not finding CxSR latency config Jani Nikula
@ 2024-06-06 11:15 ` Jani Nikula
2024-06-06 11:15 ` [PATCH v2 04/14] drm/i915/dram: split out pnv DDR3 detection Jani Nikula
` (13 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:15 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, Matt Roper
To simplify further changes, add separate functions for reading the fsb
frequency.
This ends up reading CLKCFG register twice, but it's not a big deal.
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/soc/intel_dram.c | 106 +++++++++++++++-----------
1 file changed, 60 insertions(+), 46 deletions(-)
diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c b/drivers/gpu/drm/i915/soc/intel_dram.c
index 18a879e98f03..3dce9b9a2c5e 100644
--- a/drivers/gpu/drm/i915/soc/intel_dram.c
+++ b/drivers/gpu/drm/i915/soc/intel_dram.c
@@ -49,21 +49,6 @@ static void pnv_detect_mem_freq(struct drm_i915_private *dev_priv)
tmp = intel_uncore_read(&dev_priv->uncore, CLKCFG);
- switch (tmp & CLKCFG_FSB_MASK) {
- case CLKCFG_FSB_533:
- dev_priv->fsb_freq = 533; /* 133*4 */
- break;
- case CLKCFG_FSB_800:
- dev_priv->fsb_freq = 800; /* 200*4 */
- break;
- case CLKCFG_FSB_667:
- dev_priv->fsb_freq = 667; /* 167*4 */
- break;
- case CLKCFG_FSB_400:
- dev_priv->fsb_freq = 400; /* 100*4 */
- break;
- }
-
switch (tmp & CLKCFG_MEM_MASK) {
case CLKCFG_MEM_533:
dev_priv->mem_freq = 533;
@@ -83,7 +68,7 @@ static void pnv_detect_mem_freq(struct drm_i915_private *dev_priv)
static void ilk_detect_mem_freq(struct drm_i915_private *dev_priv)
{
- u16 ddrpll, csipll;
+ u16 ddrpll;
ddrpll = intel_uncore_read16(&dev_priv->uncore, DDRMPLL1);
switch (ddrpll & 0xff) {
@@ -105,36 +90,6 @@ static void ilk_detect_mem_freq(struct drm_i915_private *dev_priv)
dev_priv->mem_freq = 0;
break;
}
-
- csipll = intel_uncore_read16(&dev_priv->uncore, CSIPLL0);
- switch (csipll & 0x3ff) {
- case 0x00c:
- dev_priv->fsb_freq = 3200;
- break;
- case 0x00e:
- dev_priv->fsb_freq = 3733;
- break;
- case 0x010:
- dev_priv->fsb_freq = 4266;
- break;
- case 0x012:
- dev_priv->fsb_freq = 4800;
- break;
- case 0x014:
- dev_priv->fsb_freq = 5333;
- break;
- case 0x016:
- dev_priv->fsb_freq = 5866;
- break;
- case 0x018:
- dev_priv->fsb_freq = 6400;
- break;
- default:
- drm_dbg(&dev_priv->drm, "unknown fsb frequency 0x%04x\n",
- csipll & 0x3ff);
- dev_priv->fsb_freq = 0;
- break;
- }
}
static void chv_detect_mem_freq(struct drm_i915_private *i915)
@@ -192,6 +147,64 @@ static void detect_mem_freq(struct drm_i915_private *i915)
drm_dbg(&i915->drm, "DDR speed: %d MHz\n", i915->mem_freq);
}
+static unsigned int pnv_fsb_freq(struct drm_i915_private *i915)
+{
+ u32 fsb;
+
+ fsb = intel_uncore_read(&i915->uncore, CLKCFG) & CLKCFG_FSB_MASK;
+
+ switch (fsb) {
+ case CLKCFG_FSB_400:
+ return 400;
+ case CLKCFG_FSB_533:
+ return 533;
+ case CLKCFG_FSB_667:
+ return 667;
+ case CLKCFG_FSB_800:
+ return 800;
+ }
+
+ return 0;
+}
+
+static unsigned int ilk_fsb_freq(struct drm_i915_private *dev_priv)
+{
+ u16 fsb;
+
+ fsb = intel_uncore_read16(&dev_priv->uncore, CSIPLL0) & 0x3ff;
+
+ switch (fsb) {
+ case 0x00c:
+ return 3200;
+ case 0x00e:
+ return 3733;
+ case 0x010:
+ return 4266;
+ case 0x012:
+ return 4800;
+ case 0x014:
+ return 5333;
+ case 0x016:
+ return 5866;
+ case 0x018:
+ return 6400;
+ default:
+ drm_dbg(&dev_priv->drm, "unknown fsb frequency 0x%04x\n", fsb);
+ return 0;
+ }
+}
+
+static void detect_fsb_freq(struct drm_i915_private *i915)
+{
+ if (GRAPHICS_VER(i915) == 5)
+ i915->fsb_freq = ilk_fsb_freq(i915);
+ else if (IS_PINEVIEW(i915))
+ i915->fsb_freq = pnv_fsb_freq(i915);
+
+ if (i915->fsb_freq)
+ drm_dbg(&i915->drm, "FSB frequency: %d MHz\n", i915->fsb_freq);
+}
+
static int intel_dimm_num_devices(const struct dram_dimm_info *dimm)
{
return dimm->ranks * 64 / (dimm->width ?: 1);
@@ -661,6 +674,7 @@ void intel_dram_detect(struct drm_i915_private *i915)
struct dram_info *dram_info = &i915->dram_info;
int ret;
+ detect_fsb_freq(i915);
detect_mem_freq(i915);
if (GRAPHICS_VER(i915) < 9 || IS_DG2(i915) || !HAS_DISPLAY(i915))
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 04/14] drm/i915/dram: split out pnv DDR3 detection
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (2 preceding siblings ...)
2024-06-06 11:15 ` [PATCH v2 03/14] drm/i915/dram: separate fsb freq detection from mem freq Jani Nikula
@ 2024-06-06 11:15 ` Jani Nikula
2024-06-06 11:15 ` [PATCH v2 05/14] drm/i915/dram: rearrange mem freq init Jani Nikula
` (12 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:15 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, Matt Roper
Split out the PNV DDR3 detection to a distinct step instead of
conflating it with mem freq detection.
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/soc/intel_dram.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c b/drivers/gpu/drm/i915/soc/intel_dram.c
index 3dce9b9a2c5e..1a4db52ac258 100644
--- a/drivers/gpu/drm/i915/soc/intel_dram.c
+++ b/drivers/gpu/drm/i915/soc/intel_dram.c
@@ -43,6 +43,11 @@ static const char *intel_dram_type_str(enum intel_dram_type type)
#undef DRAM_TYPE_STR
+static bool pnv_is_ddr3(struct drm_i915_private *i915)
+{
+ return intel_uncore_read(&i915->uncore, CSHRDDR3CTL) & CSHRDDR3CTL_DDR3;
+}
+
static void pnv_detect_mem_freq(struct drm_i915_private *dev_priv)
{
u32 tmp;
@@ -60,10 +65,6 @@ static void pnv_detect_mem_freq(struct drm_i915_private *dev_priv)
dev_priv->mem_freq = 800;
break;
}
-
- /* detect pineview DDR3 setting */
- tmp = intel_uncore_read(&dev_priv->uncore, CSHRDDR3CTL);
- dev_priv->is_ddr3 = (tmp & CSHRDDR3CTL_DDR3) ? 1 : 0;
}
static void ilk_detect_mem_freq(struct drm_i915_private *dev_priv)
@@ -143,6 +144,9 @@ static void detect_mem_freq(struct drm_i915_private *i915)
else if (IS_VALLEYVIEW(i915))
vlv_detect_mem_freq(i915);
+ if (IS_PINEVIEW(i915))
+ i915->is_ddr3 = pnv_is_ddr3(i915);
+
if (i915->mem_freq)
drm_dbg(&i915->drm, "DDR speed: %d MHz\n", i915->mem_freq);
}
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 05/14] drm/i915/dram: rearrange mem freq init
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (3 preceding siblings ...)
2024-06-06 11:15 ` [PATCH v2 04/14] drm/i915/dram: split out pnv DDR3 detection Jani Nikula
@ 2024-06-06 11:15 ` Jani Nikula
2024-06-06 11:15 ` [PATCH v2 06/14] drm/i915/gt: remove mem freq from gt debugfs Jani Nikula
` (11 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:15 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, Matt Roper
Follow the same style in mem freq init as in fsb freq init, returning
the value instead of assigning in multiple places.
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/soc/intel_dram.c | 59 ++++++++++++---------------
1 file changed, 25 insertions(+), 34 deletions(-)
diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c b/drivers/gpu/drm/i915/soc/intel_dram.c
index 1a4db52ac258..266ed6cfa485 100644
--- a/drivers/gpu/drm/i915/soc/intel_dram.c
+++ b/drivers/gpu/drm/i915/soc/intel_dram.c
@@ -48,7 +48,7 @@ static bool pnv_is_ddr3(struct drm_i915_private *i915)
return intel_uncore_read(&i915->uncore, CSHRDDR3CTL) & CSHRDDR3CTL_DDR3;
}
-static void pnv_detect_mem_freq(struct drm_i915_private *dev_priv)
+static unsigned int pnv_mem_freq(struct drm_i915_private *dev_priv)
{
u32 tmp;
@@ -56,44 +56,38 @@ static void pnv_detect_mem_freq(struct drm_i915_private *dev_priv)
switch (tmp & CLKCFG_MEM_MASK) {
case CLKCFG_MEM_533:
- dev_priv->mem_freq = 533;
- break;
+ return 533;
case CLKCFG_MEM_667:
- dev_priv->mem_freq = 667;
- break;
+ return 667;
case CLKCFG_MEM_800:
- dev_priv->mem_freq = 800;
- break;
+ return 800;
}
+
+ return 0;
}
-static void ilk_detect_mem_freq(struct drm_i915_private *dev_priv)
+static unsigned int ilk_mem_freq(struct drm_i915_private *dev_priv)
{
u16 ddrpll;
ddrpll = intel_uncore_read16(&dev_priv->uncore, DDRMPLL1);
switch (ddrpll & 0xff) {
case 0xc:
- dev_priv->mem_freq = 800;
- break;
+ return 800;
case 0x10:
- dev_priv->mem_freq = 1066;
- break;
+ return 1066;
case 0x14:
- dev_priv->mem_freq = 1333;
- break;
+ return 1333;
case 0x18:
- dev_priv->mem_freq = 1600;
- break;
+ return 1600;
default:
drm_dbg(&dev_priv->drm, "unknown memory frequency 0x%02x\n",
ddrpll & 0xff);
- dev_priv->mem_freq = 0;
- break;
+ return 0;
}
}
-static void chv_detect_mem_freq(struct drm_i915_private *i915)
+static unsigned int chv_mem_freq(struct drm_i915_private *i915)
{
u32 val;
@@ -103,15 +97,13 @@ static void chv_detect_mem_freq(struct drm_i915_private *i915)
switch ((val >> 2) & 0x7) {
case 3:
- i915->mem_freq = 2000;
- break;
+ return 2000;
default:
- i915->mem_freq = 1600;
- break;
+ return 1600;
}
}
-static void vlv_detect_mem_freq(struct drm_i915_private *i915)
+static unsigned int vlv_mem_freq(struct drm_i915_private *i915)
{
u32 val;
@@ -122,27 +114,26 @@ static void vlv_detect_mem_freq(struct drm_i915_private *i915)
switch ((val >> 6) & 3) {
case 0:
case 1:
- i915->mem_freq = 800;
- break;
+ return 800;
case 2:
- i915->mem_freq = 1066;
- break;
+ return 1066;
case 3:
- i915->mem_freq = 1333;
- break;
+ return 1333;
}
+
+ return 0;
}
static void detect_mem_freq(struct drm_i915_private *i915)
{
if (IS_PINEVIEW(i915))
- pnv_detect_mem_freq(i915);
+ i915->mem_freq = pnv_mem_freq(i915);
else if (GRAPHICS_VER(i915) == 5)
- ilk_detect_mem_freq(i915);
+ i915->mem_freq = ilk_mem_freq(i915);
else if (IS_CHERRYVIEW(i915))
- chv_detect_mem_freq(i915);
+ i915->mem_freq = chv_mem_freq(i915);
else if (IS_VALLEYVIEW(i915))
- vlv_detect_mem_freq(i915);
+ i915->mem_freq = vlv_mem_freq(i915);
if (IS_PINEVIEW(i915))
i915->is_ddr3 = pnv_is_ddr3(i915);
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 06/14] drm/i915/gt: remove mem freq from gt debugfs
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (4 preceding siblings ...)
2024-06-06 11:15 ` [PATCH v2 05/14] drm/i915/dram: rearrange mem freq init Jani Nikula
@ 2024-06-06 11:15 ` Jani Nikula
2024-06-06 11:15 ` [PATCH v2 07/14] drm/i915: convert fsb_freq and mem_freq to kHz Jani Nikula
` (10 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:15 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
It's a bit out of place, and only printed for VLV/CHV.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c b/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
index 4fcba42cfe34..c1ce6258e55c 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
@@ -367,7 +367,6 @@ void intel_gt_pm_frequency_dump(struct intel_gt *gt, struct drm_printer *p)
vlv_punit_put(i915);
drm_printf(p, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts);
- drm_printf(p, "DDR freq: %d MHz\n", i915->mem_freq);
drm_printf(p, "actual GPU freq: %d MHz\n",
intel_gpu_freq(rps, (freq_sts >> 8) & 0xff));
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 07/14] drm/i915: convert fsb_freq and mem_freq to kHz
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (5 preceding siblings ...)
2024-06-06 11:15 ` [PATCH v2 06/14] drm/i915/gt: remove mem freq from gt debugfs Jani Nikula
@ 2024-06-06 11:15 ` Jani Nikula
2024-06-06 11:16 ` [PATCH v2 08/14] drm/i915: extend the fsb_freq initialization to more platforms Jani Nikula
` (9 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:15 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, Matt Roper
We'll want to use fsb frequency for deriving GT clock and rawclk
frequencies in the future. Increase the accuracy by converting to
kHz. Do the same for mem freq to be aligned.
Round the frequencies ending in 666 to 667.
v2: Also handle mem_freq in gen5_rps_init() (Ville)
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/i9xx_wm.c | 6 ++--
drivers/gpu/drm/i915/gt/intel_rps.c | 11 +++---
drivers/gpu/drm/i915/soc/intel_dram.c | 50 +++++++++++++-------------
3 files changed, 34 insertions(+), 33 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/i9xx_wm.c b/drivers/gpu/drm/i915/display/i9xx_wm.c
index a63ecd5cf3b5..9e39c1afda7b 100644
--- a/drivers/gpu/drm/i915/display/i9xx_wm.c
+++ b/drivers/gpu/drm/i915/display/i9xx_wm.c
@@ -80,13 +80,13 @@ static const struct cxsr_latency *pnv_get_cxsr_latency(struct drm_i915_private *
if (is_desktop == latency->is_desktop &&
i915->is_ddr3 == latency->is_ddr3 &&
- i915->fsb_freq == latency->fsb_freq &&
- i915->mem_freq == latency->mem_freq)
+ DIV_ROUND_CLOSEST(i915->fsb_freq, 1000) == latency->fsb_freq &&
+ DIV_ROUND_CLOSEST(i915->mem_freq, 1000) == latency->mem_freq)
return latency;
}
drm_dbg_kms(&i915->drm,
- "Could not find CxSR latency for DDR%s, FSB %u MHz, MEM %u MHz\n",
+ "Could not find CxSR latency for DDR%s, FSB %u kHz, MEM %u kHz\n",
i915->is_ddr3 ? "3" : "2", i915->fsb_freq, i915->mem_freq);
return NULL;
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 70176be269d3..fa304ea088e4 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -265,10 +265,10 @@ static const struct cparams {
u16 c;
} cparams[] = {
{ 1, 1333, 301, 28664 },
- { 1, 1066, 294, 24460 },
+ { 1, 1067, 294, 24460 },
{ 1, 800, 294, 25192 },
{ 0, 1333, 276, 27605 },
- { 0, 1066, 276, 27605 },
+ { 0, 1067, 276, 27605 },
{ 0, 800, 231, 23784 },
};
@@ -280,15 +280,16 @@ static void gen5_rps_init(struct intel_rps *rps)
u32 rgvmodectl;
int c_m, i;
- if (i915->fsb_freq <= 3200)
+ if (i915->fsb_freq <= 3200000)
c_m = 0;
- else if (i915->fsb_freq <= 4800)
+ else if (i915->fsb_freq <= 4800000)
c_m = 1;
else
c_m = 2;
for (i = 0; i < ARRAY_SIZE(cparams); i++) {
- if (cparams[i].i == c_m && cparams[i].t == i915->mem_freq) {
+ if (cparams[i].i == c_m &&
+ cparams[i].t == DIV_ROUND_CLOSEST(i915->mem_freq, 1000)) {
rps->ips.m = cparams[i].m;
rps->ips.c = cparams[i].c;
break;
diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c b/drivers/gpu/drm/i915/soc/intel_dram.c
index 266ed6cfa485..ace9372244a4 100644
--- a/drivers/gpu/drm/i915/soc/intel_dram.c
+++ b/drivers/gpu/drm/i915/soc/intel_dram.c
@@ -56,11 +56,11 @@ static unsigned int pnv_mem_freq(struct drm_i915_private *dev_priv)
switch (tmp & CLKCFG_MEM_MASK) {
case CLKCFG_MEM_533:
- return 533;
+ return 533333;
case CLKCFG_MEM_667:
- return 667;
+ return 666667;
case CLKCFG_MEM_800:
- return 800;
+ return 800000;
}
return 0;
@@ -73,13 +73,13 @@ static unsigned int ilk_mem_freq(struct drm_i915_private *dev_priv)
ddrpll = intel_uncore_read16(&dev_priv->uncore, DDRMPLL1);
switch (ddrpll & 0xff) {
case 0xc:
- return 800;
+ return 800000;
case 0x10:
- return 1066;
+ return 1066667;
case 0x14:
- return 1333;
+ return 1333333;
case 0x18:
- return 1600;
+ return 1600000;
default:
drm_dbg(&dev_priv->drm, "unknown memory frequency 0x%02x\n",
ddrpll & 0xff);
@@ -97,9 +97,9 @@ static unsigned int chv_mem_freq(struct drm_i915_private *i915)
switch ((val >> 2) & 0x7) {
case 3:
- return 2000;
+ return 2000000;
default:
- return 1600;
+ return 1600000;
}
}
@@ -114,11 +114,11 @@ static unsigned int vlv_mem_freq(struct drm_i915_private *i915)
switch ((val >> 6) & 3) {
case 0:
case 1:
- return 800;
+ return 800000;
case 2:
- return 1066;
+ return 1066667;
case 3:
- return 1333;
+ return 1333333;
}
return 0;
@@ -139,7 +139,7 @@ static void detect_mem_freq(struct drm_i915_private *i915)
i915->is_ddr3 = pnv_is_ddr3(i915);
if (i915->mem_freq)
- drm_dbg(&i915->drm, "DDR speed: %d MHz\n", i915->mem_freq);
+ drm_dbg(&i915->drm, "DDR speed: %d kHz\n", i915->mem_freq);
}
static unsigned int pnv_fsb_freq(struct drm_i915_private *i915)
@@ -150,13 +150,13 @@ static unsigned int pnv_fsb_freq(struct drm_i915_private *i915)
switch (fsb) {
case CLKCFG_FSB_400:
- return 400;
+ return 400000;
case CLKCFG_FSB_533:
- return 533;
+ return 533333;
case CLKCFG_FSB_667:
- return 667;
+ return 666667;
case CLKCFG_FSB_800:
- return 800;
+ return 800000;
}
return 0;
@@ -170,19 +170,19 @@ static unsigned int ilk_fsb_freq(struct drm_i915_private *dev_priv)
switch (fsb) {
case 0x00c:
- return 3200;
+ return 3200000;
case 0x00e:
- return 3733;
+ return 3733333;
case 0x010:
- return 4266;
+ return 4266667;
case 0x012:
- return 4800;
+ return 4800000;
case 0x014:
- return 5333;
+ return 5333333;
case 0x016:
- return 5866;
+ return 5866667;
case 0x018:
- return 6400;
+ return 6400000;
default:
drm_dbg(&dev_priv->drm, "unknown fsb frequency 0x%04x\n", fsb);
return 0;
@@ -197,7 +197,7 @@ static void detect_fsb_freq(struct drm_i915_private *i915)
i915->fsb_freq = pnv_fsb_freq(i915);
if (i915->fsb_freq)
- drm_dbg(&i915->drm, "FSB frequency: %d MHz\n", i915->fsb_freq);
+ drm_dbg(&i915->drm, "FSB frequency: %d kHz\n", i915->fsb_freq);
}
static int intel_dimm_num_devices(const struct dram_dimm_info *dimm)
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 08/14] drm/i915: extend the fsb_freq initialization to more platforms
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (6 preceding siblings ...)
2024-06-06 11:15 ` [PATCH v2 07/14] drm/i915: convert fsb_freq and mem_freq to kHz Jani Nikula
@ 2024-06-06 11:16 ` Jani Nikula
2024-06-06 11:16 ` [PATCH v2 09/14] drm/i915: use i9xx_fsb_freq() for GT clock frequency Jani Nikula
` (8 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:16 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Initialize fsb frequency for more platforms to be able to use it for GT
clock and rawclk frequency initialization.
Note: There's a discrepancy between existing pnv_fsb_freq() and
i9xx_hrawclk() regarding CLKCFG interpretation. Presume all PNV is
mobile.
Default to 1333 MHz for unknown values, similar to i9xx_hrawclk().
v2:
- Add MISSING_CASE() (Ville)
- Default to the same frequency for both branches (Ville)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/soc/intel_dram.c | 55 ++++++++++++++++++++-------
1 file changed, 41 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c b/drivers/gpu/drm/i915/soc/intel_dram.c
index ace9372244a4..1b01e5130f79 100644
--- a/drivers/gpu/drm/i915/soc/intel_dram.c
+++ b/drivers/gpu/drm/i915/soc/intel_dram.c
@@ -142,24 +142,51 @@ static void detect_mem_freq(struct drm_i915_private *i915)
drm_dbg(&i915->drm, "DDR speed: %d kHz\n", i915->mem_freq);
}
-static unsigned int pnv_fsb_freq(struct drm_i915_private *i915)
+static unsigned int i9xx_fsb_freq(struct drm_i915_private *i915)
{
u32 fsb;
fsb = intel_uncore_read(&i915->uncore, CLKCFG) & CLKCFG_FSB_MASK;
- switch (fsb) {
- case CLKCFG_FSB_400:
- return 400000;
- case CLKCFG_FSB_533:
- return 533333;
- case CLKCFG_FSB_667:
- return 666667;
- case CLKCFG_FSB_800:
- return 800000;
+ if (IS_PINEVIEW(i915) || IS_MOBILE(i915)) {
+ switch (fsb) {
+ case CLKCFG_FSB_400:
+ return 400000;
+ case CLKCFG_FSB_533:
+ return 533333;
+ case CLKCFG_FSB_667:
+ return 666667;
+ case CLKCFG_FSB_800:
+ return 800000;
+ case CLKCFG_FSB_1067:
+ return 1066667;
+ case CLKCFG_FSB_1333:
+ return 1333333;
+ default:
+ MISSING_CASE(fsb);
+ return 1333333;
+ }
+ } else {
+ switch (fsb) {
+ case CLKCFG_FSB_400_ALT:
+ return 400000;
+ case CLKCFG_FSB_533:
+ return 533333;
+ case CLKCFG_FSB_667:
+ return 666667;
+ case CLKCFG_FSB_800:
+ return 800000;
+ case CLKCFG_FSB_1067_ALT:
+ return 1066667;
+ case CLKCFG_FSB_1333_ALT:
+ return 1333333;
+ case CLKCFG_FSB_1600_ALT:
+ return 1600000;
+ default:
+ MISSING_CASE(fsb);
+ return 1333333;
+ }
}
-
- return 0;
}
static unsigned int ilk_fsb_freq(struct drm_i915_private *dev_priv)
@@ -193,8 +220,8 @@ static void detect_fsb_freq(struct drm_i915_private *i915)
{
if (GRAPHICS_VER(i915) == 5)
i915->fsb_freq = ilk_fsb_freq(i915);
- else if (IS_PINEVIEW(i915))
- i915->fsb_freq = pnv_fsb_freq(i915);
+ else if (GRAPHICS_VER(i915) == 3 || GRAPHICS_VER(i915) == 4)
+ i915->fsb_freq = i9xx_fsb_freq(i915);
if (i915->fsb_freq)
drm_dbg(&i915->drm, "FSB frequency: %d kHz\n", i915->fsb_freq);
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 09/14] drm/i915: use i9xx_fsb_freq() for GT clock frequency
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (7 preceding siblings ...)
2024-06-06 11:16 ` [PATCH v2 08/14] drm/i915: extend the fsb_freq initialization to more platforms Jani Nikula
@ 2024-06-06 11:16 ` Jani Nikula
2024-06-06 11:16 ` [PATCH v2 10/14] drm/i915/cdclk: use i9xx_fsb_freq() for rawclk_freq initialization Jani Nikula
` (7 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:16 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Reuse i9xx_fsb_freq() for GT clock frequency initialization instead of
depending on rawclk_freq.
Note: If the init order was changed, we could use i915->fsb_freq
directly. However, GT clock initialization is done in
i915_driver_mmio_probe(), but intel_dram_detect() later in
i915_driver_hw_probe(), with a dependency on intel_pcode_init().
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/gt/intel_gt_clock_utils.c | 3 ++-
drivers/gpu/drm/i915/soc/intel_dram.c | 2 +-
drivers/gpu/drm/i915/soc/intel_dram.h | 1 +
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_clock_utils.c b/drivers/gpu/drm/i915/gt/intel_gt_clock_utils.c
index 7c9be4fd1c8c..6e63505fe478 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_clock_utils.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_clock_utils.c
@@ -9,6 +9,7 @@
#include "intel_gt_clock_utils.h"
#include "intel_gt_print.h"
#include "intel_gt_regs.h"
+#include "soc/intel_dram.h"
static u32 read_reference_ts_freq(struct intel_uncore *uncore)
{
@@ -151,7 +152,7 @@ static u32 gen4_read_clock_frequency(struct intel_uncore *uncore)
*
* Testing on actual hardware has shown there is no /16.
*/
- return RUNTIME_INFO(uncore->i915)->rawclk_freq * 1000;
+ return DIV_ROUND_CLOSEST(i9xx_fsb_freq(uncore->i915), 4) * 1000;
}
static u32 read_clock_frequency(struct intel_uncore *uncore)
diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c b/drivers/gpu/drm/i915/soc/intel_dram.c
index 1b01e5130f79..dac39b41fa51 100644
--- a/drivers/gpu/drm/i915/soc/intel_dram.c
+++ b/drivers/gpu/drm/i915/soc/intel_dram.c
@@ -142,7 +142,7 @@ static void detect_mem_freq(struct drm_i915_private *i915)
drm_dbg(&i915->drm, "DDR speed: %d kHz\n", i915->mem_freq);
}
-static unsigned int i9xx_fsb_freq(struct drm_i915_private *i915)
+unsigned int i9xx_fsb_freq(struct drm_i915_private *i915)
{
u32 fsb;
diff --git a/drivers/gpu/drm/i915/soc/intel_dram.h b/drivers/gpu/drm/i915/soc/intel_dram.h
index 4ba13c13162c..a10136eda674 100644
--- a/drivers/gpu/drm/i915/soc/intel_dram.h
+++ b/drivers/gpu/drm/i915/soc/intel_dram.h
@@ -10,5 +10,6 @@ struct drm_i915_private;
void intel_dram_edram_detect(struct drm_i915_private *i915);
void intel_dram_detect(struct drm_i915_private *i915);
+unsigned int i9xx_fsb_freq(struct drm_i915_private *i915);
#endif /* __INTEL_DRAM_H__ */
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 10/14] drm/i915/cdclk: use i9xx_fsb_freq() for rawclk_freq initialization
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (8 preceding siblings ...)
2024-06-06 11:16 ` [PATCH v2 09/14] drm/i915: use i9xx_fsb_freq() for GT clock frequency Jani Nikula
@ 2024-06-06 11:16 ` Jani Nikula
2024-06-06 11:16 ` [PATCH v2 11/14] drm/i915: move rawclk init to intel_cdclk_init() Jani Nikula
` (6 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:16 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
Instead of duplicating the CLKCFG parsing, reuse i9xx_fsb_freq() to
figure out rawclk_freq where applicable.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_cdclk.c | 46 ++--------------------
1 file changed, 3 insertions(+), 43 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 7ef8dcb1601a..7e93984eba11 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -23,6 +23,7 @@
#include <linux/time.h>
+#include "soc/intel_dram.h"
#include "hsw_ips.h"
#include "i915_reg.h"
#include "intel_atomic.h"
@@ -3539,10 +3540,8 @@ static int vlv_hrawclk(struct drm_i915_private *dev_priv)
CCK_DISPLAY_REF_CLOCK_CONTROL);
}
-static int i9xx_hrawclk(struct drm_i915_private *dev_priv)
+static int i9xx_hrawclk(struct drm_i915_private *i915)
{
- u32 clkcfg;
-
/*
* hrawclock is 1/4 the FSB frequency
*
@@ -3553,46 +3552,7 @@ static int i9xx_hrawclk(struct drm_i915_private *dev_priv)
* don't know which registers have that information,
* and all the relevant docs have gone to bit heaven :(
*/
- clkcfg = intel_de_read(dev_priv, CLKCFG) & CLKCFG_FSB_MASK;
-
- if (IS_MOBILE(dev_priv)) {
- switch (clkcfg) {
- case CLKCFG_FSB_400:
- return 100000;
- case CLKCFG_FSB_533:
- return 133333;
- case CLKCFG_FSB_667:
- return 166667;
- case CLKCFG_FSB_800:
- return 200000;
- case CLKCFG_FSB_1067:
- return 266667;
- case CLKCFG_FSB_1333:
- return 333333;
- default:
- MISSING_CASE(clkcfg);
- return 133333;
- }
- } else {
- switch (clkcfg) {
- case CLKCFG_FSB_400_ALT:
- return 100000;
- case CLKCFG_FSB_533:
- return 133333;
- case CLKCFG_FSB_667:
- return 166667;
- case CLKCFG_FSB_800:
- return 200000;
- case CLKCFG_FSB_1067_ALT:
- return 266667;
- case CLKCFG_FSB_1333_ALT:
- return 333333;
- case CLKCFG_FSB_1600_ALT:
- return 400000;
- default:
- return 133333;
- }
- }
+ return DIV_ROUND_CLOSEST(i9xx_fsb_freq(i915), 4);
}
/**
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 11/14] drm/i915: move rawclk init to intel_cdclk_init()
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (9 preceding siblings ...)
2024-06-06 11:16 ` [PATCH v2 10/14] drm/i915/cdclk: use i9xx_fsb_freq() for rawclk_freq initialization Jani Nikula
@ 2024-06-06 11:16 ` Jani Nikula
2024-06-06 11:16 ` [PATCH v2 12/14] drm/i915: move rawclk from runtime to display runtime info Jani Nikula
` (5 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:16 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
The rawclk initialization is a bit out of place in
intel_device_info_runtime_init(). Move it to intel_cdclk_init(), with a
bit of refactoring on intel_read_rawclk().
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_cdclk.c | 23 +++++++++++-----------
drivers/gpu/drm/i915/display/intel_cdclk.h | 1 -
drivers/gpu/drm/i915/intel_device_info.c | 4 ----
3 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 7e93984eba11..cfb7d4e2f05e 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -3228,6 +3228,8 @@ int intel_cdclk_state_set_joined_mbus(struct intel_atomic_state *state, bool joi
return intel_atomic_lock_global_state(&cdclk_state->base);
}
+static void intel_rawclk_init(struct drm_i915_private *dev_priv);
+
int intel_cdclk_init(struct drm_i915_private *dev_priv)
{
struct intel_cdclk_state *cdclk_state;
@@ -3239,6 +3241,8 @@ int intel_cdclk_init(struct drm_i915_private *dev_priv)
intel_atomic_global_obj_init(dev_priv, &dev_priv->display.cdclk.obj,
&cdclk_state->base, &intel_cdclk_funcs);
+ intel_rawclk_init(dev_priv);
+
return 0;
}
@@ -3555,16 +3559,13 @@ static int i9xx_hrawclk(struct drm_i915_private *i915)
return DIV_ROUND_CLOSEST(i9xx_fsb_freq(i915), 4);
}
-/**
- * intel_read_rawclk - Determine the current RAWCLK frequency
- * @dev_priv: i915 device
- *
- * Determine the current RAWCLK frequency. RAWCLK is a fixed
- * frequency clock so this needs to done only once.
+/*
+ * Initialize the current RAWCLK frequency. RAWCLK is a fixed frequency clock so
+ * this needs to done only once.
*/
-u32 intel_read_rawclk(struct drm_i915_private *dev_priv)
+static void intel_rawclk_init(struct drm_i915_private *dev_priv)
{
- u32 freq;
+ u32 freq = 0;
if (INTEL_PCH_TYPE(dev_priv) >= PCH_MTL)
/*
@@ -3583,11 +3584,9 @@ u32 intel_read_rawclk(struct drm_i915_private *dev_priv)
freq = vlv_hrawclk(dev_priv);
else if (DISPLAY_VER(dev_priv) >= 3)
freq = i9xx_hrawclk(dev_priv);
- else
- /* no rawclk on other platforms, or no need to know it */
- return 0;
- return freq;
+ RUNTIME_INFO(dev_priv)->rawclk_freq = freq;
+ drm_dbg_kms(&dev_priv->drm, "rawclk rate: %d kHz\n", freq);
}
static int i915_cdclk_info_show(struct seq_file *m, void *unused)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.h b/drivers/gpu/drm/i915/display/intel_cdclk.h
index cfdcdec07a4d..a3f950d5a366 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.h
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.h
@@ -64,7 +64,6 @@ void intel_cdclk_uninit_hw(struct drm_i915_private *i915);
void intel_init_cdclk_hooks(struct drm_i915_private *dev_priv);
void intel_update_max_cdclk(struct drm_i915_private *dev_priv);
void intel_update_cdclk(struct drm_i915_private *dev_priv);
-u32 intel_read_rawclk(struct drm_i915_private *dev_priv);
bool intel_cdclk_clock_changed(const struct intel_cdclk_config *a,
const struct intel_cdclk_config *b);
int intel_mdclk_cdclk_ratio(struct drm_i915_private *i915,
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index d26de37719a7..365bb7a10030 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -370,10 +370,6 @@ void intel_device_info_runtime_init(struct drm_i915_private *dev_priv)
"Disabling ppGTT for VT-d support\n");
runtime->ppgtt_type = INTEL_PPGTT_NONE;
}
-
- runtime->rawclk_freq = intel_read_rawclk(dev_priv);
- drm_dbg(&dev_priv->drm, "rawclk rate: %d kHz\n", runtime->rawclk_freq);
-
}
/*
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 12/14] drm/i915: move rawclk from runtime to display runtime info
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (10 preceding siblings ...)
2024-06-06 11:16 ` [PATCH v2 11/14] drm/i915: move rawclk init to intel_cdclk_init() Jani Nikula
@ 2024-06-06 11:16 ` Jani Nikula
2024-06-06 11:16 ` [PATCH v2 13/14] drm/xe/display: drop unused rawclk_freq and RUNTIME_INFO() Jani Nikula
` (4 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:16 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
It's mostly about display, so move it under display.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_backlight.c | 10 +++++-----
drivers/gpu/drm/i915/display/intel_cdclk.c | 2 +-
drivers/gpu/drm/i915/display/intel_display_device.c | 2 ++
drivers/gpu/drm/i915/display/intel_display_device.h | 2 ++
.../gpu/drm/i915/display/intel_display_power_well.c | 4 ++--
drivers/gpu/drm/i915/display/intel_dp_aux.c | 4 ++--
drivers/gpu/drm/i915/display/intel_pps.c | 2 +-
drivers/gpu/drm/i915/intel_device_info.c | 1 -
drivers/gpu/drm/i915/intel_device_info.h | 2 --
9 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c
index 071668bfe5d1..66ee925287c2 100644
--- a/drivers/gpu/drm/i915/display/intel_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_backlight.c
@@ -1011,7 +1011,7 @@ static u32 cnp_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
{
struct drm_i915_private *i915 = to_i915(connector->base.dev);
- return DIV_ROUND_CLOSEST(KHz(RUNTIME_INFO(i915)->rawclk_freq),
+ return DIV_ROUND_CLOSEST(KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq),
pwm_freq_hz);
}
@@ -1073,7 +1073,7 @@ static u32 pch_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
{
struct drm_i915_private *i915 = to_i915(connector->base.dev);
- return DIV_ROUND_CLOSEST(KHz(RUNTIME_INFO(i915)->rawclk_freq),
+ return DIV_ROUND_CLOSEST(KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq),
pwm_freq_hz * 128);
}
@@ -1091,7 +1091,7 @@ static u32 i9xx_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
int clock;
if (IS_PINEVIEW(i915))
- clock = KHz(RUNTIME_INFO(i915)->rawclk_freq);
+ clock = KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq);
else
clock = KHz(i915->display.cdclk.hw.cdclk);
@@ -1109,7 +1109,7 @@ static u32 i965_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
int clock;
if (IS_G4X(i915))
- clock = KHz(RUNTIME_INFO(i915)->rawclk_freq);
+ clock = KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq);
else
clock = KHz(i915->display.cdclk.hw.cdclk);
@@ -1133,7 +1133,7 @@ static u32 vlv_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
clock = MHz(25);
mul = 16;
} else {
- clock = KHz(RUNTIME_INFO(i915)->rawclk_freq);
+ clock = KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq);
mul = 128;
}
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index cfb7d4e2f05e..17d04353b2b0 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -3585,7 +3585,7 @@ static void intel_rawclk_init(struct drm_i915_private *dev_priv)
else if (DISPLAY_VER(dev_priv) >= 3)
freq = i9xx_hrawclk(dev_priv);
- RUNTIME_INFO(dev_priv)->rawclk_freq = freq;
+ DISPLAY_RUNTIME_INFO(dev_priv)->rawclk_freq = freq;
drm_dbg_kms(&dev_priv->drm, "rawclk rate: %d kHz\n", freq);
}
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
index b35422da7f6c..f10996b0b41d 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.c
+++ b/drivers/gpu/drm/i915/display/intel_display_device.c
@@ -1511,6 +1511,8 @@ void intel_display_device_info_print(const struct intel_display_device_info *inf
drm_printf(p, "has_hdcp: %s\n", str_yes_no(runtime->has_hdcp));
drm_printf(p, "has_dmc: %s\n", str_yes_no(runtime->has_dmc));
drm_printf(p, "has_dsc: %s\n", str_yes_no(runtime->has_dsc));
+
+ drm_printf(p, "rawclk rate: %u kHz\n", runtime->rawclk_freq);
}
/*
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index e1d9947394dc..2dcfdcdf69bd 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -201,6 +201,8 @@ struct intel_display_runtime_info {
u16 step;
} ip;
+ u32 rawclk_freq;
+
u8 pipe_mask;
u8 cpu_transcoder_mask;
u16 port_mask;
diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
index 83f616097a29..a6b156c4388e 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
@@ -1176,9 +1176,9 @@ static void vlv_init_display_clock_gating(struct drm_i915_private *dev_priv)
MI_ARB_DISPLAY_TRICKLE_FEED_DISABLE);
intel_de_write(dev_priv, CBR1_VLV, 0);
- drm_WARN_ON(&dev_priv->drm, RUNTIME_INFO(dev_priv)->rawclk_freq == 0);
+ drm_WARN_ON(&dev_priv->drm, DISPLAY_RUNTIME_INFO(dev_priv)->rawclk_freq == 0);
intel_de_write(dev_priv, RAWCLK_FREQ_VLV,
- DIV_ROUND_CLOSEST(RUNTIME_INFO(dev_priv)->rawclk_freq,
+ DIV_ROUND_CLOSEST(DISPLAY_RUNTIME_INFO(dev_priv)->rawclk_freq,
1000));
}
diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux.c b/drivers/gpu/drm/i915/display/intel_dp_aux.c
index b8a53bb174da..cbc817bb0cc3 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux.c
@@ -83,7 +83,7 @@ static u32 g4x_get_aux_clock_divider(struct intel_dp *intel_dp, int index)
* The clock divider is based off the hrawclk, and would like to run at
* 2MHz. So, take the hrawclk value and divide by 2000 and use that
*/
- return DIV_ROUND_CLOSEST(RUNTIME_INFO(i915)->rawclk_freq, 2000);
+ return DIV_ROUND_CLOSEST(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq, 2000);
}
static u32 ilk_get_aux_clock_divider(struct intel_dp *intel_dp, int index)
@@ -103,7 +103,7 @@ static u32 ilk_get_aux_clock_divider(struct intel_dp *intel_dp, int index)
if (dig_port->aux_ch == AUX_CH_A)
freq = i915->display.cdclk.hw.cdclk;
else
- freq = RUNTIME_INFO(i915)->rawclk_freq;
+ freq = DISPLAY_RUNTIME_INFO(i915)->rawclk_freq;
return DIV_ROUND_CLOSEST(freq, 2000);
}
diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c
index 73046ef58d8e..8ca2800f614c 100644
--- a/drivers/gpu/drm/i915/display/intel_pps.c
+++ b/drivers/gpu/drm/i915/display/intel_pps.c
@@ -1468,7 +1468,7 @@ static void pps_init_registers(struct intel_dp *intel_dp, bool force_disable_vdd
{
struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
u32 pp_on, pp_off, port_sel = 0;
- int div = RUNTIME_INFO(dev_priv)->rawclk_freq / 1000;
+ int div = DISPLAY_RUNTIME_INFO(dev_priv)->rawclk_freq / 1000;
struct pps_registers regs;
enum port port = dp_to_dig_port(intel_dp)->base.port;
const struct edp_power_seq *seq = &intel_dp->pps.pps_delays;
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index 365bb7a10030..91acbf99574c 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -124,7 +124,6 @@ void intel_device_info_print(const struct intel_device_info *info,
#undef PRINT_FLAG
drm_printf(p, "has_pooled_eu: %s\n", str_yes_no(runtime->has_pooled_eu));
- drm_printf(p, "rawclk rate: %u kHz\n", runtime->rawclk_freq);
}
#define ID(id) (id)
diff --git a/drivers/gpu/drm/i915/intel_device_info.h b/drivers/gpu/drm/i915/intel_device_info.h
index d1a2abc7e513..fb8a08623eb0 100644
--- a/drivers/gpu/drm/i915/intel_device_info.h
+++ b/drivers/gpu/drm/i915/intel_device_info.h
@@ -204,8 +204,6 @@ struct intel_runtime_info {
u16 device_id;
- u32 rawclk_freq;
-
struct intel_step_info step;
unsigned int page_sizes; /* page sizes supported by the HW */
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 13/14] drm/xe/display: drop unused rawclk_freq and RUNTIME_INFO()
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (11 preceding siblings ...)
2024-06-06 11:16 ` [PATCH v2 12/14] drm/i915: move rawclk from runtime to display runtime info Jani Nikula
@ 2024-06-06 11:16 ` Jani Nikula
2024-06-06 11:16 ` [PATCH v2 14/14] drm/i915: move comments about FSB straps to proper place Jani Nikula
` (3 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:16 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula
With rawclk_freq moved to display runtime info, xe has no users left for
them.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
| 1 -
drivers/gpu/drm/xe/xe_device_types.h | 6 ------
2 files changed, 7 deletions(-)
--git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
index cd4632276141..6c5830875091 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
@@ -181,7 +181,6 @@ struct i915_sched_attr {
intel_runtime_pm_put((rpm), (wf)), (wf) = 0)
#define pdev_to_i915 pdev_to_xe_device
-#define RUNTIME_INFO(xe) (&(xe)->info.i915_runtime)
#define FORCEWAKE_ALL XE_FORCEWAKE_ALL
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index f1c09824b145..bb24384b10a2 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -290,12 +290,6 @@ struct xe_device {
u8 has_atomic_enable_pte_bit:1;
/** @info.has_device_atomics_on_smem: Supports device atomics on SMEM */
u8 has_device_atomics_on_smem:1;
-
-#if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
- struct {
- u32 rawclk_freq;
- } i915_runtime;
-#endif
} info;
/** @irq: device interrupt state */
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 14/14] drm/i915: move comments about FSB straps to proper place
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (12 preceding siblings ...)
2024-06-06 11:16 ` [PATCH v2 13/14] drm/xe/display: drop unused rawclk_freq and RUNTIME_INFO() Jani Nikula
@ 2024-06-06 11:16 ` Jani Nikula
2024-06-06 12:13 ` ✗ Fi.CI.SPARSE: warning for drm/i915: mem/fsb/rawclk freq cleanups (rev2) Patchwork
` (2 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2024-06-06 11:16 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, Ville Syrjälä
Move the comment about FSB straps to where the relevant register is
read.
Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_cdclk.c | 11 +----------
drivers/gpu/drm/i915/soc/intel_dram.c | 8 ++++++++
2 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 17d04353b2b0..5336c8846d89 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -3546,16 +3546,7 @@ static int vlv_hrawclk(struct drm_i915_private *dev_priv)
static int i9xx_hrawclk(struct drm_i915_private *i915)
{
- /*
- * hrawclock is 1/4 the FSB frequency
- *
- * Note that this only reads the state of the FSB
- * straps, not the actual FSB frequency. Some BIOSen
- * let you configure each independently. Ideally we'd
- * read out the actual FSB frequency but sadly we
- * don't know which registers have that information,
- * and all the relevant docs have gone to bit heaven :(
- */
+ /* hrawclock is 1/4 the FSB frequency */
return DIV_ROUND_CLOSEST(i9xx_fsb_freq(i915), 4);
}
diff --git a/drivers/gpu/drm/i915/soc/intel_dram.c b/drivers/gpu/drm/i915/soc/intel_dram.c
index dac39b41fa51..4aba47bccc63 100644
--- a/drivers/gpu/drm/i915/soc/intel_dram.c
+++ b/drivers/gpu/drm/i915/soc/intel_dram.c
@@ -146,6 +146,14 @@ unsigned int i9xx_fsb_freq(struct drm_i915_private *i915)
{
u32 fsb;
+ /*
+ * Note that this only reads the state of the FSB
+ * straps, not the actual FSB frequency. Some BIOSen
+ * let you configure each independently. Ideally we'd
+ * read out the actual FSB frequency but sadly we
+ * don't know which registers have that information,
+ * and all the relevant docs have gone to bit heaven :(
+ */
fsb = intel_uncore_read(&i915->uncore, CLKCFG) & CLKCFG_FSB_MASK;
if (IS_PINEVIEW(i915) || IS_MOBILE(i915)) {
--
2.39.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* ✗ Fi.CI.SPARSE: warning for drm/i915: mem/fsb/rawclk freq cleanups (rev2)
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (13 preceding siblings ...)
2024-06-06 11:16 ` [PATCH v2 14/14] drm/i915: move comments about FSB straps to proper place Jani Nikula
@ 2024-06-06 12:13 ` Patchwork
2024-06-06 12:24 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-06-07 11:48 ` [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Ville Syrjälä
16 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2024-06-06 12:13 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: mem/fsb/rawclk freq cleanups (rev2)
URL : https://patchwork.freedesktop.org/series/134145/
State : warning
== Summary ==
Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
^ permalink raw reply [flat|nested] 18+ messages in thread
* ✗ Fi.CI.BAT: failure for drm/i915: mem/fsb/rawclk freq cleanups (rev2)
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (14 preceding siblings ...)
2024-06-06 12:13 ` ✗ Fi.CI.SPARSE: warning for drm/i915: mem/fsb/rawclk freq cleanups (rev2) Patchwork
@ 2024-06-06 12:24 ` Patchwork
2024-06-07 11:48 ` [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Ville Syrjälä
16 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2024-06-06 12:24 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 11066 bytes --]
== Series Details ==
Series: drm/i915: mem/fsb/rawclk freq cleanups (rev2)
URL : https://patchwork.freedesktop.org/series/134145/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_14884 -> Patchwork_134145v2
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_134145v2 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_134145v2, 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_134145v2/index.html
Participating hosts (41 -> 36)
------------------------------
Additional (2): bat-dg2-11 bat-atsm-1
Missing (7): bat-dg1-7 bat-kbl-2 bat-adlp-9 fi-snb-2520m bat-jsl-3 bat-dg2-14 bat-jsl-1
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_134145v2:
### IGT changes ###
#### Possible regressions ####
* igt@i915_module_load@load:
- fi-bsw-n3050: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14884/fi-bsw-n3050/igt@i915_module_load@load.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/fi-bsw-n3050/igt@i915_module_load@load.html
Known issues
------------
Here are the changes found in Patchwork_134145v2 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_mmap@basic:
- bat-atsm-1: NOTRUN -> [SKIP][3] ([i915#4083])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@gem_mmap@basic.html
- bat-dg2-11: NOTRUN -> [SKIP][4] ([i915#4083])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@gem_mmap@basic.html
* igt@gem_tiled_fence_blits@basic:
- bat-dg2-11: NOTRUN -> [SKIP][5] ([i915#4077]) +2 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@gem_tiled_fence_blits@basic.html
* igt@gem_tiled_pread_basic:
- bat-atsm-1: NOTRUN -> [SKIP][6] ([i915#4079]) +1 other test skip
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@gem_tiled_pread_basic.html
- bat-dg2-11: NOTRUN -> [SKIP][7] ([i915#4079]) +1 other test skip
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@gem_tiled_pread_basic.html
* igt@i915_module_load@load:
- fi-bsw-nick: [PASS][8] -> [INCOMPLETE][9] ([i915#10311])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14884/fi-bsw-nick/igt@i915_module_load@load.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/fi-bsw-nick/igt@i915_module_load@load.html
* igt@i915_pm_rps@basic-api:
- bat-atsm-1: NOTRUN -> [SKIP][10] ([i915#6621])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@i915_pm_rps@basic-api.html
- bat-dg2-11: NOTRUN -> [SKIP][11] ([i915#6621])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@i915_pm_rps@basic-api.html
* igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
- bat-dg2-11: NOTRUN -> [SKIP][12] ([i915#4212]) +7 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-dg2-11: NOTRUN -> [SKIP][13] ([i915#5190])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_addfb_basic@basic-y-tiled-legacy:
- bat-dg2-11: NOTRUN -> [SKIP][14] ([i915#4215] / [i915#5190])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html
* igt@kms_addfb_basic@size-max:
- bat-atsm-1: NOTRUN -> [SKIP][15] ([i915#6077]) +37 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@kms_addfb_basic@size-max.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- bat-dg2-11: NOTRUN -> [SKIP][16] ([i915#4103] / [i915#4213]) +1 other test skip
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
- bat-atsm-1: NOTRUN -> [SKIP][17] ([i915#6078]) +22 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
* igt@kms_dsc@dsc-basic:
- bat-dg2-11: NOTRUN -> [SKIP][18] ([i915#3555] / [i915#3840])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_dsc@dsc-basic.html
* igt@kms_force_connector_basic@force-load-detect:
- bat-dg2-11: NOTRUN -> [SKIP][19]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_force_connector_basic@prune-stale-modes:
- bat-atsm-1: NOTRUN -> [SKIP][20] ([i915#6093]) +4 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@kms_force_connector_basic@prune-stale-modes.html
- bat-dg2-11: NOTRUN -> [SKIP][21] ([i915#5274])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_force_connector_basic@prune-stale-modes.html
* igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24:
- bat-atsm-1: NOTRUN -> [SKIP][22] ([i915#1836]) +6 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html
* igt@kms_pm_backlight@basic-brightness:
- bat-dg2-11: NOTRUN -> [SKIP][23] ([i915#5354])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_prop_blob@basic:
- bat-atsm-1: NOTRUN -> [SKIP][24] ([i915#7357])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@kms_prop_blob@basic.html
* igt@kms_psr@psr-sprite-plane-onoff:
- bat-dg2-11: NOTRUN -> [SKIP][25] ([i915#1072] / [i915#9732]) +3 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@kms_setmode@basic-clone-single-crtc:
- bat-atsm-1: NOTRUN -> [SKIP][26] ([i915#6094])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@kms_setmode@basic-clone-single-crtc.html
- bat-dg2-11: NOTRUN -> [SKIP][27] ([i915#3555])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@kms_setmode@basic-clone-single-crtc.html
* igt@prime_vgem@basic-fence-flip:
- bat-dg2-11: NOTRUN -> [SKIP][28] ([i915#3708])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@prime_vgem@basic-fence-flip.html
* igt@prime_vgem@basic-fence-mmap:
- bat-atsm-1: NOTRUN -> [SKIP][29] ([i915#4077]) +4 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@prime_vgem@basic-fence-mmap.html
- bat-dg2-11: NOTRUN -> [SKIP][30] ([i915#3708] / [i915#4077]) +1 other test skip
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@prime_vgem@basic-fence-mmap.html
* igt@prime_vgem@basic-read:
- bat-dg2-11: NOTRUN -> [SKIP][31] ([i915#3291] / [i915#3708]) +2 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-dg2-11/igt@prime_vgem@basic-read.html
* igt@prime_vgem@basic-write:
- bat-atsm-1: NOTRUN -> [SKIP][32] +2 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-atsm-1/igt@prime_vgem@basic-write.html
#### Possible fixes ####
* igt@i915_selftest@live@gt_lrc:
- bat-rplp-1: [INCOMPLETE][33] ([i915#9413]) -> [PASS][34]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14884/bat-rplp-1/igt@i915_selftest@live@gt_lrc.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/bat-rplp-1/igt@i915_selftest@live@gt_lrc.html
[i915#10311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10311
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#1836]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1836
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
[i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
[i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#6077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6077
[i915#6078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6078
[i915#6093]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6093
[i915#6094]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6094
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#7357]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7357
[i915#9413]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9413
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
Build changes
-------------
* Linux: CI_DRM_14884 -> Patchwork_134145v2
CI-20190529: 20190529
CI_DRM_14884: b8a4e08086ace055e193245cd77a6182936d9f03 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7879: 08560f766a505e729dfee2846c1c11d28dd0e3d0 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_134145v2: b8a4e08086ace055e193245cd77a6182936d9f03 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_134145v2/index.html
[-- Attachment #2: Type: text/html, Size: 12995 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
` (15 preceding siblings ...)
2024-06-06 12:24 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2024-06-07 11:48 ` Ville Syrjälä
16 siblings, 0 replies; 18+ messages in thread
From: Ville Syrjälä @ 2024-06-07 11:48 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
On Thu, Jun 06, 2024 at 02:15:52PM +0300, Jani Nikula wrote:
> v2 of https://lore.kernel.org/r/cover.1716906179.git.jani.nikula@intel.com
>
> Jani Nikula (14):
> drm/i915/wm: rename intel_get_cxsr_latency -> pnv_get_cxsr_latency
> drm/i915/wm: clarify logging on not finding CxSR latency config
> drm/i915/dram: separate fsb freq detection from mem freq
> drm/i915/dram: split out pnv DDR3 detection
> drm/i915/dram: rearrange mem freq init
> drm/i915/gt: remove mem freq from gt debugfs
> drm/i915: convert fsb_freq and mem_freq to kHz
> drm/i915: extend the fsb_freq initialization to more platforms
> drm/i915: use i9xx_fsb_freq() for GT clock frequency
> drm/i915/cdclk: use i9xx_fsb_freq() for rawclk_freq initialization
> drm/i915: move rawclk from runtime to display runtime info
> drm/xe/display: drop unused rawclk_freq and RUNTIME_INFO()
> drm/i915: move comments about FSB straps to proper place
Above are
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> drm/i915: move rawclk init to intel_cdclk_init()
We need rawclk_freq quite early for the power well stuff on
VLV/CHV. But CI already said as much.
>
> drivers/gpu/drm/i915/display/i9xx_wm.c | 27 +--
> .../gpu/drm/i915/display/intel_backlight.c | 10 +-
> drivers/gpu/drm/i915/display/intel_cdclk.c | 80 ++-----
> drivers/gpu/drm/i915/display/intel_cdclk.h | 1 -
> .../drm/i915/display/intel_display_device.c | 2 +
> .../drm/i915/display/intel_display_device.h | 2 +
> .../i915/display/intel_display_power_well.c | 4 +-
> drivers/gpu/drm/i915/display/intel_dp_aux.c | 4 +-
> drivers/gpu/drm/i915/display/intel_pps.c | 2 +-
> .../gpu/drm/i915/gt/intel_gt_clock_utils.c | 3 +-
> drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c | 1 -
> drivers/gpu/drm/i915/gt/intel_rps.c | 11 +-
> drivers/gpu/drm/i915/intel_device_info.c | 5 -
> drivers/gpu/drm/i915/intel_device_info.h | 2 -
> drivers/gpu/drm/i915/soc/intel_dram.c | 212 +++++++++++-------
> drivers/gpu/drm/i915/soc/intel_dram.h | 1 +
> .../gpu/drm/xe/compat-i915-headers/i915_drv.h | 1 -
> drivers/gpu/drm/xe/xe_device_types.h | 6 -
> 18 files changed, 176 insertions(+), 198 deletions(-)
>
> --
> 2.39.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2024-06-07 11:48 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-06 11:15 [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Jani Nikula
2024-06-06 11:15 ` [PATCH v2 01/14] drm/i915/wm: rename intel_get_cxsr_latency -> pnv_get_cxsr_latency Jani Nikula
2024-06-06 11:15 ` [PATCH v2 02/14] drm/i915/wm: clarify logging on not finding CxSR latency config Jani Nikula
2024-06-06 11:15 ` [PATCH v2 03/14] drm/i915/dram: separate fsb freq detection from mem freq Jani Nikula
2024-06-06 11:15 ` [PATCH v2 04/14] drm/i915/dram: split out pnv DDR3 detection Jani Nikula
2024-06-06 11:15 ` [PATCH v2 05/14] drm/i915/dram: rearrange mem freq init Jani Nikula
2024-06-06 11:15 ` [PATCH v2 06/14] drm/i915/gt: remove mem freq from gt debugfs Jani Nikula
2024-06-06 11:15 ` [PATCH v2 07/14] drm/i915: convert fsb_freq and mem_freq to kHz Jani Nikula
2024-06-06 11:16 ` [PATCH v2 08/14] drm/i915: extend the fsb_freq initialization to more platforms Jani Nikula
2024-06-06 11:16 ` [PATCH v2 09/14] drm/i915: use i9xx_fsb_freq() for GT clock frequency Jani Nikula
2024-06-06 11:16 ` [PATCH v2 10/14] drm/i915/cdclk: use i9xx_fsb_freq() for rawclk_freq initialization Jani Nikula
2024-06-06 11:16 ` [PATCH v2 11/14] drm/i915: move rawclk init to intel_cdclk_init() Jani Nikula
2024-06-06 11:16 ` [PATCH v2 12/14] drm/i915: move rawclk from runtime to display runtime info Jani Nikula
2024-06-06 11:16 ` [PATCH v2 13/14] drm/xe/display: drop unused rawclk_freq and RUNTIME_INFO() Jani Nikula
2024-06-06 11:16 ` [PATCH v2 14/14] drm/i915: move comments about FSB straps to proper place Jani Nikula
2024-06-06 12:13 ` ✗ Fi.CI.SPARSE: warning for drm/i915: mem/fsb/rawclk freq cleanups (rev2) Patchwork
2024-06-06 12:24 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-06-07 11:48 ` [PATCH v2 00/14] drm/i915: mem/fsb/rawclk freq cleanups Ville Syrjälä
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox