萌えハッカーニュースリーダー

2025/06/04 00:58 I discovered that Bill Gates monopolized ACPI in order to break Linux

出典: https://enaix.github.io/2025/06/03/acpi-conspiracy.html
hakase
博士

ロボ子、Steam Deckの充電回路が故障したのがきっかけで、SMBusを介してSmart Battery System (SBS) コマンドを呼び出すことでPERMANENT FAILUREモードを無効にできるって話、知ってるか?

roboko
ロボ子

はい、博士。スマートバッテリーコントローラーが永久故障モードに入ったのがきっかけで発見されたそうですね。SMBusはI2Cから派生したものだと理解しています。

hakase
博士

そうじゃ、`i2c-tools`ドライバでSMBusにアクセスしようとしたら、応答がなかったらしいのじゃ。なぜかというと、SMBusが組み込みコントローラー (EC) に接続されていたからじゃ。

roboko
ロボ子

ECは、ACPI、GPIO、ファン、温度管理、SMBusなどを処理するんですね。ECとの通信は、`linux/drivers/acpi/ec.c`ドライバを介してCPU IOピンに書き込むことで行う、と。

hakase
博士

その通り!Linuxカーネルには、ECを介してSMBus経由でSBSと通信するためのドライバ (`linux/drivers/acpi/sbs.c`と`linux/drivers/acpi/sbshc.c`) があるんじゃ。

roboko
ロボ子

これらのドライバは、HIDが`ACPI0001`または`ACPI0005`のACPIデバイスを探し、`_EC`メソッドを呼び出してSMBusパッケージを送信するアドレスを計算するんですね。

hakase
博士

ACPIは、ハードウェアコンポーネントとOS間のインターフェースとして機能するのじゃが、カスタムドメイン固有言語であるASLを使用しており、エラーが発生しやすいのが難点じゃな。

roboko
ロボ子

ACPI仕様では、ECに組み込まれたSMBusコントローラーは`ACPI0001`または`ACPI0005`として存在し、`_EC`メソッドを持つ必要があるとされていますが、実際にはそうではない場合がある、と。

hakase
博士

ITEは、EC/SuperIOチップの主要メーカーじゃが、チップのデータシートを提供していないのが困るのじゃ。ブラックボックスじゃな。

roboko
ロボ子

Linus TorvaldsがACPIを「あらゆる面で完全な設計上の災害」と評しているのは、かなり手厳しいですね。

hakase
博士

さらに、Bill Gatesが1999年に書いたメモで、ACPI拡張機能をWindows固有のものにすることを提案し、Linuxが恩恵を受けないようにAPIを設計したり、関連する特許を取得したりすることを検討していたとは…。

roboko
ロボ子

それは驚きです。今後の対策として、Linux ACPIドライバを改善し、`sbsutil`プロジェクトを開発し、`sbshc`ドライバへのパッチを作成することが提案されているんですね。

hakase
博士

そうじゃ。しかし、ACPIは複雑怪奇すぎて、私でもたまに頭が痛くなるのじゃ。まるで、迷路のような仕様書を解読している気分じゃ。

roboko
ロボ子

博士でもそうなんですね。でも、Linuxコミュニティの努力で、少しずつ改善されていると信じています。

hakase
博士

まあ、最悪の場合は、Steam Deckを分解して、バッテリーを直接ハックするしかないかの?

roboko
ロボ子

それは最終手段ですね。博士、冗談ですよね?

hakase
博士

もちろん冗談じゃ!…たぶん。でも、もしそうなったら、ロボ子、手伝ってくれるかの?

roboko
ロボ子

…喜んで。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search