- Xen的IOMMU的使用方法
- echo"8086 10a7">/sys/bus/pci/drivers/pci-stub/new_id
- echo 0000:08:00.0>/sys/bus/pci/devices/0000:08:00.0/driver/unbind
- echo 0000:08:00.0>/sys/bus/pci/drivers/pci-stub/bind
- echo"8086 10a7">/sys/bus/pci/drivers/pci-stub/new_id
- echo 0000:08:00.1>/sys/bus/pci/devices/0000:08:00.1/driver/unbind
- echo 0000:08:00.1>/sys/bus/pci/drivers/pci-stub/bind
- xm pci-list-assignable-devices
- xm create/etc/xen/f13-hvm
- xm pci-list f13-hvm
- lspci
- xm pci-detach f13-hvm"08:00.*"
- xm pci-attach f13-hvm"08:00.*"
Xen的IOMMU的使用方法
在Fedora 13中,Xen并未作为正式的工具包发布,因此需要从以下网页下载RPM包。
Dom0内核的RPM
http://repos.fedorapeople.org/repos/myoung/dom0-kernel/
Xen的其他RPM
http://ftp.funet.fi/pub/mirrors/fedora.redhat.com/pub/fedora/linux/updates/testing/14/
要启用VT-d,需要在Xen中将选项iommu=1指定为管理程序的启动选项。下面是grub.conf的示例。
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
root(hd0,0)
kernel/xen.gz iommu=1 dom0_mem=2G
module/vmlinuz-2.6.32.23-170.xendom0.fc12.x86_64 ro root=UUID=293a5a8e-9dde-40a4-9356-5c8492d70eaa rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYTABLE=jp106 rhgb
module/initramfs-2.6.32.23-170.xendom0.fc12.x86_64.img
将分配给主机操作系统的设备从主机操作系统拆除的方法与KVM相同。这种情况下拆除方法如下。
echo"8086 10a7">/sys/bus/pci/drivers/pci-stub/new_id
echo 0000:08:00.0>/sys/bus/pci/devices/0000:08:00.0/driver/unbind
echo 0000:08:00.0>/sys/bus/pci/drivers/pci-stub/bind
echo"8086 10a7">/sys/bus/pci/drivers/pci-stub/new_id
echo 0000:08:00.1>/sys/bus/pci/devices/0000:08:00.1/driver/unbind
echo 0000:08:00.1>/sys/bus/pci/drivers/pci-stub/bind
在Xen中可以使用下列命令检查可分配的设备。
xm pci-list-assignable-devices
0000:08:00.0
0000:08:00.1
在Xen中,客户端操作系统的配置文件可以通过设置下列选项,将PCI设备分配给客户端操作系统。
pci=['08:00.0','08:00.1']
分配给客户端操作系统的PCI设备默认依次分配到空的虚拟插槽,但如果使用@<slot号>选项,就可以指定要分配的插槽。
pci=['08:00.0','08:00.1@7']
在本次使用的PCI这种Multi-Function设备中,有一些必须从操作系统角度看也是Multi-Function设备,才能顺利运行。USB控制器或显卡类设备尤其需要注意。
pci=['08:00.*']
下面是将Multi-Function设备直接作为Multi-Function设备分配给客户端操作系统的设置示例。
import os, re
arch_libdir='lib'
arch=os.uname()[4]
if os.uname()[0]=='Linux'and re.search('64',arch):
arch_libdir='lib64'
kernel="/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory=2048
name="f13-hvm"
vcpus=4
pae=1
acpi=1
apic=1
vif=['']
disk=['file:/var/lib/xen/images/f13-hvm.img, hda, w','file:/root/Fedora-13-
x86_64-DVD.iso, hdc:cdrom, r']
device_model='/usr/'+arch_libdir+'/xen/bin/qemu-dm'
boot="cda"
sdl=0
opengl=1
vnc=1
vnclisten="0.0.0.0"
vncpasswd=''
stdvga=0
serial='pty'
keymap='ja'
xen_platform_pci=1
pci=['08:00.*@6']
pci_msitranslate=1
使用上述配置文件,启动客户端操作系统。
xm create/etc/xen/f13-hvm
xm pci-list f13-hvm
VSlt VFn domain bus slot func
0x06 0x0 0x0000 0x08 0x00 0x0
0x06 0x1 0x0000 0x08 0x00 0x1
在客户端操作系统上确认PCI设备,可以看到如下结果。
lspci
00:00.0 Host bridge:Intel Corporation 440FX-82441FX PMC[Natoma](rev 02)
00:01.0 ISA bridge:Intel Corporation 82371SB PIIX3 ISA[Natoma/Triton II]
00:01.1 IDE interface:Intel Corporation 82371SB PIIX3 IDE[Natoma/Triton II]00:01.3 Bridge:Intel Corporation 82371AB/EB/MB PIIX4 ACPI(rev 01)
00:02.0 VGA compatible controller:Cirrus Logic GD 5446
00:03.0 Class ff80:XenSource, Inc.Xen Platform Device(rev 01)
00:04.0 Ethernet controller:Realtek Semiconductor Co.,Ltd.RTL-8139/8139C/8139C+(rev 20)
00:06.0 Ethernet controller:Intel Corporation 82575EB Gigabit Network Connection(rev 02)
00:06.1 Ethernet controller:Intel Corporation 82575EB Gigabit Network Connection(rev 02)
在笔者手头的客户端操作系统上设置NIC,就可以进行网络通信了。
进行动态删除时,需在Dom0上执行下列命令。
xm pci-detach f13-hvm"08:00.*"
进行动态添加时,需在Dom0上执行下列命令。