On Mon, Sep 15, 2014 at 05:01:21PM +0200, Laszlo Ersek wrote:
> > diff --git a/hw/usb/hcd-ehci-pci.c b/hw/usb/hcd-ehci-pci.c
> > index 289ca3b..bb230f1 100644
> > --- a/hw/usb/hcd-ehci-pci.c
> > +++ b/hw/usb/hcd-ehci-pci.c
> > @@ -208,8 +208,8 @@ struct ehci_companions {
> > };
> >
> > static const struct ehci_companions ich9_1d[] = {
> > - { .name = "ich9-usb-uhci1", .func = 0, .port = 0 },
> > - { .name = "ich9-usb-uhci2", .func = 1, .port = 2 },
> > + { .name = "ich9-usb-uhci3", .func = 0, .port = 0 },
> > + { .name = "ich9-usb-uhci3", .func = 1, .port = 2 },
> > { .name = "ich9-usb-uhci3", .func = 2, .port = 4 },
> > };
> >
> >
> > they *all* get detected and work great on ovmf+osx. Slow kbd+mouse
> > get routed automatically to one of them, and work fine. The only
> > differences I can see between them (in hw/usb/hcd-uhci.c) is
> > the name string and "irq_pin" field. Not sure yet if that's likely
> > to point to an explanation...
>
> It is actually extremely relevant, the irq_pin field. I'm not exactly
> sure how just yet, but it is. Maybe check the interrupt routing in OSX
> somehow? Do you have a dmesg-like log in OSX, with a PRT dump from the
> DSDT, and messages about interrupt routing setup? Do you have in OSX
> anything that corresponds to /proc/interrupts under Linux?
Actually, even more exciting:
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index 3b3ebcd..d61656e 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -1335,21 +1335,21 @@ static UHCIInfo uhci_info[] = {
.vendor_id = PCI_VENDOR_ID_INTEL,
.device_id = PCI_DEVICE_ID_INTEL_82801I_UHCI1,
.revision = 0x03,
- .irq_pin = 0,
+ .irq_pin = 1,
.unplug = false,
},{
.name = "ich9-usb-uhci2", /* 00:1d.1 */
.vendor_id = PCI_VENDOR_ID_INTEL,
.device_id = PCI_DEVICE_ID_INTEL_82801I_UHCI2,
.revision = 0x03,
- .irq_pin = 1,
+ .irq_pin = 2,
.unplug = false,
},{
.name = "ich9-usb-uhci3", /* 00:1d.2 */
.vendor_id = PCI_VENDOR_ID_INTEL,
.device_id = PCI_DEVICE_ID_INTEL_82801I_UHCI3,
.revision = 0x03,
- .irq_pin = 2,
+ .irq_pin = 3,
.unplug = false,
},{
.name = "ich9-usb-uhci4", /* 00:1a.0 */
Turns out, anything with an irq_pin <= 1 won't show up when osx is
booted on q35 with ovmf (but osx + q35 works if booted via Chameleon).
DSDT looks identical across the ovmf vs. chameleon divide. I'm going
to take some time to do a more thorough search of any and all logging
I can find on OS X, and also try to find wherever in ovmf the guest
device irq pin comes into play where uhci is concerned.
I am basically just poking at it with a stick right now, but maybe
something will start making sense soon :)
Thanks again,
--Gabriel
------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel