VMWareのPCIデバイスをリストしてみた
Cyber PeripheralsのPCI Configurationページや、OS WikiのPCIに関するページを参考にして、VMWareの仮想マシンのPCIバス0のデバイスを列挙しています。
TOPPERS/JSP Kernel Release 1.4 (patchlevel = 3) for IA-32(PC/AT) (Sep 21 2008, 10:02:51) Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory Toyohashi Univ. of Technology, JAPAN Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory Graduate School of Information Science, Nagoya Univ., JAPAN System logging task is started on port 1. -- buffered messages -- Sample program starts (exinf = 0). Found 8086, 7190. Found 8086, 7191. Found 8086, 7110. Found 15ad, 0405. Found 1000, 0030. Found 1022, 2000. Found 1274, 1371. Sample program ends.
よく知られているように、VMWareの仮想チップセットは440BX( 8086 7190 )です。古い。一番最後の行(1274, 1371)はEnsoniqのオーディオカードです。列挙に使ったPCI Config レジスタの読み取り関数はこんな感じ。
unsigned int getPCIConfigData( unsigned int command ) { unsigned int retVal; asm volatile( "mov $0xcf8,%%dx;" // DXにPCI config コマンド・レジスタのアドレスをセット "out %0,%%dx;" // PCIコマンドを発行 : :"a"(command) :"%dx" ); asm volatile( "mov $0xcfc,%%dx;" // DXに PCI Config データ・レジスタのアドレスをセット "in %%dx,%0;" // PCI config データを読み取り :"=a"(retVal) : : "%dx" ); return retVal; }