diff options
author | Kevin Hilman <khilman@linaro.org> | 2015-08-14 09:36:42 -0700 |
---|---|---|
committer | Kevin Hilman <khilman@linaro.org> | 2015-08-14 09:36:42 -0700 |
commit | 07818b5b1ba0f494a7255ab634bad2dd2b908ed0 (patch) | |
tree | fb1045fb0f610b29c3a631bcd22df69ca095e241 /drivers/gpu/drm | |
parent | 65fa7c7f66d9a33fe13e426f86b8bb8824334a92 (diff) | |
parent | 78fb9f4236d9077fb343fb5a4e55fe27075e9a1d (diff) |
Merge tag 'v3.10.86' into linux-linaro-lsk-v3.10lsk-v3.10-15.08
This is the 3.10.86 stable release
* tag 'v3.10.86': (132 commits)
Linux 3.10.86
efi: fix 32bit kernel boot failed problem using efi
iscsi-target: Fix iser explicit logout TX kthread leak
iscsi-target: Fix use-after-free during TPG session shutdown
vhost: actually track log eventfd file
rds: rds_ib_device.refcount overflow
xhci: prevent bus_suspend if SS port resuming in phase 1
xhci: report U3 when link is in resume state
xhci: Calculate old endpoints correctly on device reset
usb-storage: ignore ZTE MF 823 card reader in mode 0x1225
ata: pmp: add quirk for Marvell 4140 SATA PMP
blkcg: fix gendisk reference leak in blkg_conf_prep()
Input: usbtouchscreen - avoid unresponsive TSC-30 touch screen
tile: use free_bootmem_late() for initrd
md/raid1: fix test for 'was read error from last working device'.
mmc: sdhci-pxav3: fix platform_data is not initialized
mmc: sdhci-esdhc: Make 8BIT bus work
mac80211: clear subdir_stations when removing debugfs
st: null pointer dereference panic caused by use after kref_put by st_open
ALSA: hda - Fix MacBook Pro 5,2 quirk
...
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/qxl/qxl_cmd.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_gart.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_irq_kms.c | 2 |
4 files changed, 16 insertions, 6 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 8759d699bd8e..c24c35606836 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -1955,8 +1955,11 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, if (!drm_core_check_feature(dev, DRIVER_MODESET)) return -EINVAL; - /* For some reason crtc x/y offsets are signed internally. */ - if (crtc_req->x > INT_MAX || crtc_req->y > INT_MAX) + /* + * Universal plane src offsets are only 16.16, prevent havoc for + * drivers using universal plane code internally. + */ + if (crtc_req->x & 0xffff0000 || crtc_req->y & 0xffff0000) return -ERANGE; drm_modeset_lock_all(dev); diff --git a/drivers/gpu/drm/qxl/qxl_cmd.c b/drivers/gpu/drm/qxl/qxl_cmd.c index f86771481317..5a48d7419baf 100644 --- a/drivers/gpu/drm/qxl/qxl_cmd.c +++ b/drivers/gpu/drm/qxl/qxl_cmd.c @@ -500,6 +500,7 @@ int qxl_hw_surface_alloc(struct qxl_device *qdev, cmd = (struct qxl_surface_cmd *)qxl_release_map(qdev, release); cmd->type = QXL_SURFACE_CMD_CREATE; + cmd->flags = QXL_SURF_FLAG_KEEP_DATA; cmd->u.surface_create.format = surf->surf.format; cmd->u.surface_create.width = surf->surf.width; cmd->u.surface_create.height = surf->surf.height; diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c index 2915a1c56934..c4bb0bc2a1d9 100644 --- a/drivers/gpu/drm/radeon/radeon_gart.c +++ b/drivers/gpu/drm/radeon/radeon_gart.c @@ -251,8 +251,10 @@ void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset, } } } - mb(); - radeon_gart_tlb_flush(rdev); + if (rdev->gart.ptr) { + mb(); + radeon_gart_tlb_flush(rdev); + } } /** @@ -294,8 +296,10 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset, } } } - mb(); - radeon_gart_tlb_flush(rdev); + if (rdev->gart.ptr) { + mb(); + radeon_gart_tlb_flush(rdev); + } return 0; } diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c index 1fe12ab5c5ea..db83d075606e 100644 --- a/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -73,10 +73,12 @@ static void radeon_hotplug_work_func(struct work_struct *work) struct drm_mode_config *mode_config = &dev->mode_config; struct drm_connector *connector; + mutex_lock(&mode_config->mutex); if (mode_config->num_connector) { list_for_each_entry(connector, &mode_config->connector_list, head) radeon_connector_hotplug(connector); } + mutex_unlock(&mode_config->mutex); /* Just fire off a uevent and let userspace tell us what to do */ drm_helper_hpd_irq_event(dev); } |