• Ben Widawsky's avatar
    drm/i915/bdw: implement semaphore signal · 3e78998a
    Ben Widawsky authored
    Semaphore signalling works similarly to previous GENs with the exception
    that the per ring mailboxes no longer exist. Instead you must define
    your own space, somewhere in the GTT.
    
    The comments in the code define the layout I've opted for, which should
    be fairly future proof. Ie. I tried to define offsets in abstract terms
    (NUM_RINGS, seqno size, etc).
    
    NOTE: If one wanted to move this to the HWSP they could. I've decided
    one 4k object would be easier to deal with, and provide potential wins
    with cache locality, but that's all speculative.
    
    v2: Update the macro to not need the other ring's ring->id (Chris)
    Update the comment to use the correct formula (Chris)
    
    v3: Move the macros the ringbuffer.h to prevent churn in next patch
    (Ville)
    
    v4: Fixed compilation rebase conflict
    commit 1ec9e26d
    Author: Daniel Vetter <daniel.vetter@ffwll.ch>
    Date:   Fri Feb 14 14:01:11 2014 +0100
    
        drm/i915: Consolidate binding parameters into flags
    
    v5: VCS2 rebase
    Replace hweight_long with hweight32
    
    v6 (Rodrigo): * Add missed VC2 gen8 ring signal init
       	      * fixing conflicst on rebase
        	      * minor fixes on address table
    	      * remove WARN_ON
    Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    [danvet: s/BUG_ON/WARN_ON/]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    3e78998a
intel_ringbuffer.c 67.5 KB