* [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).