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)
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
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))
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
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))
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
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)
# 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])
# # 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))