On Saturday, March 23, 2013 12:16:37 PM Yinghai Lu wrote: > Found with pm/linux-next, network device in QEMU/KVM guest does not > work anymore. > > Bisected to commit c13085e5 > ACPICA: Resource Mgr: Prevent infinite loops in resource walks > > That commit will check acpi_resource length strictly. > it cause acpi_set_current_resources return failure and irq for pci device > is not set properly. > > Set length for all those TYPE_END_TAG acpi_resources. > > Bisected-by: Yinghai Lu <yinghai@xxxxxxxxxx> > Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> > Cc: Mattia Dongili <malattia@xxxxxxxx> > Cc: Matthew Garrett <matthew.garrett@xxxxxxxxxx> > Cc: Adam Belay <abelay@xxxxxxx> > Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> > Cc: platform-driver-x86@xxxxxxxxxxxxxxx Applied. Thanks, Rafael > --- > drivers/acpi/pci_link.c | 1 + > drivers/platform/x86/sony-laptop.c | 3 ++- > drivers/pnp/pnpacpi/rsparser.c | 1 + > 3 files changed, 4 insertions(+), 1 deletion(-) > > Index: linux-2.6/drivers/acpi/pci_link.c > =================================================================== > --- linux-2.6.orig/drivers/acpi/pci_link.c > +++ linux-2.6/drivers/acpi/pci_link.c > @@ -354,6 +354,7 @@ static int acpi_pci_link_set(struct acpi > > } > resource->end.type = ACPI_RESOURCE_TYPE_END_TAG; > + resource->end.length = sizeof(struct acpi_resource); > > /* Attempt to set the resource */ > status = acpi_set_current_resources(link->device->handle, &buffer); > Index: linux-2.6/drivers/platform/x86/sony-laptop.c > =================================================================== > --- linux-2.6.orig/drivers/platform/x86/sony-laptop.c > +++ linux-2.6/drivers/platform/x86/sony-laptop.c > @@ -4121,7 +4121,7 @@ static int sony_pic_enable(struct acpi_d > resource->res3.data.irq.sharable = ACPI_SHARED; > > resource->res4.type = ACPI_RESOURCE_TYPE_END_TAG; > - > + resource->res4.length = sizeof(struct acpi_resource); > } > /* setup Type 2/3 resources */ > else { > @@ -4140,6 +4140,7 @@ static int sony_pic_enable(struct acpi_d > resource->res2.data.irq.sharable = ACPI_SHARED; > > resource->res3.type = ACPI_RESOURCE_TYPE_END_TAG; > + resource->res3.length = sizeof(struct acpi_resource); > } > > /* Attempt to set the resource */ > Index: linux-2.6/drivers/pnp/pnpacpi/rsparser.c > =================================================================== > --- linux-2.6.orig/drivers/pnp/pnpacpi/rsparser.c > +++ linux-2.6/drivers/pnp/pnpacpi/rsparser.c > @@ -634,6 +634,7 @@ int pnpacpi_build_resource_template(stru > } > /* resource will pointer the end resource now */ > resource->type = ACPI_RESOURCE_TYPE_END_TAG; > + resource->length = sizeof(struct acpi_resource); > > return 0; > } > -- > To unsubscribe from this list: send the line "unsubscribe linux-acpi" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center. -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html