OSDev.org
https://forum.osdev.org/

Handling 64bit MMIO BAR in 32bit OS
https://forum.osdev.org/viewtopic.php?f=1&t=56603
Page 1 of 1

Author:  prajwal [ Sun Nov 27, 2022 4:01 am ]
Post subject:  Handling 64bit MMIO BAR in 32bit OS

Hi,

For my OS dev, I use QEMU and TianoCore OVMF (both 32bit & 64bit - downloaded from sourceforge. On QEMU, my OS works fine with both 32bit OVMF and 64bit OVMF while my OS itself is a 32bit protected mode OS (developed for x86 platform)

I recently decided to locally build and use the latest stable tag of OVMF from: https://github.com/tianocore/edk2.git

I was able to build 3 different variants - OvmfIa32, Ovmf3264 and OvmfX64

My OS works fine when using OvmfIa32, however when using Ovmf3264, the XHCI controller initialization in my OS fails because the BAR address is a 64 bit address while I can only map 32bit address

Is it correct for the firmware to assign 64bit BAR to a PCI device while loading a 32bit OS ? If so, how to handle this scenario ? (b/w the problem doesn't happen on my laptop that runs on i7 processor)

Thanks
Prajwal

Author:  8infy [ Sun Nov 27, 2022 6:01 am ]
Post subject:  Re: Handling 64bit MMIO BAR in 32bit OS

prajwal wrote:
Hi,

For my OS dev, I use QEMU and TianoCore OVMF (both 32bit & 64bit - downloaded from sourceforge. On QEMU, my OS works fine with both 32bit OVMF and 64bit OVMF while my OS itself is a 32bit protected mode OS (developed for x86 platform)

I recently decided to locally build and use the latest stable tag of OVMF from: https://github.com/tianocore/edk2.git

I was able to build 3 different variants - OvmfIa32, Ovmf3264 and OvmfX64

My OS works fine when using OvmfIa32, however when using Ovmf3264, the XHCI controller initialization in my OS fails because the BAR address is a 64 bit address while I can only map 32bit address

Is it correct for the firmware to assign 64bit BAR to a PCI device while loading a 32bit OS ? If so, how to handle this scenario ? (b/w the problem doesn't happen on my laptop that runs on i7 processor)

Thanks
Prajwal

Simple, don't support non-PAE 32 bit. Problem solved. This is only < 2000 hardware anyways.

Author:  iansjack [ Sun Nov 27, 2022 6:37 am ]
Post subject:  Re: Handling 64bit MMIO BAR in 32bit OS

Exactly. A computer that is 32-bit only won't have a 64-bit UEFI.

Author:  prajwal [ Sun Nov 27, 2022 6:40 am ]
Post subject:  Re: Handling 64bit MMIO BAR in 32bit OS

Is there way to configure OVMF to assign only 32bit BAR to PCI devices ? Wouldn't it be correct for OVMF to do that by default to make it compatible for both 32bit and 64bit OS to run - particularly when it is built with config to support both IA32 and X64 ARCH.

Author:  iansjack [ Sun Nov 27, 2022 8:41 am ]
Post subject:  Re: Handling 64bit MMIO BAR in 32bit OS

If you are using the 64 bit OVMF you must have a 64-bit capable processor. So, even if your OS is 32-bit, you can use PAE to access 64-bit addresses.

Author:  prajwal [ Mon Nov 28, 2022 5:12 am ]
Post subject:  Re: Handling 64bit MMIO BAR in 32bit OS

Got it! Thanks for clarifying.

Page 1 of 1 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/