162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later WITH Linux-syscall-note */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci/* 762306a36Sopenharmony_ci * Oracle DAX driver API definitions 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef _ORADAX_H 1162306a36Sopenharmony_ci#define _ORADAX_H 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include <linux/types.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define CCB_KILL 0 1662306a36Sopenharmony_ci#define CCB_INFO 1 1762306a36Sopenharmony_ci#define CCB_DEQUEUE 2 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_cistruct dax_command { 2062306a36Sopenharmony_ci __u16 command; /* CCB_KILL/INFO/DEQUEUE */ 2162306a36Sopenharmony_ci __u16 ca_offset; /* offset into mmapped completion area */ 2262306a36Sopenharmony_ci}; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistruct ccb_kill_result { 2562306a36Sopenharmony_ci __u16 action; /* action taken to kill ccb */ 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_cistruct ccb_info_result { 2962306a36Sopenharmony_ci __u16 state; /* state of enqueued ccb */ 3062306a36Sopenharmony_ci __u16 inst_num; /* dax instance number of enqueued ccb */ 3162306a36Sopenharmony_ci __u16 q_num; /* queue number of enqueued ccb */ 3262306a36Sopenharmony_ci __u16 q_pos; /* ccb position in queue */ 3362306a36Sopenharmony_ci}; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cistruct ccb_exec_result { 3662306a36Sopenharmony_ci __u64 status_data; /* additional status data (e.g. bad VA) */ 3762306a36Sopenharmony_ci __u32 status; /* one of DAX_SUBMIT_* */ 3862306a36Sopenharmony_ci}; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ciunion ccb_result { 4162306a36Sopenharmony_ci struct ccb_exec_result exec; 4262306a36Sopenharmony_ci struct ccb_info_result info; 4362306a36Sopenharmony_ci struct ccb_kill_result kill; 4462306a36Sopenharmony_ci}; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci#define DAX_MMAP_LEN (16 * 1024) 4762306a36Sopenharmony_ci#define DAX_MAX_CCBS 15 4862306a36Sopenharmony_ci#define DAX_CCB_BUF_MAXLEN (DAX_MAX_CCBS * 64) 4962306a36Sopenharmony_ci#define DAX_NAME "oradax" 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci/* CCB_EXEC status */ 5262306a36Sopenharmony_ci#define DAX_SUBMIT_OK 0 5362306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_RETRY 1 5462306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_WOULDBLOCK 2 5562306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_BUSY 3 5662306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_THR_INIT 4 5762306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_ARG_INVAL 5 5862306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_CCB_INVAL 6 5962306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_NO_CA_AVAIL 7 6062306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_CCB_ARR_MMU_MISS 8 6162306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_NOMAP 9 6262306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_NOACCESS 10 6362306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_TOOMANY 11 6462306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_UNAVAIL 12 6562306a36Sopenharmony_ci#define DAX_SUBMIT_ERR_INTERNAL 13 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci/* CCB_INFO states - must match HV_CCB_STATE_* definitions */ 6862306a36Sopenharmony_ci#define DAX_CCB_COMPLETED 0 6962306a36Sopenharmony_ci#define DAX_CCB_ENQUEUED 1 7062306a36Sopenharmony_ci#define DAX_CCB_INPROGRESS 2 7162306a36Sopenharmony_ci#define DAX_CCB_NOTFOUND 3 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci/* CCB_KILL actions - must match HV_CCB_KILL_* definitions */ 7462306a36Sopenharmony_ci#define DAX_KILL_COMPLETED 0 7562306a36Sopenharmony_ci#define DAX_KILL_DEQUEUED 1 7662306a36Sopenharmony_ci#define DAX_KILL_KILLED 2 7762306a36Sopenharmony_ci#define DAX_KILL_NOTFOUND 3 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci#endif /* _ORADAX_H */ 80