ToDo:
LV8との違いで見つけた件
acpi_videoのprobe/attachで照合している内部情報を吐かせるパッチを当てて、CF-FV5とCF-LV8を比べてみる
--- sys/dev/acpica/acpi_video.c.orig
+++ sys/dev/acpica/acpi_video.c
@@ -528,6 +528,9 @@ acpi_video_bind_outputs_subr(ACPI_HANDLE handle, UINT32 adr, void *context)
struct acpi_video_softc *sc;
struct acpi_video_output *vo;
+ if (bootverbose)
+ printf("acpi_video_bind_outputs_subr: %s\n", acpi_name(handle));
+
ACPI_SERIAL_ASSERT(video);
sc = context;
@@ -564,6 +567,9 @@ acpi_video_vo_init(UINT32 adr)
const char *type, *desc;
struct acpi_video_output_queue *voqh;
+ if (bootverbose)
+ printf("acpi_video_vo_init[0x%08x]\n", adr);
+
ACPI_SERIAL_ASSERT(video);
switch (adr & DOD_DEVID_MASK) {
@@ -698,6 +704,9 @@ static void
acpi_video_vo_bind(struct acpi_video_output *vo, ACPI_HANDLE handle)
{
+ if (bootverbose)
+ printf("acpi_video_vo_bind: %s\n", acpi_name(handle));
+
ACPI_SERIAL_BEGIN(video_output);
if (vo->vo_levels != NULL) {
AcpiRemoveNotifyHandler(vo->handle, ACPI_DEVICE_NOTIFY,
@@ -1021,16 +1030,37 @@ vid_enum_outputs_subr(ACPI_HANDLE handle, UINT32 level __unused,
ACPI_SERIAL_ASSERT(video);
argset = context;
status = acpi_GetInteger(handle, "_ADR", &adr);
+ if (bootverbose) {
+ if (ACPI_FAILURE(status))
+ printf("vid_enum_outputs_subr: %s._ADR -> failed\n", acpi_name(handle));
+ else
+ printf("vid_enum_outputs_subr: %s._ADR -> 0x%08x\n", acpi_name(handle), adr);
+ }
if (ACPI_FAILURE(status))
return (AE_OK);
for (i = 0; i < argset->dod_pkg->Package.Count; i++) {
+#if 1
+ ACPI_HANDLE bcl;
+ if (ACPI_FAILURE(AcpiGetHandle(handle, "_BCL", &bcl)))
+ bcl = NULL;
+ if (acpi_PkgInt32(argset->dod_pkg, i, &val) == 0) {
+ if ((val & DOD_DEVID_MASK_FULL) == (adr & DOD_DEVID_MASK_FULL)) {
+ printf("vid_enum_outputs_subr: HIT DOD[%zd] -> 0x%08x [_BCL=%s]\n", i, val, bcl ? "true" : "false");
+ argset->callback(handle, val, argset->context);
+ argset->count++;
+ } else if (bootverbose)
+ printf("vid_enum_outputs_subr: MISS DOD[%zd] -> 0x%08x [_BCL=%s]\n", i, val, bcl ? "true" : "false");
+ } else if (bootverbose)
+ printf("vid_enum_outputs_subr[%zd]: dod_pkg error\n", i);
+#else
if (acpi_PkgInt32(argset->dod_pkg, i, &val) == 0 &&
(val & DOD_DEVID_MASK_FULL) ==
(adr & DOD_DEVID_MASK_FULL)) {
argset->callback(handle, val, argset->context);
argset->count++;
}
+#endif
}
return (AE_OK);
@@ -1050,6 +1080,9 @@ vid_enum_outputs(ACPI_HANDLE handle,
dod_buf.Pointer = NULL;
status = AcpiEvaluateObject(handle, "_DOD", NULL, &dod_buf);
if (ACPI_FAILURE(status)) {
+ if (bootverbose)
+ printf("vid_enum_outputs: package[%s._DOD] evaluation failure[%d].\n", acpi_name(handle), status);
+
if (status != AE_NOT_FOUND)
printf("can't evaluate %s._DOD - %s\n",
acpi_name(handle), AcpiFormatException(status));
@@ -1071,6 +1104,8 @@ vid_enum_outputs(ACPI_HANDLE handle,
argset.context = context;
argset.dod_pkg = res;
argset.count = 0;
+ if (bootverbose)
+ printf("vid_enum_outputs: Wake in namespace[%s]\n", acpi_name(handle));
status = AcpiWalkNamespace(ACPI_TYPE_DEVICE, handle, 1,
vid_enum_outputs_subr, NULL, &argset, NULL);
if (ACPI_FAILURE(status))
acpi_video0: <ACPI video extension> on vgapci0 vid_enum_outputs: Wake in namespace[\134_SB_.PCI0.GFX0] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD01._ADR -> 0x00000100 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD02._ADR -> 0x00000002 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD03._ADR -> 0x00000300 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD04._ADR -> 0x00000301 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD05._ADR -> 0x00000302 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD06._ADR -> 0x00000303 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD07._ADR -> 0x00000304 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD08._ADR -> 0x00000305 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD09._ADR -> 0x00000009 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0A._ADR -> 0x0000000a vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0B._ADR -> 0x0000000b vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0C._ADR -> 0x0000000c vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0D._ADR -> 0x0000000d vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0E._ADR -> 0x0000000e vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD0F._ADR -> 0x0000000f vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.DD1F._ADR -> 0x00000400 vid_enum_outputs_subr: HIT DOD[0] -> 0x00000400 [_BCL=true] acpi_video_bind_outputs_subr: \134_SB_.PCI0.GFX0.DD1F acpi_video_vo_init[0x00000400] found Internal/Integrated Digital Flat Panel(400), idx#0, port#0, head #0 acpi_video_vo_bind: \134_SB_.PCI0.GFX0.DD1F vid_enum_outputs_subr: \134_SB_.PCI0.GFX0.IPUA._ADR -> 0x00003480 vid_enum_outputs_subr: MISS DOD[0] -> 0x00000400 [_BCL=false]
acpi_video0: <ACPI video extension> on vgapci0 vid_enum_outputs: Wake in namespace[\134_SB_.PC00.GFX0] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD01._ADR -> 0x00000001 vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD02._ADR -> 0x00000002 vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD03._ADR -> 0x00000003 vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD04._ADR -> 0x00000004 vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD05._ADR -> 0x00000005 vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD06._ADR -> 0x00000006 vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD07._ADR -> 0x00000007 vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD08._ADR -> 0x00000008 vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD09._ADR -> 0x00000009 vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0A._ADR -> 0x0000000a vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0B._ADR -> 0x0000000b vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0C._ADR -> 0x0000000c vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0D._ADR -> 0x0000000d vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0E._ADR -> 0x0000000e vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD0F._ADR -> 0x0000000f vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=false] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD1F._ADR -> 0x0000001f vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=true] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=true] vid_enum_outputs_subr: \134_SB_.PC00.GFX0.DD2F._ADR -> 0x0000001f vid_enum_outputs_subr: MISS DOD[0] -> 0x00010000 [_BCL=true] vid_enum_outputs_subr: MISS DOD[1] -> 0x00010000 [_BCL=true]
Let'snote LV8 vs FV5でビルドタイム比較
Sourceは、stable/14のもの
| Model | CPU | -j# | world+kernel |
| CF-FV5U | Core Ultra 7 165H(6P/8E/2LE) | 12(6P) | 94:19 |
| CF-FV5U | Core Ultra 7 165H(6P/8E/2LE) | 22 | 69:58 |
| CF-LV8 | Core i7 8665U(4C) | 8 | 144:56 |
| EQ12Pro | Core i3 N305(8E) | 8 | 79:45 |
ノート対決だと、4C/8T→6C/12Tで順当にタイムが縮んでいる
が、AlderLake-Nの8C/8T相手だと、MeteorLake-Pの6P/12Tだけだと負けてる
物理コア数を考えれば、Meteor Lake-Pが健闘している事に…
もちろん、全コア投入で適切にスケジュール出来れば優位になるはずだが、 そうそう巧く行くものだろうか?
6C/8E/2LE計22-thread投入で94:19(6P)→69:58 なので劇的な短縮にはならないものの、LV8比で2倍強の性能になっている (ある意味、カタログ通り LV9→FV5でビジネスベンチで2.1倍弱と喧伝されていたはず)
EUC-JPからUTF-8へ変換実施
UTF-8モードで稼働するFDcloneでは、波ダッシュ(U+301C)だと表示がバグる
xterm/kterm(utf-8モード)上のlsだと問題無いので、内部処理で何か変換してる?
解決法は、
FreeBSD側メインでの運用を想定すると、FDCloneの変換テーブルにパッチを当てる方が素直かも
CFLAGSに、-DWAVE_DASH付けてコンパイルするとUnicode - 内部コード変換で、U+FF5Dの代わりにU+301Cを使う
元より、符号定義や運用実態が錯綜する領域なので、運用環境によっては障害が生じる点に留意
(Windows 9x相手のファイル共有を行う場合、Samba側にも手当てが必要か?)
--- mkunitbl.c.orig 2019-07-27 00:00:00.000000000 +0900
+++ mkunitbl.c 2024-06-09 15:11:47.662354000 +0900
@@ -339,6 +339,9 @@
{0x3013, 0x81ac},
{0x3014, 0x816b},
{0x3015, 0x816c},
+#ifdef WAVE_DASH
+ {0x301c, 0x8160},
+#endif
{0x301d, 0x8780},
{0x301f, 0x8781},
{0x3041, 0x829f},
@@ -9245,7 +9248,9 @@
{0xff5b, 0x816f},
{0xff5c, 0x8162},
{0xff5d, 0x8170},
+#ifndef WAVE_DASH
{0xff5e, 0x8160},
+#endif
{0xffe0, 0x8191},
{0xffe1, 0x8192},
{0xffe2, 0x81ca},
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記