Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
1545085a
Commit
1545085a
authored
Feb 08, 2007
by
Thomas Hellstrom
Committed by
Dave Airlie
Feb 08, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drm: Allow for 44 bit user-tokens (or drm_file offsets)
parent
756db73d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
14 additions
and
13 deletions
+14
-13
drivers/char/drm/drm_bufs.c
drivers/char/drm/drm_bufs.c
+5
-4
drivers/char/drm/drm_proc.c
drivers/char/drm/drm_proc.c
+2
-2
drivers/char/drm/drm_vm.c
drivers/char/drm/drm_vm.c
+7
-7
No files found.
drivers/char/drm/drm_bufs.c
View file @
1545085a
...
@@ -79,14 +79,14 @@ static int drm_map_handle(drm_device_t *dev, drm_hash_item_t *hash,
...
@@ -79,14 +79,14 @@ static int drm_map_handle(drm_device_t *dev, drm_hash_item_t *hash,
if
(
!
use_hashed_handle
)
{
if
(
!
use_hashed_handle
)
{
int
ret
;
int
ret
;
hash
->
key
=
user_token
;
hash
->
key
=
user_token
>>
PAGE_SHIFT
;
ret
=
drm_ht_insert_item
(
&
dev
->
map_hash
,
hash
);
ret
=
drm_ht_insert_item
(
&
dev
->
map_hash
,
hash
);
if
(
ret
!=
-
EINVAL
)
if
(
ret
!=
-
EINVAL
)
return
ret
;
return
ret
;
}
}
return
drm_ht_just_insert_please
(
&
dev
->
map_hash
,
hash
,
return
drm_ht_just_insert_please
(
&
dev
->
map_hash
,
hash
,
user_token
,
32
-
PAGE_SHIFT
-
3
,
user_token
,
32
-
PAGE_SHIFT
-
3
,
PAGE_SHIFT
,
DRM_MAP_HASH_OFFSE
T
);
0
,
DRM_MAP_HASH_OFFSET
>>
PAGE_SHIF
T
);
}
}
/**
/**
...
@@ -262,7 +262,7 @@ static int drm_addmap_core(drm_device_t * dev, unsigned int offset,
...
@@ -262,7 +262,7 @@ static int drm_addmap_core(drm_device_t * dev, unsigned int offset,
return
ret
;
return
ret
;
}
}
list
->
user_token
=
list
->
hash
.
key
;
list
->
user_token
=
list
->
hash
.
key
<<
PAGE_SHIFT
;
mutex_unlock
(
&
dev
->
struct_mutex
);
mutex_unlock
(
&
dev
->
struct_mutex
);
*
maplist
=
list
;
*
maplist
=
list
;
...
@@ -347,7 +347,8 @@ int drm_rmmap_locked(drm_device_t *dev, drm_local_map_t *map)
...
@@ -347,7 +347,8 @@ int drm_rmmap_locked(drm_device_t *dev, drm_local_map_t *map)
if
(
r_list
->
map
==
map
)
{
if
(
r_list
->
map
==
map
)
{
list_del
(
list
);
list_del
(
list
);
drm_ht_remove_key
(
&
dev
->
map_hash
,
r_list
->
user_token
);
drm_ht_remove_key
(
&
dev
->
map_hash
,
r_list
->
user_token
>>
PAGE_SHIFT
);
drm_free
(
list
,
sizeof
(
*
list
),
DRM_MEM_MAPS
);
drm_free
(
list
,
sizeof
(
*
list
),
DRM_MEM_MAPS
);
break
;
break
;
}
}
...
...
drivers/char/drm/drm_proc.c
View file @
1545085a
...
@@ -500,7 +500,7 @@ static int drm__vma_info(char *buf, char **start, off_t offset, int request,
...
@@ -500,7 +500,7 @@ static int drm__vma_info(char *buf, char **start, off_t offset, int request,
for
(
pt
=
dev
->
vmalist
;
pt
;
pt
=
pt
->
next
)
{
for
(
pt
=
dev
->
vmalist
;
pt
;
pt
=
pt
->
next
)
{
if
(
!
(
vma
=
pt
->
vma
))
if
(
!
(
vma
=
pt
->
vma
))
continue
;
continue
;
DRM_PROC_PRINT
(
"
\n
%5d 0x%08lx-0x%08lx %c%c%c%c%c%c 0x%08lx"
,
DRM_PROC_PRINT
(
"
\n
%5d 0x%08lx-0x%08lx %c%c%c%c%c%c 0x%08lx
000
"
,
pt
->
pid
,
pt
->
pid
,
vma
->
vm_start
,
vma
->
vm_start
,
vma
->
vm_end
,
vma
->
vm_end
,
...
@@ -510,7 +510,7 @@ static int drm__vma_info(char *buf, char **start, off_t offset, int request,
...
@@ -510,7 +510,7 @@ static int drm__vma_info(char *buf, char **start, off_t offset, int request,
vma
->
vm_flags
&
VM_MAYSHARE
?
's'
:
'p'
,
vma
->
vm_flags
&
VM_MAYSHARE
?
's'
:
'p'
,
vma
->
vm_flags
&
VM_LOCKED
?
'l'
:
'-'
,
vma
->
vm_flags
&
VM_LOCKED
?
'l'
:
'-'
,
vma
->
vm_flags
&
VM_IO
?
'i'
:
'-'
,
vma
->
vm_flags
&
VM_IO
?
'i'
:
'-'
,
vma
->
vm_pgoff
<<
PAGE_SHIFT
);
vma
->
vm_pgoff
);
#if defined(__i386__)
#if defined(__i386__)
pgprot
=
pgprot_val
(
vma
->
vm_page_prot
);
pgprot
=
pgprot_val
(
vma
->
vm_page_prot
);
...
...
drivers/char/drm/drm_vm.c
View file @
1545085a
...
@@ -70,7 +70,7 @@ static __inline__ struct page *drm_do_vm_nopage(struct vm_area_struct *vma,
...
@@ -70,7 +70,7 @@ static __inline__ struct page *drm_do_vm_nopage(struct vm_area_struct *vma,
if
(
!
dev
->
agp
||
!
dev
->
agp
->
cant_use_aperture
)
if
(
!
dev
->
agp
||
!
dev
->
agp
->
cant_use_aperture
)
goto
vm_nopage_error
;
goto
vm_nopage_error
;
if
(
drm_ht_find_item
(
&
dev
->
map_hash
,
vma
->
vm_pgoff
<<
PAGE_SHIFT
,
&
hash
))
if
(
drm_ht_find_item
(
&
dev
->
map_hash
,
vma
->
vm_pgoff
,
&
hash
))
goto
vm_nopage_error
;
goto
vm_nopage_error
;
r_list
=
drm_hash_entry
(
hash
,
drm_map_list_t
,
hash
);
r_list
=
drm_hash_entry
(
hash
,
drm_map_list_t
,
hash
);
...
@@ -463,8 +463,8 @@ static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma)
...
@@ -463,8 +463,8 @@ static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma)
lock_kernel
();
lock_kernel
();
dev
=
priv
->
head
->
dev
;
dev
=
priv
->
head
->
dev
;
dma
=
dev
->
dma
;
dma
=
dev
->
dma
;
DRM_DEBUG
(
"start = 0x%lx, end = 0x%lx, offset = 0x%lx
\n
"
,
DRM_DEBUG
(
"start = 0x%lx, end = 0x%lx,
page
offset = 0x%lx
\n
"
,
vma
->
vm_start
,
vma
->
vm_end
,
vma
->
vm_pgoff
<<
PAGE_SHIFT
);
vma
->
vm_start
,
vma
->
vm_end
,
vma
->
vm_pgoff
);
/* Length must match exact page count */
/* Length must match exact page count */
if
(
!
dma
||
(
length
>>
PAGE_SHIFT
)
!=
dma
->
page_count
)
{
if
(
!
dma
||
(
length
>>
PAGE_SHIFT
)
!=
dma
->
page_count
)
{
...
@@ -537,8 +537,8 @@ int drm_mmap(struct file *filp, struct vm_area_struct *vma)
...
@@ -537,8 +537,8 @@ int drm_mmap(struct file *filp, struct vm_area_struct *vma)
unsigned
long
offset
=
0
;
unsigned
long
offset
=
0
;
drm_hash_item_t
*
hash
;
drm_hash_item_t
*
hash
;
DRM_DEBUG
(
"start = 0x%lx, end = 0x%lx, offset = 0x%lx
\n
"
,
DRM_DEBUG
(
"start = 0x%lx, end = 0x%lx,
page
offset = 0x%lx
\n
"
,
vma
->
vm_start
,
vma
->
vm_end
,
vma
->
vm_pgoff
<<
PAGE_SHIFT
);
vma
->
vm_start
,
vma
->
vm_end
,
vma
->
vm_pgoff
);
if
(
!
priv
->
authenticated
)
if
(
!
priv
->
authenticated
)
return
-
EACCES
;
return
-
EACCES
;
...
@@ -547,7 +547,7 @@ int drm_mmap(struct file *filp, struct vm_area_struct *vma)
...
@@ -547,7 +547,7 @@ int drm_mmap(struct file *filp, struct vm_area_struct *vma)
* the AGP mapped at physical address 0
* the AGP mapped at physical address 0
* --BenH.
* --BenH.
*/
*/
if
(
!
(
vma
->
vm_pgoff
<<
PAGE_SHIFT
)
if
(
!
vma
->
vm_pgoff
#if __OS_HAS_AGP
#if __OS_HAS_AGP
&&
(
!
dev
->
agp
&&
(
!
dev
->
agp
||
dev
->
agp
->
agp_info
.
device
->
vendor
!=
PCI_VENDOR_ID_APPLE
)
||
dev
->
agp
->
agp_info
.
device
->
vendor
!=
PCI_VENDOR_ID_APPLE
)
...
@@ -555,7 +555,7 @@ int drm_mmap(struct file *filp, struct vm_area_struct *vma)
...
@@ -555,7 +555,7 @@ int drm_mmap(struct file *filp, struct vm_area_struct *vma)
)
)
return
drm_mmap_dma
(
filp
,
vma
);
return
drm_mmap_dma
(
filp
,
vma
);
if
(
drm_ht_find_item
(
&
dev
->
map_hash
,
vma
->
vm_pgoff
<<
PAGE_SHIFT
,
&
hash
))
{
if
(
drm_ht_find_item
(
&
dev
->
map_hash
,
vma
->
vm_pgoff
,
&
hash
))
{
DRM_ERROR
(
"Could not find map
\n
"
);
DRM_ERROR
(
"Could not find map
\n
"
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment