Make pager and devobj debug messages optional
This commit is contained in:
@ -805,19 +805,19 @@ static int pager_req_create(ihk_os_t os, int fd, uintptr_t result_pa)
|
|||||||
|
|
||||||
error = vfs_fstat(fd, &st);
|
error = vfs_fstat(fd, &st);
|
||||||
if (error) {
|
if (error) {
|
||||||
printk("pager_req_create(%d,%lx):vfs_stat failed. %d\n", fd, (long)result_pa, error);
|
dprintk("pager_req_create(%d,%lx):vfs_stat failed. %d\n", fd, (long)result_pa, error);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (!S_ISREG(st.mode)) {
|
if (!S_ISREG(st.mode)) {
|
||||||
error = -ESRCH;
|
error = -ESRCH;
|
||||||
printk("pager_req_create(%d,%lx):not VREG. %x\n", fd, (long)result_pa, st.mode);
|
dprintk("pager_req_create(%d,%lx):not VREG. %x\n", fd, (long)result_pa, st.mode);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
file = fget(fd);
|
file = fget(fd);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
error = -EBADF;
|
error = -EBADF;
|
||||||
printk("pager_req_create(%d,%lx):file not found. %d\n", fd, (long)result_pa, error);
|
dprintk("pager_req_create(%d,%lx):file not found. %d\n", fd, (long)result_pa, error);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -840,7 +840,7 @@ static int pager_req_create(ihk_os_t os, int fd, uintptr_t result_pa)
|
|||||||
}
|
}
|
||||||
if (!(maxprot & PROT_READ)) {
|
if (!(maxprot & PROT_READ)) {
|
||||||
error = -EACCES;
|
error = -EACCES;
|
||||||
printk("pager_req_create(%d,%lx):cannot read file. %d\n", fd, (long)result_pa, error);
|
dprintk("pager_req_create(%d,%lx):cannot read file. %d\n", fd, (long)result_pa, error);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1123,7 +1123,7 @@ static int pager_req_map(ihk_os_t os, int fd, size_t len, off_t off, uintptr_t r
|
|||||||
struct pager_map_result *resp;
|
struct pager_map_result *resp;
|
||||||
uintptr_t phys;
|
uintptr_t phys;
|
||||||
|
|
||||||
printk("pager_req_map(%p,%d,%lx,%lx,%lx)\n", os, fd, len, off, result_rpa);
|
dprintk("pager_req_map(%p,%d,%lx,%lx,%lx)\n", os, fd, len, off, result_rpa);
|
||||||
pager = kzalloc(sizeof(*pager), GFP_KERNEL);
|
pager = kzalloc(sizeof(*pager), GFP_KERNEL);
|
||||||
if (!pager) {
|
if (!pager) {
|
||||||
error = -ENOMEM;
|
error = -ENOMEM;
|
||||||
@ -1193,10 +1193,11 @@ out:
|
|||||||
if (pager) {
|
if (pager) {
|
||||||
kfree(pager);
|
kfree(pager);
|
||||||
}
|
}
|
||||||
printk("pager_req_map(%p,%d,%lx,%lx,%lx): %d\n", os, fd, len, off, result_rpa, error);
|
dprintk("pager_req_map(%p,%d,%lx,%lx,%lx): %d\n", os, fd, len, off, result_rpa, error);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int pager_req_pfn(ihk_os_t os, uintptr_t handle, off_t off, uintptr_t ppfn_rpa)
|
static int pager_req_pfn(ihk_os_t os, uintptr_t handle, off_t off, uintptr_t ppfn_rpa)
|
||||||
{
|
{
|
||||||
const ihk_device_t dev = ihk_os_to_dev(os);
|
const ihk_device_t dev = ihk_os_to_dev(os);
|
||||||
@ -1211,7 +1212,7 @@ static int pager_req_pfn(ihk_os_t os, uintptr_t handle, off_t off, uintptr_t ppf
|
|||||||
uintptr_t phys;
|
uintptr_t phys;
|
||||||
uintptr_t *ppfn;
|
uintptr_t *ppfn;
|
||||||
|
|
||||||
printk("pager_req_pfn(%p,%lx,%lx)\n", os, handle, off);
|
dprintk("pager_req_pfn(%p,%lx,%lx)\n", os, handle, off);
|
||||||
|
|
||||||
if ((off < pager->map_off) || ((pager->map_off+pager->map_len) < (off + PAGE_SIZE))) {
|
if ((off < pager->map_off) || ((pager->map_off+pager->map_len) < (off + PAGE_SIZE))) {
|
||||||
error = -ERANGE;
|
error = -ERANGE;
|
||||||
@ -1256,7 +1257,7 @@ static int pager_req_pfn(ihk_os_t os, uintptr_t handle, off_t off, uintptr_t ppf
|
|||||||
|
|
||||||
error = 0;
|
error = 0;
|
||||||
out:
|
out:
|
||||||
printk("pager_req_pfn(%p,%lx,%lx): %d %lx\n", os, handle, off, error, pfn);
|
dprintk("pager_req_pfn(%p,%lx,%lx): %d %lx\n", os, handle, off, error, pfn);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1265,7 +1266,7 @@ static int pager_req_unmap(ihk_os_t os, uintptr_t handle)
|
|||||||
struct pager * const pager = (void *)handle;
|
struct pager * const pager = (void *)handle;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
printk("pager_req_unmap(%p,%lx)\n", os, handle);
|
dprintk("pager_req_unmap(%p,%lx)\n", os, handle);
|
||||||
|
|
||||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
|
||||||
down_write(¤t->mm->mmap_sem);
|
down_write(¤t->mm->mmap_sem);
|
||||||
@ -1281,7 +1282,7 @@ static int pager_req_unmap(ihk_os_t os, uintptr_t handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
kfree(pager);
|
kfree(pager);
|
||||||
printk("pager_req_unmap(%p,%lx): %d\n", os, handle, error);
|
dprintk("pager_req_unmap(%p,%lx): %d\n", os, handle, error);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -34,9 +34,16 @@
|
|||||||
#include <syscall.h>
|
#include <syscall.h>
|
||||||
#include <process.h>
|
#include <process.h>
|
||||||
|
|
||||||
|
//#define DEBUG_PRINT_DEVOBJ
|
||||||
|
|
||||||
|
#ifdef DEBUG_PRINT_DEVOBJ
|
||||||
|
#define dkprintf(...) kprintf(__VA_ARGS__)
|
||||||
|
#define ekprintf(...) kprintf(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define dkprintf(...) do { if (0) kprintf(__VA_ARGS__); } while (0)
|
||||||
|
#define ekprintf(...) kprintf(__VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define dkprintf(...) do { if (0) kprintf(__VA_ARGS__); } while (0)
|
|
||||||
#define ekprintf(...) kprintf(__VA_ARGS__)
|
|
||||||
|
|
||||||
struct devobj {
|
struct devobj {
|
||||||
struct memobj memobj; /* must be first */
|
struct memobj memobj; /* must be first */
|
||||||
@ -78,7 +85,7 @@ int devobj_create(int fd, size_t len, off_t off, struct memobj **objp, int *maxp
|
|||||||
struct devobj *obj = NULL;
|
struct devobj *obj = NULL;
|
||||||
const size_t npages = (len + PAGE_SIZE - 1) / PAGE_SIZE;
|
const size_t npages = (len + PAGE_SIZE - 1) / PAGE_SIZE;
|
||||||
|
|
||||||
kprintf("devobj_create(%d,%lx,%lx)\n", fd, len, off);
|
dkprintf("devobj_create(%d,%lx,%lx)\n", fd, len, off);
|
||||||
#define MAX_PAGES_IN_DEVOBJ (PAGE_SIZE / sizeof(uintptr_t))
|
#define MAX_PAGES_IN_DEVOBJ (PAGE_SIZE / sizeof(uintptr_t))
|
||||||
if (npages > MAX_PAGES_IN_DEVOBJ) {
|
if (npages > MAX_PAGES_IN_DEVOBJ) {
|
||||||
error = -EFBIG;
|
error = -EFBIG;
|
||||||
@ -113,8 +120,8 @@ int devobj_create(int fd, size_t len, off_t off, struct memobj **objp, int *maxp
|
|||||||
kprintf("devobj_create(%d,%lx,%lx):map failed. %d\n", fd, len, off, error);
|
kprintf("devobj_create(%d,%lx,%lx):map failed. %d\n", fd, len, off, error);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
kprintf("devobj_create:handle: %lx\n", result.handle);
|
dkprintf("devobj_create:handle: %lx\n", result.handle);
|
||||||
kprintf("devobj_create:maxprot: %x\n", result.maxprot);
|
dkprintf("devobj_create:maxprot: %x\n", result.maxprot);
|
||||||
|
|
||||||
obj->memobj.ops = &devobj_ops;
|
obj->memobj.ops = &devobj_ops;
|
||||||
obj->memobj.flags = MF_HAS_PAGER;
|
obj->memobj.flags = MF_HAS_PAGER;
|
||||||
@ -136,7 +143,7 @@ out:
|
|||||||
}
|
}
|
||||||
kfree(obj);
|
kfree(obj);
|
||||||
}
|
}
|
||||||
kprintf("devobj_create(%d,%lx,%lx): %d %p %x%d\n", fd, len, off, error, *objp, *maxprotp);
|
dkprintf("devobj_create(%d,%lx,%lx): %d %p %x%d\n", fd, len, off, error, *objp, *maxprotp);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,7 +151,7 @@ static void devobj_ref(struct memobj *memobj)
|
|||||||
{
|
{
|
||||||
struct devobj *obj = to_devobj(memobj);
|
struct devobj *obj = to_devobj(memobj);
|
||||||
|
|
||||||
kprintf("devobj_ref(%p %lx):\n", obj, obj->handle);
|
dkprintf("devobj_ref(%p %lx):\n", obj, obj->handle);
|
||||||
memobj_lock(&obj->memobj);
|
memobj_lock(&obj->memobj);
|
||||||
++obj->ref;
|
++obj->ref;
|
||||||
memobj_unlock(&obj->memobj);
|
memobj_unlock(&obj->memobj);
|
||||||
@ -157,7 +164,7 @@ static void devobj_release(struct memobj *memobj)
|
|||||||
struct devobj *free_obj = NULL;
|
struct devobj *free_obj = NULL;
|
||||||
uintptr_t handle;
|
uintptr_t handle;
|
||||||
|
|
||||||
kprintf("devobj_release(%p %lx)\n", obj, obj->handle);
|
dkprintf("devobj_release(%p %lx)\n", obj, obj->handle);
|
||||||
|
|
||||||
memobj_lock(&obj->memobj);
|
memobj_lock(&obj->memobj);
|
||||||
--obj->ref;
|
--obj->ref;
|
||||||
@ -189,7 +196,7 @@ static void devobj_release(struct memobj *memobj)
|
|||||||
kfree(free_obj);
|
kfree(free_obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
kprintf("devobj_release(%p %lx):free %p\n",
|
dkprintf("devobj_release(%p %lx):free %p\n",
|
||||||
obj, handle, free_obj);
|
obj, handle, free_obj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -204,7 +211,7 @@ static int devobj_get_page(struct memobj *memobj, off_t off, int p2align, uintpt
|
|||||||
ihk_mc_user_context_t ctx;
|
ihk_mc_user_context_t ctx;
|
||||||
int ix;
|
int ix;
|
||||||
|
|
||||||
kprintf("devobj_get_page(%p %lx,%lx,%d)\n", memobj, obj->handle, off, p2align);
|
dkprintf("devobj_get_page(%p %lx,%lx,%d)\n", memobj, obj->handle, off, p2align);
|
||||||
|
|
||||||
if ((pgoff < obj->pfn_pgoff) || ((obj->pfn_pgoff + obj->npages) <= pgoff)) {
|
if ((pgoff < obj->pfn_pgoff) || ((obj->pfn_pgoff + obj->npages) <= pgoff)) {
|
||||||
error = -EFBIG;
|
error = -EFBIG;
|
||||||
@ -212,7 +219,7 @@ static int devobj_get_page(struct memobj *memobj, off_t off, int p2align, uintpt
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
ix = pgoff - obj->pfn_pgoff;
|
ix = pgoff - obj->pfn_pgoff;
|
||||||
kprintf("ix: %ld\n", ix);
|
dkprintf("ix: %ld\n", ix);
|
||||||
|
|
||||||
memobj_lock(&obj->memobj);
|
memobj_lock(&obj->memobj);
|
||||||
pfn = obj->pfn_table[ix];
|
pfn = obj->pfn_table[ix];
|
||||||
@ -232,7 +239,7 @@ kprintf("ix: %ld\n", ix);
|
|||||||
|
|
||||||
if (pfn & PFN_PRESENT) {
|
if (pfn & PFN_PRESENT) {
|
||||||
/* convert remote physical into local physical */
|
/* convert remote physical into local physical */
|
||||||
kprintf("devobj_get_page(%p %lx,%lx,%d):PFN_PRESENT before %#lx\n", memobj, obj->handle, off, p2align, pfn);
|
dkprintf("devobj_get_page(%p %lx,%lx,%d):PFN_PRESENT before %#lx\n", memobj, obj->handle, off, p2align, pfn);
|
||||||
attr = pfn & ~PFN_PFN;
|
attr = pfn & ~PFN_PFN;
|
||||||
|
|
||||||
/* TODO: do an arch dependent PTE to mapping flag conversion
|
/* TODO: do an arch dependent PTE to mapping flag conversion
|
||||||
@ -245,7 +252,7 @@ kprintf("devobj_get_page(%p %lx,%lx,%d):PFN_PRESENT before %#lx\n", memobj, obj-
|
|||||||
pfn = ihk_mc_map_memory(NULL, (pfn & PFN_PFN), PAGE_SIZE);
|
pfn = ihk_mc_map_memory(NULL, (pfn & PFN_PFN), PAGE_SIZE);
|
||||||
pfn &= PFN_PFN;
|
pfn &= PFN_PFN;
|
||||||
pfn |= attr;
|
pfn |= attr;
|
||||||
kprintf("devobj_get_page(%p %lx,%lx,%d):PFN_PRESENT after %#lx\n", memobj, obj->handle, off, p2align, pfn);
|
dkprintf("devobj_get_page(%p %lx,%lx,%d):PFN_PRESENT after %#lx\n", memobj, obj->handle, off, p2align, pfn);
|
||||||
}
|
}
|
||||||
|
|
||||||
memobj_lock(&obj->memobj);
|
memobj_lock(&obj->memobj);
|
||||||
@ -263,6 +270,6 @@ kprintf("devobj_get_page(%p %lx,%lx,%d):PFN_PRESENT after %#lx\n", memobj, obj->
|
|||||||
*physp = pfn & PFN_PFN;
|
*physp = pfn & PFN_PFN;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
kprintf("devobj_get_page(%p %lx,%lx,%d): %d %lx\n", memobj, obj->handle, off, p2align, error, *physp);
|
dkprintf("devobj_get_page(%p %lx,%lx,%d): %d %lx\n", memobj, obj->handle, off, p2align, error, *physp);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user