Messages in this thread | | | Date | Mon, 30 Jan 2023 10:58:20 +0100 | From | Greg Kroah-Hartman <> | Subject | Re: [PATCH v9 03/27] gunyah: Common types and error codes for Gunyah hypercalls |
| |
On Fri, Jan 20, 2023 at 02:46:02PM -0800, 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 d9205cb9e988..f1e07e39b2f5 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -9048,6 +9048,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..985c6086348e > --- /dev/null > +++ b/include/linux/gunyah.h > @@ -0,0 +1,74 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +/* > + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. > + */ > + > +#ifndef _LINUX_GUNYAH_H > +#define _LINUX_GUNYAH_H > + > +#include <linux/errno.h> > +#include <linux/limits.h> > + > +/* Common Gunyah macros */
Macros?
> +#define GH_CAPID_INVAL U64_MAX > +#define GH_VMID_ROOT_VM 0xff
These are all simple defines :)
> + > +#define GH_ERROR_OK 0 > + > +#define GH_ERROR_UNIMPLEMENTED -1 > +#define GH_ERROR_RETRY -2
All of these values, they come from the hypervisor?
And then you:
> +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; > + } > +}
Convert it to a Linux-kernel related value?
If so, please say that in the documentation here (where the value came from, etc...)
Also, why isn't gh_error an enumerated type so you can have some type safety and it's obvious when a value comes from the hypervisor what it should be and should not be.
thanks,
greg k-h
| |