Discussion:
[PATCH] i386/linux: add support for ext_lfb_base
Arindam Nath
2018-06-27 14:55:41 UTC
Permalink
The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.

The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.

This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.

Signed-off-by: Arindam Nath <***@amd.com>
---
grub-core/loader/i386/linux.c | 2 ++
include/grub/i386/linux.h | 5 ++++-
2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 083f9417c..1644e8132 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -306,6 +306,8 @@ grub_linux_setup_video (struct linux_kernel_params *params)
params->lfb_line_len = mode_info.pitch;

params->lfb_base = (grub_size_t) framebuffer;
+ params->ext_lfb_base = (grub_size_t) (((grub_uint64_t)(grub_size_t) framebuffer) >> 32);
+ params->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
params->lfb_size = ALIGN_UP (params->lfb_line_len * params->lfb_height, 65536);

params->red_mask_size = mode_info.red_mask_size;
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
index da0ca3b83..e3f91e7c0 100644
--- a/include/grub/i386/linux.h
+++ b/include/grub/i386/linux.h
@@ -188,8 +188,11 @@ struct linux_kernel_params
grub_uint16_t lfb_pages; /* 32 */
grub_uint16_t vesa_attrib; /* 34 */
grub_uint32_t capabilities; /* 36 */
+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
+#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base is 64-bit */
+ grub_uint32_t ext_lfb_base; /* 3a */

- grub_uint8_t padding3[0x40 - 0x3a];
+ grub_uint8_t padding3[0x40 - 0x3e];

grub_uint16_t apm_version; /* 40 */
grub_uint16_t apm_code_segment; /* 42 */
--
2.17.1
Nath, Arindam
2018-06-29 12:18:29 UTC
Permalink
-----Original Message-----
Sent: Wednesday, June 27, 2018 8:26 PM
Subject: [PATCH] i386/linux: add support for ext_lfb_base
The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.
The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.
This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.
---
grub-core/loader/i386/linux.c | 2 ++
include/grub/i386/linux.h | 5 ++++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 083f9417c..1644e8132 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -306,6 +306,8 @@ grub_linux_setup_video (struct linux_kernel_params *params)
params->lfb_line_len = mode_info.pitch;
params->lfb_base = (grub_size_t) framebuffer;
+ params->ext_lfb_base = (grub_size_t) (((grub_uint64_t)(grub_size_t) framebuffer) >> 32);
+ params->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
params->lfb_size = ALIGN_UP (params->lfb_line_len * params->lfb_height, 65536);
params->red_mask_size = mode_info.red_mask_size;
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
index da0ca3b83..e3f91e7c0 100644
--- a/include/grub/i386/linux.h
+++ b/include/grub/i386/linux.h
@@ -188,8 +188,11 @@ struct linux_kernel_params
grub_uint16_t lfb_pages; /* 32 */
grub_uint16_t vesa_attrib; /* 34 */
grub_uint32_t capabilities; /* 36 */
+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
+#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base is 64-bit */
+ grub_uint32_t ext_lfb_base; /* 3a */
- grub_uint8_t padding3[0x40 - 0x3a];
+ grub_uint8_t padding3[0x40 - 0x3e];
grub_uint16_t apm_version; /* 40 */
grub_uint16_t apm_code_segment; /* 42 */
--
2.17.1
Could you help review the changes?

Thanks,
Arindam
Daniel Kiper
2018-07-02 12:41:21 UTC
Permalink
Post by Nath, Arindam
-----Original Message-----
Sent: Wednesday, June 27, 2018 8:26 PM
Subject: [PATCH] i386/linux: add support for ext_lfb_base
The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.
The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.
This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.
---
grub-core/loader/i386/linux.c | 2 ++
include/grub/i386/linux.h | 5 ++++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 083f9417c..1644e8132 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -306,6 +306,8 @@ grub_linux_setup_video (struct linux_kernel_params *params)
params->lfb_line_len = mode_info.pitch;
params->lfb_base = (grub_size_t) framebuffer;
+ params->ext_lfb_base = (grub_size_t) (((grub_uint64_t)(grub_size_t)
framebuffer) >> 32);
+ params->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
params->lfb_size = ALIGN_UP (params->lfb_line_len * params->lfb_height, 65536);
params->red_mask_size = mode_info.red_mask_size;
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
index da0ca3b83..e3f91e7c0 100644
--- a/include/grub/i386/linux.h
+++ b/include/grub/i386/linux.h
@@ -188,8 +188,11 @@ struct linux_kernel_params
grub_uint16_t lfb_pages; /* 32 */
grub_uint16_t vesa_attrib; /* 34 */
grub_uint32_t capabilities; /* 36 */
+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
+#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base is 64-bit */
+ grub_uint32_t ext_lfb_base; /* 3a */
- grub_uint8_t padding3[0x40 - 0x3a];
+ grub_uint8_t padding3[0x40 - 0x3e];
grub_uint16_t apm_version; /* 40 */
grub_uint16_t apm_code_segment; /* 42 */
--
2.17.1
Could you help review the changes?
I have just come back from the vacation. So, I will take a look
at this probably this week after clearing my backlog.

