Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
981a1ad3
Commit
981a1ad3
authored
Jun 09, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linux-ntfs.bkbits.net/ntfs-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
290a768a
ad181870
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
83 additions
and
45 deletions
+83
-45
drivers/char/drm/drm_ioctl.h
drivers/char/drm/drm_ioctl.h
+7
-0
drivers/char/drm/gamma_dma.c
drivers/char/drm/gamma_dma.c
+39
-6
drivers/ide/ide-cd.c
drivers/ide/ide-cd.c
+36
-38
drivers/scsi/Kconfig
drivers/scsi/Kconfig
+1
-1
No files found.
drivers/char/drm/drm_ioctl.h
View file @
981a1ad3
...
...
@@ -142,6 +142,13 @@ DRM(set_busid)(drm_device_t *dev)
snprintf
(
dev
->
unique
,
dev
->
unique_len
,
"pci:%04x:%02x:%02x.%d"
,
dev
->
pci_domain
,
dev
->
pci_bus
,
dev
->
pci_slot
,
dev
->
pci_func
);
dev
->
devname
=
DRM
(
alloc
)(
strlen
(
dev
->
name
)
+
dev
->
unique_len
+
2
,
DRM_MEM_DRIVER
);
if
(
dev
->
devname
==
NULL
)
return
ENOMEM
;
sprintf
(
dev
->
devname
,
"%s@%s"
,
dev
->
name
,
dev
->
unique
);
return
0
;
}
...
...
drivers/char/drm/gamma_dma.c
View file @
981a1ad3
...
...
@@ -346,6 +346,9 @@ static int gamma_dma_priority(struct file *filp,
drm_buf_t
*
buf
;
drm_buf_t
*
last_buf
=
NULL
;
drm_device_dma_t
*
dma
=
dev
->
dma
;
int
*
send_indices
=
NULL
;
int
*
send_sizes
=
NULL
;
DECLARE_WAITQUEUE
(
entry
,
current
);
/* Turn off interrupt handling */
...
...
@@ -365,11 +368,31 @@ static int gamma_dma_priority(struct file *filp,
++
must_free
;
}
send_indices
=
DRM
(
alloc
)(
d
->
send_count
*
sizeof
(
*
send_indices
),
DRM_MEM_DRIVER
);
if
(
send_indices
==
NULL
)
return
-
ENOMEM
;
if
(
copy_from_user
(
send_indices
,
d
->
send_indices
,
d
->
send_count
*
sizeof
(
*
send_indices
)))
{
retcode
=
-
EFAULT
;
goto
cleanup
;
}
send_sizes
=
DRM
(
alloc
)(
d
->
send_count
*
sizeof
(
*
send_sizes
),
DRM_MEM_DRIVER
);
if
(
send_sizes
==
NULL
)
return
-
ENOMEM
;
if
(
copy_from_user
(
send_sizes
,
d
->
send_sizes
,
d
->
send_count
*
sizeof
(
*
send_sizes
)))
{
retcode
=
-
EFAULT
;
goto
cleanup
;
}
for
(
i
=
0
;
i
<
d
->
send_count
;
i
++
)
{
idx
=
d
->
send_indices
[
i
];
idx
=
send_indices
[
i
];
if
(
idx
<
0
||
idx
>=
dma
->
buf_count
)
{
DRM_ERROR
(
"Index %d (of %d max)
\n
"
,
d
->
send_indices
[
i
],
dma
->
buf_count
-
1
);
send_indices
[
i
],
dma
->
buf_count
-
1
);
continue
;
}
buf
=
dma
->
buflist
[
idx
];
...
...
@@ -391,7 +414,7 @@ static int gamma_dma_priority(struct file *filp,
process closes the /dev/drm? handle, so
it can't also be doing DMA. */
buf
->
list
=
DRM_LIST_PRIO
;
buf
->
used
=
d
->
send_sizes
[
i
];
buf
->
used
=
send_sizes
[
i
];
buf
->
context
=
d
->
context
;
buf
->
while_locked
=
d
->
flags
&
_DRM_DMA_WHILE_LOCKED
;
address
=
(
unsigned
long
)
buf
->
address
;
...
...
@@ -402,14 +425,14 @@ static int gamma_dma_priority(struct file *filp,
if
(
buf
->
pending
)
{
DRM_ERROR
(
"Sending pending buffer:"
" buffer %d, offset %d
\n
"
,
d
->
send_indices
[
i
],
i
);
send_indices
[
i
],
i
);
retcode
=
-
EINVAL
;
goto
cleanup
;
}
if
(
buf
->
waiting
)
{
DRM_ERROR
(
"Sending waiting buffer:"
" buffer %d, offset %d
\n
"
,
d
->
send_indices
[
i
],
i
);
send_indices
[
i
],
i
);
retcode
=
-
EINVAL
;
goto
cleanup
;
}
...
...
@@ -458,6 +481,12 @@ static int gamma_dma_priority(struct file *filp,
gamma_dma_ready
(
dev
);
gamma_free_buffer
(
dev
,
last_buf
);
}
if
(
send_indices
)
DRM
(
free
)(
send_indices
,
d
->
send_count
*
sizeof
(
*
send_indices
),
DRM_MEM_DRIVER
);
if
(
send_sizes
)
DRM
(
free
)(
send_sizes
,
d
->
send_count
*
sizeof
(
*
send_sizes
),
DRM_MEM_DRIVER
);
if
(
must_free
&&
!
dev
->
context_flag
)
{
if
(
gamma_lock_free
(
dev
,
&
dev
->
lock
.
hw_lock
->
lock
,
...
...
@@ -476,9 +505,13 @@ static int gamma_dma_send_buffers(struct file *filp,
drm_buf_t
*
last_buf
=
NULL
;
int
retcode
=
0
;
drm_device_dma_t
*
dma
=
dev
->
dma
;
int
send_index
;
if
(
get_user
(
send_index
,
&
d
->
send_indices
[
d
->
send_count
-
1
]))
return
-
EFAULT
;
if
(
d
->
flags
&
_DRM_DMA_BLOCK
)
{
last_buf
=
dma
->
buflist
[
d
->
send_indices
[
d
->
send_count
-
1
]
];
last_buf
=
dma
->
buflist
[
send_index
];
add_wait_queue
(
&
last_buf
->
dma_wait
,
&
entry
);
}
...
...
drivers/ide/ide-cd.c
View file @
981a1ad3
...
...
@@ -535,9 +535,7 @@ static void cdrom_prepare_request(struct request *rq)
rq
->
flags
=
REQ_PC
;
}
static
void
cdrom_queue_request_sense
(
ide_drive_t
*
drive
,
struct
completion
*
wait
,
void
*
sense
,
static
void
cdrom_queue_request_sense
(
ide_drive_t
*
drive
,
void
*
sense
,
struct
request
*
failed_command
)
{
struct
cdrom_info
*
info
=
drive
->
driver_data
;
...
...
@@ -554,7 +552,6 @@ static void cdrom_queue_request_sense(ide_drive_t *drive,
rq
->
cmd
[
4
]
=
rq
->
data_len
=
18
;
rq
->
flags
=
REQ_SENSE
;
rq
->
waiting
=
wait
;
/* NOTE! Save the failed command in "rq->buffer" */
rq
->
buffer
=
(
void
*
)
failed_command
;
...
...
@@ -631,10 +628,21 @@ static void cdrom_end_request (ide_drive_t *drive, int uptodate)
struct
request
*
failed
=
(
struct
request
*
)
rq
->
buffer
;
struct
cdrom_info
*
info
=
drive
->
driver_data
;
void
*
sense
=
&
info
->
sense_data
;
if
(
failed
&&
failed
->
sense
)
{
sense
=
failed
->
sense
;
failed
->
sense_len
=
rq
->
sense_len
;
unsigned
long
flags
;
if
(
failed
)
{
if
(
failed
->
sense
)
{
sense
=
failed
->
sense
;
failed
->
sense_len
=
rq
->
sense_len
;
}
/*
* now end failed request
*/
spin_lock_irqsave
(
&
ide_lock
,
flags
);
end_that_request_chunk
(
failed
,
0
,
failed
->
data_len
);
end_that_request_last
(
failed
);
spin_unlock_irqrestore
(
&
ide_lock
,
flags
);
}
cdrom_analyze_sense_data
(
drive
,
failed
,
sense
);
...
...
@@ -642,6 +650,9 @@ static void cdrom_end_request (ide_drive_t *drive, int uptodate)
if
(
!
rq
->
current_nr_sectors
&&
blk_fs_request
(
rq
))
uptodate
=
1
;
/* make sure it's fully ended */
if
(
blk_pc_request
(
rq
))
nsectors
=
(
rq
->
data_len
+
511
)
>>
9
;
if
(
!
nsectors
)
nsectors
=
1
;
...
...
@@ -684,7 +695,7 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
}
else
if
(
rq
->
flags
&
(
REQ_PC
|
REQ_BLOCK_PC
))
{
/* All other functions, except for READ. */
struct
completion
*
wait
=
NULL
;
unsigned
long
flags
;
/*
* if we have an error, pass back CHECK_CONDITION as the
...
...
@@ -706,30 +717,23 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
ide_dump_status
(
drive
,
"packet command error"
,
stat
);
}
/* Set the error flag and complete the request.
Then, if we have a CHECK CONDITION status,
queue a request sense command. We must be careful,
though: we don't want the thread in
cdrom_queue_packet_command to wake up until
the request sense has completed. We do this
by transferring the semaphore from the packet
command request to the request sense request. */
rq
->
flags
|=
REQ_FAILED
;
if
((
stat
&
ERR_STAT
)
!=
0
)
{
wait
=
rq
->
waiting
;
rq
->
waiting
=
NULL
;
if
((
rq
->
flags
&
REQ_BLOCK_PC
)
!=
0
)
{
cdrom_queue_request_sense
(
drive
,
wait
,
rq
->
sense
,
rq
);
return
1
;
/* REQ_BLOCK_PC self-cares */
}
}
cdrom_end_request
(
drive
,
0
);
/*
* instead of playing games with moving completions around,
* remove failed request completely and end it when the
* request sense has completed
*/
if
(
stat
&
ERR_STAT
)
{
spin_lock_irqsave
(
&
ide_lock
,
flags
);
blkdev_dequeue_request
(
rq
);
HWGROUP
(
drive
)
->
rq
=
NULL
;
spin_unlock_irqrestore
(
&
ide_lock
,
flags
);
cdrom_queue_request_sense
(
drive
,
rq
->
sense
,
rq
);
}
else
cdrom_end_request
(
drive
,
0
);
if
((
stat
&
ERR_STAT
)
!=
0
)
cdrom_queue_request_sense
(
drive
,
wait
,
rq
->
sense
,
rq
);
}
else
if
(
blk_fs_request
(
rq
))
{
int
do_end_request
=
0
;
...
...
@@ -818,7 +822,7 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
/* If we got a CHECK_CONDITION status,
queue a request sense command. */
if
((
stat
&
ERR_STAT
)
!=
0
)
cdrom_queue_request_sense
(
drive
,
NULL
,
NULL
,
NULL
);
cdrom_queue_request_sense
(
drive
,
NULL
,
NULL
);
}
else
{
blk_dump_rq_flags
(
rq
,
"ide-cd: bad rq"
);
cdrom_end_request
(
drive
,
0
);
...
...
@@ -1666,14 +1670,8 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
dma_error
=
HWIF
(
drive
)
->
ide_dma_end
(
drive
);
}
if
(
cdrom_decode_status
(
drive
,
0
,
&
stat
))
{
if
((
stat
&
ERR_STAT
)
!=
0
)
{
end_that_request_chunk
(
rq
,
0
,
rq
->
data_len
);
goto
end_request
;
/* purge the whole thing... */
}
end_that_request_chunk
(
rq
,
1
,
rq
->
data_len
);
if
(
cdrom_decode_status
(
drive
,
0
,
&
stat
))
return
ide_stopped
;
}
/*
* using dma, transfer is complete now
...
...
drivers/scsi/Kconfig
View file @
981a1ad3
...
...
@@ -352,7 +352,7 @@ source "drivers/scsi/aic7xxx/Kconfig.aic79xx"
#
All
the
I2O
code
and
drivers
do
not
seem
to
be
64
bit
safe
.
config
SCSI_DPT_I2O
tristate
"Adaptec I2O RAID support "
depends
on
!64BIT && SCSI
depends
on
!64BIT && SCSI
&& PCI
help
This
driver
supports
all
of
Adaptec
's I2O based RAID controllers as
well as the DPT SmartRaid V cards. This is an Adaptec maintained
...
...
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