History log of /src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c |
Revision | | Date | Author | Comments |
1.25 |
| 21-Apr-2024 |
riastradh | drm: Allow DRM_IOCTL_GET_UNIQUE on render nodes.
On NetBSD, libdrm uses this to discover what kind of bus the device is on, without which it refuses to expose the render node at all, rendering it useless. With this change, libdrm is able to use render nodes on NetBSD.
Since this is just reading out information about the bus type and bus/dev/func numbers, I don't think it's problematic to expose to render nodes.
This requires tweaking the access path to the master.
PR kern/58180
|
1.24 |
| 15-Oct-2022 |
riastradh | drm: New mechanism to suspend ioctls during system suspend.
drm drivers must opt into this by calling drm_suspend_ioctl in their driver suspend routine, and drm_resume_ioctl in their driver resume routine.
This is a stop-gap measure -- it would be better to fill in the pm_runtime_* API with new pmf(9) hooks to acquire/release references to devices for coordinating with suspend/resume, but getting the details right is tricky, and this stop-gap is enough to get i915 suspend/resume to work reliably on my Kaby Lake laptop. Rather than wait until I've got all the details right, let's just go with this stop-gap for now.
|
1.23 |
| 27-Aug-2022 |
riastradh | drm: Make sure ioctl buffer is aligned on stack.
|
1.22 |
| 19-Dec-2021 |
riastradh | drm: Switch sense of #if __linux__ conditionals to use __NetBSD__.
Keep it consistent with the rest of drm.
|
1.21 |
| 19-Dec-2021 |
riastradh | drm: Remove local diffs for drm_pci_set_busid.
Instead, move it to its own file that can be safely used without bringing in a link/run-time dependency on pci.
|
1.20 |
| 19-Dec-2021 |
riastradh | Restore set_busid callback.
This local change is intentional to keep pci tentacles out of the main drm.
|
1.19 |
| 19-Dec-2021 |
riastradh | Port DRM_ATOMIC disabling code
Author: Maya Rashish <maya@NetBSD.org>
|
1.18 |
| 19-Dec-2021 |
riastradh | catch up with function rename
Author: Maya Rashish <maya@NetBSD.org>
|
1.17 |
| 19-Dec-2021 |
riastradh | undo local diff, set_busid is gone
Author: Maya Rashish <maya@NetBSD.org>
|
1.16 |
| 19-Dec-2021 |
riastradh | linux/capability.h for capable()
Author: Maya Rashish <maya@NetBSD.org>
|
1.15 |
| 19-Dec-2021 |
riastradh | Fix up drm ioctl.
|
1.14 |
| 19-Dec-2021 |
riastradh | Restore the callback approach to removing PCI tentacles.
|
1.13 |
| 18-Dec-2021 |
riastradh | Merge linux-drm-v5-6-rc3
|
1.12 |
| 14-Feb-2020 |
riastradh | Reduce diffs by nixing DRM_SUSER macro, deleted upstream long ago.
Instead stub Linux capable(CAP_SYS_ADMIN).
|
1.11 |
| 14-Sep-2018 |
maya | branches: 1.11.6; copy the output from the temp buffer to the actual one on return.
Fixes crashes with updated xf86-video-intel / mesa 18 from riastradh.
|
1.10 |
| 28-Aug-2018 |
riastradh | Rework PCI and AGP conditionalization.
- Push drm_pci_set_unique into driver callback. - Eliminate drm_pci_set_unique_hook. - Gather all drm_agp_* functions into struct drm_agp_hooks. - Replace the nonsensical old atomic garbage by serious locking. - Make drm_agpsupport.c its own module. - Eliminate NDRMKMS_PCI. - Use NAGP from "agp.h" only in drm_module.c for horrible hack. => See comment in file for rationale. - Always define CONFIG_PCI=1 and CONFIG_AGP=1. - Always go through the drm_agp_* function hooks. - Ifdef out nouveau agp stuff that doesn't go through drm_agp_* for reasons that I'm too frustrated to figure out tonight. - pci_iomap no longer automagically does agp_i810_borrow. => Use drm_agp_borrow instead.
|
1.9 |
| 27-Aug-2018 |
riastradh | Draft support for drm prime.
|
1.8 |
| 27-Aug-2018 |
riastradh | 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
|
1.7 |
| 27-Aug-2018 |
riastradh | Disable drm prime ioctls for now.
|
1.6 |
| 27-Aug-2018 |
riastradh | Move drm_ioctl to drm_ioctl.c.
Previously it was in drm_drv.c upstream, which we overrode; then it got moved to drm_ioctl.c and drm_drv.c got deleted, so we no longer need to maintain a separate copy of the table in what we now call drm_cdevsw.c.
|
1.5 |
| 27-Aug-2018 |
riastradh | merge linux-drm-v4-4-143
|
1.4 |
| 04-Mar-2015 |
riastradh | branches: 1.4.16; 1.4.18; Return current pid and current euid from drm_getclient to fool libva.
|
1.3 |
| 16-Jul-2014 |
riastradh | branches: 1.3.2; 1.3.4; 1.3.6; fix merge conflicts
|
1.2 |
| 18-Mar-2014 |
riastradh | branches: 1.2.2; 1.2.4; Merge riastradh-drm2 to HEAD.
|
1.1 |
| 23-Jul-2013 |
riastradh | branches: 1.1.1; Initial revision
|
1.1.1.4 |
| 18-Dec-2021 |
riastradh | Import drm from Linux v5.6-rc3 (commit f8788d86ab28f61f7b46eb6be375f8a726783636)
drivers/gpu/drm -> sys/external/bsd/drm2/dist/drm include/drm -> sys/external/bsd/drm2/dist/include/drm include/uapi/drm -> sys/external/bsd/drm2/dist/include/uapi/drm
GPL exclusions in dist/drm:
- amd/amdgpu/amdgpu_atpx_handler.c - arc/ - arm/ - armada/ - aspeed/ - atmel-hlcdc/ - bochs/ - bridge/ - cirrus/ - drm_dp_cec.c - drm_dp_mst_topology_internal.h - drm_edid_load.c - drm_format_helper.c - drm_gem_cma_helper.c - drm_gem_framebuffer_helper.c - drm_gem_shmem_helper.c - drm_gem_ttm_helper.c - drm_gem_vram_helper.c - drm_hdcp.c - drm_lease.c - drm_mipi_dbi.c - drm_simple_kms_helper.c - drm_sysfs.c - drm_trace.h - drm_vram_helper_common.c - drm_writeback.c - etnaviv/ - exynos/ - fsl-dcu/ - gma500/ - hisilicon/ - i2c/tda9950.c - i2c/tda998x_drv.c - i915/gt/selftest_context.c - i915/gt/selftest_engine.c - i915/gt/selftest_engine.h - i915/gt/selftest_engine_cs.c - i915/gt/selftest_engine_pm.c - i915/i915_trace.h - i915/selftests/i915_live_selftests.h - i915/selftests/i915_mock_selftests.h - i915/selftests/i915_perf_selftests.h - i915/selftests/lib_sw_fence.h - imx/ - ingenic/ - lima/ - mcde/ - mediatek/ - meson/ - mgag200/ - msm/ - mxsfb/ - omapdrm/ - panel/ - panfrost/ - pl111/ - radeon/radeon_atpx_handler.c - rcar-du/ - rockchip/ - selftests/drm_cmdline_selftests.h - selftests/drm_modeset_selftests.h - selftests/test-drm_cmdline_parser.c - selftests/test-drm_damage_helper.c - selftests/test-drm_dp_mst_helper.c - selftests/test-drm_format.c - selftests/test-drm_framebuffer.c - selftests/test-drm_modeset_common.c - selftests/test-drm_modeset_common.h - selftests/test-drm_plane_helper.c - selftests/test-drm_rect.c - shmobile/ - sti/ - stm/ - sun4i/ - tegra/ - tilcdc/ - tiny/ - tve200/ - udl/ - v3d/ - vc4/ - virtio/virtgpu_trace.h - virtio/virtgpu_trace_points.c - vkms/ - vmwgfx/device_include/vmware_pack_begin.h - vmwgfx/device_include/vmware_pack_end.h - zte/
Exceptions -- these all appear to be files to which someone added an SPDX license header automatically by a script that is not aware of the default MIT licensing under drivers/gpu/drm:
- ast/ast_dp501.c - ast/ast_dram_tables.h - lib/drm_random.c - lib/drm_random.h - i915/display/intel_acpi.c - i915/selftests/mock_gem_device.h - i915/selftests/i915_mock_selftests.h - i915/selftests/i915_live_selftests.h - r128/ati_pcigart.h - selftests/drm_mm_selftests.h - selftests/test-drm_mm.c - vmwgfx/device_include/vm_basic_types.h
GPL exclusions in dist/include/drm:
- bridge - drm_client.h - drm_fb_cma_helper.h - drm_format_helper.h - drm_gem_cma_helper.h - drm_gem_shmem_helper.h - drm_gem_ttm_helper.h - drm_gem_vram_helper.h - drm_lease.h - drm_mipi_dbi.h - drm_mipi_dsi.h - drm_of.h - drm_simple_kms_helper.h - drm_sysfs.h - drm_writeback.h - gma_drm.h - i2c/tda998x.h - i915_mei_hdcp_interface.h - intel-gtt.h
Exceptions: - drm_agpsupport.h - was in original drm; wrong spdx header auto-added
GPL exclusions in dist/include/uapi/drm:
- armada_drm.h - etnaviv_drm.h - exynos_drm.h - lima_drm.h - omap_drm.h
Exceptions: - i810_drm.h - was in original drm; spdx header is wrong
|
1.1.1.3 |
| 27-Aug-2018 |
riastradh | Import drm from Linux v4.4.143 (commit a8ea6276d00555387deaaa5eaeb380cd5c17bdc9).
drivers/gpu/drm -> sys/external/bsd/drm2/dist/drm include/drm -> sys/external/bsd/drm2/dist/include/drm include/uapi/drm -> sys/external/bsd/drm2/dist/uapi/drm
GPL sources excluded.
|
1.1.1.2 |
| 16-Jul-2014 |
riastradh | Import drm from Linux 3.15 (commitid 1860e379875dfe7271c649058aeddffe5afd9d0d).
drivers/gpu/drm -> sys/external/bsd/drm2/dist/drm include/drm -> sys/external/bsd/drm2/dist/include/drm include/uapi/drm -> sys/external/bsd/drm2/dist/uapi/drm
GPL sources excluded.
|
1.1.1.1 |
| 23-Jul-2013 |
riastradh | branches: 1.1.1.1.2; 1.1.1.1.4; Import drm sources from Linux v3.8-rc6. (commit id 88b62b915b0b7e25870eb0604ed9a92ba4bfc9f7)
Linux NetBSD drivers/gpu/drm sys/external/bsd/drm2/dist/drm include/drm sys/external/bsd/drm2/dist/include/drm include/uapi/drm sys/external/bsd/drm2/dist/uapi/drm
Files/subtrees excluded because of licence issues, to be either revisited later (particularly nouveau and radeon, which are mostly permissively licensed but a number of whose files have no licence statements), rewritten/ignored, or imported later as kernel modules under external/gpl2 instead:
include/drm/drm_fb_cma_helper.h include/drm/drm_gem_cma_helper.h include/drm/drm_os_linux.h include/drm/drm_pciids.h include/drm/drm_sysfs.h include/drm/drm_usb.h include/drm/exynos_drm.h include/drm/gma_drm.h include/drm/intel-gtt.h drm/cirrus drm/drm_edid_load.c drm/drm_fb_cma_helper.c drm/drm_gem_cma_helper.c drm/drm_sysfs.c drm/drm_trace.h drm/drm_trace_points.c drm/drm_usb.c drm/exynos drm/gma500 drm/i915/i915_trace.h drm/i915/i915_trace_points.c drm/i915/intel_acpi.c drm/mgag200 drm/nouveau drm/radeon drm/shmobile drm/tegra drm/udl uapi/exynos_drm.h
|
1.1.1.1.4.3 |
| 18-May-2014 |
rmind | sync with head
|
1.1.1.1.4.2 |
| 28-Aug-2013 |
rmind | sync with head
|
1.1.1.1.4.1 |
| 23-Jul-2013 |
rmind | file drm_ioctl.c was added on branch rmind-smpnet on 2013-08-28 23:59:32 +0000
|
1.1.1.1.2.6 |
| 15-Jan-2014 |
riastradh | Pesky ampersands!
|
1.1.1.1.2.5 |
| 15-Jan-2014 |
riastradh | Take master->lock.spinlock to read master->lock.hw_lock.
|
1.1.1.1.2.4 |
| 15-Jan-2014 |
riastradh | Make DRM_IOCTL_GET_CLIENT work except for pid and uid.
The pid and uid don't make sense because the client is associated with a file descriptor, which may be held by multiple processes, and even if only one holds it (which is probably the only sensible state of affairs), there's no index.
|
1.1.1.1.2.3 |
| 24-Jul-2013 |
riastradh | Disable DRM_IOCTL_GET_CLIENT (drmGetClient in libdrm) for now.
It does not appear to be needed by anything but diagnostic tools, and it requires bogus kernel state to be maintained.
|
1.1.1.1.2.2 |
| 23-Jul-2013 |
riastradh | sync with HEAD and actually get the drm2 import
|
1.1.1.1.2.1 |
| 23-Jul-2013 |
riastradh | file drm_ioctl.c was added on branch riastradh-drm2 on 2013-07-23 21:28:21 +0000
|
1.2.4.2 |
| 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
1.2.4.1 |
| 18-Mar-2014 |
yamt | file drm_ioctl.c was added on branch yamt-pagecache on 2014-05-22 11:40:52 +0000
|
1.2.2.1 |
| 10-Aug-2014 |
tls | Rebase.
|
1.3.6.1 |
| 06-Apr-2015 |
skrll | Sync with HEAD
|
1.3.4.3 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.3.4.2 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.3.4.1 |
| 16-Jul-2014 |
tls | file drm_ioctl.c was added on branch tls-maxphys on 2014-08-20 00:04:08 +0000
|
1.3.2.1 |
| 06-Mar-2015 |
snj | Pull up following revision(s) (requested by mrg in ticket #573): sys/external/bsd/common/include/linux/kernel.h: 1.5, 1.6 sys/external/bsd/drm2/dist/drm/drm_ioctl.c: 1.4 sys/external/bsd/drm2/dist/drm/drm_irq.c: 1.6-1.8 sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: 1.13-1.15 sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: 1.23-1.27 sys/external/bsd/drm2/dist/drm/i915/i915_gem_execbuffer.c: 1.5 sys/external/bsd/drm2/dist/drm/i915/intel_display.c: 1.14, 1.15 sys/external/bsd/drm2/dist/drm/i915/intel_dp.c: 1.10 sys/external/bsd/drm2/dist/drm/i915/intel_drv.h: 1.8 sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: 1.8-1.13 sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: 1.6 sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c: 1.5, 1.6 sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c: 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/include/core/device.h: 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/mc.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/pwr.h: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/os.h: 1.4, 1.5 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios/nouveau_subdev_bios_base.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios/nouveau_subdev_bios_pll.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/clock/nouveau_subdev_clock_base.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/clock/nouveau_subdev_clock_nv50.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/devinit/fbmem.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/devinit/nouveau_subdev_devinit_nv04.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nvc0.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nv50.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nvc0.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mc/nouveau_subdev_mc_base.c: 1.2, 1.3 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mxm/nouveau_subdev_mxm_nv50.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/pwr/nouveau_subdev_pwr_base.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_ic.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/timer/nouveau_subdev_timer_nv04.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_base.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv04.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv44.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nv04.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.h: 1.3 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c: 1.4, 1.5 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fbcon.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c: 1.3 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv84_fence.c: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.c: 1.3 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_ttm.h: 1.2 sys/external/bsd/drm2/dist/drm/nouveau/nouveau_vga.h: 1.2 sys/external/bsd/drm2/dist/drm/radeon/radeon_fence.c: 1.6-1.8 sys/external/bsd/drm2/dist/drm/radeon/radeon_pm.c: 1.3 sys/external/bsd/drm2/dist/drm/radeon/rs400.c: 1.3 sys/external/bsd/drm2/dist/drm/via/via_dmablit.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/via/via_drv.h: 1.3 sys/external/bsd/drm2/dist/drm/via/via_irq.c: 1.3, 1.4 sys/external/bsd/drm2/dist/drm/via/via_video.c: 1.3, 1.4 sys/external/bsd/drm2/dist/include/drm/drmP.h: 1.10 sys/external/bsd/drm2/dist/include/drm/drm_crtc.h: 1.4 sys/external/bsd/drm2/dist/include/drm/drm_modes.h: 1.3 sys/external/bsd/drm2/dist/uapi/drm/i915_drm.h: 1.2 sys/external/bsd/drm2/drm/drm_cache.c: 1.4-1.6 sys/external/bsd/drm2/drm/drm_drv.c: 1.14 sys/external/bsd/drm2/drm/drm_module.c: 1.10 sys/external/bsd/drm2/drm/drm_sysctl.c: 1.5 sys/external/bsd/drm2/drm/drm_vma_manager.c: 1.2 sys/external/bsd/drm2/drm/drmfb.c: 1.1 sys/external/bsd/drm2/drm/files.drmkms: 1.10, 1.11 sys/external/bsd/drm2/i2c/drm_encoder_slave.c: 1.1 sys/external/bsd/drm2/i915drm/files.i915drmkms: 1.7, 1.10 sys/external/bsd/drm2/i915drm/intelfb.c: 1.11, 1.12 sys/external/bsd/drm2/include/asm/io.h: 1.4 sys/external/bsd/drm2/include/asm/unaligned.h: 1.2, 1.3 sys/external/bsd/drm2/include/drm/drm_encoder_slave.h: 1.1 sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: 1.7-1.11 sys/external/bsd/drm2/include/drm/drmfb.h: 1.1 sys/external/bsd/drm2/include/drm/drmfb_pci.h: 1.1, 1.2 sys/external/bsd/drm2/include/linux/bitops.h: 1.9 sys/external/bsd/drm2/include/linux/i2c.h: 1.7, 1.8 sys/external/bsd/drm2/include/linux/io-mapping.h: 1.5 sys/external/bsd/drm2/include/linux/moduleparam.h: 1.5 sys/external/bsd/drm2/include/linux/pci.h: 1.12-1.15 sys/external/bsd/drm2/include/linux/pm.h: 1.4 sys/external/bsd/drm2/include/linux/reboot.h: 1.2 sys/external/bsd/drm2/include/linux/slab.h: 1.5 sys/external/bsd/drm2/include/linux/string.h: 1.4 sys/external/bsd/drm2/include/linux/vgaarb.h: 1.3 sys/external/bsd/drm2/include/linux/ww_mutex.h: 1.10 sys/external/bsd/drm2/linux/files.drmkms_linux: 1.8 sys/external/bsd/drm2/linux/linux_i2c.c: 1.3 sys/external/bsd/drm2/linux/linux_ww_mutex.c: 1.1 sys/external/bsd/drm2/nouveau/files.nouveau: 1.5-1.8 sys/external/bsd/drm2/nouveau/nouveau_pci.c: 1.1-1.3 sys/external/bsd/drm2/nouveau/nouveau_pci.h: 1.1 sys/external/bsd/drm2/nouveau/nouveau_sysfs.c: 1.1 sys/external/bsd/drm2/nouveau/nouveau_vga.c: 1.1 sys/external/bsd/drm2/nouveau/nouveaufb.c: 1.1 sys/external/bsd/drm2/nouveau/nouveaufb.h: 1.1 sys/external/bsd/drm2/pci/drm_pci.c: 1.10-1.12 sys/external/bsd/drm2/pci/drm_pci_module.c: 1.4 sys/external/bsd/drm2/pci/drmfb_pci.c: 1.1-1.3 sys/external/bsd/drm2/pci/files.drmkms_pci: 1.5 sys/external/bsd/drm2/radeon/radeon_pci.c: 1.5-1.7 sys/modules/drmkms/Makefile: 1.8, 1.9 sys/modules/drmkms_linux/Makefile: 1.6 sys/modules/drmkms_pci/Makefile: 1.5 sync drm2 with HEAD.
|
1.4.18.2 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.4.18.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
1.4.16.2 |
| 30-Sep-2018 |
pgoyette | Ssync with HEAD
|
1.4.16.1 |
| 06-Sep-2018 |
pgoyette | Sync with HEAD
Resolve a couple of conflicts (result of the uimin/uimax changes)
|
1.11.6.1 |
| 29-Feb-2020 |
ad | Sync with head.
|