おああPCIだけ資料が手に入らん

Linuxのヘッダ見ればわかるのだが。

PCI Expressはあんまり変わらんとか書いたのを見たのでそんなに変わらんと思ったがコンフィグレーション空間へのアクセス方法が拡張されてますよ。

PCI ExpressというよりPCI Firmwareとかいう規格らしいが、これはなんじゃら?x86 PCとは独立した形でこれを定義することは可能なんだろうか、というのが気になったのだが資料が手に入らん。


レガシーPCIでは、コンフィグレーションへのアクセスごとにi/oポートにアドレスを書いたあとごにょごにょする必要があるのだが、これはアドレスへの書き込みとアクセスがアトミックになっている必要があるのでマルチプロセッサ的には最悪。それがちゃんとmmioになっててロックが必要なくなってる。
(が、しかし、Linux 32bitでは256MBのアドレス空間が貴重なのか、一度に一個のデバイスだけが見えるようになっていて、やっぱりロックしている)