[PATCH v8 03/28] gunyah: Common types and error codes for Gunyah hypercalls
Elliot Berman
quic_eberman at quicinc.com
Tue Jan 10 09:55:10 PST 2023
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 at linaro.org>
>> Signed-off-by: Elliot Berman <quic_eberman at 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 at 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 at 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
>
More information about the linux-arm-kernel
mailing list