Message ID | 1343907741-20589-3-git-send-email-B38951@freescale.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Aug 2, 2012, at 6:42 AM, Jia Hongtao wrote: > Remove the dependency on PCI initialization for SWIOTLB initialization. > So that PCI can be initialized at proper time. > > SWIOTLB is partly determined by PCI inbound/outbound map which is assigned > in PCI initialization. But swiotlb_init() should be done at the stage of > mem_init() which is much earlier than PCI initialization. So we reserve the > memory for SWIOTLB first and free it if not necessary. > > All boards are converted to fit this change. > > Signed-off-by: Jia Hongtao <B38951@freescale.com> > Signed-off-by: Li Yang <leoli@freescale.com> > --- This doesn't seem like it addresses our issue w/regards to not being able to map all of memory from PCI. > arch/powerpc/include/asm/swiotlb.h | 6 ++++++ > arch/powerpc/kernel/dma-swiotlb.c | 20 ++++++++++++++++++++ > arch/powerpc/mm/mem.c | 3 +-- > arch/powerpc/platforms/44x/currituck.c | 10 ++-------- > arch/powerpc/platforms/85xx/mpc85xx_ds.c | 1 + > arch/powerpc/platforms/85xx/qemu_e500.c | 2 +- > arch/powerpc/sysdev/fsl_pci.c | 5 +---- > 7 files changed, 32 insertions(+), 15 deletions(-) Don't we also want to update all these: arch/powerpc/platforms/85xx/corenet_ds.c: ppc_swiotlb_enable = 1; arch/powerpc/platforms/85xx/ge_imp3a.c: ppc_swiotlb_enable = 1; arch/powerpc/platforms/85xx/mpc8536_ds.c: ppc_swiotlb_enable = 1; arch/powerpc/platforms/85xx/mpc85xx_mds.c: ppc_swiotlb_enable = 1; arch/powerpc/platforms/85xx/p1022_ds.c: ppc_swiotlb_enable = 1; arch/powerpc/platforms/86xx/mpc86xx_hpcn.c: ppc_swiotlb_enable = 1; > > diff --git a/arch/powerpc/include/asm/swiotlb.h b/arch/powerpc/include/asm/swiotlb.h > index 8979d4c..de99d6e 100644 > --- a/arch/powerpc/include/asm/swiotlb.h > +++ b/arch/powerpc/include/asm/swiotlb.h > @@ -22,4 +22,10 @@ int __init swiotlb_setup_bus_notifier(void); > > extern void pci_dma_dev_setup_swiotlb(struct pci_dev *pdev); > > +#ifdef CONFIG_SWIOTLB > +void swiotlb_detect_4g(void); > +#else > +static inline void swiotlb_detect_4g(void) {} > +#endif > + > #endif /* __ASM_SWIOTLB_H */ > diff --git a/arch/powerpc/kernel/dma-swiotlb.c b/arch/powerpc/kernel/dma-swiotlb.c > index 4ab88da..aa85550 100644 > --- a/arch/powerpc/kernel/dma-swiotlb.c > +++ b/arch/powerpc/kernel/dma-swiotlb.c > @@ -104,3 +104,23 @@ int __init swiotlb_setup_bus_notifier(void) > &ppc_swiotlb_plat_bus_notifier); > return 0; > } > + > +void swiotlb_detect_4g(void) > +{ > + if ((memblock_end_of_DRAM() - 1) > 0xffffffff) > + ppc_swiotlb_enable = 1; > +} > + > +static int __init swiotlb_late_init(void) > +{ > + if (ppc_swiotlb_enable) { > + swiotlb_print_info(); > + set_pci_dma_ops(&swiotlb_dma_ops); > + ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; > + } else { > + swiotlb_free(); > + } > + > + return 0; > +} > +subsys_initcall(swiotlb_late_init); > diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c > index baaafde..f23c4e0 100644 > --- a/arch/powerpc/mm/mem.c > +++ b/arch/powerpc/mm/mem.c > @@ -300,8 +300,7 @@ void __init mem_init(void) > unsigned long reservedpages = 0, codesize, initsize, datasize, bsssize; > > #ifdef CONFIG_SWIOTLB > - if (ppc_swiotlb_enable) > - swiotlb_init(1); > + swiotlb_init(0); > #endif > > num_physpages = memblock_phys_mem_size() >> PAGE_SHIFT; > diff --git a/arch/powerpc/platforms/44x/currituck.c b/arch/powerpc/platforms/44x/currituck.c > index 9f6c33d..6bd89a0 100644 > --- a/arch/powerpc/platforms/44x/currituck.c > +++ b/arch/powerpc/platforms/44x/currituck.c > @@ -21,7 +21,6 @@ > */ > > #include <linux/init.h> > -#include <linux/memblock.h> > #include <linux/of.h> > #include <linux/of_platform.h> > #include <linux/rtc.h> > @@ -159,13 +158,8 @@ static void __init ppc47x_setup_arch(void) > > /* No need to check the DMA config as we /know/ our windows are all of > * RAM. Lets hope that doesn't change */ > -#ifdef CONFIG_SWIOTLB > - if ((memblock_end_of_DRAM() - 1) > 0xffffffff) { > - ppc_swiotlb_enable = 1; > - set_pci_dma_ops(&swiotlb_dma_ops); > - ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; > - } > -#endif > + swiotlb_detect_4g(); > + > ppc47x_smp_init(); > } > > diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c > index 6d3265f..56f8c8f 100644 > --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c > +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c > @@ -159,6 +159,7 @@ static void __init mpc85xx_ds_setup_arch(void) > if (ppc_md.progress) > ppc_md.progress("mpc85xx_ds_setup_arch()", 0); > > + swiotlb_detect_4g(); > mpc85xx_ds_pci_init(); > mpc85xx_smp_init(); > > diff --git a/arch/powerpc/platforms/85xx/qemu_e500.c b/arch/powerpc/platforms/85xx/qemu_e500.c > index 95a2e53..04260cd 100644 > --- a/arch/powerpc/platforms/85xx/qemu_e500.c > +++ b/arch/powerpc/platforms/85xx/qemu_e500.c > @@ -41,7 +41,7 @@ static void __init qemu_e500_setup_arch(void) > { > ppc_md.progress("qemu_e500_setup_arch()", 0); > > - fsl_pci_init(); > + swiotlb_detect_4g(); removing fsl_pci_init() seems wrong. > mpc85xx_smp_init(); > } > > diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c > index 6938792..da7a3d7 100644 > --- a/arch/powerpc/sysdev/fsl_pci.c > +++ b/arch/powerpc/sysdev/fsl_pci.c > @@ -872,11 +872,8 @@ void __devinit fsl_pci_init(void) > * we need SWIOTLB to handle buffers located outside of > * dma capable memory region > */ > - if (memblock_end_of_DRAM() - 1 > max) { > + if (memblock_end_of_DRAM() - 1 > max) > ppc_swiotlb_enable = 1; > - set_pci_dma_ops(&swiotlb_dma_ops); > - ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; > - } > #endif > } > #endif > -- > 1.7.5.1 >
> -----Original Message----- > From: Kumar Gala [mailto:galak@kernel.crashing.org] > Sent: Thursday, August 02, 2012 8:55 PM > To: Jia Hongtao-B38951 > Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472 > Subject: Re: [PATCH V4 2/3] powerpc/swiotlb: Enable at early stage and > disable if not necessary > > > On Aug 2, 2012, at 6:42 AM, Jia Hongtao wrote: > > > Remove the dependency on PCI initialization for SWIOTLB initialization. > > So that PCI can be initialized at proper time. > > > > SWIOTLB is partly determined by PCI inbound/outbound map which is > assigned > > in PCI initialization. But swiotlb_init() should be done at the stage > of > > mem_init() which is much earlier than PCI initialization. So we reserve > the > > memory for SWIOTLB first and free it if not necessary. > > > > All boards are converted to fit this change. > > > > Signed-off-by: Jia Hongtao <B38951@freescale.com> > > Signed-off-by: Li Yang <leoli@freescale.com> > > --- > > This doesn't seem like it addresses our issue w/regards to not being able > to map all of memory from PCI. PCI init will determine ppc_swiotlb_enable due to PCI map. swiotlb_late_init will handle all swiotlb things depend on the result of pci init. > > > > arch/powerpc/include/asm/swiotlb.h | 6 ++++++ > > arch/powerpc/kernel/dma-swiotlb.c | 20 ++++++++++++++++++++ > > arch/powerpc/mm/mem.c | 3 +-- > > arch/powerpc/platforms/44x/currituck.c | 10 ++-------- > > arch/powerpc/platforms/85xx/mpc85xx_ds.c | 1 + > > arch/powerpc/platforms/85xx/qemu_e500.c | 2 +- > > arch/powerpc/sysdev/fsl_pci.c | 5 +---- > > 7 files changed, 32 insertions(+), 15 deletions(-) > > Don't we also want to update all these: > > arch/powerpc/platforms/85xx/corenet_ds.c: > ppc_swiotlb_enable = 1; > arch/powerpc/platforms/85xx/ge_imp3a.c: ppc_swiotlb_enable = 1; > arch/powerpc/platforms/85xx/mpc8536_ds.c: > ppc_swiotlb_enable = 1; > arch/powerpc/platforms/85xx/mpc85xx_mds.c: > ppc_swiotlb_enable = 1; > arch/powerpc/platforms/85xx/p1022_ds.c: ppc_swiotlb_enable = 1; > arch/powerpc/platforms/86xx/mpc86xx_hpcn.c: > ppc_swiotlb_enable = 1; > They are works fine at this point. I will update all these boards after [PATCH 3/3] Unify pci/pcie initialization code > > > > > diff --git a/arch/powerpc/include/asm/swiotlb.h > b/arch/powerpc/include/asm/swiotlb.h > > index 8979d4c..de99d6e 100644 > > --- a/arch/powerpc/include/asm/swiotlb.h > > +++ b/arch/powerpc/include/asm/swiotlb.h > > @@ -22,4 +22,10 @@ int __init swiotlb_setup_bus_notifier(void); > > > > extern void pci_dma_dev_setup_swiotlb(struct pci_dev *pdev); > > > > +#ifdef CONFIG_SWIOTLB > > +void swiotlb_detect_4g(void); > > +#else > > +static inline void swiotlb_detect_4g(void) {} > > +#endif > > + > > #endif /* __ASM_SWIOTLB_H */ > > diff --git a/arch/powerpc/kernel/dma-swiotlb.c > b/arch/powerpc/kernel/dma-swiotlb.c > > index 4ab88da..aa85550 100644 > > --- a/arch/powerpc/kernel/dma-swiotlb.c > > +++ b/arch/powerpc/kernel/dma-swiotlb.c > > @@ -104,3 +104,23 @@ int __init swiotlb_setup_bus_notifier(void) > > &ppc_swiotlb_plat_bus_notifier); > > return 0; > > } > > + > > +void swiotlb_detect_4g(void) > > +{ > > + if ((memblock_end_of_DRAM() - 1) > 0xffffffff) > > + ppc_swiotlb_enable = 1; > > +} > > + > > +static int __init swiotlb_late_init(void) > > +{ > > + if (ppc_swiotlb_enable) { > > + swiotlb_print_info(); > > + set_pci_dma_ops(&swiotlb_dma_ops); > > + ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; > > + } else { > > + swiotlb_free(); > > + } > > + > > + return 0; > > +} > > +subsys_initcall(swiotlb_late_init); > > diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c > > index baaafde..f23c4e0 100644 > > --- a/arch/powerpc/mm/mem.c > > +++ b/arch/powerpc/mm/mem.c > > @@ -300,8 +300,7 @@ void __init mem_init(void) > > unsigned long reservedpages = 0, codesize, initsize, datasize, > bsssize; > > > > #ifdef CONFIG_SWIOTLB > > - if (ppc_swiotlb_enable) > > - swiotlb_init(1); > > + swiotlb_init(0); > > #endif > > > > num_physpages = memblock_phys_mem_size() >> PAGE_SHIFT; > > diff --git a/arch/powerpc/platforms/44x/currituck.c > b/arch/powerpc/platforms/44x/currituck.c > > index 9f6c33d..6bd89a0 100644 > > --- a/arch/powerpc/platforms/44x/currituck.c > > +++ b/arch/powerpc/platforms/44x/currituck.c > > @@ -21,7 +21,6 @@ > > */ > > > > #include <linux/init.h> > > -#include <linux/memblock.h> > > #include <linux/of.h> > > #include <linux/of_platform.h> > > #include <linux/rtc.h> > > @@ -159,13 +158,8 @@ static void __init ppc47x_setup_arch(void) > > > > /* No need to check the DMA config as we /know/ our windows are all > of > > * RAM. Lets hope that doesn't change */ > > -#ifdef CONFIG_SWIOTLB > > - if ((memblock_end_of_DRAM() - 1) > 0xffffffff) { > > - ppc_swiotlb_enable = 1; > > - set_pci_dma_ops(&swiotlb_dma_ops); > > - ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; > > - } > > -#endif > > + swiotlb_detect_4g(); > > + > > ppc47x_smp_init(); > > } > > > > diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c > b/arch/powerpc/platforms/85xx/mpc85xx_ds.c > > index 6d3265f..56f8c8f 100644 > > --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c > > +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c > > @@ -159,6 +159,7 @@ static void __init mpc85xx_ds_setup_arch(void) > > if (ppc_md.progress) > > ppc_md.progress("mpc85xx_ds_setup_arch()", 0); > > > > + swiotlb_detect_4g(); > > mpc85xx_ds_pci_init(); > > mpc85xx_smp_init(); > > > > diff --git a/arch/powerpc/platforms/85xx/qemu_e500.c > b/arch/powerpc/platforms/85xx/qemu_e500.c > > index 95a2e53..04260cd 100644 > > --- a/arch/powerpc/platforms/85xx/qemu_e500.c > > +++ b/arch/powerpc/platforms/85xx/qemu_e500.c > > @@ -41,7 +41,7 @@ static void __init qemu_e500_setup_arch(void) > > { > > ppc_md.progress("qemu_e500_setup_arch()", 0); > > > > - fsl_pci_init(); > > + swiotlb_detect_4g(); > > removing fsl_pci_init() seems wrong. You are right. I will fix this. Thanks. -Hongtao. > > > mpc85xx_smp_init(); > > } > > > > diff --git a/arch/powerpc/sysdev/fsl_pci.c > b/arch/powerpc/sysdev/fsl_pci.c > > index 6938792..da7a3d7 100644 > > --- a/arch/powerpc/sysdev/fsl_pci.c > > +++ b/arch/powerpc/sysdev/fsl_pci.c > > @@ -872,11 +872,8 @@ void __devinit fsl_pci_init(void) > > * we need SWIOTLB to handle buffers located outside of > > * dma capable memory region > > */ > > - if (memblock_end_of_DRAM() - 1 > max) { > > + if (memblock_end_of_DRAM() - 1 > max) > > ppc_swiotlb_enable = 1; > > - set_pci_dma_ops(&swiotlb_dma_ops); > > - ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; > > - } > > #endif > > } > > #endif > > -- > > 1.7.5.1 > > >
On Aug 2, 2012, at 9:21 PM, Jia Hongtao-B38951 wrote: >> >> -----Original Message----- >> From: Kumar Gala [mailto:galak@kernel.crashing.org] >> Sent: Thursday, August 02, 2012 8:55 PM >> To: Jia Hongtao-B38951 >> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472 >> Subject: Re: [PATCH V4 2/3] powerpc/swiotlb: Enable at early stage and >> disable if not necessary >> >> >> On Aug 2, 2012, at 6:42 AM, Jia Hongtao wrote: >> >>> Remove the dependency on PCI initialization for SWIOTLB initialization. >>> So that PCI can be initialized at proper time. >>> >>> SWIOTLB is partly determined by PCI inbound/outbound map which is >> assigned >>> in PCI initialization. But swiotlb_init() should be done at the stage >> of >>> mem_init() which is much earlier than PCI initialization. So we reserve >> the >>> memory for SWIOTLB first and free it if not necessary. >>> >>> All boards are converted to fit this change. >>> >>> Signed-off-by: Jia Hongtao <B38951@freescale.com> >>> Signed-off-by: Li Yang <leoli@freescale.com> >>> --- >> >> This doesn't seem like it addresses our issue w/regards to not being able >> to map all of memory from PCI. > > PCI init will determine ppc_swiotlb_enable due to PCI map. swiotlb_late_init > will handle all swiotlb things depend on the result of pci init. Think about the case that we have 4095M of memory & 1G of PCI memory mapped space. The old code would enable swiotlb for this case since we would NOT be able to DMA to all 4095M of memory. The patch does not handle this case correctly. - k
On Fri, Aug 3, 2012 at 8:38 PM, Kumar Gala <galak@kernel.crashing.org> wrote: > > On Aug 2, 2012, at 9:21 PM, Jia Hongtao-B38951 wrote: > >>> >>> -----Original Message----- >>> From: Kumar Gala [mailto:galak@kernel.crashing.org] >>> Sent: Thursday, August 02, 2012 8:55 PM >>> To: Jia Hongtao-B38951 >>> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472 >>> Subject: Re: [PATCH V4 2/3] powerpc/swiotlb: Enable at early stage and >>> disable if not necessary >>> >>> >>> On Aug 2, 2012, at 6:42 AM, Jia Hongtao wrote: >>> >>>> Remove the dependency on PCI initialization for SWIOTLB initialization. >>>> So that PCI can be initialized at proper time. >>>> >>>> SWIOTLB is partly determined by PCI inbound/outbound map which is >>> assigned >>>> in PCI initialization. But swiotlb_init() should be done at the stage >>> of >>>> mem_init() which is much earlier than PCI initialization. So we reserve >>> the >>>> memory for SWIOTLB first and free it if not necessary. >>>> >>>> All boards are converted to fit this change. >>>> >>>> Signed-off-by: Jia Hongtao <B38951@freescale.com> >>>> Signed-off-by: Li Yang <leoli@freescale.com> >>>> --- >>> >>> This doesn't seem like it addresses our issue w/regards to not being able >>> to map all of memory from PCI. >> >> PCI init will determine ppc_swiotlb_enable due to PCI map. swiotlb_late_init >> will handle all swiotlb things depend on the result of pci init. > > Think about the case that we have 4095M of memory & 1G of PCI memory mapped space. The old code would enable swiotlb for this case since we would NOT be able to DMA to all 4095M of memory. The patch does not handle this case correctly. The patch can handle it. The ppc_swiotlb_enable is still being set in fsl_pci_init() if there is 1G of PCI memory mapped space. It is after next patch that the ppc_swiotlb_enable is being set in the PCI probe() routine. Leo
On Aug 3, 2012, at 9:42 AM, Li Yang wrote: > On Fri, Aug 3, 2012 at 8:38 PM, Kumar Gala <galak@kernel.crashing.org> wrote: >> >> On Aug 2, 2012, at 9:21 PM, Jia Hongtao-B38951 wrote: >> >>>> >>>> -----Original Message----- >>>> From: Kumar Gala [mailto:galak@kernel.crashing.org] >>>> Sent: Thursday, August 02, 2012 8:55 PM >>>> To: Jia Hongtao-B38951 >>>> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472 >>>> Subject: Re: [PATCH V4 2/3] powerpc/swiotlb: Enable at early stage and >>>> disable if not necessary >>>> >>>> >>>> On Aug 2, 2012, at 6:42 AM, Jia Hongtao wrote: >>>> >>>>> Remove the dependency on PCI initialization for SWIOTLB initialization. >>>>> So that PCI can be initialized at proper time. >>>>> >>>>> SWIOTLB is partly determined by PCI inbound/outbound map which is >>>> assigned >>>>> in PCI initialization. But swiotlb_init() should be done at the stage >>>> of >>>>> mem_init() which is much earlier than PCI initialization. So we reserve >>>> the >>>>> memory for SWIOTLB first and free it if not necessary. >>>>> >>>>> All boards are converted to fit this change. >>>>> >>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com> >>>>> Signed-off-by: Li Yang <leoli@freescale.com> >>>>> --- >>>> >>>> This doesn't seem like it addresses our issue w/regards to not being able >>>> to map all of memory from PCI. >>> >>> PCI init will determine ppc_swiotlb_enable due to PCI map. swiotlb_late_init >>> will handle all swiotlb things depend on the result of pci init. >> >> Think about the case that we have 4095M of memory & 1G of PCI memory mapped space. The old code would enable swiotlb for this case since we would NOT be able to DMA to all 4095M of memory. The patch does not handle this case correctly. > > The patch can handle it. The ppc_swiotlb_enable is still being set in > fsl_pci_init() if there is 1G of PCI memory mapped space. It is > after next patch that the ppc_swiotlb_enable is being set in the PCI > probe() routine. > > Leo Gotcha. I was thinking the swiotlb_init(0) was: if (ppc_swiotlb_enable) swiotlb_init(0) Now I see, we call it unconditionally, than fixup in swiotlb_late_init - k
diff --git a/arch/powerpc/include/asm/swiotlb.h b/arch/powerpc/include/asm/swiotlb.h index 8979d4c..de99d6e 100644 --- a/arch/powerpc/include/asm/swiotlb.h +++ b/arch/powerpc/include/asm/swiotlb.h @@ -22,4 +22,10 @@ int __init swiotlb_setup_bus_notifier(void); extern void pci_dma_dev_setup_swiotlb(struct pci_dev *pdev); +#ifdef CONFIG_SWIOTLB +void swiotlb_detect_4g(void); +#else +static inline void swiotlb_detect_4g(void) {} +#endif + #endif /* __ASM_SWIOTLB_H */ diff --git a/arch/powerpc/kernel/dma-swiotlb.c b/arch/powerpc/kernel/dma-swiotlb.c index 4ab88da..aa85550 100644 --- a/arch/powerpc/kernel/dma-swiotlb.c +++ b/arch/powerpc/kernel/dma-swiotlb.c @@ -104,3 +104,23 @@ int __init swiotlb_setup_bus_notifier(void) &ppc_swiotlb_plat_bus_notifier); return 0; } + +void swiotlb_detect_4g(void) +{ + if ((memblock_end_of_DRAM() - 1) > 0xffffffff) + ppc_swiotlb_enable = 1; +} + +static int __init swiotlb_late_init(void) +{ + if (ppc_swiotlb_enable) { + swiotlb_print_info(); + set_pci_dma_ops(&swiotlb_dma_ops); + ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; + } else { + swiotlb_free(); + } + + return 0; +} +subsys_initcall(swiotlb_late_init); diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index baaafde..f23c4e0 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -300,8 +300,7 @@ void __init mem_init(void) unsigned long reservedpages = 0, codesize, initsize, datasize, bsssize; #ifdef CONFIG_SWIOTLB - if (ppc_swiotlb_enable) - swiotlb_init(1); + swiotlb_init(0); #endif num_physpages = memblock_phys_mem_size() >> PAGE_SHIFT; diff --git a/arch/powerpc/platforms/44x/currituck.c b/arch/powerpc/platforms/44x/currituck.c index 9f6c33d..6bd89a0 100644 --- a/arch/powerpc/platforms/44x/currituck.c +++ b/arch/powerpc/platforms/44x/currituck.c @@ -21,7 +21,6 @@ */ #include <linux/init.h> -#include <linux/memblock.h> #include <linux/of.h> #include <linux/of_platform.h> #include <linux/rtc.h> @@ -159,13 +158,8 @@ static void __init ppc47x_setup_arch(void) /* No need to check the DMA config as we /know/ our windows are all of * RAM. Lets hope that doesn't change */ -#ifdef CONFIG_SWIOTLB - if ((memblock_end_of_DRAM() - 1) > 0xffffffff) { - ppc_swiotlb_enable = 1; - set_pci_dma_ops(&swiotlb_dma_ops); - ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; - } -#endif + swiotlb_detect_4g(); + ppc47x_smp_init(); } diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c index 6d3265f..56f8c8f 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c @@ -159,6 +159,7 @@ static void __init mpc85xx_ds_setup_arch(void) if (ppc_md.progress) ppc_md.progress("mpc85xx_ds_setup_arch()", 0); + swiotlb_detect_4g(); mpc85xx_ds_pci_init(); mpc85xx_smp_init(); diff --git a/arch/powerpc/platforms/85xx/qemu_e500.c b/arch/powerpc/platforms/85xx/qemu_e500.c index 95a2e53..04260cd 100644 --- a/arch/powerpc/platforms/85xx/qemu_e500.c +++ b/arch/powerpc/platforms/85xx/qemu_e500.c @@ -41,7 +41,7 @@ static void __init qemu_e500_setup_arch(void) { ppc_md.progress("qemu_e500_setup_arch()", 0); - fsl_pci_init(); + swiotlb_detect_4g(); mpc85xx_smp_init(); } diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index 6938792..da7a3d7 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c @@ -872,11 +872,8 @@ void __devinit fsl_pci_init(void) * we need SWIOTLB to handle buffers located outside of * dma capable memory region */ - if (memblock_end_of_DRAM() - 1 > max) { + if (memblock_end_of_DRAM() - 1 > max) ppc_swiotlb_enable = 1; - set_pci_dma_ops(&swiotlb_dma_ops); - ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb; - } #endif } #endif