CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Sat May 29 08:45:38 UTC 2021 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_drv.h Log Message: i915drmkms: Fix LOCKDEBUG panic and potential deadlock. This path is taken with a spin lock held, and possibly even in interrupt context, where taking vmobjlock is not kosher, but we are guaranteed to have the queue populated and unchanging. XXX pullup-9 To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h 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_drv.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.32 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.33 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.32 Sun Feb 23 15:46:40 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h Sat May 29 08:45:38 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_drv.h,v 1.32 2020/02/23 15:46:40 ad Exp $ */ +/* $NetBSD: i915_drv.h,v 1.33 2021/05/29 08:45:38 riastradh Exp $ */ /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- */ @@ -3021,9 +3021,10 @@ i915_gem_object_get_page(struct drm_i915 * lock to prevent them from disappearing. */ KASSERT(obj->pages != NULL); - rw_enter(obj->base.filp->vmobjlock, RW_WRITER); - page = uvm_pagelookup(obj->base.filp, ptoa(n)); - rw_exit(obj->base.filp->vmobjlock); + TAILQ_FOREACH(page, >pageq, pageq.queue) { + if (n-- == 0) +break; + } } KASSERT(page != NULL); return container_of(page, struct page, p_vmp);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: maya Date: Sat Oct 31 04:05:42 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_sprite.c Log Message: Match linux here and wait without interrupts. >From David H. Gutteridge in PR port-amd64/5 There's a second part to the patch, but "make our code behave the way the upstream code does" is very welcome. Also PR kern/54515 and possibly others. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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/intel_sprite.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.10 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.11 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.10 Fri Feb 14 04:36:12 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c Sat Oct 31 04:05:42 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sprite.c,v 1.10 2020/02/14 04:36:12 riastradh Exp $ */ +/* $NetBSD: intel_sprite.c,v 1.11 2020/10/31 04:05:42 maya Exp $ */ /* * Copyright © 2011 Intel Corporation @@ -32,7 +32,7 @@ * support. */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.10 2020/02/14 04:36:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.11 2020/10/31 04:05:42 maya Exp $"); #include #include @@ -124,7 +124,7 @@ void intel_pipe_update_start(struct inte trace_i915_pipe_update_start(crtc); #ifdef __NetBSD__ - DRM_SPIN_TIMED_WAIT_UNTIL(ret, wq, >vbl_lock, timeout, + DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, wq, >vbl_lock, timeout, (scanline = intel_get_crtc_scanline(crtc), scanline < min || scanline > max)); if (ret <= 0)
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: nia Date: Sun May 3 13:34:38 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_i2c.c Log Message: drm/i915: There's no real reason the user should care that we're about to fall back to bitbanging, so let's change the message from DRM_INFO to DRM_DEBUG_KMS. https://lists.freedesktop.org/archives/intel-gfx/2016-March/089133.html To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.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/intel_i2c.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.19 src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.20 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.19 Fri Feb 14 14:34:58 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c Sun May 3 13:34:38 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_i2c.c,v 1.19 2020/02/14 14:34:58 maya Exp $ */ +/* $NetBSD: intel_i2c.c,v 1.20 2020/05/03 13:34:38 nia Exp $ */ /* * Copyright (c) 2006 Dave Airlie @@ -29,7 +29,7 @@ * Chris Wilson */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_i2c.c,v 1.19 2020/02/14 14:34:58 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_i2c.c,v 1.20 2020/05/03 13:34:38 nia Exp $"); #include #include @@ -643,8 +643,8 @@ clear_err: goto out; timeout: - DRM_INFO("GMBUS [%s] timed out, falling back to bit banging on pin %d\n", - bus->adapter.name, bus->reg0 & 0xff); + DRM_DEBUG_KMS("GMBUS [%s] timed out, falling back to bit banging on pin %d\n", + bus->adapter.name, bus->reg0 & 0xff); I915_WRITE(GMBUS0, 0); /* Hardware may not support GMBUS over these pins? Try GPIO bitbanging instead. */
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Fri Feb 14 09:39:57 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_fbdev.c Log Message: Nix another conditional ALIGN. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.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/intel_fbdev.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.11 Fri Feb 14 09:39:37 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c Fri Feb 14 09:39:57 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_fbdev.c,v 1.11 2020/02/14 09:39:37 riastradh Exp $ */ +/* $NetBSD: intel_fbdev.c,v 1.12 2020/02/14 09:39:57 riastradh Exp $ */ /* * Copyright © 2007 David Airlie @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.11 2020/02/14 09:39:37 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.12 2020/02/14 09:39:57 riastradh Exp $"); #include #include @@ -53,6 +53,7 @@ __KERNEL_RCSID(0, "$NetBSD: intel_fbdev. #ifdef __NetBSD__ #include "intelfb.h" +#include #endif #ifndef __NetBSD__ @@ -145,13 +146,8 @@ static int intelfb_alloc(struct drm_fb_h mode_cmd.width = sizes->surface_width; mode_cmd.height = sizes->surface_height; -#ifdef __NetBSD__ - mode_cmd.pitches[0] = round_up(mode_cmd.width * -DIV_ROUND_UP(sizes->surface_bpp, 8), 64); -#else mode_cmd.pitches[0] = ALIGN(mode_cmd.width * DIV_ROUND_UP(sizes->surface_bpp, 8), 64); -#endif mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, sizes->surface_depth);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Fri Feb 14 04:36:12 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_debugfs.c i915_dma.c i915_drv.h i915_irq.c intel_audio.c intel_crt.c intel_ddi.c intel_display.c intel_dp.c intel_dp_mst.c intel_drv.h intel_dsi.c intel_dvo.c intel_fbc.c intel_fifo_underrun.c intel_hdmi.c intel_lvds.c intel_overlay.c intel_panel.c intel_pm.c intel_psr.c intel_runtime_pm.c intel_sdvo.c intel_sideband.c intel_sprite.c intel_tv.c Log Message: Undo the `enum pipe' -> `enum i915_pipe' rename. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c cvs rdiff -u -r1.29 -r1.30 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c cvs rdiff -u -r1.30 -r1.31 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h cvs rdiff -u -r1.17 -r1.18 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/intel_audio.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_fifo_underrun.c cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c cvs rdiff -u -r1.12 -r1.13 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c cvs rdiff -u -r1.21 -r1.22 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c cvs rdiff -u -r1.9 -r1.10 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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_debugfs.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c:1.3 Mon Aug 27 04:58:23 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c Fri Feb 14 04:36:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_debugfs.c,v 1.3 2018/08/27 04:58:23 riastradh Exp $ */ +/* $NetBSD: i915_debugfs.c,v 1.4 2020/02/14 04:36:11 riastradh Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_debugfs.c,v 1.3 2018/08/27 04:58:23 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_debugfs.c,v 1.4 2020/02/14 04:36:11 riastradh Exp $"); #include #include @@ -3286,7 +3286,7 @@ static int i915_drrs_status(struct seq_f struct pipe_crc_info { const char *name; struct drm_device *dev; - enum i915_pipe pipe; + enum pipe pipe; }; static int i915_dp_mst_info(struct seq_file *m, void *unused) @@ -3462,7 +3462,7 @@ static struct pipe_crc_info i915_pipe_cr }; static int i915_pipe_crc_create(struct dentry *root, struct drm_minor *minor, -enum i915_pipe pipe) +enum pipe pipe) { struct drm_device *dev = minor->dev; struct dentry *ent; @@ -3536,7 +3536,7 @@ static int i8xx_pipe_crc_ctl_reg(enum in return 0; } -static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum i915_pipe pipe, +static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum pipe pipe, enum intel_pipe_crc_source *source) { struct intel_encoder *encoder; @@ -3589,7 +3589,7 @@ static int i9xx_pipe_crc_auto_source(str } static int vlv_pipe_crc_ctl_reg(struct drm_device *dev, -enum i915_pipe pipe, +enum pipe pipe, enum intel_pipe_crc_source *source, uint32_t *val) { @@ -3660,7 +3660,7 @@ static int vlv_pipe_crc_ctl_reg(struct d } static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev, - enum i915_pipe pipe, + enum pipe pipe, enum intel_pipe_crc_source *source, uint32_t *val) { @@ -3736,7 +3736,7 @@ static int i9xx_pipe_crc_ctl_reg(struct } static void vlv_undo_pipe_scramble_reset(struct drm_device *dev, - enum i915_pipe pipe) +
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: maya Date: Mon Feb 10 21:54:26 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_opregion.c Log Message: Use a closer equivalent to MEMREMAP_WB: BUS_SPACE_MAP_CACHEABLE Not a fix for PR port-amd64/54808 To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.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/intel_opregion.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.14 src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.15 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.14 Mon Aug 27 13:54:48 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c Mon Feb 10 21:54:26 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_opregion.c,v 1.14 2018/08/27 13:54:48 riastradh Exp $ */ +/* $NetBSD: intel_opregion.c,v 1.15 2020/02/10 21:54:26 maya Exp $ */ /* * Copyright 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.14 2018/08/27 13:54:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.15 2020/02/10 21:54:26 maya Exp $"); #include #include @@ -997,7 +997,7 @@ int intel_opregion_setup(struct drm_devi #ifdef __NetBSD__ opregion->bst = dev->pdev->pd_pa.pa_memt; err = -bus_space_map(opregion->bst, asls, OPREGION_SIZE, - BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_PREFETCHABLE, >bsh); + BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_CACHEABLE, >bsh); if (err) { DRM_DEBUG_DRIVER("Failed to map opregion: %d\n", err); return err;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: maya Date: Thu Dec 5 20:25:54 UTC 2019 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: Use the original linux function rather than my wrong translation. ...Include the header to have it. Thanks Riastradh! To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.19 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.20 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.19 Thu Dec 5 20:03:09 2019 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Thu Dec 5 20:25:54 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.19 2019/12/05 20:03:09 maya Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.20 2019/12/05 20:25:54 maya Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,10 +28,11 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.19 2019/12/05 20:03:09 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.20 2019/12/05 20:25:54 maya Exp $"); #include "i915_drv.h" #include +#include /** * DOC: batch buffer command parser @@ -1259,7 +1260,7 @@ static void init_whitelist(struct intel_ { const u32 batch_cmds = DIV_ROUND_UP(batch_len, sizeof(u32)); const u32 exact_size = BITS_TO_LONGS(batch_cmds); - u32 next_size = BITS_TO_LONGS(powerof2(batch_cmds)); + u32 next_size = BITS_TO_LONGS(roundup_pow_of_two(batch_cmds)); unsigned long *next_whitelist; if (CMDPARSER_USES_GGTT(ctx->i915))
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: christos Date: Sat Oct 6 15:33:35 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_panel.c Log Message: conditionally disable unused functions (clang) To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.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/intel_panel.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.11 Thu Sep 13 04:25:55 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c Sat Oct 6 11:33:35 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_panel.c,v 1.11 2018/09/13 08:25:55 mrg Exp $ */ +/* $NetBSD: intel_panel.c,v 1.12 2018/10/06 15:33:35 christos Exp $ */ /* * Copyright © 2006-2010 Intel Corporation @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.11 2018/09/13 08:25:55 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.12 2018/10/06 15:33:35 christos Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -432,6 +432,7 @@ static uint32_t scale(uint32_t source_va return target_val; } +#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE) /* Scale user_level in range [0..user_max] to [hw_min..hw_max]. */ static inline u32 scale_user_to_hw(struct intel_connector *connector, u32 user_level, u32 user_max) @@ -441,6 +442,7 @@ static inline u32 scale_user_to_hw(struc return scale(user_level, 0, user_max, panel->backlight.min, panel->backlight.max); } +#endif /* Scale user_level in range [0..user_max] to [0..hw_max], clamping the result * to [hw_min..hw_max]. */ @@ -456,6 +458,7 @@ static inline u32 clamp_user_to_hw(struc return hw_level; } +#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE) /* Scale hw_level in range [hw_min..hw_max] to [0..user_max]. */ static inline u32 scale_hw_to_user(struct intel_connector *connector, u32 hw_level, u32 user_max) @@ -465,6 +468,7 @@ static inline u32 scale_hw_to_user(struc return scale(hw_level, panel->backlight.min, panel->backlight.max, 0, user_max); } +#endif static u32 intel_panel_compute_brightness(struct intel_connector *connector, u32 val)
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: christos Date: Mon Sep 24 00:42:34 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_display.c Log Message: Add more casts to make clang happy. To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.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/intel_display.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.23 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.24 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.23 Thu Sep 13 04:25:55 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c Sun Sep 23 20:42:34 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display.c,v 1.23 2018/09/13 08:25:55 mrg Exp $ */ +/* $NetBSD: intel_display.c,v 1.24 2018/09/24 00:42:34 christos Exp $ */ /* * Copyright © 2006-2007 Intel Corporation @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.23 2018/09/13 08:25:55 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.24 2018/09/24 00:42:34 christos Exp $"); #include #include @@ -2039,7 +2039,7 @@ static void lpt_enable_pch_transcoder(st /* FDI must be feeding us bits for PCH ports */ assert_fdi_tx_enabled(dev_priv, (enum i915_pipe) cpu_transcoder); - assert_fdi_rx_enabled(dev_priv, TRANSCODER_A); + assert_fdi_rx_enabled(dev_priv, (enum i915_pipe) TRANSCODER_A); /* Workaround: set timing override bit. */ val = I915_READ(TRANS_CHICKEN2(PIPE_A)); @@ -2132,7 +2132,7 @@ static void intel_enable_pipe(struct int assert_sprites_disabled(dev_priv, pipe); if (HAS_PCH_LPT(dev_priv->dev)) - pch_transcoder = TRANSCODER_A; + pch_transcoder = (enum i915_pipe)TRANSCODER_A; else pch_transcoder = pipe; @@ -4307,7 +4307,7 @@ static void lpt_pch_enable(struct drm_cr struct intel_crtc *intel_crtc = to_intel_crtc(crtc); enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder; - assert_pch_transcoder_disabled(dev_priv, TRANSCODER_A); + assert_pch_transcoder_disabled(dev_priv, (enum i915_pipe) TRANSCODER_A); lpt_program_iclkip(crtc);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: kamil Date: Fri Sep 21 11:49:16 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c Log Message: Avoid stack protector violation 'const int' is not a real constant in C and it cannot be used to define an array with a number of elements, as it's turned into a variable length array. Triggered by GCC when building with more debug options. To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.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_dma.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.26 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.27 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.26 Thu Sep 13 08:25:55 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c Fri Sep 21 11:49:16 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_dma.c,v 1.26 2018/09/13 08:25:55 mrg Exp $ */ +/* $NetBSD: i915_dma.c,v 1.27 2018/09/21 11:49:16 kamil Exp $ */ /* i915_dma.c -- DMA support for the I915 -*- linux-c -*- */ @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.26 2018/09/13 08:25:55 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.27 2018/09/21 11:49:16 kamil Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -705,7 +705,7 @@ static void broadwell_sseu_info_init(str struct intel_device_info *info; const int s_max = 3, ss_max = 3, eu_max = 8; int s, ss; - u32 fuse2, eu_disable[s_max], s_enable, ss_disable; + u32 fuse2, eu_disable[3], s_enable, ss_disable; fuse2 = I915_READ(GEN8_FUSE2); s_enable = (fuse2 & GEN8_F2_S_ENA_MASK) >> GEN8_F2_S_ENA_SHIFT;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: pgoyette Date: Sun Sep 9 03:04:43 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: Add __diagused attribute to some diagnostic routines. OK riastradh@ To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.17 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.18 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.17 Mon Aug 27 14:50:04 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Sun Sep 9 03:04:43 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.17 2018/08/27 14:50:04 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.18 2018/09/09 03:04:43 pgoyette Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.17 2018/08/27 14:50:04 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.18 2018/09/09 03:04:43 pgoyette Exp $"); #include "i915_drv.h" @@ -555,6 +555,7 @@ static u32 gen7_blt_get_cmd_length_mask( return 0; } +__diagused static bool validate_cmds_sorted(struct intel_engine_cs *ring, const struct drm_i915_cmd_table *cmd_tables, int cmd_table_count) @@ -611,6 +612,7 @@ static bool check_sorted(int ring_id, return ret; } +__diagused static bool validate_regs_sorted(struct intel_engine_cs *ring) { return check_sorted(ring->id, ring->reg_table, ring->reg_count) &&
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Sun Sep 2 17:36:57 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_display.c intel_dp.c Log Message: Initialize and destroy dev_priv->drrs.mutex only once. Not once per connector! Candidate fix for: https://mail-index.netbsd.org/current-users/2018/08/30/msg034155.html To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.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/intel_display.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.21 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.22 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.21 Mon Aug 27 07:28:41 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c Sun Sep 2 17:36:57 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display.c,v 1.21 2018/08/27 07:28:41 riastradh Exp $ */ +/* $NetBSD: intel_display.c,v 1.22 2018/09/02 17:36:57 riastradh Exp $ */ /* * Copyright © 2006-2007 Intel Corporation @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.21 2018/08/27 07:28:41 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.22 2018/09/02 17:36:57 riastradh Exp $"); #include #include @@ -14775,8 +14775,10 @@ static void intel_init_display(struct dr #ifdef __NetBSD__ linux_mutex_init(_priv->pps_mutex); + linux_mutex_init(_priv->drrs.mutex); #else mutex_init(_priv->pps_mutex); + mutex_init(_priv->drrs.mutex); #endif } @@ -15710,10 +15712,12 @@ void intel_modeset_cleanup(struct drm_de #ifdef __NetBSD__ linux_mutex_destroy(_priv->psr.lock); + linux_mutex_destroy(_priv->drrs.mutex); linux_mutex_destroy(_priv->pps_mutex); linux_mutex_destroy(_priv->fbc.lock); #else mutex_destroy(_priv->psr.lock); + mutex_destroy(_priv->drrs.mutex); mutex_destroy(_priv->pps_mutex); mutex_destroy(_priv->fbc.lock); #endif Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.17 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.18 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.17 Mon Aug 27 13:41:23 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c Sun Sep 2 17:36:57 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_dp.c,v 1.17 2018/08/27 13:41:23 riastradh Exp $ */ +/* $NetBSD: intel_dp.c,v 1.18 2018/09/02 17:36:57 riastradh Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.17 2018/08/27 13:41:23 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.18 2018/09/02 17:36:57 riastradh Exp $"); #include #include @@ -5014,8 +5014,6 @@ static void intel_dp_connector_destroy(struct drm_connector *connector) { struct intel_connector *intel_connector = to_intel_connector(connector); - struct drm_device *dev = intel_connector->base.dev; - struct drm_i915_private *dev_priv = dev->dev_private; kfree(intel_connector->detect_edid); @@ -5028,11 +5026,6 @@ intel_dp_connector_destroy(struct drm_co intel_panel_fini(_connector->panel); drm_connector_cleanup(connector); -#ifdef __NetBSD__ - linux_mutex_destroy(_priv->drrs.mutex); -#else - mutex_destroy(_priv->drrs.mutex); -#endif kfree(connector); } @@ -6025,12 +6018,6 @@ intel_dp_init_connector(struct intel_dig intel_dp->pps_pipe = INVALID_PIPE; -#ifdef __NetBSD__ - linux_mutex_init(_priv->drrs.mutex); -#else - mutex_init(_priv->drrs.mutex); -#endif - /* intel_dp vfuncs */ if (INTEL_INFO(dev)->gen >= 9) intel_dp->get_aux_clock_divider = skl_get_aux_clock_divider;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 16:15:35 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_vgpu.c Log Message: Simulate bus_space_read_8 with two bus_space_read_4 on 32-bit x86. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.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_vgpu.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.3 Mon Aug 27 07:16:10 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c Mon Aug 27 16:15:34 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_vgpu.c,v 1.3 2018/08/27 07:16:10 riastradh Exp $ */ +/* $NetBSD: i915_vgpu.c,v 1.4 2018/08/27 16:15:34 riastradh Exp $ */ /* * Copyright(c) 2011-2015 Intel Corporation. All rights reserved. @@ -24,7 +24,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_vgpu.c,v 1.3 2018/08/27 07:16:10 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_vgpu.c,v 1.4 2018/08/27 16:15:34 riastradh Exp $"); #include "intel_drv.h" #include "i915_vgpu.h" @@ -75,8 +75,15 @@ void i915_check_vgpu(struct drm_device * return; #ifdef __NetBSD__ +# ifdef _LP64 magic = bus_space_read_8(dev_priv->regs_bst, dev_priv->regs_bsh, vgtif_reg(magic)); +# else + magic = bus_space_read_4(dev_priv->regs_bst, dev_priv->regs_bsh, + vgtif_reg(magic)); + magic |= (uint64_t)bus_space_read_4(dev_priv->regs_bst, + dev_priv->regs_bsh, vgtif_reg(magic) + 4) << 32; +# endif #else magic = readq(dev_priv->regs + vgtif_reg(magic)); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 16:15:48 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_vgpu.h Log Message: Use offsetof, not undefined behaviour. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.h 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_vgpu.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.h:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.h Mon Aug 27 16:15:48 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_vgpu.h,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: i915_vgpu.h,v 1.3 2018/08/27 16:15:48 riastradh Exp $ */ /* * Copyright(c) 2011-2015 Intel Corporation. All rights reserved. @@ -110,7 +110,7 @@ struct vgt_if { } __packed; #define vgtif_reg(x) \ - (VGT_PVINFO_PAGE + (long)&((struct vgt_if *)NULL)->x) + (VGT_PVINFO_PAGE + offsetof(struct vgt_if, x)) /* vGPU display status to be used by the host side */ #define VGT_DRV_DISPLAY_NOT_READY 0
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 16:14:55 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gpu_error.c Log Message: Omit print with wrong format -- vestige of merge. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.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_gpu_error.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.9 Mon Aug 27 14:49:05 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c Mon Aug 27 16:14:55 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gpu_error.c,v 1.9 2018/08/27 14:49:05 riastradh Exp $ */ +/* $NetBSD: i915_gpu_error.c,v 1.10 2018/08/27 16:14:55 riastradh Exp $ */ /* * Copyright (c) 2008 Intel Corporation @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gpu_error.c,v 1.9 2018/08/27 14:49:05 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gpu_error.c,v 1.10 2018/08/27 16:14:55 riastradh Exp $"); #include @@ -356,8 +356,6 @@ int i915_error_state_to_str(struct drm_i err_printf(m, "Time: %"PRIdMAX" s %ld us\n", (intmax_t)error->time.tv_sec, (long)error->time.tv_usec); err_printf(m, "Kernel: %d\n", __NetBSD_Version__); - err_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec, - (long)error->time.tv_usec); max_hangcheck_score = 0; for (i = 0; i < ARRAY_SIZE(error->ring); i++) { if (error->ring[i].hangcheck_score > max_hangcheck_score)
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:53:54 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_gtt.c Log Message: Scale offset by size of unit, gen6_pte_t. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.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_gem_gtt.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.14 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.15 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.14 Mon Aug 27 14:53:30 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c Mon Aug 27 14:53:54 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_gtt.c,v 1.14 2018/08/27 14:53:30 riastradh Exp $ */ +/* $NetBSD: i915_gem_gtt.c,v 1.15 2018/08/27 14:53:54 riastradh Exp $ */ /* * Copyright © 2010 Daniel Vetter @@ -26,7 +26,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.14 2018/08/27 14:53:30 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.15 2018/08/27 14:53:54 riastradh Exp $"); #include #include @@ -1776,7 +1776,8 @@ static void gen6_write_pde(struct i915_p pd_entry |= GEN6_PDE_VALID; #ifdef __NetBSD__ - bus_space_write_4(bst, bsh, pd_base + pde, pd_entry); + CTASSERT(sizeof(gen6_pte_t) == 4); + bus_space_write_4(bst, bsh, pd_base + 4*pde, pd_entry); #else writel(pd_entry, ppgtt->pd_addr + pde); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:53:30 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_gtt.c Log Message: Pass the vaddr we mapped to kunmap_px. Thanks, void *. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.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_gem_gtt.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.13 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.14 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.13 Mon Aug 27 14:52:40 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c Mon Aug 27 14:53:30 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_gtt.c,v 1.13 2018/08/27 14:52:40 riastradh Exp $ */ +/* $NetBSD: i915_gem_gtt.c,v 1.14 2018/08/27 14:53:30 riastradh Exp $ */ /* * Copyright © 2010 Daniel Vetter @@ -26,7 +26,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.13 2018/08/27 14:52:40 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.14 2018/08/27 14:53:30 riastradh Exp $"); #include #include @@ -817,7 +817,7 @@ static void gen8_ppgtt_clear_pte_range(s num_entries--; } - kunmap_px(ppgtt, pt); + kunmap_px(ppgtt, pt_vaddr); pte = 0; if (++pde == I915_PDES) {
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:53:12 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c Log Message: Simplify loop with bus_space_set_region_4 Match the original copypasta in intel_ringbuffer.c. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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/intel_lrc.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.7 Mon Aug 27 14:52:56 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c Mon Aug 27 14:53:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lrc.c,v 1.7 2018/08/27 14:52:56 riastradh Exp $ */ +/* $NetBSD: intel_lrc.c,v 1.8 2018/08/27 14:53:12 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -135,7 +135,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.7 2018/08/27 14:52:56 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.8 2018/08/27 14:53:12 riastradh Exp $"); #include #include @@ -745,18 +745,15 @@ intel_logical_ring_advance_and_submit(st static void __wrap_ring_buffer(struct intel_ringbuffer *ringbuf) { -#ifdef __NetBSD__ - bus_size_t tail; - int rem = ringbuf->size - ringbuf->tail; - - tail = ringbuf->tail; - rem /= 4; - for (; rem --> 0; tail += 4) - bus_space_write_4(ringbuf->bst, ringbuf->bsh, tail, MI_NOOP); -#else +#ifndef __NetBSD__ uint32_t __iomem *virt; +#endif int rem = ringbuf->size - ringbuf->tail; +#ifdef __NetBSD__ + bus_space_set_region_4(ringbuf->bst, ringbuf->bsh, ringbuf->tail, + MI_NOOP, rem/4); +#else virt = ringbuf->virtual_start + ringbuf->tail; rem /= 4; while (rem--)
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:52:56 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_irq.c intel_lrc.c Log Message: Advance by 4-byte quantities, not by 1-byte quantities. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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.15 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.16 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.15 Mon Aug 27 14:45:11 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c Mon Aug 27 14:52:56 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_irq.c,v 1.15 2018/08/27 14:45:11 riastradh Exp $ */ +/* $NetBSD: i915_irq.c,v 1.16 2018/08/27 14:52:56 riastradh Exp $ */ /* i915_irq.c -- IRQ support for the I915 -*- linux-c -*- */ @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.15 2018/08/27 14:45:11 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.16 2018/08/27 14:52:56 riastradh Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -2677,6 +2677,34 @@ void i915_handle_error(struct drm_device } i915_reset_and_wakeup(dev); + +do { + struct i915_error_state_file_priv error_priv; + struct drm_i915_error_state_buf error_str; + int ret; + + memset(_priv, 0, sizeof(error_priv)); + + ret = i915_error_state_buf_init(_str, dev_priv, 512*1024, 0); + if (ret) { + DRM_ERROR("Failed to initialize error buf: %d\n", ret); + break; + } + error_priv.dev = dev; + i915_error_state_get(dev, _priv); + + ret = i915_error_state_to_str(_str, _priv); + if (ret) { + DRM_ERROR("Failed to format error buf: %d\n", ret); + i915_error_state_put(_priv); + } + + error_str.buf[MIN(error_str.size - 1, error_str.bytes)] = '\0'; + DRM_ERROR("Error state:\n%s\n", error_str.buf); + + i915_error_state_buf_release(_str); + i915_error_state_put(_priv); +} while (0); } /* Called from drm generic code, passed 'crtc' which Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.6 Mon Aug 27 07:24:25 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c Mon Aug 27 14:52:56 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lrc.c,v 1.6 2018/08/27 07:24:25 riastradh Exp $ */ +/* $NetBSD: intel_lrc.c,v 1.7 2018/08/27 14:52:56 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -135,7 +135,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.6 2018/08/27 07:24:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.7 2018/08/27 14:52:56 riastradh Exp $"); #include #include @@ -751,8 +751,8 @@ static void __wrap_ring_buffer(struct in tail = ringbuf->tail; rem /= 4; - while (rem--) - bus_space_write_4(ringbuf->bst, ringbuf->bsh, tail++, MI_NOOP); + for (; rem --> 0; tail += 4) + bus_space_write_4(ringbuf->bst, ringbuf->bsh, tail, MI_NOOP); #else uint32_t __iomem *virt; int rem = ringbuf->size - ringbuf->tail;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:52:40 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_gtt.c Log Message: Zero the scratch page. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.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_gem_gtt.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.13 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.12 Mon Aug 27 14:49:39 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c Mon Aug 27 14:52:40 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_gtt.c,v 1.12 2018/08/27 14:49:39 riastradh Exp $ */ +/* $NetBSD: i915_gem_gtt.c,v 1.13 2018/08/27 14:52:40 riastradh Exp $ */ /* * Copyright © 2010 Daniel Vetter @@ -26,7 +26,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.12 2018/08/27 14:49:39 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.13 2018/08/27 14:52:40 riastradh Exp $"); #include #include @@ -321,6 +321,9 @@ static gen6_pte_t iris_pte_encode(dma_ad return pte; } +static void *kmap_page_dma(struct i915_page_dma *); +static void kunmap_page_dma(struct drm_device *, void *); + static int __setup_page_dma(struct drm_device *dev, struct i915_page_dma *p, gfp_t flags) { @@ -354,6 +357,12 @@ fail2: __unused bus_dmamap_destroy(dev->dmat, p->map); goto fail1; } + + if (flags & __GFP_ZERO) { + void *va = kmap_page_dma(p); + memset(va, 0, PAGE_SIZE); + kunmap_page_dma(dev, va); + } #else struct device *device = >pdev->dev;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:50:04 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c i915_gem.c i915_gem_render_state.c Log Message: Handle uvm object reference counts in uvm_map more carefully. Acquire a reference unconditionally first; then let uvm_map consume it on success, and release it ourselves on failure. As we did before -- acquiring a fresh reference on success -- another thread might release the reference with a concurrent uvm_unmap before we could acquire it back, thereby destroying the object. XXX pullup-7 in part (i915_gem_fault) XXX pullup-8 in part (i915_gem_fault) To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c cvs rdiff -u -r1.52 -r1.53 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.16 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.17 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.16 Mon Aug 27 14:46:38 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 14:50:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.16 2018/08/27 14:46:38 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.17 2018/08/27 14:50:04 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.16 2018/08/27 14:46:38 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.17 2018/08/27 14:50:04 riastradh Exp $"); #include "i915_drv.h" @@ -928,16 +928,18 @@ static u32 *copy_batch(struct drm_i915_g - srcstart; vaddr_t srcva = 0; /* hint */ + /* Acquire a reference for uvm_map to consume. */ + uao_reference(src_obj->base.filp); + /* XXX errno NetBSD->Linux */ ret = -uvm_map(kernel_map, , srclen, src_obj->base.filp, srcstart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT)); if (ret) { + uao_detach(src_obj->base.filp); DRM_DEBUG_DRIVER("CMD: Failed to vmap batch: %d\n", ret); goto unpin_src; } - /* uvm_map consumes caller's reference on success. */ - uao_reference(src_obj->base.filp); src_base = (const void *)srcva; #else src_base = vmap_batch(src_obj, batch_start_offset, batch_len); @@ -959,16 +961,18 @@ static u32 *copy_batch(struct drm_i915_g const u32 dstlen = roundup(0 + batch_len, PAGE_SIZE) - dststart; vaddr_t dstva = 0; /* hint */ + /* Acquire a reference for uvm_map to consume. */ + uao_reference(dest_obj->base.filp); + /* XXX errno NetBSD->Linux */ ret = -uvm_map(kernel_map, , dstlen, dest_obj->base.filp, dststart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT)); if (ret) { + uao_detach(dest_obj->base.filp); DRM_DEBUG_DRIVER("CMD: Failed to vmap shadow batch: %d\n", ret); goto unmap_src; } - /* uvm_map consumes caller's reference on success. */ - uao_reference(dest_obj->base.filp); dst = (void *)dstva; #else dst = vmap_batch(dest_obj, 0, batch_len); Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.52 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.53 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.52 Mon Aug 27 14:47:02 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Mon Aug 27 14:50:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.52 2018/08/27 14:47:02 riastradh Exp $ */ +/* $NetBSD: i915_gem.c,v 1.53 2018/08/27 14:50:04 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.52 2018/08/27 14:47:02 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.53 2018/08/27 14:50:04 riastradh Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -1956,6 +1956,8 @@ i915_gem_mmap_ioctl(struct drm_device *d } #ifdef __NetBSD__ + /* Acquire a reference for uvm_map to consume. */ + uao_reference(obj->filp); addr = (*curproc->p_emul->e_vm_default_addr)(curproc, (vaddr_t)curproc->p_vmspace->vm_daddr, args->size, curproc->p_vmspace->vm_map.flags & VM_MAP_TOPDOWN); @@ -1966,10 +1968,10 @@ i915_gem_mmap_ioctl(struct drm_device *d (VM_PROT_READ | VM_PROT_WRITE), UVM_INH_COPY, UVM_ADV_NORMAL, 0)); if (ret) { + uao_detach(obj->filp); drm_gem_object_unreference_unlocked(obj); return ret; } - uao_reference(obj->filp); drm_gem_object_unreference_unlocked(obj); #else addr =
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:49:39 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_gtt.c Log Message: Pass waitok/nowait flags to bus_dma. Use boundary=0. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.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_gem_gtt.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.11 Mon Aug 27 07:17:35 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c Mon Aug 27 14:49:39 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_gtt.c,v 1.11 2018/08/27 07:17:35 riastradh Exp $ */ +/* $NetBSD: i915_gem_gtt.c,v 1.12 2018/08/27 14:49:39 riastradh Exp $ */ /* * Copyright © 2010 Daniel Vetter @@ -26,7 +26,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.11 2018/08/27 07:17:35 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.12 2018/08/27 14:49:39 riastradh Exp $"); #include #include @@ -325,24 +325,30 @@ static int __setup_page_dma(struct drm_d struct i915_page_dma *p, gfp_t flags) { #ifdef __NetBSD__ + int busdmaflags = 0; int error; int nseg = 1; - error = bus_dmamem_alloc(dev->dmat, PAGE_SIZE, PAGE_SIZE, PAGE_SIZE, - >seg, nseg, , BUS_DMA_WAITOK); + if (flags & __GFP_WAIT) + busdmaflags |= BUS_DMA_WAITOK; + else + busdmaflags |= BUS_DMA_NOWAIT; + + error = bus_dmamem_alloc(dev->dmat, PAGE_SIZE, PAGE_SIZE, 0, >seg, + nseg, , busdmaflags); if (error) { fail0: p->map = NULL; return -error; /* XXX errno NetBSD->Linux */ } KASSERT(nseg == 1); - error = bus_dmamap_create(dev->dmat, PAGE_SIZE, 1, PAGE_SIZE, - PAGE_SIZE, BUS_DMA_WAITOK, >map); + error = bus_dmamap_create(dev->dmat, PAGE_SIZE, 1, PAGE_SIZE, 0, + busdmaflags, >map); if (error) { fail1: bus_dmamem_free(dev->dmat, >seg, 1); goto fail0; } error = bus_dmamap_load_raw(dev->dmat, p->map, >seg, 1, PAGE_SIZE, - BUS_DMA_WAITOK); + busdmaflags); if (error) { fail2: __unused bus_dmamap_destroy(dev->dmat, p->map);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:49:05 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gpu_error.c Log Message: Lock around use of irq_queue. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.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_gpu_error.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.8 Mon Aug 27 07:09:28 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c Mon Aug 27 14:49:05 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gpu_error.c,v 1.8 2018/08/27 07:09:28 riastradh Exp $ */ +/* $NetBSD: i915_gpu_error.c,v 1.9 2018/08/27 14:49:05 riastradh Exp $ */ /* * Copyright (c) 2008 Intel Corporation @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gpu_error.c,v 1.8 2018/08/27 07:09:28 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gpu_error.c,v 1.9 2018/08/27 14:49:05 riastradh Exp $"); #include @@ -929,8 +929,10 @@ static void i915_record_ring_state(struc } #ifdef __NetBSD__ + spin_lock(_priv->irq_lock); ering->waiting = DRM_SPIN_WAITERS_P(>irq_queue, _priv->irq_lock); + spin_unlock(_priv->irq_lock); #else ering->waiting = waitqueue_active(>irq_queue); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:47:02 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c i915_drv.h i915_gem.c Log Message: Work around ioctl ABI mistake in i915 drm. A flags argument was added to the I915_GEM_MMAP ioctl. The version of xf86-video-intel we imported was compiled to use the new ioctl structure including the flags argument, but without initializing the flags argument, so it would be userland stack garbage causing i915_gem_mmap_ioctl to fail. Newer xf86-video-intel will query the mmap version first before trying to use either the older ioctl structure, with the original shorter argument and thus no stack garbage (which will be padded with to the full length in the kernel by drm_ioctl), or the newer ioctl structure, with the argument initialized. libdrm does not appear to be affected by this -- it zeroes the longer structure before passing it in. Patch from mrg@, diagnosis and explanation by me. To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c \ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h cvs rdiff -u -r1.51 -r1.52 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.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_dma.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.23 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.24 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.23 Mon Aug 27 13:43:39 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c Mon Aug 27 14:47:02 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_dma.c,v 1.23 2018/08/27 13:43:39 riastradh Exp $ */ +/* $NetBSD: i915_dma.c,v 1.24 2018/08/27 14:47:02 riastradh Exp $ */ /* i915_dma.c -- DMA support for the I915 -*- linux-c -*- */ @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.23 2018/08/27 13:43:39 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.24 2018/08/27 14:47:02 riastradh Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -160,6 +160,9 @@ static int i915_getparam(struct drm_devi value = 1; break; case I915_PARAM_MMAP_VERSION: +#ifdef __NetBSD__ + dev_priv->quirks |= QUIRK_NETBSD_VERSION_CALLED; +#endif value = 1; break; case I915_PARAM_SUBSLICE_TOTAL: Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.23 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.24 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.23 Mon Aug 27 13:43:39 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h Mon Aug 27 14:47:02 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_drv.h,v 1.23 2018/08/27 13:43:39 riastradh Exp $ */ +/* $NetBSD: i915_drv.h,v 1.24 2018/08/27 14:47:02 riastradh Exp $ */ /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- */ @@ -1042,6 +1042,11 @@ enum intel_sbi_destination { #define QUIRK_PIPEB_FORCE (1<<4) #define QUIRK_PIN_SWIZZLED_PAGES (1<<5) +#ifdef __NetBSD__ +/* NetBSD hack to note version was called and thus mmap flags valid. */ +#define QUIRK_NETBSD_VERSION_CALLED (1ul<<31) +#endif + struct intel_fbdev; struct intel_fbc_work; Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.51 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.52 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.51 Mon Aug 27 14:44:46 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Mon Aug 27 14:47:02 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.51 2018/08/27 14:44:46 riastradh Exp $ */ +/* $NetBSD: i915_gem.c,v 1.52 2018/08/27 14:47:02 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.51 2018/08/27 14:44:46 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.52 2018/08/27 14:47:02 riastradh Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -1930,7 +1930,11 @@ i915_gem_mmap_ioctl(struct drm_device *d struct drm_gem_object *obj; unsigned long addr; #ifdef __NetBSD__ + struct drm_i915_private *dev_priv = dev->dev_private; int ret; + + if ((dev_priv->quirks & QUIRK_NETBSD_VERSION_CALLED) == 0) + args->flags = 0; #endif if (args->flags & ~(I915_MMAP_WC))
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:46:10 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: Use kcopy, not memcpy, in case of failure to page in dst. From chs@. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.14 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.15 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.14 Mon Aug 27 14:45:57 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 14:46:10 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.14 2018/08/27 14:45:57 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.15 2018/08/27 14:46:10 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.14 2018/08/27 14:45:57 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.15 2018/08/27 14:46:10 riastradh Exp $"); #include "i915_drv.h" @@ -983,7 +983,15 @@ static u32 *copy_batch(struct drm_i915_g if (needs_clflush) drm_clflush_virt_range(src, batch_len); +#ifdef __NetBSD__ + ret = -kcopy(dst, src, batch_len); + if (ret) { + uvm_unmap(kernel_map, dstva, dstva + dstlen); + goto unmap_src; + } +#else memcpy(dst, src, batch_len); +#endif unmap_src: #ifdef __NetBSD__
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:46:38 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: Fix order of arguments to kcopy. @#&!$!*# Add const qualifiers to src to compiler will detect this. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.15 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.16 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.15 Mon Aug 27 14:46:10 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 14:46:38 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.15 2018/08/27 14:46:10 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.16 2018/08/27 14:46:38 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.15 2018/08/27 14:46:10 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.16 2018/08/27 14:46:38 riastradh Exp $"); #include "i915_drv.h" @@ -905,7 +905,7 @@ static u32 *copy_batch(struct drm_i915_g u32 batch_len) { int needs_clflush = 0; - void *src_base, *src; + const void *src_base, *src; void *dst = NULL; int ret; @@ -938,7 +938,7 @@ static u32 *copy_batch(struct drm_i915_g } /* uvm_map consumes caller's reference on success. */ uao_reference(src_obj->base.filp); - src_base = (void *)srcva; + src_base = (const void *)srcva; #else src_base = vmap_batch(src_obj, batch_start_offset, batch_len); if (!src_base) { @@ -979,12 +979,12 @@ static u32 *copy_batch(struct drm_i915_g } #endif - src = (char *)src_base + offset_in_page(batch_start_offset); + src = (const char *)src_base + offset_in_page(batch_start_offset); if (needs_clflush) drm_clflush_virt_range(src, batch_len); #ifdef __NetBSD__ - ret = -kcopy(dst, src, batch_len); + ret = -kcopy(src, dst, batch_len); if (ret) { uvm_unmap(kernel_map, dstva, dstva + dstlen); goto unmap_src;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:45:57 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: Forgot again to restore reference consumed by uvm_map. Add missing errno comment while here. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.13 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.14 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.13 Mon Aug 27 14:45:31 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 14:45:57 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.13 2018/08/27 14:45:31 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.14 2018/08/27 14:45:57 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.13 2018/08/27 14:45:31 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.14 2018/08/27 14:45:57 riastradh Exp $"); #include "i915_drv.h" @@ -936,6 +936,8 @@ static u32 *copy_batch(struct drm_i915_g DRM_DEBUG_DRIVER("CMD: Failed to vmap batch: %d\n", ret); goto unpin_src; } + /* uvm_map consumes caller's reference on success. */ + uao_reference(src_obj->base.filp); src_base = (void *)srcva; #else src_base = vmap_batch(src_obj, batch_start_offset, batch_len); @@ -957,6 +959,7 @@ static u32 *copy_batch(struct drm_i915_g const u32 dstlen = roundup(0 + batch_len, PAGE_SIZE) - dststart; vaddr_t dstva = 0; /* hint */ + /* XXX errno NetBSD->Linux */ ret = -uvm_map(kernel_map, , dstlen, dest_obj->base.filp, dststart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT)); @@ -964,6 +967,8 @@ static u32 *copy_batch(struct drm_i915_g DRM_DEBUG_DRIVER("CMD: Failed to vmap shadow batch: %d\n", ret); goto unmap_src; } + /* uvm_map consumes caller's reference on success. */ + uao_reference(dest_obj->base.filp); dst = (void *)dstva; #else dst = vmap_batch(dest_obj, 0, batch_len);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:45:11 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_irq.c Log Message: Narrow scope of locks in i915 error checks to reduce deadlocks. Not really sure why I had put some of these locks here... To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.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.14 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.15 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.14 Mon Aug 27 07:14:55 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c Mon Aug 27 14:45:11 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_irq.c,v 1.14 2018/08/27 07:14:55 riastradh Exp $ */ +/* $NetBSD: i915_irq.c,v 1.15 2018/08/27 14:45:11 riastradh Exp $ */ /* i915_irq.c -- IRQ support for the I915 -*- linux-c -*- */ @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.14 2018/08/27 07:14:55 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.15 2018/08/27 14:45:11 riastradh Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -1007,7 +1007,6 @@ static void notify_ring(struct intel_eng #ifdef __NetBSD__ spin_lock_irqsave(_priv->irq_lock, flags); - /* XXX Set a flag under the lock or push the lock out to callers. */ DRM_SPIN_WAKEUP_ALL(>irq_queue, _priv->irq_lock); spin_unlock_irqrestore(_priv->irq_lock, flags); #else @@ -1496,7 +1495,6 @@ static void gmbus_irq_handler(struct drm #ifdef __NetBSD__ spin_lock(_priv->gmbus_wait_lock); - /* XXX Set a flag here... */ DRM_SPIN_WAKEUP_ALL(_priv->gmbus_wait_queue, _priv->gmbus_wait_lock); spin_unlock(_priv->gmbus_wait_lock); @@ -1511,7 +1509,6 @@ static void dp_aux_irq_handler(struct dr #ifdef __NetBSD__ spin_lock(_priv->gmbus_wait_lock); - /* XXX Set a flag here... */ DRM_SPIN_WAKEUP_ALL(_priv->gmbus_wait_queue, _priv->gmbus_wait_lock); spin_unlock(_priv->gmbus_wait_lock); @@ -2416,10 +2413,12 @@ static void i915_error_wake_up(struct dr * a gpu reset pending so that i915_error_work_func can acquire them). */ - assert_spin_locked(_priv->irq_lock); #ifdef __NetBSD__ - for_each_ring(ring, dev_priv, i) + for_each_ring(ring, dev_priv, i) { + spin_lock(_priv->irq_lock); DRM_SPIN_WAKEUP_ALL(>irq_queue, _priv->irq_lock); + spin_unlock(_priv->irq_lock); + } spin_lock(_priv->pending_flip_lock); DRM_SPIN_WAKEUP_ALL(_priv->pending_flip_queue, @@ -2537,9 +2536,7 @@ static void i915_reset_and_wakeup(struct * Note: The wake_up also serves as a memory barrier so that * waiters see the update value of the reset counter atomic_t. */ - spin_lock(_priv->irq_lock); i915_error_wake_up(dev_priv, true); - spin_unlock(_priv->irq_lock); } } @@ -2652,8 +2649,6 @@ void i915_handle_error(struct drm_device va_list args; char error_msg[80]; - assert_spin_locked(_priv->irq_lock); - va_start(args, fmt); vscnprintf(error_msg, sizeof(error_msg), fmt, args); va_end(args); @@ -3047,8 +3042,6 @@ static void i915_hangcheck_elapsed(struc if (!i915.enable_hangcheck) return; - spin_lock(_priv->irq_lock); - for_each_ring(ring, dev_priv, i) { u64 acthd; u32 seqno; @@ -3063,6 +3056,7 @@ static void i915_hangcheck_elapsed(struc if (ring_idle(ring, seqno)) { ring->hangcheck.action = HANGCHECK_IDLE; #ifdef __NetBSD__ +spin_lock(_priv->irq_lock); if (DRM_SPIN_WAITERS_P(>irq_queue, _priv->irq_lock)) { if (!test_and_set_bit(ring->id, _priv->gpu_error.missed_irq_rings)) { @@ -3078,6 +3072,7 @@ static void i915_hangcheck_elapsed(struc } else { busy = false; } +spin_unlock(_priv->irq_lock); #else if (waitqueue_active(>irq_queue)) { /* Issue a wake-up to catch stuck h/w. */ @@ -3159,12 +3154,9 @@ static void i915_hangcheck_elapsed(struc if (rings_hung) { i915_handle_error(dev, true, "Ring hung"); - spin_unlock(_priv->irq_lock); return; } - spin_unlock(_priv->irq_lock); - if (busy_count) /* Reset timer case chip hangs without another request * being added */
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:45:31 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: For reasons beyond me, map does size/offset but unmap does start/end. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.13 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.12 Mon Aug 27 14:44:30 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 14:45:31 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.12 2018/08/27 14:44:30 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.13 2018/08/27 14:45:31 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.12 2018/08/27 14:44:30 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.13 2018/08/27 14:45:31 riastradh Exp $"); #include "i915_drv.h" @@ -982,7 +982,7 @@ static u32 *copy_batch(struct drm_i915_g unmap_src: #ifdef __NetBSD__ - uvm_unmap(kernel_map, srcva, srclen); + uvm_unmap(kernel_map, srcva, srcva + srclen); #else vunmap(src_base); #endif @@ -1239,7 +1239,7 @@ int i915_parse_cmds(struct intel_engine_ #ifdef __NetBSD__ uvm_unmap(kernel_map, (vaddr_t)batch_base, - roundup(batch_len, PAGE_SIZE)); + (vaddr_t)batch_base + roundup(batch_len, PAGE_SIZE)); #else vunmap(batch_base); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:44:46 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c Log Message: Need irq_lock to wait on irq_queue. From mrg@. To generate a diff of this commit: cvs rdiff -u -r1.50 -r1.51 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.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_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.50 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.51 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.50 Mon Aug 27 14:14:29 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Mon Aug 27 14:44:46 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.50 2018/08/27 14:14:29 riastradh Exp $ */ +/* $NetBSD: i915_gem.c,v 1.51 2018/08/27 14:44:46 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.50 2018/08/27 14:14:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.51 2018/08/27 14:44:46 riastradh Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -1448,6 +1448,7 @@ int __i915_wait_request(struct drm_i915_ ((wedged = (reset_counter != \ atomic_read(_priv->gpu_error.reset_counter))) || \ i915_gem_request_completed(req, false)) + spin_lock(_priv->irq_lock); if (timeout) { int ticks = missed_irq(dev_priv, ring) ? 1 : nsecs_to_jiffies_timeout(*timeout); @@ -1474,6 +1475,7 @@ int __i915_wait_request(struct drm_i915_ } /* ret is negative on failure or zero on success. */ } + spin_unlock(_priv->irq_lock); if (wedged) { ret = i915_gem_check_wedge(_priv->gpu_error, interruptible); if (ret == 0)
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:44:30 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: Use uvm_map directly and make sure we unmap correct length. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.11 Mon Aug 27 14:44:16 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 14:44:30 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.11 2018/08/27 14:44:16 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.12 2018/08/27 14:44:30 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.11 2018/08/27 14:44:16 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.12 2018/08/27 14:44:30 riastradh Exp $"); #include "i915_drv.h" @@ -860,28 +860,10 @@ find_reg(const struct drm_i915_reg_descr return NULL; } +#ifndef __NetBSD__ static u32 *vmap_batch(struct drm_i915_gem_object *obj, unsigned start, unsigned len) { -#ifdef __NetBSD__ - /* Round to an integral number of pages starting on page boundary. */ - unsigned start0 = rounddown(start, PAGE_SIZE); - unsigned len0 = roundup(start + len, PAGE_SIZE) - start0; - vaddr_t va = 0; - int error; - - error = uvm_map(kernel_map, , len0, obj->base.filp, start0, - PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE, - UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT)); - if (error) - return NULL; - - /* uvm_map consumes a reference on success. */ - uao_reference(obj->base.filp); - - /* Caller will take care of finding the offset in the page. */ - return (void *)va; -#else int i; void *addr = NULL; struct sg_page_iter sg_iter; @@ -913,8 +895,8 @@ finish: if (pages) drm_free_large(pages); return (u32*)addr; -#endif /* __NetBSD__ */ } +#endif /* __NetBSD__ */ /* Returns a vmap'd pointer to dest_obj, which the caller must unmap */ static u32 *copy_batch(struct drm_i915_gem_object *dest_obj, @@ -940,12 +922,29 @@ static u32 *copy_batch(struct drm_i915_g return ERR_PTR(ret); } +#ifdef __NetBSD__ + const u32 srcstart = rounddown(batch_start_offset, PAGE_SIZE); + const u32 srclen = roundup(batch_start_offset + batch_len, PAGE_SIZE) + - srcstart; + vaddr_t srcva = 0; /* hint */ + + /* XXX errno NetBSD->Linux */ + ret = -uvm_map(kernel_map, , srclen, src_obj->base.filp, + srcstart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, + UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT)); + if (ret) { + DRM_DEBUG_DRIVER("CMD: Failed to vmap batch: %d\n", ret); + goto unpin_src; + } + src_base = (void *)srcva; +#else src_base = vmap_batch(src_obj, batch_start_offset, batch_len); if (!src_base) { DRM_DEBUG_DRIVER("CMD: Failed to vmap batch\n"); ret = -ENOMEM; goto unpin_src; } +#endif ret = i915_gem_object_set_to_cpu_domain(dest_obj, true); if (ret) { @@ -953,12 +952,27 @@ static u32 *copy_batch(struct drm_i915_g goto unmap_src; } +#ifdef __NetBSD__ + const u32 dststart = rounddown(0, PAGE_SIZE); + const u32 dstlen = roundup(0 + batch_len, PAGE_SIZE) - dststart; + vaddr_t dstva = 0; /* hint */ + + ret = -uvm_map(kernel_map, , dstlen, dest_obj->base.filp, + dststart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, + UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT)); + if (ret) { + DRM_DEBUG_DRIVER("CMD: Failed to vmap shadow batch: %d\n", ret); + goto unmap_src; + } + dst = (void *)dstva; +#else dst = vmap_batch(dest_obj, 0, batch_len); if (!dst) { DRM_DEBUG_DRIVER("CMD: Failed to vmap shadow batch\n"); ret = -ENOMEM; goto unmap_src; } +#endif src = (char *)src_base + offset_in_page(batch_start_offset); if (needs_clflush) @@ -968,7 +982,7 @@ static u32 *copy_batch(struct drm_i915_g unmap_src: #ifdef __NetBSD__ - uvm_unmap(kernel_map, (vaddr_t)src_base, batch_len); + uvm_unmap(kernel_map, srcva, srclen); #else vunmap(src_base); #endif @@ -1224,7 +1238,8 @@ int i915_parse_cmds(struct intel_engine_ } #ifdef __NetBSD__ - uvm_unmap(kernel_map, (vaddr_t)batch_base, batch_obj->base.size); + uvm_unmap(kernel_map, (vaddr_t)batch_base, + roundup(batch_len, PAGE_SIZE)); #else vunmap(batch_base); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:44:16 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: Fix mapping of non-page-aligned stuff in vmap_batch. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.10 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.11 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.10 Mon Aug 27 14:44:04 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 14:44:16 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.10 2018/08/27 14:44:04 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.11 2018/08/27 14:44:16 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.10 2018/08/27 14:44:04 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.11 2018/08/27 14:44:16 riastradh Exp $"); #include "i915_drv.h" @@ -864,11 +864,14 @@ static u32 *vmap_batch(struct drm_i915_g unsigned start, unsigned len) { #ifdef __NetBSD__ + /* Round to an integral number of pages starting on page boundary. */ + unsigned start0 = rounddown(start, PAGE_SIZE); + unsigned len0 = roundup(start + len, PAGE_SIZE) - start0; vaddr_t va = 0; int error; - error = uvm_map(kernel_map, , len, obj->base.filp, start, - sizeof(u32), UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE, + error = uvm_map(kernel_map, , len0, obj->base.filp, start0, + PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT)); if (error) return NULL; @@ -876,6 +879,7 @@ static u32 *vmap_batch(struct drm_i915_g /* uvm_map consumes a reference on success. */ uao_reference(obj->base.filp); + /* Caller will take care of finding the offset in the page. */ return (void *)va; #else int i;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:43:48 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: Remove wrong comment. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.8 Mon Aug 27 07:44:43 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 14:43:48 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.8 2018/08/27 07:44:43 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.9 2018/08/27 14:43:48 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.8 2018/08/27 07:44:43 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.9 2018/08/27 14:43:48 riastradh Exp $"); #include "i915_drv.h" @@ -867,7 +867,6 @@ static u32 *vmap_batch(struct drm_i915_g vaddr_t va = 0; int error; - /* XXX errno NetBSD->Linux */ error = uvm_map(kernel_map, , len, obj->base.filp, start, sizeof(u32), UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:44:04 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c i915_gem_render_state.c Log Message: uvm_map consumes reference on success, so be sure to acquire another. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.9 Mon Aug 27 14:43:48 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 14:44:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.9 2018/08/27 14:43:48 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.10 2018/08/27 14:44:04 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.9 2018/08/27 14:43:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.10 2018/08/27 14:44:04 riastradh Exp $"); #include "i915_drv.h" @@ -873,6 +873,9 @@ static u32 *vmap_batch(struct drm_i915_g if (error) return NULL; + /* uvm_map consumes a reference on success. */ + uao_reference(obj->base.filp); + return (void *)va; #else int i; Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.7 Mon Aug 27 13:43:22 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c Mon Aug 27 14:44:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_render_state.c,v 1.7 2018/08/27 13:43:22 riastradh Exp $ */ +/* $NetBSD: i915_gem_render_state.c,v 1.8 2018/08/27 14:44:04 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.7 2018/08/27 13:43:22 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.8 2018/08/27 14:44:04 riastradh Exp $"); #include "i915_drv.h" #include "intel_renderstate.h" @@ -121,6 +121,8 @@ static int render_state_setup(struct ren UVM_ADV_NORMAL, 0)); if (ret) return ret; + /* uvm_map consumes a reference on success. */ + uao_reference(so->obj->base.filp); d = (void *)kva; #else page = sg_page(so->obj->pages->sgl);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:43:00 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_sprite.c Log Message: Fix intel pipe update locking and whining. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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/intel_sprite.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.7 Mon Aug 27 07:28:26 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c Mon Aug 27 14:43:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sprite.c,v 1.7 2018/08/27 07:28:26 riastradh Exp $ */ +/* $NetBSD: intel_sprite.c,v 1.8 2018/08/27 14:43:00 riastradh Exp $ */ /* * Copyright © 2011 Intel Corporation @@ -32,7 +32,7 @@ * support. */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.7 2018/08/27 07:28:26 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.8 2018/08/27 14:43:00 riastradh Exp $"); #include #include @@ -115,7 +115,7 @@ void intel_pipe_update_start(struct inte if (min <= 0 || max <= 0) return; - if (WARN_ON(drm_crtc_vblank_get(>base))) + if (WARN_ON(drm_crtc_vblank_get_locked(>base))) return; crtc->debug.min_vbl = min; @@ -126,9 +126,10 @@ void intel_pipe_update_start(struct inte DRM_SPIN_TIMED_WAIT_UNTIL(ret, wq, >vbl_lock, timeout, (scanline = intel_get_crtc_scanline(crtc), scanline < min || scanline > max)); - if (ret) - DRM_ERROR("Potential atomic update failure on pipe %c\n", - pipe_name(crtc->pipe)); + if (ret <= 0) + DRM_ERROR("Potential atomic update failure on pipe %c: %d\n", + pipe_name(crtc->pipe), ret ? ret : -EWOULDBLOCK); + drm_crtc_vblank_put_locked(>base); #else for (;;) { /* @@ -156,9 +157,9 @@ void intel_pipe_update_start(struct inte } finish_wait(wq, ); -#endif drm_crtc_vblank_put(>base); +#endif crtc->debug.scanline_start = scanline; crtc->debug.start_vbl_time = ktime_get();
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:54:48 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_opregion.c Log Message: Newline-terminate error message. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.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/intel_opregion.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.13 src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.14 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.13 Mon Aug 27 07:26:30 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c Mon Aug 27 13:54:48 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_opregion.c,v 1.13 2018/08/27 07:26:30 riastradh Exp $ */ +/* $NetBSD: intel_opregion.c,v 1.14 2018/08/27 13:54:48 riastradh Exp $ */ /* * Copyright 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.13 2018/08/27 07:26:30 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.14 2018/08/27 13:54:48 riastradh Exp $"); #include #include @@ -999,7 +999,7 @@ int intel_opregion_setup(struct drm_devi err = -bus_space_map(opregion->bst, asls, OPREGION_SIZE, BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_PREFETCHABLE, >bsh); if (err) { - DRM_DEBUG_DRIVER("Failed to map opregion: %d", err); + DRM_DEBUG_DRIVER("Failed to map opregion: %d\n", err); return err; } base = bus_space_vaddr(opregion->bst, opregion->bsh);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:44:29 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c Log Message: With , we can now use cpu_has_pat. To generate a diff of this commit: cvs rdiff -u -r1.48 -r1.49 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.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_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.48 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.49 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.48 Mon Aug 27 13:41:37 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Mon Aug 27 13:44:29 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.48 2018/08/27 13:41:37 riastradh Exp $ */ +/* $NetBSD: i915_gem.c,v 1.49 2018/08/27 13:44:29 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.48 2018/08/27 13:41:37 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.49 2018/08/27 13:44:29 riastradh Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -67,6 +67,7 @@ __KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v #include #include #include +#include #define RQ_BUG_ON(expr) @@ -1933,11 +1934,8 @@ i915_gem_mmap_ioctl(struct drm_device *d if (args->flags & ~(I915_MMAP_WC)) return -EINVAL; -#if 0 - /* XXX cpu_has_pat == CPUID_PAT, do we care to do this check */ if (args->flags & I915_MMAP_WC && !cpu_has_pat) return -ENODEV; -#endif obj = drm_gem_object_lookup(dev, file, args->handle); if (obj == NULL)
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:43:39 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c i915_drv.h intel_uncore.c Log Message: Fold local intel_uncore_destroy into upstream intel_uncore_fini. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c \ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.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_dma.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.22 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.23 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.22 Mon Aug 27 07:18:18 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c Mon Aug 27 13:43:39 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_dma.c,v 1.22 2018/08/27 07:18:18 riastradh Exp $ */ +/* $NetBSD: i915_dma.c,v 1.23 2018/08/27 13:43:39 riastradh Exp $ */ /* i915_dma.c -- DMA support for the I915 -*- linux-c -*- */ @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.22 2018/08/27 07:18:18 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.23 2018/08/27 13:43:39 riastradh Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -1183,7 +1183,6 @@ out_gtt: out_freecsr: intel_csr_ucode_fini(dev); intel_uncore_fini(dev); - intel_uncore_destroy(dev); pci_iounmap(dev->pdev, dev_priv->regs); put_bridge: pci_dev_put(dev_priv->bridge_dev); @@ -1294,7 +1293,6 @@ int i915_driver_unload(struct drm_device i915_global_gtt_cleanup(dev); intel_uncore_fini(dev); - intel_uncore_destroy(dev); if (dev_priv->regs != NULL) pci_iounmap(dev->pdev, dev_priv->regs); Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.22 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.23 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.22 Mon Aug 27 07:57:12 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h Mon Aug 27 13:43:39 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_drv.h,v 1.22 2018/08/27 07:57:12 riastradh Exp $ */ +/* $NetBSD: i915_drv.h,v 1.23 2018/08/27 13:43:39 riastradh Exp $ */ /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- */ @@ -2798,7 +2798,6 @@ extern void intel_uncore_early_sanitize( extern void intel_uncore_init(struct drm_device *dev); extern void intel_uncore_check_errors(struct drm_device *dev); extern void intel_uncore_fini(struct drm_device *dev); -extern void intel_uncore_destroy(struct drm_device *dev); extern void intel_uncore_forcewake_reset(struct drm_device *dev, bool restore); const char *intel_uncore_forcewake_domain_to_str(const enum forcewake_domain_id id); void intel_uncore_forcewake_get(struct drm_i915_private *dev_priv, Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.8 Mon Aug 27 07:29:20 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c Mon Aug 27 13:43:39 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_uncore.c,v 1.8 2018/08/27 07:29:20 riastradh Exp $ */ +/* $NetBSD: intel_uncore.c,v 1.9 2018/08/27 13:43:39 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -24,7 +24,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_uncore.c,v 1.8 2018/08/27 07:29:20 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_uncore.c,v 1.9 2018/08/27 13:43:39 riastradh Exp $"); #include "i915_drv.h" #include "intel_drv.h" @@ -1288,17 +1288,16 @@ void intel_uncore_init(struct drm_device void intel_uncore_fini(struct drm_device *dev) { +#ifdef __NetBSD__ + struct drm_i915_private *const dev_priv = dev->dev_private; + unsigned i; +#endif + /* Paranoia: make sure we have disabled everything before we exit. */ intel_uncore_sanitize(dev); intel_uncore_forcewake_reset(dev, false); -} -void intel_uncore_destroy(struct drm_device *dev) -{ #ifdef __NetBSD__ - struct drm_i915_private *const dev_priv = dev->dev_private; - unsigned i; - for (i = 0; i < FW_DOMAIN_ID_COUNT; i++) { if (dev_priv->uncore.fw_domains & (1u << i)) teardown_timer(_priv->uncore.fw_domain[i].timer);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:43:12 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_render_state.c Log Message: Initialize kva hint for uvm_map to avoid using uninitialized memory. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_gem_render_state.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.5 Mon Aug 27 07:19:01 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c Mon Aug 27 13:43:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_render_state.c,v 1.5 2018/08/27 07:19:01 riastradh Exp $ */ +/* $NetBSD: i915_gem_render_state.c,v 1.6 2018/08/27 13:43:12 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.5 2018/08/27 07:19:01 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.6 2018/08/27 13:43:12 riastradh Exp $"); #include "i915_drv.h" #include "intel_renderstate.h" @@ -101,7 +101,7 @@ static int render_state_setup(struct ren const struct intel_renderstate_rodata *rodata = so->rodata; unsigned int i = 0, reloc_index = 0; #ifdef __NetBSD__ - vaddr_t kva; + vaddr_t kva = 0; /* hint */ #else struct page *page; #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:43:23 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_render_state.c Log Message: Move hint setting nearer to uvm_map for clarity. CTASSERT page size. Elsewhere this code says 4096, rather than PAGE_SIZE. PAGE_SIZE is the smallest unit that uvm_map accepts, so it had better match. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_gem_render_state.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.6 Mon Aug 27 13:43:12 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c Mon Aug 27 13:43:22 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_render_state.c,v 1.6 2018/08/27 13:43:12 riastradh Exp $ */ +/* $NetBSD: i915_gem_render_state.c,v 1.7 2018/08/27 13:43:22 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.6 2018/08/27 13:43:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.7 2018/08/27 13:43:22 riastradh Exp $"); #include "i915_drv.h" #include "intel_renderstate.h" @@ -101,7 +101,7 @@ static int render_state_setup(struct ren const struct intel_renderstate_rodata *rodata = so->rodata; unsigned int i = 0, reloc_index = 0; #ifdef __NetBSD__ - vaddr_t kva = 0; /* hint */ + vaddr_t kva; #else struct page *page; #endif @@ -113,6 +113,8 @@ static int render_state_setup(struct ren return ret; #ifdef __NetBSD__ + CTASSERT(PAGE_SIZE == 4096); + kva = 0; /* hint */ /* XXX errno NetBSD->Linux */ ret = -uvm_map(kernel_map, , PAGE_SIZE, so->obj->base.filp, 0, sizeof(*d), UVM_MAPFLAG(UVM_PROT_W, UVM_PROT_W, UVM_INH_NONE,
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:43:01 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c Log Message: Remove temporary diagnostic now that I know I forgot uio_offset. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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/intel_guc_loader.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.10 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.11 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.10 Mon Aug 27 13:42:35 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c Mon Aug 27 13:43:01 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_guc_loader.c,v 1.10 2018/08/27 13:42:35 riastradh Exp $ */ +/* $NetBSD: intel_guc_loader.c,v 1.11 2018/08/27 13:43:01 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -29,7 +29,7 @@ *Alex Dai */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.10 2018/08/27 13:42:35 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.11 2018/08/27 13:43:01 riastradh Exp $"); #include #include @@ -539,36 +539,6 @@ static void guc_fw_fetch(struct drm_devi goto fail; } -#ifdef __NetBSD__ /* XXX temporary diagnostic kludge */ - { - void *buf = kmem_alloc(fw->size, KM_SLEEP); - struct iovec iov; - struct uio uio; - iov.iov_base = buf; - iov.iov_len = fw->size; - uio.uio_iov = - uio.uio_iovcnt = 1; - uio.uio_offset = 0; - uio.uio_resid = fw->size; - uio.uio_rw = UIO_READ; - UIO_SETUP_SYSSPACE(); - err = -ubc_uiomove(obj->base.filp, , fw->size, - UVM_ADV_NORMAL, UBC_READ); - if (err) { - DRM_DEBUG_DRIVER("ubc_uiomove failed for test: %d\n", - err); - kmem_free(buf, fw->size); - goto fail; - } - if (memcmp(fw->data, buf, fw->size) != 0) { - DRM_DEBUG_DRIVER("firmware copy corrupted\n"); - kmem_free(buf, fw->size); - goto fail; - } - kmem_free(buf, fw->size); - } -#endif - guc_fw->guc_fw_obj = obj; guc_fw->guc_fw_size = fw->size;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:42:36 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c Log Message: Don't forget to initialize uio_offset. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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/intel_guc_loader.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.9 Mon Aug 27 13:42:12 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c Mon Aug 27 13:42:35 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_guc_loader.c,v 1.9 2018/08/27 13:42:12 riastradh Exp $ */ +/* $NetBSD: intel_guc_loader.c,v 1.10 2018/08/27 13:42:35 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -29,7 +29,7 @@ *Alex Dai */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.9 2018/08/27 13:42:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.10 2018/08/27 13:42:35 riastradh Exp $"); #include #include @@ -548,6 +548,7 @@ static void guc_fw_fetch(struct drm_devi iov.iov_len = fw->size; uio.uio_iov = uio.uio_iovcnt = 1; + uio.uio_offset = 0; uio.uio_resid = fw->size; uio.uio_rw = UIO_READ; UIO_SETUP_SYSSPACE();
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:42:12 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c Log Message: Transfer from the correct offset. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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/intel_guc_loader.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.8 Mon Aug 27 13:41:50 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c Mon Aug 27 13:42:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_guc_loader.c,v 1.8 2018/08/27 13:41:50 riastradh Exp $ */ +/* $NetBSD: intel_guc_loader.c,v 1.9 2018/08/27 13:42:12 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -29,7 +29,7 @@ *Alex Dai */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.8 2018/08/27 13:41:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.9 2018/08/27 13:42:12 riastradh Exp $"); #include #include @@ -262,7 +262,7 @@ static int guc_ucode_xfer_dma(struct drm iov.iov_len = UOS_RSA_SIG_SIZE; uio.uio_iov = uio.uio_iovcnt = 1; - uio.uio_offset = 0; + uio.uio_offset = offset; uio.uio_resid = UOS_RSA_SIG_SIZE; uio.uio_rw = UIO_READ; UIO_SETUP_SYSSPACE();
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:41:50 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c Log Message: Temporary diagnostic kludge: confirm the ubc_uiomove worked as expected. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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/intel_guc_loader.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.7 Mon Aug 27 13:40:28 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c Mon Aug 27 13:41:50 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_guc_loader.c,v 1.7 2018/08/27 13:40:28 riastradh Exp $ */ +/* $NetBSD: intel_guc_loader.c,v 1.8 2018/08/27 13:41:50 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -29,7 +29,7 @@ *Alex Dai */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.7 2018/08/27 13:40:28 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.8 2018/08/27 13:41:50 riastradh Exp $"); #include #include @@ -539,6 +539,35 @@ static void guc_fw_fetch(struct drm_devi goto fail; } +#ifdef __NetBSD__ /* XXX temporary diagnostic kludge */ + { + void *buf = kmem_alloc(fw->size, KM_SLEEP); + struct iovec iov; + struct uio uio; + iov.iov_base = buf; + iov.iov_len = fw->size; + uio.uio_iov = + uio.uio_iovcnt = 1; + uio.uio_resid = fw->size; + uio.uio_rw = UIO_READ; + UIO_SETUP_SYSSPACE(); + err = -ubc_uiomove(obj->base.filp, , fw->size, + UVM_ADV_NORMAL, UBC_READ); + if (err) { + DRM_DEBUG_DRIVER("ubc_uiomove failed for test: %d\n", + err); + kmem_free(buf, fw->size); + goto fail; + } + if (memcmp(fw->data, buf, fw->size) != 0) { + DRM_DEBUG_DRIVER("firmware copy corrupted\n"); + kmem_free(buf, fw->size); + goto fail; + } + kmem_free(buf, fw->size); + } +#endif + guc_fw->guc_fw_obj = obj; guc_fw->guc_fw_size = fw->size;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:41:37 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c Log Message: Guess what uvm criterion means we should discard backing pages. To generate a diff of this commit: cvs rdiff -u -r1.47 -r1.48 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.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_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.47 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.48 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.47 Mon Aug 27 13:40:28 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Mon Aug 27 13:41:37 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.47 2018/08/27 13:40:28 riastradh Exp $ */ +/* $NetBSD: i915_gem.c,v 1.48 2018/08/27 13:41:37 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.47 2018/08/27 13:40:28 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.48 2018/08/27 13:41:37 riastradh Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -5025,9 +5025,6 @@ struct drm_i915_gem_object *i915_gem_all static bool discard_backing_storage(struct drm_i915_gem_object *obj) { -#ifdef __NetBSD__ - panic("XXX"); -#else /* If we are the last user of the backing storage (be it shmemfs * pages or stolen etc), we know that the pages are going to be * immediately released. In this case, we can then skip copying @@ -5047,6 +5044,10 @@ static bool discard_backing_storage(stru * acquiring such a reference whilst we are in the middle of * freeing the object. */ +#ifdef __NetBSD__ + /* XXX This number might be a fencepost. */ + return obj->base.filp->uo_refs == 1; +#else return atomic_long_read(>base.filp->f_count) == 1; #endif }
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:40:28 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c intel_guc_loader.c Log Message: Don't forget to set .uio_offset and to call UIO_SETUP_SYSSPACE. To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c cvs rdiff -u -r1.6 -r1.7 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.46 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.47 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.46 Mon Aug 27 07:45:55 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Mon Aug 27 13:40:28 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.46 2018/08/27 07:45:55 riastradh Exp $ */ +/* $NetBSD: i915_gem.c,v 1.47 2018/08/27 13:40:28 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.46 2018/08/27 07:45:55 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.47 2018/08/27 13:40:28 riastradh Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -5845,6 +5845,7 @@ i915_gem_object_create_from_data(struct struct uio uio = { .uio_iov = , .uio_iovcnt = 1, + .uio_offset = 0, .uio_resid = size, .uio_rw = UIO_WRITE, }; @@ -5868,6 +5869,7 @@ i915_gem_object_create_from_data(struct i915_gem_object_pin_pages(obj); #ifdef __NetBSD__ + UIO_SETUP_SYSSPACE(); /* XXX errno NetBSD->Linux */ ret = -ubc_uiomove(obj->base.filp, , size, UVM_ADV_NORMAL, UBC_WRITE); Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.6 Mon Aug 27 07:22:59 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c Mon Aug 27 13:40:28 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_guc_loader.c,v 1.6 2018/08/27 07:22:59 riastradh Exp $ */ +/* $NetBSD: intel_guc_loader.c,v 1.7 2018/08/27 13:40:28 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -29,7 +29,7 @@ *Alex Dai */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.6 2018/08/27 07:22:59 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.7 2018/08/27 13:40:28 riastradh Exp $"); #include #include @@ -262,8 +262,10 @@ static int guc_ucode_xfer_dma(struct drm iov.iov_len = UOS_RSA_SIG_SIZE; uio.uio_iov = uio.uio_iovcnt = 1; + uio.uio_offset = 0; uio.uio_resid = UOS_RSA_SIG_SIZE; uio.uio_rw = UIO_READ; + UIO_SETUP_SYSSPACE(); /* XXX errno NetBSD->Linux */ ret = -ubc_uiomove(fw_obj->base.filp, , UOS_RSA_SIG_SIZE, UVM_ADV_NORMAL, UBC_READ);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:56:36 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_audio.c Log Message: Const cast for read from const void *. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.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/intel_audio.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.3 Mon Aug 27 07:19:23 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c Mon Aug 27 07:56:36 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_audio.c,v 1.3 2018/08/27 07:19:23 riastradh Exp $ */ +/* $NetBSD: intel_audio.c,v 1.4 2018/08/27 07:56:36 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -24,7 +24,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.3 2018/08/27 07:19:23 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.4 2018/08/27 07:56:36 riastradh Exp $"); #include #include @@ -243,7 +243,7 @@ static void g4x_audio_codec_enable(struc len = min(drm_eld_size(eld) / 4, len); DRM_DEBUG_DRIVER("ELD size %d\n", len); for (i = 0; i < len; i++) - I915_WRITE(G4X_HDMIW_HDMIEDID, *((uint32_t *)eld + i)); + I915_WRITE(G4X_HDMIW_HDMIEDID, *((const uint32_t *)eld + i)); tmp = I915_READ(G4X_AUD_CNTL_ST); tmp |= eldv; @@ -322,7 +322,7 @@ static void hsw_audio_codec_enable(struc /* Up to 84 bytes of hw ELD buffer */ len = min(drm_eld_size(eld), 84); for (i = 0; i < len / 4; i++) - I915_WRITE(HSW_AUD_EDID_DATA(pipe), *((uint32_t *)eld + i)); + I915_WRITE(HSW_AUD_EDID_DATA(pipe), *((const uint32_t *)eld + i)); /* ELD valid */ tmp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD); @@ -471,7 +471,7 @@ static void ilk_audio_codec_enable(struc /* Up to 84 bytes of hw ELD buffer */ len = min(drm_eld_size(eld), 84); for (i = 0; i < len / 4; i++) - I915_WRITE(hdmiw_hdmiedid, *((uint32_t *)eld + i)); + I915_WRITE(hdmiw_hdmiedid, *((const uint32_t *)eld + i)); /* ELD valid */ tmp = I915_READ(aud_cntrl_st2);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:55:39 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_fbdev.c Log Message: Ifdef out linux fb api stuff. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.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/intel_fbdev.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.8 Mon Aug 27 07:55:28 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c Mon Aug 27 07:55:39 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_fbdev.c,v 1.8 2018/08/27 07:55:28 riastradh Exp $ */ +/* $NetBSD: intel_fbdev.c,v 1.9 2018/08/27 07:55:39 riastradh Exp $ */ /* * Copyright © 2007 David Airlie @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.8 2018/08/27 07:55:28 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.9 2018/08/27 07:55:39 riastradh Exp $"); #include #include @@ -327,8 +327,10 @@ static int intelfb_create(struct drm_fb_ #endif return 0; +#ifndef __NetBSD__ out_destroy_fbi: drm_fb_helper_release_fbi(helper); +#endif out_unpin: i915_gem_object_ggtt_unpin(obj); drm_gem_object_unreference(>base);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:55:29 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_fbdev.c Log Message: Fix 64-bit printf. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.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/intel_fbdev.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.7 Mon Aug 27 06:16:37 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c Mon Aug 27 07:55:28 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_fbdev.c,v 1.7 2018/08/27 06:16:37 riastradh Exp $ */ +/* $NetBSD: intel_fbdev.c,v 1.8 2018/08/27 07:55:28 riastradh Exp $ */ /* * Copyright © 2007 David Airlie @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.7 2018/08/27 06:16:37 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.8 2018/08/27 07:55:28 riastradh Exp $"); #include #include @@ -317,7 +317,7 @@ static int intelfb_create(struct drm_fb_ /* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */ - DRM_DEBUG_KMS("allocated %dx%d fb: 0x%08llx, bo %p\n", + DRM_DEBUG_KMS("allocated %dx%d fb: 0x%08"PRIx64", bo %p\n", fb->width, fb->height, i915_gem_obj_ggtt_offset(obj), obj);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:51:16 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_drv.c Log Message: Disable legacy mmap in i915. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.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_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c:1.11 Mon Aug 27 07:04:44 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c Mon Aug 27 07:51:16 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_drv.c,v 1.11 2018/08/27 07:04:44 riastradh Exp $ */ +/* $NetBSD: i915_drv.c,v 1.12 2018/08/27 07:51:16 riastradh Exp $ */ /* i915_drv.c -- i830,i845,i855,i865,i915 driver -*- linux-c -*- */ @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_drv.c,v 1.11 2018/08/27 07:04:44 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_drv.c,v 1.12 2018/08/27 07:51:16 riastradh Exp $"); #include #include @@ -1769,7 +1769,7 @@ static struct drm_driver driver = { .gem_free_object = i915_gem_free_object, #ifdef __NetBSD__ /* XXX Not clear the `or legacy' part is important here. */ - .mmap_object = _gem_or_legacy_mmap_object, + .mmap_object = _gem_mmap_object, .gem_uvm_ops = _gem_uvm_ops, #else .gem_vm_ops = _gem_vm_ops,
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:44:43 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c Log Message: Just use uvm_map on the uvm object instead of futzing with pages. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.7 Mon Aug 27 07:17:35 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 07:44:43 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.8 2018/08/27 07:44:43 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.8 2018/08/27 07:44:43 riastradh Exp $"); #include "i915_drv.h" @@ -863,13 +863,22 @@ find_reg(const struct drm_i915_reg_descr static u32 *vmap_batch(struct drm_i915_gem_object *obj, unsigned start, unsigned len) { - int i; - void *addr = NULL; #ifdef __NetBSD__ - struct vm_page *page; + vaddr_t va = 0; + int error; + + /* XXX errno NetBSD->Linux */ + error = uvm_map(kernel_map, , len, obj->base.filp, start, + sizeof(u32), UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE, + UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT)); + if (error) + return NULL; + + return (void *)va; #else + int i; + void *addr = NULL; struct sg_page_iter sg_iter; -#endif int first_page = start >> PAGE_SHIFT; int last_page = (len + start + 4095) >> PAGE_SHIFT; int npages = last_page - first_page; @@ -882,26 +891,11 @@ static u32 *vmap_batch(struct drm_i915_g } i = 0; -#ifdef __NetBSD__ - /* - * XXX Why do we work through the page queue instead of just - * using uvm_map? - */ - TAILQ_FOREACH(page, >pageq, pageq.queue) { - if (first_page-- > 0) - continue; - if (i == npages) - break; - pages[i] = container_of(page, struct page, p_vmp); - i++; - } -#else for_each_sg_page(obj->pages->sgl, _iter, obj->pages->nents, first_page) { pages[i++] = sg_page_iter_page(_iter); if (i == npages) break; } -#endif addr = vmap(pages, i, 0, PAGE_KERNEL); if (addr == NULL) { @@ -913,6 +907,7 @@ finish: if (pages) drm_free_large(pages); return (u32*)addr; +#endif /* __NetBSD__ */ } /* Returns a vmap'd pointer to dest_obj, which the caller must unmap */ @@ -967,7 +962,7 @@ static u32 *copy_batch(struct drm_i915_g unmap_src: #ifdef __NetBSD__ - vunmap(src_base, batch_len / PAGE_SIZE); + uvm_unmap(kernel_map, (vaddr_t)src_base, batch_len); #else vunmap(src_base); #endif @@ -1223,7 +1218,7 @@ int i915_parse_cmds(struct intel_engine_ } #ifdef __NetBSD__ - vunmap(batch_base, batch_obj->base.size / PAGE_SIZE); + uvm_unmap(kernel_map, (vaddr_t)batch_base, batch_obj->base.size); #else vunmap(batch_base); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:29:37 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_pm.c Log Message: Mark unused. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.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/intel_pm.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.13 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.14 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.13 Mon Aug 27 07:27:51 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c Mon Aug 27 07:29:37 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_pm.c,v 1.13 2018/08/27 07:27:51 riastradh Exp $ */ +/* $NetBSD: intel_pm.c,v 1.14 2018/08/27 07:29:37 riastradh Exp $ */ /* * Copyright © 2012 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_pm.c,v 1.13 2018/08/27 07:27:51 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_pm.c,v 1.14 2018/08/27 07:29:37 riastradh Exp $"); #include #include @@ -489,14 +489,14 @@ static const struct intel_watermark_para .guard_size = 2, .cacheline_size = G4X_FIFO_LINE_SIZE, }; -static const struct intel_watermark_params valleyview_wm_info = { +static const struct intel_watermark_params valleyview_wm_info __unused = { .fifo_size = VALLEYVIEW_FIFO_SIZE, .max_wm = VALLEYVIEW_MAX_WM, .default_wm = VALLEYVIEW_MAX_WM, .guard_size = 2, .cacheline_size = G4X_FIFO_LINE_SIZE, }; -static const struct intel_watermark_params valleyview_cursor_wm_info = { +static const struct intel_watermark_params valleyview_cursor_wm_info __unused = { .fifo_size = I965_CURSOR_FIFO, .max_wm = VALLEYVIEW_CURSOR_MAX_WM, .default_wm = I965_CURSOR_DFT_WM,
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:30:37 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_runtime_pm.c Log Message: Fix mutex destroy pointer. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.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/intel_runtime_pm.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.4 Mon Aug 27 07:30:25 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c Mon Aug 27 07:30:37 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_runtime_pm.c,v 1.4 2018/08/27 07:30:25 riastradh Exp $ */ +/* $NetBSD: intel_runtime_pm.c,v 1.5 2018/08/27 07:30:37 riastradh Exp $ */ /* * Copyright © 2012-2014 Intel Corporation @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.4 2018/08/27 07:30:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.5 2018/08/27 07:30:37 riastradh Exp $"); #include #include @@ -1939,9 +1939,9 @@ void intel_power_domains_fini(struct drm intel_display_set_init_power(dev_priv, true); #ifdef __NetBSD__ - linux_mutex_destroy(_priv->power_domains->lock); + linux_mutex_destroy(_priv->power_domains.lock); #else - mutex_destroy(_priv->power_domains->lock); + mutex_destroy(_priv->power_domains.lock); #endif }
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:29:50 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_ringbuffer.c Log Message: Fix up some borken merges. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.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/intel_ringbuffer.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.7 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c Mon Aug 27 07:29:50 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_ringbuffer.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_ringbuffer.c,v 1.8 2018/08/27 07:29:50 riastradh Exp $ */ /* * Copyright © 2008-2010 Intel Corporation @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_ringbuffer.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_ringbuffer.c,v 1.8 2018/08/27 07:29:50 riastradh Exp $"); #include #include @@ -670,7 +670,12 @@ intel_fini_pipe_control(struct intel_eng return; if (INTEL_INFO(dev)->gen >= 5) { +#ifdef __NetBSD__ + kunmap(container_of(TAILQ_FIRST(>scratch.obj->pageq), + struct page, p_vmp)); +#else kunmap(sg_page(ring->scratch.obj->pages->sgl)); +#endif i915_gem_object_ggtt_unpin(ring->scratch.obj); } @@ -703,7 +708,7 @@ intel_init_pipe_control(struct intel_eng ring->scratch.gtt_offset = i915_gem_obj_ggtt_offset(ring->scratch.obj); #ifdef __NetBSD__ ring->scratch.cpu_page = - kmap(container_of(TAILQ_FIRST(>scratch.obj->igo_pageq), + kmap(container_of(TAILQ_FIRST(>scratch.obj->pageq), struct page, p_vmp)); #else ring->scratch.cpu_page = kmap(sg_page(ring->scratch.obj->pages->sgl)); @@ -1954,7 +1959,7 @@ static void cleanup_status_page(struct i return; #ifdef __NetBSD__ - kunmap(container_of(TAILQ_FIRST(>igo_pageq), struct page, p_vmp)); + kunmap(container_of(TAILQ_FIRST(>pageq), struct page, p_vmp)); #else kunmap(sg_page(obj->pages->sgl)); #endif @@ -2007,15 +2012,10 @@ err_unref: ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(obj); #ifdef __NetBSD__ ring->status_page.page_addr = - kmap(container_of(TAILQ_FIRST(>igo_pageq), struct page, - p_vmp)); + kmap(container_of(TAILQ_FIRST(>pageq), struct page, p_vmp)); #else ring->status_page.page_addr = kmap(sg_page(obj->pages->sgl)); #endif - if (ring->status_page.page_addr == NULL) { - ret = -ENOMEM; - goto err_unpin; - } memset(ring->status_page.page_addr, 0, PAGE_SIZE); DRM_DEBUG_DRIVER("%s hws offset: 0x%08x\n", @@ -2047,8 +2047,8 @@ void intel_unpin_ringbuffer_obj(struct i bus_space_unmap(ringbuf->bst, ringbuf->bsh, ringbuf->size); #else iounmap(ringbuf->virtual_start); -#endif ringbuf->virtual_start = NULL; +#endif i915_gem_object_ggtt_unpin(ringbuf->obj); } @@ -2072,7 +2072,7 @@ int intel_pin_and_map_ringbuffer_obj(str #ifdef __NetBSD__ /* XXX errno NetBSD->Linux */ ringbuf->bst = dev_priv->dev->pdev->pd_pa.pa_memt; - ret = -bus_space_map(ring->bst, (dev_priv->gtt.mappable_base + + ret = -bus_space_map(ringbuf->bst, (dev_priv->gtt.mappable_base + i915_gem_obj_ggtt_offset(obj)), ringbuf->size, BUS_SPACE_MAP_PREFETCHABLE, >bsh); if (ret) { @@ -2238,6 +2238,7 @@ void intel_cleanup_ring_buffer(struct in if (ring->cleanup) ring->cleanup(ring); + if (I915_NEED_GFX_HWS(ring->dev)) { cleanup_status_page(ring); } else { @@ -2292,8 +2293,8 @@ static void __wrap_ring_buffer(struct in int rem = ringbuf->size - ringbuf->tail; #ifdef __NetBSD__ - bus_space_set_region_4(ring->bst, ring->bsh, ring->tail, MI_NOOP, - rem/4); + bus_space_set_region_4(ringbuf->bst, ringbuf->bsh, ringbuf->tail, + MI_NOOP, rem/4); #else virt = ringbuf->virtual_start + ringbuf->tail; rem /= 4; @@ -2845,7 +2846,6 @@ int intel_init_render_ring_buffer(struct ret = intel_init_pipe_control(ring); if (ret) return ret; - } } return 0;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:30:13 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_runtime_pm.c Log Message: enum pipe -> enum i915_pipe To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.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/intel_runtime_pm.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c Mon Aug 27 07:30:13 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_runtime_pm.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_runtime_pm.c,v 1.3 2018/08/27 07:30:13 riastradh Exp $ */ /* * Copyright © 2012-2014 Intel Corporation @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.3 2018/08/27 07:30:13 riastradh Exp $"); #include #include @@ -868,7 +868,7 @@ static bool vlv_power_well_enabled(struc static void vlv_display_power_well_init(struct drm_i915_private *dev_priv) { - enum pipe pipe; + enum i915_pipe pipe; /* * Enable the CRI clock source so we can get at the @@ -960,7 +960,7 @@ static void vlv_dpio_cmn_power_well_enab static void vlv_dpio_cmn_power_well_disable(struct drm_i915_private *dev_priv, struct i915_power_well *power_well) { - enum pipe pipe; + enum i915_pipe pipe; WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DPIO_CMN_BC); @@ -1101,7 +1101,7 @@ static void chv_dpio_cmn_power_well_enab struct i915_power_well *power_well) { enum dpio_phy phy; - enum pipe pipe; + enum i915_pipe pipe; uint32_t tmp; WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DPIO_CMN_BC && @@ -1191,7 +1191,7 @@ static void chv_dpio_cmn_power_well_disa static void assert_chv_phy_powergate(struct drm_i915_private *dev_priv, enum dpio_phy phy, enum dpio_channel ch, bool override, unsigned int mask) { - enum pipe pipe = phy == DPIO_PHY0 ? PIPE_A : PIPE_C; + enum i915_pipe pipe = phy == DPIO_PHY0 ? PIPE_A : PIPE_C; u32 reg, val, expected, actual; /* @@ -1314,7 +1314,7 @@ void chv_phy_powergate_lanes(struct inte static bool chv_pipe_power_well_enabled(struct drm_i915_private *dev_priv, struct i915_power_well *power_well) { - enum pipe pipe = power_well->data; + enum i915_pipe pipe = power_well->data; bool enabled; u32 state, ctrl; @@ -1344,7 +1344,7 @@ static void chv_set_pipe_power_well(stru struct i915_power_well *power_well, bool enable) { - enum pipe pipe = power_well->data; + enum i915_pipe pipe = power_well->data; u32 state; u32 ctrl;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:30:25 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_runtime_pm.c Log Message: Implement vga twiddling. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.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/intel_runtime_pm.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.3 Mon Aug 27 07:30:13 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c Mon Aug 27 07:30:25 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_runtime_pm.c,v 1.3 2018/08/27 07:30:13 riastradh Exp $ */ +/* $NetBSD: intel_runtime_pm.c,v 1.4 2018/08/27 07:30:25 riastradh Exp $ */ /* * Copyright © 2012-2014 Intel Corporation @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.3 2018/08/27 07:30:13 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.4 2018/08/27 07:30:25 riastradh Exp $"); #include #include @@ -197,6 +197,33 @@ void intel_display_set_init_power(struct dev_priv->power_domains.init_power_on = enable; } +static inline void +touch_vga_msr(struct drm_device *dev) +{ +#ifdef __NetBSD__ + const bus_addr_t vgabase = 0x3c0; + const bus_space_tag_t iot = dev->pdev->pd_pa.pa_iot; + bus_space_handle_t ioh; + uint8_t msr; + int error; + + error = bus_space_map(iot, vgabase, 0x10, 0, ); + if (error) { + device_printf(dev->pdev->pd_dev, + "unable to map VGA registers: %d\n", error); + } else { + CTASSERT(vgabase <= VGA_MSR_READ); + msr = bus_space_read_1(iot, ioh, VGA_MSR_READ - vgabase); + bus_space_write_1(iot, ioh, VGA_MSR_READ - vgabase, msr); + bus_space_unmap(iot, ioh, 0x10); + } +#else + vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO); + outb(inb(VGA_MSR_READ), VGA_MSR_WRITE); + vga_put(dev->pdev, VGA_RSRC_LEGACY_IO); +#endif +} + /* * Starting with Haswell, we have a "Power Down Well" that can be turned off * when not needed anymore. We have 4 registers that can request the power well @@ -217,9 +244,7 @@ static void hsw_power_well_post_enable(s * sure vgacon can keep working normally without triggering interrupts * and error messages. */ - vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO); - outb(inb(VGA_MSR_READ), VGA_MSR_WRITE); - vga_put(dev->pdev, VGA_RSRC_LEGACY_IO); + touch_vga_msr(dev); if (IS_BROADWELL(dev)) gen8_irq_power_well_post_enable(dev_priv, @@ -242,9 +267,7 @@ static void skl_power_well_post_enable(s * and error messages. */ if (power_well->data == SKL_DISP_PW_2) { - vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO); - outb(inb(VGA_MSR_READ), VGA_MSR_WRITE); - vga_put(dev->pdev, VGA_RSRC_LEGACY_IO); + touch_vga_msr(dev); gen8_irq_power_well_post_enable(dev_priv, 1 << PIPE_C | 1 << PIPE_B);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:28:57 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_psr.c Log Message: Do not meddle in the affairs of strict aliasing, for it is quick to anger and you are tasty with a bit of mustard on your undefined behaviour. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.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/intel_psr.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.4 Mon Aug 27 07:28:41 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c Mon Aug 27 07:28:57 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_psr.c,v 1.4 2018/08/27 07:28:41 riastradh Exp $ */ +/* $NetBSD: intel_psr.c,v 1.5 2018/08/27 07:28:57 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -54,7 +54,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.4 2018/08/27 07:28:41 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.5 2018/08/27 07:28:57 riastradh Exp $"); #include @@ -86,7 +86,8 @@ static void intel_psr_write_vsc(struct i struct intel_crtc *crtc = to_intel_crtc(dig_port->base.base.crtc); enum transcoder cpu_transcoder = crtc->config->cpu_transcoder; u32 ctl_reg = HSW_TVIDEO_DIP_CTL(cpu_transcoder); - uint32_t *data = (uint32_t *) vsc_psr; + uint32_t data; + const char *ptr = (const char *)vsc_psr; unsigned int i; /* As per BSPec (Pipe Video Data Island Packet), we need to disable @@ -96,9 +97,9 @@ static void intel_psr_write_vsc(struct i POSTING_READ(ctl_reg); for (i = 0; i < sizeof(*vsc_psr); i += 4) { - I915_WRITE(HSW_TVIDEO_DIP_VSC_DATA(cpu_transcoder, - i >> 2), *data); - data++; + memcpy(, [i], 4); + I915_WRITE(HSW_TVIDEO_DIP_VSC_DATA(cpu_transcoder, i >> 2), + data); } for (; i < VIDEO_DIP_VSC_DATA_SIZE; i += 4) I915_WRITE(HSW_TVIDEO_DIP_VSC_DATA(cpu_transcoder,
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:29:20 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_uncore.c Log Message: Fix multiple typos in merge attepmt. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.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/intel_uncore.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.7 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c Mon Aug 27 07:29:20 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_uncore.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_uncore.c,v 1.8 2018/08/27 07:29:20 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -24,7 +24,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_uncore.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_uncore.c,v 1.8 2018/08/27 07:29:20 riastradh Exp $"); #include "i915_drv.h" #include "intel_drv.h" @@ -1299,9 +1299,9 @@ void intel_uncore_destroy(struct drm_dev struct drm_i915_private *const dev_priv = dev->dev_private; unsigned i; - for (i = 0; i < FW_DOMAIN_ID_COUNT) { + for (i = 0; i < FW_DOMAIN_ID_COUNT; i++) { if (dev_priv->uncore.fw_domains & (1u << i)) - teardown_timer(_priv->uncore.fw_domwin[i].timer); + teardown_timer(_priv->uncore.fw_domain[i].timer); } #endif }
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:28:41 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_display.c intel_psr.c Log Message: Init and destroy dev_priv->psr.lock. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.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/intel_display.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.20 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.21 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.20 Mon Aug 27 07:21:16 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c Mon Aug 27 07:28:41 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display.c,v 1.20 2018/08/27 07:21:16 riastradh Exp $ */ +/* $NetBSD: intel_display.c,v 1.21 2018/08/27 07:28:41 riastradh Exp $ */ /* * Copyright © 2006-2007 Intel Corporation @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.20 2018/08/27 07:21:16 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.21 2018/08/27 07:28:41 riastradh Exp $"); #include #include @@ -15709,9 +15709,11 @@ void intel_modeset_cleanup(struct drm_de intel_teardown_gmbus(dev); #ifdef __NetBSD__ + linux_mutex_destroy(_priv->psr.lock); linux_mutex_destroy(_priv->pps_mutex); linux_mutex_destroy(_priv->fbc.lock); #else + mutex_destroy(_priv->psr.lock); mutex_destroy(_priv->pps_mutex); mutex_destroy(_priv->fbc.lock); #endif Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.3 Mon Aug 27 07:28:04 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c Mon Aug 27 07:28:41 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_psr.c,v 1.3 2018/08/27 07:28:04 riastradh Exp $ */ +/* $NetBSD: intel_psr.c,v 1.4 2018/08/27 07:28:41 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -54,7 +54,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.3 2018/08/27 07:28:04 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.4 2018/08/27 07:28:41 riastradh Exp $"); #include @@ -757,5 +757,9 @@ void intel_psr_init(struct drm_device *d struct drm_i915_private *dev_priv = dev->dev_private; INIT_DELAYED_WORK(_priv->psr.work, intel_psr_work); +#ifdef __NetBSD__ + linux_mutex_init(_priv->psr.lock); +#else mutex_init(_priv->psr.lock); +#endif }
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:28:04 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_psr.c intel_sprite.c Log Message: enum pipe -> enum i915_pipe To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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/intel_psr.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c Mon Aug 27 07:28:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_psr.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_psr.c,v 1.3 2018/08/27 07:28:04 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -54,7 +54,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.3 2018/08/27 07:28:04 riastradh Exp $"); #include @@ -114,7 +114,7 @@ static void vlv_psr_setup_vsc(struct int struct drm_device *dev = intel_dig_port->base.base.dev; struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *crtc = intel_dig_port->base.base.crtc; - enum pipe pipe = to_intel_crtc(crtc)->pipe; + enum i915_pipe pipe = to_intel_crtc(crtc)->pipe; uint32_t val; /* VLV auto-generate VSC package as per EDP 1.3 spec, Table 3.10 */ @@ -226,7 +226,7 @@ static void vlv_psr_enable_source(struct struct drm_device *dev = dig_port->base.base.dev; struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *crtc = dig_port->base.base.crtc; - enum pipe pipe = to_intel_crtc(crtc)->pipe; + enum i915_pipe pipe = to_intel_crtc(crtc)->pipe; /* Transition from PSR_state 0 to PSR_state 1, i.e. PSR Inactive */ I915_WRITE(VLV_PSRCTL(pipe), @@ -241,7 +241,7 @@ static void vlv_psr_activate(struct inte struct drm_device *dev = dig_port->base.base.dev; struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *crtc = dig_port->base.base.crtc; - enum pipe pipe = to_intel_crtc(crtc)->pipe; + enum i915_pipe pipe = to_intel_crtc(crtc)->pipe; /* Let's do the transition from PSR_state 1 to PSR_state 2 * that is PSR transition to active - static frame transmission. @@ -520,7 +520,7 @@ static void intel_psr_work(struct work_s container_of(work, typeof(*dev_priv), psr.work.work); struct intel_dp *intel_dp = dev_priv->psr.enabled; struct drm_crtc *crtc = dp_to_dig_port(intel_dp)->base.base.crtc; - enum pipe pipe = to_intel_crtc(crtc)->pipe; + enum i915_pipe pipe = to_intel_crtc(crtc)->pipe; /* We have to make sure PSR is ready for re-enable * otherwise it keeps disabled until next full enable/disable cycle. @@ -564,7 +564,7 @@ static void intel_psr_exit(struct drm_de struct drm_i915_private *dev_priv = dev->dev_private; struct intel_dp *intel_dp = dev_priv->psr.enabled; struct drm_crtc *crtc = dp_to_dig_port(intel_dp)->base.base.crtc; - enum pipe pipe = to_intel_crtc(crtc)->pipe; + enum i915_pipe pipe = to_intel_crtc(crtc)->pipe; u32 val; if (!dev_priv->psr.active) @@ -618,7 +618,7 @@ void intel_psr_single_frame_update(struc { struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *crtc; - enum pipe pipe; + enum i915_pipe pipe; u32 val; /* @@ -666,7 +666,7 @@ void intel_psr_invalidate(struct drm_dev { struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *crtc; - enum pipe pipe; + enum i915_pipe pipe; mutex_lock(_priv->psr.lock); if (!dev_priv->psr.enabled) { @@ -704,7 +704,7 @@ void intel_psr_flush(struct drm_device * { struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *crtc; - enum pipe pipe; + enum i915_pipe pipe; int delay_ms = HAS_DDI(dev) ? 100 : 500; mutex_lock(_priv->psr.lock); Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.4 Mon Aug 27 06:16:50 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c Mon Aug 27 07:28:04 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sprite.c,v 1.4 2018/08/27 06:16:50 riastradh Exp $ */ +/* $NetBSD: intel_sprite.c,v 1.5 2018/08/27 07:28:04 riastradh Exp $ */ /* * Copyright © 2011 Intel Corporation @@ -32,7 +32,7 @@ * support. */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.4 2018/08/27 06:16:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.5 2018/08/27 07:28:04 riastradh Exp $"); #include #include @@ -87,7
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:28:15 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_sprite.c Log Message: Fix pipe update waits. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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/intel_sprite.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.5 Mon Aug 27 07:28:04 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c Mon Aug 27 07:28:15 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sprite.c,v 1.5 2018/08/27 07:28:04 riastradh Exp $ */ +/* $NetBSD: intel_sprite.c,v 1.6 2018/08/27 07:28:15 riastradh Exp $ */ /* * Copyright © 2011 Intel Corporation @@ -32,7 +32,7 @@ * support. */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.5 2018/08/27 07:28:04 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.6 2018/08/27 07:28:15 riastradh Exp $"); #include #include @@ -92,6 +92,7 @@ void intel_pipe_update_start(struct inte int scanline, min, max, vblank_start; #ifdef __NetBSD__ drm_waitqueue_t *wq = drm_crtc_vblank_waitqueue(>base); + int ret; #else wait_queue_head_t *wq = drm_crtc_vblank_waitqueue(>base); DEFINE_WAIT(wait); @@ -105,7 +106,11 @@ void intel_pipe_update_start(struct inte min = vblank_start - usecs_to_scanlines(adjusted_mode, 100); max = vblank_start - 1; +#ifdef __NetBSD__ + spin_lock(>vbl_lock); +#else local_irq_disable(); +#endif if (min <= 0 || max <= 0) return; @@ -118,7 +123,12 @@ void intel_pipe_update_start(struct inte trace_i915_pipe_update_start(crtc); #ifdef __NetBSD__ - panic("XXX"); + DRM_SPIN_TIMED_WAIT_UNTIL(ret, wq, >vbl_lock, timeout, + (scanline = intel_get_crtc_scanline(crtc), + scanline < min || scanline > max)); + if (ret) + DRM_ERROR("Potential atomic update failure on pipe %c\n", + pipe_name(crtc->pipe)); #else for (;;) { /* @@ -177,7 +187,11 @@ void intel_pipe_update_end(struct intel_ trace_i915_pipe_update_end(crtc, end_vbl_count, scanline_end); +#ifdef __NetBSD__ + spin_unlock(>vbl_lock); +#else local_irq_enable(); +#endif if (crtc->debug.start_vbl_count && crtc->debug.start_vbl_count != end_vbl_count) {
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:28:26 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_sprite.c Log Message: Fix 64-bit printf. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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/intel_sprite.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.6 Mon Aug 27 07:28:15 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c Mon Aug 27 07:28:26 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sprite.c,v 1.6 2018/08/27 07:28:15 riastradh Exp $ */ +/* $NetBSD: intel_sprite.c,v 1.7 2018/08/27 07:28:26 riastradh Exp $ */ /* * Copyright © 2011 Intel Corporation @@ -32,7 +32,7 @@ * support. */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.6 2018/08/27 07:28:15 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.7 2018/08/27 07:28:26 riastradh Exp $"); #include #include @@ -195,7 +195,7 @@ void intel_pipe_update_end(struct intel_ if (crtc->debug.start_vbl_count && crtc->debug.start_vbl_count != end_vbl_count) { - DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n", + DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %"PRIdMAX" us, min %d, max %d, scanline start %d, end %d\n", pipe_name(pipe), crtc->debug.start_vbl_count, end_vbl_count, ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:26:43 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_drv.h Log Message: Add __UNCONST. Used only for fetches, sometimes const. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h 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_drv.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.20 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.21 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.20 Mon Aug 27 07:26:30 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h Mon Aug 27 07:26:43 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_drv.h,v 1.20 2018/08/27 07:26:30 riastradh Exp $ */ +/* $NetBSD: i915_drv.h,v 1.21 2018/08/27 07:26:43 riastradh Exp $ */ /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- */ @@ -2504,9 +2504,9 @@ struct drm_i915_cmd_table { #define __I915__(p) ({ \ struct drm_i915_private *__p; \ if (__builtin_types_compatible_p(typeof(*p), struct drm_i915_private)) \ - __p = (struct drm_i915_private *)p; \ + __p = (struct drm_i915_private *)__UNCONST(p); \ else if (__builtin_types_compatible_p(typeof(*p), struct drm_device)) \ - __p = to_i915((struct drm_device *)p); \ + __p = to_i915((struct drm_device *)__UNCONST(p)); \ else \ BUILD_BUG(); \ __p; \
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:26:08 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_ddi.c Log Message: Need for div_u64, div64_u64. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.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/intel_ddi.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.6 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c Mon Aug 27 07:26:08 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_ddi.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_ddi.c,v 1.7 2018/08/27 07:26:08 riastradh Exp $ */ /* * Copyright © 2012 Intel Corporation @@ -28,7 +28,9 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_ddi.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_ddi.c,v 1.7 2018/08/27 07:26:08 riastradh Exp $"); + +#include #include "i915_drv.h" #include "intel_drv.h"
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:27:00 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_overlay.c intel_panel.c intel_pm.c Log Message: enum pipe -> enum i915_pipe To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.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/intel_overlay.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c:1.7 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c Mon Aug 27 07:26:59 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_overlay.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_overlay.c,v 1.8 2018/08/27 07:26:59 riastradh Exp $ */ /* * Copyright © 2009 @@ -28,7 +28,7 @@ * Derived from Xorg ddx, xf86-video-intel, src/i830_video.c */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_overlay.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_overlay.c,v 1.8 2018/08/27 07:26:59 riastradh Exp $"); #include #include @@ -767,7 +767,7 @@ static int intel_overlay_do_put_image(st bool scale_changed = false; struct drm_device *dev __diagused = overlay->dev; u32 swidth, swidthsw, sheight, ostride; - enum pipe pipe = overlay->crtc->pipe; + enum i915_pipe pipe = overlay->crtc->pipe; WARN_ON(!mutex_is_locked(>struct_mutex)); WARN_ON(!drm_modeset_is_locked(>mode_config.connection_mutex)); Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.8 Mon Aug 27 06:16:50 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c Mon Aug 27 07:26:59 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_panel.c,v 1.8 2018/08/27 06:16:50 riastradh Exp $ */ +/* $NetBSD: intel_panel.c,v 1.9 2018/08/27 07:26:59 riastradh Exp $ */ /* * Copyright © 2006-2010 Intel Corporation @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.8 2018/08/27 06:16:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.9 2018/08/27 07:26:59 riastradh Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -1061,7 +1061,7 @@ static void bxt_enable_backlight(struct struct drm_device *dev = connector->base.dev; struct drm_i915_private *dev_priv = dev->dev_private; struct intel_panel *panel = >panel; - enum pipe pipe = intel_get_pipe_from_connector(connector); + enum i915_pipe pipe = intel_get_pipe_from_connector(connector); u32 pwm_ctl, val; /* To use 2nd set of backlight registers, utility pin has to be @@ -1453,7 +1453,7 @@ static u32 get_backlight_min_vbt(struct return scale(min, 0, 255, 0, panel->backlight.max); } -static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unused) +static int lpt_setup_backlight(struct intel_connector *connector, enum i915_pipe unused) { struct drm_device *dev = connector->base.dev; struct drm_i915_private *dev_priv = dev->dev_private; @@ -1483,7 +1483,7 @@ static int lpt_setup_backlight(struct in return 0; } -static int pch_setup_backlight(struct intel_connector *connector, enum pipe unused) +static int pch_setup_backlight(struct intel_connector *connector, enum i915_pipe unused) { struct drm_device *dev = connector->base.dev; struct drm_i915_private *dev_priv = dev->dev_private; @@ -1514,7 +1514,7 @@ static int pch_setup_backlight(struct in return 0; } -static int i9xx_setup_backlight(struct intel_connector *connector, enum pipe unused) +static int i9xx_setup_backlight(struct intel_connector *connector, enum i915_pipe unused) { struct drm_device *dev = connector->base.dev; struct drm_i915_private *dev_priv = dev->dev_private; @@ -1552,7 +1552,7 @@ static int i9xx_setup_backlight(struct i return 0; } -static int i965_setup_backlight(struct intel_connector *connector, enum pipe unused) +static int i965_setup_backlight(struct intel_connector *connector, enum i915_pipe unused) { struct drm_device *dev = connector->base.dev; struct drm_i915_private *dev_priv = dev->dev_private; @@ -1586,7 +1586,7 @@ static int i965_setup_backlight(struct i return 0; } -static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe) +static int vlv_setup_backlight(struct intel_connector *connector, enum i915_pipe pipe) { struct drm_device *dev = connector->base.dev; struct drm_i915_private *dev_priv =
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:27:17 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_panel.c Log Message: Ifdef out muppets. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.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/intel_panel.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.9 Mon Aug 27 07:26:59 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c Mon Aug 27 07:27:16 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_panel.c,v 1.9 2018/08/27 07:26:59 riastradh Exp $ */ +/* $NetBSD: intel_panel.c,v 1.10 2018/08/27 07:27:16 riastradh Exp $ */ /* * Copyright © 2006-2010 Intel Corporation @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.9 2018/08/27 07:26:59 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.10 2018/08/27 07:27:16 riastradh Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -550,6 +550,7 @@ static u32 bxt_get_backlight(struct inte return I915_READ(BXT_BLC_PWM_DUTY(panel->backlight.controller)); } +#ifndef __NetBSD__ /* XXX mipi */ static u32 pwm_get_backlight(struct intel_connector *connector) { struct intel_panel *panel = >panel; @@ -558,6 +559,7 @@ static u32 pwm_get_backlight(struct inte duty_ns = pwm_get_duty_cycle(panel->backlight.pwm); return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS); } +#endif #if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE) static u32 intel_panel_get_backlight(struct intel_connector *connector) @@ -650,6 +652,7 @@ static void bxt_set_backlight(struct int I915_WRITE(BXT_BLC_PWM_DUTY(panel->backlight.controller), level); } +#ifndef __NetBSD__ /* XXX mipi */ static void pwm_set_backlight(struct intel_connector *connector, u32 level) { struct intel_panel *panel = >panel; @@ -657,6 +660,7 @@ static void pwm_set_backlight(struct int pwm_config(panel->backlight.pwm, duty_ns, CRC_PMIC_PWM_PERIOD_NS); } +#endif static void intel_panel_actually_set_backlight(struct intel_connector *connector, u32 level) @@ -669,6 +673,7 @@ intel_panel_actually_set_backlight(struc panel->backlight.set(connector, level); } +#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE) /* set backlight brightness to level in range [0..max], scaling wrt hw min */ static void intel_panel_set_backlight(struct intel_connector *connector, u32 user_level, u32 user_max) @@ -693,6 +698,7 @@ static void intel_panel_set_backlight(st mutex_unlock(_priv->backlight_lock); } +#endif /* set backlight brightness to level in range [0..max], assuming hw min is * respected. @@ -830,6 +836,7 @@ static void bxt_disable_backlight(struct } } +#ifndef __NetBSD__ /* XXX mipi */ static void pwm_disable_backlight(struct intel_connector *connector) { struct intel_panel *panel = >panel; @@ -839,6 +846,7 @@ static void pwm_disable_backlight(struct usleep_range(2000, 3000); pwm_disable(panel->backlight.pwm); } +#endif void intel_panel_disable_backlight(struct intel_connector *connector) { @@ -1106,6 +1114,7 @@ static void bxt_enable_backlight(struct pwm_ctl | BXT_BLC_PWM_ENABLE); } +#ifndef __NetBSD__ /* XXX mipi */ static void pwm_enable_backlight(struct intel_connector *connector) { struct intel_panel *panel = >panel; @@ -1113,6 +1122,7 @@ static void pwm_enable_backlight(struct pwm_enable(panel->backlight.pwm); intel_panel_actually_set_backlight(connector, panel->backlight.level); } +#endif void intel_panel_enable_backlight(struct intel_connector *connector) { @@ -1665,6 +1675,7 @@ bxt_setup_backlight(struct intel_connect return 0; } +#ifndef __NetBSD__ /* XXX mipi */ static int pwm_setup_backlight(struct intel_connector *connector, enum i915_pipe pipe) { @@ -1747,9 +1758,11 @@ void intel_panel_destroy_backlight(struc struct intel_connector *intel_connector = to_intel_connector(connector); struct intel_panel *panel = _connector->panel; +#ifndef __NetBSD__ /* XXX mipi */ /* dispose of the pwm */ if (panel->backlight.pwm) pwm_put(panel->backlight.pwm); +#endif panel->backlight.present = false; } @@ -1788,11 +1801,15 @@ intel_panel_init_backlight_funcs(struct panel->backlight.hz_to_pwm = pch_hz_to_pwm; } else if (IS_VALLEYVIEW(dev)) { if (dev_priv->vbt.has_mipi) { +#ifdef __NetBSD__ + panic("no muppets supported, sorry"); +#else panel->backlight.setup = pwm_setup_backlight; panel->backlight.enable = pwm_enable_backlight; panel->backlight.disable = pwm_disable_backlight; panel->backlight.set = pwm_set_backlight; panel->backlight.get = pwm_get_backlight; +#endif } else {
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:26:30 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_drv.h intel_opregion.c Log Message: Use a prefetchable linear bus space mapping. No __iomem. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h cvs rdiff -u -r1.12 -r1.13 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.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_drv.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.19 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.20 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.19 Mon Aug 27 07:19:01 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h Mon Aug 27 07:26:30 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_drv.h,v 1.19 2018/08/27 07:19:01 riastradh Exp $ */ +/* $NetBSD: i915_drv.h,v 1.20 2018/08/27 07:26:30 riastradh Exp $ */ /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- */ @@ -475,6 +475,10 @@ struct opregion_asle; #endif struct intel_opregion { +#ifdef __NetBSD__ + bus_space_tag_t bst; + bus_space_handle_t bsh; +#endif struct opregion_header *header; struct opregion_acpi *acpi; struct opregion_swsci *swsci; Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.12 src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.13 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.12 Mon Aug 27 06:34:44 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c Mon Aug 27 07:26:30 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_opregion.c,v 1.12 2018/08/27 06:34:44 riastradh Exp $ */ +/* $NetBSD: intel_opregion.c,v 1.13 2018/08/27 07:26:30 riastradh Exp $ */ /* * Copyright 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.12 2018/08/27 06:34:44 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.13 2018/08/27 07:26:30 riastradh Exp $"); #include #include @@ -600,7 +600,7 @@ static void intel_opregion_video_event(ACPI_HANDLE hdl, uint32_t notify, void *opaque) { device_t self = opaque; - struct opregion_acpi __iomem *acpi; + struct opregion_acpi *acpi; DRM_DEBUG_DRIVER("notify=0x%08x\n", notify); @@ -647,9 +647,11 @@ static int intel_opregion_video_event(st } #endif +#ifndef __NetBSD__ static struct notifier_block intel_opregion_notifier = { .notifier_call = intel_opregion_video_event, }; +#endif /* * Initialise the DIDL field in opregion. This passes a list of devices to @@ -895,7 +897,11 @@ void intel_opregion_fini(struct drm_devi } /* just clear all opregion memory pointers now */ +#ifdef __NetBSD__ + bus_space_unmap(opregion->bst, opregion->bsh, OPREGION_SIZE); +#else memunmap(opregion->header); +#endif opregion->header = NULL; opregion->acpi = NULL; opregion->swsci = NULL; @@ -989,7 +995,14 @@ int intel_opregion_setup(struct drm_devi INIT_WORK(>asle_work, asle_work); #endif #ifdef __NetBSD__ - base = acpi_os_ioremap(asls, OPREGION_SIZE); + opregion->bst = dev->pdev->pd_pa.pa_memt; + err = -bus_space_map(opregion->bst, asls, OPREGION_SIZE, + BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_PREFETCHABLE, >bsh); + if (err) { + DRM_DEBUG_DRIVER("Failed to map opregion: %d", err); + return err; + } + base = bus_space_vaddr(opregion->bst, opregion->bsh); #else base = memremap(asls, OPREGION_SIZE, MEMREMAP_WB); #endif @@ -1029,7 +1042,11 @@ int intel_opregion_setup(struct drm_devi return 0; err_out: +#ifdef __NetBSD__ + bus_space_unmap(opregion->bst, opregion->bsh, OPREGION_SIZE); +#else memunmap(base); +#endif return err; }
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:25:31 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_dp.c Log Message: Mark some variables __unused or __lockep_used. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.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/intel_dp.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.14 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.15 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.14 Mon Aug 27 07:25:18 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c Mon Aug 27 07:25:30 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_dp.c,v 1.14 2018/08/27 07:25:18 riastradh Exp $ */ +/* $NetBSD: intel_dp.c,v 1.15 2018/08/27 07:25:30 riastradh Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.14 2018/08/27 07:25:18 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.15 2018/08/27 07:25:30 riastradh Exp $"); #include #include @@ -382,7 +382,7 @@ vlv_power_sequencer_pipe(struct intel_dp { struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); struct drm_device *dev = intel_dig_port->base.base.dev; - struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_private *dev_priv __lockdep_used = dev->dev_private; struct intel_encoder *encoder; unsigned int pipes = (1 << PIPE_A) | (1 << PIPE_B); enum i915_pipe pipe; @@ -1951,7 +1951,7 @@ static void edp_panel_vdd_schedule_off(s */ static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync) { - struct drm_i915_private *dev_priv = + struct drm_i915_private *dev_priv __lockdep_used = intel_dp_to_dev(intel_dp)->dev_private; lockdep_assert_held(_priv->pps_mutex); @@ -2714,7 +2714,7 @@ static void vlv_detach_power_sequencer(s static void vlv_steal_power_sequencer(struct drm_device *dev, enum i915_pipe pipe) { - struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_private *dev_priv __lockdep_used = dev->dev_private; struct intel_encoder *encoder; lockdep_assert_held(_priv->pps_mutex); @@ -2753,7 +2753,7 @@ static void vlv_init_panel_power_sequenc struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); struct intel_encoder *encoder = _dig_port->base; struct drm_device *dev = encoder->base.dev; - struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_private *dev_priv __lockdep_used = dev->dev_private; struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); lockdep_assert_held(_priv->pps_mutex); @@ -5538,8 +5538,8 @@ static void intel_dp_set_drrs_state(stru struct intel_encoder *encoder; struct intel_digital_port *dig_port = NULL; struct intel_dp *intel_dp = dev_priv->drrs.dp; - struct intel_crtc_state *config = NULL; - struct intel_crtc *intel_crtc = NULL; + struct intel_crtc_state *config __unused = NULL; + struct intel_crtc *intel_crtc __unused = NULL; enum drrs_refresh_rate_type index = DRRS_HIGH_RR; if (refresh_rate <= 0) {
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:25:43 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_dp.c Log Message: Move dev_priv->drrs.mutex initialization and add destruction. This way it is easy to make sure the initialization is matched by destruction even if we don't always need to create this mutex. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.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/intel_dp.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.15 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.16 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.15 Mon Aug 27 07:25:30 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c Mon Aug 27 07:25:43 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_dp.c,v 1.15 2018/08/27 07:25:30 riastradh Exp $ */ +/* $NetBSD: intel_dp.c,v 1.16 2018/08/27 07:25:43 riastradh Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.15 2018/08/27 07:25:30 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.16 2018/08/27 07:25:43 riastradh Exp $"); #include #include @@ -5018,6 +5018,8 @@ static void intel_dp_connector_destroy(struct drm_connector *connector) { struct intel_connector *intel_connector = to_intel_connector(connector); + struct drm_device *dev = intel_connector->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; kfree(intel_connector->detect_edid); @@ -5030,6 +5032,11 @@ intel_dp_connector_destroy(struct drm_co intel_panel_fini(_connector->panel); drm_connector_cleanup(connector); +#ifdef __NetBSD__ + linux_mutex_destroy(_priv->drrs.mutex); +#else + mutex_destroy(_priv->drrs.mutex); +#endif kfree(connector); } @@ -5875,7 +5882,6 @@ intel_dp_drrs_init(struct intel_connecto struct drm_display_mode *downclock_mode = NULL; INIT_DELAYED_WORK(_priv->drrs.work, intel_edp_drrs_downclock_work); - mutex_init(_priv->drrs.mutex); if (INTEL_INFO(dev)->gen <= 6) { DRM_DEBUG_KMS("DRRS supported for Gen7 and above\n"); @@ -6023,6 +6029,12 @@ intel_dp_init_connector(struct intel_dig intel_dp->pps_pipe = INVALID_PIPE; +#ifdef __NetBSD__ + linux_mutex_init(_priv->drrs.mutex); +#else + mutex_init(_priv->drrs.mutex); +#endif + /* intel_dp vfuncs */ if (INTEL_INFO(dev)->gen >= 9) intel_dp->get_aux_clock_divider = skl_get_aux_clock_divider;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:25:06 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_csr.c Log Message: Need for THIS_MODULE. Use a working struct device pointer. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.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/intel_csr.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c Mon Aug 27 07:25:06 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_csr.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_csr.c,v 1.3 2018/08/27 07:25:06 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -24,9 +24,10 @@ * */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_csr.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_csr.c,v 1.3 2018/08/27 07:25:06 riastradh Exp $"); #include +#include #include "i915_drv.h" #include "i915_reg.h" @@ -454,7 +455,7 @@ void intel_csr_ucode_init(struct drm_dev /* CSR supported for platform, load firmware */ ret = request_firmware_nowait(THIS_MODULE, true, csr->fw_path, -_priv->dev->pdev->dev, +dev_priv->dev->dev, GFP_KERNEL, dev_priv, finish_csr_load); if (ret) {
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:25:18 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_dp.c Log Message: Need for le16_to_cpu. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.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/intel_dp.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.13 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.14 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.13 Mon Aug 27 07:21:48 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c Mon Aug 27 07:25:18 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_dp.c,v 1.13 2018/08/27 07:21:48 riastradh Exp $ */ +/* $NetBSD: intel_dp.c,v 1.14 2018/08/27 07:25:18 riastradh Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.13 2018/08/27 07:21:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.14 2018/08/27 07:25:18 riastradh Exp $"); #include #include @@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v #include #include #include +#include #include #include #include
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:24:25 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c Log Message: We don't deal in waitqueues. We only deal in DRM_WAITQUEUEs. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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/intel_lrc.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.5 Mon Aug 27 07:24:12 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c Mon Aug 27 07:24:25 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lrc.c,v 1.5 2018/08/27 07:24:12 riastradh Exp $ */ +/* $NetBSD: intel_lrc.c,v 1.6 2018/08/27 07:24:25 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -135,7 +135,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.5 2018/08/27 07:24:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.6 2018/08/27 07:24:25 riastradh Exp $"); #include #include @@ -1928,6 +1928,10 @@ void intel_logical_ring_cleanup(struct i } lrc_destroy_wa_ctx_obj(ring); + +#ifdef __NetBSD__ + DRM_DESTROY_WAITQUEUE(>irq_queue); +#endif } static int logical_ring_init(struct drm_device *dev, struct intel_engine_cs *ring) @@ -1941,7 +1945,11 @@ static int logical_ring_init(struct drm_ INIT_LIST_HEAD(>active_list); INIT_LIST_HEAD(>request_list); i915_gem_batch_pool_init(dev, >batch_pool); +#ifdef __NetBSD__ + DRM_INIT_WAITQUEUE(>irq_queue, "i915lrc"); +#else init_waitqueue_head(>irq_queue); +#endif INIT_LIST_HEAD(>execlist_queue); INIT_LIST_HEAD(>execlist_retired_req_list);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:24:12 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c intel_ringbuffer.h Log Message: Stash the ring status page somewhere more convenient. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h 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/intel_lrc.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.4 Mon Aug 27 07:24:01 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c Mon Aug 27 07:24:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lrc.c,v 1.4 2018/08/27 07:24:01 riastradh Exp $ */ +/* $NetBSD: intel_lrc.c,v 1.5 2018/08/27 07:24:12 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -135,7 +135,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.4 2018/08/27 07:24:01 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.5 2018/08/27 07:24:12 riastradh Exp $"); #include #include @@ -1923,7 +1923,7 @@ void intel_logical_ring_cleanup(struct i i915_gem_batch_pool_fini(>batch_pool); if (ring->status_page.obj) { - kunmap(sg_page(ring->status_page.obj->pages->sgl)); + kunmap(ring->status_page.page); ring->status_page.obj = NULL; } @@ -2450,6 +2450,7 @@ static void lrc_setup_hardware_status_pa ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(default_ctx_obj) + LRC_PPHWSP_PN * PAGE_SIZE; page = i915_gem_object_get_page(default_ctx_obj, LRC_PPHWSP_PN); + ring->status_page.page = page; ring->status_page.page_addr = kmap(page); ring->status_page.obj = default_ctx_obj; Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.6 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.5 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h Mon Aug 27 07:24:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_ringbuffer.h,v 1.5 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_ringbuffer.h,v 1.6 2018/08/27 07:24:12 riastradh Exp $ */ #ifndef _INTEL_RINGBUFFER_H_ #define _INTEL_RINGBUFFER_H_ @@ -29,6 +29,7 @@ #define I915_RING_FREE_SPACE 64 struct intel_hw_status_page { + struct page *page; u32 *page_addr; unsigned int gfx_addr; struct drm_i915_gem_object *obj;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:22:49 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c Log Message: Use the struct device pointer that works, not the one that doesn't exist. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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/intel_guc_loader.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.4 Mon Aug 27 07:22:38 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c Mon Aug 27 07:22:49 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_guc_loader.c,v 1.4 2018/08/27 07:22:38 riastradh Exp $ */ +/* $NetBSD: intel_guc_loader.c,v 1.5 2018/08/27 07:22:49 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -29,7 +29,7 @@ *Alex Dai */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.4 2018/08/27 07:22:38 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.5 2018/08/27 07:22:49 riastradh Exp $"); #include #include @@ -491,7 +491,7 @@ static void guc_fw_fetch(struct drm_devi DRM_DEBUG_DRIVER("before requesting firmware: GuC fw fetch status %s\n", intel_guc_fw_status_repr(guc_fw->guc_fw_fetch_status)); - err = request_firmware(, guc_fw->guc_fw_path, >pdev->dev); + err = request_firmware(, guc_fw->guc_fw_path, dev->dev); if (err) goto fail; if (!fw)
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:22:08 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_dp_mst.c Log Message: Mark unused variables, pipe -> i915_pipe. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.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/intel_dp_mst.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c Mon Aug 27 07:22:08 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_dp_mst.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_dp_mst.c,v 1.3 2018/08/27 07:22:08 riastradh Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -26,7 +26,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_dp_mst.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_dp_mst.c,v 1.3 2018/08/27 07:22:08 riastradh Exp $"); #include #include "i915_drv.h" @@ -220,7 +220,7 @@ static void intel_mst_enable_dp(struct i struct drm_device *dev = intel_dig_port->base.base.dev; struct drm_i915_private *dev_priv = dev->dev_private; enum port port = intel_dig_port->port; - int ret; + int ret __unused; DRM_DEBUG_KMS("%d\n", intel_dp->active_mst_links); @@ -234,7 +234,7 @@ static void intel_mst_enable_dp(struct i } static bool intel_dp_mst_enc_get_hw_state(struct intel_encoder *encoder, - enum pipe *pipe) + enum i915_pipe *pipe) { struct intel_dp_mst_encoder *intel_mst = enc_to_mst(>base); *pipe = intel_mst->pipe; @@ -407,7 +407,7 @@ static const struct drm_encoder_funcs in static bool intel_dp_mst_get_hw_state(struct intel_connector *connector) { if (connector->encoder && connector->base.state->crtc) { - enum pipe pipe; + enum i915_pipe pipe; if (!connector->encoder->get_hw_state(connector->encoder, )) return false; return true; @@ -523,7 +523,7 @@ static struct drm_dp_mst_topology_cbs ms }; static struct intel_dp_mst_encoder * -intel_dp_create_fake_mst_encoder(struct intel_digital_port *intel_dig_port, enum pipe pipe) +intel_dp_create_fake_mst_encoder(struct intel_digital_port *intel_dig_port, enum i915_pipe pipe) { struct intel_dp_mst_encoder *intel_mst; struct intel_encoder *intel_encoder;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:24:01 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c Log Message: round_up, not ALIGN. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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/intel_lrc.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.3 Mon Aug 27 07:23:50 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c Mon Aug 27 07:24:01 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lrc.c,v 1.3 2018/08/27 07:23:50 riastradh Exp $ */ +/* $NetBSD: intel_lrc.c,v 1.4 2018/08/27 07:24:01 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -135,7 +135,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.3 2018/08/27 07:23:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.4 2018/08/27 07:24:01 riastradh Exp $"); #include #include @@ -1198,7 +1198,11 @@ static inline uint32_t wa_ctx_start(stru uint32_t offset, uint32_t start_alignment) { +#ifdef __NetBSD__ /* XXX ALIGN means something else */ + return wa_ctx->offset = round_up(offset, start_alignment); +#else return wa_ctx->offset = ALIGN(offset, start_alignment); +#endif } static inline int wa_ctx_end(struct i915_wa_ctx_bb *wa_ctx,
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:22:59 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c Log Message: const const const To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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/intel_guc_loader.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.5 Mon Aug 27 07:22:49 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c Mon Aug 27 07:22:59 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_guc_loader.c,v 1.5 2018/08/27 07:22:49 riastradh Exp $ */ +/* $NetBSD: intel_guc_loader.c,v 1.6 2018/08/27 07:22:59 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -29,7 +29,7 @@ *Alex Dai */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.5 2018/08/27 07:22:49 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.6 2018/08/27 07:22:59 riastradh Exp $"); #include #include @@ -513,8 +513,8 @@ static void guc_fw_fetch(struct drm_devi * in terms of bytes (u8). */ css_header = fw->data + UOS_CSS_HEADER_OFFSET; - guc_fw->guc_fw_major_found = *(u16 *)(css_header + UOS_VER_MAJOR_OFFSET); - guc_fw->guc_fw_minor_found = *(u16 *)(css_header + UOS_VER_MINOR_OFFSET); + guc_fw->guc_fw_major_found = *(const u16 *)(css_header + UOS_VER_MAJOR_OFFSET); + guc_fw->guc_fw_minor_found = *(const u16 *)(css_header + UOS_VER_MINOR_OFFSET); if (guc_fw->guc_fw_major_found != guc_fw->guc_fw_major_wanted || guc_fw->guc_fw_minor_found < guc_fw->guc_fw_minor_wanted) {
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:23:38 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c Log Message: Implement i915_gem_object_invalidate with PGO_DEACTIVATE. To generate a diff of this commit: cvs rdiff -u -r1.44 -r1.45 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.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_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.44 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.45 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.44 Mon Aug 27 07:23:22 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Mon Aug 27 07:23:37 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.44 2018/08/27 07:23:22 riastradh Exp $ */ +/* $NetBSD: i915_gem.c,v 1.45 2018/08/27 07:23:37 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.44 2018/08/27 07:23:22 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.45 2018/08/27 07:23:37 riastradh Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -2585,9 +2585,10 @@ static void i915_gem_object_invalidate(struct drm_i915_gem_object *obj) { #ifdef __NetBSD__ - panic("XXX"); + struct uvm_object *uobj; #else struct address_space *mapping; +#endif switch (obj->madv) { case I915_MADV_DONTNEED: @@ -2599,6 +2600,12 @@ i915_gem_object_invalidate(struct drm_i9 if (obj->base.filp == NULL) return; +#ifdef __NetBSD__ + uobj = obj->base.filp; + mutex_enter(uobj->vmobjlock); + (*uobj->pgops->pgo_put)(uobj, 0, obj->base.size, + PGO_ALLPAGES|PGO_DEACTIVATE|PGO_CLEANIT); +#else mapping = file_inode(obj->base.filp)->i_mapping, invalidate_mapping_pages(mapping, 0, (loff_t)-1); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:22:18 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_dvo.c Log Message: pipe -> i915_pipe To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.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/intel_dvo.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c:1.3 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c Mon Aug 27 07:22:18 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_dvo.c,v 1.3 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_dvo.c,v 1.4 2018/08/27 07:22:18 riastradh Exp $ */ /* * Copyright 2006 Dave Airlie @@ -27,7 +27,7 @@ * Eric Anholt */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_dvo.c,v 1.3 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_dvo.c,v 1.4 2018/08/27 07:22:18 riastradh Exp $"); #include #include @@ -457,7 +457,7 @@ void intel_dvo_init(struct drm_device *d struct i2c_adapter *i2c; int gpio; bool dvoinit; - enum pipe pipe; + enum i915_pipe pipe; uint32_t dpll[I915_MAX_PIPES]; /* Allow the I2C driver info to specify the GPIO to be used in
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:23:10 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_hdmi.c Log Message: pipe -> i915_pipe To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.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/intel_hdmi.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c:1.6 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c Mon Aug 27 07:23:10 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_hdmi.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_hdmi.c,v 1.7 2018/08/27 07:23:10 riastradh Exp $ */ /* * Copyright 2006 Dave Airlie @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_hdmi.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_hdmi.c,v 1.7 2018/08/27 07:23:10 riastradh Exp $"); #include #include @@ -1043,7 +1043,7 @@ static void cpt_enable_hdmi(struct intel struct drm_i915_private *dev_priv = dev->dev_private; struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(>base); - enum pipe pipe = crtc->pipe; + enum i915_pipe pipe = crtc->pipe; u32 temp; temp = I915_READ(intel_hdmi->hdmi_reg); @@ -1628,7 +1628,7 @@ static void chv_data_lane_soft_reset(str struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); enum dpio_channel ch = vlv_dport_to_channel(enc_to_dig_port(>base)); struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); - enum pipe pipe = crtc->pipe; + enum i915_pipe pipe = crtc->pipe; uint32_t val; val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW0(ch)); @@ -1674,7 +1674,7 @@ static void chv_hdmi_pre_pll_enable(stru struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); enum dpio_channel ch = vlv_dport_to_channel(dport); - enum pipe pipe = intel_crtc->pipe; + enum i915_pipe pipe = intel_crtc->pipe; u32 val; intel_hdmi_prepare(encoder); @@ -1748,7 +1748,7 @@ static void chv_hdmi_pre_pll_enable(stru static void chv_hdmi_post_pll_disable(struct intel_encoder *encoder) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); - enum pipe pipe = to_intel_crtc(encoder->base.crtc)->pipe; + enum i915_pipe pipe = to_intel_crtc(encoder->base.crtc)->pipe; u32 val; mutex_lock(_priv->sb_lock);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:22:38 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c Log Message: Translate sg_pcopy_to_buffer to ubc_uiomove. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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/intel_guc_loader.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.3 Mon Aug 27 07:22:27 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c Mon Aug 27 07:22:38 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_guc_loader.c,v 1.3 2018/08/27 07:22:27 riastradh Exp $ */ +/* $NetBSD: intel_guc_loader.c,v 1.4 2018/08/27 07:22:38 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -29,7 +29,7 @@ *Alex Dai */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.3 2018/08/27 07:22:27 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.4 2018/08/27 07:22:38 riastradh Exp $"); #include #include @@ -243,7 +243,12 @@ static int guc_ucode_xfer_dma(struct drm struct intel_guc_fw *guc_fw = _priv->guc.guc_fw; struct drm_i915_gem_object *fw_obj = guc_fw->guc_fw_obj; unsigned long offset; +#ifdef __NetBSD__ + struct iovec iov; + struct uio uio; +#else struct sg_table *sg = fw_obj->pages; +#endif u32 status, ucode_size, rsa[UOS_RSA_SIG_SIZE / sizeof(u32)]; int i, ret = 0; @@ -252,7 +257,21 @@ static int guc_ucode_xfer_dma(struct drm I915_WRITE(DMA_COPY_SIZE, ucode_size); /* Copy RSA signature from the fw image to HW for verification */ +#ifdef __NetBSD__ + iov.iov_base = rsa; + iov.iov_len = UOS_RSA_SIG_SIZE; + uio.uio_iov = + uio.uio_iovcnt = 1; + uio.uio_resid = UOS_RSA_SIG_SIZE; + uio.uio_rw = UIO_READ; + /* XXX errno NetBSD->Linux */ + ret = -ubc_uiomove(fw_obj->base.filp, , UOS_RSA_SIG_SIZE, + UVM_ADV_NORMAL, UBC_READ); + if (ret) + return ret; +#else sg_pcopy_to_buffer(sg->sgl, sg->nents, rsa, UOS_RSA_SIG_SIZE, offset); +#endif for (i = 0; i < UOS_RSA_SIG_SIZE / sizeof(u32); i++) I915_WRITE(UOS_RSA_SCRATCH(i), rsa[i]);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:21:48 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_dp.c Log Message: More enum pipe -> enum i915_pipe, ugh. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.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/intel_dp.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.12 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.13 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.12 Mon Aug 27 06:16:01 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c Mon Aug 27 07:21:48 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_dp.c,v 1.12 2018/08/27 06:16:01 riastradh Exp $ */ +/* $NetBSD: intel_dp.c,v 1.13 2018/08/27 07:21:48 riastradh Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.12 2018/08/27 06:16:01 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.13 2018/08/27 07:21:48 riastradh Exp $"); #include #include @@ -137,7 +137,7 @@ static bool edp_panel_vdd_on(struct inte static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); static void vlv_init_panel_power_sequencer(struct intel_dp *intel_dp); static void vlv_steal_power_sequencer(struct drm_device *dev, - enum pipe pipe); + enum i915_pipe pipe); static unsigned int intel_dp_unused_lane_mask(int lane_count) { @@ -312,7 +312,7 @@ vlv_power_sequencer_kick(struct intel_dp struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); struct drm_device *dev = intel_dig_port->base.base.dev; struct drm_i915_private *dev_priv = dev->dev_private; - enum pipe pipe = intel_dp->pps_pipe; + enum i915_pipe pipe = intel_dp->pps_pipe; bool pll_enabled, release_cl_override = false; enum dpio_phy phy = DPIO_PHY(pipe); enum dpio_channel ch = vlv_pipe_to_channel(pipe); @@ -441,32 +441,32 @@ vlv_power_sequencer_pipe(struct intel_dp } typedef bool (*vlv_pipe_check)(struct drm_i915_private *dev_priv, - enum pipe pipe); + enum i915_pipe pipe); static bool vlv_pipe_has_pp_on(struct drm_i915_private *dev_priv, - enum pipe pipe) + enum i915_pipe pipe) { return I915_READ(VLV_PIPE_PP_STATUS(pipe)) & PP_ON; } static bool vlv_pipe_has_vdd_on(struct drm_i915_private *dev_priv, -enum pipe pipe) +enum i915_pipe pipe) { return I915_READ(VLV_PIPE_PP_CONTROL(pipe)) & EDP_FORCE_VDD; } static bool vlv_pipe_any(struct drm_i915_private *dev_priv, - enum pipe pipe) + enum i915_pipe pipe) { return true; } -static enum pipe +static enum i915_pipe vlv_initial_pps_pipe(struct drm_i915_private *dev_priv, enum port port, vlv_pipe_check pipe_check) { - enum pipe pipe; + enum i915_pipe pipe; for (pipe = PIPE_A; pipe <= PIPE_B; pipe++) { u32 port_sel = I915_READ(VLV_PIPE_PP_ON_DELAYS(pipe)) & @@ -593,7 +593,7 @@ static int edp_notify_handler(struct not pps_lock(intel_dp); if (IS_VALLEYVIEW(dev)) { - enum pipe pipe = vlv_power_sequencer_pipe(intel_dp); + enum i915_pipe pipe = vlv_power_sequencer_pipe(intel_dp); u32 pp_ctrl_reg, pp_div_reg; u32 pp_div; @@ -2291,7 +2291,7 @@ static bool intel_dp_get_hw_state(struct if (IS_GEN7(dev) && port == PORT_A) { *pipe = PORT_TO_PIPE_CPT(tmp); } else if (HAS_PCH_CPT(dev) && port != PORT_A) { - enum pipe p; + enum i915_pipe p; for_each_pipe(dev_priv, p) { u32 trans_dp = I915_READ(TRANS_DP_CTL(p)); @@ -2447,7 +2447,7 @@ static void chv_data_lane_soft_reset(str struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); enum dpio_channel ch = vlv_dport_to_channel(enc_to_dig_port(>base)); struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); - enum pipe pipe = crtc->pipe; + enum i915_pipe pipe = crtc->pipe; uint32_t val; val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW0(ch)); @@ -2688,7 +2688,7 @@ static void vlv_detach_power_sequencer(s { struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); struct drm_i915_private *dev_priv = intel_dig_port->base.base.dev->dev_private; - enum pipe pipe = intel_dp->pps_pipe; + enum i915_pipe pipe = intel_dp->pps_pipe; int pp_on_reg = VLV_PIPE_PP_ON_DELAYS(pipe); edp_panel_vdd_off_sync(intel_dp); @@ -2711,7 +2711,7 @@ static void vlv_detach_power_sequencer(s } static void vlv_steal_power_sequencer(struct drm_device *dev, - enum pipe pipe) + enum i915_pipe pipe) { struct drm_i915_private *dev_priv = dev->dev_private; struct intel_encoder *encoder; @@ -2944,7 +2944,7 @@ static void chv_dp_pre_pll_enable(struct struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); enum dpio_channel ch = vlv_dport_to_channel(dport); - enum pipe pipe =
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:23:50 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c Log Message: bus_space_write_4, not iowrite32. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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/intel_lrc.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c Mon Aug 27 07:23:50 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lrc.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_lrc.c,v 1.3 2018/08/27 07:23:50 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -135,7 +135,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.3 2018/08/27 07:23:50 riastradh Exp $"); #include #include @@ -745,6 +745,15 @@ intel_logical_ring_advance_and_submit(st static void __wrap_ring_buffer(struct intel_ringbuffer *ringbuf) { +#ifdef __NetBSD__ + bus_size_t tail; + int rem = ringbuf->size - ringbuf->tail; + + tail = ringbuf->tail; + rem /= 4; + while (rem--) + bus_space_write_4(ringbuf->bst, ringbuf->bsh, tail++, MI_NOOP); +#else uint32_t __iomem *virt; int rem = ringbuf->size - ringbuf->tail; @@ -752,6 +761,7 @@ static void __wrap_ring_buffer(struct in rem /= 4; while (rem--) iowrite32(MI_NOOP, virt++); +#endif ringbuf->tail = 0; intel_ring_update_space(ringbuf);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:22:27 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c Log Message: Need for MODULE_FIRMWARE. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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/intel_guc_loader.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c Mon Aug 27 07:22:27 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_guc_loader.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_guc_loader.c,v 1.3 2018/08/27 07:22:27 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -29,9 +29,10 @@ *Alex Dai */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.3 2018/08/27 07:22:27 riastradh Exp $"); #include +#include #include "i915_drv.h" #include "intel_guc.h"
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:21:16 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_display.c Log Message: Tweak intel_display.c to make it compile. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.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/intel_display.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.19 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.20 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.19 Mon Aug 27 06:34:15 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c Mon Aug 27 07:21:16 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display.c,v 1.19 2018/08/27 06:34:15 riastradh Exp $ */ +/* $NetBSD: intel_display.c,v 1.20 2018/08/27 07:21:16 riastradh Exp $ */ /* * Copyright © 2006-2007 Intel Corporation @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.19 2018/08/27 06:34:15 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.20 2018/08/27 07:21:16 riastradh Exp $"); #include #include @@ -36,6 +36,8 @@ __KERNEL_RCSID(0, "$NetBSD: intel_displa #include #include #include +#include +#include #include #include #include "intel_drv.h" @@ -3989,6 +3991,7 @@ void intel_crtc_wait_for_pending_flips(s bool timedout; if (cold) { unsigned timo = 1000; + timedout = false; while (intel_crtc_has_pending_flip(crtc)) { if (WARN_ON(timo-- == 0)) { /* Give up. */ @@ -7502,7 +7505,7 @@ static void chv_prepare_pll(struct intel int dpll_reg = DPLL(crtc->pipe); enum dpio_channel port = vlv_pipe_to_channel(pipe); u32 loopfilter, tribuf_calcntr; - u32 bestn, bestm1, bestm2, bestp1, bestp2, bestm2_frac; + u32 bestn __unused, bestm1 __unused, bestm2, bestp1, bestp2, bestm2_frac; u32 dpio_val; int vco; @@ -12771,7 +12774,7 @@ static void check_connector_state(struct drm_device *dev, struct drm_atomic_state *old_state) { - struct drm_connector_state *old_conn_state; + struct drm_connector_state *old_conn_state __unused; struct drm_connector *connector; int i; @@ -13595,7 +13598,7 @@ skl_max_scale(struct intel_crtc *intel_c { int max_scale; struct drm_device *dev; - struct drm_i915_private *dev_priv; + struct drm_i915_private *dev_priv __unused; int crtc_clock, cdclk; if (!intel_crtc || !crtc_state) @@ -13655,7 +13658,7 @@ intel_commit_primary_plane(struct drm_pl struct drm_framebuffer *fb = state->base.fb; struct drm_device *dev = plane->dev; struct drm_i915_private *dev_priv = dev->dev_private; - struct intel_crtc *intel_crtc; + struct intel_crtc *intel_crtc __unused; struct drm_rect *src = >src; crtc = crtc ? crtc : plane->crtc; @@ -14443,7 +14446,7 @@ static int intel_framebuffer_init(struct case I915_FORMAT_MOD_Y_TILED: case I915_FORMAT_MOD_Yf_TILED: if (INTEL_INFO(dev)->gen < 9) { - DRM_DEBUG("Unsupported tiling 0x%llx!\n", + DRM_DEBUG("Unsupported tiling 0x%"PRIx64"!\n", mode_cmd->modifier[0]); return -EINVAL; } @@ -14451,7 +14454,7 @@ static int intel_framebuffer_init(struct case I915_FORMAT_MOD_X_TILED: break; default: - DRM_DEBUG("Unsupported fb modifier 0x%llx!\n", + DRM_DEBUG("Unsupported fb modifier 0x%"PRIx64"!\n", mode_cmd->modifier[0]); return -EINVAL; } @@ -15707,8 +15710,10 @@ void intel_modeset_cleanup(struct drm_de #ifdef __NetBSD__ linux_mutex_destroy(_priv->pps_mutex); + linux_mutex_destroy(_priv->fbc.lock); #else mutex_destroy(_priv->pps_mutex); + mutex_destroy(_priv->fbc.lock); #endif }
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:21:34 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_fbc.c Log Message: Tweak intel_fbc.c to make it compile. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.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/intel_fbc.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c Mon Aug 27 07:21:33 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_fbc.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_fbc.c,v 1.3 2018/08/27 07:21:33 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -41,7 +41,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_fbc.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_fbc.c,v 1.3 2018/08/27 07:21:33 riastradh Exp $"); #include "intel_drv.h" #include "i915_drv.h" @@ -530,7 +530,7 @@ static void set_no_fbc_reason(struct drm static struct drm_crtc *intel_fbc_find_crtc(struct drm_i915_private *dev_priv) { struct drm_crtc *crtc = NULL, *tmp_crtc; - enum pipe pipe; + enum i915_pipe pipe; bool pipe_a_only = false; if (IS_HASWELL(dev_priv) || INTEL_INFO(dev_priv)->gen >= 8) @@ -555,7 +555,7 @@ static struct drm_crtc *intel_fbc_find_c static bool multiple_pipes_ok(struct drm_i915_private *dev_priv) { - enum pipe pipe; + enum i915_pipe pipe; int n_pipes = 0; struct drm_crtc *crtc; @@ -663,7 +663,7 @@ static int intel_fbc_alloc_cfb(struct dr dev_priv->fbc.uncompressed_size = size; - DRM_DEBUG_KMS("reserved %llu bytes of contiguous stolen space for FBC, threshold: %d\n", + DRM_DEBUG_KMS("reserved %"PRIu64" bytes of contiguous stolen space for FBC, threshold: %d\n", dev_priv->fbc.compressed_fb.size, dev_priv->fbc.threshold); @@ -1087,9 +1087,13 @@ void intel_fbc_flush(struct drm_i915_pri */ void intel_fbc_init(struct drm_i915_private *dev_priv) { - enum pipe pipe; + enum i915_pipe pipe; +#ifdef __NetBSD__ + linux_mutex_init(_priv->fbc.lock); +#else mutex_init(_priv->fbc.lock); +#endif if (!HAS_FBC(dev_priv)) { dev_priv->fbc.enabled = false;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:19:44 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_atomic_plane.c Log Message: Mark unused variable. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.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/intel_atomic_plane.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.c Mon Aug 27 07:19:44 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_atomic_plane.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_atomic_plane.c,v 1.3 2018/08/27 07:19:44 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_atomic_plane.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_atomic_plane.c,v 1.3 2018/08/27 07:19:44 riastradh Exp $"); #include #include @@ -112,7 +112,7 @@ static int intel_plane_atomic_check(stru struct drm_plane_state *state) { struct drm_crtc *crtc = state->crtc; - struct intel_crtc *intel_crtc; + struct intel_crtc *intel_crtc __unused; struct intel_crtc_state *crtc_state; struct intel_plane *intel_plane = to_intel_plane(plane); struct intel_plane_state *intel_state = to_intel_plane_state(state);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:20:39 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_stolen.c Log Message: Re-enable i915 GSM now that pci_bus_config_read/write_* is here. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.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_gem_stolen.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.9 Mon Aug 27 07:17:35 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c Mon Aug 27 07:20:39 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_stolen.c,v 1.9 2018/08/27 07:17:35 riastradh Exp $ */ +/* $NetBSD: i915_gem_stolen.c,v 1.10 2018/08/27 07:20:39 riastradh Exp $ */ /* * Copyright © 2008-2012 Intel Corporation @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.9 2018/08/27 07:17:35 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.10 2018/08/27 07:20:39 riastradh Exp $"); #include #include @@ -112,7 +112,6 @@ static unsigned long i915_stolen_to_phys * */ base = 0; -#ifndef __NetBSD__ /* XXX i915 gem gsm stolen memory base */ if (INTEL_INFO(dev)->gen >= 3) { /* Read Graphics Base of Stolen Memory directly */ pci_read_config_dword(dev->pdev, 0x5c, ); @@ -201,7 +200,6 @@ static unsigned long i915_stolen_to_phys base = tom - tseg_size - dev_priv->gtt.stolen_size; } -#endif if (base == 0) return 0;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:19:55 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_bios.c Log Message: Fix up intel_bios.c. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.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/intel_bios.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c:1.6 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c Mon Aug 27 07:19:55 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_bios.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_bios.c,v 1.7 2018/08/27 07:19:55 riastradh Exp $ */ /* * Copyright © 2006 Intel Corporation @@ -27,7 +27,7 @@ * */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_bios.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_bios.c,v 1.7 2018/08/27 07:19:55 riastradh Exp $"); #include #include @@ -81,9 +81,10 @@ find_section(const void *_bdb, int secti static u16 get_blocksize(const void *p) { - u16 *block_ptr, block_size; + const u16 *block_ptr; + u16 block_size; - block_ptr = (u16 *)((char *)p - 2); + block_ptr = (const u16 *)((const char *)p - 2); block_size = *block_ptr; return block_size; } @@ -838,7 +839,7 @@ parse_mipi(struct drm_i915_private *dev_ */ for (i = 0; i < MAX_MIPI_CONFIGURATIONS; i++) { panel_id = *seq_data; - seq_size = *((u16 *) (seq_data + 1)); + seq_size = *((const u16 *) (seq_data + 1)); if (panel_id == panel_type) break; @@ -1255,7 +1256,7 @@ static const struct bdb_header *validate const void *_vbt, const char *source) { - size_t offset = _vbt - base; + size_t offset = (const char *)_vbt - (const char *)base; const struct vbt_header *vbt = _vbt; const struct bdb_header *bdb; @@ -1275,7 +1276,7 @@ static const struct bdb_header *validate return NULL; } - bdb = base + offset; + bdb = (const void *)((const char *)base + offset); if (offset + bdb->bdb_size > size) { DRM_DEBUG_DRIVER("BDB incomplete\n"); return NULL; @@ -1286,6 +1287,21 @@ static const struct bdb_header *validate return bdb; } +#ifdef __NetBSD__ +# define __iomem __pci_rom_iomem +# define ioread32 fake_ioread32 +static inline uint32_t +fake_ioread32(const void __iomem *p) +{ + uint32_t v; + + v = *(const uint32_t __iomem *)p; + __insn_barrier(); + + return v; +} +#endif + static const struct bdb_header *find_vbt(void __iomem *bios, size_t size) { const struct bdb_header *bdb = NULL; @@ -1293,7 +1309,7 @@ static const struct bdb_header *find_vbt /* Scour memory looking for the VBT signature. */ for (i = 0; i + 4 < size; i++) { - if (ioread32(bios + i) == *((const u32 *) "$VBT")) { + if (ioread32((char __iomem *)bios + i) == *((const u32 *) "$VBT")) { /* * This is the one place where we explicitly discard the * address space (__iomem) of the BIOS/VBT. From now on @@ -1302,7 +1318,7 @@ static const struct bdb_header *find_vbt */ void *_bios = (void __force *) bios; - bdb = validate_vbt(_bios, size, _bios + i, "PCI ROM"); + bdb = validate_vbt(_bios, size, (char *)_bios + i, "PCI ROM"); break; } } @@ -1319,9 +1335,6 @@ static const struct bdb_header *find_vbt * * Returns 0 on success, nonzero on failure. */ -#ifdef __NetBSD__ -# define __iomem __pci_rom_iomem -#endif int intel_parse_bios(struct drm_device *dev) { @@ -1373,8 +1386,10 @@ intel_parse_bios(struct drm_device *dev) return 0; } + #ifdef __NetBSD__ # undef __iomem +# undef ioread32 #endif /**
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:18:47 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_shrinker.c Log Message: Use gemo_shm_uao rather than filp. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.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_gem_shrinker.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.4 Mon Aug 27 07:18:37 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c Mon Aug 27 07:18:47 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_shrinker.c,v 1.4 2018/08/27 07:18:37 riastradh Exp $ */ +/* $NetBSD: i915_gem_shrinker.c,v 1.5 2018/08/27 07:18:47 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -25,7 +25,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.4 2018/08/27 07:18:37 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.5 2018/08/27 07:18:47 riastradh Exp $"); #include #include @@ -317,7 +317,11 @@ i915_gem_shrinker_oom(struct notifier_bl */ unbound = bound = pinned = 0; list_for_each_entry(obj, _priv->mm.unbound_list, global_list) { +#ifdef __NetBSD__ + if (!obj->base.gemo_shm_uao) +#else if (!obj->base.filp) /* not backed by a freeable object */ +#endif continue; if (obj->pages_pin_count) @@ -326,7 +330,11 @@ i915_gem_shrinker_oom(struct notifier_bl unbound += obj->base.size; } list_for_each_entry(obj, _priv->mm.bound_list, global_list) { +#ifdef __NetBSD__ + if (!obj->base.gemo_shm_uao) +#else if (!obj->base.filp) +#endif continue; if (obj->pages_pin_count)
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:19:23 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_audio.c Log Message: Give intel_audio.c half a chance of compiling. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.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/intel_audio.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c Mon Aug 27 07:19:23 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_audio.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: intel_audio.c,v 1.3 2018/08/27 07:19:23 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -24,7 +24,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.3 2018/08/27 07:19:23 riastradh Exp $"); #include #include @@ -186,7 +186,7 @@ static bool intel_eld_uptodate(struct dr I915_WRITE(reg_elda, tmp); for (i = 0; i < drm_eld_size(eld) / 4; i++) - if (I915_READ(reg_edid) != *((uint32_t *)eld + i)) + if (I915_READ(reg_edid) != *((const uint32_t *)eld + i)) return false; return true; @@ -254,7 +254,7 @@ static void hsw_audio_codec_disable(stru { struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); - enum pipe pipe = intel_crtc->pipe; + enum i915_pipe pipe = intel_crtc->pipe; uint32_t tmp; DRM_DEBUG_KMS("Disable audio codec on pipe %c\n", pipe_name(pipe)); @@ -286,7 +286,7 @@ static void hsw_audio_codec_enable(struc { struct drm_i915_private *dev_priv = connector->dev->dev_private; struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); - enum pipe pipe = intel_crtc->pipe; + enum i915_pipe pipe = intel_crtc->pipe; struct i915_audio_component *acomp = dev_priv->audio_component; const uint8_t *eld = connector->eld; struct intel_digital_port *intel_dig_port = @@ -367,7 +367,7 @@ static void ilk_audio_codec_disable(stru struct intel_digital_port *intel_dig_port = enc_to_dig_port(>base); enum port port = intel_dig_port->port; - enum pipe pipe = intel_crtc->pipe; + enum i915_pipe pipe = intel_crtc->pipe; uint32_t tmp, eldv; int aud_config; int aud_cntrl_st2; @@ -416,7 +416,7 @@ static void ilk_audio_codec_enable(struc struct intel_digital_port *intel_dig_port = enc_to_dig_port(>base); enum port port = intel_dig_port->port; - enum pipe pipe = intel_crtc->pipe; + enum i915_pipe pipe = intel_crtc->pipe; uint8_t *eld = connector->eld; uint32_t eldv; uint32_t tmp; @@ -643,7 +643,7 @@ static int i915_audio_component_sync_aud struct intel_crtc *crtc; struct drm_display_mode *mode; struct i915_audio_component *acomp = dev_priv->audio_component; - enum pipe pipe = -1; + enum i915_pipe pipe = -1; u32 tmp; int n;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:18:28 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_shrinker.c Log Message: Horrible kludgey mutex_is_locked_by that should work here. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.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_gem_shrinker.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.2 Mon Aug 27 04:58:23 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c Mon Aug 27 07:18:28 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_shrinker.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $ */ +/* $NetBSD: i915_gem_shrinker.c,v 1.3 2018/08/27 07:18:28 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -25,7 +25,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.3 2018/08/27 07:18:28 riastradh Exp $"); #include #include @@ -39,6 +39,16 @@ __KERNEL_RCSID(0, "$NetBSD: i915_gem_shr #include "i915_drv.h" #include "i915_trace.h" +#ifdef __NetBSD__ +/* XXX argh argh argh argh argh argh argh argh */ +static bool mutex_is_locked_by(struct mutex *mutex, struct proc *proc) +{ + + KASSERT(proc == curproc); + /* Actually answers `do we own mutex?'. */ + return mutex_is_locked(mutex); +} +#else static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task) { if (!mutex_is_locked(mutex)) @@ -51,6 +61,7 @@ static bool mutex_is_locked_by(struct mu return false; #endif } +#endif /** * i915_gem_shrink - Shrink buffer object caches
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:17:35 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c i915_drv.h i915_gem.c i915_gem_fence.c i915_gem_gtt.c i915_gem_render_state.c i915_gem_stolen.c i915_guc_submission.c Log Message: Rework how we map i915 drm gem objects. The old way made no sense at all. This way might make sense. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c \ src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h cvs rdiff -u -r1.40 -r1.41 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.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_cmd_parser.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.6 Mon Aug 27 07:04:02 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c Mon Aug 27 07:17:35 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_cmd_parser.c,v 1.6 2018/08/27 07:04:02 riastradh Exp $ */ +/* $NetBSD: i915_cmd_parser.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $ */ /* * Copyright © 2013 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.6 2018/08/27 07:04:02 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $"); #include "i915_drv.h" @@ -883,7 +883,11 @@ static u32 *vmap_batch(struct drm_i915_g i = 0; #ifdef __NetBSD__ - TAILQ_FOREACH(page, >igo_pageq, pageq.queue) { + /* + * XXX Why do we work through the page queue instead of just + * using uvm_map? + */ + TAILQ_FOREACH(page, >pageq, pageq.queue) { if (first_page-- > 0) continue; if (i == npages) Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.6 Mon Aug 27 07:16:31 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c Mon Aug 27 07:17:35 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_guc_submission.c,v 1.6 2018/08/27 07:16:31 riastradh Exp $ */ +/* $NetBSD: i915_guc_submission.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -24,7 +24,7 @@ * */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.6 2018/08/27 07:16:31 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $"); #include #include @@ -381,90 +381,6 @@ static void guc_init_proc_desc(struct in kunmap_atomic(base); } -#ifdef __NetBSD__ -/* - * bus_dmamem_move_atomic(dmat, seg, nseg, buf, nbytes, rw) - * - * Transfer nbytes of data between the bus_dma segments seg[0], - * seg[1], ..., seg[nseg-1] and buf, in the direction specified by - * rw: reading from or writing to the DMA segments. - * - * Cannot fail. - */ -static void -bus_dmamem_move(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg, -bus_size_t skip, void *buf, size_t nbytes, enum uio_rw rw) -{ - char *ptr = buf; - void *kva; - int i; - - /* Find the first segment that we need to copy from. */ - for (i = 0; skip < seg[i].ds_len; skip -= seg[i].ds_len, i++) - KASSERT(i < nseg); - - /* Copy as much as we requested from the segments. */ - do { - paddr_t pa; - bus_size_t seglen; - - KASSERT(i < nseg); - KASSERT(skip < seg[i].ds_len); - pa = seg[i].ds_addr; - seglen = MIN(seg[i].ds_len, nbytes); - i++; - - while (seglen) { - struct vm_page *vm_page = PHYS_TO_VM_PAGE(pa); - struct page *page = container_of(vm_page, struct page, - p_vmp); - size_t copy = MIN(PAGE_SIZE - skip, seglen); - const char *src; - char *dst; - - kva = kmap_atomic(page); - switch (rw) { - case UIO_READ: -src = kva; -src += skip; -dst = ptr; - case UIO_WRITE: -src = ptr; -dst = kva; -dst += skip; - } - memcpy(dst, src, copy); - kunmap_atomic(kva); - - pa += PAGE_SIZE; - seglen -= copy; - ptr += copy; - nbytes -= copy; - skip = 0; /* after the first, we're page-aligned */ - } - } while (nbytes); -} - -static void -bus_dmamem_write(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg, -
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:18:37 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_shrinker.c Log Message: Use kpause for schedule_timeout_killable/fatal_signal_pending. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.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_gem_shrinker.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.3 Mon Aug 27 07:18:28 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c Mon Aug 27 07:18:37 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_shrinker.c,v 1.3 2018/08/27 07:18:28 riastradh Exp $ */ +/* $NetBSD: i915_gem_shrinker.c,v 1.4 2018/08/27 07:18:37 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -25,7 +25,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.3 2018/08/27 07:18:28 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.4 2018/08/27 07:18:37 riastradh Exp $"); #include #include @@ -289,9 +289,15 @@ i915_gem_shrinker_oom(struct notifier_bl bool unlock; while (!i915_gem_shrinker_lock(dev, ) && --timeout) { +#ifdef __NetBSD__ + int error = kpause("i915shnk", true, 1, NULL); + if (error == EINTR || error == ERESTART) + return NOTIFY_DONE; +#else schedule_timeout_killable(1); if (fatal_signal_pending(current)) return NOTIFY_DONE; +#endif } if (timeout == 0) { pr_err("Unable to purge GPU memory due lock contention.\n");
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:17:59 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c Log Message: Compute the number of bytes written as expected. To generate a diff of this commit: cvs rdiff -u -r1.41 -r1.42 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.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_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.41 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.42 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.41 Mon Aug 27 07:17:35 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Mon Aug 27 07:17:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.41 2018/08/27 07:17:35 riastradh Exp $ */ +/* $NetBSD: i915_gem.c,v 1.42 2018/08/27 07:17:58 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.41 2018/08/27 07:17:35 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.42 2018/08/27 07:17:58 riastradh Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -5906,6 +5906,7 @@ i915_gem_object_create_from_data(struct UBC_WRITE); if (ret) goto fail; + bytes = size - uio.uio_resid; #else sg = obj->pages; bytes = sg_copy_from_buffer(sg->sgl, sg->nents, (void *)data, size);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:16:41 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_render_state.c Log Message: Use bus_dmamem_map instead of kmap(sg_page(...)). To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_gem_render_state.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.2 Mon Aug 27 04:58:23 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c Mon Aug 27 07:16:40 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_render_state.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $ */ +/* $NetBSD: i915_gem_render_state.c,v 1.3 2018/08/27 07:16:40 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.3 2018/08/27 07:16:40 riastradh Exp $"); #include "i915_drv.h" #include "intel_renderstate.h" @@ -100,7 +100,11 @@ static int render_state_setup(struct ren { const struct intel_renderstate_rodata *rodata = so->rodata; unsigned int i = 0, reloc_index = 0; +#ifdef __NetBSD__ + void *kva; +#else struct page *page; +#endif u32 *d; int ret; @@ -108,8 +112,17 @@ static int render_state_setup(struct ren if (ret) return ret; +#ifdef __NetBSD__ + /* XXX errno NetBSD->Linux */ + ret = -bus_dmamem_map(so->obj->base.dev->dmat, so->obj->pages, + so->obj->igo_nsegs, PAGE_SIZE, , BUS_DMA_WAITOK); + if (ret) + return ret; + d = kva; +#else page = sg_page(so->obj->pages->sgl); d = kmap(page); +#endif while (i < rodata->batch_items) { u32 s = rodata->batch[i]; @@ -146,9 +159,17 @@ static int render_state_setup(struct ren * Since we are sending length, we need to strictly conform to * all requirements. For Gen2 this must be a multiple of 8. */ +#ifdef __NetBSD__ /* XXX ALIGN means something else. */ + so->aux_batch_size = round_up(so->aux_batch_size, 8); +#else so->aux_batch_size = ALIGN(so->aux_batch_size, 8); +#endif +#ifdef __NetBSD__ + bus_dmamem_unmap(so->obj->base.dev->dmat, kva, PAGE_SIZE); +#else kunmap(page); +#endif ret = i915_gem_object_set_to_gtt_domain(so->obj, false); if (ret) @@ -162,7 +183,11 @@ static int render_state_setup(struct ren return 0; err_out: +#ifdef __NetBSD__ + bus_dmamem_unmap(so->obj->base.dev->dmat, kva, PAGE_SIZE); +#else kunmap(page); +#endif return ret; }
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:16:31 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_guc_submission.c Log Message: Implement a bus_dma version of Linux sg_pcopy_from_buffer. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.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_guc_submission.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.5 Mon Aug 27 07:16:20 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c Mon Aug 27 07:16:31 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_guc_submission.c,v 1.5 2018/08/27 07:16:20 riastradh Exp $ */ +/* $NetBSD: i915_guc_submission.c,v 1.6 2018/08/27 07:16:31 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -24,7 +24,7 @@ * */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.5 2018/08/27 07:16:20 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.6 2018/08/27 07:16:31 riastradh Exp $"); #include #include @@ -381,6 +381,90 @@ static void guc_init_proc_desc(struct in kunmap_atomic(base); } +#ifdef __NetBSD__ +/* + * bus_dmamem_move_atomic(dmat, seg, nseg, buf, nbytes, rw) + * + * Transfer nbytes of data between the bus_dma segments seg[0], + * seg[1], ..., seg[nseg-1] and buf, in the direction specified by + * rw: reading from or writing to the DMA segments. + * + * Cannot fail. + */ +static void +bus_dmamem_move(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg, +bus_size_t skip, void *buf, size_t nbytes, enum uio_rw rw) +{ + char *ptr = buf; + void *kva; + int i; + + /* Find the first segment that we need to copy from. */ + for (i = 0; skip < seg[i].ds_len; skip -= seg[i].ds_len, i++) + KASSERT(i < nseg); + + /* Copy as much as we requested from the segments. */ + do { + paddr_t pa; + bus_size_t seglen; + + KASSERT(i < nseg); + KASSERT(skip < seg[i].ds_len); + pa = seg[i].ds_addr; + seglen = MIN(seg[i].ds_len, nbytes); + i++; + + while (seglen) { + struct vm_page *vm_page = PHYS_TO_VM_PAGE(pa); + struct page *page = container_of(vm_page, struct page, + p_vmp); + size_t copy = MIN(PAGE_SIZE - skip, seglen); + const char *src; + char *dst; + + kva = kmap_atomic(page); + switch (rw) { + case UIO_READ: +src = kva; +src += skip; +dst = ptr; + case UIO_WRITE: +src = ptr; +dst = kva; +dst += skip; + } + memcpy(dst, src, copy); + kunmap_atomic(kva); + + pa += PAGE_SIZE; + seglen -= copy; + ptr += copy; + nbytes -= copy; + skip = 0; /* after the first, we're page-aligned */ + } + } while (nbytes); +} + +static void +bus_dmamem_write(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg, +bus_size_t skip, const void *buf, size_t nbytes) +{ + + bus_dmamem_move(dmat, seg, nseg, skip, __UNCONST(buf), nbytes, + UIO_WRITE); +} + +#if 0 +static void +bus_dmamem_read(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg, +bus_size_t skip, void *buf, size_t nbytes) +{ + + bus_dmamem_move(dmat, seg, nseg, skip, buf, nbytes, UIO_READ); +} +#endif +#endif + /* * Initialise/clear the context descriptor shared with the GuC firmware. * @@ -394,7 +478,9 @@ static void guc_init_ctx_desc(struct int { struct intel_context *ctx = client->owner; struct guc_context_desc desc; +#ifndef __NetBSD__ struct sg_table *sg; +#endif int i; memset(, 0, sizeof(desc)); @@ -452,8 +538,13 @@ static void guc_init_ctx_desc(struct int desc.db_trigger_cpu = 0; desc.db_trigger_uk = client->doorbell_offset + i915_gem_obj_ggtt_offset(client->client_obj); +#ifdef __NetBSD__ + desc.db_trigger_phy = client->doorbell_offset + + client->client_obj->igo_dmamap->dm_segs[0].ds_addr; +#else desc.db_trigger_phy = client->doorbell_offset + sg_dma_address(client->client_obj->pages->sgl); +#endif desc.process_desc = client->proc_desc_offset + i915_gem_obj_ggtt_offset(client->client_obj); @@ -470,14 +561,36 @@ static void guc_init_ctx_desc(struct int desc.desc_private = (uintptr_t)client; /* Pool context is pinned already */ +#ifdef __NetBSD__ + bus_dma_tag_t dmat = guc->ctx_pool_obj->base.dev->dmat; + bus_dma_segment_t *seg = guc->ctx_pool_obj->pages; + int nseg = guc->ctx_pool_obj->igo_nsegs; + bus_size_t skip = sizeof(desc) * client->ctx_index; + size_t nbytes = sizeof(desc); + + bus_dmamem_write(dmat, seg, nseg, skip, , nbytes); +#else sg = guc->ctx_pool_obj->pages; sg_pcopy_from_buffer(sg->sgl, sg->nents, , sizeof(desc), sizeof(desc) * client->ctx_index); +#endif } static void guc_fini_ctx_desc(struct intel_guc *guc, struct i915_guc_client
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:16:20 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_guc_submission.c Log Message: Include for bitmap operations. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.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_guc_submission.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.4 Mon Aug 27 07:09:52 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c Mon Aug 27 07:16:20 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_guc_submission.c,v 1.4 2018/08/27 07:09:52 riastradh Exp $ */ +/* $NetBSD: i915_guc_submission.c,v 1.5 2018/08/27 07:16:20 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -24,8 +24,9 @@ * */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.4 2018/08/27 07:09:52 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.5 2018/08/27 07:16:20 riastradh Exp $"); +#include #include #include #include
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:16:10 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_vgpu.c Log Message: Use bus_space. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.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_vgpu.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.2 Mon Aug 27 04:58:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c Mon Aug 27 07:16:10 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_vgpu.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $ */ +/* $NetBSD: i915_vgpu.c,v 1.3 2018/08/27 07:16:10 riastradh Exp $ */ /* * Copyright(c) 2011-2015 Intel Corporation. All rights reserved. @@ -24,7 +24,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_vgpu.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_vgpu.c,v 1.3 2018/08/27 07:16:10 riastradh Exp $"); #include "intel_drv.h" #include "i915_vgpu.h" @@ -74,13 +74,26 @@ void i915_check_vgpu(struct drm_device * if (!IS_HASWELL(dev)) return; +#ifdef __NetBSD__ + magic = bus_space_read_8(dev_priv->regs_bst, dev_priv->regs_bsh, + vgtif_reg(magic)); +#else magic = readq(dev_priv->regs + vgtif_reg(magic)); +#endif if (magic != VGT_MAGIC) return; +#ifdef __NetBSD__ + version = INTEL_VGT_IF_VERSION_ENCODE( + bus_space_read_2(dev_priv->regs_bst, dev_priv->regs_bsh, + vgtif_reg(version_major)), + bus_space_read_2(dev_priv->regs_bst, dev_priv->regs_bsh, + vgtif_reg(version_minor))); +#else version = INTEL_VGT_IF_VERSION_ENCODE( readw(dev_priv->regs + vgtif_reg(version_major)), readw(dev_priv->regs + vgtif_reg(version_minor))); +#endif if (version != INTEL_VGT_IF_VERSION) { DRM_INFO("VGT interface version mismatch!\n"); return;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:16:00 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_stolen.c Log Message: Ifdef out more graphics stolen memory stuff for now. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.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_gem_stolen.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.7 Mon Aug 27 06:08:38 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c Mon Aug 27 07:16:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_stolen.c,v 1.7 2018/08/27 06:08:38 riastradh Exp $ */ +/* $NetBSD: i915_gem_stolen.c,v 1.8 2018/08/27 07:16:00 riastradh Exp $ */ /* * Copyright © 2008-2012 Intel Corporation @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.7 2018/08/27 06:08:38 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.8 2018/08/27 07:16:00 riastradh Exp $"); #include #include @@ -94,8 +94,8 @@ void i915_gem_stolen_remove_node(struct static unsigned long i915_stolen_to_physical(struct drm_device *dev) { -#ifndef __NetBSD__ struct drm_i915_private *dev_priv = dev->dev_private; +#ifndef __NetBSD__ struct resource *r; #endif u32 base; @@ -112,12 +112,11 @@ static unsigned long i915_stolen_to_phys * */ base = 0; +#ifndef __NetBSD__ /* XXX i915 gem gsm stolen memory base */ if (INTEL_INFO(dev)->gen >= 3) { -#ifndef __NetBSD__ /* XXX disable this for now */ /* Read Graphics Base of Stolen Memory directly */ pci_read_config_dword(dev->pdev, 0x5c, ); base &= ~((1<<20) - 1); -#endif } else if (IS_I865G(dev)) { u32 tseg_size = 0; u16 toud = 0; @@ -202,6 +201,7 @@ static unsigned long i915_stolen_to_phys base = tom - tseg_size - dev_priv->gtt.stolen_size; } +#endif if (base == 0) return 0;