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

Reply via email to