任务单 #33013

VM0でWindows 8.1を起動すると、シリアルコンソールへVMMのメッセージが出力されなくなる

开放日期: 2014-01-25 23:26 最后更新: 2014-02-09 23:41

报告人:
属主:
类型:
状态:
关闭
组件:
(无)
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:
1

Details

VM0でWindows 8.1を起動すると、シリアルコンソールへVMMのメッセージが出力されなくなる。

任务单历史 (3/9 Histories)

2014-01-25 23:26 Updated by: yuichi_xy
  • New Ticket "VM0でWindows 8.1を起動すると、シリアルコンソールへVMMのメッセージが出力されなくなる" created
2014-01-26 21:53 Updated by: yuichi_xy
评论

Windiows上でteratermを起動してCOM1に接続してキーボードを押しても、シリアルへ出力されない。

一方で、teratermを起動してCOM1に接続している間は、VMMのshellを操作できる。 teratermを終了すると、shellの操作もできなくなる。

Windowsが3f8h-3ffhのIO port以外を使ってシリアルコントローラの有効、無効を制御している可能性が考えられる。

2014-01-26 23:37 Updated by: yuichi_xy
评论

yuichi_xy への返信

Windiows上でteratermを起動してCOM1に接続してキーボードを押しても、シリアルへ出力されない。

シリアルエミュレータがFIFOに対応していないことが原因ではないかと推測して、FIFOに対応しているようにOSに見せるようにしてみた。
r168

しかし、teratermで入力しても、シリアルへ出力されない事象が発生した。

2014-01-30 22:18 Updated by: yuichi_xy
评论

Super I/Oのデータシートによると、2Eh/2Fhか4Eh/4FhのI/Oポートを使ってコンフィグレーションレジスタへアクセスできるようです。 コンフィグレーションレジスタにはUARTの有効、無効を切り替えるレジスタもあります。

そこで、これらのI/OポートへのOSによるアクセスを無効化するようVMMを改造してみました。 しかし、Windowsを起動した時にシリアルコンソールが使えなくなる事象は発生しました。

2014-01-31 23:57 Updated by: yuichi_xy
评论

teratermを閉じると、コンフィグレーションレジスタでUARTが無効化されています。 しかし、VMMでアクセスを無視するようにしているので、なぜ、本当に無効になってしまうのか分かりません。

> outb 0x2e 0x87
outb 0x2e 0x87
outb 0x2e 0x7
outb 0x2f 0x2
outb 0x2e 0x74
inb 0x2f
outb 0x2e 0x74
inb 0x2f
outb 0x2e 0x30
outb 0x2f 0x0
outb 0x2e 0x60
inb 0x2f
outb 0x2e 0x61
inb 0x2f
2014-02-06 22:53 Updated by: yuichi_xy
评论

「\\_SB_.PCI0.LPCB.UAR1._DIS」を無効化するパッチを作成したところ、Windows 8.1の起動後も、シリアルコンソールへVMMのメッセージが出力されるようになった。

acpi-dsdt_140206-02.patch
2014-02-09 23:37 Updated by: yuichi_xy
评论

私のPCでは、シリアルコントローラの_HIDは、数値ではなく、メソッドになっていました。

TinyVisorはBitVisorのAMLパーサを使っていますが、メソッドの実行ができないため、シリアルコントローラに対応するデバイスオブジェクトを見つけることはできません。

                Device (UAR1)
                {
                    Name (_UID, One)
                    Method (_HID, 0, NotSerialized)
                    {
                        Return (^^SIO1.UHID (Zero))
                    }
2014-02-09 23:41 Updated by: yuichi_xy
  • 处理结果 Update from to Fixed
  • 状态 Update from 开启 to 关闭
  • Ticket Close date is changed to 2014-02-09 23:41
评论

r169で、NetBSD 6.1.3 の AML インタープリタを移植しました。 そのインタープリタを使用して、シリアルコントローラのデバイスオブジェクトを特定し、その _DIS メソッドを無効化するようにしました。

その結果、VM0 で Windows 8.1 を起動しても、シリアルコンソールへ VMM のメッセージが表示されるようになりました。

Attachment File List

编辑

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登录名