[[PageOutline]] [[TitleIndex(TipAndDoc/VM/KVM,format=group)]] = KVM = * [https://help.ubuntu.com/community/KVM The Kernel Virtual Machine - Community Ubuntu Documentation] * [http://blog.sibrof.net/ken/2008/05/17/778/ KVM – Ubuntu Hardy | Ken's blog] * [http://blog.sibrof.net/ken/2008/05/18/779/ 動き出したUbuntu Hardy on KVM | Ken's blog] * [http://research.sakura.ad.jp/2010/11/17/kvm-desktop/ KVMを使う(Ubuntu Desktop編) « さくらインターネット研究所] * [http://www.asahi-net.or.jp/~aa4t-nngk/kvm.html Stray Penguin - Linux Memo (KVM)] * [http://www.aji.sakura.ne.jp/linux/fedora15_kvm_install.html Fedora 15 - KVM インストール] * [http://serverfault.com/questions/101434/why-does-my-windows-7-vm-running-under-linux-kvm-not-use-all-the-virtual-proces multi core - Why does my Windows 7 VM running under Linux' KVM not use all the virtual processors? - Server Fault] * [https://bugzilla.redhat.com/show_bug.cgi?id=1213053 Bug 1213053 – Backport {Haswell,Broadwell}-noTSX cpu models] * [https://bugzilla.redhat.com/show_bug.cgi?id=1182650 Bug 1182650 – Can't launch any VM : rtm and hle CPU features flags needed by libvirt but not in /proc/cpuinfo] * KVM自体にはIntel-VT or AMD-V が必須 {{{ egrep '(vmx|svm)' --color=always /proc/cpuinfo }}} * AMD Athlon(tm) 64 X2 Dual Core Processor 5000+ with ASUS M2A-VM HDMI => attachment:amdv.png * QEMUはVT/AMD-vが無くても動く(ただし非常に遅い) * -> [../LegacyHardware] * [http://eucalyptus.linux4u.jp/wiki/index.php?Sheepdog%2F%E6%A6%82%E8%A6%81 Sheepdog/概要 - Eucalyptus linux4u.jp Wiki] > SheepdogはKVM用の分散ストレージです. * Guest with Bridged Network => [../../network/bridge] * [http://symfoware.blog68.fc2.com/blog-entry-964.html Ubuntu 12.04 + KVM上のWindows仮想OSのディスクIOの改善 - Symfoware] == Client == * http://www.davereyn.co.uk/ Qemu Manager (for Windows) * ローカルに対するGUIツールなので注意 (Linux boxへ接続して…という使い方は出来ない) * [http://www.linux-kvm.org/page/Management_Tools Management Tools - KVM] = Windows Guest = * [https://social.technet.microsoft.com/Forums/en-US/695c8997-52cf-4c30-a3f7-f26a40dc703a/failed-install-of-build-10041-in-the-kvm-virtual-machine-system-thread-exception-not-handled?forum=WinPreview2014Setup Failed install of build 10041 in the KVM virtual machine (SYSTEM THREAD EXCEPTION NOT HANDLED)] == drivers == * NIC -> virtio * [http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers WindowsGuestDrivers/Download Drivers - KVM] * http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/ * Video -> vmvga * http://softwareupdate.vmware.com/cds/ * http://softwareupdate.vmware.com/cds/vmw-desktop/ws/8.0.1/528992/windows/packages/tools-windows-8.8.1.exe.tar 1. tools-windows-8.8.1.exe.tar -> tools-windows-8.8.1.exe 1. > tools-windows-8.8.1.exe /e tools-windows-8.8.1 1. tools-windows-8.8.1\tools-windows.msi > Data1.cab > windows.iso > setup.exe (圧縮ファイルとして展開) 1. > setup.exe /a * 64bitゲストの場合はsetup64.exeの中身が必要。 1. 適当な場所に展開する 1. VMware SVGA II driver > setup\Program Files\VMware\VMware Tools\VMware\Drivers\video_xpdm * 参考 [http://www.linux-kvm.com/content/using-vmware-vga-kvm-windows-guests Using Vmware VGA with KVM Windows Guests | KVM - The Linux Kernel-Based Virtual Machine] * デバイスマネージャ[[br]][[Image(KVM-XP.png,33%)]] === block device === * [http://ask.fedoraproject.org/question/1111/why-the-virtio-win-1116vfd-file-is-removed-from Why the virtio-win-1.1.16.vfd file is removed from the download page? - Ask Fedora: Community Knowledge Base and Support Forum] * http://www.linuxwind.org/download/virtio-win-1.1.16.vfd !00ccbf02149a584de5d3bd344823fb33c31af00b (sha1) * http://web.archive.org/web/20110514090604/http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-1.1.16.vfd !00ccbf02149a584de5d3bd344823fb33c31af00b (sha1) * http://autosetup1.googlecode.com/files/virtio-win-1.1.16.vfd !16c8adfe6833e4bc86d661a3158ed0e8faab12a4 (sha1) {{{ 00004A72: 34 2B 00004A73: 3D 40 00004D32: 34 2B 00004D33: 3D 40 00004D72: 34 2B 00004D73: 3D 40 00004DB2: 34 2B 00004DB3: 3D 40 }}} * [http://turukiya.wordpress.com/2012/02/10/windows-xp-%e3%81%ae%e6%ba%96%e4%bb%ae%e6%83%b3%e5%8c%96%e7%92%b0%e5%a2%83/ Windows XP の準仮想化環境 « おたくの日記帳] * virtio-win-1.1.16.vfdを用いてVirtIO diskでセットアップ後、virtio-win-0.1-30.isoによってドライバを更新するとBSODを出して起動しなくなる。 * OSセットアップ直後[[br]][[Image(virtio-win-1.1.16.vfd.png,33%)]] * ドライバ更新[[br]][[Image(virtio-win-0.1-30.iso.png,33%)]] * BSOD[[br]][[Image(virtio-win-0.1-30.iso-BSOD.png,33%)]] == Windows 7 x64 with virtio == * H/W * ASUS H97M-PLUS * Core i7-4790 3.60GHz * W3U1600HQ-8G (DDR3-1600 8GB x2) * RAID1 on WD60EFRX-68MYMN1 x2 * S/W * ArchLinux 4.0.4-2-ARCH x86_64 * qemu 2.3.0-2 * seabios 1.8.1-1 * libvirt 1.2.15-1 * virt-manager 1.2.0-2 * spice 0.12.5-1 * virtio-win-0.1.104.iso * [[Image(win7.png,33%)]] == Windows 10 == * H/W: wiki:TipAndDoc/Hardware#ASUSH97M-PLUS * S/W * ArchLinux 4.3.3-2 * qemu 2.4.1-2 * seabios 1.9.0-1 * libvirt 1.3.0-1 * virt-manager 1.3.2-1 * spice 0.12.6-1 * virtio-win 0.1.112.1-1 === Heavy load on playing sound === * 音声を再生すると、ホストCPUに非常に高い負荷がかかる * [[Image(rdp-soundplay.png,33%)]], [[Image(win10th2-remote-sound.png,33%)]] * [[Image(win10th2-sound-heavyload.png,33%)]] {{{#!html
Windows 10 ver1511 (TH2)をKVM上で動かしているときに、音声を再生するとゲスト上ではCPU負荷ほとんどないのにホスト上でqemuプロセスがCPUを100%食うのは、ゲスト側に何か問題があるのかな…。 pic.twitter.com/4GbNr3EU4J
— Ken-ichi Mito (@mittyorz) January 11, 2016
https://t.co/dOtPYeLKQU Windows 10 ver1024 (TH1)、Windows 7 SP1はいずれも問題ないから、TH2で何か変わったんだろうけど。適当に検索+QemuのMLみたけど、特に何も見当たらない。画像はRDPだけど、Spiceでもだめ。
— Ken-ichi Mito (@mittyorz) January 11, 2016
×Spiceでもだめ ○SPICEだと300%/800%くらいだな(ホスト8コア)。
RDPだとTH1では割り当てられたスレッドごとに5%程度、TH2は割り当てられたスレッド全部100%になる。アイドル状態だとTH1が0.5%以下、TH2が1.5%程度か…。
— Ken-ichi Mito (@mittyorz) January 11, 2016
/proc/interrupts(のmuninのグラフ)見ると、音声を再生するとLocal timer interruptsが100以下から3000以上に上がってるけど、関係あるのかないのか…。
RDP接続するときに、リモートオーディオを「再生しない」にするとこの問題は起きない
— Ken-ichi Mito (@mittyorz) January 11, 2016
仮想サウンドデバイスをich6, ich9と変えてみたけど効果なし。というか仮想デバイスなしでも同じ状態。RDPの場合はゲスト上に(仮想)ハードウェアデバイスなくても音声再生できるんだな…知らなかった。前からだっけ? pic.twitter.com/DUknoBYjSR
— Ken-ichi Mito (@mittyorz) January 11, 2016
}}}
== power efficiency ==
* H/W: wiki:TipAndDoc/Hardware#ASUSH97M-PLUS
* S/W
* ArchLinux 4.2.5-1-ARCH x86_64
* qemu 2.4.0.1-1
* seabios 1.8.2-1
* libvirt 1.2.20-3
* virt-manager 1.2.1-1
* spice 0.12.6-1
* virtio-win 0.1.110.2-1
* VM
* CPU: 2core 2HT
* Mem: 8GB
* HDD: qcow2 60GB
1. no VM (idle): 39W~40W
1. Win 7 x64 SP1 (idle): 40W
1. Win 7 x64 SP1 (Chrome x64 with 艦これ): 48W~50W
* リモートデスクトップ接続
* 音飛び(ブツブツ音)が若干入る(RDP 8にアップグレードするも効果なし)
1. Win 10 x64 (idle): 40W
1. Win 10 x64 (Chrome x64 with 艦これ): 49W~54W
* リモートデスクトップ接続
= virbr0 =
* libvirtdによって自動で作られる「default」のNAT
* ps aux | grep dns
{{{
nobody 2684 0.0 0.0 21264 792 ? S Feb07 0:01 dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file= --listen-address 192.168.122.1 --except-interface lo --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-lease-max=253
}}}
* lease file => /var/lib/misc/dnsmasq.leases
== iptables ==
* sudo iptables-save
{{{
# Generated by iptables-save v1.4.8 on Thu Feb 16 10:31:29 2012
*nat
:PREROUTING ACCEPT [743892:129452770]
:POSTROUTING ACCEPT [1179:112796]
:OUTPUT ACCEPT [1215:115607]
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
COMMIT
# Completed on Thu Feb 16 10:31:29 2012
# Generated by iptables-save v1.4.8 on Thu Feb 16 10:31:29 2012
*filter
:INPUT ACCEPT [4957020:3457557240]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3323525:4327643495]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Thu Feb 16 10:31:29 2012
}}}
=== port forwarding ===
* [http://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections Forwarding Incoming Connections]
> 3) Create the file /etc/libvirt/hooks/qemu (or add the following to an already existing hook script), with contents similar to the following (replace GNAME, IP, GP, and HP appropriately for your setup):
* [http://git.zaytsev.net/?p=anubis-puppet.git;a=blob;f=manifests/files/puppet/libvirt/hooks/qemu git repositories at zaytsev.net - anubis-puppet.git/blob - manifests/files/puppet/libvirt/hooks/qemu]
= Live Migration =
* [http://www.cuspy.org/diary/2010-03-20 qemu-kvm の live migration を試してみたよ - cuspy diary]
* [http://research.sakura.ad.jp/2010/06/23/kvm-migration/ KVMを使う(LiveMigration編) « さくらインターネット研究所]
* [http://www.linux-kvm.org/page/Migration Migration - KVM]
* [http://d.hatena.ne.jp/enakai00/20111124/1322106772 RHEL6.1のKVMでストレージ・ライブマイグレーション - めもめも]
= kvm-spice =
* [http://virt-manager.org/download/ virt-viewe]
* サウンドの転送に対応している ([#Windows7x64withvirtio]の環境でテスト)
* Ubuntu 12.04でqemu-kvm-spiceをインストールすると、デフォルトのemulatorが/usr/bin/kvm-spiceになって以下の様な問題が起きる
* kern.logにAppArmorからDENIEDとエラーが出る
{{{
Oct 13 22:45:08 HOSTNAME kernel: [507466.445098] type=1400 audit(1350135908.372:69): apparmor="DENIED" operation="open" parent=1 profile="libvirt-52d08545-a490-c890-654a-260caf35d27d" name="/proc/17685/auxv" pid=17685 comm="kvm-spice" requested_mask="r" denied_mask="r" fsuid=104 ouid=104
}}}
* Video modelをcirrus以外にすると、画面が表示されなくなる(真っ黒のまま)
* [https://bugs.launchpad.net/ubuntu/+source/seabios/+bug/958549 Bug #958549 “Black screen on guest with anything except Cirrus” : Bugs : “seabios” package : Ubuntu]
* [https://bugs.launchpad.net/ubuntu/+source/qemu-kvm-spice/+bug/970234 Bug #970234 “Selecting spice and qxl mode results in blank scree...” : Bugs : “qemu-kvm-spice” package : Ubuntu]
* [https://bugs.launchpad.net/ubuntu/+source/virt-manager/+bug/975165 Bug #975165 “Can't use spice even though qemu-kvm-spice is insta...” : Bugs : “virt-manager” package : Ubuntu]
* [https://bugs.launchpad.net/ubuntu/+source/qemu-kvm-spice/+bug/962376 Bug #962376 “spicevmc not supported in QEMU binary” : Bugs : “qemu-kvm-spice” package : Ubuntu]
== transfer rate ==
* ネットワーク転送量がRDPに比較して極端に多くなるので注意
* RDP: 100Kbps以下 (idle) ~ 10Mbps (動画再生)
* SPICE: 100Kbps以下 (idle) ~ 100Mbps以上 (動画再生)、400Mbps近くなることもあった
= start/shutdown log for VM =
* Ubuntu 12.04
* /var/log/libvirt/qemu 以下に、VMごとのログが残される
{{{
-rw------- 1 root root 3940 Oct 8 00:24 quantal.log
-rw------- 1 root root 12394 Oct 13 23:13 test.log
}}}
* /var/log/libvirt/qemu/xp-vm01.log
{{{
2012-10-28 12:46:55.328+0000: starting up
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin QEMU_AUDIO_DRV=none /usr/bin/kvm -S -M pc-1.0 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -name xp-vm01 -uuid XXXXXXXX-YYYY-ZZZZ-WWWW-VVVVVVVVVVVV -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/xp-vm01.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -drive file=/var/lib/libvirt/images/xp-vm01.img,if=none,id=drive-ide0-0-0,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=2 -drive file=/home/mitty/virtio-win-0.1-30.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=1 -netdev tap,fd=16,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:a8:d0:1d,bus=pci.0,addr=0x3 -usb -device usb-tablet,id=input0 -vnc 127.0.0.1:1 -vga vmware -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
vmsvga_value_read: Bad register 2b
vmsvga_value_read: Bad register 2c
qemu: terminating on signal 15 from pid 1803
2012-10-28 12:51:56.141+0000: shutting down
}}}
== autoshutdown ==
* /var/log/libvirt/shutdownlog.log で確認できる
{{{
libvirt: libvirt-bin: entering pre-stop at Fri Oct 19 23:22:33 JST 2012
libvirt: libvirt-bin: attempting clean shutdown of xp-vm02 at Fri Oct 19 23:22:33 JST 2012
libvirt: destroying xp-vm02
libvirt: libvirt-bin: exiting pre-stop at Fri Oct 19 23:23:06 JST 2012
libvirt: libvirt-bin: entering pre-stop at Fri Oct 26 23:37:35 JST 2012
libvirt: libvirt-bin: exiting pre-stop at Fri Oct 26 23:37:35 JST 2012
libvirt: libvirt-bin: entering pre-stop at Sun Oct 28 21:45:17 JST 2012
libvirt: libvirt-bin: attempting clean shutdown of xp-vm02 at Sun Oct 28 21:45:17 JST 2012
libvirt: libvirt-bin: attempting clean shutdown of xp-vm01 at Sun Oct 28 21:45:17 JST 2012
libvirt: libvirt-bin: exiting pre-stop at Sun Oct 28 21:45:45 JST 2012
}}}
* /etc/init/libvirt-bin.conf で制御されている模様
= passthrough =
* [http://mzyy94.com/blog/2014/12/12/kvm-intel-hd-graphics-passthrough/ KVMでQSVするためIntel HD Graphicsパススルーするー - 犬アイコンのみっきー]
* [http://www.slideshare.net/takumanakajima90/csstudy15 もしCloudStackのKVMホストでPCIパススルーできるようになったら]
* [http://ubuntuforums.org/showthread.php?t=2262280 (ubuntu) Ubuntu 14.04 KVM VGA Passthrough Nvidia GTX "How To"]
* [http://www.firewing1.com/howtos/fedora-20/create-gaming-virtual-machine-using-vfio-pci-passthrough-kvm Create a gaming virtual machine using VFIO PCI passthrough for KVM | Fedora 20 | How-to guide | firewing1]
* [http://www.nexia.jp/server/1802/ KVM PCIパススルー (PCI PassThrough) | nexia inc]
* [http://blog.livedoor.jp/karamine/archives/1726234.html GPUパススルー : karamineのブログ] [http://blog.livedoor.jp/karamine/archives/cat_50039.html 一連の続き]がある
* [http://www.goodnai.com/blog/2013/04/08/win7-on-centos6-4kvm%E3%81%A7radeon-hd-6670%E3%81%AB%E3%82%88%E3%82%8Bgpu%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%EF%BC%88ati-stream%EF%BC%89/ Win7 on CentOS6.4+KVMでRadeon HD 6670によるGPUエンコード(ATI Stream) | Kung Noi Blog]
* [http://yujilow1220.github.io/blog/Cloud/vga-passthrough-on-kvm-on-fedora-20/ Fedora 20上のKVMでVGAパススルーをやってみた - Yujilow's Note]
* [http://seesaawiki.jp/w/kou1okada/d/Linux%20-%20PCI-PassThrough Linux - PCI-PassThrough - PIB]
* [https://bbs.archlinux.org/viewtopic.php?id=162768 KVM VGA-Passthrough using the new vfio-vga support in kernel =>3.9 / Community Contributions / Arch Linux Forums]
* QEMUの引数に追加されるものの例
{{{
01:00.0 Multimedia controller [0480]: Altera Corporation Device [1172:4c15] (rev 01)
}}}
{{{
-device vfio-pci,host=01:00.0,id=hostdev0,bus=pci.0,addr=0x9
}}}
== Marvell controller ==
* [https://bbs.archlinux.org/viewtopic.php?id=185182 Intel IOMMU not working for Marvell SSD Controller / Kernel & Hardware / Arch Linux Forums]
* [https://bugzilla.kernel.org/show_bug.cgi?id=42679 Bug 42679 – DMA Read on Marvell 88SE9128 fails when Intel's IOMMU is on]
* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c94 {{{Note, for google: this is the controller embedded in the Plextor m6e M.2 SSD}}}
* http://lxr.free-electrons.com/source/drivers/pci/quirks.c#L3570
=== Plextor M6e ===
* [https://bbs.archlinux.org/viewtopic.php?id=185182 Intel IOMMU not working for Marvell SSD Controller / Kernel & Hardware / Arch Linux Forums]
* PX-G128M6e
* lspci -nnv
{{{
02:00.0 SATA controller [0106]: Lite-On IT Corp. / Plextor M6e PCI Express SSD [Marvell 88SS9183] [1c28:0122] (rev 14) (prog-if 01 [AHCI 1.0])
Subsystem: Marvell Technology Group Ltd. Device [1b4b:9183]
}}}
* root@archiso ~ # uname -a
{{{
Linux archiso 4.0.4-2-ARCH #1 SMP PREEMPT Fri May 22 03:05:23 UTC 2015 x86_64 GNU/Linux
}}}
* root@archiso ~ # cat /proc/cmdline
{{{
BOOT_IMAGE=boot/x86_64/vmlinuz archisobasedir=arch archisolabel=ARCH_201506 initrd=boot/intel_ucode.img,boot/x86_64/archiso.img intel_iommu=on
}}}
* root@archiso ~ # dmesg|grep -i -e DMAR -e IOMMU
{{{
[ 0.000000] Command line: BOOT_IMAGE=boot/x86_64/vmlinuz archisobasedir=arch archisolabel=ARCH_201506 initrd=boot/intel_ucode.img,boot/x86_64/archiso.img intel_iommu=on
[ 0.000000] ACPI: DMAR 0x00000000DAC6CED0 0000B8 (v01 INTEL BDW 00000001 INTL 00000001)
[ 0.000000] Kernel command line: BOOT_IMAGE=boot/x86_64/vmlinuz archisobasedir=arch archisolabel=ARCH_201506 initrd=boot/intel_ucode.img,boot/x86_64/archiso.img intel_iommu=on
[ 0.000000] Intel-IOMMU: enabled
[ 0.086964] dmar: Host address width 39
[ 0.086969] dmar: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.086987] dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a
[ 0.086990] dmar: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.087000] dmar: IOMMU 1: reg_base_addr fed91000 ver 1:0 cap d2008c20660462 ecap f010da
[ 0.087003] dmar: RMRR base: 0x000000dbe7b000 end: 0x000000dbe89fff
[ 0.087006] dmar: RMRR base: 0x000000dd000000 end: 0x000000df1fffff
[ 0.087011] IOAPIC id 8 under DRHD base 0xfed91000 IOMMU 1
[ 7.370829] DMAR: No ATSR found
[ 7.371048] IOMMU: dmar0 using Queued invalidation
[ 7.371051] IOMMU: dmar1 using Queued invalidation
[ 7.371056] IOMMU: Setting RMRR:
[ 7.371083] IOMMU: Setting identity map for device 0000:00:02.0 [0xdd000000 - 0xdf1fffff]
[ 7.371527] IOMMU: Setting identity map for device 0000:00:14.0 [0xdbe7b000 - 0xdbe89fff]
[ 7.371577] IOMMU: Setting identity map for device 0000:00:1a.0 [0xdbe7b000 - 0xdbe89fff]
[ 7.371616] IOMMU: Setting identity map for device 0000:00:1d.0 [0xdbe7b000 - 0xdbe89fff]
[ 7.371644] IOMMU: Prepare 0-16MiB unity mapping for LPC
[ 7.371661] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]
[ 7.673577] [drm] DMAR active, disabling use of stolen memory
[ 7.673740] dmar: DRHD: handling fault status reg 2
[ 7.673744] dmar: DMAR:[DMA Write] Request device [02:00.1] fault addr fffe0000
DMAR:[fault reason 02] Present bit in context entry is clear
[ 7.986473] dmar: DRHD: handling fault status reg 3
[ 7.986493] dmar: DMAR:[DMA Write] Request device [02:00.1] fault addr fffe0000
DMAR:[fault reason 02] Present bit in context entry is clear
[ 9.337664] dmar: DRHD: handling fault status reg 2
[ 9.337683] dmar: DMAR:[DMA Write] Request device [00:02.0] fault addr 74ff240000
DMAR:[fault reason 05] PTE Write access is not set
[ 12.985456] dmar: DRHD: handling fault status reg 2
[ 12.985519] dmar: DMAR:[DMA Write] Request device [02:00.1] fault addr fffe0000
DMAR:[fault reason 02] Present bit in context entry is clear
[ 13.298243] dmar: DRHD: handling fault status reg 3
[ 13.298307] dmar: DMAR:[DMA Write] Request device [02:00.1] fault addr fffe0000
DMAR:[fault reason 02] Present bit in context entry is clear
[ 18.297124] dmar: DRHD: handling fault status reg 2
[ 18.297152] dmar: DMAR:[DMA Write] Request device [02:00.1] fault addr fffe0000
DMAR:[fault reason 02] Present bit in context entry is clear
[ 18.609924] dmar: DRHD: handling fault status reg 3
[ 18.609971] dmar: DMAR:[DMA Write] Request device [02:00.1] fault addr fffe0000
DMAR:[fault reason 02] Present bit in context entry is clear
[ 23.608862] dmar: DRHD: handling fault status reg 2
[ 23.608924] dmar: DMAR:[DMA Write] Request device [02:00.1] fault addr fffe0000
DMAR:[fault reason 02] Present bit in context entry is clear
}}}
* PX-G128M6eを取り外すと以下のようになる
{{{
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=0f566cb2-aec8-4122-a80a-f2e5f48e4426 rw intel_iommu=on
[ 0.000000] ACPI: DMAR 0x00000000DAC6CED0 0000B8 (v01 INTEL BDW 00000001 INTL 00000001)
[ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=0f566cb2-aec8-4122-a80a-f2e5f48e4426 rw intel_iommu=on
[ 0.000000] Intel-IOMMU: enabled
[ 0.107383] dmar: Host address width 39
[ 0.107388] dmar: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.107406] dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a
[ 0.107409] dmar: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.107419] dmar: IOMMU 1: reg_base_addr fed91000 ver 1:0 cap d2008c20660462 ecap f010da
[ 0.107422] dmar: RMRR base: 0x000000dbe7b000 end: 0x000000dbe89fff
[ 0.107425] dmar: RMRR base: 0x000000dd000000 end: 0x000000df1fffff
[ 0.107430] IOAPIC id 8 under DRHD base 0xfed91000 IOMMU 1
[ 0.677861] DMAR: No ATSR found
[ 0.678093] IOMMU: dmar0 using Queued invalidation
[ 0.678096] IOMMU: dmar1 using Queued invalidation
[ 0.678100] IOMMU: Setting RMRR:
[ 0.678127] IOMMU: Setting identity map for device 0000:00:02.0 [0xdd000000 - 0xdf1fffff]
[ 0.678608] IOMMU: Setting identity map for device 0000:00:14.0 [0xdbe7b000 - 0xdbe89fff]
[ 0.678655] IOMMU: Setting identity map for device 0000:00:1a.0 [0xdbe7b000 - 0xdbe89fff]
[ 0.678697] IOMMU: Setting identity map for device 0000:00:1d.0 [0xdbe7b000 - 0xdbe89fff]
[ 0.678725] IOMMU: Prepare 0-16MiB unity mapping for LPC
[ 0.678743] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]
[ 4.326005] [drm] DMAR active, disabling use of stolen memory
}}}
=== patch ===
* [https://lkml.org/lkml/2015/2/2/226 LKML: Tim Sander: (PATCH) 3.19-rc7: add quirk for 1c28:0122 (rev 14) SATA controller]
* linux-stable-v4.0.5.patch
{{{
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 85f247e..a78b225 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3595,6 +3595,10 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TTI, 0x0642,
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_JMICRON,
PCI_DEVICE_ID_JMICRON_JMB388_ESD,
quirk_dma_func1_alias);
+/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c94 */
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_LITE_ON,
+ PCI_DEVICE_ID_PLEXTOR_M6E,
+ quirk_dma_func1_alias);
/*
* Some devices DMA with the wrong devfn, not just the wrong function.
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index e63c02a..1607b20 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2487,6 +2487,9 @@
#define PCI_VENDOR_ID_ASMEDIA 0x1b21
+#define PCI_VENDOR_ID_LITE_ON 0x1c28
+#define PCI_DEVICE_ID_PLEXTOR_M6E 0x0122
+
#define PCI_VENDOR_ID_CIRCUITCO 0x1cc8
#define PCI_SUBSYSTEM_ID_CIRCUITCO_MINNOWBOARD 0x0001
}}}
* 4.0.xでも正常に動作することを確認
* twitter:mittyorz/status/608644911533936642
* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c114
= OVMF =
* [http://tianocore.sourceforge.net/wiki/How_to_run_OVMF How to run OVMF - Tianocore]
* [https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF PCI passthrough via OVMF - ArchWiki]
* [https://wiki.ubuntu.com/UEFI/OVMF UEFI/OVMF - Ubuntu Wiki]