[Xen] PCI Passthrough
Xen에서는 guest domain이 PCI 디바이스를 직접 사용할수 있도록 PCI passthrough 를 지원한다.
이를 사용하기 위해 커널 컴파일할때 모듈은 선택해줘야한다.
dom0에서는 pci-backend 디바이스가 있어야 하며
domU에서는 pci-frontend 디바이스가 있어야 한다.
이제 PCI passthrough를 사용해보자
먼저 dom0에서 domU에게 건내줄 디바이스 번호를 알아야 한다.
$ lspci 를 통해 PCI 디바이스 목록을 볼수 있다.
아래는 하나의 예이다.
0b:00.0 Power PC: Device eee0:fed0 (rev 01)
passthrough하는 방법은 static, dynamic(xl, sysfs) 등 여러가지 방법이 있는데
여기서는 dynamic assignment with sysfs 를 통해 해보자.
$ echo 0000:0b:00.0 > /sys/bus/pci/devices /0000:0b:00.0/driver/unbind
$ echo 0000:0b:00.0 > /sys/bus/pci/drivers/pciback/new_slot
$ echo 0000:0b:00.0 > /sys/bus/pci/drivers/pciback/bind
위와 같이 하면 dom0 의 pci-backend 디바이스에 0b:00.0 이라는 PCI디바이스가 바인딩 된다.
(여기서 0000은 도메인을 나타내는데 dom0이므로 이것은 보통 0000 이라고 보면된다.)
passthrough 사용하기 위해 준비가 제대로 되었는지 확인하려면 다음과 같이 해본다.
$ xm pci-list-assignable-devices
제대로 준비되었다면 다음과 같이 나온다.
0000:0b:00.0
이제 남은것은 domU 의 configuration 파일에 PCI 설정을 추가하는것이다.
pci = ['0b:00.0']
그럼 끝!!!
references