Skip to content
Snippets Groups Projects
  1. Oct 25, 2018
  2. Oct 24, 2018
  3. Oct 23, 2018
  4. Oct 22, 2018
  5. Oct 20, 2018
  6. Oct 18, 2018
    • Chunming Zhou's avatar
      drm: add syncobj timeline support v9 · 48197bc5
      Chunming Zhou authored
      
      This patch is for VK_KHR_timeline_semaphore extension, semaphore is called syncobj in kernel side:
      This extension introduces a new type of syncobj that has an integer payload
      identifying a point in a timeline. Such timeline syncobjs support the
      following operations:
         * CPU query - A host operation that allows querying the payload of the
           timeline syncobj.
         * CPU wait - A host operation that allows a blocking wait for a
           timeline syncobj to reach a specified value.
         * Device wait - A device operation that allows waiting for a
           timeline syncobj to reach a specified value.
         * Device signal - A device operation that allows advancing the
           timeline syncobj to a specified value.
      
      v1:
      Since it's a timeline, that means the front time point(PT) always is signaled before the late PT.
      a. signal PT design:
      Signal PT fence N depends on PT[N-1] fence and signal opertion fence, when PT[N] fence is signaled,
      the timeline will increase to value of PT[N].
      b. wait PT design:
      Wait PT fence is signaled by reaching timeline point value, when timeline is increasing, will compare
      wait PTs value with new timeline value, if PT value is lower than timeline value, then wait PT will be
      signaled, otherwise keep in list. syncobj wait operation can wait on any point of timeline,
      so need a RB tree to order them. And wait PT could ahead of signal PT, we need a sumission fence to
      perform that.
      
      v2:
      1. remove unused DRM_SYNCOBJ_CREATE_TYPE_NORMAL. (Christian)
      2. move unexposed denitions to .c file. (Daniel Vetter)
      3. split up the change to drm_syncobj_find_fence() in a separate patch. (Christian)
      4. split up the change to drm_syncobj_replace_fence() in a separate patch.
      5. drop the submission_fence implementation and instead use wait_event() for that. (Christian)
      6. WARN_ON(point != 0) for NORMAL type syncobj case. (Daniel Vetter)
      
      v3:
      1. replace normal syncobj with timeline implemenation. (Vetter and Christian)
          a. normal syncobj signal op will create a signal PT to tail of signal pt list.
          b. normal syncobj wait op will create a wait pt with last signal point, and this wait PT is only signaled by related signal point PT.
      2. many bug fix and clean up
      3. stub fence moving is moved to other patch.
      
      v4:
      1. fix RB tree loop with while(node=rb_first(...)). (Christian)
      2. fix syncobj lifecycle. (Christian)
      3. only enable_signaling when there is wait_pt. (Christian)
      4. fix timeline path issues.
      5. write a timeline test in libdrm
      
      v5: (Christian)
      1. semaphore is called syncobj in kernel side.
      2. don't need 'timeline' characters in some function name.
      3. keep syncobj cb.
      
      v6: (Christian)
      1. merge syncobj_timeline to syncobj structure.
      2. simplify some check sentences.
      3. some misc change.
      4. fix CTS failed issue.
      
      v7: (Christian)
      1. error handling when creating signal pt.
      2. remove timeline naming in func.
      3. export flags in find_fence.
      4. allow reset timeline.
      
      v8:
      1. use wait_event_interruptible without timeout
      2. rename _TYPE_INDIVIDUAL to _TYPE_BINARY
      
      v9:
      1. rename signal_pt->base to signal_pt->fence_array to avoid misleading
      2. improve kerneldoc
      
      individual syncobj is tested by ./deqp-vk -n dEQP-VK*semaphore*
      timeline syncobj is tested by ./amdgpu_test -s 9
      
      Signed-off-by: default avatarChunming Zhou <david1.zhou@amd.com>
      Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
      Cc: Christian Konig <christian.koenig@amd.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: Daniel Rakos <Daniel.Rakos@amd.com>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
      Cc: Jason Ekstrand <jason@jlekstrand.net>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: https://patchwork.freedesktop.org/patch/257258/
      48197bc5
  7. Oct 16, 2018
  8. Oct 15, 2018
  9. Oct 10, 2018
  10. Oct 05, 2018
  11. Oct 03, 2018
  12. Oct 01, 2018
  13. Sep 28, 2018
  14. Sep 27, 2018
  15. Sep 25, 2018
  16. Sep 24, 2018
    • Eric Dumazet's avatar
      netpoll: make ndo_poll_controller() optional · ac3d9dd0
      Eric Dumazet authored
      
      As diagnosed by Song Liu, ndo_poll_controller() can
      be very dangerous on loaded hosts, since the cpu
      calling ndo_poll_controller() might steal all NAPI
      contexts (for all RX/TX queues of the NIC). This capture
      can last for unlimited amount of time, since one
      cpu is generally not able to drain all the queues under load.
      
      It seems that all networking drivers that do use NAPI
      for their TX completions, should not provide a ndo_poll_controller().
      
      NAPI drivers have netpoll support already handled
      in core networking stack, since netpoll_poll_dev()
      uses poll_napi(dev) to iterate through registered
      NAPI contexts for a device.
      
      This patch allows netpoll_poll_dev() to process NAPI
      contexts even for drivers not providing ndo_poll_controller(),
      allowing for following patches in NAPI drivers.
      
      Also we export netpoll_poll_dev() so that it can be called
      by bonding/team drivers in following patches.
      
      Reported-by: default avatarSong Liu <songliubraving@fb.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Tested-by: default avatarSong Liu <songliubraving@fb.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ac3d9dd0
  17. Sep 22, 2018
    • Omar Sandoval's avatar
      block: use nanosecond resolution for iostat · b57e99b4
      Omar Sandoval authored
      
      Klaus Kusche reported that the I/O busy time in /proc/diskstats was not
      updating properly on 4.18. This is because we started using ktime to
      track elapsed time, and we convert nanoseconds to jiffies when we update
      the partition counter. However, this gets rounded down, so any I/Os that
      take less than a jiffy are not accounted for. Previously in this case,
      the value of jiffies would sometimes increment while we were doing I/O,
      so at least some I/Os were accounted for.
      
      Let's convert the stats to use nanoseconds internally. We still report
      milliseconds as before, now more accurately than ever. The value is
      still truncated to 32 bits for backwards compatibility.
      
      Fixes: 522a7775 ("block: consolidate struct request timestamp fields")
      Cc: stable@vger.kernel.org
      Reported-by: default avatarKlaus Kusche <klaus.kusche@computerix.info>
      Signed-off-by: default avatarOmar Sandoval <osandov@fb.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      b57e99b4
  18. Sep 20, 2018
Loading