• Home
  • Raw
  • Download

Lines Matching full:prp

2041  * a native SGL (NVMe PRP). The native SGL is built starting in the first PRP
2045 * describe using the two PRP entriess inside the NVMe message, then PRP1
2046 * describes the first data memory segment, and PRP2 contains a pointer to a PRP
2048 * segments. The PRP list will be contiguous.
2050 * The native SGL for NVMe devices is a Physical Region Page (PRP). A PRP
2051 * consists of a list of PRP entries to describe a number of noncontigous
2055 * non-contiguous SGL into a PRP in this case. All PRPs will describe
2058 * Each NVMe message contains two PRP entries. The first (PRP1) either contains
2059 * a PRP list pointer or a PRP element, depending upon the command. PRP2
2060 * contains the second PRP element if the memory being described fits within 2
2061 * PRP entries, or a PRP list pointer if the PRP spans more than two entries.
2063 * A PRP list pointer contains the address of a PRP list, structured as a linear
2064 * array of PRP entries. Each PRP entry in this list describes a segment of
2067 * Each 64-bit PRP entry comprises an address and an offset field. The address
2070 * first element in a PRP list may contain a non-zero offest, implying that all
2073 * Each PRP element normally describes 4KB of physical memory, with exceptions
2076 * first PRP element will contain a non-zero offset indicating where the region
2079 * described by the PRP list.
2081 * Since PRP entries lack any indication of size, the overall data buffer length
2083 * how many PRP entries are required to describe it.
2111 * without constructing any PRP. in _base_build_nvme_prp()
2119 * For the PRP entries, use the specially allocated buffer of in _base_build_nvme_prp()
2127 * want our first entry to be a PRP List entry. in _base_build_nvme_prp()
2138 * Set PRP physical pointer, which initially points to the current PRP in _base_build_nvme_prp()
2161 * This is the last entry in a PRP List, so we need to in _base_build_nvme_prp()
2162 * put a PRP list pointer here. What this does is: in _base_build_nvme_prp()
2165 * - set the PRP Entry to point to that page. This in _base_build_nvme_prp()
2166 * is now the PRP List pointer. in _base_build_nvme_prp()
2167 * - bump the PRP Entry pointer the start of the in _base_build_nvme_prp()
2168 * next page. Since all of this PRP memory is in _base_build_nvme_prp()
2183 * Must fill in the first PRP pointer (PRP1) before in _base_build_nvme_prp()
2189 * Now point to the second PRP entry within the in _base_build_nvme_prp()
2195 * Should the PRP2 entry be a PRP List pointer or just in _base_build_nvme_prp()
2196 * a regular PRP pointer? If there is more than one in _base_build_nvme_prp()
2197 * more page of data, must use a PRP List pointer. in _base_build_nvme_prp()
2201 * PRP2 will contain a PRP List pointer because in _base_build_nvme_prp()
2202 * more PRP's are needed with this command. The in _base_build_nvme_prp()
2209 * The next PRP Entry will be the start of the in _base_build_nvme_prp()
2210 * first PRP List. in _base_build_nvme_prp()
2215 * After this, the PRP Entries are complete. in _base_build_nvme_prp()
2216 * This command uses 2 PRP's and no PRP list. in _base_build_nvme_prp()
2225 * all remaining PRP entries in a PRP List, one per in _base_build_nvme_prp()
2278 * Nvme has a very convoluted prp format. One prp is required in base_make_prp_nvme()
2281 * boundary. Driver also have to insert a PRP list pointer entry as in base_make_prp_nvme()
2282 * the last entry in each physical page of the PRP list. in base_make_prp_nvme()
2284 * NOTE: The first PRP "entry" is actually placed in the first in base_make_prp_nvme()
2287 * of the PRP entries are built in the contiguous pcie buffer. in base_make_prp_nvme()
2310 * For the PRP entries, use the specially allocated buffer of in base_make_prp_nvme()
2324 /* Build first prp, sge need not to be page aligned*/ in base_make_prp_nvme()
2350 /* Put PRP pointer due to page boundary*/ in base_make_prp_nvme()
2449 * Build native NVMe PRP. in _base_check_pcie_native_sgl()
5066 "Number of chains can fit in a PRP page(%d)\n", in _base_allocate_pcie_sgl_pool()
5458 * ((sg_tablesize * 8) - 1) is the max PRP's minus the first PRP entry in _base_allocate_memory_pools()
5459 * that is placed in the main message frame. 8 is the size of each PRP in _base_allocate_memory_pools()
5460 * entry or PRP list pointer entry. 8 is subtracted from page_size in _base_allocate_memory_pools()
5461 * because of the PRP list pointer entry at the end of a page, so this in _base_allocate_memory_pools()
5462 * is not counted as a PRP entry. The 1 added page is a round up. in _base_allocate_memory_pools()
5465 * be required for NVMe PRP's, only each set of NVMe blocks will be in _base_allocate_memory_pools()