Submit Search
Upload
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem(4))
•
Download as PPTX, PDF
•
0 likes
•
532 views
M
Masanobu Saitoh
Follow
Ported FreeBSD's SMBus driver ismt(4) to NetBSD. ismt(4) is used on Atom S1200 and C2000
Read less
Read more
Software
Report
Share
Report
Share
1 of 19
Download now
Recommended
あるmmapの話
あるmmapの話
nullnilaki
Routerboard勉強会 tips
Routerboard勉強会 tips
kometch H
あるキャッシュメモリの話
あるキャッシュメモリの話
nullnilaki
あるブートローダの話
あるブートローダの話
nullnilaki
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
nullnilaki
ゆるバグ
ゆるバグ
MITSUNARI Shigeo
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Kazuhiro Takahashi
Recommended
あるmmapの話
あるmmapの話
nullnilaki
Routerboard勉強会 tips
Routerboard勉強会 tips
kometch H
あるキャッシュメモリの話
あるキャッシュメモリの話
nullnilaki
あるブートローダの話
あるブートローダの話
nullnilaki
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
オープンソース開発と、あるフレームバッファコンソールの話~名古屋応用編~
nullnilaki
ゆるバグ
ゆるバグ
MITSUNARI Shigeo
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Raspberry pi 用 toppers ssp シュリンク版(海賊版)の紹介
Kazuhiro Takahashi
Trema day 1
Trema day 1
ykuga
RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩
Ryo Fujita
Ras piでrt linux
Ras piでrt linux
Hideki Aoshima
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
MITSUNARI Shigeo
slide2
slide2
guestec5f0e
BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
Redis速習会@Wantedly
Redis速習会@Wantedly
Yoshinori Kawasaki
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
Sho Shimizu
Kernel ext4
Kernel ext4
Kai Sasaki
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
magoroku Yamamoto
10分で分かるデータストレージ
10分で分かるデータストレージ
Takashi Hoshino
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
magoroku Yamamoto
V6 unix in okinawa
V6 unix in okinawa
magoroku Yamamoto
Redisととあるシステム
Redisととあるシステム
Takehiro Torigaki
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
MITSUNARI Shigeo
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
OSSラボ株式会社
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
Yusuke Fujimoto
osoljp 2011.08
osoljp 2011.08
@ otsuka752
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamaguti
Noriyuki Yamaguchi
More Related Content
What's hot
Trema day 1
Trema day 1
ykuga
RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩
Ryo Fujita
Ras piでrt linux
Ras piでrt linux
Hideki Aoshima
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
MITSUNARI Shigeo
slide2
slide2
guestec5f0e
BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
Redis速習会@Wantedly
Redis速習会@Wantedly
Yoshinori Kawasaki
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
Sho Shimizu
Kernel ext4
Kernel ext4
Kai Sasaki
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
magoroku Yamamoto
10分で分かるデータストレージ
10分で分かるデータストレージ
Takashi Hoshino
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
magoroku Yamamoto
V6 unix in okinawa
V6 unix in okinawa
magoroku Yamamoto
Redisととあるシステム
Redisととあるシステム
Takehiro Torigaki
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
MITSUNARI Shigeo
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
OSSラボ株式会社
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Takashi Hoshino
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
Yusuke Fujimoto
What's hot
(20)
Trema day 1
Trema day 1
RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩
Ras piでrt linux
Ras piでrt linux
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
slide2
slide2
BLS署名の実装とその応用
BLS署名の実装とその応用
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
0章 Linuxカーネルを読む前に最低限知っておくべきこと
0章 Linuxカーネルを読む前に最低限知っておくべきこと
Redis速習会@Wantedly
Redis速習会@Wantedly
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
Kernel ext4
Kernel ext4
20分でわかった事にするパワーマネジメント
20分でわかった事にするパワーマネジメント
10分で分かるデータストレージ
10分で分かるデータストレージ
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
V6 unix in okinawa
V6 unix in okinawa
Redisととあるシステム
Redisととあるシステム
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
10分で分かるLinuxブロックレイヤ
10分で分かるLinuxブロックレイヤ
Tensor コアを使った PyTorch の高速化
Tensor コアを使った PyTorch の高速化
Similar to Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem(4))
osoljp 2011.08
osoljp 2011.08
@ otsuka752
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamaguti
Noriyuki Yamaguchi
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88k
Kenji Aoyama
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
Kazuyuki Sato
CUDAプログラミング入門
CUDAプログラミング入門
NVIDIA Japan
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)
たけおか しょうぞう
Apache cloudstack4.0インストール
Apache cloudstack4.0インストール
Yasuhiro Arai
SDN Japan: ovs-hw
SDN Japan: ovs-hw
ykuga
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
tokudahiroshi
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
Satoshi Shimazaki
retrobsd-2012-JUL-07 at JNUG BSD BoF
retrobsd-2012-JUL-07 at JNUG BSD BoF
たけおか しょうぞう
Bird in show_net
Bird in show_net
Tomoya Hibi
InfiniBand on Debian
InfiniBand on Debian
Taisuke Yamada
WalBの紹介
WalBの紹介
Takashi Hoshino
INF-002_Azure IaaS 最新動向
INF-002_Azure IaaS 最新動向
decode2016
An Intelligent Storage?
An Intelligent Storage?
Kohei KaiGai
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
Ryo Sakamoto
Code jp2015 cpuの話
Code jp2015 cpuの話
Shinichiro Niiyama
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
Insight Technology, Inc.
Similar to Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem(4))
(20)
osoljp 2011.08
osoljp 2011.08
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamaguti
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88k
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
「前回の COMSTAR ネタに刺激されてしまったので、オレも COMSTAR を使ってみた。」(仮)
CUDAプログラミング入門
CUDAプログラミング入門
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
あるRISC-V CPUの 浮動小数点数(異常なし)
あるRISC-V CPUの 浮動小数点数(異常なし)
Apache cloudstack4.0インストール
Apache cloudstack4.0インストール
SDN Japan: ovs-hw
SDN Japan: ovs-hw
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
retrobsd-2012-JUL-07 at JNUG BSD BoF
retrobsd-2012-JUL-07 at JNUG BSD BoF
Bird in show_net
Bird in show_net
InfiniBand on Debian
InfiniBand on Debian
WalBの紹介
WalBの紹介
INF-002_Azure IaaS 最新動向
INF-002_Azure IaaS 最新動向
An Intelligent Storage?
An Intelligent Storage?
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
Code jp2015 cpuの話
Code jp2015 cpuの話
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
[data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎
Yet another Intel Chipset Internal SMBus device’s driver: ismt(4)(and spdmem(4))
1.
Yet another Intel
Chipset Internal SMBus device’s driver: ismt(4) (と spdmem(4)) msaitoh@netbsd.org
2.
サーバ、ストレージ向け SoC • S1200 –
Atom ベースのサーバ用で初の SoC • C2000 – 1G MAC x4 内蔵 • (Xeon-D) – 10G MAC x2 内蔵
3.
S1200 & C2000 •
S1200 – Codename: Centerton – サーバ用途、ストレージ用途を想定 – 6.1 - 14.1W – Release: Q4’12 – 不遇の SoC • C2000 – Codename: Avoton, Rangeley – サーバ用途、ストレージ用途を想定 – 6 – 20 W – Relase: Q3’13 – おおはやり
4.
S1200 • 実際にこれを使った製品がほとんどない・・・ – SuperMicro
X9SBAA(-F) – 一部のNAS • シリアルポートが puc(4) である – puc をシリアルコンソールにする問題 – X9SBAA(-F) は別途 super IO がいてそこにも com ポー トがある。 • ichsmb(4) および LPC bridge 内蔵の SMBus とは 違う SMBus がいる
5.
C2000 • Codename: – Avoton:
for Storage • Turbo Boost がある。 – Rangeley: for Network • Turbo Boost はない • オプションで Quick Assist がある(ハードウェア暗号化エンジ ン) • シリアルは LPC の先 • SMBus は S1200 で追加されたものも入っている
6.
そもそもなんでこういう違いがあるか • 組み込みを想定。軽くしたい – PCIe
経由して LPC の先の ISA bus とか無駄だろw • CPU cycle 数的に • 時間的に • 電力的に – I2C, SMBus アクセスを軽くしたい • Enclosure センサーとかを実際に使うことを想定 • データの読み書きは小さくても、実際に完了するまで に時間がかかる
7.
見えねぇ • SuperMicro X9SBAA-F
に挿した DDR3 SODIMM の SPD memory が読めない – ichsmb(4) の先にはいない – LPC の先にもいない(と思われる) • SuperMicro A1SRi-2758F の ismt(4) に何か繋 がっているかもしれない – SPD ROM は ichsmb(4) の先に存在する – 何かセンサーがあるなら見たい! • SPD ROM の中身を見てニヤニヤするオタク
8.
spdmem(4) ichsmb0 at pci0
dev 31 function 4: vendor 8086 product a123 (rev. 0x31) ichsmb0: interrupting at ioapic0 pin 16 iic0 at ichsmb0: I2C bus spdmem0 at iic0 addr 0x51: M378A1G43DB0-CPB spdmem0: DDR4 SDRAM (DDR4 UDIMM), no temp-sensor, 0.938ns cycle time (1066MHz), 8GB, 2132MHz (PC4-4300) spdmem0: 12 rows, 13 cols, 4 banks, 4 bank groups spdmem0: tAA-tRCD-tRP-tRAS: 15-15-15-36 DDR4 の場合の例
9.
ismt(4) • ichsmb(4) とはプログラミングインターフェース が全く違う •
ディスクリプタリング+DMA – ディスクリプタに書いて実行 – 結果はディスクリプタの先 • FreeBSD と Linux にはドライバがある – 作者は Intel の人
10.
FreeBSD -> NetBSD
への移植 • 移植は基本的に機械的作業 – ドライバのデータ構造(いわゆる softc)の調整 – DMA 関連の API の調整 – 割り込み回りの調整
11.
サクッと割り込み来たぜー
12.
なんか、いつも見てるアドレスと違うような・・・
13.
わからん! • データシート見てもわからない • 困ったときは
Linux のソース そして・・・
14.
キター
15.
dmesg ismt0 at pci0
dev 19 function 0: vendor 8086 product 0c59 (rev. 0x01) ismt0: interrupting at msi2 vec 0 iic0 at ismt0: I2C bus spdmem0 at iic0 addr 0x50: SMD-N8G28ECAP-16KL spdmem0: DDR3 SDRAM, ECC, temp-sensor, 8GB, 1600MHz (PC3-12800) spdmem0: 13 rows, 13 cols, 8 log. banks, 2 phys. banks, 1.250ns cycle time spdmem0: tAA-tRCD-tRP-tRAS: 10-10-10-28 spdmem0: 1.5V 1.35V operable spdmem0: 0x00: 92 12 0b 08 04 21 02 09 0b 52 01 08 0a 00 fe 00 spdmem0: 0x10: 69 78 69 30 69 11 18 81 20 08 3c 3c 00 f0 83 01 spdmem0: 0x20: 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 spdmem0: 0x30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 03 00 spdmem0: 0x40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 spdmem0: 0x50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 spdmem0: 0x60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 spdmem0: 0x70: 00 00 00 00 00 86 e9 00 00 00 00 00 00 00 8f f5 spdmem0: 0x80: 53 4d 44 2d 4e 38 47 32 38 45 43 41 50 2d 31 36 spdmem0: 0x90: 4b 4c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 spdmem0: 0xa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 verbose出力
16.
diff --- ismt.c 2014-07-03
13:03:04.000000000 +0900 +++ ismt.c.new 2016-01-05 02:19:27.000000000 +0900 @@ -72,7 +72,7 @@ #define ISMT_DESC_LPR 0x80 /* Large Packet Received */ /* Macros */ -#define ISMT_DESC_ADDR_RW(addr, is_read) ((addr) | (is_read)) +#define ISMT_DESC_ADDR_RW(addr, is_read) ((addr << 1) | (is_read)) /* iSMT General Register address offsets (SMBBAR + <addr>) */ #define ISMT_GR_GCTRL 0x000 /* General Control */
17.
ちょ • てか、FreeBSD はどうやって動作確認したん だよ・・・ •
Linux のドライバと FreeBSD のドライバは基本 同じで、しかも FreeBSD のほうが後なんです けど。Linux は最初っから正しいんですけ ど・・・。
18.
マージされました(^-^)
19.
Q • FreeBSD の
i2C (SMBus) 系のドライバ一覧と かはどこかにあるの? – NetBSD と OpenBSD は sys/dev/i2c の下を見れば わかる
Download now