Skip to content

Commit c4955d9

Browse files
committed
Merge tag 'drm-intel-next-fixes-2022-05-24' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
drm/i915 fixes for v5.19 merge window: - Build, sparse, UB, and CFI fixes - Variable scope fix - Audio pipe logging fix - ICL+ DSI NULL dereference fix Signed-off-by: Dave Airlie <airlied@redhat.com> From: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/87sfozuj44.fsf@intel.com
2 parents 0353682 + 0ea9178 commit c4955d9

11 files changed

Lines changed: 63 additions & 51 deletions

drivers/gpu/drm/i915/display/intel_audio.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ void intel_audio_codec_enable(struct intel_encoder *encoder,
827827
drm_dbg_kms(&dev_priv->drm, "[CONNECTOR:%d:%s][ENCODER:%d:%s] Enable audio codec on pipe %c, %u bytes ELD\n",
828828
connector->base.id, connector->name,
829829
encoder->base.base.id, encoder->base.name,
830-
pipe, drm_eld_size(connector->eld));
830+
pipe_name(pipe), drm_eld_size(connector->eld));
831831

832832
/* FIXME precompute the ELD in .compute_config() */
833833
if (!connector->eld[0])
@@ -888,7 +888,7 @@ void intel_audio_codec_disable(struct intel_encoder *encoder,
888888

889889
drm_dbg_kms(&dev_priv->drm, "[CONNECTOR:%d:%s][ENCODER:%d:%s] Disable audio codec on pipe %c\n",
890890
connector->base.id, connector->name,
891-
encoder->base.base.id, encoder->base.name, pipe);
891+
encoder->base.base.id, encoder->base.name, pipe_name(pipe));
892892

893893
if (dev_priv->audio.funcs)
894894
dev_priv->audio.funcs->audio_codec_disable(encoder,

drivers/gpu/drm/i915/display/intel_display_power.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2428,7 +2428,7 @@ intel_display_power_ddi_io_domain(struct drm_i915_private *i915, enum port port)
24282428
if (drm_WARN_ON(&i915->drm, !domains) || domains->ddi_io == POWER_DOMAIN_INVALID)
24292429
return POWER_DOMAIN_PORT_DDI_IO_A;
24302430

2431-
return domains->ddi_io + port - domains->port_start;
2431+
return domains->ddi_io + (int)(port - domains->port_start);
24322432
}
24332433

24342434
enum intel_display_power_domain
@@ -2439,7 +2439,7 @@ intel_display_power_ddi_lanes_domain(struct drm_i915_private *i915, enum port po
24392439
if (drm_WARN_ON(&i915->drm, !domains) || domains->ddi_lanes == POWER_DOMAIN_INVALID)
24402440
return POWER_DOMAIN_PORT_DDI_LANES_A;
24412441

2442-
return domains->ddi_lanes + port - domains->port_start;
2442+
return domains->ddi_lanes + (int)(port - domains->port_start);
24432443
}
24442444

24452445
static const struct intel_ddi_port_domains *
@@ -2465,7 +2465,7 @@ intel_display_power_legacy_aux_domain(struct drm_i915_private *i915, enum aux_ch
24652465
if (drm_WARN_ON(&i915->drm, !domains) || domains->aux_legacy_usbc == POWER_DOMAIN_INVALID)
24662466
return POWER_DOMAIN_AUX_A;
24672467

2468-
return domains->aux_legacy_usbc + aux_ch - domains->aux_ch_start;
2468+
return domains->aux_legacy_usbc + (int)(aux_ch - domains->aux_ch_start);
24692469
}
24702470

24712471
enum intel_display_power_domain
@@ -2476,5 +2476,5 @@ intel_display_power_tbt_aux_domain(struct drm_i915_private *i915, enum aux_ch au
24762476
if (drm_WARN_ON(&i915->drm, !domains) || domains->aux_tbt == POWER_DOMAIN_INVALID)
24772477
return POWER_DOMAIN_AUX_TBT1;
24782478

2479-
return domains->aux_tbt + aux_ch - domains->aux_ch_start;
2479+
return domains->aux_tbt + (int)(aux_ch - domains->aux_ch_start);
24802480
}

