From owner-freebsd-users-jp@freebsd.org Fri Jun 28 07:10:59 2019 Return-Path: Delivered-To: freebsd-users-jp@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4583515DA14C for ; Fri, 28 Jun 2019 07:10:59 +0000 (UTC) (envelope-from katsu@miyoshi.matsuyama.ehime.jp) Received: from mo-sw-fb.po.2iij.net (mo-sw-fb1507.po.2iij.net [210.128.50.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 719D28CD5C for ; Fri, 28 Jun 2019 07:10:55 +0000 (UTC) (envelope-from katsu@miyoshi.matsuyama.ehime.jp) Received: by mo-sw-fb.po.2iij.net (po-mo-sw-fb1507) id x5S6bjLR018832; Fri, 28 Jun 2019 15:37:45 +0900 Received: by mo-sw.po.2iij.net (po-mo-sw1506) id x5S6bY7F011048; Fri, 28 Jun 2019 15:37:35 +0900 Received: from kmgw.miyoshi.matsuyama.ehime.jp (162.134.31.150.dy.iij4u.or.jp [150.31.134.162]) by mbox.po.2iij.net (po-mbox1510) id x5S6bYTF037969 for ; Fri, 28 Jun 2019 15:37:34 +0900 Received: from kmgw.miyoshi.matsuyama.ehime.jp (localhost [127.0.0.1]) by kmgw.miyoshi.matsuyama.ehime.jp (Postfix) with ESMTP id DFB6233F7 for ; Fri, 28 Jun 2019 15:37:33 +0900 (JST) From: Katsuyuki Miyoshi To: freebsd-users-jp@freebsd.org Cc: References: <20190603201318.6172.A7D5A726@agate.plala.or.jp> <20190620195924.76F0.A7D5A726@agate.plala.or.jp> Date: Fri, 28 Jun 2019 15:37:32 +0900 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp X-Rspamd-Queue-Id: 719D28CD5C X-Spamd-Bar: ++++ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [4.27 / 15.00]; ARC_NA(0.00)[]; RCVD_COUNT_FIVE(0.00)[5]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_SPAM_SHORT(0.63)[0.626,0]; MIME_GOOD(-0.10)[text/plain]; TO_DN_NONE(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[freebsd-users-jp@freebsd.org]; AUTH_NA(1.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_SPAM_MEDIUM(1.00)[0.995,0]; DMARC_NA(0.00)[miyoshi.matsuyama.ehime.jp]; MX_GOOD(-0.01)[mx.po.2iij.net,mx.po.2iij.net]; NEURAL_SPAM_LONG(1.00)[0.999,0]; R_SPF_NA(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:2497, ipnet:210.128.0.0/16, country:JP]; RCVD_TLS_LAST(0.00)[]; IP_SCORE(0.76)[ipnet: 210.128.0.0/16(1.79), asn: 2497(2.08), country: JP(-0.05)] Subject: [FreeBSD-users-jp 96411] Re: =?iso-2022-jp?b?SUNINxskQiRHGyhCU0FUQTMbJEIkThsoQkhERA==?= =?iso-2022-jp?b?GyRCJCwbKEJVRE1BNShTQVRBMSkbJEIkR0cnPDEkOSRrGyhC?= X-BeenThere: freebsd-users-jp@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion relevant to FreeBSD communities in Japan List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Jun 2019 07:10:59 -0000 みよし です。 Tetsuya Ito writes: > はい。このマザーボードは AHCI 未対応なので IDE で間違いありません。 なるほど…スピードが気になるようであれば何はともあれ AHCI で動かす 事を考えるのがいいのではないかと思いましたが、ICH7 は AHCI にはなれ ませんでしたか。失礼いたしました。 あらためて atapci(ata-intel.c) が ICH7 で SATA デバイスの情報をどう 取得しているのかという観点でドライバのソースを少し眺めてみました。 結論から言いますと smartctl の出力を信じたので大丈夫だと思います。 ドライバの方はうまく情報を取得できていません。 ドライバでうまく情報を取得するためには atapci0 に ABAR のリソースが 必要であるように思います。しかしこのマザーボードには以下で確認している 通り割り当てられていません。もっとも、non-AHCI な ICH7 ですので ABAR は無くていいと思うのですが、ドライバとしてはそれが無いと SATA1/2/3 を区別する事ができず、実際のモードがどうであれ全て > ada0: 150.000MB/s transfers (SATA, UDMA5, PIO 8192bytes) ★ で表示するようです。 以下少し長くなりますが、私が確認してみた事を書いてみます。 ------------------------------------------------------------------------- > # pciconf -lvbc > > atapci0@pci0:0:31:2: class=0x010180 card=0xb0021458 chip=0x27c08086 rev=0x01 hdr=0x00 > vendor = 'Intel Corporation' > device = 'NM10/ICH7 Family SATA Controller [IDE mode]' > class = mass storage > subclass = ATA > bar [20] = type I/O Port, range 32, base 0xf800, size 16, enabled > cap 01[70] = powerspec 2 supports D0 D3 current D0 まずここで報告されている atapci0 に関する出力はこれで全てという事で いいでしょうか? この情報からすると BAR は bar[20] があるだけのようです。 一方でドライバは ICH7 の SATA コントローラで SATA1/2/3 をちゃんと見 分けるためには BAR(5) (bar[24]==ABAR) のリソースを必要としているよう です。以下の辺りがその発端です。 [ata-intel.c] ========================================================== 208 static int 209 ata_intel_chipinit(device_t dev) 210 { 211 struct ata_pci_controller *ctlr = device_get_softc(dev); (中略) 266 267 /* BAR(5) may point to SATA interface registers */ 268 if ((ctlr->chip->cfg1 & INTEL_ICH7)) { 269 ctlr->r_type2 = SYS_RES_MEMORY; 270 ctlr->r_rid2 = PCIR_BAR(5); 271 ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2, 272 &ctlr->r_rid2, RF_ACTIVE); 273 if (ctlr->r_res2 != NULL) { 274 /* Set SCRAE bit to enable registers access. */ 275 pci_write_config(dev, 0x94, 276 pci_read_config(dev, 0x94, 4) | (1 << 9), 4); 277 /* Set Ports Implemented register bits. */ 278 ATA_OUTL(ctlr->r_res2, 0x0C, 279 ATA_INL(ctlr->r_res2, 0x0C) | 0xf); 280 } ======================================================================== この BAR(5) すなわち ABAR のリソースがないとドライバは ICH7 で SATA1/2/3 を見分ける事ができません。その場合ドライバは固定値として 持っている cpi->base_transfer_speed = 150000; を使う事で > ada0: 150.000MB/s transfers (SATA, UDMA5, PIO 8192bytes) ★ と表示する事になるようです。 ------------------------------------------------------------------------- 以上、だいぶ端折ってはいますが私が何か勘違いしている部分もあるかも しれません。気になる点がありましたらご指摘ください。 ただこれは、ドライバが正確な情報を持っていないというだけであって、 実動作には問題無いと思います。すなわち正確には smartctl で表示される モードで動いていると思います。 ちなみに smartctl の方はこの辺りのドライバの話とは関係なく、IDENTIFY DEVICE で取得したデータから情報を得ているようですので、正確な情報が 表示できているはずです。 -- 三好勝幸