Re: [Intel-gfx] [PATCH] drm/i915: Add the predicate source registers to the register whitelist

2014-11-07 Thread Volkin, Bradley D
On Fri, Nov 07, 2014 at 07:34:31AM -0800, Neil Roberts wrote: The predicate source registers are needed to implement conditional rendering without stalling. The two source registers are used to load the previous values of the PS_DEPTH_COUNT register saved from PIPE_CONTROL commands. These can

Re: [Intel-gfx] [PATCH v3 2/5] drm/i915: Use batch pools with the command parser

2014-11-06 Thread Volkin, Bradley D
On Thu, Nov 06, 2014 at 05:56:36AM -0800, Daniel Vetter wrote: On Thu, Nov 06, 2014 at 07:36:55AM +, Chris Wilson wrote: On Wed, Nov 05, 2014 at 02:42:00PM -0800, Volkin, Bradley D wrote: For this part, I've got an implementation that works ok but one difference is that if we stop

Re: [Intel-gfx] [PATCH 1/2] tests/gem_exec_parse: fix batch_len setting for cmd-crossing-page

2014-11-06 Thread Volkin, Bradley D
Ping on this series. They're related to the batch copy series, but the changes are valid and tests should still pass even without the kernel changes being merged. On Mon, Nov 03, 2014 at 11:18:59AM -0800, Volkin, Bradley D wrote: From: Brad Volkin bradley.d.vol...@intel.com The size

Re: [Intel-gfx] [PATCH v3 2/5] drm/i915: Use batch pools with the command parser

2014-11-05 Thread Volkin, Bradley D
[snip] On Wed, Nov 05, 2014 at 01:50:24AM -0800, Daniel Vetter wrote: On Tue, Nov 04, 2014 at 08:35:00AM -0800, Volkin, Bradley D wrote: On Tue, Nov 04, 2014 at 02:17:59AM -0800, Daniel Vetter wrote: On Mon, Nov 03, 2014 at 11:19:42AM -0800, bradley.d.vol...@intel.com wrote: diff

Re: [Intel-gfx] [PATCH v3 2/5] drm/i915: Use batch pools with the command parser

2014-11-04 Thread Volkin, Bradley D
On Tue, Nov 04, 2014 at 02:17:59AM -0800, Daniel Vetter wrote: On Mon, Nov 03, 2014 at 11:19:42AM -0800, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com This patch sets up all of the tracking and copying necessary to use batch pools with the command parser

Re: [Intel-gfx] [PATCH v3 2/5] drm/i915: Use batch pools with the command parser

2014-11-04 Thread Volkin, Bradley D
On Tue, Nov 04, 2014 at 02:30:14AM -0800, Daniel Vetter wrote: On Mon, Nov 03, 2014 at 11:19:42AM -0800, bradley.d.vol...@intel.com wrote: + flags |= I915_DISPATCH_SECURE; I've forgotten one: You must have a full ppgtt check here since the binding for aliasing ppgtt is

Re: [Intel-gfx] [PATCH v3 0/5] Command parser batch buffer copy

2014-11-03 Thread Volkin, Bradley D
On Mon, Nov 03, 2014 at 11:19:40AM -0800, Volkin, Bradley D wrote: From: Brad Volkin bradley.d.vol...@intel.com This is v3 of the series I sent here: http://lists.freedesktop.org/archives/intel-gfx/2014-July/048705.html Most of the previous commentary still applies. We've fixed the secure

Re: [Intel-gfx] [PATCH] drm/i915: Add debugfs file to dump entire logical context

2014-10-31 Thread Volkin, Bradley D
On Thu, Oct 30, 2014 at 04:03:23PM -0700, armin.c.re...@intel.com wrote: From: Armin Reese armin.c.re...@intel.com The new 'i915_context_dump' file generates a hex dump of the entire logical context DRM object. It is useful for validating the contents of the default context set up by the

Re: [Intel-gfx] [PATCH] drm/i915: Abort command parsing for chained batches

2014-10-24 Thread Volkin, Bradley D
On Thu, Oct 23, 2014 at 08:52:59AM -0700, Volkin, Bradley D wrote: On Thu, Oct 23, 2014 at 05:31:12AM -0700, Daniel Vetter wrote: On Wed, Oct 22, 2014 at 09:04:32AM -0700, Volkin, Bradley D wrote: [snip] On Tue, Oct 21, 2014 at 08:50:33AM -0700, Daniel Vetter wrote: On Thu, Oct 16

Re: [Intel-gfx] [PATCH] drm/i915: Abort command parsing for chained batches

2014-10-23 Thread Volkin, Bradley D
On Thu, Oct 23, 2014 at 05:31:12AM -0700, Daniel Vetter wrote: On Wed, Oct 22, 2014 at 09:04:32AM -0700, Volkin, Bradley D wrote: [snip] On Tue, Oct 21, 2014 at 08:50:33AM -0700, Daniel Vetter wrote: On Thu, Oct 16, 2014 at 12:24:42PM -0700, bradley.d.vol...@intel.com wrote

Re: [Intel-gfx] [PATCH 1/2] tests/gem_exec_parse: fix batch_len setting for cmd-crossing-page

2014-10-22 Thread Volkin, Bradley D
On Tue, Oct 21, 2014 at 08:26:05AM -0700, Daniel Vetter wrote: On Wed, Oct 15, 2014 at 02:52:41PM -0700, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com The size of the batch buffer passed to the kernel is significantly larger than the size of the batch

Re: [Intel-gfx] [PATCH] drm/i915: Abort command parsing for chained batches

2014-10-22 Thread Volkin, Bradley D
[snip] On Tue, Oct 21, 2014 at 08:50:33AM -0700, Daniel Vetter wrote: On Thu, Oct 16, 2014 at 12:24:42PM -0700, bradley.d.vol...@intel.com wrote: diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index 1a0611b..1ed5702 100644 ---

Re: [Intel-gfx] [PATCH 1/3] tools/null_state_gen: add macro to emit commands with null state

2014-09-24 Thread Volkin, Bradley D
On Wed, Sep 24, 2014 at 05:50:30AM -0700, Mika Kuoppala wrote: In null/golden context there are multiple state commands where the actual state is always zero. For more compact batch representation add a macro which just emits command and the rest of the state as zero. Signed-off-by: Mika

Re: [Intel-gfx] [PATCH 3/3] tools/null_state_gen: Add GEN9 golden context batch buffer creation

2014-09-24 Thread Volkin, Bradley D
I went through and compared this against both the spec (the state commands listed in 3D-Media-GPGPU chapter 3D Pipeline Stages section) and the other information I've seen on recommended setup, and as far as I can tell this looks good. It still might be worth getting another set of eyes on this,

Re: [Intel-gfx] [PATCH 1/6] drm/i915: Reinitialize default context after reset

2014-09-19 Thread Volkin, Bradley D
[snip] On Thu, Sep 18, 2014 at 07:58:30AM -0700, Mika Kuoppala wrote: @@ -577,7 +596,7 @@ static int do_switch(struct intel_engine_cs *ring, vma-bind_vma(vma, to-legacy_hw_ctx.rcs_state-cache_level, GLOBAL_BIND); } - if (!to-legacy_hw_ctx.initialized ||

Re: [Intel-gfx] [PATCH 1/3] drm/i915 Add golden context support for Gen9

2014-09-12 Thread Volkin, Bradley D
On Fri, Sep 12, 2014 at 11:25:14AM -0700, armin.c.re...@intel.com wrote: From: Armin Reese armin.c.re...@intel.com This patch includes the Gen9 batch buffer to generate a 'golden context' for that product family. Also: 1) IS_GEN9 macro has been added to drivers/gpu/drm/i915/i915_drv.h 2)

Re: [Intel-gfx] [PATCH 00/42] Execlists v4

2014-07-11 Thread Volkin, Bradley D
On Fri, Jul 11, 2014 at 08:48:52AM -0700, oscar.ma...@intel.com wrote: From: Oscar Mateo oscar.ma...@intel.com For a description of this patchset, please check the previous cover letters: [1], [2] and [3]. The main changes introduced in this v4 are: - Do not abstract __i915_add_request

Re: [Intel-gfx] [PATCH v2 1/5] drm/i915: Implement a framework for batch buffer pools

2014-07-09 Thread Volkin, Bradley D
On Wed, Jul 09, 2014 at 12:37:08AM -0700, Chris Wilson wrote: On Tue, Jul 08, 2014 at 03:26:36PM -0700, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com This adds a small module for managing a pool of batch buffers. The only current use case is for the

Re: [Intel-gfx] [PATCH v2 1/5] drm/i915: Implement a framework for batch buffer pools

2014-07-09 Thread Volkin, Bradley D
On Wed, Jul 09, 2014 at 08:30:08AM -0700, Chris Wilson wrote: On Wed, Jul 09, 2014 at 08:10:47AM -0700, Volkin, Bradley D wrote: On Wed, Jul 09, 2014 at 12:37:08AM -0700, Chris Wilson wrote: On Tue, Jul 08, 2014 at 03:26:36PM -0700, bradley.d.vol...@intel.com wrote: From: Brad Volkin

Re: [Intel-gfx] [PATCH v2 3/5] drm/i915: Add a batch pool debugfs file

2014-07-09 Thread Volkin, Bradley D
On Wed, Jul 09, 2014 at 12:36:38AM -0700, Chris Wilson wrote: On Tue, Jul 08, 2014 at 03:26:38PM -0700, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com It provides some useful information about the buffers in the global command parser batch pool. v2:

Re: [Intel-gfx] [PATCH] gem_exec_parse: require PPGTT as well

2014-06-26 Thread Volkin, Bradley D
On Thu, Jun 26, 2014 at 08:48:46AM -0700, Jesse Barnes wrote: The command parser may be present, but not active, so check for PPGTT before allowing this test to run. Signed-off-by: Jesse Barnes jbar...@virtuousgeek.org --- tests/gem_exec_parse.c | 7 ++- 1 file changed, 6

Re: [Intel-gfx] [PATCH 26/53] drm/i915/bdw: New logical ring submission mechanism

2014-06-24 Thread Volkin, Bradley D
On Tue, Jun 24, 2014 at 04:45:05AM -0700, Mateo Lozano, Oscar wrote: Ok, let´s try to extract something positive out of all this. OPTION A (Ben´s proposal): I think the only solution for what Chris is asking for is to implement this as 1 context per engine, as opposed to 1 context

Re: [Intel-gfx] [PATCH 12/53] drm/i915/bdw: Populate LR contexts (somewhat)