By the way, please remember that the reviewers are also busy with
other stuff and they may not be able to review the patches on day
to day basis. So, please give them a week or two to do that. If this
does not happen in that timeframe then just bump the thread but
not earlier please.

Daniel
Daniel Kiper
2018-07-06 18:12:10 UTC
Permalink
Post by Arindam Nath
The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.
The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.
This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.
---
grub-core/loader/i386/linux.c | 2 ++
include/grub/i386/linux.h | 5 ++++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 083f9417c..1644e8132 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -306,6 +306,8 @@ grub_linux_setup_video (struct linux_kernel_params *params)
params->lfb_line_len = mode_info.pitch;
params->lfb_base = (grub_size_t) framebuffer;
I think that you should add this:

#if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
Post by Arindam Nath
+ params->ext_lfb_base = (grub_size_t) (((grub_uint64_t)(grub_size_t) framebuffer) >> 32);
+ params->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
#endif

.. or at least #ifdef __x86_64__...
Post by Arindam Nath
params->lfb_size = ALIGN_UP (params->lfb_line_len * params->lfb_height, 65536);
params->red_mask_size = mode_info.red_mask_size;
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
index da0ca3b83..e3f91e7c0 100644
--- a/include/grub/i386/linux.h
+++ b/include/grub/i386/linux.h
@@ -188,8 +188,11 @@ struct linux_kernel_params
grub_uint16_t lfb_pages; /* 32 */
grub_uint16_t vesa_attrib; /* 34 */
grub_uint32_t capabilities; /* 36 */
+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
+#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base is 64-bit */
My I ask you to put this constants definitions at the
beginning of the file together with other constants?

Daniel
Nath, Arindam
2018-07-06 18:27:32 UTC
Permalink
-----Original Message-----
Sent: Friday, July 6, 2018 11:42 PM
Subject: Re: [PATCH] i386/linux: add support for ext_lfb_base
Post by Arindam Nath
The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.
The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.
This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.
---
grub-core/loader/i386/linux.c | 2 ++
include/grub/i386/linux.h | 5 ++++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 083f9417c..1644e8132 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -306,6 +306,8 @@ grub_linux_setup_video (struct
linux_kernel_params *params)
Post by Arindam Nath
params->lfb_line_len = mode_info.pitch;
params->lfb_base = (grub_size_t) framebuffer;
#if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
Post by Arindam Nath
+ params->ext_lfb_base = (grub_size_t) (((grub_uint64_t)(grub_size_t)
framebuffer) >> 32);
Post by Arindam Nath
+ params->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
#endif
That makes sense. Will add the #if in next version of patch.
.. or at least #ifdef __x86_64__...
Post by Arindam Nath
params->lfb_size = ALIGN_UP (params->lfb_line_len * params-
lfb_height, 65536);
params->red_mask_size = mode_info.red_mask_size;
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
index da0ca3b83..e3f91e7c0 100644
--- a/include/grub/i386/linux.h
+++ b/include/grub/i386/linux.h
@@ -188,8 +188,11 @@ struct linux_kernel_params
grub_uint16_t lfb_pages; /* 32 */
grub_uint16_t vesa_attrib; /* 34 */
grub_uint32_t capabilities; /* 36 */
+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
+#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base
is 64-bit */
My I ask you to put this constants definitions at the
beginning of the file together with other constants?
Will do. Thanks.

Arindam
Daniel
Arindam Nath
2018-07-12 09:39:12 UTC
Permalink
From: Arindam Nath <***@gmail.com>

v2: changes suggested by Daniel

- added #if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
- moved constant definitions to the beginning of header file

v1:

The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.

The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.

This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.

