linux/drivers/block/rsxx
Philip J Kelleher e35f38bf73 rsxx: Disallow discards from being unmapped.
This patch fixes a bug in which discards were always
calling pci_unmap_page. Discards should never call the
pci_unmap_page function call because they are never mapped.

This caused a race condition on PowerPC systems when issuing
discards, writes, and reads all at the same time. The
pci_map_page function would eventually map logical address
0 for a read or write. Discards are always assigned a DMA
address of 0 because they are never mapped. So if
pci_map_page mapped address 0 for a DMA and a discard was
"unmapped" then the address would be freed and would cause
an EEH event to occur when Hardware accesses the address.

This was injected/uncovered in commit:
b347f9cf0bc8d42ee95ba1d3837fd93045ab336b

The pci_dma_mapping_error function declares -1 a DMA_ERROR
not 0 like initially thought So before we would never unmap
discards because they were considered NULL.

This patch should fall on top of commit id:
fc1967bb08a6184ed44ef990e1dd4389901b809c

Also, the driver version is being up dated.

Signed-off-by: Philip J Kelleher <pjk1939@linux.vnet.ibm.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2013-11-08 09:10:29 -07:00
..
config.c block: IBM RamSan 70/80 branding changes. 2013-03-11 19:53:55 +01:00
core.c rsxx: Moving pci_map_page to prevent overflow. 2013-11-08 09:10:28 -07:00
cregs.c rsxx: Adding EEH check inside cregs timeout. 2013-06-19 13:52:10 +02:00
dev.c rsxx: Adapter address space sanity check. 2013-06-19 13:52:10 +02:00
dma.c rsxx: Disallow discards from being unmapped. 2013-11-08 09:10:29 -07:00
Makefile block: IBM RamSan 70/80 branding changes. 2013-03-11 19:53:55 +01:00
rsxx_cfg.h block: IBM RamSan 70/80 branding changes. 2013-03-11 19:53:55 +01:00
rsxx_priv.h rsxx: Disallow discards from being unmapped. 2013-11-08 09:10:29 -07:00
rsxx.h block: IBM RamSan 70/80 trivial changes. 2013-03-11 19:53:55 +01:00