提交 7a4f876b 编写于 作者: C Colin Tuckley 提交者: Jeff Garzik

sata_sil24: fix kernel panic on ARM caused by unaligned access in sata_sil24

The sata_sil24 driver has six 16-bit registers that are initialised with
32-bit writes. This cause a kernel panic on ARM due to the unaligned
accesses which result.

This patch changes the accesses to the correct 16-bit ones.
Signed-off-by: NColin Tuckley <colin.tuckley@arm.com>
Signed-off-by: NTejun Heo <tj@kernel.org>
Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
上级 4daedcfe
...@@ -539,12 +539,12 @@ static void sil24_config_port(struct ata_port *ap) ...@@ -539,12 +539,12 @@ static void sil24_config_port(struct ata_port *ap)
writel(PORT_CS_IRQ_WOC, port + PORT_CTRL_CLR); writel(PORT_CS_IRQ_WOC, port + PORT_CTRL_CLR);
/* zero error counters. */ /* zero error counters. */
writel(0x8000, port + PORT_DECODE_ERR_THRESH); writew(0x8000, port + PORT_DECODE_ERR_THRESH);
writel(0x8000, port + PORT_CRC_ERR_THRESH); writew(0x8000, port + PORT_CRC_ERR_THRESH);
writel(0x8000, port + PORT_HSHK_ERR_THRESH); writew(0x8000, port + PORT_HSHK_ERR_THRESH);
writel(0x0000, port + PORT_DECODE_ERR_CNT); writew(0x0000, port + PORT_DECODE_ERR_CNT);
writel(0x0000, port + PORT_CRC_ERR_CNT); writew(0x0000, port + PORT_CRC_ERR_CNT);
writel(0x0000, port + PORT_HSHK_ERR_CNT); writew(0x0000, port + PORT_HSHK_ERR_CNT);
/* always use 64bit activation */ /* always use 64bit activation */
writel(PORT_CS_32BIT_ACTV, port + PORT_CTRL_CLR); writel(PORT_CS_32BIT_ACTV, port + PORT_CTRL_CLR);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册