[PATCH] IB/mthca: map MPT/MTT context in mem-free mode
In mem-free mode, when allocating memory regions, make sure that the HCA has context memory mapped to cover the virtual space used for the MPT and MTTs being used. Signed-off-by: Roland Dreier <roland@topspin.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committad av
Linus Torvalds

förälder
79b61dceaf
incheckning
86562a1391
@@ -192,6 +192,38 @@ void mthca_table_put(struct mthca_dev *dev, struct mthca_icm_table *table, int o
|
||||
up(&table->mutex);
|
||||
}
|
||||
|
||||
int mthca_table_get_range(struct mthca_dev *dev, struct mthca_icm_table *table,
|
||||
int start, int end)
|
||||
{
|
||||
int inc = MTHCA_TABLE_CHUNK_SIZE / table->obj_size;
|
||||
int i, err;
|
||||
|
||||
for (i = start; i <= end; i += inc) {
|
||||
err = mthca_table_get(dev, table, i);
|
||||
if (err)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
while (i > start) {
|
||||
i -= inc;
|
||||
mthca_table_put(dev, table, i);
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
void mthca_table_put_range(struct mthca_dev *dev, struct mthca_icm_table *table,
|
||||
int start, int end)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = start; i <= end; i += MTHCA_TABLE_CHUNK_SIZE / table->obj_size)
|
||||
mthca_table_put(dev, table, i);
|
||||
}
|
||||
|
||||
struct mthca_icm_table *mthca_alloc_icm_table(struct mthca_dev *dev,
|
||||
u64 virt, int obj_size,
|
||||
int nobj, int reserved,
|
||||
|
Referens i nytt ärende
Block a user