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);