1. 18 1月, 2012 2 次提交
  2. 04 1月, 2012 2 次提交
    • E
      drm/i915: Add support for resetting the SO write pointers on gen7. · ae662d31
      Eric Anholt 提交于
      These registers are automatically incremented by the hardware during
      transform feedback to track where the next streamed vertex output
      should go.  Unlike the previous generation, which had a packet for
      setting the corresponding registers to a defined value, gen7 only has
      MI_LOAD_REGISTER_IMM to do so.  That's a secure packet (since it loads
      an arbitrary register), so we need to do it from the kernel, and it
      needs to be settable atomically with the batchbuffer execution so that
      two clients doing transform feedback don't stomp on each others'
      state.
      
      Instead of building a more complicated interface involcing setting the
      registers to a specific value, just set them to 0 when asked and
      userland can tweak its pointers accordingly.
      Signed-off-by: NEric Anholt <eric@anholt.net>
      Reviewed-by: NEugeni Dodonov <eugeni.dodonov@intel.com>
      Reviewed-by: NKenneth Graunke <kenneth@whitecape.org>
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      ae662d31
    • J
      drm/i915: add color key support v4 · 8ea30864
      Jesse Barnes 提交于
      Add new ioctls for getting and setting the current destination color
      key.  This allows for simple overlay display control by matching a color
      key value in the primary plane before blending the overlay on top.
      
      v2: remove unnecessary mutex acquire/release around reg accesses
      v3: add support for full color key management
      v4: fix copy & paste bug in snb_get_colorkey
          don't bother checking min/max values against docs as the docs are likely
          wrong (how could we handle 10bpc surface formats?)
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      8ea30864
  3. 17 12月, 2011 1 次提交
  4. 01 11月, 2011 1 次提交
  5. 21 10月, 2011 1 次提交
  6. 20 9月, 2011 1 次提交
  7. 23 7月, 2011 1 次提交
    • K
      drm/i915: Initialize RCS ring status page address in intel_render_ring_init_dri · f3234706
      Keith Packard 提交于
      Physically-addressed hardware status pages are initialized early in
      the driver load process by i915_init_phys_hws. For UMS environments,
      the ring structure is not initialized until the X server starts. At
      that point, the entire ring structure is re-initialized with all new
      values. Any values set in the ring structure (including
      ring->status_page.page_addr) will be lost when the ring is
      re-initialized.
      
      This patch moves the initialization of the status_page.page_addr value
      to intel_render_ring_init_dri.
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      Cc: stable@kernel.org
      f3234706
  8. 12 7月, 2011 1 次提交
    • K
      drm/i915: Clean up i915_driver_load failure path · a7b85d2a
      Keith Packard 提交于
      i915_driver_load adds a write-combining MTRR region for the GTT
      aperture to improve memory speeds through the aperture. If
      i915_driver_load fails after this, it would not have cleaned up the
      MTRR. This shouldn't cause any problems, except for consuming an MTRR
      register. Still, it's best to clean up completely in the failure path,
      which is easily done by calling mtrr_del if the mtrr was successfully
      allocated.
      
      i915_driver_load calls i915_gem_load which register
      i915_gem_inactive_shrink. If i915_driver_load fails after calling
      i915_gem_load, the shrinker will be left registered. When called, it
      will access freed memory and crash. The fix is to unregister the shrinker in the
      failure path using code duplicated from i915_driver_unload.
      
      i915_driver_load also has some incorrect gotos in the error cleanup
      paths:
      
       * After failing to initialize the GTT (which cannot happen, btw,
         intel_gtt_get returns a fixed (non-NULL) value), it tries to
         free the uninitialized WC IO mapping. Fixed this by changing the
         target from out_iomapfree to out_rmmap
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      Tested-by: NLin Ming <ming.m.lin@intel.com>
      a7b85d2a
  9. 09 7月, 2011 1 次提交
  10. 30 6月, 2011 1 次提交
  11. 28 6月, 2011 2 次提交
  12. 14 5月, 2011 3 次提交
  13. 11 5月, 2011 3 次提交
  14. 27 4月, 2011 1 次提交
  15. 13 4月, 2011 1 次提交
  16. 09 4月, 2011 1 次提交
  17. 02 3月, 2011 3 次提交
  18. 08 2月, 2011 1 次提交
  19. 07 2月, 2011 1 次提交
  20. 23 1月, 2011 1 次提交
    • C
      drm/i915: Recognise non-VGA display devices · 934f992c
      Chris Wilson 提交于
      Starting with SandyBridge (though possible with earlier hacked BIOSes),
      the BIOS may initialise the IGFX as secondary to a discrete GPU. Prior,
      it would simply disable the integrated GPU. So we adjust our PCI class
      mask to match any DISPLAY_CLASS device.
      
      In such a configuration, the IGFX is not a primary VGA controller and
      so should not take part in VGA arbitration, and the error return from
      vga_client_register() is expected.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: stable@kernel.org
      934f992c
  21. 20 1月, 2011 1 次提交
    • C
      drm/i915: Initialise ring vfuncs for old DRI paths · e8616b6c
      Chris Wilson 提交于
      We weren't setting up the vfunc table when initialising the old DRI
      ringbuffer, leading to such OOPSes as:
      
      BUG: unable to handle kernel NULL pointer dereference at (null)
      IP: [<(null)>] (null)
      PGD 10c441067 PUD 1185e5067 PMD 0
      Oops: 0010 [#1] PREEMPT SMP
      last sysfs file: /sys/class/dmi/id/chassis_asset_tag
      CPU 3
      Modules linked in: i915 drm_kms_helper drm fb fbdev i2c_algo_bit
      cfbcopyarea video backlight output cfbimgblt cfbfillrect autofs4 ipv6
      nfs lockd fscache nfs_acl auth_rpcgss sunrpc coretemp hwmon_vid mousedev
      usbhid hid option usb_wwan snd_hda_codec_via asus_atk0110 atl1e
      usbserial snd_hda_intel snd_hda_codec firmware_class snd_hwdep snd_pcm
      snd_seq snd_timer snd_seq_device processor parport_pc thermal snd
      thermal_sys parport 8250_pnp button rng_core rtc_cmos shpchp hwmon
      rtc_core ehci_hcd pci_hotplug uhci_hcd soundcore tpm_tis i2c_i801
      rtc_lib tpm serio_raw snd_page_alloc tpm_bios i2c_core usbcore psmouse
      intel_agp sg pcspkr sr_mod evdev cdrom ext3 jbd mbcache dm_mod sd_mod
      ata_piix libata scsi_mod unix
      Jan 18 15:49:29 lithui kernel:
      Pid: 3605, comm: Xorg Not tainted 2.6.36.2 #5 P5KPL-CM/System Product
      Name
      RIP: 0010:[<0000000000000000>]  [<(null)>] (null)
      RSP: 0018:ffff8801150d1d40  EFLAGS: 00010202
      RAX: 000000000001ffff RBX: ffff88011a011b00 RCX: 000000000001a704
      RDX: ffff880118566028 RSI: ffff880118566028 RDI: ffff880117876800
      RBP: ffff8801150d1d48 R08: ffff8801195fe300 R09: 00000000c0086444
      R10: 0000000000000001 R11: 0000000000003206 R12: ffff880117876800
      R13: ffff880118566000 R14: ffff880117876820 R15: ffff8801150d1df8
      FS:  00007f1038d456e0(0000) GS:ffff880001780000(0000)
      knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000000 CR3: 00000001187e7000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process Xorg (pid: 3605, threadinfo ffff8801150d0000, task
      ffff88011b016e40)
      Stack:
      ffffffffa043b8e6 ffff8801150d1d98 ffffffffa041768b dead000000000000
      <0> 0000000000000048 00007f1023f2a000 0000000000000044 0000000000000008
      <0> ffff88010d26bd80 ffff880117876800 ffff8801150d1df8 ffff8801150d1ea8
      Call Trace:
      [<ffffffffa043b8e6>] ? intel_ring_advance+0x16/0x20 [i915]
      [<ffffffffa041768b>] i915_irq_emit+0x15b/0x240 [i915]
      [<ffffffffa03ea7b1>] drm_ioctl+0x1f1/0x460 [drm]
      [<ffffffffa0417530>] ? i915_irq_emit+0x0/0x240 [i915]
      [<ffffffff810dd8f1>] ? do_sync_read+0xd1/0x120
      [<ffffffff81025b1f>] ? do_page_fault+0x1df/0x3d0
      [<ffffffff810ed5c7>] do_vfs_ioctl+0x97/0x550
      [<ffffffff8115c2ea>] ? security_file_permission+0x7a/0x90
      [<ffffffff810edb19>] sys_ioctl+0x99/0xa0
      [<ffffffff810024ab>] system_call_fastpath+0x16/0x1b
      Code:  Bad RIP value.
      RIP  [<(null)>] (null)
      RSP <ffff8801150d1d40>
      CR2: 0000000000000000
      Reported-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Tested-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29153
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=23172Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: stable@kernel.org
      e8616b6c
  22. 19 1月, 2011 1 次提交
  23. 12 1月, 2011 1 次提交
  24. 05 1月, 2011 2 次提交
  25. 23 12月, 2010 1 次提交
  26. 20 12月, 2010 1 次提交
  27. 15 12月, 2010 1 次提交
  28. 05 12月, 2010 2 次提交
  29. 30 11月, 2010 1 次提交