Subversion Repositories Kolibri OS

Rev

Rev 3263 | Rev 3290 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3263 Rev 3266
Line 46... Line 46...
46
#undef wmb
46
#undef wmb
47
#define mb() asm volatile("mfence")
47
#define mb() asm volatile("mfence")
48
#define rmb() asm volatile ("lfence")
48
#define rmb() asm volatile ("lfence")
49
#define wmb() asm volatile ("sfence")
49
#define wmb() asm volatile ("sfence")
Line -... Line 50...
-
 
50
 
-
 
51
struct drm_i915_gem_object *get_fb_obj();
50
 
52
 
51
unsigned long vm_mmap(struct file *file, unsigned long addr,
53
unsigned long vm_mmap(struct file *file, unsigned long addr,
52
         unsigned long len, unsigned long prot,
54
         unsigned long len, unsigned long prot,
Line 53... Line 55...
53
         unsigned long flag, unsigned long offset);
55
         unsigned long flag, unsigned long offset);
Line 1049... Line 1051...
1049
	if (timeout != NULL) {
1051
	if (timeout != NULL) {
1050
		wait_time = *timeout;
1052
		wait_time = *timeout;
1051
		wait_forever = false;
1053
		wait_forever = false;
1052
	}
1054
	}
Line 1053... Line 1055...
1053
 
1055
 
Line 1054... Line 1056...
1054
//   timeout_jiffies = timespec_to_jiffies(&wait_time);
1056
	timeout_jiffies = timespec_to_jiffies(&wait_time);
1055
 
1057
 
1056
	if (WARN_ON(!ring->irq_get(ring)))
-
 
Line 1057... Line 1058...
1057
		return -ENODEV;
1058
	if (WARN_ON(!ring->irq_get(ring)))
1058
#if 0
1059
		return -ENODEV;
Line 1059... Line 1060...
1059
 
1060
 
1060
    /* Record current time in case interrupted by signal, or wedged * */
1061
    /* Record current time in case interrupted by signal, or wedged * */
1061
	getrawmonotonic(&before);
1062
	getrawmonotonic(&before);
1062
 
1063
 
-
 
1064
#define EXIT_COND \
-
 
1065
	(i915_seqno_passed(ring->get_seqno(ring, false), seqno) || \
-
 
1066
	atomic_read(&dev_priv->mm.wedged))
-
 
1067
	do {
-
 
1068
		if (interruptible)
1063
#define EXIT_COND \
1069
			end = wait_event_interruptible_timeout(ring->irq_queue,
1064
	(i915_seqno_passed(ring->get_seqno(ring, false), seqno) || \
1070
							       EXIT_COND,
Line 1065... Line 1071...
1065
	atomic_read(&dev_priv->mm.wedged))
1071
							       timeout_jiffies);
1066
	do {
1072
		else
Line 1087... Line 1093...
1087
	case -EIO:
1093
	case -EIO:
1088
	case -EAGAIN: /* Wedged */
1094
	case -EAGAIN: /* Wedged */
1089
	case -ERESTARTSYS: /* Signal */
1095
	case -ERESTARTSYS: /* Signal */
1090
		return (int)end;
1096
		return (int)end;
1091
	case 0: /* Timeout */
1097
	case 0: /* Timeout */
1092
//		if (timeout)
1098
		if (timeout)
1093
//			set_normalized_timespec(timeout, 0, 0);
1099
			set_normalized_timespec(timeout, 0, 0);
1094
		return -ETIME;
1100
		return -ETIME;
1095
	default: /* Completed */
1101
	default: /* Completed */
1096
		WARN_ON(end < 0); /* We're not aware of other errors */
1102
		WARN_ON(end < 0); /* We're not aware of other errors */
1097
		return 0;
1103
		return 0;
1098
	}
1104
	}
1099
 
-
 
1100
#endif
-
 
1101
 
-
 
1102
#define EXIT_COND \
-
 
1103
    (i915_seqno_passed(ring->get_seqno(ring, false), seqno) || \
-
 
1104
    atomic_read(&dev_priv->mm.wedged))
-
 
1105
    wait_event(ring->irq_queue, EXIT_COND);
-
 
1106
#undef EXIT_COND
-
 
1107
    ring->irq_put(ring);
-
 
1108
 
-
 
1109
    return 0;
-
 
1110
}
1105
}
Line 1111... Line 1106...
1111
 
1106
 
1112
/**
1107
/**
1113
 * Waits for a sequence number to be signaled, and cleans up the
1108
 * Waits for a sequence number to be signaled, and cleans up the
Line 1915... Line 1910...
1915
void
1910
void
1916
i915_gem_retire_requests_ring(struct intel_ring_buffer *ring)
1911
i915_gem_retire_requests_ring(struct intel_ring_buffer *ring)
1917
{
1912
{
1918
	uint32_t seqno;
1913
	uint32_t seqno;
Line 1919... Line -...
1919
 
-
 
1920
    ENTER();
-
 
1921
 
1914
 
1922
	if (list_empty(&ring->request_list))
1915
	if (list_empty(&ring->request_list))
Line 1923... Line 1916...
1923
		return;
1916
		return;
Line 1970... Line 1963...
1970
		ring->irq_put(ring);
1963
		ring->irq_put(ring);
1971
		ring->trace_irq_seqno = 0;
1964
		ring->trace_irq_seqno = 0;
1972
	}
1965
	}
Line 1973... Line 1966...
1973
 
1966
 
1974
	WARN_ON(i915_verify_lists(ring->dev));
-
 
1975
    LEAVE();
1967
	WARN_ON(i915_verify_lists(ring->dev));
Line 1976... Line 1968...
1976
}
1968
}
1977
 
1969
 
1978
void
1970
void
Line 1993... Line 1985...
1993
	struct drm_device *dev;
1985
	struct drm_device *dev;
1994
	struct intel_ring_buffer *ring;
1986
	struct intel_ring_buffer *ring;
1995
	bool idle;
1987
	bool idle;
1996
	int i;
1988
	int i;
Line 1997... Line -...
1997
 
-
 
1998
    ENTER();
-
 
1999
 
1989
 
2000
	dev_priv = container_of(work, drm_i915_private_t,
1990
	dev_priv = container_of(work, drm_i915_private_t,
2001
				mm.retire_work.work);
1991
				mm.retire_work.work);
Line 2002... Line 1992...
2002
	dev = dev_priv->dev;
1992
	dev = dev_priv->dev;
Line 2024... Line 2014...
2024
       queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, HZ);
2014
       queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, HZ);
2025
	if (idle)
2015
	if (idle)
2026
		intel_mark_idle(dev);
2016
		intel_mark_idle(dev);
Line 2027... Line 2017...
2027
 
2017
 
2028
	mutex_unlock(&dev->struct_mutex);
-
 
2029
 
-
 
2030
    LEAVE();
2018
	mutex_unlock(&dev->struct_mutex);
Line 2031... Line 2019...
2031
}
2019
}
2032
 
2020
 
2033
/**
2021
/**