diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:53:04 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:53:04 -0400 |
commit | 162b96e63e518aa6ff029ce23de12d7f027483bf (patch) | |
tree | 532191d0cef7cf975b70a07b1c69a293d6f552f7 /drivers/dma/ioat/dma_v2.h | |
parent | 0803172778901e24a75ab074798d98c2b7411559 (diff) |
ioat2,3: cacheline align software descriptor allocations
All the necessary fields for handling an ioat2,3 ring entry can fit into
one cacheline. Move ->len prior to ->txd in struct ioat_ring_ent, and
move allocation of these entries to a hw-cache-aligned kmem cache to
reduce the number of cachelines dirtied for descriptor management.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/dma/ioat/dma_v2.h')
-rw-r--r-- | drivers/dma/ioat/dma_v2.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/dma/ioat/dma_v2.h b/drivers/dma/ioat/dma_v2.h index 9baa3d6065ff..ac00adc81974 100644 --- a/drivers/dma/ioat/dma_v2.h +++ b/drivers/dma/ioat/dma_v2.h | |||
@@ -116,8 +116,8 @@ static inline u16 ioat2_xferlen_to_descs(struct ioat2_dma_chan *ioat, size_t len | |||
116 | 116 | ||
117 | struct ioat_ring_ent { | 117 | struct ioat_ring_ent { |
118 | struct ioat_dma_descriptor *hw; | 118 | struct ioat_dma_descriptor *hw; |
119 | struct dma_async_tx_descriptor txd; | ||
120 | size_t len; | 119 | size_t len; |
120 | struct dma_async_tx_descriptor txd; | ||
121 | #ifdef DEBUG | 121 | #ifdef DEBUG |
122 | int id; | 122 | int id; |
123 | #endif | 123 | #endif |
@@ -143,4 +143,5 @@ int __devinit ioat2_dma_probe(struct ioatdma_device *dev, int dca); | |||
143 | int __devinit ioat3_dma_probe(struct ioatdma_device *dev, int dca); | 143 | int __devinit ioat3_dma_probe(struct ioatdma_device *dev, int dca); |
144 | struct dca_provider * __devinit ioat2_dca_init(struct pci_dev *pdev, void __iomem *iobase); | 144 | struct dca_provider * __devinit ioat2_dca_init(struct pci_dev *pdev, void __iomem *iobase); |
145 | struct dca_provider * __devinit ioat3_dca_init(struct pci_dev *pdev, void __iomem *iobase); | 145 | struct dca_provider * __devinit ioat3_dca_init(struct pci_dev *pdev, void __iomem *iobase); |
146 | extern struct kmem_cache *ioat2_cache; | ||
146 | #endif /* IOATDMA_V2_H */ | 147 | #endif /* IOATDMA_V2_H */ |