Skip to content

Commit

Permalink
Revert "Use gdev_io_memcpy instead of using memcpy directly"
Browse files Browse the repository at this point in the history
This reverts commit dc5b1ea.
  • Loading branch information
Constellation committed Nov 19, 2013
1 parent 2bd96d7 commit 0f37b44
Show file tree
Hide file tree
Showing 16 changed files with 42 additions and 83 deletions.
2 changes: 0 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ PROJECT(Gdev)
SET(serial "1.0.0")
SET(soserial "1")

INCLUDE_DIRECTORIES(util)

FIND_PACKAGE(Doxygen)
include(UseDoxygen OPTIONAL)

Expand Down
3 changes: 1 addition & 2 deletions common/gdev_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@

#include "gdev_api.h"
#include "gdev_device.h"
#include "gdev_io_memcpy.h"
#include "gdev_sched.h"

#define __max(x, y) (x) > (y) ? (x) : (y)
Expand Down Expand Up @@ -85,7 +84,7 @@ static void __free_dma(gdev_mem_t **dma_mem, int p_count)
*/
static int __f_memcpy(void *dst, const void *src, uint32_t size)
{
gdev_io_memcpy(dst, src, size);
memcpy(dst, src, size);
return 0;
}

Expand Down
5 changes: 2 additions & 3 deletions common/gdev_system.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
#else
#include "gdev_lib.h"
#endif
#include "gdev_io_memcpy.h"

struct gdev_device; /* prototype declaration */

Expand Down Expand Up @@ -122,9 +121,9 @@ void gdev_next_compute(struct gdev_device *gdev);
#define MB()
#endif
/* should never used */
#define COPY_FROM_USER(dst, src, size) gdev_io_memcpy(dst, src, size)
#define COPY_FROM_USER(dst, src, size) memcpy(dst, src, size)
/* should never used */
#define COPY_TO_USER(dst, src, size) gdev_io_memcpy(dst, src, size)
#define COPY_TO_USER(dst, src, size) memcpy(dst, src, size)
#define IOREAD32(addr) *(uint32_t *)(addr)
#define IOWRITE32(val, addr) *(uint32_t *)(addr) = val
#endif
Expand Down
2 changes: 0 additions & 2 deletions cuda/configure
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,9 @@ if [ $target = 'libucuda' ] ; then
cp -rf ../driver/* .
cp -rf ../runtime/ .
cp -f ../cudump/* .
cp -f ../../util/* .
elif [ $target = 'kcuda' ] ; then
cp -f ../kcuda/* .
cp -rf ../driver/* .
cp -f ../../util/* .
# we don't support Runtime API in kernel
runtime='0'
else
Expand Down
5 changes: 2 additions & 3 deletions cuda/driver/execution.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#include "gdev_api.h"
#include "gdev_autogen.h"
#include "gdev_cuda.h"
#include "gdev_io_memcpy.h"

CUresult cuFuncGetAttribute
(int *pi, CUfunction_attribute attrib, CUfunction hfunc)
Expand Down Expand Up @@ -499,8 +498,8 @@ CUresult cuParamSetv

k = &func->kernel;
f = &func->raw_func;
gdev_io_memcpy(&k->param_buf[(f->param_base + offset) / 4], ptr, numbytes);

memcpy(&k->param_buf[(f->param_base + offset) / 4], ptr, numbytes);
return CUDA_SUCCESS;
}

9 changes: 4 additions & 5 deletions cuda/driver/gdev_cuda.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@

#include "cuda.h"
#include "gdev_cuda.h"
#include "gdev_io_memcpy.h"
#ifdef __KERNEL__
#include <linux/errno.h>
#else
Expand Down Expand Up @@ -964,7 +963,7 @@ CUresult gdev_cuda_construct_kernels
/* the following c[] setup is NVIDIA's nvcc-specific. */
k->cmem_count = GDEV_NVIDIA_CONST_SEGMENT_MAX_COUNT;
/* c0[] is a parameter list. */
gdev_io_memcpy(k->param_buf, f->cmem[0].buf, f->param_base);
memcpy(k->param_buf, f->cmem[0].buf, f->param_base);
k->cmem[0].size = gdev_cuda_align_cmem_size(f->param_size + cmem_size_align);
k->cmem[0].offset = 0;
for (i = 1; i < GDEV_NVIDIA_CONST_SEGMENT_MAX_COUNT; i++) {
Expand Down Expand Up @@ -1135,7 +1134,7 @@ CUresult gdev_cuda_memcpy_code(struct CUmod_st *mod, void *buf)
for (i = 0; i < GDEV_NVIDIA_CONST_SEGMENT_MAX_COUNT; i++) {
if (mod->cmem[i].buf) {
offset = mod->cmem[i].addr - addr;
gdev_io_memcpy(buf + offset, mod->cmem[i].buf, mod->cmem[i].raw_size);
memcpy(buf + offset, mod->cmem[i].buf, mod->cmem[i].raw_size);
}
}

Expand All @@ -1144,12 +1143,12 @@ CUresult gdev_cuda_memcpy_code(struct CUmod_st *mod, void *buf)
f = &func->raw_func;
if (f->code_buf) {
offset = k->code_addr - addr;
gdev_io_memcpy(buf + offset, f->code_buf, f->code_size);
memcpy(buf + offset, f->code_buf, f->code_size);
}
for (i = 0; i < GDEV_NVIDIA_CONST_SEGMENT_MAX_COUNT; i++) {
if (f->cmem[i].buf) {
offset = k->cmem[i].addr - addr;
gdev_io_memcpy(buf + offset, f->cmem[i].buf, f->cmem[i].size);
memcpy(buf + offset, f->cmem[i].buf, f->cmem[i].size);
}
}
}
Expand Down
2 changes: 0 additions & 2 deletions lib/configure
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,10 @@ done
if [ $target = 'kernel' ] ; then
# all files are driver-independent
cp -f $topdir/$common/*.h .
cp -f $topdir/util/* .
cp -f ../kernel/* .
elif [ $target = 'user' ] ; then
# copy driver-independent files
cp -f $topdir/$common/* .
cp -f $topdir/util/* .
cp -f ../user/gdev/* .
# detect which driver to be used
sh ./autogen.sh
Expand Down
6 changes: 2 additions & 4 deletions lib/kernel/gdev_lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@
#include <stdlib.h> /* malloc/free, etc. */
#include <string.h> /* memcpy, etc. */

