diff options
author | Thomas Abraham <thomas.abraham@linaro.org> | 2012-05-01 14:57:36 -0700 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-05-09 10:14:10 -0400 |
commit | 95dcc2cb6c9c84555c29187f8b7cf39e83991a29 (patch) | |
tree | 4e15db2d0f5dc52c3e5c1d5e2446986e6dc632c4 /include/linux/mmc/dw_mmc.h | |
parent | b41b6f1d1cb6a16c737c4699d2815112ec21faa6 (diff) | |
download | linux-95dcc2cb6c9c84555c29187f8b7cf39e83991a29.tar.gz linux-95dcc2cb6c9c84555c29187f8b7cf39e83991a29.tar.bz2 linux-95dcc2cb6c9c84555c29187f8b7cf39e83991a29.zip |
mmc: dw_mmc: make multiple instances of dw_mci_card_workqueue
The variable 'dw_mci_card_workqueue' is a global variable shared between
multiple instances of the dw_mmc host controller. Due to this, data
corruption has been noticed when multiple instances of dw_mmc controllers
are actively reading/writing the media. Fix this by adding a instance
of 'struct workqueue_struct' for each host instance and removing the
global 'dw_mci_card_workqueue' instance.
Signed-off-by: Thomas Abraham <thomas.abraham@linaro.org>
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
Acked-by: Will Newton <will.newton@imgtec.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'include/linux/mmc/dw_mmc.h')
-rw-r--r-- | include/linux/mmc/dw_mmc.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h index 8f66e28f5a0f..7a7ebd367cfd 100644 --- a/include/linux/mmc/dw_mmc.h +++ b/include/linux/mmc/dw_mmc.h @@ -125,6 +125,7 @@ struct dw_mci { struct mmc_request *mrq; struct mmc_command *cmd; struct mmc_data *data; + struct workqueue_struct *card_workqueue; /* DMA interface members*/ int use_dma; |