diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-31 11:14:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-31 11:14:15 -0400 |
commit | f891caf28febf9d4129716e848227148654b5993 (patch) | |
tree | adf5afe6eecb0ad6c0c10d5c69b3937da675eb5e /arch/powerpc/platforms | |
parent | 1fe01cb57c6272577ebb107a03253484f6dabe7c (diff) | |
parent | 5663a1232bd557b4b2141ad345dd56785fa51c2a (diff) |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (23 commits)
Revert "powerpc: Sync RPA note in zImage with kernel's RPA note"
powerpc: Fix compile errors with CONFIG_BUG=n
powerpc: Fix format string warning in arch/powerpc/boot/main.c
powerpc: Fix bug in kernel copy of libfdt's fdt_subnode_offset_namelen()
powerpc: Remove duplicate DMA entry from mpc8313erdb device tree
powerpc/cell/OProfile: Fix on-stack array size in activate spu profiling function
powerpc/mpic: Fix regression caused by change of default IRQ affinity
powerpc: Update remaining dma_mapping_ops to use map/unmap_page
powerpc/pci: Fix unmapping of IO space on 64-bit
powerpc/pci: Properly allocate bus resources for hotplug PHBs
OF-device: Don't overwrite numa_node in device registration
powerpc: Fix swapcontext system for VSX + old ucontext size
powerpc: Fix compiler warning for the relocatable kernel
powerpc: Work around ld bug in older binutils
powerpc/ppc64/kdump: Better flag for running relocatable
powerpc: Use is_kdump_kernel()
powerpc: Kexec exit should not use magic numbers
powerpc/44x: Update 44x defconfigs
powerpc/40x: Update 40x defconfigs
powerpc: enable heap randomization for linkstations
...
Diffstat (limited to 'arch/powerpc/platforms')
-rw-r--r-- | arch/powerpc/platforms/40x/Kconfig | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/85xx/mpc85xx_ds.c | 3 | ||||
-rw-r--r-- | arch/powerpc/platforms/86xx/pic.c | 3 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/iommu.c | 37 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/ras.c | 6 | ||||
-rw-r--r-- | arch/powerpc/platforms/embedded6xx/linkstation.c | 14 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/iommu.c | 7 | ||||
-rw-r--r-- | arch/powerpc/platforms/ps3/system-bus.c | 36 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/iommu.c | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/pci_dlpar.c | 2 |
10 files changed, 67 insertions, 47 deletions
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig index 65730275e012..14e027f5be66 100644 --- a/arch/powerpc/platforms/40x/Kconfig +++ b/arch/powerpc/platforms/40x/Kconfig | |||
@@ -35,7 +35,7 @@ config EP405 | |||
35 | config HCU4 | 35 | config HCU4 |
36 | bool "Hcu4" | 36 | bool "Hcu4" |
37 | depends on 40x | 37 | depends on 40x |
38 | default y | 38 | default n |
39 | select 405GPR | 39 | select 405GPR |
40 | help | 40 | help |
41 | This option enables support for the Nestal Maschinen HCU4 board. | 41 | This option enables support for the Nestal Maschinen HCU4 board. |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c index 483b65cbabae..613bf8c2e30d 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c | |||
@@ -78,7 +78,8 @@ void __init mpc85xx_ds_pic_init(void) | |||
78 | 78 | ||
79 | mpic = mpic_alloc(np, r.start, | 79 | mpic = mpic_alloc(np, r.start, |
80 | MPIC_PRIMARY | MPIC_WANTS_RESET | | 80 | MPIC_PRIMARY | MPIC_WANTS_RESET | |
81 | MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS, | 81 | MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS | |
82 | MPIC_SINGLE_DEST_CPU, | ||
82 | 0, 256, " OpenPIC "); | 83 | 0, 256, " OpenPIC "); |
83 | BUG_ON(mpic == NULL); | 84 | BUG_ON(mpic == NULL); |
84 | of_node_put(np); | 85 | of_node_put(np); |
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c index 8881c5de500d..668275d9e668 100644 --- a/arch/powerpc/platforms/86xx/pic.c +++ b/arch/powerpc/platforms/86xx/pic.c | |||
@@ -44,7 +44,8 @@ void __init mpc86xx_init_irq(void) | |||
44 | 44 | ||
45 | mpic = mpic_alloc(np, res.start, | 45 | mpic = mpic_alloc(np, res.start, |
46 | MPIC_PRIMARY | MPIC_WANTS_RESET | | 46 | MPIC_PRIMARY | MPIC_WANTS_RESET | |
47 | MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS, | 47 | MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS | |
48 | MPIC_SINGLE_DEST_CPU, | ||
48 | 0, 256, " MPIC "); | 49 | 0, 256, " MPIC "); |
49 | of_node_put(np); | 50 | of_node_put(np); |
50 | BUG_ON(mpic == NULL); | 51 | BUG_ON(mpic == NULL); |
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c index ef92e7146215..3168272ab0d7 100644 --- a/arch/powerpc/platforms/cell/iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
@@ -593,31 +593,30 @@ static void dma_fixed_free_coherent(struct device *dev, size_t size, | |||
593 | dma_direct_ops.free_coherent(dev, size, vaddr, dma_handle); | 593 | dma_direct_ops.free_coherent(dev, size, vaddr, dma_handle); |
594 | } | 594 | } |
595 | 595 | ||
596 | static dma_addr_t dma_fixed_map_single(struct device *dev, void *ptr, | 596 | static dma_addr_t dma_fixed_map_page(struct device *dev, struct page *page, |
597 | size_t size, | 597 | unsigned long offset, size_t size, |
598 | enum dma_data_direction direction, | 598 | enum dma_data_direction direction, |
599 | struct dma_attrs *attrs) | 599 | struct dma_attrs *attrs) |
600 | { | 600 | { |
601 | if (iommu_fixed_is_weak == dma_get_attr(DMA_ATTR_WEAK_ORDERING, attrs)) | 601 | if (iommu_fixed_is_weak == dma_get_attr(DMA_ATTR_WEAK_ORDERING, attrs)) |
602 | return dma_direct_ops.map_single(dev, ptr, size, direction, | 602 | return dma_direct_ops.map_page(dev, page, offset, size, |
603 | attrs); | 603 | direction, attrs); |
604 | else | 604 | else |
605 | return iommu_map_single(dev, cell_get_iommu_table(dev), ptr, | 605 | return iommu_map_page(dev, cell_get_iommu_table(dev), page, |
606 | size, device_to_mask(dev), direction, | 606 | offset, size, device_to_mask(dev), |
607 | attrs); | 607 | direction, attrs); |
608 | } | 608 | } |
609 | 609 | ||
610 | static void dma_fixed_unmap_single(struct device *dev, dma_addr_t dma_addr, | 610 | static void dma_fixed_unmap_page(struct device *dev, dma_addr_t dma_addr, |
611 | size_t size, | 611 | size_t size, enum dma_data_direction direction, |
612 | enum dma_data_direction direction, | 612 | struct dma_attrs *attrs) |
613 | struct dma_attrs *attrs) | ||
614 | { | 613 | { |
615 | if (iommu_fixed_is_weak == dma_get_attr(DMA_ATTR_WEAK_ORDERING, attrs)) | 614 | if (iommu_fixed_is_weak == dma_get_attr(DMA_ATTR_WEAK_ORDERING, attrs)) |
616 | dma_direct_ops.unmap_single(dev, dma_addr, size, direction, | 615 | dma_direct_ops.unmap_page(dev, dma_addr, size, direction, |
617 | attrs); | 616 | attrs); |
618 | else | 617 | else |
619 | iommu_unmap_single(cell_get_iommu_table(dev), dma_addr, size, | 618 | iommu_unmap_page(cell_get_iommu_table(dev), dma_addr, size, |
620 | direction, attrs); | 619 | direction, attrs); |
621 | } | 620 | } |
622 | 621 | ||
623 | static int dma_fixed_map_sg(struct device *dev, struct scatterlist *sg, | 622 | static int dma_fixed_map_sg(struct device *dev, struct scatterlist *sg, |
@@ -652,12 +651,12 @@ static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask); | |||
652 | struct dma_mapping_ops dma_iommu_fixed_ops = { | 651 | struct dma_mapping_ops dma_iommu_fixed_ops = { |
653 | .alloc_coherent = dma_fixed_alloc_coherent, | 652 | .alloc_coherent = dma_fixed_alloc_coherent, |
654 | .free_coherent = dma_fixed_free_coherent, | 653 | .free_coherent = dma_fixed_free_coherent, |
655 | .map_single = dma_fixed_map_single, | ||
656 | .unmap_single = dma_fixed_unmap_single, | ||
657 | .map_sg = dma_fixed_map_sg, | 654 | .map_sg = dma_fixed_map_sg, |
658 | .unmap_sg = dma_fixed_unmap_sg, | 655 | .unmap_sg = dma_fixed_unmap_sg, |
659 | .dma_supported = dma_fixed_dma_supported, | 656 | .dma_supported = dma_fixed_dma_supported, |
660 | .set_dma_mask = dma_set_mask_and_switch, | 657 | .set_dma_mask = dma_set_mask_and_switch, |
658 | .map_page = dma_fixed_map_page, | ||
659 | .unmap_page = dma_fixed_unmap_page, | ||
661 | }; | 660 | }; |
662 | 661 | ||
663 | static void cell_dma_dev_setup_fixed(struct device *dev); | 662 | static void cell_dma_dev_setup_fixed(struct device *dev); |
diff --git a/arch/powerpc/platforms/cell/ras.c b/arch/powerpc/platforms/cell/ras.c index 665af1c4195b..fdf088f2430e 100644 --- a/arch/powerpc/platforms/cell/ras.c +++ b/arch/powerpc/platforms/cell/ras.c | |||
@@ -13,15 +13,15 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/smp.h> | 14 | #include <linux/smp.h> |
15 | #include <linux/reboot.h> | 15 | #include <linux/reboot.h> |
16 | #include <linux/kexec.h> | ||
17 | #include <linux/crash_dump.h> | ||
16 | 18 | ||
17 | #include <asm/reg.h> | 19 | #include <asm/reg.h> |
18 | #include <asm/io.h> | 20 | #include <asm/io.h> |
19 | #include <asm/prom.h> | 21 | #include <asm/prom.h> |
20 | #include <asm/kexec.h> | ||
21 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
22 | #include <asm/rtas.h> | 23 | #include <asm/rtas.h> |
23 | #include <asm/cell-regs.h> | 24 | #include <asm/cell-regs.h> |
24 | #include <asm/kdump.h> | ||
25 | 25 | ||
26 | #include "ras.h" | 26 | #include "ras.h" |
27 | 27 | ||
@@ -112,7 +112,7 @@ static int __init cbe_ptcal_enable_on_node(int nid, int order) | |||
112 | int ret = -ENOMEM; | 112 | int ret = -ENOMEM; |
113 | unsigned long addr; | 113 | unsigned long addr; |
114 | 114 | ||
115 | if (__kdump_flag) | 115 | if (is_kdump_kernel()) |
116 | rtas_call(ptcal_stop_tok, 1, 1, NULL, nid); | 116 | rtas_call(ptcal_stop_tok, 1, 1, NULL, nid); |
117 | 117 | ||
118 | area = kmalloc(sizeof(*area), GFP_KERNEL); | 118 | area = kmalloc(sizeof(*area), GFP_KERNEL); |
diff --git a/arch/powerpc/platforms/embedded6xx/linkstation.c b/arch/powerpc/platforms/embedded6xx/linkstation.c index eb5d74e26fe9..2ca7be65c2d2 100644 --- a/arch/powerpc/platforms/embedded6xx/linkstation.c +++ b/arch/powerpc/platforms/embedded6xx/linkstation.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/initrd.h> | 14 | #include <linux/initrd.h> |
15 | #include <linux/mtd/physmap.h> | 15 | #include <linux/mtd/physmap.h> |
16 | #include <linux/of_platform.h> | ||
16 | 17 | ||
17 | #include <asm/time.h> | 18 | #include <asm/time.h> |
18 | #include <asm/prom.h> | 19 | #include <asm/prom.h> |
@@ -54,6 +55,19 @@ static struct mtd_partition linkstation_physmap_partitions[] = { | |||
54 | }, | 55 | }, |
55 | }; | 56 | }; |
56 | 57 | ||
58 | static __initdata struct of_device_id of_bus_ids[] = { | ||
59 | { .type = "soc", }, | ||
60 | { .compatible = "simple-bus", }, | ||
61 | {}, | ||
62 | }; | ||
63 | |||
64 | static int __init declare_of_platform_devices(void) | ||
65 | { | ||
66 | of_platform_bus_probe(NULL, of_bus_ids, NULL); | ||
67 | return 0; | ||
68 | } | ||
69 | machine_device_initcall(linkstation, declare_of_platform_devices); | ||
70 | |||
57 | static int __init linkstation_add_bridge(struct device_node *dev) | 71 | static int __init linkstation_add_bridge(struct device_node *dev) |
58 | { | 72 | { |
59 | #ifdef CONFIG_PCI | 73 | #ifdef CONFIG_PCI |
diff --git a/arch/powerpc/platforms/iseries/iommu.c b/arch/powerpc/platforms/iseries/iommu.c index bb464d1211b2..bbe828f1b885 100644 --- a/arch/powerpc/platforms/iseries/iommu.c +++ b/arch/powerpc/platforms/iseries/iommu.c | |||
@@ -215,14 +215,15 @@ EXPORT_SYMBOL_GPL(iseries_hv_free); | |||
215 | dma_addr_t iseries_hv_map(void *vaddr, size_t size, | 215 | dma_addr_t iseries_hv_map(void *vaddr, size_t size, |
216 | enum dma_data_direction direction) | 216 | enum dma_data_direction direction) |
217 | { | 217 | { |
218 | return iommu_map_single(NULL, &vio_iommu_table, vaddr, size, | 218 | return iommu_map_page(NULL, &vio_iommu_table, virt_to_page(vaddr), |
219 | DMA_32BIT_MASK, direction, NULL); | 219 | (unsigned long)vaddr % PAGE_SIZE, size, |
220 | DMA_32BIT_MASK, direction, NULL); | ||
220 | } | 221 | } |
221 | 222 | ||
222 | void iseries_hv_unmap(dma_addr_t dma_handle, size_t size, | 223 | void iseries_hv_unmap(dma_addr_t dma_handle, size_t size, |
223 | enum dma_data_direction direction) | 224 | enum dma_data_direction direction) |
224 | { | 225 | { |
225 | iommu_unmap_single(&vio_iommu_table, dma_handle, size, direction, NULL); | 226 | iommu_unmap_page(&vio_iommu_table, dma_handle, size, direction, NULL); |
226 | } | 227 | } |
227 | 228 | ||
228 | void __init iommu_vio_init(void) | 229 | void __init iommu_vio_init(void) |
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c index a789bf58ca8b..661e9f77ebf6 100644 --- a/arch/powerpc/platforms/ps3/system-bus.c +++ b/arch/powerpc/platforms/ps3/system-bus.c | |||
@@ -555,18 +555,19 @@ static void ps3_free_coherent(struct device *_dev, size_t size, void *vaddr, | |||
555 | } | 555 | } |
556 | 556 | ||
557 | /* Creates TCEs for a user provided buffer. The user buffer must be | 557 | /* Creates TCEs for a user provided buffer. The user buffer must be |
558 | * contiguous real kernel storage (not vmalloc). The address of the buffer | 558 | * contiguous real kernel storage (not vmalloc). The address passed here |
559 | * passed here is the kernel (virtual) address of the buffer. The buffer | 559 | * comprises a page address and offset into that page. The dma_addr_t |
560 | * need not be page aligned, the dma_addr_t returned will point to the same | 560 | * returned will point to the same byte within the page as was passed in. |
561 | * byte within the page as vaddr. | ||
562 | */ | 561 | */ |
563 | 562 | ||
564 | static dma_addr_t ps3_sb_map_single(struct device *_dev, void *ptr, size_t size, | 563 | static dma_addr_t ps3_sb_map_page(struct device *_dev, struct page *page, |
565 | enum dma_data_direction direction, struct dma_attrs *attrs) | 564 | unsigned long offset, size_t size, enum dma_data_direction direction, |
565 | struct dma_attrs *attrs) | ||
566 | { | 566 | { |
567 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 567 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
568 | int result; | 568 | int result; |
569 | unsigned long bus_addr; | 569 | unsigned long bus_addr; |
570 | void *ptr = page_address(page) + offset; | ||
570 | 571 | ||
571 | result = ps3_dma_map(dev->d_region, (unsigned long)ptr, size, | 572 | result = ps3_dma_map(dev->d_region, (unsigned long)ptr, size, |
572 | &bus_addr, | 573 | &bus_addr, |
@@ -580,15 +581,16 @@ static dma_addr_t ps3_sb_map_single(struct device *_dev, void *ptr, size_t size, | |||
580 | return bus_addr; | 581 | return bus_addr; |
581 | } | 582 | } |
582 | 583 | ||
583 | static dma_addr_t ps3_ioc0_map_single(struct device *_dev, void *ptr, | 584 | static dma_addr_t ps3_ioc0_map_page(struct device *_dev, struct page *page, |
584 | size_t size, | 585 | unsigned long offset, size_t size, |
585 | enum dma_data_direction direction, | 586 | enum dma_data_direction direction, |
586 | struct dma_attrs *attrs) | 587 | struct dma_attrs *attrs) |
587 | { | 588 | { |
588 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 589 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
589 | int result; | 590 | int result; |
590 | unsigned long bus_addr; | 591 | unsigned long bus_addr; |
591 | u64 iopte_flag; | 592 | u64 iopte_flag; |
593 | void *ptr = page_address(page) + offset; | ||
592 | 594 | ||
593 | iopte_flag = IOPTE_M; | 595 | iopte_flag = IOPTE_M; |
594 | switch (direction) { | 596 | switch (direction) { |
@@ -615,7 +617,7 @@ static dma_addr_t ps3_ioc0_map_single(struct device *_dev, void *ptr, | |||
615 | return bus_addr; | 617 | return bus_addr; |
616 | } | 618 | } |
617 | 619 | ||
618 | static void ps3_unmap_single(struct device *_dev, dma_addr_t dma_addr, | 620 | static void ps3_unmap_page(struct device *_dev, dma_addr_t dma_addr, |
619 | size_t size, enum dma_data_direction direction, struct dma_attrs *attrs) | 621 | size_t size, enum dma_data_direction direction, struct dma_attrs *attrs) |
620 | { | 622 | { |
621 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 623 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
@@ -689,21 +691,21 @@ static int ps3_dma_supported(struct device *_dev, u64 mask) | |||
689 | static struct dma_mapping_ops ps3_sb_dma_ops = { | 691 | static struct dma_mapping_ops ps3_sb_dma_ops = { |
690 | .alloc_coherent = ps3_alloc_coherent, | 692 | .alloc_coherent = ps3_alloc_coherent, |
691 | .free_coherent = ps3_free_coherent, | 693 | .free_coherent = ps3_free_coherent, |
692 | .map_single = ps3_sb_map_single, | ||
693 | .unmap_single = ps3_unmap_single, | ||
694 | .map_sg = ps3_sb_map_sg, | 694 | .map_sg = ps3_sb_map_sg, |
695 | .unmap_sg = ps3_sb_unmap_sg, | 695 | .unmap_sg = ps3_sb_unmap_sg, |
696 | .dma_supported = ps3_dma_supported | 696 | .dma_supported = ps3_dma_supported, |
697 | .map_page = ps3_sb_map_page, | ||
698 | .unmap_page = ps3_unmap_page, | ||
697 | }; | 699 | }; |
698 | 700 | ||
699 | static struct dma_mapping_ops ps3_ioc0_dma_ops = { | 701 | static struct dma_mapping_ops ps3_ioc0_dma_ops = { |
700 | .alloc_coherent = ps3_alloc_coherent, | 702 | .alloc_coherent = ps3_alloc_coherent, |
701 | .free_coherent = ps3_free_coherent, | 703 | .free_coherent = ps3_free_coherent, |
702 | .map_single = ps3_ioc0_map_single, | ||
703 | .unmap_single = ps3_unmap_single, | ||
704 | .map_sg = ps3_ioc0_map_sg, | 704 | .map_sg = ps3_ioc0_map_sg, |
705 | .unmap_sg = ps3_ioc0_unmap_sg, | 705 | .unmap_sg = ps3_ioc0_unmap_sg, |
706 | .dma_supported = ps3_dma_supported | 706 | .dma_supported = ps3_dma_supported, |
707 | .map_page = ps3_ioc0_map_page, | ||
708 | .unmap_page = ps3_unmap_page, | ||
707 | }; | 709 | }; |
708 | 710 | ||
709 | /** | 711 | /** |
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index d56491d182d3..c90817acb472 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/string.h> | 32 | #include <linux/string.h> |
33 | #include <linux/pci.h> | 33 | #include <linux/pci.h> |
34 | #include <linux/dma-mapping.h> | 34 | #include <linux/dma-mapping.h> |
35 | #include <linux/crash_dump.h> | ||
35 | #include <asm/io.h> | 36 | #include <asm/io.h> |
36 | #include <asm/prom.h> | 37 | #include <asm/prom.h> |
37 | #include <asm/rtas.h> | 38 | #include <asm/rtas.h> |
@@ -44,7 +45,6 @@ | |||
44 | #include <asm/tce.h> | 45 | #include <asm/tce.h> |
45 | #include <asm/ppc-pci.h> | 46 | #include <asm/ppc-pci.h> |
46 | #include <asm/udbg.h> | 47 | #include <asm/udbg.h> |
47 | #include <asm/kdump.h> | ||
48 | 48 | ||
49 | #include "plpar_wrappers.h" | 49 | #include "plpar_wrappers.h" |
50 | 50 | ||
@@ -292,7 +292,7 @@ static void iommu_table_setparms(struct pci_controller *phb, | |||
292 | 292 | ||
293 | tbl->it_base = (unsigned long)__va(*basep); | 293 | tbl->it_base = (unsigned long)__va(*basep); |
294 | 294 | ||
295 | if (!__kdump_flag) | 295 | if (!is_kdump_kernel()) |
296 | memset((void *)tbl->it_base, 0, *sizep); | 296 | memset((void *)tbl->it_base, 0, *sizep); |
297 | 297 | ||
298 | tbl->it_busno = phb->bus->number; | 298 | tbl->it_busno = phb->bus->number; |
diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c index 21a6d55418f1..31481dc485de 100644 --- a/arch/powerpc/platforms/pseries/pci_dlpar.c +++ b/arch/powerpc/platforms/pseries/pci_dlpar.c | |||
@@ -189,6 +189,7 @@ struct pci_controller * __devinit init_phb_dynamic(struct device_node *dn) | |||
189 | { | 189 | { |
190 | struct pci_controller *phb; | 190 | struct pci_controller *phb; |
191 | int primary; | 191 | int primary; |
192 | struct pci_bus *b; | ||
192 | 193 | ||
193 | primary = list_empty(&hose_list); | 194 | primary = list_empty(&hose_list); |
194 | phb = pcibios_alloc_controller(dn); | 195 | phb = pcibios_alloc_controller(dn); |
@@ -203,6 +204,7 @@ struct pci_controller * __devinit init_phb_dynamic(struct device_node *dn) | |||
203 | eeh_add_device_tree_early(dn); | 204 | eeh_add_device_tree_early(dn); |
204 | 205 | ||
205 | scan_phb(phb); | 206 | scan_phb(phb); |
207 | pcibios_allocate_bus_resources(phb->bus); | ||
206 | pcibios_fixup_new_pci_devices(phb->bus); | 208 | pcibios_fixup_new_pci_devices(phb->bus); |
207 | pci_bus_add_devices(phb->bus); | 209 | pci_bus_add_devices(phb->bus); |
208 | eeh_add_device_tree_late(phb->bus); | 210 | eeh_add_device_tree_late(phb->bus); |