Re: [PATCH v1 2/4] PCI: Mark invalid BARs as unassigned

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[+cc Rafael, Jiang]

On Wed, Apr 15, 2015 at 09:27:41AM -0700, Tony Luck wrote:
> > +       /* ACPI_RESOURCE_TYPE_IRQ etc. */
> > +       printk("host bridge resource %02d length %#02x\n", res->type,
> > +              res->length);
> > +       print_hex_dump(KERN_INFO, "  : ", DUMP_PREFIX_OFFSET, 16, 1,
> > +                      &res->data, res->length, 0);
> > +
> 
> Patch applied to the tree with the offending commit reverted. Serial
> log attached,

Thanks.  Your log shows several descriptors that we currently ignore
because their Producer/Consumer bits are set to "Consumer".   Here's one
that contains the MMIO area used by these igb and mptsas devices:

  host bridge resource 12 length 0x38       ACPI_RESOURCE_TYPE_ADDRESS32
    : 00000000: 00 01 00 01 01 01 00 00 00 00 00 00 00 00 00 00
    : 00000010: 00 00 00 a0 ff ff ff ef 00 00 00 00 00 00 00 50
    : 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    : 00000030: 0d 00 00 00 50 00 00 00
  [mem 0xa0000000-0xefffffff]

I think we're about to conclude that the Producer/Consumer bit is useless
and should be ignored.

Can you drop the previous debug patch and try this one?


diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 48cc65705db4..cd96ddc2bc6c 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -240,15 +240,12 @@ static acpi_status resource_to_window(struct acpi_resource *resource,
 	 * We're only interested in _CRS descriptors that are
 	 *	- address space descriptors for memory or I/O space
 	 *	- non-zero size
-	 *	- producers, i.e., the address space is routed downstream,
-	 *	  not consumed by the bridge itself
 	 */
 	status = acpi_resource_to_address64(resource, addr);
 	if (ACPI_SUCCESS(status) &&
 	    (addr->resource_type == ACPI_MEMORY_RANGE ||
 	     addr->resource_type == ACPI_IO_RANGE) &&
-	    addr->address.address_length &&
-	    addr->producer_consumer == ACPI_PRODUCER)
+	    addr->address.address_length)
 		return AE_OK;
 
 	return AE_ERROR;
@@ -276,6 +273,12 @@ static acpi_status add_window(struct acpi_resource *res, void *data)
 	unsigned long flags, offset = 0;
 	struct resource *root;
 
+	/* ACPI_RESOURCE_TYPE_IRQ etc. */
+	printk("host bridge resource %02d length %#02x\n", res->type,
+	       res->length);
+	print_hex_dump(KERN_INFO, "  : ", DUMP_PREFIX_OFFSET, 16, 1,
+		       &res->data, res->length, 0);
+
 	/* Return AE_OK for non-window resources to keep scanning for more */
 	status = resource_to_window(res, &addr);
 	if (!ACPI_SUCCESS(status))
diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
index 5589a6e2a023..ae5534a6bce7 100644
--- a/drivers/acpi/resource.c
+++ b/drivers/acpi/resource.c
@@ -483,6 +483,11 @@ static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
 	struct resource *res = &win.res;
 	int i;
 
+	printk("process resource %02d length %#02x\n", ares->type,
+	       ares->length);
+	print_hex_dump(KERN_INFO, "  : ", DUMP_PREFIX_OFFSET, 16, 1,
+		       &ares->data, ares->length, 0);
+
 	if (c->preproc) {
 		int ret;
 
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux