jail(iocage)で、録画サーバその1

ずーっと、foltiaに手を入れた私家版を運用してたのだけど、最近はもっぱらregzaタイムマシンとdアニメで、ほとんど使ってなかった。
アニメはdアニメとPrimeビデオで何とかなる気がするので、今回はmirakurunとかEPGstationにいってみようかと思うけど、さてどうなるか。

なにはともあれ、PT3ドライバ。

ptx
$ git clone https://github.com/Piro77/fbsdpt3.git
$ cd fbsdpt3
$ make
# make install
# echo 'ptx_load="YES"' >> /boot/loader.conf
# kldload ptx

うお。ふっ飛んだ。

ptx0: <EARTHSOFT PT3> mem 0xf0001000-0xf0001fff,0xf0000000-0xf0000fff at device 0.0 on pci2
ptx0: fail i2c run_code status 0x32
ptx0: retry init_tuner
ptx0: fail i2c run_code status 0x32
ptx0: retry init_tuner
ptx0: alloc_dmabuf: bus_dmamem_alloc returned 12
ptx0: fail allocate consistent. 2


Fatal trap 12: page fault while in kernel mode
cpuid = 0: apic id = 00
fault virtual address   = 0xffff804000004000
fault code              = supervisor read data, page not present
instruction pointer     = 0x20:0xffffffff81091fdc
stack pointer           = 0x28:0xfffffe002d52f390
frame pointer           = 0x28:0xfffffe002d52f390
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 80037 (kldload)
trap number             = 12
panic: page fault
cpuid = 0
time = 1600677155
KDB: stack backtrace:
#0 0xffffffff80c1d207 at kdb_backtrace+0x67
#1 0xffffffff80bd053d at vpanic+0x19d
#2 0xffffffff80bd0393 at panic+0x43
#3 0xffffffff810a8dcc at trap_fatal+0x39c
#4 0xffffffff810a8e19 at trap_pfault+0x49
#5 0xffffffff810a840f at trap+0x29f
#6 0xffffffff8108221c at calltrap+0x8
#7 0xffffffff80bab560 at free+0x30
#8 0xffffffff82f61117 at free_pt3_dma+0x1b7
#9 0xffffffff82f60e6d at create_pt3_dma+0x1dd
#10 0xffffffff82f62181 at pat3_init+0xba1
#11 0xffffffff82f5835a at ptx_attach+0x24a
#12 0xffffffff80c0c091 at device_attach+0x3e1
#13 0xffffffff80c0bc92 at device_probe_and_attach+0x42
#14 0xffffffff80821c56 at pci_driver_added+0xe6
#15 0xffffffff80c09c3a at dvclass_driver_added+0x7a
#16 0xffffffff80c09b9a at devclass_add_driver+0x16a
#17 0xffffffff80baece4 at module_register_init+0xa4

retry init_tunerになって吹っ飛んだので、アンテナ線をつないでなかったから?ということで、アンテナと接続してから再起動。

