LinuxのPCIホットプラグってどう実装されてるの?

LinuxカーネルにおけるPCI hotplugの処理を(なおた先生が)追った記録です
15
るくす @RKX1209

しかしPCI hotplugについて調べてもすぐにudevの話だし、PRSNT1/2をカーネルがどう扱ってるかについて書いてる人全くと言って良い程いないので悲しい

2016-06-01 20:25:02
るくす @RKX1209

udevじゃなくてueventの発生より前の話をみたいんだよな....

2016-06-01 20:25:32
イーロン・マスクツイッターやめろ @naota344

このまえのSDにvirtio PCIがprobeしてueventみたいな話書いたよ

2016-06-01 23:34:57
るくす @RKX1209

@naota344 PBD(PCI-e port driver)のprobeが走るタイミングがよく分かってないんですけど、PCIカードなりがホットプラグされたらACPIだとSCIが入るじゃないですか このSCIが入ったタイミングで呼ばれるハンドラ的なのってどこにあるんですか?

2016-06-01 23:38:34
るくす @RKX1209

どうにも分からないので、TLのカーネルハッカー様に教えを乞うた

2016-06-01 23:40:19
るくす @RKX1209

@naota344 あ ACPIのSCIはここの28ページに書いてありました すみません どちらかというとレガシー(not ACPI)の方を教えてもらいたいかも...m(_ _)m osdn.jp/projects/linux…

2016-06-01 23:58:02
イーロン・マスクツイッターやめろ @naota344

偶然本棚に第50回Linuxカーネル観光ガイドののったSDがありこれを参考にすることができる(

2016-06-02 00:03:54
イーロン・マスクツイッターやめろ @naota344

hotplug奴全般がpci_hp_registerでslotあててんのかな

2016-06-02 00:14:28
るくす @RKX1209

レガシーな手段だとホットプラグされると、INSRT1/2ピンがpull-downされると書いてあってINSRT1/2で検索したらdrivers/pci/hotplug/ibmphp_*あたりにしか無くて???って無ったのでその辺りを...

2016-06-02 00:02:50
イーロン・マスクツイッターやめろ @naota344

__pci_hp_register - register a hotplug_slot with the PCI hotplug subsystem

2016-06-02 00:05:31
イーロン・マスクツイッターやめろ @naota344

ところでるくす氏、 coccigrep はべんりだから使うといいと思います

2016-06-02 00:20:44
イーロン・マスクツイッターやめろ @naota344

coccigrep があれば (struc xxx)->yyy みたいな検索ができて人生がはかどることになる

2016-06-02 00:22:09
るくす @RKX1209

おお coccigrepとても良さそう 知見だ

2016-06-02 00:21:45
ntddk @ntddk

coccigrepしらんかった

2016-06-02 00:22:26
イーロン・マスクツイッターやめろ @naota344

coccigrep をインストールしていないものは人生の敗北者

2016-06-02 00:26:40
イーロン・マスクツイッターやめろ @naota344

hotplug slotのenable_slotがどっかで呼ばれて、そいつが各legacyのcallback呼んでるんだが

2016-06-02 00:25:29
イーロン・マスクツイッターやめろ @naota344

でもCalled when the user wants to enable a specific pci slotだからautomaticでない気もするんだけどな

2016-06-02 00:26:30
イーロン・マスクツイッターやめろ @naota344

hotplug slot を入れると、 /sys 下にそのpciに対応したfileができるんで、そいつの power に 1 とか書きこむとplugされるという認識を現在持っている

2016-06-02 00:28:47
るくす @RKX1209

そうか /sysへの書き込みの"user"か しかしautomaticな部分がなかなか分からぬ...

2016-06-02 00:30:37
イーロン・マスクツイッターやめろ @naota344

ibmphp に関しては poll_hpc() が polling してprocess_changeinlatch() などしてるから、このへんにあるのかなと思ってるんだけどconfig copyしてるだけっぽいんだよな(あとdisable

2016-06-02 00:42:34
るくす @RKX1209

これなんですよね ピンの処理はどうもこの辺りのドライバがやっていそうな雰囲気はあるんだけど...

2016-06-02 00:46:28
イーロン・マスクツイッターやめろ @naota344

pciehp_probe() -> pciehp_enable_slot(slot); は見えるが

2016-06-02 00:51:59