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 | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記