[arm64] Backport xgene Ethernet and include phy-xgene in udebs
phy-xgene is needed for ahci_xgene not the Ethernet driver, so place in sata-modules for now. While there move ahci_xgene from the toplevel list into the arm64 specific list. svn path=/dists/sid/linux/; revision=21828
This commit is contained in:
parent
ec2241f23d
commit
64d07e85d9
|
@ -67,6 +67,9 @@ linux (3.16.2-3) UNRELEASED; urgency=medium
|
|||
|
||||
[ Ian Campbell ]
|
||||
* [armel/orion5x] udeb: Include mvmdio in nic-modules udeb.
|
||||
* [arm64] Backport X-GENE Ethernet driver from v3.17-rcs
|
||||
* [arm64] Including phy-xgene in sata-modules udeb since it is needed by
|
||||
ahci_xgene.
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Tue, 09 Sep 2014 13:40:53 +0100
|
||||
|
||||
|
|
|
@ -40,6 +40,11 @@ CONFIG_MMC_SPI=m
|
|||
CONFIG_NET_VENDOR_8390=y
|
||||
CONFIG_NE2K_PCI=m
|
||||
|
||||
##
|
||||
## file: drivers/net/ethernet/apm/xgene/Kconfig
|
||||
##
|
||||
CONFIG_NET_XGENE=m
|
||||
|
||||
##
|
||||
## file: drivers/net/ethernet/realtek/Kconfig
|
||||
##
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
smc91x
|
||||
smsc911x
|
||||
xen-netfront
|
||||
xgene-enet
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
#include <sata-modules>
|
||||
ahci_xgene
|
||||
phy-xgene
|
||||
|
|
|
@ -13,7 +13,6 @@ sata_vsc ?
|
|||
sata_qstor ?
|
||||
sata_uli ?
|
||||
ahci ?
|
||||
ahci_xgene ?
|
||||
sx8 ?
|
||||
sata_sx4 ?
|
||||
sata_mv ?
|
||||
|
|
2415
debian/patches/features/arm64/drivers-net-Add-APM-X-Gene-SoC-ethernet-driver-suppo.patch
vendored
Normal file
2415
debian/patches/features/arm64/drivers-net-Add-APM-X-Gene-SoC-ethernet-driver-suppo.patch
vendored
Normal file
File diff suppressed because it is too large
Load Diff
47
debian/patches/features/arm64/drivers-net-NET_XGENE-should-depend-on-HAS_DMA.patch
vendored
Normal file
47
debian/patches/features/arm64/drivers-net-NET_XGENE-should-depend-on-HAS_DMA.patch
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
From e7af4b1e854cdf88fa37241061352fb5b99dbb7f Mon Sep 17 00:00:00 2001
|
||||
From: Geert Uytterhoeven <geert@linux-m68k.org>
|
||||
Date: Fri, 29 Aug 2014 18:21:41 +0200
|
||||
Subject: [PATCH 4/4] drivers: net: NET_XGENE should depend on HAS_DMA
|
||||
|
||||
If NO_DMA=y:
|
||||
|
||||
drivers/built-in.o: In function `xgene_enet_delete_ring':
|
||||
xgene_enet_main.c:(.text+0x28755a): undefined reference to `dma_free_coherent'
|
||||
drivers/built-in.o: In function `xgene_enet_setup_tx_desc':
|
||||
xgene_enet_main.c:(.text+0x287774): undefined reference to `dma_map_single'
|
||||
xgene_enet_main.c:(.text+0x287780): undefined reference to `dma_mapping_error'
|
||||
drivers/built-in.o: In function `xgene_enet_tx_completion':
|
||||
xgene_enet_main.c:(.text+0x2878e6): undefined reference to `dma_unmap_single'
|
||||
drivers/built-in.o: In function `xgene_enet_refill_bufpool':
|
||||
xgene_enet_main.c:(.text+0x2879d4): undefined reference to `dma_map_single'
|
||||
xgene_enet_main.c:(.text+0x2879e0): undefined reference to `dma_mapping_error'
|
||||
drivers/built-in.o: In function `xgene_enet_rx_frame':
|
||||
xgene_enet_main.c:(.text+0x287aaa): undefined reference to `dma_unmap_single'
|
||||
drivers/built-in.o: In function `xgene_enet_free_desc_ring':
|
||||
xgene_enet_main.c:(.text+0x287f98): undefined reference to `dma_free_coherent'
|
||||
drivers/built-in.o: In function `xgene_enet_create_desc_ring':
|
||||
xgene_enet_main.c:(.text+0x28808e): undefined reference to `dma_alloc_coherent'
|
||||
drivers/built-in.o: In function `xgene_enet_probe':
|
||||
xgene_enet_main.c:(.text+0x2883d4): undefined reference to `dma_set_mask'
|
||||
xgene_enet_main.c:(.text+0x2883ec): undefined reference to `dma_supported'
|
||||
|
||||
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/apm/xgene/Kconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/net/ethernet/apm/xgene/Kconfig b/drivers/net/ethernet/apm/xgene/Kconfig
|
||||
index 616dff6..f4054d24 100644
|
||||
--- a/drivers/net/ethernet/apm/xgene/Kconfig
|
||||
+++ b/drivers/net/ethernet/apm/xgene/Kconfig
|
||||
@@ -1,5 +1,6 @@
|
||||
config NET_XGENE
|
||||
tristate "APM X-Gene SoC Ethernet Driver"
|
||||
+ depends on HAS_DMA
|
||||
select PHYLIB
|
||||
help
|
||||
This is the Ethernet driver for the on-chip ethernet interface on the
|
||||
--
|
||||
1.7.10.4
|
||||
|
83
debian/patches/features/arm64/dts-Add-bindings-for-APM-X-Gene-SoC-ethernet-driver.patch
vendored
Normal file
83
debian/patches/features/arm64/dts-Add-bindings-for-APM-X-Gene-SoC-ethernet-driver.patch
vendored
Normal file
|
@ -0,0 +1,83 @@
|
|||
From ad56b94346519e510355624dc2f88a11ee0fe07a Mon Sep 17 00:00:00 2001
|
||||
From: Iyappan Subramanian <isubramanian@apm.com>
|
||||
Date: Thu, 7 Aug 2014 15:14:27 -0700
|
||||
Subject: [PATCH] dts: Add bindings for APM X-Gene SoC ethernet driver
|
||||
|
||||
This patch adds bindings for APM X-Gene SoC ethernet driver.
|
||||
|
||||
Signed-off-by: Iyappan Subramanian <isubramanian@apm.com>
|
||||
Signed-off-by: Ravi Patel <rapatel@apm.com>
|
||||
Signed-off-by: Keyur Chudgar <kchudgar@apm.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
arch/arm64/boot/dts/apm-mustang.dts | 4 ++++
|
||||
arch/arm64/boot/dts/apm-storm.dtsi | 30 +++++++++++++++++++++++++++---
|
||||
2 files changed, 31 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/apm-mustang.dts b/arch/arm64/boot/dts/apm-mustang.dts
|
||||
index 6541962..b2f5622 100644
|
||||
--- a/arch/arm64/boot/dts/apm-mustang.dts
|
||||
+++ b/arch/arm64/boot/dts/apm-mustang.dts
|
||||
@@ -28,3 +28,7 @@
|
||||
&serial0 {
|
||||
status = "ok";
|
||||
};
|
||||
+
|
||||
+&menet {
|
||||
+ status = "ok";
|
||||
+};
|
||||
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
|
||||
index 40aa96c..c0aceef 100644
|
||||
--- a/arch/arm64/boot/dts/apm-storm.dtsi
|
||||
+++ b/arch/arm64/boot/dts/apm-storm.dtsi
|
||||
@@ -167,14 +167,13 @@
|
||||
clock-output-names = "ethclk";
|
||||
};
|
||||
|
||||
- eth8clk: eth8clk {
|
||||
+ menetclk: menetclk {
|
||||
compatible = "apm,xgene-device-clock";
|
||||
#clock-cells = <1>;
|
||||
clocks = <ðclk 0>;
|
||||
- clock-names = "eth8clk";
|
||||
reg = <0x0 0x1702C000 0x0 0x1000>;
|
||||
reg-names = "csr-reg";
|
||||
- clock-output-names = "eth8clk";
|
||||
+ clock-output-names = "menetclk";
|
||||
};
|
||||
|
||||
sataphy1clk: sataphy1clk@1f21c000 {
|
||||
@@ -397,5 +396,30 @@
|
||||
#clock-cells = <1>;
|
||||
clocks = <&rtcclk 0>;
|
||||
};
|
||||
+
|
||||
+ menet: ethernet@17020000 {
|
||||
+ compatible = "apm,xgene-enet";
|
||||
+ status = "disabled";
|
||||
+ reg = <0x0 0x17020000 0x0 0xd100>,
|
||||
+ <0x0 0X17030000 0x0 0X400>,
|
||||
+ <0x0 0X10000000 0x0 0X200>;
|
||||
+ reg-names = "enet_csr", "ring_csr", "ring_cmd";
|
||||
+ interrupts = <0x0 0x3c 0x4>;
|
||||
+ dma-coherent;
|
||||
+ clocks = <&menetclk 0>;
|
||||
+ local-mac-address = [00 01 73 00 00 01];
|
||||
+ phy-connection-type = "rgmii";
|
||||
+ phy-handle = <&menetphy>;
|
||||
+ mdio {
|
||||
+ compatible = "apm,xgene-mdio";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ menetphy: menetphy@3 {
|
||||
+ compatible = "ethernet-phy-id001c.c915";
|
||||
+ reg = <0x3>;
|
||||
+ };
|
||||
+
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--
|
||||
1.7.10.4
|
||||
|
51
debian/patches/features/arm64/net-xgene-Check-negative-return-value-of-xgene_enet_.patch
vendored
Normal file
51
debian/patches/features/arm64/net-xgene-Check-negative-return-value-of-xgene_enet_.patch
vendored
Normal file
|
@ -0,0 +1,51 @@
|
|||
From 42113901e335c5431e11e33711f5cdcc8e033955 Mon Sep 17 00:00:00 2001
|
||||
From: Tobias Klauser <tklauser@distanz.ch>
|
||||
Date: Thu, 14 Aug 2014 13:59:42 +0200
|
||||
Subject: [PATCH 2/4] net: xgene: Check negative return value of
|
||||
xgene_enet_get_ring_size()
|
||||
|
||||
xgene_enet_get_ring_size() returns a negative value in case of an error,
|
||||
but its only caller in xgene_enet_create_desc_ring() currently uses the
|
||||
return value directly as u32. Instead, check for a negative value first and
|
||||
error out in case. Also move the call to xgene_enet_get_ring_size() before
|
||||
devm_kzalloc() so we don't need to free anything in the error path.
|
||||
|
||||
This fixes the following issue reported by the Coverity Scanner:
|
||||
|
||||
** CID 1231336: Improper use of negative value (NEGATIVE_RETURNS)
|
||||
/drivers/net/ethernet/apm/xgene/xgene_enet_main.c: 596 in xgene_enet_create_desc_ring()
|
||||
|
||||
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||
index af7c40a..e1a8f4e 100644
|
||||
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||
@@ -581,7 +581,11 @@ static struct xgene_enet_desc_ring *xgene_enet_create_desc_ring(
|
||||
struct xgene_enet_desc_ring *ring;
|
||||
struct xgene_enet_pdata *pdata = netdev_priv(ndev);
|
||||
struct device *dev = ndev_to_dev(ndev);
|
||||
- u32 size;
|
||||
+ int size;
|
||||
+
|
||||
+ size = xgene_enet_get_ring_size(dev, cfgsize);
|
||||
+ if (size < 0)
|
||||
+ return NULL;
|
||||
|
||||
ring = devm_kzalloc(dev, sizeof(struct xgene_enet_desc_ring),
|
||||
GFP_KERNEL);
|
||||
@@ -593,7 +597,6 @@ static struct xgene_enet_desc_ring *xgene_enet_create_desc_ring(
|
||||
ring->cfgsize = cfgsize;
|
||||
ring->id = ring_id;
|
||||
|
||||
- size = xgene_enet_get_ring_size(dev, cfgsize);
|
||||
ring->desc_addr = dma_zalloc_coherent(dev, size, &ring->dma,
|
||||
GFP_KERNEL);
|
||||
if (!ring->desc_addr) {
|
||||
--
|
||||
1.7.10.4
|
||||
|
56
debian/patches/features/arm64/net-xgene-fix-possible-NULL-dereference-in-xgene_ene.patch
vendored
Normal file
56
debian/patches/features/arm64/net-xgene-fix-possible-NULL-dereference-in-xgene_ene.patch
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
From c04bbc2b1df7034f463ef512c34010b71c12c257 Mon Sep 17 00:00:00 2001
|
||||
From: Iyappan Subramanian <isubramanian@apm.com>
|
||||
Date: Thu, 21 Aug 2014 13:44:48 -0700
|
||||
Subject: [PATCH 3/4] net: xgene: fix possible NULL dereference in
|
||||
xgene_enet_free_desc_rings()
|
||||
|
||||
A NULL pointer dereference is possible for the argument ring->buf_pool
|
||||
which is passed to xgene_enet_free_desc_ring(), as ring could be NULL.
|
||||
|
||||
And now since NULL pointers are being checked for before the calls to
|
||||
xgene_enet_free_desc_ring(), might as well take advantage of them and
|
||||
not call the function if the argument would be NULL.
|
||||
|
||||
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Iyappan Subramanian <isubramanian@apm.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 20 +++++++++++++-------
|
||||
1 file changed, 13 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||
index e1a8f4e..e4222af 100644
|
||||
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
||||
@@ -563,15 +563,21 @@ static void xgene_enet_free_desc_rings(struct xgene_enet_pdata *pdata)
|
||||
struct xgene_enet_desc_ring *ring;
|
||||
|
||||
ring = pdata->tx_ring;
|
||||
- if (ring && ring->cp_ring && ring->cp_ring->cp_skb)
|
||||
- devm_kfree(dev, ring->cp_ring->cp_skb);
|
||||
- xgene_enet_free_desc_ring(ring);
|
||||
+ if (ring) {
|
||||
+ if (ring->cp_ring && ring->cp_ring->cp_skb)
|
||||
+ devm_kfree(dev, ring->cp_ring->cp_skb);
|
||||
+ xgene_enet_free_desc_ring(ring);
|
||||
+ }
|
||||
|
||||
ring = pdata->rx_ring;
|
||||
- if (ring && ring->buf_pool && ring->buf_pool->rx_skb)
|
||||
- devm_kfree(dev, ring->buf_pool->rx_skb);
|
||||
- xgene_enet_free_desc_ring(ring->buf_pool);
|
||||
- xgene_enet_free_desc_ring(ring);
|
||||
+ if (ring) {
|
||||
+ if (ring->buf_pool) {
|
||||
+ if (ring->buf_pool->rx_skb)
|
||||
+ devm_kfree(dev, ring->buf_pool->rx_skb);
|
||||
+ xgene_enet_free_desc_ring(ring->buf_pool);
|
||||
+ }
|
||||
+ xgene_enet_free_desc_ring(ring);
|
||||
+ }
|
||||
}
|
||||
|
||||
static struct xgene_enet_desc_ring *xgene_enet_create_desc_ring(
|
||||
--
|
||||
1.7.10.4
|
||||
|
|
@ -96,6 +96,11 @@ features/powerpc/deb-pkg-add-support-for-powerpc-little-endian.patch
|
|||
features/x86/x86-memtest-WARN-if-bad-RAM-found.patch
|
||||
features/x86/x86-make-x32-syscall-support-conditional.patch
|
||||
features/arm/deb-pkg-add-automatic-support-for-armhf-architecture.patch
|
||||
features/arm64/drivers-net-Add-APM-X-Gene-SoC-ethernet-driver-suppo.patch
|
||||
features/arm64/drivers-net-NET_XGENE-should-depend-on-HAS_DMA.patch
|
||||
features/arm64/net-xgene-Check-negative-return-value-of-xgene_enet_.patch
|
||||
features/arm64/net-xgene-fix-possible-NULL-dereference-in-xgene_ene.patch
|
||||
features/arm64/dts-Add-bindings-for-APM-X-Gene-SoC-ethernet-driver.patch
|
||||
|
||||
# Miscellaneous bug fixes
|
||||
bugfix/all/misc-bmp085-Enable-building-as-a-module.patch
|
||||
|
|
Loading…
Reference in New Issue