Re: 3.8.0-rc4+ - Oops on removing WinTV-HVR-1400 expresscard TV Tuner

From: Chris Clayton
Date: Sat Mar 09 2013 - 04:20:24 EST


Hi Bjorn,

On 03/08/13 22:57, Bjorn Helgaas wrote:
[+cc Rafael, in case the _OSC thing rings a bell with him]

On Fri, Mar 8, 2013 at 3:44 AM, Chris Clayton <chris2553@xxxxxxxxxxxxxx> wrote:
On 03/08/13 00:39, Bjorn Helgaas wrote:
On Thu, Mar 7, 2013 at 1:21 PM, Chris Clayton <chris2553@xxxxxxxxxxxxxx>
wrote:
On 03/07/13 17:30, Bjorn Helgaas wrote:

3) HVR-1400 not being recognized when inserted. This is a PCI hotplug
issue, and I *can* help with this. I don't know what your hardware
is, but in general, pciehp should take care of this. If it doesn't,
or if you have to use an argument like "pcie_ports=native", we should
fix this.

So 3) is the thing I might be able to help with. If there's still a
problem here (and even having to boot with an argument is a problem),
let's start by collecting complete dmesg logs, with and without your
"pcie_ports" option. Boot without the card installed, then insert it
and remove it. If you can use something like v3.9-rc1 with
CONFIG_HOTPLUG_PCI_PCIE=y, that would be ideal.


OK, I've gathered these logs using a kernel built from a pull of Linus'
tree
this afternoon (v3.9-rc1-108-g9f22578). Also, the cx23885 driver is still
blacklisted to avoid unnecessary noise and the chance of an oops if the
card
springs out again when I insert it. The driver does load if it's not
blacklisted (and the pcie_ports=native option is present).

The two logs are attached. As you will see, nothing at all happens when
the
pcie_ports=native option is absent. The nf_conntrack message is normally
the
last one from a normal boot.


Perfect, thanks!

It looks like something's going wrong when we evaluate _OSC. Can you
collect an acpidump from your machine?

A bziped file containing the output from acpidump is attached.

Thanks. I opened this bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=54981 to keep track of
your logs.


Excellent, thanks.

Here's your _OSC method from the acpidump:

Method (_OSC, 4, Serialized) {
...
If (LAnd (LEqual (Arg0, GUID), NEXP))
... # normal case
Else {
Or (CDW1, 0x04, CDW1) # "unrecognized UUID" error
Return (Local0)
}

It fails with "unrecognized UUID" if either (1) we supply the wrong
UUID or (2) "NEXP" is false. I have no idea what NEXP is; your
DSDT.dsl never sets it, so maybe it's related to a BIOS setup option
or something? I found a BIOS manual [1] but didn't see anything
likely. I guess it might be worth you looking, or maybe trying a
"reset to defaults" if it's not too destructive for you. You don't

As the manual showed, there aren't too many user-changeable settings in the BIOS on this machine, so I tried a "reset to defaults". Unfortunately, it made no difference.

have a copy of Windows on that box, do you? I *assume* hotplug would
work fine with Windows and maybe we could figure out what it is doing
differently.


Yes, I have Windows 7 Home Premium (64 bit), although, as I said previously, I rarely boot it. One occasion when I usually do is when I buy new hardware. The hotplug works fine in Windows with the two expresscards that I own.

I'm happy to help work out what's different on Windows, but I have no diagnostic tools installed, so I might need some hand-holding. One immediate difference is that my Windows installation is 64bit whereas my linux installation is 32 bit.

Thanks for your help so far,

Chris

Bjorn

[1] http://solutions.us.fujitsu.com/www/content/pdf/SupportGuides/AH530_BIOS_Guide_FPC58-2843-01_rA.pdf

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/