[kernel] r16774 - in dists/trunk/linux-2.6/debian: . patches/bugfix/all patches/features/all patches/series

Ben Hutchings benh at alioth.debian.org
Wed Jan 5 02:35:35 UTC 2011


Author: benh
Date: Wed Jan  5 02:35:19 2011
New Revision: 16774

Log:
Merge changes from sid branch

Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/all/btrfs-Require-CAP_SYS_ADMIN-for-filesystem-rebalance.patch
   dists/trunk/linux-2.6/debian/patches/features/all/r8169-remove-the-firmware-of-RTL8111D.patch
Deleted:
   dists/trunk/linux-2.6/debian/patches/features/all/r8169-rtl8168d-1-2-request_firmware-2.patch
Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/linux-base.postinst
   dists/trunk/linux-2.6/debian/patches/series/base

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	Wed Jan  5 02:33:34 2011	(r16773)
+++ dists/trunk/linux-2.6/debian/changelog	Wed Jan  5 02:35:19 2011	(r16774)
@@ -8,6 +8,11 @@
   * watchdog: Improve failure message and documentation (Closes: #608138)
   * [x86] Staging: Enable R8712U as module (r8712u, replacing r8192s_usb)
     - Enable loading external firmware, thanks to Stefan Lippers-Hollmann
+  * linux-base: Look for GRUB 1 configuration in both /boot/grub and
+    /boot/boot/grub (Closes: #607863)
+  * btrfs: Require CAP_SYS_ADMIN for filesystem rebalance (Closes: #608185)
+  * r8169: Change RTL8111D/RTL8168D initialisation and firmware loading to
+    match upstream version (Closes: #596390 with firmware-realtek 0.28)
 
  -- Ben Hutchings <ben at decadent.org.uk>  Tue, 28 Dec 2010 03:15:05 +0000
 

Modified: dists/trunk/linux-2.6/debian/linux-base.postinst
==============================================================================
--- dists/trunk/linux-2.6/debian/linux-base.postinst	Wed Jan  5 02:33:34 2011	(r16773)
+++ dists/trunk/linux-2.6/debian/linux-base.postinst	Wed Jan  5 02:35:19 2011	(r16774)
@@ -238,6 +238,15 @@
 
 ### GRUB 1 (grub-legacy) config
 
+sub grub1_path {
+    for ('/boot/grub', '/boot/boot/grub') {
+	if (-d) {
+	    return "$_/menu.lst";
+	}
+    }
+    return undef;
+}
+
 sub grub1_parse {
     my ($file) = @_;
     my @results = ();
@@ -928,7 +937,7 @@
 		     list => \&fstab_list,
 		     update => \&fstab_update},
 		    {packages => 'grub grub-legacy',
-		     path => '/boot/grub/menu.lst',
+		     path => grub1_path(),
 		     list => \&grub1_list,
 		     update => \&grub1_update,
 		     post_update => \&grub1_post,

Added: dists/trunk/linux-2.6/debian/patches/bugfix/all/btrfs-Require-CAP_SYS_ADMIN-for-filesystem-rebalance.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/all/btrfs-Require-CAP_SYS_ADMIN-for-filesystem-rebalance.patch	Wed Jan  5 02:35:19 2011	(r16774)
@@ -0,0 +1,41 @@
+Subject: [PATCH] btrfs: Require CAP_SYS_ADMIN for filesystem rebalance
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Wed, 29 Dec 2010 14:55:03 +0000
+
+Filesystem rebalancing (BTRFS_IOC_BALANCE) affects the entire
+filesystem and may run uninterruptibly for a long time.  This does not
+seem to be something that an unprivileged user should be able to do.
+
+Reported-by: Aron Xu <happyaron.xu at gmail.com>
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+---
+ fs/btrfs/volumes.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
+index cc04dc1..2313e8b 100644
+--- a/fs/btrfs/volumes.c
++++ b/fs/btrfs/volumes.c
+@@ -22,6 +22,7 @@
+ #include <linux/blkdev.h>
+ #include <linux/random.h>
+ #include <linux/iocontext.h>
++#include <linux/capability.h>
+ #include <asm/div64.h>
+ #include "compat.h"
+ #include "ctree.h"
+@@ -1905,6 +1906,9 @@ int btrfs_balance(struct btrfs_root *dev_root)
+ 	if (dev_root->fs_info->sb->s_flags & MS_RDONLY)
+ 		return -EROFS;
+ 
++	if (!capable(CAP_SYS_ADMIN))
++		return -EPERM;
++
+ 	mutex_lock(&dev_root->fs_info->volume_mutex);
+ 	dev_root = dev_root->fs_info->dev_root;
+ 
+-- 
+1.7.2.3
+
+
+

Added: dists/trunk/linux-2.6/debian/patches/features/all/r8169-remove-the-firmware-of-RTL8111D.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/features/all/r8169-remove-the-firmware-of-RTL8111D.patch	Wed Jan  5 02:35:19 2011	(r16774)
@@ -0,0 +1,311 @@
+From: Francois Romieu <romieu at fr.zoreil.com>
+Date: Mon, 3 Jan 2011 00:35:52 +0100
+Subject: [PATCH] r8169: remove the firmware of RTL8111D.
+
+commit bca03d5f32c8ee9b5cfa1d32640a63fded6cb3c0 upstream.
+
+The binary file of the firmware is moved to linux-firmware repository.
+The firmwares are rtl_nic/rtl8168d-1.fw and rtl_nic/rtl8168d-2.fw.
+The driver goes along if the firmware couldn't be found. However, it
+is suggested to be done with the suitable firmware.
+
+Some wrong PHY parameters are directly corrected in the driver.
+
+Simple firmware checking added per Ben Hutchings suggestion.
+
+Signed-off-by: Hayes Wang <hayeswang at realtek.com>
+Signed-off-by: Francois Romieu <romieu at fr.zoreil.com>
+Cc: Ben Hutchings <benh at debian.org>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+[bwh: Adjust for Debian's 2.6.37]
+---
+ drivers/net/Kconfig |    1 +
+ drivers/net/r8169.c |  157 ++++++++++++++++++++++++++++++++++++++++++++-------
+ 2 files changed, 138 insertions(+), 20 deletions(-)
+
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index 4f1755b..c647651 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -2233,6 +2233,7 @@ config YELLOWFIN
+ config R8169
+ 	tristate "Realtek 8169 gigabit ethernet support"
+ 	depends on PCI
++	select FW_LOADER
+ 	select CRC32
+ 	select MII
+ 	---help---
+diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
+index c9c6f0a..49a6db6 100644
+--- a/drivers/net/r8169.c
++++ b/drivers/net/r8169.c
+@@ -24,6 +24,7 @@
+ #include <linux/init.h>
+ #include <linux/dma-mapping.h>
+ #include <linux/pm_runtime.h>
++#include <linux/firmware.h>
+ 
+ #include <asm/system.h>
+ #include <asm/io.h>
+@@ -33,6 +34,9 @@
+ #define MODULENAME "r8169"
+ #define PFX MODULENAME ": "
+ 
++#define FIRMWARE_8168D_1	"rtl_nic/rtl8168d-1.fw"
++#define FIRMWARE_8168D_2	"rtl_nic/rtl8168d-2.fw"
++
+ #ifdef RTL8169_DEBUG
+ #define assert(expr) \
+ 	if (!(expr)) {					\
+@@ -514,6 +518,8 @@ module_param_named(debug, debug.msg_enable, int, 0);
+ MODULE_PARM_DESC(debug, "Debug verbosity level (0=none, ..., 16=all)");
+ MODULE_LICENSE("GPL");
+ MODULE_VERSION(RTL8169_VERSION);
++MODULE_FIRMWARE(FIRMWARE_8168D_1);
++MODULE_FIRMWARE(FIRMWARE_8168D_2);
+ 
+ static int rtl8169_open(struct net_device *dev);
+ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
+@@ -1393,6 +1399,65 @@ static void rtl_phy_write(void __iomem *ioaddr, const struct phy_reg *regs, int
+ 	}
+ }
+ 
++#define PHY_READ		0x00000000
++#define PHY_DATA_OR		0x10000000
++#define PHY_DATA_AND		0x20000000
++#define PHY_BJMPN		0x30000000
++#define PHY_READ_EFUSE		0x40000000
++#define PHY_READ_MAC_BYTE	0x50000000
++#define PHY_WRITE_MAC_BYTE	0x60000000
++#define PHY_CLEAR_READCOUNT	0x70000000
++#define PHY_WRITE		0x80000000
++#define PHY_READCOUNT_EQ_SKIP	0x90000000
++#define PHY_COMP_EQ_SKIPN	0xa0000000
++#define PHY_COMP_NEQ_SKIPN	0xb0000000
++#define PHY_WRITE_PREVIOUS	0xc0000000
++#define PHY_SKIPN		0xd0000000
++#define PHY_DELAY_MS		0xe0000000
++#define PHY_WRITE_ERI_WORD	0xf0000000
++
++static void
++rtl_phy_write_fw(struct rtl8169_private *tp, const struct firmware *fw)
++{
++	void __iomem *ioaddr = tp->mmio_addr;
++	__le32 *phytable = (__le32 *)fw->data;
++	struct net_device *dev = tp->dev;
++	size_t i;
++
++	if (fw->size % sizeof(*phytable)) {
++		netif_err(tp, probe, dev, "odd sized firmware %zd\n", fw->size);
++		return;
++	}
++
++	for (i = 0; i < fw->size / sizeof(*phytable); i++) {
++		u32 action = le32_to_cpu(phytable[i]);
++
++		if (!action)
++			break;
++
++		if ((action & 0xf0000000) != PHY_WRITE) {
++			netif_err(tp, probe, dev,
++				  "unknown action 0x%08x\n", action);
++			return;
++		}
++	}
++
++	while (i-- != 0) {
++		u32 action = le32_to_cpu(*phytable);
++		u32 data = action & 0x0000ffff;
++		u32 reg = (action & 0x0fff0000) >> 16;
++
++		switch(action & 0xf0000000) {
++		case PHY_WRITE:
++			mdio_write(ioaddr, reg, data);
++			phytable++;
++			break;
++		default:
++			BUG();
++		}
++	}
++}
++
+ static void rtl8169s_hw_phy_config(void __iomem *ioaddr)
+ {
+ 	static const struct phy_reg phy_reg_init[] = {
+@@ -1725,9 +1790,10 @@ static void rtl8168c_4_hw_phy_config(void __iomem *ioaddr)
+ 	rtl8168c_3_hw_phy_config(ioaddr);
+ }
+ 
+-static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
++static void rtl8168d_1_hw_phy_config(struct rtl8169_private *tp)
+ {
+ 	static const struct phy_reg phy_reg_init_0[] = {
++		/* Channel Estimation */
+ 		{ 0x1f, 0x0001 },
+ 		{ 0x06, 0x4064 },
+ 		{ 0x07, 0x2863 },
+@@ -1744,24 +1810,41 @@ static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
+ 		{ 0x12, 0xf49f },
+ 		{ 0x13, 0x070b },
+ 		{ 0x1a, 0x05ad },
+-		{ 0x14, 0x94c0 }
+-	};
+-	static const struct phy_reg phy_reg_init_1[] = {
++		{ 0x14, 0x94c0 },
++
++		/*
++		 * Tx Error Issue
++		 * enhance line driver power
++		 */
+ 		{ 0x1f, 0x0002 },
+ 		{ 0x06, 0x5561 },
+ 		{ 0x1f, 0x0005 },
+ 		{ 0x05, 0x8332 },
+-		{ 0x06, 0x5561 }
++		{ 0x06, 0x5561 },
++
++		/*
++		 * Can not link to 1Gbps with bad cable
++		 * Decrease SNR threshold form 21.07dB to 19.04dB
++		 */
++		{ 0x1f, 0x0001 },
++		{ 0x17, 0x0cc0 },
++
++		{ 0x1f, 0x0000 },
++		{ 0x0d, 0xf880 }
+ 	};
++	void __iomem *ioaddr = tp->mmio_addr;
++	const struct firmware *fw;
+ 
+ 	rtl_phy_write(ioaddr, phy_reg_init_0, ARRAY_SIZE(phy_reg_init_0));
+ 
++	/*
++	 * Rx Error Issue
++	 * Fine Tune Switching regulator parameter
++	 */
+ 	mdio_write(ioaddr, 0x1f, 0x0002);
+ 	mdio_plus_minus(ioaddr, 0x0b, 0x0010, 0x00ef);
+ 	mdio_plus_minus(ioaddr, 0x0c, 0xa200, 0x5d00);
+ 
+-	rtl_phy_write(ioaddr, phy_reg_init_1, ARRAY_SIZE(phy_reg_init_1));
+-
+ 	if (rtl8168d_efuse_read(ioaddr, 0x01) == 0xb1) {
+ 		static const struct phy_reg phy_reg_init[] = {
+ 			{ 0x1f, 0x0002 },
+@@ -1802,22 +1885,33 @@ static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
+ 		rtl_phy_write(ioaddr, phy_reg_init, ARRAY_SIZE(phy_reg_init));
+ 	}
+ 
++	/* RSET couple improve */
+ 	mdio_write(ioaddr, 0x1f, 0x0002);
+ 	mdio_patch(ioaddr, 0x0d, 0x0300);
+ 	mdio_patch(ioaddr, 0x0f, 0x0010);
+ 
++	/* Fine tune PLL performance */
+ 	mdio_write(ioaddr, 0x1f, 0x0002);
+ 	mdio_plus_minus(ioaddr, 0x02, 0x0100, 0x0600);
+ 	mdio_plus_minus(ioaddr, 0x03, 0x0000, 0xe000);
+ 
+-#ifdef CONFIG_BROKEN
+-	rtl_phy_write(ioaddr, phy_reg_init_2, ARRAY_SIZE(phy_reg_init_2));
+-#endif
++	mdio_write(ioaddr, 0x1f, 0x0005);
++	mdio_write(ioaddr, 0x05, 0x001b);
++	if (mdio_read(ioaddr, 0x06) == 0xbf00 &&
++	    request_firmware(&fw, FIRMWARE_8168D_1, &tp->pci_dev->dev) == 0) {
++		rtl_phy_write_fw(tp, fw);
++		release_firmware(fw);
++	} else {
++		netif_warn(tp, probe, tp->dev, "unable to apply firmware patch\n");
++	}
++
++	mdio_write(ioaddr, 0x1f, 0x0000);
+ }
+ 
+-static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
++static void rtl8168d_2_hw_phy_config(struct rtl8169_private *tp)
+ {
+ 	static const struct phy_reg phy_reg_init_0[] = {
++		/* Channel Estimation */
+ 		{ 0x1f, 0x0001 },
+ 		{ 0x06, 0x4064 },
+ 		{ 0x07, 0x2863 },
+@@ -1836,12 +1930,28 @@ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
+ 		{ 0x1a, 0x05ad },
+ 		{ 0x14, 0x94c0 },
+ 
++		/*
++		 * Tx Error Issue
++		 * enhance line driver power
++		 */
+ 		{ 0x1f, 0x0002 },
+ 		{ 0x06, 0x5561 },
+ 		{ 0x1f, 0x0005 },
+ 		{ 0x05, 0x8332 },
+-		{ 0x06, 0x5561 }
++		{ 0x06, 0x5561 },
++
++		/*
++		 * Can not link to 1Gbps with bad cable
++		 * Decrease SNR threshold form 21.07dB to 19.04dB
++		 */
++		{ 0x1f, 0x0001 },
++		{ 0x17, 0x0cc0 },
++
++		{ 0x1f, 0x0000 },
++		{ 0x0d, 0xf880 }
+ 	};
++	void __iomem *ioaddr = tp->mmio_addr;
++	const struct firmware *fw;
+ 
+ 	rtl_phy_write(ioaddr, phy_reg_init_0, ARRAY_SIZE(phy_reg_init_0));
+ 
+@@ -1885,19 +1995,26 @@ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
+ 		rtl_phy_write(ioaddr, phy_reg_init, ARRAY_SIZE(phy_reg_init));
+ 	}
+ 
++	/* Fine tune PLL performance */
+ 	mdio_write(ioaddr, 0x1f, 0x0002);
+ 	mdio_plus_minus(ioaddr, 0x02, 0x0100, 0x0600);
+ 	mdio_plus_minus(ioaddr, 0x03, 0x0000, 0xe000);
+ 
+-	mdio_write(ioaddr, 0x1f, 0x0001);
+-	mdio_write(ioaddr, 0x17, 0x0cc0);
+-
++	/* Switching regulator Slew rate */
+ 	mdio_write(ioaddr, 0x1f, 0x0002);
+ 	mdio_patch(ioaddr, 0x0f, 0x0017);
+ 
+-#ifdef CONFIG_BROKEN
+-	rtl_phy_write(ioaddr, phy_reg_init_1, ARRAY_SIZE(phy_reg_init_1));
+-#endif
++	mdio_write(ioaddr, 0x1f, 0x0005);
++	mdio_write(ioaddr, 0x05, 0x001b);
++	if (mdio_read(ioaddr, 0x06) == 0xb300 &&
++	    request_firmware(&fw, FIRMWARE_8168D_2, &tp->pci_dev->dev) == 0) {
++		rtl_phy_write_fw(tp, fw);
++		release_firmware(fw);
++	} else {
++		netif_warn(tp, probe, tp->dev, "unable to apply firmware patch\n");
++	}
++
++	mdio_write(ioaddr, 0x1f, 0x0000);
+ }
+ 
+ static void rtl8168d_3_hw_phy_config(void __iomem *ioaddr)
+@@ -2035,10 +2152,10 @@ static void rtl_hw_phy_config(struct net_device *dev)
+ 		rtl8168cp_2_hw_phy_config(ioaddr);
+ 		break;
+ 	case RTL_GIGA_MAC_VER_25:
+-		rtl8168d_1_hw_phy_config(ioaddr);
++		rtl8168d_1_hw_phy_config(tp);
+ 		break;
+ 	case RTL_GIGA_MAC_VER_26:
+-		rtl8168d_2_hw_phy_config(ioaddr);
++		rtl8168d_2_hw_phy_config(tp);
+ 		break;
+ 	case RTL_GIGA_MAC_VER_27:
+ 		rtl8168d_3_hw_phy_config(ioaddr);
+-- 
+1.7.2.3
+

Modified: dists/trunk/linux-2.6/debian/patches/series/base
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/base	Wed Jan  5 02:33:34 2011	(r16773)
+++ dists/trunk/linux-2.6/debian/patches/series/base	Wed Jan  5 02:35:19 2011	(r16774)
@@ -4,7 +4,6 @@
 
 + features/all/drivers-media-dvb-usb-af9005-request_firmware.patch
 
-+ features/all/r8169-rtl8168d-1-2-request_firmware-2.patch
 + features/all/sound-pci-cs46xx-request_firmware.patch
 
 # patches from aufs2 repository, with s/EXPORT_SYMBOL/&_GPL/
@@ -49,3 +48,5 @@
 + features/all/watchdog-Improve-failure-message-and-documentation.patch
 + features/all/r8712u-Switch-driver-to-use-external-firmware.patch
 + features/all/r8712u-Fix-external-firmware-loading.patch
++ bugfix/all/btrfs-Require-CAP_SYS_ADMIN-for-filesystem-rebalance.patch
++ features/all/r8169-remove-the-firmware-of-RTL8111D.patch



More information about the Kernel-svn-changes mailing list