mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-27 08:25:12 +07:00
e0332629e3
Revisit the ap queue error handling: Based on discussions and evaluatios with the firmware folk here is now a rework of the response code handling for all the AP instructions. The idea is to distinguish between failures because of some kind of invalid request where a retry does not make any sense and a failure where another attempt to send the very same request may succeed. The first case is handled by returning EINVAL to the userspace application. The second case results in retries within the zcrypt API controlled by a per message retry counter. Revisit the zcrpyt error handling: Similar here, based on discussions with the firmware people here comes a rework of the handling of all the reply codes. Main point here is that there are only very few cases left, where a zcrypt device queue is switched to offline. It should never be the case that an AP reply message is 'unknown' to the device driver as it indicates a total mismatch between device driver and crypto card firmware. In all other cases, the code distinguishes between failure because of invalid message (see above - EINVAL) or failures of the infrastructure (see above - EAGAIN). Signed-off-by: Harald Freudenberger <freude@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright IBM Corp. 2016
|
|
* Author(s): Holger Dengler (hd@linux.vnet.ibm.com)
|
|
* Harald Freudenberger <freude@de.ibm.com>
|
|
*/
|
|
#ifndef ZCRYPT_DEBUG_H
|
|
#define ZCRYPT_DEBUG_H
|
|
|
|
#include <asm/debug.h>
|
|
|
|
#define DBF_ERR 3 /* error conditions */
|
|
#define DBF_WARN 4 /* warning conditions */
|
|
#define DBF_INFO 5 /* informational */
|
|
#define DBF_DEBUG 6 /* for debugging only */
|
|
|
|
#define RC2ERR(rc) ((rc) ? DBF_ERR : DBF_INFO)
|
|
#define RC2WARN(rc) ((rc) ? DBF_WARN : DBF_INFO)
|
|
|
|
#define DBF_MAX_SPRINTF_ARGS 5
|
|
|
|
#define ZCRYPT_DBF(...) \
|
|
debug_sprintf_event(zcrypt_dbf_info, ##__VA_ARGS__)
|
|
#define ZCRYPT_DBF_ERR(...) \
|
|
debug_sprintf_event(zcrypt_dbf_info, DBF_ERR, ##__VA_ARGS__)
|
|
#define ZCRYPT_DBF_WARN(...) \
|
|
debug_sprintf_event(zcrypt_dbf_info, DBF_WARN, ##__VA_ARGS__)
|
|
#define ZCRYPT_DBF_INFO(...) \
|
|
debug_sprintf_event(zcrypt_dbf_info, DBF_INFO, ##__VA_ARGS__)
|
|
#define ZCRYPT_DBF_DBG(...) \
|
|
debug_sprintf_event(zcrypt_dbf_info, DBF_DEBUG, ##__VA_ARGS__)
|
|
|
|
extern debug_info_t *zcrypt_dbf_info;
|
|
|
|
int zcrypt_debug_init(void);
|
|
void zcrypt_debug_exit(void);
|
|
|
|
#endif /* ZCRYPT_DEBUG_H */
|