mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-25 00:10:11 +01:00
add compat code from Paul Mackerras
This commit is contained in:
parent
827806f697
commit
6397722f19
4 changed files with 28 additions and 0 deletions
|
|
@ -274,6 +274,9 @@ do { \
|
|||
typedef int drm_ioctl_t(struct inode *inode, struct file *filp,
|
||||
unsigned int cmd, unsigned long arg);
|
||||
|
||||
typedef int drm_ioctl_compat_t(struct file *filp, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
|
||||
typedef struct drm_ioctl_desc {
|
||||
drm_ioctl_t *func;
|
||||
int auth_needed;
|
||||
|
|
@ -758,6 +761,9 @@ extern void __exit drm_exit(struct drm_driver *driver);
|
|||
extern void __exit drm_cleanup_pci(struct pci_dev *pdev);
|
||||
extern int drm_ioctl(struct inode *inode, struct file *filp,
|
||||
unsigned int cmd, unsigned long arg);
|
||||
extern long drm_compat_ioctl(struct file *filp,
|
||||
unsigned int cmd, unsigned long arg);
|
||||
|
||||
extern int drm_takedown(drm_device_t * dev);
|
||||
|
||||
/* Device support (drm_fops.h) */
|
||||
|
|
|
|||
|
|
@ -109,6 +109,15 @@ int drm_initmap(drm_device_t * dev, unsigned int offset, unsigned int size,
|
|||
}
|
||||
EXPORT_SYMBOL(drm_initmap);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
/*
|
||||
* Used to allocate 32-bit handles for _DRM_SHM regions
|
||||
* The 0x10000000 value is chosen to be out of the way of
|
||||
* FB/register and GART physical addresses.
|
||||
*/
|
||||
static unsigned int map32_handle = 0x10000000;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Ioctl to specify a range of memory that is available for mapping by a non-root process.
|
||||
*
|
||||
|
|
@ -283,6 +292,13 @@ int drm_addmap(drm_device_t * dev, unsigned int offset,
|
|||
|
||||
down(&dev->struct_sem);
|
||||
list_add(&list->head, &dev->maplist->head);
|
||||
#ifdef CONFIG_COMPAT
|
||||
/* Assign a 32-bit handle for _DRM_SHM mappings */
|
||||
/* We do it here so that dev->struct_sem protects the increment */
|
||||
if (map->type == _DRM_SHM)
|
||||
map->offset = map32_handle += PAGE_SIZE;
|
||||
#endif
|
||||
|
||||
up(&dev->struct_sem);
|
||||
found_it:
|
||||
*map_ptr = map;
|
||||
|
|
@ -1568,3 +1584,4 @@ int drm_order( unsigned long size )
|
|||
}
|
||||
EXPORT_SYMBOL(drm_order);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -102,6 +102,9 @@ static struct drm_driver driver = {
|
|||
.mmap = drm_mmap,
|
||||
.poll = drm_poll,
|
||||
.fasync = drm_fasync,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = radeon_compat_ioctl,
|
||||
#endif
|
||||
},
|
||||
.pci_driver = {
|
||||
.name = DRIVER_NAME,
|
||||
|
|
|
|||
|
|
@ -311,6 +311,8 @@ extern int radeon_driver_open_helper(drm_device_t * dev,
|
|||
drm_file_t * filp_priv);
|
||||
extern void radeon_driver_free_filp_priv(drm_device_t * dev,
|
||||
drm_file_t * filp_priv);
|
||||
extern long radeon_compat_ioctl(struct file *filp, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
|
||||
/* Flags for stats.boxes
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue