^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ===================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) PCI Test User Guide
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) ===================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) :Author: Kishon Vijay Abraham I <kishon@ti.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) This document is a guide to help users use pci-epf-test function driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) and pci_endpoint_test host driver for testing PCI. The list of steps to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) be followed in the host side and EP side is given below.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Endpoint Device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) ===============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Endpoint Controller Devices
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) ---------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) To find the list of endpoint controller devices in the system::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) # ls /sys/class/pci_epc/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 51000000.pcie_ep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) If PCI_ENDPOINT_CONFIGFS is enabled::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) # ls /sys/kernel/config/pci_ep/controllers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 51000000.pcie_ep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) Endpoint Function Drivers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) -------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) To find the list of endpoint function drivers in the system::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) # ls /sys/bus/pci-epf/drivers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) pci_epf_test
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) If PCI_ENDPOINT_CONFIGFS is enabled::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) # ls /sys/kernel/config/pci_ep/functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) pci_epf_test
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) Creating pci-epf-test Device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) ----------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) PCI endpoint function device can be created using the configfs. To create
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) pci-epf-test device, the following commands can be used::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) # mount -t configfs none /sys/kernel/config
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) # cd /sys/kernel/config/pci_ep/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) # mkdir functions/pci_epf_test/func1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) The "mkdir func1" above creates the pci-epf-test function device that will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) be probed by pci_epf_test driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) The PCI endpoint framework populates the directory with the following
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) configurable fields::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) # ls functions/pci_epf_test/func1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) baseclass_code interrupt_pin progif_code subsys_id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) cache_line_size msi_interrupts revid subsys_vendorid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) deviceid msix_interrupts subclass_code vendorid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) The PCI endpoint function driver populates these entries with default values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) when the device is bound to the driver. The pci-epf-test driver populates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) vendorid with 0xffff and interrupt_pin with 0x0001::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) # cat functions/pci_epf_test/func1/vendorid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) # cat functions/pci_epf_test/func1/interrupt_pin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) Configuring pci-epf-test Device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) -------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) The user can configure the pci-epf-test device using configfs entry. In order
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) to change the vendorid and the number of MSI interrupts used by the function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) device, the following commands can be used::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) # echo 0x104c > functions/pci_epf_test/func1/vendorid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) # echo 0xb500 > functions/pci_epf_test/func1/deviceid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) # echo 16 > functions/pci_epf_test/func1/msi_interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) # echo 8 > functions/pci_epf_test/func1/msix_interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) Binding pci-epf-test Device to EP Controller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) --------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) In order for the endpoint function device to be useful, it has to be bound to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) a PCI endpoint controller driver. Use the configfs to bind the function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) device to one of the controller driver present in the system::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) # ln -s functions/pci_epf_test/func1 controllers/51000000.pcie_ep/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) Once the above step is completed, the PCI endpoint is ready to establish a link
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) with the host.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) Start the Link
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) --------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) In order for the endpoint device to establish a link with the host, the _start_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) field should be populated with '1'::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) # echo 1 > controllers/51000000.pcie_ep/start
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) RootComplex Device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) ==================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) lspci Output
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) ------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) Note that the devices listed here correspond to the value populated in 1.4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) above::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 00:00.0 PCI bridge: Texas Instruments Device 8888 (rev 01)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 01:00.0 Unassigned class [ff00]: Texas Instruments Device b500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) Using Endpoint Test function Device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) -----------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) pcitest.sh added in tools/pci/ can be used to run all the default PCI endpoint
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) tests. To compile this tool the following commands should be used::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) # cd <kernel-dir>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) # make -C tools/pci
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) or if you desire to compile and install in your system::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) # cd <kernel-dir>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) # make -C tools/pci install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) The tool and script will be located in <rootfs>/usr/bin/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) pcitest.sh Output
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) ~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) # pcitest.sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) BAR tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) BAR0: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) BAR1: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) BAR2: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) BAR3: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) BAR4: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) BAR5: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) Interrupt tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) SET IRQ TYPE TO LEGACY: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) LEGACY IRQ: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) SET IRQ TYPE TO MSI: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) MSI1: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) MSI2: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) MSI3: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) MSI4: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) MSI5: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) MSI6: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) MSI7: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) MSI8: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) MSI9: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) MSI10: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) MSI11: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) MSI12: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) MSI13: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) MSI14: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) MSI15: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) MSI16: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) MSI17: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) MSI18: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) MSI19: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) MSI20: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) MSI21: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) MSI22: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) MSI23: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) MSI24: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) MSI25: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) MSI26: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) MSI27: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) MSI28: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) MSI29: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) MSI30: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) MSI31: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) MSI32: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) SET IRQ TYPE TO MSI-X: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) MSI-X1: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) MSI-X2: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) MSI-X3: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) MSI-X4: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) MSI-X5: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) MSI-X6: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) MSI-X7: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) MSI-X8: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) MSI-X9: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) MSI-X10: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) MSI-X11: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) MSI-X12: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) MSI-X13: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) MSI-X14: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) MSI-X15: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) MSI-X16: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) [...]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) MSI-X2047: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) MSI-X2048: NOT OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) Read Tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) SET IRQ TYPE TO MSI: OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) READ ( 1 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) READ ( 1024 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) READ ( 1025 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) READ (1024000 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) READ (1024001 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) Write Tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) WRITE ( 1 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) WRITE ( 1024 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) WRITE ( 1025 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) WRITE (1024000 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) WRITE (1024001 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) Copy Tests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) COPY ( 1 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) COPY ( 1024 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) COPY ( 1025 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) COPY (1024000 bytes): OKAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) COPY (1024001 bytes): OKAY