2014-06-23 Thread Volkin, Bradley D
On Mon, Jun 23, 2014 at 05:42:50AM -0700, Mateo Lozano, Oscar wrote: -Original Message- From: Volkin, Bradley D + reg_state[CTX_RING_HEAD+1] = 0; + reg_state[CTX_RING_TAIL] = RING_TAIL(ring-mmio_base); + reg_state[CTX_RING_TAIL+1] = 0; + reg_state[CTX_RING_BUFFER_START

Re: [Intel-gfx] [PATCH 26/53] drm/i915/bdw: New logical ring submission mechanism

2014-06-23 Thread Volkin, Bradley D
On Mon, Jun 23, 2014 at 07:35:38AM -0700, Mateo Lozano, Oscar wrote: -Original Message- From: Chris Wilson [mailto:ch...@chris-wilson.co.uk] Sent: Monday, June 23, 2014 2:42 PM To: Mateo Lozano, Oscar Cc: Volkin, Bradley D; intel-gfx@lists.freedesktop.org Subject: Re: [Intel

Re: [Intel-gfx] [RFC 1/4] drm/i915: Implement a framework for batch buffer pools

2014-06-20 Thread Volkin, Bradley D
On Fri, Jun 20, 2014 at 06:25:56AM -0700, Tvrtko Ursulin wrote: On 06/19/2014 06:35 PM, Volkin, Bradley D wrote: On Thu, Jun 19, 2014 at 02:48:29AM -0700, Tvrtko Ursulin wrote: Hi Brad, On 06/18/2014 05:36 PM, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol

Re: [Intel-gfx] [RFC 1/4] drm/i915: Implement a framework for batch buffer pools

2014-06-20 Thread Volkin, Bradley D
On Fri, Jun 20, 2014 at 08:41:08AM -0700, Tvrtko Ursulin wrote: On 06/20/2014 04:30 PM, Volkin, Bradley D wrote: On Fri, Jun 20, 2014 at 06:25:56AM -0700, Tvrtko Ursulin wrote: On 06/19/2014 06:35 PM, Volkin, Bradley D wrote: On Thu, Jun 19, 2014 at 02:48:29AM -0700, Tvrtko Ursulin

Re: [Intel-gfx] [PATCH 23/53] drm/i915: Generalize intel_ring_get_tail

2014-06-20 Thread Volkin, Bradley D
On Fri, Jun 13, 2014 at 08:37:41AM -0700, oscar.ma...@intel.com wrote: From: Oscar Mateo oscar.ma...@intel.com Reusing stuff, a penny at a time. Signed-off-by: Oscar Mateo oscar.ma...@intel.com --- drivers/gpu/drm/i915/i915_gem.c | 4 ++-- drivers/gpu/drm/i915/intel_ringbuffer.h

Re: [Intel-gfx] [PATCH 25/53] drm/i915/bdw: GEN-specific logical ring submit context (somewhat)

2014-06-20 Thread Volkin, Bradley D
On Fri, Jun 13, 2014 at 08:37:43AM -0700, oscar.ma...@intel.com wrote: From: Oscar Mateo oscar.ma...@intel.com For the moment, just mark the place (we still need to do a lot of preparation before execlists are ready to start submitting things). Signed-off-by: Oscar Mateo

Re: [Intel-gfx] [PATCH 28/53] drm/i915/bdw: GEN-specific logical ring emit flush

2014-06-20 Thread Volkin, Bradley D
On Fri, Jun 13, 2014 at 08:37:46AM -0700, oscar.ma...@intel.com wrote: From: Oscar Mateo oscar.ma...@intel.com Notice that the BSD invalidate bit is no longer present in GEN8, so Hmm. As far as I can tell, it is still present for VCS on gen8. As to whether we need to set it, I don't know.

Re: [Intel-gfx] [PATCH libdrm 1/2] intel: Sync the command parser version parameter from kernel

2014-06-19 Thread Volkin, Bradley D
On Thu, Jun 19, 2014 at 11:31:53AM +0100, Damien Lespiau wrote: Cc: Bradley Volkin bradley.d.vol...@intel.com Signed-off-by: Damien Lespiau damien.lesp...@intel.com Thanks for taking care of this Damien. Reviewed-by: Brad Volkin bradley.d.vol...@intel.com --- include/drm/i915_drm.h | 1 +

Re: [Intel-gfx] [RFC 1/4] drm/i915: Implement a framework for batch buffer pools

2014-06-19 Thread Volkin, Bradley D
On Thu, Jun 19, 2014 at 02:48:29AM -0700, Tvrtko Ursulin wrote: Hi Brad, On 06/18/2014 05:36 PM, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com This adds a small module for managing a pool of batch buffers. The only current use case is for the command

Re: [Intel-gfx] [PATCH 05/53] drm/i915: Move i915_gem_validate_context() to i915_gem_context.c

2014-06-18 Thread Volkin, Bradley D
[snip] On Mon, Jun 16, 2014 at 08:18:00AM -0700, Mateo Lozano, Oscar wrote: +struct intel_context * +i915_gem_context_validate(struct drm_device *dev, struct drm_file *file, + struct intel_engine_cs *ring, const u32 ctx_id) { + struct intel_context *ctx = NULL; +

Re: [Intel-gfx] [PATCH 04/53] drm/i915: Extract ringbuffer destroy make alloc outside accesible

2014-06-18 Thread Volkin, Bradley D
On Fri, Jun 13, 2014 at 08:37:22AM -0700, oscar.ma...@intel.com wrote: From: Oscar Mateo oscar.ma...@intel.com We are going to start creating a lot of extra ringbuffers soon, so these functions are handy. No functional changes. Signed-off-by: Oscar Mateo oscar.ma...@intel.com ---

Re: [Intel-gfx] [PATCH 10/53] drm/i915/bdw: A bit more advanced context init/fini

2014-06-18 Thread Volkin, Bradley D
On Fri, Jun 13, 2014 at 08:37:28AM -0700, oscar.ma...@intel.com wrote: From: Oscar Mateo oscar.ma...@intel.com There are a few big differences between context init and fini with the previous implementation of hardware contexts. One of them is demonstrated in this patch: we must allocate a

Re: [Intel-gfx] [PATCH 11/53] drm/i915/bdw: Allocate ringbuffers for Logical Ring Contexts

2014-06-18 Thread Volkin, Bradley D
On Fri, Jun 13, 2014 at 08:37:29AM -0700, oscar.ma...@intel.com wrote: From: Oscar Mateo oscar.ma...@intel.com As we have said a couple of times by now, logical ring contexts have their own ringbuffers: not only the backing pages, but the whole management struct. In a previous version of

Re: [Intel-gfx] [PATCH 12/53] drm/i915/bdw: Populate LR contexts (somewhat)

2014-06-18 Thread Volkin, Bradley D
On Fri, Jun 13, 2014 at 08:37:30AM -0700, oscar.ma...@intel.com wrote: From: Oscar Mateo oscar.ma...@intel.com For the most part, logical ring context objects are similar to hardware contexts in that the backing object is meant to be opaque. There are some exceptions where we need to poke

Re: [Intel-gfx] [PATCH 15/53] drm/i915/bdw: Don't write PDP in the legacy way when using LRCs

2014-06-18 Thread Volkin, Bradley D
On Fri, Jun 13, 2014 at 08:37:33AM -0700, oscar.ma...@intel.com wrote: From: Oscar Mateo oscar.ma...@intel.com This is mostly for correctness so that we know we are running the LR context correctly (this is, the PDPs are contained inside the context object). v2: Move the check to inside

Re: [Intel-gfx] [PATCH] drm/i915: Handle concurrent GTT faults gracefully

2014-06-13 Thread Volkin, Bradley D
On Thu, Jun 12, 2014 at 06:36:04PM +0100, Chris Wilson wrote: On Thu, Jun 12, 2014 at 10:10:58AM -0700, Volkin, Bradley D wrote: On Thu, Jun 12, 2014 at 03:13:14PM +0100, Chris Wilson wrote: + /* Check if a second thread completed the prefaulting for us */ + if (obj-fault_mappable

Re: [Intel-gfx] [PATCH] drm/i915: Handle concurrent GTT faults gracefully

2014-06-12 Thread Volkin, Bradley D
On Thu, Jun 12, 2014 at 03:13:14PM +0100, Chris Wilson wrote: remap_pfn_range() has a nasty surprise if you try to handle two faults from the same vma concurrently: that is the second thread hits a BUG() to assert that the range is clear. As we hold our struct_mutex whilst manipulating the

Re: [Intel-gfx] [PATCH 1/2] drm/i915: Prefault the entire object on first page fault

2014-06-11 Thread Volkin, Bradley D
On Tue, Jun 10, 2014 at 04:14:40AM -0700, Chris Wilson wrote: Inserting additional PTEs has no side-effect for us as the pfn are fixed for the entire time the object is resident in the global GTT. The downside is that we pay the entire cost of faulting the object upon the first hit, for which

Re: [Intel-gfx] [PATCH 2/2] drm/i915: Use remap_pfn_range() to prefault all PTE in a single pass

2014-06-11 Thread Volkin, Bradley D
On Tue, Jun 10, 2014 at 04:14:41AM -0700, Chris Wilson wrote: On an Ivybridge i7-3720qm with 1600MHz DDR3, with 32 fences, Upload rate for 2 linear surfaces: 8134MiB/s - 8154MiB/s Upload rate for 2 tiled surfaces: 8625MiB/s - 8632MiB/s Upload rate for 4 linear surfaces: 8127MiB/s -

Re: [Intel-gfx] [PATCH] drm/i915/vlv: enable PPGTT

2014-05-29 Thread Volkin, Bradley D
On Wed, May 28, 2014 at 03:02:24PM -0700, Jesse Barnes wrote: Need testing and possibly disabling on earlier steppings, but looks ok here on my B3. Signed-off-by: Jesse Barnes jbar...@virtuousgeek.org --- drivers/gpu/drm/i915/i915_drv.h | 2 +- 1 file changed, 1 insertion(+), 1

Re: [Intel-gfx] [PATCH] drm/i915: Only check PPGTT bits when using PPGTT

2014-05-28 Thread Volkin, Bradley D
On Wed, May 28, 2014 at 02:29:34PM -0700, Daniel Vetter wrote: Jesse reportedly has a patch somewhere to (finally!) enable ppgtt on vlv. Would we still need any part of this with ppgtt support on vlv? -Daniel Of course, as soon as I accept that it'll never happen... :) Off the top of my head,

Re: [Intel-gfx] [PATCH v3] drm/i915: Add null state batch to active list

2014-05-21 Thread Volkin, Bradley D
On Wed, May 21, 2014 at 07:02:56AM -0700, Mika Kuoppala wrote: + if (ring-id == RCS !to-is_initialized from == NULL) { + ret = i915_gem_render_state_init(ring); + if (ret) + DRM_ERROR(init render state: %d\n, ret); + } Apologies if this

Re: [Intel-gfx] [PATCH 06/50] drm/i915: s/intel_ring_buffer/intel_engine

2014-05-19 Thread Volkin, Bradley D
On Mon, May 19, 2014 at 09:12:26AM -0700, Mateo Lozano, Oscar wrote: BTW: do you want me to kill private_default_ctx as well? It doesn´t look very useful... Isn't private_default_ctx the one that's actually used when userspace specifies DEFAULT_CONTEXT_ID? Brad

Re: [Intel-gfx] [PATCH 02/50] drm/i915: for_each_ring

2014-05-19 Thread Volkin, Bradley D
On Fri, May 09, 2014 at 05:08:32AM -0700, oscar.ma...@intel.com wrote: From: Ben Widawsky benjamin.widaw...@intel.com for_each_ring() iterates over all rings supported by the hardware, not just those which have been initialized as in for_each_active_ring() I think we should give this a new

Re: [Intel-gfx] [PATCH 06/50] drm/i915: s/intel_ring_buffer/intel_engine

2014-05-19 Thread Volkin, Bradley D
On Mon, May 19, 2014 at 09:33:37AM -0700, Mateo Lozano, Oscar wrote: -Original Message- From: Volkin, Bradley D Sent: Monday, May 19, 2014 5:24 PM To: Mateo Lozano, Oscar Cc: Daniel Vetter; intel-gfx@lists.freedesktop.org Subject: Re: [Intel-gfx] [PATCH 06/50] drm/i915: s

Re: [Intel-gfx] [PATCH 06/50] drm/i915: s/intel_ring_buffer/intel_engine

2014-05-19 Thread Volkin, Bradley D
On Mon, May 19, 2014 at 09:49:31AM -0700, Mateo Lozano, Oscar wrote: -Original Message- From: Volkin, Bradley D Sent: Monday, May 19, 2014 5:41 PM To: Mateo Lozano, Oscar Cc: Daniel Vetter; intel-gfx@lists.freedesktop.org Subject: Re: [Intel-gfx] [PATCH 06/50] drm/i915: s

Re: [Intel-gfx] [PATCH] drm/i915: Introduce mapping of user pages into video memory (userptr) ioctl

2014-05-16 Thread Volkin, Bradley D
, and clean up comments based on suggestions by Bradley. Signed-off-by: Chris Wilson ch...@chris-wilson.co.uk Cc: Tvrtko Ursulin tvrtko.ursu...@linux.intel.com Cc: Gong, Zhipeng zhipeng.g...@intel.com Cc: Akash Goel akash.g...@intel.com Cc: Volkin, Bradley D bradley.d.vol...@intel.com Reviewed

Re: [Intel-gfx] [PATCH] drm/i915: Add OACONTROL to the command parser register whitelist.

2014-05-16 Thread Volkin, Bradley D
On Fri, May 16, 2014 at 12:53:30PM -0700, Jesse Barnes wrote: On Fri, 16 May 2014 12:34:08 -0700 Jesse Barnes jbar...@virtuousgeek.org wrote: On Fri, 16 May 2014 20:20:50 +0100 Chris Wilson ch...@chris-wilson.co.uk wrote: Yes, X only sets the secure bit when it pokes the display

Re: [Intel-gfx] [RFC] drm/i915: Add variable gem object size support to i915

2014-05-12 Thread Volkin, Bradley D
On Sat, May 10, 2014 at 06:42:32AM -0700, Siluvery, Arun wrote: On 09/05/2014 22:18, Volkin, Bradley D wrote: On Mon, Apr 28, 2014 at 08:01:29AM -0700, arun.siluv...@linux.intel.com wrote: + if (ret) + return ret; + + if (!i915_gem_obj_bound(obj, vm)) { + ret

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-05-12 Thread Volkin, Bradley D
On Mon, May 12, 2014 at 09:24:06AM -0700, Daniel Vetter wrote: On Thu, May 08, 2014 at 09:02:18AM -0700, Volkin, Bradley D wrote: On Thu, May 08, 2014 at 08:45:07AM -0700, Ville Syrjälä wrote: On Thu, May 08, 2014 at 08:27:16AM -0700, Volkin, Bradley D wrote: On Thu, May 08, 2014 at 02

Re: [Intel-gfx] [RFC] drm/i915: Add variable gem object size support to i915

2014-05-09 Thread Volkin, Bradley D
On Mon, Apr 28, 2014 at 08:01:29AM -0700, arun.siluv...@linux.intel.com wrote: From: Siluvery, Arun arun.siluv...@intel.com This patch adds support to have gem objects of variable size. The size of the gem object obj-size is always constant and this fact is tightly coupled in the driver;

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-05-08 Thread Volkin, Bradley D
On Thu, May 08, 2014 at 02:56:05AM -0700, Tvrtko Ursulin wrote: Hi Brad, On 04/28/2014 04:22 PM, bradley.d.vol...@intel.com wrote: [snip] - BUG_ON(!validate_cmds_sorted(ring)); + BUG_ON(!validate_cmds_sorted(ring, cmd_tables, cmd_table_count));

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-05-08 Thread Volkin, Bradley D
On Thu, May 08, 2014 at 06:42:16AM -0700, Tvrtko Ursulin wrote: On 04/28/2014 04:22 PM, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com For clients that submit large batch buffers the command parser has a substantial impact on performance. On my HSW ULT

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-05-08 Thread Volkin, Bradley D
On Thu, May 08, 2014 at 06:15:44AM -0700, Lespiau, Damien wrote: On Thu, May 08, 2014 at 02:05:07PM +0100, Damien Lespiau wrote: On Mon, Apr 28, 2014 at 08:22:08AM -0700, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com +/* + * Different command ranges

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-05-08 Thread Volkin, Bradley D
On Thu, May 08, 2014 at 08:45:07AM -0700, Ville Syrjälä wrote: On Thu, May 08, 2014 at 08:27:16AM -0700, Volkin, Bradley D wrote: On Thu, May 08, 2014 at 02:56:05AM -0700, Tvrtko Ursulin wrote: Hi Brad, On 04/28/2014 04:22 PM, bradley.d.vol...@intel.com wrote: [snip

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-05-08 Thread Volkin, Bradley D
On Thu, May 08, 2014 at 08:50:40AM -0700, Tvrtko Ursulin wrote: On 05/08/2014 04:27 PM, Volkin, Bradley D wrote: On Thu, May 08, 2014 at 02:56:05AM -0700, Tvrtko Ursulin wrote: Hi Brad, On 04/28/2014 04:22 PM, bradley.d.vol...@intel.com wrote: [snip] - BUG_ON(!validate_cmds_sorted

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-05-07 Thread Volkin, Bradley D
Could someone help to review this patch please? It provides a nice improvement to the command parser's performance, so I'd like to get this one in. Thanks, Brad On Mon, Apr 28, 2014 at 08:22:08AM -0700, Volkin, Bradley D wrote: From: Brad Volkin bradley.d.vol...@intel.com For clients

Re: [Intel-gfx] [PATCH 1/2] drm/i915: Improve fallback ring waiting

2014-05-07 Thread Volkin, Bradley D
On Mon, May 05, 2014 at 01:07:32AM -0700, Chris Wilson wrote: A few improvements to the fallback method for waiting upon ring space: 1. Fix the start/end wait tracepoints to always be paired. 2. Increase responsiveness of checking 3. Mark the process as waiting upon io 4. Check for signal

Re: [Intel-gfx] [PATCH 2/2] drm/i915: Flush request queue when waiting for ring space

2014-05-07 Thread Volkin, Bradley D
On Mon, May 05, 2014 at 01:07:33AM -0700, Chris Wilson wrote: During the review of commit 1f70999f9052f5a1b0ce1a55aff3808f2ec9fe42 Author: Chris Wilson ch...@chris-wilson.co.uk Date: Mon Jan 27 22:43:07 2014 + drm/i915: Prevent recursion by retiring requests when the ring is

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-04-28 Thread Volkin, Bradley D
On Mon, Apr 28, 2014 at 08:22:08AM -0700, Volkin, Bradley D wrote: From: Brad Volkin bradley.d.vol...@intel.com For clients that submit large batch buffers the command parser has a substantial impact on performance. On my HSW ULT system performance drops as much as ~20% on some tests. Most

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-04-28 Thread Volkin, Bradley D
On Mon, Apr 28, 2014 at 08:42:56AM -0700, Daniel Vetter wrote: On Mon, Apr 28, 2014 at 08:22:08AM -0700, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com For clients that submit large batch buffers the command parser has a substantial impact on performance.

Re: [Intel-gfx] [PATCH] drm/i915: Use hash tables for the command parser

2014-04-28 Thread Volkin, Bradley D
On Mon, Apr 28, 2014 at 08:53:30AM -0700, Daniel Vetter wrote: On Mon, Apr 28, 2014 at 08:22:08AM -0700, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com For clients that submit large batch buffers the command parser has a substantial impact on performance.

Re: [Intel-gfx] [PATCH 11/14] drm/i915/bdw: Add WT caching ability

2014-04-28 Thread Volkin, Bradley D
On Fri, Apr 18, 2014 at 02:04:27PM -0700, Rodrigo Vivi wrote: From: Ben Widawsky benjamin.widaw...@intel.com I don't have any insight on what parts can do what. The docs do seem to suggest WT caching works in at least the same manner as it doesn't on Haswell. As Ben previously mentioned,

Re: [Intel-gfx] [PATCH 12/14] drm/i915/bdw: enable eDRAM.

2014-04-28 Thread Volkin, Bradley D
Reviewed-by: Brad Volkin bradley.d.vol...@intel.com On Fri, Apr 18, 2014 at 02:04:28PM -0700, Rodrigo Vivi wrote: From: Ben Widawsky benjamin.widaw...@intel.com The same register exists for querying and programming eDRAM AKA eLLC. So we can simply use it. For now, use all the same defaults

Re: [Intel-gfx] [PATCH 13/14] drm/i915/bdw: Disable idle DOP clock gating

2014-04-28 Thread Volkin, Bradley D
Reviewed-by: Brad Volkin bradley.d.vol...@intel.com On Fri, Apr 18, 2014 at 02:04:29PM -0700, Rodrigo Vivi wrote: From: Ben Widawsky benjamin.widaw...@intel.com It seems we need this at least for the current platforms we have, but probably not later. In any event, it should cause too much

Re: [Intel-gfx] [PATCH 3/3] tests/gem_userptr_benchmark: Benchmarking userptr surfaces and impact

2014-04-24 Thread Volkin, Bradley D
Reviewed-by: Brad Volkin bradley.d.vol...@intel.com On Thu, Apr 24, 2014 at 10:07:32AM +0100, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com This adds a small benchmark for the new userptr functionality. Apart from basic surface creation and destruction, also tested is

Re: [Intel-gfx] [PATCH 3/3] tests/gem_userptr_benchmark: Benchmarking userptr surfaces and impact

2014-04-23 Thread Volkin, Bradley D
[snip] On Wed, Apr 23, 2014 at 06:28:54AM -0700, Tvrtko Ursulin wrote: On 04/18/2014 12:18 AM, Volkin, Bradley D wrote: On Wed, Mar 19, 2014 at 04:13:06AM -0700, Tvrtko Ursulin wrote: +static void **handle_ptr_map; +static unsigned int num_handle_ptr_map; I'd prefer that we explicitly

Re: [Intel-gfx] [PATCH 1/3] tests/gem_userptr_blits: Expanded userptr test cases

2014-04-23 Thread Volkin, Bradley D
On Wed, Apr 23, 2014 at 06:33:40AM -0700, Tvrtko Ursulin wrote: On 04/18/2014 06:10 PM, Volkin, Bradley D wrote: On Wed, Mar 19, 2014 at 04:13:04AM -0700, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com A set of userptr test cases to support the new feature

Re: [Intel-gfx] [PATCH] tests: Extract ALIGN macro into a common header

2014-04-23 Thread Volkin, Bradley D
Reviewed-by: Brad Volkin bradley.d.vol...@intel.com On Wed, Apr 23, 2014 at 08:07:55AM -0700, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com Makes for a little bit less code duplication, especially since it will be used from more callers in the future. Signed-off-by:

Re: [Intel-gfx] [PATCH] benchmarks: Build them on Android.

2014-04-23 Thread Volkin, Bradley D
Reviewed-by: Brad Volkin bradley.d.vol...@intel.com On Wed, Apr 23, 2014 at 09:03:23AM -0700, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com They build fine so give them some exposure. Signed-off-by: Tvrtko Ursulin tvrtko.ursu...@intel.com --- Android.mk

Re: [Intel-gfx] [PATCH 2/3] tests/gem_vmap_blits: Remove obsolete test case

2014-04-23 Thread Volkin, Bradley D
Reviewed-by: Brad Volkin bradley.d.vol...@intel.com On Wed, Apr 23, 2014 at 05:38:34PM +0100, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com No need for the old test case once the new one was added. v2: * Just rebase for lib/ reorganization. Signed-off-by:

Re: [Intel-gfx] [PATCH 3/3] tests/gem_userptr_benchmark: Benchmarking userptr surfaces and impact

2014-04-23 Thread Volkin, Bradley D
On Wed, Apr 23, 2014 at 05:38:35PM +0100, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com This adds a small benchmark for the new userptr functionality. Apart from basic surface creation and destruction, also tested is the impact of having userptr surfaces in the

Re: [Intel-gfx] [PATCH 1/3] tests/gem_userptr_blits: Expanded userptr test cases

2014-04-23 Thread Volkin, Bradley D
Reviewed-by: Brad Volkin bradley.d.vol...@intel.com On Wed, Apr 23, 2014 at 05:38:33PM +0100, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com A set of userptr test cases to support the new feature. For the eviction and swapping stress testing I have extracted some

Re: [Intel-gfx] [PATCH] tests/gen7_forcewake_mt: Don't set the GGTT bit in SRM command

2014-04-22 Thread Volkin, Bradley D
On Wed, Apr 09, 2014 at 09:47:57AM -0700, Daniel Vetter wrote: On Wed, Apr 09, 2014 at 08:12:28AM -0700, Volkin, Bradley D wrote: On Tue, Apr 08, 2014 at 11:20:30PM -0700, Chris Wilson wrote: On Tue, Apr 08, 2014 at 02:22:16PM -0700, bradley.d.vol...@intel.com wrote: From: Brad

Re: [Intel-gfx] [PATCH 1/3] tests/gem_userptr_blits: Expanded userptr test cases

2014-04-18 Thread Volkin, Bradley D
On Wed, Mar 19, 2014 at 04:13:04AM -0700, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com A set of userptr test cases to support the new feature. For the eviction and swapping stress testing I have extracted some common behaviour from gem_evict_everything and made both

Re: [Intel-gfx] [PATCH 3/3] drm/i915: Introduce mapping of user pages into video memory (userptr) ioctl

2014-04-17 Thread Volkin, Bradley D
to fix up the kernel thread's current-mm for use with copy_user(). Signed-off-by: Chris Wilson ch...@chris-wilson.co.uk Cc: Tvrtko Ursulin tvrtko.ursu...@linux.intel.com Cc: Gong, Zhipeng zhipeng.g...@intel.com Cc: Akash Goel akash.g...@intel.com Cc: Volkin, Bradley D bradley.d.vol

Re: [Intel-gfx] [PATCH 2/3] drm/i915: Do not call retire_requests from wait_for_rendering

2014-04-17 Thread Volkin, Bradley D
Hi Chris, just want to bring this one back to your attention while I'm going through the rest of the series. Thanks, Brad On Fri, Mar 28, 2014 at 03:58:25PM -0700, Volkin, Bradley D wrote: On Mon, Mar 17, 2014 at 05:21:55AM -0700, Chris Wilson wrote: A common issue we have is that retiring

Re: [Intel-gfx] [PATCH 3/3] tests/gem_userptr_benchmark: Benchmarking userptr surfaces and impact

2014-04-17 Thread Volkin, Bradley D
On Wed, Mar 19, 2014 at 04:13:06AM -0700, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com This adds a small benchmark for the new userptr functionality. Apart from basic surface creation and destruction, also tested is the impact of having userptr surfaces in the

Re: [Intel-gfx] [PATCH 2/3] tests/gem_vmap_blits: Remove obsolete test case

2014-04-17 Thread Volkin, Bradley D
On Wed, Mar 19, 2014 at 04:13:05AM -0700, Tvrtko Ursulin wrote: From: Tvrtko Ursulin tvrtko.ursu...@intel.com No need for the old test case once the new one was added. Signed-off-by: Tvrtko Ursulin tvrtko.ursu...@intel.com Reviewed-by: Brad Volkin bradley.d.vol...@intel.com ---

Re: [Intel-gfx] [PATCH] tests/gen7_forcewake_mt: Don't set the GGTT bit in SRM command

2014-04-09 Thread Volkin, Bradley D
On Tue, Apr 08, 2014 at 11:20:30PM -0700, Chris Wilson wrote: On Tue, Apr 08, 2014 at 02:22:16PM -0700, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com The command parser in newer kernels will reject it and setting this bit is not required for the actual

Re: [Intel-gfx] [PATCH] tests/gem_exec_parse: Test for OACONTROL tracking

2014-04-08 Thread Volkin, Bradley D
Hi Daniel, we've merged the kernel change for this but not the test. I'm assuming we still want the test case. Brad On Thu, Mar 27, 2014 at 11:44:45AM -0700, Volkin, Bradley D wrote: From: Brad Volkin bradley.d.vol...@intel.com Signed-off-by: Brad Volkin bradley.d.vol...@intel.com

Re: [Intel-gfx] [PATCH 2/3] drm/i915: Do not call retire_requests from wait_for_rendering

2014-03-28 Thread Volkin, Bradley D
On Mon, Mar 17, 2014 at 05:21:55AM -0700, Chris Wilson wrote: A common issue we have is that retiring requests causes recursion through GTT manipulation or page table manipulation which we can only handle at very specific points. However, to maintain internal consistency (enforced through our

Re: [Intel-gfx] [PATCH] drm/i915: Add OACONTROL to the command parser register whitelist.

2014-03-27 Thread Volkin, Bradley D
[snip] On Thu, Mar 27, 2014 at 12:57:21AM -0700, Daniel Vetter wrote: Another one that blows is igt/gen7_forcewake_mt. Not sure yet whether it's an issue with the test or the checker: https://bugs.freedesktop.org/show_bug.cgi?id=76670 For this one, the parser rejects an

Re: [Intel-gfx] [PATCH] drm/i915: Add OACONTROL to the command parser register whitelist.

2014-03-27 Thread Volkin, Bradley D
On Thu, Mar 27, 2014 at 01:16:26PM -0700, Daniel Vetter wrote: On Thu, Mar 27, 2014 at 4:57 PM, Volkin, Bradley D bradley.d.vol...@intel.com wrote: On Thu, Mar 27, 2014 at 12:57:21AM -0700, Daniel Vetter wrote: Another one that blows is igt/gen7_forcewake_mt. Not sure yet whether it's

Re: [Intel-gfx] [PATCH 1/3] drm/i915: BUG_ON() when cmd/reg tables are not sorted

2014-03-27 Thread Volkin, Bradley D
On Thu, Mar 27, 2014 at 02:47:03PM -0700, Kenneth Graunke wrote: Does any code actually rely on the tables being sorted? Not today. The idea was to make it easier to move to an algorithm that does in the future. For example, I thought binary search might be an easy win. I didn't see any

Re: [Intel-gfx] [PATCH 3/3] drm/i915: Track OACONTROL register enable/disable during parsing

2014-03-27 Thread Volkin, Bradley D
On Thu, Mar 27, 2014 at 02:58:01PM -0700, Kenneth Graunke wrote: On 03/27/2014 11:43 AM, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com There is some thought that the data from the performance counters enabled via OACONTROL should only be available to the

Re: [Intel-gfx] [PATCH] drm/i915: Add OACONTROL to the command parser register whitelist.

2014-03-26 Thread Volkin, Bradley D
On Tue, Mar 25, 2014 at 11:21:23PM -0700, Daniel Vetter wrote: On Tue, Mar 25, 2014 at 10:52:03PM -0700, Kenneth Graunke wrote: Mesa needs to be able to write OACONTROL in order to expose the Observability Architecture's performance counters via OpenGL. Signed-off-by: Kenneth Graunke

Re: [Intel-gfx] [PATCH] drm/i915: Add OACONTROL to the command parser register whitelist.

2014-03-26 Thread Volkin, Bradley D
On Wed, Mar 26, 2014 at 10:37:44AM -0700, Kenneth Graunke wrote: On 03/26/2014 09:38 AM, Daniel Vetter wrote: On Wed, Mar 26, 2014 at 09:03:58AM -0700, Volkin, Bradley D wrote: On Tue, Mar 25, 2014 at 11:21:23PM -0700, Daniel Vetter wrote: On Tue, Mar 25, 2014 at 10:52:03PM -0700, Kenneth

Re: [Intel-gfx] [PATCH 00/13] Gen7 batch buffer command parser

2014-03-25 Thread Volkin, Bradley D
On Tue, Mar 25, 2014 at 06:15:36AM -0700, Daniel Vetter wrote: On Thu, Mar 20, 2014 at 04:43:05PM +0200, Jani Nikula wrote: Hi Bradley - Apologies for my procrastination with the review; I don't easily recall as tedious a review as the command and register tables. And I sure have

Re: [Intel-gfx] [PATCH 5/6] tests/gem_exec_parse: Test for batches w/o MI_BATCH_BUFFER_END

2014-03-25 Thread Volkin, Bradley D
On Tue, Mar 25, 2014 at 06:17:55AM -0700, Daniel Vetter wrote: On Thu, Jan 30, 2014 at 11:46:15AM +, Chris Wilson wrote: On Wed, Jan 29, 2014 at 10:10:47PM +, Chris Wilson wrote: On Wed, Jan 29, 2014 at 01:58:29PM -0800, bradley.d.vol...@intel.com wrote: From: Brad Volkin

Re: [Intel-gfx] [PATCH] drm/i915: Use the correct format string modifier for ptrdiff_t

2014-03-18 Thread Volkin, Bradley D
Thanks for fixing this Damien. Reviewed-by: Brad Volkin bradley.d.vol...@intel.com On Tue, Mar 18, 2014 at 05:43:08PM +, Damien Lespiau wrote: When compiling on 32bits, I have the following warning: drivers/gpu/drm/i915/i915_cmd_parser.c:405:4: warning: format ‘%ld’ expects argument of

Re: [Intel-gfx] [PATCH 00/13] Gen7 batch buffer command parser

2014-03-12 Thread Volkin, Bradley D
On Tue, Mar 11, 2014 at 05:41:06AM -0700, Jani Nikula wrote: Hi Bradley - I've now rather meticulously reviewed what *is* in the command and register tables, and didn't spot any obvious errors. Thanks Jani! I know it's a huge pain, so I appreciate you taking the time for it. There is

Re: [Intel-gfx] [PATCH 1/2] drm/i915: Process page flags once rather than per pwrite/pread

2014-03-07 Thread Volkin, Bradley D
Reviewed-by: Brad Volkin bradley.d.vol...@intel.com On Fri, Mar 07, 2014 at 12:30:36AM -0800, Chris Wilson wrote: We used to lock individual pages inside the buffer object and so needed to update the page flags every time. However, we now pin the pages into the object for the duration of the

Re: [Intel-gfx] [PATCH 10/13] drm/i915: Enable PPGTT command parser checks

2014-03-06 Thread Volkin, Bradley D
On Thu, Mar 06, 2014 at 05:17:59AM -0800, Jani Nikula wrote: On Tue, 18 Feb 2014, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol...@intel.com Various commands that access memory have a bit to determine whether the graphics address specified in the command should use the

Re: [Intel-gfx] [PATCH 10/13] drm/i915: Enable PPGTT command parser checks

2014-03-06 Thread Volkin, Bradley D
On Thu, Mar 06, 2014 at 01:58:09PM -0800, Daniel Vetter wrote: On Thu, Mar 06, 2014 at 01:32:48PM -0800, Volkin, Bradley D wrote: On Thu, Mar 06, 2014 at 05:17:59AM -0800, Jani Nikula wrote: On Tue, 18 Feb 2014, bradley.d.vol...@intel.com wrote: From: Brad Volkin bradley.d.vol

Re: [Intel-gfx] [PATCH 00/13] Gen7 batch buffer command parser

2014-03-05 Thread Volkin, Bradley D
On Wed, Mar 05, 2014 at 09:14:38AM -0800, Daniel Vetter wrote: On Wed, Mar 05, 2014 at 08:59:56AM -0800, Volkin, Bradley D wrote: On Wed, Mar 05, 2014 at 02:46:35AM -0800, Daniel Vetter wrote: On Tue, Feb 18, 2014 at 10:15:44AM -0800, bradley.d.vol...@intel.com wrote: From: Brad

Re: [Intel-gfx] [PATCH 00/13] Gen7 batch buffer command parser

2014-03-04 Thread Volkin, Bradley D
Daniel, Jani, I think I managed to send this while you were both out and I'm sure it got buried. Can you take a look? I think this rev addresses all of the current comments. Thanks, Brad On Tue, Feb 18, 2014 at 10:15:44AM -0800, Volkin, Bradley D wrote: From: Brad Volkin bradley.d.vol

Re: [Intel-gfx] [PATCH 02/13] drm/i915: Implement command buffer parsing logic

2014-02-11 Thread Volkin, Bradley D
On Fri, Feb 07, 2014 at 06:45:48AM -0800, Daniel Vetter wrote: On Fri, Feb 07, 2014 at 03:58:46PM +0200, Jani Nikula wrote: On Wed, 29 Jan 2014, bradley.d.vol...@intel.com wrote: +static int valid_reg(const u32 *table, int count, u32 addr) +{ + if (table count != 0) { + int

  1   2   >