CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: maya Date: Sun Apr 19 17:19:13 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c drm_probe_helper.c src/sys/external/bsd/drm2/dist/include/drm: drmP.h Log Message: For drm drivers and on monitor hotplug, report a 'display-cycle' hotkey click If powerd is running, it will invoke the script /etc/powerd/actions/display-cycle To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/dist/drm/drm_drv.c cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c cvs rdiff -u -r1.39 -r1.40 src/sys/external/bsd/drm2/dist/include/drm/drmP.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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.13 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.14 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.13 Thu Mar 5 07:46:59 2020 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Sun Apr 19 17:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.13 2020/03/05 07:46:59 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.14 2020/04/19 17:19:13 maya Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.13 2020/03/05 07:46:59 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.14 2020/04/19 17:19:13 maya Exp $"); #include #include @@ -660,6 +660,14 @@ struct drm_device *drm_dev_alloc(struct kref_init(&dev->ref); dev->dev = parent; dev->driver = driver; +#ifdef __NetBSD__ + dev->sc_monitor_hotplug.smpsw_name = PSWITCH_HK_DISPLAY_CYCLE; + dev->sc_monitor_hotplug.smpsw_type = PSWITCH_TYPE_HOTKEY; + + ret = sysmon_pswitch_register(&dev->sc_monitor_hotplug); + if (ret) + goto err_pswitch; +#endif INIT_LIST_HEAD(&dev->filelist); INIT_LIST_HEAD(&dev->ctxlist); @@ -727,6 +735,10 @@ err_free: mutex_destroy(&dev->master_mutex); mutex_destroy(&dev->ctxlist_mutex); mutex_destroy(&dev->struct_mutex); +#ifdef __NetBSD__ +err_pswitch: + sysmon_pswitch_unregister(&dev->sc_monitor_hotplug); +#endif kfree(dev); return NULL; } @@ -739,6 +751,10 @@ static void drm_dev_release(struct kref if (drm_core_check_feature(dev, DRIVER_GEM)) drm_gem_destroy(dev); +#ifdef __NetBSD__ + sysmon_pswitch_unregister(&dev->sc_monitor_hotplug); +#endif + drm_legacy_ctxbitmap_cleanup(dev); drm_ht_remove(&dev->map_hash); drm_fs_inode_free(dev->anon_inode); Index: src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c:1.4 Fri Feb 14 14:34:57 2020 +++ src/sys/external/bsd/drm2/dist/drm/drm_probe_helper.c Sun Apr 19 17:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_probe_helper.c,v 1.4 2020/02/14 14:34:57 maya Exp $ */ +/* $NetBSD: drm_probe_helper.c,v 1.5 2020/04/19 17:19:13 maya Exp $ */ /* * Copyright (c) 2006-2008 Intel Corporation @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_probe_helper.c,v 1.4 2020/02/14 14:34:57 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_probe_helper.c,v 1.5 2020/04/19 17:19:13 maya Exp $"); #include #include @@ -328,6 +328,9 @@ EXPORT_SYMBOL(drm_helper_probe_single_co */ void drm_kms_helper_hotplug_event(struct drm_device *dev) { +#ifdef __NetBSD__ + sysmon_pswitch_event(&dev->sc_monitor_hotplug, PSWITCH_EVENT_PRESSED); +#endif /* send a uevent + call fbdev */ drm_sysfs_hotplug_event(dev); if (dev->mode_config.funcs->output_poll_changed) Index: src/sys/external/bsd/drm2/dist/include/drm/drmP.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.39 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.40 --- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.39 Thu Mar 5 08:36:53 2020 +++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h Sun Apr 19 17:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drmP.h,v 1.39 2020/03/05 08:36:53 riastradh Exp $ */ +/* $NetBSD: drmP.h,v 1.40 2020/04/19 17:19:13 maya Exp $ */ /* * Internal Header for the Direct Rendering Manager @@ -903,6 +903,7 @@ struct drm_device { int irq; #ifdef __NetBSD__ struct drm_bus_irq_cookie *irq_cookie; + struct sysmon_pswitch sc_monitor_hotplug; #endif /*
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Thu Mar 5 07:46:59 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c src/sys/external/bsd/drm2/dist/include/drm: drmP.h Log Message: Avoid struct inode. This is an fs-independent structure in Linux. We don't actually use it as such; it's just a dummy struct tag. But we do have an actual struct inode in ufs and in lfs, and using the same struct tag here confuses ctf leading to four copies of pretty much every drm data structure. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/dist/drm/drm_drv.c cvs rdiff -u -r1.37 -r1.38 src/sys/external/bsd/drm2/dist/include/drm/drmP.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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.12 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.13 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.12 Fri Feb 14 14:34:57 2020 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Thu Mar 5 07:46:59 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.12 2020/02/14 14:34:57 maya Exp $ */ +/* $NetBSD: drm_drv.c,v 1.13 2020/03/05 07:46:59 riastradh Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.12 2020/02/14 14:34:57 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.13 2020/03/05 07:46:59 riastradh Exp $"); #include #include @@ -540,16 +540,14 @@ EXPORT_SYMBOL(drm_unplug_dev); #ifdef __NetBSD__ -struct inode; - -static struct inode * +static void * drm_fs_inode_new(void) { return NULL; } static void -drm_fs_inode_free(struct inode *inode) +drm_fs_inode_free(void *inode) { KASSERT(inode == NULL); } Index: src/sys/external/bsd/drm2/dist/include/drm/drmP.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.37 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.38 --- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.37 Fri Feb 14 14:34:59 2020 +++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h Thu Mar 5 07:46:59 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drmP.h,v 1.37 2020/02/14 14:34:59 maya Exp $ */ +/* $NetBSD: drmP.h,v 1.38 2020/03/05 07:46:59 riastradh Exp $ */ /* * Internal Header for the Direct Rendering Manager @@ -827,7 +827,7 @@ struct drm_device { struct drm_minor *primary; /**< Primary node */ struct drm_minor *render; /**< Render node */ atomic_t unplugged; /**< Flag whether dev is dead */ - struct inode *anon_inode; /**< inode for private address-space */ + void *anon_inode; /**< inode for private address-space */ char *unique;/**< unique name of the device */ /*@} */
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: mrg Date: Thu Sep 13 08:25:55 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c i915_drv.c i915_drv.h i915_gem_stolen.c i915_irq.c i915_reg.h intel_csr.c intel_ddi.c intel_display.c intel_dp.c intel_fbc.c intel_guc_loader.c intel_i2c.c intel_mocs.c intel_panel.c intel_pm.c intel_ringbuffer.c intel_runtime_pm.c src/sys/external/bsd/drm2/dist/include/drm: i915_pciids.h Log Message: add support for kabylake and skylake GT4 (untested) GPUs. largely taken from openbsd and linux 4.13 trees (which have this code identical), with mimimal porting to netbsd. i have not installed (and thus tested) the newer referenced firmware files. only real local change is to fix IS_BROXTON() macro to check the things valid in this era of drm. previous match would attach on KBL, and then a loop would never exit. tested on kabylake P630. needs mesa 11.x or newer for GL to work. ok @riastradh. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c cvs rdiff -u -r1.27 -r1.28 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c cvs rdiff -u -r1.16 -r1.17 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h \ src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c cvs rdiff -u -r1.22 -r1.23 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c cvs rdiff -u -r1.12 -r1.13 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_mocs.c cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/include/drm/i915_pciids.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_dma.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.25 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.25 Tue Aug 28 03:41:38 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c Thu Sep 13 08:25:55 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_dma.c,v 1.25 2018/08/28 03:41:38 riastradh Exp $ */ +/* $NetBSD: i915_dma.c,v 1.26 2018/09/13 08:25:55 mrg 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.25 2018/08/28 03:41:38 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.26 2018/09/13 08:25:55 mrg Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -693,7 +693,8 @@ static void gen9_sseu_info_init(struct d * supports EU power gating on devices with more than one EU * pair per subslice. */ - info->has_slice_pg = (IS_SKYLAKE(dev) && (info->slice_total > 1)); + info->has_slice_pg = ((IS_SKYLAKE(dev) || IS_KABYLAKE(dev)) && + (info->slice_total > 1)); info->has_subslice_pg = (IS_BROXTON(dev) && (info->subslice_total > 1)); info->has_eu_pg = (info->eu_per_subslice > 2); } 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.15 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c:1.16 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c:1.15 Mon Aug 27 15:22:54 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c Thu Sep 13 08:25:55 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_drv.c,v 1.15 2018/08/27 15:22:54 riastradh Exp $ */ +/* $NetBSD: i915_drv.c,v 1.16 2018/09/13 08:25:55 mrg 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.15 2018/08/27 15:22:54 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_drv.c,v 1.16 2018/09/13 08:25:55 mrg Exp $"); #include #include @@ -406,6 +406,34 @@ static const struct intel_device_info in IVB_CURSOR_OFFSETS, }; +static const struct intel_device_info intel_kabylake_info = { + .is_kabylake = 1, + .gen = 9, + .num_pipes = 3, + .need_gfx_hws = 1, .has_hotplug = 1, + .ring_mask = RENDER_RING | BSD_RING |
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: jmcneill Date: Sat Nov 14 23:15:44 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_edid.c src/sys/external/bsd/drm2/dist/include/drm: drm_crtc.h Log Message: parse_hdmi_vsdb: read the HDMI physical address from the HDMI VSDB and store it on the connector To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/drm_edid.c cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/include/drm/drm_crtc.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/drm_edid.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_edid.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_edid.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/drm_edid.c:1.4 Wed Jul 16 20:56:24 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_edid.c Sat Nov 14 23:15:44 2015 @@ -2984,6 +2984,9 @@ parse_hdmi_vsdb(struct drm_connector *co { u8 len = cea_db_payload_len(db); + if (len >= 5) { + connector->physical_address = (db[4] << 8) | db[5]; + } if (len >= 6) { connector->eld[5] |= (db[6] >> 7) << 1; /* Supports_AI */ connector->dvi_dual = db[6] & 1; Index: src/sys/external/bsd/drm2/dist/include/drm/drm_crtc.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drm_crtc.h:1.4 src/sys/external/bsd/drm2/dist/include/drm/drm_crtc.h:1.5 --- src/sys/external/bsd/drm2/dist/include/drm/drm_crtc.h:1.4 Thu Mar 5 17:24:36 2015 +++ src/sys/external/bsd/drm2/dist/include/drm/drm_crtc.h Sat Nov 14 23:15:44 2015 @@ -464,6 +464,7 @@ struct drm_encoder { * @force: a %DRM_FORCE_ state for forced mode sets * @encoder_ids: valid encoders for this connector * @encoder: encoder driving this connector, if any + * @physical_address: HDMI physical address * @eld: EDID-like data, if present * @dvi_dual: dual link DVI, if found * @max_tmds_clock: max clock rate, if found @@ -516,6 +517,7 @@ struct drm_connector { struct drm_encoder *encoder; /* currently active encoder */ /* EDID bits */ + uint16_t physical_address; uint8_t eld[MAX_ELD_BYTES]; bool dvi_dual; int max_tmds_clock; /* in MHz */
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:54:08 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c src/sys/external/bsd/drm2/dist/include/drm: drmP.h Log Message: Massage drm_drv.c into usability. - expose drm_minor_lock/drm_minors_idr for drm_init in drm_module.c - ifdef out Linux driver attachment goo To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/drm_drv.c cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/drm2/dist/include/drm/drmP.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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.4 Mon Aug 27 06:53:46 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Mon Aug 27 06:54:08 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.4 2018/08/27 06:53:46 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.5 2018/08/27 06:54:08 riastradh Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.4 2018/08/27 06:53:46 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.5 2018/08/27 06:54:08 riastradh Exp $"); #include #include @@ -59,11 +59,12 @@ MODULE_PARM_DESC(timestamp_monotonic, "U module_param_named(debug, drm_debug, int, 0600); #ifdef __NetBSD__ -static spinlock_t drm_minor_lock; +spinlock_t drm_minor_lock; +struct idr drm_minors_idr; #else static DEFINE_SPINLOCK(drm_minor_lock); -#endif static struct idr drm_minors_idr; +#endif #ifndef __NetBSD__ static struct dentry *drm_debugfs_root; @@ -329,7 +330,9 @@ static void drm_minor_free(struct drm_de if (!minor) return; +#ifndef __NetBSD__ put_device(minor->kdev); +#endif spin_lock_irqsave(&drm_minor_lock, flags); idr_remove(&drm_minors_idr, minor->index); @@ -386,7 +389,11 @@ static void drm_minor_unregister(struct unsigned long flags; minor = *drm_minor_get_slot(dev, type); +#ifdef __NetBSD__ + if (!minor) +#else if (!minor || !device_is_registered(minor->kdev)) +#endif return; /* replace @minor with NULL so lookups will fail from now on */ @@ -394,9 +401,11 @@ static void drm_minor_unregister(struct idr_replace(&drm_minors_idr, NULL, minor->index); spin_unlock_irqrestore(&drm_minor_lock, flags); +#ifndef __NetBSD__ device_del(minor->kdev); dev_set_drvdata(minor->kdev, NULL); /* safety belt */ drm_debugfs_cleanup(minor); +#endif } /** @@ -913,6 +922,8 @@ int drm_dev_set_unique(struct drm_device } EXPORT_SYMBOL(drm_dev_set_unique); +#ifndef __NetBSD__ + /* * DRM Core * The DRM core module initializes all global DRM objects and makes them @@ -1023,3 +1034,5 @@ static void __exit drm_core_exit(void) module_init(drm_core_init); module_exit(drm_core_exit); + +#endif Index: src/sys/external/bsd/drm2/dist/include/drm/drmP.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.20 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.21 --- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.20 Mon Aug 27 06:50:58 2018 +++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h Mon Aug 27 06:54:08 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drmP.h,v 1.20 2018/08/27 06:50:58 riastradh Exp $ */ +/* $NetBSD: drmP.h,v 1.21 2018/08/27 06:54:08 riastradh Exp $ */ /* * Internal Header for the Direct Rendering Manager @@ -986,6 +986,8 @@ static inline bool drm_is_primary_client extern int drm_ioctl_permit(u32 flags, struct drm_file *file_priv); #ifdef __NetBSD__ extern int drm_ioctl(struct file *, unsigned long, void *); +extern struct spinlock drm_minor_lock; +extern struct idr drm_minors_idr; #else extern long drm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:56:03 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_dp_mst_topology.c src/sys/external/bsd/drm2/dist/include/drm: drm_dp_mst_helper.h Log Message: Rework drm_dp_mst_topology.c. - Need for dev_name. - Need for EXPORT_*. - Need for THIS_MODULE. - Ifdef out debugfs stuff. - Mark unused variables as such. - Convert to drm waitqueue. (There's even a lock here already...) - Initialize and destroy mutexes appropriately. - Ifdef out of_node. Hope nobody needed it! To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/drm_dp_mst_topology.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/include/drm/drm_dp_mst_helper.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/drm_dp_mst_topology.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_dp_mst_topology.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_dp_mst_topology.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_dp_mst_topology.c:1.2 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_dp_mst_topology.c Mon Aug 27 06:56:02 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_dp_mst_topology.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_dp_mst_topology.c,v 1.3 2018/08/27 06:56:02 riastradh Exp $ */ /* * Copyright © 2014 Red Hat @@ -23,7 +23,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_dp_mst_topology.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_dp_mst_topology.c,v 1.3 2018/08/27 06:56:02 riastradh Exp $"); #include #include @@ -32,6 +32,9 @@ __KERNEL_RCSID(0, "$NetBSD: drm_dp_mst_t #include #include #include +#include +#include +#include #include #include @@ -44,8 +47,10 @@ __KERNEL_RCSID(0, "$NetBSD: drm_dp_mst_t * protocol. The helpers contain a topology manager and bandwidth manager. * The helpers encapsulate the sending and received of sideband msgs. */ +#if IS_ENABLED(CONFIG_DEBUG_FS) static bool dump_dp_payload_table(struct drm_dp_mst_topology_mgr *mgr, char *buf); +#endif static int test_calc_pbn_mode(void); static void drm_dp_put_port(struct drm_dp_mst_port *port); @@ -324,7 +329,7 @@ static bool drm_dp_sideband_msg_build(st u8 *replybuf, u8 replybuflen, bool hdr) { int ret; - u8 crc4; + u8 crc4 __unused; /* XXX Mistake? */ if (hdr) { u8 hdrlen; @@ -762,10 +767,16 @@ static int drm_dp_mst_wait_tx_reply(stru struct drm_dp_mst_topology_mgr *mgr = mstb->mgr; int ret; +#ifdef __NetBSD__ + mutex_lock(&mstb->mgr->qlock); + DRM_TIMED_WAIT_UNTIL(ret, &mgr->tx_waitq, &mstb->mgr->qlock, 4*HZ, + check_txmsg_state(mgr, txmsg)); +#else ret = wait_event_timeout(mgr->tx_waitq, check_txmsg_state(mgr, txmsg), (4 * HZ)); mutex_lock(&mstb->mgr->qlock); +#endif if (ret > 0) { if (txmsg->state == DRM_DP_SIDEBAND_TX_TIMEOUT) { ret = -EIO; @@ -859,10 +870,16 @@ static void drm_dp_destroy_mst_branch_de mstb->tx_slots[1] = NULL; wake_tx = true; } +#ifdef __NetBSD__ + if (wake_tx) + DRM_WAKEUP_ONE(&mstb->mgr->tx_waitq, &mstb->mgr->qlock); + mutex_unlock(&mstb->mgr->qlock); +#else mutex_unlock(&mstb->mgr->qlock); if (wake_tx) wake_up(&mstb->mgr->tx_waitq); +#endif kref_put(kref, drm_dp_free_mst_branch_device); } @@ -1027,7 +1044,7 @@ static u8 drm_dp_calculate_rad(struct dr */ static bool drm_dp_port_setup_pdt(struct drm_dp_mst_port *port) { - int ret; + int ret __unused; u8 rad[6], lct; bool send_link = false; switch (port->pdt) { @@ -1051,7 +1068,7 @@ static bool drm_dp_port_setup_pdt(struct static void drm_dp_check_mstb_guid(struct drm_dp_mst_branch *mstb, u8 *guid) { - int ret; + int ret __unused; memcpy(mstb->guid, guid, 16); @@ -1520,7 +1537,11 @@ static void process_single_down_tx_qlock if (txmsg->seqno != -1) txmsg->dst->tx_slots[txmsg->seqno] = NULL; txmsg->state = DRM_DP_SIDEBAND_TX_TIMEOUT; +#ifdef __NetBSD__ + DRM_WAKEUP_ONE(&mgr->tx_waitq, &mgr->qlock); +#else wake_up(&mgr->tx_waitq); +#endif } if (list_empty(&mgr->tx_msg_downq)) { mgr->tx_down_in_progress = false; @@ -1556,7 +1577,7 @@ static void drm_dp_queue_down_tx(struct static void drm_dp_send_link_address(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_branch *mstb) { - int len; + int len __unused; struct drm_dp_sideband_msg_tx *txmsg; int ret; @@ -1610,7 +1631,7 @@ static int drm_dp_send_enum_path_resourc struct drm_dp_mst_branch *mstb, struct drm_dp_mst_port *port) { - int len; + int len __unused; struct drm_dp_sideband_msg_tx *txmsg; int ret; @@ -1678,7 +1699,7 @@ static int drm_dp_payload_send_msg(struc { struct drm_dp_sideband_msg_tx *txmsg; struct drm_dp_mst_branch *mstb; - int len, ret, port_num; + int len __unused, ret, port_num;
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:19:02 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_gem.c src/sys/external/bsd/drm2/dist/drm/i915: i915_drv.h i915_gem.c i915_gem_render_state.c i915_gem_shrinker.c src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_bo.c nouveau_gem.c src/sys/external/bsd/drm2/dist/include/drm: drm_gem.h Log Message: Rename drm_gem_object::gemo_shm_uao -> drm_gem_object::filp. The Linux member that is basically analogous to this is named so, which means we can eliminate a few diffs this way. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/drm_gem.c cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h cvs rdiff -u -r1.42 -r1.43 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_gem.c cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/include/drm/drm_gem.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/drm_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.7 src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.7 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_gem.c Mon Aug 27 07:19:01 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_gem.c,v 1.7 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_gem.c,v 1.8 2018/08/27 07:19:01 riastradh Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_gem.c,v 1.7 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_gem.c,v 1.8 2018/08/27 07:19:01 riastradh Exp $"); #include #include @@ -165,14 +165,14 @@ int drm_gem_object_init(struct drm_devic * A uao may not have size 0, but a gem object may. Allocate a * spurious page so we needn't teach uao how to have size 0. */ - obj->gemo_shm_uao = uao_create(MAX(size, PAGE_SIZE), 0); + obj->filp = uao_create(MAX(size, PAGE_SIZE), 0); /* * XXX This is gross. We ought to do it the other way around: * set the uao to have the main uvm object's lock. However, * uvm_obj_setlock is not safe on uvm_aobjs. */ - mutex_obj_hold(obj->gemo_shm_uao->vmobjlock); - uvm_obj_setlock(&obj->gemo_uvmobj, obj->gemo_shm_uao->vmobjlock); + mutex_obj_hold(obj->filp->vmobjlock); + uvm_obj_setlock(&obj->gemo_uvmobj, obj->filp->vmobjlock); #else filp = shmem_file_setup("drm mm object", size, VM_NORESERVE); if (IS_ERR(filp)) @@ -202,7 +202,7 @@ void drm_gem_private_object_init(struct obj->dev = dev; #ifdef __NetBSD__ - obj->gemo_shm_uao = NULL; + obj->filp = NULL; KASSERT(drm_core_check_feature(dev, DRIVER_GEM)); KASSERT(dev->driver->gem_uvm_ops != NULL); uvm_obj_init(&obj->gemo_uvmobj, dev->driver->gem_uvm_ops, true, 1); @@ -537,7 +537,7 @@ drm_gem_get_pages(struct drm_gem_object TAILQ_INIT(&pglist); /* XXX errno NetBSD->Linux */ - ret = -uvm_obj_wirepages(obj->gemo_shm_uao, 0, obj->size, &pglist); + ret = -uvm_obj_wirepages(obj->filp, 0, obj->size, &pglist); if (ret) goto fail1; @@ -618,7 +618,7 @@ drm_gem_put_pages(struct drm_gem_object pages[i]->p_vmp.flags &= ~PG_CLEAN; } - uvm_obj_unwirepages(obj->gemo_shm_uao, 0, obj->size); + uvm_obj_unwirepages(obj->filp, 0, obj->size); } #else void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages, @@ -862,8 +862,8 @@ drm_gem_object_release(struct drm_gem_ob #ifdef __NetBSD__ drm_vma_node_destroy(&obj->vma_node); - if (obj->gemo_shm_uao) - uao_detach(obj->gemo_shm_uao); + if (obj->filp) + uao_detach(obj->filp); uvm_obj_destroy(&obj->gemo_uvmobj, true); #else if (obj->filp) 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.18 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.18 Mon Aug 27 07:17:35 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h Mon Aug 27 07:19:01 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_drv.h,v 1.18 2018/08/27 07:17:35 riastradh Exp $ */ +/* $NetBSD: i915_drv.h,v 1.19 2018/08/27 07:19:01 riastradh Exp $ */ /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- */ @@ -2956,9 +2956,9 @@ i915_gem_object_get_page(struct drm_i915 * lock to prevent them from disappearing. */ KASSERT(obj->pages != NULL); - mutex_enter(obj->base.gemo_shm_uao->vmobjlock); - page = uvm_pagelookup(obj->base.gemo_shm_uao, ptoa(
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:45:33 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/ttm: ttm_bo_util.c src/sys/external/bsd/drm2/dist/include/drm/ttm: ttm_bo_api.h Log Message: Reduce some logic duplication and just use vmap/kmap here. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_api.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/ttm/ttm_bo_util.c diff -u src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c:1.10 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c:1.11 --- src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c:1.10 Mon Aug 27 07:45:23 2018 +++ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c Mon Aug 27 07:45:33 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_util.c,v 1.10 2018/08/27 07:45:23 riastradh Exp $ */ +/* $NetBSD: ttm_bo_util.c,v 1.11 2018/08/27 07:45:33 riastradh Exp $ */ /** * @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ttm_bo_util.c,v 1.10 2018/08/27 07:45:23 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ttm_bo_util.c,v 1.11 2018/08/27 07:45:33 riastradh Exp $"); #include #include @@ -647,10 +647,6 @@ static int ttm_bo_kmap_ttm(struct ttm_bu struct ttm_mem_reg *mem = &bo->mem; pgprot_t prot; struct ttm_tt *ttm = bo->ttm; -#ifdef __NetBSD__ - unsigned i; - vaddr_t vaddr; -#endif int ret; BUG_ON(!ttm); @@ -661,30 +657,6 @@ static int ttm_bo_kmap_ttm(struct ttm_bu return ret; } -#ifdef __NetBSD__ - /* - * Can't use uvm_map here because it provides no way to pass - * along the cacheability flags. So we'll uvm_km_alloc - * ourselves some KVA and then pmap_kenter_pa directly. - */ - - KASSERT(num_pages <= ttm->num_pages); - KASSERT(start_page <= (ttm->num_pages - num_pages)); - prot = ttm_io_prot(mem->placement, (VM_PROT_READ | VM_PROT_WRITE)); - vaddr = uvm_km_alloc(kernel_map, (num_pages << PAGE_SHIFT), PAGE_SIZE, - UVM_KMF_VAONLY | UVM_KMF_CANFAIL | UVM_KMF_WAITVA); - if (vaddr == 0) - return -ENOMEM; - for (i = 0; i < num_pages; i++) - pmap_kenter_pa(vaddr + i*PAGE_SIZE, - page_to_phys(ttm->pages[start_page + i]), - (VM_PROT_READ | VM_PROT_WRITE), prot); - pmap_update(pmap_kernel()); - map->bo_kmap_type = ttm_bo_map_vmap; - map->u.uvm.vsize = (num_pages << PAGE_SHIFT); - map->virtual = (void *)vaddr; - return 0; -#else if (num_pages == 1 && (mem->placement & TTM_PL_FLAG_CACHED)) { /* * We're mapping a single page, and the desired @@ -692,8 +664,13 @@ static int ttm_bo_kmap_ttm(struct ttm_bu */ map->bo_kmap_type = ttm_bo_map_kmap; +#ifdef __NetBSD__ + map->u.kmapped.page = ttm->pages[start_page]; + map->virtual = kmap(map->u.kmapped.page); +#else map->page = ttm->pages[start_page]; map->virtual = kmap(map->page); +#endif } else { /* * We need to use vmap to get the desired page protection @@ -703,9 +680,11 @@ static int ttm_bo_kmap_ttm(struct ttm_bu map->bo_kmap_type = ttm_bo_map_vmap; map->virtual = vmap(ttm->pages + start_page, num_pages, 0, prot); +#ifdef __NetBSD__ + map->u.vmapped.vsize = (vsize_t)num_pages << PAGE_SHIFT; +#endif } return (!map->virtual) ? -ENOMEM : 0; -#endif } int ttm_bo_kmap(struct ttm_buffer_object *bo, @@ -764,17 +743,14 @@ void ttm_bo_kunmap(struct ttm_bo_kmap_ob break; case ttm_bo_map_vmap: #ifdef __NetBSD__ - pmap_kremove((vaddr_t)map->virtual, map->u.uvm.vsize); - pmap_update(pmap_kernel()); - uvm_km_free(kernel_map, (vaddr_t)map->virtual, - map->u.uvm.vsize, UVM_KMF_VAONLY); + vunmap(map->virtual, map->u.vmapped.vsize >> PAGE_SHIFT); #else vunmap(map->virtual); #endif break; case ttm_bo_map_kmap: #ifdef __NetBSD__ - panic("ttm_bo_map_kmap does not exist in NetBSD"); + kunmap(map->u.kmapped.page); #else kunmap(map->page); #endif Index: src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_api.h diff -u src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_api.h:1.3 src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_api.h:1.4 --- src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_api.h:1.3 Mon Aug 27 04:58:38 2018 +++ src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_api.h Mon Aug 27 07:45:33 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ttm_bo_api.h,v 1.3 2018/08/27 04:58:38 riastradh Exp $ */ +/* $NetBSD: ttm_bo_api.h,v 1.4 2018/08/27 07:45:33 riastradh Exp $ */ /** * @@ -301,7 +301,10 @@ struct ttm_bo_kmap_obj { } io; struct { vsize_t vsize; - } uvm; + } vmapped; + struct { + struct page *page; + } kmapped; } u; #else struct page *page;
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:42:47 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c src/sys/external/bsd/drm2/dist/include/drm: drmP.h Log Message: Put file, line, func in DRM_ERROR messages. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/drm_drv.c cvs rdiff -u -r1.24 -r1.25 src/sys/external/bsd/drm2/dist/include/drm/drmP.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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.7 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.7 Mon Aug 27 13:42:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Mon Aug 27 13:42:47 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.7 2018/08/27 13:42:24 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.8 2018/08/27 13:42:47 riastradh Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.7 2018/08/27 13:42:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.8 2018/08/27 13:42:47 riastradh Exp $"); #include #include @@ -70,18 +70,20 @@ static struct idr drm_minors_idr; static struct dentry *drm_debugfs_root; #endif -void drm_err(const char *format, ...) -{ #ifdef __NetBSD__ +void +drm_err(const char *file, int line, const char *func, const char *format, ...) +{ va_list args; va_start(args, format); - /* XXX Convert this to a symbol name... */ - printf(KERN_ERR "[" DRM_NAME ":%p] *ERROR* ", - __builtin_return_address(0)); + printf(KERN_ERR "[" DRM_NAME ":(%s:%d)%s] *ERROR* ", file, line, func); vprintf(format, args); va_end(args); +} #else +void drm_err(const char *format, ...) +{ struct va_format vaf; va_list args; @@ -94,8 +96,8 @@ void drm_err(const char *format, ...) __builtin_return_address(0), &vaf); va_end(args); -#endif } +#endif EXPORT_SYMBOL(drm_err); void drm_ut_debug_printk(const char *function_name, const char *format, ...) Index: src/sys/external/bsd/drm2/dist/include/drm/drmP.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.24 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.25 --- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.24 Mon Aug 27 13:36:32 2018 +++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h Mon Aug 27 13:42:47 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drmP.h,v 1.24 2018/08/27 13:36:32 riastradh Exp $ */ +/* $NetBSD: drmP.h,v 1.25 2018/08/27 13:42:47 riastradh Exp $ */ /* * Internal Header for the Direct Rendering Manager @@ -149,8 +149,8 @@ struct dma_buf_attachment; extern __printf(2, 3) void drm_ut_debug_printk(const char *function_name, const char *format, ...); -extern __printf(1, 2) -void drm_err(const char *format, ...); +extern __printf(4, 5) +void drm_err(const char *file, int line, const char *func, const char *format, ...); /***/ /** \name DRM template customization defaults */ @@ -201,7 +201,7 @@ void drm_err(const char *format, ...); * \param arg arguments */ #define DRM_ERROR(fmt, ...)\ - drm_err(fmt, ##__VA_ARGS__) + drm_err(__FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__) /** * Rate limited error output. Like DRM_ERROR() but won't flood the log. @@ -216,7 +216,7 @@ void drm_err(const char *format, ...); DEFAULT_RATELIMIT_BURST); \ \ if (__ratelimit(&_rs)) \ - drm_err(fmt, ##__VA_ARGS__);\ + drm_err(__FILE__, __LINE__, __func__, fmt, ##__VA_ARGS__);\ }) /**
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:42:43 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_irq.c src/sys/external/bsd/drm2/dist/include/drm: drmP.h Log Message: Rework vblank locking. New drm_vblank_get/put_locked subroutines. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/dist/drm/drm_irq.c cvs rdiff -u -r1.25 -r1.26 src/sys/external/bsd/drm2/dist/include/drm/drmP.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/drm_irq.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.12 src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.13 --- src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.12 Mon Aug 27 07:03:39 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_irq.c Mon Aug 27 14:42:43 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_irq.c,v 1.12 2018/08/27 07:03:39 riastradh Exp $ */ +/* $NetBSD: drm_irq.c,v 1.13 2018/08/27 14:42:43 riastradh Exp $ */ /* * drm_irq.c IRQ and vblank support @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.12 2018/08/27 07:03:39 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.13 2018/08/27 14:42:43 riastradh Exp $"); #include #include "drm_trace.h" @@ -62,6 +62,10 @@ __KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v #include #endif +/* + * Lock order: dev->event_lock, then dev->vbl_lock, then dev->vblank_time_lock + */ + /* Access macro for slots in vblank timestamp ringbuffer. */ #define vblanktimestamp(dev, pipe, count) \ ((dev)->vblank[pipe].time[(count) % DRM_VBLANKTIME_RBSIZE]) @@ -144,6 +148,8 @@ static void drm_reset_vblank_timestamp(s struct timeval t_vblank; int count = DRM_TIMESTAMP_MAXRETRIES; + assert_spin_locked(&dev->vbl_lock); + spin_lock(&dev->vblank_time_lock); /* @@ -198,6 +204,8 @@ static void drm_update_vblank_count(stru int count = DRM_TIMESTAMP_MAXRETRIES; int framedur_ns = vblank->framedur_ns; + assert_spin_locked(&dev->vbl_lock); + /* * Interrupts were disabled prior to this call, so deal with counter * wrap if needed. @@ -331,6 +339,8 @@ static void vblank_disable_and_save(stru struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; unsigned long irqflags; + assert_spin_locked(&dev->vbl_lock); + /* Prevent vblank irq processing while disabling vblank irqs, * so no updates of timestamps or count can happen after we've * disabled. Needed to prevent races in case of delayed irq's. @@ -358,6 +368,23 @@ static void vblank_disable_and_save(stru spin_unlock_irqrestore(&dev->vblank_time_lock, irqflags); } +static void +vblank_disable_locked(struct drm_vblank_crtc *vblank, struct drm_device *dev, +unsigned int pipe) +{ + + BUG_ON(vblank != &dev->vblank[pipe]); + assert_spin_locked(&dev->vbl_lock); + + if (!dev->vblank_disable_allowed) + return; + + if (atomic_read(&vblank->refcount) == 0 && vblank->enabled) { + DRM_DEBUG("disabling vblank on crtc %u\n", pipe); + vblank_disable_and_save(dev, pipe); + } +} + static void vblank_disable_fn(unsigned long arg) { struct drm_vblank_crtc *vblank = (void *)arg; @@ -1269,31 +1296,24 @@ static int drm_vblank_enable(struct drm_ } /** - * drm_vblank_get - get a reference count on vblank events + * drm_vblank_get_locked - like drm_vblank_get but caller holds lock * @dev: DRM device * @pipe: index of CRTC to own - * - * Acquire a reference count on vblank events to avoid having them disabled - * while in use. - * - * This is the legacy version of drm_crtc_vblank_get(). - * - * Returns: - * Zero on success or a negative error code on failure. */ -int drm_vblank_get(struct drm_device *dev, unsigned int pipe) +int +drm_vblank_get_locked(struct drm_device *dev, unsigned int pipe) { struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; - unsigned long irqflags; int ret = 0; + assert_spin_locked(&dev->vbl_lock); + if (!dev->num_crtcs) return -EINVAL; if (WARN_ON(pipe >= dev->num_crtcs)) return -EINVAL; - spin_lock_irqsave(&dev->vbl_lock, irqflags); /* Going from 0->1 means we have to enable interrupts again */ if (atomic_add_return(1, &vblank->refcount) == 1) { ret = drm_vblank_enable(dev, pipe); @@ -1303,6 +1323,30 @@ int drm_vblank_get(struct drm_device *de ret = -EINVAL; } } + + return ret; +} + +/** + * drm_vblank_get - get a reference count on vblank events + * @dev: DRM device + * @pipe: index of CRTC to own + * + * Acquire a reference count on vblank events to avoid having them disabled + * while in use. + * + * This is the legacy version of drm_crtc_vblank_get(). + * + * Returns: + * Zero on success or a negative error code on failure. + */ +int drm_vblank_get(struct drm_device *dev, unsigned int pipe) +{ + unsigned long irqflags; + int ret; + + spin_lock_irqsave(&dev->vbl_lock, irqflags); + ret = drm_vblank_get_locked(dev, pipe); spin_unlock_irqrestore(&
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Mon Aug 27 15:26:00 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_prime.c src/sys/external/bsd/drm2/dist/include/drm: drmP.h Log Message: Fill out drm_prime_* API a little more for NetBSD. Add comment explaining our use of struct sg_table. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/drm_prime.c cvs rdiff -u -r1.27 -r1.28 src/sys/external/bsd/drm2/dist/include/drm/drmP.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/drm_prime.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_prime.c:1.3 src/sys/external/bsd/drm2/dist/drm/drm_prime.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/drm_prime.c:1.3 Mon Aug 27 15:22:54 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_prime.c Mon Aug 27 15:26:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_prime.c,v 1.3 2018/08/27 15:22:54 riastradh Exp $ */ +/* $NetBSD: drm_prime.c,v 1.4 2018/08/27 15:26:00 riastradh Exp $ */ /* * Copyright © 2012 Red Hat @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_prime.c,v 1.3 2018/08/27 15:22:54 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_prime.c,v 1.4 2018/08/27 15:26:00 riastradh Exp $"); #include #include @@ -38,6 +38,20 @@ __KERNEL_RCSID(0, "$NetBSD: drm_prime.c, #include "drm_internal.h" +#ifdef __NetBSD__ + +/* + * We use struct sg_table just to pass around an array of + * bus_dma_segment_t from one device to another in drm prime. Since + * this is _not_ a complete implementation of Linux's sg table + * abstraction (e.g., it does not remember DMA addresses and RAM pages + * separately, and it doesn't support the nested chained iteration of + * Linux scatterlists), we isolate it to this file and make all callers + * go through a few extra subroutines (drm_prime_sg_size, + * drm_prime_sg_free, &c.) to use it. Don't use this outside drm + * prime! + */ + struct sg_table { bus_dma_segment_t *sgt_segs; int sgt_nsegs; @@ -94,6 +108,30 @@ sg_alloc_table_from_pglist(struct sg_tab return 0; } +static int +sg_alloc_table_from_bus_dmamem(struct sg_table *sgt, bus_dma_segment_t *segs, +int nsegs, gfp_t gfp) +{ + int seg; + + KASSERT(nsegs > 0); + sgt->sgt_segs = kcalloc(nsegs, sizeof(sgt->sgt_segs[0]), gfp); + if (sgt->sgt_segs == NULL) + return -ENOMEM; + sgt->sgt_nsegs = nsegs; + sgt->sgt_size = 0; + + for (seg = 0; seg < nsegs; seg++) { + sgt->sgt_segs[seg].ds_addr = segs[seg].ds_addr; + sgt->sgt_segs[seg].ds_len = segs[seg].ds_len; + KASSERT(segs[seg].ds_len <= __type_max(bus_size_t) - + sgt->sgt_size); + sgt->sgt_size += segs[seg].ds_len; + } + + return 0; +} + static void sg_free_table(struct sg_table *sgt) { @@ -104,6 +142,8 @@ sg_free_table(struct sg_table *sgt) sgt->sgt_size = 0; } +#endif /* __NetBSD__ */ + /* * DMA-BUF/GEM Object references and lifetime overview: * @@ -795,6 +835,28 @@ EXPORT_SYMBOL(drm_prime_pages_to_sg); #ifdef __NetBSD__ struct sg_table * +drm_prime_bus_dmamem_to_sg(bus_dma_segment_t *segs, int nsegs) +{ + struct sg_table *sg; + int ret; + + sg = kmalloc(sizeof(*sg), GFP_KERNEL); + if (sg == NULL) { + ret = -ENOMEM; + goto out; + } + + ret = sg_alloc_table_from_bus_dmamem(sg, segs, nsegs, GFP_KERNEL); + if (ret) + goto out; + + return sg; +out: + kfree(sg); + return ERR_PTR(ret); +} + +struct sg_table * drm_prime_pglist_to_sg(struct pglist *pglist, unsigned npages) { struct sg_table *sg; @@ -818,6 +880,13 @@ out: return ERR_PTR(ret); } +bus_size_t +drm_prime_sg_size(struct sg_table *sg) +{ + + return sg->sgt_size; +} + void drm_prime_sg_free(struct sg_table *sg) { @@ -836,6 +905,15 @@ drm_prime_bus_dmamap_load_sgt(bus_dma_ta sgt->sgt_size, BUS_DMA_NOWAIT); } +int +drm_prime_bus_dmamem_map(bus_dma_tag_t dmat, struct sg_table *sgt, void **kvap, +int flags) +{ + + return -bus_dmamem_map(dmat, sgt->sgt_segs, sgt->sgt_nsegs, + sgt->sgt_size, kvap, flags); +} + #else /* !__NetBSD__ */ /** Index: src/sys/external/bsd/drm2/dist/include/drm/drmP.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.27 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.28 --- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.27 Mon Aug 27 15:22:54 2018 +++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h Mon Aug 27 15:26:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drmP.h,v 1.27 2018/08/27 15:22:54 riastradh Exp $ */ +/* $NetBSD: drmP.h,v 1.28 2018/08/27 15:26:00 riastradh Exp $ */ /* * Internal Header for the Direct Rendering Manager @@ -1183,7 +1183,10 @@ extern void drm_gem_dmabuf_release(struc #ifdef __NetBSD__ extern int drm_prime_bus_dmamap_load_sgt(bus_dma_tag_t, bus_dmamap_t, struct sg_table *); +extern int drm_prime_bus_dmamem_map(bus_dma_tag_t, struct sg_table *, void **, int); +extern struct sg_table *drm_prime_bus_dmamem_to_sg(bu
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Wed Jul 16 20:03:57 UTC 2014 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_agpsupport.c drm_buffer.c drm_bufs.c drm_context.c drm_crtc.c drm_crtc_helper.c drm_debugfs.c drm_dp_helper.c drm_edid.c drm_fb_helper.c drm_gem.c drm_ioctl.c drm_irq.c drm_mm.c drm_modes.c drm_pci.c drm_platform.c drm_stub.c src/sys/external/bsd/drm2/dist/drm/i915: dvo_ch7xxx.c i915_dma.c i915_drv.c i915_drv.h i915_gem.c i915_gem_context.c i915_gem_execbuffer.c i915_gem_tiling.c i915_irq.c intel_bios.c intel_crt.c intel_ddi.c intel_display.c intel_dp.c intel_drv.h intel_hdmi.c intel_i2c.c intel_lvds.c intel_opregion.c intel_overlay.c intel_panel.c intel_pm.c intel_ringbuffer.c intel_ringbuffer.h intel_sdvo.c intel_tv.c intel_uncore.c src/sys/external/bsd/drm2/dist/drm/vmwgfx: vmwgfx_kms.c src/sys/external/bsd/drm2/dist/include/drm: drmP.h drm_crtc.h drm_crtc_helper.h drm_fb_helper.h drm_mm.h drm_modes.h src/sys/external/bsd/drm2/dist/uapi/drm: drm.h drm_mode.h Removed Files: src/sys/external/bsd/drm2/dist/drm: drm_edid_modes.h drm_proc.c src/sys/external/bsd/drm2/dist/drm/i915: intel_fb.c src/sys/external/bsd/drm2/dist/uapi/drm: mga_drm.h Log Message: fix merge conflicts To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c \ src/sys/external/bsd/drm2/dist/drm/drm_buffer.c \ src/sys/external/bsd/drm2/dist/drm/drm_context.c \ src/sys/external/bsd/drm2/dist/drm/drm_crtc.c \ src/sys/external/bsd/drm2/dist/drm/drm_crtc_helper.c \ src/sys/external/bsd/drm2/dist/drm/drm_debugfs.c \ src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c \ src/sys/external/bsd/drm2/dist/drm/drm_edid.c \ src/sys/external/bsd/drm2/dist/drm/drm_gem.c \ src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c \ src/sys/external/bsd/drm2/dist/drm/drm_mm.c \ src/sys/external/bsd/drm2/dist/drm/drm_pci.c \ src/sys/external/bsd/drm2/dist/drm/drm_platform.c cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/drm_bufs.c \ src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c cvs rdiff -u -r1.1.1.1 -r0 \ src/sys/external/bsd/drm2/dist/drm/drm_edid_modes.h cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/drm_irq.c \ src/sys/external/bsd/drm2/dist/drm/drm_modes.c \ src/sys/external/bsd/drm2/dist/drm/drm_stub.c cvs rdiff -u -r1.2 -r0 src/sys/external/bsd/drm2/dist/drm/drm_proc.c cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/dvo_ch7xxx.c \ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_execbuffer.c \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_tiling.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_context.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h cvs rdiff -u -r1.6 -r1.7 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c cvs rdiff -u -r1.1.1.1 -r0 src/sys/external/bsd/drm2/dist/drm/i915/intel_fb.c cvs rdiff -u -r1.1.1.1 -r1.2 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/vmwgfx/vmwgfx_kms.c cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/include/drm/drmP.h cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/include/drm/drm_crtc.h \ src/sys/external/bsd/drm2/dist/include/drm/drm_crtc_helper.h \ src/sys/external/bsd/drm2/dist/include/drm/drm_fb_helper.h cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/include/drm/drm_mm.h cvs rdiff -u -r1.1.1.1 -r1.2 \ src/sys/external/bsd/drm
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: riastradh Date: Thu Jul 24 21:36:39 UTC 2014 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_fb_helper.c src/sys/external/bsd/drm2/dist/include/drm: drm_fb_helper.h Log Message: Expose drm fb helpers for ddb enter/exit. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/include/drm/drm_fb_helper.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/drm_fb_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.6 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.6 Wed Jul 16 20:56:24 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c Thu Jul 24 21:36:39 2014 @@ -173,7 +173,6 @@ static int drm_fb_helper_parse_command_l } #endif -#ifndef __NetBSD__ /* XXX fb info */ static void drm_fb_helper_save_lut_atomic(struct drm_crtc *crtc, struct drm_fb_helper *helper) { uint16_t *r_base, *g_base, *b_base; @@ -208,9 +207,16 @@ static void drm_fb_helper_restore_lut_at * drm_fb_helper_debug_enter - implementation for ->fb_debug_enter * @info: fbdev registered by the helper */ +#ifndef __NetBSD__ int drm_fb_helper_debug_enter(struct fb_info *info) { - struct drm_fb_helper *helper = info->par; + return drm_fb_helper_debug_enter_fb(info->par); +} +#endif + +int +drm_fb_helper_debug_enter_fb(struct drm_fb_helper *helper) +{ struct drm_crtc_helper_funcs *funcs; int i; @@ -257,9 +263,16 @@ static struct drm_framebuffer *drm_mode_ * drm_fb_helper_debug_leave - implementation for ->fb_debug_leave * @info: fbdev registered by the helper */ +#ifndef __NetBSD__ int drm_fb_helper_debug_leave(struct fb_info *info) { - struct drm_fb_helper *helper = info->par; + return drm_fb_helper_debug_leave_fb(info->par); +} +#endif + +int +drm_fb_helper_debug_leave_fb(struct drm_fb_helper *helper) +{ struct drm_crtc *crtc; struct drm_crtc_helper_funcs *funcs; struct drm_framebuffer *fb; @@ -287,7 +300,6 @@ int drm_fb_helper_debug_leave(struct fb_ return 0; } EXPORT_SYMBOL(drm_fb_helper_debug_leave); -#endif /** * drm_fb_helper_restore_fbdev_mode - restore fbdev configuration Index: src/sys/external/bsd/drm2/dist/include/drm/drm_fb_helper.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drm_fb_helper.h:1.5 src/sys/external/bsd/drm2/dist/include/drm/drm_fb_helper.h:1.6 --- src/sys/external/bsd/drm2/dist/include/drm/drm_fb_helper.h:1.5 Thu Jul 24 21:18:40 2014 +++ src/sys/external/bsd/drm2/dist/include/drm/drm_fb_helper.h Thu Jul 24 21:36:39 2014 @@ -139,6 +139,8 @@ int drm_fb_helper_single_add_all_connect int drm_fb_helper_debug_enter(struct fb_info *info); int drm_fb_helper_debug_leave(struct fb_info *info); #endif +int drm_fb_helper_debug_enter_fb(struct drm_fb_helper *fb_helper); +int drm_fb_helper_debug_leave_fb(struct drm_fb_helper *fb_helper); struct drm_display_mode * drm_has_preferred_mode(struct drm_fb_helper_connector *fb_connector, int width, int height);
CVS commit: src/sys/external/bsd/drm2/dist
Module Name:src Committed By: christos Date: Tue Dec 2 21:49:36 UTC 2014 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_stub.c src/sys/external/bsd/drm2/dist/include/drm: drmP.h Log Message: fix debugging compilation (ALL kernel) To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/drm_stub.c cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/dist/include/drm/drmP.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/drm_stub.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_stub.c:1.7 src/sys/external/bsd/drm2/dist/drm/drm_stub.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/drm_stub.c:1.7 Sat Nov 22 14:18:07 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_stub.c Tue Dec 2 16:49:36 2014 @@ -341,7 +341,9 @@ static int drm_minor_register(struct drm { struct drm_minor *new_minor; unsigned long flags; +#ifndef __NetBSD__ int ret; +#endif int minor_id; DRM_DEBUG("\n"); @@ -365,6 +367,7 @@ static int drm_minor_register(struct drm new_minor->index = minor_id; +#ifndef __NetBSD__ ret = drm_debugfs_init(new_minor, minor_id, drm_debugfs_root); if (ret) { DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n"); @@ -376,7 +379,7 @@ static int drm_minor_register(struct drm DRM_ERROR("DRM: Error sysfs_device_add.\n"); goto err_debugfs; } - +#endif /* replace NULL with @minor so lookups will succeed from now on */ spin_lock_irqsave(&drm_minor_lock, flags); idr_replace(&drm_minors_idr, new_minor, new_minor->index); @@ -385,6 +388,7 @@ static int drm_minor_register(struct drm DRM_DEBUG("new minor assigned %d\n", minor_id); return 0; +#ifndef __NetBSD__ err_debugfs: drm_debugfs_cleanup(new_minor); err_id: @@ -393,6 +397,7 @@ err_id: spin_unlock_irqrestore(&drm_minor_lock, flags); new_minor->index = 0; return ret; +#endif } static void drm_minor_unregister(struct drm_device *dev, unsigned int type) Index: src/sys/external/bsd/drm2/dist/include/drm/drmP.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.8 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.9 --- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.8 Sat Nov 22 14:18:07 2014 +++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h Tue Dec 2 16:49:36 2014 @@ -1637,9 +1637,10 @@ extern unsigned int drm_timestamp_precis extern unsigned int drm_timestamp_monotonic; extern struct class *drm_class; +#ifndef __NetBSD__ extern struct dentry *drm_debugfs_root; -#ifdef __NetBSD__ +#else extern spinlock_t drm_minor_lock; #endif extern struct idr drm_minors_idr;
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: jakllsch Date: Mon Dec 9 15:36:16 UTC 2019 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_panel.c Log Message: workaround netbsd incompatible LIST_HEAD adapted from drm_bridge.c r1.3 To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_panel.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_panel.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_panel.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_panel.c:1.2 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_panel.c Mon Dec 9 15:36:16 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_panel.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_panel.c,v 1.3 2019/12/09 15:36:16 jakllsch Exp $ */ /* * Copyright (C) 2013, NVIDIA Corporation. All rights reserved. @@ -24,7 +24,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_panel.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_panel.c,v 1.3 2019/12/09 15:36:16 jakllsch Exp $"); #include #include @@ -32,8 +32,13 @@ __KERNEL_RCSID(0, "$NetBSD: drm_panel.c, #include #include +#ifdef __NetBSD__ +static struct mutex panel_lock; +static struct list_head panel_list = LIST_HEAD_INIT(panel_list); +#else static DEFINE_MUTEX(panel_lock); static LIST_HEAD(panel_list); +#endif void drm_panel_init(struct drm_panel *panel) {
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: ad Date: Fri Jan 17 19:56:50 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_gem.c src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c i915_gem_fence.c Log Message: Apply patch from kamil@: vmobjlock needs to be held for uvm_pagemarkdirty(). To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/drm/drm_gem.c cvs rdiff -u -r1.55 -r1.56 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/i915_gem_fence.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/drm_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.11 src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.11 Wed Jan 15 17:55:43 2020 +++ src/sys/external/bsd/drm2/dist/drm/drm_gem.c Fri Jan 17 19:56:49 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_gem.c,v 1.11 2020/01/15 17:55:43 ad Exp $ */ +/* $NetBSD: drm_gem.c,v 1.12 2020/01/17 19:56:49 ad Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_gem.c,v 1.11 2020/01/15 17:55:43 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_gem.c,v 1.12 2020/01/17 19:56:49 ad Exp $"); #include #include @@ -613,8 +613,10 @@ drm_gem_put_pages(struct drm_gem_object for (i = 0; i < (obj->size >> PAGE_SHIFT); i++) { if (dirty) { + mutex_enter(obj->filp->vmobjlock); uvm_pagemarkdirty(&pages[i]->p_vmp, UVM_PAGE_STATUS_DIRTY); + mutex_exit(obj->filp->vmobjlock); } } 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.55 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.56 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.55 Wed Jan 15 17:55:43 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Fri Jan 17 19:56:50 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.55 2020/01/15 17:55:43 ad Exp $ */ +/* $NetBSD: i915_gem.c,v 1.56 2020/01/17 19:56:50 ad Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.55 2020/01/15 17:55:43 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.56 2020/01/17 19:56:50 ad Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -2643,10 +2643,12 @@ i915_gem_object_put_pages_gtt(struct drm obj->dirty = 0; if (obj->dirty) { + mutex_enter(obj->base.filp->vmobjlock); TAILQ_FOREACH(page, &obj->pageq, pageq.queue) { uvm_pagemarkdirty(page, UVM_PAGE_STATUS_DIRTY); /* XXX mark page accessed */ } + mutex_exit(obj->base.filp->vmobjlock); } obj->dirty = 0; Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c:1.6 Wed Jan 15 17:55:43 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c Fri Jan 17 19:56:50 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_fence.c,v 1.6 2020/01/15 17:55:43 ad Exp $ */ +/* $NetBSD: i915_gem_fence.c,v 1.7 2020/01/17 19:56:50 ad Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -24,7 +24,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_fence.c,v 1.6 2020/01/15 17:55:43 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_fence.c,v 1.7 2020/01/17 19:56:50 ad Exp $"); #include #include @@ -769,7 +769,9 @@ i915_gem_object_do_bit_17_swizzle(struct (test_bit(i, obj->bit_17) != 0)) { i915_gem_swizzle_page(container_of(page, struct page, p_vmp)); + mutex_enter(obj->base.filp->vmobjlock); uvm_pagemarkdirty(page, UVM_PAGE_STATUS_DIRTY); + mutex_exit(obj->base.filp->vmobjlock); } i += 1; }
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Fri Feb 14 04:37:29 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_crtc.c drm_fb_helper.c drm_prime.c src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_abi16.c src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv04: nouveau_dispnv04_arb.c src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp: nouveau_nvkm_engine_disp_dport.c src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/bios: nouveau_nvkm_subdev_bios_pll.c src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/devinit: nouveau_nvkm_subdev_devinit_nv04.c src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mxm: nouveau_nvkm_subdev_mxm_nv50.c src/sys/external/bsd/drm2/dist/drm/radeon: atombios.h src/sys/external/bsd/drm2/dist/drm/ttm: ttm_bo.c ttm_bo_util.c src/sys/external/bsd/drm2/dist/drm/vmwgfx: vmwgfx_kms.c Log Message: Revert cosmetic changes. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c \ src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/dist/drm/drm_prime.c cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_abi16.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv04/nouveau_dispnv04_arb.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_dport.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/bios/nouveau_nvkm_subdev_bios_pll.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/devinit/nouveau_nvkm_subdev_devinit_nv04.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mxm/nouveau_nvkm_subdev_mxm_nv50.c cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/radeon/atombios.h cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c \ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/vmwgfx/vmwgfx_kms.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/drm_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.14 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.15 --- src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.14 Fri Feb 14 04:36:55 2020 +++ src/sys/external/bsd/drm2/dist/drm/drm_crtc.c Fri Feb 14 04:37:27 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_crtc.c,v 1.14 2020/02/14 04:36:55 riastradh Exp $ */ +/* $NetBSD: drm_crtc.c,v 1.15 2020/02/14 04:37:27 riastradh Exp $ */ /* * Copyright (c) 2006-2008 Intel Corporation @@ -32,7 +32,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.14 2020/02/14 04:36:55 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.15 2020/02/14 04:37:27 riastradh Exp $"); #include #include @@ -3065,8 +3065,7 @@ int drm_mode_addfb(struct drm_device *de void *data, struct drm_file *file_priv) { struct drm_mode_fb_cmd *or = data; - static const struct drm_mode_fb_cmd2 zero_fbcmd; - struct drm_mode_fb_cmd2 r = zero_fbcmd; + struct drm_mode_fb_cmd2 r = {}; int ret; /* convert to new format and call new ioctl */ Index: src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.14 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.15 --- src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.14 Fri Feb 14 04:37:09 2020 +++ src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c Fri Feb 14 04:37:27 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fb_helper.c,v 1.14 2020/02/14 04:37:09 riastradh Exp $ */ +/* $NetBSD: drm_fb_helper.c,v 1.15 2020/02/14 04:37:27 riastradh Exp $ */ /* * Copyright (c) 2006-2009 Red Hat Inc. @@ -30,7 +30,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fb_helper.c,v 1.14 2020/02/14 04:37:09 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fb_helper.c,v 1.15 2020/02/14 04:37:27 riastradh Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -584,7 +584,7 @@ static struct sysrq_key_op sysrq_drm_fb_ .action_msg = "Restore framebuffer console", }; #else -static struct sysrq_key_op sysrq_drm_fb_helper_restore_op; +static struct sysrq_key_op sysrq_drm_fb_helper_restore_op = { }; #endif #ifndef __NetBSD__ /* XXX fb info */ Index: src/sys/external/bsd/drm2/dist/drm/drm_prime.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_prime.c:1.8 src/sys/external/bsd/drm2/dist/drm/drm_prime.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/drm_prime.c:1.8 Fri Feb 14 04:35:19 2020 +++ src/sys/external/bsd/drm2/dist/drm/drm_prime.c Fri Feb 14 04:37:27 2020 @
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Fri Feb 14 04:38:24 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu: amdgpu_cs.c amdgpu_gem.c amdgpu_ttm.c src/sys/external/bsd/drm2/dist/drm/radeon: radeon_cs.c radeon_gem.c radeon_ttm.c Log Message: Implement drm userptr with uvm_vslock & bus_dmamap_load_uio. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.c cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_cs.c cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c cvs rdiff -u -r1.15 -r1.16 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.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/amd/amdgpu/amdgpu_cs.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c:1.3 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c:1.3 Mon Aug 27 14:04:50 2018 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c Fri Feb 14 04:38:23 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_cs.c,v 1.3 2018/08/27 14:04:50 riastradh Exp $ */ +/* $NetBSD: amdgpu_cs.c,v 1.4 2020/02/14 04:38:23 riastradh Exp $ */ /* * Copyright 2008 Jerome Glisse. @@ -27,7 +27,7 @@ *Jerome Glisse */ #include -__KERNEL_RCSID(0, "$NetBSD: amdgpu_cs.c,v 1.3 2018/08/27 14:04:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_cs.c,v 1.4 2020/02/14 04:38:23 riastradh Exp $"); #include #include @@ -406,7 +406,7 @@ static int amdgpu_cs_parser_relocs(struc struct amdgpu_fpriv *fpriv = p->filp->driver_priv; struct amdgpu_cs_buckets buckets; struct list_head duplicates; - bool need_mmap_lock __diagused = false; + bool need_mmap_lock = false; int i, r; if (p->bo_list) { @@ -426,9 +426,8 @@ static int amdgpu_cs_parser_relocs(struc list_add(&p->uf_entry.tv.head, &p->validated); #ifdef __NetBSD__ - KASSERTMSG(!need_mmap_lock, - "someone didn't finish adding support for userptr" - " and it wasn't me"); + if (need_mmap_lock) + vm_map_lock_read(&curproc->p_vmspace->vm_map); #else if (need_mmap_lock) down_read(¤t->mm->mmap_sem); @@ -450,7 +449,10 @@ error_validate: ttm_eu_backoff_reservation(&p->ticket, &p->validated); error_reserve: -#ifndef __NetBSD__ +#ifdef __NetBSD__ + if (need_mmap_lock) + vm_map_unlock_read(&curproc->p_vmspace->vm_map); +#else if (need_mmap_lock) up_read(¤t->mm->mmap_sem); #endif Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c:1.5 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c:1.5 Fri Feb 14 04:35:19 2020 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c Fri Feb 14 04:38:23 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gem.c,v 1.5 2020/02/14 04:35:19 riastradh Exp $ */ +/* $NetBSD: amdgpu_gem.c,v 1.6 2020/02/14 04:38:23 riastradh Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -28,7 +28,7 @@ * Jerome Glisse */ #include -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gem.c,v 1.5 2020/02/14 04:35:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gem.c,v 1.6 2020/02/14 04:38:23 riastradh Exp $"); #include #include @@ -228,15 +228,6 @@ error_unlock: int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) { -#ifdef __NetBSD__ - /* - * XXX Too painful to contemplate for now. If you add this, - * make sure to update amdgpu_cs.c amdgpu_cs_parser_relocs - * (need_mmap_lock), and anything else using - * amdgpu_ttm_tt_has_userptr. - */ - return -ENODEV; -#else struct amdgpu_device *adev = dev->dev_private; struct drm_amdgpu_gem_userptr *args = data; struct drm_gem_object *gobj; @@ -281,17 +272,29 @@ int amdgpu_gem_userptr_ioctl(struct drm_ } if (args->flags & AMDGPU_GEM_USERPTR_VALIDATE) { +#ifdef __NetBSD__ + vm_map_lock_read(&curproc->p_vmspace->vm_map); +#else down_read(¤t->mm->mmap_sem); +#endif r = amdgpu_bo_reserve(bo, true); if (r) { +#ifdef __NetBSD__ + vm_map_unlock_read(&curproc->p_vmspace->vm_map); +#else up_read(¤t->mm->mmap_sem); +#endif goto release_object; } amdgpu_ttm_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_GTT); r = ttm_bo_validate(&bo->tbo, &bo->placement, true, false); amdgpu_bo_unreserve(bo); +#ifdef __NetBSD__ + vm_map_unlock_read(&curproc->p_vmspace->vm_map); +#else up_read(¤t->mm->mmap_sem); +#endif if (r) goto release_object; } @@ -312,7 +315,
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Fri Feb 14 09:39:38 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_bios.c intel_crt.c intel_display.c intel_fbdev.c intel_lvds.c intel_pm.c intel_sdvo.c src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_chan.c Log Message: Reduce some more cosmetic diffs. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c cvs rdiff -u -r1.30 -r1.31 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c cvs rdiff -u -r1.22 -r1.23 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c cvs rdiff -u -r1.13 -r1.14 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_chan.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.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c:1.8 Fri Feb 14 04:30:05 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c Fri Feb 14 09:39:37 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_bios.c,v 1.8 2020/02/14 04:30:05 riastradh Exp $ */ +/* $NetBSD: intel_bios.c,v 1.9 2020/02/14 09:39:37 riastradh Exp $ */ /* * Copyright © 2006 Intel Corporation @@ -27,7 +27,7 @@ * */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_bios.c,v 1.8 2020/02/14 04:30:05 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_bios.c,v 1.9 2020/02/14 09:39:37 riastradh Exp $"); #include #include @@ -1248,7 +1248,7 @@ static const struct dmi_system_id intel_ DMI_MATCH(DMI_PRODUCT_NAME, "97027RG"), }, }, - { .callback = NULL, } + { } }; static const struct bdb_header *validate_vbt(const void *base, Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c:1.8 Fri Feb 14 04:36:12 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c Fri Feb 14 09:39:37 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lvds.c,v 1.8 2020/02/14 04:36:12 riastradh Exp $ */ +/* $NetBSD: intel_lvds.c,v 1.9 2020/02/14 09:39:37 riastradh Exp $ */ /* * Copyright © 2006-2007 Intel Corporation @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_lvds.c,v 1.8 2020/02/14 04:36:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_lvds.c,v 1.9 2020/02/14 09:39:37 riastradh Exp $"); #include #include @@ -422,7 +422,7 @@ static const struct dmi_system_id intel_ }, }, - { .callback = NULL } /* terminating entry */ + { } /* terminating entry */ }; /* @@ -784,7 +784,7 @@ static const struct dmi_system_id intel_ }, }, - { .callback = NULL } /* terminating entry */ + { } /* terminating entry */ }; /* @@ -869,7 +869,7 @@ static const struct dmi_system_id intel_ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro9,1"), }, }, - { .callback = NULL } /* terminating entry */ + { } /* terminating entry */ }; bool intel_is_dual_link_lvds(struct drm_device *dev) Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c:1.7 Fri Feb 14 04:36:11 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c Fri Feb 14 09:39:37 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_crt.c,v 1.7 2020/02/14 04:36:11 riastradh Exp $ */ +/* $NetBSD: intel_crt.c,v 1.8 2020/02/14 09:39:37 riastradh Exp $ */ /* * Copyright © 2006-2007 Intel Corporation @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_crt.c,v 1.7 2020/02/14 04:36:11 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_crt.c,v 1.8 2020/02/14 09:39:37 riastradh Exp $"); #include #include @@ -784,7 +784,7 @@ static const struct dmi_system_id intel_ DMI_MATCH(DMI_PRODUCT_NAME, "XPS 8700"), }, }, - { .callback = NULL } + { } }; void intel_crt_init(struct drm_device *dev) 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.30 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.31 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.30 Fri Feb 14 04:36:11 2020 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c Fri Feb 14 09:39:37 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display.c,v 1.30 2020/02/14 04:36:11 riastradh E
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: jmcneill Date: Sat Jun 27 13:39:06 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_crtc.c Log Message: prop_dictionary_get_cstring -> prop_dictionary_get_string To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/external/bsd/drm2/dist/drm/drm_crtc.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/drm_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.16 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.17 --- src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.16 Fri Feb 14 14:34:57 2020 +++ src/sys/external/bsd/drm2/dist/drm/drm_crtc.c Sat Jun 27 13:39:05 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_crtc.c,v 1.16 2020/02/14 14:34:57 maya Exp $ */ +/* $NetBSD: drm_crtc.c,v 1.17 2020/06/27 13:39:05 jmcneill Exp $ */ /* * Copyright (c) 2006-2008 Intel Corporation @@ -32,7 +32,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.16 2020/02/14 14:34:57 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.17 2020/06/27 13:39:05 jmcneill Exp $"); #include #include @@ -825,13 +825,14 @@ EXPORT_SYMBOL(drm_display_info_set_bus_f static void drm_connector_get_cmdline_mode(struct drm_connector *connector) { struct drm_cmdline_mode *mode = &connector->cmdline_mode; - char *option = NULL; #ifdef __NetBSD__ + const char *option; prop_dictionary_t prop = device_properties(connector->dev->dev); - if (!prop_dictionary_get_cstring(prop, connector->name, &option)) + if (!prop_dictionary_get_string(prop, connector->name, &option)) return; #else + char *option = NULL; if (fb_get_options(connector->name, &option)) return; #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: christos Date: Mon Feb 18 23:23:41 UTC 2019 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_ddi.c intel_display.c intel_sdvo.c src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_bo.c nouveau_usif.c Log Message: add failthrough and break as appropriate. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c cvs rdiff -u -r1.24 -r1.25 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c cvs rdiff -u -r1.13 -r1.14 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c cvs rdiff -u -r1.6 -r1.7 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_usif.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.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.8 Thu Sep 13 04:25:55 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c Mon Feb 18 18:23:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_ddi.c,v 1.8 2018/09/13 08:25:55 mrg Exp $ */ +/* $NetBSD: intel_ddi.c,v 1.9 2019/02/18 23:23:41 christos Exp $ */ /* * Copyright © 2012 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_ddi.c,v 1.8 2018/09/13 08:25:55 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_ddi.c,v 1.9 2019/02/18 23:23:41 christos Exp $"); #include @@ -2228,6 +2228,7 @@ static uint32_t translate_signal_level(i default: DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level: 0x%x\n", signal_levels); + /*FALLTHROUGH*/ case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_0: level = 0; break; 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.24 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.25 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.24 Sun Sep 23 20:42:34 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c Mon Feb 18 18:23:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display.c,v 1.24 2018/09/24 00:42:34 christos Exp $ */ +/* $NetBSD: intel_display.c,v 1.25 2019/02/18 23:23:41 christos Exp $ */ /* * Copyright © 2006-2007 Intel Corporation @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.24 2018/09/24 00:42:34 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.25 2019/02/18 23:23:41 christos Exp $"); #include #include @@ -5318,6 +5318,7 @@ intel_display_port_power_domain(struct i case INTEL_OUTPUT_UNKNOWN: /* Only DDI platforms should ever use this output type */ WARN_ON_ONCE(!HAS_DDI(dev)); + /*FALLTHROUGH*/ case INTEL_OUTPUT_DISPLAYPORT: case INTEL_OUTPUT_HDMI: case INTEL_OUTPUT_EDP: @@ -5352,6 +5353,7 @@ intel_display_port_aux_power_domain(stru * run the DP detection too. */ WARN_ON_ONCE(!HAS_DDI(dev)); + /*FALLTHROUGH*/ case INTEL_OUTPUT_DISPLAYPORT: case INTEL_OUTPUT_EDP: intel_dig_port = enc_to_dig_port(&intel_encoder->base); @@ -6922,6 +6924,7 @@ static int pnv_get_display_clock_speed(s return 20; default: DRM_ERROR("Unknown pnv display core clock 0x%04x\n", gcfgc); + /*FALLTHROUGH*/ case GC_DISPLAY_CLOCK_133_MHZ_PNV: return 13; case GC_DISPLAY_CLOCK_167_MHZ_PNV: @@ -9957,6 +9960,7 @@ static bool haswell_get_pipe_config(stru switch (tmp & TRANS_DDI_EDP_INPUT_MASK) { default: WARN(1, "unknown pipe linked to edp transcoder\n"); + /*FALLTHROUGH*/ case TRANS_DDI_EDP_INPUT_A_ONOFF: case TRANS_DDI_EDP_INPUT_A_ON: trans_edp_pipe = PIPE_A; @@ -12248,6 +12252,7 @@ static bool check_digital_port_conflicts case INTEL_OUTPUT_UNKNOWN: if (WARN_ON(!HAS_DDI(dev))) break; + /*FALLTHROUGH*/ case INTEL_OUTPUT_DISPLAYPORT: case INTEL_OUTPUT_HDMI: case INTEL_OUTPUT_EDP: Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.10 src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.11 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.10 Mon Aug 27 02:16:50 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c Mon Feb 18 18:23:41 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sdvo.c,v 1.10 2018/08/27 06:16:50 riastradh Exp $ */ +/* $NetBSD: intel_sdvo.c,v 1.11 2019/02/18 23:23:41 christos Exp $ */ /* * Copyright 2006 Dave Airlie @@ -28,7 +28,7 @@ * Eric Anholt */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_sdvo.c,v 1.10 2018/08/27 06:16:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_sdvo.c,v 1.11 2019/02/18 23:23:41 christos Exp $"); #include #include @@ -1278,6 +1278,7 @@ static
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: christos Date: Tue Feb 19 00:30:16 UTC 2019 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_ddi.c intel_display.c intel_sdvo.c src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_bo.c Log Message: revert the upsteam portion of previous; we don't want to patch upstream fallthrough/breaks. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c cvs rdiff -u -r1.25 -r1.26 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c cvs rdiff -u -r1.14 -r1.15 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.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.9 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.9 Mon Feb 18 18:23:41 2019 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c Mon Feb 18 19:30:16 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_ddi.c,v 1.9 2019/02/18 23:23:41 christos Exp $ */ +/* $NetBSD: intel_ddi.c,v 1.10 2019/02/19 00:30:16 christos Exp $ */ /* * Copyright © 2012 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_ddi.c,v 1.9 2019/02/18 23:23:41 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_ddi.c,v 1.10 2019/02/19 00:30:16 christos Exp $"); #include @@ -2228,7 +2228,6 @@ static uint32_t translate_signal_level(i default: DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level: 0x%x\n", signal_levels); - /*FALLTHROUGH*/ case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_0: level = 0; break; 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.25 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.26 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.25 Mon Feb 18 18:23:41 2019 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c Mon Feb 18 19:30:16 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display.c,v 1.25 2019/02/18 23:23:41 christos Exp $ */ +/* $NetBSD: intel_display.c,v 1.26 2019/02/19 00:30:16 christos Exp $ */ /* * Copyright © 2006-2007 Intel Corporation @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.25 2019/02/18 23:23:41 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.26 2019/02/19 00:30:16 christos Exp $"); #include #include @@ -5318,7 +5318,6 @@ intel_display_port_power_domain(struct i case INTEL_OUTPUT_UNKNOWN: /* Only DDI platforms should ever use this output type */ WARN_ON_ONCE(!HAS_DDI(dev)); - /*FALLTHROUGH*/ case INTEL_OUTPUT_DISPLAYPORT: case INTEL_OUTPUT_HDMI: case INTEL_OUTPUT_EDP: @@ -5353,7 +5352,6 @@ intel_display_port_aux_power_domain(stru * run the DP detection too. */ WARN_ON_ONCE(!HAS_DDI(dev)); - /*FALLTHROUGH*/ case INTEL_OUTPUT_DISPLAYPORT: case INTEL_OUTPUT_EDP: intel_dig_port = enc_to_dig_port(&intel_encoder->base); @@ -6924,7 +6922,6 @@ static int pnv_get_display_clock_speed(s return 20; default: DRM_ERROR("Unknown pnv display core clock 0x%04x\n", gcfgc); - /*FALLTHROUGH*/ case GC_DISPLAY_CLOCK_133_MHZ_PNV: return 13; case GC_DISPLAY_CLOCK_167_MHZ_PNV: @@ -9960,7 +9957,6 @@ static bool haswell_get_pipe_config(stru switch (tmp & TRANS_DDI_EDP_INPUT_MASK) { default: WARN(1, "unknown pipe linked to edp transcoder\n"); - /*FALLTHROUGH*/ case TRANS_DDI_EDP_INPUT_A_ONOFF: case TRANS_DDI_EDP_INPUT_A_ON: trans_edp_pipe = PIPE_A; @@ -12252,7 +12248,6 @@ static bool check_digital_port_conflicts case INTEL_OUTPUT_UNKNOWN: if (WARN_ON(!HAS_DDI(dev))) break; - /*FALLTHROUGH*/ case INTEL_OUTPUT_DISPLAYPORT: case INTEL_OUTPUT_HDMI: case INTEL_OUTPUT_EDP: Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.11 Mon Feb 18 18:23:41 2019 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c Mon Feb 18 19:30:16 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sdvo.c,v 1.11 2019/02/18 23:23:41 christos Exp $ */ +/* $NetBSD: intel_sdvo.c,v 1.12 2019/02/19 00:30:16 christos Exp $ */ /* * Copyright 2006 Dave Airlie @@ -28,7 +28,7 @@ * Eric Anholt */ #include -__KERNEL_RCSID(0, "$NetBSD: intel_sdvo.c,v 1.11 2019/02/18 23:23:41 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_sdvo.c,v 1.12 2019/02/19 00:30:16 christos Exp $"); #include #include @@ -1278,7 +1278,6 @@ static void intel_sdvo_pre_enable(struct switc
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Tue Aug 28 03:33:54 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_agpsupport.c Log Message: Use AGP_PAGE_SIZE, not PAGE_SIZE. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.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/drm_agpsupport.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.8 src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.8 Mon Aug 27 06:32:57 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c Tue Aug 28 03:33:54 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_agpsupport.c,v 1.8 2018/08/27 06:32:57 riastradh Exp $ */ +/* $NetBSD: drm_agpsupport.c,v 1.9 2018/08/28 03:33:54 riastradh Exp $ */ /** * \file drm_agpsupport.c @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_agpsupport.c,v 1.8 2018/08/27 06:32:57 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_agpsupport.c,v 1.9 2018/08/28 03:33:54 riastradh Exp $"); #include #include @@ -225,7 +225,7 @@ int drm_agp_alloc(struct drm_device *dev if (!(entry = kzalloc(sizeof(*entry), GFP_KERNEL))) return -ENOMEM; - pages = (request->size + PAGE_SIZE - 1) / PAGE_SIZE; + pages = (request->size + AGP_PAGE_SIZE - 1) / AGP_PAGE_SIZE; type = (u32) request->type; if (!(memory = agp_allocate_memory(dev->agp->bridge, pages, type))) { kfree(entry); @@ -356,7 +356,7 @@ int drm_agp_bind(struct drm_device *dev, return -EINVAL; if (entry->bound) return -EINVAL; - page = (request->offset + PAGE_SIZE - 1) / PAGE_SIZE; + page = (request->offset + AGP_PAGE_SIZE - 1) / AGP_PAGE_SIZE; #ifdef __NetBSD__ if ((retcode = drm_bind_agp(dev->agp->bridge, entry->memory, page))) return retcode; @@ -555,7 +555,7 @@ drm_agp_bind_pages(struct drm_device *de mem->page_count = num_pages; mem->is_flushed = true; - ret = agp_bind_memory(mem, gtt_offset / PAGE_SIZE); + ret = agp_bind_memory(mem, gtt_offset / AGP_PAGE_SIZE); if (ret != 0) { DRM_ERROR("Failed to bind AGP memory: %d\n", ret); agp_free_memory(mem);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: martin Date: Tue Aug 28 08:20:27 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c Log Message: Disable drm_debug by default To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.9 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.9 Mon Aug 27 14:41:41 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Tue Aug 28 08:20:27 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.9 2018/08/27 14:41:41 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.10 2018/08/28 08:20:27 martin Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.9 2018/08/27 14:41:41 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.10 2018/08/28 08:20:27 martin Exp $"); #include #include @@ -45,7 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v #include "drm_legacy.h" #include "drm_internal.h" -unsigned int drm_debug = ~(unsigned int)0; /* bitmask of DRM_UT_x */ +unsigned int drm_debug = 0; /* bitmask of DRM_UT_x */ EXPORT_SYMBOL(drm_debug); MODULE_AUTHOR(CORE_AUTHOR);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: maya Date: Fri Sep 14 05:31:14 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_ioctl.c Log Message: copy the output from the temp buffer to the actual one on return. Fixes crashes with updated xf86-video-intel / mesa 18 from riastradh. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/drm2/dist/drm/drm_ioctl.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/drm_ioctl.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.10 src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.11 --- src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.10 Tue Aug 28 03:41:38 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c Fri Sep 14 05:31:14 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_ioctl.c,v 1.10 2018/08/28 03:41:38 riastradh Exp $ */ +/* $NetBSD: drm_ioctl.c,v 1.11 2018/09/14 05:31:14 maya Exp $ */ /* * Created: Fri Jan 8 09:01:26 1999 by fa...@valinux.com @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_ioctl.c,v 1.10 2018/08/28 03:41:38 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_ioctl.c,v 1.11 2018/09/14 05:31:14 maya Exp $"); #include #include @@ -703,6 +703,7 @@ drm_ioctl(struct file *fp, unsigned long { char stackbuf[128]; char *buf = stackbuf; + void *data0 = data; struct drm_file *const file = fp->f_data; const unsigned int nr = DRM_IOCTL_NR(cmd); int error; @@ -761,20 +762,24 @@ drm_ioctl(struct file *fp, unsigned long memcpy(buf, data, IOCPARM_LEN(cmd)); memset(buf + IOCPARM_LEN(cmd), 0, IOCPARM_LEN(ioctl->cmd) - IOCPARM_LEN(cmd)); - data = buf; + data0 = buf; } if ((drm_core_check_feature(dev, DRIVER_MODESET) && is_driver_ioctl) || ISSET(ioctl->flags, DRM_UNLOCKED)) { /* XXX errno Linux->NetBSD */ - error = -(*ioctl->func)(dev, data, file); + error = -(*ioctl->func)(dev, data0, file); } else { mutex_lock(&drm_global_mutex); /* XXX errno Linux->NetBSD */ - error = -(*ioctl->func)(dev, data, file); + error = -(*ioctl->func)(dev, data0, file); mutex_unlock(&drm_global_mutex); } + /* If we used a temporary buffer, copy it back out. */ + if (data != data0) + memcpy(data, data0, IOCPARM_LEN(cmd)); + /* If we had to allocate a heap buffer, free it. */ if (buf != stackbuf) kmem_free(buf, IOCPARM_LEN(ioctl->cmd));
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Thu Nov 3 00:10:49 UTC 2016 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_gem.c Log Message: Avoid zero-size uao. Apparently some GEM/TTM objects can be zero-size, as discovered by Stefan Hertenberger: https://mail-index.netbsd.org/current-users/2016/08/02/msg029891.html To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.5 Mon Aug 18 01:21:03 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_gem.c Thu Nov 3 00:10:49 2016 @@ -154,7 +154,11 @@ int drm_gem_object_init(struct drm_devic drm_gem_private_object_init(dev, obj, size); #ifdef __NetBSD__ - obj->gemo_shm_uao = uao_create(size, 0); + /* + * A uao may not have size 0, but a gem object may. Allocate a + * spurious page so we needn't teach uao how to have size 0. + */ + obj->gemo_shm_uao = uao_create(MAX(size, PAGE_SIZE), 0); /* * XXX This is gross. We ought to do it the other way around: * set the uao to have the main uvm object's lock. However,
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: jmcneill Date: Sat Nov 14 13:27:29 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_fb_helper.c drm_modes.c Log Message: Support command-line modes by picking up connector modes from the device properties. The connector name is the key name in the device properties dictionary. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_modes.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/drm_fb_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.7 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.7 Thu Jul 24 21:36:39 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c Sat Nov 14 13:27:29 2015 @@ -117,7 +117,6 @@ fail: } EXPORT_SYMBOL(drm_fb_helper_single_add_all_connectors); -#ifndef __NetBSD__ /* XXX fb command line */ static int drm_fb_helper_parse_command_line(struct drm_fb_helper *fb_helper) { struct drm_fb_helper_connector *fb_helper_conn; @@ -133,8 +132,14 @@ static int drm_fb_helper_parse_command_l mode = &fb_helper_conn->cmdline_mode; /* do something on return - turn off connector maybe */ +#if defined(__NetBSD__) + prop_dictionary_t prop = device_properties(connector->dev->dev); + if (prop_dictionary_get_cstring(prop, drm_get_connector_name(connector), &option) == false) + continue; +#else if (fb_get_options(drm_get_connector_name(connector), &option)) continue; +#endif if (drm_mode_parse_command_line_for_connector(option, connector, @@ -171,7 +176,6 @@ static int drm_fb_helper_parse_command_l } return 0; } -#endif static void drm_fb_helper_save_lut_atomic(struct drm_crtc *crtc, struct drm_fb_helper *helper) { @@ -1207,9 +1211,6 @@ static bool drm_has_cmdline_mode(struct struct drm_display_mode *drm_pick_cmdline_mode(struct drm_fb_helper_connector *fb_helper_conn, int width, int height) { -#ifdef __NetBSD__ /* XXX fb command line */ - return NULL; -#else struct drm_cmdline_mode *cmdline_mode; struct drm_display_mode *mode = NULL; bool prefer_non_interlace; @@ -1257,7 +1258,6 @@ create_mode: cmdline_mode); list_add(&mode->head, &fb_helper_conn->connector->modes); return mode; -#endif } EXPORT_SYMBOL(drm_pick_cmdline_mode); @@ -1601,9 +1601,7 @@ bool drm_fb_helper_initial_config(struct struct drm_device *dev = fb_helper->dev; int count = 0; -#ifndef __NetBSD__ /* XXX fb command line */ drm_fb_helper_parse_command_line(fb_helper); -#endif mutex_lock(&dev->mode_config.mutex); count = drm_fb_helper_probe_connector_modes(fb_helper, Index: src/sys/external/bsd/drm2/dist/drm/drm_modes.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_modes.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_modes.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/drm_modes.c:1.5 Wed Jul 16 20:56:24 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_modes.c Sat Nov 14 13:27:29 2015 @@ -1057,8 +1057,6 @@ void drm_mode_connector_list_update(stru } EXPORT_SYMBOL(drm_mode_connector_list_update); -#ifndef __NetBSD__ - /** * drm_mode_parse_command_line_for_connector - parse command line modeline for connector * @mode_option: optional per connector mode option @@ -1087,16 +1085,18 @@ bool drm_mode_parse_command_line_for_con const char *name; unsigned int namelen; bool res_specified = false, bpp_specified = false, refresh_specified = false; - unsigned int xres = 0, yres = 0, bpp = 32, refresh = 0; + long xres = 0, yres = 0, bpp = 32, refresh = 0; bool yres_specified = false, cvt = false, rb = false; bool interlace = false, margins = false, was_digit = false; int i; enum drm_connector_force force = DRM_FORCE_UNSPECIFIED; +#if !defined(__NetBSD__) #ifdef CONFIG_FB if (!mode_option) mode_option = fb_mode_option; #endif +#endif if (!mode_option) { mode->specified = false; @@ -1110,26 +1110,35 @@ bool drm_mode_parse_command_line_for_con case '@': if (!refresh_specified && !bpp_specified && !yres_specified && !cvt && !rb && was_digit) { -refresh = simple_strtol(&name[i+1], NULL, 10); -refresh_specified = true; -was_digit = false; +if (kstrtol(&name[i+1], 10, &refresh) == 0) { + refresh_specified = true; + was_digit = false; +} else { + goto done; +} } else goto done; break; case '-': if (!bpp_specified && !yres_specified && !cvt && !rb && was_digit) { -bpp = simple_strtol(&name[i+1], NULL, 10); -bpp_specified = true; -was_digit = false; +if (kstrtol(&name[i+1], 10, &bpp) == 0) { + bpp_specified = true; + was_digit = false; +} else { + goto done; +} } else goto done; break; case 'x
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:32:00 UTC 2018 Removed Files: src/sys/external/bsd/drm2/dist/drm: drm_stub.c Log Message: Neglected to delete local drm_stub.c during merge. To generate a diff of this commit: cvs rdiff -u -r1.9 -r0 src/sys/external/bsd/drm2/dist/drm/drm_stub.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:32:57 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_agpsupport.c Log Message: Terminate ifdef missed in merge. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.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/drm_agpsupport.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.7 src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.7 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c Mon Aug 27 06:32:57 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_agpsupport.c,v 1.7 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_agpsupport.c,v 1.8 2018/08/27 06:32:57 riastradh Exp $ */ /** * \file drm_agpsupport.c @@ -34,7 +34,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_agpsupport.c,v 1.7 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_agpsupport.c,v 1.8 2018/08/27 06:32:57 riastradh Exp $"); #include #include @@ -565,3 +565,4 @@ drm_agp_bind_pages(struct drm_device *de return mem; } EXPORT_SYMBOL(drm_agp_bind_pages); +#endif
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:43:47 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_bridge.c Log Message: workaround netbsd incompatible LIST_HEAD Author: coypu Committer: Taylor R Campbell To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_bridge.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/drm_bridge.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_bridge.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_bridge.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_bridge.c:1.2 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_bridge.c Mon Aug 27 06:43:47 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_bridge.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_bridge.c,v 1.3 2018/08/27 06:43:47 riastradh Exp $ */ /* * Copyright (c) 2014 Samsung Electronics Co., Ltd @@ -24,7 +24,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_bridge.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_bridge.c,v 1.3 2018/08/27 06:43:47 riastradh Exp $"); #include #include @@ -58,8 +58,13 @@ __KERNEL_RCSID(0, "$NetBSD: drm_bridge.c * desired output at the end of the encoder chain. */ +#ifdef __NetBSD__ +static struct mutex bridge_lock; +static struct list_head bridge_list = LIST_HEAD_INIT(bridge_list); +#else static DEFINE_MUTEX(bridge_lock); static LIST_HEAD(bridge_list); +#endif /** * drm_bridge_add - add the given bridge to the global bridge list
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:46:32 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_dp_helper.c Log Message: Need for module_param_named. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.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/drm_dp_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c:1.5 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c Mon Aug 27 06:46:32 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_dp_helper.c,v 1.5 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_dp_helper.c,v 1.6 2018/08/27 06:46:32 riastradh Exp $ */ /* * Copyright © 2009 Keith Packard @@ -23,10 +23,11 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_dp_helper.c,v 1.5 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_dp_helper.c,v 1.6 2018/08/27 06:46:32 riastradh Exp $"); #include #include +#include #include #include #include
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:48:01 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_atomic.c Log Message: ACCESS_ONCE -> __insn_barrier To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/drm_atomic.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/drm_atomic.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.3 src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.3 Mon Aug 27 06:47:35 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_atomic.c Mon Aug 27 06:48:01 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_atomic.c,v 1.3 2018/08/27 06:47:35 riastradh Exp $ */ +/* $NetBSD: drm_atomic.c,v 1.4 2018/08/27 06:48:01 riastradh Exp $ */ /* * Copyright (C) 2014 Red Hat @@ -29,7 +29,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.3 2018/08/27 06:47:35 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.4 2018/08/27 06:48:01 riastradh Exp $"); #include @@ -72,7 +72,8 @@ drm_atomic_state_init(struct drm_device */ state->allow_modeset = true; - state->num_connector = ACCESS_ONCE(dev->mode_config.num_connector); + state->num_connector = dev->mode_config.num_connector; + __insn_barrier(); state->crtcs = kcalloc(dev->mode_config.num_crtc, sizeof(*state->crtcs), GFP_KERNEL);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:47:19 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_dp_helper.c Log Message: No arithmetic on void *. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.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/drm_dp_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c:1.6 src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c:1.6 Mon Aug 27 06:46:32 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c Mon Aug 27 06:47:19 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_dp_helper.c,v 1.6 2018/08/27 06:46:32 riastradh Exp $ */ +/* $NetBSD: drm_dp_helper.c,v 1.7 2018/08/27 06:47:19 riastradh Exp $ */ /* * Copyright © 2009 Keith Packard @@ -23,7 +23,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_dp_helper.c,v 1.6 2018/08/27 06:46:32 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_dp_helper.c,v 1.7 2018/08/27 06:47:19 riastradh Exp $"); #include #include @@ -666,7 +666,7 @@ static int drm_dp_i2c_drain_msg(struct d } msg.size -= err; - msg.buffer += err; + msg.buffer = (void *)((char *)msg.buffer + err); } return ret;
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:48:15 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_atomic.c Log Message: Need declarations in drm_crtc_internal.h. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/drm_atomic.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/drm_atomic.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.4 Mon Aug 27 06:48:01 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_atomic.c Mon Aug 27 06:48:15 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_atomic.c,v 1.4 2018/08/27 06:48:01 riastradh Exp $ */ +/* $NetBSD: drm_atomic.c,v 1.5 2018/08/27 06:48:15 riastradh Exp $ */ /* * Copyright (C) 2014 Red Hat @@ -29,12 +29,13 @@ #include -__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.4 2018/08/27 06:48:01 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.5 2018/08/27 06:48:15 riastradh Exp $"); #include #include #include +#include #include /**
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:48:26 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_atomic.c Log Message: Mark set-but-unused variable as such. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_atomic.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/drm_atomic.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.5 Mon Aug 27 06:48:15 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_atomic.c Mon Aug 27 06:48:26 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_atomic.c,v 1.5 2018/08/27 06:48:15 riastradh Exp $ */ +/* $NetBSD: drm_atomic.c,v 1.6 2018/08/27 06:48:26 riastradh Exp $ */ /* * Copyright (C) 2014 Red Hat @@ -29,7 +29,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.5 2018/08/27 06:48:15 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.6 2018/08/27 06:48:26 riastradh Exp $"); #include @@ -1496,7 +1496,7 @@ int drm_mode_atomic_ioctl(struct drm_dev struct drm_atomic_state *state; struct drm_modeset_acquire_ctx ctx; struct drm_plane *plane; - struct drm_crtc *crtc; + struct drm_crtc *crtc __unused; struct drm_crtc_state *crtc_state; unsigned plane_mask; int ret = 0;
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:48:40 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_atomic_helper.c Log Message: Need for EXPORT_*. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/drm_atomic_helper.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/drm_atomic_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_atomic_helper.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_atomic_helper.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_atomic_helper.c:1.2 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_atomic_helper.c Mon Aug 27 06:48:40 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_atomic_helper.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_atomic_helper.c,v 1.3 2018/08/27 06:48:40 riastradh Exp $ */ /* * Copyright (C) 2014 Red Hat @@ -28,13 +28,14 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_atomic_helper.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_atomic_helper.c,v 1.3 2018/08/27 06:48:40 riastradh Exp $"); #include #include #include #include #include +#include #include /**
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:47:35 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_atomic.c Log Message: Need for EXPORT_*. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_atomic.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/drm_atomic.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.2 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_atomic.c Mon Aug 27 06:47:35 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_atomic.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_atomic.c,v 1.3 2018/08/27 06:47:35 riastradh Exp $ */ /* * Copyright (C) 2014 Red Hat @@ -29,7 +29,9 @@ #include -__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.3 2018/08/27 06:47:35 riastradh Exp $"); + +#include #include #include
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:52:24 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_crtc.c Log Message: Adapt abuse of kref abstraction in DRM_DEBUG messages. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/drm_crtc.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/drm_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.6 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.6 Mon Aug 27 06:52:11 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_crtc.c Mon Aug 27 06:52:24 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_crtc.c,v 1.6 2018/08/27 06:52:11 riastradh Exp $ */ +/* $NetBSD: drm_crtc.c,v 1.7 2018/08/27 06:52:24 riastradh Exp $ */ /* * Copyright (c) 2006-2008 Intel Corporation @@ -32,7 +32,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.6 2018/08/27 06:52:11 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.7 2018/08/27 06:52:24 riastradh Exp $"); #include #include @@ -519,7 +519,7 @@ EXPORT_SYMBOL(drm_framebuffer_lookup); */ void drm_framebuffer_unreference(struct drm_framebuffer *fb) { - DRM_DEBUG("%p: FB ID: %d (%d)\n", fb, fb->base.id, atomic_read(&fb->refcount.refcount)); + DRM_DEBUG("%p: FB ID: %d (%d)\n", fb, fb->base.id, fb->refcount.kr_count); kref_put(&fb->refcount, drm_framebuffer_free); } EXPORT_SYMBOL(drm_framebuffer_unreference); @@ -532,7 +532,7 @@ EXPORT_SYMBOL(drm_framebuffer_unreferenc */ void drm_framebuffer_reference(struct drm_framebuffer *fb) { - DRM_DEBUG("%p: FB ID: %d (%d)\n", fb, fb->base.id, atomic_read(&fb->refcount.refcount)); + DRM_DEBUG("%p: FB ID: %d (%d)\n", fb, fb->base.id, fb->refcount.kr_count); kref_get(&fb->refcount); } EXPORT_SYMBOL(drm_framebuffer_reference); @@ -4284,7 +4284,7 @@ void drm_property_unreference_blob(struc dev = blob->dev; - DRM_DEBUG("%p: blob ID: %d (%d)\n", blob, blob->base.id, atomic_read(&blob->refcount.refcount)); + DRM_DEBUG("%p: blob ID: %d (%d)\n", blob, blob->base.id, blob->refcount.kr_count); if (kref_put_mutex(&blob->refcount, drm_property_free_blob, &dev->mode_config.blob_lock)) @@ -4307,7 +4307,7 @@ static void drm_property_unreference_blo if (!blob) return; - DRM_DEBUG("%p: blob ID: %d (%d)\n", blob, blob->base.id, atomic_read(&blob->refcount.refcount)); + DRM_DEBUG("%p: blob ID: %d (%d)\n", blob, blob->base.id, blob->refcount.kr_count); kref_put(&blob->refcount, drm_property_free_blob); } @@ -4341,7 +4341,7 @@ void drm_property_destroy_user_blobs(str */ struct drm_property_blob *drm_property_reference_blob(struct drm_property_blob *blob) { - DRM_DEBUG("%p: blob ID: %d (%d)\n", blob, blob->base.id, atomic_read(&blob->refcount.refcount)); + DRM_DEBUG("%p: blob ID: %d (%d)\n", blob, blob->base.id, blob->refcount.kr_count); kref_get(&blob->refcount); return blob; }
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:52:11 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_crtc.c Log Message: Use kref_exclusive_p, rather than abusing kref abstraction. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_crtc.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/drm_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.5 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_crtc.c Mon Aug 27 06:52:11 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_crtc.c,v 1.5 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_crtc.c,v 1.6 2018/08/27 06:52:11 riastradh Exp $ */ /* * Copyright (c) 2006-2008 Intel Corporation @@ -32,7 +32,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.5 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.6 2018/08/27 06:52:11 riastradh Exp $"); #include #include @@ -3400,7 +3400,7 @@ int drm_mode_rmfb(struct drm_device *dev * so run this in a separate stack as there's no way to correctly * handle this after the fb is already removed from the lookup table. */ - if (atomic_read(&fb->refcount.refcount) > 1) { + if (!kref_exclusive_p(&fb->refcount)) { struct drm_mode_rmfb_work arg; INIT_WORK_ONSTACK(&arg.work, drm_mode_rmfb_work_fn); @@ -3598,7 +3598,7 @@ void drm_fb_release(struct drm_file *pri * at it any more. */ list_for_each_entry_safe(fb, tfb, &priv->fbs, filp_head) { - if (atomic_read(&fb->refcount.refcount) > 1) { + if (!kref_exclusive_p(&fb->refcount)) { list_move_tail(&fb->filp_head, &arg.fbs); } else { list_del_init(&fb->filp_head);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:52:45 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_dp_helper.c Log Message: Initialize and destroy aux->hw_mutex appropriately. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.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/drm_dp_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c:1.7 src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c:1.7 Mon Aug 27 06:47:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_dp_helper.c Mon Aug 27 06:52:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_dp_helper.c,v 1.7 2018/08/27 06:47:19 riastradh Exp $ */ +/* $NetBSD: drm_dp_helper.c,v 1.8 2018/08/27 06:52:45 riastradh Exp $ */ /* * Copyright © 2009 Keith Packard @@ -23,7 +23,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_dp_helper.c,v 1.7 2018/08/27 06:47:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_dp_helper.c,v 1.8 2018/08/27 06:52:45 riastradh Exp $"); #include #include @@ -769,7 +769,11 @@ static const struct i2c_algorithm drm_dp */ int drm_dp_aux_register(struct drm_dp_aux *aux) { +#ifdef __NetBSD__ + linux_mutex_init(&aux->hw_mutex); +#else mutex_init(&aux->hw_mutex); +#endif aux->ddc.algo = &drm_dp_i2c_algo; aux->ddc.algo_data = aux; @@ -796,5 +800,10 @@ EXPORT_SYMBOL(drm_dp_aux_register); void drm_dp_aux_unregister(struct drm_dp_aux *aux) { i2c_del_adapter(&aux->ddc); +#ifdef __NetBSD__ + linux_mutex_destroy(&aux->hw_mutex); +#else + mutex_destroy(&aux->hw_mutex); +#endif } EXPORT_SYMBOL(drm_dp_aux_unregister);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:53:46 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c Log Message: dev->count_lock is no more. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.3 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.3 Mon Aug 27 06:53:13 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Mon Aug 27 06:53:46 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.3 2018/08/27 06:53:13 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.4 2018/08/27 06:53:46 riastradh Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.3 2018/08/27 06:53:13 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.4 2018/08/27 06:53:46 riastradh Exp $"); #include #include @@ -723,7 +723,6 @@ err_free: linux_mutex_destroy(&dev->ctxlist_mutex); linux_mutex_destroy(&dev->master_mutex); spin_lock_destroy(&dev->event_lock); - spin_lock_destroy(&dev->count_lock); #else mutex_destroy(&dev->master_mutex); #endif @@ -752,7 +751,6 @@ static void drm_dev_release(struct kref linux_mutex_destroy(&dev->ctxlist_mutex); linux_mutex_destroy(&dev->master_mutex); spin_lock_destroy(&dev->event_lock); - spin_lock_destroy(&dev->count_lock); #else mutex_destroy(&dev->master_mutex); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:53:36 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_irq.c Log Message: Need for module_param_*. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_irq.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.9 src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.9 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_irq.c Mon Aug 27 06:53:36 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_irq.c,v 1.9 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_irq.c,v 1.10 2018/08/27 06:53:36 riastradh Exp $ */ /* * drm_irq.c IRQ and vblank support @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.9 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.10 2018/08/27 06:53:36 riastradh Exp $"); #include #include "drm_trace.h" @@ -46,6 +46,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v #include #include +#include #include #include
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:53:13 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c Log Message: Fix drm_err merge. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.2 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Mon Aug 27 06:53:13 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.3 2018/08/27 06:53:13 riastradh Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.3 2018/08/27 06:53:13 riastradh Exp $"); #include #include @@ -75,11 +75,11 @@ void drm_err(const char *format, ...) va_list args; va_start(args, format); - printf("DRM error in %s: ", func); + /* XXX Convert this to a symbol name... */ + printf(KERN_ERR "[" DRM_NAME ":%p] *ERROR* ", + __builtin_return_address(0)); vprintf(format, args); va_end(args); - - return 0; #else struct va_format vaf; va_list args;
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:53:25 UTC 2018 Removed Files: src/sys/external/bsd/drm2/dist/drm: drm_trace.h Log Message: Remove troublesome drm_trace.h. To generate a diff of this commit: cvs rdiff -u -r1.3 -r0 src/sys/external/bsd/drm2/dist/drm/drm_trace.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:55:13 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_crtc.c Log Message: Fix up drm_crtc.c. - Ifdef out debugfs variables. - Restore int ret declaration lost in merge. - Use PRIu64, not %llu, for uint64_t. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/drm_crtc.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/drm_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.7 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.7 Mon Aug 27 06:52:24 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_crtc.c Mon Aug 27 06:55:13 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_crtc.c,v 1.7 2018/08/27 06:52:24 riastradh Exp $ */ +/* $NetBSD: drm_crtc.c,v 1.8 2018/08/27 06:55:13 riastradh Exp $ */ /* * Copyright (c) 2006-2008 Intel Corporation @@ -32,7 +32,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.7 2018/08/27 06:52:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.8 2018/08/27 06:55:13 riastradh Exp $"); #include #include @@ -1035,7 +1035,9 @@ EXPORT_SYMBOL(drm_connector_index); */ int drm_connector_register(struct drm_connector *connector) { +#ifndef __NetBSD__ /* XXX sysfs, debugfs */ int ret; +#endif drm_mode_object_register(connector->dev, &connector->base); @@ -3061,6 +3063,7 @@ int drm_mode_addfb(struct drm_device *de struct drm_mode_fb_cmd *or = data; static const struct drm_mode_fb_cmd2 zero_fbcmd; struct drm_mode_fb_cmd2 r = zero_fbcmd; + int ret; /* convert to new format and call new ioctl */ r.fb_id = or->fb_id; @@ -3199,7 +3202,7 @@ static int framebuffer_check(const struc } if (r->modifier[i] && !(r->flags & DRM_MODE_FB_MODIFIERS)) { - DRM_DEBUG_KMS("bad fb modifier %llu for plane %d\n", + DRM_DEBUG_KMS("bad fb modifier %"PRIu64" for plane %d\n", r->modifier[i], i); return -EINVAL; }
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:56:50 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_mm.c Log Message: for do_div. Fix some 64-bit printfs. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/drm_mm.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/drm_mm.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_mm.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_mm.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/drm_mm.c:1.4 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_mm.c Mon Aug 27 06:56:50 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_mm.c,v 1.4 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_mm.c,v 1.5 2018/08/27 06:56:50 riastradh Exp $ */ /** * @@ -44,7 +44,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_mm.c,v 1.4 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_mm.c,v 1.5 2018/08/27 06:56:50 riastradh Exp $"); #include #include @@ -53,6 +53,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_mm.c,v 1 #include #include #include +#include /** * DOC: Overview @@ -786,7 +787,7 @@ static u64 drm_mm_debug_hole(struct drm_ hole_start = drm_mm_hole_node_start(entry); hole_end = drm_mm_hole_node_end(entry); hole_size = hole_end - hole_start; - pr_debug("%s %#llx-%#llx: %llu: free\n", prefix, hole_start, + pr_debug("%s %#"PRIx64"-%#"PRIx64": %"PRIu64": free\n", prefix, hole_start, hole_end, hole_size); return hole_size; } @@ -807,14 +808,14 @@ void drm_mm_debug_table(struct drm_mm *m total_free += drm_mm_debug_hole(&mm->head_node, prefix); drm_mm_for_each_node(entry, mm) { - pr_debug("%s %#llx-%#llx: %llu: used\n", prefix, entry->start, + pr_debug("%s %#"PRIx64"-%#"PRIx64": %"PRIu64": used\n", prefix, entry->start, entry->start + entry->size, entry->size); total_used += entry->size; total_free += drm_mm_debug_hole(entry, prefix); } total = total_free + total_used; - pr_debug("%s total: %llu, used %llu free %llu\n", prefix, total, + pr_debug("%s total: %"PRIu64", used %"PRIu64" free %"PRIu64"\n", prefix, total, total_used, total_free); } EXPORT_SYMBOL(drm_mm_debug_table);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 06:56:13 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_modeset_lock.c Log Message: Need for EXPORT_*. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/drm_modeset_lock.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/drm_modeset_lock.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_modeset_lock.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_modeset_lock.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_modeset_lock.c:1.2 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_modeset_lock.c Mon Aug 27 06:56:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_modeset_lock.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_modeset_lock.c,v 1.3 2018/08/27 06:56:12 riastradh Exp $ */ /* * Copyright (C) 2014 Red Hat @@ -24,7 +24,9 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_modeset_lock.c,v 1.2 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_modeset_lock.c,v 1.3 2018/08/27 06:56:12 riastradh Exp $"); + +#include #include #include
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:03:39 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_irq.c Log Message: Convert wait_event_timeout to DRM_SPIN_TIMED_WAIT_UNTIL. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_irq.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.11 src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.11 Mon Aug 27 07:03:25 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_irq.c Mon Aug 27 07:03:39 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_irq.c,v 1.11 2018/08/27 07:03:25 riastradh Exp $ */ +/* $NetBSD: drm_irq.c,v 1.12 2018/08/27 07:03:39 riastradh Exp $ */ /* * drm_irq.c IRQ and vblank support @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.11 2018/08/27 07:03:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.12 2018/08/27 07:03:39 riastradh Exp $"); #include #include "drm_trace.h" @@ -1397,11 +1397,20 @@ void drm_wait_one_vblank(struct drm_devi if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", pipe, ret)) return; +#ifdef __NetBSD__ + spin_lock(&dev->vbl_lock); + last = drm_vblank_count(dev, pipe); + DRM_SPIN_TIMED_WAIT_UNTIL(ret, &vblank->queue, &dev->vbl_lock, + msecs_to_jiffies(100), + last != drm_vblank_count(dev, pipe)); + spin_unlock(&dev->vbl_lock); +#else last = drm_vblank_count(dev, pipe); ret = wait_event_timeout(vblank->queue, last != drm_vblank_count(dev, pipe), msecs_to_jiffies(100)); +#endif WARN(ret == 0, "vblank wait timed out on crtc %i\n", pipe);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:45:55 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_atomic.c src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c Log Message: Reduce diff by going back to just using ACCESS_ONCE. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/drm_atomic.c cvs rdiff -u -r1.45 -r1.46 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/drm_atomic.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.6 src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/drm_atomic.c:1.6 Mon Aug 27 06:48:26 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_atomic.c Mon Aug 27 07:45:55 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_atomic.c,v 1.6 2018/08/27 06:48:26 riastradh Exp $ */ +/* $NetBSD: drm_atomic.c,v 1.7 2018/08/27 07:45:55 riastradh Exp $ */ /* * Copyright (C) 2014 Red Hat @@ -29,7 +29,7 @@ #include -__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.6 2018/08/27 06:48:26 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_atomic.c,v 1.7 2018/08/27 07:45:55 riastradh Exp $"); #include @@ -73,8 +73,7 @@ drm_atomic_state_init(struct drm_device */ state->allow_modeset = true; - state->num_connector = dev->mode_config.num_connector; - __insn_barrier(); + state->num_connector = ACCESS_ONCE(dev->mode_config.num_connector); state->crtcs = kcalloc(dev->mode_config.num_crtc, sizeof(*state->crtcs), GFP_KERNEL); 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.45 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.45 Mon Aug 27 07:23:37 2018 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c Mon Aug 27 07:45:55 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem.c,v 1.45 2018/08/27 07:23:37 riastradh Exp $ */ +/* $NetBSD: i915_gem.c,v 1.46 2018/08/27 07:45:55 riastradh Exp $ */ /* * Copyright © 2008-2015 Intel Corporation @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.45 2018/08/27 07:23:37 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.46 2018/08/27 07:45:55 riastradh Exp $"); #ifdef __NetBSD__ #if 0/* XXX uvmhist option? */ @@ -1392,7 +1392,7 @@ int __i915_wait_request(struct drm_i915_ struct drm_device *dev = ring->dev; struct drm_i915_private *dev_priv = dev->dev_private; const bool irq_test_in_progress = - dev_priv->gpu_error.test_irq_rings & intel_ring_flag(ring); + ACCESS_ONCE(dev_priv->gpu_error.test_irq_rings) & intel_ring_flag(ring); #ifdef __NetBSD__ int state = 0; bool wedged; @@ -1404,8 +1404,6 @@ int __i915_wait_request(struct drm_i915_ s64 before, now; int ret; - __insn_barrier(); /* ACCESS_ONCE for irq_test_in_progress */ - WARN(!intel_irqs_enabled(dev_priv), "IRQs disabled"); if (list_empty(&req->list))
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:54:18 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c Log Message: Ifdef out sysfs stuff. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.5 Mon Aug 27 06:54:08 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Mon Aug 27 07:54:18 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.5 2018/08/27 06:54:08 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.6 2018/08/27 07:54:18 riastradh Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.5 2018/08/27 06:54:08 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.6 2018/08/27 07:54:18 riastradh Exp $"); #include #include @@ -302,16 +302,18 @@ static int drm_minor_alloc(struct drm_de minor->index = r; +#ifndef __NetBSD__ /* XXX drm sysfs */ minor->kdev = drm_sysfs_minor_alloc(minor); if (IS_ERR(minor->kdev)) { r = PTR_ERR(minor->kdev); goto err_index; } +#endif *drm_minor_get_slot(dev, type) = minor; return 0; -err_index: +err_index: __unused spin_lock_irqsave(&drm_minor_lock, flags); idr_remove(&drm_minors_idr, minor->index); spin_unlock_irqrestore(&drm_minor_lock, flags); @@ -330,7 +332,7 @@ static void drm_minor_free(struct drm_de if (!minor) return; -#ifndef __NetBSD__ +#ifndef __NetBSD__ /* XXX drm sysfs */ put_device(minor->kdev); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:54:42 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_fb_helper.c Log Message: Fix bad merge and ifdef out linux fb stuff. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.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/drm_fb_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.9 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.9 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c Mon Aug 27 07:54:41 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fb_helper.c,v 1.9 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_fb_helper.c,v 1.10 2018/08/27 07:54:41 riastradh Exp $ */ /* * Copyright (c) 2006-2009 Red Hat Inc. @@ -30,7 +30,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fb_helper.c,v 1.9 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fb_helper.c,v 1.10 2018/08/27 07:54:41 riastradh Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -287,7 +287,6 @@ int drm_fb_helper_debug_enter_fb(struct drm_fb_helper *helper) { const struct drm_crtc_helper_funcs *funcs; - struct drm_crtc_helper_funcs *funcs; int i; list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { @@ -762,6 +761,8 @@ out_free: } EXPORT_SYMBOL(drm_fb_helper_init); +#ifndef __NetBSD__ /* XXX fb info */ + /** * drm_fb_helper_alloc_fbi - allocate fb_info and some of its members * @fb_helper: driver-allocated fbdev helper @@ -842,6 +843,8 @@ void drm_fb_helper_release_fbi(struct dr } EXPORT_SYMBOL(drm_fb_helper_release_fbi); +#endif /* __NetBSD__ */ + void drm_fb_helper_fini(struct drm_fb_helper *fb_helper) { if (!drm_fbdev_emulation) @@ -850,7 +853,9 @@ void drm_fb_helper_fini(struct drm_fb_he if (!list_empty(&fb_helper->kernel_fb_list)) { list_del(&fb_helper->kernel_fb_list); if (list_empty(&kernel_fb_helper_list)) { +#ifndef __NetBSD__ /* XXX drm sysrq */ unregister_sysrq_key('v', &sysrq_drm_fb_helper_restore_op); +#endif } }
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 07:55:06 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_ioctl.c Log Message: Disable drm prime ioctls for now. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/drm_ioctl.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/drm_ioctl.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.6 src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.6 Mon Aug 27 06:50:58 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c Mon Aug 27 07:55:06 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_ioctl.c,v 1.6 2018/08/27 06:50:58 riastradh Exp $ */ +/* $NetBSD: drm_ioctl.c,v 1.7 2018/08/27 07:55:06 riastradh Exp $ */ /* * Created: Fri Jan 8 09:01:26 1999 by fa...@valinux.com @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_ioctl.c,v 1.6 2018/08/27 06:50:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_ioctl.c,v 1.7 2018/08/27 07:55:06 riastradh Exp $"); #include #include @@ -665,8 +665,10 @@ static const struct drm_ioctl_desc drm_i DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETRESOURCES, drm_mode_getresources, DRM_CONTROL_ALLOW|DRM_UNLOCKED), +#ifndef __NetBSD__ /* XXX drm prime */ DRM_IOCTL_DEF(DRM_IOCTL_PRIME_HANDLE_TO_FD, drm_prime_handle_to_fd_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_PRIME_FD_TO_HANDLE, drm_prime_fd_to_handle_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), +#endif DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETPLANERESOURCES, drm_mode_getplane_res, DRM_CONTROL_ALLOW|DRM_UNLOCKED), DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETCRTC, drm_mode_getcrtc, DRM_CONTROL_ALLOW|DRM_UNLOCKED),
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:37:21 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_fb_helper.c Log Message: Fix vestigial call to drm_fb_helper_set_config. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.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/drm_fb_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.11 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.11 Mon Aug 27 13:36:13 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c Mon Aug 27 13:37:21 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fb_helper.c,v 1.11 2018/08/27 13:36:13 riastradh Exp $ */ +/* $NetBSD: drm_fb_helper.c,v 1.12 2018/08/27 13:37:21 riastradh Exp $ */ /* * Copyright (c) 2006-2009 Red Hat Inc. @@ -30,7 +30,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_fb_helper.c,v 1.11 2018/08/27 13:36:13 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fb_helper.c,v 1.12 2018/08/27 13:37:21 riastradh Exp $"); #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt @@ -2216,7 +2216,7 @@ int drm_fb_helper_hotplug_event(struct d drm_setup_crtcs(fb_helper); drm_modeset_unlock_all(dev); #ifdef __NetBSD__ - drm_fb_helper_set_config(fb_helper); + drm_fb_helper_restore_fbdev_mode_unlocked(fb_helper); #else drm_fb_helper_set_par(fb_helper->fbdev); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 13:42:24 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c Log Message: Turn on driver debug messages for now Author: coypoop Committer: Taylor R Campbell To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.6 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.6 Mon Aug 27 07:54:18 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Mon Aug 27 13:42:24 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.6 2018/08/27 07:54:18 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.7 2018/08/27 13:42:24 riastradh Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.6 2018/08/27 07:54:18 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.7 2018/08/27 13:42:24 riastradh Exp $"); #include #include @@ -45,7 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v #include "drm_legacy.h" #include "drm_internal.h" -unsigned int drm_debug = 0; /* bitmask of DRM_UT_x */ +unsigned int drm_debug = ~(unsigned int)0; /* bitmask of DRM_UT_x */ EXPORT_SYMBOL(drm_debug); MODULE_AUTHOR(CORE_AUTHOR);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:14:29 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_auth.c drm_context.c drm_crtc.c drm_gem.c src/sys/external/bsd/drm2/dist/drm/amd/amdgpu: amdgpu_bo_list.c amdgpu_ctx.c src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c i915_gem_context.c src/sys/external/bsd/drm2/dist/drm/sis: sis_mm.c src/sys/external/bsd/drm2/dist/drm/via: via_mm.c Log Message: Sprinkle idr_preload/idr_preload_end. Try to do these outside all mutex locks. Tricky case is i915_gem_context, where the struct mutex is held for a long time. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/drm_auth.c cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/drm_context.c cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c \ src/sys/external/bsd/drm2/dist/drm/drm_gem.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_bo_list.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ctx.c cvs rdiff -u -r1.49 -r1.50 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_context.c cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/sis/sis_mm.c cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/via/via_mm.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/drm_auth.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_auth.c:1.3 src/sys/external/bsd/drm2/dist/drm/drm_auth.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/drm_auth.c:1.3 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_auth.c Mon Aug 27 14:14:29 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_auth.c,v 1.3 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_auth.c,v 1.4 2018/08/27 14:14:29 riastradh Exp $ */ /* * Created: Tue Feb 2 08:37:54 1999 by fa...@valinux.com @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_auth.c,v 1.3 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_auth.c,v 1.4 2018/08/27 14:14:29 riastradh Exp $"); #include #include "drm_internal.h" @@ -53,6 +53,7 @@ int drm_getmagic(struct drm_device *dev, struct drm_auth *auth = data; int ret = 0; + idr_preload(GFP_KERNEL); mutex_lock(&dev->struct_mutex); if (!file_priv->magic) { ret = idr_alloc(&file_priv->master->magic_map, file_priv, @@ -62,6 +63,7 @@ int drm_getmagic(struct drm_device *dev, } auth->magic = file_priv->magic; mutex_unlock(&dev->struct_mutex); + idr_preload_end(); DRM_DEBUG("%u\n", auth->magic); Index: src/sys/external/bsd/drm2/dist/drm/drm_context.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_context.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_context.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/drm_context.c:1.4 Mon Aug 27 04:58:19 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_context.c Mon Aug 27 14:14:29 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_context.c,v 1.4 2018/08/27 04:58:19 riastradh Exp $ */ +/* $NetBSD: drm_context.c,v 1.5 2018/08/27 14:14:29 riastradh Exp $ */ /* * Legacy: Generic DRM Contexts @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_context.c,v 1.4 2018/08/27 04:58:19 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_context.c,v 1.5 2018/08/27 14:14:29 riastradh Exp $"); #include @@ -82,10 +82,12 @@ static int drm_legacy_ctxbitmap_next(str { int ret; + idr_preload(GFP_KERNEL); mutex_lock(&dev->struct_mutex); ret = idr_alloc(&dev->ctx_idr, NULL, DRM_RESERVED_CONTEXTS, 0, GFP_KERNEL); mutex_unlock(&dev->struct_mutex); + idr_preload_end(); return ret; } Index: src/sys/external/bsd/drm2/dist/drm/drm_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.8 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.8 Mon Aug 27 06:55:13 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_crtc.c Mon Aug 27 14:14:29 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_crtc.c,v 1.8 2018/08/27 06:55:13 riastradh Exp $ */ +/* $NetBSD: drm_crtc.c,v 1.9 2018/08/27 14:14:29 riastradh Exp $ */ /* * Copyright (c) 2006-2008 Intel Corporation @@ -32,7 +32,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.8 2018/08/27 06:55:13 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.9 2018/08/27 14:14:29 riastradh Exp $"); #include #include @@ -5987,6 +5987,7 @@ struct drm_tile_group *drm_mode_create_t memcpy(tg->group_data, topology, 8); tg->dev = dev; + idr_preload(GFP_KERNEL); mutex_lock(&dev->mode_config.idr_mutex); ret = idr_alloc(&dev->mode_config.tile_idr, tg, 1, 0, GFP_KERNEL); if (ret >= 0) { @@ -5997,6 +5998,7 @@ struct drm_tile_group *drm_mode_create_t } mutex_unlock
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:39:46 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_crtc.c Log Message: Initialize connector->kdev, which amdgpu uses. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/dist/drm/drm_crtc.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/drm_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.9 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.9 Mon Aug 27 14:14:29 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_crtc.c Mon Aug 27 14:39:46 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_crtc.c,v 1.9 2018/08/27 14:14:29 riastradh Exp $ */ +/* $NetBSD: drm_crtc.c,v 1.10 2018/08/27 14:39:46 riastradh Exp $ */ /* * Copyright (c) 2006-2008 Intel Corporation @@ -32,7 +32,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.9 2018/08/27 14:14:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.10 2018/08/27 14:39:46 riastradh Exp $"); #include #include @@ -903,6 +903,7 @@ int drm_connector_init(struct drm_device connector->base.properties = &connector->properties; connector->dev = dev; + connector->kdev = dev->dev; connector->funcs = funcs; connector->connector_type = connector_type; connector->connector_type_id =
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:40:30 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_crtc.c Log Message: Call drm_modeset_lock_fini in drm_plane_cleanup. >From mrg@. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/drm2/dist/drm/drm_crtc.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/drm_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.10 src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.11 --- src/sys/external/bsd/drm2/dist/drm/drm_crtc.c:1.10 Mon Aug 27 14:39:46 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_crtc.c Mon Aug 27 14:40:30 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_crtc.c,v 1.10 2018/08/27 14:39:46 riastradh Exp $ */ +/* $NetBSD: drm_crtc.c,v 1.11 2018/08/27 14:40:30 riastradh Exp $ */ /* * Copyright (c) 2006-2008 Intel Corporation @@ -32,7 +32,7 @@ * Jesse Barnes */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.10 2018/08/27 14:39:46 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_crtc.c,v 1.11 2018/08/27 14:40:30 riastradh Exp $"); #include #include @@ -1295,6 +1295,7 @@ void drm_plane_cleanup(struct drm_plane WARN_ON(plane->state && !plane->funcs->atomic_destroy_state); if (plane->state && plane->funcs->atomic_destroy_state) plane->funcs->atomic_destroy_state(plane, plane->state); + drm_modeset_lock_fini(&plane->mutex); memset(plane, 0, sizeof(*plane)); }
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:41:41 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_drv.c Log Message: Make mutex destruction match initialization. >From mrg@. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.8 src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/drm_drv.c:1.8 Mon Aug 27 13:42:47 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_drv.c Mon Aug 27 14:41:41 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_drv.c,v 1.8 2018/08/27 13:42:47 riastradh Exp $ */ +/* $NetBSD: drm_drv.c,v 1.9 2018/08/27 14:41:41 riastradh Exp $ */ /* * Created: Fri Jan 19 10:48:35 2001 by fa...@acm.org @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.8 2018/08/27 13:42:47 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.9 2018/08/27 14:41:41 riastradh Exp $"); #include #include @@ -732,12 +732,15 @@ err_minors: drm_fs_inode_free(dev->anon_inode); err_free: #ifdef __NetBSD__ - linux_mutex_destroy(&dev->struct_mutex); - linux_mutex_destroy(&dev->ctxlist_mutex); linux_mutex_destroy(&dev->master_mutex); + linux_mutex_destroy(&dev->ctxlist_mutex); + linux_mutex_destroy(&dev->struct_mutex); spin_lock_destroy(&dev->event_lock); + spin_lock_destroy(&dev->buf_lock); #else mutex_destroy(&dev->master_mutex); + mutex_destroy(&dev->ctxlist_mutex); + mutex_destroy(&dev->struct_mutex); #endif kfree(dev); return NULL; @@ -760,12 +763,15 @@ static void drm_dev_release(struct kref drm_minor_free(dev, DRM_MINOR_CONTROL); #ifdef __NetBSD__ - linux_mutex_destroy(&dev->struct_mutex); - linux_mutex_destroy(&dev->ctxlist_mutex); linux_mutex_destroy(&dev->master_mutex); + linux_mutex_destroy(&dev->ctxlist_mutex); + linux_mutex_destroy(&dev->struct_mutex); spin_lock_destroy(&dev->event_lock); + spin_lock_destroy(&dev->buf_lock); #else mutex_destroy(&dev->master_mutex); + mutex_destroy(&dev->ctxlist_mutex); + mutex_destroy(&dev->struct_mutex); #endif kfree(dev->unique); kfree(dev);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:43:15 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_irq.c Log Message: Fix scope of locks in drm_handle_vblank. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_irq.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.13 src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.14 --- src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.13 Mon Aug 27 14:42:43 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_irq.c Mon Aug 27 14:43:15 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_irq.c,v 1.13 2018/08/27 14:42:43 riastradh Exp $ */ +/* $NetBSD: drm_irq.c,v 1.14 2018/08/27 14:43:15 riastradh Exp $ */ /* * drm_irq.c IRQ and vblank support @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.13 2018/08/27 14:42:43 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.14 2018/08/27 14:43:15 riastradh Exp $"); #include #include "drm_trace.h" @@ -2092,6 +2092,7 @@ bool drm_handle_vblank(struct drm_device return false; spin_lock_irqsave(&dev->event_lock, irqflags); + spin_lock(&dev->vbl_lock); /* Need timestamp lock to prevent concurrent execution with * vblank enable/disable, as this would cause inconsistent @@ -2102,6 +2103,7 @@ bool drm_handle_vblank(struct drm_device /* Vblank irq handling disabled. Nothing to do. */ if (!vblank->enabled) { spin_unlock(&dev->vblank_time_lock); + spin_unlock(&dev->vbl_lock); spin_unlock_irqrestore(&dev->event_lock, irqflags); return false; } @@ -2111,9 +2113,7 @@ bool drm_handle_vblank(struct drm_device spin_unlock(&dev->vblank_time_lock); #ifdef __NetBSD__ - spin_lock(&dev->vbl_lock); DRM_SPIN_WAKEUP_ONE(&vblank->queue, &dev->vbl_lock); - spin_unlock(&dev->vbl_lock); #else wake_up(&vblank->queue); #endif @@ -2127,8 +2127,9 @@ bool drm_handle_vblank(struct drm_device if (dev->vblank_disable_immediate && drm_vblank_offdelay > 0 && !atomic_read(&vblank->refcount)) - vblank_disable_fn((unsigned long)vblank); + vblank_disable_locked(vblank, dev, pipe); + spin_unlock(&dev->vbl_lock); spin_unlock_irqrestore(&dev->event_lock, irqflags); return true;
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:43:32 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_irq.c Log Message: Caller must also hold vblank_time_lock here. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_irq.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.14 src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.15 --- src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.14 Mon Aug 27 14:43:15 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_irq.c Mon Aug 27 14:43:32 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_irq.c,v 1.14 2018/08/27 14:43:15 riastradh Exp $ */ +/* $NetBSD: drm_irq.c,v 1.15 2018/08/27 14:43:32 riastradh Exp $ */ /* * drm_irq.c IRQ and vblank support @@ -35,7 +35,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.14 2018/08/27 14:43:15 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_irq.c,v 1.15 2018/08/27 14:43:32 riastradh Exp $"); #include #include "drm_trace.h" @@ -205,6 +205,7 @@ static void drm_update_vblank_count(stru int framedur_ns = vblank->framedur_ns; assert_spin_locked(&dev->vbl_lock); + assert_spin_locked(&dev->vblank_time_lock); /* * Interrupts were disabled prior to this call, so deal with counter
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:45:46 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_ioctl.c Log Message: Zero-pad truncated drm ioctl commands on input. This way we don't act on uninitialized stack garbage if user invokes a drm ioctl with a short input, which, uhhh, we have been doing for a long time. #@^&*$!@&@#*@! XXX pullup-7 XXX pullup-8 To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/drm_ioctl.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/drm_ioctl.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.7 src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.7 Mon Aug 27 07:55:06 2018 +++ src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c Mon Aug 27 14:45:45 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_ioctl.c,v 1.7 2018/08/27 07:55:06 riastradh Exp $ */ +/* $NetBSD: drm_ioctl.c,v 1.8 2018/08/27 14:45:45 riastradh Exp $ */ /* * Created: Fri Jan 8 09:01:26 1999 by fa...@valinux.com @@ -31,7 +31,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: drm_ioctl.c,v 1.7 2018/08/27 07:55:06 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_ioctl.c,v 1.8 2018/08/27 14:45:45 riastradh Exp $"); #include #include @@ -721,6 +721,8 @@ static const struct drm_ioctl_desc drm_i int drm_ioctl(struct file *fp, unsigned long cmd, void *data) { + char stackbuf[128]; + char *buf = stackbuf; struct drm_file *const file = fp->f_data; const unsigned int nr = DRM_IOCTL_NR(cmd); int error; @@ -767,6 +769,21 @@ drm_ioctl(struct file *fp, unsigned long if (error) return error; + /* If userland passed in too few bytes, zero-pad them. */ + if (IOCPARM_LEN(cmd) < IOCPARM_LEN(ioctl->cmd)) { + /* 12-bit quantity, according to */ + KASSERT(IOCPARM_LEN(ioctl->cmd) <= 4096); + if (IOCPARM_LEN(ioctl->cmd) > sizeof stackbuf) { + buf = kmem_alloc(IOCPARM_LEN(ioctl->cmd), KM_NOSLEEP); + if (buf == NULL) +return ENOMEM; + } + memcpy(buf, data, IOCPARM_LEN(cmd)); + memset(buf + IOCPARM_LEN(cmd), 0, + IOCPARM_LEN(ioctl->cmd) - IOCPARM_LEN(cmd)); + data = buf; + } + if ((drm_core_check_feature(dev, DRIVER_MODESET) && is_driver_ioctl) || ISSET(ioctl->flags, DRM_UNLOCKED)) { /* XXX errno Linux->NetBSD */ @@ -778,6 +795,10 @@ drm_ioctl(struct file *fp, unsigned long mutex_unlock(&drm_global_mutex); } + /* If we had to allocate a heap buffer, free it. */ + if (buf != stackbuf) + kmem_free(buf, IOCPARM_LEN(ioctl->cmd)); + return error; } #else
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 27 14:51:34 UTC 2018 Modified Files: src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_bo.c src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core: nouveau_nvkm_core_gpuobj.c src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/device: nouveau_nvkm_engine_device_base.c src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/fifo: nouveau_nvkm_engine_fifo_chan.c src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/devinit: fbmem.h src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem: nouveau_nvkm_subdev_instmem_base.c nouveau_nvkm_subdev_instmem_nv40.c src/sys/external/bsd/drm2/dist/drm/ttm: ttm_bo_util.c Log Message: Be consistent about I/O byte ordering. Leave XXX comments where it's not clear what we should do. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_gpuobj.c cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/device/nouveau_nvkm_engine_device_base.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/fifo/nouveau_nvkm_engine_fifo_chan.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/devinit/fbmem.h cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_base.c \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/instmem/nouveau_nvkm_subdev_instmem_nv40.c cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.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/nouveau/nouveau_bo.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c:1.10 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c:1.11 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c:1.10 Mon Aug 27 07:32:40 2018 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c Mon Aug 27 14:51:33 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_bo.c,v 1.10 2018/08/27 07:32:40 riastradh Exp $ */ +/* $NetBSD: nouveau_bo.c,v 1.11 2018/08/27 14:51:33 riastradh Exp $ */ /* * Copyright 2007 Dave Airlied @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_bo.c,v 1.10 2018/08/27 07:32:40 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_bo.c,v 1.11 2018/08/27 14:51:33 riastradh Exp $"); #include #include @@ -551,7 +551,7 @@ ioread16_native(const void __iomem *ptr) v = *(const uint16_t __iomem *)ptr; membar_consumer(); - return htole16(v); + return v; } static inline uint32_t @@ -562,7 +562,7 @@ ioread32_native(const void __iomem *ptr) v = *(const uint32_t __iomem *)ptr; membar_consumer(); - return htole32(v); + return v; } static inline void @@ -570,7 +570,7 @@ iowrite16_native(uint16_t v, void __iome { membar_producer(); - *(uint16_t __iomem *)ptr = le16toh(v); + *(uint16_t __iomem *)ptr = v; } static inline void @@ -578,7 +578,7 @@ iowrite32_native(uint32_t v, void __iome { membar_producer(); - *(uint32_t __iomem *)ptr = le32toh(v); + *(uint32_t __iomem *)ptr = v; } #endif Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_gpuobj.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_gpuobj.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_gpuobj.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_gpuobj.c:1.3 Mon Aug 27 07:36:18 2018 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/core/nouveau_nvkm_core_gpuobj.c Mon Aug 27 14:51:33 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_nvkm_core_gpuobj.c,v 1.3 2018/08/27 07:36:18 riastradh Exp $ */ +/* $NetBSD: nouveau_nvkm_core_gpuobj.c,v 1.4 2018/08/27 14:51:33 riastradh Exp $ */ /* * Copyright 2012 Red Hat Inc. @@ -24,7 +24,7 @@ * Authors: Ben Skeggs */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_core_gpuobj.c,v 1.3 2018/08/27 07:36:18 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_core_gpuobj.c,v 1.4 2018/08/27 14:51:33 riastradh Exp $"); #include #include @@ -46,7 +46,7 @@ __KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm # define iowrite32_native fake_iowrite32_native static inline uint32_t -fake_ioread32_native(const void __iomem *ptr) +ioread32_native(const void __iomem *ptr) { uint32_t v; @@ -57,7 +57,7 @@ fake_ioread32_native(const void __iomem } static inline void -fake_iowrite32_native(uint32_t v, void __iomem *ptr) +iowrite32_native(uint32_t v, void __iomem *ptr) { membar_producer(); Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Fri Apr 25 19:07:55 UTC 2014 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_fb_helper.c Log Message: Fix hot-plug with small patch from upstream before a full update. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.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/drm_fb_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.3 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.3 Tue Mar 18 21:36:52 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c Fri Apr 25 19:07:55 2014 @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -1331,6 +1332,7 @@ static void drm_setup_crtcs(struct drm_f for (i = 0; i < fb_helper->crtc_count; i++) { modeset = &fb_helper->crtc_info[i].mode_set; modeset->num_connectors = 0; + modeset->fb = NULL; } for (i = 0; i < fb_helper->connector_count; i++) { @@ -1350,6 +1352,18 @@ static void drm_setup_crtcs(struct drm_f } } + /* Clear out any old modes if there are no more connected outputs. */ + for (i = 0; i < fb_helper->crtc_count; i++) { + modeset = &fb_helper->crtc_info[i].mode_set; + if (modeset->num_connectors == 0) { + BUG_ON(modeset->fb); + BUG_ON(modeset->num_connectors); + if (modeset->mode) +drm_mode_destroy(dev, modeset->mode); + modeset->mode = NULL; + fb_helper->crtc_info[i].desired_mode = NULL; + } + } out: kfree(crtcs); kfree(modes);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Sun Jul 6 15:44:55 UTC 2014 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_irq.c Log Message: Call teardown_timer in drm_vblank_cleanup. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_irq.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.2 Tue Mar 18 18:20:42 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_irq.c Sun Jul 6 15:44:55 2014 @@ -207,6 +207,9 @@ void drm_vblank_cleanup(struct drm_devic return; del_timer_sync(&dev->vblank_disable_timer); +#ifdef __NetBSD__ + teardown_timer(&dev->vblank_disable_timer); +#endif vblank_disable_fn((unsigned long)dev);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Wed Jul 16 20:08:37 UTC 2014 Removed Files: src/sys/external/bsd/drm2/dist/drm: drm_trace.h drm_trace_points.c Log Message: Delete troublesome drm_trace.h and drm_trace_points.c. To generate a diff of this commit: cvs rdiff -u -r1.1.1.1 -r0 src/sys/external/bsd/drm2/dist/drm/drm_trace.h \ src/sys/external/bsd/drm2/dist/drm/drm_trace_points.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: christos Date: Tue Nov 11 02:33:28 UTC 2014 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_agpsupport.c drm_pci.c drm_stub.c Log Message: make a drm_agp_destroy() function to resolve the circular dependency between drmkms and drmkms_pci To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/drm_pci.c cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_stub.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/drm_agpsupport.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c:1.4 Wed Jul 16 16:56:24 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_agpsupport.c Mon Nov 10 21:33:28 2014 @@ -518,6 +518,16 @@ void drm_agp_clear(struct drm_device *de dev->agp->enabled = 0; } +void drm_agp_destroy(struct drm_device *dev) +{ + if (dev->agp) { + arch_phys_wc_del(dev->agp->agp_mtrr); + drm_agp_clear(dev); + kfree(dev->agp); + dev->agp = NULL; + } +} + #ifndef __NetBSD__ /* XXX Dead code that doesn't make sense... */ /** * Binds a collection of pages into AGP memory at the given offset, returning Index: src/sys/external/bsd/drm2/dist/drm/drm_pci.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_pci.c:1.3 src/sys/external/bsd/drm2/dist/drm/drm_pci.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/drm_pci.c:1.3 Wed Jul 16 16:03:56 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_pci.c Mon Nov 10 21:33:28 2014 @@ -277,12 +277,7 @@ static void drm_pci_agp_init(struct drm_ void drm_pci_agp_destroy(struct drm_device *dev) { - if (dev->agp) { - arch_phys_wc_del(dev->agp->agp_mtrr); - drm_agp_clear(dev); - kfree(dev->agp); - dev->agp = NULL; - } + drm_agp_destroy(dev); } static struct drm_bus drm_pci_bus = { Index: src/sys/external/bsd/drm2/dist/drm/drm_stub.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_stub.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_stub.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/drm_stub.c:1.5 Wed Jul 16 16:56:24 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_stub.c Mon Nov 10 21:33:28 2014 @@ -849,7 +849,7 @@ void drm_dev_unregister(struct drm_devic dev->driver->unload(dev); if (dev->agp) - drm_pci_agp_destroy(dev); + drm_agp_destroy(dev); drm_vblank_cleanup(dev);
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Sat Feb 28 03:03:30 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_irq.c Log Message: Fix another *@!#^$@!& timeout return convention mistake. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_irq.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.5 Wed Jul 16 20:56:24 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_irq.c Sat Feb 28 03:03:30 2015 @@ -1301,11 +1301,11 @@ int drm_wait_vblank(struct drm_device *d vblwait->request.sequence) <= (1 << 23)) || !dev->irq_enabled)); spin_unlock_irqrestore(&dev->vbl_lock, irqflags); - if (0 < ret) - /* - * ret is ticks remaining on success in this case, but - * caller just wants 0 for success. - */ + if (ret < 0) /* Failed: do nothing. */ + ; + else if (ret == 0) /* Timed out: return -EBUSY like Linux. */ + ret = -EBUSY; + else /* Succeeded (ret > 0): return 0. */ ret = 0; } #else
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Sat Feb 28 03:05:09 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_irq.c Log Message: Clarify comment in last commit. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/drm_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/drm_irq.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.6 src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/drm_irq.c:1.6 Sat Feb 28 03:03:30 2015 +++ src/sys/external/bsd/drm2/dist/drm/drm_irq.c Sat Feb 28 03:05:09 2015 @@ -1301,7 +1301,7 @@ int drm_wait_vblank(struct drm_device *d vblwait->request.sequence) <= (1 << 23)) || !dev->irq_enabled)); spin_unlock_irqrestore(&dev->vbl_lock, irqflags); - if (ret < 0) /* Failed: do nothing. */ + if (ret < 0) /* Failed: return negative error as is. */ ; else if (ret == 0) /* Timed out: return -EBUSY like Linux. */ ret = -EBUSY;
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Wed Mar 4 11:00:15 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_ioctl.c Log Message: Return current pid and current euid from drm_getclient to fool libva. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/drm_ioctl.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/drm_ioctl.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.3 src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.3 Wed Jul 16 20:03:56 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c Wed Mar 4 11:00:15 2015 @@ -232,8 +232,8 @@ int drm_getclient(struct drm_device *dev if (client->idx == 0) { client->auth = file_priv->authenticated; #ifdef __NetBSD__ /* XXX Too scary to contemplate. */ - client->pid = -1; - client->uid = -1; + client->pid = curproc->p_pid; + client->uid = kauth_cred_geteuid(curproc->p_cred); #else client->pid = pid_vnr(file_priv->pid); client->uid = from_kuid_munged(current_user_ns(),
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Mon Aug 18 01:21:04 UTC 2014 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_gem.c src/sys/external/bsd/drm2/dist/drm/ttm: ttm_bo.c Log Message: For gem and ttm objects backed by uvm_aobjs, share the vmobjlock. XXX pullup to 7 To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/drm_gem.c cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.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/drm_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.4 Wed Jul 16 20:56:24 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_gem.c Mon Aug 18 01:21:03 2014 @@ -155,6 +155,13 @@ int drm_gem_object_init(struct drm_devic #ifdef __NetBSD__ obj->gemo_shm_uao = uao_create(size, 0); + /* + * XXX This is gross. We ought to do it the other way around: + * set the uao to have the main uvm object's lock. However, + * uvm_obj_setlock is not safe on uvm_aobjs. + */ + mutex_obj_hold(obj->gemo_shm_uao->vmobjlock); + uvm_obj_setlock(&obj->gemo_uvmobj, obj->gemo_shm_uao->vmobjlock); #else filp = shmem_file_setup("drm mm object", size, VM_NORESERVE); if (IS_ERR(filp)) Index: src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c diff -u src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c:1.4 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c:1.4 Sun Jul 27 00:40:39 2014 +++ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c Mon Aug 18 01:21:03 2014 @@ -33,6 +33,7 @@ #ifdef __NetBSD__ #include #include +#include #endif #include @@ -269,6 +270,16 @@ static int ttm_bo_add_ttm(struct ttm_buf page_flags, glob->dummy_read_page); if (unlikely(bo->ttm == NULL)) ret = -ENOMEM; +#ifdef __NetBSD__ + /* + * XXX This is gross. We ought to do it the other way + * around: set the uao to have the main uvm object's + * lock. However, uvm_obj_setlock is not safe on + * uvm_aobjs. + */ + mutex_obj_hold(bo->ttm->swap_storage->vmobjlock); + uvm_obj_setlock(&bo->uvmobj, bo->ttm->swap_storage->vmobjlock); +#endif break; case ttm_bo_type_sg: bo->ttm = bdev->driver->ttm_tt_create(bdev, bo->num_pages << PAGE_SHIFT, @@ -279,6 +290,11 @@ static int ttm_bo_add_ttm(struct ttm_buf break; } bo->ttm->sg = bo->sg; +#ifdef __NetBSD__ + /* XXX This is gross too -- see above. */ + mutex_obj_hold(bo->ttm->swap_storage->vmobjlock); + uvm_obj_setlock(&bo->uvmobj, bo->ttm->swap_storage->vmobjlock); +#endif break; default: pr_err("Illegal buffer object type\n");
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Tue Mar 18 21:36:52 UTC 2014 Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_fb_helper.c drm_global.c drm_modes.c src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c i915_irq.c intel_display.c intel_dp.c intel_hdmi.c Log Message: Fix unused variable warnings in drm2. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c \ src/sys/external/bsd/drm2/dist/drm/drm_global.c \ src/sys/external/bsd/drm2/dist/drm/drm_modes.c cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c \ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c \ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c cvs rdiff -u -r1.1.1.1 -r1.2 \ 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/drm_fb_helper.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c:1.2 Tue Mar 18 18:20:42 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_fb_helper.c Tue Mar 18 21:36:52 2014 @@ -1216,7 +1216,6 @@ static int drm_pick_crtcs(struct drm_fb_ struct drm_connector *connector; struct drm_connector_helper_funcs *connector_funcs; struct drm_encoder *encoder; - struct drm_fb_helper_crtc *best_crtc; int my_score, best_score, score; struct drm_fb_helper_crtc **crtcs, *crtc; struct drm_fb_helper_connector *fb_helper_conn; @@ -1228,7 +1227,6 @@ static int drm_pick_crtcs(struct drm_fb_ connector = fb_helper_conn->connector; best_crtcs[n] = NULL; - best_crtc = NULL; best_score = drm_pick_crtcs(fb_helper, best_crtcs, modes, n+1, width, height); if (modes[n] == NULL) return best_score; @@ -1277,7 +1275,6 @@ static int drm_pick_crtcs(struct drm_fb_ score = my_score + drm_pick_crtcs(fb_helper, crtcs, modes, n + 1, width, height); if (score > best_score) { - best_crtc = crtc; best_score = score; memcpy(best_crtcs, crtcs, dev->mode_config.num_connector * @@ -1419,7 +1416,6 @@ EXPORT_SYMBOL(drm_fb_helper_initial_conf int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper) { struct drm_device *dev = fb_helper->dev; - int count = 0; u32 max_width, max_height, bpp_sel; int bound = 0, crtcs_bound = 0; struct drm_crtc *crtc; @@ -1446,8 +1442,7 @@ int drm_fb_helper_hotplug_event(struct d max_height = fb_helper->fb->height; bpp_sel = fb_helper->fb->bits_per_pixel; - count = drm_fb_helper_probe_connector_modes(fb_helper, max_width, - max_height); + drm_fb_helper_probe_connector_modes(fb_helper, max_width, max_height); drm_setup_crtcs(fb_helper); mutex_unlock(&dev->mode_config.mutex); Index: src/sys/external/bsd/drm2/dist/drm/drm_global.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_global.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_global.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_global.c:1.2 Tue Mar 18 18:20:42 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_global.c Tue Mar 18 21:36:52 2014 @@ -75,7 +75,6 @@ int drm_global_item_ref(struct drm_globa { int ret; struct drm_global_item *item = &glob[ref->global_type]; - void *object; mutex_lock(&item->mutex); if (item->refcount == 0) { @@ -93,7 +92,6 @@ int drm_global_item_ref(struct drm_globa } ++item->refcount; ref->object = item->object; - object = item->object; mutex_unlock(&item->mutex); return 0; out_err: Index: src/sys/external/bsd/drm2/dist/drm/drm_modes.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_modes.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_modes.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_modes.c:1.2 Tue Mar 18 18:20:42 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_modes.c Tue Mar 18 21:36:52 2014 @@ -173,7 +173,7 @@ struct drm_display_mode *drm_cvt_mode(st /* 3) Nominal HSync width (% of line period) - default 8 */ #define CVT_HSYNC_PERCENTAGE 8 unsigned int hblank_percentage; - int vsyncandback_porch, vback_porch, hblank; + int vsyncandback_porch, vback_porch __unused, hblank; /* estimated the horizontal period */ tmp1 = HV_FACTOR * 100 - @@ -321,9 +321,9 @@ drm_gtf_mode_complex(struct drm_device * int top_margin, bottom_margin; int interlace; unsigned int hfreq_est; - int vsync_plus_bp, vback_porch; - unsigned int vtotal_lines, vfieldrate_est, hperiod; - unsigned int vfield_rate, vframe_rate; + int vsync_plus_bp, vback_porch __unused; + unsigned int vtotal_lines, vfieldrate_est __unused, hperiod __unused; + unsigned int vfield_rate, vframe_rate __unused; int left_margin, right_margin; unsigned int total_active_pixels, ideal_duty_cycle; unsigned int hblank, total_pixels, pixel_freq;
CVS commit: src/sys/external/bsd/drm2/dist/drm
Module Name:src Committed By: riastradh Date: Fri Apr 3 01:09:42 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_agp.c nouveau_ttm.c src/sys/external/bsd/drm2/dist/drm/radeon: radeon_agp.c radeon_object.c src/sys/external/bsd/drm2/dist/drm/ttm: ttm_bo.c Log Message: Use pmap_pv(9) to remove mappings of device pages in TTM. Adapt nouveau and radeon to do pmap_pv_track for their device pages. Proposed on tech-kern with no objections: https://mail-index.netbsd.org/tech-kern/2015/03/26/msg018561.html Further background at: https://mail-index.netbsd.org/tech-kern/2014/07/23/msg017392.html To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_agp.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_agp.c \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_object.c cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.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/nouveau/nouveau_agp.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_agp.c:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_agp.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_agp.c:1.2 Wed Aug 6 13:35:13 2014 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_agp.c Fri Apr 3 01:09:42 2015 @@ -1,7 +1,7 @@ -/* $NetBSD: nouveau_agp.c,v 1.2 2014/08/06 13:35:13 riastradh Exp $ */ +/* $NetBSD: nouveau_agp.c,v 1.3 2015/04/03 01:09:42 riastradh Exp $ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_agp.c,v 1.2 2014/08/06 13:35:13 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_agp.c,v 1.3 2015/04/03 01:09:42 riastradh Exp $"); #include #include @@ -190,6 +190,9 @@ nouveau_agp_init(struct nouveau_drm *drm drm->agp.stat = ENABLED; drm->agp.base = info.aperture_base; drm->agp.size = info.aperture_size; +#ifdef __NetBSD__ + pmap_pv_track(drm->agp.base, drm->agp.size); +#endif #endif } @@ -198,7 +201,11 @@ nouveau_agp_fini(struct nouveau_drm *drm { #if __OS_HAS_AGP struct drm_device *dev = drm->dev; - if (dev->agp && dev->agp->acquired) + if (dev->agp && dev->agp->acquired) { +#ifdef __NetBSD__ + pmap_pv_untrack(drm->agp.base, drm->agp.size); +#endif drm_agp_release(dev); + } #endif } Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c:1.3 Wed Feb 25 22:12:00 2015 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c Fri Apr 3 01:09:42 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_ttm.c,v 1.3 2015/02/25 22:12:00 riastradh Exp $ */ +/* $NetBSD: nouveau_ttm.c,v 1.4 2015/04/03 01:09:42 riastradh Exp $ */ /* * Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA, @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_ttm.c,v 1.3 2015/02/25 22:12:00 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_ttm.c,v 1.4 2015/04/03 01:09:42 riastradh Exp $"); #include #include @@ -443,6 +443,11 @@ nouveau_ttm_init(struct nouveau_drm *drm drm->ttm.mtrr = arch_phys_wc_add(nv_device_resource_start(device, 1), nv_device_resource_len(device, 1)); +#ifdef __NetBSD__ + pmap_pv_track(nv_device_resource_start(device, 1), + nv_device_resource_len(device, 1)); +#endif + /* GART init */ if (drm->agp.stat != ENABLED) { drm->gem.gart_available = nouveau_vmmgr(drm->device)->limit; @@ -476,4 +481,9 @@ nouveau_ttm_fini(struct nouveau_drm *drm arch_phys_wc_del(drm->ttm.mtrr); drm->ttm.mtrr = 0; + +#ifdef __NetBSD__ + pmap_pv_untrack(nv_device_resource_start(nv_device(drm->device), 1), + nv_device_resource_len(nv_device(drm->device), 1)); +#endif } Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_agp.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_agp.c:1.2 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_agp.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_agp.c:1.2 Wed Jul 16 20:59:57 2014 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_agp.c Fri Apr 3 01:09:42 2015 @@ -248,6 +248,10 @@ int radeon_agp_init(struct radeon_device dev_info(rdev->dev, "GTT: %"PRIu64"M 0x%08"PRIX64" - 0x%08"PRIX64"\n", rdev->mc.gtt_size >> 20, rdev->mc.gtt_start, rdev->mc.gtt_end); +#ifdef __NetBSD__ + pmap_pv_track(rdev->mc.agp_base, rdev->mc.gtt_size); +#endif + /* workaround some hw issues */ if (rdev->family < CHIP_R200) { WREG32(RADEON_AGP_CNTL, RREG32(RADEON_AGP_CNTL) | 0x000e); @@ -274,6 +278,9 @@ void radeon_agp_fini(struct radeon_devic { #if __OS_HAS_AGP if (rdev->ddev->agp && rdev->ddev->agp->ac
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: jmcneill Date: Sat Oct 17 10:46:39 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: radeon_gart.c Log Message: mb (dsb sy) is not the same as membar_sync (dmb sy) on aarch64 To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.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/radeon/radeon_gart.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c:1.11 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c:1.11 Mon Jan 20 23:22:09 2020 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c Sat Oct 17 10:46:39 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon_gart.c,v 1.11 2020/01/20 23:22:09 jmcneill Exp $ */ +/* $NetBSD: radeon_gart.c,v 1.12 2020/10/17 10:46:39 jmcneill Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -28,7 +28,7 @@ * Jerome Glisse */ #include -__KERNEL_RCSID(0, "$NetBSD: radeon_gart.c,v 1.11 2020/01/20 23:22:09 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeon_gart.c,v 1.12 2020/10/17 10:46:39 jmcneill Exp $"); #include #include @@ -306,7 +306,7 @@ radeon_gart_post_update(struct radeon_de BUS_DMASYNC_PREWRITE); } if (rdev->gart.ptr != NULL) { - membar_sync(); /* XXX overkill */ + mb(); radeon_gart_tlb_flush(rdev); } }
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: ryo Date: Tue Oct 20 09:53:59 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: radeon_atombios_dp.c Log Message: add header file hack to resolve conflict of ALIGN macro. (on __BIG_ENDIAN) To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_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/radeon/radeon_atombios_dp.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c:1.2 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c:1.2 Tue Jan 7 13:51:38 2020 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c Tue Oct 20 09:53:59 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon_atombios_dp.c,v 1.2 2020/01/07 13:51:38 msaitoh Exp $ */ +/* $NetBSD: radeon_atombios_dp.c,v 1.3 2020/10/20 09:53:59 ryo Exp $ */ /* * Copyright 2007-8 Advanced Micro Devices, Inc. @@ -27,7 +27,7 @@ * Jerome Glisse */ #include -__KERNEL_RCSID(0, "$NetBSD: radeon_atombios_dp.c,v 1.2 2020/01/07 13:51:38 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeon_atombios_dp.c,v 1.3 2020/10/20 09:53:59 ryo Exp $"); #include #include @@ -37,6 +37,8 @@ __KERNEL_RCSID(0, "$NetBSD: radeon_atomb #include "atom-bits.h" #include +#include + /* move these to drm_dp_helper.c/h */ #define DP_LINK_CONFIGURATION_SIZE 9 #define DP_DPCD_SIZE DP_RECEIVER_CAP_SIZE
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, &dev->vbl_lock, timeout, + DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, wq, &dev->vbl_lock, timeout, (scanline = intel_get_crtc_scanline(crtc), scanline < min || scanline > max)); if (ret <= 0)
CVS commit: src/sys/external/bsd/drm2/dist/include/drm
Module Name:src Committed By: maya Date: Sun Apr 19 17:49:42 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/include/drm: drmP.h Log Message: Include dev/sysmon/sysmonvar.h for sysmon_pswitch. Somehow only triggered by the compat build (which shouldn't have been enabled!) To generate a diff of this commit: cvs rdiff -u -r1.40 -r1.41 src/sys/external/bsd/drm2/dist/include/drm/drmP.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/include/drm/drmP.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.40 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.41 --- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.40 Sun Apr 19 17:19:13 2020 +++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h Sun Apr 19 17:49:41 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drmP.h,v 1.40 2020/04/19 17:19:13 maya Exp $ */ +/* $NetBSD: drmP.h,v 1.41 2020/04/19 17:49:41 maya Exp $ */ /* * Internal Header for the Direct Rendering Manager @@ -67,6 +67,7 @@ #include #ifdef __NetBSD__ +#include #include #include #include
CVS commit: src/sys/external/bsd/drm2/dist/drm/nouveau
Module Name:src Committed By: jmcneill Date: Sun Apr 19 19:12:38 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_nv50_display.c src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu: nouveau_nvkm_subdev_mmu_nv44.c Log Message: Add missing BUS_DMA_COHERENT hints To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_nv44.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/nouveau/nouveau_nv50_display.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.11 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.12 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.11 Fri Feb 14 14:34:58 2020 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c Sun Apr 19 19:12:37 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_nv50_display.c,v 1.11 2020/02/14 14:34:58 maya Exp $ */ +/* $NetBSD: nouveau_nv50_display.c,v 1.12 2020/04/19 19:12:37 jmcneill Exp $ */ /* * Copyright 2011 Red Hat Inc. @@ -25,7 +25,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_nv50_display.c,v 1.11 2020/02/14 14:34:58 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_nv50_display.c,v 1.12 2020/04/19 19:12:37 jmcneill Exp $"); #include @@ -297,7 +297,7 @@ nv50_dmac_create(struct nvif_device *dev } /* XXX errno NetBSD->Linux */ ret = -bus_dmamem_map(dmat, &dmac->dmaseg, 1, PAGE_SIZE, &dmac->dmakva, - BUS_DMA_WAITOK); + BUS_DMA_WAITOK | BUS_DMA_COHERENT); if (ret) { bus_dmamap_destroy(dmat, dmac->dmamap); bus_dmamem_free(dmat, &dmac->dmaseg, 1); Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_nv44.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_nv44.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_nv44.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_nv44.c:1.3 Mon Aug 27 07:41:09 2018 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/subdev/mmu/nouveau_nvkm_subdev_mmu_nv44.c Sun Apr 19 19:12:37 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_nvkm_subdev_mmu_nv44.c,v 1.3 2018/08/27 07:41:09 riastradh Exp $ */ +/* $NetBSD: nouveau_nvkm_subdev_mmu_nv44.c,v 1.4 2020/04/19 19:12:37 jmcneill Exp $ */ /* * Copyright 2012 Red Hat Inc. @@ -24,7 +24,7 @@ * Authors: Ben Skeggs */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_mmu_nv44.c,v 1.3 2018/08/27 07:41:09 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_subdev_mmu_nv44.c,v 1.4 2020/04/19 19:12:37 jmcneill Exp $"); #include "nv04.h" @@ -193,7 +193,7 @@ fail1: bus_dmamem_free(dmat, &mmu->null /* XXX errno NetBSD->Linux */ ret = -bus_dmamem_map(dmat, &mmu->nullseg, 1, nullsz, - &mmu->nullp, BUS_DMA_WAITOK); + &mmu->nullp, BUS_DMA_WAITOK | BUS_DMA_COHERENT); if (ret) { fail2: bus_dmamap_destroy(dmat, mmu->nullmap); goto fail1;
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: tsutsui Date: Mon Apr 27 16:57:31 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: radeon_ttm.c Log Message: Fix possible bus_dmamap_load(9) leak. PR/55127 "Looks good to me" from riastradh@. Note it was also commented "that code path is likely to be reached" so maybe pullups are not necessary. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.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/radeon/radeon_ttm.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c:1.16 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c:1.17 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c:1.16 Fri Feb 14 04:38:24 2020 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c Mon Apr 27 16:57:31 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon_ttm.c,v 1.16 2020/02/14 04:38:24 riastradh Exp $ */ +/* $NetBSD: radeon_ttm.c,v 1.17 2020/04/27 16:57:31 tsutsui Exp $ */ /* * Copyright 2009 Jerome Glisse. @@ -32,7 +32,7 @@ *Dave Airlie */ #include -__KERNEL_RCSID(0, "$NetBSD: radeon_ttm.c,v 1.16 2020/02/14 04:38:24 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeon_ttm.c,v 1.17 2020/04/27 16:57:31 tsutsui Exp $"); #include #include @@ -923,6 +923,11 @@ static void radeon_ttm_tt_unpopulate(str #endif bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG); +#ifdef __NetBSD__ + if (slave && ttm->sg) { + bus_dmamap_unload(ttm->bdev->dmat, gtt->ttm.dma_address); + } +#endif if (gtt && gtt->userptr) { kfree(ttm->sg); ttm->page_flags &= ~TTM_PAGE_FLAG_SG;
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/via
Module Name:src Committed By: riastradh Date: Sat Apr 2 22:37:03 UTC 2016 Modified Files: src/sys/external/bsd/drm2/dist/drm/via: via_drv.c Log Message: Need to specify mmap_object operation here! Not sure how I tested this before, or whether I just made this change locally and forgot to commit it and then lost the change. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/via/via_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/via/via_drv.c diff -u src/sys/external/bsd/drm2/dist/drm/via/via_drv.c:1.2 src/sys/external/bsd/drm2/dist/drm/via/via_drv.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/via/via_drv.c:1.2 Wed Apr 29 04:45:03 2015 +++ src/sys/external/bsd/drm2/dist/drm/via/via_drv.c Sat Apr 2 22:37:03 2016 @@ -94,6 +94,8 @@ static struct drm_driver driver = { .ioctls = via_ioctls, #ifndef __NetBSD__ .fops = &via_driver_fops, +#else + .mmap_object = drm_mmap_object, #endif .name = DRIVER_NAME, .desc = DRIVER_DESC,
CVS commit: src/sys/external/bsd/drm2/dist/drm/nouveau
Module Name:src Committed By: riastradh Date: Wed Apr 13 07:57:15 UTC 2016 Modified Files: src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_fence.c nouveau_nv10_fence.c Log Message: Destroy spin locks appropriately. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv10_fence.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/nouveau/nouveau_fence.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c:1.3 Sat Aug 23 08:03:33 2014 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c Wed Apr 13 07:57:15 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_fence.c,v 1.3 2014/08/23 08:03:33 riastradh Exp $ */ +/* $NetBSD: nouveau_fence.c,v 1.4 2016/04/13 07:57:15 riastradh Exp $ */ /* * Copyright (C) 2007 Ben Skeggs. @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_fence.c,v 1.3 2014/08/23 08:03:33 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_fence.c,v 1.4 2016/04/13 07:57:15 riastradh Exp $"); #include @@ -71,6 +71,7 @@ nouveau_fence_context_del(struct nouveau nouveau_fence_signal(fence); } spin_unlock(&fctx->lock); + spin_lock_destroy(&fctx->lock); } void Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv10_fence.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv10_fence.c:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv10_fence.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv10_fence.c:1.2 Sat Aug 23 08:03:33 2014 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv10_fence.c Wed Apr 13 07:57:15 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_nv10_fence.c,v 1.2 2014/08/23 08:03:33 riastradh Exp $ */ +/* $NetBSD: nouveau_nv10_fence.c,v 1.3 2016/04/13 07:57:15 riastradh Exp $ */ /* * Copyright 2012 Red Hat Inc. @@ -25,7 +25,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_nv10_fence.c,v 1.2 2014/08/23 08:03:33 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_nv10_fence.c,v 1.3 2016/04/13 07:57:15 riastradh Exp $"); #include #include @@ -95,6 +95,7 @@ nv10_fence_destroy(struct nouveau_drm *d nouveau_bo_unpin(priv->bo); nouveau_bo_ref(NULL, &priv->bo); drm->fence = NULL; + spin_lock_destroy(&priv->lock); kfree(priv); }
CVS commit: src/sys/external/bsd/drm2/dist/drm/nouveau
Module Name:src Committed By: riastradh Date: Fri Apr 22 20:18:00 UTC 2016 Modified Files: src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_connector.c Log Message: Sanity-check that the encoder we found is not null. I think the previous code guarantees that finding this encoder should work, so this should be a moot point. CID 145720 To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_connector.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/nouveau/nouveau_connector.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_connector.c:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_connector.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_connector.c:1.2 Wed Aug 6 15:01:33 2014 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_connector.c Fri Apr 22 20:17:59 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_connector.c,v 1.2 2014/08/06 15:01:33 riastradh Exp $ */ +/* $NetBSD: nouveau_connector.c,v 1.3 2016/04/22 20:17:59 riastradh Exp $ */ /* * Copyright (C) 2008 Maarten Maathuis. @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_connector.c,v 1.2 2014/08/06 15:01:33 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_connector.c,v 1.3 2016/04/22 20:17:59 riastradh Exp $"); #include @@ -308,6 +308,7 @@ nouveau_connector_detect(struct drm_conn type = DCB_OUTPUT_ANALOG; nv_encoder = find_encoder(connector, type); + BUG_ON(nv_encoder == NULL); } nouveau_connector_set_encoder(connector, nv_encoder);
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: christos Date: Thu May 12 14:50:39 UTC 2016 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_gpu_error.c Log Message: Avoid taking locks during interrupts and explain why we are doing it this way. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ 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.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.3 Fri Jul 18 15:48:34 2014 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c Thu May 12 10:50:39 2016 @@ -604,18 +604,33 @@ i915_error_object_create_sized(struct dr memcpy_fromio(d, (void __iomem *) offset, PAGE_SIZE); } else { - struct page *page; - void *s; - page = i915_gem_object_get_page(src, i); + if (cpu_intr_p() || cpu_softintr_p() || + (curlwp->l_pflag & LP_INTR) != 0) { +/* + * We can't take locks during interrupts + * and finding the page from uvm requires + * taking a lock. Checking for an interrupt + * context is bogus, but this is the least + * intrusive change. Zero the result, doesn't + * matter much, because this is only used + * for diagnostics. + */ +memset(d, 0, PAGE_SIZE); + } else { +struct page *page; +void *s; + +page = i915_gem_object_get_page(src, i); + +drm_clflush_pages(&page, 1); + +s = kmap_atomic(page); +memcpy(d, s, PAGE_SIZE); +kunmap_atomic(s); - drm_clflush_pages(&page, 1); - - s = kmap_atomic(page); - memcpy(d, s, PAGE_SIZE); - kunmap_atomic(s); - - drm_clflush_pages(&page, 1); +drm_clflush_pages(&page, 1); + } } local_irq_restore(flags);
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: msaitoh Date: Wed Dec 18 13:25:58 UTC 2019 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: sumod.h Log Message: Use unsigned to avoid undefined behavior. Found by kUBSan. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/radeon/sumod.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/radeon/sumod.h diff -u src/sys/external/bsd/drm2/dist/drm/radeon/sumod.h:1.2 src/sys/external/bsd/drm2/dist/drm/radeon/sumod.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/radeon/sumod.h:1.2 Mon Aug 27 04:58:36 2018 +++ src/sys/external/bsd/drm2/dist/drm/radeon/sumod.h Wed Dec 18 13:25:58 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: sumod.h,v 1.2 2018/08/27 04:58:36 riastradh Exp $ */ +/* $NetBSD: sumod.h,v 1.3 2019/12/18 13:25:58 msaitoh Exp $ */ /* * Copyright 2012 Advanced Micro Devices, Inc. @@ -197,7 +197,7 @@ # define SCLK_FSTATE_3_DIV(x) ((x) << 24) # define SCLK_FSTATE_3_DIV_MASK (0x7f << 24) # define SCLK_FSTATE_3_DIV_SHIFT 24 -# define SCLK_FSTATE_3_VLD(1 << 31) +# define SCLK_FSTATE_3_VLD(1U << 31) #define CG_SCLK_DPM_CTRL_2 0x688 #define CG_GCOOR0x68c # define PHC(x) ((x) << 0) @@ -243,7 +243,7 @@ # define DPM_SCLK_ENABLE (1 << 18) # define GNB_SLOW_FSTATE_0_MASK (1 << 23) # define GNB_SLOW_FSTATE_0_SHIFT 23 -# define FORCE_NB_PSTATE_1(1 << 31) +# define FORCE_NB_PSTATE_1(1U << 31) #define CG_SSP 0x6e8 # define SST(x) ((x) << 0) @@ -263,7 +263,7 @@ # define DC_HDC_MASK (0x3fff << 14) # define DC_HDC_SHIFT 14 # define DC_HU(x) ((x) << 28) -# define DC_HU_MASK (0xf << 28) +# define DC_HU_MASK (0xfU << 28) # define DC_HU_SHIFT 28 #define CG_SCLK_DPM_CTRL_5 0x720 # define SCLK_FSTATE_BOOTUP(x)((x) << 0) @@ -281,7 +281,7 @@ # define CG_R_MASK(0x << 0) # define CG_R_SHIFT 0 # define CG_L(x) ((x) << 16) -# define CG_L_MASK(0x << 16) +# define CG_L_MASK(0xU << 16) # define CG_L_SHIFT 16 #define CG_AT_1 0x72c #define CG_AT_2 0x730 @@ -351,7 +351,7 @@ # define HS(x)((x) << 4) # define HS_MASK (0xfff << 4) # define HS_SHIFT 4 -# define ENABLE_DS(1 << 31) +# define ENABLE_DS(1U << 31) #define DEEP_SLEEP_CNTL20x81c # define LB_UFP_EN(1 << 0) # define INOUT_C(x) ((x) << 4) @@ -363,7 +363,7 @@ #define CG_SCLK_DPM_CTRL_11 0x830 #define HW_REV 0x5564 -# define ATI_REV_ID_MASK (0xf << 28) +# define ATI_REV_ID_MASK (0xfU << 28) # define ATI_REV_ID_SHIFT 28 /* 0 = A0, 1 = A1, 2 = B0, 3 = C0, etc. */
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: msaitoh Date: Tue Jan 7 13:51:38 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: radeon_atombios_dp.c Log Message: Don't call memcpy() when the length is 0 (and the source pointer is NULL) in radeon_dp_aux_transfer_atom() to avoid undefined behavior. Found by kUBSan. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_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/radeon/radeon_atombios_dp.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c:1.1 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c:1.2 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c:1.1 Mon Aug 27 14:38:20 2018 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_atombios_dp.c Tue Jan 7 13:51:38 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon_atombios_dp.c,v 1.1 2018/08/27 14:38:20 riastradh Exp $ */ +/* $NetBSD: radeon_atombios_dp.c,v 1.2 2020/01/07 13:51:38 msaitoh Exp $ */ /* * Copyright 2007-8 Advanced Micro Devices, Inc. @@ -27,7 +27,7 @@ * Jerome Glisse */ #include -__KERNEL_RCSID(0, "$NetBSD: radeon_atombios_dp.c,v 1.1 2018/08/27 14:38:20 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeon_atombios_dp.c,v 1.2 2020/01/07 13:51:38 msaitoh Exp $"); #include #include @@ -196,9 +196,10 @@ radeon_dp_aux_transfer_atom(struct drm_d tx_size = HEADER_SIZE + msg->size; if (msg->size == 0) tx_buf[3] |= BARE_ADDRESS_SIZE << 4; - else + else { tx_buf[3] |= tx_size << 4; - memcpy(tx_buf + HEADER_SIZE, msg->buffer, msg->size); + memcpy(tx_buf + HEADER_SIZE, msg->buffer, msg->size); + } ret = radeon_process_aux_ch(chan, tx_buf, tx_size, NULL, 0, delay, &ack); if (ret >= 0)
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: jmcneill Date: Sun Jan 19 11:07:00 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: radeon_vce.c Log Message: Fix loading TAHITI VCE firmware. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.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/radeon/radeon_vce.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.c:1.3 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.c:1.3 Mon Aug 27 04:58:36 2018 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vce.c Sun Jan 19 11:07:00 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon_vce.c,v 1.3 2018/08/27 04:58:36 riastradh Exp $ */ +/* $NetBSD: radeon_vce.c,v 1.4 2020/01/19 11:07:00 jmcneill Exp $ */ /* * Copyright 2013 Advanced Micro Devices, Inc. @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: radeon_vce.c,v 1.3 2018/08/27 04:58:36 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeon_vce.c,v 1.4 2020/01/19 11:07:00 jmcneill Exp $"); #include #include @@ -53,34 +53,38 @@ static void radeon_vce_idle_work_handler #ifdef __NetBSD__ /* XXX Ugh! */ static bool -scan_2dec_u8(const char **sp, char delim, uint8_t *u8p) +scan_2dec_uint(const char **sp, char delim, unsigned int *uintp) { - char c0, c1; + u_int val = 0, n; + char c; - if (!isdigit((unsigned char)(c0 = *(*sp)++))) - return false; - if (!isdigit((unsigned char)(c1 = *(*sp)++))) - return false; - if (*(*sp)++ != delim) + for (n = 0; n < 2; n++) { + c = *(*sp)++; + if (!isdigit((unsigned char)c)) + return false; + if (n != 0) + val *= 10; + val += (c - '0'); + if (*(*sp) == delim) + break; + } + if (*(*sp) != delim) return false; - *u8p = ((c0 - '0') * 10) + (c1 - '0'); + (*sp)++; + *uintp = val; return true; } static bool -scan_2dec_uint(const char **sp, char delim, unsigned int *uintp) +scan_2dec_u8(const char **sp, char delim, uint8_t *u8p) { - char c0, c1; + unsigned int val; - if (!isdigit((unsigned char)(c0 = *(*sp)++))) - return false; - if (!isdigit((unsigned char)(c1 = *(*sp)++))) - return false; - if (*(*sp)++ != delim) + if (!scan_2dec_uint(sp, delim, &val)) return false; - *uintp = ((c0 - '0') * 10) + (c1 - '0'); + *u8p = (uint8_t)val; return true; } #endif
CVS commit: src/sys/external/bsd/drm2/dist/include/drm
Module Name:src Committed By: jmcneill Date: Sun Jan 19 16:12:00 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/include/drm: drm_cache.h Log Message: Pull in drm_os_netbsd.h for CONFIG_ defines To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/include/drm/drm_cache.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/include/drm/drm_cache.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drm_cache.h:1.3 src/sys/external/bsd/drm2/dist/include/drm/drm_cache.h:1.4 --- src/sys/external/bsd/drm2/dist/include/drm/drm_cache.h:1.3 Sun Jan 19 12:03:27 2020 +++ src/sys/external/bsd/drm2/dist/include/drm/drm_cache.h Sun Jan 19 16:12:00 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_cache.h,v 1.3 2020/01/19 12:03:27 jmcneill Exp $ */ +/* $NetBSD: drm_cache.h,v 1.4 2020/01/19 16:12:00 jmcneill Exp $ */ /** * @@ -35,6 +35,10 @@ #ifndef _DRM_CACHE_H_ #define _DRM_CACHE_H_ +#ifdef __NetBSD__ +#include +#endif + void drm_clflush_pages(struct page *pages[], unsigned long num_pages); static inline bool drm_arch_can_wc_memory(void)
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: jmcneill Date: Mon Jan 20 23:22:09 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: radeon_gart.c Log Message: add missing memset in radeon_gart_table_ram_alloc To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.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/radeon/radeon_gart.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c:1.10 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c:1.11 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c:1.10 Mon Aug 27 13:56:22 2018 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gart.c Mon Jan 20 23:22:09 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon_gart.c,v 1.10 2018/08/27 13:56:22 riastradh Exp $ */ +/* $NetBSD: radeon_gart.c,v 1.11 2020/01/20 23:22:09 jmcneill Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -28,7 +28,7 @@ * Jerome Glisse */ #include -__KERNEL_RCSID(0, "$NetBSD: radeon_gart.c,v 1.10 2018/08/27 13:56:22 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeon_gart.c,v 1.11 2020/01/20 23:22:09 jmcneill Exp $"); #include #include @@ -93,6 +93,8 @@ int radeon_gart_table_ram_alloc(struct r if (error) goto fail3; + memset((void *)rdev->gart.ptr, 0, rdev->gart.table_size); + /* Success! */ rdev->gart.table_addr = rdev->gart.rg_table_map->dm_segs[0].ds_addr; return 0;
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: jmcneill Date: Sun Jan 26 14:36:36 UTC 2020 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: radeon.h radeon_device.c Log Message: Zero the dummy page To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/radeon/radeon.h \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_device.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/radeon/radeon.h diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon.h:1.6 src/sys/external/bsd/drm2/dist/drm/radeon/radeon.h:1.7 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon.h:1.6 Mon Aug 27 06:38:51 2018 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon.h Sun Jan 26 14:36:35 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon.h,v 1.6 2018/08/27 06:38:51 riastradh Exp $ */ +/* $NetBSD: radeon.h,v 1.7 2020/01/26 14:36:35 jmcneill Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -259,6 +259,7 @@ struct radeon_dummy_page { #ifdef __NetBSD__ bus_dma_segment_t rdp_seg; bus_dmamap_t rdp_map; + void *rdp_addr; #else struct page *page; #endif Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_device.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_device.c:1.6 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_device.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_device.c:1.6 Mon Aug 27 07:48:40 2018 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_device.c Sun Jan 26 14:36:35 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: radeon_device.c,v 1.6 2018/08/27 07:48:40 riastradh Exp $ */ +/* $NetBSD: radeon_device.c,v 1.7 2020/01/26 14:36:35 jmcneill Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -28,7 +28,7 @@ * Jerome Glisse */ #include -__KERNEL_RCSID(0, "$NetBSD: radeon_device.c,v 1.6 2018/08/27 07:48:40 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: radeon_device.c,v 1.7 2020/01/26 14:36:35 jmcneill Exp $"); #include #include @@ -835,10 +835,17 @@ int radeon_dummy_page_init(struct radeon BUS_DMA_WAITOK, &rdev->dummy_page.rdp_map); if (error) goto fail1; - error = bus_dmamap_load_raw(rdev->ddev->dmat, rdev->dummy_page.rdp_map, - &rdev->dummy_page.rdp_seg, 1, PAGE_SIZE, BUS_DMA_WAITOK); + error = bus_dmamem_map(rdev->ddev->dmat, &rdev->dummy_page.rdp_seg, 1, + PAGE_SIZE, &rdev->dummy_page.rdp_addr, + BUS_DMA_WAITOK|BUS_DMA_NOCACHE); if (error) goto fail2; + error = bus_dmamap_load(rdev->ddev->dmat, rdev->dummy_page.rdp_map, + rdev->dummy_page.rdp_addr, PAGE_SIZE, NULL, BUS_DMA_WAITOK); + if (error) + goto fail3; + + memset(rdev->dummy_page.rdp_addr, 0, PAGE_SIZE); /* Success! */ rdev->dummy_page.addr = rdev->dummy_page.rdp_map->dm_segs[0].ds_addr; @@ -846,8 +853,10 @@ int radeon_dummy_page_init(struct radeon rdev->dummy_page.addr, RADEON_GART_PAGE_DUMMY); return 0; -fail3: __unused +fail4: __unused bus_dmamap_unload(rdev->ddev->dmat, rdev->dummy_page.rdp_map); +fail3: bus_dmamem_unmap(rdev->ddev->dmat, rdev->dummy_page.rdp_addr, + PAGE_SIZE); fail2: bus_dmamap_destroy(rdev->ddev->dmat, rdev->dummy_page.rdp_map); fail1: bus_dmamem_free(rdev->ddev->dmat, &rdev->dummy_page.rdp_seg, 1); fail0: KASSERT(error); @@ -888,6 +897,8 @@ void radeon_dummy_page_fini(struct radeo if (rdev->dummy_page.rdp_map == NULL) return; bus_dmamap_unload(rdev->ddev->dmat, rdev->dummy_page.rdp_map); + bus_dmamem_unmap(rdev->ddev->dmat, rdev->dummy_page.rdp_addr, + PAGE_SIZE); bus_dmamap_destroy(rdev->ddev->dmat, rdev->dummy_page.rdp_map); bus_dmamem_free(rdev->ddev->dmat, &rdev->dummy_page.rdp_seg, 1); rdev->dummy_page.rdp_map = NULL;
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: jakllsch Date: Mon Aug 17 15:12:37 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: atombios_crtc.c Log Message: Apply preceeding change: Don't reserve if atomic -- caller must have pre-pinned the buffer. to avivo_crtc_do_set_base() as well. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.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/radeon/atombios_crtc.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c:1.3 src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c:1.3 Wed Apr 8 01:47:20 2015 +++ src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c Mon Aug 17 15:12:37 2015 @@ -1382,24 +1382,26 @@ static int avivo_crtc_do_set_base(struct obj = radeon_fb->obj; rbo = gem_to_radeon_bo(obj); - r = radeon_bo_reserve(rbo, false); - if (unlikely(r != 0)) - return r; /* If atomic, assume fb object is pinned & idle & fenced and * just update base pointers */ - if (atomic) + if (atomic) { + BUG_ON(rbo->pin_count == 0); fb_location = radeon_bo_gpu_offset(rbo); - else { + tiling_flags = 0; + } else { + r = radeon_bo_reserve(rbo, false); + if (unlikely(r != 0)) + return r; r = radeon_bo_pin(rbo, RADEON_GEM_DOMAIN_VRAM, &fb_location); if (unlikely(r != 0)) { radeon_bo_unreserve(rbo); return -EINVAL; } + radeon_bo_get_tiling_flags(rbo, &tiling_flags, NULL); + radeon_bo_unreserve(rbo); } - radeon_bo_get_tiling_flags(rbo, &tiling_flags, NULL); - radeon_bo_unreserve(rbo); switch (target_fb->bits_per_pixel) { case 8:
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: christos Date: Sat Oct 10 19:29:44 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c Log Message: Zero out the guard for bus_space_unmap before calling i915_dma_cleanup() which calls i915_free_hws(), which then tries to unmap. Perhaps this fixes PR/50060. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 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.16 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.17 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.16 Thu Apr 2 21:06:05 2015 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c Sat Oct 10 15:29:44 2015 @@ -1137,8 +1137,8 @@ static int i915_set_status_page(struct d BUS_SPACE_MAP_PREFETCHABLE, &dev_priv->dri1.gfx_hws_cpu_bsh); if (ret) { - i915_dma_cleanup(dev); ring->status_page.gfx_addr = 0; + i915_dma_cleanup(dev); DRM_ERROR("can not ioremap virtual address for" " G33 hw status page\n"); return ret;
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: christos Date: Sat Oct 10 19:35:15 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c Log Message: fix the same bug on the linux side, print the error, and return the -tive error to mimick linux. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 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.17 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.18 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.17 Sat Oct 10 15:29:44 2015 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c Sat Oct 10 15:35:15 2015 @@ -1140,8 +1140,8 @@ static int i915_set_status_page(struct d ring->status_page.gfx_addr = 0; i915_dma_cleanup(dev); DRM_ERROR("can not ioremap virtual address for" -" G33 hw status page\n"); - return ret; + " G33 hw status page, error %d\n", ret); + return -ret; } __CTASSERT(PAGE_SIZE == 4096); @@ -1151,8 +1151,8 @@ static int i915_set_status_page(struct d dev_priv->dri1.gfx_hws_cpu_addr = ioremap_wc(dev_priv->gtt.mappable_base + hws->addr, 4096); if (dev_priv->dri1.gfx_hws_cpu_addr == NULL) { - i915_dma_cleanup(dev); ring->status_page.gfx_addr = 0; + i915_dma_cleanup(dev); DRM_ERROR("can not ioremap virtual address for" " G33 hw status page\n"); return -ENOMEM;
CVS commit: src/sys/external/bsd/drm2/dist/drm/nouveau
Module Name:src Committed By: mrg Date: Tue Oct 13 01:43:48 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_drm.c src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo: nouveau_engine_fifo_nve0.c Log Message: nouveau_drm.c: - hook up an empty uvm_pagerops like radeon does. - hook up nouveau_ttm_mmap_object(). nouveau_engine_fifo_nve0.c: - if (cold), don't try to wait, but hard-spin until the timeout period. with these in place, i am able to get working text-console with nouveau! ok riastradh. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.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/nouveau/nouveau_drm.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.5 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.5 Fri Mar 6 15:39:28 2015 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c Tue Oct 13 01:43:47 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_drm.c,v 1.5 2015/03/06 15:39:28 riastradh Exp $ */ +/* $NetBSD: nouveau_drm.c,v 1.6 2015/10/13 01:43:47 mrg Exp $ */ /* * Copyright 2012 Red Hat Inc. @@ -25,7 +25,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.5 2015/03/06 15:39:28 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.6 2015/10/13 01:43:47 mrg Exp $"); #include #include @@ -62,6 +62,7 @@ __KERNEL_RCSID(0, "$NetBSD: nouveau_drm. #include "nouveau_fbcon.h" #include "nouveau_fence.h" #include "nouveau_debugfs.h" +#include "nouveau_ttm.h" MODULE_PARM_DESC(config, "option string to pass to driver core"); char *nouveau_config; @@ -87,6 +88,10 @@ module_param_named(runpm, nouveau_runtim static struct drm_driver driver; #ifdef __NetBSD__ struct drm_driver *const nouveau_drm_driver = &driver; + +/* XXX Kludge for the non-GEM GEM that nouveau uses. */ +static const struct uvm_pagerops nouveau_gem_uvm_ops; + #endif static u64 @@ -880,7 +885,11 @@ driver = { .ioctls = nouveau_ioctls, .num_ioctls = ARRAY_SIZE(nouveau_ioctls), -#ifndef __NetBSD__ +#ifdef __NetBSD__ + .fops = NULL, + .mmap_object = &nouveau_ttm_mmap_object, + .gem_uvm_ops = &nouveau_gem_uvm_ops, +#else .fops = &nouveau_driver_fops, #endif Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.4 src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.4 Sat Feb 28 05:38:49 2015 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c Tue Oct 13 01:43:47 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_engine_fifo_nve0.c,v 1.4 2015/02/28 05:38:49 riastradh Exp $ */ +/* $NetBSD: nouveau_engine_fifo_nve0.c,v 1.5 2015/10/13 01:43:47 mrg Exp $ */ /* * Copyright 2012 Red Hat Inc. @@ -25,7 +25,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nve0.c,v 1.4 2015/02/28 05:38:49 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nve0.c,v 1.5 2015/10/13 01:43:47 mrg Exp $"); #include #include @@ -136,18 +136,27 @@ nve0_fifo_runlist_update(struct nve0_fif nv_wr32(priv, 0x002274, (engine << 20) | (p >> 3)); #ifdef __NetBSD__ -{ - int ret; + if (cold) { + uint count = 2000; + while (count-- > 0) { + if (!(nv_rd32(priv, 0x002284 + (engine * 0x08)) & 0x0010)) +break; + delay(1000); + } + if (count == 0) + nv_error(priv, "runlist %d update timeout\n", engine); + } else { + int ret; - spin_lock(&engn->lock); - DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, &engn->wait, &engn->lock, - msecs_to_jiffies(2000), - !(nv_rd32(priv, 0x002284 + - (engine * 0x08)) & 0x0010)); - if (ret == 0) - nv_error(priv, "runlist %d update timeout\n", engine); - spin_unlock(&engn->lock); -} + spin_lock(&engn->lock); + DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, &engn->wait, &engn->lock, + msecs_to_jiffies(2000), + !(nv_rd32(priv, 0x002284 + + (engine * 0x08)) & 0x0010)); + if (ret == 0) + nv_error(priv, "runlist %d update timeout\n", engine); + spin_unlock(&engn->lock); + } #else if (wait_event_timeout(engn->wait, !(nv_rd32(priv, 0x002284 + (engine * 0x08)) & 0x0010),
CVS commit: src/sys/external/bsd/drm2/dist/drm/nouveau
Module Name:src Committed By: mrg Date: Wed Oct 14 00:12:56 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_nv50_display.c src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb: nouveau_subdev_fb_nv50.c nouveau_subdev_fb_nvc0.c src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm: nouveau_subdev_vm_nv04.c nouveau_subdev_vm_nv44.c Log Message: use pci_dma64_available() to choose a valid DMA tag. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c \ src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nvc0.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv04.c \ src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv44.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/nouveau/nouveau_nv50_display.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.3 Wed Feb 25 14:57:04 2015 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c Wed Oct 14 00:12:55 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_nv50_display.c,v 1.3 2015/02/25 14:57:04 riastradh Exp $ */ +/* $NetBSD: nouveau_nv50_display.c,v 1.4 2015/10/14 00:12:55 mrg Exp $ */ /* * Copyright 2011 Red Hat Inc. @@ -25,7 +25,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_nv50_display.c,v 1.3 2015/02/25 14:57:04 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_nv50_display.c,v 1.4 2015/10/14 00:12:55 mrg Exp $"); #include #include @@ -184,8 +184,8 @@ nv50_dmac_destroy(struct nouveau_object if (dmac->ptr) { struct pci_dev *pdev = nv_device(core)->pdev; #ifdef __NetBSD__ - /* XXX pa_dmat or pa_dmat64? */ - const bus_dma_tag_t dmat = pdev->pd_pa.pa_dmat64; + const bus_dma_tag_t dmat = pci_dma64_available(&pdev->pd_pa) ? + pdev->pd_pa.pa_dmat64 : pdev->pd_pa.pa_dmat; bus_dmamap_unload(dmat, dmac->dmamap); bus_dmamem_unmap(dmat, dmac->dmakva, PAGE_SIZE); @@ -343,7 +343,10 @@ nv50_dmac_create(struct nouveau_object * #ifdef __NetBSD__ { - const bus_dma_tag_t dmat = nv_device(core)->pdev->pd_pa.pa_dmat64; + struct nouveau_device *device = nv_device(core); + const bus_dma_tag_t dmat = pci_dma64_available(&device->pdev->pd_pa) ? + device->pdev->pd_pa.pa_dmat64 : device->pdev->pd_pa.pa_dmat; + int rsegs; /* XXX errno NetBSD->Linux */ Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c:1.2 Wed Feb 25 17:29:43 2015 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c Wed Oct 14 00:12:55 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_subdev_fb_nv50.c,v 1.2 2015/02/25 17:29:43 riastradh Exp $ */ +/* $NetBSD: nouveau_subdev_fb_nv50.c,v 1.3 2015/10/14 00:12:55 mrg Exp $ */ /* * Copyright 2012 Red Hat Inc. @@ -25,7 +25,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_fb_nv50.c,v 1.2 2015/02/25 17:29:43 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_fb_nv50.c,v 1.3 2015/10/14 00:12:55 mrg Exp $"); #include #include @@ -255,8 +255,8 @@ nv50_fb_ctor(struct nouveau_object *pare #ifdef __NetBSD__ { - /* XXX pa_dmat or pa_dmat64? */ - const bus_dma_tag_t dmat = device->pdev->pd_pa.pa_dmat64; + const bus_dma_tag_t dmat = pci_dma64_available(&device->pdev->pd_pa) ? + device->pdev->pd_pa.pa_dmat64 : device->pdev->pd_pa.pa_dmat; int nsegs; priv->r100c08_map = NULL; /* paranoia */ @@ -321,7 +321,8 @@ nv50_fb_dtor(struct nouveau_object *obje #ifdef __NetBSD__ if (priv->r100c08_map) { - const bus_dma_tag_t dmat = device->pdev->pd_pa.pa_dmat64; + const bus_dma_tag_t dmat = pci_dma64_available(&device->pdev->pd_pa) ? + device->pdev->pd_pa.pa_dmat64 : device->pdev->pd_pa.pa_dmat; bus_dmamap_unload(dmat, priv->r100c08_map); bus_dmamem_unmap(dmat, priv->r100c08_kva, PAGE_SIZE); Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nvc0.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nvc0.c:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nvc0.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/
CVS commit: src/sys/external/bsd/drm2/dist/include/drm
Module Name:src Committed By: jmcneill Date: Sat Oct 17 16:17:22 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/include/drm: drm_agpsupport.h Log Message: fix __OS_HAS_AGP=0 build To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.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/include/drm/drm_agpsupport.h diff -u src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h:1.4 src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h:1.5 --- src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h:1.4 Sat Nov 22 19:18:07 2014 +++ src/sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h Sat Oct 17 16:17:22 2015 @@ -53,6 +53,8 @@ int drm_agp_bind_ioctl(struct drm_device struct drm_file *file_priv); #else /* __OS_HAS_AGP */ +#if !defined(__NetBSD__) + static inline void drm_free_agp(struct agp_memory * handle, int pages) { } @@ -67,6 +69,8 @@ static inline int drm_unbind_agp(struct return -ENODEV; } +#endif + static inline struct agp_memory *drm_agp_bind_pages(struct drm_device *dev, struct page **pages, unsigned long num_pages,
CVS commit: src/sys/external/bsd/drm2/dist/drm/ttm
Module Name:src Committed By: jmcneill Date: Sat Oct 17 21:12:37 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/ttm: ttm_bo_util.c Log Message: vunmap takes 2 parameters on netbsd To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.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/ttm/ttm_bo_util.c diff -u src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c:1.5 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c:1.5 Mon Apr 20 19:17:04 2015 +++ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo_util.c Sat Oct 17 21:12:37 2015 @@ -371,7 +371,11 @@ static int ttm_copy_ttm_io_page(struct t kunmap_atomic(src); #else if (pgprot_val(prot) != pgprot_val(PAGE_KERNEL)) +#ifdef __NetBSD__ + vunmap(src, 1); +#else vunmap(src); +#endif else kunmap(s); #endif
CVS commit: src/sys/external/bsd/drm2/dist/drm/i915
Module Name:src Committed By: riastradh Date: Tue Oct 27 13:16:33 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/i915: intel_i2c.c intel_pm.c intel_sdvo.c Log Message: dev->dev, not &dev->pdev->dev. Latter is a charlatan, soon to meet judgment for its sins. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.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.13 src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.14 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.13 Thu Mar 5 21:13:48 2015 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c Tue Oct 27 13:16:33 2015 @@ -656,7 +656,7 @@ int intel_setup_gmbus(struct drm_device "i915 gmbus %s", gmbus_ports[i].name); - bus->adapter.dev.parent = &dev->pdev->dev; + bus->adapter.dev.parent = dev->dev; bus->dev_priv = dev_priv; bus->adapter.algo = &gmbus_algorithm; 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.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.7 Sun Jul 26 15:30:36 2015 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c Tue Oct 27 13:16:33 2015 @@ -6020,7 +6020,7 @@ void intel_aux_display_runtime_put(struc void intel_runtime_pm_get(struct drm_i915_private *dev_priv) { struct drm_device *dev = dev_priv->dev; - struct device *device = &dev->pdev->dev; + struct device *device = dev->dev; if (!HAS_RUNTIME_PM(dev)) return; @@ -6032,7 +6032,7 @@ void intel_runtime_pm_get(struct drm_i91 void intel_runtime_pm_put(struct drm_i915_private *dev_priv) { struct drm_device *dev = dev_priv->dev; - struct device *device = &dev->pdev->dev; + struct device *device = dev->dev; if (!HAS_RUNTIME_PM(dev)) return; @@ -6044,7 +6044,7 @@ void intel_runtime_pm_put(struct drm_i91 void intel_init_runtime_pm(struct drm_i915_private *dev_priv) { struct drm_device *dev = dev_priv->dev; - struct device *device = &dev->pdev->dev; + struct device *device = dev->dev; if (!HAS_RUNTIME_PM(dev)) return; @@ -6061,7 +6061,7 @@ void intel_init_runtime_pm(struct drm_i9 void intel_fini_runtime_pm(struct drm_i915_private *dev_priv) { struct drm_device *dev = dev_priv->dev; - struct device *device = &dev->pdev->dev; + struct device *device = dev->dev; if (!HAS_RUNTIME_PM(dev)) return; Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.6 Sun Sep 7 23:03:11 2014 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c Tue Oct 27 13:16:33 2015 @@ -2971,7 +2971,7 @@ intel_sdvo_init_ddc_proxy(struct intel_s sdvo->ddc.owner = THIS_MODULE; sdvo->ddc.class = I2C_CLASS_DDC; snprintf(sdvo->ddc.name, I2C_NAME_SIZE, "SDVO DDC proxy"); - sdvo->ddc.dev.parent = &dev->pdev->dev; + sdvo->ddc.dev.parent = dev->dev; sdvo->ddc.algo_data = sdvo; sdvo->ddc.algo = &intel_sdvo_ddc_proxy;
CVS commit: src/sys/external/bsd/drm2/dist/drm/radeon
Module Name:src Committed By: riastradh Date: Tue Oct 27 13:18:21 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/radeon: radeon_display.c radeon_gem.c radeon_i2c.c radeon_kms.c Log Message: dev->dev, not &dev->pdev->dev. Latter is a mistake that is all my fault. Oops. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_i2c.c \ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_kms.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/radeon/radeon_display.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c:1.4 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c:1.4 Sat Apr 25 20:50:04 2015 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c Tue Oct 27 13:18:21 2015 @@ -1301,7 +1301,7 @@ radeon_user_framebuffer_create(struct dr obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handles[0]); if (obj == NULL) { - dev_err(&dev->pdev->dev, "No GEM object associated to handle 0x%08X, " + dev_err(dev->dev, "No GEM object associated to handle 0x%08X, " "can't create framebuffer\n", mode_cmd->handles[0]); return ERR_PTR(-ENOENT); } Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c:1.2 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c:1.2 Wed Jul 16 20:59:57 2014 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c Tue Oct 27 13:18:21 2015 @@ -446,7 +446,7 @@ int radeon_gem_va_ioctl(struct drm_devic } if (args->offset < RADEON_VA_RESERVED_SIZE) { - dev_err(&dev->pdev->dev, + dev_err(dev->dev, "offset 0x%lX is in reserved area 0x%X\n", (unsigned long)args->offset, RADEON_VA_RESERVED_SIZE); @@ -460,13 +460,13 @@ int radeon_gem_va_ioctl(struct drm_devic */ invalid_flags = RADEON_VM_PAGE_VALID | RADEON_VM_PAGE_SYSTEM; if ((args->flags & invalid_flags)) { - dev_err(&dev->pdev->dev, "invalid flags 0x%08X vs 0x%08X\n", + dev_err(dev->dev, "invalid flags 0x%08X vs 0x%08X\n", args->flags, invalid_flags); args->operation = RADEON_VA_RESULT_ERROR; return -EINVAL; } if (!(args->flags & RADEON_VM_PAGE_SNOOPED)) { - dev_err(&dev->pdev->dev, "only supported snooped mapping for now\n"); + dev_err(dev->dev, "only supported snooped mapping for now\n"); args->operation = RADEON_VA_RESULT_ERROR; return -EINVAL; } @@ -476,7 +476,7 @@ int radeon_gem_va_ioctl(struct drm_devic case RADEON_VA_UNMAP: break; default: - dev_err(&dev->pdev->dev, "unsupported operation %d\n", + dev_err(dev->dev, "unsupported operation %d\n", args->operation); args->operation = RADEON_VA_RESULT_ERROR; return -EINVAL; Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_i2c.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_i2c.c:1.2 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_i2c.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_i2c.c:1.2 Wed Jul 16 20:59:57 2014 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_i2c.c Tue Oct 27 13:18:21 2015 @@ -917,7 +917,7 @@ struct radeon_i2c_chan *radeon_i2c_creat i2c->rec = *rec; i2c->adapter.owner = THIS_MODULE; i2c->adapter.class = I2C_CLASS_DDC; - i2c->adapter.dev.parent = &dev->pdev->dev; + i2c->adapter.dev.parent = dev->dev; i2c->dev = dev; i2c_set_adapdata(&i2c->adapter, i2c); if (rec->mm_i2c || Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_kms.c diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_kms.c:1.2 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_kms.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_kms.c:1.2 Wed Jul 16 20:59:57 2014 +++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_kms.c Tue Oct 27 13:18:21 2015 @@ -126,7 +126,7 @@ int radeon_driver_load_kms(struct drm_de */ r = radeon_device_init(rdev, dev, dev->pdev, flags); if (r) { - dev_err(&dev->pdev->dev, "Fatal error during GPU init\n"); + dev_err(dev->dev, "Fatal error during GPU init\n"); goto out; } @@ -136,7 +136,7 @@ int radeon_driver_load_kms(struct drm_de */ r = radeon_modeset_init(rdev); if (r) - dev_err(&dev->pdev->dev, "Fatal error during modeset init\n"); + dev_err(dev->dev, "Fatal error during modeset init\n"); /* Call ACPI methods: require modeset init * but failure is not fatal @@ -144,7 +144,7 @@ int radeon_driver_load_kms(struct drm_de if (!r) { acpi_status = radeon_acpi_init(rdev); if (acpi_status) - dev_dbg(&dev->pdev->dev, + dev_dbg(dev->dev, "Error during ACPI methods call\n"); }
CVS commit: src/sys/external/bsd/drm2/dist/drm/nouveau
Module Name:src Committed By: mrg Date: Thu Oct 29 08:08:52 UTC 2015 Modified Files: src/sys/external/bsd/drm2/dist/drm/nouveau: nouveau_bo.c nouveau_drm.h Log Message: provide a ttm-backed set of nouveau_uvm_ops{} in the ttm_bo_driver{}. fixes NULL pointer derefs inside UVM due to lack of pager ops. copy the DRM_FILE_PAGE_OFFSET vs !_LP64 workaround. with these, X starts up on my GTX 440. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.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/nouveau/nouveau_bo.c diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c:1.5 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c:1.5 Sat Aug 23 08:03:33 2014 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c Thu Oct 29 08:08:52 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: nouveau_bo.c,v 1.5 2014/08/23 08:03:33 riastradh Exp $ */ +/* $NetBSD: nouveau_bo.c,v 1.6 2015/10/29 08:08:52 mrg Exp $ */ /* * Copyright 2007 Dave Airlied @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: nouveau_bo.c,v 1.5 2014/08/23 08:03:33 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nouveau_bo.c,v 1.6 2015/10/29 08:08:52 mrg Exp $"); #include #include @@ -1568,10 +1568,21 @@ nouveau_bo_fence_flush(void *sync_obj) return 0; } +#ifdef __NetBSD__ +static const struct uvm_pagerops nouveau_uvm_ops = { + .pgo_reference = &ttm_bo_uvm_reference, + .pgo_detach = &ttm_bo_uvm_detach, + .pgo_fault = &ttm_bo_uvm_fault, +}; +#endif + struct ttm_bo_driver nouveau_bo_driver = { .ttm_tt_create = &nouveau_ttm_tt_create, .ttm_tt_populate = &nouveau_ttm_tt_populate, .ttm_tt_unpopulate = &nouveau_ttm_tt_unpopulate, +#ifdef __NetBSD__ + .ttm_uvm_ops = &nouveau_uvm_ops, +#endif .invalidate_caches = nouveau_bo_invalidate_caches, .init_mem_type = nouveau_bo_init_mem_type, .evict_flags = nouveau_bo_evict_flags, Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h:1.2 Sat Aug 23 08:03:33 2014 +++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h Thu Oct 29 08:08:52 2015 @@ -40,7 +40,11 @@ struct nouveau_channel; +#ifdef _LP64 #define DRM_FILE_PAGE_OFFSET (0x1ULL >> PAGE_SHIFT) +#else +#define DRM_FILE_PAGE_OFFSET (0xa000UL >> PAGE_SHIFT) +#endif #include "nouveau_fence.h" #include "nouveau_bios.h"
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))