Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
614f8f50
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
614f8f50
编写于
2月 17, 2006
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
上级
00ab2f3d
c15d85c8
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
34 addition
and
4 deletion
+34
-4
drivers/scsi/libata-core.c
drivers/scsi/libata-core.c
+4
-3
drivers/scsi/sata_mv.c
drivers/scsi/sata_mv.c
+1
-0
drivers/scsi/sata_vsc.c
drivers/scsi/sata_vsc.c
+29
-1
未找到文件。
drivers/scsi/libata-core.c
浏览文件 @
614f8f50
...
...
@@ -614,7 +614,7 @@ int ata_rwcmd_protocol(struct ata_queued_cmd *qc)
}
else
if
(
lba48
&&
(
qc
->
ap
->
flags
&
ATA_FLAG_PIO_LBA48
))
{
/* Unable to use DMA due to host limitation */
tf
->
protocol
=
ATA_PROT_PIO
;
index
=
dev
->
multi_count
?
0
:
4
;
index
=
dev
->
multi_count
?
0
:
8
;
}
else
{
tf
->
protocol
=
ATA_PROT_DMA
;
index
=
16
;
...
...
@@ -3357,11 +3357,12 @@ static void ata_pio_error(struct ata_port *ap)
{
struct
ata_queued_cmd
*
qc
;
printk
(
KERN_WARNING
"ata%u: PIO error
\n
"
,
ap
->
id
);
qc
=
ata_qc_from_tag
(
ap
,
ap
->
active_tag
);
assert
(
qc
!=
NULL
);
if
(
qc
->
tf
.
command
!=
ATA_CMD_PACKET
)
printk
(
KERN_WARNING
"ata%u: PIO error
\n
"
,
ap
->
id
);
/* make sure qc->err_mask is available to
* know what's wrong and recover
*/
...
...
drivers/scsi/sata_mv.c
浏览文件 @
614f8f50
...
...
@@ -997,6 +997,7 @@ static void mv_qc_prep(struct ata_queued_cmd *qc)
case
ATA_CMD_READ_EXT
:
case
ATA_CMD_WRITE
:
case
ATA_CMD_WRITE_EXT
:
case
ATA_CMD_WRITE_FUA_EXT
:
mv_crqb_pack_cmd
(
cw
++
,
tf
->
hob_nsect
,
ATA_REG_NSECT
,
0
);
break
;
#ifdef LIBATA_NCQ
/* FIXME: remove this line when NCQ added */
...
...
drivers/scsi/sata_vsc.c
浏览文件 @
614f8f50
...
...
@@ -81,6 +81,19 @@
/* Port stride */
#define VSC_SATA_PORT_OFFSET 0x200
/* Error interrupt status bit offsets */
#define VSC_SATA_INT_ERROR_E_OFFSET 2
#define VSC_SATA_INT_ERROR_P_OFFSET 4
#define VSC_SATA_INT_ERROR_T_OFFSET 5
#define VSC_SATA_INT_ERROR_M_OFFSET 1
#define is_vsc_sata_int_err(port_idx, int_status) \
(int_status & ((1 << (VSC_SATA_INT_ERROR_E_OFFSET + (8 * port_idx))) | \
(1 << (VSC_SATA_INT_ERROR_P_OFFSET + (8 * port_idx))) | \
(1 << (VSC_SATA_INT_ERROR_T_OFFSET + (8 * port_idx))) | \
(1 << (VSC_SATA_INT_ERROR_M_OFFSET + (8 * port_idx))) \
)\
)
static
u32
vsc_sata_scr_read
(
struct
ata_port
*
ap
,
unsigned
int
sc_reg
)
{
...
...
@@ -201,13 +214,28 @@ static irqreturn_t vsc_sata_interrupt (int irq, void *dev_instance,
struct
ata_port
*
ap
;
ap
=
host_set
->
ports
[
i
];
if
(
is_vsc_sata_int_err
(
i
,
int_status
))
{
u32
err_status
;
printk
(
KERN_DEBUG
"%s: ignoring interrupt(s)
\n
"
,
__FUNCTION__
);
err_status
=
ap
?
vsc_sata_scr_read
(
ap
,
SCR_ERROR
)
:
0
;
vsc_sata_scr_write
(
ap
,
SCR_ERROR
,
err_status
);
handled
++
;
}
if
(
ap
&&
!
(
ap
->
flags
&
(
ATA_FLAG_PORT_DISABLED
|
ATA_FLAG_NOINTR
)))
{
struct
ata_queued_cmd
*
qc
;
qc
=
ata_qc_from_tag
(
ap
,
ap
->
active_tag
);
if
(
qc
&&
(
!
(
qc
->
tf
.
ctl
&
ATA_NIEN
)))
if
(
qc
&&
(
!
(
qc
->
tf
.
ctl
&
ATA_NIEN
)))
{
handled
+=
ata_host_intr
(
ap
,
qc
);
}
else
{
printk
(
KERN_DEBUG
"%s: ignoring interrupt(s)
\n
"
,
__FUNCTION__
);
ata_chk_status
(
ap
);
handled
++
;
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录