#include "gdev_io_memcpy.h"

#define GDEV_PRINT(fmt, arg...) fprintf(stderr, "[gdev] " fmt, ##arg)
#define GDEV_DPRINT(fmt, arg...) \
if (GDEV_DEBUG_PRINT) \
Expand All @@ -44,7 +42,7 @@
#define FREE(x) free(x)
#define SCHED_YIELD() sched_yield()
#define MB() //mb()
#define COPY_FROM_USER(dst, src, size) gdev_io_memcpy(dst, src, size)
#define COPY_TO_USER(dst, src, size) gdev_io_memcpy(dst, src, size)
#define COPY_FROM_USER(dst, src, size) memcpy(dst, src, size)
#define COPY_TO_USER(dst, src, size) memcpy(dst, src, size)

#endif
15 changes: 12 additions & 3 deletions lib/user/nouveau/nouveau_gdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@

#include "gdev_api.h"
#include "gdev_device.h"
#include "gdev_io_memcpy.h"
#include "gdev_nvidia.h"
#include "gdev_nvidia_fifo.h"
#include "gdev_nvidia_nve4.h"
Expand All @@ -44,6 +43,16 @@ struct gdev_nouveau_ctx_objects {
struct nouveau_object *m2mf;
};

/* this ensures that SSE is not applied to memcpy. */
void* __nouveau_io_memcpy(void* s1, const void* s2, size_t n)
{
volatile char* out = (volatile char*)s1;
const volatile char* in = (const volatile char*)s2;
size_t i;
for (i = 0; i < n; ++i) out[i] = in[i];
return s1;
}

