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,
	Mel Gorman <mel@csn.ul.ie>, David Rientjes <rientjes@google.com>,
	Kyle McMartin <kyle@mcmartin.ca>
Subject: [patch 123/176] mm: page allocator: adjust the per-cpu counter threshold when memory is low
Date: Tue, 15 Feb 2011 16:21:31 -0800	[thread overview]
Message-ID: <20110216002111.333832853@clark.kroah.org> (raw)
In-Reply-To: <20110216002212.GA9246@kroah.com>

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

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

From: Mel Gorman <mel@csn.ul.ie>

commit 88f5acf88ae6a9778f6d25d0d5d7ec2d57764a97 upstream.

Commit aa45484 ("calculate a better estimate of NR_FREE_PAGES when memory
is low") noted that watermarks were based on the vmstat NR_FREE_PAGES.  To
avoid synchronization overhead, these counters are maintained on a per-cpu
basis and drained both periodically and when a threshold is above a
threshold.  On large CPU systems, the difference between the estimate and
real value of NR_FREE_PAGES can be very high.  The system can get into a
case where pages are allocated far below the min watermark potentially
causing livelock issues.  The commit solved the problem by taking a better
reading of NR_FREE_PAGES when memory was low.

Unfortately, as reported by Shaohua Li this accurate reading can consume a
large amount of CPU time on systems with many sockets due to cache line
bouncing.  This patch takes a different approach.  For large machines
where counter drift might be unsafe and while kswapd is awake, the per-cpu
thresholds for the target pgdat are reduced to limit the level of drift to
what should be a safe level.  This incurs a performance penalty in heavy
memory pressure by a factor that depends on the workload and the machine
but the machine should function correctly without accidentally exhausting
all memory on a node.  There is an additional cost when kswapd wakes and
sleeps but the event is not expected to be frequent - in Shaohua's test
case, there was one recorded sleep and wake event at least.

To ensure that kswapd wakes up, a safe version of zone_watermark_ok() is
introduced that takes a more accurate reading of NR_FREE_PAGES when called
from wakeup_kswapd, when deciding whether it is really safe to go back to
sleep in sleeping_prematurely() and when deciding if a zone is really
balanced or not in balance_pgdat().  We are still using an expensive
function but limiting how often it is called.

When the test case is reproduced, the time spent in the watermark
functions is reduced.  The following report is on the percentage of time
spent cumulatively spent in the functions zone_nr_free_pages(),
zone_watermark_ok(), __zone_watermark_ok(), zone_watermark_ok_safe(),
zone_page_state_snapshot(), zone_page_state().

vanilla                      11.6615%
disable-threshold            0.2584%

David said:

: We had to pull aa454840 "mm: page allocator: calculate a better estimate
: of NR_FREE_PAGES when memory is low and kswapd is awake" from 2.6.36
: internally because tests showed that it would cause the machine to stall
: as the result of heavy kswapd activity.  I merged it back with this fix as
: it is pending in the -mm tree and it solves the issue we were seeing, so I
: definitely think this should be pushed to -stable (and I would seriously
: consider it for 2.6.37 inclusion even at this late date).

Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Reported-by: Shaohua Li <shaohua.li@intel.com>
Reviewed-by: Christoph Lameter <cl@linux.com>
Tested-by: Nicolas Bareil <nico@chdir.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 include/linux/mmzone.h |   10 ++-----
 include/linux/vmstat.h |    5 +++
 mm/mmzone.c            |   21 ---------------
 mm/page_alloc.c        |   35 +++++++++++++++++++------
 mm/vmscan.c            |   23 +++++++++-------
 mm/vmstat.c            |   68 ++++++++++++++++++++++++++++++++++++++++++++++++-
 6 files changed, 115 insertions(+), 47 deletions(-)

--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -448,12 +448,6 @@ static inline int zone_is_oom_locked(con
 	return test_bit(ZONE_OOM_LOCKED, &zone->flags);
 }
 
-#ifdef CONFIG_SMP
-unsigned long zone_nr_free_pages(struct zone *zone);
-#else
-#define zone_nr_free_pages(zone) zone_page_state(zone, NR_FREE_PAGES)
-#endif /* CONFIG_SMP */
-
 /*
  * The "priority" of VM scanning is how much of the queues we will scan in one
  * go. A value of 12 for DEF_PRIORITY implies that we will scan 1/4096th of the
@@ -651,7 +645,9 @@ typedef struct pglist_data {
 extern struct mutex zonelists_mutex;
 void build_all_zonelists(void *data);
 void wakeup_kswapd(struct zone *zone, int order);
-int zone_watermark_ok(struct zone *z, int order, unsigned long mark,
+bool zone_watermark_ok(struct zone *z, int order, unsigned long mark,
+		int classzone_idx, int alloc_flags);
+bool zone_watermark_ok_safe(struct zone *z, int order, unsigned long mark,
 		int classzone_idx, int alloc_flags);
 enum memmap_context {
 	MEMMAP_EARLY,
--- a/include/linux/vmstat.h
+++ b/include/linux/vmstat.h
@@ -254,6 +254,8 @@ extern void dec_zone_state(struct zone *
 extern void __dec_zone_state(struct zone *, enum zone_stat_item);
 
 void refresh_cpu_vm_stats(int);
+void reduce_pgdat_percpu_threshold(pg_data_t *pgdat);
+void restore_pgdat_percpu_threshold(pg_data_t *pgdat);
 #else /* CONFIG_SMP */
 
 /*
@@ -298,6 +300,9 @@ static inline void __dec_zone_page_state
 #define dec_zone_page_state __dec_zone_page_state
 #define mod_zone_page_state __mod_zone_page_state
 
+static inline void reduce_pgdat_percpu_threshold(pg_data_t *pgdat) { }
+static inline void restore_pgdat_percpu_threshold(pg_data_t *pgdat) { }
+
 static inline void refresh_cpu_vm_stats(int cpu) { }
 #endif
 
--- a/mm/mmzone.c
+++ b/mm/mmzone.c
@@ -87,24 +87,3 @@ int memmap_valid_within(unsigned long pf
 	return 1;
 }
 #endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */
-
-#ifdef CONFIG_SMP
-/* Called when a more accurate view of NR_FREE_PAGES is needed */
-unsigned long zone_nr_free_pages(struct zone *zone)
-{
-	unsigned long nr_free_pages = zone_page_state(zone, NR_FREE_PAGES);
-
-	/*
-	 * While kswapd is awake, it is considered the zone is under some
-	 * memory pressure. Under pressure, there is a risk that
-	 * per-cpu-counter-drift will allow the min watermark to be breached
-	 * potentially causing a live-lock. While kswapd is awake and
-	 * free pages are low, get a better estimate for free pages
-	 */
-	if (nr_free_pages < zone->percpu_drift_mark &&
-			!waitqueue_active(&zone->zone_pgdat->kswapd_wait))
-		return zone_page_state_snapshot(zone, NR_FREE_PAGES);
-
-	return nr_free_pages;
-}
-#endif /* CONFIG_SMP */
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1459,24 +1459,24 @@ static inline int should_fail_alloc_page
 #endif /* CONFIG_FAIL_PAGE_ALLOC */
 
 /*
- * Return 1 if free pages are above 'mark'. This takes into account the order
+ * Return true if free pages are above 'mark'. This takes into account the order
  * of the allocation.
  */
-int zone_watermark_ok(struct zone *z, int order, unsigned long mark,
-		      int classzone_idx, int alloc_flags)
+static bool __zone_watermark_ok(struct zone *z, int order, unsigned long mark,
+		      int classzone_idx, int alloc_flags, long free_pages)
 {
 	/* free_pages my go negative - that's OK */
 	long min = mark;
-	long free_pages = zone_nr_free_pages(z) - (1 << order) + 1;
 	int o;
 
+	free_pages -= (1 << order) + 1;
 	if (alloc_flags & ALLOC_HIGH)
 		min -= min / 2;
 	if (alloc_flags & ALLOC_HARDER)
 		min -= min / 4;
 
 	if (free_pages <= min + z->lowmem_reserve[classzone_idx])
-		return 0;
+		return false;
 	for (o = 0; o < order; o++) {
 		/* At the next order, this order's pages become unavailable */
 		free_pages -= z->free_area[o].nr_free << o;
@@ -1485,9 +1485,28 @@ int zone_watermark_ok(struct zone *z, in
 		min >>= 1;
 
 		if (free_pages <= min)
-			return 0;
+			return false;
 	}
-	return 1;
+	return true;
+}
+
+bool zone_watermark_ok(struct zone *z, int order, unsigned long mark,
+		      int classzone_idx, int alloc_flags)
+{
+	return __zone_watermark_ok(z, order, mark, classzone_idx, alloc_flags,
+					zone_page_state(z, NR_FREE_PAGES));
+}
+
+bool zone_watermark_ok_safe(struct zone *z, int order, unsigned long mark,
+		      int classzone_idx, int alloc_flags)
+{
+	long free_pages = zone_page_state(z, NR_FREE_PAGES);
+
+	if (z->percpu_drift_mark && free_pages < z->percpu_drift_mark)
+		free_pages = zone_page_state_snapshot(z, NR_FREE_PAGES);
+
+	return __zone_watermark_ok(z, order, mark, classzone_idx, alloc_flags,
+								free_pages);
 }
 
 #ifdef CONFIG_NUMA
@@ -2441,7 +2460,7 @@ void show_free_areas(void)
 			" all_unreclaimable? %s"
 			"\n",
 			zone->name,
-			K(zone_nr_free_pages(zone)),
+			K(zone_page_state(zone, NR_FREE_PAGES)),
 			K(min_wmark_pages(zone)),
 			K(low_wmark_pages(zone)),
 			K(high_wmark_pages(zone)),
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2082,7 +2082,7 @@ static int sleeping_prematurely(pg_data_
 		if (zone->all_unreclaimable)
 			continue;
 
-		if (!zone_watermark_ok(zone, order, high_wmark_pages(zone),
+		if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone),
 								0, 0))
 			return 1;
 	}
@@ -2169,7 +2169,7 @@ loop_again:
 				shrink_active_list(SWAP_CLUSTER_MAX, zone,
 							&sc, priority, 0);
 
-			if (!zone_watermark_ok(zone, order,
+			if (!zone_watermark_ok_safe(zone, order,
 					high_wmark_pages(zone), 0, 0)) {
 				end_zone = i;
 				break;
@@ -2215,7 +2215,7 @@ loop_again:
 			 * We put equal pressure on every zone, unless one
 			 * zone has way too many pages free already.
 			 */
-			if (!zone_watermark_ok(zone, order,
+			if (!zone_watermark_ok_safe(zone, order,
 					8*high_wmark_pages(zone), end_zone, 0))
 				shrink_zone(priority, zone, &sc);
 			reclaim_state->reclaimed_slab = 0;
@@ -2236,7 +2236,7 @@ loop_again:
 			    total_scanned > sc.nr_reclaimed + sc.nr_reclaimed / 2)
 				sc.may_writepage = 1;
 
-			if (!zone_watermark_ok(zone, order,
+			if (!zone_watermark_ok_safe(zone, order,
 					high_wmark_pages(zone), end_zone, 0)) {
 				all_zones_ok = 0;
 				/*
@@ -2244,7 +2244,7 @@ loop_again:
 				 * means that we have a GFP_ATOMIC allocation
 				 * failure risk. Hurry up!
 				 */
-				if (!zone_watermark_ok(zone, order,
+				if (!zone_watermark_ok_safe(zone, order,
 					    min_wmark_pages(zone), end_zone, 0))
 					has_under_min_watermark_zone = 1;
 			}
@@ -2378,7 +2378,9 @@ static int kswapd(void *p)
 				 */
 				if (!sleeping_prematurely(pgdat, order, remaining)) {
 					trace_mm_vmscan_kswapd_sleep(pgdat->node_id);
+					restore_pgdat_percpu_threshold(pgdat);
 					schedule();
+					reduce_pgdat_percpu_threshold(pgdat);
 				} else {
 					if (remaining)
 						count_vm_event(KSWAPD_LOW_WMARK_HIT_QUICKLY);
@@ -2417,16 +2419,17 @@ void wakeup_kswapd(struct zone *zone, in
 	if (!populated_zone(zone))
 		return;
 
-	pgdat = zone->zone_pgdat;
-	if (zone_watermark_ok(zone, order, low_wmark_pages(zone), 0, 0))
+	if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL))
 		return;
+	pgdat = zone->zone_pgdat;
 	if (pgdat->kswapd_max_order < order)
 		pgdat->kswapd_max_order = order;
-	trace_mm_vmscan_wakeup_kswapd(pgdat->node_id, zone_idx(zone), order);
-	if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL))
-		return;
 	if (!waitqueue_active(&pgdat->kswapd_wait))
 		return;
+	if (zone_watermark_ok_safe(zone, order, low_wmark_pages(zone), 0, 0))
+		return;
+
+	trace_mm_vmscan_wakeup_kswapd(pgdat->node_id, zone_idx(zone), order);
 	wake_up_interruptible(&pgdat->kswapd_wait);
 }
 
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -81,6 +81,30 @@ EXPORT_SYMBOL(vm_stat);
 
 #ifdef CONFIG_SMP
 
+static int calculate_pressure_threshold(struct zone *zone)
+{
+	int threshold;
+	int watermark_distance;
+
+	/*
+	 * As vmstats are not up to date, there is drift between the estimated
+	 * and real values. For high thresholds and a high number of CPUs, it
+	 * is possible for the min watermark to be breached while the estimated
+	 * value looks fine. The pressure threshold is a reduced value such
+	 * that even the maximum amount of drift will not accidentally breach
+	 * the min watermark
+	 */
+	watermark_distance = low_wmark_pages(zone) - min_wmark_pages(zone);
+	threshold = max(1, (int)(watermark_distance / num_online_cpus()));
+
+	/*
+	 * Maximum threshold is 125
+	 */
+	threshold = min(125, threshold);
+
+	return threshold;
+}
+
 static int calculate_threshold(struct zone *zone)
 {
 	int threshold;
@@ -159,6 +183,48 @@ static void refresh_zone_stat_thresholds
 	}
 }
 
+void reduce_pgdat_percpu_threshold(pg_data_t *pgdat)
+{
+	struct zone *zone;
+	int cpu;
+	int threshold;
+	int i;
+
+	get_online_cpus();
+	for (i = 0; i < pgdat->nr_zones; i++) {
+		zone = &pgdat->node_zones[i];
+		if (!zone->percpu_drift_mark)
+			continue;
+
+		threshold = calculate_pressure_threshold(zone);
+		for_each_online_cpu(cpu)
+			per_cpu_ptr(zone->pageset, cpu)->stat_threshold
+							= threshold;
+	}
+	put_online_cpus();
+}
+
+void restore_pgdat_percpu_threshold(pg_data_t *pgdat)
+{
+	struct zone *zone;
+	int cpu;
+	int threshold;
+	int i;
+
+	get_online_cpus();
+	for (i = 0; i < pgdat->nr_zones; i++) {
+		zone = &pgdat->node_zones[i];
+		if (!zone->percpu_drift_mark)
+			continue;
+
+		threshold = calculate_threshold(zone);
+		for_each_online_cpu(cpu)
+			per_cpu_ptr(zone->pageset, cpu)->stat_threshold
+							= threshold;
+	}
+	put_online_cpus();
+}
+
 /*
  * For use when we know that interrupts are disabled.
  */
@@ -826,7 +892,7 @@ static void zoneinfo_show_print(struct s
 		   "\n        scanned  %lu"
 		   "\n        spanned  %lu"
 		   "\n        present  %lu",
-		   zone_nr_free_pages(zone),
+		   zone_page_state(zone, NR_FREE_PAGES),
 		   min_wmark_pages(zone),
 		   low_wmark_pages(zone),
 		   high_wmark_pages(zone),



  parent reply	other threads:[~2011-02-16  1:02 UTC|newest]

Thread overview: 177+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-16  0:22 [patch 000/176] 2.6.36.4-stable review Greg KH
2011-02-16  0:19 ` [patch 001/176] staging: usbip: remove double giveback of URB Greg KH
2011-02-16  0:19 ` [patch 002/176] USB: EHCI: ASPM quirk of ISOC on AMD SB800 Greg KH
2011-02-16  0:19 ` [patch 003/176] rt2x00: add device id for windy31 usb device Greg KH
2011-02-16  0:19 ` [patch 004/176] staging: rt2870sta: Add ID for Linksys WUSB100v2 Greg KH
2011-02-16  0:19 ` [patch 005/176] ALSA: snd-usb-us122l: Fix MIDI output Greg KH
2011-02-16  0:19 ` [patch 006/176] ALSA: snd-usb-us122l: Fix missing NULL checks Greg KH
2011-02-16  0:19 ` [patch 007/176] atl1: fix oops when changing tx/rx ring params Greg KH
2011-02-16  0:19 ` [patch 008/176] hwmon: (via686a) Initialize fan_div values Greg KH
2011-02-16  0:19 ` [patch 009/176] hwmon: (applesmc) Add MacBookAir3,1(3,2) support Greg KH
2011-02-16  0:19 ` [patch 010/176] hwmon: (applesmc) Relax the severity of device init failure Greg KH
2011-02-16  0:19 ` [patch 011/176] USB: serial: handle Data Carrier Detect changes Greg KH
2011-02-16  0:19 ` [patch 012/176] USB: CP210x Add two device IDs Greg KH
2011-02-16  0:19 ` [patch 013/176] USB: CP210x Removed incorrect device ID Greg KH
2011-02-16  0:19 ` [patch 014/176] USB: qcaux: add Pantech UML290 " Greg KH
2011-02-16  0:19 ` [patch 015/176] USB: usb-storage: unusual_devs update for Cypress ATACB Greg KH
2011-02-16  0:19 ` [patch 016/176] USB: usb-storage: unusual_devs update for TrekStor DataStation maxi g.u external hard drive enclosure Greg KH
2011-02-16  0:19 ` [patch 017/176] USB: usb-storage: unusual_devs entry for CamSport Evo Greg KH
2011-02-16  0:19 ` [patch 018/176] USB: usb-storage: unusual_devs entry for Coby MP3 player Greg KH
2011-02-16  0:19 ` [patch 019/176] USB: serial: Updated support for ICOM devices Greg KH
2011-02-16  0:19 ` [patch 020/176] USB: adding USB support for Cinterions HC2x, EU3 and PH8 products Greg KH
2011-02-16  0:19 ` [patch 021/176] USB serial: add missing .usb_driver field in serial drivers Greg KH
2011-02-16  0:19 ` [patch 022/176] USB: EHCI: ASPM quirk of ISOC on AMD Hudson Greg KH
2011-02-16  0:19 ` [patch 023/176] USB: EHCI: fix DMA deallocation bug Greg KH
2011-02-16  0:19 ` [patch 024/176] USB: g_printer: fix bug in unregistration Greg KH
2011-02-16  0:19 ` [patch 025/176] USB: g_printer: fix bug in module parameter definitions Greg KH
2011-02-16  0:19 ` [patch 026/176] USB: io_edgeport: fix the reported firmware major and minor Greg KH
2011-02-16  0:19 ` [patch 027/176] USB: ti_usb: fix module removal Greg KH
2011-02-16  0:19 ` [patch 028/176] USB: Storage: Add unusual_devs entry for VTech Kidizoom Greg KH
2011-02-16  0:19 ` [patch 029/176] USB: ftdi_sio: add ST Micro Connect Lite uart support Greg KH
2011-02-16  0:19 ` [patch 030/176] USB: cdc-acm: Adding second ACM channel support for Nokia N8 Greg KH
2011-02-16  0:19 ` [patch 031/176] USB: ftdi_sio: Add VID=0x0647, PID=0x0100 for Acton Research spectrograph Greg KH
2011-02-16  0:20 ` [patch 032/176] USB: EHCI: fix scheduling while atomic during suspend Greg KH
2011-02-16  0:20 ` [patch 033/176] USB: prevent buggy hubs from crashing the USB stack Greg KH
2011-02-16  0:20 ` [patch 034/176] USB: fix race between root-hub resume and wakeup requests Greg KH
2011-02-16  0:20 ` [patch 035/176] staging: zram: fix data corruption issue Greg KH
2011-02-16  0:20 ` [patch 036/176] staging: comedi: add support for newer jr3 1-channel pci board Greg KH
2011-02-16  0:20 ` [patch 037/176] staging: comedi: ni_labpc: Use shared IRQ for PCMCIA card Greg KH
2011-02-16  0:20 ` [patch 038/176] Staging: hv: fix sysfs symlink on hv block device Greg KH
2011-02-16  0:20 ` [patch 039/176] staging: hv: fix netvsc sleeping while atomic Greg KH
2011-02-16  0:20 ` [patch 040/176] staging: hv: Enable sending GARP packet after live migration Greg KH
2011-02-16  0:20 ` [patch 041/176] Staging: rt3090: Fix RT3090 scan AP function Greg KH
2011-02-16  0:20 ` [patch 042/176] Staging: rt2860: fix previous patch error Greg KH
2011-02-16  0:20 ` [patch 043/176] staging: rt2860: Fix incorrect netif_stop_queue usage warning Greg KH
2011-02-16  0:20 ` [patch 044/176] mac80211: fix mesh forwarding when ratelimited too Greg KH
2011-02-16  0:20 ` [patch 045/176] mac80211: add missing synchronize_rcu Greg KH
2011-02-16  0:20 ` [patch 046/176] mac80211: use maximum number of AMPDU frames as default in BA RX Greg KH
2011-02-16  0:20 ` [patch 047/176] mac80211: fix a crash in ieee80211_beacon_get_tim on change_interface Greg KH
2011-02-16  0:20 ` [patch 048/176] mac80211: fix initialization of skb->cb in ieee80211_subif_start_xmit Greg KH
2011-02-16  0:20 ` [patch 049/176] iwlagn: enable only rfkill interrupt when device is down Greg KH
2011-02-16  0:20 ` [patch 050/176] iwlagn: Re-enable RF_KILL interrupt when down Greg KH
2011-02-16  0:20 ` [patch 051/176] ath9k_htc: Handle pending URBs properly Greg KH
2011-02-16  0:20 ` [patch 052/176] ath9k_hw: Fix XPABIAS level configuration for AR9003 Greg KH
2011-02-16  0:20 ` [patch 053/176] ath9k: simplify hw reset locking Greg KH
2011-02-16  0:20 ` [patch 054/176] ath9k: move the PCU lock to the sc structure Greg KH
2011-02-16  0:20 ` [patch 055/176] ath9k: Fix bug in delimiter padding computation Greg KH
2011-02-16  0:20 ` [patch 056/176] ath9k: fix assumptions for idle calls on suspend/resume Greg KH
2011-02-16  0:20 ` [patch 057/176] ath9k: fix aphy / wiphy idle mismatch Greg KH
2011-02-16  0:20 ` [patch 058/176] ath9k: fix beacon restart on channel change Greg KH
2011-02-16  0:20 ` [patch 059/176] ath9k_hw: do PA offset calibration only on longcal interval Greg KH
2011-02-16  0:20 ` [patch 060/176] ath9k_hw: disabled PAPRD for AR9003 Greg KH
2011-02-16  0:20 ` [patch 061/176] ath9k_hw: Fix system hang when resuming from S3/S4 Greg KH
2011-02-16  0:20 ` [patch 062/176] [S390] qdio: use proper QEBSM operand for SIGA-R and SIGA-S Greg KH
2011-02-16  0:20 ` [patch 063/176] [SCSI] fix medium error problems with some arrays which can cause data corruption Greg KH
2011-02-16  0:20 ` [patch 064/176] [SCSI] libsas: fix runaway error handler problem Greg KH
2011-02-16  0:20 ` [patch 065/176] [SCSI] mpt2sas: fix Integrated Raid unsynced on shutdown problem Greg KH
2011-02-16  0:20 ` [patch 066/176] [SCSI] fix incorrect value of SCSI_MAX_SG_CHAIN_SEGMENTS due to include file ordering Greg KH
2011-02-16  0:20 ` [patch 067/176] [SCSI] mpt2sas: Fix device removal handshake for zoned devices Greg KH
2011-02-16  0:20 ` [patch 068/176] [SCSI] mpt2sas: fix internal device reset for older firmware prior to MPI Rev K Greg KH
2011-02-16  0:20 ` [patch 069/176] [SCSI] mpt2sas: Fix the race between broadcast asyn event and scsi command completion Greg KH
2011-02-16  0:20 ` [patch 070/176] [SCSI] mpt2sas: Correct resizing calculation for max_queue_depth Greg KH
2011-02-16  0:20 ` [patch 071/176] [SCSI] mpt2sas: Kernel Panic during Large Topology discovery Greg KH
2011-02-16  0:20 ` [patch 072/176] [SCSI] mpt2sas: add missing initialization of scsih_cmds Greg KH
2011-02-16  0:20 ` [patch 073/176] cfg80211: pass the reg hint initiator to helpers Greg KH
2011-02-16  0:20 ` [patch 074/176] cfg80211: fix allowing country IEs for WIPHY_FLAG_STRICT_REGULATORY Greg KH
2011-02-16  0:20 ` [patch 075/176] [media] radio-aimslab.c: Fix gcc 4.5+ bug Greg KH
2011-02-16  0:20 ` [patch 076/176] [media] em28xx: Fix audio input for Terratec Grabby Greg KH
2011-02-16  0:20 ` [patch 077/176] ALSA : au88x0 - Limit number of channels to fix Oops via OSS emu Greg KH
2011-02-16  0:20 ` [patch 078/176] ALSA: fix invalid hardware.h include in ac97c for AVR32 architecture Greg KH
2011-02-16  0:20 ` [patch 079/176] ALSA: HDA: Fix dmesg output of HDMI supported bits Greg KH
2011-02-16  0:20 ` [patch 080/176] ALSA: hda - Fix memory leaks in conexant jack arrays Greg KH
2011-02-16  0:20 ` [patch 081/176] Input: i8042 - introduce notimeout blacklist for Dell Vostro V13 Greg KH
2011-02-16  0:20 ` [patch 082/176] input: bcm5974: Add support for MacBookAir3 Greg KH
2011-02-16  0:20 ` [patch 083/176] hwmon: (lm63) Consider LM64 temperature offset Greg KH
2011-02-16  0:20 ` [patch 084/176] ALSA: hrtimer: handle delayed timer interrupts Greg KH
2011-02-16  0:20 ` [patch 085/176] ALSA: HDA: Add subwoofer quirk for Acer Aspire 8942G Greg KH
2011-02-16  0:20 ` [patch 086/176] ASoC: When disabling WM8994 FLL force a source selection Greg KH
2011-02-16  0:20 ` [patch 087/176] ASoC: WM8990: msleep() takes milliseconds not jiffies Greg KH
2011-02-16  0:20 ` [patch 088/176] ASoC: Blackfin AC97: fix build error after multi-component update Greg KH
2011-02-16  0:20 ` [patch 089/176] ASoC: Blackfin TDM: fix missed snd_soc_dai_get_drvdata update Greg KH
2011-02-16  0:20 ` [patch 090/176] NFS: Fix an NFS client lockdep issue Greg KH
2011-02-16  0:20 ` [patch 091/176] NFS: Fix "kernel BUG at fs/aio.c:554!" Greg KH
2011-02-16  0:21 ` [patch 092/176] RDMA/cxgb4: Set the correct device physical function for iWARP connections Greg KH
2011-02-16  0:21 ` [patch 093/176] /proc/kcore: fix seeking Greg KH
2011-02-16  0:21 ` [patch 094/176] rtc-cmos: fix suspend/resume Greg KH
2011-02-16  0:21 ` [patch 095/176] mm: fix migration hangs on anon_vma lock Greg KH
2011-02-16  0:21 ` [patch 096/176] ext4: fix memory leak in ext4_free_branches Greg KH
2011-02-16  0:21 ` [patch 097/176] rapidio: fix hang on RapidIO doorbell queue full condition Greg KH
2011-02-16  0:21 ` [patch 098/176] sh: Fix up legacy PTEA space attribute mapping Greg KH
2011-02-16  0:21 ` [patch 099/176] PCI: pci-stub: ignore zero-length id parameters Greg KH
2011-02-16  0:21 ` [patch 100/176] virtio: remove virtio-pci root device Greg KH
2011-02-16  0:21 ` [patch 101/176] jz4740-battery: Protect against concurrent battery readings Greg KH
2011-02-16  0:21 ` [patch 102/176] ds2760_battery: Fix calculation of time_to_empty_now Greg KH
2011-02-16  0:21 ` [patch 103/176] avr32: use syscall prototypes from asm-generic instead of arch Greg KH
2011-02-16  0:21 ` [patch 104/176] cpuidle: Make cpuidle_enable_device() call poll_idle_init() Greg KH
2011-02-16  0:21 ` [patch 105/176] p54: fix sequence no. accounting off-by-one error Greg KH
2011-02-16  0:21 ` [patch 106/176] i2c: Unregister dummy devices last on adapter removal Greg KH
2011-02-16  0:21 ` [patch 107/176] ASoC: Handle low measured DC offsets for wm_hubs devices Greg KH
2011-02-16  0:21 ` [patch 108/176] ASoC: WM8994: fix wrong value in tristate function Greg KH
2011-02-16  0:21 ` [patch 109/176] ASoC: Create an AIF1ADCDAT signal widget to match AIF2 Greg KH
2011-02-16  0:21 ` [patch 110/176] virtio_net: Add schedule check to napi_enable call Greg KH
2011-02-16  0:21 ` [patch 111/176] virtio: console: Wake up outvq on host notifications Greg KH
2011-02-16  0:21 ` [patch 112/176] drivers: update to pl2303 usb-serial to support Motorola cables Greg KH
2011-02-16  0:21 ` [patch 113/176] serial: unbreak billionton CF card Greg KH
2011-02-16  0:21 ` [patch 114/176] ptrace: use safer wake up on ptrace_detach() Greg KH
2011-02-16  0:21 ` [patch 115/176] net: Fix ip link add netns oops Greg KH
2011-02-16  0:21 ` [patch 116/176] x86, mtrr: Avoid MTRR reprogramming on BP during boot on UP platforms Greg KH
2011-02-16  0:21 ` [patch 117/176] fix jiffy calculations in calibrate_delay_direct to handle overflow Greg KH
2011-02-16  0:21 ` [patch 118/176] ixgbe: fix for 82599 erratum on Header Splitting Greg KH
2011-02-16  0:21 ` [patch 119/176] Fix prlimit64 for suid/sgid processes Greg KH
2011-02-16  0:21 ` [patch 120/176] ARM: initrd: disable initrd if passed address overlaps reserved region Greg KH
2011-02-16  0:21 ` [patch 121/176] memcg: fix account leak at failure of memsw acconting Greg KH
2011-02-16  0:21 ` [patch 122/176] mmc: bfin_sdh: fix alloc size for private data Greg KH
2011-02-16  0:21 ` Greg KH [this message]
2011-02-16  0:21 ` [patch 124/176] klist: Fix object alignment on 64-bit Greg KH
2011-02-16  0:21 ` [patch 125/176] cfq-iosched: Dont wait if queue already has requests Greg KH
2011-02-16  0:21 ` [patch 126/176] powerpc/85xx: fix compatible properties of the P1022DS DMA nodes used for audio Greg KH
2011-02-16  0:21 ` [patch 127/176] powerpc: Fix hcall tracepoint recursion Greg KH
2011-02-16  0:21 ` [patch 128/176] powerpc/numa: Fix bug in unmap_cpu_from_node Greg KH
2011-02-16  0:21 ` [patch 129/176] powerpc: Fix some 6xx/7xxx CPU setup functions Greg KH
2011-02-16  0:21 ` [patch 130/176] firewire: core: fix unstable I/O with Canon camcorder Greg KH
2011-02-16  0:21 ` [patch 131/176] parisc : Remove broken line wrapping handling pdc_iodc_print() Greg KH
2011-02-16  0:21 ` [patch 132/176] watchdog: Fix sysctl consistency Greg KH
2011-02-16  0:21 ` [patch 133/176] watchdog: Dont change watchdog state on read of sysctl Greg KH
2011-02-16  0:21 ` [patch 134/176] char/ipmi: fix OOPS caused by pnp_unregister_driver on unregistered driver Greg KH
2011-02-16  0:21 ` [patch 135/176] ssb-pcmcia: Fix parsing of invariants tuples Greg KH
2011-02-16  0:21 ` [patch 136/176] backlight: fix 88pm860x_bl macro collision Greg KH
2011-02-16  0:21 ` [patch 137/176] fs/direct-io.c: dont try to allocate more than BIO_MAX_PAGES in a bio Greg KH
2011-02-16  0:21 ` [patch 138/176] kernel/smp.c: fix smp_call_function_many() SMP race Greg KH
2011-02-16  0:21 ` [patch 139/176] md: fix regression with re-adding devices to arrays with no metadata Greg KH
2011-02-16  0:21 ` [patch 140/176] md: fix regression resulting in delays in clearing bits in a bitmap Greg KH
2011-02-16  0:21 ` [patch 141/176] md: Ensure no IO request to get md device before it is properly initialised Greg KH
2011-02-16  0:21 ` [patch 142/176] md: Fix removal of extra drives when converting RAID6 to RAID5 Greg KH
2011-02-16  0:21 ` [patch 143/176] pata_mpc52xx: inherit from ata_bmdma_port_ops Greg KH
2011-02-16  0:21 ` [patch 144/176] md_make_request: dont touch the bio after calling make_request Greg KH
2011-02-16  0:21 ` [patch 145/176] KVM: i8259: initialize isr_ack Greg KH
2011-02-16  0:21 ` [patch 146/176] KVM: MMU: Fix incorrect direct gfn for unpaged mode shadow Greg KH
2011-02-16  0:21 ` [patch 147/176] KVM: MMU: Fix 32 bit legacy paging with NPT Greg KH
2011-02-16  0:21 ` [patch 148/176] nilfs2: fix crash after one superblock became unavailable Greg KH
2011-02-16  0:21 ` [patch 149/176] TPM: Long default timeout fix Greg KH
2011-02-16  0:21 ` [patch 150/176] tpm_tis: Use timeouts returned from TPM Greg KH
2011-02-16  0:21 ` [patch 151/176] KEYS: Dont call up_write() if __key_link_begin() returns an error Greg KH
2011-02-16  0:22 ` [patch 152/176] SELinux: define permissions for DCB netlink messages Greg KH
2011-02-16  0:22 ` [patch 153/176] SELinux: do not compute transition labels on mountpoint labeled filesystems Greg KH
2011-02-16  0:22 ` [patch 154/176] tpm: Autodetect itpm devices Greg KH
2011-02-16  0:22 ` [patch 155/176] ieee80211: correct IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK macro Greg KH
2011-02-16  0:22 ` [patch 156/176] dm: dont take i_mutex to change device size Greg KH
2011-02-16  0:22 ` [patch 157/176] dm mpath: disable blk_abort_queue Greg KH
2011-02-16  0:22 ` [patch 158/176] net/fec: fix MMFR_OP type in fec_enet_mdio_write Greg KH
2011-02-16  0:22 ` [patch 159/176] drm/radeon/kms: add quirk for Mac Radeon HD 2600 card Greg KH
2011-02-16  0:22 ` [patch 160/176] drm/radeon/kms: adjust quirk for acer laptop Greg KH
2011-02-16  0:22 ` [patch 161/176] drm/radeon/kms: make the mac rv630 quirk generic Greg KH
2011-02-16  0:22 ` [patch 162/176] radeon/kms: fix dp displayport mode validation Greg KH
2011-02-16  0:22 ` [patch 163/176] drm/radeon/kms: add pll debugging output Greg KH
2011-02-16  0:22 ` [patch 164/176] drm/radeon: remove 0x4243 pci id Greg KH
2011-02-16  0:22 ` [patch 165/176] drm/radeon/kms: fix s/r issues with bios scratch regs Greg KH
2011-02-16  0:22 ` [patch 166/176] drm: Restore the old_fb upon modeset failure Greg KH
2011-02-16  0:22 ` [patch 167/176] drm/i915: fix calculation of eDP signal levels on Sandybridge Greg KH
2011-02-16  0:22 ` [patch 168/176] drm/i915/lvds: Add AOpen i915GMm-HFS to the list of false-positive LVDS Greg KH
2011-02-16  0:22 ` [patch 169/176] drm/i915: Add dependency on CONFIG_TMPFS Greg KH
2011-02-16  0:22 ` [patch 170/176] drm/i915: Recognise non-VGA display devices Greg KH
2011-02-16  0:22 ` [patch 171/176] x86, mm: avoid possible bogus tlb entries by clearing prev mm_cpumask after switching mm Greg KH
2011-02-16  0:22 ` [patch 172/176] agp: ensure GART has an address before enabling it Greg KH
2011-02-16  0:22 ` [patch 173/176] drm/i915: Only bind to function 0 of the PCI device Greg KH
2011-02-16  0:22 ` [patch 174/176] xhci: Do not run xhci_cleanup_msix with irq disabled Greg KH
2011-02-16  0:22 ` [patch 175/176] usb: Realloc xHCI structures after a hub is verified Greg KH
2011-02-16  0:22 ` [patch 176/176] xhci: Use GFP_NOIO during device reset 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=20110216002111.333832853@clark.kroah.org \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=kyle@mcmartin.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mel@csn.ul.ie \
    --cc=rientjes@google.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

all inboxes | Powered by JetHome®