* [PATCH 1/1] BootLogoLib: align logo coords to be even
[not found] <fcdc0626-a0f7-4796-a05d-2462c896f5ba@bsdio.com>
@ 2024-06-17 8:36 ` Marcin Juszkiewicz
2024-06-17 8:39 ` Ard Biesheuvel
0 siblings, 1 reply; 3+ messages in thread
From: Marcin Juszkiewicz @ 2024-06-17 8:36 UTC (permalink / raw)
To: qemu-devel
Cc: Leif Lindholm, Ard Biesheuvel, qemu-arm, Taylor Beebe,
Pedro Falcato, Theo Jehl, Rebecca Cran, Marcin Juszkiewicz
If we draw logo at odd coords then BootLogoLib goes into exception and
boot process ends:
Synchronous Exception at 0x00000101FB943E48
PC 0x0101FB943E48 (0x0101FB93F000+0x00004E48) [ 0] QemuVideoDxe.dll
PC 0x0101FB943314 (0x0101FB93F000+0x00004314) [ 0] QemuVideoDxe.dll
PC 0x0101FB92F798 (0x0101FB92D000+0x00002798) [ 1] ConSplitterDxe.dll
PC 0x0101FBA96BC4 (0x0101FBA8E000+0x00008BC4) [ 2] BdsDxe.dll
PC 0x0101FF7FDF50 (0x0101FF7F3000+0x0000AF50) [ 3] DxeCore.dll
This change resizes logo from 193x58 to 194x58px to make it's sizes
even. And if coords are odd then they are bumped a bit to make things
work.
Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
---
.../Library/BootLogoLib/BootLogoLib.c | 4 ++++
MdeModulePkg/Logo/Logo.bmp | Bin 12446 -> 34010 bytes
2 files changed, 4 insertions(+)
diff --git a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c
index 478ec2d40e2b..3b7b5f3146e8 100644
--- a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c
+++ b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c
@@ -205,6 +205,10 @@ BootLogoEnableLogo (
DestX += OffsetX;
DestY += OffsetY;
+ // align logo to even coords
+ if (DestX % 2 != 0) DestX++;
+ if (DestY % 2 != 0) DestY++;
+
if ((DestX >= 0) && (DestY >= 0)) {
if (GraphicsOutput != NULL) {
Status = GraphicsOutput->Blt (
diff --git a/MdeModulePkg/Logo/Logo.bmp b/MdeModulePkg/Logo/Logo.bmp
index 3e85229e17595ba1f9c59e13692a4f8362ebc850..136345a56ac44e3ea8d3c91114b5a2676dc90e2a 100644
GIT binary patch
literal 34010
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
F{{z+$A|L<&
literal 12446
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
--
2.45.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] BootLogoLib: align logo coords to be even
2024-06-17 8:36 ` [PATCH 1/1] BootLogoLib: align logo coords to be even Marcin Juszkiewicz
@ 2024-06-17 8:39 ` Ard Biesheuvel
2024-06-17 11:27 ` Marcin Juszkiewicz
0 siblings, 1 reply; 3+ messages in thread
From: Ard Biesheuvel @ 2024-06-17 8:39 UTC (permalink / raw)
To: Marcin Juszkiewicz
Cc: qemu-devel, Leif Lindholm, Ard Biesheuvel, qemu-arm, Taylor Beebe,
Pedro Falcato, Theo Jehl, Rebecca Cran
On Mon, 17 Jun 2024 at 10:37, Marcin Juszkiewicz
<marcin.juszkiewicz@linaro.org> wrote:
>
> If we draw logo at odd coords then BootLogoLib goes into exception and
> boot process ends:
>
> Synchronous Exception at 0x00000101FB943E48
> PC 0x0101FB943E48 (0x0101FB93F000+0x00004E48) [ 0] QemuVideoDxe.dll
> PC 0x0101FB943314 (0x0101FB93F000+0x00004314) [ 0] QemuVideoDxe.dll
> PC 0x0101FB92F798 (0x0101FB92D000+0x00002798) [ 1] ConSplitterDxe.dll
> PC 0x0101FBA96BC4 (0x0101FBA8E000+0x00008BC4) [ 2] BdsDxe.dll
> PC 0x0101FF7FDF50 (0x0101FF7F3000+0x0000AF50) [ 3] DxeCore.dll
>
> This change resizes logo from 193x58 to 194x58px to make it's sizes
> even. And if coords are odd then they are bumped a bit to make things
> work.
>
> Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
This should be fixed in the SBSA firmware - unaligned accesses are
fine on arm64 as long as they don't target device memory. So this
likely implies that the framebuffer is mapped with device attributes
while it should be mapped normal-non-cacheable.
> ---
> .../Library/BootLogoLib/BootLogoLib.c | 4 ++++
> MdeModulePkg/Logo/Logo.bmp | Bin 12446 -> 34010 bytes
> 2 files changed, 4 insertions(+)
>
> diff --git a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c
> index 478ec2d40e2b..3b7b5f3146e8 100644
> --- a/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c
> +++ b/MdeModulePkg/Library/BootLogoLib/BootLogoLib.c
> @@ -205,6 +205,10 @@ BootLogoEnableLogo (
> DestX += OffsetX;
> DestY += OffsetY;
>
> + // align logo to even coords
> + if (DestX % 2 != 0) DestX++;
> + if (DestY % 2 != 0) DestY++;
> +
> if ((DestX >= 0) && (DestY >= 0)) {
> if (GraphicsOutput != NULL) {
> Status = GraphicsOutput->Blt (
> diff --git a/MdeModulePkg/Logo/Logo.bmp b/MdeModulePkg/Logo/Logo.bmp
> index 3e85229e17595ba1f9c59e13692a4f8362ebc850..136345a56ac44e3ea8d3c91114b5a2676dc90e2a 100644
> GIT binary patch
> literal 34010
> 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
> F{{z+$A|L<&
>
> literal 12446
> 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
>
> --
> 2.45.1
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] BootLogoLib: align logo coords to be even
2024-06-17 8:39 ` Ard Biesheuvel
@ 2024-06-17 11:27 ` Marcin Juszkiewicz
0 siblings, 0 replies; 3+ messages in thread
From: Marcin Juszkiewicz @ 2024-06-17 11:27 UTC (permalink / raw)
To: Ard Biesheuvel
Cc: qemu-devel, Leif Lindholm, Ard Biesheuvel, qemu-arm, Taylor Beebe,
Pedro Falcato, Theo Jehl, Rebecca Cran
W dniu 17.06.2024 o 10:39, Ard Biesheuvel pisze:
>> If we draw logo at odd coords then BootLogoLib goes into exception and
>> boot process ends:
>>
>> Synchronous Exception at 0x00000101FB943E48
>> PC 0x0101FB943E48 (0x0101FB93F000+0x00004E48) [ 0] QemuVideoDxe.dll
>> PC 0x0101FB943314 (0x0101FB93F000+0x00004314) [ 0] QemuVideoDxe.dll
>> PC 0x0101FB92F798 (0x0101FB92D000+0x00002798) [ 1] ConSplitterDxe.dll
>> PC 0x0101FBA96BC4 (0x0101FBA8E000+0x00008BC4) [ 2] BdsDxe.dll
>> PC 0x0101FF7FDF50 (0x0101FF7F3000+0x0000AF50) [ 3] DxeCore.dll
>>
>> This change resizes logo from 193x58 to 194x58px to make it's sizes
>> even. And if coords are odd then they are bumped a bit to make things
>> work.
>>
>> Signed-off-by: Marcin Juszkiewicz<marcin.juszkiewicz@linaro.org>
> This should be fixed in the SBSA firmware
One coffee was not enough so I sent it to QEMU devel instead of EDK2
devel mailing list...
> unaligned accesses are fine on arm64 as long as they don't target
> device memory. So this likely implies that the framebuffer is
> mapped with device attributes while it should be mapped > normal-non-cacheable.
OK, so need to go through QEMU source now.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-06-17 11:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <fcdc0626-a0f7-4796-a05d-2462c896f5ba@bsdio.com>
2024-06-17 8:36 ` [PATCH 1/1] BootLogoLib: align logo coords to be even Marcin Juszkiewicz
2024-06-17 8:39 ` Ard Biesheuvel
2024-06-17 11:27 ` Marcin Juszkiewicz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).