1. 01 9月, 2012 1 次提交
    • S
      net:stmmac: fix broken stmmac_pltfr_remove. · 1f9defa0
      Srinivas Kandagatla 提交于
      This patch fixes stmmac_pltfr_remove function, which is broken because,
      it is accessing plat variable via freed memory priv pointer which gets
      freed by free_netdev called from stmmac_dvr_remove.
      
      In short this patch caches the plat pointer in local variable before
      calling stmmac_dvr_remove to prevent code accessing freed memory.
      
      Without this patch any attempt to remove the stmmac device will fail as
      below:
      
      Unregistering eth 0 ...
      Unable to handle kernel paging request at virtual address 6b6b6bab
      pgd = de5dc000
      [6b6b6bab] *pgd=00000000
      Internal error: Oops: 5 [#1] PREEMPT SMP
      Modules linked in: cdev(O+)
      CPU: 0    Tainted: G           O  (3.3.1_stm24_0210-b2000+ #25)
      PC is at stmmac_pltfr_remove+0x2c/0xa0
      LR is at stmmac_pltfr_remove+0x28/0xa0
      pc : [<c01b8908>]    lr : [<c01b8904>]    psr: 60000013
      sp : def6be78  ip : de6c5a00  fp : 00000000
      r10: 00000028  r9 : c082d81d  r8 : 00000001
      r7 : de65a600  r6 : df81b240  r5 : c0413fd8  r4 : 00000000
      r3 : 6b6b6b6b  r2 : def6be6c  r1 : c0355e2b  r0 : 00000020
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      Control: 10c53c7d  Table: 5e5dc04a  DAC: 00000015
      Process insmod (pid: 738, stack limit = 0xdef6a2f0)
      Stack: (0xdef6be78 to 0xdef6c000)
      be60:                                                       c0413fe0
      c0403658
      be80: c0400bb0 c019270c c01926f8 c0191478 00000000 c0414014 c0413fe0
      c01914d8
      bea0: 00000000 c0413fe0 df8045d0 c019109c c0413fe0 c0400bf0 c0413fd8
      c018f04c
      bec0: 00000000 bf000000 c0413fd8 c01929a0 c0413fd8 bf000000 00000000
      c0192bfc
      bee0: bf00009c bf000014 def6a000 c000859c 00000000 00000001 bf00009c
      bf00009c
      bf00: 00000001 bf00009c 00000001 bf0000e4 de65a600 00000001 c082d81d
      c0058cd0
      bf20: bf0000a8 c004fbd8 c0056414 c082d815 c02aea20 bf0001f0 00b0b008
      e0846208
      bf40: c03ec8a0 e0846000 0000db0d e0850604 e08504de e0853a24 00000204
      000002d4
      bf60: 00000000 00000000 0000001c 0000001d 00000009 00000000 00000006
      00000000
      bf80: 00000003 f63d4e2e 0000db0d bef02ed8 00000080 c000d2e8 def6a000
      00000000
      bfa0: 00000000 c000d140 f63d4e2e 0000db0d 00b0b018 0000db0d 00b0b008
      b6f4f298
      bfc0: f63d4e2e 0000db0d bef02ed8 00000080 00000003 00000000 00010000
      00000000
      bfe0: 00b0b008 bef02c64 00008d20 b6ef3784 60000010 00b0b018 5a5a5a5a
      5a5a5a5a
      [<c01b8908>] (stmmac_pltfr_remove+0x2c/0xa0) from [<c019270c>]
      (platform_drv_remove+0x14/0x18)
      [<c019270c>] (platform_drv_remove+0x14/0x18) from [<c0191478>]
      (__device_release_driver+0x64/0xa4)
      [<c0191478>] (__device_release_driver+0x64/0xa4) from [<c01914d8>]
      (device_release_driver+0x20/0x2c)
      [<c01914d8>] (device_release_driver+0x20/0x2c) from [<c019109c>]
      (bus_remove_device+0xcc/0xdc)
      [<c019109c>] (bus_remove_device+0xcc/0xdc) from [<c018f04c>]
      (device_del+0x104/0x160)
      [<c018f04c>] (device_del+0x104/0x160) from [<c01929a0>]
      (platform_device_del+0x18/0x58)
      [<c01929a0>] (platform_device_del+0x18/0x58) from [<c0192bfc>]
      (platform_device_unregister+0xc/0x18)
      [<c0192bfc>] (platform_device_unregister+0xc/0x18) from [<bf000014>]
      (r_init+0x14/0x2c [cdev])
      [<bf000014>] (r_init+0x14/0x2c [cdev]) from [<c000859c>]
      (do_one_initcall+0x90/0x160)
      [<c000859c>] (do_one_initcall+0x90/0x160) from [<c0058cd0>]
      (sys_init_module+0x15c4/0x1794)
      [<c0058cd0>] (sys_init_module+0x15c4/0x1794) from [<c000d140>]
      (ret_fast_syscall+0x0/0x30)
      Code: e1a04000 e59f0070 eb039b65 e59636e4 (e5933040)
      Signed-off-by: NSrinivas Kandagatla <srinivas.kandagatla@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1f9defa0
  2. 09 8月, 2012 1 次提交
    • A
      net/stmmac: mark probe function as __devinit · f5addb91
      Arnd Bergmann 提交于
      Driver probe functions are generally __devinit so they will be
      discarded after initialization for non-hotplug kernels.
      This was found by a new warning after patch 6a228452 "stmmac: Add
      device-tree support" adds a new __devinit function that is called
      from stmmac_pltfr_probe.
      
      Without this patch, building socfpga_defconfig results in:
      
      WARNING: drivers/net/ethernet/stmicro/stmmac/stmmac.o(.text+0x5d4c): Section mismatch in reference from the function stmmac_pltfr_probe() to the function .devinit.text:stmmac_probe_config_dt()
      The function stmmac_pltfr_probe() references
      the function __devinit stmmac_probe_config_dt().
      This is often because stmmac_pltfr_probe lacks a __devinit
      annotation or the annotation of stmmac_probe_config_dt is wrong.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Stefan Roese <sr@denx.de>
      Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: netdev@vger.kernel.org
      Acked-by: NStefan Roese <sr@denx.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f5addb91
  3. 20 7月, 2012 1 次提交
  4. 01 7月, 2012 1 次提交
    • G
      stmmac: add the Energy Efficient Ethernet support · d765955d
      Giuseppe CAVALLARO 提交于
      This patch adds the Energy Efficient Ethernet support to the stmmac.
      
      Please see the driver's documentation for further details about this support
      in the driver.
      
      Thanks also goes to Rayagond Kokatanur for his first implementation.
      
      Note:
       to clearly manage and expose the lpi interrupt status and eee ethtool
       stats I've had to do some modifications to the driver's design and I
       found really useful to move other parts of the code (e.g. mmc irq stat)
       in the main directly. So this means that some core has been reworked
       to introduce the EEE.
      
      v1: initial patch
      v2: fixed some sparse issues (typos)
      v3: erroneously sent the v2 renamed as v3
      v4:
      	o Fixed the return value of the stmmac_eee_init as suggested by D.Miller
      	o Totally reviewed the ethtool support for EEE
      	o Added a new internal parameter to tune the SW timer for TX LPI.
      v5: do not change any eee setting in case of the stmmac_ethtool_op_set_eee fails
          (it has to return -EOPNOTSUPP in that case).
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d765955d
  5. 07 6月, 2012 2 次提交
    • G
      stmmac: fix driver Kconfig when built as module · ba27ec66
      Giuseppe CAVALLARO 提交于
      This patches fixes the driver when built as dynamic module.
      In fact, the platform part cannot be built and the probe fails
      (thanks to Bob Liu that reported this bug).
      
      v2: as D. Miller suggested, it is not necessary to make the
      pci and the platform code mutually exclusive.
      Having both could also help, at built time ,to verify that
      all the code is validated and compiles fine.
      
      v3: removed wrong Reviewed-by from the patch
      Reported-by: NBob Liu <lliubbo@gmail.com>
      cc: Rayagond Kokatanur <rayagond@vayavyalabs.com>
      Signed-off-by: NGiuseppe Cavallaro <peppe.cavallaro@st.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ba27ec66
    • J
      ethernet: Remove casts to same type · 64699336
      Joe Perches 提交于
      Adding casts of objects to the same type is unnecessary
      and confusing for a human reader.
      
      For example, this cast:
      
              int y;
              int *p = (int *)&y;
      
      I used the coccinelle script below to find and remove these
      unnecessary casts.  I manually removed the conversions this
      script produces of casts with __force, __iomem and __user.
      
      @@
      type T;
      T *p;
      @@
      
      -       (T *)p
      +       p
      
      A function in atl1e_main.c was passed a const pointer
      when it actually modified elements of the structure.
      
      Change the argument to a non-const pointer.
      
      A function in stmmac needed a __force to avoid a sparse
      warning.  Added it.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      64699336
  6. 20 4月, 2012 2 次提交
  7. 06 4月, 2012 1 次提交
  8. 17 3月, 2012 1 次提交
  9. 16 2月, 2012 1 次提交
  10. 13 2月, 2012 1 次提交
  11. 13 1月, 2012 1 次提交
  12. 22 12月, 2011 1 次提交