Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6
* 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: drm/radeon/kms: don't apply 7xx HDP flush workaround on AGP drm: use after free in drm_queue_vblank_event() drm/kms: remove spaces from connector names (v2)
This commit is contained in:
@@ -156,12 +156,12 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] =
|
|||||||
{ DRM_MODE_CONNECTOR_SVIDEO, "SVIDEO", 0 },
|
{ DRM_MODE_CONNECTOR_SVIDEO, "SVIDEO", 0 },
|
||||||
{ DRM_MODE_CONNECTOR_LVDS, "LVDS", 0 },
|
{ DRM_MODE_CONNECTOR_LVDS, "LVDS", 0 },
|
||||||
{ DRM_MODE_CONNECTOR_Component, "Component", 0 },
|
{ DRM_MODE_CONNECTOR_Component, "Component", 0 },
|
||||||
{ DRM_MODE_CONNECTOR_9PinDIN, "9-pin DIN", 0 },
|
{ DRM_MODE_CONNECTOR_9PinDIN, "DIN", 0 },
|
||||||
{ DRM_MODE_CONNECTOR_DisplayPort, "DisplayPort", 0 },
|
{ DRM_MODE_CONNECTOR_DisplayPort, "DP", 0 },
|
||||||
{ DRM_MODE_CONNECTOR_HDMIA, "HDMI Type A", 0 },
|
{ DRM_MODE_CONNECTOR_HDMIA, "HDMI-A", 0 },
|
||||||
{ DRM_MODE_CONNECTOR_HDMIB, "HDMI Type B", 0 },
|
{ DRM_MODE_CONNECTOR_HDMIB, "HDMI-B", 0 },
|
||||||
{ DRM_MODE_CONNECTOR_TV, "TV", 0 },
|
{ DRM_MODE_CONNECTOR_TV, "TV", 0 },
|
||||||
{ DRM_MODE_CONNECTOR_eDP, "Embedded DisplayPort", 0 },
|
{ DRM_MODE_CONNECTOR_eDP, "eDP", 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct drm_prop_enum_list drm_encoder_enum_list[] =
|
static struct drm_prop_enum_list drm_encoder_enum_list[] =
|
||||||
|
@@ -628,7 +628,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
|
|||||||
if ((seq - vblwait->request.sequence) <= (1 << 23)) {
|
if ((seq - vblwait->request.sequence) <= (1 << 23)) {
|
||||||
e->event.tv_sec = now.tv_sec;
|
e->event.tv_sec = now.tv_sec;
|
||||||
e->event.tv_usec = now.tv_usec;
|
e->event.tv_usec = now.tv_usec;
|
||||||
drm_vblank_put(dev, e->pipe);
|
drm_vblank_put(dev, pipe);
|
||||||
list_add_tail(&e->base.link, &e->base.file_priv->event_list);
|
list_add_tail(&e->base.link, &e->base.file_priv->event_list);
|
||||||
wake_up_interruptible(&e->base.file_priv->event_wait);
|
wake_up_interruptible(&e->base.file_priv->event_wait);
|
||||||
trace_drm_vblank_event_delivered(current->pid, pipe,
|
trace_drm_vblank_event_delivered(current->pid, pipe,
|
||||||
@@ -645,7 +645,7 @@ err_unlock:
|
|||||||
spin_unlock_irqrestore(&dev->event_lock, flags);
|
spin_unlock_irqrestore(&dev->event_lock, flags);
|
||||||
kfree(e);
|
kfree(e);
|
||||||
err_put:
|
err_put:
|
||||||
drm_vblank_put(dev, e->pipe);
|
drm_vblank_put(dev, pipe);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -878,12 +878,15 @@ void r600_pcie_gart_tlb_flush(struct radeon_device *rdev)
|
|||||||
u32 tmp;
|
u32 tmp;
|
||||||
|
|
||||||
/* flush hdp cache so updates hit vram */
|
/* flush hdp cache so updates hit vram */
|
||||||
if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740)) {
|
if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740) &&
|
||||||
|
!(rdev->flags & RADEON_IS_AGP)) {
|
||||||
void __iomem *ptr = (void *)rdev->gart.table.vram.ptr;
|
void __iomem *ptr = (void *)rdev->gart.table.vram.ptr;
|
||||||
u32 tmp;
|
u32 tmp;
|
||||||
|
|
||||||
/* r7xx hw bug. write to HDP_DEBUG1 followed by fb read
|
/* r7xx hw bug. write to HDP_DEBUG1 followed by fb read
|
||||||
* rather than write to HDP_REG_COHERENCY_FLUSH_CNTL
|
* rather than write to HDP_REG_COHERENCY_FLUSH_CNTL
|
||||||
|
* This seems to cause problems on some AGP cards. Just use the old
|
||||||
|
* method for them.
|
||||||
*/
|
*/
|
||||||
WREG32(HDP_DEBUG1, 0);
|
WREG32(HDP_DEBUG1, 0);
|
||||||
tmp = readl((void __iomem *)ptr);
|
tmp = readl((void __iomem *)ptr);
|
||||||
@@ -3485,10 +3488,12 @@ int r600_debugfs_mc_info_init(struct radeon_device *rdev)
|
|||||||
void r600_ioctl_wait_idle(struct radeon_device *rdev, struct radeon_bo *bo)
|
void r600_ioctl_wait_idle(struct radeon_device *rdev, struct radeon_bo *bo)
|
||||||
{
|
{
|
||||||
/* r7xx hw bug. write to HDP_DEBUG1 followed by fb read
|
/* r7xx hw bug. write to HDP_DEBUG1 followed by fb read
|
||||||
* rather than write to HDP_REG_COHERENCY_FLUSH_CNTL
|
* rather than write to HDP_REG_COHERENCY_FLUSH_CNTL.
|
||||||
|
* This seems to cause problems on some AGP cards. Just use the old
|
||||||
|
* method for them.
|
||||||
*/
|
*/
|
||||||
if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740) &&
|
if ((rdev->family >= CHIP_RV770) && (rdev->family <= CHIP_RV740) &&
|
||||||
rdev->vram_scratch.ptr) {
|
rdev->vram_scratch.ptr && !(rdev->flags & RADEON_IS_AGP)) {
|
||||||
void __iomem *ptr = (void *)rdev->vram_scratch.ptr;
|
void __iomem *ptr = (void *)rdev->vram_scratch.ptr;
|
||||||
u32 tmp;
|
u32 tmp;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user