Lines Matching full:csb

174 #define CSB_ERR(csb, msg, ...)					\  argument
176 ##__VA_ARGS__, (csb)->flags, \
177 (csb)->cs, (csb)->cc, (csb)->ce, \
178 be32_to_cpu((csb)->count))
180 #define CSB_ERR_ADDR(csb, msg, ...) \ argument
181 CSB_ERR(csb, msg " at %lx", ##__VA_ARGS__, \
182 (unsigned long)be64_to_cpu((csb)->address))
185 struct coprocessor_status_block *csb) in wait_for_csb() argument
190 while (!(READ_ONCE(csb->flags) & CSB_V)) { in wait_for_csb()
197 /* hw has updated csb and output buffer */ in wait_for_csb()
200 /* check CSB flags */ in wait_for_csb()
201 if (!(csb->flags & CSB_V)) { in wait_for_csb()
202 CSB_ERR(csb, "CSB still not valid after %ld us, giving up", in wait_for_csb()
206 if (csb->flags & CSB_F) { in wait_for_csb()
207 CSB_ERR(csb, "Invalid CSB format"); in wait_for_csb()
210 if (csb->flags & CSB_CH) { in wait_for_csb()
211 CSB_ERR(csb, "Invalid CSB chaining state"); in wait_for_csb()
215 /* verify CSB completion sequence is 0 */ in wait_for_csb()
216 if (csb->cs) { in wait_for_csb()
217 CSB_ERR(csb, "Invalid CSB completion sequence"); in wait_for_csb()
221 /* check CSB Completion Code */ in wait_for_csb()
222 switch (csb->cc) { in wait_for_csb()
235 CSB_ERR(csb, "Operand Overlap error"); in wait_for_csb()
238 CSB_ERR(csb, "Invalid operand"); in wait_for_csb()
244 CSB_ERR(csb, "Function aborted"); in wait_for_csb()
247 CSB_ERR(csb, "CRC mismatch"); in wait_for_csb()
250 CSB_ERR(csb, "Compressed data template invalid"); in wait_for_csb()
253 CSB_ERR(csb, "Compressed data template shows data past end"); in wait_for_csb()
260 CSB_ERR(csb, "DDE byte count exceeds the limit"); in wait_for_csb()
266 CSB_ERR_ADDR(csb, "Invalid alignment"); in wait_for_csb()
270 CSB_ERR(csb, "Invalid data length"); in wait_for_csb()
281 CSB_ERR_ADDR(csb, "Translation error"); in wait_for_csb()
292 CSB_ERR_ADDR(csb, "Protection error"); in wait_for_csb()
296 CSB_ERR(csb, "Insufficient Privilege error"); in wait_for_csb()
300 CSB_ERR(csb, "Too many DDEs in DDL"); in wait_for_csb()
305 CSB_ERR(csb, "Invalid CRB"); in wait_for_csb()
312 CSB_ERR(csb, "Invalid DDE"); in wait_for_csb()
316 CSB_ERR(csb, "Segmented DDL error"); in wait_for_csb()
320 CSB_ERR(csb, "DDE overflow error"); in wait_for_csb()
324 CSB_ERR(csb, "Session violation error"); in wait_for_csb()
328 CSB_ERR(csb, "Chained CRB error"); in wait_for_csb()
332 CSB_ERR(csb, "CRB sequence number error"); in wait_for_csb()
335 CSB_ERR(csb, "Unknown subfunction code"); in wait_for_csb()
343 CSB_ERR_ADDR(csb, "Read error outside coprocessor"); in wait_for_csb()
346 CSB_ERR_ADDR(csb, "Write error outside coprocessor"); in wait_for_csb()
349 CSB_ERR(csb, "Internal error in coprocessor"); in wait_for_csb()
352 CSB_ERR(csb, "Storage provision error"); in wait_for_csb()
355 CSB_ERR(csb, "Correctable hardware error"); in wait_for_csb()
358 CSB_ERR(csb, "Job did not finish within allowed time"); in wait_for_csb()
362 CSB_ERR(csb, "Invalid CC %d", csb->cc); in wait_for_csb()
367 if (csb->ce & CSB_CE_TERMINATION) { in wait_for_csb()
368 CSB_ERR(csb, "CSB request was terminated"); in wait_for_csb()
371 if (csb->ce & CSB_CE_INCOMPLETE) { in wait_for_csb()
372 CSB_ERR(csb, "CSB request not complete"); in wait_for_csb()
375 if (!(csb->ce & CSB_CE_TPBC)) { in wait_for_csb()
376 CSB_ERR(csb, "TPBC not provided, unknown target length"); in wait_for_csb()
382 be32_to_cpu(csb->count), in wait_for_csb()
393 struct coprocessor_status_block *csb; in nx842_config_crb() local
398 csb = &crb->csb; in nx842_config_crb()
414 /* set up CRB's CSB addr */ in nx842_config_crb()
415 csb_addr = nx842_get_pa(csb) & CRB_CSB_ADDRESS; in nx842_config_crb()
458 struct coprocessor_status_block *csb; in nx842_exec_icswx() local
479 csb = &crb->csb; in nx842_exec_icswx()
506 ret = wait_for_csb(wmem, csb); in nx842_exec_icswx()
519 *outlenp = be32_to_cpu(csb->count); in nx842_exec_icswx()
561 struct coprocessor_status_block *csb; in nx842_exec_vas() local
573 csb = &crb->csb; in nx842_exec_vas()
610 ret = wait_for_csb(wmem, csb); in nx842_exec_vas()
612 *outlenp = be32_to_cpu(csb->count); in nx842_exec_vas()