mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
	akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
	Jon Mason <mason@myri.com>,
	Jesse Barnes <jbarnes@virtuousgeek.org>
Subject: [099/244] PCI: Set PCI-E Max Payload Size on fabric
Date: Wed, 28 Sep 2011 15:01:03 -0700	[thread overview]
Message-ID: <20110928220135.776796691@clark.kroah.org> (raw)
In-Reply-To: <20110928220225.GA27128@kroah.com>

3.0-stable review patch.  If anyone has any objections, please let us know.

------------------

From: Jon Mason <mason@myri.com>

commit b03e7495a862b028294f59fc87286d6d78ee7fa1 upstream.

On a given PCI-E fabric, each device, bridge, and root port can have a
different PCI-E maximum payload size.  There is a sizable performance
boost for having the largest possible maximum payload size on each PCI-E
device.  However, if improperly configured, fatal bus errors can occur.
Thus, it is important to ensure that PCI-E payloads sends by a device
are never larger than the MPS setting of all devices on the way to the
destination.

This can be achieved two ways:

- A conservative approach is to use the smallest common denominator of
  the entire tree below a root complex for every device on that fabric.

This means for example that having a 128 bytes MPS USB controller on one
leg of a switch will dramatically reduce performances of a video card or
10GE adapter on another leg of that same switch.

It also means that any hierarchy supporting hotplug slots (including
expresscard or thunderbolt I suppose, dbl check that) will have to be
entirely clamped to 128 bytes since we cannot predict what will be
plugged into those slots, and we cannot change the MPS on a "live"
system.

- A more optimal way is possible, if it falls within a couple of
  constraints:
* The top-level host bridge will never generate packets larger than the
  smallest TLP (or if it can be controlled independently from its MPS at
  least)
* The device will never generate packets larger than MPS (which can be
  configured via MRRS)
* No support of direct PCI-E <-> PCI-E transfers between devices without
  some additional code to specifically deal with that case

Then we can use an approach that basically ignores downstream requests
and focuses exclusively on upstream requests. In that case, all we need
to care about is that a device MPS is no larger than its parent MPS,
which allows us to keep all switches/bridges to the max MPS supported by
their parent and eventually the PHB.

In this case, your USB controller would no longer "starve" your 10GE
Ethernet and your hotplug slots won't affect your global MPS.
Additionally, the hotplugged devices themselves can be configured to a
larger MPS up to the value configured in the hotplug bridge.

To choose between the two available options, two PCI kernel boot args
have been added to the PCI calls.  "pcie_bus_safe" will provide the
former behavior, while "pcie_bus_perf" will perform the latter behavior.
By default, the latter behavior is used.

NOTE: due to the location of the enablement, each arch will need to add
calls to this function.  This patch only enables x86.

This patch includes a number of changes recommended by Benjamin
Herrenschmidt.

Tested-by: Jordan_Hargrave@dell.com
Signed-off-by: Jon Mason <mason@myri.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/x86/pci/acpi.c              |    9 ++
 drivers/pci/hotplug/pcihp_slot.c |   45 ------------
 drivers/pci/pci.c                |   67 ++++++++++++++++++
 drivers/pci/probe.c              |  145 +++++++++++++++++++++++++++++++++++++++
 include/linux/pci.h              |   15 +++-
 5 files changed, 236 insertions(+), 45 deletions(-)

--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -361,6 +361,15 @@ struct pci_bus * __devinit pci_acpi_scan
 		}
 	}
 
+	/* After the PCI-E bus has been walked and all devices discovered,
+	 * configure any settings of the fabric that might be necessary.
+	 */
+	if (bus) {
+		struct pci_bus *child;
+		list_for_each_entry(child, &bus->children, node)
+			pcie_bus_configure_settings(child, child->self->pcie_mpss);
+	}
+
 	if (!bus)
 		kfree(sd);
 
--- a/drivers/pci/hotplug/pcihp_slot.c
+++ b/drivers/pci/hotplug/pcihp_slot.c
@@ -158,47 +158,6 @@ static void program_hpp_type2(struct pci
 	 */
 }
 
-/* Program PCIE MaxPayload setting on device: ensure parent maxpayload <= device */
-static int pci_set_payload(struct pci_dev *dev)
-{
-       int pos, ppos;
-       u16 pctl, psz;
-       u16 dctl, dsz, dcap, dmax;
-       struct pci_dev *parent;
-
-       parent = dev->bus->self;
-       pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
-       if (!pos)
-               return 0;
-
-       /* Read Device MaxPayload capability and setting */
-       pci_read_config_word(dev, pos + PCI_EXP_DEVCTL, &dctl);
-       pci_read_config_word(dev, pos + PCI_EXP_DEVCAP, &dcap);
-       dsz = (dctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5;
-       dmax = (dcap & PCI_EXP_DEVCAP_PAYLOAD);
-
-       /* Read Parent MaxPayload setting */
-       ppos = pci_find_capability(parent, PCI_CAP_ID_EXP);
-       if (!ppos)
-               return 0;
-       pci_read_config_word(parent, ppos + PCI_EXP_DEVCTL, &pctl);
-       psz = (pctl &  PCI_EXP_DEVCTL_PAYLOAD) >> 5;
-
-       /* If parent payload > device max payload -> error
-        * If parent payload > device payload -> set speed
-        * If parent payload <= device payload -> do nothing
-        */
-       if (psz > dmax)
-               return -1;
-       else if (psz > dsz) {
-               dev_info(&dev->dev, "Setting MaxPayload to %d\n", 128 << psz);
-               pci_write_config_word(dev, pos + PCI_EXP_DEVCTL,
-                                     (dctl & ~PCI_EXP_DEVCTL_PAYLOAD) +
-                                     (psz << 5));
-       }
-       return 0;
-}
-
 void pci_configure_slot(struct pci_dev *dev)
 {
 	struct pci_dev *cdev;
@@ -210,9 +169,7 @@ void pci_configure_slot(struct pci_dev *
 			(dev->class >> 8) == PCI_CLASS_BRIDGE_PCI)))
 		return;
 
