Пример #1
0
def perf_check():
    bytes_size = [ 128, 256, 512, 1024, 2048, 4096 ]

    dl = PCIDevices()
    print
    for vendor in [FUSION_VENDOR, MELLANOX_VENDOR]:
        check_devs = dl.get(vendor=vendor)
        for check_dev in check_devs:
            # XXX Need to be safer with max payload, check all possible branches.
            worst_supported_maxpayload=0xffff
            dev_index = 0
            for dev in dl.walk_from_root(check_dev):
                try:
                    maxpayload_s = dev.config.read("pcie_device_capabilities_max_payload_size_supported")
                except:
                    print "WARNING: Could not get maxpayload supported for %s" % (dev.addr)
                    continue
                try:
                    maxpayload_c = dev.config.read("pcie_device_control_max_payload_size")
                except:
                    print "WARNING: Could not get maxpayload setting for %s" % (dev.addr)
                    continue
                try:
                    maxreadreq = dev.config.read("pcie_device_control_max_read_request_size")
                except:
                    print "WARNING: Could not get max readreq setting for %s" % (dev.addr)
                    continue
           
                if maxpayload_s < worst_supported_maxpayload:
                    worst_supported_maxpayload = maxpayload_s
#
                indent = "  " * dev_index
                msg = "%s%s " % (indent, dev.addr)
                if dev.vendor == FUSION_VENDOR:
                    msg += "-- Fusion Device "
                if dev.vendor == MELLANOX_VENDOR:
                    msg += "-- Mellanox Device "
                if dev.vendor == PLX_VENDOR:
                    msg += "-- PLX Device "
                if dev.is_root:
                    msg += "-- Root Device"
                print msg
                
                print "%s  MaxPayload supported %d" % (indent, bytes_size[maxpayload_s])
                print "%s  MaxPayload configured %d" % (indent, bytes_size[maxpayload_c])
                print "%s  MaxReadReq %d" % (indent, bytes_size[maxreadreq])
                if worst_supported_maxpayload == 0:
                    print "%s    Warning: MaxPayload can go no higher than 128b, performance may suffer!" % (indent)
                if maxpayload_c < worst_supported_maxpayload:
                    print "%s    Warning: MaxPayload was not configured optimally for this device, bumping up to %d" % (indent, bytes_size[worst_supported_maxpayload])
                    dev.config.write("pcie_device_control_max_payload_size", worst_supported_maxpayload)
                if maxreadreq < 3:
                    print "%s    Warning: MaxReadReq is less than 1024, bumping up" % (indent)
                    dev.config.write("pcie_device_control_max_read_request_size", 3)
                dev_index += 1
                print
            print
Пример #2
0
def select_devices():
    dl = PCIDevices()
    for vendor in [FUSION_VENDOR, MELLANOX_VENDOR]:
        check_devs = dl.get(vendor=vendor)
        for check_dev in check_devs:
            print "### Checking device %s" % (check_dev.addr)
            check_power(check_dev)
            check_maxpayload(check_dev, dl)
            check_maxreadreq(check_dev, dl)
            check_errors(check_dev)
            check_phantom(check_dev)
            check_tag(check_dev)
Пример #3
0
def kill_dev():
    bytes_size = [ 128, 256, 512, 1024, 2048, 4096 ]

    dl = PCIDevices()

    fusion_devs = dl.get(device=FUSION_IODIMM_GEN1)
    # Try to get fioa to kill
    fusion_devs.sort(key=lambda m: str(m.addr))

    kill_dimm = fusion_devs[0]
    print ""
    print "Killing device '%s' using link control at parent '%s'" % (kill_dimm.addr, kill_dimm.parent.addr)
    kill_dimm.parent.config.write("pcie_link_control_link_disable", 1)
Пример #4
0
def kill_dev():
    bytes_size = [128, 256, 512, 1024, 2048, 4096]

    dl = PCIDevices()

    fusion_devs = dl.get(device=FUSION_IODIMM_GEN1)
    # Try to get fioa to kill
    fusion_devs.sort(key=lambda m: str(m.addr))

    kill_dimm = fusion_devs[0]
    print ""
    print "Killing device '%s' using link control at parent '%s'" % (
        kill_dimm.addr, kill_dimm.parent.addr)
    kill_dimm.parent.config.write("pcie_link_control_link_disable", 1)
Пример #5
0
def main():
    dl = PCIDevices()
    #fusion_devs = dl.get(device=FUSION_IODIMM_GEN1)
    fusion_devs = dl.get(vendor=FUSION_VENDOR)
    for fdev in fusion_devs:
        print ""
        print ""
        for dev in list(dl.walk_to_root(fdev))[:-1]:
            # [:-1], don't want to futs with 00:00.0
            print ""
            disable_pcie_error_prop(dev)
            disable_pcie_serr(dev)
            disable_legacy_pci_error(dev)
            disable_legacy_pci_serr(dev)
Пример #6
0
def main():
    dl = PCIDevices()
    #fusion_devs = dl.get(device=FUSION_IODIMM_GEN1)
    fusion_devs = dl.get(vendor=FUSION_VENDOR)
    for fdev in fusion_devs:
        print ""
        print ""
        for dev in list(dl.walk_to_root(fdev))[:-1]:
            # [:-1], don't want to futs with 00:00.0
            print ""
            disable_pcie_error_prop(dev)
            disable_pcie_serr(dev)
            disable_legacy_pci_error(dev)
            disable_legacy_pci_serr(dev)
Пример #7
0
def walk_all_devices():
    dl = PCIDevices()
    for pci_dev in dl.devices:
        aspm_current = None
        try:
            pci_dev.config.enumerate()
            aspm_current = pci_dev.config.read("pcie_link_control_aspm_control")
        except Exception, e:
            #print "Error reading ASPM state for device %s: %s" % (pci_dev.addr, e)
            continue

        print "ASPM for %s is 0x%x" % (pci_dev.addr, aspm_current)
        if aspm_current != 0:
            print "      disabeling ASPM"
            pci_dev.config.write("pcie_link_control_aspm_control", 0)
Пример #8
0
def perf_check():
    bytes_size = [128, 256, 512, 1024, 2048, 4096]

    dl = PCIDevices()
    print
    for vendor in [FUSION_VENDOR, MELLANOX_VENDOR]:
        check_devs = dl.get(vendor=vendor)
        for check_dev in check_devs:
            # XXX Need to be safer with max payload, check all possible branches.
            worst_supported_maxpayload = 0xffff
            dev_index = 0
            for dev in dl.walk_from_root(check_dev):
                try:
                    maxpayload_s = dev.config.read(
                        "pcie_device_capabilities_max_payload_size_supported")
                except:
                    print "WARNING: Could not get maxpayload supported for %s" % (
                        dev.addr)
                    continue
                try:
                    maxpayload_c = dev.config.read(
                        "pcie_device_control_max_payload_size")
                except:
                    print "WARNING: Could not get maxpayload setting for %s" % (
                        dev.addr)
                    continue
                try:
                    maxreadreq = dev.config.read(
                        "pcie_device_control_max_read_request_size")
                except:
                    print "WARNING: Could not get max readreq setting for %s" % (
                        dev.addr)
                    continue

                if maxpayload_s < worst_supported_maxpayload:
                    worst_supported_maxpayload = maxpayload_s


#
                indent = "  " * dev_index
                msg = "%s%s " % (indent, dev.addr)
                if dev.vendor == FUSION_VENDOR:
                    msg += "-- Fusion Device "
                if dev.vendor == MELLANOX_VENDOR:
                    msg += "-- Mellanox Device "
                if dev.vendor == PLX_VENDOR:
                    msg += "-- PLX Device "
                if dev.is_root:
                    msg += "-- Root Device"
                print msg

                print "%s  MaxPayload supported %d" % (
                    indent, bytes_size[maxpayload_s])
                print "%s  MaxPayload configured %d" % (
                    indent, bytes_size[maxpayload_c])
                print "%s  MaxReadReq %d" % (indent, bytes_size[maxreadreq])
                if worst_supported_maxpayload == 0:
                    print "%s    Warning: MaxPayload can go no higher than 128b, performance may suffer!" % (
                        indent)
                if maxpayload_c < worst_supported_maxpayload:
                    print "%s    Warning: MaxPayload was not configured optimally for this device, bumping up to %d" % (
                        indent, bytes_size[worst_supported_maxpayload])
                    dev.config.write("pcie_device_control_max_payload_size",
                                     worst_supported_maxpayload)
                if maxreadreq < 3:
                    print "%s    Warning: MaxReadReq is less than 1024, bumping up" % (
                        indent)
                    dev.config.write(
                        "pcie_device_control_max_read_request_size", 3)
                dev_index += 1
                print
            print