Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm fixes from Dave Airlie:
 "The three nouveau fixes quiten unneeded dmesg spam that people are
   seeing and pondering,

  The udl fix stops it from trying to driver monitors that are too big,
  where we get a black screen.

  And a vmware memory alloc problem."

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
  drm/nvc0/fifo: ignore bits in PFIFO_INTR that aren't set in PFIFO_INTR_EN
  drm/udl: limit modes to the sku pixel limits.
  vmwgfx: corruption in vmw_event_fence_action_create()
  drm/nvc0/ltcg: mask off intr 0x10
  drm/nouveau: silence a debug message triggered by newer userspace
This commit is contained in:
Linus Torvalds 2012-09-27 16:51:14 -07:00
commit 63994137eb
6 changed files with 14 additions and 4 deletions

View file

@ -179,7 +179,7 @@ nouveau_abi16_ioctl_grobj_alloc(ABI16_IOCTL_ARGS)
return 0; return 0;
} else } else
if (init->class == 0x906e) { if (init->class == 0x906e) {
NV_ERROR(dev, "906e not supported yet\n"); NV_DEBUG(dev, "906e not supported yet\n");
return -EINVAL; return -EINVAL;
} }

View file

@ -124,6 +124,7 @@ nvc0_fb_init(struct drm_device *dev)
priv = dev_priv->engine.fb.priv; priv = dev_priv->engine.fb.priv;
nv_wr32(dev, 0x100c10, priv->r100c10 >> 8); nv_wr32(dev, 0x100c10, priv->r100c10 >> 8);
nv_mask(dev, 0x17e820, 0x00100000, 0x00000000); /* NV_PLTCG_INTR_EN */
return 0; return 0;
} }

View file

@ -373,7 +373,8 @@ nvc0_fifo_isr_subfifo_intr(struct drm_device *dev, int unit)
static void static void
nvc0_fifo_isr(struct drm_device *dev) nvc0_fifo_isr(struct drm_device *dev)
{ {
u32 stat = nv_rd32(dev, 0x002100); u32 mask = nv_rd32(dev, 0x002140);
u32 stat = nv_rd32(dev, 0x002100) & mask;
if (stat & 0x00000100) { if (stat & 0x00000100) {
NV_INFO(dev, "PFIFO: unknown status 0x00000100\n"); NV_INFO(dev, "PFIFO: unknown status 0x00000100\n");

View file

@ -345,7 +345,8 @@ nve0_fifo_isr_subfifo_intr(struct drm_device *dev, int unit)
static void static void
nve0_fifo_isr(struct drm_device *dev) nve0_fifo_isr(struct drm_device *dev)
{ {
u32 stat = nv_rd32(dev, 0x002100); u32 mask = nv_rd32(dev, 0x002140);
u32 stat = nv_rd32(dev, 0x002100) & mask;
if (stat & 0x00000100) { if (stat & 0x00000100) {
NV_INFO(dev, "PFIFO: unknown status 0x00000100\n"); NV_INFO(dev, "PFIFO: unknown status 0x00000100\n");

View file

@ -69,6 +69,13 @@ static int udl_get_modes(struct drm_connector *connector)
static int udl_mode_valid(struct drm_connector *connector, static int udl_mode_valid(struct drm_connector *connector,
struct drm_display_mode *mode) struct drm_display_mode *mode)
{ {
struct udl_device *udl = connector->dev->dev_private;
if (!udl->sku_pixel_limit)
return 0;
if (mode->vdisplay * mode->hdisplay > udl->sku_pixel_limit)
return MODE_VIRTUAL_Y;
return 0; return 0;
} }

View file

@ -1018,7 +1018,7 @@ int vmw_event_fence_action_create(struct drm_file *file_priv,
} }
event = kzalloc(sizeof(event->event), GFP_KERNEL); event = kzalloc(sizeof(*event), GFP_KERNEL);
if (unlikely(event == NULL)) { if (unlikely(event == NULL)) {
DRM_ERROR("Failed to allocate an event.\n"); DRM_ERROR("Failed to allocate an event.\n");
ret = -ENOMEM; ret = -ENOMEM;