この投稿は、Kernel/VM探検隊@北陸 Part 6で発表を行った「AArch64 ThinHypervisor開発記録」の「PCI Base Address Registerは絶対アドレスじゃ無かった話」を詳しく説明したものです。 PCIの各デバイスには、PCI Configuration Spaceというものがあって、そこにはBase Address Register(BAR)が0~5まで6つあります。 PCIデバイスを操作するためには、BARに記載されているアドレスにアクセスする必要があり、最近のデバイスは殆どMMIO(Memory Mapped I/O)となっていて、メモリアドレスが記載されています。 最近では、64bit AddressがよほどでBAR 0/1を用いてBAR0に下位32bit、BAR1に上位32bitが記述されていると思います。 基本的にBARに書かれているア