diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2013-08-02 12:55:15 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2013-08-06 12:55:24 -0400 |
commit | 90d9dd66957a744831146dbb1a9e4f96a9106100 (patch) | |
tree | 6a6755c47ff49390891ce3fcf624d37547007671 /arch/tile/gxio/iorpc_trio.c | |
parent | 803c874abe1358998ab65a8cca728684ebb50a13 (diff) |
tile PCI RC: support more MSI-X interrupt vectors
To support PCIe devices with higher number of MSI-X interrupt vectors,
e.g. 16 for the LSI RAID card, enhance the Gx RC stack to provide more
MSI-X vectors by using the TRIO Scatter Queues, which provide 8 more
vectors in addition to ~10 from the Map Mem regions.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile/gxio/iorpc_trio.c')
-rw-r--r-- | arch/tile/gxio/iorpc_trio.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/tile/gxio/iorpc_trio.c b/arch/tile/gxio/iorpc_trio.c index cef4b2209cda..da6e18e049c3 100644 --- a/arch/tile/gxio/iorpc_trio.c +++ b/arch/tile/gxio/iorpc_trio.c | |||
@@ -61,6 +61,29 @@ int gxio_trio_alloc_memory_maps(gxio_trio_context_t * context, | |||
61 | 61 | ||
62 | EXPORT_SYMBOL(gxio_trio_alloc_memory_maps); | 62 | EXPORT_SYMBOL(gxio_trio_alloc_memory_maps); |
63 | 63 | ||
64 | struct alloc_scatter_queues_param { | ||
65 | unsigned int count; | ||
66 | unsigned int first; | ||
67 | unsigned int flags; | ||
68 | }; | ||
69 | |||
70 | int gxio_trio_alloc_scatter_queues(gxio_trio_context_t * context, | ||
71 | unsigned int count, unsigned int first, | ||
72 | unsigned int flags) | ||
73 | { | ||
74 | struct alloc_scatter_queues_param temp; | ||
75 | struct alloc_scatter_queues_param *params = &temp; | ||
76 | |||
77 | params->count = count; | ||
78 | params->first = first; | ||
79 | params->flags = flags; | ||
80 | |||
81 | return hv_dev_pwrite(context->fd, 0, (HV_VirtAddr) params, | ||
82 | sizeof(*params), | ||
83 | GXIO_TRIO_OP_ALLOC_SCATTER_QUEUES); | ||
84 | } | ||
85 | |||
86 | EXPORT_SYMBOL(gxio_trio_alloc_scatter_queues); | ||
64 | 87 | ||
65 | struct alloc_pio_regions_param { | 88 | struct alloc_pio_regions_param { |
66 | unsigned int count; | 89 | unsigned int count; |