From: Michael Ellerman <mpe@ellerman.id.au>
To: Mahesh Salgaonkar <mahesh@linux.ibm.com>,
linuxppc-dev <linuxppc-dev@ozlabs.org>
Cc: Tyrel Datwyler <tyreld@linux.ibm.com>,
Nathan Lynch <nathanl@linux.ibm.com>,
Oliver O'Halloran <oohall@gmail.com>,
linux-pci <linux-pci@vger.kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v8 1/2] powerpc/rtas: Rename rtas_error_rc to rtas_generic_errno
Date: Tue, 15 Aug 2023 13:52:14 +1000 [thread overview]
Message-ID: <877cpxdksx.fsf@mail.lhotse> (raw)
In-Reply-To: <169138864808.65607.6576358707894823512.stgit@jupiter>
Mahesh Salgaonkar <mahesh@linux.ibm.com> writes:
> rtas_generic_errno() function will convert the generic rtas return codes
> into errno.
I don't see the point of renaming it, it just creates unnecessary churn.
The existing name seems OK to me.
...
> diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h
> index 3abe15ac79db1..5572a0a2f6e18 100644
> --- a/arch/powerpc/include/asm/rtas.h
> +++ b/arch/powerpc/include/asm/rtas.h
> @@ -202,7 +202,9 @@ typedef struct {
> #define RTAS_USER_REGION_SIZE (64 * 1024)
>
> /* RTAS return status codes */
> -#define RTAS_BUSY -2 /* RTAS Busy */
> +#define RTAS_HARDWARE_ERROR (-1) /* Hardware Error */
> +#define RTAS_BUSY (-2) /* RTAS Busy */
Are the brackets necessary?
> +#define RTAS_INVALID_PARAMETER (-3) /* Invalid indicator/domain/sensor etc. */
> #define RTAS_EXTENDED_DELAY_MIN 9900
> #define RTAS_EXTENDED_DELAY_MAX 9905
>
> @@ -212,6 +214,11 @@ typedef struct {
> #define RTAS_THREADS_ACTIVE -9005 /* Multiple processor threads active */
> #define RTAS_OUTSTANDING_COPROC -9006 /* Outstanding coprocessor operations */
>
> +/* statuses specific to get-sensor-state */
> +#define RTAS_SLOT_UNISOLATED (-9000)
> +#define RTAS_SLOT_NOT_UNISOLATED (-9001)
> +#define RTAS_SLOT_NOT_USABLE (-9002)
These aren't specific to get-sensor-state.
They're used by at least: ibm,manage-flash-image, ibm,activate-firmware,
ibm,configure-connector, set-indicator etc.
They have different meanings for those calls. I think you're best to
just leave the constant values in rtas_error_rc().
> /* RTAS event classes */
> #define RTAS_INTERNAL_ERROR 0x80000000 /* set bit 0 */
> #define RTAS_EPOW_WARNING 0x40000000 /* set bit 1 */
> @@ -425,6 +432,7 @@ extern int rtas_set_indicator(int indicator, int index, int new_value);
> extern int rtas_set_indicator_fast(int indicator, int index, int new_value);
> extern void rtas_progress(char *s, unsigned short hex);
> int rtas_ibm_suspend_me(int *fw_status);
> +int rtas_generic_errno(int rtas_rc);
>
> struct rtc_time;
> extern time64_t rtas_get_boot_time(void);
> diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
> index c087eeee320ff..80b6099e8ce20 100644
> --- a/arch/powerpc/kernel/rtas.c
> +++ b/arch/powerpc/kernel/rtas.c
> @@ -1330,33 +1330,34 @@ bool __ref rtas_busy_delay(int status)
> }
> EXPORT_SYMBOL_GPL(rtas_busy_delay);
>
> -static int rtas_error_rc(int rtas_rc)
> +int rtas_generic_errno(int rtas_rc)
> {
> int rc;
>
> switch (rtas_rc) {
> - case -1: /* Hardware Error */
> - rc = -EIO;
> - break;
> - case -3: /* Bad indicator/domain/etc */
> - rc = -EINVAL;
> - break;
> - case -9000: /* Isolation error */
> - rc = -EFAULT;
> - break;
> - case -9001: /* Outstanding TCE/PTE */
> - rc = -EEXIST;
> - break;
> - case -9002: /* No usable slot */
> - rc = -ENODEV;
> - break;
> - default:
> - pr_err("%s: unexpected error %d\n", __func__, rtas_rc);
> - rc = -ERANGE;
> - break;
> + case RTAS_HARDWARE_ERROR: /* Hardware Error */
> + rc = -EIO;
> + break;
> + case RTAS_INVALID_PARAMETER: /* Bad indicator/domain/etc */
> + rc = -EINVAL;
> + break;
> + case RTAS_SLOT_UNISOLATED: /* Isolation error */
> + rc = -EFAULT;
> + break;
> + case RTAS_SLOT_NOT_UNISOLATED: /* Outstanding TCE/PTE */
> + rc = -EEXIST;
> + break;
> + case RTAS_SLOT_NOT_USABLE: /* No usable slot */
> + rc = -ENODEV;
> + break;
> + default:
> + pr_err("%s: unexpected error %d\n", __func__, rtas_rc);
> + rc = -ERANGE;
> + break;
> }
> return rc;
> }
> +EXPORT_SYMBOL(rtas_generic_errno);
Should be GPL.
cheers
WARNING: multiple messages have this Message-ID (diff)
From: Michael Ellerman <mpe@ellerman.id.au>
To: Mahesh Salgaonkar <mahesh@linux.ibm.com>,
linuxppc-dev <linuxppc-dev@ozlabs.org>
Cc: Nathan Lynch <nathanl@linux.ibm.com>,
Tyrel Datwyler <tyreld@linux.ibm.com>,
linux-pci <linux-pci@vger.kernel.org>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Oliver O'Halloran <oohall@gmail.com>,
Bjorn Helgaas <bhelgaas@google.com>
Subject: Re: [PATCH v8 1/2] powerpc/rtas: Rename rtas_error_rc to rtas_generic_errno
Date: Tue, 15 Aug 2023 13:52:14 +1000 [thread overview]
Message-ID: <877cpxdksx.fsf@mail.lhotse> (raw)
In-Reply-To: <169138864808.65607.6576358707894823512.stgit@jupiter>
Mahesh Salgaonkar <mahesh@linux.ibm.com> writes:
> rtas_generic_errno() function will convert the generic rtas return codes
> into errno.
I don't see the point of renaming it, it just creates unnecessary churn.
The existing name seems OK to me.
...
> diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h
> index 3abe15ac79db1..5572a0a2f6e18 100644
> --- a/arch/powerpc/include/asm/rtas.h
> +++ b/arch/powerpc/include/asm/rtas.h
> @@ -202,7 +202,9 @@ typedef struct {
> #define RTAS_USER_REGION_SIZE (64 * 1024)
>
> /* RTAS return status codes */
> -#define RTAS_BUSY -2 /* RTAS Busy */
> +#define RTAS_HARDWARE_ERROR (-1) /* Hardware Error */
> +#define RTAS_BUSY (-2) /* RTAS Busy */
Are the brackets necessary?
> +#define RTAS_INVALID_PARAMETER (-3) /* Invalid indicator/domain/sensor etc. */
> #define RTAS_EXTENDED_DELAY_MIN 9900
> #define RTAS_EXTENDED_DELAY_MAX 9905
>
> @@ -212,6 +214,11 @@ typedef struct {
> #define RTAS_THREADS_ACTIVE -9005 /* Multiple processor threads active */
> #define RTAS_OUTSTANDING_COPROC -9006 /* Outstanding coprocessor operations */
>
> +/* statuses specific to get-sensor-state */
> +#define RTAS_SLOT_UNISOLATED (-9000)
> +#define RTAS_SLOT_NOT_UNISOLATED (-9001)
> +#define RTAS_SLOT_NOT_USABLE (-9002)
These aren't specific to get-sensor-state.
They're used by at least: ibm,manage-flash-image, ibm,activate-firmware,
ibm,configure-connector, set-indicator etc.
They have different meanings for those calls. I think you're best to
just leave the constant values in rtas_error_rc().
> /* RTAS event classes */
> #define RTAS_INTERNAL_ERROR 0x80000000 /* set bit 0 */
> #define RTAS_EPOW_WARNING 0x40000000 /* set bit 1 */
> @@ -425,6 +432,7 @@ extern int rtas_set_indicator(int indicator, int index, int new_value);
> extern int rtas_set_indicator_fast(int indicator, int index, int new_value);
> extern void rtas_progress(char *s, unsigned short hex);
> int rtas_ibm_suspend_me(int *fw_status);
> +int rtas_generic_errno(int rtas_rc);
>
> struct rtc_time;
> extern time64_t rtas_get_boot_time(void);
> diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c
> index c087eeee320ff..80b6099e8ce20 100644
> --- a/arch/powerpc/kernel/rtas.c
> +++ b/arch/powerpc/kernel/rtas.c
> @@ -1330,33 +1330,34 @@ bool __ref rtas_busy_delay(int status)
> }
> EXPORT_SYMBOL_GPL(rtas_busy_delay);
>
> -static int rtas_error_rc(int rtas_rc)
> +int rtas_generic_errno(int rtas_rc)
> {
> int rc;
>
> switch (rtas_rc) {
> - case -1: /* Hardware Error */
> - rc = -EIO;
> - break;
> - case -3: /* Bad indicator/domain/etc */
> - rc = -EINVAL;
> - break;
> - case -9000: /* Isolation error */
> - rc = -EFAULT;
> - break;
> - case -9001: /* Outstanding TCE/PTE */
> - rc = -EEXIST;
> - break;
> - case -9002: /* No usable slot */
> - rc = -ENODEV;
> - break;
> - default:
> - pr_err("%s: unexpected error %d\n", __func__, rtas_rc);
> - rc = -ERANGE;
> - break;
> + case RTAS_HARDWARE_ERROR: /* Hardware Error */
> + rc = -EIO;
> + break;
> + case RTAS_INVALID_PARAMETER: /* Bad indicator/domain/etc */
> + rc = -EINVAL;
> + break;
> + case RTAS_SLOT_UNISOLATED: /* Isolation error */
> + rc = -EFAULT;
> + break;
> + case RTAS_SLOT_NOT_UNISOLATED: /* Outstanding TCE/PTE */
> + rc = -EEXIST;
> + break;
> + case RTAS_SLOT_NOT_USABLE: /* No usable slot */
> + rc = -ENODEV;
> + break;
> + default:
> + pr_err("%s: unexpected error %d\n", __func__, rtas_rc);
> + rc = -ERANGE;
> + break;
> }
> return rc;
> }
> +EXPORT_SYMBOL(rtas_generic_errno);
Should be GPL.
cheers
next prev parent reply other threads:[~2023-08-15 3:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-07 6:10 [PATCH v8 1/2] powerpc/rtas: Rename rtas_error_rc to rtas_generic_errno Mahesh Salgaonkar
2023-08-07 6:10 ` Mahesh Salgaonkar
2023-08-07 6:11 ` [PATCH v8 2/2] PCI: rpaphp: Error out on busy status from get-sensor-state Mahesh Salgaonkar
2023-08-07 6:11 ` Mahesh Salgaonkar
2023-08-15 3:52 ` Michael Ellerman [this message]
2023-08-15 3:52 ` [PATCH v8 1/2] powerpc/rtas: Rename rtas_error_rc to rtas_generic_errno Michael Ellerman
2023-08-16 16:23 ` Mahesh J Salgaonkar
2023-08-16 16:23 ` Mahesh J Salgaonkar
2023-08-17 6:44 ` Michael Ellerman
2023-08-17 6:44 ` Michael Ellerman
2023-08-17 12:29 ` Nathan Lynch
2023-08-17 12:29 ` Nathan Lynch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877cpxdksx.fsf@mail.lhotse \
--to=mpe@ellerman.id.au \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=mahesh@linux.ibm.com \
--cc=nathanl@linux.ibm.com \
--cc=oohall@gmail.com \
--cc=tyreld@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.