@@ -313,14 +313,15 @@ static inline u32 fifo_free_entries(struct drm_i915_private *dev_priv)
313
313
314
314
static void __gen6_gt_wait_for_fifo (struct drm_i915_private * dev_priv )
315
315
{
316
+ struct intel_uncore * uncore = & dev_priv -> uncore ;
316
317
u32 n ;
317
318
318
319
/* On VLV, FIFO will be shared by both SW and HW.
319
320
* So, we need to read the FREE_ENTRIES everytime */
320
321
if (IS_VALLEYVIEW (dev_priv ))
321
322
n = fifo_free_entries (dev_priv );
322
323
else
323
- n = dev_priv -> uncore . fifo_count ;
324
+ n = uncore -> fifo_count ;
324
325
325
326
if (n <= GT_FIFO_NUM_RESERVED_ENTRIES ) {
326
327
if (wait_for_atomic ((n = fifo_free_entries (dev_priv )) >
@@ -331,7 +332,7 @@ static void __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv)
331
332
}
332
333
}
333
334
334
- dev_priv -> uncore . fifo_count = n - 1 ;
335
+ uncore -> fifo_count = n - 1 ;
335
336
}
336
337
337
338
static enum hrtimer_restart
@@ -795,7 +796,7 @@ void assert_forcewakes_active(struct intel_uncore *uncore,
795
796
#define GEN11_NEEDS_FORCE_WAKE (reg ) \
796
797
((reg) < 0x40000 || ((reg) >= 0x1c0000 && (reg) < 0x1dc000))
797
798
798
- #define __gen6_reg_read_fw_domains (offset ) \
799
+ #define __gen6_reg_read_fw_domains (uncore , offset ) \
799
800
({ \
800
801
enum forcewake_domains __fwd; \
801
802
if (NEEDS_FORCE_WAKE(offset)) \
@@ -881,19 +882,19 @@ static const struct intel_forcewake_range __vlv_fw_ranges[] = {
881
882
GEN_FW_RANGE (0x30000 , 0x3ffff , FORCEWAKE_MEDIA ),
882
883
};
883
884
884
- #define __fwtable_reg_read_fw_domains (offset ) \
885
+ #define __fwtable_reg_read_fw_domains (uncore , offset ) \
885
886
({ \
886
887
enum forcewake_domains __fwd = 0; \
887
888
if (NEEDS_FORCE_WAKE((offset))) \
888
- __fwd = find_fw_domain(&dev_priv-> uncore, offset); \
889
+ __fwd = find_fw_domain(uncore, offset); \
889
890
__fwd; \
890
891
})
891
892
892
- #define __gen11_fwtable_reg_read_fw_domains (offset ) \
893
+ #define __gen11_fwtable_reg_read_fw_domains (uncore , offset ) \
893
894
({ \
894
895
enum forcewake_domains __fwd = 0; \
895
896
if (GEN11_NEEDS_FORCE_WAKE((offset))) \
896
- __fwd = find_fw_domain(&dev_priv-> uncore, offset); \
897
+ __fwd = find_fw_domain(uncore, offset); \
897
898
__fwd; \
898
899
})
899
900
@@ -945,7 +946,7 @@ static bool is_gen##x##_shadowed(u32 offset) \
945
946
__is_genX_shadowed (8 )
946
947
__is_genX_shadowed (11 )
947
948
948
- #define __gen8_reg_write_fw_domains (offset ) \
949
+ #define __gen8_reg_write_fw_domains (uncore , offset ) \
949
950
({ \
950
951
enum forcewake_domains __fwd; \
951
952
if (NEEDS_FORCE_WAKE(offset) && !is_gen8_shadowed(offset)) \
@@ -975,19 +976,19 @@ static const struct intel_forcewake_range __chv_fw_ranges[] = {
975
976
GEN_FW_RANGE (0x30000 , 0x37fff , FORCEWAKE_MEDIA ),
976
977
};
977
978
978
- #define __fwtable_reg_write_fw_domains (offset ) \
979
+ #define __fwtable_reg_write_fw_domains (uncore , offset ) \
979
980
({ \
980
981
enum forcewake_domains __fwd = 0; \
981
982
if (NEEDS_FORCE_WAKE((offset)) && !is_gen8_shadowed(offset)) \
982
- __fwd = find_fw_domain(&dev_priv-> uncore, offset); \
983
+ __fwd = find_fw_domain(uncore, offset); \
983
984
__fwd; \
984
985
})
985
986
986
- #define __gen11_fwtable_reg_write_fw_domains (offset ) \
987
+ #define __gen11_fwtable_reg_write_fw_domains (uncore , offset ) \
987
988
({ \
988
989
enum forcewake_domains __fwd = 0; \
989
990
if (GEN11_NEEDS_FORCE_WAKE((offset)) && !is_gen11_shadowed(offset)) \
990
- __fwd = find_fw_domain(&dev_priv-> uncore, offset); \
991
+ __fwd = find_fw_domain(uncore, offset); \
991
992
__fwd; \
992
993
})
993
994
@@ -1137,16 +1138,17 @@ __gen2_read(64)
1137
1138
#undef GEN2_READ_HEADER
1138
1139
1139
1140
#define GEN6_READ_HEADER (x ) \
1141
+ struct intel_uncore *uncore = &dev_priv->uncore; \
1140
1142
u32 offset = i915_mmio_reg_offset(reg); \
1141
1143
unsigned long irqflags; \
1142
1144
u##x val = 0; \
1143
1145
assert_rpm_wakelock_held(dev_priv); \
1144
- spin_lock_irqsave(&dev_priv->uncore. lock, irqflags); \
1146
+ spin_lock_irqsave(&uncore-> lock, irqflags); \
1145
1147
unclaimed_reg_debug(dev_priv, reg, true, true)
1146
1148
1147
1149
#define GEN6_READ_FOOTER \
1148
1150
unclaimed_reg_debug(dev_priv, reg, true, false); \
1149
- spin_unlock_irqrestore(&dev_priv->uncore. lock, irqflags); \
1151
+ spin_unlock_irqrestore(&uncore-> lock, irqflags); \
1150
1152
trace_i915_reg_rw(false, reg, val, sizeof(val), trace); \
1151
1153
return val
1152
1154
@@ -1183,9 +1185,9 @@ static u##x \
1183
1185
func##_read##x(struct drm_i915_private *dev_priv, i915_reg_t reg, bool trace) { \
1184
1186
enum forcewake_domains fw_engine; \
1185
1187
GEN6_READ_HEADER(x); \
1186
- fw_engine = __##func##_reg_read_fw_domains(offset); \
1188
+ fw_engine = __##func##_reg_read_fw_domains(uncore, offset); \
1187
1189
if (fw_engine) \
1188
- __force_wake_auto(&dev_priv-> uncore, fw_engine); \
1190
+ __force_wake_auto(uncore, fw_engine); \
1189
1191
val = __raw_i915_read##x(dev_priv, reg); \
1190
1192
GEN6_READ_FOOTER; \
1191
1193
}
@@ -1249,16 +1251,17 @@ __gen2_write(32)
1249
1251
#undef GEN2_WRITE_HEADER
1250
1252
1251
1253
#define GEN6_WRITE_HEADER \
1254
+ struct intel_uncore *uncore = &dev_priv->uncore; \
1252
1255
u32 offset = i915_mmio_reg_offset(reg); \
1253
1256
unsigned long irqflags; \
1254
1257
trace_i915_reg_rw(true, reg, val, sizeof(val), trace); \
1255
1258
assert_rpm_wakelock_held(dev_priv); \
1256
- spin_lock_irqsave(&dev_priv->uncore. lock, irqflags); \
1259
+ spin_lock_irqsave(&uncore-> lock, irqflags); \
1257
1260
unclaimed_reg_debug(dev_priv, reg, false, true)
1258
1261
1259
1262
#define GEN6_WRITE_FOOTER \
1260
1263
unclaimed_reg_debug(dev_priv, reg, false, false); \
1261
- spin_unlock_irqrestore(&dev_priv->uncore. lock, irqflags)
1264
+ spin_unlock_irqrestore(&uncore-> lock, irqflags)
1262
1265
1263
1266
#define __gen6_write (x ) \
1264
1267
static void \
@@ -1275,9 +1278,9 @@ static void \
1275
1278
func##_write##x(struct drm_i915_private *dev_priv, i915_reg_t reg, u##x val, bool trace) { \
1276
1279
enum forcewake_domains fw_engine; \
1277
1280
GEN6_WRITE_HEADER; \
1278
- fw_engine = __##func##_reg_write_fw_domains(offset); \
1281
+ fw_engine = __##func##_reg_write_fw_domains(uncore, offset); \
1279
1282
if (fw_engine) \
1280
- __force_wake_auto(&dev_priv-> uncore, fw_engine); \
1283
+ __force_wake_auto(uncore, fw_engine); \
1281
1284
__raw_i915_write##x(dev_priv, reg, val); \
1282
1285
GEN6_WRITE_FOOTER; \
1283
1286
}
@@ -1781,22 +1784,23 @@ int __intel_wait_for_register(struct drm_i915_private *dev_priv,
1781
1784
unsigned int slow_timeout_ms ,
1782
1785
u32 * out_value )
1783
1786
{
1787
+ struct intel_uncore * uncore = & dev_priv -> uncore ;
1784
1788
unsigned fw =
1785
1789
intel_uncore_forcewake_for_reg (dev_priv , reg , FW_REG_READ );
1786
1790
u32 reg_value ;
1787
1791
int ret ;
1788
1792
1789
1793
might_sleep_if (slow_timeout_ms );
1790
1794
1791
- spin_lock_irq (& dev_priv -> uncore . lock );
1792
- intel_uncore_forcewake_get__locked (& dev_priv -> uncore , fw );
1795
+ spin_lock_irq (& uncore -> lock );
1796
+ intel_uncore_forcewake_get__locked (uncore , fw );
1793
1797
1794
1798
ret = __intel_wait_for_register_fw (dev_priv ,
1795
1799
reg , mask , value ,
1796
1800
fast_timeout_us , 0 , & reg_value );
1797
1801
1798
- intel_uncore_forcewake_put__locked (& dev_priv -> uncore , fw );
1799
- spin_unlock_irq (& dev_priv -> uncore . lock );
1802
+ intel_uncore_forcewake_put__locked (uncore , fw );
1803
+ spin_unlock_irq (& uncore -> lock );
1800
1804
1801
1805
if (ret && slow_timeout_ms )
1802
1806
ret = __wait_for (reg_value = I915_READ_NOTRACE (reg ),
@@ -1820,11 +1824,12 @@ bool intel_uncore_unclaimed_mmio(struct drm_i915_private *dev_priv)
1820
1824
bool
1821
1825
intel_uncore_arm_unclaimed_mmio_detection (struct drm_i915_private * dev_priv )
1822
1826
{
1827
+ struct intel_uncore * uncore = & dev_priv -> uncore ;
1823
1828
bool ret = false;
1824
1829
1825
- spin_lock_irq (& dev_priv -> uncore . lock );
1830
+ spin_lock_irq (& uncore -> lock );
1826
1831
1827
- if (unlikely (dev_priv -> uncore . unclaimed_mmio_check <= 0 ))
1832
+ if (unlikely (uncore -> unclaimed_mmio_check <= 0 ))
1828
1833
goto out ;
1829
1834
1830
1835
if (unlikely (intel_uncore_unclaimed_mmio (dev_priv ))) {
@@ -1834,12 +1839,12 @@ intel_uncore_arm_unclaimed_mmio_detection(struct drm_i915_private *dev_priv)
1834
1839
"Please use i915.mmio_debug=N for more information.\n" );
1835
1840
i915_modparams .mmio_debug ++ ;
1836
1841
}
1837
- dev_priv -> uncore . unclaimed_mmio_check -- ;
1842
+ uncore -> unclaimed_mmio_check -- ;
1838
1843
ret = true;
1839
1844
}
1840
1845
1841
1846
out :
1842
- spin_unlock_irq (& dev_priv -> uncore . lock );
1847
+ spin_unlock_irq (& uncore -> lock );
1843
1848
1844
1849
return ret ;
1845
1850
}
@@ -1848,21 +1853,22 @@ static enum forcewake_domains
1848
1853
intel_uncore_forcewake_for_read (struct drm_i915_private * dev_priv ,
1849
1854
i915_reg_t reg )
1850
1855
{
1856
+ struct intel_uncore * uncore = & dev_priv -> uncore ;
1851
1857
u32 offset = i915_mmio_reg_offset (reg );
1852
1858
enum forcewake_domains fw_domains ;
1853
1859
1854
1860
if (INTEL_GEN (dev_priv ) >= 11 ) {
1855
- fw_domains = __gen11_fwtable_reg_read_fw_domains (offset );
1861
+ fw_domains = __gen11_fwtable_reg_read_fw_domains (uncore , offset );
1856
1862
} else if (HAS_FWTABLE (dev_priv )) {
1857
- fw_domains = __fwtable_reg_read_fw_domains (offset );
1863
+ fw_domains = __fwtable_reg_read_fw_domains (uncore , offset );
1858
1864
} else if (INTEL_GEN (dev_priv ) >= 6 ) {
1859
- fw_domains = __gen6_reg_read_fw_domains (offset );
1865
+ fw_domains = __gen6_reg_read_fw_domains (uncore , offset );
1860
1866
} else {
1861
1867
WARN_ON (!IS_GEN_RANGE (dev_priv , 2 , 5 ));
1862
1868
fw_domains = 0 ;
1863
1869
}
1864
1870
1865
- WARN_ON (fw_domains & ~dev_priv -> uncore . fw_domains );
1871
+ WARN_ON (fw_domains & ~uncore -> fw_domains );
1866
1872
1867
1873
return fw_domains ;
1868
1874
}
@@ -1871,23 +1877,24 @@ static enum forcewake_domains
1871
1877
intel_uncore_forcewake_for_write (struct drm_i915_private * dev_priv ,
1872
1878
i915_reg_t reg )
1873
1879
{
1880
+ struct intel_uncore * uncore = & dev_priv -> uncore ;
1874
1881
u32 offset = i915_mmio_reg_offset (reg );
1875
1882
enum forcewake_domains fw_domains ;
1876
1883
1877
1884
if (INTEL_GEN (dev_priv ) >= 11 ) {
1878
- fw_domains = __gen11_fwtable_reg_write_fw_domains (offset );
1885
+ fw_domains = __gen11_fwtable_reg_write_fw_domains (uncore , offset );
1879
1886
} else if (HAS_FWTABLE (dev_priv ) && !IS_VALLEYVIEW (dev_priv )) {
1880
- fw_domains = __fwtable_reg_write_fw_domains (offset );
1887
+ fw_domains = __fwtable_reg_write_fw_domains (uncore , offset );
1881
1888
} else if (IS_GEN (dev_priv , 8 )) {
1882
- fw_domains = __gen8_reg_write_fw_domains (offset );
1889
+ fw_domains = __gen8_reg_write_fw_domains (uncore , offset );
1883
1890
} else if (IS_GEN_RANGE (dev_priv , 6 , 7 )) {
1884
1891
fw_domains = FORCEWAKE_RENDER ;
1885
1892
} else {
1886
1893
WARN_ON (!IS_GEN_RANGE (dev_priv , 2 , 5 ));
1887
1894
fw_domains = 0 ;
1888
1895
}
1889
1896
1890
- WARN_ON (fw_domains & ~dev_priv -> uncore . fw_domains );
1897
+ WARN_ON (fw_domains & ~uncore -> fw_domains );
1891
1898
1892
1899
return fw_domains ;
1893
1900
}
0 commit comments