public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch 00/62] 2.6.26-stable review
@ 2008-07-30 23:49 ` Greg KH
  2008-07-30 23:57   ` [patch 01/62] pxamci: trivial fix of DMA alignment register bit clearing Greg KH
                     ` (61 more replies)
  0 siblings, 62 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:49 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan

This is the start of the stable review cycle for the 2.6.26.1 release.
There are 62 patches in this series, all will be posted as a response to
this one.  If anyone has any issues with these being applied, please let
us know.  If anyone is a maintainer of the proper subsystem, and wants
to add a Signed-off-by: line to the patch, please respond with it.

These patches are sent out with a number of different people on the Cc:
line.  If you wish to be a reviewer, please email stable@kernel.org to
add your name to the list.  If you want to be off the reviewer list,
also email us.

Responses should be made by August 1, 12:00:00 UTC.  Anything received
after that time might be too late.

The whole patch series can be found in one patch at:
	kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.26.1-rc1.gz
and the diffstat can be found below.


thanks,

the -stable release team


 Documentation/networking/udplite.txt          |    2 +-
 Documentation/video4linux/cx18.txt            |   12 +--
 Makefile                                      |    5 +-
 arch/ia64/kvm/kvm-ia64.c                      |    3 +
 arch/powerpc/kvm/powerpc.c                    |    4 +
 arch/powerpc/platforms/cell/cbe_cpufreq_pmi.c |    6 +
 arch/s390/kvm/kvm-s390.c                      |    4 +
 arch/sparc64/kernel/irq.c                     |   10 ++-
 arch/sparc64/kernel/ldc.c                     |   38 ++++----
 arch/sparc64/kernel/time.c                    |   15 ++-
 arch/um/include/init.h                        |    8 ++
 arch/x86/Kconfig.cpu                          |    2 +-
 arch/x86/kernel/acpi/sleep.c                  |   17 +++-
 arch/x86/kernel/i387.c                        |    4 +-
 arch/x86/kernel/ptrace.c                      |    4 +-
 arch/x86/kernel/reboot.c                      |    8 ++
 arch/x86/kvm/mmu.c                            |   10 ++-
 arch/x86/kvm/svm.c                            |   34 ++++--
 arch/x86/kvm/vmx.c                            |    7 +-
 arch/x86/kvm/x86.c                            |    5 +
 arch/x86/kvm/x86_emulate.c                    |    2 +-
 arch/x86/mm/init_64.c                         |    2 +-
 drivers/acpi/processor_perflib.c              |   15 +++-
 drivers/cpufreq/cpufreq.c                     |    3 +
 drivers/dma/iop-adma.c                        |    2 +
 drivers/ide/ide-cd.c                          |   27 ++++-
 drivers/media/dvb/dvb-usb/dib0700_devices.c   |    7 +-
 drivers/media/dvb/dvb-usb/dvb-usb-ids.h       |    1 +
 drivers/media/video/Kconfig                   |    8 +--
 drivers/media/video/cx18/cx18-firmware.c      |    2 +-
 drivers/media/video/cx23885/cx23885-core.c    |  142 +++++++++++++++++++++++-
 drivers/media/video/saa7134/saa7134-cards.c   |    3 -
 drivers/media/video/saa7134/saa7134-core.c    |    5 +-
 drivers/media/video/uvc/Kconfig               |   17 +++
 drivers/media/video/uvc/uvc_driver.c          |   12 ++-
 drivers/media/video/uvc/uvc_status.c          |   19 +++-
 drivers/media/video/uvc/uvc_video.c           |  116 +++++++++++++-------
 drivers/media/video/uvc/uvcvideo.h            |    2 +
 drivers/mmc/host/pxamci.c                     |    2 +-
 drivers/net/hamradio/hdlcdrv.c                |    1 +
 drivers/net/ixgbe/ixgbe_main.c                |    2 -
 drivers/net/myri10ge/myri10ge.c               |   30 +++---
 drivers/net/wireless/ath5k/base.c             |    5 -
 drivers/net/wireless/b43legacy/main.c         |    2 +-
 drivers/rtc/rtc-at91rm9200.c                  |   16 +--
 drivers/spi/mpc52xx_psc_spi.c                 |   22 ++---
 drivers/usb/serial/usb-serial.c               |    5 +-
 fs/dquot.c                                    |   16 +++-
 fs/ecryptfs/crypto.c                          |   30 +++--
 fs/isofs/rock.c                               |   22 ++++-
 fs/libfs.c                                    |    4 +-
 fs/proc/task_mmu.c                            |    2 +-
 include/asm-arm/bitops.h                      |    9 ++-
 include/asm-generic/vmlinux.lds.h             |    4 +-
 include/asm-sparc64/io.h                      |    1 -
 include/asm-x86/signal.h                      |    4 +-
 include/linux/cpufreq.h                       |    1 +
 include/linux/ipv6.h                          |    2 +
 include/linux/kvm_host.h                      |    1 +
 kernel/cpuset.c                               |    4 +-
 kernel/marker.c                               |   12 ++-
 kernel/rcupreempt.c                           |    2 +-
 kernel/sys_ni.c                               |    1 +
 mm/filemap.c                                  |    2 +-
 mm/shmem.c                                    |    3 +-
 net/ipv4/tcp_input.c                          |    3 +-
 net/ipv4/udp.c                                |    4 +
 net/ipv6/ip6_fib.c                            |    4 +-
 scripts/Makefile.modpost                      |    1 +
 scripts/mod/modpost.c                         |    3 +-
 sound/pci/trident/trident_main.c              |    5 +-
 virt/kvm/kvm_main.c                           |    3 +
 72 files changed, 589 insertions(+), 222 deletions(-)
 create mode 100644 drivers/media/video/uvc/Kconfig


^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 01/62] pxamci: trivial fix of DMA alignment register bit clearing
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
@ 2008-07-30 23:57   ` Greg KH
  2008-07-30 23:57   ` [patch 02/62] udplite: Protection against coverage value wrap-around Greg KH
                     ` (60 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:57 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Karl Beldan, Eric Miao, Pierre Ossman

[-- Attachment #1: pxamci-trivial-fix-of-dma-alignment-register-bit-clearing.patch --]
[-- Type: text/plain, Size: 794 bytes --]

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

------------------
From: Karl Beldan <karl.beldan@gmail.com>

commit 4fe16897c59882420d66f2d503106653d026ed6c upstream

Signed-off-by: Karl Beldan <karl.beldan@gmail.com>
Acked-by: Eric Miao <eric.miao@marvell.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/mmc/host/pxamci.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -177,7 +177,7 @@ static void pxamci_setup_data(struct pxa
 	if (dalgn)
 		DALGN |= (1 << host->dma);
 	else
-		DALGN &= (1 << host->dma);
+		DALGN &= ~(1 << host->dma);
 	DDADR(host->dma) = host->sg_dma;
 	DCSR(host->dma) = DCSR_RUN;
 }

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 02/62] udplite: Protection against coverage value wrap-around
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
  2008-07-30 23:57   ` [patch 01/62] pxamci: trivial fix of DMA alignment register bit clearing Greg KH
@ 2008-07-30 23:57   ` Greg KH
  2008-07-30 23:57   ` [patch 03/62] ipv6: use timer pending Greg KH
                     ` (59 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:57 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Gerrit Renker, David S. Miller

[-- Attachment #1: udplite-protection-against-coverage-value-wrap-around.patch --]
[-- Type: text/plain, Size: 1852 bytes --]

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

------------------
From: Gerrit Renker <gerrit@erg.abdn.ac.uk>

[ Upstream commit 47112e25da41d9059626033986dc3353e101f815 ]

This patch clamps the cscov setsockopt values to a maximum of 0xFFFF.

Setsockopt values greater than 0xffff can cause an unwanted
wrap-around.  Further, IPv6 jumbograms are not supported (RFC 3838,
3.5), so that values greater than 0xffff are not even useful.

Further changes: fixed a typo in the documentation.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 Documentation/networking/udplite.txt |    2 +-
 net/ipv4/udp.c                       |    4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

--- a/Documentation/networking/udplite.txt
+++ b/Documentation/networking/udplite.txt
@@ -148,7 +148,7 @@
         getsockopt(sockfd, SOL_SOCKET, SO_NO_CHECK, &value, ...);
 
   is meaningless (as in TCP). Packets with a zero checksum field are
-  illegal (cf. RFC 3828, sec. 3.1) will be silently discarded.
+  illegal (cf. RFC 3828, sec. 3.1) and will be silently discarded.
 
   4) Fragmentation
 
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1319,6 +1319,8 @@ int udp_lib_setsockopt(struct sock *sk, 
 			return -ENOPROTOOPT;
 		if (val != 0 && val < 8) /* Illegal coverage: use default (8) */
 			val = 8;
+		else if (val > USHORT_MAX)
+			val = USHORT_MAX;
 		up->pcslen = val;
 		up->pcflag |= UDPLITE_SEND_CC;
 		break;
@@ -1331,6 +1333,8 @@ int udp_lib_setsockopt(struct sock *sk, 
 			return -ENOPROTOOPT;
 		if (val != 0 && val < 8) /* Avoid silly minimal values.       */
 			val = 8;
+		else if (val > USHORT_MAX)
+			val = USHORT_MAX;
 		up->pcrlen = val;
 		up->pcflag |= UDPLITE_RECV_CC;
 		break;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 03/62] ipv6: use timer pending
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
  2008-07-30 23:57   ` [patch 01/62] pxamci: trivial fix of DMA alignment register bit clearing Greg KH
  2008-07-30 23:57   ` [patch 02/62] udplite: Protection against coverage value wrap-around Greg KH
@ 2008-07-30 23:57   ` Greg KH
  2008-07-30 23:57   ` [patch 04/62] ipv6: __KERNEL__ ifdef struct ipv6_devconf Greg KH
                     ` (58 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:57 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Stephen Hemminger, David S. Miller

[-- Attachment #1: ipv6-use-timer-pending.patch --]
[-- Type: text/plain, Size: 1372 bytes --]

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

------------------
From: Stephen Hemminger <shemminger@vyatta.com>

[ Upstream commit 847499ce71bdcc8fc542062df6ebed3e596608dd ]

This fixes the bridge reference count problem and cleanups ipv6 FIB
timer management.  Don't use expires field, because it is not a proper
way to test, instead use timer_pending().

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 net/ipv6/ip6_fib.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -663,7 +663,7 @@ static int fib6_add_rt2node(struct fib6_
 
 static __inline__ void fib6_start_gc(struct net *net, struct rt6_info *rt)
 {
-	if (net->ipv6.ip6_fib_timer->expires == 0 &&
+	if (!timer_pending(net->ipv6.ip6_fib_timer) &&
 	    (rt->rt6i_flags & (RTF_EXPIRES|RTF_CACHE)))
 		mod_timer(net->ipv6.ip6_fib_timer, jiffies +
 			  net->ipv6.sysctl.ip6_rt_gc_interval);
@@ -671,7 +671,7 @@ static __inline__ void fib6_start_gc(str
 
 void fib6_force_start_gc(struct net *net)
 {
-	if (net->ipv6.ip6_fib_timer->expires == 0)
+	if (!timer_pending(net->ipv6.ip6_fib_timer))
 		mod_timer(net->ipv6.ip6_fib_timer, jiffies +
 			  net->ipv6.sysctl.ip6_rt_gc_interval);
 }

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 04/62] ipv6: __KERNEL__ ifdef struct ipv6_devconf
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (2 preceding siblings ...)
  2008-07-30 23:57   ` [patch 03/62] ipv6: use timer pending Greg KH
@ 2008-07-30 23:57   ` Greg KH
  2008-07-30 23:57   ` [patch 05/62] hdlcdrv: Fix CRC calculation Greg KH
                     ` (57 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:57 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, David S. Miller

[-- Attachment #1: ipv6-__kernel__-ifdef-struct-ipv6_devconf.patch --]
[-- Type: text/plain, Size: 782 bytes --]

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

------------------
From: David S. Miller <davem@davemloft.net>

[ Upstream commit ebb36a978131810c98e7198b1187090c697cf99f ]

Based upon a report by Olaf Hering.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 include/linux/ipv6.h |    2 ++
 1 file changed, 2 insertions(+)

--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -123,6 +123,7 @@ struct ipv6hdr {
 	struct	in6_addr	daddr;
 };
 
+#ifdef __KERNEL__
 /*
  * This structure contains configuration options per IPv6 link.
  */
@@ -165,6 +166,7 @@ struct ipv6_devconf {
 #endif
 	void		*sysctl;
 };
+#endif
 
 /* index values for the variables in ipv6_devconf */
 enum {

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 05/62] hdlcdrv: Fix CRC calculation.
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (3 preceding siblings ...)
  2008-07-30 23:57   ` [patch 04/62] ipv6: __KERNEL__ ifdef struct ipv6_devconf Greg KH
@ 2008-07-30 23:57   ` Greg KH
  2008-07-30 23:57   ` [patch 06/62] quota: fix possible infinite loop in quota code Greg KH
                     ` (56 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:57 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Micah Dowty, Thomas Sailer, David S. Miller

[-- Attachment #1: hdlcdrv-fix-crc-calculation.patch --]
[-- Type: text/plain, Size: 1096 bytes --]

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

------------------
From: Micah Dowty <micah@navi.cx>

[ Upstream commit ae6134bdf3197206fba95563d755d2fa50d90ddd ]

This is a trivial patch against the hdlcdrv module that fixes its CRC
calculation. The finished CRC was overwriting the first two bytes of
each packet rather than being appended to the end.

I've tested this with 2.6.8 and 2.6.10-rc1, but hdlcdrv hasn't changed
much recently so it should work with many other kernel versions.

Signed-off-by: Micah Dowty <micah@navi.cx>
Acked-by: Thomas Sailer <t.sailer@alumni.ethz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/hamradio/hdlcdrv.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/net/hamradio/hdlcdrv.c
+++ b/drivers/net/hamradio/hdlcdrv.c
@@ -88,6 +88,7 @@
 static inline void append_crc_ccitt(unsigned char *buffer, int len)
 {
  	unsigned int crc = crc_ccitt(0xffff, buffer, len) ^ 0xffff;
+	buffer += len;
 	*buffer++ = crc;
 	*buffer++ = crc >> 8;
 }

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 06/62] quota: fix possible infinite loop in quota code
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (4 preceding siblings ...)
  2008-07-30 23:57   ` [patch 05/62] hdlcdrv: Fix CRC calculation Greg KH
@ 2008-07-30 23:57   ` Greg KH
  2008-07-30 23:58   ` [patch 07/62] isofs: fix minor filesystem corruption Greg KH
                     ` (55 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:57 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Jan Kara

[-- Attachment #1: quota-fix-possible-infinite-loop-in-quota-code.patch --]
[-- Type: text/plain, Size: 1826 bytes --]

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

------------------
From: Jan Kara <jack@suse.cz>

commit b48d380541f634663b71766005838edbb7261685 upstream

When quota structure is going to be dropped and it is dirty, quota code tries
to write it.  If the write fails for some reason (e.  g.  transaction cannot
be started because the journal is aborted), we try writing again and again and
again...  Fix the problem by clearing the dirty bit even if the write failed.

(akpm: for 2.6.27, 2.6.26.x and 2.6.25.x)

Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: dingdinghua <dingdinghua85@gmail.com>
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>

---
 fs/dquot.c |   16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

--- a/fs/dquot.c
+++ b/fs/dquot.c
@@ -562,6 +562,8 @@ static struct shrinker dqcache_shrinker 
  */
 static void dqput(struct dquot *dquot)
 {
+	int ret;
+
 	if (!dquot)
 		return;
 #ifdef __DQUOT_PARANOIA
@@ -594,7 +596,19 @@ we_slept:
 	if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && dquot_dirty(dquot)) {
 		spin_unlock(&dq_list_lock);
 		/* Commit dquot before releasing */
-		dquot->dq_sb->dq_op->write_dquot(dquot);
+		ret = dquot->dq_sb->dq_op->write_dquot(dquot);
+		if (ret < 0) {
+			printk(KERN_ERR "VFS: cannot write quota structure on "
+				"device %s (error %d). Quota may get out of "
+				"sync!\n", dquot->dq_sb->s_id, ret);
+			/*
+			 * We clear dirty bit anyway, so that we avoid
+			 * infinite loop here
+			 */
+			spin_lock(&dq_list_lock);
+			clear_dquot_dirty(dquot);
+			spin_unlock(&dq_list_lock);
+		}
 		goto we_slept;
 	}
 	/* Clear flag in case dquot was inactive (something bad happened) */

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 07/62] isofs: fix minor filesystem corruption
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (5 preceding siblings ...)
  2008-07-30 23:57   ` [patch 06/62] quota: fix possible infinite loop in quota code Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 08/62] KVM: VMX: Fix a wrong usage of vmcs_config Greg KH
                     ` (54 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Adam Greenblatt

[-- Attachment #1: isofs-fix-minor-filesystem-corruption.patch --]
[-- Type: text/plain, Size: 2859 bytes --]

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

------------------
From: Adam Greenblatt <adam.greenblatt@gmail.com>

commit c0a1633b6201ef79e31b7da464d44fdf5953054d upstream

Some iso9660 images contain files with rockridge data that is either
incorrect or incompletely parsed.  Prior to commit
f2966632a134e865db3c819346a1dc7d96e05309 ("[PATCH] rock: handle directory
overflows") (included with kernel 2.6.13) the kernel ignored the rockridge
data for these files, while still allowing the files to be accessed under
their non-rockridge names.  That commit inadvertently changed things so
that files with invalid rockridge data could not be accessed at all.  (I
ran across the problem when comparing some old CDs with hard disk copies I
had made long ago under kernel 2.4: a few of the files on the hard disk
copies were no longer visible on the CDs.)

This change reverts to the pre-2.6.13 behavior.

Signed-off-by: Adam Greenblatt <adam.greenblatt@gmail.com>
Reviewed-by: Pekka Enberg <penberg@cs.helsinki.fi>
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>

---
 fs/isofs/rock.c |   22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

--- a/fs/isofs/rock.c
+++ b/fs/isofs/rock.c
@@ -209,6 +209,11 @@ repeat:
 
 	while (rs.len > 2) { /* There may be one byte for padding somewhere */
 		rr = (struct rock_ridge *)rs.chr;
+		/*
+		 * Ignore rock ridge info if rr->len is out of range, but
+		 * don't return -EIO because that would make the file
+		 * invisible.
+		 */
 		if (rr->len < 3)
 			goto out;	/* Something got screwed up here */
 		sig = isonum_721(rs.chr);
@@ -216,8 +221,12 @@ repeat:
 			goto eio;
 		rs.chr += rr->len;
 		rs.len -= rr->len;
+		/*
+		 * As above, just ignore the rock ridge info if rr->len
+		 * is bogus.
+		 */
 		if (rs.len < 0)
-			goto eio;	/* corrupted isofs */
+			goto out;	/* Something got screwed up here */
 
 		switch (sig) {
 		case SIG('R', 'R'):
@@ -307,6 +316,11 @@ parse_rock_ridge_inode_internal(struct i
 repeat:
 	while (rs.len > 2) { /* There may be one byte for padding somewhere */
 		rr = (struct rock_ridge *)rs.chr;
+		/*
+		 * Ignore rock ridge info if rr->len is out of range, but
+		 * don't return -EIO because that would make the file
+		 * invisible.
+		 */
 		if (rr->len < 3)
 			goto out;	/* Something got screwed up here */
 		sig = isonum_721(rs.chr);
@@ -314,8 +328,12 @@ repeat:
 			goto eio;
 		rs.chr += rr->len;
 		rs.len -= rr->len;
+		/*
+		 * As above, just ignore the rock ridge info if rr->len
+		 * is bogus.
+		 */
 		if (rs.len < 0)
-			goto eio;	/* corrupted isofs */
+			goto out;	/* Something got screwed up here */
 
 		switch (sig) {
 #ifndef CONFIG_ZISOFS		/* No flag for SF or ZF */

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 08/62] KVM: VMX: Fix a wrong usage of vmcs_config
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (6 preceding siblings ...)
  2008-07-30 23:58   ` [patch 07/62] isofs: fix minor filesystem corruption Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 09/62] KVM: SVM: fix suspend/resume support Greg KH
                     ` (53 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Sheng Yang, Avi Kivity

[-- Attachment #1: kvm-vmx-fix-a-wrong-usage-of-vmcs_config.patch --]
[-- Type: text/plain, Size: 1468 bytes --]

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

------------------
From: Sheng Yang <sheng.yang@intel.com>

Original-Commit-Hash: 406046a9638a455876b030853862e576a4378d29

The function ept_update_paging_mode_cr0() write to
CPU_BASED_VM_EXEC_CONTROL based on vmcs_config.cpu_based_exec_ctrl. That's
wrong because the variable may not consistent with the content in the
CPU_BASE_VM_EXEC_CONTROL MSR.

Signed-off-by: Sheng Yang <sheng.yang@intel.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/x86/kvm/vmx.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -1420,7 +1420,7 @@ static void ept_update_paging_mode_cr0(u
 	if (!(cr0 & X86_CR0_PG)) {
 		/* From paging/starting to nonpaging */
 		vmcs_write32(CPU_BASED_VM_EXEC_CONTROL,
-			     vmcs_config.cpu_based_exec_ctrl |
+			     vmcs_read32(CPU_BASED_VM_EXEC_CONTROL) |
 			     (CPU_BASED_CR3_LOAD_EXITING |
 			      CPU_BASED_CR3_STORE_EXITING));
 		vcpu->arch.cr0 = cr0;
@@ -1430,7 +1430,7 @@ static void ept_update_paging_mode_cr0(u
 	} else if (!is_paging(vcpu)) {
 		/* From nonpaging to paging */
 		vmcs_write32(CPU_BASED_VM_EXEC_CONTROL,
-			     vmcs_config.cpu_based_exec_ctrl &
+			     vmcs_read32(CPU_BASED_VM_EXEC_CONTROL) &
 			     ~(CPU_BASED_CR3_LOAD_EXITING |
 			       CPU_BASED_CR3_STORE_EXITING));
 		vcpu->arch.cr0 = cr0;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 09/62] KVM: SVM: fix suspend/resume support
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (7 preceding siblings ...)
  2008-07-30 23:58   ` [patch 08/62] KVM: VMX: Fix a wrong usage of vmcs_config Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 10/62] KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held Greg KH
                     ` (52 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Joerg Roedel, Avi Kivity

[-- Attachment #1: kvm-svm-fix-suspend-resume-support.patch --]
[-- Type: text/plain, Size: 2117 bytes --]

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

------------------
From: Joerg Roedel <joerg.roedel@amd.com>

Original-Commit-Hash: ab6267b708bec563891294488f2e854be404bdaf

On suspend the svm_hardware_disable function is called which frees all svm_data
variables. On resume they are not re-allocated. This patch removes the
deallocation of svm_data from the hardware_disable function to the
hardware_unsetup function which is not called on suspend.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>


---
 arch/x86/kvm/svm.c |   34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)

--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -270,19 +270,11 @@ static int has_svm(void)
 
 static void svm_hardware_disable(void *garbage)
 {
-	struct svm_cpu_data *svm_data
-		= per_cpu(svm_data, raw_smp_processor_id());
-
-	if (svm_data) {
-		uint64_t efer;
+	uint64_t efer;
 
-		wrmsrl(MSR_VM_HSAVE_PA, 0);
-		rdmsrl(MSR_EFER, efer);
-		wrmsrl(MSR_EFER, efer & ~MSR_EFER_SVME_MASK);
-		per_cpu(svm_data, raw_smp_processor_id()) = NULL;
-		__free_page(svm_data->save_area);
-		kfree(svm_data);
-	}
+	wrmsrl(MSR_VM_HSAVE_PA, 0);
+	rdmsrl(MSR_EFER, efer);
+	wrmsrl(MSR_EFER, efer & ~MSR_EFER_SVME_MASK);
 }
 
 static void svm_hardware_enable(void *garbage)
@@ -321,6 +313,19 @@ static void svm_hardware_enable(void *ga
 	       page_to_pfn(svm_data->save_area) << PAGE_SHIFT);
 }
 
+static void svm_cpu_uninit(int cpu)
+{
+	struct svm_cpu_data *svm_data
+		= per_cpu(svm_data, raw_smp_processor_id());
+
+	if (!svm_data)
+		return;
+
+	per_cpu(svm_data, raw_smp_processor_id()) = NULL;
+	__free_page(svm_data->save_area);
+	kfree(svm_data);
+}
+
 static int svm_cpu_init(int cpu)
 {
 	struct svm_cpu_data *svm_data;
@@ -458,6 +463,11 @@ err:
 
 static __exit void svm_hardware_unsetup(void)
 {
+	int cpu;
+
+	for_each_online_cpu(cpu)
+		svm_cpu_uninit(cpu);
+
 	__free_pages(pfn_to_page(iopm_base >> PAGE_SHIFT), IOPM_ALLOC_ORDER);
 	iopm_base = 0;
 }

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 10/62] KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (8 preceding siblings ...)
  2008-07-30 23:58   ` [patch 09/62] KVM: SVM: fix suspend/resume support Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 11/62] KVM: VMX: Add ept_sync_context in flush_tlb Greg KH
                     ` (51 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Marcelo Tosatti, Avi Kivity

[-- Attachment #1: kvm-mmu_shrink-kvm_mmu_zap_page-requires-slots_lock-to-be-held.patch --]
[-- Type: text/plain, Size: 1124 bytes --]


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

------------------
From: Marcelo Tosatti <mtosatti@redhat.com>

Original-Commit-Hash: 64f6a0c041bd8fc100a0d655058bdbc31feda03c

kvm_mmu_zap_page() needs slots lock held (rmap_remove->gfn_to_memslot,
for example).

Since kvm_lock spinlock is held in mmu_shrink(), do a non-blocking
down_read_trylock().

Untested.

Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/x86/kvm/mmu.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1968,6 +1968,8 @@ static int mmu_shrink(int nr_to_scan, gf
 	list_for_each_entry(kvm, &vm_list, vm_list) {
 		int npages;
 
+		if (!down_read_trylock(&kvm->slots_lock))
+			continue;
 		spin_lock(&kvm->mmu_lock);
 		npages = kvm->arch.n_alloc_mmu_pages -
 			 kvm->arch.n_free_mmu_pages;
@@ -1980,6 +1982,7 @@ static int mmu_shrink(int nr_to_scan, gf
 		nr_to_scan--;
 
 		spin_unlock(&kvm->mmu_lock);
+		up_read(&kvm->slots_lock);
 	}
 	if (kvm_freed)
 		list_move_tail(&kvm_freed->vm_list, &vm_list);

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 11/62] KVM: VMX: Add ept_sync_context in flush_tlb
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (9 preceding siblings ...)
  2008-07-30 23:58   ` [patch 10/62] KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 12/62] KVM: x86 emulator: Fix HLT instruction Greg KH
                     ` (50 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Sheng Yang, Avi Kivity

[-- Attachment #1: kvm-vmx-add-ept_sync_context-in-flush_tlb.patch --]
[-- Type: text/plain, Size: 1233 bytes --]


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

------------------
From: Sheng Yang <sheng.yang@intel.com>

Original-Commit-Hash: 73f785350b92e1a3af945340f7d10f3978193cba

Fix a potention issue caused by kvm_mmu_slot_remove_write_access(). The
old behavior don't sync EPT TLB with modified EPT entry, which result
in inconsistent content of EPT TLB and EPT table.

Signed-off-by: Sheng Yang <sheng.yang@intel.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>


---
 arch/x86/kvm/vmx.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -88,6 +88,7 @@ static inline struct vcpu_vmx *to_vmx(st
 }
 
 static int init_rmode(struct kvm *kvm);
+static u64 construct_eptp(unsigned long root_hpa);
 
 static DEFINE_PER_CPU(struct vmcs *, vmxarea);
 static DEFINE_PER_CPU(struct vmcs *, current_vmcs);
@@ -1389,6 +1390,8 @@ static void exit_lmode(struct kvm_vcpu *
 static void vmx_flush_tlb(struct kvm_vcpu *vcpu)
 {
 	vpid_sync_vcpu_all(to_vmx(vcpu));
+	if (vm_need_ept())
+		ept_sync_context(construct_eptp(vcpu->arch.mmu.root_hpa));
 }
 
 static void vmx_decache_cr4_guest_bits(struct kvm_vcpu *vcpu)

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 12/62] KVM: x86 emulator: Fix HLT instruction
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (10 preceding siblings ...)
  2008-07-30 23:58   ` [patch 11/62] KVM: VMX: Add ept_sync_context in flush_tlb Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 13/62] KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction Greg KH
                     ` (49 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Mohammed Gamal, Avi Kivity

[-- Attachment #1: kvm-x86-emulator-fix-hlt-instruction.patch --]
[-- Type: text/plain, Size: 1095 bytes --]


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

------------------
From: Mohammed Gamal <m.gamal005@gmail.com>

Original-Commit-Hash: bcc542267538e9ba933d08b4cd4ebd796e03a3d7

This patch fixes issue encountered with HLT instruction
under FreeDOS's HIMEM XMS Driver.

The HLT instruction jumped directly to the done label and
skips updating the EIP value, therefore causing the guest
to spin endlessly on the same instruction.

The patch changes the instruction so that it writes back
the updated EIP value.

Signed-off-by: Mohammed Gamal <m.gamal005@gmail.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/x86/kvm/x86_emulate.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/x86/kvm/x86_emulate.c
+++ b/arch/x86/kvm/x86_emulate.c
@@ -1666,7 +1666,7 @@ special_insn:
 		break;
 	case 0xf4:              /* hlt */
 		ctxt->vcpu->arch.halt_request = 1;
-		goto done;
+		break;
 	case 0xf5:	/* cmc */
 		/* complement carry flag from eflags reg */
 		ctxt->eflags ^= EFLG_CF;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 13/62] KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (11 preceding siblings ...)
  2008-07-30 23:58   ` [patch 12/62] KVM: x86 emulator: Fix HLT instruction Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 14/62] KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts Greg KH
                     ` (48 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Marcelo Tosatti, Avi Kivity

[-- Attachment #1: kvm-mmu-nuke-shadowed-pgtable-pages-and-ptes-on-memslot-destruction.patch --]
[-- Type: text/plain, Size: 2607 bytes --]


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

------------------
From: Marcelo Tosatti <mtosatti@redhat.com>

Original-Commit-Hash: 3cc312f03e06a8fa39ecb4cc0189efc2bd888899

Flush the shadow mmu before removing regions to avoid stale entries.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/ia64/kvm/kvm-ia64.c   |    3 +++
 arch/powerpc/kvm/powerpc.c |    4 ++++
 arch/s390/kvm/kvm-s390.c   |    4 ++++
 arch/x86/kvm/x86.c         |    5 +++++
 include/linux/kvm_host.h   |    1 +
 virt/kvm/kvm_main.c        |    3 +++
 6 files changed, 20 insertions(+)

--- a/arch/ia64/kvm/kvm-ia64.c
+++ b/arch/ia64/kvm/kvm-ia64.c
@@ -1460,6 +1460,9 @@ int kvm_arch_set_memory_region(struct kv
 	return 0;
 }
 
+void kvm_arch_flush_shadow(struct kvm *kvm)
+{
+}
 
 long kvm_arch_dev_ioctl(struct file *filp,
 		unsigned int ioctl, unsigned long arg)
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -167,6 +167,10 @@ int kvm_arch_set_memory_region(struct kv
 	return 0;
 }
 
+void kvm_arch_flush_shadow(struct kvm *kvm)
+{
+}
+
 struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, unsigned int id)
 {
 	struct kvm_vcpu *vcpu;
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -672,6 +672,10 @@ int kvm_arch_set_memory_region(struct kv
 	return 0;
 }
 
+void kvm_arch_flush_shadow(struct kvm *kvm)
+{
+}
+
 gfn_t unalias_gfn(struct kvm *kvm, gfn_t gfn)
 {
 	return gfn;
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -4016,6 +4016,11 @@ int kvm_arch_set_memory_region(struct kv
 	return 0;
 }
 
+void kvm_arch_flush_shadow(struct kvm *kvm)
+{
+	kvm_mmu_zap_all(kvm);
+}
+
 int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu)
 {
 	return vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -166,6 +166,7 @@ int kvm_arch_set_memory_region(struct kv
 				struct kvm_userspace_memory_region *mem,
 				struct kvm_memory_slot old,
 				int user_alloc);
+void kvm_arch_flush_shadow(struct kvm *kvm);
 gfn_t unalias_gfn(struct kvm *kvm, gfn_t gfn);
 struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn);
 unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn);
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -377,6 +377,9 @@ int __kvm_set_memory_region(struct kvm *
 	if (mem->slot >= kvm->nmemslots)
 		kvm->nmemslots = mem->slot + 1;
 
+	if (!npages)
+		kvm_arch_flush_shadow(kvm);
+
 	*memslot = new;
 
 	r = kvm_arch_set_memory_region(kvm, mem, old, user_alloc);

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 14/62] KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (12 preceding siblings ...)
  2008-07-30 23:58   ` [patch 13/62] KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 15/62] Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error Greg KH
                     ` (47 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Avi Kivity

[-- Attachment #1: kvm-mmu-fix-potential-race-setting-upper-shadow-ptes-on-nonpae-hosts.patch --]
[-- Type: text/plain, Size: 1253 bytes --]

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

------------------
From: Avi Kivity <avi@qumranet.com>

Original-Commit-Hash: c23a6fe17abf8562e675465f8d55ba1a551d314d

The direct mapped shadow code (used for real mode and two dimensional paging)
sets upper-level ptes using direct assignment rather than calling
set_shadow_pte().  A nonpae host will split this into two writes, which opens
up a race if another vcpu accesses the same memory area.

Fix by calling set_shadow_pte() instead of assigning directly.

Noticed by Izik Eidus.

Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>


---
 arch/x86/kvm/mmu.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1171,9 +1171,10 @@ static int __direct_map(struct kvm_vcpu 
 				return -ENOMEM;
 			}
 
-			table[index] = __pa(new_table->spt)
-				| PT_PRESENT_MASK | PT_WRITABLE_MASK
-				| shadow_user_mask | shadow_x_mask;
+			set_shadow_pte(&table[index],
+				       __pa(new_table->spt)
+				       | PT_PRESENT_MASK | PT_WRITABLE_MASK
+				       | shadow_user_mask | shadow_x_mask);
 		}
 		table_addr = table[index] & PT64_BASE_ADDR_MASK;
 	}

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 15/62] Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (13 preceding siblings ...)
  2008-07-30 23:58   ` [patch 14/62] KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 16/62] rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall Greg KH
                     ` (46 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Roland McGrath, Ingo Molnar

[-- Attachment #1: patch-upstream-x86-ptrace-fix-ptrace_getfpxregs-error.patch --]
[-- Type: text/plain, Size: 1798 bytes --]

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

------------------
From: Roland McGrath <roland@redhat.com>

commit 45fdc3a7624a4a48185a04ae0abab5f9793d8952 upstream

ptrace has always returned only -EIO for all failures to access
registers.  The user_regset calls are allowed to return a more
meaningful variety of errors.  The REGSET_XFP calls use -ENODEV
for !cpu_has_fxsr hardware.  Make ptrace return the traditional
-EIO instead of the error code from the user_regset call.

Signed-off-by: Roland McGrath <roland@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/x86/kernel/i387.c   |    4 ++--
 arch/x86/kernel/ptrace.c |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

--- a/arch/x86/kernel/i387.c
+++ b/arch/x86/kernel/i387.c
@@ -162,7 +162,7 @@ int xfpregs_get(struct task_struct *targ
 	int ret;
 
 	if (!cpu_has_fxsr)
-		return -EIO;
+		return -ENODEV;
 
 	ret = init_fpu(target);
 	if (ret)
@@ -179,7 +179,7 @@ int xfpregs_set(struct task_struct *targ
 	int ret;
 
 	if (!cpu_has_fxsr)
-		return -EIO;
+		return -ENODEV;
 
 	ret = init_fpu(target);
 	if (ret)
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -943,13 +943,13 @@ long arch_ptrace(struct task_struct *chi
 		return copy_regset_to_user(child, &user_x86_32_view,
 					   REGSET_XFP,
 					   0, sizeof(struct user_fxsr_struct),
-					   datap);
+					   datap) ? -EIO : 0;
 
 	case PTRACE_SETFPXREGS:	/* Set the child extended FPU state. */
 		return copy_regset_from_user(child, &user_x86_32_view,
 					     REGSET_XFP,
 					     0, sizeof(struct user_fxsr_struct),
-					     datap);
+					     datap) ? -EIO : 0;
 #endif
 
 #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 16/62] rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (14 preceding siblings ...)
  2008-07-30 23:58   ` [patch 15/62] Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 17/62] Fix typos from signal_32/64.h merge Greg KH
                     ` (45 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Paul E. McKenney, Peter Zijlstra, Josh Triplett,
	Dipankar Sarma, Ingo Molnar

[-- Attachment #1: rcu-fix-rcu_try_flip_waitack_needed-to-prevent-grace-period-stall.patch --]
[-- Type: text/plain, Size: 3058 bytes --]

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

------------------
From: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

commit d7c0651390b6a03ad53f99faec0ba88109d7191d upstream

The comment was correct -- need to make the code match the comment.
Without this patch, if a CPU goes dynticks idle (and stays there forever)
in just the right phase of preemptible-RCU grace-period processing,
grace periods stall.  The offending sequence of events (courtesy
of Promela/spin, at least after I got the liveness criterion coded
correctly...) is as follows:

o	CPU 0 is in dynticks-idle mode.  Its dynticks_progress_counter
	is (say) 10.

o	CPU 0 takes an interrupt, so rcu_irq_enter() increments CPU 0's
	dynticks_progress_counter to 11.

o	CPU 1 is doing RCU grace-period processing in rcu_try_flip_idle(),
	sees rcu_pending(), so invokes dyntick_save_progress_counter(),
	which in turn takes a snapshot of CPU 0's dynticks_progress_counter
	into CPU 0's rcu_dyntick_snapshot -- now set to 11.  CPU 1 then
	updates the RCU grace-period state to rcu_try_flip_waitack().

o	CPU 0 returns from its interrupt, so rcu_irq_exit() increments
	CPU 0's dynticks_progress_counter to 12.

o	CPU 1 later invokes rcu_try_flip_waitack(), which notices that
	CPU 0 has not yet responded, and hence in turn invokes
	rcu_try_flip_waitack_needed().  This function examines the
	state of CPU 0's dynticks_progress_counter and rcu_dyntick_snapshot
	variables, which it copies to curr (== 12) and snap (== 11),
	respectively.

	Because curr!=snap, the first condition fails.

	Because curr-snap is only 1 and snap is odd, the second
	condition fails.

	rcu_try_flip_waitack_needed() therefore incorrectly concludes
	that it must wait for CPU 0 to explicitly acknowledge the
	counter flip.

o	CPU 0 remains forever in dynticks-idle mode, never taking
	any more hardware interrupts or any NMIs, and never running
	any more tasks.  (Of course, -something- will usually eventually
	happen, which might be why we haven't seen this one in the
	wild.  Still should be fixed!)

Therefore the grace period never ends.  Fix is to make the code match
the comment, as shown below.  With this fix, the above scenario
would be satisfied with curr being even, and allow the grace period
to proceed.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Josh Triplett <josh@kernel.org>
Cc: Dipankar Sarma <dipankar@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 kernel/rcupreempt.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/kernel/rcupreempt.c
+++ b/kernel/rcupreempt.c
@@ -567,7 +567,7 @@ rcu_try_flip_waitack_needed(int cpu)
 	 * that this CPU already acknowledged the counter.
 	 */
 
-	if ((curr - snap) > 2 || (snap & 0x1) == 0)
+	if ((curr - snap) > 2 || (curr & 0x1) == 0)
 		return 0;
 
 	/* We need this CPU to explicitly acknowledge the counter flip. */

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 17/62] Fix typos from signal_32/64.h merge
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (15 preceding siblings ...)
  2008-07-30 23:58   ` [patch 16/62] rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 18/62] x86 reboot quirks: add Dell Precision WorkStation T5400 Greg KH
                     ` (44 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Herton Ronaldo Krzesinski, Luiz Fernando N. Capitulino,
	Roland McGrath, Ingo Molnar

[-- Attachment #1: fix-typos-from-signal_32-64.h-merge.patch --]
[-- Type: text/plain, Size: 1305 bytes --]

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

------------------
From: Herton Ronaldo Krzesinski <herton@mandriva.com.br>

commit 723edb5060855ef36ddeca51a070784b0e0d16df upstream

Fallout from commit 33185c504f8e521b398536b5a8d415779a24593c ("x86:
merge signal_32/64.h")

Thanks to Dick Streefland who provided an useful testcase on
http://lkml.org/lkml/2008/3/17/205 (only applicable to 2.6.24.x), that
helped a lot as a deterministic way to bisect an issue that leaded to
this fix.

Signed-off-by: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
Signed-off-by: Luiz Fernando N. Capitulino <lcapitulino@mandriva.com.br>
Cc: Roland McGrath <roland@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 include/asm-x86/signal.h |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/include/asm-x86/signal.h
+++ b/include/asm-x86/signal.h
@@ -181,12 +181,12 @@ typedef struct sigaltstack {
 #ifdef __KERNEL__
 #include <asm/sigcontext.h>
 
-#ifdef __386__
+#ifdef __i386__
 
 #define __HAVE_ARCH_SIG_BITOPS
 
 #define sigaddset(set,sig)		    \
-	(__builtin_constantp(sig)	    \
+	(__builtin_constant_p(sig)	    \
 	 ? __const_sigaddset((set), (sig))  \
 	 : __gen_sigaddset((set), (sig)))
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 18/62] x86 reboot quirks: add Dell Precision WorkStation T5400
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (16 preceding siblings ...)
  2008-07-30 23:58   ` [patch 17/62] Fix typos from signal_32/64.h merge Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 19/62] USB: fix usb serial pm counter decrement for disconnected interfaces Greg KH
                     ` (43 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Ingo Molnar

[-- Attachment #1: x86-reboot-quirks-add-dell-precision-workstation-t5400.patch --]
[-- Type: text/plain, Size: 1083 bytes --]

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

------------------
From: Ingo Molnar <mingo@elte.hu>

commit fab3b58d3b242b5903f78d60d86803a8aecdf6de upstream

as reported in:

  "reboot=bios is mandatory on Dell T5400 server."
  http://bugzilla.kernel.org/show_bug.cgi?id=11108

add a DMI reboot quirk.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/x86/kernel/reboot.c |    8 ++++++++
 1 file changed, 8 insertions(+)

--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -177,6 +177,14 @@ static struct dmi_system_id __initdata r
 			DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
 		},
 	},
+	{	/* Handle problems with rebooting on Dell T5400's */
+		.callback = set_bios_reboot,
+		.ident = "Dell Precision T5400",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T5400"),
+		},
+	},
 	{	/* Handle problems with rebooting on HP laptops */
 		.callback = set_bios_reboot,
 		.ident = "HP Compaq Laptop",

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 19/62] USB: fix usb serial pm counter decrement for disconnected interfaces
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (17 preceding siblings ...)
  2008-07-30 23:58   ` [patch 18/62] x86 reboot quirks: add Dell Precision WorkStation T5400 Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 20/62] x86, suspend, acpi: enter Big Real Mode Greg KH
                     ` (42 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Oliver Neukum

[-- Attachment #1: usb-fix-usb-serial-pm-counter-decrement-for-disconnected-interfaces.patch --]
[-- Type: text/plain, Size: 1087 bytes --]

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

------------------
From: Oliver Neukum <oliver@neukum.org>

commit 62ad296b6ca78bd123864c138814c0a597873693 upstream

usb serial decrements the pm counter even if an interface has been
disconnected. If it was a logical disconnect the interface may belong
already to another driver. This patch introduces a check for disconnected
interfaces.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/usb/serial/usb-serial.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -283,7 +283,10 @@ static void serial_close(struct tty_stru
 	}
 
 	if (port->open_count == 0) {
-		usb_autopm_put_interface(port->serial->interface);
+		mutex_lock(&port->serial->disc_mutex);
+		if (!port->serial->disconnected)
+			usb_autopm_put_interface(port->serial->interface);
+		mutex_unlock(&port->serial->disc_mutex);
 		module_put(port->serial->type->driver.owner);
 	}
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 20/62] x86, suspend, acpi: enter Big Real Mode
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (18 preceding siblings ...)
  2008-07-30 23:58   ` [patch 19/62] USB: fix usb serial pm counter decrement for disconnected interfaces Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-08-05 12:15     ` Pavel Machek
  2008-07-30 23:58   ` [patch 21/62] markers: fix duplicate modpost entry Greg KH
                     ` (41 subsequent siblings)
  61 siblings, 1 reply; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Rafael J. Wysocki, Thomas Gleixner, H. Peter Anvin,
	Ingo Molnar

[-- Attachment #1: x86-suspend-acpi-enter-big-real-mode.patch --]
[-- Type: text/plain, Size: 3172 bytes --]

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

------------------
From: H. Peter Anvin <hpa@zytor.com>

Commit 3bf2e77453a87c22eb57ed4926760ac131c84459 upstream

x86, suspend, acpi: enter Big Real Mode

The explanation for recent video BIOS suspend quirk failures is that
the VESA BIOS expects to be entered in Big Real Mode (*.limit = 0xffffffff)
instead of ordinary Real Mode (*.limit = 0xffff).

This patch changes the segment descriptors to Big Real Mode instead.

The segment descriptor registers (what Intel calls "segment cache") is
always active.  The only thing that changes based on CR0.PE is how it is
*loaded* and the interpretation of the CS flags.

The segment descriptor registers contain of the following sub-registers:
selector (the "visible" part), base, limit and flags.  In protected mode
or long mode, they are loaded from descriptors (or fs.base or gs.base can
be manipulated directly in long mode.)  In real mode, the only thing
changed by a segment register load is the selector and the base, where the
base <- selector << 4.  In particular, *the limit and the flags are not
changed*.

As far as the handling of the CS flags: a code segment cannot be writable
in protected mode, whereas it is "just another segment" in real mode, so
there is some kind of quirk that kicks in for this when CR0.PE <- 0.  I'm
not sure if this is accomplished by actually changing the cs.flags register
or just changing the interpretation; it might be something that is
CPU-specific.  In particular, the Transmeta CPUs had an explicit "CS is
writable if you're in real mode" override, so even if you had loaded CS
with an execute-only segment it'd be writable (but not readable!) on return
to real mode.  I'm not at all sure if that is how other CPUs behave.

Signed-off-by: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

---
 arch/x86/kernel/acpi/sleep.c |   17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

--- a/arch/x86/kernel/acpi/sleep.c
+++ b/arch/x86/kernel/acpi/sleep.c
@@ -23,6 +23,15 @@ static unsigned long acpi_realmode;
 static char temp_stack[10240];
 #endif
 
+/* XXX: this macro should move to asm-x86/segment.h and be shared with the
+   boot code... */
+#define GDT_ENTRY(flags, base, limit)		\
+	(((u64)(base & 0xff000000) << 32) |	\
+	 ((u64)flags << 40) |			\
+	 ((u64)(limit & 0x00ff0000) << 32) |	\
+	 ((u64)(base & 0x00ffffff) << 16) |	\
+	 ((u64)(limit & 0x0000ffff)))
+
 /**
  * acpi_save_state_mem - save kernel state
  *
@@ -58,11 +67,11 @@ int acpi_save_state_mem(void)
 			((char *)&header->wakeup_gdt - (char *)acpi_realmode))
 				<< 16);
 	/* GDT[1]: real-mode-like code segment */
-	header->wakeup_gdt[1] = (0x009bULL << 40) +
-		((u64)acpi_wakeup_address << 16) + 0xffff;
+	header->wakeup_gdt[1] =
+		GDT_ENTRY(0x809b, acpi_wakeup_address, 0xfffff);
 	/* GDT[2]: real-mode-like data segment */
-	header->wakeup_gdt[2] = (0x0093ULL << 40) +
-		((u64)acpi_wakeup_address << 16) + 0xffff;
+	header->wakeup_gdt[2] =
+		GDT_ENTRY(0x8093, acpi_wakeup_address, 0xfffff);
 
 #ifndef CONFIG_64BIT
 	store_gdt((struct desc_ptr *)&header->pmode_gdt);

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 21/62] markers: fix duplicate modpost entry
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (19 preceding siblings ...)
  2008-07-30 23:58   ` [patch 20/62] x86, suspend, acpi: enter Big Real Mode Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 22/62] Fix build on COMPAT platforms when CONFIG_EPOLL is disabled Greg KH
                     ` (40 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Mathieu Desnoyers, Roland McGrath, Wenji Huang,
	Takashi Nishiie

[-- Attachment #1: markers-fix-duplicate-modpost-entry.patch --]
[-- Type: text/plain, Size: 2449 bytes --]

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

------------------
From: Mathieu Desnoyers <compudj@krystal.dyndns.org>

commit: d35cb360c29956510b2fe1a953bd4968536f7216

When a kernel was rebuilt, the previous Module.markers was not cleared.
It caused markers with different format strings to appear as duplicates
when a markers was changed.  This problem is present since
scripts/mod/modpost.c started to generate Module.markers, commit
b2e3e658b344c6bcfb8fb694100ab2f2b5b2edb0

It therefore applies to 2.6.25, 2.6.26 and linux-next.

I merely merged the patches from Roland, Wenji and Takashi here.

Credits to
Roland McGrath <roland@redhat.com>
Wenji Huang <wenji.huang@oracle.com>
and
Takashi Nishiie <t-nishiie@np.css.fujitsu.com>

for providing the individual fixes.

- Changelog :
  - Integrated Takashi's Makefile modification to clear Module.markers upon
    make clean.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Roland McGrath <roland@redhat.com>
Cc: Wenji Huang <wenji.huang@oracle.com>
Cc: Takashi Nishiie <t-nishiie@np.css.fujitsu.com>
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>

---
 Makefile                 |    3 ++-
 scripts/Makefile.modpost |    1 +
 scripts/mod/modpost.c    |    3 ++-
 3 files changed, 5 insertions(+), 2 deletions(-)

--- a/Makefile
+++ b/Makefile
@@ -1133,7 +1133,8 @@ clean: archclean $(clean-dirs)
 	@find . $(RCS_FIND_IGNORE) \
 		\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
 		-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
-		-o -name '*.symtypes' -o -name 'modules.order' \) \
+		-o -name '*.symtypes' -o -name 'modules.order' \
+		-o -name 'Module.markers' \) \
 		-type f -print | xargs rm -f
 
 # mrproper - Delete all generated files, including .config
--- a/scripts/Makefile.modpost
+++ b/scripts/Makefile.modpost
@@ -101,6 +101,7 @@ quiet_cmd_kernel-mod = MODPOST $@
       cmd_kernel-mod = $(modpost) $@
 
 vmlinux.o: FORCE
+	@rm -fr $(kernelmarkersfile)
 	$(call cmd,kernel-mod)
 
 # Declare generated files as targets for modpost
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1992,7 +1992,8 @@ static void read_markers(const char *fna
 			mod->skip = 1;
 		}
 
-		add_marker(mod, marker, fmt);
+		if (!mod->skip)
+			add_marker(mod, marker, fmt);
 	}
 	return;
 fail:

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 22/62] Fix build on COMPAT platforms when CONFIG_EPOLL is disabled
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (20 preceding siblings ...)
  2008-07-30 23:58   ` [patch 21/62] markers: fix duplicate modpost entry Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 24/62] cpusets: fix wrong domain attr updates Greg KH
                     ` (39 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Atsushi Nemoto, Davide Libenzi

[-- Attachment #1: fix-build-on-compat-platforms-when-config_epoll-is-disabled.patch --]
[-- Type: text/plain, Size: 910 bytes --]

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

------------------
From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>

commit 5f17156fc55abac476d180e480bedb0f07f01b14 upstream

Add missing cond_syscall() entry for compat_sys_epoll_pwait.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc: Davide Libenzi <davidel@xmailserver.org>
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>

---
 kernel/sys_ni.c |    1 +
 1 file changed, 1 insertion(+)

--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -59,6 +59,7 @@ cond_syscall(sys_epoll_create);
 cond_syscall(sys_epoll_ctl);
 cond_syscall(sys_epoll_wait);
 cond_syscall(sys_epoll_pwait);
+cond_syscall(compat_sys_epoll_pwait);
 cond_syscall(sys_semget);
 cond_syscall(sys_semop);
 cond_syscall(sys_semtimedop);

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 24/62] cpusets: fix wrong domain attr updates
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (21 preceding siblings ...)
  2008-07-30 23:58   ` [patch 22/62] Fix build on COMPAT platforms when CONFIG_EPOLL is disabled Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 25/62] x86: fix crash due to missing debugctlmsr on AMD K6-3 Greg KH
                     ` (38 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Miao Xie, Hidetoshi Seto, Paul Jackson, Nick Piggin,
	Ingo Molnar

[-- Attachment #1: cpusets-fix-wrong-domain-attr-updates.patch --]
[-- Type: text/plain, Size: 1037 bytes --]

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

------------------
From: Miao Xie <miaox@cn.fujitsu.com>

commit 91cd4d6ef0abb1f65e81f8fe37e7d3c10344e38c upstream

Fix wrong domain attr updates, or we will always update the first sched
domain attr.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Cc: Paul Jackson <pj@sgi.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Ingo Molnar <mingo@elte.hu>
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>

---
 kernel/cpuset.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -679,7 +679,9 @@ restart:
 				if (apn == b->pn) {
 					cpus_or(*dp, *dp, b->cpus_allowed);
 					b->pn = -1;
-					update_domain_attr(dattr, b);
+					if (dattr)
+						update_domain_attr(dattr
+								   + nslot, b);
 				}
 			}
 			nslot++;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 25/62] x86: fix crash due to missing debugctlmsr on AMD K6-3
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (22 preceding siblings ...)
  2008-07-30 23:58   ` [patch 24/62] cpusets: fix wrong domain attr updates Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 23/62] proc: fix /proc/*/pagemap Greg KH
                     ` (37 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Jan Kratochvil, Ingo Molnar

[-- Attachment #1: x86-fix-crash-due-to-missing-debugctlmsr-on-amd-k6-3.patch --]
[-- Type: text/plain, Size: 1207 bytes --]

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

------------------
From: Jan Kratochvil <jan.kratochvil@redhat.com>

commit d536b1f86591fb081c7a56eab04e711eb4dab951 upstream

currently if you use PTRACE_SINGLEBLOCK on AMD K6-3 (i586) it will crash.
Kernel now wrongly assumes existing DEBUGCTLMSR MSR register there.

Removed the assumption also for some other non-K6 CPUs but I am not sure there
(but it can only bring small inefficiency there if my assumption is wrong).

Based on info from Roland McGrath, Chuck Ebbert and Mikulas Patocka.
More info at:
	https://bugzilla.redhat.com/show_bug.cgi?id=456175

Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/x86/Kconfig.cpu |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/x86/Kconfig.cpu
+++ b/arch/x86/Kconfig.cpu
@@ -414,4 +414,4 @@ config X86_MINIMUM_CPU_FAMILY
 
 config X86_DEBUGCTLMSR
 	def_bool y
-	depends on !(M586MMX || M586TSC || M586 || M486 || M386)
+	depends on !(MK6 || MWINCHIPC6 || MWINCHIP2 || MWINCHIP3D || MCYRIXIII || M586MMX || M586TSC || M586 || M486 || M386)

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 23/62] proc: fix /proc/*/pagemap
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (23 preceding siblings ...)
  2008-07-30 23:58   ` [patch 25/62] x86: fix crash due to missing debugctlmsr on AMD K6-3 Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 26/62] ide-cd: fix oops when using growisofs Greg KH
                     ` (36 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Alexey Dobriyan, Vegard Nossum

[-- Attachment #1: proc-fix-proc-pagemap-some-more.patch --]
[-- Type: text/plain, Size: 1060 bytes --]

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

------------------
From: Alexey Dobriyan <adobriyan@gmail.com>

commit ee1e6ab6056a8b9c19377257002da98b83819531 upstream

struct pagemap_walk was placed on stack, some hooks are initialized, the
rest (->pgd_entry, ->pud_entry, ->pte_entry) are valid but junk.

Reported-by: Eric Sesterhenn <snakebyte@gmx.de>
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: "Vegard Nossum" <vegard.nossum@gmail.com>
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>

---
 fs/proc/task_mmu.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -636,7 +636,7 @@ static ssize_t pagemap_read(struct file 
 	struct pagemapread pm;
 	int pagecount;
 	int ret = -ESRCH;
-	struct mm_walk pagemap_walk;
+	struct mm_walk pagemap_walk = {};
 	unsigned long src;
 	unsigned long svpfn;
 	unsigned long start_vaddr;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 26/62] ide-cd: fix oops when using growisofs
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (24 preceding siblings ...)
  2008-07-30 23:58   ` [patch 23/62] proc: fix /proc/*/pagemap Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 27/62] rtc-at91rm9200: avoid spurious irqs Greg KH
                     ` (35 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Michael Buesch, Jan Kara, Arnd Bergmann, Borislav Petkov,
	Bartlomiej Zolnierkiewicz, Harvey Harrison

[-- Attachment #1: ide-cd-fix-oops-when-using-growisofs.patch --]
[-- Type: text/plain, Size: 2146 bytes --]

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

------------------
From: Jens Axboe <jens.axboe@oracle.com>

commit e8e7b9eb11c34ee18bde8b7011af41938d1ad667 upstream

cdrom_read_capacity() will blindly return the capacity from the device
without sanity-checking it.  This later causes code in fs/buffer.c to
oops.

Fix this by checking that the device is telling us sensible things.

From: Jens Axboe <jens.axboe@oracle.com>
Cc: Michael Buesch <mb@bu3sch.de>
Cc: Jan Kara <jack@suse.cz>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Borislav Petkov <petkovbb@googlemail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
[bart: print device name instead of driver name]
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
[harvey: blocklen is a big-endian value]
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/ide/ide-cd.c |   27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -1308,13 +1308,30 @@ static int cdrom_read_capacity(ide_drive
 	req.cmd_flags |= REQ_QUIET;
 
 	stat = ide_cd_queue_pc(drive, &req);
-	if (stat == 0) {
-		*capacity = 1 + be32_to_cpu(capbuf.lba);
-		*sectors_per_frame =
-			be32_to_cpu(capbuf.blocklen) >> SECTOR_BITS;
+	if (stat)
+		return stat;
+
+	/*
+	 * Sanity check the given block size
+	 */
+	switch (capbuf.blocklen) {
+	case __constant_cpu_to_be32(512):
+	case __constant_cpu_to_be32(1024):
+	case __constant_cpu_to_be32(2048):
+	case __constant_cpu_to_be32(4096):
+		break;
+	default:
+		printk(KERN_ERR "%s: weird block size %u\n",
+			drive->name, capbuf.blocklen);
+		printk(KERN_ERR "%s: default to 2kb block size\n",
+			drive->name);
+		capbuf.blocklen = __constant_cpu_to_be32(2048);
+		break;
 	}
 
-	return stat;
+	*capacity = 1 + be32_to_cpu(capbuf.lba);
+	*sectors_per_frame = be32_to_cpu(capbuf.blocklen) >> SECTOR_BITS;
+	return 0;
 }
 
 static int cdrom_read_tocentry(ide_drive_t *drive, int trackno, int msf_flag,

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 27/62] rtc-at91rm9200: avoid spurious irqs
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (25 preceding siblings ...)
  2008-07-30 23:58   ` [patch 26/62] ide-cd: fix oops when using growisofs Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 28/62] vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section Greg KH
                     ` (34 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, David Brownell, Andrew Victor

[-- Attachment #1: rtc-at91rm9200-avoid-spurious-irqs.patch --]
[-- Type: text/plain, Size: 2637 bytes --]

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

------------------
From: David Brownell <dbrownell@users.sourceforge.net>

commit 449321b39f6c6ebfa15d6da24f134240bd51db29 upstream

This fixes kernel http://bugzilla.kernel.org/show_bug.cgi?id=11112 (bogus
RTC update IRQs reported) for rtc-at91rm9200 by scrubbing old IRQ status
before enabling IRQs.

It also removes nonfunctional periodic IRQ support from this driver;
only update IRQs are reported, or provided by the hardware.

I suspect some other RTCs probably have versions of #11112; it's easy to
overlook, since most non-RTC drivers don't care about spurious IRQs:
they're not reported to userspace.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Report-by: W Unruh <unruh@physics.ubc.ca>
Cc: Andrew Victor <avictor.za@gmail.com>
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>

---
 drivers/rtc/rtc-at91rm9200.c |   16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

--- a/drivers/rtc/rtc-at91rm9200.c
+++ b/drivers/rtc/rtc-at91rm9200.c
@@ -175,8 +175,10 @@ static int at91_rtc_setalarm(struct devi
 		| BIN2BCD(tm.tm_mday) << 24
 		| AT91_RTC_DATEEN | AT91_RTC_MTHEN);
 
-	if (alrm->enabled)
+	if (alrm->enabled) {
+		at91_sys_write(AT91_RTC_SCCR, AT91_RTC_ALARM);
 		at91_sys_write(AT91_RTC_IER, AT91_RTC_ALARM);
+	}
 
 	pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __func__,
 		at91_alarm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour,
@@ -195,28 +197,22 @@ static int at91_rtc_ioctl(struct device 
 
 	pr_debug("%s(): cmd=%08x, arg=%08lx.\n", __func__, cmd, arg);
 
+	/* important:  scrub old status before enabling IRQs */
 	switch (cmd) {
 	case RTC_AIE_OFF:	/* alarm off */
 		at91_sys_write(AT91_RTC_IDR, AT91_RTC_ALARM);
 		break;
 	case RTC_AIE_ON:	/* alarm on */
+		at91_sys_write(AT91_RTC_SCCR, AT91_RTC_ALARM);
 		at91_sys_write(AT91_RTC_IER, AT91_RTC_ALARM);
 		break;
 	case RTC_UIE_OFF:	/* update off */
-	case RTC_PIE_OFF:	/* periodic off */
 		at91_sys_write(AT91_RTC_IDR, AT91_RTC_SECEV);
 		break;
 	case RTC_UIE_ON:	/* update on */
-	case RTC_PIE_ON:	/* periodic on */
+		at91_sys_write(AT91_RTC_SCCR, AT91_RTC_SECEV);
 		at91_sys_write(AT91_RTC_IER, AT91_RTC_SECEV);
 		break;
-	case RTC_IRQP_READ:	/* read periodic alarm frequency */
-		ret = put_user(AT91_RTC_FREQ, (unsigned long *) arg);
-		break;
-	case RTC_IRQP_SET:	/* set periodic alarm frequency */
-		if (arg != AT91_RTC_FREQ)
-			ret = -EINVAL;
-		break;
 	default:
 		ret = -ENOIOCTLCMD;
 		break;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 28/62] vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (26 preceding siblings ...)
  2008-07-30 23:58   ` [patch 27/62] rtc-at91rm9200: avoid spurious irqs Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 29/62] ARM: fix fls() for 64-bit arguments Greg KH
                     ` (33 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Jan Beulich, Sam Ravnborg

[-- Attachment #1: vmlinux.lds-move-__attribute__-functions-back-into-final-.text-section.patch --]
[-- Type: text/plain, Size: 1570 bytes --]

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

------------------
From: Jan Beulich <jbeulich@novell.com>

commit fb5e2b379732e1a6ea32392980bb42e0212db842 upstream

Due to the addition of __attribute__((__cold__)) to a few symbols
without adjusting the linker scripts, those symbols currently may end
up outside the [_stext,_etext) range, as they get placed in
.text.unlikely by (at least) gcc 4.3.0. This may confuse code not only
outside of the kernel, symbol_put_addr()'s BUG() could also trigger.
Hence we need to add .text.unlikely (and for future uses of
__attribute__((__hot__)) also .text.hot) to the TEXT_TEXT() macro.

Issue observed by Lukas Lipavsky.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Tested-by: Lukas Lipavsky <llipavsky@suse.cz>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 include/asm-generic/vmlinux.lds.h |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -204,6 +204,7 @@
  * during second ld run in second ld pass when generating System.map */
 #define TEXT_TEXT							\
 		ALIGN_FUNCTION();					\
+		*(.text.hot)						\
 		*(.text)						\
 		*(.ref.text)						\
 		*(.text.init.refok)					\
@@ -213,7 +214,8 @@
 	CPU_KEEP(init.text)						\
 	CPU_KEEP(exit.text)						\
 	MEM_KEEP(init.text)						\
-	MEM_KEEP(exit.text)
+	MEM_KEEP(exit.text)						\
+		*(.text.unlikely)
 
 
 /* sched.text is aling to function alignment to secure we have same

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 29/62] ARM: fix fls() for 64-bit arguments
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (27 preceding siblings ...)
  2008-07-30 23:58   ` [patch 28/62] vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 30/62] tcp: Clear probes_out more aggressively in tcp_ack() Greg KH
                     ` (32 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Nickolay Vinogradov, Russell King

[-- Attachment #1: arm-fix-fls-for-64-bit-arguments.patch --]
[-- Type: text/plain, Size: 1269 bytes --]

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

------------------
From: Andrew Morton <akpm@linux-foundation.org>

commit 0c65f459ce6c8bd873a61b3ae1e57858ab1debf3 upstream

arm's fls() is implemented as a macro, causing it to misbehave when passed
64-bit arguments.  Fix.

Cc: Nickolay Vinogradov <nickolay@protei.ru>
Tested-by: Krzysztof Halasa <khc@pm.waw.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 include/asm-arm/bitops.h |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

--- a/include/asm-arm/bitops.h
+++ b/include/asm-arm/bitops.h
@@ -277,9 +277,16 @@ static inline int constant_fls(int x)
  * the clz instruction for much better code efficiency.
  */
 
-#define fls(x) \
+#define __fls(x) \
 	( __builtin_constant_p(x) ? constant_fls(x) : \
 	  ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) )
+
+/* Implement fls() in C so that 64-bit args are suitably truncated */
+static inline int fls(int x)
+{
+	return __fls(x);
+}
+
 #define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
 #define __ffs(x) (ffs(x) - 1)
 #define ffz(x) __ffs( ~(x) )

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 30/62] tcp: Clear probes_out more aggressively in tcp_ack().
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (28 preceding siblings ...)
  2008-07-30 23:58   ` [patch 29/62] ARM: fix fls() for 64-bit arguments Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:58   ` [patch 31/62] sparc64: Fix lockdep issues in LDC protocol layer Greg KH
                     ` (31 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, David S. Miller

[-- Attachment #1: tcp-clear-probes_out-more-aggressively-in-tcp_ack.patch --]
[-- Type: text/plain, Size: 11329 bytes --]

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

------------------
From: David S. Miller <davem@davemloft.net>

[ Upstream commit 4b53fb67e385b856a991d402096379dab462170a ]

This is based upon an excellent bug report from Eric Dumazet.

tcp_ack() should clear ->icsk_probes_out even if there are packets
outstanding.  Otherwise if we get a sequence of ACKs while we do have
packets outstanding over and over again, we'll never clear the
probes_out value and eventually think the connection is too sick and
we'll reset it.

This appears to be some "optimization" added to tcp_ack() in the 2.4.x
timeframe.  In 2.2.x, probes_out is pretty much always cleared by
tcp_ack().

Here is Eric's original report:

----------------------------------------
Apparently, we can in some situations reset TCP connections in a couple of seconds when some frames are lost.

In order to reproduce the problem, please try the following program on linux-2.6.25.*

Setup some iptables rules to allow two frames per second sent on loopback interface to tcp destination port 12000

iptables -N SLOWLO
iptables -A SLOWLO -m hashlimit --hashlimit 2 --hashlimit-burst 1 --hashlimit-mode dstip --hashlimit-name slow2 -j ACCEPT
iptables -A SLOWLO -j DROP

iptables -A OUTPUT -o lo -p tcp --dport 12000 -j SLOWLO

Then run the attached program and see the output :

# ./loop
State      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port
ESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,1)
State      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port
ESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,3)
State      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port
ESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,5)
State      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port
ESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,7)
State      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port
ESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,9)
State      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port
ESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,200ms,11)
State      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port
ESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,201ms,13)
State      Recv-Q Send-Q                                  Local Address:Port                                    Peer Address:Port
ESTAB      0      40                                          127.0.0.1:54455                                      127.0.0.1:12000  timer:(persist,188ms,15)
write(): Connection timed out
wrote 890 bytes but was interrupted after 9 seconds
ESTAB      0      0                 127.0.0.1:12000            127.0.0.1:54455
Exiting read() because no data available (4000 ms timeout).
read 860 bytes

While this tcp session makes progress (sending frames with 50 bytes of payload, every 500ms), linux tcp stack decides to reset it, when tcp_retries 2 is reached (default value : 15)

tcpdump :

15:30:28.856695 IP 127.0.0.1.56554 > 127.0.0.1.12000: S 33788768:33788768(0) win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 7>
15:30:28.856711 IP 127.0.0.1.12000 > 127.0.0.1.56554: S 33899253:33899253(0) ack 33788769 win 32792 <mss 16396,nop,nop,sackOK,nop,wscale 7>
15:30:29.356947 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 1:61(60) ack 1 win 257
15:30:29.356966 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 61 win 257
15:30:29.866415 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 61:111(50) ack 1 win 257
15:30:29.866427 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 111 win 257
15:30:30.366516 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 111:161(50) ack 1 win 257
15:30:30.366527 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 161 win 257
15:30:30.876196 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 161:211(50) ack 1 win 257
15:30:30.876207 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 211 win 257
15:30:31.376282 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 211:261(50) ack 1 win 257
15:30:31.376290 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 261 win 257
15:30:31.885619 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 261:311(50) ack 1 win 257
15:30:31.885631 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 311 win 257
15:30:32.385705 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 311:361(50) ack 1 win 257
15:30:32.385715 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 361 win 257
15:30:32.895249 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 361:411(50) ack 1 win 257
15:30:32.895266 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 411 win 257
15:30:33.395341 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 411:461(50) ack 1 win 257
15:30:33.395351 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 461 win 257
15:30:33.918085 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 461:511(50) ack 1 win 257
15:30:33.918096 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 511 win 257
15:30:34.418163 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 511:561(50) ack 1 win 257
15:30:34.418172 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 561 win 257
15:30:34.927685 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 561:611(50) ack 1 win 257
15:30:34.927698 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 611 win 257
15:30:35.427757 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 611:661(50) ack 1 win 257
15:30:35.427766 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 661 win 257
15:30:35.937359 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 661:711(50) ack 1 win 257
15:30:35.937376 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 711 win 257
15:30:36.437451 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 711:761(50) ack 1 win 257
15:30:36.437464 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 761 win 257
15:30:36.947022 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 761:811(50) ack 1 win 257
15:30:36.947039 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 811 win 257
15:30:37.447135 IP 127.0.0.1.56554 > 127.0.0.1.12000: P 811:861(50) ack 1 win 257
15:30:37.447203 IP 127.0.0.1.12000 > 127.0.0.1.56554: . ack 861 win 257
15:30:41.448171 IP 127.0.0.1.12000 > 127.0.0.1.56554: F 1:1(0) ack 861 win 257
15:30:41.448189 IP 127.0.0.1.56554 > 127.0.0.1.12000: R 33789629:33789629(0) win 0

Source of program :

/*
 * small producer/consumer program.
 * setup a listener on 127.0.0.1:12000
 * Forks a child
 *   child connect to 127.0.0.1, and sends 10 bytes on this tcp socket every 100 ms
 * Father accepts connection, and read all data
 */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdio.h>
#include <time.h>
#include <sys/poll.h>

int port = 12000;
char buffer[4096];
int main(int argc, char *argv[])
{
        int lfd = socket(AF_INET, SOCK_STREAM, 0);
        struct sockaddr_in socket_address;
        time_t t0, t1;
        int on = 1, sfd, res;
        unsigned long total = 0;
        socklen_t alen = sizeof(socket_address);
        pid_t pid;

        time(&t0);
        socket_address.sin_family = AF_INET;
        socket_address.sin_port = htons(port);
        socket_address.sin_addr.s_addr = htonl(INADDR_LOOPBACK);

        if (lfd == -1) {
                perror("socket()");
                return 1;
        }
        setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(int));
        if (bind(lfd, (struct sockaddr *)&socket_address, sizeof(socket_address)) == -1) {
                perror("bind");
                close(lfd);
                return 1;
        }
        if (listen(lfd, 1) == -1) {
                perror("listen()");
                close(lfd);
                return 1;
        }
        pid = fork();
        if (pid == 0) {
                int i, cfd = socket(AF_INET, SOCK_STREAM, 0);
                close(lfd);
                if (connect(cfd, (struct sockaddr *)&socket_address, sizeof(socket_address)) == -1) {
                        perror("connect()");
                        return 1;
                        }
                for (i = 0 ; ;) {
                        res = write(cfd, "blablabla\n", 10);
                        if (res > 0) total += res;
                        else if (res == -1) {
                                perror("write()");
                                break;
                        } else break;
                        usleep(100000);
                        if (++i == 10) {
                                system("ss -on dst 127.0.0.1:12000");
                                i = 0;
                        }
                }
                time(&t1);
                fprintf(stderr, "wrote %lu bytes but was interrupted after %g seconds\n", total, difftime(t1, t0));
                system("ss -on | grep 127.0.0.1:12000");
                close(cfd);
                return 0;
        }
        sfd = accept(lfd, (struct sockaddr *)&socket_address, &alen);
        if (sfd == -1) {
                perror("accept");
                return 1;
        }
        close(lfd);
        while (1) {
                struct pollfd pfd[1];
                pfd[0].fd = sfd;
                pfd[0].events = POLLIN;
                if (poll(pfd, 1, 4000) == 0) {
                        fprintf(stderr, "Exiting read() because no data available (4000 ms timeout).\n");
                        break;
                }
                res = read(sfd, buffer, sizeof(buffer));
                if (res > 0) total += res;
                else if (res == 0) break;
                else perror("read()");
        }
        fprintf(stderr, "read %lu bytes\n", total);
        close(sfd);
        return 0;
}
----------------------------------------

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 net/ipv4/tcp_input.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3273,6 +3273,7 @@ static int tcp_ack(struct sock *sk, stru
 	 * log. Something worked...
 	 */
 	sk->sk_err_soft = 0;
+	icsk->icsk_probes_out = 0;
 	tp->rcv_tstamp = tcp_time_stamp;
 	prior_packets = tp->packets_out;
 	if (!prior_packets)
@@ -3305,8 +3306,6 @@ static int tcp_ack(struct sock *sk, stru
 	return 1;
 
 no_queue:
-	icsk->icsk_probes_out = 0;
-
 	/* If this ack opens up a zero window, clear backoff.  It was
 	 * being used to time the probes, and is probably far higher than
 	 * it needs to be for normal retransmission.

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 31/62] sparc64: Fix lockdep issues in LDC protocol layer.
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (29 preceding siblings ...)
  2008-07-30 23:58   ` [patch 30/62] tcp: Clear probes_out more aggressively in tcp_ack() Greg KH
@ 2008-07-30 23:58   ` Greg KH
  2008-07-30 23:59   ` [patch 32/62] sparc64: Fix cpufreq notifier registry Greg KH
                     ` (30 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:58 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, David S. Miller

[-- Attachment #1: sparc64-fix-lockdep-issues-in-ldc-protocol-layer.patch --]
[-- Type: text/plain, Size: 4127 bytes --]

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

------------------
From: David S. Miller <davem@davemloft.net>

[ Upstream commit b7c2a75725dee9b5643a0aae3a4cb47f52e00a49 ]

We're calling request_irq() with a IRQs disabled.

No straightforward fix exists because we want to
enable these IRQs and setup state atomically before
getting into the IRQ handler the first time.

What happens now is that we mark the VIRQ to not be
automatically enabled by request_irq().  Then we
make explicit enable_irq() calls when we grab the
LDC channel.

This way we don't need to call request_irq() illegally
under the LDC channel lock any more.

Bump LDC version and release date.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/sparc64/kernel/irq.c |   10 +++++++++-
 arch/sparc64/kernel/ldc.c |   38 +++++++++++++++++++-------------------
 2 files changed, 28 insertions(+), 20 deletions(-)

--- a/arch/sparc64/kernel/irq.c
+++ b/arch/sparc64/kernel/irq.c
@@ -621,8 +621,9 @@ unsigned int sun4v_build_irq(u32 devhand
 unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
 {
 	struct irq_handler_data *data;
-	struct ino_bucket *bucket;
 	unsigned long hv_err, cookie;
+	struct ino_bucket *bucket;
+	struct irq_desc *desc;
 	unsigned int virt_irq;
 
 	bucket = kzalloc(sizeof(struct ino_bucket), GFP_ATOMIC);
@@ -643,6 +644,13 @@ unsigned int sun4v_build_virq(u32 devhan
 	if (unlikely(!data))
 		return 0;
 
+	/* In order to make the LDC channel startup sequence easier,
+	 * especially wrt. locking, we do not let request_irq() enable
+	 * the interrupt.
+	 */
+	desc = irq_desc + virt_irq;
+	desc->status |= IRQ_NOAUTOEN;
+
 	set_irq_chip_data(virt_irq, data);
 
 	/* Catch accidental accesses to these things.  IMAP/ICLR handling
--- a/arch/sparc64/kernel/ldc.c
+++ b/arch/sparc64/kernel/ldc.c
@@ -1,6 +1,6 @@
 /* ldc.c: Logical Domain Channel link-layer protocol driver.
  *
- * Copyright (C) 2007 David S. Miller <davem@davemloft.net>
+ * Copyright (C) 2007, 2008 David S. Miller <davem@davemloft.net>
  */
 
 #include <linux/kernel.h>
@@ -23,8 +23,8 @@
 
 #define DRV_MODULE_NAME		"ldc"
 #define PFX DRV_MODULE_NAME	": "
-#define DRV_MODULE_VERSION	"1.0"
-#define DRV_MODULE_RELDATE	"June 25, 2007"
+#define DRV_MODULE_VERSION	"1.1"
+#define DRV_MODULE_RELDATE	"July 22, 2008"
 
 static char version[] __devinitdata =
 	DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
@@ -1235,13 +1235,9 @@ int ldc_bind(struct ldc_channel *lp, con
 	unsigned long hv_err, flags;
 	int err = -EINVAL;
 
-	spin_lock_irqsave(&lp->lock, flags);
-
-	if (!name)
-		goto out_err;
-
-	if (lp->state != LDC_STATE_INIT)
-		goto out_err;
+	if (!name ||
+	    (lp->state != LDC_STATE_INIT))
+		return -EINVAL;
 
 	snprintf(lp->rx_irq_name, LDC_IRQ_NAME_MAX, "%s RX", name);
 	snprintf(lp->tx_irq_name, LDC_IRQ_NAME_MAX, "%s TX", name);
@@ -1250,25 +1246,32 @@ int ldc_bind(struct ldc_channel *lp, con
 			  IRQF_SAMPLE_RANDOM | IRQF_SHARED,
 			  lp->rx_irq_name, lp);
 	if (err)
-		goto out_err;
+		return err;
 
 	err = request_irq(lp->cfg.tx_irq, ldc_tx,
 			  IRQF_SAMPLE_RANDOM | IRQF_SHARED,
 			  lp->tx_irq_name, lp);
-	if (err)
-		goto out_free_rx_irq;
+	if (err) {
+		free_irq(lp->cfg.rx_irq, lp);
+		return err;
+	}
+
 
+	spin_lock_irqsave(&lp->lock, flags);
+
+	enable_irq(lp->cfg.rx_irq);
+	enable_irq(lp->cfg.tx_irq);
 
 	lp->flags |= LDC_FLAG_REGISTERED_IRQS;
 
 	err = -ENODEV;
 	hv_err = sun4v_ldc_tx_qconf(lp->id, 0, 0);
 	if (hv_err)
-		goto out_free_tx_irq;
+		goto out_free_irqs;
 
 	hv_err = sun4v_ldc_tx_qconf(lp->id, lp->tx_ra, lp->tx_num_entries);
 	if (hv_err)
-		goto out_free_tx_irq;
+		goto out_free_irqs;
 
 	hv_err = sun4v_ldc_rx_qconf(lp->id, 0, 0);
 	if (hv_err)
@@ -1304,14 +1307,11 @@ out_unmap_rx:
 out_unmap_tx:
 	sun4v_ldc_tx_qconf(lp->id, 0, 0);
 
-out_free_tx_irq:
+out_free_irqs:
 	lp->flags &= ~LDC_FLAG_REGISTERED_IRQS;
 	free_irq(lp->cfg.tx_irq, lp);
-
-out_free_rx_irq:
 	free_irq(lp->cfg.rx_irq, lp);
 
-out_err:
 	spin_unlock_irqrestore(&lp->lock, flags);
 
 	return err;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 32/62] sparc64: Fix cpufreq notifier registry.
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (30 preceding siblings ...)
  2008-07-30 23:58   ` [patch 31/62] sparc64: Fix lockdep issues in LDC protocol layer Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 33/62] sparc64: Do not define BIO_VMERGE_BOUNDARY Greg KH
                     ` (29 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, David S. Miller

[-- Attachment #1: sparc64-fix-cpufreq-notifier-registry.patch --]
[-- Type: text/plain, Size: 1344 bytes --]

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

------------------
From: David S. Miller <davem@davemloft.net>

[ Upstream commit 7ae93f51d7fa8b9130d47e0b7d17979a165c5bc3 ]

Based upon a report by Daniel Smolik.

We do it too early, which triggers a BUG in
cpufreq_register_notifier().

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/sparc64/kernel/time.c |   15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

--- a/arch/sparc64/kernel/time.c
+++ b/arch/sparc64/kernel/time.c
@@ -883,6 +883,16 @@ static struct notifier_block sparc64_cpu
 	.notifier_call	= sparc64_cpufreq_notifier
 };
 
+static int __init register_sparc64_cpufreq_notifier(void)
+{
+
+	cpufreq_register_notifier(&sparc64_cpufreq_notifier_block,
+				  CPUFREQ_TRANSITION_NOTIFIER);
+	return 0;
+}
+
+core_initcall(register_sparc64_cpufreq_notifier);
+
 #endif /* CONFIG_CPU_FREQ */
 
 static int sparc64_next_event(unsigned long delta,
@@ -1049,11 +1059,6 @@ void __init time_init(void)
 	       sparc64_clockevent.mult, sparc64_clockevent.shift);
 
 	setup_sparc64_timer();
-
-#ifdef CONFIG_CPU_FREQ
-	cpufreq_register_notifier(&sparc64_cpufreq_notifier_block,
-				  CPUFREQ_TRANSITION_NOTIFIER);
-#endif
 }
 
 unsigned long long sched_clock(void)

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 33/62] sparc64: Do not define BIO_VMERGE_BOUNDARY.
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (31 preceding siblings ...)
  2008-07-30 23:59   ` [patch 32/62] sparc64: Fix cpufreq notifier registry Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 34/62] iop-adma: fix platform driver hotplug/coldplug Greg KH
                     ` (28 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, David S. Miller

[-- Attachment #1: sparc64-do-not-define-bio_vmerge_boundary.patch --]
[-- Type: text/plain, Size: 794 bytes --]

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

------------------
From: David S. Miller <davem@davemloft.net>

[ Upstream commit 74988bd85d1cb97987534fd7ffbc570e81145418 ]

The IOMMU code and the block layer can split things
up using different rules, so this can't work reliably.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 include/asm-sparc64/io.h |    1 -
 1 file changed, 1 deletion(-)

--- a/include/asm-sparc64/io.h
+++ b/include/asm-sparc64/io.h
@@ -16,7 +16,6 @@
 /* BIO layer definitions. */
 extern unsigned long kern_base, kern_size;
 #define page_to_phys(page)	(page_to_pfn(page) << PAGE_SHIFT)
-#define BIO_VMERGE_BOUNDARY	8192
 
 static inline u8 _inb(unsigned long addr)
 {

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 34/62] iop-adma: fix platform driver hotplug/coldplug
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (32 preceding siblings ...)
  2008-07-30 23:59   ` [patch 33/62] sparc64: Do not define BIO_VMERGE_BOUNDARY Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 35/62] myri10ge: do not forget to setup the single slice pointers Greg KH
                     ` (27 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Kay Sievers, David Brownell, Dan Williams

[-- Attachment #1: iop-adma-fix-platform-driver-hotplug-coldplug.patch --]
[-- Type: text/plain, Size: 1047 bytes --]

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

------------------
From: Kay Sievers <kay.sievers@vrfy.org>

commit ebabe2762607147d28aa395ea6df2a0ee7f795a1

Since 43cc71eed1250755986da4c0f9898f9a635cb3bf, the platform
modalias is prefixed with "platform:". Add MODULE_ALIAS() to most
of the hotpluggable platform drivers, to re-enable auto loading.

Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/dma/iop-adma.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/drivers/dma/iop-adma.c
+++ b/drivers/dma/iop-adma.c
@@ -1387,6 +1387,8 @@ static void iop_chan_start_null_xor(stru
 	spin_unlock_bh(&iop_chan->lock);
 }
 
+MODULE_ALIAS("platform:iop-adma");
+
 static struct platform_driver iop_adma_driver = {
 	.probe		= iop_adma_probe,
 	.remove		= iop_adma_remove,

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 35/62] myri10ge: do not forget to setup the single slice pointers
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (33 preceding siblings ...)
  2008-07-30 23:59   ` [patch 34/62] iop-adma: fix platform driver hotplug/coldplug Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 36/62] myri10ge: do not use mgp->max_intr_slots before loading the firmware Greg KH
                     ` (26 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Brice Goglin

[-- Attachment #1: myri10ge-do-not-forget-to-setup-the-single-slice-pointers.patch --]
[-- Type: text/plain, Size: 1296 bytes --]

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

------------------
From: Brice Goglin <brice@myri.com>

part of commit 0dcffac1a329be69bab0ac604bf7283737108e68 upstream
(the upstream multislice patch contains the same fix within
 myri10ge_alloc_slices() which does this for every slice)

Even if we don't have multiple slices in myri10ge in 2.6.26,
we already use some multislice-aware routines that need the
slice state pointers to mgp and dev to be valid.

This patch fixes a regression where configuring the interface up
would oops in myri10ge_allocate_rings() when using ss->mgp
(and later when using ss->dev).

Oops reported and patch tested by Lukas Hejtmanek at
http://lkml.org/lkml/2008/7/23/101

Signed-off-by: Brice Goglin <brice@myri.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/myri10ge/myri10ge.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -3126,6 +3126,8 @@ static int myri10ge_probe(struct pci_dev
 
 	mgp = netdev_priv(netdev);
 	mgp->dev = netdev;
+	mgp->ss.mgp = mgp;
+	mgp->ss.dev = mgp->dev;
 	netif_napi_add(netdev, &mgp->ss.napi, myri10ge_poll, myri10ge_napi_weight);
 	mgp->pdev = pdev;
 	mgp->csum_flag = MXGEFW_FLAGS_CKSUM;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 36/62] myri10ge: do not use mgp->max_intr_slots before loading the firmware
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (34 preceding siblings ...)
  2008-07-30 23:59   ` [patch 35/62] myri10ge: do not forget to setup the single slice pointers Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 37/62] ALSA: trident - pause s/pdif output Greg KH
                     ` (25 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Brice Goglin

[-- Attachment #1: myri10ge-do-not-use-mgp-max_intr_slots-before-loading-the-firmware.patch --]
[-- Type: text/plain, Size: 3175 bytes --]

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

------------------
From: Brice Goglin <brice@myri.com>

part of commit 0dcffac1a329be69bab0ac604bf7283737108e68 upstream
(the upstream multislice patch contains this fix within a large
 rework of the code since there is one rx_done ring per slice. The
 old allocating is replaced by a call to myri10ge_probe_slices())


Allocating the rx_done ring requires mgp->max_intr_slots to
be valid, which requires that we already loaded the firmware
we are going to use with this ring.
So move the allocating after myri10ge_load_firmware()
(but keep it before myri10ge_reset() which already needs the
 rx_done ring).

If fixedsa regression where loading the driver would not
appear to do anything. Regression introduced in 2.6.26-rc3 by
commit 014377a1df693ff30a9e8b69f0bbb0a38e601f75

Reported and patch tested by Lukas Hejtmanek at
http://lkml.org/lkml/2008/7/22/305
Reproduced and patch tested also by me.

Signed-off-by: Brice Goglin <brice@myri.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/myri10ge/myri10ge.c |   28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -3215,26 +3215,26 @@ static int myri10ge_probe(struct pci_dev
 	for (i = 0; i < ETH_ALEN; i++)
 		netdev->dev_addr[i] = mgp->mac_addr[i];
 
-	/* allocate rx done ring */
-	bytes = mgp->max_intr_slots * sizeof(*mgp->ss.rx_done.entry);
-	mgp->ss.rx_done.entry = dma_alloc_coherent(&pdev->dev, bytes,
-						&mgp->ss.rx_done.bus, GFP_KERNEL);
-	if (mgp->ss.rx_done.entry == NULL)
-		goto abort_with_ioremap;
-	memset(mgp->ss.rx_done.entry, 0, bytes);
-
 	myri10ge_select_firmware(mgp);
 
 	status = myri10ge_load_firmware(mgp);
 	if (status != 0) {
 		dev_err(&pdev->dev, "failed to load firmware\n");
-		goto abort_with_rx_done;
+		goto abort_with_ioremap;
 	}
 
+	/* allocate rx done ring */
+	bytes = mgp->max_intr_slots * sizeof(*mgp->ss.rx_done.entry);
+	mgp->ss.rx_done.entry = dma_alloc_coherent(&pdev->dev, bytes,
+						&mgp->ss.rx_done.bus, GFP_KERNEL);
+	if (mgp->ss.rx_done.entry == NULL)
+		goto abort_with_firmware;
+	memset(mgp->ss.rx_done.entry, 0, bytes);
+
 	status = myri10ge_reset(mgp);
 	if (status != 0) {
 		dev_err(&pdev->dev, "failed reset\n");
-		goto abort_with_firmware;
+		goto abort_with_rx_done;
 	}
 
 	pci_set_drvdata(pdev, mgp);
@@ -3260,7 +3260,7 @@ static int myri10ge_probe(struct pci_dev
 	 * is set to correct value if MSI is enabled */
 	status = myri10ge_request_irq(mgp);
 	if (status != 0)
-		goto abort_with_firmware;
+		goto abort_with_rx_done;
 	netdev->irq = pdev->irq;
 	myri10ge_free_irq(mgp);
 
@@ -3289,14 +3289,14 @@ static int myri10ge_probe(struct pci_dev
 abort_with_state:
 	pci_restore_state(pdev);
 
-abort_with_firmware:
-	myri10ge_dummy_rdma(mgp, 0);
-
 abort_with_rx_done:
 	bytes = mgp->max_intr_slots * sizeof(*mgp->ss.rx_done.entry);
 	dma_free_coherent(&pdev->dev, bytes,
 			  mgp->ss.rx_done.entry, mgp->ss.rx_done.bus);
 
+abort_with_firmware:
+	myri10ge_dummy_rdma(mgp, 0);
+
 abort_with_ioremap:
 	iounmap(mgp->sram);
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 37/62] ALSA: trident - pause s/pdif output
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (35 preceding siblings ...)
  2008-07-30 23:59   ` [patch 36/62] myri10ge: do not use mgp->max_intr_slots before loading the firmware Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 38/62] V4L: cx18: Upgrade to newer firmware & update documentation Greg KH
                     ` (24 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Takashi Iwai, Pierre Ossman, Jaroslav Kysela

[-- Attachment #1: alsa-trident-pause-s-pdif-output.patch --]
[-- Type: text/plain, Size: 1355 bytes --]


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

------------------
From: Pierre Ossman <drzeus@drzeus.cx>

Commit 981bcead3f2279a1ec6fb5f2c57aff79ed61a700 upstream.

Stop the S/PDIF DMA engine and output when the device is told to pause.
It will keep on looping the current buffer contents if this isn't done.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Tested-by: Rene Herman <rene.herman@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 sound/pci/trident/trident_main.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- a/sound/pci/trident/trident_main.c
+++ b/sound/pci/trident/trident_main.c
@@ -1590,7 +1590,10 @@ static int snd_trident_trigger(struct sn
 	if (spdif_flag) {
 		if (trident->device != TRIDENT_DEVICE_ID_SI7018) {
 			outl(trident->spdif_pcm_bits, TRID_REG(trident, NX_SPCSTATUS));
-			outb(trident->spdif_pcm_ctrl, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
+			val = trident->spdif_pcm_ctrl;
+			if (!go)
+				val &= ~(0x28);
+			outb(val, TRID_REG(trident, NX_SPCTRL_SPCSO + 3));
 		} else {
 			outl(trident->spdif_pcm_bits, TRID_REG(trident, SI_SPDIF_CS));
 			val = inl(TRID_REG(trident, SI_SERIAL_INTF_CTRL)) | SPDIF_EN;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 38/62] V4L: cx18: Upgrade to newer firmware & update documentation
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (36 preceding siblings ...)
  2008-07-30 23:59   ` [patch 37/62] ALSA: trident - pause s/pdif output Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 39/62] DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009 Greg KH
                     ` (23 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Hans Verkuil, v4l-dvb maintainer list,
	Mauro Carvalho Chehab

[-- Attachment #1: v4l-cx18-upgrade-to-newer-firmware-update-documentation.patch --]
[-- Type: text/plain, Size: 1879 bytes --]

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

------------------
From: Hans Verkuil <hverkuil@xs4all.nl>

(cherry picked from commit 1a3932e0ed9ca46db2b76ce067e4ebaf04d91ea1)

V4L: cx18: Upgrade to newer firmware & update cx18 documentation

Conexant graciously gave us permission to redistribute the
firmware. Update the documentation where the firmware can be
downloaded.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 Documentation/video4linux/cx18.txt       |   12 +++---------
 drivers/media/video/cx18/cx18-firmware.c |    2 +-
 2 files changed, 4 insertions(+), 10 deletions(-)

--- a/Documentation/video4linux/cx18.txt
+++ b/Documentation/video4linux/cx18.txt
@@ -23,14 +23,8 @@ encoder chip:
 
 Firmware:
 
-The firmware needs to be extracted from the Windows Hauppauge HVR-1600
-driver, available here:
+You can obtain the firmware files here:
 
-http://hauppauge.lightpath.net/software/install_cd/hauppauge_cd_3.4d1.zip
+http://dl.ivtvdriver.org/ivtv/firmware/cx18-firmware.tar.gz
 
-Unzip, then copy the following files to the firmware directory
-and rename them as follows:
-
-Drivers/Driver18/hcw18apu.rom -> v4l-cx23418-apu.fw
-Drivers/Driver18/hcw18enc.rom -> v4l-cx23418-cpu.fw
-Drivers/Driver18/hcw18mlC.rom -> v4l-cx23418-dig.fw
+Untar and copy the .fw files to your firmware directory.
--- a/drivers/media/video/cx18/cx18-firmware.c
+++ b/drivers/media/video/cx18/cx18-firmware.c
@@ -90,7 +90,7 @@
 #define CX18_DSP0_INTERRUPT_MASK     	0xd0004C
 
 /* Encoder/decoder firmware sizes */
-#define CX18_FW_CPU_SIZE 		(174716)
+#define CX18_FW_CPU_SIZE 		(158332)
 #define CX18_FW_APU_SIZE 		(141200)
 
 #define APU_ROM_SYNC1 0x6D676553 /* "mgeS" */

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 39/62] DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (37 preceding siblings ...)
  2008-07-30 23:59   ` [patch 38/62] V4L: cx18: Upgrade to newer firmware & update documentation Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 40/62] V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing Greg KH
                     ` (22 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Mauro Carvalho Chehab

[-- Attachment #1: dvb-dib0700-add-support-for-hauppauge-nova-td-stick-52009.patch --]
[-- Type: text/plain, Size: 2161 bytes --]

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

------------------
From: Michael Krufky <mkrufky@linuxtv.org>

(cherry picked from commit d01eb2dc7d5265ec3bee9ec1b8ab79155e1310d6)

DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/dvb/dvb-usb/dib0700_devices.c |    7 ++++++-
 drivers/media/dvb/dvb-usb/dvb-usb-ids.h     |    1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

--- a/drivers/media/dvb/dvb-usb/dib0700_devices.c
+++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c
@@ -1117,6 +1117,7 @@ struct usb_device_id dib0700_usb_id_tabl
 	{ USB_DEVICE(USB_VID_TERRATEC,	USB_PID_TERRATEC_CINERGY_HT_EXPRESS) },
 	{ USB_DEVICE(USB_VID_TERRATEC,	USB_PID_TERRATEC_CINERGY_T_XXS) },
 	{ USB_DEVICE(USB_VID_LEADTEK,   USB_PID_WINFAST_DTV_DONGLE_STK7700P_2) },
+	{ USB_DEVICE(USB_VID_HAUPPAUGE, USB_PID_HAUPPAUGE_NOVA_TD_STICK_52009) },
 	{ 0 }		/* Terminating entry */
 };
 MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table);
@@ -1372,7 +1373,7 @@ struct dvb_usb_device_properties dib0700
 			}
 		},
 
-		.num_device_descs = 2,
+		.num_device_descs = 3,
 		.devices = {
 			{   "DiBcom STK7070PD reference design",
 				{ &dib0700_usb_id_table[17], NULL },
@@ -1381,6 +1382,10 @@ struct dvb_usb_device_properties dib0700
 			{   "Pinnacle PCTV Dual DVB-T Diversity Stick",
 				{ &dib0700_usb_id_table[18], NULL },
 				{ NULL },
+			},
+			{   "Hauppauge Nova-TD Stick (52009)",
+				{ &dib0700_usb_id_table[35], NULL },
+				{ NULL },
 			}
 		}
 	}, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
--- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
@@ -132,6 +132,7 @@
 #define USB_PID_HAUPPAUGE_NOVA_T_STICK_3		0x7070
 #define USB_PID_HAUPPAUGE_MYTV_T			0x7080
 #define USB_PID_HAUPPAUGE_NOVA_TD_STICK			0x9580
+#define USB_PID_HAUPPAUGE_NOVA_TD_STICK_52009		0x5200
 #define USB_PID_AVERMEDIA_EXPRESS			0xb568
 #define USB_PID_AVERMEDIA_VOLAR				0xa807
 #define USB_PID_AVERMEDIA_VOLAR_2			0xb808

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 40/62] V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (38 preceding siblings ...)
  2008-07-30 23:59   ` [patch 39/62] DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009 Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 41/62] V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume Greg KH
                     ` (21 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Laurent Pinchart,
	Mauro Carvalho Chehab

[-- Attachment #1: v4l-uvcvideo-fix-a-buffer-overflow-in-format-descriptor-parsing.patch --]
[-- Type: text/plain, Size: 1143 bytes --]

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

------------------
From: Laurent Pinchart <laurent.pinchart@skynet.be>

(cherry picked from commit 233548a2fd934a0220db8b1521c0bc88c82e5e53)

V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing

Thanks to Oliver Neukum for catching and reporting this bug.

Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/uvc/uvc_driver.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/media/video/uvc/uvc_driver.c
+++ b/drivers/media/video/uvc/uvc_driver.c
@@ -298,7 +298,8 @@ static int uvc_parse_format(struct uvc_d
 	switch (buffer[2]) {
 	case VS_FORMAT_UNCOMPRESSED:
 	case VS_FORMAT_FRAME_BASED:
-		if (buflen < 27) {
+		n = buffer[2] == VS_FORMAT_UNCOMPRESSED ? 27 : 28;
+		if (buflen < n) {
 			uvc_trace(UVC_TRACE_DESCR, "device %d videostreaming"
 			       "interface %d FORMAT error\n",
 			       dev->udev->devnum,

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 41/62] V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (39 preceding siblings ...)
  2008-07-30 23:59   ` [patch 40/62] V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 42/62] V4L: uvcvideo: Dont free URB buffers on suspend Greg KH
                     ` (20 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Laurent Pinchart,
	Mauro Carvalho Chehab

[-- Attachment #1: v4l-uvcvideo-use-gfp_noio-when-allocating-memory-during-resume.patch --]
[-- Type: text/plain, Size: 4676 bytes --]


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

------------------
From: Laurent Pinchart <laurent.pinchart@skynet.be>

(cherry picked from commit 291358785cde5536d98a4f3cae77efd8ca626486)

V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume

The swap device might still be asleep, so memory allocated in the resume
handler must use GFP_NOIO. Thanks to Oliver Neukum for catching and reporting
this bug.

Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/uvc/uvc_status.c |    2 +-
 drivers/media/video/uvc/uvc_video.c  |   24 ++++++++++++------------
 2 files changed, 13 insertions(+), 13 deletions(-)

--- a/drivers/media/video/uvc/uvc_status.c
+++ b/drivers/media/video/uvc/uvc_status.c
@@ -203,5 +203,5 @@ int uvc_status_resume(struct uvc_device 
 	if (dev->int_urb == NULL)
 		return 0;
 
-	return usb_submit_urb(dev->int_urb, GFP_KERNEL);
+	return usb_submit_urb(dev->int_urb, GFP_NOIO);
 }
--- a/drivers/media/video/uvc/uvc_video.c
+++ b/drivers/media/video/uvc/uvc_video.c
@@ -586,7 +586,7 @@ static void uvc_uninit_video(struct uvc_
  * is given by the endpoint.
  */
 static int uvc_init_video_isoc(struct uvc_video_device *video,
-	struct usb_host_endpoint *ep)
+	struct usb_host_endpoint *ep, gfp_t gfp_flags)
 {
 	struct urb *urb;
 	unsigned int npackets, i, j;
@@ -611,14 +611,14 @@ static int uvc_init_video_isoc(struct uv
 	size = npackets * psize;
 
 	for (i = 0; i < UVC_URBS; ++i) {
-		urb = usb_alloc_urb(npackets, GFP_KERNEL);
+		urb = usb_alloc_urb(npackets, gfp_flags);
 		if (urb == NULL) {
 			uvc_uninit_video(video);
 			return -ENOMEM;
 		}
 
 		video->urb_buffer[i] = usb_buffer_alloc(video->dev->udev,
-			size, GFP_KERNEL, &urb->transfer_dma);
+			size, gfp_flags, &urb->transfer_dma);
 		if (video->urb_buffer[i] == NULL) {
 			usb_free_urb(urb);
 			uvc_uninit_video(video);
@@ -652,7 +652,7 @@ static int uvc_init_video_isoc(struct uv
  * given by the endpoint.
  */
 static int uvc_init_video_bulk(struct uvc_video_device *video,
-	struct usb_host_endpoint *ep)
+	struct usb_host_endpoint *ep, gfp_t gfp_flags)
 {
 	struct urb *urb;
 	unsigned int pipe, i;
@@ -674,14 +674,14 @@ static int uvc_init_video_bulk(struct uv
 	pipe = usb_rcvbulkpipe(video->dev->udev, ep->desc.bEndpointAddress);
 
 	for (i = 0; i < UVC_URBS; ++i) {
-		urb = usb_alloc_urb(0, GFP_KERNEL);
+		urb = usb_alloc_urb(0, gfp_flags);
 		if (urb == NULL) {
 			uvc_uninit_video(video);
 			return -ENOMEM;
 		}
 
 		video->urb_buffer[i] = usb_buffer_alloc(video->dev->udev,
-			size, GFP_KERNEL, &urb->transfer_dma);
+			size, gfp_flags, &urb->transfer_dma);
 		if (video->urb_buffer[i] == NULL) {
 			usb_free_urb(urb);
 			uvc_uninit_video(video);
@@ -702,7 +702,7 @@ static int uvc_init_video_bulk(struct uv
 /*
  * Initialize isochronous/bulk URBs and allocate transfer buffers.
  */
-static int uvc_init_video(struct uvc_video_device *video)
+static int uvc_init_video(struct uvc_video_device *video, gfp_t gfp_flags)
 {
 	struct usb_interface *intf = video->streaming->intf;
 	struct usb_host_interface *alts;
@@ -747,7 +747,7 @@ static int uvc_init_video(struct uvc_vid
 		if ((ret = usb_set_interface(video->dev->udev, intfnum, i)) < 0)
 			return ret;
 
-		ret = uvc_init_video_isoc(video, ep);
+		ret = uvc_init_video_isoc(video, ep, gfp_flags);
 	} else {
 		/* Bulk endpoint, proceed to URB initialization. */
 		ep = uvc_find_endpoint(&intf->altsetting[0],
@@ -755,7 +755,7 @@ static int uvc_init_video(struct uvc_vid
 		if (ep == NULL)
 			return -EIO;
 
-		ret = uvc_init_video_bulk(video, ep);
+		ret = uvc_init_video_bulk(video, ep, gfp_flags);
 	}
 
 	if (ret < 0)
@@ -763,7 +763,7 @@ static int uvc_init_video(struct uvc_vid
 
 	/* Submit the URBs. */
 	for (i = 0; i < UVC_URBS; ++i) {
-		if ((ret = usb_submit_urb(video->urb[i], GFP_KERNEL)) < 0) {
+		if ((ret = usb_submit_urb(video->urb[i], gfp_flags)) < 0) {
 			uvc_printk(KERN_ERR, "Failed to submit URB %u "
 					"(%d).\n", i, ret);
 			uvc_uninit_video(video);
@@ -818,7 +818,7 @@ int uvc_video_resume(struct uvc_video_de
 	if (!uvc_queue_streaming(&video->queue))
 		return 0;
 
-	if ((ret = uvc_init_video(video)) < 0)
+	if ((ret = uvc_init_video(video, GFP_NOIO)) < 0)
 		uvc_queue_enable(&video->queue, 0);
 
 	return ret;
@@ -930,5 +930,5 @@ int uvc_video_enable(struct uvc_video_de
 	if ((ret = uvc_queue_enable(&video->queue, 1)) < 0)
 		return ret;
 
-	return uvc_init_video(video);
+	return uvc_init_video(video, GFP_KERNEL);
 }

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 42/62] V4L: uvcvideo: Dont free URB buffers on suspend
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (40 preceding siblings ...)
  2008-07-30 23:59   ` [patch 41/62] V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 43/62] V4L: uvcvideo: Make input device support optional Greg KH
                     ` (19 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Laurent Pinchart,
	Mauro Carvalho Chehab

[-- Attachment #1: v4l-uvcvideo-don-t-free-urb-buffers-on-suspend.patch --]
[-- Type: text/plain, Size: 5837 bytes --]


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

------------------
From: Laurent Pinchart <laurent.pinchart@skynet.be>

(cherry picked from commit e01117c81676dc9897f567e32cdc13a26e85280b)

V4L: uvcvideo: Don't free URB buffers on suspend.

All submitted URBs must be killed at suspend time, but URB buffers don't
have to be freed. Avoiding a free on suspend/reallocate on resume lowers
the pressure on system memory.

Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/uvc/uvc_video.c |   96 ++++++++++++++++++++++++------------
 drivers/media/video/uvc/uvcvideo.h  |    2 
 2 files changed, 66 insertions(+), 32 deletions(-)

--- a/drivers/media/video/uvc/uvc_video.c
+++ b/drivers/media/video/uvc/uvc_video.c
@@ -554,9 +554,56 @@ static void uvc_video_complete(struct ur
 }
 
 /*
+ * Free transfer buffers.
+ */
+static void uvc_free_urb_buffers(struct uvc_video_device *video)
+{
+	unsigned int i;
+
+	for (i = 0; i < UVC_URBS; ++i) {
+		if (video->urb_buffer[i]) {
+			usb_buffer_free(video->dev->udev, video->urb_size,
+				video->urb_buffer[i], video->urb_dma[i]);
+			video->urb_buffer[i] = NULL;
+		}
+	}
+
+	video->urb_size = 0;
+}
+
+/*
+ * Allocate transfer buffers. This function can be called with buffers
+ * already allocated when resuming from suspend, in which case it will
+ * return without touching the buffers.
+ *
+ * Return 0 on success or -ENOMEM when out of memory.
+ */
+static int uvc_alloc_urb_buffers(struct uvc_video_device *video,
+	unsigned int size)
+{
+	unsigned int i;
+
+	/* Buffers are already allocated, bail out. */
+	if (video->urb_size)
+		return 0;
+
+	for (i = 0; i < UVC_URBS; ++i) {
+		video->urb_buffer[i] = usb_buffer_alloc(video->dev->udev,
+			size, GFP_KERNEL, &video->urb_dma[i]);
+		if (video->urb_buffer[i] == NULL) {
+			uvc_free_urb_buffers(video);
+			return -ENOMEM;
+		}
+	}
+
+	video->urb_size = size;
+	return 0;
+}
+
+/*
  * Uninitialize isochronous/bulk URBs and free transfer buffers.
  */
-static void uvc_uninit_video(struct uvc_video_device *video)
+static void uvc_uninit_video(struct uvc_video_device *video, int free_buffers)
 {
 	struct urb *urb;
 	unsigned int i;
@@ -566,19 +613,12 @@ static void uvc_uninit_video(struct uvc_
 			continue;
 
 		usb_kill_urb(urb);
-		/* urb->transfer_buffer_length is not touched by USB core, so
-		 * we can use it here as the buffer length.
-		 */
-		if (video->urb_buffer[i]) {
-			usb_buffer_free(video->dev->udev,
-				urb->transfer_buffer_length,
-				video->urb_buffer[i], urb->transfer_dma);
-			video->urb_buffer[i] = NULL;
-		}
-
 		usb_free_urb(urb);
 		video->urb[i] = NULL;
 	}
+
+	if (free_buffers)
+		uvc_free_urb_buffers(video);
 }
 
 /*
@@ -610,18 +650,13 @@ static int uvc_init_video_isoc(struct uv
 
 	size = npackets * psize;
 
+	if (uvc_alloc_urb_buffers(video, size) < 0)
+		return -ENOMEM;
+
 	for (i = 0; i < UVC_URBS; ++i) {
 		urb = usb_alloc_urb(npackets, gfp_flags);
 		if (urb == NULL) {
-			uvc_uninit_video(video);
-			return -ENOMEM;
-		}
-
-		video->urb_buffer[i] = usb_buffer_alloc(video->dev->udev,
-			size, gfp_flags, &urb->transfer_dma);
-		if (video->urb_buffer[i] == NULL) {
-			usb_free_urb(urb);
-			uvc_uninit_video(video);
+			uvc_uninit_video(video, 1);
 			return -ENOMEM;
 		}
 
@@ -632,6 +667,7 @@ static int uvc_init_video_isoc(struct uv
 		urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
 		urb->interval = ep->desc.bInterval;
 		urb->transfer_buffer = video->urb_buffer[i];
+		urb->transfer_dma = video->urb_dma[i];
 		urb->complete = uvc_video_complete;
 		urb->number_of_packets = npackets;
 		urb->transfer_buffer_length = size;
@@ -671,20 +707,15 @@ static int uvc_init_video_bulk(struct uv
 	if (size > psize * UVC_MAX_ISO_PACKETS)
 		size = psize * UVC_MAX_ISO_PACKETS;
 
+	if (uvc_alloc_urb_buffers(video, size) < 0)
+		return -ENOMEM;
+
 	pipe = usb_rcvbulkpipe(video->dev->udev, ep->desc.bEndpointAddress);
 
 	for (i = 0; i < UVC_URBS; ++i) {
 		urb = usb_alloc_urb(0, gfp_flags);
 		if (urb == NULL) {
-			uvc_uninit_video(video);
-			return -ENOMEM;
-		}
-
-		video->urb_buffer[i] = usb_buffer_alloc(video->dev->udev,
-			size, gfp_flags, &urb->transfer_dma);
-		if (video->urb_buffer[i] == NULL) {
-			usb_free_urb(urb);
-			uvc_uninit_video(video);
+			uvc_uninit_video(video, 1);
 			return -ENOMEM;
 		}
 
@@ -692,6 +723,7 @@ static int uvc_init_video_bulk(struct uv
 			video->urb_buffer[i], size, uvc_video_complete,
 			video);
 		urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
+		urb->transfer_dma = video->urb_dma[i];
 
 		video->urb[i] = urb;
 	}
@@ -766,7 +798,7 @@ static int uvc_init_video(struct uvc_vid
 		if ((ret = usb_submit_urb(video->urb[i], gfp_flags)) < 0) {
 			uvc_printk(KERN_ERR, "Failed to submit URB %u "
 					"(%d).\n", i, ret);
-			uvc_uninit_video(video);
+			uvc_uninit_video(video, 1);
 			return ret;
 		}
 	}
@@ -791,7 +823,7 @@ int uvc_video_suspend(struct uvc_video_d
 		return 0;
 
 	video->frozen = 1;
-	uvc_uninit_video(video);
+	uvc_uninit_video(video, 0);
 	usb_set_interface(video->dev->udev, video->streaming->intfnum, 0);
 	return 0;
 }
@@ -920,7 +952,7 @@ int uvc_video_enable(struct uvc_video_de
 	int ret;
 
 	if (!enable) {
-		uvc_uninit_video(video);
+		uvc_uninit_video(video, 1);
 		usb_set_interface(video->dev->udev,
 			video->streaming->intfnum, 0);
 		uvc_queue_enable(&video->queue, 0);
--- a/drivers/media/video/uvc/uvcvideo.h
+++ b/drivers/media/video/uvc/uvcvideo.h
@@ -602,6 +602,8 @@ struct uvc_video_device {
 
 	struct urb *urb[UVC_URBS];
 	char *urb_buffer[UVC_URBS];
+	dma_addr_t urb_dma[UVC_URBS];
+	unsigned int urb_size;
 
 	__u8 last_fid;
 };

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 43/62] V4L: uvcvideo: Make input device support optional
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (41 preceding siblings ...)
  2008-07-30 23:59   ` [patch 42/62] V4L: uvcvideo: Dont free URB buffers on suspend Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 44/62] V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated webcam Greg KH
                     ` (18 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Laurent Pinchart,
	Mauro Carvalho Chehab

[-- Attachment #1: v4l-uvcvideo-make-input-device-support-optional.patch --]
[-- Type: text/plain, Size: 3369 bytes --]


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

------------------
From: Laurent Pinchart <laurent.pinchart@skynet.be>

(cherry picked from commit 6833c917b4de1757febdbf946d709ece6dc7a86f)

V4L: uvcvideo: Make input device support optional

UVC devices can report button events. The uvcvideo driver depends on
CONFIG_INPUT to report events to the input layer. This patch removes the hard
dependency by introducing a new CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV option.

Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/Kconfig          |    8 +-------
 drivers/media/video/uvc/Kconfig      |   17 +++++++++++++++++
 drivers/media/video/uvc/uvc_status.c |   17 +++++++++++++++--
 3 files changed, 33 insertions(+), 9 deletions(-)

--- a/drivers/media/video/Kconfig
+++ b/drivers/media/video/Kconfig
@@ -793,13 +793,7 @@ menuconfig V4L_USB_DRIVERS
 
 if V4L_USB_DRIVERS && USB
 
-config USB_VIDEO_CLASS
-	tristate "USB Video Class (UVC)"
-	---help---
-	  Support for the USB Video Class (UVC).  Currently only video
-	  input devices, such as webcams, are supported.
-
-	  For more information see: <http://linux-uvc.berlios.de/>
+source "drivers/media/video/uvc/Kconfig"
 
 source "drivers/media/video/pvrusb2/Kconfig"
 
--- /dev/null
+++ b/drivers/media/video/uvc/Kconfig
@@ -0,0 +1,17 @@
+config USB_VIDEO_CLASS
+	tristate "USB Video Class (UVC)"
+	---help---
+	  Support for the USB Video Class (UVC).  Currently only video
+	  input devices, such as webcams, are supported.
+
+	  For more information see: <http://linux-uvc.berlios.de/>
+
+config USB_VIDEO_CLASS_INPUT_EVDEV
+	bool "UVC input events device support"
+	default y
+	depends on USB_VIDEO_CLASS && INPUT
+	---help---
+	  This option makes USB Video Class devices register an input device
+	  to report button events.
+
+	  If you are in doubt, say Y.
--- a/drivers/media/video/uvc/uvc_status.c
+++ b/drivers/media/video/uvc/uvc_status.c
@@ -22,6 +22,7 @@
 /* --------------------------------------------------------------------------
  * Input device
  */
+#ifdef CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV
 static int uvc_input_init(struct uvc_device *dev)
 {
 	struct usb_device *udev = dev->udev;
@@ -67,6 +68,19 @@ static void uvc_input_cleanup(struct uvc
 		input_unregister_device(dev->input);
 }
 
+static void uvc_input_report_key(struct uvc_device *dev, unsigned int code,
+	int value)
+{
+	if (dev->input)
+		input_report_key(dev->input, code, value);
+}
+
+#else
+#define uvc_input_init(dev)
+#define uvc_input_cleanup(dev)
+#define uvc_input_report_key(dev, code, value)
+#endif /* CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV */
+
 /* --------------------------------------------------------------------------
  * Status interrupt endpoint
  */
@@ -83,8 +97,7 @@ static void uvc_event_streaming(struct u
 			return;
 		uvc_trace(UVC_TRACE_STATUS, "Button (intf %u) %s len %d\n",
 			data[1], data[3] ? "pressed" : "released", len);
-		if (dev->input)
-			input_report_key(dev->input, BTN_0, data[3]);
+		uvc_input_report_key(dev, BTN_0, data[3]);
 	} else {
 		uvc_trace(UVC_TRACE_STATUS, "Stream %u error event %02x %02x "
 			"len %d.\n", data[1], data[2], data[3], len);

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 44/62] V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated webcam
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (42 preceding siblings ...)
  2008-07-30 23:59   ` [patch 43/62] V4L: uvcvideo: Make input device support optional Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 45/62] V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner type Greg KH
                     ` (17 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Tim Gardner, Laurent Pinchart,
	Mauro Carvalho Chehab

[-- Attachment #1: v4l-uvcvideo-add-support-for-medion-akoya-mini-e1210-integrated-webcam.patch --]
[-- Type: text/plain, Size: 1364 bytes --]


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

------------------
From: Laurent Pinchart <laurent.pinchart@skynet.be>

(cherry picked from commit bdf2fe4a0b9d23e69c77eaec76212216c9a957ef)

V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated webcam

Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/uvc/uvc_driver.c |    9 +++++++++
 1 file changed, 9 insertions(+)

--- a/drivers/media/video/uvc/uvc_driver.c
+++ b/drivers/media/video/uvc/uvc_driver.c
@@ -1892,6 +1892,15 @@ static struct usb_device_id uvc_ids[] = 
 	  .bInterfaceSubClass	= 1,
 	  .bInterfaceProtocol	= 0,
 	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
+	/* Medion Akoya Mini E1210 */
+	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
+				| USB_DEVICE_ID_MATCH_INT_INFO,
+	  .idVendor		= 0x5986,
+	  .idProduct		= 0x0141,
+	  .bInterfaceClass	= USB_CLASS_VIDEO,
+	  .bInterfaceSubClass	= 1,
+	  .bInterfaceProtocol	= 0,
+	  .driver_info		= UVC_QUIRK_PROBE_MINMAX },
 	/* Acer OrbiCam - Unknown vendor */
 	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
 				| USB_DEVICE_ID_MATCH_INT_INFO,

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 45/62] V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner type
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (43 preceding siblings ...)
  2008-07-30 23:59   ` [patch 44/62] V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated webcam Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 46/62] V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1 Greg KH
                     ` (16 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Simon Arlott, v4l-dvb maintainer list, Hermann Pitton,
	Brian Marete, Mauro Carvalho Chehab

[-- Attachment #1: v4l-saa7134-copy-tuner-data-earlier-to-avoid-overwriting-manual-tuner-type.patch --]
[-- Type: text/plain, Size: 2722 bytes --]


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

------------------
From: Simon Arlott <simon@fire.lp0.eu>

V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner type

(cherry picked from commit d53687d1d22c3204394658a31654de2f1efb0e8f)

Copy tuner data earlier in init to avoid overwriting manual tuner type

When saa7134_board_init2 runs, it immediately overwrites the
current value (set earlier from module parameter) of tuner_type
with the static values, and then does autodetection. This patch
moves the tuner_addr copy to earlier in saa7134_initdev and
removes the tuner_type copy from saa7134_board_init2.

Autodetection could still potentially change to the wrong tuner
type, but it is now possible to override the default type for
the card again.

My card's tuner is configured with autodetection from eeprom,
so I don't need to manually set the tuner. I've checked that
the autodetection still works for my card.

Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
Reviewed-by: Hermann Pitton <hermann-pitton@arcor.de>
Cc: Brian Marete <bgmarete@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/saa7134/saa7134-cards.c |    3 ---
 drivers/media/video/saa7134/saa7134-core.c  |    5 +++--
 2 files changed, 3 insertions(+), 5 deletions(-)

--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -5703,9 +5703,6 @@ int saa7134_board_init2(struct saa7134_d
 	unsigned char buf;
 	int board;
 
-	dev->tuner_type = saa7134_boards[dev->board].tuner_type;
-	dev->tuner_addr = saa7134_boards[dev->board].tuner_addr;
-
 	switch (dev->board) {
 	case SAA7134_BOARD_BMK_MPEX_NOTUNER:
 	case SAA7134_BOARD_BMK_MPEX_TUNER:
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -946,11 +946,12 @@ static int __devinit saa7134_initdev(str
 		dev->board = SAA7134_BOARD_UNKNOWN;
 	}
 	dev->autodetected = card[dev->nr] != dev->board;
-	dev->tuner_type   = saa7134_boards[dev->board].tuner_type;
+	dev->tuner_type = saa7134_boards[dev->board].tuner_type;
+	dev->tuner_addr = saa7134_boards[dev->board].tuner_addr;
 	dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf;
 	if (UNSET != tuner[dev->nr])
 		dev->tuner_type = tuner[dev->nr];
-		printk(KERN_INFO "%s: subsystem: %04x:%04x, board: %s [card=%d,%s]\n",
+	printk(KERN_INFO "%s: subsystem: %04x:%04x, board: %s [card=%d,%s]\n",
 		dev->name,pci_dev->subsystem_vendor,
 		pci_dev->subsystem_device,saa7134_boards[dev->board].name,
 		dev->board, dev->autodetected ?

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 46/62] V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (44 preceding siblings ...)
  2008-07-30 23:59   ` [patch 45/62] V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner type Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 47/62] DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default Greg KH
                     ` (15 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Steven Toth, Mauro Carvalho Chehab

[-- Attachment #1: v4l-cx23885-bugfix-for-concurrent-use-of-dev-video0-and-dev-video1.patch --]
[-- Type: text/plain, Size: 1180 bytes --]


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

------------------
From: Steven Toth <stoth@hauppauge.com>

(cherry picked from commit 28901ab621bb56cd2aa9670dc7ce016ba80ec45c)

V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1

With the HVR1800, trying to use video0 and video1 simultaneously
caused buffer corruption in the PCIe bridge. This fix reallocates
video1 buffer locations to avoid the issue.

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/cx23885/cx23885-core.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -104,8 +104,8 @@ static struct sram_channel cx23887_sram_
 	[SRAM_CH03] = {
 		.name		= "TS1 B",
 		.cmds_start	= 0x100A0,
-		.ctrl_start	= 0x10780,
-		.cdt		= 0x10400,
+		.ctrl_start	= 0x10670,
+		.cdt		= 0x10810,
 		.fifo_start	= 0x5000,
 		.fifo_size	= 0x1000,
 		.ptr1_reg	= DMA3_PTR1,

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 47/62] DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (45 preceding siblings ...)
  2008-07-30 23:59   ` [patch 46/62] V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1 Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 48/62] DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not stream Greg KH
                     ` (14 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Steven Toth, Mauro Carvalho Chehab

[-- Attachment #1: dvb-cx23885-ensure-pad_ctrl-is-always-reset-to-a-sensible-default.patch --]
[-- Type: text/plain, Size: 1071 bytes --]


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

------------------
From: Steven Toth <stoth@hauppauge.com>

(cherry picked from commit ecda5966c90746a044ff68e78b1062adcddd9664)

DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default

PAD_CTRL controls TS1 and TS2 input and output states, if the
register became corrupt the driver was never able to recover.

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/cx23885/cx23885-core.c |    1 +
 1 file changed, 1 insertion(+)

--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -460,6 +460,7 @@ static void cx23885_reset(struct cx23885
 	cx_write(AUDIO_INT_INT_STAT, 0xffffffff);
 	cx_write(AUDIO_EXT_INT_STAT, 0xffffffff);
 	cx_write(CLK_DELAY, cx_read(CLK_DELAY) & 0x80000000);
+	cx_write(PAD_CTRL, 0x00500300);
 
 	mdelay(100);
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 48/62] DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not stream
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (46 preceding siblings ...)
  2008-07-30 23:59   ` [patch 47/62] DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 49/62] DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues Greg KH
                     ` (13 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Steven Toth, Mauro Carvalho Chehab

[-- Attachment #1: dvb-cx23885-dvb-transport-cards-using-dvb-port-vidb-ts1-did-not-stream.patch --]
[-- Type: text/plain, Size: 1945 bytes --]


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

------------------
From: Steven Toth <stoth@hauppauge.com>

(cherry picked from commit 52ce27bfc4d302a3e28267a5820a8b031ceccee9)

DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not stream

Certain DVB cards that have demodulators on TS1/VIDB were not
streaming packets.

This ensure the pin directions on PAD_CTRL are set correctly,
solving the issue.

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/cx23885/cx23885-core.c |   18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -1084,7 +1084,21 @@ static int cx23885_start_dma(struct cx23
 	cx_write(port->reg_gpcnt_ctl, 3);
 	q->count = 1;
 
-	if (cx23885_boards[dev->board].portb & CX23885_MPEG_ENCODER) {
+	/* Set VIDB pins to input */
+	if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) {
+		reg = cx_read(PAD_CTRL);
+		reg &= ~0x3; /* Clear TS1_OE & TS1_SOP_OE */
+		cx_write(PAD_CTRL, reg);
+	}
+
+	/* Set VIDC pins to input */
+	if (cx23885_boards[dev->board].portc == CX23885_MPEG_DVB) {
+		reg = cx_read(PAD_CTRL);
+		reg &= ~0x4; /* Clear TS2_SOP_OE */
+		cx_write(PAD_CTRL, reg);
+	}
+
+	if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) {
 
 		reg = cx_read(PAD_CTRL);
 		reg = reg & ~0x1;    /* Clear TS1_OE */
@@ -1134,7 +1148,7 @@ static int cx23885_stop_dma(struct cx238
 	cx_clear(port->reg_ts_int_msk, port->ts_int_msk_val);
 	cx_clear(port->reg_dma_ctl, port->dma_ctl_val);
 
-	if (cx23885_boards[dev->board].portb & CX23885_MPEG_ENCODER) {
+	if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) {
 
 		reg = cx_read(PAD_CTRL);
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 49/62] DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (47 preceding siblings ...)
  2008-07-30 23:59   ` [patch 48/62] DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not stream Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 50/62] DVB: cx23885: SRAM changes for the 885 and 887 silicon parts Greg KH
                     ` (12 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Steven Toth, Mauro Carvalho Chehab

[-- Attachment #1: dvb-cx23885-reallocated-the-sram-to-avoid-concurrent-vidb-c-issues.patch --]
[-- Type: text/plain, Size: 2103 bytes --]


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

------------------
From: Steven Toth <stoth@hauppauge.com>

(cherry picked from commit d8d12b4367e2e759f65c5f9dcb94d21ec237bbc5)

DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues

This may be cx23885 chip specific and may not work on the cx23887.
Analog and mpeg encoder streaming are still to be tested.

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/cx23885/cx23885-core.c |   15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -80,8 +80,8 @@ static struct sram_channel cx23887_sram_
 	[SRAM_CH01] = {
 		.name		= "VID A",
 		.cmds_start	= 0x10000,
-		.ctrl_start	= 0x105b0,
-		.cdt		= 0x107b0,
+		.ctrl_start	= 0x10380,
+		.cdt		= 0x104c0,
 		.fifo_start	= 0x40,
 		.fifo_size	= 0x2800,
 		.ptr1_reg	= DMA1_PTR1,
@@ -104,8 +104,8 @@ static struct sram_channel cx23887_sram_
 	[SRAM_CH03] = {
 		.name		= "TS1 B",
 		.cmds_start	= 0x100A0,
-		.ctrl_start	= 0x10670,
-		.cdt		= 0x10810,
+		.ctrl_start	= 0x10400,
+		.cdt		= 0x10580,
 		.fifo_start	= 0x5000,
 		.fifo_size	= 0x1000,
 		.ptr1_reg	= DMA3_PTR1,
@@ -140,8 +140,8 @@ static struct sram_channel cx23887_sram_
 	[SRAM_CH06] = {
 		.name		= "TS2 C",
 		.cmds_start	= 0x10140,
-		.ctrl_start	= 0x10680,
-		.cdt		= 0x108d0,
+		.ctrl_start	= 0x10440,
+		.cdt		= 0x105e0,
 		.fifo_start	= 0x6000,
 		.fifo_size	= 0x1000,
 		.ptr1_reg	= DMA5_PTR1,
@@ -1043,6 +1043,9 @@ static int cx23885_start_dma(struct cx23
 	dprintk(1, "%s() w: %d, h: %d, f: %d\n", __func__,
 		buf->vb.width, buf->vb.height, buf->vb.field);
 
+	/* Stop the fifo and risc engine for this port */
+	cx_clear(port->reg_dma_ctl, port->dma_ctl_val);
+
 	/* setup fifo + format */
 	cx23885_sram_channel_setup(dev,
 				   &dev->sram_channels[ port->sram_chno ],

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 50/62] DVB: cx23885: SRAM changes for the 885 and 887 silicon parts
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (48 preceding siblings ...)
  2008-07-30 23:59   ` [patch 49/62] DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 51/62] x86: fix kernel_physical_mapping_init() for large x86 systems Greg KH
                     ` (11 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, v4l-dvb maintainer list, Steven Toth, Mauro Carvalho Chehab

[-- Attachment #1: dvb-cx23885-sram-changes-for-the-885-and-887-silicon-parts.patch --]
[-- Type: text/plain, Size: 4480 bytes --]


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

------------------
From: Steven Toth <stoth@hauppauge.com>

(cherry picked from commit 7e994302ed3fc6d209ce247ad5b6d9c2499bf7c2)

DVB: cx23885: SRAM changes for the 885 and 887 silicon parts

In a previous patch I merged both memory maps into a single struct,
believing that they could be combined. We've since found problems
with streaming multiple channels on the 885. I'm restoring the
multiple memory map structs - in line with the windows driver.

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/media/video/cx23885/cx23885-core.c |  116 ++++++++++++++++++++++++++++-
 1 file changed, 114 insertions(+), 2 deletions(-)

--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -76,7 +76,7 @@ LIST_HEAD(cx23885_devlist);
  * 0x00010ea0 0x00010xxx Free
  */
 
-static struct sram_channel cx23887_sram_channels[] = {
+static struct sram_channel cx23885_sram_channels[] = {
 	[SRAM_CH01] = {
 		.name		= "VID A",
 		.cmds_start	= 0x10000,
@@ -187,6 +187,117 @@ static struct sram_channel cx23887_sram_
 	},
 };
 
+static struct sram_channel cx23887_sram_channels[] = {
+	[SRAM_CH01] = {
+		.name		= "VID A",
+		.cmds_start	= 0x10000,
+		.ctrl_start	= 0x105b0,
+		.cdt		= 0x107b0,
+		.fifo_start	= 0x40,
+		.fifo_size	= 0x2800,
+		.ptr1_reg	= DMA1_PTR1,
+		.ptr2_reg	= DMA1_PTR2,
+		.cnt1_reg	= DMA1_CNT1,
+		.cnt2_reg	= DMA1_CNT2,
+	},
+	[SRAM_CH02] = {
+		.name		= "ch2",
+		.cmds_start	= 0x0,
+		.ctrl_start	= 0x0,
+		.cdt		= 0x0,
+		.fifo_start	= 0x0,
+		.fifo_size	= 0x0,
+		.ptr1_reg	= DMA2_PTR1,
+		.ptr2_reg	= DMA2_PTR2,
+		.cnt1_reg	= DMA2_CNT1,
+		.cnt2_reg	= DMA2_CNT2,
+	},
+	[SRAM_CH03] = {
+		.name		= "TS1 B",
+		.cmds_start	= 0x100A0,
+		.ctrl_start	= 0x10630,
+		.cdt		= 0x10870,
+		.fifo_start	= 0x5000,
+		.fifo_size	= 0x1000,
+		.ptr1_reg	= DMA3_PTR1,
+		.ptr2_reg	= DMA3_PTR2,
+		.cnt1_reg	= DMA3_CNT1,
+		.cnt2_reg	= DMA3_CNT2,
+	},
+	[SRAM_CH04] = {
+		.name		= "ch4",
+		.cmds_start	= 0x0,
+		.ctrl_start	= 0x0,
+		.cdt		= 0x0,
+		.fifo_start	= 0x0,
+		.fifo_size	= 0x0,
+		.ptr1_reg	= DMA4_PTR1,
+		.ptr2_reg	= DMA4_PTR2,
+		.cnt1_reg	= DMA4_CNT1,
+		.cnt2_reg	= DMA4_CNT2,
+	},
+	[SRAM_CH05] = {
+		.name		= "ch5",
+		.cmds_start	= 0x0,
+		.ctrl_start	= 0x0,
+		.cdt		= 0x0,
+		.fifo_start	= 0x0,
+		.fifo_size	= 0x0,
+		.ptr1_reg	= DMA5_PTR1,
+		.ptr2_reg	= DMA5_PTR2,
+		.cnt1_reg	= DMA5_CNT1,
+		.cnt2_reg	= DMA5_CNT2,
+	},
+	[SRAM_CH06] = {
+		.name		= "TS2 C",
+		.cmds_start	= 0x10140,
+		.ctrl_start	= 0x10670,
+		.cdt		= 0x108d0,
+		.fifo_start	= 0x6000,
+		.fifo_size	= 0x1000,
+		.ptr1_reg	= DMA5_PTR1,
+		.ptr2_reg	= DMA5_PTR2,
+		.cnt1_reg	= DMA5_CNT1,
+		.cnt2_reg	= DMA5_CNT2,
+	},
+	[SRAM_CH07] = {
+		.name		= "ch7",
+		.cmds_start	= 0x0,
+		.ctrl_start	= 0x0,
+		.cdt		= 0x0,
+		.fifo_start	= 0x0,
+		.fifo_size	= 0x0,
+		.ptr1_reg	= DMA6_PTR1,
+		.ptr2_reg	= DMA6_PTR2,
+		.cnt1_reg	= DMA6_CNT1,
+		.cnt2_reg	= DMA6_CNT2,
+	},
+	[SRAM_CH08] = {
+		.name		= "ch8",
+		.cmds_start	= 0x0,
+		.ctrl_start	= 0x0,
+		.cdt		= 0x0,
+		.fifo_start	= 0x0,
+		.fifo_size	= 0x0,
+		.ptr1_reg	= DMA7_PTR1,
+		.ptr2_reg	= DMA7_PTR2,
+		.cnt1_reg	= DMA7_CNT1,
+		.cnt2_reg	= DMA7_CNT2,
+	},
+	[SRAM_CH09] = {
+		.name		= "ch9",
+		.cmds_start	= 0x0,
+		.ctrl_start	= 0x0,
+		.cdt		= 0x0,
+		.fifo_start	= 0x0,
+		.fifo_size	= 0x0,
+		.ptr1_reg	= DMA8_PTR1,
+		.ptr2_reg	= DMA8_PTR2,
+		.cnt1_reg	= DMA8_CNT1,
+		.cnt2_reg	= DMA8_CNT2,
+	},
+};
+
 static int cx23885_risc_decode(u32 risc)
 {
 	static char *instr[16] = {
@@ -626,7 +737,6 @@ static int cx23885_dev_setup(struct cx23
 	atomic_inc(&dev->refcount);
 
 	dev->nr = cx23885_devcount++;
-	dev->sram_channels = cx23887_sram_channels;
 	sprintf(dev->name, "cx23885[%d]", dev->nr);
 
 	mutex_lock(&devlist);
@@ -638,11 +748,13 @@ static int cx23885_dev_setup(struct cx23
 		dev->bridge = CX23885_BRIDGE_887;
 		/* Apply a sensible clock frequency for the PCIe bridge */
 		dev->clk_freq = 25000000;
+		dev->sram_channels = cx23887_sram_channels;
 	} else
 	if(dev->pci->device == 0x8852) {
 		dev->bridge = CX23885_BRIDGE_885;
 		/* Apply a sensible clock frequency for the PCIe bridge */
 		dev->clk_freq = 28000000;
+		dev->sram_channels = cx23885_sram_channels;
 	} else
 		BUG();
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 51/62] x86: fix kernel_physical_mapping_init() for large x86 systems
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (49 preceding siblings ...)
  2008-07-30 23:59   ` [patch 50/62] DVB: cx23885: SRAM changes for the 885 and 887 silicon parts Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 52/62] eCryptfs: use page_alloc not kmalloc to get a page of memory Greg KH
                     ` (10 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable, Oliver Pinter
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, linux-mm, Jack Steiner, Ingo Molnar

[-- Attachment #1: x86-fix-kernel_physical_mapping_init-for-large-x86-systems.patch --]
[-- Type: text/plain, Size: 1016 bytes --]

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

------------------
From: Ingo Molnar <mingo@elte.hu>

based on e22146e610bb7aed63282148740ab1d1b91e1d90 upstream

Fix bug in kernel_physical_mapping_init() that causes kernel
page table to be built incorrectly for systems with greater
than 512GB of memory.

Signed-off-by: Jack Steiner <steiner@sgi.com>
Cc: linux-mm@kvack.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Oliver Pinter <oliver.pntr@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/x86/mm/init_64.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -579,7 +579,7 @@ unsigned long __init_refok init_memory_m
 		else
 			pud = alloc_low_page(&pud_phys);
 
-		next = start + PGDIR_SIZE;
+		next = (start + PGDIR_SIZE) & PGDIR_MASK;
 		if (next > end)
 			next = end;
 		last_map_addr = phys_pud_init(pud, __pa(start), __pa(next));

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 52/62] eCryptfs: use page_alloc not kmalloc to get a page of memory
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (50 preceding siblings ...)
  2008-07-30 23:59   ` [patch 51/62] x86: fix kernel_physical_mapping_init() for large x86 systems Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 53/62] UML - Fix boot crash Greg KH
                     ` (9 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Eric Sandeen, Michael Halcrow, Rik van Riel

[-- Attachment #1: ecryptfs-use-page_alloc-not-kmalloc-to-get-a-page-of-memory.patch --]
[-- Type: text/plain, Size: 3623 bytes --]

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

------------------
From: Eric Sandeen <sandeen@redhat.com>

commit 7fcba054373d5dfc43d26e243a5c9b92069972ee upstream
Date: Mon, 28 Jul 2008 15:46:39 -0700
Subject: [patch 52/62] eCryptfs: use page_alloc not kmalloc to get a page of memory

With SLUB debugging turned on in 2.6.26, I was getting memory corruption
when testing eCryptfs.  The root cause turned out to be that eCryptfs was
doing kmalloc(PAGE_CACHE_SIZE); virt_to_page() and treating that as a nice
page-aligned chunk of memory.  But at least with SLUB debugging on, this
is not always true, and the page we get from virt_to_page does not
necessarily match the PAGE_CACHE_SIZE worth of memory we got from kmalloc.

My simple testcase was 2 loops doing "rm -f fileX; cp /tmp/fileX ." for 2
different multi-megabyte files.  With this change I no longer see the
corruption.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Acked-by: Michael Halcrow <mhalcrow@us.ibm.com>
Acked-by: Rik van Riel <riel@redhat.com>
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>

---
 fs/ecryptfs/crypto.c |   30 ++++++++++++++++++------------
 1 file changed, 18 insertions(+), 12 deletions(-)

--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -474,8 +474,8 @@ int ecryptfs_encrypt_page(struct page *p
 {
 	struct inode *ecryptfs_inode;
 	struct ecryptfs_crypt_stat *crypt_stat;
-	char *enc_extent_virt = NULL;
-	struct page *enc_extent_page;
+	char *enc_extent_virt;
+	struct page *enc_extent_page = NULL;
 	loff_t extent_offset;
 	int rc = 0;
 
@@ -491,14 +491,14 @@ int ecryptfs_encrypt_page(struct page *p
 			       page->index);
 		goto out;
 	}
-	enc_extent_virt = kmalloc(PAGE_CACHE_SIZE, GFP_USER);
-	if (!enc_extent_virt) {
+	enc_extent_page = alloc_page(GFP_USER);
+	if (!enc_extent_page) {
 		rc = -ENOMEM;
 		ecryptfs_printk(KERN_ERR, "Error allocating memory for "
 				"encrypted extent\n");
 		goto out;
 	}
-	enc_extent_page = virt_to_page(enc_extent_virt);
+	enc_extent_virt = kmap(enc_extent_page);
 	for (extent_offset = 0;
 	     extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size);
 	     extent_offset++) {
@@ -526,7 +526,10 @@ int ecryptfs_encrypt_page(struct page *p
 		}
 	}
 out:
-	kfree(enc_extent_virt);
+	if (enc_extent_page) {
+		kunmap(enc_extent_page);
+		__free_page(enc_extent_page);
+	}
 	return rc;
 }
 
@@ -608,8 +611,8 @@ int ecryptfs_decrypt_page(struct page *p
 {
 	struct inode *ecryptfs_inode;
 	struct ecryptfs_crypt_stat *crypt_stat;
-	char *enc_extent_virt = NULL;
-	struct page *enc_extent_page;
+	char *enc_extent_virt;
+	struct page *enc_extent_page = NULL;
 	unsigned long extent_offset;
 	int rc = 0;
 
@@ -626,14 +629,14 @@ int ecryptfs_decrypt_page(struct page *p
 			       page->index);
 		goto out;
 	}
-	enc_extent_virt = kmalloc(PAGE_CACHE_SIZE, GFP_USER);
-	if (!enc_extent_virt) {
+	enc_extent_page = alloc_page(GFP_USER);
+	if (!enc_extent_page) {
 		rc = -ENOMEM;
 		ecryptfs_printk(KERN_ERR, "Error allocating memory for "
 				"encrypted extent\n");
 		goto out;
 	}
-	enc_extent_page = virt_to_page(enc_extent_virt);
+	enc_extent_virt = kmap(enc_extent_page);
 	for (extent_offset = 0;
 	     extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size);
 	     extent_offset++) {
@@ -661,7 +664,10 @@ int ecryptfs_decrypt_page(struct page *p
 		}
 	}
 out:
-	kfree(enc_extent_virt);
+	if (enc_extent_page) {
+		kunmap(enc_extent_page);
+		__free_page(enc_extent_page);
+	}
 	return rc;
 }
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 53/62] UML - Fix boot crash
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (51 preceding siblings ...)
  2008-07-30 23:59   ` [patch 52/62] eCryptfs: use page_alloc not kmalloc to get a page of memory Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 54/62] ixgbe: remove device ID for unsupported device Greg KH
                     ` (8 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Jeff Dike

[-- Attachment #1: uml-fix-boot-crash.patch --]
[-- Type: text/plain, Size: 1335 bytes --]

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

------------------
From: Jeff Dike <jdike@addtoit.com>

commit 7c1fed03b9fa32d4323d5caa6a9c7dcdd7eba767 upstream

My copying of linux/init.h didn't go far enough.  The definition of
__used singled out gcc minor version 3, but didn't care what the major
version was.  This broke when unit-at-a-time was added and gcc started
throwing out initcalls.

This results in an early boot crash when ptrace tries to initialize a
process with an empty, uninitialized register set.

Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 arch/um/include/init.h |    8 ++++++++
 1 file changed, 8 insertions(+)

--- a/arch/um/include/init.h
+++ b/arch/um/include/init.h
@@ -45,6 +45,8 @@ typedef void (*exitcall_t)(void);
 # define __section(S) __attribute__ ((__section__(#S)))
 #endif
 
+#if __GNUC__ == 3
+
 #if __GNUC_MINOR__ >= 3
 # define __used			__attribute__((__used__))
 #else
@@ -52,6 +54,12 @@ typedef void (*exitcall_t)(void);
 #endif
 
 #else
+#if __GNUC__ == 4
+# define __used			__attribute__((__used__))
+#endif
+#endif
+
+#else
 #include <linux/compiler.h>
 #endif
 /* These are for everybody (although not all archs will actually

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 54/62] ixgbe: remove device ID for unsupported device
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (52 preceding siblings ...)
  2008-07-30 23:59   ` [patch 53/62] UML - Fix boot crash Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 55/62] mpc52xx_psc_spi: fix block transfer Greg KH
                     ` (7 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Jesse Brandeburg, Jeff Kirsher, Jeff Garzik

[-- Attachment #1: ixgbe-remove-device-id-for-unsupported-device.patch --]
[-- Type: text/plain, Size: 1204 bytes --]

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

------------------
From: Jesse Brandeburg <jesse.brandeburg@intel.com>

commit bb5d10ac8cc315d53306963001fe650d88a1cbb2 upstream

The ixgbe driver was untested with device ID 8086:10c8 but still advertises
support.  Currently if this device is present in the system when the driver
is loaded, the system will panic.
Remove this device ID until full support can be tested with available
hardware.  This patch is necessary for 2.6.24, 2.6.25 and 2.6.26

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/ixgbe/ixgbe_main.c |    2 --
 1 file changed, 2 deletions(-)

--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -70,8 +70,6 @@ static struct pci_device_id ixgbe_pci_tb
 	 board_82598 },
 	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AF_SINGLE_PORT),
 	 board_82598 },
-	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598AT_DUAL_PORT),
-	 board_82598 },
 	{PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82598EB_CX4),
 	 board_82598 },
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 55/62] mpc52xx_psc_spi: fix block transfer
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (53 preceding siblings ...)
  2008-07-30 23:59   ` [patch 54/62] ixgbe: remove device ID for unsupported device Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 56/62] tmpfs: fix kernel BUG in shmem_delete_inode Greg KH
                     ` (6 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Luotao Fu, David Brownell

[-- Attachment #1: mpc52xx_psc_spi-fix-block-transfer.patch --]
[-- Type: text/plain, Size: 2124 bytes --]

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

------------------
From: Luotao Fu <l.fu@pengutronix.de>

commit 9a7867e1b34c3575e7e76a05c0c54c6edbdae2a4 upstream

The block transfer routine in the mpc52xx psc spi driver misinterpret
the datasheet.  According to the processor datasheet the chipselect is
held as long as the EOF is not written.

Theoretically blocks of any sizes can be transferred in this way.  The
old routine however writes an EOF after every word, which has the size
of size_of_word.  This makes the transfer slow.

Also fixed some duplicate code.

Signed-off-by: Luotao Fu <l.fu@pengutronix.de>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
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>

---
 drivers/spi/mpc52xx_psc_spi.c |   22 +++++++---------------
 1 file changed, 7 insertions(+), 15 deletions(-)

--- a/drivers/spi/mpc52xx_psc_spi.c
+++ b/drivers/spi/mpc52xx_psc_spi.c
@@ -148,7 +148,6 @@ static int mpc52xx_psc_spi_transfer_rxtx
 	unsigned rfalarm;
 	unsigned send_at_once = MPC52xx_PSC_BUFSIZE;
 	unsigned recv_at_once;
-	unsigned bpw = mps->bits_per_word / 8;
 
 	if (!t->tx_buf && !t->rx_buf && t->len)
 		return -EINVAL;
@@ -164,22 +163,15 @@ static int mpc52xx_psc_spi_transfer_rxtx
 		}
 
 		dev_dbg(&spi->dev, "send %d bytes...\n", send_at_once);
-		if (tx_buf) {
-			for (; send_at_once; sb++, send_at_once--) {
-				/* set EOF flag */
-				if (mps->bits_per_word
-						&& (sb + 1) % bpw == 0)
-					out_8(&psc->ircr2, 0x01);
+		for (; send_at_once; sb++, send_at_once--) {
+			/* set EOF flag before the last word is sent */
+			if (send_at_once == 1)
+				out_8(&psc->ircr2, 0x01);
+
+			if (tx_buf)
 				out_8(&psc->mpc52xx_psc_buffer_8, tx_buf[sb]);
-			}
-		} else {
-			for (; send_at_once; sb++, send_at_once--) {
-				/* set EOF flag */
-				if (mps->bits_per_word
-						&& ((sb + 1) % bpw) == 0)
-					out_8(&psc->ircr2, 0x01);
+			else
 				out_8(&psc->mpc52xx_psc_buffer_8, 0);
-			}
 		}
 
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 56/62] tmpfs: fix kernel BUG in shmem_delete_inode
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (54 preceding siblings ...)
  2008-07-30 23:59   ` [patch 55/62] mpc52xx_psc_spi: fix block transfer Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-30 23:59   ` [patch 57/62] markers: fix markers read barrier for multiple probes Greg KH
                     ` (5 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Hugh Dickins

[-- Attachment #1: tmpfs-fix-kernel-bug-in-shmem_delete_inode.patch --]
[-- Type: text/plain, Size: 2095 bytes --]

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

------------------
From: Hugh Dickins <hugh@veritas.com>

commit 14fcc23fdc78e9d32372553ccf21758a9bd56fa1 upstream

SuSE's insserve initscript ordering program hits kernel BUG at mm/shmem.c:814
on 2.6.26.  It's using posix_fadvise on directories, and the shmem_readpage
method added in 2.6.23 is letting POSIX_FADV_WILLNEED allocate useless pages
to a tmpfs directory, incrementing i_blocks count but never decrementing it.

Fix this by assigning shmem_aops (pointing to readpage and writepage and
set_page_dirty) only when it's needed, on a regular file or a long symlink.

Many thanks to Kel for outstanding bugreport and steps to reproduce it.

Reported-by: Kel Modderman <kel@otaku42.de>
Tested-by: Kel Modderman <kel@otaku42.de>
Signed-off-by: Hugh Dickins <hugh@veritas.com>
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>

---
 mm/shmem.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1503,7 +1503,6 @@ shmem_get_inode(struct super_block *sb, 
 		inode->i_uid = current->fsuid;
 		inode->i_gid = current->fsgid;
 		inode->i_blocks = 0;
-		inode->i_mapping->a_ops = &shmem_aops;
 		inode->i_mapping->backing_dev_info = &shmem_backing_dev_info;
 		inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
 		inode->i_generation = get_seconds();
@@ -1518,6 +1517,7 @@ shmem_get_inode(struct super_block *sb, 
 			init_special_inode(inode, mode, dev);
 			break;
 		case S_IFREG:
+			inode->i_mapping->a_ops = &shmem_aops;
 			inode->i_op = &shmem_inode_operations;
 			inode->i_fop = &shmem_file_operations;
 			mpol_shared_policy_init(&info->policy,
@@ -1907,6 +1907,7 @@ static int shmem_symlink(struct inode *d
 			return error;
 		}
 		unlock_page(page);
+		inode->i_mapping->a_ops = &shmem_aops;
 		inode->i_op = &shmem_symlink_inode_operations;
 		kaddr = kmap_atomic(page, KM_USER0);
 		memcpy(kaddr, symname, len);

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 57/62] markers: fix markers read barrier for multiple probes
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (55 preceding siblings ...)
  2008-07-30 23:59   ` [patch 56/62] tmpfs: fix kernel BUG in shmem_delete_inode Greg KH
@ 2008-07-30 23:59   ` Greg KH
  2008-07-31  0:00   ` [patch 58/62] VFS: increase pseudo-filesystem block size to PAGE_SIZE Greg KH
                     ` (4 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-30 23:59 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Mathieu Desnoyers, Paul E. McKenney

[-- Attachment #1: markers-fix-markers-read-barrier-for-multiple-probes.patch --]
[-- Type: text/plain, Size: 2616 bytes --]

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

------------------
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>

commit 5def9a3a22e09c99717f41ab7f07ec9e1a1f3ec8 upstream

Paul pointed out two incorrect read barriers in the marker handler code in
the path where multiple probes are connected.  Those are ordering reads of
"ptype" (single or multi probe marker), "multi" array pointer, and "multi"
array data access.

It should be ordered like this :

read ptype
smp_rmb()
read multi array pointer
smp_read_barrier_depends()
access data referenced by multi array pointer

The code with a single probe connected (optimized case, does not have to
allocate an array) has correct memory ordering.

It applies to kernel 2.6.26.x, 2.6.25.x and linux-next.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
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>

---
 kernel/marker.c |   12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

--- a/kernel/marker.c
+++ b/kernel/marker.c
@@ -127,6 +127,11 @@ void marker_probe_cb(const struct marker
 		struct marker_probe_closure *multi;
 		int i;
 		/*
+		 * Read mdata->ptype before mdata->multi.
+		 */
+		smp_rmb();
+		multi = mdata->multi;
+		/*
 		 * multi points to an array, therefore accessing the array
 		 * depends on reading multi. However, even in this case,
 		 * we must insure that the pointer is read _before_ the array
@@ -134,7 +139,6 @@ void marker_probe_cb(const struct marker
 		 * in the fast path, so put the explicit barrier here.
 		 */
 		smp_read_barrier_depends();
-		multi = mdata->multi;
 		for (i = 0; multi[i].func; i++) {
 			va_start(args, fmt);
 			multi[i].func(multi[i].probe_private, call_private, fmt,
@@ -177,6 +181,11 @@ void marker_probe_cb_noarg(const struct 
 		struct marker_probe_closure *multi;
 		int i;
 		/*
+		 * Read mdata->ptype before mdata->multi.
+		 */
+		smp_rmb();
+		multi = mdata->multi;
+		/*
 		 * multi points to an array, therefore accessing the array
 		 * depends on reading multi. However, even in this case,
 		 * we must insure that the pointer is read _before_ the array
@@ -184,7 +193,6 @@ void marker_probe_cb_noarg(const struct 
 		 * in the fast path, so put the explicit barrier here.
 		 */
 		smp_read_barrier_depends();
-		multi = mdata->multi;
 		for (i = 0; multi[i].func; i++)
 			multi[i].func(multi[i].probe_private, call_private, fmt,
 				&args);

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 58/62] VFS: increase pseudo-filesystem block size to PAGE_SIZE
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (56 preceding siblings ...)
  2008-07-30 23:59   ` [patch 57/62] markers: fix markers read barrier for multiple probes Greg KH
@ 2008-07-31  0:00   ` Greg KH
  2008-07-31  0:00   ` [patch 59/62] cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already Greg KH
                     ` (3 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-31  0:00 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Alex Nixon, Andi Kleen, Jeremy Fitzhardinge, Peter Zijlstra,
	Ingo Molnar, Ian Campbell, Alexander Viro, Hugh Dickins,
	Jens Axboe

[-- Attachment #1: vfs-increase-pseudo-filesystem-block-size-to-page_size.patch --]
[-- Type: text/plain, Size: 1611 bytes --]

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

------------------
From: Alex Nixon <alex.nixon@citrix.com>

commit 3971e1a917548977cff71418a7c3575ffbc9571f upstream

This commit:

    commit ba52de123d454b57369f291348266d86f4b35070
    Author: Theodore Ts'o <tytso@mit.edu>
    Date:   Wed Sep 27 01:50:49 2006 -0700

        [PATCH] inode-diet: Eliminate i_blksize from the inode structure

caused the block size used by pseudo-filesystems to decrease from
PAGE_SIZE to 1024 leading to a doubling of the number of context switches
during a kernbench run.

Signed-off-by: Alex Nixon <Alex.Nixon@citrix.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Ian Campbell <Ian.Campbell@eu.citrix.com>
Cc: "Theodore Ts'o" <tytso@mit.edu>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: Jens Axboe <jens.axboe@oracle.com>
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>

---
 fs/libfs.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -216,8 +216,8 @@ int get_sb_pseudo(struct file_system_typ
 
 	s->s_flags = MS_NOUSER;
 	s->s_maxbytes = ~0ULL;
-	s->s_blocksize = 1024;
-	s->s_blocksize_bits = 10;
+	s->s_blocksize = PAGE_SIZE;
+	s->s_blocksize_bits = PAGE_SHIFT;
 	s->s_magic = magic;
 	s->s_op = ops ? ops : &simple_super_operations;
 	s->s_time_gran = 1;

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 59/62] cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (57 preceding siblings ...)
  2008-07-31  0:00   ` [patch 58/62] VFS: increase pseudo-filesystem block size to PAGE_SIZE Greg KH
@ 2008-07-31  0:00   ` Greg KH
  2008-07-31  0:00   ` [patch 60/62] b43legacy: Release mutex in error handling code Greg KH
                     ` (2 subsequent siblings)
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-31  0:00 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Thomas Renninger, Andi Kleen, Len Brown, Dave Jones,
	Ingo Molnar, Venkatesh Pallipadi

[-- Attachment #1: cpufreq-acpi-only-call-_ppc-after-cpufreq-acpi-init-funcs-got-called-already.patch --]
[-- Type: text/plain, Size: 3693 bytes --]

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

------------------
From: Thomas Renninger <trenn@suse.de>

commit a1531acd43310a7e4571d52e8846640667f4c74b upstream

Ingo Molnar provided a fix to not call _PPC at processor driver
initialization time in "[PATCH] ACPI: fix cpufreq regression" (git
commit e4233dec749a3519069d9390561b5636a75c7579)

But it can still happen that _PPC is called at processor driver
initialization time.

This patch should make sure that this is not possible anymore.

Signed-off-by: Thomas Renninger <trenn@suse.de>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Dave Jones <davej@codemonkey.org.uk>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
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>

---
 arch/powerpc/platforms/cell/cbe_cpufreq_pmi.c |    6 ++++++
 drivers/acpi/processor_perflib.c              |   15 +++++++++++++--
 drivers/cpufreq/cpufreq.c                     |    3 +++
 include/linux/cpufreq.h                       |    1 +
 4 files changed, 23 insertions(+), 2 deletions(-)

--- a/arch/powerpc/platforms/cell/cbe_cpufreq_pmi.c
+++ b/arch/powerpc/platforms/cell/cbe_cpufreq_pmi.c
@@ -96,6 +96,12 @@ static int pmi_notifier(struct notifier_
 	struct cpufreq_frequency_table *cbe_freqs;
 	u8 node;
 
+	/* Should this really be called for CPUFREQ_ADJUST, CPUFREQ_INCOMPATIBLE
+	 * and CPUFREQ_NOTIFY policy events?)
+	 */
+	if (event == CPUFREQ_START)
+		return 0;
+
 	cbe_freqs = cpufreq_frequency_get_table(policy->cpu);
 	node = cbe_cpu_to_node(policy->cpu);
 
--- a/drivers/acpi/processor_perflib.c
+++ b/drivers/acpi/processor_perflib.c
@@ -64,7 +64,13 @@ static DEFINE_MUTEX(performance_mutex);
  * policy is adjusted accordingly.
  */
 
-static unsigned int ignore_ppc = 0;
+/* ignore_ppc:
+ * -1 -> cpufreq low level drivers not initialized -> _PSS, etc. not called yet
+ *       ignore _PPC
+ *  0 -> cpufreq low level drivers initialized -> consider _PPC values
+ *  1 -> ignore _PPC totally -> forced by user through boot param
+ */
+static unsigned int ignore_ppc = -1;
 module_param(ignore_ppc, uint, 0644);
 MODULE_PARM_DESC(ignore_ppc, "If the frequency of your machine gets wrongly" \
 		 "limited by BIOS, this should help");
@@ -72,7 +78,7 @@ MODULE_PARM_DESC(ignore_ppc, "If the fre
 #define PPC_REGISTERED   1
 #define PPC_IN_USE       2
 
-static int acpi_processor_ppc_status = 0;
+static int acpi_processor_ppc_status;
 
 static int acpi_processor_ppc_notifier(struct notifier_block *nb,
 				       unsigned long event, void *data)
@@ -81,6 +87,11 @@ static int acpi_processor_ppc_notifier(s
 	struct acpi_processor *pr;
 	unsigned int ppc = 0;
 
+	if (event == CPUFREQ_START && ignore_ppc <= 0) {
+		ignore_ppc = 0;
+		return 0;
+	}
+
 	if (ignore_ppc)
 		return 0;
 
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -825,6 +825,9 @@ static int cpufreq_add_dev(struct sys_de
 	policy->user_policy.min = policy->cpuinfo.min_freq;
 	policy->user_policy.max = policy->cpuinfo.max_freq;
 
+	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
+				     CPUFREQ_START, policy);
+
 #ifdef CONFIG_SMP
 
 #ifdef CONFIG_HOTPLUG_CPU
--- a/include/linux/cpufreq.h
+++ b/include/linux/cpufreq.h
@@ -109,6 +109,7 @@ struct cpufreq_policy {
 #define CPUFREQ_ADJUST		(0)
 #define CPUFREQ_INCOMPATIBLE	(1)
 #define CPUFREQ_NOTIFY		(2)
+#define CPUFREQ_START		(3)
 
 #define CPUFREQ_SHARED_TYPE_NONE (0) /* None */
 #define CPUFREQ_SHARED_TYPE_HW	 (1) /* HW does needed coordination */

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 60/62] b43legacy: Release mutex in error handling code
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (58 preceding siblings ...)
  2008-07-31  0:00   ` [patch 59/62] cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already Greg KH
@ 2008-07-31  0:00   ` Greg KH
  2008-07-31  0:00   ` [patch 61/62] ath5k: dont enable MSI, we cannot handle it yet Greg KH
  2008-07-31  0:00   ` [patch 62/62] Fix off-by-one error in iov_iter_advance() Greg KH
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-31  0:00 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Julia Lawall, Michael Buesch, John W. Linville

[-- Attachment #1: b43legacy-release-mutex-in-error-handling-code.patch --]
[-- Type: text/plain, Size: 1225 bytes --]

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

------------------
From: Julia Lawall <julia@diku.dk>

commit 4104863fb4a724723d1d5f3cba9d3c5084087e45 upstream

The mutex is released on a successful return, so it would seem that it
should be released on an error return as well.

The semantic patch finds this problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@@
expression l;
@@

mutex_lock(l);
.. when != mutex_unlock(l)
    when any
    when strict
(
if (...) { ... when != mutex_unlock(l)
+   mutex_unlock(l);
    return ...;
}
|
mutex_unlock(l);
)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/wireless/b43legacy/main.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/net/wireless/b43legacy/main.c
+++ b/drivers/net/wireless/b43legacy/main.c
@@ -3862,10 +3862,10 @@ static int b43legacy_resume(struct ssb_d
 			goto out;
 		}
 	}
-	mutex_unlock(&wl->mutex);
 
 	b43legacydbg(wl, "Device resumed.\n");
 out:
+	mutex_unlock(&wl->mutex);
 	return err;
 }
 

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 61/62] ath5k: dont enable MSI, we cannot handle it yet
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (59 preceding siblings ...)
  2008-07-31  0:00   ` [patch 60/62] b43legacy: Release mutex in error handling code Greg KH
@ 2008-07-31  0:00   ` Greg KH
  2008-07-31  0:00   ` [patch 62/62] Fix off-by-one error in iov_iter_advance() Greg KH
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-31  0:00 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Pavel Roskin, Nick Kossifidis, John W. Linville

[-- Attachment #1: ath5k-don-t-enable-msi-we-cannot-handle-it-yet.patch --]
[-- Type: text/plain, Size: 1445 bytes --]

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

------------------
From: Pavel Roskin <proski@gnu.org>

commit 256b152b005e319f985f50f2a910a75ba0def74f upstream

MSI is a nice thing, but we cannot enable it without changing the
interrupt handler.  If we do it, we break MSI capable hardware,
specifically AR5006 chipset.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/wireless/ath5k/base.c |    5 -----
 1 file changed, 5 deletions(-)

--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -487,9 +487,6 @@ ath5k_pci_probe(struct pci_dev *pdev,
 	/* Set private data */
 	pci_set_drvdata(pdev, hw);
 
-	/* Enable msi for devices that support it */
-	pci_enable_msi(pdev);
-
 	/* Setup interrupt handler */
 	ret = request_irq(pdev->irq, ath5k_intr, IRQF_SHARED, "ath", sc);
 	if (ret) {
@@ -567,7 +564,6 @@ err_ah:
 err_irq:
 	free_irq(pdev->irq, sc);
 err_free:
-	pci_disable_msi(pdev);
 	ieee80211_free_hw(hw);
 err_map:
 	pci_iounmap(pdev, mem);
@@ -589,7 +585,6 @@ ath5k_pci_remove(struct pci_dev *pdev)
 	ath5k_detach(pdev, hw);
 	ath5k_hw_detach(sc->ah);
 	free_irq(pdev->irq, sc);
-	pci_disable_msi(pdev);
 	pci_iounmap(pdev, sc->iobase);
 	pci_release_region(pdev, 0);
 	pci_disable_device(pdev);

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* [patch 62/62] Fix off-by-one error in iov_iter_advance()
  2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
                     ` (60 preceding siblings ...)
  2008-07-31  0:00   ` [patch 61/62] ath5k: dont enable MSI, we cannot handle it yet Greg KH
@ 2008-07-31  0:00   ` Greg KH
  61 siblings, 0 replies; 64+ messages in thread
From: Greg KH @ 2008-07-31  0:00 UTC (permalink / raw)
  To: linux-kernel, stable, jejb
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, Chris Wedgwood, Michael Krufky,
	Chuck Ebbert, Domenico Andreoli, Willy Tarreau,
	Rodrigo Rubira Branco, Jake Edge, Eugene Teo, torvalds, akpm,
	alan, Nick Piggin

[-- Attachment #1: fix-off-by-one-error-in-iov_iter_advance.patch --]
[-- Type: text/plain, Size: 1464 bytes --]

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

------------------
From: Linus Torvalds <torvalds@linux-foundation.org>

commit 94ad374a0751f40d25e22e036c37f7263569d24c upstream

The iov_iter_advance() function would look at the iov->iov_len entry
even though it might have iterated over the whole array, and iov was
pointing past the end.  This would cause DEBUG_PAGEALLOC to trigger a
kernel page fault if the allocation was at the end of a page, and the
next page was unallocated.

The quick fix is to just change the order of the tests: check that there
is any iovec data left before we check the iov entry itself.

Thanks to Alexey Dobriyan for finding this case, and testing the fix.

Reported-and-tested-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Nick Piggin <npiggin@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 mm/filemap.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1778,7 +1778,7 @@ void iov_iter_advance(struct iov_iter *i
 		 * The !iov->iov_len check ensures we skip over unlikely
 		 * zero-length segments (without overruning the iovec).
 		 */
-		while (bytes || unlikely(!iov->iov_len && i->count)) {
+		while (bytes || unlikely(i->count && !iov->iov_len)) {
 			int copy;
 
 			copy = min(bytes, iov->iov_len - base);

-- 

^ permalink raw reply	[flat|nested] 64+ messages in thread

* Re: [patch 20/62] x86, suspend, acpi: enter Big Real Mode
  2008-07-30 23:58   ` [patch 20/62] x86, suspend, acpi: enter Big Real Mode Greg KH
@ 2008-08-05 12:15     ` Pavel Machek
  0 siblings, 0 replies; 64+ messages in thread
From: Pavel Machek @ 2008-08-05 12:15 UTC (permalink / raw)
  To: Greg KH
  Cc: linux-kernel, stable, Justin Forbes, Zwane Mwaikambo,
	Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
	Chris Wedgwood, Michael Krufky, Chuck Ebbert, Domenico Andreoli,
	Willy Tarreau, Rodrigo Rubira Branco, Jake Edge, Eugene Teo,
	torvalds, akpm, alan, Rafael J. Wysocki, Thomas Gleixner,
	H. Peter Anvin, Ingo Molnar

On Wed 2008-07-30 16:58:31, Greg KH wrote:
> 2.6.26 -stable review patch.  If anyone has any objections, please let
> us know.
> 
> ------------------
> From: H. Peter Anvin <hpa@zytor.com>
> 
> Commit 3bf2e77453a87c22eb57ed4926760ac131c84459 upstream
> 
> x86, suspend, acpi: enter Big Real Mode
> 
> The explanation for recent video BIOS suspend quirk failures is that
> the VESA BIOS expects to be entered in Big Real Mode (*.limit = 0xffffffff)
> instead of ordinary Real Mode (*.limit = 0xffff).
> 
> This patch changes the segment descriptors to Big Real Mode instead.
> 
> The segment descriptor registers (what Intel calls "segment cache") is
> always active.  The only thing that changes based on CR0.PE is how it is
> *loaded* and the interpretation of the CS flags.
> 
> The segment descriptor registers contain of the following sub-registers:
> selector (the "visible" part), base, limit and flags.  In protected mode
> or long mode, they are loaded from descriptors (or fs.base or gs.base can
> be manipulated directly in long mode.)  In real mode, the only thing
> changed by a segment register load is the selector and the base, where the
> base <- selector << 4.  In particular, *the limit and the flags are not
> changed*.
> 
> As far as the handling of the CS flags: a code segment cannot be writable
> in protected mode, whereas it is "just another segment" in real mode, so
> there is some kind of quirk that kicks in for this when CR0.PE <- 0.  I'm
> not sure if this is accomplished by actually changing the cs.flags register
> or just changing the interpretation; it might be something that is
> CPU-specific.  In particular, the Transmeta CPUs had an explicit "CS is
> writable if you're in real mode" override, so even if you had loaded CS
> with an execute-only segment it'd be writable (but not readable!) on return
> to real mode.  I'm not at all sure if that is how other CPUs behave.
> 
> Signed-off-by: "H. Peter Anvin" <hpa@zytor.com>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>

ACK.

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 64+ messages in thread

end of thread, other threads:[~2008-08-05 16:57 UTC | newest]

Thread overview: 64+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20080730233050.332789722@mini.kroah.org>
2008-07-30 23:49 ` [patch 00/62] 2.6.26-stable review Greg KH
2008-07-30 23:57   ` [patch 01/62] pxamci: trivial fix of DMA alignment register bit clearing Greg KH
2008-07-30 23:57   ` [patch 02/62] udplite: Protection against coverage value wrap-around Greg KH
2008-07-30 23:57   ` [patch 03/62] ipv6: use timer pending Greg KH
2008-07-30 23:57   ` [patch 04/62] ipv6: __KERNEL__ ifdef struct ipv6_devconf Greg KH
2008-07-30 23:57   ` [patch 05/62] hdlcdrv: Fix CRC calculation Greg KH
2008-07-30 23:57   ` [patch 06/62] quota: fix possible infinite loop in quota code Greg KH
2008-07-30 23:58   ` [patch 07/62] isofs: fix minor filesystem corruption Greg KH
2008-07-30 23:58   ` [patch 08/62] KVM: VMX: Fix a wrong usage of vmcs_config Greg KH
2008-07-30 23:58   ` [patch 09/62] KVM: SVM: fix suspend/resume support Greg KH
2008-07-30 23:58   ` [patch 10/62] KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held Greg KH
2008-07-30 23:58   ` [patch 11/62] KVM: VMX: Add ept_sync_context in flush_tlb Greg KH
2008-07-30 23:58   ` [patch 12/62] KVM: x86 emulator: Fix HLT instruction Greg KH
2008-07-30 23:58   ` [patch 13/62] KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction Greg KH
2008-07-30 23:58   ` [patch 14/62] KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts Greg KH
2008-07-30 23:58   ` [patch 15/62] Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error Greg KH
2008-07-30 23:58   ` [patch 16/62] rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall Greg KH
2008-07-30 23:58   ` [patch 17/62] Fix typos from signal_32/64.h merge Greg KH
2008-07-30 23:58   ` [patch 18/62] x86 reboot quirks: add Dell Precision WorkStation T5400 Greg KH
2008-07-30 23:58   ` [patch 19/62] USB: fix usb serial pm counter decrement for disconnected interfaces Greg KH
2008-07-30 23:58   ` [patch 20/62] x86, suspend, acpi: enter Big Real Mode Greg KH
2008-08-05 12:15     ` Pavel Machek
2008-07-30 23:58   ` [patch 21/62] markers: fix duplicate modpost entry Greg KH
2008-07-30 23:58   ` [patch 22/62] Fix build on COMPAT platforms when CONFIG_EPOLL is disabled Greg KH
2008-07-30 23:58   ` [patch 24/62] cpusets: fix wrong domain attr updates Greg KH
2008-07-30 23:58   ` [patch 25/62] x86: fix crash due to missing debugctlmsr on AMD K6-3 Greg KH
2008-07-30 23:58   ` [patch 23/62] proc: fix /proc/*/pagemap Greg KH
2008-07-30 23:58   ` [patch 26/62] ide-cd: fix oops when using growisofs Greg KH
2008-07-30 23:58   ` [patch 27/62] rtc-at91rm9200: avoid spurious irqs Greg KH
2008-07-30 23:58   ` [patch 28/62] vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section Greg KH
2008-07-30 23:58   ` [patch 29/62] ARM: fix fls() for 64-bit arguments Greg KH
2008-07-30 23:58   ` [patch 30/62] tcp: Clear probes_out more aggressively in tcp_ack() Greg KH
2008-07-30 23:58   ` [patch 31/62] sparc64: Fix lockdep issues in LDC protocol layer Greg KH
2008-07-30 23:59   ` [patch 32/62] sparc64: Fix cpufreq notifier registry Greg KH
2008-07-30 23:59   ` [patch 33/62] sparc64: Do not define BIO_VMERGE_BOUNDARY Greg KH
2008-07-30 23:59   ` [patch 34/62] iop-adma: fix platform driver hotplug/coldplug Greg KH
2008-07-30 23:59   ` [patch 35/62] myri10ge: do not forget to setup the single slice pointers Greg KH
2008-07-30 23:59   ` [patch 36/62] myri10ge: do not use mgp->max_intr_slots before loading the firmware Greg KH
2008-07-30 23:59   ` [patch 37/62] ALSA: trident - pause s/pdif output Greg KH
2008-07-30 23:59   ` [patch 38/62] V4L: cx18: Upgrade to newer firmware & update documentation Greg KH
2008-07-30 23:59   ` [patch 39/62] DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009 Greg KH
2008-07-30 23:59   ` [patch 40/62] V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing Greg KH
2008-07-30 23:59   ` [patch 41/62] V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume Greg KH
2008-07-30 23:59   ` [patch 42/62] V4L: uvcvideo: Dont free URB buffers on suspend Greg KH
2008-07-30 23:59   ` [patch 43/62] V4L: uvcvideo: Make input device support optional Greg KH
2008-07-30 23:59   ` [patch 44/62] V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated webcam Greg KH
2008-07-30 23:59   ` [patch 45/62] V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner type Greg KH
2008-07-30 23:59   ` [patch 46/62] V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1 Greg KH
2008-07-30 23:59   ` [patch 47/62] DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default Greg KH
2008-07-30 23:59   ` [patch 48/62] DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not stream Greg KH
2008-07-30 23:59   ` [patch 49/62] DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues Greg KH
2008-07-30 23:59   ` [patch 50/62] DVB: cx23885: SRAM changes for the 885 and 887 silicon parts Greg KH
2008-07-30 23:59   ` [patch 51/62] x86: fix kernel_physical_mapping_init() for large x86 systems Greg KH
2008-07-30 23:59   ` [patch 52/62] eCryptfs: use page_alloc not kmalloc to get a page of memory Greg KH
2008-07-30 23:59   ` [patch 53/62] UML - Fix boot crash Greg KH
2008-07-30 23:59   ` [patch 54/62] ixgbe: remove device ID for unsupported device Greg KH
2008-07-30 23:59   ` [patch 55/62] mpc52xx_psc_spi: fix block transfer Greg KH
2008-07-30 23:59   ` [patch 56/62] tmpfs: fix kernel BUG in shmem_delete_inode Greg KH
2008-07-30 23:59   ` [patch 57/62] markers: fix markers read barrier for multiple probes Greg KH
2008-07-31  0:00   ` [patch 58/62] VFS: increase pseudo-filesystem block size to PAGE_SIZE Greg KH
2008-07-31  0:00   ` [patch 59/62] cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already Greg KH
2008-07-31  0:00   ` [patch 60/62] b43legacy: Release mutex in error handling code Greg KH
2008-07-31  0:00   ` [patch 61/62] ath5k: dont enable MSI, we cannot handle it yet Greg KH
2008-07-31  0:00   ` [patch 62/62] Fix off-by-one error in iov_iter_advance() Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox