Anton B. Rang <rang <at> acm.org> writes: > > Be careful of changing the Max_Payload_Size parameter. It needs to match, > and be supported, between all PCI-E components which might communicate with > each other. You can tell what values are supported by reading the Device > Capabilities Register and checking the Max_Payload_Size Supported bits.
Yes, the DevCap register of the SiI3132 indicates the maximum supported payload size is 1024 bytes. This is confirmed by its datasheet. However I compiled lspci for Solaris and running it with -vv shows only 2 PCI-E devices (other than the SiI3132 and an Ethernet controller), which represent the AMD690G chipset's root PCI-E ports for my 2 PCI-E slots (I think): 00:06.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (PCI Express Port 2) (prog-if 00 [Normal decode]) [...] Capabilities: [58] Express (v1) Root Port (Slot-), MSI 00 00:07.0 PCI bridge: ATI Technologies Inc RS690 PCI to PCI Bridge (PCI Express Port 3) (prog-if 00 [Normal decode]) [...] Capabilities: [58] Express (v1) Root Port (Slot-), MSI 00 But each shows a Max_Payload_Size of 128 bytes in both the DevCap and DevCtl registers. Clearly they are accepting 256-byte payloads, else I wouldn't notice the big perf improvement when reading data from the disks. Could it be possible that (1) an errata in the AMD690G makes its DevCap register incorrectly report Max_Payload_Size=128 even though it supports larger ones, and that (2) the AMD690G implements PCI-E leniently and always accepts large payloads even when it is not supposed to when DevCtl defines Max_Payload_Size=128 ? > If you set a size which is too large, you might see PCI-E errors, data > corruption, or hangs. Ouch! > The operating system is supposed to set this register properly for you. > A quick glance at OpenSolaris code suggests that, while > PCIE_DEVCAP_MAX_PAYLOAD_MASK is defined in pcie.h, it's not actually > referenced yet, and in fact PCIE_DEVCAP seems to only be used for debugging. I came to the same conclusion as you after grepping through the code. -marc _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss