* [PATCH v3 02/16] term/terminfo: for ppc, reset console display attr when clear screen
2024-10-10 21:43 [PATCH v3 00/16] First Distro-agnostic series taken from Fedora Rawhide Leo Sandoval
@ 2024-10-10 21:43 ` Leo Sandoval
0 siblings, 0 replies; 4+ messages in thread
From: Leo Sandoval @ 2024-10-10 21:43 UTC (permalink / raw)
To: grub-devel
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
v2: Also use \x0c instead of a literal ^L to make future patches less
awkward.
This should fix this bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=908519
Signed-off-by: Peter Jones <pjones@redhat.com>
Signed-off-by: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
---
grub-core/term/terminfo.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c
index 4e534c683..3dbe88e89 100644
--- a/grub-core/term/terminfo.c
+++ b/grub-core/term/terminfo.c
@@ -151,7 +151,7 @@ grub_terminfo_set_current (struct grub_term_output *term,
/* Clear the screen. Using serial console, screen(1) only recognizes the
* ANSI escape sequence. Using video console, Apple Open Firmware
* (version 3.1.1) only recognizes the literal ^L. So use both. */
- data->cls = grub_strdup ("\f\e[2J");
+ data->cls = grub_strdup ("\x0c\e[2J\e[m");
data->reverse_video_on = grub_strdup ("\e[7m");
data->reverse_video_off = grub_strdup ("\e[m");
if (grub_strcmp ("ieee1275", str) == 0)
--
2.46.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3 01/16] ieee1275/openfw: IBM client architecture(CAS) reboot support
[not found] <mailman.5684.1728596634.1206.grub-devel@gnu.org>
@ 2024-11-05 12:01 ` avnish
2024-11-08 11:30 ` [PATCH v3 03/16] ieee1275: Disable GRUB video support for IBM power machines avnish
2024-11-12 6:06 ` [PATCH v3 02/16] term/terminfo: for ppc, reset console display attr when clear screen Avnish Chouhan
2 siblings, 0 replies; 4+ messages in thread
From: avnish @ 2024-11-05 12:01 UTC (permalink / raw)
To: grub-devel; +Cc: lsandova
On 2024-10-11 03:13, grub-devel-request@gnu.org wrote:
> Message: 1
> Date: Thu, 10 Oct 2024 15:43:19 -0600
> From: Leo Sandoval <lsandova@redhat.com>
> To: grub-devel@gnu.org
> Subject: [PATCH v3 01/16] ieee1275/openfw: IBM client architecture
> (CAS) reboot support
> Message-ID: <20241010214334.1749167-2-lsandova@redhat.com>
> Content-Type: text/plain; charset="US-ASCII"; x-default=true
>
> From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
>
> This is an implementation of IBM client architecture (CAS) reboot for
> GRUB.
>
> There are cases where the POWER firmware must reboot in order to
> support
> specific features requested by a kernel. The kernel calls
> ibm,client-architecture-support and it may either return or reboot with
> the new feature set. eg:
>
> Calling ibm,client-architecture-support.../
> Elapsed time since release of system processors: 70959 mins 50 secs
> Welcome to GRUB!
>
> Instead of return to the GRUB menu, it will check if the flag for CAS
> reboot is set. If so, grub will automatically boot the last booted
> kernel using the same parameters
>
> Signed-off-by: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
> [rharwood@redhat.com: commit message rewrap]
> Signed-off-by: Robbie Harwood <rharwood@redhat.com>
> ---
> grub-core/kern/ieee1275/openfw.c | 63 ++++++++++++++++++++++++++++++++
> grub-core/normal/main.c | 19 ++++++++++
> grub-core/script/execute.c | 7 ++++
> include/grub/ieee1275/ieee1275.h | 2 +
> 4 files changed, 91 insertions(+)
>
> diff --git a/grub-core/kern/ieee1275/openfw.c
> b/grub-core/kern/ieee1275/openfw.c
> index 11b2beb2f..e2ecc65d2 100644
> --- a/grub-core/kern/ieee1275/openfw.c
> +++ b/grub-core/kern/ieee1275/openfw.c
> @@ -591,3 +591,66 @@ grub_ieee1275_get_boot_dev (void)
>
> return bootpath;
> }
> +
> +/* Check if it's a CAS reboot. If so, set the script to be executed.
> */
> +int
> +grub_ieee1275_cas_reboot (char *script)
> +{
> + grub_uint32_t ibm_ca_support_reboot;
> + grub_uint32_t ibm_fw_nbr_reboots;
> + char property_value[10];
> + grub_ssize_t actual;
> + grub_ieee1275_ihandle_t options;
> +
> + if (grub_ieee1275_finddevice ("/options", &options) < 0)
> + return -1;
> +
> + /* Check two properties, one is enough to get cas reboot value */
> + ibm_ca_support_reboot = 0;
> + if (grub_ieee1275_get_integer_property (grub_ieee1275_chosen,
> +
> "ibm,client-architecture-support-reboot",
> + &ibm_ca_support_reboot,
> + sizeof
> (ibm_ca_support_reboot),
> + &actual) >= 0)
> + grub_dprintf("ieee1275", "ibm,client-architecture-support-reboot:
> %u\n",
> + ibm_ca_support_reboot);
> +
> + ibm_fw_nbr_reboots = 0;
> + if (grub_ieee1275_get_property (options, "ibm,fw-nbr-reboots",
> + property_value, sizeof
> (property_value),
> + &actual) >= 0)
> + {
> + property_value[sizeof (property_value) - 1] = 0;
> + ibm_fw_nbr_reboots = (grub_uint8_t) grub_strtoul
> (property_value, 0, 10);
> + grub_dprintf("ieee1275", "ibm,fw-nbr-reboots: %u\n",
> ibm_fw_nbr_reboots);
> + }
> +
> + if (ibm_ca_support_reboot || ibm_fw_nbr_reboots)
> + {
> + if (! grub_ieee1275_get_property_length (options,
> "boot-last-label", &actual))
> + {
> + if (actual > 1024)
> + script = grub_realloc (script, actual + 1);
> + grub_ieee1275_get_property (options, "boot-last-label",
> script, actual,
> + &actual);
> + return 0;
> + }
> + }
> +
> + grub_ieee1275_set_boot_last_label ("");
> +
> + return -1;
> +}
> +
> +int grub_ieee1275_set_boot_last_label (const char *text)
> +{
> + grub_ieee1275_ihandle_t options;
> + grub_ssize_t actual;
> +
> + grub_dprintf("ieee1275", "set boot_last_label (size: %u)\n",
> grub_strlen(text));
> + if (! grub_ieee1275_finddevice ("/options", &options) &&
> + options != (grub_ieee1275_ihandle_t) -1)
> + grub_ieee1275_set_property (options, "boot-last-label", text,
> + grub_strlen (text), &actual);
> + return 0;
> +}
> diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
> index bd4431000..d3f53d93d 100644
> --- a/grub-core/normal/main.c
> +++ b/grub-core/normal/main.c
> @@ -34,6 +34,9 @@
> #include <grub/charset.h>
> #include <grub/script_sh.h>
> #include <grub/bufio.h>
> +#ifdef GRUB_MACHINE_IEEE1275
> +#include <grub/ieee1275/ieee1275.h>
> +#endif
>
> GRUB_MOD_LICENSE ("GPLv3+");
>
> @@ -276,6 +279,22 @@ grub_normal_execute (const char *config, int
> nested, int batch)
> {
> menu = read_config_file (config);
>
> +#ifdef GRUB_MACHINE_IEEE1275
> + int boot;
> + boot = 0;
> + char *script;
> + script = grub_malloc (1024);
> + if (! grub_ieee1275_cas_reboot (script))
> + {
> + char *dummy[1] = { NULL };
> + if (! grub_script_execute_sourcecode (script))
> + boot = 1;
> + }
> + grub_free (script);
> + if (boot)
> + grub_command_execute ("boot", 0, 0);
> +#endif
> +
> /* Ignore any error. */
> grub_errno = GRUB_ERR_NONE;
> }
> diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c
> index 14ff09094..dab8fd2ae 100644
> --- a/grub-core/script/execute.c
> +++ b/grub-core/script/execute.c
> @@ -28,6 +28,9 @@
> #include <grub/extcmd.h>
> #include <grub/i18n.h>
> #include <grub/verify.h>
> +#ifdef GRUB_MACHINE_IEEE1275
> +#include <grub/ieee1275/ieee1275.h>
> +#endif
>
> /* Max digits for a char is 3 (0xFF is 255), similarly for an int it
> is sizeof (int) * 3, and one extra for a possible -ve sign. */
> @@ -883,6 +886,10 @@ grub_script_execute_sourcecode (const char
> *source)
> grub_err_t ret = 0;
> struct grub_script *parsed_script;
>
> +#ifdef GRUB_MACHINE_IEEE1275
> + grub_ieee1275_set_boot_last_label (source);
> +#endif
> +
> while (source)
> {
> char *line;
> diff --git a/include/grub/ieee1275/ieee1275.h
> b/include/grub/ieee1275/ieee1275.h
> index dddb38514..4f6e6aaa0 100644
> --- a/include/grub/ieee1275/ieee1275.h
> +++ b/include/grub/ieee1275/ieee1275.h
> @@ -251,6 +251,8 @@ int EXPORT_FUNC(grub_ieee1275_devalias_next)
> (struct grub_ieee1275_devalias *ali
> void EXPORT_FUNC(grub_ieee1275_children_peer) (struct
> grub_ieee1275_devalias *alias);
> void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath,
> struct grub_ieee1275_devalias *alias);
> +int EXPORT_FUNC(grub_ieee1275_cas_reboot) (char *script);
> +int EXPORT_FUNC(grub_ieee1275_set_boot_last_label) (const char *text);
>
> char *EXPORT_FUNC(grub_ieee1275_get_boot_dev) (void);
>
> --
> 2.46.2
>
Reviewed-by: Avnish Chouhan <avnish@linux.ibm.com>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 03/16] ieee1275: Disable GRUB video support for IBM power machines
[not found] <mailman.5684.1728596634.1206.grub-devel@gnu.org>
2024-11-05 12:01 ` [PATCH v3 01/16] ieee1275/openfw: IBM client architecture(CAS) reboot support avnish
@ 2024-11-08 11:30 ` avnish
2024-11-12 6:06 ` [PATCH v3 02/16] term/terminfo: for ppc, reset console display attr when clear screen Avnish Chouhan
2 siblings, 0 replies; 4+ messages in thread
From: avnish @ 2024-11-08 11:30 UTC (permalink / raw)
To: grub-devel; +Cc: lsandova
> Message: 3
> Date: Thu, 10 Oct 2024 15:43:21 -0600
> From: Leo Sandoval <lsandova@redhat.com>
> To: grub-devel@gnu.org
> Subject: [PATCH v3 03/16] ieee1275: Disable GRUB video support for IBM
> power machines
> Message-ID: <20241010214334.1749167-4-lsandova@redhat.com>
> Content-Type: text/plain; charset="US-ASCII"; x-default=true
>
> From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
>
> GRUB gets the display card node address from OpenFirmware, however this
> address
> is truncated to 32-bits (OpenFirmware works on 32-bits, so GRUB)
> effectively
> getting an invalid address. This change disables the video support on
> IBM power
> machines. More details can be found at [1].
>
> [1] https://bugzilla.redhat.com/show_bug.cgi?id=973205
>
> Signed-off-by: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
> Signed-off-by: Robbie Harwood <rharwood@redhat.com>
> ---
> grub-core/kern/ieee1275/cmain.c | 5 ++++-
> grub-core/video/ieee1275.c | 9 ++++++---
> include/grub/ieee1275/ieee1275.h | 2 ++
> 3 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/grub-core/kern/ieee1275/cmain.c
> b/grub-core/kern/ieee1275/cmain.c
> index e74de3248..810a089a9 100644
> --- a/grub-core/kern/ieee1275/cmain.c
> +++ b/grub-core/kern/ieee1275/cmain.c
> @@ -89,7 +89,10 @@ grub_ieee1275_find_options (void)
> }
>
> if (rc >= 0 && grub_strncmp (tmp, "IBM", 3) == 0)
> - grub_ieee1275_set_flag
> (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS);
> + {
> + grub_ieee1275_set_flag
> (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS);
> + grub_ieee1275_set_flag
> (GRUB_IEEE1275_FLAG_DISABLE_VIDEO_SUPPORT);
> + }
>
> /* Old Macs have no key repeat, newer ones have fully working one.
> The ones inbetween when repeated key generates an escaoe sequence
> diff --git a/grub-core/video/ieee1275.c b/grub-core/video/ieee1275.c
> index ca3d3c3b2..5592e4bb7 100644
> --- a/grub-core/video/ieee1275.c
> +++ b/grub-core/video/ieee1275.c
> @@ -351,9 +351,12 @@ static struct grub_video_adapter
> grub_video_ieee1275_adapter =
>
> GRUB_MOD_INIT(ieee1275_fb)
> {
> - find_display ();
> - if (display)
> - grub_video_register (&grub_video_ieee1275_adapter);
> + if (! grub_ieee1275_test_flag
> (GRUB_IEEE1275_FLAG_DISABLE_VIDEO_SUPPORT))
> + {
> + find_display ();
> + if (display)
> + grub_video_register (&grub_video_ieee1275_adapter);
> + }
> }
>
> GRUB_MOD_FINI(ieee1275_fb)
> diff --git a/include/grub/ieee1275/ieee1275.h
> b/include/grub/ieee1275/ieee1275.h
> index 4f6e6aaa0..db0ec5f4c 100644
> --- a/include/grub/ieee1275/ieee1275.h
> +++ b/include/grub/ieee1275/ieee1275.h
> @@ -145,6 +145,8 @@ enum grub_ieee1275_flag
> GRUB_IEEE1275_FLAG_POWER_VM,
>
> GRUB_IEEE1275_FLAG_POWER_KVM,
> +
> + GRUB_IEEE1275_FLAG_DISABLE_VIDEO_SUPPORT
> };
>
> extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum
> grub_ieee1275_flag flag);
> --
> 2.46.2
>
>
>
>
> ------------------------------
Reviewed-by: Avnish Chouhan <avnish@linux.ibm.com>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 02/16] term/terminfo: for ppc, reset console display attr when clear screen
[not found] <mailman.5684.1728596634.1206.grub-devel@gnu.org>
2024-11-05 12:01 ` [PATCH v3 01/16] ieee1275/openfw: IBM client architecture(CAS) reboot support avnish
2024-11-08 11:30 ` [PATCH v3 03/16] ieee1275: Disable GRUB video support for IBM power machines avnish
@ 2024-11-12 6:06 ` Avnish Chouhan
2 siblings, 0 replies; 4+ messages in thread
From: Avnish Chouhan @ 2024-11-12 6:06 UTC (permalink / raw)
To: grub-devel; +Cc: grub-devel-request, lsandova
> Message: 4
> Date: Thu, 10 Oct 2024 15:43:20 -0600
> From: Leo Sandoval <lsandova@redhat.com>
> To: grub-devel@gnu.org
> Subject: [PATCH v3 02/16] term/terminfo: for ppc, reset console
> display attr when clear screen
> Message-ID: <20241010214334.1749167-3-lsandova@redhat.com>
> Content-Type: text/plain; charset="US-ASCII"; x-default=true
>
> From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
>
> v2: Also use \x0c instead of a literal ^L to make future patches less
> awkward.
>
> This should fix this bugzilla:
> https://bugzilla.redhat.com/show_bug.cgi?id=908519
>
> Signed-off-by: Peter Jones <pjones@redhat.com>
> Signed-off-by: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
> Signed-off-by: Robbie Harwood <rharwood@redhat.com>
> ---
> grub-core/term/terminfo.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c
> index 4e534c683..3dbe88e89 100644
> --- a/grub-core/term/terminfo.c
> +++ b/grub-core/term/terminfo.c
> @@ -151,7 +151,7 @@ grub_terminfo_set_current (struct grub_term_output
> *term,
> /* Clear the screen. Using serial console, screen(1) only
> recognizes the
> * ANSI escape sequence. Using video console, Apple Open
> Firmware
> * (version 3.1.1) only recognizes the literal ^L. So use both.
> */
> - data->cls = grub_strdup ("\f\e[2J");
> + data->cls = grub_strdup ("\x0c\e[2J\e[m");
> data->reverse_video_on = grub_strdup ("\e[7m");
> data->reverse_video_off = grub_strdup ("\e[m");
> if (grub_strcmp ("ieee1275", str) == 0)
> --
> 2.46.2
>
>
>
>
> ------------------------------
Reviewed-by: Avnish Chouhan <avnish@linux.ibm.com>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-11-12 6:07 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <mailman.5684.1728596634.1206.grub-devel@gnu.org>
2024-11-05 12:01 ` [PATCH v3 01/16] ieee1275/openfw: IBM client architecture(CAS) reboot support avnish
2024-11-08 11:30 ` [PATCH v3 03/16] ieee1275: Disable GRUB video support for IBM power machines avnish
2024-11-12 6:06 ` [PATCH v3 02/16] term/terminfo: for ppc, reset console display attr when clear screen Avnish Chouhan
2024-10-10 21:43 [PATCH v3 00/16] First Distro-agnostic series taken from Fedora Rawhide Leo Sandoval
2024-10-10 21:43 ` [PATCH v3 02/16] term/terminfo: for ppc, reset console display attr when clear screen Leo Sandoval
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.