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
Kirill Smelkov
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
Show 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)
...
@@ -142,6 +142,13 @@ DRM(set_busid)(drm_device_t *dev)
snprintf
(
dev
->
unique
,
dev
->
unique_len
,
"pci:%04x:%02x:%02x.%d"
,
snprintf
(
dev
->
unique
,
dev
->
unique_len
,
"pci:%04x:%02x:%02x.%d"
,
dev
->
pci_domain
,
dev
->
pci_bus
,
dev
->
pci_slot
,
dev
->
pci_func
);
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
;
return
0
;
}
}
...
...
drivers/char/drm/gamma_dma.c
View file @
981a1ad3
...
@@ -346,6 +346,9 @@ static int gamma_dma_priority(struct file *filp,
...
@@ -346,6 +346,9 @@ static int gamma_dma_priority(struct file *filp,
drm_buf_t
*
buf
;
drm_buf_t
*
buf
;
drm_buf_t
*
last_buf
=
NULL
;
drm_buf_t
*
last_buf
=
NULL
;
drm_device_dma_t
*
dma
=
dev
->
dma
;
drm_device_dma_t
*
dma
=
dev
->
dma
;
int
*
send_indices
=
NULL
;
int
*
send_sizes
=
NULL
;
DECLARE_WAITQUEUE
(
entry
,
current
);
DECLARE_WAITQUEUE
(
entry
,
current
);
/* Turn off interrupt handling */
/* Turn off interrupt handling */
...
@@ -365,11 +368,31 @@ static int gamma_dma_priority(struct file *filp,
...
@@ -365,11 +368,31 @@ static int gamma_dma_priority(struct file *filp,
++
must_free
;
++
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
++
)
{
for
(
i
=
0
;
i
<
d
->
send_count
;
i
++
)
{
idx
=
d
->
send_indices
[
i
];
idx
=
send_indices
[
i
];
if
(
idx
<
0
||
idx
>=
dma
->
buf_count
)
{
if
(
idx
<
0
||
idx
>=
dma
->
buf_count
)
{
DRM_ERROR
(
"Index %d (of %d max)
\n
"
,
DRM_ERROR
(
"Index %d (of %d max)
\n
"
,
d
->
send_indices
[
i
],
dma
->
buf_count
-
1
);
send_indices
[
i
],
dma
->
buf_count
-
1
);
continue
;
continue
;
}
}
buf
=
dma
->
buflist
[
idx
];
buf
=
dma
->
buflist
[
idx
];
...
@@ -391,7 +414,7 @@ static int gamma_dma_priority(struct file *filp,
...
@@ -391,7 +414,7 @@ static int gamma_dma_priority(struct file *filp,
process closes the /dev/drm? handle, so
process closes the /dev/drm? handle, so
it can't also be doing DMA. */
it can't also be doing DMA. */
buf
->
list
=
DRM_LIST_PRIO
;
buf
->
list
=
DRM_LIST_PRIO
;
buf
->
used
=
d
->
send_sizes
[
i
];
buf
->
used
=
send_sizes
[
i
];
buf
->
context
=
d
->
context
;
buf
->
context
=
d
->
context
;
buf
->
while_locked
=
d
->
flags
&
_DRM_DMA_WHILE_LOCKED
;
buf
->
while_locked
=
d
->
flags
&
_DRM_DMA_WHILE_LOCKED
;
address
=
(
unsigned
long
)
buf
->
address
;
address
=
(
unsigned
long
)
buf
->
address
;
...
@@ -402,14 +425,14 @@ static int gamma_dma_priority(struct file *filp,
...
@@ -402,14 +425,14 @@ static int gamma_dma_priority(struct file *filp,
if
(
buf
->
pending
)
{
if
(
buf
->
pending
)
{
DRM_ERROR
(
"Sending pending buffer:"
DRM_ERROR
(
"Sending pending buffer:"
" buffer %d, offset %d
\n
"
,
" buffer %d, offset %d
\n
"
,
d
->
send_indices
[
i
],
i
);
send_indices
[
i
],
i
);
retcode
=
-
EINVAL
;
retcode
=
-
EINVAL
;
goto
cleanup
;
goto
cleanup
;
}
}
if
(
buf
->
waiting
)
{
if
(
buf
->
waiting
)
{
DRM_ERROR
(
"Sending waiting buffer:"
DRM_ERROR
(
"Sending waiting buffer:"
" buffer %d, offset %d
\n
"
,
" buffer %d, offset %d
\n
"
,
d
->
send_indices
[
i
],
i
);
send_indices
[
i
],
i
);
retcode
=
-
EINVAL
;
retcode
=
-
EINVAL
;
goto
cleanup
;
goto
cleanup
;
}
}
...
@@ -458,6 +481,12 @@ static int gamma_dma_priority(struct file *filp,
...
@@ -458,6 +481,12 @@ static int gamma_dma_priority(struct file *filp,
gamma_dma_ready
(
dev
);
gamma_dma_ready
(
dev
);
gamma_free_buffer
(
dev
,
last_buf
);
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
(
must_free
&&
!
dev
->
context_flag
)
{
if
(
gamma_lock_free
(
dev
,
&
dev
->
lock
.
hw_lock
->
lock
,
if
(
gamma_lock_free
(
dev
,
&
dev
->
lock
.
hw_lock
->
lock
,
...
@@ -476,9 +505,13 @@ static int gamma_dma_send_buffers(struct file *filp,
...
@@ -476,9 +505,13 @@ static int gamma_dma_send_buffers(struct file *filp,
drm_buf_t
*
last_buf
=
NULL
;
drm_buf_t
*
last_buf
=
NULL
;
int
retcode
=
0
;
int
retcode
=
0
;
drm_device_dma_t
*
dma
=
dev
->
dma
;
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
)
{
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
);
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)
...
@@ -535,9 +535,7 @@ static void cdrom_prepare_request(struct request *rq)
rq
->
flags
=
REQ_PC
;
rq
->
flags
=
REQ_PC
;
}
}
static
void
cdrom_queue_request_sense
(
ide_drive_t
*
drive
,
static
void
cdrom_queue_request_sense
(
ide_drive_t
*
drive
,
void
*
sense
,
struct
completion
*
wait
,
void
*
sense
,
struct
request
*
failed_command
)
struct
request
*
failed_command
)
{
{
struct
cdrom_info
*
info
=
drive
->
driver_data
;
struct
cdrom_info
*
info
=
drive
->
driver_data
;
...
@@ -554,7 +552,6 @@ static void cdrom_queue_request_sense(ide_drive_t *drive,
...
@@ -554,7 +552,6 @@ static void cdrom_queue_request_sense(ide_drive_t *drive,
rq
->
cmd
[
4
]
=
rq
->
data_len
=
18
;
rq
->
cmd
[
4
]
=
rq
->
data_len
=
18
;
rq
->
flags
=
REQ_SENSE
;
rq
->
flags
=
REQ_SENSE
;
rq
->
waiting
=
wait
;
/* NOTE! Save the failed command in "rq->buffer" */
/* NOTE! Save the failed command in "rq->buffer" */
rq
->
buffer
=
(
void
*
)
failed_command
;
rq
->
buffer
=
(
void
*
)
failed_command
;
...
@@ -631,17 +628,31 @@ static void cdrom_end_request (ide_drive_t *drive, int uptodate)
...
@@ -631,17 +628,31 @@ static void cdrom_end_request (ide_drive_t *drive, int uptodate)
struct
request
*
failed
=
(
struct
request
*
)
rq
->
buffer
;
struct
request
*
failed
=
(
struct
request
*
)
rq
->
buffer
;
struct
cdrom_info
*
info
=
drive
->
driver_data
;
struct
cdrom_info
*
info
=
drive
->
driver_data
;
void
*
sense
=
&
info
->
sense_data
;
void
*
sense
=
&
info
->
sense_data
;
unsigned
long
flags
;
if
(
failed
&&
failed
->
sense
)
{
if
(
failed
)
{
if
(
failed
->
sense
)
{
sense
=
failed
->
sense
;
sense
=
failed
->
sense
;
failed
->
sense_len
=
rq
->
sense_len
;
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
);
cdrom_analyze_sense_data
(
drive
,
failed
,
sense
);
}
}
if
(
!
rq
->
current_nr_sectors
&&
blk_fs_request
(
rq
))
if
(
!
rq
->
current_nr_sectors
&&
blk_fs_request
(
rq
))
uptodate
=
1
;
uptodate
=
1
;
/* make sure it's fully ended */
if
(
blk_pc_request
(
rq
))
nsectors
=
(
rq
->
data_len
+
511
)
>>
9
;
if
(
!
nsectors
)
if
(
!
nsectors
)
nsectors
=
1
;
nsectors
=
1
;
...
@@ -684,7 +695,7 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
...
@@ -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
))
{
}
else
if
(
rq
->
flags
&
(
REQ_PC
|
REQ_BLOCK_PC
))
{
/* All other functions, except for READ. */
/* All other functions, except for READ. */
struct
completion
*
wait
=
NULL
;
unsigned
long
flags
;
/*
/*
* if we have an error, pass back CHECK_CONDITION as the
* 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)
...
@@ -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
);
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
;
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 */
}
}
/*
* 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
);
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
))
{
}
else
if
(
blk_fs_request
(
rq
))
{
int
do_end_request
=
0
;
int
do_end_request
=
0
;
...
@@ -818,7 +822,7 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
...
@@ -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,
/* If we got a CHECK_CONDITION status,
queue a request sense command. */
queue a request sense command. */
if
((
stat
&
ERR_STAT
)
!=
0
)
if
((
stat
&
ERR_STAT
)
!=
0
)
cdrom_queue_request_sense
(
drive
,
NULL
,
NULL
,
NULL
);
cdrom_queue_request_sense
(
drive
,
NULL
,
NULL
);
}
else
{
}
else
{
blk_dump_rq_flags
(
rq
,
"ide-cd: bad rq"
);
blk_dump_rq_flags
(
rq
,
"ide-cd: bad rq"
);
cdrom_end_request
(
drive
,
0
);
cdrom_end_request
(
drive
,
0
);
...
@@ -1666,14 +1670,8 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
...
@@ -1666,14 +1670,8 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
dma_error
=
HWIF
(
drive
)
->
ide_dma_end
(
drive
);
dma_error
=
HWIF
(
drive
)
->
ide_dma_end
(
drive
);
}
}
if
(
cdrom_decode_status
(
drive
,
0
,
&
stat
))
{
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
);
return
ide_stopped
;
return
ide_stopped
;
}
/*
/*
* using dma, transfer is complete now
* using dma, transfer is complete now
...
...
drivers/scsi/Kconfig
View file @
981a1ad3
...
@@ -352,7 +352,7 @@ source "drivers/scsi/aic7xxx/Kconfig.aic79xx"
...
@@ -352,7 +352,7 @@ source "drivers/scsi/aic7xxx/Kconfig.aic79xx"
#
All
the
I2O
code
and
drivers
do
not
seem
to
be
64
bit
safe
.
#
All
the
I2O
code
and
drivers
do
not
seem
to
be
64
bit
safe
.
config
SCSI_DPT_I2O
config
SCSI_DPT_I2O
tristate
"Adaptec I2O RAID support "
tristate
"Adaptec I2O RAID support "
depends
on
!64BIT && SCSI
depends
on
!64BIT && SCSI
&& PCI
help
help
This
driver
supports
all
of
Adaptec
's I2O based RAID controllers as
This
driver
supports
all
of
Adaptec
's I2O based RAID controllers as
well as the DPT SmartRaid V cards. This is an Adaptec maintained
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