drivers/gpu/drm/i915/display/intel_dsi_vbt.c

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,25 @@ struct i2c_adapter_lookup {
125125
#define ICL_GPIO_DDPA_CTRLCLK_2 8
126126
#define ICL_GPIO_DDPA_CTRLDATA_2 9
127127

128-
static enum port intel_dsi_seq_port_to_port(u8 port)
128+
static enum port intel_dsi_seq_port_to_port(struct intel_dsi *intel_dsi,
129+
u8 seq_port)
129130
{
130-
return port ? PORT_C : PORT_A;
131+
/*
132+
* If single link DSI is being used on any port, the VBT sequence block
133+
* send packet apparently always has 0 for the port. Just use the port
134+
* we have configured, and ignore the sequence block port.
135+
*/
136+
if (hweight8(intel_dsi->ports) == 1)
137+
return ffs(intel_dsi->ports) - 1;
138+
139+
if (seq_port) {
140+
if (intel_dsi->ports & PORT_B)
141+
return PORT_B;
142+
else if (intel_dsi->ports & PORT_C)
143+
return PORT_C;
144+
}
145+
146+
return PORT_A;
131147
}
132148

133149
static const u8 *mipi_exec_send_packet(struct intel_dsi *intel_dsi,
@@ -149,15 +165,10 @@ static const u8 *mipi_exec_send_packet(struct intel_dsi *intel_dsi,
149165

150166
seq_port = (flags >> MIPI_PORT_SHIFT) & 3;
151167

152-
/* For DSI single link on Port A & C, the seq_port value which is
153-
* parsed from Sequence Block#53 of VBT has been set to 0
154-
* Now, read/write of packets for the DSI single link on Port A and
155-
* Port C will based on the DVO port from VBT block 2.
156-
*/
157-
if (intel_dsi->ports == (1 << PORT_C))
158-
port = PORT_C;
159-
else
160-
port = intel_dsi_seq_port_to_port(seq_port);
168+
port = intel_dsi_seq_port_to_port(intel_dsi, seq_port);
169+
170+
if (drm_WARN_ON(&dev_priv->drm, !intel_dsi->dsi_hosts[port]))
171+
goto out;
161172

162173
dsi_device = intel_dsi->dsi_hosts[port]->device;
163174
if (!dsi_device) {

drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include "intel_rc6.h"
1818
#include "intel_rps.h"
1919

20-
#ifdef CONFIG_PM
2120
enum intel_gt_sysfs_op {
2221
INTEL_GT_SYSFS_MIN = 0,
2322
INTEL_GT_SYSFS_MAX,
@@ -92,6 +91,7 @@ sysfs_gt_attribute_r_func(struct device *dev, struct device_attribute *attr,
9291
#define sysfs_gt_attribute_r_max_func(d, a, f) \
9392
sysfs_gt_attribute_r_func(d, a, f, INTEL_GT_SYSFS_MAX)
9493

94+
#ifdef CONFIG_PM
9595
static u32 get_residency(struct intel_gt *gt, i915_reg_t reg)
9696
{
9797
intel_wakeref_t wakeref;
@@ -457,22 +457,23 @@ static ssize_t vlv_rpe_freq_mhz_show(struct device *dev,
457457
}
458458

459459
#define INTEL_GT_RPS_SYSFS_ATTR(_name, _mode, _show, _store) \
460-
struct device_attribute dev_attr_gt_##_name = __ATTR(gt_##_name, _mode, _show, _store); \
461-
struct device_attribute dev_attr_rps_##_name = __ATTR(rps_##_name, _mode, _show, _store)
460+
static struct device_attribute dev_attr_gt_##_name = __ATTR(gt_##_name, _mode, _show, _store); \
461+
static struct device_attribute dev_attr_rps_##_name = __ATTR(rps_##_name, _mode, _show, _store)
462462

463463
#define INTEL_GT_RPS_SYSFS_ATTR_RO(_name) \
464464
INTEL_GT_RPS_SYSFS_ATTR(_name, 0444, _name##_show, NULL)
465465
#define INTEL_GT_RPS_SYSFS_ATTR_RW(_name) \
466466
INTEL_GT_RPS_SYSFS_ATTR(_name, 0644, _name##_show, _name##_store)
467467

468-
static INTEL_GT_RPS_SYSFS_ATTR_RO(act_freq_mhz);
469-
static INTEL_GT_RPS_SYSFS_ATTR_RO(cur_freq_mhz);
470-
static INTEL_GT_RPS_SYSFS_ATTR_RW(boost_freq_mhz);
471-
static INTEL_GT_RPS_SYSFS_ATTR_RO(RP0_freq_mhz);
472-
static INTEL_GT_RPS_SYSFS_ATTR_RO(RP1_freq_mhz);
473-
static INTEL_GT_RPS_SYSFS_ATTR_RO(RPn_freq_mhz);
474-
static INTEL_GT_RPS_SYSFS_ATTR_RW(max_freq_mhz);
475-
static INTEL_GT_RPS_SYSFS_ATTR_RW(min_freq_mhz);
468+
/* The below macros generate static structures */
469+
INTEL_GT_RPS_SYSFS_ATTR_RO(act_freq_mhz);
470+
INTEL_GT_RPS_SYSFS_ATTR_RO(cur_freq_mhz);
471+
INTEL_GT_RPS_SYSFS_ATTR_RW(boost_freq_mhz);
472+
INTEL_GT_RPS_SYSFS_ATTR_RO(RP0_freq_mhz);
473+
INTEL_GT_RPS_SYSFS_ATTR_RO(RP1_freq_mhz);
474+
INTEL_GT_RPS_SYSFS_ATTR_RO(RPn_freq_mhz);
475+
INTEL_GT_RPS_SYSFS_ATTR_RW(max_freq_mhz);
476+
INTEL_GT_RPS_SYSFS_ATTR_RW(min_freq_mhz);
476477

477478
static DEVICE_ATTR_RO(vlv_rpe_freq_mhz);
478479

drivers/gpu/drm/i915/gt/uc/abi/guc_actions_abi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050

5151
#define HOST2GUC_SELF_CFG_REQUEST_MSG_LEN (GUC_HXG_REQUEST_MSG_MIN_LEN + 3u)
5252
#define HOST2GUC_SELF_CFG_REQUEST_MSG_0_MBZ GUC_HXG_REQUEST_MSG_0_DATA0
53-
#define HOST2GUC_SELF_CFG_REQUEST_MSG_1_KLV_KEY (0xffff << 16)
53+
#define HOST2GUC_SELF_CFG_REQUEST_MSG_1_KLV_KEY (0xffffU << 16)
5454
#define HOST2GUC_SELF_CFG_REQUEST_MSG_1_KLV_LEN (0xffff << 0)
5555
#define HOST2GUC_SELF_CFG_REQUEST_MSG_2_VALUE32 GUC_HXG_REQUEST_MSG_n_DATAn
5656
#define HOST2GUC_SELF_CFG_REQUEST_MSG_3_VALUE64 GUC_HXG_REQUEST_MSG_n_DATAn

drivers/gpu/drm/i915/gt/uc/abi/guc_communication_ctb_abi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ static_assert(sizeof(struct guc_ct_buffer_desc) == 64);
8282
#define GUC_CTB_HDR_LEN 1u
8383
#define GUC_CTB_MSG_MIN_LEN GUC_CTB_HDR_LEN
8484
#define GUC_CTB_MSG_MAX_LEN 256u
85-
#define GUC_CTB_MSG_0_FENCE (0xffff << 16)
85+
#define GUC_CTB_MSG_0_FENCE (0xffffU << 16)
8686
#define GUC_CTB_MSG_0_FORMAT (0xf << 12)
8787
#define GUC_CTB_FORMAT_HXG 0u
8888
#define GUC_CTB_MSG_0_RESERVED (0xf << 8)

drivers/gpu/drm/i915/gt/uc/abi/guc_messages_abi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
*/
4141

4242
#define GUC_HXG_MSG_MIN_LEN 1u
43-
#define GUC_HXG_MSG_0_ORIGIN (0x1 << 31)
43+
#define GUC_HXG_MSG_0_ORIGIN (0x1U << 31)
4444
#define GUC_HXG_ORIGIN_HOST 0u
4545
#define GUC_HXG_ORIGIN_GUC 1u
4646
#define GUC_HXG_MSG_0_TYPE (0x7 << 28)

drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#define GS_MIA_HALT_REQUESTED (0x02 << GS_MIA_SHIFT)
2929
#define GS_MIA_ISR_ENTRY (0x04 << GS_MIA_SHIFT)
3030
#define GS_AUTH_STATUS_SHIFT 30
31-
#define GS_AUTH_STATUS_MASK (0x03 << GS_AUTH_STATUS_SHIFT)
31+
#define GS_AUTH_STATUS_MASK (0x03U << GS_AUTH_STATUS_SHIFT)
3232
#define GS_AUTH_STATUS_BAD (0x01 << GS_AUTH_STATUS_SHIFT)
3333
#define GS_AUTH_STATUS_GOOD (0x02 << GS_AUTH_STATUS_SHIFT)
3434

drivers/gpu/drm/i915/i915_perf.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4050,8 +4050,8 @@ static struct i915_oa_reg *alloc_oa_regs(struct i915_perf *perf,
40504050
return ERR_PTR(err);
40514051
}
40524052

4053-
static ssize_t show_dynamic_id(struct device *dev,
4054-
struct device_attribute *attr,
4053+
static ssize_t show_dynamic_id(struct kobject *kobj,
4054+
struct kobj_attribute *attr,
40554055
char *buf)
40564056
{
40574057
struct i915_oa_config *oa_config =

drivers/gpu/drm/i915/i915_perf_types.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ struct i915_oa_config {
5555

5656
struct attribute_group sysfs_metric;
5757
struct attribute *attrs[2];
58-
struct device_attribute sysfs_metric_id;
58+
struct kobj_attribute sysfs_metric_id;
5959

6060
struct kref ref;
6161
struct rcu_head rcu;

0 commit comments

Comments
 (0)