Re: [PATCH 3/3] PCI Hotplug: workaround for Thunderbolt on IntelDZ77RE-75K motherboard

From: Yinghai Lu
Date: Thu Dec 13 2012 - 15:26:06 EST


On Thu, Dec 13, 2012 at 12:08 PM, Kirill A. Shutemov
<kirill.shutemov@xxxxxxxxxxxxxxx> wrote:
> On Thu, Dec 13, 2012 at 10:48:20AM -0800, Greg KH wrote:
>> On Thu, Dec 13, 2012 at 05:31:48PM +0200, Kirill A. Shutemov wrote:
>> > From: "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx>
>> >
>> > BIOS on Intel DZ77RE-75K motherboard notifies OS about Thunderbolt
>> > hotplug before devices behind Thunderbolt are ready to be enumerated.
>> >
>> > Let's delay enumeration by 2 seconds.
>> >
>> > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
>> > ---
>> > drivers/pci/hotplug/acpiphp_glue.c | 16 +++++++++++++++-
>> > 1 file changed, 15 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
>> > index 1a2b3ca..165987a 100644
>> > --- a/drivers/pci/hotplug/acpiphp_glue.c
>> > +++ b/drivers/pci/hotplug/acpiphp_glue.c
>> > @@ -49,6 +49,7 @@
>> > #include <linux/mutex.h>
>> > #include <linux/slab.h>
>> > #include <linux/acpi.h>
>> > +#include <linux/dmi.h>
>> >
>> > #include "../pci.h"
>> > #include "acpiphp.h"
>> > @@ -1327,6 +1328,19 @@ out:
>> > static void handle_hotplug_event_bridge(acpi_handle handle, u32 type,
>> > void *context)
>> > {
>> > + unsigned long delay = 0;
>> > + const char *board_name;
>> > +
>> > + board_name = dmi_get_system_info(DMI_BOARD_NAME);
>> > + /*
>> > + * BIOS on Intel DZ77RE-75K motherboard notifies OS about Thunderbolt
>> > + * hotplug before devices behind Thunderbolt are ready to be
>> > + * enumerated.
>> > + * Let's delay enumeration by 2 seconds.
>> > + */
>> > + if (board_name && !strcmp(board_name, "DZ77RE-75K"))
>> > + delay = 2 * HZ;
>>

Linus will not be happy with those kind of delay.

is there any way for kernel to retry before device is declared not there.

pcie hotplug spec: need to retry several times in 1000ms before
delcaring the devices is not present.

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=2f5d8e4ff947ad6673397083b48719cd6c59cd61
--
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/