Skip to content

Commit 63957f6

Browse files
committed
Merge tag 'drm-misc-fixes-2023-11-16' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes
Assorted fixes for v6.7-rc2: - Nouveau GSP fixes. - Fix nouveau driver load without display. - Use rwlock for nouveau's event lock to break a lockdep splat. - Add orientation quirk for Lenovo Legion Go. - Fix build failure in IVPU. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/98fc82d3-8714-45e7-bd12-c95ba8c6c35f@linux.intel.com
2 parents b85ea95 + ae1aadb commit 63957f6

6 files changed

Lines changed: 22 additions & 14 deletions

File tree

drivers/accel/ivpu/ivpu_pm.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,6 @@ int ivpu_rpm_get_if_active(struct ivpu_device *vdev)
250250
{
251251
int ret;
252252

253-
ivpu_dbg(vdev, RPM, "rpm_get_if_active count %d\n",
254-
atomic_read(&vdev->drm.dev->power.usage_count));
255-
256253
ret = pm_runtime_get_if_active(vdev->drm.dev, false);
257254
drm_WARN_ON(&vdev->drm, ret < 0);
258255

drivers/gpu/drm/drm_panel_orientation_quirks.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,12 @@ static const struct dmi_system_id orientation_data[] = {
336336
DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Duet 3 10IGL5"),
337337
},
338338
.driver_data = (void *)&lcd1200x1920_rightside_up,
339+
}, { /* Lenovo Legion Go 8APU1 */
340+
.matches = {
341+
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
342+
DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Legion Go 8APU1"),
343+
},
344+
.driver_data = (void *)&lcd1600x2560_leftside_up,
339345
}, { /* Lenovo Yoga Book X90F / X90L */
340346
.matches = {
341347
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),

drivers/gpu/drm/nouveau/include/nvkm/core/event.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ struct nvkm_event {
1414
int index_nr;
1515

1616
spinlock_t refs_lock;
17-
spinlock_t list_lock;
17+
rwlock_t list_lock;
1818
int *refs;
1919

2020
struct list_head ntfy;
@@ -38,7 +38,7 @@ nvkm_event_init(const struct nvkm_event_func *func, struct nvkm_subdev *subdev,
3838
int types_nr, int index_nr, struct nvkm_event *event)
3939
{
4040
spin_lock_init(&event->refs_lock);
41-
spin_lock_init(&event->list_lock);
41+
rwlock_init(&event->list_lock);
4242
return __nvkm_event_init(func, subdev, types_nr, index_nr, event);
4343
}
4444

drivers/gpu/drm/nouveau/nouveau_display.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,11 @@ nouveau_display_create(struct drm_device *dev)
726726

727727
if (nouveau_modeset != 2) {
728728
ret = nvif_disp_ctor(&drm->client.device, "kmsDisp", 0, &disp->disp);
729+
/* no display hw */
730+
if (ret == -ENODEV) {
731+
ret = 0;
732+
goto disp_create_err;
733+
}
729734

730735
if (!ret && (disp->disp.outp_mask || drm->vbios.dcb.entries)) {
731736
nouveau_display_create_properties(dev);

drivers/gpu/drm/nouveau/nvkm/core/event.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,17 @@ nvkm_event_ntfy_state(struct nvkm_event_ntfy *ntfy)
8181
static void
8282
nvkm_event_ntfy_remove(struct nvkm_event_ntfy *ntfy)
8383
{
84-
spin_lock_irq(&ntfy->event->list_lock);
84+
write_lock_irq(&ntfy->event->list_lock);
8585
list_del_init(&ntfy->head);
86-
spin_unlock_irq(&ntfy->event->list_lock);
86+
write_unlock_irq(&ntfy->event->list_lock);
8787
}
8888

8989
static void
9090
nvkm_event_ntfy_insert(struct nvkm_event_ntfy *ntfy)
9191
{
92-
spin_lock_irq(&ntfy->event->list_lock);
92+
write_lock_irq(&ntfy->event->list_lock);
9393
list_add_tail(&ntfy->head, &ntfy->event->ntfy);
94-
spin_unlock_irq(&ntfy->event->list_lock);
94+
write_unlock_irq(&ntfy->event->list_lock);
9595
}
9696

9797
static void
@@ -176,7 +176,7 @@ nvkm_event_ntfy(struct nvkm_event *event, int id, u32 bits)
176176
return;
177177

178178
nvkm_trace(event->subdev, "event: ntfy %08x on %d\n", bits, id);
179-
spin_lock_irqsave(&event->list_lock, flags);
179+
read_lock_irqsave(&event->list_lock, flags);
180180

181181
list_for_each_entry_safe(ntfy, ntmp, &event->ntfy, head) {
182182
if (ntfy->id == id && ntfy->bits & bits) {
@@ -185,7 +185,7 @@ nvkm_event_ntfy(struct nvkm_event *event, int id, u32 bits)
185185
}
186186
}
187187

188-
spin_unlock_irqrestore(&event->list_lock, flags);
188+
read_unlock_irqrestore(&event->list_lock, flags);
189189
}
190190

191191
void

drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -689,8 +689,8 @@ r535_gsp_rpc_get(struct nvkm_gsp *gsp, u32 fn, u32 argc)
689689
struct nvfw_gsp_rpc *rpc;
690690

691691
rpc = r535_gsp_cmdq_get(gsp, ALIGN(sizeof(*rpc) + argc, sizeof(u64)));
692-
if (!rpc)
693-
return NULL;
692+
if (IS_ERR(rpc))
693+
return ERR_CAST(rpc);
694694

695695
rpc->header_version = 0x03000000;
696696
rpc->signature = ('C' << 24) | ('P' << 16) | ('R' << 8) | 'V';
@@ -1159,7 +1159,7 @@ static void
11591159
r535_gsp_acpi_mux_id(acpi_handle handle, u32 id, MUX_METHOD_DATA_ELEMENT *mode,
11601160
MUX_METHOD_DATA_ELEMENT *part)
11611161
{
1162-
acpi_handle iter = NULL, handle_mux;
1162+
acpi_handle iter = NULL, handle_mux = NULL;
11631163
acpi_status status;
11641164
unsigned long long value;
11651165

0 commit comments

Comments
 (0)