トップ 最新 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

2022-11-01 [長年日記]

_ [雑記]AQC113C

AQC107後継の10G対応MAC/PHYチップを使った製品が出回り始めた模様

AQC107に対するアドバンテージは、14nm FinFETプロセスになったので消費電力が減った点とPCIe Gen4 x1モードをサポートしている点(カードだと、Gen3/Gen2動作用に x4仕様になるので、エッジフリーコネクタが必要)

  • QNAP QXG-10G1TB
  • QNAP QXG-10G2TB (2-port版)
  • GIGABYTE GC-AQC113C

QNAPの方は、既に代理店ルートで入り始めている模様?

QXG-10G1TBの値段は、AQC107なQXG-10G1Tの底値と比較して、3~4割増しぐらいなので、出荷価格が上がった訳ではなく為替が円安だからかなぁ?

GIGABYTEの方は、通販系でちらほら見かけるだけなので並行輸入品?

driverどうする?

net/aquantia-atlantic-kmodには、AQC113世代のサポートは入っていない

linux driverは、既にAQC113対応のものがgithubにあるみたい


2022-11-02 [長年日記]

_ [Ryzen][FreeBSD]amdsmn/amdtemp for Ryzen 7000 Raphael

とりあえず、雑な実装だがCCD単位のセンサーもサポートした

--- sys/dev/amdsmn/amdsmn.c.orig
+++ sys/dev/amdsmn/amdsmn.c
@@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$");
 #define       PCI_DEVICE_ID_AMD_17H_M10H_ROOT         0x15d0
 #define       PCI_DEVICE_ID_AMD_17H_M30H_ROOT         0x1480  /* Also M70H, F19H M00H/M20H */
 #define       PCI_DEVICE_ID_AMD_17H_M60H_ROOT         0x1630
+#define       PCI_DEVICE_ID_AMD_19H_M60H_ROOT         0x14d8

 struct pciid;
 struct amdsmn_softc {
@@ -104,6 +105,12 @@ static const struct pciid {
               .amdsmn_addr_reg = F17H_SMN_ADDR_REG,
               .amdsmn_data_reg = F17H_SMN_DATA_REG,
       },
+      {
+              .amdsmn_vendorid = CPU_VENDOR_AMD,
+              .amdsmn_deviceid = PCI_DEVICE_ID_AMD_19H_M60H_ROOT,
+              .amdsmn_addr_reg = F17H_SMN_ADDR_REG,
+              .amdsmn_data_reg = F17H_SMN_DATA_REG,
+      },
 };

 /*
--- sys/dev/amdtemp/amdtemp.c.orig
+++ sys/dev/amdtemp/amdtemp.c
@@ -84,6 +84,7 @@ struct amdtemp_softc {
 #define       AMDTEMP_FLAG_CT_10BIT   0x02    /* CurTmp is 10-bit wide. */
 #define       AMDTEMP_FLAG_ALT_OFFSET 0x04    /* CurTmp starts at -28C. */
       int32_t         sc_offset;
+      int32_t         sc_temp_base;
       int32_t         (*sc_gettemp)(device_t, amdsensor_t);
       struct sysctl_oid *sc_sysctl_cpu[MAXCPU];
       struct intr_config_hook sc_ich;
