| From d05d6bca3d792161eecf1bf6985594fb548f4d8e Mon Sep 17 00:00:00 2001 |
| From: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Date: Mon, 12 Aug 2013 14:34:08 -0300 |
| Subject: drm/i915: print a message when we detect an early Haswell SDV |
| |
| The machines that fall in this category are the SDVs that have a PCI |
| ID starting with 0x0C. These are very early pre-production machines |
| and may not fully work. Other Haswell SDVs have PCI IDs that match the |
| real Haswell machines and we expect them to work better. |
| |
| Even though they have problems, they still mostly work so I don't see |
| a reason to refuse loading our driver. But I do see a reason to reject |
| bug reports from these machines, so the message should help the bug |
| triagers. |
| |
| As far as I know, we don't implement some workarounds that are |
| specific to these machines and suspend/resume may not work on most of |
| them, but besides this, they may work. |
| |
| Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61508 |
| Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit ed1c9e2cf414e32cb7ea1217b51b39e70fc132d2) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/i915_dma.c | 8 ++++++++ |
| drivers/gpu/drm/i915/i915_drv.h | 2 ++ |
| 2 files changed, 10 insertions(+) |
| |
| --- a/drivers/gpu/drm/i915/i915_dma.c |
| +++ b/drivers/gpu/drm/i915/i915_dma.c |
| @@ -1496,6 +1496,14 @@ int i915_driver_load(struct drm_device * |
| |
| i915_dump_device_info(dev_priv); |
| |
| + /* Not all pre-production machines fall into this category, only the |
| + * very first ones. Almost everything should work, except for maybe |
| + * suspend/resume. And we don't implement workarounds that affect only |
| + * pre-production machines. */ |
| + if (IS_HSW_EARLY_SDV(dev)) |
| + DRM_INFO("This is an early pre-production Haswell machine. " |
| + "It may not be fully functional.\n"); |
| + |
| if (i915_get_bridge_dev(dev)) { |
| ret = -EIO; |
| goto free_priv; |
| --- a/drivers/gpu/drm/i915/i915_drv.h |
| +++ b/drivers/gpu/drm/i915/i915_drv.h |
| @@ -1511,6 +1511,8 @@ struct drm_i915_file_private { |
| #define IS_VALLEYVIEW(dev) (INTEL_INFO(dev)->is_valleyview) |
| #define IS_HASWELL(dev) (INTEL_INFO(dev)->is_haswell) |
| #define IS_MOBILE(dev) (INTEL_INFO(dev)->is_mobile) |
| +#define IS_HSW_EARLY_SDV(dev) (IS_HASWELL(dev) && \ |
| + ((dev)->pci_device & 0xFF00) == 0x0C00) |
| #define IS_ULT(dev) (IS_HASWELL(dev) && \ |
| ((dev)->pci_device & 0xFF00) == 0x0A00) |
| |