Index: sys/external/bsd/common/include/linux/err.h =================================================================== RCS file: /cvsroot/src/sys/external/bsd/common/include/linux/err.h,v retrieving revision 1.2 diff -p -u -u -r1.2 err.h --- sys/external/bsd/common/include/linux/err.h 27 Aug 2018 07:20:25 -0000 1.2 +++ sys/external/bsd/common/include/linux/err.h 28 Feb 2019 09:20:20 -0000 @@ -39,26 +39,45 @@ #include #define MAX_ERRNO ELAST +#define MIN_ERRNO_KERN EMOVEFD +#define MAX_ERRNO_KERN EJUSTRETURN static inline bool IS_ERR_VALUE(uintptr_t n) { - return (n >= (uintptr_t)-MAX_ERRNO); + return (n >= (uintptr_t)-MAX_ERRNO || + (n >= (uintptr_t)-MAX_ERRNO_KERN && + n <= (uintptr_t)MIN_ERRNO_KERN)); } + +#define LINUX_ASSERT_AS_MACRO +#ifdef LINUX_ASSERT_AS_MACRO +#define ERR_PTR(error) \ + ({ KASSERT(error < 0); \ + (void *)(intptr_t)error; }) +#else static inline void * ERR_PTR(long error) { KASSERT(error < 0); return (void *)(intptr_t)error; } +#endif +#ifdef LINUX_ASSERT_AS_MACRO +#define PTR_ERR(ptr) \ + ({ /* XXX Hurk! */ \ + KASSERT(ptr == (void *)(intptr_t)(long)(intptr_t)ptr); \ + (long)(intptr_t)ptr; }) +#else static inline long PTR_ERR(const void *ptr) { KASSERT(ptr == (void *)(intptr_t)(long)(intptr_t)ptr); /* XXX Hurk! */ return (long)(intptr_t)ptr; } +#endif static inline bool IS_ERR(const void *ptr) @@ -81,7 +100,7 @@ ERR_CAST(void *ptr) /* XXX Linux declar static inline long PTR_ERR_OR_ZERO(const void *ptr) { - return (IS_ERR(ptr)? PTR_ERR(ptr) : 0); + return (IS_ERR(ptr) ? PTR_ERR(ptr) : 0); } #define PTR_RET PTR_ERR_OR_ZERO Index: sys/external/bsd/drm2/dist/drm/i915/i915_gem.c =================================================================== RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c,v retrieving revision 1.54 diff -p -u -u -r1.54 i915_gem.c --- sys/external/bsd/drm2/dist/drm/i915/i915_gem.c 27 Aug 2018 15:22:54 -0000 1.54 +++ sys/external/bsd/drm2/dist/drm/i915/i915_gem.c 28 Feb 2019 09:20:21 -0000 @@ -1435,6 +1435,7 @@ int __i915_wait_request(struct drm_i915_ /* Optimistic spin for the next jiffie before touching IRQs */ ret = __i915_spin_request(req, state); +//KASSERTMSG(ret == 0 || ret < 0, "bad ret: %d", ret); if (ret == 0) goto out; @@ -1459,19 +1460,23 @@ int __i915_wait_request(struct drm_i915_ DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, &ring->irq_queue, &dev_priv->irq_lock, ticks, EXIT_COND); } +//int oret = ret; if (ret < 0) /* Failure: return negative error as is. */ ; else if (ret == 0) /* Timed out: return -ETIME. */ ret = -ETIME; else /* Succeeded (ret > 0): return 0. */ ret = 0; +//KASSERTMSG(ret == 0 || ret < 0, "bad ret: %d (oret %d)", ret, oret); } else { if (interruptible) { DRM_SPIN_WAIT_UNTIL(ret, &ring->irq_queue, &dev_priv->irq_lock, EXIT_COND); +//KASSERTMSG(ret == 0 || ret < 0, "bad ret: %d", ret); } else { DRM_SPIN_WAIT_NOINTR_UNTIL(ret, &ring->irq_queue, &dev_priv->irq_lock, EXIT_COND); +//KASSERTMSG(ret == 0 || ret < 0, "bad ret: %d", ret); } /* ret is negative on failure or zero on success. */ } @@ -1670,12 +1675,14 @@ i915_wait_request(struct drm_i915_gem_re BUG_ON(!mutex_is_locked(&dev->struct_mutex)); ret = i915_gem_check_wedge(&dev_priv->gpu_error, interruptible); +//KASSERTMSG(ret == 0 || ret < 0, "bad ret: %d", ret); if (ret) return ret; ret = __i915_wait_request(req, atomic_read(&dev_priv->gpu_error.reset_counter), interruptible, NULL, NULL); +//KASSERTMSG(ret == 0 || ret < 0, "bad ret: %d", ret); if (ret) return ret; Index: sys/external/bsd/drm2/dist/drm/i915/i915_gem_evict.c =================================================================== RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_evict.c,v retrieving revision 1.2 diff -p -u -u -r1.2 i915_gem_evict.c --- sys/external/bsd/drm2/dist/drm/i915/i915_gem_evict.c 27 Aug 2018 04:58:23 -0000 1.2 +++ sys/external/bsd/drm2/dist/drm/i915/i915_gem_evict.c 28 Feb 2019 09:20:21 -0000 @@ -157,7 +157,10 @@ none: if (pass++ == 0) { ret = i915_gpu_idle(dev); if (ret) +{ +//KASSERTMSG(ret == 0 || ret < 0, "bad ret: %d", ret); return ret; +} i915_gem_retire_requests(dev); goto search_again; @@ -196,11 +199,15 @@ found: obj = &vma->obj->base; list_del_init(&vma->exec_list); if (ret == 0) +{ ret = i915_vma_unbind(vma); +//KASSERTMSG(ret == 0 || ret < 0, "bad ret: %d", ret); +} drm_gem_object_unreference(obj); } +//KASSERTMSG(ret == 0 || ret < 0, "bad ret: %d", ret); return ret; } Index: sys/kern/kern_condvar.c =================================================================== RCS file: /cvsroot/src/sys/kern/kern_condvar.c,v retrieving revision 1.41 diff -p -u -u -r1.41 kern_condvar.c --- sys/kern/kern_condvar.c 30 Jan 2018 07:52:22 -0000 1.41 +++ sys/kern/kern_condvar.c 28 Feb 2019 09:20:21 -0000 @@ -270,6 +270,7 @@ cv_wait_sig(kcondvar_t *cv, kmutex_t *mt cv_enter(cv, mtx, l); error = sleepq_block(0, true); +KASSERTMSG(error >= 0, "error %d", error); return cv_exit(cv, mtx, l, error); } Index: sys/sys/errno.h =================================================================== RCS file: /cvsroot/src/sys/sys/errno.h,v retrieving revision 1.40 diff -p -u -u -r1.40 errno.h --- sys/sys/errno.h 2 Jan 2013 18:51:53 -0000 1.40 +++ sys/sys/errno.h 28 Feb 2019 09:20:21 -0000 @@ -176,11 +176,12 @@ #if defined(_KERNEL) || defined(_KMEMUSER) /* pseudo-errors returned inside kernel to modify return to process */ -#define EJUSTRETURN -2 /* don't modify regs, just return */ -#define ERESTART -3 /* restart syscall */ -#define EPASSTHROUGH -4 /* ioctl not handled by this layer */ -#define EDUPFD -5 /* Dup given fd */ -#define EMOVEFD -6 /* Move given fd */ +/* XXXMRG linux using code expects all errnos to be > 0 */ +#define EJUSTRETURN (255-2) /* don't modify regs, just return */ +#define ERESTART (255-3) /* restart syscall */ +#define EPASSTHROUGH (255-4) /* ioctl not handled by this layer */ +#define EDUPFD (255-5) /* Dup given fd */ +#define EMOVEFD (255-6) /* Move given fd */ #endif #endif /* !_SYS_ERRNO_H_ */