提交 cbff1e91 编写于 作者: L Linus Torvalds

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:
  vgaarb: trivial fix
  drm: radeon cleanup fixes...
  drm: fix trivial coding errors
  drm: ttm sparse fixes.
  drm/nouveau: fix panels using straps-based mode detection
  drm/ttm: Clear the ghost cpu_writers flag on ttm_buffer_object_transfer.
  drm/radeon: don't allow device to be opened if powered down
...@@ -98,8 +98,8 @@ EXPORT_SYMBOL(drm_buffer_alloc); ...@@ -98,8 +98,8 @@ EXPORT_SYMBOL(drm_buffer_alloc);
* user_data: A pointer the data that is copied to the buffer. * user_data: A pointer the data that is copied to the buffer.
* size: The Number of bytes to copy. * size: The Number of bytes to copy.
*/ */
extern int drm_buffer_copy_from_user(struct drm_buffer *buf, int drm_buffer_copy_from_user(struct drm_buffer *buf,
void __user *user_data, int size) void __user *user_data, int size)
{ {
int nr_pages = size / PAGE_SIZE + 1; int nr_pages = size / PAGE_SIZE + 1;
int idx; int idx;
...@@ -163,7 +163,7 @@ void *drm_buffer_read_object(struct drm_buffer *buf, ...@@ -163,7 +163,7 @@ void *drm_buffer_read_object(struct drm_buffer *buf,
{ {
int idx = drm_buffer_index(buf); int idx = drm_buffer_index(buf);
int page = drm_buffer_page(buf); int page = drm_buffer_page(buf);
void *obj = 0; void *obj = NULL;
if (idx + objsize <= PAGE_SIZE) { if (idx + objsize <= PAGE_SIZE) {
obj = &buf->data[page][idx]; obj = &buf->data[page][idx];
......
...@@ -558,8 +558,10 @@ nouveau_connector_get_modes(struct drm_connector *connector) ...@@ -558,8 +558,10 @@ nouveau_connector_get_modes(struct drm_connector *connector)
if (nv_encoder->dcb->type == OUTPUT_LVDS && if (nv_encoder->dcb->type == OUTPUT_LVDS &&
(nv_encoder->dcb->lvdsconf.use_straps_for_mode || (nv_encoder->dcb->lvdsconf.use_straps_for_mode ||
dev_priv->vbios.fp_no_ddc) && nouveau_bios_fp_mode(dev, NULL)) { dev_priv->vbios.fp_no_ddc) && nouveau_bios_fp_mode(dev, NULL)) {
nv_connector->native_mode = drm_mode_create(dev); struct drm_display_mode mode;
nouveau_bios_fp_mode(dev, nv_connector->native_mode);
nouveau_bios_fp_mode(dev, &mode);
nv_connector->native_mode = drm_mode_duplicate(dev, &mode);
} }
/* Find the native mode if this is a digital panel, if we didn't /* Find the native mode if this is a digital panel, if we didn't
......
...@@ -4999,7 +4999,7 @@ typedef struct _SW_I2C_IO_DATA_PARAMETERS ...@@ -4999,7 +4999,7 @@ typedef struct _SW_I2C_IO_DATA_PARAMETERS
#define SW_I2C_CNTL_WRITE1BIT 6 #define SW_I2C_CNTL_WRITE1BIT 6
//==============================VESA definition Portion=============================== //==============================VESA definition Portion===============================
#define VESA_OEM_PRODUCT_REV '01.00' #define VESA_OEM_PRODUCT_REV "01.00"
#define VESA_MODE_ATTRIBUTE_MODE_SUPPORT 0xBB //refer to VBE spec p.32, no TTY support #define VESA_MODE_ATTRIBUTE_MODE_SUPPORT 0xBB //refer to VBE spec p.32, no TTY support
#define VESA_MODE_WIN_ATTRIBUTE 7 #define VESA_MODE_WIN_ATTRIBUTE 7
#define VESA_WIN_SIZE 64 #define VESA_WIN_SIZE 64
......
...@@ -2729,7 +2729,7 @@ int r600_ib_test(struct radeon_device *rdev) ...@@ -2729,7 +2729,7 @@ int r600_ib_test(struct radeon_device *rdev)
if (i < rdev->usec_timeout) { if (i < rdev->usec_timeout) {
DRM_INFO("ib test succeeded in %u usecs\n", i); DRM_INFO("ib test succeeded in %u usecs\n", i);
} else { } else {
DRM_ERROR("radeon: ib test failed (sracth(0x%04X)=0x%08X)\n", DRM_ERROR("radeon: ib test failed (scratch(0x%04X)=0x%08X)\n",
scratch, tmp); scratch, tmp);
r = -EINVAL; r = -EINVAL;
} }
......
...@@ -203,6 +203,10 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) ...@@ -203,6 +203,10 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
*/ */
int radeon_driver_firstopen_kms(struct drm_device *dev) int radeon_driver_firstopen_kms(struct drm_device *dev)
{ {
struct radeon_device *rdev = dev->dev_private;
if (rdev->powered_down)
return -EINVAL;
return 0; return 0;
} }
......
...@@ -351,6 +351,7 @@ static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo, ...@@ -351,6 +351,7 @@ static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo,
INIT_LIST_HEAD(&fbo->lru); INIT_LIST_HEAD(&fbo->lru);
INIT_LIST_HEAD(&fbo->swap); INIT_LIST_HEAD(&fbo->swap);
fbo->vm_node = NULL; fbo->vm_node = NULL;
atomic_set(&fbo->cpu_writers, 0);
fbo->sync_obj = driver->sync_obj_ref(bo->sync_obj); fbo->sync_obj = driver->sync_obj_ref(bo->sync_obj);
kref_init(&fbo->list_kref); kref_init(&fbo->list_kref);
......
...@@ -69,7 +69,7 @@ struct ttm_page_pool { ...@@ -69,7 +69,7 @@ struct ttm_page_pool {
spinlock_t lock; spinlock_t lock;
bool fill_lock; bool fill_lock;
struct list_head list; struct list_head list;
int gfp_flags; gfp_t gfp_flags;
unsigned npages; unsigned npages;
char *name; char *name;
unsigned long nfrees; unsigned long nfrees;
...@@ -475,7 +475,7 @@ static void ttm_handle_caching_state_failure(struct list_head *pages, ...@@ -475,7 +475,7 @@ static void ttm_handle_caching_state_failure(struct list_head *pages,
* This function is reentrant if caller updates count depending on number of * This function is reentrant if caller updates count depending on number of
* pages returned in pages array. * pages returned in pages array.
*/ */
static int ttm_alloc_new_pages(struct list_head *pages, int gfp_flags, static int ttm_alloc_new_pages(struct list_head *pages, gfp_t gfp_flags,
int ttm_flags, enum ttm_caching_state cstate, unsigned count) int ttm_flags, enum ttm_caching_state cstate, unsigned count)
{ {
struct page **caching_array; struct page **caching_array;
...@@ -666,7 +666,7 @@ int ttm_get_pages(struct list_head *pages, int flags, ...@@ -666,7 +666,7 @@ int ttm_get_pages(struct list_head *pages, int flags,
{ {
struct ttm_page_pool *pool = ttm_get_pool(flags, cstate); struct ttm_page_pool *pool = ttm_get_pool(flags, cstate);
struct page *p = NULL; struct page *p = NULL;
int gfp_flags = GFP_USER; gfp_t gfp_flags = GFP_USER;
int r; int r;
/* set zero flag for page allocation if required */ /* set zero flag for page allocation if required */
...@@ -818,7 +818,7 @@ int ttm_page_alloc_init(struct ttm_mem_global *glob, unsigned max_pages) ...@@ -818,7 +818,7 @@ int ttm_page_alloc_init(struct ttm_mem_global *glob, unsigned max_pages)
return 0; return 0;
} }
void ttm_page_alloc_fini() void ttm_page_alloc_fini(void)
{ {
int i; int i;
......
...@@ -598,7 +598,7 @@ static inline void vga_update_device_decodes(struct vga_device *vgadev, ...@@ -598,7 +598,7 @@ static inline void vga_update_device_decodes(struct vga_device *vgadev,
pr_debug("vgaarb: decoding count now is: %d\n", vga_decode_count); pr_debug("vgaarb: decoding count now is: %d\n", vga_decode_count);
} }
void __vga_set_legacy_decoding(struct pci_dev *pdev, unsigned int decodes, bool userspace) static void __vga_set_legacy_decoding(struct pci_dev *pdev, unsigned int decodes, bool userspace)
{ {
struct vga_device *vgadev; struct vga_device *vgadev;
unsigned long flags; unsigned long flags;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册