void __nouveau_fifo_space(struct gdev_ctx *ctx, uint32_t len)
{
struct nouveau_pushbuf *push = (struct nouveau_pushbuf *)ctx->pctx;
Expand Down Expand Up @@ -645,7 +654,7 @@ int gdev_raw_read(struct gdev_mem *mem, void *buf, uint64_t addr, uint32_t size)
uint64_t offset = addr - bo->offset;

if (bo->map) {
gdev_io_memcpy(buf, bo->map + offset, size);
__nouveau_io_memcpy(buf, bo->map + offset, size);
return 0;
}
else {
Expand All @@ -660,7 +669,7 @@ int gdev_raw_write(struct gdev_mem *mem, uint64_t addr, const void *buf, uint32_
uint64_t offset = addr - bo->offset;

if (bo->map) {
gdev_io_memcpy(bo->map + offset, buf, size);
__nouveau_io_memcpy(bo->map + offset, buf, size);
return 0;
}
else {
Expand Down
15 changes: 12 additions & 3 deletions lib/user/nvrm/nvrm_gdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@

#include "gdev_api.h"
#include "gdev_device.h"
#include "gdev_io_memcpy.h"
#include "gdev_nvidia.h"
#include "gdev_nvidia_fifo.h"
#include "nvrm.h"
Expand All @@ -38,6 +37,16 @@
struct gdev_device *lgdev; /* local gdev_device structure for user-space scheduling */
static struct nvrm_context *nvrm_ctx = 0;

/* this ensures that SSE is not applied to memcpy. */
void* __nvrm_io_memcpy(void* s1, const void* s2, size_t n)
{
volatile char* out = (volatile char*)s1;
const volatile char* in = (const volatile char*)s2;
size_t i;
for (i = 0; i < n; ++i) out[i] = in[i];
return s1;
}

int gdev_raw_query(struct gdev_device *gdev, uint32_t type, uint64_t *result)
{
#ifndef GDEV_SCHED_DISABLED/* fix this */
Expand Down Expand Up @@ -489,7 +498,7 @@ int gdev_raw_read(struct gdev_mem *mem, void *buf, uint64_t addr, uint32_t size)
}

uint64_t offset = addr - mem->addr;
gdev_io_memcpy(buf, ptr + offset, size);
__nvrm_io_memcpy(buf, ptr + offset, size);

if (!mem->map) {
nvrm_bo_host_unmap(bo);
Expand All @@ -508,7 +517,7 @@ int gdev_raw_write(struct gdev_mem *mem, uint64_t addr, const void *buf, uint32_
}

uint64_t offset = addr - mem->addr;
gdev_io_memcpy(ptr + offset, buf, size);
__nvrm_io_memcpy(ptr + offset, buf, size);

if (!mem->map) {
nvrm_bo_host_unmap(bo);
Expand Down
5 changes: 2 additions & 3 deletions lib/user/pscnv/libpscnv.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#include "drm.h"
#include "libpscnv.h"
#include "pscnv_drm.h"
#include "gdev_io_memcpy.h"

int drmIoctl(int fd, unsigned long request, void *arg)
{
Expand Down Expand Up @@ -93,7 +92,7 @@ int pscnv_gem_new(int fd, uint32_t cookie, uint32_t flags, uint32_t tile_flags,
req.tile_flags = tile_flags;
req.size = size;
if (user)
gdev_io_memcpy(req.user, user, sizeof(req.user));
memcpy(req.user, user, sizeof(req.user));
ret = drmCommandWriteRead(fd, DRM_PSCNV_GEM_NEW, &req, sizeof(req));
if (ret)
return ret;
Expand Down Expand Up @@ -122,7 +121,7 @@ int pscnv_gem_info(int fd, uint32_t handle, uint32_t *cookie, uint32_t *flags, u
if (map_handle)
*map_handle = req.map_handle;
if (user)
gdev_io_memcpy(user, req.user, sizeof(req.user));
memcpy(user, req.user, sizeof(req.user));
return 0;
}

Expand Down
5 changes: 2 additions & 3 deletions lib/user/pscnv/pscnv_gdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@

#include "gdev_api.h"
#include "gdev_device.h"
#include "gdev_io_memcpy.h"
#include "gdev_nvidia.h"
#include "gdev_nvidia_fifo.h"
#include "libpscnv.h"
Expand Down Expand Up @@ -375,7 +374,7 @@ int gdev_raw_read(struct gdev_mem *mem, void *buf, uint64_t addr, uint32_t size)
uint64_t offset = addr - bo->vm_base;

if (bo->map) {
gdev_io_memcpy(buf, bo->map + offset, size);
memcpy(buf, bo->map + offset, size);
return 0;
}
else
Expand All @@ -391,7 +390,7 @@ int gdev_raw_write(struct gdev_mem *mem, uint64_t addr, const void *buf, uint32_
uint64_t offset = addr - bo->vm_base;

if (bo->map) {
gdev_io_memcpy(bo->map + offset, buf, size);
memcpy(bo->map + offset, buf, size);
return 0;
}
else
Expand Down
3 changes: 1 addition & 2 deletions lib/user/sched/gdev_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@

#include "gdev_api.h"
#include "gdev_device.h"
#include "gdev_io_memcpy.h"
#include "gdev_sched.h"

#define __max(x, y) (x) > (y) ? (x) : (y)
Expand Down Expand Up @@ -85,7 +84,7 @@ static void __free_dma(gdev_mem_t **dma_mem, int p_count)
*/
static int __f_memcpy(void *dst, const void *src, uint32_t size)
{
gdev_io_memcpy(dst, src, size);
memcpy(dst, src, size);
return 0;
}

Expand Down
5 changes: 2 additions & 3 deletions mod/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ SET(soserial "1")
include(UseDoxygen OPTIONAL)

file(GLOB common_src "../common/*")
file(GLOB util_src "../util/*")
file(GLOB gmod_src "./gdev/*")

set(target gdev_module)

set(mod_src ${common_src} ${util_src} ${gmod_src})
set(mod_src ${common_src} ${gmod_src})

include_directories(../common/ ../util/ /usr/local/gdev/include ./gdev)
include_directories(../common/ /usr/local/gdev/include ./gdev)

SET( MODULE_NAME
gdev
Expand Down
1 change: 0 additions & 1 deletion mod/configure
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ done
# copy driver-independent files
cp -fr ../$gdev/* ./
cp -fr ../../$common/* ./
cp -fr ../../util/* ./

# detect which driver to be used
sh ./autogen.sh
42 changes: 0 additions & 42 deletions util/gdev_io_memcpy.h

This file was deleted.

0 comments on commit 0f37b44

Please sign in to comment.