[PATCH 1/1] SPI: dw_spi, fix PPC build
Currently, build on PPC dies with: In file included from drivers/spi/dw_spi_mmio.c:16: include/linux/spi/dw_spi.h:147: error: field ‘tx_sgl’ has incomplete type include/linux/spi/dw_spi.h:149: error: field ‘rx_sgl’ has incomplete type Add linux/scatterlist.h include to dw_spi.h, because we need to know the contents of the structure. Signed-off-by: Jiri Slaby Cc: David Brownell Cc: Grant Likely Cc: Benjamin Herrenschmidt Cc: Paul Mackerras --- include/linux/spi/dw_spi.h |1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/include/linux/spi/dw_spi.h b/include/linux/spi/dw_spi.h index 6cd10f6..fb0bce5 100644 --- a/include/linux/spi/dw_spi.h +++ b/include/linux/spi/dw_spi.h @@ -2,6 +2,7 @@ #define DW_SPI_HEADER_H #include +#include /* Bit fields in CTRLR0 */ #define SPI_DFS_OFFSET 0 -- 1.7.4.1 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH 1/4] powerpc/mpc512x: Add initial support for TWR-MPC5125
Hi Wolfram. I create function for select compat string and give name for registers. commit fe8895542d537567f43f99af8234e7326451197e Author: Ermakov Vladimir Date: Thu Mar 17 11:10:49 2011 +0300 Adds Freescale TWR-MPC5125 device tree and platform code. Currently following is supported: - NAND - FEC1 and FEC2 - RTC - PSC UART Signed-off-by: Vladimir Ermakov --- v2: - add PSC compat string selection - add ioctl defines diff --git a/arch/powerpc/boot/dts/mpc5125twr.dts b/arch/powerpc/boot/dts/mpc5125twr.dts new file mode 100644 index 000..54f568f --- /dev/null +++ b/arch/powerpc/boot/dts/mpc5125twr.dts @@ -0,0 +1,394 @@ +/* + * STx/Freescale ADS5125 MPC5125 silicon + * + * Copyright (C) 2009 Freescale Semiconductor Inc. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "mpc5125ads"; + compatible = "fsl,mpc5125ads"; + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + PowerPC,5125@0 { + device_type = "cpu"; + reg = <0>; + d-cache-line-size = <0x20>; // 32 bytes + i-cache-line-size = <0x20>; // 32 bytes + d-cache-size = <0x8000>;// L1, 32K + i-cache-size = <0x8000>;// L1, 32K + timebase-frequency = <4950>;// 49.5 MHz (csb/4) + bus-frequency = <19800>;// 198 MHz csb bus + clock-frequency = <39600>; // 396 MHz ppc core + }; + }; + + memory { + device_type = "memory"; + reg = <0x 0x1000>; // 256MB at 0 + }; + + sram@3000 { + compatible = "fsl,mpc5121-sram"; + reg = <0x3000 0x08000>; // 32K at 0x3000 + }; + + nfc@4000 { + compatible = "fsl,mpc5125-nfc"; + reg = <0x4000 0x10>;// 1M at 0x4000 + interrupts = <6 0x8>; + interrupt-parent = < &ipic >; + #address-cells = <1>; + #size-cells = <1>; + bank-width = <1>; + write-size = <4096>; + spare-size = <128>; + chips = <1>; + // NOTE: partition map different than in BSP + nand-spl@0 { + label = "loader"; + reg = <0x 0x0010>; + read-only; + }; + uboot@10 { + label = "uboot"; + reg = <0x0010 0x0010>; + read-only; + }; + uboot-env@20 { + label = "uboot-env"; + reg = <0x0020 0x0010>; + read-only; + }; + kernel30 { + label = "kernel"; + reg = <0x0030 0x0080>; + }; + device-tree0 { + label = "device-tree"; + reg = <0x00b0 0x0010>; + }; + ramboot-rootfs@c0 { + label = "ramboot-rootfs"; + reg = <0x00c0 0x0080>; + }; + rootfs@140 { + label = "rootfs"; + reg = <0x0140 0x0140>; + }; + user@280 { + label = "user"; + reg = <0x0280 0x0140>; + }; + SRAM@420 { + label = "SRAM"; // NVRAM emul + reg = <0x0420 0x0140>; + }; + prom@560 { + label = "prom"; + reg = <0x0560 0x0140>; + }; + //data@280 { + // label = "data"; + // reg = <0x2800 0xeac0>; + //}; + }; + + soc@8000 { + compatible = "fsl,mpc5121-immr"; + device_type = "soc"; + #address-cells = <1>; + #size-cells = <1>; + #interrupt-cells = <2>; + ranges = <0x0 0x8000 0x40>; + reg = <0x8000 0x40>; + bus-frequency = <6600>; // 66 MHz ips bus + + + // IPIC + // interrupts cell = + // sen
Re: [PATCH 1/4] powerpc/mpc512x: Add initial support for TWR-MPC5125
On Fri, Mar 18, 2011 at 02:35:24PM +0300, vooon...@gmail.com wrote: > diff --git a/arch/powerpc/platforms/512x/clock.c > b/arch/powerpc/platforms/512x/clock.c > index 3dc2a8d..5cadf8e 100644 > --- a/arch/powerpc/platforms/512x/clock.c > +++ b/arch/powerpc/platforms/512x/clock.c > @@ -606,6 +606,21 @@ static void rate_clks_init(void) > */ > struct clk dev_clks[2][32]; > > +char *mpc512x_select_psc_compat(void) > +{ > + char *psc_compats[] = { > + "fsl,mpc5121-psc", > + "fsl,mpc5125-psc" > + }; > + int i; > + > + for (i = 0; i < ARRAY_SIZE(psc_compats); i++) > + if (of_find_compatible_node(NULL, NULL, psc_compats[i])) > + return psc_compats[i]; > + > + return NULL; > +} Function looks good to me. Shouldn't that rather be in mpc512x_shared? > +// IOCTL registers for USB1/FEC2 No c++-style comments, please (here and later). > +static void mpc5125_psc_iopad_init(void __iomem *ioctl, char *name) > +{ > + struct device_node *np; > + const u32 *cell_index; > + char *default_psc = "fsl,mpc5125-psc"; > + char *psc_name; > + > + if (name) > + psc_name = name; > + else > + psc_name = default_psc; Caller sets name to NULL. Is this really used? > + > + for_each_compatible_node(np, NULL, psc_name) { > + cell_index = of_get_property(np, "cell-index", NULL); I seem to recall 'cell-index' is deprecated. Grant? > + if (cell_index) { > + u8 __iomem *pscioctl; > + int psc_num = *cell_index; > + if (psc_num > 1) > + continue; > + > + pscioctl = ioctl + PSC_TO_IOCTL_OFFSET(psc_num); > + out_8(pscioctl + IOCTL_PSCx_0, IOCTL_PSCx_0_MODE); // > NOTE maybe wrong Why is it 'maybe wrong'? Can it be improved somehow? > + out_8(pscioctl + IOCTL_PSCx_1, IOCTL_DEFAULT_MODE); > + out_8(pscioctl + IOCTL_PSCx_2, IOCTL_DEFAULT_MODE); > + out_8(pscioctl + IOCTL_PSCx_3, IOCTL_DEFAULT_MODE); > + out_8(pscioctl + IOCTL_PSCx_4, IOCTL_DEFAULT_MODE); The defines make it much more readable, thanks. > + } > + } > +} Is this function really board-specific or platform specific? > +static void mpc5125_fec2_usb_io_init(void __iomem *ioctl, int isusb) > +{ > + int i; > + const u8 offset[12] = { > + IOCTL_USB1_DATA0, IOCTL_USB1_DATA1, > + IOCTL_USB1_DATA2, IOCTL_USB1_DATA3, > + IOCTL_USB1_DATA4, IOCTL_USB1_DATA5, > + IOCTL_USB1_DATA6, IOCTL_USB1_DATA7, > + IOCTL_USB1_STOP, IOCTL_USB1_CLK, > + IOCTL_USB1_NEXT, IOCTL_USB1_DIR > + }; > + u8 mode; > + > + mode = (isusb) ? IOCTL_DEFAULT_MODE : IOCTL_FEC2_MODE; > + for (i = 0; i < ARRAY_SIZE(offset); i++) > + out_8(ioctl + offset[i], mode); > +} Same question here and later. If it is board specific, the function name should have something like 'twr' in it; but a few things seem mpc5125-generic to me, if I am not mistaken? Regards, Wolfram -- Pengutronix e.K. | Wolfram Sang| Industrial Linux Solutions | http://www.pengutronix.de/ | signature.asc Description: Digital signature ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH 2/4] serial: Add initial support for TWR-MPC5125
On Thu, Mar 17, 2011 at 02:33:47AM +0300, Vladimir Ermakov wrote: > Adds PSC UART support for MPC5125 SoC. Please resend the patches and make use of scripts/get_maintainer.pl somehow. There are a lot of mailing lists and people missing in the CC. If you haven't done yet, please also read Documentation/SubmittingPatches. Regards, Wolfram -- Pengutronix e.K. | Wolfram Sang| Industrial Linux Solutions | http://www.pengutronix.de/ | signature.asc Description: Digital signature ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [git pull] Please pull powerpc.git next branch
On Thu, Mar 17, 2011 at 10:44 PM, Benjamin Herrenschmidt wrote: > > Here are the changes for this merge window for powerpc. One highlight > is irq data conversion so we can get rid of the legacy stuff. The new > Dynamic DMA windows for pSeries should also improve performances for > some devices nicely on more recent machines/firmwares. Plus a little > pack of embedded things. Ok, I got a conflict with the of_platform_driver() removal which looked pretty trivial, but since I don't have a ppc cross-compile thing I couldn't even test-compile the end result. Please take a look to see that it went ok.. Linus ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
i2c on P2020 based boards faulty prescale selection
Hello list, A whole bunch of dts file such a p2020ds.dts, p2020rdb.dts and probably lots of other variants as well (haven't checked the manuals of the others). Claim their i2c controller to be 'fsl-i2c' If you then look in i2c/busses/i2c.mpc.c this will end up calling mpc_i2c_setup_8xxx() in fsl_i2c_probe() with a prescale value of 0 which goes to mpc_i2c_get_fdr_8xxx() here prescale gets set to one and the divider value gets calculated. The problem is that the P2020 datasheet mentions: "The serial bit clock frequency of SCL is equal to one half the platform (CCB) clock divided by the designated divider. Note that the frequency divider value can be changed at any point in a program." Implying that the factor two is not taken into account. For this to function correctly the prescale value should be set to a value two. Which could be solved by adding another mpc_i2c_data for this type or by using the mpc_i2c_data_8543 which also has a prescaler value of two. Or to define an alternative structure for the p2020 alike system. However at this point I don't know how this varies between the different px0x0 systems since I have only a p2020 at my disposal. So I would appreciate it if somebody with a broader view on this SoCs can up with a usable solution. This issue will only propagate if the dts sets the clock-frequency field for the i2c controller in question is set. gr E. -- Elie De Brauwer ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH 1/4, v3] powerpc/mpc512x: Add initial support for TWR-MPC5125
commit 3b94215206569d5c2bad20397cebfa9570c921bc Author: Ermakov Vladimir Date: Thu Mar 17 11:10:49 2011 +0300 Adds Freescale TWR-MPC5125 device tree and platform code. Currently following is supported: - NAND - FEC1 and FEC2 - RTC - PSC UART Signed-off-by: Vladimir Ermakov --- v2: - add PSC compat string selection - add ioctl defines v3: - less verbose interrupt-parent - move mpc512x_select_psc_compat() to mpc512x_shared.c - remove unneded mpc5125_psc_iopad_init() - fix board prefixes diff --git a/arch/powerpc/boot/dts/mpc5125twr.dts b/arch/powerpc/boot/dts/mpc5125twr.dts new file mode 100644 index 000..d899f92 --- /dev/null +++ b/arch/powerpc/boot/dts/mpc5125twr.dts @@ -0,0 +1,368 @@ +/* + * STx/Freescale ADS5125 MPC5125 silicon + * + * Copyright (C) 2009 Freescale Semiconductor Inc. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "mpc5125twr"; // In BSP "mpc5125ads" + compatible = "fsl,mpc5125ads"; + #address-cells = <1>; + #size-cells = <1>; + interrupt-parent = <&ipic>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + PowerPC,5125@0 { + device_type = "cpu"; + reg = <0>; + d-cache-line-size = <0x20>; // 32 bytes + i-cache-line-size = <0x20>; // 32 bytes + d-cache-size = <0x8000>;// L1, 32K + i-cache-size = <0x8000>;// L1, 32K + timebase-frequency = <4950>;// 49.5 MHz (csb/4) + bus-frequency = <19800>;// 198 MHz csb bus + clock-frequency = <39600>; // 396 MHz ppc core + }; + }; + + memory { + device_type = "memory"; + reg = <0x 0x1000>; // 256MB at 0 + }; + + sram@3000 { + compatible = "fsl,mpc5121-sram"; + reg = <0x3000 0x08000>; // 32K at 0x3000 + }; + + nfc@4000 { + compatible = "fsl,mpc5125-nfc"; + reg = <0x4000 0x10>;// 1M at 0x4000 + interrupts = <6 0x8>; + #address-cells = <1>; + #size-cells = <1>; + bank-width = <1>; + write-size = <4096>; + spare-size = <128>; + chips = <1>; + // NOTE: partition map different than in BSP + // First three is the same as in BSP, other differ. + nand-spl@0 { + label = "loader"; + reg = <0x 0x0010>; + read-only; + }; + uboot@10 { + label = "uboot"; + reg = <0x0010 0x0010>; + read-only; + }; + uboot-env@20 { + label = "uboot-env"; + reg = <0x0020 0x0010>; + read-only; + }; + kernel@30 { + label = "kernel"; + reg = <0x0030 0x0080>; + }; + device-tree@b0 { + label = "device-tree"; + reg = <0x00b0 0x0010>; + }; + ramboot-rootfs@c0 { + label = "ramboot-rootfs"; + reg = <0x00c0 0x0080>; + }; + rootfs@140 { + label = "rootfs"; + reg = <0x0140 0x0140>; + }; + user@280 { + label = "user"; + reg = <0x0280 0x0140>; + }; + SRAM@420 { + label = "SRAM"; // NVRAM emul + reg = <0x0420 0x0140>; + }; + prom@560 { + label = "prom"; + reg = <0x0560 0x0140>; + }; + //data@280 { + // label = "data"; + // reg = <0x2800 0xeac0>; + //}; + }; + + soc@8000 { + compatible = "fsl,mpc5121-immr"; + device_type = "soc"; + #address-cells = <1>; + #size-cells = <1>; + #interrupt-cells = <2>; + ranges = <0x0 0x8000 0x40>; + reg =
Re: [PATCH 1/1] SPI: dw_spi, fix PPC build
On Fri, Mar 18, 2011 at 10:41:17AM +0100, Jiri Slaby wrote: > Currently, build on PPC dies with: > In file included from drivers/spi/dw_spi_mmio.c:16: > include/linux/spi/dw_spi.h:147: error: field ‘tx_sgl’ has incomplete type > include/linux/spi/dw_spi.h:149: error: field ‘rx_sgl’ has incomplete type > > Add linux/scatterlist.h include to dw_spi.h, because we need to know > the contents of the structure. > > Signed-off-by: Jiri Slaby > Cc: David Brownell > Cc: Grant Likely > Cc: Benjamin Herrenschmidt > Cc: Paul Mackerras Applied, thanks. g. > --- > include/linux/spi/dw_spi.h |1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/include/linux/spi/dw_spi.h b/include/linux/spi/dw_spi.h > index 6cd10f6..fb0bce5 100644 > --- a/include/linux/spi/dw_spi.h > +++ b/include/linux/spi/dw_spi.h > @@ -2,6 +2,7 @@ > #define DW_SPI_HEADER_H > > #include > +#include > > /* Bit fields in CTRLR0 */ > #define SPI_DFS_OFFSET 0 > -- > 1.7.4.1 > > ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: any chance to use a modern linux kernel on Pegasos1 G3 ?
Original-Nachricht > Datum: Thu, 17 Mar 2011 00:39:00 +0100 > Von: nello martuscielli > An: Gerhard Pircher > CC: acrux...@libero.it, linuxppc-dev@lists.ozlabs.org > Betreff: Re: any chance to use a modern linux kernel on Pegasos1 G3 ? > hi all, > > here instead the log from serial debug console booting the last > working kernel i.e. linux-2.16.62 compiled with arch=ppc . > > > [...] > do_load: dev="/ide/disk:0" dlen=11 args="CRUX root=/dev/hdb > video=radeonfb:800x600" alen=41 > do_load: alstr="" > try_load: dev="/ide/disk:0" dlen=11 args="CRUX root=/dev/hdb > video=radeonfb:800x600" alen=41 > create_well_formed_chain: pkg=0xFD57D58 parent=0xFD53B90 > currpkg=0xFD53B90 inst=0xFE6EE50 > pkg=/pci@8000 parent=/ currpkg=/ currinst=/ > create_well_formed_chain: pkg=0xFD53B90 parent=0x0 currpkg=0xFD53B90 > inst=0xFE6EE50 > pkg=/ parent= currpkg=/ currinst=/ > pkg=0xFD57D58:/pci@8000 parent=0xFE6EE50:/ > inst=0xFE6EEA8:/pci@8000 instparent=0xFE6EE50 > ata_disk_open: pkg=0xFD5B870 parent=0xFD5B2C8 > ata_disk_open: CTLR=0x0 ID=0x0 > ata_disk_open: args="0" > deblocker open > ata_disk_max_transfer: 512 > deblocker open: block-size=0x200 max-transfer=0x200 > deblocker open: return 0 > open-package: ret=0:no error r=-1 > ata_disk_open: $open-package deblocker ret=0 > ata_disk_open: deblocker=0xFE6EFC8 > disk-label open > disk-label open: self=0xFE702B0 s->buf=0xFE71000 > disk-label open: return 0 > open-package: ret=0:no error r=-1 > ata_disk_open: $open-package disk-label ret=0 > ata_disk_open: disklabel=0xFE70258 > disk-label load: addr=0x40 loadargs=CRUX root=/dev/hdb > video=radeonfb:800x600 args=0,CRUX root=/dev/hdb > video=radeonfb:800x600 > file_system: e=0xFD8 disk=0xFE6EF58 loc=0x0 start=0x0 > path=0xFE703C0 buf=0xFE71000 size=512 > file_system: probing filesys dos-partition > > dos_partition: enter > dos-partition: boot_sect_sig0/1=0x55.0xAA jump=0x0 boot_signature=0x0 > drive_number=0x0 > dos_partition: partition=0 size=0x32F8E start=0x3F typ=0x6 > flag=0x80 shd=0x1 ssect=0x1 scyl=0x0 ehd=0xFE esect=0x3F ecyl=0xC > file_system: e=0xFD8 disk=0xFE6EF58 loc=0x7E00 start=0x3F > path=0xFE703C2 buf=0xFE71000 size=512 > file_system: probing filesys dos-partition > file_system: probing filesys dos-fat > file_system: return end (-4089) > file_system: return end (-4089) > disk-label return len=1782093 ret=end (-4089) > ata_disk_close > disk-label close: > checking exec type Fcode > fcode_is_exec: load=0x40 loadlen=1782093 > checking exec type Forth > checking exec type ELF > f_go: > checking exec type Fcode > fcode_is_exec: load=0x40 loadlen=1782093 > checking exec type Forth > checking exec type ELF > alloc_aligned: a 0xFD548E8 align 0xFD5491C size 0xFD54918 addr 0xFD54914 > alloc_constrained: min 0x0, max 0x, align 0x1000, mask > 0x, size 0x7E, addr 0x30 > alloc_constrained: acells 0x1 scells 0x1 t1 0xC t2 0xFD5490C u1 > 0xFD54910 u2 0xFD54914 u3 0xFD54918 > alloc_constrained: allocator_block 0xFD54930, next 0x0 addr 0x30 > size 0xFD0 > alloc_constrained: fsblock 0x0 > alloc_constrained: addr[] 0x30 > alloc_constrained: bsize[] 0xFD0 > alloc_constrained: passed min check > alloc_constrained: addr 0x30, align 0xFFF, off 0x69696969 > sum 0x0 > alloc_constrained: passed align check > alloc_constrained: passed max check > alloc_constrained: passed mask check > alloc_constrained: passed full size check > alloc_constrained: passed size check > > > i'm not an expert but from a quick logs comparison I saw two times the > alloc_aligned,alloc_constrained section instead in the working one i > see it only one time. > Maybe it's an usefull observation. Well, I never put my hands on an OpenFirmware machine, but I could imagine that this is an image loading problem. Various PPC Linux related websites suggest to set a different load base for the kernel image on Pegasos machines: setenv load-base 0x400 Does that work on the Pegasos1? BTW do you get any debug output from a recent kernel on serial port (with udbg)? regards, Gerhard -- NEU: FreePhone - kostenlos mobil telefonieren und surfen! Jetzt informieren: http://www.gmx.net/de/go/freephone ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[PATCH -mm] RapidIO,powerpc/85xx: Fix configuration option
Follows set of patches in -mm tree. Replaces configuration option missed in previous patches. Signed-off-by: Alexandre Bounine --- arch/powerpc/kernel/cpu_setup_fsl_booke.S |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/powerpc/kernel/cpu_setup_fsl_booke.S b/arch/powerpc/kernel/cpu_setup_fsl_booke.S index 5c518ad..9136111 100644 --- a/arch/powerpc/kernel/cpu_setup_fsl_booke.S +++ b/arch/powerpc/kernel/cpu_setup_fsl_booke.S @@ -64,7 +64,7 @@ _GLOBAL(__setup_cpu_e500v2) bl __e500_icache_setup bl __e500_dcache_setup bl __setup_e500_ivors -#ifdef CONFIG_RAPIDIO +#ifdef CONFIG_FSL_RIO /* Ensure that RFXE is set */ mfspr r3,SPRN_HID1 orisr3,r3,HID1_RFXE@h -- 1.7.3.1 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH 2/4] serial: Add initial support for TWR-MPC5125
On Fri, Mar 18, 2011 at 01:56:41PM +0100, Wolfram Sang wrote: > On Thu, Mar 17, 2011 at 02:33:47AM +0300, Vladimir Ermakov wrote: > > Adds PSC UART support for MPC5125 SoC. > > Please resend the patches and make use of scripts/get_maintainer.pl I guess you noticed by now, just to make sure: This patch also prevents having one kernel for mpc5121 and 5125. That should be handled before resubmitting. The driver already has some register-abstractions, probably you can make use of it again. Regards, Wolfram -- Pengutronix e.K. | Wolfram Sang| Industrial Linux Solutions | http://www.pengutronix.de/ | signature.asc Description: Digital signature ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [RFC][PATCH v3 10/22] mm, powerpc: add gfp flags variant of pud, pte, and pte allocations
changes for 32 bit architecture - Added __pte_alloc_one_kernel() to allocated zeroed page using allocation flag passed as an argument. If the slab allocator is not initialized the allocation flag is not passed down the call hierarchy. i.e. the call to early_get_page() is not modified. - Changed pte_alloc_one_kernel() to call __pte_alloc_one_kernel() passing correct gfp_t flags. changes for 64 bit architecture - Added __pud_alloc_one() which is similar to pud_alloc_one(). This newly added function accepts allocation flag as a parameter and does the PUD allocation using this GFP flag. - The function pud_alloc_one() is changed to call __pud_alloc_one() passing GFP_KERNEL | __GFP_REPEAT allocation flags. - Similar changes for pmd (cache) and pte (page) allocations. - The changes for both architectures help in fixing Bug 30702 Signed-off-by: Prasad Joshi Signed-off-by: Anand Mitra --- arch/powerpc/include/asm/pgalloc-32.h |2 ++ arch/powerpc/include/asm/pgalloc-64.h | 27 ++- arch/powerpc/mm/pgtable_32.c | 10 -- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/arch/powerpc/include/asm/pgalloc-32.h b/arch/powerpc/include/asm/pgalloc-32.h index 580cf73..21b7a94 100644 --- a/arch/powerpc/include/asm/pgalloc-32.h +++ b/arch/powerpc/include/asm/pgalloc-32.h @@ -35,6 +35,8 @@ extern void pgd_free(struct mm_struct *mm, pgd_t *pgd); #endif extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr); +extern pte_t *__pte_alloc_one_kernel(struct mm_struct *, unsigned long, gfp_t); + extern pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long addr); static inline void pgtable_free(void *table, unsigned index_size) diff --git a/arch/powerpc/include/asm/pgalloc-64.h b/arch/powerpc/include/asm/pgalloc-64.h index 292725c..e5ea650 100644 --- a/arch/powerpc/include/asm/pgalloc-64.h +++ b/arch/powerpc/include/asm/pgalloc-64.h @@ -51,10 +51,15 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) #define pgd_populate(MM, PGD, PUD) pgd_set(PGD, PUD) +static inline pud_t * +__pud_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) +{ + return kmem_cache_alloc(PGT_CACHE(PUD_INDEX_SIZE), gfp_mask); +} + static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) { - return kmem_cache_alloc(PGT_CACHE(PUD_INDEX_SIZE), - GFP_KERNEL|__GFP_REPEAT); + return __pud_alloc_one(mm, addr, GFP_KERNEL | __GFP_REPEAT); } static inline void pud_free(struct mm_struct *mm, pud_t *pud) @@ -89,10 +94,15 @@ static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, #endif /* CONFIG_PPC_64K_PAGES */ +static inline pmd_t * +__pmd_alloc_one(struct mm_struct *mm, unsigned long addr, gfp_t gfp_mask) +{ + return kmem_cache_alloc(PGT_CACHE(PMD_INDEX_SIZE), gfp_mask); +} + static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr) { - return kmem_cache_alloc(PGT_CACHE(PMD_INDEX_SIZE), - GFP_KERNEL|__GFP_REPEAT); + return __pmd_alloc_one(mm, addr, GFP_KERNEL | __GFP_REPEAT); } static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) @@ -100,10 +110,17 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) kmem_cache_free(PGT_CACHE(PMD_INDEX_SIZE), pmd); } +static inline pte_t * +__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, + gfp_t gfp_mask) +{ +return (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); +} + static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) { -return (pte_t *)__get_free_page(GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO); + return __pte_alloc_one_kernel(mm, address, GFP_KERNEL | __GFP_REPEAT); } static inline pgtable_t pte_alloc_one(struct mm_struct *mm, diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index 8dc41c0..736593f 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c @@ -95,14 +95,15 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd) #endif } -__init_refok pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) +__init_refok pte_t * +__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address, gfp_t gfp_mask) { pte_t *pte; extern int mem_init_done; extern void *early_get_page(void); if (mem_init_done) { - pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); + pte = (pte_t *)__get_free_page(gfp_mask | __GFP_ZERO); } else { pte = (pte_t *)early_get_page(); if (pte) @@ -111,6 +112,11 @@ __init_refok pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long add return pte; } +__init_refok pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned lo
Re: [PATCH -mm] RapidIO,powerpc/85xx: Fix configuration option
On Mar 18, 2011, at 12:18 PM, Alexandre Bounine wrote: > Follows set of patches in -mm tree. Replaces configuration option > missed in previous patches. > > Signed-off-by: Alexandre Bounine > --- > arch/powerpc/kernel/cpu_setup_fsl_booke.S |2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) Acked-by: Kumar Gala Alex, I can push this via the powerpc.git tree route if you want. - k ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
RE: [PATCH -mm] RapidIO,powerpc/85xx: Fix configuration option
This patch has to be applied to -mm tree. Andrew already has set of patches that change RapidIO configuration. I think it will be better if it goes into -mm to keep things aligned properly. Alex. -Original Message- From: Kumar Gala [mailto:ga...@kernel.crashing.org] Sent: Friday, March 18, 2011 4:49 PM To: Bounine, Alexandre Cc: a...@linux-foundation.org; linux-ker...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Matt Porter; Li Yang; Thomas Moll Subject: Re: [PATCH -mm] RapidIO,powerpc/85xx: Fix configuration option On Mar 18, 2011, at 12:18 PM, Alexandre Bounine wrote: > Follows set of patches in -mm tree. Replaces configuration option > missed in previous patches. > > Signed-off-by: Alexandre Bounine > --- > arch/powerpc/kernel/cpu_setup_fsl_booke.S |2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) Acked-by: Kumar Gala Alex, I can push this via the powerpc.git tree route if you want. - k ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [git pull] Please pull powerpc.git next branch
On Fri, 2011-03-18 at 06:34 -0700, Linus Torvalds wrote: > > Here are the changes for this merge window for powerpc. One highlight > > is irq data conversion so we can get rid of the legacy stuff. The new > > Dynamic DMA windows for pSeries should also improve performances for > > some devices nicely on more recent machines/firmwares. Plus a little > > pack of embedded things. > > Ok, I got a conflict with the of_platform_driver() removal which > looked pretty trivial, but since I don't have a ppc cross-compile > thing I couldn't even test-compile the end result. Please take a look > to see that it went ok.. Ok, I'll have a look later today. Thanks, Ben. ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH v2] gianfar: Fall back to software tcp/udp checksum on older controllers
From: Alex Dubov Date: Wed, 16 Mar 2011 20:57:13 -0700 (PDT) > As specified by errata eTSEC49 of MPC8548 and errata eTSEC12 of MPC83xx, > older revisions of gianfar controllers will be unable to calculate a TCP/UDP > packet checksum for some alignments of the appropriate FCB. This patch checks > for FCB alignment on such controllers and falls back to software checksumming > if the alignment is known to be bad. > > Signed-off-by: Alex Dubov Applied. ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [git pull] Please pull powerpc.git next branch
On Thu, Mar 17, 2011 at 10:44 PM, Benjamin Herrenschmidt wrote: > Hi Linus ! > > Here are the changes for this merge window for powerpc. One highlight > is irq data conversion so we can get rid of the legacy stuff. The new > Dynamic DMA windows for pSeries should also improve performances for > some devices nicely on more recent machines/firmwares. Plus a little > pack of embedded things. Ben, you missed the patches from Meador: http://patchwork.ozlabs.org/patch/86804/ http://patchwork.ozlabs.org/patch/86805/ http://patchwork.ozlabs.org/patch/86806/ Please commit. -Hollis ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[RFC][PATCH v3 00/22] __vmalloc: Propagating GFP allocation flag inside __vmalloc()
A filesystem might run into a problem while calling __vmalloc(GFP_NOFS) inside a lock. It is expected than __vmalloc when called with GFP_NOFS should not callback the filesystem code even incase of the increased memory pressure. But the problem is that even if we pass this flag, __vmalloc itself allocates memory with GFP_KERNEL. Using GFP_KERNEL allocations may go into the memory reclaim path and try to free memory by calling file system evict_inode function. Which might lead into deadlock. For further details http://marc.info/?l=linux-mm&m=128942194520631&w=4 https://bugzilla.kernel.org/show_bug.cgi?id=30702 The patch passes the gfp allocation flag all the way down to those allocating functions. arch/arm/include/asm/pgalloc.h | 11 +- arch/avr32/include/asm/pgalloc.h |8 - arch/cris/include/asm/pgalloc.h | 10 - arch/frv/include/asm/pgalloc.h |3 ++ arch/frv/include/asm/pgtable.h |1 + arch/frv/mm/pgalloc.c|9 - arch/ia64/include/asm/pgalloc.h | 24 +++-- arch/m32r/include/asm/pgalloc.h | 11 -- arch/m68k/include/asm/motorola_pgalloc.h | 20 +-- arch/m68k/include/asm/sun3_pgalloc.h | 14 ++-- arch/m68k/mm/memory.c|9 - arch/microblaze/include/asm/pgalloc.h|3 ++ arch/microblaze/mm/pgtable.c | 13 +-- arch/mips/include/asm/pgalloc.h | 22 arch/mn10300/include/asm/pgalloc.h |2 + arch/mn10300/mm/pgtable.c| 10 - arch/parisc/include/asm/pgalloc.h| 21 --- arch/powerpc/include/asm/pgalloc-32.h|2 + arch/powerpc/include/asm/pgalloc-64.h| 27 +++--- arch/powerpc/mm/pgtable_32.c | 10 - arch/s390/include/asm/pgalloc.h | 30 +--- arch/s390/mm/pgtable.c | 22 +--- arch/score/include/asm/pgalloc.h | 13 --- arch/sh/include/asm/pgalloc.h|8 - arch/sh/mm/pgtable.c |8 - arch/sparc/include/asm/pgalloc_32.h |5 +++ arch/sparc/include/asm/pgalloc_64.h | 17 - arch/tile/include/asm/pgalloc.h | 13 ++- arch/tile/mm/pgtable.c | 10 - arch/um/include/asm/pgalloc.h|1 + arch/um/kernel/mem.c | 21 --- arch/x86/include/asm/pgalloc.h | 17 - arch/x86/mm/pgtable.c|8 - arch/xtensa/include/asm/pgalloc.h|9 - arch/xtensa/mm/pgtable.c | 11 +- include/asm-generic/4level-fixup.h |8 +++- include/asm-generic/pgtable-nopmd.h |3 +- include/asm-generic/pgtable-nopud.h |1 + include/linux/mm.h | 40 - mm/memory.c | 14 --- mm/vmalloc.c | 57 -- 41 files changed, 427 insertions(+), 119 deletions(-) ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev