1. 02 7月, 2018 2 次提交
    • X
      drm/i915/gvt: changed DDI mode emulation type · a4cae23c
      Xiaolin Zhang 提交于
      changed gvt display transcode DDI mode from DP_SST to
      DVI to address below calltrace issue during guest booting
      up which is caused by zero dotclock initial value with DP_SST
      mode. transcode DVI mode emulation also align with native with DP
      connection.
      
      [drm:drm_calc_timestamping_constants]
      ERROR crtc 41: Can't calculate constants, dotclock = 0!
      
      WARNING: at drivers/gpu/drm/drm_vblank.c:620
      drm_calc_vbltimestamp_from_scanoutpos
      
      Call Trace:
      ? drm_calc_timestamping_constants+0x144/0x150 [drm]
      drm_get_last_vbltimestamp+0x54/0x90 [drm]
      drm_reset_vblank_timestamp+0x59/0xd0 [drm]
      drm_crtc_vblank_on+0x7b/0xd0 [drm]
      intel_modeset_setup_hw_state+0xb67/0xfd0 [i915]
      ? gen2_read32+0x110/0x110 [i915]
      ? drm_modeset_lock+0x30/0xa0 [drm]
      intel_modeset_init+0x794/0x19d0 [i915]
      ? intel_setup_gmbus+0x232/0x2e0 [i915]
      i915_driver_load+0xb4a/0xf40 [i915]
      Signed-off-by: NXiaolin Zhang <xiaolin.zhang@intel.com>
      Signed-off-by: NZhenyu Wang <zhenyuw@linux.intel.com>
      a4cae23c
    • Z
      drm/i915/gvt: fix a bug of partially write ggtt enties · 510fe10b
      Zhao Yan 提交于
      when guest writes ggtt entries, it could write 8 bytes a time if
      gtt_entry_size is 8. But, qemu could split the 8 bytes into 2 consecutive
      4-byte writes.
      
      If each 4-byte partial write could trigger a host ggtt write, it is very
      possible that a wrong combination is written to the host ggtt. E.g.
      the higher 4 bytes is the old value, but the lower 4 bytes is the new
      value, and this 8-byte combination is wrong but written to the ggtt, thus
      causing bugs.
      
      To handle this condition, we just record the first 4-byte write, then wait
      until the second 4-byte write comes and write the combined 64-bit data to
      host ggtt table.
      
      To save memory space and to spot partial write as early as possible, we
      don't keep this information for every ggtt index. Instread, we just record
      the last ggtt write position, and assume the two 4-byte writes come in
      consecutively for each vgpu.
      
      This assumption is right based on the characteristic of ggtt entry which
      stores memory address. When gtt_entry_size is 8, the guest memory physical
      address should be 64 bits, so any sane guest driver should write 8-byte
      long data at a time, so 2 consecutive 4-byte writes at the same ggtt index
      should be trapped in gvt.
      
      v2:
      when incomplete ggtt entry write is located, e.g.
          1. guest only writes 4 bytes at a ggtt offset and no long writes the
             rest 4 bytes.
          2. guest writes 4 bytes of a ggtt offset, then write at other ggtt
             offsets, then return back to write the left 4 bytes of the first
             ggtt offset.
      add error handling logic to remap host entry to scratch page, and mark
      guest virtual ggtt entry as not present.  (zhenyu wang)
      Signed-off-by: NZhao Yan <yan.y.zhao@intel.com>
      Signed-off-by: NZhenyu Wang <zhenyuw@linux.intel.com>
      510fe10b
  2. 19 6月, 2018 8 次提交
  3. 16 6月, 2018 14 次提交
  4. 15 6月, 2018 11 次提交
  5. 14 6月, 2018 5 次提交
    • C
      nvme: remove nvme_reinit_tagset · 14dfa400
      Christoph Hellwig 提交于
      Unused now that all transports stopped using it.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NJens Axboe <axboe@kernel.dk>
      14dfa400
    • J
      nvme-fc: fix nulling of queue data on reconnect · 3e493c00
      James Smart 提交于
      The reconnect path is calling the init routines to clear a queue
      structure. But the queue structure has state that perhaps needs
      to persist as long as the controller is live.
      
      Remove the nvme_fc_init_queue() calls on reconnect.
      The nvme_fc_free_queue() calls will clear state bits and reset
      any relevant queue state for a new connection.
      Signed-off-by: NJames Smart <james.smart@broadcom.com>
      Reviewed-by: NHannes Reinecke <hare@suse.com>
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      3e493c00
    • J
      nvme-fc: remove reinit_request routine · 587331f7
      James Smart 提交于
      The reinit_request routine is not necessary. Remove support for the
      op callback.
      
      As all that nvme_reinit_tagset() does is itterate and call the
      reinit routine, it too has no purpose. Remove the call.
      Signed-off-by: NJames Smart <james.smart@broadcom.com>
      Reviewed-by: NHannes Reinecke <hare@suse.com>
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      587331f7
    • K
      drm/amd/powerplay: Set higher SCLK&MCLK frequency than dpm7 in OD (v2) · 5c16f36f
      Kenneth Feng 提交于
      Fix the issue that SCLK&MCLK can't be set higher than dpm7 when
      OD is enabled in SMU7.
      
      v2: fix warning (Alex)
      Signed-off-by: NKenneth Feng <kenneth.feng@amd.com>
      Acked-by: Rex Zhu<rezhu@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      5c16f36f
    • J
      nvme-fc: change controllers first connect to use reconnect path · 4c984154
      James Smart 提交于
      Current code follows the framework that has been in the transports
      from the beginning where initial link-side controller connect occurs
      as part of "creating the controller". Thus that first connect fully
      talks to the controller and obtains values that can then be used in
      for blk-mq setup, etc. It also means that everything about the
      controller is fully know before the "create controller" call returns.
      
      This has several weaknesses:
      - The initial create_ctrl call made by the cli will block for a long
        time as wire transactions are performed synchronously. This delay
        becomes longer if errors occur or connectivity is lost and retries
        need to be performed.
      - Code wise, it means there is a separate connect path for initial
        controller connect vs the (same) steps used in the reconnect path.
      - And as there's separate paths, it means there's separate error
        handling and retry logic. It also plays havoc with the NEW state
        (should transition out of it after successful initial connect) vs
        the RESETTING and CONNECTING (reconnect) states that want to be
        transitioned to on error.
      - As there's separate paths, to recover from errors and disruptions,
        it requires separate recovery/retry paths as well and can severely
        convolute the controller state.
      
      This patch reworks the fc transport to use the same connect paths
      for the initial connection as it uses for reconnect. This makes a
      single path for error recovery and handling.
      
      This patch:
      - Removes the driving of the initial connect and replaces it with
        a state transition to CONNECTING and initiating the reconnect
        thread. A dummy state transition of RESETTING had to be traversed
        as a direct transtion of NEW->CONNECTING is not allowed. Given
        that the controller is "new", the RESETTING transition is a simple
        no-op. Once in the reconnecting thread, the normal behaviors of
        ctrl_loss_tmo (max_retries * connect_delay) and dev_loss_tmo will
        apply before the controller is torn down.
      - Only if the state transitions couldn't be traversed and the
        reconnect thread not scheduled, will the controller be torn down
        while in create_ctrl.
      - The prior code used the controller state of NEW to indicate
        whether request queues had been initialized or not. For the admin
        queue, the request queue is always created, so there's no need to
        check a state. For IO queues, change to tracking whether a successful
        io request queue create has occurred (e.g. 1st successful connect).
      - The initial controller id is initialized to the dynamic controller
        id used in the initial connect message. It will be overwritten by
        the real controller id once the controller is connected on the wire.
      Signed-off-by: NJames Smart <james.smart@broadcom.com>
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      4c984154