예제 #1
0
def open_mst_dev():
    global MST_DEVICE
    global CMDIFDEV
    if MST_DEVICE is None:
        MST_DEVICE = mtcr.MstDevice(DEV_NAME)
        if CMDIFDEV is not None:
            CMDIFDEV = cmdif.CmdIf(MST_DEVICE)
예제 #2
0
def start_tracer():

    try:
        parse_cmd_line_args()
        if not DEV_NAME:
            raise TracerException(
                "Missing device name, please provide device name. Check help [--help]"
            )
        global MST_DEVICE
        global CMDIFDEV
        MST_DEVICE = mtcr.MstDevice(DEV_NAME)
        devInfo = get_device_info(MST_DEVICE)
        CMDIFDEV = cmdif.CmdIf(MST_DEVICE)

        if FwTraceUtilities.is_driver_mem_mode_supported():
            try:
                check_secure_fw_args(devInfo)
                secure_fw_tracer = SecureFwTrace(MST_DEVICE, DEV_NAME,
                                                 IGNORE_OLD_EVENTS, REAL_TS)
                open_mst_dev()
                apply_mask(devInfo, MST_DEVICE, CMDIFDEV)
                secure_fw_tracer.parse_driver_mem()
            except Exception as exp:
                print("-E- %s" % exp)
        else:
            raise TracerException("Driver mem mode is not supported")

    except Exception as exp:
        print("-E- %s" % exp)
        return 1

    return 0
예제 #3
0
 def __init__(self, dev):
     self.mf = 0
     self._isLivefishModeFunc = DEV_MGT.dm_is_livefish_mode  # dm_is_livefish_mode(mfile* mf)   
     if isinstance(dev,(mtcr.MstDevice)):
       self._mstdev = dev
     else:
         self._mstdev  =  mtcr.MstDevice(dev) 
         if not self._mstdev:
             raise DevMgtException("Failed to open device (%s): %s" % (dev, os.strerror(ctypes.get_errno())))
 def __init__(self, device_name):
     self._sequence_number = ResourceDumpFetcher._sequence_incrementor()
     self._device_name = device_name
     self._start_seq_number = 0
     try:
         mst_device = mtcr.MstDevice(self._device_name)
         self.reg_access_obj = regaccess.RegAccess(mst_device)
     except Exception as e:
         raise Exception("failed with exception: {0}".format(e))
예제 #5
0
 def __init__(self, dev=None, pci_device=None):
     self._mstDev = dev
     if pci_device is not None:
         self._mstDev = mtcr.MstDevice(pci_device)
     self._err2str = REG_ACCESS.reg_access_err2str
     self._err2str.restype = c_char_p
     self._sendMFRL = REG_ACCESS.reg_access_mfrl
     self._mgir = REG_ACCESS.reg_access_mgir
     self._reg_access_pcnr = REG_ACCESS.reg_access_pcnr
     self._reg_access_mcam = REG_ACCESS.reg_access_mcam
     self._reg_access_mtrc_cap = REG_ACCESS.reg_access_mtrc_cap
예제 #6
0
 def __init__(self, device_name):
     self._sequence_number = ResourceDumpFetcher._sequence_incrementor()
     self._device_name = device_name
     self._start_seq_number = 0
     try:
         mst_device = mtcr.MstDevice(self._device_name)
         if mst_device.is_cable() or mst_device.is_linkx():
             raise Exception("Device is not supported")
         self.reg_access_obj = regaccess.RegAccess(mst_device)
     except Exception as e:
         raise Exception("{0}".format(e))
