i2o: Fix I/O space alignment requirement
authorBjorn Helgaas <bhelgaas@google.com>
Wed, 26 Feb 2014 18:25:57 +0000 (11:25 -0700)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 26 Feb 2014 18:56:09 +0000 (11:56 -0700)
When i2o_iop_systab_set() allocates I/O port space, it specifies 1Mb
alignment required.  This seems unlikely, since most platforms have only
64Kb of I/O space total.  I think 4Kb is a more reasonable choice, since
that's the minimum alignment of a PCI-PCI bridge I/O window.

My guess is that this is a copy/paste error from the memory allocation
code, which specifies 1Mb alignment (which is the minimum alignment of a
PCI-PCI bridge memory window).

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/message/i2o/iop.c

index a8373d7aaef7423f3560b3c051b190fa5795d5c0..68aef58bf89cf0124cf561847a2ff7357cffacf3 100644 (file)
@@ -700,7 +700,7 @@ static int i2o_iop_systab_set(struct i2o_controller *c)
                root = pci_find_parent_resource(c->pdev, res);
                if (root == NULL)
                        osm_warn("%s: Can't find parent resource!\n", c->name);
-               if (root && allocate_resource(root, res, sb->desired_io_size, sb->desired_io_size, sb->desired_io_size, 1 << 20,        /* Unspecified, so use 1Mb and play safe */
+               if (root && allocate_resource(root, res, sb->desired_io_size, sb->desired_io_size, sb->desired_io_size, 1 << 12,        /* Unspecified, so use 4Kb and play safe */
                                              NULL, NULL) >= 0) {
                        c->io_alloc = 1;
                        sb->current_io_size = resource_size(res);