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:
commit
63994137eb
6 changed files with 14 additions and 4 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue