0

So I know that having a 32-bit PCI BAR (Base Address Register) can be accessed on a 64-bit Operating System (this link gives some information about it and I myself have tested it) (let us say it is a Linux OS) but can a 64-bit PCI BAR (Base Address Register) work with a 32-Bit Operating System?

Would be great if anyone can point to any documentation or an experience of their practical experiment regarding it.

Please feel free to ask for any clarifications regarding the query.

Ameer Usman
  • 95
  • 10
  • 1
    On an x86 system it can be done using PAE to map the 64-bit physical address into the 32-bit address space. – prl Feb 23 '21 at 20:07
  • Thank you for your response @prl. Would you happen to know if the OS itself would do it or would have to be done separately. – Ameer Usman Feb 25 '21 at 06:51
  • In general, no, it may not work. PAE covers only 36 bit address space. – 0andriy Mar 21 '21 at 21:40
  • There must me Upper 32 bits and Lower 32 bits for a 64-bit BAR register, no? – Nee Feb 08 '22 at 11:35

1 Answers1

0

We did a test to confirm that if a 64-bit PCI BAR would work on a 32-bit system.

We created a 32-bit Virtual Machine on a 64-bit system having a 64-bit PCI BAR device attached and did pass through of the PCI function (virtual function, which is also 64-bit) onto the VM. When using the lspci command on the VM, we saw 64-bit BAR mapping of the passed through device on the 32-bit VM. We also sent packets (testing if the pass through is working on the VM), which worked as they normally should.

Following is the result of the lspci command on the 32-bit VM: lspci Output

Ameer Usman
  • 95
  • 10