lkml.org 
[lkml]   [2009]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: fixing "pci=use_crs"
    Date
    On Wednesday 23 September 2009 05:23:30 pm Bjorn Helgaas wrote:
    > Would you mind trying the attached debug patch to try to confirm this?

    Let me refine this patch a little before you try it out. For
    one thing, it applies on top of a bunch of patches in my queue,
    so it won't apply directly for you.

    > diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
    > index 1014eb4..7c817f8 100644
    > --- a/arch/x86/pci/acpi.c
    > +++ b/arch/x86/pci/acpi.c
    > @@ -7,6 +7,7 @@
    > #include <asm/pci_x86.h>
    >
    > struct pci_root_info {
    > + struct acpi_device *device;
    > char *name;
    > unsigned int res_num;
    > struct resource *res;
    > @@ -77,6 +78,10 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
    > if (!ACPI_SUCCESS(status))
    > return AE_OK;
    >
    > + dev_info(&info->device->dev, "res %d addr %d min %#llx len %#llx tra %#llx\n",
    > + acpi_res->type,
    > + addr.resource_type, addr.minimum, addr.address_length,
    > + addr.translation_offset);
    > if (addr.resource_type == ACPI_MEMORY_RANGE) {
    > root = &iomem_resource;
    > flags = IORESOURCE_MEM;
    > @@ -117,6 +122,8 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
    > return AE_OK;
    > }
    >
    > +#define STRUCT_TO_INT(s) (*((int*)&s))
    > +
    > static void
    > get_current_resources(struct acpi_device *device, int busnum,
    > int domain, struct pci_bus *bus)
    > @@ -124,6 +131,10 @@ get_current_resources(struct acpi_device *device, int busnum,
    > struct pci_root_info info;
    > size_t size;
    >
    > + dev_info(&device->dev, "getting resources (status 0x%x)\n",
    > + STRUCT_TO_INT(device->status));
    > +
    > + info.device = device;
    > info.bus = bus;
    > info.res_num = 0;
    > acpi_walk_resources(device->handle, METHOD_NAME__CRS, count_resource,
    > diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
    > index 31b961c..78a5fd6 100644
    > --- a/drivers/acpi/pci_root.c
    > +++ b/drivers/acpi/pci_root.c
    > @@ -461,6 +461,7 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
    > acpi_handle handle;
    > struct acpi_device *child;
    > u32 flags, base_flags;
    > + struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
    >
    > segment = 0;
    > status = acpi_evaluate_integer(device->handle, METHOD_NAME__SEG, NULL,
    > @@ -508,9 +509,11 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
    > /* TBD: Locking */
    > list_add_tail(&root->node, &acpi_pci_roots);
    >
    > + acpi_get_name(device->handle, ACPI_FULL_PATHNAME, &buffer);
    > printk(KERN_INFO PREFIX "%s [%s] (%04x:%02x)\n",
    > - acpi_device_name(device), acpi_device_bid(device),
    > + acpi_device_name(device), (char *) buffer.pointer,
    > root->segment, root->bus_nr);
    > + kfree(buffer.pointer);
    >
    > /*
    > * Scan the Root Bridge
    > diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
    > index 83b8b5a..3a0a93b 100644
    > --- a/drivers/pnp/pnpacpi/core.c
    > +++ b/drivers/pnp/pnpacpi/core.c
    > @@ -154,6 +154,7 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
    > acpi_status status;
    > struct pnp_dev *dev;
    > struct acpi_hardware_id *id;
    > + struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
    >
    > /*
    > * If a PnPacpi device is not present , the device
    > @@ -205,7 +206,11 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
    > /* clear out the damaged flags */
    > if (!dev->active)
    > pnp_init_resources(dev);
    > +
    > + acpi_get_name(temp, ACPI_FULL_PATHNAME, &buffer);
    > + pnp_dbg(&dev->dev, "pnp device for [%s]\n", (char *) buffer.pointer);
    > pnp_add_device(dev);
    > + kfree(buffer.pointer);
    > num++;
    >
    > return AE_OK;
    >




    \
     
     \ /
      Last update: 2009-09-24 17:31    [W:0.028 / U:61.464 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site