From 49e832c6be4c80a3263e6489d1efe33d4a3efafe Mon Sep 17 00:00:00 2001 From: Catalin Marinas Date: Thu, 10 Jun 2010 17:02:12 +0100 Subject: [PATCH] --- yaml --- r: 200327 b: refs/heads/master c: 1082345290dbc66c19877662cb24c18ee4ae1296 h: refs/heads/master i: 200325: 079b9e2fb3c68d4155fcb25cd711a6ab7504a065 200323: 5d15c1793b450c65489efd4df2d75fca4fa57caa 200319: 754f72bbd0a238e6c454b203c2c2682f9b795510 v: v3 --- [refs] | 2 +- trunk/drivers/ata/sata_sil24.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 0d0fd704807c..fda1a5a8f652 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 14e45c15e1dcc4d972b41343661683efd60fed72 +refs/heads/master: 1082345290dbc66c19877662cb24c18ee4ae1296 diff --git a/trunk/drivers/ata/sata_sil24.c b/trunk/drivers/ata/sata_sil24.c index a7f0139c3aae..be7726d7686d 100644 --- a/trunk/drivers/ata/sata_sil24.c +++ b/trunk/drivers/ata/sata_sil24.c @@ -622,6 +622,11 @@ static int sil24_exec_polled_cmd(struct ata_port *ap, int pmp, irq_enabled = readl(port + PORT_IRQ_ENABLE_SET); writel(PORT_IRQ_COMPLETE | PORT_IRQ_ERROR, port + PORT_IRQ_ENABLE_CLR); + /* + * The barrier is required to ensure that writes to cmd_block reach + * the memory before the write to PORT_CMD_ACTIVATE. + */ + wmb(); writel((u32)paddr, port + PORT_CMD_ACTIVATE); writel((u64)paddr >> 32, port + PORT_CMD_ACTIVATE + 4); @@ -895,6 +900,11 @@ static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc) paddr = pp->cmd_block_dma + tag * sizeof(*pp->cmd_block); activate = port + PORT_CMD_ACTIVATE + tag * 8; + /* + * The barrier is required to ensure that writes to cmd_block reach + * the memory before the write to PORT_CMD_ACTIVATE. + */ + wmb(); writel((u32)paddr, activate); writel((u64)paddr >> 32, activate + 4);