powerpc/pci: Fix unmapping of IO space on 64-bit
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 27 Oct 2008 19:48:47 +0000 (19:48 +0000)
committerPaul Mackerras <paulus@samba.org>
Fri, 31 Oct 2008 05:13:46 +0000 (16:13 +1100)
A typo/thinko made us pass the wrong argument to __flush_hash_table_range
when unplugging bridges, thus not flushing all the translations for
the IO space on unplug.  The third parameter to __flush_hash_table_range
is `end', not `size'.

This causes the hypervisor to refuse unplugging slots.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/pci_64.c

index 8247cff1cb3e0dc313861d041bcf7afae3c559e4..3502b9101e6baa7e924806ef6bb284a1aca604c5 100644 (file)
@@ -426,7 +426,7 @@ int pcibios_unmap_io_space(struct pci_bus *bus)
                    pci_name(bus->self));
 
                __flush_hash_table_range(&init_mm, res->start + _IO_BASE,
-                                        res->end - res->start + 1);
+                                        res->end + _IO_BASE + 1);
                return 0;
        }