예제 #7
0
 def __init__(self, dev=None, pci_device=None):
     self._mstDev = dev
     if pci_device is not None:
         self._mstDev = mtcr.MstDevice(pci_device)
     self._reg_access_mcam = REG_ACCESS.reg_access_mcam
     self._reg_access_mtrc_cap = REG_ACCESS.reg_access_mtrc_cap
     self._reg_access_mgir = REG_ACCESS.reg_access_mgir
     self._reg_access_mfrl = REG_ACCESS.reg_access_mfrl
     self._reg_access_pcnr = REG_ACCESS.reg_access_pcnr
     self._reg_access_mpcir = REG_ACCESS.reg_access_mpcir
     self._reg_access_res_dump = REG_ACCESS.reg_access_res_dump
     self._reg_access_debug_cap = REG_ACCESS.reg_access_debug_cap
예제 #8
0
파일: cmdif.py 프로젝트: talatb/mstflint
                raise CmdIfException("Failed to run multi host icmd: %s (%d)" %
                                     (self.errStrFunc(rc), rc))
            return multiHostSyncOutStruct

        ##########################
        class QUERY_CAP_ST(Structure):
            _fields_ = [("fw_ctrl_update_icmd", c_uint8),
                        ("kdnet_ctrl", c_uint8), ("mh_sync", c_uint8),
                        ("allow_icmd_access_reg_on_all_registers", c_uint8),
                        ("fw_info_psid", c_uint8), ("nv_access", c_uint8)]

        ##########################
        def isMultiHostSyncSupported(self):
            queryCapStruct = self.QUERY_CAP_ST()
            queryCapStructPtr = pointer(queryCapStruct)
            rc = self.getIcmdQueryCap(self.mstDev.mf, queryCapStructPtr)
            if rc:
                raise CmdIfException("Failed to run query cap icmd: %s (%d)" %
                                     (self.errStrFunc(rc), rc))
            return (queryCapStruct.mh_sync == 0x1)

else:
    raise CmdIfException("Failed to load cmdif.so/cmdif.dll")

####################################################################################
if __name__ == "__main__":
    mstdev = mtcr.MstDevice("/dev/mst/mt4113_pciconf0")
    cmdif = CmdIf(mstdev)

    cmdif.setItrace(0x1001, 8)
예제 #9
0
파일: test.py 프로젝트: Mellanox/mstflint
#        disclaimer.
#
#      - Redistributions in binary form must reproduce the above
#        copyright notice, this list of conditions and the following
#        disclaimer in the documentation and/or other materials
#        provided with the distribution.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#--


from __future__ import print_function
import mtcr

device = "/dev/mst/l-apps08:23108,@dev@mst@mt26448_pci_cr0"
device = "/dev/mst/mt26448_pciconf0"
device = "mlx4_core0@pci0:0:5:0"
mf = mtcr.MstDevice(device)
print(("0x%x" % mf.read4(0xf0014)))
for d in mf.read4Block(0xf0014, 8):
    print(("[0x%08x]" % d))

mf.write4Block(0xf0014, [0, 0, 0, 0, 0, 0, 0, 0])
예제 #10
0
    #
    # uptime = regAc.getFWUptime()
    # print "uptime is {0}".format(uptime)
    #
    # manufacturing_base_mac = regAc.getManufacturingBaseMac()
    # print 'manufacturing_base_mac : 0x{0:x}'.format(manufacturing_base_mac)

    pci_devices = ['0e:00.1', '08:00.1', '0e:00.0', '08:00.0', '0000:05:00.0']

    pci_devices = ['81:00.0', '02:00.0', '82:00.0']

    pci_devices = ['05:00.0']
    for pci_device in pci_devices:

        print("pci device {0}".format(pci_device))
        mstdev = mtcr.MstDevice(pci_device)
        regAc = RegAccess(mstdev)

        regAc.sendMtrcCapTakeOwnership()

        reset_level = regAc.sendMFRL(0, REG_ACCESS_METHOD_GET)
        print("reset level is 0x{0:x}".format(reset_level))
        if mstdev != None:
            mstdev.close()

        uptime = regAc.getFWUptime()
        print("uptime is {0}".format(uptime))

        manufacturing_base_mac = regAc.getManufacturingBaseMac()
        print(
            'manufacturing_base_mac : 0x{0:x}'.format(manufacturing_base_mac))