On Sun, 2013-11-17 at 18:04 +0000, Ben Hutchings wrote:
> On Sun, 2013-11-17 at 14:27 +0000, Ian Campbell wrote:
> > On Sun, 2013-11-17 at 13:16 +0000, Ben Hutchings wrote:
> > > The number of ports is the last-but-one digit in the PHY model number so
> > > we could remove everything with a 4 there.
[...]
> The model number, not the ID.  So:
> 
> MARVELL_PHY_ID_88E1145
> MARVELL_PHY_ID_88E1149R
> MARVELL_PHY_ID_88E1240
> 
> (assuming the PHY IDs and masks are correct for those models).

FWIW I built a kernel based on svn r20728 (from before alioth went away)
with the following patch and booted it on a dreamplug and a QNAP TS-419
(both kirkwood).

In both cases marvell.ko was loaded and the network appeared fine. I'm
not sure how to tell if marvell.ko is actually active though -- neither
ethtool nor dmesg contain any indication.

But then, I don't think either of these platforms was ever affected by
the original issue so I don't think this really proves very much...

Ian.

diff --git a/linux/debian/changelog b/linux/debian/changelog
index 3b8fea0..ecc7dc2 100644
--- a/linux/debian/changelog
+++ b/linux/debian/changelog
@@ -3,6 +3,7 @@ linux (3.11.5-2) UNRELEASED; urgency=low
   [ Ian Campbell ]
   * [armhf] Enable Xen and virtio for armmp and armmp-lpae as well as KVM for
     armmp-lpae only.
+  * [armel/kirkwood+orion] Reenable MARVELL_PHY (Closes #723177)
 
  -- Ian Campbell <i...@hellion.org.uk>  Sat, 19 Oct 2013 10:34:53 +0100
 
diff --git a/linux/debian/config/armel/config.kirkwood 
b/linux/debian/config/armel/config.kirkwood
index 708f009..ebde991 100644
--- a/linux/debian/config/armel/config.kirkwood
+++ b/linux/debian/config/armel/config.kirkwood
@@ -459,8 +459,7 @@ CONFIG_MVMDIO=m
 ##
 ## file: drivers/net/phy/Kconfig
 ##
-#. Turned off because this causes networking on some Kirkwood machines to fail
-# CONFIG_MARVELL_PHY is not set
+CONFIG_MARVELL_PHY=m
 
 ##
 ## file: drivers/net/wireless/mwifiex/Kconfig
diff --git a/linux/debian/config/armel/config.orion5x 
b/linux/debian/config/armel/config.orion5x
index 6ff2614..923be47 100644
--- a/linux/debian/config/armel/config.orion5x
+++ b/linux/debian/config/armel/config.orion5x
@@ -413,8 +413,7 @@ CONFIG_MVMDIO=m
 ##
 ## file: drivers/net/phy/Kconfig
 ##
-#. Turned off because this causes networking on some Orion machines to fail
-# CONFIG_MARVELL_PHY is not set
+CONFIG_MARVELL_PHY=m
 
 ##
 ## file: drivers/pcmcia/Kconfig
diff --git a/linux/debian/patches/bugfix/all/disable-some-marvell-phys.patch 
b/linux/debian/patches/bugfix/all/disable-some-marvell-phys.patch
new file mode 100644
index 0000000..c46f2d2
--- /dev/null
+++ b/linux/debian/patches/bugfix/all/disable-some-marvell-phys.patch
@@ -0,0 +1,60 @@
+From: Ian Campbell <i...@hellion.org.uk>
+Subject: phy/marvell: disable 4-port phys
+Date: Wed, 20 Nov 2013 08:30:14 +0000
+Forwarded: no
+
+See 723177 for more details. Briefly:
+
+The Marvell PHY was originally disabled because it can cause networking
+failures on some systems. According to Lennert Buytenhek this is because some
+of the variants added did not share the same register layout. Since the known
+cases are all 4-ports disable those variants (indicated by a 4 in the
+penultimate position of the model name) until they can be audited for
+correctness.
+
+--- a/drivers/net/phy/marvell.c
++++ b/drivers/net/phy/marvell.c
+@@ -963,6 +963,7 @@
+               .set_wol = &m88e1318_set_wol,
+               .driver = { .owner = THIS_MODULE },
+       },
++#if 0
+       {
+               .phy_id = MARVELL_PHY_ID_88E1145,
+               .phy_id_mask = MARVELL_PHY_ID_MASK,
+@@ -976,6 +977,7 @@
+               .config_intr = &marvell_config_intr,
+               .driver = { .owner = THIS_MODULE },
+       },
++#endif
+       {
+               .phy_id = MARVELL_PHY_ID_88E1149R,
+               .phy_id_mask = MARVELL_PHY_ID_MASK,
+@@ -989,6 +991,7 @@
+               .config_intr = &marvell_config_intr,
+               .driver = { .owner = THIS_MODULE },
+       },
++#if 0
+       {
+               .phy_id = MARVELL_PHY_ID_88E1240,
+               .phy_id_mask = MARVELL_PHY_ID_MASK,
+@@ -1002,6 +1005,7 @@
+               .config_intr = &marvell_config_intr,
+               .driver = { .owner = THIS_MODULE },
+       },
++#endif
+       {
+               .phy_id = MARVELL_PHY_ID_88E1116R,
+               .phy_id_mask = MARVELL_PHY_ID_MASK,
+@@ -1051,9 +1055,9 @@
+       { MARVELL_PHY_ID_88E1111, MARVELL_PHY_ID_MASK },
+       { MARVELL_PHY_ID_88E1118, MARVELL_PHY_ID_MASK },
+       { MARVELL_PHY_ID_88E1121R, MARVELL_PHY_ID_MASK },
+-      { MARVELL_PHY_ID_88E1145, MARVELL_PHY_ID_MASK },
++/*    { MARVELL_PHY_ID_88E1145, MARVELL_PHY_ID_MASK }, */
+       { MARVELL_PHY_ID_88E1149R, MARVELL_PHY_ID_MASK },
+-      { MARVELL_PHY_ID_88E1240, MARVELL_PHY_ID_MASK },
++/*    { MARVELL_PHY_ID_88E1240, MARVELL_PHY_ID_MASK }, */
+       { MARVELL_PHY_ID_88E1318S, MARVELL_PHY_ID_MASK },
+       { MARVELL_PHY_ID_88E1116R, MARVELL_PHY_ID_MASK },
+       { MARVELL_PHY_ID_88E1510, MARVELL_PHY_ID_MASK },
diff --git a/linux/debian/patches/series b/linux/debian/patches/series
index 387edfc..d4dd0b1 100644
--- a/linux/debian/patches/series
+++ b/linux/debian/patches/series
@@ -79,3 +79,4 @@ bugfix/m68k/atari-irqs.patch
 bugfix/all/compiler-gcc-4-add-quirk-for-asm-goto-miscompilation-bug.patch
 bugfix/all/crypto-ansi_cprng-Fix-off-by-one-error-in-non-block-.patch
 features/all/mvsas-Recognise-device-subsystem-9485-9485-as-88SE94.patch
+bugfix/all/disable-some-marvell-phys.patch

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to