| # SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB) | |
| # Copyright (c) 2019 Mellanox Technologies, Inc. All rights reserved. See COPYING file | |
| """ | |
| Test module for Mlx5 VAR allocation. | |
| """ | |
| from pyverbs.pyverbs_error import PyverbsRDMAError | |
| from pyverbs.providers.mlx5.mlx5dv import Mlx5VAR | |
| from tests.mlx5_base import Mlx5RDMATestCase | |
| from tests.base import BaseResources | |
| import unittest | |
| import errno | |
| import mmap | |
| class Mlx5VarRes(BaseResources): | |
| def __init__(self, dev_name, ib_port=None, gid_index=None): | |
| super().__init__(dev_name, ib_port, gid_index) | |
| try: | |
| self.var = Mlx5VAR(self.ctx) | |
| except PyverbsRDMAError as ex: | |
| if ex.error_code == errno.EOPNOTSUPP or ex.error_code == errno.EPROTONOSUPPORT: | |
| raise unittest.SkipTest('VAR allocation is not supported') | |
| class Mlx5VarTestCase(Mlx5RDMATestCase): | |
| def setUp(self): | |
| super().setUp() | |
| self.var_res = Mlx5VarRes(self.dev_name) | |
| def test_var_map_unmap(self): | |
| var_map = mmap.mmap(fileno=self.var_res.ctx.cmd_fd, | |
| length=self.var_res.var.length, | |
| offset=self.var_res.var.mmap_off) | |
| # There is no munmap method in mmap Python module, but by closing the | |
| # mmap instance the memory is unmapped. | |
| var_map.close() | |
| self.var_res.var.close() |