1. 08 12月, 2017 1 次提交
  2. 06 12月, 2017 1 次提交
  3. 23 11月, 2017 1 次提交
  4. 21 11月, 2017 1 次提交
  5. 16 11月, 2017 1 次提交
  6. 14 11月, 2017 1 次提交
  7. 10 11月, 2017 1 次提交
  8. 09 11月, 2017 1 次提交
  9. 07 11月, 2017 1 次提交
    • C
      drm/i915: Deconstruct struct sgt_dma initialiser · 5684514b
      Chris Wilson 提交于
      gcc-4.4 complains about:
      
      	struct sgt_dma iter = {
      		.sg = vma->pages->sgl,
      		.dma = sg_dma_address(iter.sg),
      		.max = iter.dma + iter.sg->length,
      	};
      
      drivers/gpu/drm/i915/i915_gem_gtt.c: In function ‘gen8_ppgtt_insert_4lvl’:
      drivers/gpu/drm/i915/i915_gem_gtt.c:938: error: ‘iter.sg’ is used uninitialized in this function
      drivers/gpu/drm/i915/i915_gem_gtt.c:939: error: ‘iter.dma’ is used uninitialized in this function
      
      and worse generates invalid code that triggers a GPF:
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
      IP: gen8_ppgtt_insert_4lvl+0x1b/0x1e0 [i915]
      PGD 0
      Oops: 0000 [#1] SMP
      Modules linked in: snd_aloop nf_conntrack_ipv6 nf_defrag_ipv6 nf_log_ipv6 ip6table_filter ip6_tables ctr ccm xt_state nf_log_ipv4
      nf_log_common xt_LOG xt_limit xt_recent xt_owner xt_addrtype iptable_filter ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat
      nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack libcrc32c ip_tables dm_mod vhost_net macvtap macvlan vhost tun kvm_intel kvm
      irqbypass uas usb_storage hid_multitouch btusb btrtl uvcvideo videobuf2_v4l2 videobuf2_core videodev media videobuf2_vmalloc videobuf2_memops
      sg ppdev dell_wmi sparse_keymap mei_wdt sd_mod iTCO_wdt iTCO_vendor_support rtsx_pci_ms memstick rtsx_pci_sdmmc mmc_core dell_smm_hwmon hwmon
      dell_laptop dell_smbios dcdbas joydev input_leds hci_uart btintel btqca btbcm bluetooth parport_pc parport i2c_hid
        intel_lpss_acpi intel_lpss pcspkr wmi int3400_thermal acpi_thermal_rel dell_rbtn mei_me mei snd_hda_codec_hdmi snd_hda_codec_realtek
      snd_hda_codec_generic ahci libahci acpi_pad xhci_pci xhci_hcd snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep snd_seq snd_seq_device
      snd_pcm snd_timer snd soundcore int3403_thermal arc4 e1000e ptp pps_core i2c_i801 iwlmvm mac80211 rtsx_pci iwlwifi cfg80211 rfkill
      intel_pch_thermal processor_thermal_device int340x_thermal_zone intel_soc_dts_iosf i915 video fjes
      CPU: 2 PID: 2408 Comm: X Not tainted 4.10.0-rc5+ #1
      Hardware name: Dell Inc. Latitude E7470/0T6HHJ, BIOS 1.11.3 11/09/2016
      task: ffff880219fe4740 task.stack: ffffc90005f98000
      RIP: 0010:gen8_ppgtt_insert_4lvl+0x1b/0x1e0 [i915]
      RSP: 0018:ffffc90005f9b8c8 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffff8802167d8000 RCX: 0000000000000001
      RDX: 00000000ffff7000 RSI: ffff880219f94140 RDI: ffff880228444000
      RBP: ffffc90005f9b948 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000080
      R13: 0000000000000001 R14: ffffc90005f9bcd7 R15: ffff88020c9a83c0
      FS:  00007fb53e1ee920(0000) GS:ffff88024dd00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000010 CR3: 000000022ef95000 CR4: 00000000003406e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
        ppgtt_bind_vma+0x40/0x50 [i915]
        i915_vma_bind+0xcb/0x1c0 [i915]
        __i915_vma_do_pin+0x6e/0xd0 [i915]
        i915_gem_execbuffer_reserve_vma+0x162/0x1d0 [i915]
        i915_gem_execbuffer_reserve+0x4fc/0x510 [i915]
        ? __kmalloc+0x134/0x250
        ? i915_gem_wait_for_error+0x25/0x100 [i915]
        ? i915_gem_wait_for_error+0x25/0x100 [i915]
        i915_gem_do_execbuffer+0x2df/0xa00 [i915]
        ? drm_malloc_gfp.clone.0+0x42/0x80 [i915]
        ? path_put+0x22/0x30
        ? __check_object_size+0x62/0x1f0
        ? terminate_walk+0x44/0x90
        i915_gem_execbuffer2+0x95/0x1e0 [i915]
        drm_ioctl+0x243/0x490
        ? handle_pte_fault+0x1d7/0x220
        ? i915_gem_do_execbuffer+0xa00/0xa00 [i915]
        ? handle_mm_fault+0x10d/0x2a0
        vfs_ioctl+0x18/0x30
        do_vfs_ioctl+0x14b/0x3f0
        SyS_ioctl+0x92/0xa0
        entry_SYSCALL_64_fastpath+0x1a/0xa9
      RIP: 0033:0x7fb53b4fcb77
      RSP: 002b:00007ffe0c572898 EFLAGS: 00003246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 00007fb53e17c038 RCX: 00007fb53b4fcb77
      RDX: 00007ffe0c572900 RSI: 0000000040406469 RDI: 000000000000000b
      RBP: 00007fb5376d67e0 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000028 R11: 0000000000003246 R12: 0000000000000000
      R13: 0000000000000000 R14: 000055eecb314d00 R15: 000055eecb315460
      Code: 0f 84 5d ff ff ff eb a2 0f 1f 84 00 00 00 00 00 55 48 89 e5 41 57 41 56 41 55 41 54 53 48 83 ec 58 0f 1f 44 00 00 31 c0 89 4d b0 <4c>
      8b 60 10 44 8b 70 0c 48 89 d0 4c 8b 2e 48 c1 e8 27 25 ff 01
      RIP: gen8_ppgtt_insert_4lvl+0x1b/0x1e0 [i915] RSP: ffffc90005f9b8c8
      CR2: 0000000000000010
      
      Recent gccs, such as 4.9, 6.3 or 7.2, do not generate the warning nor do
      they explode on use. If we manually create the struct using locals from
      the stack, this should eliminate this issue, and does not alter code
      generation with gcc-7.2.
      
      Fixes: 894ccebe ("drm/i915: Micro-optimise gen8_ppgtt_insert_entries()")
      Reported-by: NKelly French <kfrench@federalhill.net>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Kelly French <kfrench@federalhill.net>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171106211128.12538-1-chris@chris-wilson.co.ukTested-by: NKelly French <kfrench@federalhill.net>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      5684514b
  10. 01 11月, 2017 1 次提交
  11. 25 10月, 2017 1 次提交
  12. 17 10月, 2017 1 次提交
  13. 12 10月, 2017 1 次提交
  14. 11 10月, 2017 1 次提交
  15. 07 10月, 2017 7 次提交
  16. 29 9月, 2017 1 次提交
  17. 22 9月, 2017 1 次提交
  18. 18 9月, 2017 1 次提交
  19. 14 9月, 2017 3 次提交
    • Z
      drm/i915: Remove the "INDEX" suffix from PPAT marcos · c095b97c
      Zhi Wang 提交于
      Remove the "INDEX" suffix from PPAT marcos as they are bits actually, not
      indexes.
      Suggested-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NZhi Wang <zhi.a.wang@intel.com>
      Cc: Ben Widawsky <benjamin.widawsky@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1505392783-4084-2-git-send-email-zhi.a.wang@intel.com
      c095b97c
    • Z
      drm/i915: Introduce private PAT management · 4395890a
      Zhi Wang 提交于
      The private PAT management is to support PPAT entry manipulation. Two
      APIs are introduced for dynamically managing PPAT entries: intel_ppat_get
      and intel_ppat_put.
      
      intel_ppat_get will search for an existing PPAT entry which perfectly
      matches the required PPAT value. If not, it will try to allocate a new
      entry if there is any available PPAT indexs, or return a partially
      matched PPAT entry if there is no available PPAT indexes.
      
      intel_ppat_put will put back the PPAT entry which comes from
      intel_ppat_get. If it's dynamically allocated, the reference count will
      be decreased. If the reference count turns into zero, the PPAT index is
      freed again.
      
      Besides, another two callbacks are introduced to support the private PAT
      management framework. One is ppat->update_hw(), which writes the PPAT
      configurations in ppat->entries into HW. Another one is ppat->match, which
      will return a score to show how two PPAT values match with each other.
      
      v17:
      
      - Refine the comparision of score of BDW. (Joonas)
      
      v16:
      
      - Fix a bug in PPAT match function of BDW. (Joonas)
      
      v15:
      
      - Refine some code flow. (Joonas)
      
      v12:
      
      - Fix a problem "not returning the entry of best score". (Zhenyu)
      
      v7:
      
      - Keep all the register writes unchanged in this patch. (Joonas)
      
      v6:
      
      - Address all comments from Chris:
      http://www.spinics.net/lists/intel-gfx/msg136850.html
      
      - Address all comments from Joonas:
      http://www.spinics.net/lists/intel-gfx/msg136845.html
      
      v5:
      
      - Add check and warnnings for those platforms which don't have PPAT.
      
      v3:
      
      - Introduce dirty bitmap for PPAT registers. (Chris)
      - Change the name of the pointer "dev_priv" to "i915". (Chris)
      - intel_ppat_{get, put} returns/takes a const intel_ppat_entry *. (Chris)
      
      v2:
      
      - API re-design. (Chris)
      Signed-off-by: NZhi Wang <zhi.a.wang@intel.com>
      Cc: Ben Widawsky <benjamin.widawsky@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> #v7
      Reviewed-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      [Joonas: Use BIT() in the enum in bdw_private_pat_match]
      Signed-off-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1505392783-4084-1-git-send-email-zhi.a.wang@intel.com
      4395890a
    • M
      mm: treewide: remove GFP_TEMPORARY allocation flag · 0ee931c4
      Michal Hocko 提交于
      GFP_TEMPORARY was introduced by commit e12ba74d ("Group short-lived
      and reclaimable kernel allocations") along with __GFP_RECLAIMABLE.  It's
      primary motivation was to allow users to tell that an allocation is
      short lived and so the allocator can try to place such allocations close
      together and prevent long term fragmentation.  As much as this sounds
      like a reasonable semantic it becomes much less clear when to use the
      highlevel GFP_TEMPORARY allocation flag.  How long is temporary? Can the
      context holding that memory sleep? Can it take locks? It seems there is
      no good answer for those questions.
      
      The current implementation of GFP_TEMPORARY is basically GFP_KERNEL |
      __GFP_RECLAIMABLE which in itself is tricky because basically none of
      the existing caller provide a way to reclaim the allocated memory.  So
      this is rather misleading and hard to evaluate for any benefits.
      
      I have checked some random users and none of them has added the flag
      with a specific justification.  I suspect most of them just copied from
      other existing users and others just thought it might be a good idea to
      use without any measuring.  This suggests that GFP_TEMPORARY just
      motivates for cargo cult usage without any reasoning.
      
      I believe that our gfp flags are quite complex already and especially
      those with highlevel semantic should be clearly defined to prevent from
      confusion and abuse.  Therefore I propose dropping GFP_TEMPORARY and
      replace all existing users to simply use GFP_KERNEL.  Please note that
      SLAB users with shrinkers will still get __GFP_RECLAIMABLE heuristic and
      so they will be placed properly for memory fragmentation prevention.
      
      I can see reasons we might want some gfp flag to reflect shorterm
      allocations but I propose starting from a clear semantic definition and
      only then add users with proper justification.
      
      This was been brought up before LSF this year by Matthew [1] and it
      turned out that GFP_TEMPORARY really doesn't have a clear semantic.  It
      seems to be a heuristic without any measured advantage for most (if not
      all) its current users.  The follow up discussion has revealed that
      opinions on what might be temporary allocation differ a lot between
      developers.  So rather than trying to tweak existing users into a
      semantic which they haven't expected I propose to simply remove the flag
      and start from scratch if we really need a semantic for short term
      allocations.
      
      [1] http://lkml.kernel.org/r/20170118054945.GD18349@bombadil.infradead.org
      
      [akpm@linux-foundation.org: fix typo]
      [akpm@linux-foundation.org: coding-style fixes]
      [sfr@canb.auug.org.au: drm/i915: fix up]
        Link: http://lkml.kernel.org/r/20170816144703.378d4f4d@canb.auug.org.au
      Link: http://lkml.kernel.org/r/20170728091904.14627-1-mhocko@kernel.orgSigned-off-by: NMichal Hocko <mhocko@suse.com>
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Acked-by: NMel Gorman <mgorman@suse.de>
      Acked-by: NVlastimil Babka <vbabka@suse.cz>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Neil Brown <neilb@suse.de>
      Cc: "Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0ee931c4
  20. 12 9月, 2017 1 次提交
  21. 09 9月, 2017 1 次提交
  22. 07 9月, 2017 1 次提交
    • C
      drm/i915: wire up shrinkctl->nr_scanned · 912d572d
      Chris Wilson 提交于
      shrink_slab() allows us to report back the number of objects we
      successfully scanned (out of the target shrinkctl->nr_to_scan).  As
      report the number of pages owned by each GEM object as a separate item
      to the shrinker, we cannot precisely control the number of shrinker
      objects we scan on each pass; and indeed may free more than requested.
      If we fail to tell the shrinker about the number of objects we process,
      it will continue to hold a grudge against us as any objects left
      unscanned are added to the next reclaim -- and so we will keep on
      "unfairly" shrinking our own slab in comparison to other slabs.
      
      Link: http://lkml.kernel.org/r/20170822135325.9191-2-chris@chris-wilson.co.ukSigned-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Vlastimil Babka <vbabka@suse.cz>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Shaohua Li <shli@fb.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      912d572d
  23. 06 9月, 2017 1 次提交
  24. 02 9月, 2017 1 次提交
  25. 01 9月, 2017 1 次提交
  26. 23 8月, 2017 1 次提交
  27. 19 8月, 2017 1 次提交
  28. 16 8月, 2017 1 次提交
  29. 15 8月, 2017 2 次提交
    • T
      drm/i915: Enable guest i915 full ppgtt functionality · 8a4ab66f
      Tina Zhang 提交于
      Enable the guest i915 full ppgtt functionality when host can provide this
      capability. vgt_caps is introduced to guest i915 driver to get the vgpu
      capabilities from the device model. VGT_CPAS_FULL_PPGTT is one of the
      capabilities type to let guest i915 dirver know that the guest i915 full
      ppgtt is supported by device model.
      
      Notice that the minor version of pvinfo isn't bumped because of this
      vgt_caps introduction, due to older guest would be broken by simply
      increasing the pvinfo version. Although the pvinfo minor version doesn't
      increase, the compatibility won't be blocked. The compatibility is ensured
      by checking the value of caps field in pvinfo. Zero means no full ppgtt
      support and BIT(2) means this feature is provided.
      
      Changes since v1:
      - Use u32 instead of uint32_t (Joonas)
      - Move VGT_CAPS_FULL_PPGTT introduction to this patch and use #define
        instead of enum (Joonas)
      - Rewrite the vgpu full ppgtt capability checking logic. (Joonas)
      - Some coding style refine. (Joonas)
      
      Changes since v2:
      - Divide the whole patch set into two separate patch series, with one
        patch in i915 side to check guest i915 full ppgtt capability and enable
        it when this capability is supported by the device model, and the other
        one in gvt side which fixs the blocking issue and enables the device
        model to provide the capability to guest. And this patch focuses on guest
        i915 side. (Joonas)
      - Change the title from "introduce vgt_caps to pvinfo" to
        "Enable guest i915 full ppgtt functionality". (Tina)
      
      Change since v3:
      - Add some comments about pvinfo caps and version. (Joonas)
      
      Change since v4:
      - Tested by Tina Zhang.
      
      Change since v5:
      - Add limitation about supporting 32bit full ppgtt.
      
      Change since v6:
      - Change the fallback to 48bit full ppgtt if i915.ppgtt_enable=2. (Zhenyu)
      
      Change in v9:
      - Remove the fixme comment due to no plan for 32bit full ppgtt
        support. (Zhenyu)
      - Reorder the patch-set to fix compiling issue with git-bisect. (Zhenyu)
      - Add print log when forcing guest 48bit full ppgtt. (Zhenyu)
      
      v10:
      - Update against Joonas's has_full_ppgtt and has_full_48bit_ppgtt disconnect
        change. (Zhenyu)
      
      Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> # in v2
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Tina Zhang <tina.zhang@intel.com>
      Signed-off-by: NTina Zhang <tina.zhang@intel.com>
      Signed-off-by: NZhenyu Wang <zhenyuw@linux.intel.com>
      8a4ab66f
    • J
      drm/i915: Disconnect 32 and 48 bit ppGTT support · 4fc05063
      Joonas Lahtinen 提交于
      Configurations like virtualized environments may support only 48 bit
      ppGTT without supporting 32 bit ppGTT. Support this by disconnecting
      the relationship of the two feature bits.
      
      Cc: Tina Zhang <tina.zhang@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Zhi Wang <zhi.a.wang@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Signed-off-by: NZhenyu Wang <zhenyuw@linux.intel.com>
      4fc05063
  30. 07 7月, 2017 1 次提交
  31. 22 6月, 2017 1 次提交