Message ID | 20221219225850.2397345-4-quic_eberman@quicinc.com |
---|---|
State | Superseded |
Headers | show |
Series | Drivers for gunyah hypervisor | expand |
On 1/9/2023 1:34 PM, Alex Elder wrote: > On 12/19/22 4:58 PM, Elliot Berman wrote: >> Add architecture-independent standard error codes, types, and macros for >> Gunyah hypercalls. >> >> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> >> Signed-off-by: Elliot Berman <quic_eberman@quicinc.com> >> --- >> MAINTAINERS | 1 + >> include/linux/gunyah.h | 74 ++++++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 75 insertions(+) >> create mode 100644 include/linux/gunyah.h >> >> diff --git a/MAINTAINERS b/MAINTAINERS >> index f32320a9efa4..74e76e0ab14d 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -8941,6 +8941,7 @@ L: linux-arm-msm@vger.kernel.org >> S: Supported >> F: Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml >> F: Documentation/virt/gunyah/ >> +F: include/linux/gunyah.h >> HABANALABS PCI DRIVER >> M: Oded Gabbay <ogabbay@kernel.org> >> diff --git a/include/linux/gunyah.h b/include/linux/gunyah.h >> new file mode 100644 >> index 000000000000..824e20a11d27 >> --- /dev/null >> +++ b/include/linux/gunyah.h >> @@ -0,0 +1,74 @@ >> +/* SPDX-License-Identifier: GPL-2.0-only */ >> +/* >> + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights >> reserved. >> + */ >> + >> +#ifndef _GUNYAH_H > > Maybe use _LINUX_GUNYAH_H? > Ack. >> +#define _GUNYAH_H >> + >> +#include <linux/types.h> > > Why is types.h included? > > U64_MAX is defined in <linux/limits.h> (in case that's why). Ack. > > Otherwise this just defines a fixed API exposed by Gunyah > so there's not much more for me to comment on. > > -Alex > >> +#include <linux/errno.h> >> + >> +/* Common Gunyah macros */ >> +#define GH_CAPID_INVAL U64_MAX >> +#define GH_VMID_ROOT_VM 0xff >> + >> +#define GH_ERROR_OK 0 >> + >> +#define GH_ERROR_UNIMPLEMENTED -1 >> +#define GH_ERROR_RETRY -2 >> + >> +#define GH_ERROR_ARG_INVAL 1 >> +#define GH_ERROR_ARG_SIZE 2 >> +#define GH_ERROR_ARG_ALIGN 3 >> + >> +#define GH_ERROR_NOMEM 10 >> + >> +#define GH_ERROR_ADDR_OVFL 20 >> +#define GH_ERROR_ADDR_UNFL 21 >> +#define GH_ERROR_ADDR_INVAL 22 >> + >> +#define GH_ERROR_DENIED 30 >> +#define GH_ERROR_BUSY 31 >> +#define GH_ERROR_IDLE 32 >> + >> +#define GH_ERROR_IRQ_BOUND 40 >> +#define GH_ERROR_IRQ_UNBOUND 41 >> + >> +#define GH_ERROR_CSPACE_CAP_NULL 50 >> +#define GH_ERROR_CSPACE_CAP_REVOKED 51 >> +#define GH_ERROR_CSPACE_WRONG_OBJ_TYPE 52 >> +#define GH_ERROR_CSPACE_INSUF_RIGHTS 53 >> +#define GH_ERROR_CSPACE_FULL 54 >> + >> +#define GH_ERROR_MSGQUEUE_EMPTY 60 >> +#define GH_ERROR_MSGQUEUE_FULL 61 >> + >> +static inline int gh_remap_error(int gh_error) >> +{ >> + switch (gh_error) { >> + case GH_ERROR_OK: >> + return 0; >> + case GH_ERROR_NOMEM: >> + return -ENOMEM; >> + case GH_ERROR_DENIED: >> + case GH_ERROR_CSPACE_CAP_NULL: >> + case GH_ERROR_CSPACE_CAP_REVOKED: >> + case GH_ERROR_CSPACE_WRONG_OBJ_TYPE: >> + case GH_ERROR_CSPACE_INSUF_RIGHTS: >> + case GH_ERROR_CSPACE_FULL: >> + return -EACCES; >> + case GH_ERROR_BUSY: >> + case GH_ERROR_IDLE: >> + return -EBUSY; >> + case GH_ERROR_IRQ_BOUND: >> + case GH_ERROR_IRQ_UNBOUND: >> + case GH_ERROR_MSGQUEUE_FULL: >> + case GH_ERROR_MSGQUEUE_EMPTY: >> + return -EPERM; >> + default: >> + return -EINVAL; >> + } >> +} >> + >> +#endif >
diff --git a/MAINTAINERS b/MAINTAINERS index f32320a9efa4..74e76e0ab14d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8941,6 +8941,7 @@ L: linux-arm-msm@vger.kernel.org S: Supported F: Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml F: Documentation/virt/gunyah/ +F: include/linux/gunyah.h HABANALABS PCI DRIVER M: Oded Gabbay <ogabbay@kernel.org> diff --git a/include/linux/gunyah.h b/include/linux/gunyah.h new file mode 100644 index 000000000000..824e20a11d27 --- /dev/null +++ b/include/linux/gunyah.h @@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#ifndef _GUNYAH_H +#define _GUNYAH_H + +#include <linux/types.h> +#include <linux/errno.h> + +/* Common Gunyah macros */ +#define GH_CAPID_INVAL U64_MAX +#define GH_VMID_ROOT_VM 0xff + +#define GH_ERROR_OK 0 + +#define GH_ERROR_UNIMPLEMENTED -1 +#define GH_ERROR_RETRY -2 + +#define GH_ERROR_ARG_INVAL 1 +#define GH_ERROR_ARG_SIZE 2 +#define GH_ERROR_ARG_ALIGN 3 + +#define GH_ERROR_NOMEM 10 + +#define GH_ERROR_ADDR_OVFL 20 +#define GH_ERROR_ADDR_UNFL 21 +#define GH_ERROR_ADDR_INVAL 22 + +#define GH_ERROR_DENIED 30 +#define GH_ERROR_BUSY 31 +#define GH_ERROR_IDLE 32 + +#define GH_ERROR_IRQ_BOUND 40 +#define GH_ERROR_IRQ_UNBOUND 41 + +#define GH_ERROR_CSPACE_CAP_NULL 50 +#define GH_ERROR_CSPACE_CAP_REVOKED 51 +#define GH_ERROR_CSPACE_WRONG_OBJ_TYPE 52 +#define GH_ERROR_CSPACE_INSUF_RIGHTS 53 +#define GH_ERROR_CSPACE_FULL 54 + +#define GH_ERROR_MSGQUEUE_EMPTY 60 +#define GH_ERROR_MSGQUEUE_FULL 61 + +static inline int gh_remap_error(int gh_error) +{ + switch (gh_error) { + case GH_ERROR_OK: + return 0; + case GH_ERROR_NOMEM: + return -ENOMEM; + case GH_ERROR_DENIED: + case GH_ERROR_CSPACE_CAP_NULL: + case GH_ERROR_CSPACE_CAP_REVOKED: + case GH_ERROR_CSPACE_WRONG_OBJ_TYPE: + case GH_ERROR_CSPACE_INSUF_RIGHTS: + case GH_ERROR_CSPACE_FULL: + return -EACCES; + case GH_ERROR_BUSY: + case GH_ERROR_IDLE: + return -EBUSY; + case GH_ERROR_IRQ_BOUND: + case GH_ERROR_IRQ_UNBOUND: + case GH_ERROR_MSGQUEUE_FULL: + case GH_ERROR_MSGQUEUE_EMPTY: + return -EPERM; + default: + return -EINVAL; + } +} + +#endif