-       ret = pci_set_payload(dev);
-       if (ret)
-               dev_warn(&dev->dev, "could not set device max payload\n");
+	pcie_bus_configure_settings(dev->bus, dev->bus->self->pcie_mpss);
 
 	memset(&hpp, 0, sizeof(hpp));
 	ret = pci_get_hp_params(dev, &hpp);
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -77,6 +77,8 @@ unsigned long pci_cardbus_mem_size = DEF
 unsigned long pci_hotplug_io_size  = DEFAULT_HOTPLUG_IO_SIZE;
 unsigned long pci_hotplug_mem_size = DEFAULT_HOTPLUG_MEM_SIZE;
 
+enum pcie_bus_config_types pcie_bus_config = PCIE_BUS_PERFORMANCE;
+
 /*
  * The default CLS is used if arch didn't set CLS explicitly and not
  * all pci devices agree on the same value.  Arch can override either
@@ -3223,6 +3225,67 @@ out:
 EXPORT_SYMBOL(pcie_set_readrq);
 
 /**
+ * pcie_get_mps - get PCI Express maximum payload size
+ * @dev: PCI device to query
+ *
+ * Returns maximum payload size in bytes
+ *    or appropriate error value.
+ */
+int pcie_get_mps(struct pci_dev *dev)
+{
+	int ret, cap;
+	u16 ctl;
+
+	cap = pci_pcie_cap(dev);
+	if (!cap)
+		return -EINVAL;
+
+	ret = pci_read_config_word(dev, cap + PCI_EXP_DEVCTL, &ctl);
+	if (!ret)
+		ret = 128 << ((ctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5);
+
+	return ret;
+}
+
+/**
+ * pcie_set_mps - set PCI Express maximum payload size
+ * @dev: PCI device to query
+ * @rq: maximum payload size in bytes
+ *    valid values are 128, 256, 512, 1024, 2048, 4096
+ *
+ * If possible sets maximum payload size
+ */
+int pcie_set_mps(struct pci_dev *dev, int mps)
+{
+	int cap, err = -EINVAL;
+	u16 ctl, v;
+
+	if (mps < 128 || mps > 4096 || !is_power_of_2(mps))
+		goto out;
+
+	v = ffs(mps) - 8;
+	if (v > dev->pcie_mpss)
+		goto out;
+	v <<= 5;
+
+	cap = pci_pcie_cap(dev);
+	if (!cap)
+		goto out;
+
+	err = pci_read_config_word(dev, cap + PCI_EXP_DEVCTL, &ctl);
+	if (err)
+		goto out;
+
+	if ((ctl & PCI_EXP_DEVCTL_PAYLOAD) != v) {
+		ctl &= ~PCI_EXP_DEVCTL_PAYLOAD;
+		ctl |= v;
+		err = pci_write_config_word(dev, cap + PCI_EXP_DEVCTL, ctl);
+	}
+out:
+	return err;
+}
+
+/**
  * pci_select_bars - Make BAR mask from the type of resource
  * @dev: the PCI device for which BAR mask is made
  * @flags: resource type mask to be selected
@@ -3505,6 +3568,10 @@ static int __init pci_setup(char *str)
 				pci_hotplug_io_size = memparse(str + 9, &str);
 			} else if (!strncmp(str, "hpmemsize=", 10)) {
 				pci_hotplug_mem_size = memparse(str + 10, &str);
+			} else if (!strncmp(str, "pcie_bus_safe", 13)) {
+				pcie_bus_config = PCIE_BUS_SAFE;
+			} else if (!strncmp(str, "pcie_bus_perf", 13)) {
+				pcie_bus_config = PCIE_BUS_PERFORMANCE;
 			} else {
 				printk(KERN_ERR "PCI: Unknown option `%s'\n",
 						str);
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -860,6 +860,8 @@ void set_pcie_port_type(struct pci_dev *
 	pdev->pcie_cap = pos;
 	pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
 	pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
+	pci_read_config_word(pdev, pos + PCI_EXP_DEVCAP, &reg16);
+	pdev->pcie_mpss = reg16 & PCI_EXP_DEVCAP_PAYLOAD;
 }
 
 void set_pcie_hotplug_bridge(struct pci_dev *pdev)
@@ -1327,6 +1329,149 @@ int pci_scan_slot(struct pci_bus *bus, i
 	return nr;
 }
 
+static int pcie_find_smpss(struct pci_dev *dev, void *data)
+{
+	u8 *smpss = data;
+
+	if (!pci_is_pcie(dev))
+		return 0;
+
+	/* For PCIE hotplug enabled slots not connected directly to a
+	 * PCI-E root port, there can be problems when hotplugging
+	 * devices.  This is due to the possibility of hotplugging a
+	 * device into the fabric with a smaller MPS that the devices
+	 * currently running have configured.  Modifying the MPS on the
+	 * running devices could cause a fatal bus error due to an
+	 * incoming frame being larger than the newly configured MPS.
+	 * To work around this, the MPS for the entire fabric must be
+	 * set to the minimum size.  Any devices hotplugged into this
+	 * fabric will have the minimum MPS set.  If the PCI hotplug
+	 * slot is directly connected to the root port and there are not
+	 * other devices on the fabric (which seems to be the most
+	 * common case), then this is not an issue and MPS discovery
+	 * will occur as normal.
+	 */
+	if (dev->is_hotplug_bridge && (!list_is_singular(&dev->bus->devices) ||
+	    dev->bus->self->pcie_type != PCI_EXP_TYPE_ROOT_PORT))
+		*smpss = 0;
+
+	if (*smpss > dev->pcie_mpss)
+		*smpss = dev->pcie_mpss;
+
+	return 0;
+}
+
+static void pcie_write_mps(struct pci_dev *dev, int mps)
+{
+	int rc, dev_mpss;
+
+	dev_mpss = 128 << dev->pcie_mpss;
+
+	if (pcie_bus_config == PCIE_BUS_PERFORMANCE) {
+		if (dev->bus->self) {
+			dev_dbg(&dev->bus->dev, "Bus MPSS %d\n",
+				128 << dev->bus->self->pcie_mpss);
+
+			/* For "MPS Force Max", the assumption is made that
+			 * downstream communication will never be larger than
+			 * the MRRS.  So, the MPS only needs to be configured
+			 * for the upstream communication.  This being the case,
+			 * walk from the top down and set the MPS of the child
+			 * to that of the parent bus.
+			 */
+			mps = 128 << dev->bus->self->pcie_mpss;
+			if (mps > dev_mpss)
+				dev_warn(&dev->dev, "MPS configured higher than"
+					 " maximum supported by the device.  If"
+					 " a bus issue occurs, try running with"
+					 " pci=pcie_bus_safe.\n");
+		}
+
+		dev->pcie_mpss = ffs(mps) - 8;
+	}
+
+	rc = pcie_set_mps(dev, mps);
+	if (rc)
+		dev_err(&dev->dev, "Failed attempting to set the MPS\n");
+}
+
+static void pcie_write_mrrs(struct pci_dev *dev, int mps)
+{
+	int rc, mrrs;
+
+	if (pcie_bus_config == PCIE_BUS_PERFORMANCE) {
+		int dev_mpss = 128 << dev->pcie_mpss;
+
+		/* For Max performance, the MRRS must be set to the largest
+		 * supported value.  However, it cannot be configured larger
+		 * than the MPS the device or the bus can support.  This assumes
+		 * that the largest MRRS available on the device cannot be
+		 * smaller than the device MPSS.
+		 */
+		mrrs = mps < dev_mpss ? mps : dev_mpss;
+	} else
+		/* In the "safe" case, configure the MRRS for fairness on the
+		 * bus by making all devices have the same size
+		 */
+		mrrs = mps;
+
+
+	/* MRRS is a R/W register.  Invalid values can be written, but a
+	 * subsiquent read will verify if the value is acceptable or not.
+	 * If the MRRS value provided is not acceptable (e.g., too large),
+	 * shrink the value until it is acceptable to the HW.
+ 	 */
+	while (mrrs != pcie_get_readrq(dev) && mrrs >= 128) {
+		rc = pcie_set_readrq(dev, mrrs);
+		if (rc)
+			dev_err(&dev->dev, "Failed attempting to set the MRRS\n");
+
+		mrrs /= 2;
+	}
+}
+
+static int pcie_bus_configure_set(struct pci_dev *dev, void *data)
+{
+	int mps = 128 << *(u8 *)data;
+
+	if (!pci_is_pcie(dev))
+		return 0;
+
+	dev_info(&dev->dev, "Dev MPS %d MPSS %d MRRS %d\n",
+		 pcie_get_mps(dev), 128<<dev->pcie_mpss, pcie_get_readrq(dev));
+
+	pcie_write_mps(dev, mps);
+	pcie_write_mrrs(dev, mps);
+
+	dev_info(&dev->dev, "Dev MPS %d MPSS %d MRRS %d\n",
+		 pcie_get_mps(dev), 128<<dev->pcie_mpss, pcie_get_readrq(dev));
+
+	return 0;
+}
+
+/* pcie_bus_configure_mps requires that pci_walk_bus work in a top-down,
+ * parents then children fashion.  If this changes, then this code will not
+ * work as designed.
+ */
+void pcie_bus_configure_settings(struct pci_bus *bus, u8 mpss)
+{
+	u8 smpss = mpss;
+
+	if (!bus->self)
+		return;
+
+	if (!pci_is_pcie(bus->self))
+		return;
+
+	if (pcie_bus_config == PCIE_BUS_SAFE) {
+		pcie_find_smpss(bus->self, &smpss);
+		pci_walk_bus(bus, pcie_find_smpss, &smpss);
+	}
+
+	pcie_bus_configure_set(bus->self, &smpss);
+	pci_walk_bus(bus, pcie_bus_configure_set, &smpss);
+}
+
 unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
 {
 	unsigned int devfn, pass, max = bus->secondary;
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -251,7 +251,8 @@ struct pci_dev {
 	u8		revision;	/* PCI revision, low byte of class word */
 	u8		hdr_type;	/* PCI header type (`multi' flag masked out) */
 	u8		pcie_cap;	/* PCI-E capability offset */
-	u8		pcie_type;	/* PCI-E device/port type */
+	u8		pcie_type:4;	/* PCI-E device/port type */
+	u8		pcie_mpss:3;	/* PCI-E Max Payload Size Supported */
 	u8		rom_base_reg;	/* which config register controls the ROM */
 	u8		pin;  		/* which interrupt pin this device uses */
 
@@ -617,6 +618,16 @@ struct pci_driver {
 /* these external functions are only available when PCI support is enabled */
 #ifdef CONFIG_PCI
 
+extern void pcie_bus_configure_settings(struct pci_bus *bus, u8 smpss);
+
+enum pcie_bus_config_types {
+	PCIE_BUS_PERFORMANCE,
+	PCIE_BUS_SAFE,
+	PCIE_BUS_PEER2PEER,
+};
+
+extern enum pcie_bus_config_types pcie_bus_config;
+
 extern struct bus_type pci_bus_type;
 
 /* Do NOT directly access these two variables, unless you are arch specific pci
@@ -796,6 +807,8 @@ int pcix_get_mmrbc(struct pci_dev *dev);
 int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc);
 int pcie_get_readrq(struct pci_dev *dev);
 int pcie_set_readrq(struct pci_dev *dev, int rq);
+int pcie_get_mps(struct pci_dev *dev);
+int pcie_set_mps(struct pci_dev *dev, int mps);
 int __pci_reset_function(struct pci_dev *dev);
 int pci_reset_function(struct pci_dev *dev);
 void pci_update_resource(struct pci_dev *dev, int resno);



  parent reply	other threads:[~2011-09-28 22:44 UTC|newest]

Thread overview: 271+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-28 22:02 [000/244] 3.0.5-stable review Greg KH
2011-09-28 21:59 ` [001/244] kernel/printk: do not turn off bootconsole in printk_late_init() if keep_bootcon Greg KH
2011-09-28 21:59 ` [002/244] rapidio: fix use of non-compatible registers Greg KH
2011-09-28 21:59 ` [003/244] arch/powerpc/sysdev/fsl_rio.c: correct IECSR register clear value Greg KH
2011-09-28 21:59 ` [004/244] sfi: table irq 0xFF means no interrupt Greg KH
2011-09-29 10:21   ` Kirill A. Shutemov
2011-09-29 14:18     ` Greg KH
2011-09-29 14:33       ` Kirill A. Shutemov
2011-09-29 18:56         ` Greg KH
2011-09-28 21:59 ` [005/244] ASoC: soc-jack: Fix checking return value of request_any_context_irq Greg KH
2011-09-28 21:59 ` [006/244] ASoC: ad193x: fix registers definition Greg KH
2011-09-28 21:59 ` [007/244] ASoC: ad193x: fix dac word len setting Greg KH
2011-09-28 21:59 ` [008/244] omap-serial: Allow IXON and IXOFF to be disabled Greg KH
2011-09-28 21:59 ` [009/244] serial: 8250_pnp: add Intermec CV60 touchscreen device Greg KH
2011-09-28 21:59 ` [010/244] 8250_pci: add support for Rosewill RC-305 4x serial port card Greg KH
2011-09-28 21:59 ` [011/244] 8250: Fix race condition in serial8250_backup_timeout() Greg KH
2011-09-28 21:59 ` [012/244] tty: Add "spi:" prefix for spi modalias Greg KH
2011-09-28 21:59 ` [013/244] TTY: pty, fix pty counting Greg KH
2011-09-28 21:59 ` [014/244] USB: ftdi_sio: add Calao reference board support Greg KH
2011-09-28 21:59 ` [015/244] usb: s5p-ehci: fix a NULL pointer deference Greg KH
2011-09-28 21:59 ` [016/244] USB option driver add PID of Huawei Vodafone K3806 Greg KH
2011-09-28 21:59 ` [017/244] USB option driver add PID of Huawei Vodafone K4605 Greg KH
2011-09-28 21:59 ` [018/244] USB: option: add YUGA device id to driver Greg KH
2011-09-28 21:59 ` [019/244] USB option driver K3765/K4505 avoid CDC_DATA interface Greg KH
2011-09-28 21:59 ` [020/244] usb: musb: cppi: fix build errors due to DBG and missing musb variable Greg KH
2011-09-28 21:59 ` [021/244] USB: EHCI: Do not rely on PORT_SUSPEND to stop USB resuming in ehci_bus_resume() Greg KH
2011-09-28 21:59 ` [022/244] xHCI: fix port U3 status check condition Greg KH
2011-09-28 21:59 ` [023/244] xHCI: report USB2 port in resuming as suspend Greg KH
2011-09-28 21:59 ` [024/244] xhci: Fix memory leak during failed enqueue Greg KH
2011-09-28 21:59 ` [025/244] xhci: Fix failed enqueue in the middle of isoch TD Greg KH
2011-09-28 21:59 ` [026/244] xhci: Remove TDs from TD lists when URBs are canceled Greg KH
2011-09-28 21:59 ` [027/244] xhci: Handle zero-length isochronous packets Greg KH
2011-09-28 21:59 ` [028/244] sendmmsg/sendmsg: fix unsafe user pointer access Greg KH
2011-09-28 21:59 ` [029/244] ath9k: Fix PS wrappers in ath9k_set_coverage_class Greg KH
2011-09-28 21:59 ` [030/244] ibmveth: Fix leak when recycling skb and hypervisor returns error Greg KH
2011-09-28 21:59 ` [031/244] carl9170: Fix mismatch in carl9170_op_set_key mutex lock-unlock Greg KH
2011-09-28 21:59 ` [032/244] ath9k_hw: Fix STA (AR9485) bringup issue due to incorrect MAC address Greg KH
2011-09-28 21:59 ` [033/244] rt2x00: do not drop usb dev reference counter on suspend Greg KH
2011-09-28 21:59 ` [034/244] savagedb: Fix typo causing regression in savage4 series video chip detection Greg KH
2011-09-28 21:59 ` [035/244] pata_via: disable ATAPI DMA on AVERATEC 3200 Greg KH
2011-09-28 22:00 ` [036/244] atm: br2684: Fix oops due to skb->dev being NULL Greg KH
2011-09-28 22:00 ` [037/244] rt2x00: fix crash in rt2800usb_write_tx_desc Greg KH
2011-09-28 22:00 ` [038/244] rt2x00: fix crash in rt2800usb_get_txwi Greg KH
2011-09-28 22:00 ` [039/244] sparc64: remove unnecessary macros from spinlock_64.h Greg KH
2011-09-28 22:00 ` [040/244] sparc32: unbreak arch_write_unlock() Greg KH
2011-09-28 22:00 ` [041/244] sparc: Allow handling signals when stack is corrupted Greg KH
2011-09-28 22:00 ` [042/244] sparc64: Set HAVE_C_RECORDMCOUNT Greg KH
2011-09-28 22:00 ` [043/244] sparc: fix array bounds error setting up PCIC NMI trap Greg KH
2011-09-28 22:00 ` [044/244] sparc32,sun4d: Change IPI IRQ level to prevent collision between IPI and timer interrupt Greg KH
2011-09-28 22:00 ` [045/244] regulator: tps65910: Add missing breaks in switch/case Greg KH
2011-09-28 22:00 ` [046/244] sparc64: Only Panther cheetah+ chips have POPC Greg KH
2011-09-28 22:00 ` [047/244] drm/radeon/kms: add s/r quirk for Compaq Presario V5245EU Greg KH
2011-09-28 22:00 ` [048/244] drm/radeon/kms: evergreen & ni reset SPI block on CP resume Greg KH
2011-09-28 22:00 ` [049/244] ARM: 7014/1: cache-l2x0: Fix L2 Cache size calculation Greg KH
2011-09-28 22:00 ` [050/244] md/linear: avoid corrupting structure while waiting for rcu_free to complete Greg KH
2011-09-28 22:00 ` [051/244] drm/radeon/kms: set a default max_pixel_clock Greg KH
2011-09-28 22:00 ` [052/244] drm/radeon/kms: make sure pci max read request size is valid on evergreen+ (v2) Greg KH
2011-09-28 22:00 ` [053/244] mm: page allocator: initialise ZLC for first zone eligible for zone_reclaim Greg KH
2011-09-28 22:00 ` [054/244] mm: page allocator: reconsider zones for allocation after direct reclaim Greg KH
2011-09-28 22:00 ` [055/244] igb: fix WOL on second port of i350 device Greg KH
2011-09-28 22:00 ` [056/244] MXC: iomux-v3: correct NO_PAD_CTRL definition Greg KH
2011-09-28 22:00 ` [057/244] alarmtimers: Avoid possible null pointer traversal Greg KH
2011-09-28 22:00 ` [058/244] alarmtimers: Memset itimerspec passed into alarm_timer_get Greg KH
2011-09-28 22:00 ` [059/244] alarmtimers: Avoid possible denial of service with high freq periodic timers Greg KH
2011-09-28 22:00 ` [060/244] rtc: Fix RTC PIE frequency limit Greg KH
2011-09-28 22:00 ` [061/244] sched: Separate the scheduler entry for preemption Greg KH
2011-09-28 22:00 ` [062/244] sched: Move blk_schedule_flush_plug() out of __schedule() Greg KH
2011-09-28 22:00 ` [063/244] sched: Fix a memory leak in __sdt_free() Greg KH
2011-09-28 22:00 ` [064/244] x86, perf: Check that current->mm is alive before getting user callchain Greg KH
2011-09-28 22:00 ` [065/244] mmc: rename mmc_host_clk_{ungate|gate} to mmc_host_clk_{hold|release} Greg KH
2011-09-28 22:00 ` [066/244] mmc: core: prevent aggressive clock gating racing with ios updates Greg KH
2011-09-28 22:00 ` [067/244] mmc: core: use non-reentrant workqueue for clock gating Greg KH
2011-09-28 22:00 ` [068/244] mmc: sdhci-s3c: Fix mmc card I/O problem Greg KH
2011-09-28 22:00 ` [069/244] xen: x86_32: do not enable iterrupts when returning from exception in interrupt context Greg KH
2011-09-28 22:00 ` [070/244] xen/smp: Warn user why they keel over - nosmp or noapic and what to use instead Greg KH
2011-09-28 22:00 ` [071/244] hwmon: (max16065) Fix current calculation Greg KH
2011-09-28 22:00 ` [072/244] ARM: 7081/1: mach-integrator: fix the clocksource Greg KH
2011-09-28 22:00 ` [073/244] ARM: davinci: da850 EVM: read mac address from SPI flash Greg KH
2011-09-28 22:00 ` [074/244] ARM: davinci: fix cache flush build error Greg KH
2011-09-28 22:00 ` [075/244] drm/nouveau: properly handle allocation failure in nouveau_sgdma_populate Greg KH
2011-09-28 22:00 ` [076/244] Avoid dereferencing a request_queue after last close Greg KH
2011-09-28 22:00 ` [077/244] md: Fix handling for devices from 2TB to 4TB in 0.90 metadata Greg KH
2011-09-28 22:00 ` [078/244] [media] nuvoton-cir: simplify raw IR sample handling Greg KH
2011-09-28 22:00 ` [079/244] [media] vp7045: fix buffer setup Greg KH
2011-09-28 22:00 ` [080/244] net/9p: fix client code to fail more gracefully on protocol error Greg KH
2011-09-28 22:00 ` [081/244] Fix the size of receive buffer packing onto VirtIO ring Greg KH
2011-09-28 22:00 ` [082/244] VirtIO can transfer VIRTQUEUE_NUM of pages Greg KH
2011-09-28 22:00 ` [083/244] fs/9p: Fid is not valid after a failed clunk Greg KH
2011-09-28 22:00 ` [084/244] fs/9p: When doing inode lookup compare qid details and inode mode bits Greg KH
2011-09-28 22:00 ` [085/244] fs/9p: Fix invalid mount options/args Greg KH
2011-09-28 22:00 ` [086/244] fs/9p: Always ask new inode in create Greg KH
2011-09-28 22:00 ` [087/244] net/9p: Fix the msize calculation Greg KH
2011-09-28 22:00 ` [088/244] 9p: close ACL leaks Greg KH
2011-09-28 22:00 ` [089/244] irda: fix smsc-ircc2 section mismatch warning Greg KH
2011-09-28 22:00 ` [090/244] iommu/amd: Dont take domain->lock recursivly Greg KH
2011-09-28 22:00 ` [091/244] iommu/amd: Make sure iommu->need_sync contains correct value Greg KH
2011-09-28 22:00 ` [092/244] ACPICA: Do not repair _TSS return package if _PSS is present Greg KH
2011-09-28 22:00 ` [093/244] fs/9p: Add fid before dentry instantiation Greg KH
2011-09-28 22:00 ` [094/244] fs/9p: Dont update file type when updating file attributes Greg KH
2011-09-28 22:00 ` [095/244] fs/9p: Add OS dependent open flags in 9p protocol Greg KH
2011-09-28 22:01 ` [096/244] net/9p: Fix kernel crash with msize 512K Greg KH
2011-09-28 22:01 ` [097/244] fs/9p: Always ask new inode in lookup for cache mode disabled Greg KH
2011-09-28 22:01 ` [098/244] fs/9p: Use protocol-defined value for lock/getlock type field Greg KH
2011-09-28 22:01 ` Greg KH [this message]
2011-09-30 22:33   ` [099/244] PCI: Set PCI-E Max Payload Size on fabric Bjorn Helgaas
2011-09-30 22:40     ` Jon Mason
2011-09-30 22:50       ` Bjorn Helgaas
2011-10-03 18:38     ` Greg KH
2011-09-28 22:01 ` [100/244] PCI: export pcie_bus_configure_settings symbol Greg KH
2011-09-28 22:01 ` [101/244] PCI: Remove MRRS modification from MPS setting code Greg KH
2011-09-28 22:01 ` [102/244] [SCSI] isci: fix sata response handling Greg KH
2011-09-28 22:01 ` [103/244] [SCSI] isci: fix 32-bit operation when CONFIG_HIGHMEM64G=n Greg KH
2011-09-28 22:01 ` [104/244] ASoC: MPC5200: replace of_device with platform_device Greg KH
2011-09-28 22:01 ` [105/244] [SCSI] hpsa: fix problem that OBDR devices are not detected Greg KH
2011-09-28 22:01 ` [106/244] [SCSI] hpsa: fix physical device lun and target numbering problem Greg KH
2011-09-28 22:01 ` [107/244] [SCSI] qla2xxx: Correct inadvertent loop state transitions during port-update handling Greg KH
2011-09-28 22:01 ` [108/244] iwlegacy: fix BUG_ON(info->control.rates[0].idx < 0) Greg KH
2011-09-28 22:01 ` [109/244] acpica: ACPI_MAX_SLEEP should be 2 sec, not 20 Greg KH
2011-09-28 22:01 ` [110/244] ath9k_hw: fix calibration on 5 ghz Greg KH
2011-09-28 22:01 ` [111/244] e1000: Fix driver to be used on PA RISC C8000 workstations Greg KH
2011-09-28 22:01 ` [112/244] ASoC: Fix reporting of partial jack updates Greg KH
2011-09-28 22:01 ` [113/244] ASoC: Blackfin: bf5xx-ad193x: Fix codec device name Greg KH
2011-09-28 22:01 ` [114/244] mfd: Fix value of WM8994_CONFIGURE_GPIO Greg KH
2011-09-28 22:01 ` [115/244] mfd: Fix initialisation of tps65910 interrupts Greg KH
2011-09-28 22:01 ` [116/244] mfd: Make omap-usb-host TLL mode work again Greg KH
2011-09-28 22:01 ` [117/244] genirq: Make irq_shutdown() symmetric vs. irq_startup again Greg KH
2011-09-28 22:01 ` [118/244] rtlwifi: rtl8192su: Fix problem connecting to HT-enabled AP Greg KH
2011-09-28 22:01 ` [119/244] rtlwifi: Fix problem when switching connections Greg KH
2011-09-28 22:01 ` [120/244] mac80211: fix missing sta_lock in __sta_info_destroy Greg KH
2011-09-28 22:01 ` [121/244] x86, iommu: Mark DMAR IRQ as non-threaded Greg KH
2011-09-28 22:01 ` [122/244] ALSA: HDA: Cirrus - fix "Surround Speaker" volume control name Greg KH
2011-09-28 22:01 ` [123/244] drm/radeon: Dont read from CP ring write pointer registers Greg KH
2011-09-28 22:01 ` [124/244] restore pinning the victim dentry in vfs_rmdir()/vfs_rename_dir() Greg KH
2011-09-28 22:01 ` [125/244] mm: sync vmalloc address space page tables in alloc_vm_area() Greg KH
2011-09-28 22:01 ` [126/244] drivers/leds/ledtrig-timer.c: fix broken sysfs delay handling Greg KH
2011-09-28 22:01 ` [127/244] drivers/cpufreq/pcc-cpufreq.c: avoid NULL pointer dereference Greg KH
2011-09-28 22:01 ` [128/244] workqueue: lock cwq access in drain_workqueue Greg KH
2011-09-28 22:01 ` [129/244] ALSA: pcm - fix race condition in wait_for_avail() Greg KH
2011-09-28 22:01 ` [130/244] ibmveth: Fix DMA unmap error Greg KH
2011-09-28 22:01 ` [131/244] ibmveth: Fix issue with DMA mapping failure Greg KH
2011-09-28 22:01 ` [132/244] ibmveth: Checksum offload is always disabled Greg KH
2011-09-28 22:01 ` [133/244] firewire: ohci: add no MSI quirk for O2Micro controller Greg KH
2011-09-28 22:01 ` [134/244] drm/radeon/kms: fix typo in r100_blit_copy Greg KH
2011-09-29  2:31   ` Deucher, Alexander
2011-09-29 18:55     ` Greg KH
2011-09-30  3:51       ` Deucher, Alexander
2011-09-28 22:01 ` [135/244] drm/radeon/kms: Make GPU/CPU page size handling consistent in blit code (v2) Greg KH
2011-09-28 22:01 ` [136/244] USB: xhci: Set change bit when warm reset change is set Greg KH
2011-09-28 22:01 ` [137/244] iwlagn: fix command queue timeout Greg KH
2011-09-28 22:01 ` [138/244] ALSA: hda/realtek - Fix auto-mute with HP+LO configuration Greg KH
2011-09-28 22:01 ` [139/244] cifs: fix possible memory corruption in CIFSFindNext Greg KH
2011-09-28 22:01 ` [140/244] Fix the conflict between rwpidforward and rw mount options Greg KH
2011-09-28 22:01 ` [141/244] ARM: Dove: fix second SPI initialization call Greg KH
2011-09-28 22:01 ` [142/244] floppy: use del_timer_sync() in init cleanup Greg KH
2011-09-28 22:01 ` [143/244] b43: Fix beacon problem in ad-hoc mode Greg KH
2011-09-28 22:01 ` [144/244] ixgbe: fix possible null buffer error Greg KH
2011-09-28 22:01 ` [145/244] XZ: Fix incorrect XZ_BUF_ERROR Greg KH
2011-09-28 22:01 ` [146/244] rt2800pci: Fix compiler error on PowerPC Greg KH
2011-09-28 22:01 ` [147/244] make /proc/$pid/numa_maps gather_stats() take variable page size Greg KH
2011-09-28 22:01 ` [148/244] break out numa_maps gather_pte_stats() checks Greg KH
2011-09-28 22:01 ` [149/244] teach /proc/$pid/numa_maps about transparent hugepages Greg KH
2011-09-28 22:01 ` [150/244] xen: use maximum reservation to limit amount of usable RAM Greg KH
2011-09-28 22:01 ` [151/244] xen/e820: if there is no dom0_mem=, dont tweak extra_pages Greg KH
2011-09-28 22:01 ` [152/244] wireless: Reset beacon_found while updating regulatory Greg KH
2011-09-28 22:01 ` [153/244] rtl2800usb: Fix incorrect storage of MAC address on big-endian platforms Greg KH
2011-09-28 22:01 ` [154/244] iwlagn: workaround bug crashing some APs Greg KH
2011-09-28 22:01 ` [155/244] blk-cgroup: be able to remove the record of unplugged device Greg KH
2011-09-28 22:02 ` [156/244] [SCSI] iscsi_tcp: fix locking around iscsi sk user data Greg KH
2011-09-28 22:02 ` [157/244] tg3: Fix io failures after chip reset Greg KH
2011-09-28 22:02 ` [158/244] ipc/mqueue.c: refactor failure handling Greg KH
2011-09-28 22:02 ` [159/244] ipc/mqueue.c: fix mq_open() return value Greg KH
2011-09-29 15:41   ` Doug Ledford
2011-09-29 17:57     ` Greg KH
2011-09-29 18:51       ` Doug Ledford
2011-09-29 19:08         ` Greg KH
2011-09-29 19:37           ` Andrew Morton
2011-09-29 20:00             ` Doug Ledford
2011-09-29 23:31           ` Doug Ledford
2011-09-29 23:39             ` Greg KH
2011-09-30  1:54               ` Doug Ledford
2011-09-29 23:41             ` Andrew Morton
2011-09-30  1:53               ` Doug Ledford
2011-09-28 22:02 ` [160/244] writeback: introduce .tagged_writepages for the WB_SYNC_NONE sync stage Greg KH
2011-09-28 22:02 ` [161/244] writeback: update dirtied_when for synced inode to prevent livelock Greg KH
2011-09-28 22:02 ` [162/244] [S390] qdio: clear shared DSCI before scheduling the queue handler Greg KH
2011-09-28 22:02 ` [163/244] tg3: Add 5719 and 5720 to EEE_CAP list Greg KH
2011-09-28 22:02 ` [164/244] tg3: Fix int selftest for recent devices Greg KH
2011-09-28 22:02 ` [165/244] ehci: refactor pci quirk to use standard dmi_check_system method Greg KH
2011-09-28 22:02 ` [166/244] ehci: add pci quirk for Ordissimo and RM Slate 100 too Greg KH
2011-09-28 22:02 ` [167/244] USB: PL2303: correctly handle baudrates above 115200 Greg KH
2011-09-28 22:02 ` [168/244] ASIX: Add AX88772B USB ID Greg KH
2011-09-28 22:02 ` [169/244] cdc_ncm: fix endianness problem Greg KH
2011-09-28 22:02 ` [170/244] [SCSI] libfc: Enhancement to RPORT state machine applicable only for VN2VN mode Greg KH
2011-09-28 22:02 ` [171/244] [SCSI] fcoe: Unable to select the exchangeID from offload pool for storage targets Greg KH
2011-09-28 22:02 ` [172/244] [SCSI] mpt2sas: Added DID_NO_CONNECT return when driver remove and avoid shutdown call Greg KH
2011-09-28 22:02 ` [173/244] [SCSI] mpt2sas: Adding support for customer specific branding Greg KH
2011-09-28 22:02 ` [174/244] perf, x86: Add model 45 SandyBridge support Greg KH
2011-09-28 22:02 ` [175/244] arp: fix rcu lockdep splat in arp_process() Greg KH
2011-09-28 22:02 ` [176/244] bridge: fix a possible net_device leak Greg KH
2011-09-28 22:02 ` [177/244] fib:fix BUG_ON in fib_nl_newrule when add new fib rule Greg KH
2011-09-28 22:02 ` [178/244] ipv4: some rt_iif -> rt_route_iif conversions Greg KH
2011-09-28 22:02 ` [179/244] ipv6: Fix ipv6_getsockopt for IPV6_2292PKTOPTIONS Greg KH
2011-09-28 22:02 ` [180/244] mcast: Fix source address selection for multicast listener report Greg KH
2011-09-28 22:02 ` [181/244] netfilter: TCP and raw fix for ip_route_me_harder Greg KH
2011-09-28 22:02 ` [182/244] net_sched: prio: use qdisc_dequeue_peeked Greg KH
2011-09-28 22:02 ` [183/244] Revert "sfc: Use write-combining to reduce TX latency" and follow-ups Greg KH
2011-09-28 22:02 ` [184/244] scm: Capture the full credentials of the scm sender Greg KH
2011-09-28 22:02 ` [185/244] tcp: fix validation of D-SACK Greg KH
2011-09-28 22:02 ` [186/244] tcp: initialize variable ecn_ok in syncookies path Greg KH
2011-09-28 22:02 ` [187/244] vlan: reset headers on accel emulation path Greg KH
2011-09-28 22:02 ` [188/244] xfrm: Perform a replay check after return from async codepaths Greg KH
2011-09-28 22:02 ` [189/244] bridge: Pseudo-header required for the checksum of ICMPv6 Greg KH
2011-09-28 22:02 ` [190/244] bridge: fix a possible use after free Greg KH
2011-09-28 22:02 ` [191/244] zorro: Defer device_register() until all devices have been identified Greg KH
2011-09-28 22:02 ` [192/244] TPM: Call tpm_transmit with correct size Greg KH
2011-09-28 22:02 ` [193/244] TPM: Zero buffer after copying to userspace Greg KH
2011-09-28 22:02 ` [194/244] [SCSI] lpfc 8.3.25: T10 DIF Fixes Greg KH
2011-09-28 22:02 ` [195/244] [SCSI] lpfc 8.3.25: Miscellaneous Bug fixes and code cleanup Greg KH
2011-09-28 22:02 ` [196/244] [SCSI] lpfc 8.3.25: Adapter Interface fixes and changes Greg KH
2011-09-28 22:02 ` [197/244] [SCSI] lpfc 8.3.25: Fabric and Target Discovery Fixes Greg KH
2011-09-28 22:02 ` [198/244] [SCSI] lpfc 8.3.25: PCI and SR-IOV Fixes Greg KH
2011-09-28 22:02 ` [199/244] [SCSI] isci: change sas phy timeouts from 54us to 59us Greg KH
2011-09-28 22:02 ` [200/244] [SCSI] isci: Leave requests alone if already terminating Greg KH
2011-09-28 22:02 ` [201/244] [SCSI] isci: fix event-get pointer increment Greg KH
2011-09-28 22:02 ` [202/244] ahci: RAID-mode SATA patch for Intel Panther Point DeviceIDs Greg KH
2011-09-28 22:02 ` [203/244] Bluetooth: Fix timeout on scanning for the second time Greg KH
2011-09-28 22:02 ` [204/244] [SCSI] libiscsi_tcp: fix LLD data allocation Greg KH
2011-09-28 22:02 ` [205/244] usb/host/pci-quirks.c: correct annotation of `ehci_dmi_nohandoff_table Greg KH
2011-09-28 22:02 ` [206/244] perf symbols: Fix ppc64 SEGV in dso__load_sym with debuginfo files Greg KH
2011-09-28 22:02 ` [207/244] ALSA: usb-audio - clear chip->probing on error exit Greg KH
2011-09-28 22:02 ` [208/244] drm/radeon/kms: fix DDIA enable on some rs690 systems Greg KH
2011-09-28 22:02 ` [209/244] ALSA: fm801: Fix double free in case of error in tuner detection Greg KH
2011-09-28 22:02 ` [210/244] ALSA: fm801: Gracefully handle failure of tuner auto-detect Greg KH
2011-09-28 22:02 ` [211/244] btrfs: fix d_off in the first dirent Greg KH
2011-09-28 22:02 ` [212/244] pci: Dont crash when reading mpss from root complex Greg KH
2011-09-28 22:02 ` [213/244] cnic: Fix interrupt logic Greg KH
2011-09-28 22:02 ` [214/244] cnic: Fix race conditions with firmware Greg KH
2011-09-28 22:02 ` [215/244] cnic: Randomize initial TCP port for iSCSI connections Greg KH
2011-09-28 22:03 ` [216/244] cnic: Improve NETDEV_UP event handling Greg KH
2011-09-28 22:03 ` [217/244] cnic, bnx2: Check iSCSI support early in bnx2_init_one() Greg KH
2011-09-28 22:03 ` [218/244] [SCSI] bnx2fc: Fix kernel panic when deleting NPIV ports Greg KH
2011-09-28 22:03 ` [219/244] [SCSI] bnx2fc: scsi_dma_unmap() not invoked on IO completions Greg KH
2011-09-28 22:03 ` [220/244] hwmon: (ds620) Fix handling of negative temperatures Greg KH
2011-09-28 22:03 ` [221/244] ARM: dma-mapping: free allocated page if unable to map Greg KH
2011-09-28 22:03 ` [222/244] ARM: 7091/1: errata: D-cache line maintenance operation by MVA may not succeed Greg KH
2011-09-28 22:03 ` [223/244] ARM: 7099/1: futex: preserve oldval in SMP __futex_atomic_op Greg KH
2011-09-28 22:03 ` [224/244] firmware loader: allow builtin firmware load even if usermodehelper is disabled Greg KH
2011-09-28 22:03 ` [225/244] ASoC: omap-mcbsp: Do not attempt to change DAI sysclk if stream is active Greg KH
2011-09-28 22:03 ` [226/244] ASoC: ssm2602: Re-enable oscillator after suspend Greg KH
2011-09-28 22:03 ` [227/244] ALSA: hda/realtek - Avoid bogus HP-pin assignment Greg KH
2011-09-28 22:03 ` [228/244] ALSA: HDA: No power nids on 92HD93 Greg KH
2011-09-29  4:56   ` David Henningsson
2011-09-29 18:58     ` Greg KH
2011-09-28 22:03 ` [229/244] ALSA: usb-audio: Check for possible chip NULL pointer before clearing probing flag Greg KH
2011-09-28 22:03 ` [230/244] memcg: fix vmscan count in small memcgs Greg KH
2011-09-28 22:03 ` [231/244] [SCSI] cxgb3i: convert cdev->l2opt to use rcu to prevent NULL dereference Greg KH
2011-09-28 22:03 ` [232/244] [SCSI] 3w-9xxx: fix iommu_iova leak Greg KH
2011-09-28 22:03 ` [233/244] [SCSI] aacraid: reset should disable MSI interrupt Greg KH
2011-09-28 22:03 ` [234/244] [SCSI] libsas: fix failure to revalidate domain for anything but the first expander child Greg KH
2011-09-28 22:03 ` [235/244] [SCSI] scsi: qla4xxx needs libiscsi.o Greg KH
2011-09-28 22:03 ` [236/244] cfg80211: Fix validation of AKM suites Greg KH
2011-09-28 22:03 ` [237/244] ath9k_hw: Fix Rx DMA stuck for AR9003 chips Greg KH
2011-09-28 22:03 ` [238/244] iwlegacy: fix command queue timeout Greg KH
2011-09-28 22:03 ` [239/244] rtlwifi: rtl8192cu: Fix unitialized struct Greg KH
2011-09-28 22:03 ` [240/244] iwlegacy: do not use interruptible waits Greg KH
2011-09-28 22:03 ` [241/244] iwlagn: fix dangling scan request Greg KH
2011-09-28 22:03 ` [242/244] bnx2x: fix hw attention handling Greg KH
2011-09-28 22:03 ` [243/244] bnx2x: add missing break in bnx2x_dcbnl_get_cap Greg KH
2011-09-28 22:03 ` [244/244] block: Free queue resources at blk_release_queue() Greg KH
2011-09-28 22:06 ` [000/244] 3.0.5-stable review Greg KH
2011-09-28 22:26 ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110928220135.776796691@clark.kroah.org \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=jbarnes@virtuousgeek.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mason@myri.com \
    --cc=stable-review@kernel.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome