Module Name: src
Committed By: riastradh
Date: Sun Dec 19 01:43:51 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_irq.c i915_params.c
i915_pci.c
src/sys/external/bsd/drm2/dist/drm/i915/gt: intel_reset.c
Log Message:
More crap to make this thing get closer to building.
To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_params.c
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_pci.c
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_reset.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.21 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.22
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.21 Sun Dec 19 01:43:37 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c Sun Dec 19 01:43:51 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_irq.c,v 1.21 2021/12/19 01:43:37 riastradh Exp $ */
+/* $NetBSD: i915_irq.c,v 1.22 2021/12/19 01:43:51 riastradh Exp $ */
/* i915_irq.c -- IRQ support for the I915 -*- linux-c -*-
*/
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.21 2021/12/19 01:43:37 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.22 2021/12/19 01:43:51 riastradh Exp $");
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
@@ -2408,7 +2408,7 @@ static inline void gen8_master_intr_enab
raw_reg_write(regs, GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL);
}
-static irqreturn_t gen8_irq_handler(int irq, void *arg)
+static irqreturn_t gen8_irq_handler(DRM_IRQ_ARGS)
{
struct drm_i915_private *dev_priv = arg;
u32 master_ctl;
Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_params.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_params.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/i915_params.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_params.c:1.5 Sat Dec 18 23:45:28 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_params.c Sun Dec 19 01:43:51 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_params.c,v 1.5 2021/12/18 23:45:28 riastradh Exp $ */
+/* $NetBSD: i915_params.c,v 1.6 2021/12/19 01:43:51 riastradh Exp $ */
/*
* Copyright © 2014 Intel Corporation
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_params.c,v 1.5 2021/12/18 23:45:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_params.c,v 1.6 2021/12/19 01:43:51 riastradh Exp $");
#include <drm/drm_print.h>
@@ -203,7 +203,7 @@ static __always_inline void _print_param
else if (!__builtin_strcmp(type, "unsigned long"))
drm_printf(p, "i915.%s=%lu\n", name, *(const unsigned long *)x);
else if (!__builtin_strcmp(type, "char *"))
- drm_printf(p, "i915.%s=%s\n", name, *(const char **)x);
+ drm_printf(p, "i915.%s=%s\n", name, *(const char *const *)x);
else
WARN_ONCE(1, "no printer defined for param type %s (i915.%s)\n",
type, name);
Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_pci.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_pci.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_pci.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_pci.c:1.2 Sat Dec 18 23:45:28 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_pci.c Sun Dec 19 01:43:51 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_pci.c,v 1.2 2021/12/18 23:45:28 riastradh Exp $ */
+/* $NetBSD: i915_pci.c,v 1.3 2021/12/19 01:43:51 riastradh Exp $ */
/*
* Copyright © 2016 Intel Corporation
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_pci.c,v 1.2 2021/12/18 23:45:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_pci.c,v 1.3 2021/12/19 01:43:51 riastradh Exp $");
#include <linux/console.h>
#include <linux/vga_switcheroo.h>
@@ -989,12 +989,14 @@ static int i915_pci_probe(struct pci_dev
if (PCI_FUNC(pdev->devfn))
return -ENODEV;
+#ifndef __NetBSD__ /* XXX vga switcheroo */
/*
* apple-gmux is needed on dual GPU MacBook Pro
* to probe the panel if we're the inactive GPU.
*/
if (vga_switcheroo_client_probe_defer(pdev))
return -EPROBE_DEFER;
+#endif
err = i915_driver_probe(pdev, ent);
if (err)
Index: src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_reset.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_reset.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_reset.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_reset.c:1.2 Sat Dec 18 23:45:30 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_reset.c Sun Dec 19 01:43:50 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: intel_reset.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */
+/* $NetBSD: intel_reset.c,v 1.3 2021/12/19 01:43:50 riastradh Exp $ */
/*
* SPDX-License-Identifier: MIT
@@ -7,7 +7,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intel_reset.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_reset.c,v 1.3 2021/12/19 01:43:50 riastradh Exp $");
#include <linux/sched/mm.h>
#include <linux/stop_machine.h>
@@ -1163,15 +1163,21 @@ static void intel_gt_reset_global(struct
const char *reason)
{
struct kobject *kobj = >->i915->drm.primary->kdev->kobj;
+#ifndef __NetBSD__ /* XXX kobject uevent...? */
char *error_event[] = { I915_ERROR_UEVENT "=1", NULL };
char *reset_event[] = { I915_RESET_UEVENT "=1", NULL };
char *reset_done_event[] = { I915_ERROR_UEVENT "=0", NULL };
+#endif
struct intel_wedge_me w;
+#ifndef __NetBSD__
kobject_uevent_env(kobj, KOBJ_CHANGE, error_event);
+#endif
DRM_DEBUG_DRIVER("resetting chip\n");
+#ifndef __NetBSD__
kobject_uevent_env(kobj, KOBJ_CHANGE, reset_event);
+#endif
/* Use a watchdog to ensure that our reset completes */
intel_wedge_on_timeout(&w, gt, 5 * HZ) {
@@ -1185,8 +1191,10 @@ static void intel_gt_reset_global(struct
intel_finish_reset(gt->i915);
}
+#ifndef __NetBSD__ /* XXX kobj uevent...? */
if (!test_bit(I915_WEDGED, >->reset.flags))
kobject_uevent_env(kobj, KOBJ_CHANGE, reset_done_event);
+#endif
}
/**
@@ -1263,8 +1271,19 @@ void intel_gt_handle_error(struct intel_
/* Full reset needs the mutex, stop any other user trying to do so. */
if (test_and_set_bit(I915_RESET_BACKOFF, >->reset.flags)) {
+#ifdef __NetBSD__
+ int ret;
+ spin_lock(&dev_priv->gpu_error.reset_lock);
+ DRM_SPIN_WAIT_NOINTR_UNTIL(ret,
+ &dev_priv->gpu_error.reset_queue,
+ &dev_priv->gpu_error.reset_lock,
+ !test_bit(I915_RESET_BACKOFF,
+ &dev_priv->gpu_error.flags));
+ spin_unlock(&dev_priv->gpu_error.reset_lock);
+#else
wait_event(gt->reset.queue,
!test_bit(I915_RESET_BACKOFF, >->reset.flags));
+#endif
goto out; /* piggy-back on the other reset */
}
@@ -1287,7 +1306,14 @@ void intel_gt_handle_error(struct intel_
>->reset.flags);
clear_bit_unlock(I915_RESET_BACKOFF, >->reset.flags);
smp_mb__after_atomic();
+#ifdef __NetBSD__
+ spin_lock(&dev_priv->gpu_error.reset_lock);
+ DRM_SPIN_WAKEUP_ALL(&dev_priv->gpu_error.reset_queue,
+ &dev_priv->gpu_error.reset_lock);
+ spin_unlock(&dev_priv->gpu_error.reset_lock);
+#else
wake_up_all(>->reset.queue);
+#endif
out:
intel_runtime_pm_put(gt->uncore->rpm, wakeref);