Copyright (c) 1992-2019 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.1-RELEASE-p9 GENERIC amd64
FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM 8.0.1)
VT(efifb): resolution 1024x768
CPU: Intel(R) Celeron(R) CPU G1820 @ 2.70GHz (2693.83-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x306c3  Family=0x6  Model=0x3c  Stepping=3
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,S
SE,SSE2,SS,HTT,TM,PBE>
・・・省略・・・
ptx0: <EARTHSOFT PT3> mem 0xf0001000-0xf0001fff,0xf0000000-0xf0000fff at device 0.0 on pci2
ptx0: fail i2c run_code status 0x32
ptx0: retry init_tuner
ptx0: fail i2c run_code status 0x32
ptx0: retry init_tuner

あら。起動したけど同じメッセージ。boot時の組み込みはOK、起動後のkldloadはNG、なのかしら。まあいいや。

QSV

QSVが使えるという話をみかけた。
FreeBSD と vaapi であそぶ。 | 妄想日記 by 妄想エンジン

うちはCeleron G1820で、どうやらいけそう。
QSV対応CPU一覧 - 記憶は人なり

書いてあるとおりだけど

# pkg install libva-intel-driver libva-intel-media-driver libva-utils drm-kmod
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 15 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        drm-fbsd12.0-kmod: 4.16.g20200221
        drm-kmod: g20190710
        gmmlib: 20.2.2
        gpu-firmware-kmod: g20200503
        libXext: 1.3.4,1
        libXfixes: 5.0.3_2
        libdrm: 2.4.102,1
        libepoll-shim: 0.0.20200602
        libpciaccess: 0.16
        libva: 2.8.0
        libva-intel-driver: 2.4.1
        libva-intel-media-driver: 20.2.0
        libva-utils: 2.8.0
        pciids: 20200529
        wayland: 1.18.0_3

Number of packages to be installed: 15

The process will require 267 MiB more space.
38 MiB to be downloaded.

Proceed with this action? [y/N]: y
[1/15] Fetching libva-intel-driver-2.4.1.txz: 100%  898 KiB 919.7kB/s    00:01
[2/15] Fetching libva-intel-media-driver-20.2.0.txz: 100%   30 MiB   7.8MB/s    00:04
[3/15] Fetching libva-utils-2.8.0.txz: 100%  446 KiB 456.6kB/s    00:01
[4/15] Fetching drm-kmod-g20190710.txz: 100%    812 B   0.8kB/s    00:01
[5/15] Fetching libva-2.8.0.txz: 100%  148 KiB 151.5kB/s    00:01
[6/15] Fetching libXfixes-5.0.3_2.txz: 100%   15 KiB  15.2kB/s    00:01
[7/15] Fetching libXext-1.3.4,1.txz: 100%   95 KiB  97.1kB/s    00:01
[8/15] Fetching wayland-1.18.0_3.txz: 100%  119 KiB 121.8kB/s    00:01
[9/15] Fetching libepoll-shim-0.0.20200602.txz: 100%   18 KiB  18.3kB/s    00:01
[10/15] Fetching libdrm-2.4.102,1.txz: 100%  238 KiB 244.2kB/s    00:01
[11/15] Fetching libpciaccess-0.16.txz: 100%   22 KiB  22.1kB/s    00:01
[12/15] Fetching pciids-20200529.txz: 100%  211 KiB 216.2kB/s    00:01
[13/15] Fetching gmmlib-20.2.2.txz: 100%  190 KiB 195.0kB/s    00:01
[14/15] Fetching drm-fbsd12.0-kmod-4.16.g20200221.txz: 100%    2 MiB   2.1MB/s    00:01
[15/15] Fetching gpu-firmware-kmod-g20200503.txz: 100%    4 MiB   4.6MB/s    00:01
Checking integrity... done (0 conflicting)
[1/15] Installing pciids-20200529...
[1/15] Extracting pciids-20200529: 100%
[2/15] Installing libepoll-shim-0.0.20200602...
[2/15] Extracting libepoll-shim-0.0.20200602: 100%
[3/15] Installing libpciaccess-0.16...
[3/15] Extracting libpciaccess-0.16: 100%
[4/15] Installing libXfixes-5.0.3_2...
[4/15] Extracting libXfixes-5.0.3_2: 100%
[5/15] Installing libXext-1.3.4,1...
[5/15] Extracting libXext-1.3.4,1: 100%
[6/15] Installing wayland-1.18.0_3...
[6/15] Extracting wayland-1.18.0_3: 100%
[7/15] Installing libdrm-2.4.102,1...
[7/15] Extracting libdrm-2.4.102,1: 100%
[8/15] Installing gpu-firmware-kmod-g20200503...
[8/15] Extracting gpu-firmware-kmod-g20200503: 100%
[9/15] Installing libva-2.8.0...
[9/15] Extracting libva-2.8.0: 100%
[10/15] Installing gmmlib-20.2.2...
[10/15] Extracting gmmlib-20.2.2: 100%
[11/15] Installing drm-fbsd12.0-kmod-4.16.g20200221...
[11/15] Extracting drm-fbsd12.0-kmod-4.16.g20200221: 100%
[12/15] Installing libva-intel-driver-2.4.1...
[12/15] Extracting libva-intel-driver-2.4.1: 100%
[13/15] Installing libva-intel-media-driver-20.2.0...
[13/15] Extracting libva-intel-media-driver-20.2.0: 100%
[14/15] Installing libva-utils-2.8.0...
[14/15] Extracting libva-utils-2.8.0: 100%
[15/15] Installing drm-kmod-g20190710...
Message from drm-fbsd12.0-kmod-4.16.g20200221:

--
The drm-fbsd12.0-kmod port can be enabled for amdgpu (for AMD GPUs starting
with the HD7000 series / Tahiti) or i915kms (for Intel APUs starting with
HD3000 / Sandy Bridge) through kld_list in /etc/rc.conf. radeonkms for older
AMD GPUs can be loaded and there are some positive reports if EFI boot is NOT
enabled (similar to amdgpu).

For amdgpu: kld_list="amdgpu"
For Intel: kld_list="/boot/modules/i915kms.ko"
For radeonkms: kld_list="/boot/modules/radeonkms.ko"

Please ensure that all users requiring graphics are members of the
"video" group.

Older generations are supported by the legacy kms modules (radeonkms /
i915kms) in base or by installing graphics/drm-legacy-kmod.
#

/etc/rc.confに、kld_list="/boot/modules/i915kms.ko" と書けばいいみたいだけど、リブートなしでkldloadできないかしら。。と思ったらふっ飛んだ。またかい。以下はダメな例。

# kldload drm
# kldload i915kms

こうやると、/boot/kernel/i915kms.koを使っちゃうらしいので、やり直し。

# kldunload i915kms
# kldload /boot/modules/i915kms.ko
(ふっとんじゃって残ってないけど、drmじゃなくてdrmnがいるとか何とか)

しょうがないなあと

# kldunload drm
# kldload /boot/modules/i915kms.ko
(どかーん)
panic: make_dev_sv: bad si_name (error=17, si_name=fb0)

そのまま再起動されたら、ちゃんと読み込まれてました。まる。

# kldstat
Id Refs Address                Size Name
 1   41 0xffffffff80200000  2448f20 kernel
 2    1 0xffffffff82649000    b7bd8 linux.ko
 3    2 0xffffffff82701000     96f8 linux_common.ko
 4    1 0xffffffff8270b000    1c318 ptx.ko
 5    1 0xffffffff82728000   3a99a8 zfs.ko
 6    2 0xffffffff82ad2000     a5b8 opensolaris.ko
 7    1 0xffffffff82f11000     1aa0 fdescfs.ko
 8    1 0xffffffff82f13000   12ccb0 i915kms.ko
 9    1 0xffffffff83040000    76570 drm.ko
10    4 0xffffffff830b7000    10eb0 linuxkpi.ko
11    3 0xffffffff830c8000    12f30 linuxkpi_gplv2.ko
12    2 0xffffffff830db000      6d0 debugfs.ko
# vainfo
error: XDG_RUNTIME_DIR not set in the environment.
error: can't connect to X server!
libva info: VA-API version 1.8.0
libva info: Trying to open /usr/local/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_8
libva error: /usr/local/lib/dri/iHD_drv_video.so init failed
libva info: va_openDriver() returns 1
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_8
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.8 (libva 2.8.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Haswell Desktop - 2.4.1
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD