Merge tag 'drm-next-2018-10-24' of git://anongit.freedesktop.org/drm/drm
Pull drm updates from Dave Airlie: "This is going to rebuild more than drm as it adds a new helper to list.h for doing bulk updates. Seemed like a reasonable addition to me. Otherwise the usual merge window stuff lots of i915 and amdgpu, not so much nouveau, and piles of everything else. Core: - Adds a new list.h helper for doing bulk list updates for TTM. - Don't leak fb address in smem_start to userspace (comes with EXPORT workaround for people using mali out of tree hacks) - udmabuf device to turn memfd regions into dma-buf - Per-plane blend mode property - ref/unref replacements with get/put - fbdev conflicting framebuffers code cleaned up - host-endian format variants - panel orientation quirk for Acer One 10 bridge: - TI SN65DSI86 chip support vkms: - GEM support. - Cursor support amdgpu: - Merge amdkfd and amdgpu into one module - CEC over DP AUX support - Picasso APU support + VCN dynamic powergating - Raven2 APU support - Vega20 enablement + kfd support - ACP powergating improvements - ABGR/XBGR display support - VCN jpeg support - xGMI support - DC i2c/aux cleanup - Ycbcr 4:2:0 support - GPUVM improvements - Powerplay and powerplay endian fixes - Display underflow fixes vmwgfx: - Move vmwgfx specific TTM code to vmwgfx - Split out vmwgfx buffer/resource validation code - Atomic operation rework bochs: - use more helpers - format/byteorder improvements qxl: - use more helpers i915: - GGTT coherency getparam - Turn off resource streamer API - More Icelake enablement + DMC firmware - Full PPGTT for Ivybridge, Haswell and Valleyview - DDB distribution based on resolution - Limited range DP display support nouveau: - CEC over DP AUX support - Initial HDMI 2.0 support virtio-gpu: - vmap support for PRIME objects tegra: - Initial Tegra194 support - DMA/IOMMU integration fixes msm: - a6xx perf improvements + clock prefix - GPU preemption optimisations - a6xx devfreq support - cursor support rockchip: - PX30 support - rgb output interface support mediatek: - HDMI output support on mt2701 and mt7623 rcar-du: - Interlaced modes on Gen3 - LVDS on R8A77980 - D3 and E3 SoC support hisilicon: - misc fixes mxsfb: - runtime pm support sun4i: - R40 TCON support - Allwinner A64 support - R40 HDMI support omapdrm: - Driver rework changing display pipeline ordering to use common code - DMM memory barrier and irq fixes - Errata workarounds exynos: - out-bridge support for LVDS bridge driver - Samsung 16x16 tiled format support - Plane alpha and pixel blend mode support tilcdc: - suspend/resume update mali-dp: - misc updates" * tag 'drm-next-2018-10-24' of git://anongit.freedesktop.org/drm/drm: (1382 commits) firmware/dmc/icl: Add missing MODULE_FIRMWARE() for Icelake. drm/i915/icl: Fix signal_levels drm/i915/icl: Fix DDI/TC port clk_off bits drm/i915/icl: create function to identify combophy port drm/i915/gen9+: Fix initial readout for Y tiled framebuffers drm/i915: Large page offsets for pread/pwrite drm/i915/selftests: Disable shrinker across mmap-exhaustion drm/i915/dp: Link train Fallback on eDP only if fallback link BW can fit panel's native mode drm/i915: Fix intel_dp_mst_best_encoder() drm/i915: Skip vcpi allocation for MSTB ports that are gone drm/i915: Don't unset intel_connector->mst_port drm/i915: Only reset seqno if actually idle drm/i915: Use the correct crtc when sanitizing plane mapping drm/i915: Restore vblank interrupts earlier drm/i915: Check fb stride against plane max stride drm/amdgpu/vcn:Fix uninitialized symbol error drm: panel-orientation-quirks: Add quirk for Acer One 10 (S1003) drm/amd/amdgpu: Fix debugfs error handling drm/amdgpu: Update gc_9_0 golden settings. drm/amd/powerplay: update PPtable with DC BTC and Tvr SocLimit fields ...
This commit is contained in:
5
tools/testing/selftests/drivers/dma-buf/Makefile
Normal file
5
tools/testing/selftests/drivers/dma-buf/Makefile
Normal file
@@ -0,0 +1,5 @@
|
||||
CFLAGS += -I../../../../../usr/include/
|
||||
|
||||
TEST_GEN_PROGS := udmabuf
|
||||
|
||||
include ../../lib.mk
|
96
tools/testing/selftests/drivers/dma-buf/udmabuf.c
Normal file
96
tools/testing/selftests/drivers/dma-buf/udmabuf.c
Normal file
@@ -0,0 +1,96 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <malloc.h>
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <linux/memfd.h>
|
||||
#include <linux/udmabuf.h>
|
||||
|
||||
#define TEST_PREFIX "drivers/dma-buf/udmabuf"
|
||||
#define NUM_PAGES 4
|
||||
|
||||
static int memfd_create(const char *name, unsigned int flags)
|
||||
{
|
||||
return syscall(__NR_memfd_create, name, flags);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct udmabuf_create create;
|
||||
int devfd, memfd, buf, ret;
|
||||
off_t size;
|
||||
void *mem;
|
||||
|
||||
devfd = open("/dev/udmabuf", O_RDWR);
|
||||
if (devfd < 0) {
|
||||
printf("%s: [skip,no-udmabuf]\n", TEST_PREFIX);
|
||||
exit(77);
|
||||
}
|
||||
|
||||
memfd = memfd_create("udmabuf-test", MFD_CLOEXEC);
|
||||
if (memfd < 0) {
|
||||
printf("%s: [skip,no-memfd]\n", TEST_PREFIX);
|
||||
exit(77);
|
||||
}
|
||||
|
||||
size = getpagesize() * NUM_PAGES;
|
||||
ret = ftruncate(memfd, size);
|
||||
if (ret == -1) {
|
||||
printf("%s: [FAIL,memfd-truncate]\n", TEST_PREFIX);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
memset(&create, 0, sizeof(create));
|
||||
|
||||
/* should fail (offset not page aligned) */
|
||||
create.memfd = memfd;
|
||||
create.offset = getpagesize()/2;
|
||||
create.size = getpagesize();
|
||||
buf = ioctl(devfd, UDMABUF_CREATE, &create);
|
||||
if (buf >= 0) {
|
||||
printf("%s: [FAIL,test-1]\n", TEST_PREFIX);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* should fail (size not multiple of page) */
|
||||
create.memfd = memfd;
|
||||
create.offset = 0;
|
||||
create.size = getpagesize()/2;
|
||||
buf = ioctl(devfd, UDMABUF_CREATE, &create);
|
||||
if (buf >= 0) {
|
||||
printf("%s: [FAIL,test-2]\n", TEST_PREFIX);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* should fail (not memfd) */
|
||||
create.memfd = 0; /* stdin */
|
||||
create.offset = 0;
|
||||
create.size = size;
|
||||
buf = ioctl(devfd, UDMABUF_CREATE, &create);
|
||||
if (buf >= 0) {
|
||||
printf("%s: [FAIL,test-3]\n", TEST_PREFIX);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* should work */
|
||||
create.memfd = memfd;
|
||||
create.offset = 0;
|
||||
create.size = size;
|
||||
buf = ioctl(devfd, UDMABUF_CREATE, &create);
|
||||
if (buf < 0) {
|
||||
printf("%s: [FAIL,test-4]\n", TEST_PREFIX);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fprintf(stderr, "%s: ok\n", TEST_PREFIX);
|
||||
close(buf);
|
||||
close(memfd);
|
||||
close(devfd);
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user