@@ -111,6 +112,7 @@ struct amdtemp_softc {
 #define       DEVICEID_AMD_HOSTB17H_M10H_ROOT 0x15d0
 #define       DEVICEID_AMD_HOSTB17H_M30H_ROOT 0x1480  /* Also M70H, F19H M00H/M20H */
 #define       DEVICEID_AMD_HOSTB17H_M60H_ROOT 0x1630
+#define       DEVICEID_AMD_HOSTB19H_M60H_ROOT 0x14d8

 static const struct amdtemp_product {
       uint16_t        amdtemp_vendorid;
@@ -135,6 +137,7 @@ static const struct amdtemp_product {
       { VENDORID_AMD, DEVICEID_AMD_HOSTB17H_M10H_ROOT, false },
       { VENDORID_AMD, DEVICEID_AMD_HOSTB17H_M30H_ROOT, false },
       { VENDORID_AMD, DEVICEID_AMD_HOSTB17H_M60H_ROOT, false },
+      { VENDORID_AMD, DEVICEID_AMD_HOSTB19H_M60H_ROOT, false },
 };

 /*
@@ -174,6 +177,8 @@ static const struct amdtemp_product {
 #define       AMDTEMP_17H_CCD_TMP_BASE        0x59954
 #define       AMDTEMP_17H_CCD_TMP_VALID       (1u << 11)

+#define       AMDTEMP_ZEN4_CCD_TMP_BASE       0x59b08
+
 /*
  * AMD temperature range adjustment, in deciKelvins (i.e., 49.0 Celsius).
  */
@@ -329,6 +334,8 @@ amdtemp_attach(device_t dev)
       if (!amdtemp_match(device_get_parent(dev), &product))
               return (ENXIO);

+      sc->sc_temp_base = AMDTEMP_17H_CCD_TMP_BASE;
+
       cpuid = cpu_id;
       family = CPUID_TO_FAMILY(cpuid);
       model = CPUID_TO_MODEL(cpuid);
@@ -774,7 +781,7 @@ amdtemp_gettemp17h(device_t dev, amdsensor_t sensor)
               return (amdtemp_decode_fam17h_tctl(sc->sc_offset, val));
       case CCD_BASE ... CCD_MAX:
               /* Tccd<N> */
-              error = amdsmn_read(sc->sc_smn, AMDTEMP_17H_CCD_TMP_BASE +
+              error = amdsmn_read(sc->sc_smn, sc->sc_temp_base +
                   (((int)sensor - CCD_BASE) * sizeof(val)), &val);
               KASSERT(error == 0, ("amdsmn_read2"));
               KASSERT((val & AMDTEMP_17H_CCD_TMP_VALID) != 0,
@@ -795,7 +802,7 @@ amdtemp_probe_ccd_sensors(device_t dev, uint32_t maxreg)

       sc = device_get_softc(dev);
       for (i = 0; i < maxreg; i++) {
-              error = amdsmn_read(sc->sc_smn, AMDTEMP_17H_CCD_TMP_BASE +
+              error = amdsmn_read(sc->sc_smn, sc->sc_temp_base +
                   (i * sizeof(val)), &val);
               if (error != 0)
                       continue;
@@ -840,6 +847,7 @@ amdtemp_probe_ccd_sensors17h(device_t dev, uint32_t model)
 static void
 amdtemp_probe_ccd_sensors19h(device_t dev, uint32_t model)
 {
+      struct amdtemp_softc *sc = device_get_softc(dev);
       uint32_t maxreg;

       switch (model) {
@@ -848,6 +856,11 @@ amdtemp_probe_ccd_sensors19h(device_t dev, uint32_t model)
               maxreg = 8;
               _Static_assert((int)NUM_CCDS >= 8, "");
               break;
+      case 0x60 ... 0x6f: /* Zen4 Ryzen "Raphael" */
+              sc->sc_temp_base = AMDTEMP_ZEN4_CCD_TMP_BASE;
+              maxreg = 8;
+              _Static_assert((int)NUM_CCDS >= 8, "");
+              break;
       default:
               device_printf(dev,
                   "Unrecognized Family 19h Model: %02xh\n", model);

_ [Ryzen][FreeBSD]Ryzen 7950X/ASRock B650M PG

Firmwareは1.09で、デフォルト設定でdev.cpu.0.freqとdev.cpu.0.cx_lowestの依存性を調査

アイドル電力とロード電力およびbuildworldラップタイムは、dev.cpu.0.freqは最大出力にのみ影響がある(アイドル時はファーム側で制御されているぽぃ)

dev.cpu.0.cx_lowestは、アイドル電力にのみ影響が現れるが、CmaxよりもC1で固定した方が、アイドル電力・Tctlが下がる(おそらく、cx_lowestをオーバーライドすると、ファーム側の最適制御がOFFになるぽぃ)

なので、ASRock B650M PGだと、performance_cx_lowest設定無し(/etc/rc.conf)・powerd無しで運用するのが正解の模様


2022-11-08 [長年日記]

_ [FreeBSD][Fortran]lang/lfortranを試す

デフォルトのLLVM_VERSIONは、11だが13でもビルド出きることを確認した。

Fortran90版の姫野ベンチをコンパイルしてみたが、色々足りない見たいで実用に耐えないぽぃ

  • PAUSE文はエラーになる(廃止予定項目だからまあいいのだが…)
  • 外部関数呼び出しを宣言するEXTERNAL属性を認識しない
  • MODULEスコープで宣言した変数をUSE文で取り込んでも認識出来てない模様

2022-11-17 [長年日記]

_ [雑記]加湿器新調

ダイニチHD-LX1222を購入し、旧式化したHD-RX918を置き換え

気化フィルター大型化に伴う加湿量1.5倍が効いたのか、湿度60%↑の加湿状態が安定するようになった

あと、蒸発皿や給水タンク周りの構造が改良されていて、水に浸かる面積が縮小している


2022-11-18 [長年日記]

_ [FreeBSD]stable/13壊れた

buildworldで stand/libsa32が壊れてる Orz

/usr/src/sys/ufs/ffs/ffs_subr.c:334:12: error: unused variable 'prtmsg' [-Werror,-Wunused-variable]
static int prtmsg = 1;
           ^
1 error generated.
*** [ffs_subr.o] Error code 1

make[4]: stopped in /usr/src/stand/libsa32
1 error

make[4]: stopped in /usr/src/stand/libsa32

直接の原因は多分 これで libsa32ビルド時は、prtmsgのMPRINT経由の参照が消滅していて、_KERNELでないからSYSCTL_INTによる参照も無いので、unused variableになっている模様

あと、main(CURRENT)側のコードはprtmsgが関数のローカル変数になっている&ifdefの構成が異なるので事情が違う罠

修正来た(16:19追記)


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記