Signed-off-by: Arindam Nath <***@amd.com>
---
grub-core/loader/i386/linux.c | 4 ++++
include/grub/i386/linux.h | 12 +++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 083f9417c..246945abe 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -306,6 +306,10 @@ grub_linux_setup_video (struct linux_kernel_params *params)
params->lfb_line_len = mode_info.pitch;

params->lfb_base = (grub_size_t) framebuffer;
+#if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
+ params->ext_lfb_base = (grub_size_t) (((grub_uint64_t)(grub_size_t) framebuffer) >> 32);
+ params->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
+#endif
params->lfb_size = ALIGN_UP (params->lfb_line_len * params->lfb_height, 65536);

params->red_mask_size = mode_info.red_mask_size;
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
index da0ca3b83..04d277b4e 100644
--- a/include/grub/i386/linux.h
+++ b/include/grub/i386/linux.h
@@ -43,6 +43,13 @@

#define GRUB_LINUX_CL_MAGIC 0xA33F

+#if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
+
+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
+#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base is 64-bit */
+
+#endif
+
#ifdef __x86_64__

#define GRUB_LINUX_EFI_SIGNATURE \
@@ -188,8 +195,11 @@ struct linux_kernel_params
grub_uint16_t lfb_pages; /* 32 */
grub_uint16_t vesa_attrib; /* 34 */
grub_uint32_t capabilities; /* 36 */
+#if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
+ grub_uint32_t ext_lfb_base; /* 3a */
+#endif

- grub_uint8_t padding3[0x40 - 0x3a];
+ grub_uint8_t padding3[0x40 - 0x3e];

grub_uint16_t apm_version; /* 40 */
grub_uint16_t apm_code_segment; /* 42 */
--
2.17.1
Daniel Kiper
2018-07-12 11:54:19 UTC
Permalink
Post by Arindam Nath
v2: changes suggested by Daniel
- added #if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
- moved constant definitions to the beginning of header file
This should go...
Post by Arindam Nath
The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.
The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.
This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.
---
...here. You should add "---" after SOB and put info
about the versions after it. You can find good examples
on the list.
Post by Arindam Nath
grub-core/loader/i386/linux.c | 4 ++++
include/grub/i386/linux.h | 12 +++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 083f9417c..246945abe 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -306,6 +306,10 @@ grub_linux_setup_video (struct linux_kernel_params *params)
params->lfb_line_len = mode_info.pitch;
params->lfb_base = (grub_size_t) framebuffer;
+#if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
Please add one empty line before "#if ...".
Post by Arindam Nath
+ params->ext_lfb_base = (grub_size_t) (((grub_uint64_t)(grub_size_t) framebuffer) >> 32);
+ params->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
+#endif
Please add one empty line after "#endif".
Post by Arindam Nath
params->lfb_size = ALIGN_UP (params->lfb_line_len * params->lfb_height, 65536);
params->red_mask_size = mode_info.red_mask_size;
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
index da0ca3b83..04d277b4e 100644
--- a/include/grub/i386/linux.h
+++ b/include/grub/i386/linux.h
@@ -43,6 +43,13 @@
#define GRUB_LINUX_CL_MAGIC 0xA33F
+#if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
+
+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
+#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base is 64-bit */
+
+#endif
Please drop this #if/#endif. It is not needed here.
Post by Arindam Nath
+
#ifdef __x86_64__
#define GRUB_LINUX_EFI_SIGNATURE \
@@ -188,8 +195,11 @@ struct linux_kernel_params
grub_uint16_t lfb_pages; /* 32 */
grub_uint16_t vesa_attrib; /* 34 */
grub_uint32_t capabilities; /* 36 */
+#if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
+ grub_uint32_t ext_lfb_base; /* 3a */
+#endif
Ditto.
Post by Arindam Nath
- grub_uint8_t padding3[0x40 - 0x3a];
+ grub_uint8_t padding3[0x40 - 0x3e];
And this will be wrong if you do not drop #if/#endif above.

Daniel
Arindam Nath
2018-07-12 13:32:49 UTC
Permalink
From: Arindam Nath <***@gmail.com>

Signed-off-by: Arindam Nath <***@amd.com>
---
Cc: Daniel Kiper <***@net-space.pl>
---
v1:

The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.

The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.

This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.

v2: changes suggested by Daniel

- added #if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
- moved constant definitions to the beginning of header file

v3: changes suggested by Daniel

- moved patch version info below SOB
- added empty lines above and below the modified lines
- removed unnecessary #if and #endif from header file
---
grub-core/loader/i386/linux.c | 6 ++++++
include/grub/i386/linux.h | 6 +++++-
2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 083f9417c..e66164bac 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -306,6 +306,12 @@ grub_linux_setup_video (struct linux_kernel_params *params)
params->lfb_line_len = mode_info.pitch;

params->lfb_base = (grub_size_t) framebuffer;
+
+#if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
+ params->ext_lfb_base = (grub_size_t) (((grub_uint64_t)(grub_size_t) framebuffer) >> 32);
+ params->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
+#endif
+
params->lfb_size = ALIGN_UP (params->lfb_line_len * params->lfb_height, 65536);

params->red_mask_size = mode_info.red_mask_size;
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
index da0ca3b83..ebac95e41 100644
--- a/include/grub/i386/linux.h
+++ b/include/grub/i386/linux.h
@@ -43,6 +43,9 @@

#define GRUB_LINUX_CL_MAGIC 0xA33F

+#define VIDEO_CAPABILITY_SKIP_QUIRKS (1 << 0)
+#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base is 64-bit */
+
#ifdef __x86_64__

#define GRUB_LINUX_EFI_SIGNATURE \
@@ -188,8 +191,9 @@ struct linux_kernel_params
grub_uint16_t lfb_pages; /* 32 */
grub_uint16_t vesa_attrib; /* 34 */
grub_uint32_t capabilities; /* 36 */
+ grub_uint32_t ext_lfb_base; /* 3a */

- grub_uint8_t padding3[0x40 - 0x3a];
+ grub_uint8_t padding3[0x40 - 0x3e];

grub_uint16_t apm_version; /* 40 */
grub_uint16_t apm_code_segment; /* 42 */
--
2.17.1
Daniel Kiper
2018-07-13 11:49:31 UTC
Permalink
Post by Arindam Nath
---
---
The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.
The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.
This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.
v2: changes suggested by Daniel
- added #if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
- moved constant definitions to the beginning of header file
v3: changes suggested by Daniel
- moved patch version info below SOB
- added empty lines above and below the modified lines
- removed unnecessary #if and #endif from header file
Code looks good but the commit message is a mess. The commit message
should look like this in your editor.


i386/linux: add support for ext_lfb_base

The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.

The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.

This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.

Signed-off-by: Arindam Nath <***@amd.com>
---
Cc: Daniel Kiper <***@net-space.pl>

v2: changes suggested by Daniel
- added #if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
- moved constant definitions to the beginning of header file

v3: changes suggested by Daniel
- moved patch version info below SOB
- added empty lines above and below the modified lines
- removed unnecessary #if and #endif from header file


I will fix that before committing the patch. I will do
that in a week or so if there are no objections.

Next time please adhere to the commit message layout presented above.

Thank you for doing the work.

Daniel
Nath, Arindam
2018-07-13 11:54:27 UTC
Permalink
-----Original Message-----
Sent: Friday, July 13, 2018 5:20 PM
Subject: Re: [PATCH v3] i386/linux: add support for ext_lfb_base
Post by Arindam Nath
---
---
The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.
The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.
This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.
v2: changes suggested by Daniel
- added #if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
- moved constant definitions to the beginning of header file
v3: changes suggested by Daniel
- moved patch version info below SOB
- added empty lines above and below the modified lines
- removed unnecessary #if and #endif from header file
Code looks good but the commit message is a mess. The commit message
should look like this in your editor.
i386/linux: add support for ext_lfb_base
The EFI Graphics Output Protocol can return a 64-bit
linear frame buffer address in some firmware/BIOS
implementations. We currently only store the lower
32-bits in the lfb_base. This will eventually be
passed to Linux kernel and the efifb driver will
incorrectly interpret the framebuffer address as
32-bit address.
The Linux kernel has already added support to handle
64-bit linear framebuffer address in the efifb driver
since quite some time now.
This patch adds the support for 64-bit linear frame
buffer address in GRUB to address the above mentioned
scenario.
---
v2: changes suggested by Daniel
- added #if defined (GRUB_MACHINE_EFI) && defined (__x86_64__)
- moved constant definitions to the beginning of header file
v3: changes suggested by Daniel
- moved patch version info below SOB
- added empty lines above and below the modified lines
- removed unnecessary #if and #endif from header file
I will fix that before committing the patch. I will do
that in a week or so if there are no objections.
Thanks.
Next time please adhere to the commit message layout presented above.
Will do.

Arindam
Thank you for doing the work.
Daniel
Continue reading on narkive:
Loading...