Original geschrieben von Angel
bist du sicher? warum kann man bei VPC nicht einfach die windows-hardware erkennung benutzen?
Wenn das funktionieren sollte, dann müsste der Mac einen Teil seines PCUI-Busses dem emulierten PC zur verfügung stellen. Das ist aus zwei Gründen nicht möglich: Erstens hat der Mac die exclusive Kontrolle über den PCI-Bus und gibt sie auch nicht her. Zweitens könnte der emulierte PC mit dem Mac PCI-Bus eh nichts anfangen, weil der Mac die PCI-Schnittstellen anders adresseiert. Beim PC herrscht ein Mangel an Interrupts. Daher hängen alle Devices auf dem PCI-Bus auf einem gemeinsamen Interrupt und werden dann über Unter-Interrupts angesprochen (Interrupt Sharing). Beim Mac hat jedes Device seinen eigenen Interrupt. (*)
VPC hat mit dem PCI-Bus des Macs nichts am Hut (**). Es besitzt einen eigenen emulierten PCI-Bus.
@ lundehundt. Der Mac erkennt die Win-Only-PCI-Karte beim Booten durchaus (im Apple System-Profiler werden auch die passenden Infos angezeigt). Er erkennt aber auch, dass deren Firmware nicht Open-Firmware-Kompatibel ist. Er ignoriert deshalb die Karte und lädt keinen Treiber.
(*)
http://developer.apple.com/qa/hw/hw25.html
Q: The PCI specification (Section 6.2.4, Page 159) says that the POST code is responsible for allocating the interrupt vectors for all PCI cards. The POST software writes the vector to the PCI "Interrupt Line" register associated with every card that has a non-zero PCI "Interrupt Pin."
Is this what the Mac implementation of the POST standard does?
A: Open Firmware does not allocate interrupt vectors as in a typical x86 PC environment. Interrupts on PCI PowerMac CPUs are organized as 1 Interrupt per slot. At the motherboard connector, INTA#, INTB#, INTC#, and INTD# signals are tied together per slot and the resulting signal is called "SlotXInt#". Therefore, Open Firmware does not need to interrogate the Interrupt Line Register in Configuration Space.
The control and propagation of hardware interrupts are abstracted from the driver software. A interrupt source for a PCI card or device is represented by a node in a hierarchical tree, called Interrupt Source Tree (IST).
For a good description of Interrupts on PCI PowerMac CPUs, please refer to the Interrupt Management section in the Driver Services Library chapter in Designing PCI Cards and Drivers for Power Macintosh Computers, A8 draft or later.
(**) When you say "use the built-in graphics card ", I assume you mean a mechanism by which a guest video driver is allowed to directly control the host video card (e.g. if you have an ATI video card in your Mac, you'd use a compatible ATI video driver within Virtual PC).
There are major technical obstacles in implementing this.
1. The PC and the Mac wouldn't be able to share the same video card real estate. This would require "locking out" the Mac from using the screen while the PC is in use. Currently, there's no way to do this. For example, even in VPC's full-screen mode, the Mac still wants to "take over" sometimes (e.g. to tell you that your Appletalk network is now available). This would also preclude the use of Virtual PC in windowed mode.
2. The video buffer byte ordering is not compatible (Mac video cards are big endian, PC video cards are little endian, and Virtual PC uses the PowerPC's "pseudo little endian" mode in its emulation of the Pentium. So,when the guest software wrote to the video buffer, the pixels would come out in the wrong order.
3. Hardware can only be controlled by one driver at a time. If the Mac's driver is "in control" of the video card, it wouldn't work to allow the guest's video driver to directly control the video card. We work around this problem in Virtual PC by creating a "virtual video card". If two drivers were allowed to control one card at the same time, the results would be unpredictable at best.
Eric Traut
CTO, Connectix Corp.