Bladeren bron

linux-rp: Add missing vesa-tng patch for 2.6.19+2.6.20-rc4 for qemux86

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@1156 311d38ba-8fff-0310-9ca6-ca027cbcb966
Richard Purdie 19 jaren geleden
bovenliggende
commit
97453a1b81

+ 208 - 156
meta/packages/linux/linux-rp-2.6.19+2.6.20-rc4/vesafb-tng-1.0-rc2-git-20060629.patch → meta/packages/linux/linux-rp-2.6.19+2.6.20-rc4/vesafb-tng-1.0-rc2-2.6.20-rc2.patch

@@ -1,22 +1,7 @@
-# Patch generated against a6047eef1c465c38aacfbdab193161b3f0cd144
----
-# Documentation/fb/vesafb.txt   |  250 ++++--
-# arch/i386/boot/video.S        |   12 
-# drivers/video/Kconfig         |   56 +
-# drivers/video/Makefile        |    6 
-# drivers/video/fbmem.c         |    1 
-# drivers/video/modedb.c        |    1 
-# drivers/video/vesafb-thread.c |  727 +++++++++++++++++++
-# drivers/video/vesafb-tng.c    | 1598 ++++++++++++++++++++++++++++++++++++++++++
-# include/linux/sched.h         |    2 
-# include/video/vesa.h          |  150 +++
-# kernel/fork.c                 |   35 
-# mm/memory.c                   |    1 
-# mm/mmap.c                     |    1 
-# 13 files changed, 2748 insertions(+), 92 deletions(-)
-#
---- linux-2.6.17.orig/Documentation/fb/vesafb.txt
-+++ linux-2.6.17/Documentation/fb/vesafb.txt
+diff --git a/Documentation/fb/vesafb.txt b/Documentation/fb/vesafb.txt
+index ee277dd..93d6e6e 100644
+--- a/Documentation/fb/vesafb.txt
++++ b/Documentation/fb/vesafb.txt
 @@ -2,16 +2,18 @@
  What is vesafb?
  ===============
@@ -94,7 +79,7 @@
   
   Linux_kernel_mode_number = VESA_mode_number + 0x200
  
-@@ -56,15 +67,15 @@ So the table for the Kernel mode numbers
+@@ -56,15 +67,15 @@ So the table for the Kernel mode numbers are:
  
      | 640x480  800x600  1024x768 1280x1024
  ----+-------------------------------------
@@ -118,7 +103,7 @@
  
  If this does not work, this might be because your BIOS does not support
  linear framebuffers or because it does not support this mode at all.
-@@ -72,11 +83,12 @@ Even if your board does, it might be the
+@@ -72,11 +83,12 @@ Even if your board does, it might be the BIOS which does not.  VESA BIOS
  Extensions v2.0 are required, 1.2 is NOT sufficient.  You will get a
  "bad mode number" message if something goes wrong.
  
@@ -132,7 +117,7 @@
  X11
  ===
  
-@@ -84,98 +96,164 @@ XF68_FBDev should work just fine, but it
+@@ -84,98 +96,164 @@ XF68_FBDev should work just fine, but it is non-accelerated.  Running
  another (accelerated) X-Server like XF86_SVGA might or might not work.
  It depends on X-Server and graphics board.
  
@@ -152,13 +137,13 @@
 +With VBE 3.0 compatible BIOSes and vesafb-tng it is possible to change
 +the refresh rate either at boot time (by specifying the @<rr> part of
 +the mode name) or later, using the fbset utility.
++
++If you want to use the default BIOS refresh rate while switching modes
++on a running system, set pixclock to 0.
  
 - * configure and load the DOS-Tools for your the graphics board (if
 -   available) and boot linux with loadlin.
 - * use a native driver (matroxfb/atyfb) instead if vesafb.  If none
-+If you want to use the default BIOS refresh rate while switching modes
-+on a running system, set pixclock to 0.
-+
 +With VBE 2.0 there is no way to change the mode timings after booting
 +Linux. If you are not happy with the 60 Hz refresh rate, you have
 +the following options:
@@ -189,25 +174,15 @@
 -to pan the display.  It is turned off by default because it
 -seems not to work with some BIOS versions, but there are options
 -to turn it on.
-+The VESA BIOS provides protected mode interface for changing some parameters.
-+vesafb can use it for palette changes and to pan the display. It is turned
-+off by default because it seems not to work with some BIOS versions, but
-+there are options to turn it on.
- 
+-
 -You can pass options to vesafb using "video=vesafb:option" on
 -the kernel command line.  Multiple options should be separated
 -by comma, like this: "video=vesafb:ypan,invers"
-+You can pass options to vesafb using "video=vesafb:option" on the kernel
-+command line. Multiple options should be separated by a comma, like this:
-+"video=vesafb:ypan,1024x768-32@85"
- 
+-
 -Accepted options:
-+Note that vesafb-tng still uses the "video=vesafb:option" format of the
-+kernel command line video parameter. "video=vesafb-tng:xxx" is incorrect.
- 
+-
 -invers	no comment...
-+Accepted options (both vesafb and vesafb-tng):
- 
+-
 -ypan	enable display panning using the VESA protected mode 
 -	interface.  The visible screen is just a window of the
 -	video memory, console scrolling is done by changing the
@@ -219,6 +194,43 @@
 -	kontra: * scrolling only parts of the screen causes some
 -		  ugly flicker effects (boot logo flickers for
 -		  example).
+-
+-ywrap	Same as ypan, but assumes your gfx board can wrap-around 
+-	the video memory (i.e. starts reading from top if it
+-	reaches the end of video memory).  Faster than ypan.
+-
+-redraw	scroll by redrawing the affected part of the screen, this
+-	is the safe (and slow) default.
+-
+-
+-vgapal	Use the standard vga registers for palette changes.
+-	This is the default.
+-pmipal	Use the protected mode interface for palette changes.
+-
+-mtrr:n	setup memory type range registers for the vesafb framebuffer
+-	where n:
+-	      0 - disabled (equivalent to nomtrr) (default)
+-	      1 - uncachable
+-	      2 - write-back
+-	      3 - write-combining
+-	      4 - write-through
+-
+-	If you see the following in dmesg, choose the type that matches the
+-	old one. In this example, use "mtrr:2".
++The VESA BIOS provides protected mode interface for changing some parameters.
++vesafb can use it for palette changes and to pan the display. It is turned
++off by default because it seems not to work with some BIOS versions, but
++there are options to turn it on.
++
++You can pass options to vesafb using "video=vesafb:option" on the kernel
++command line. Multiple options should be separated by a comma, like this:
++"video=vesafb:ypan,1024x768-32@85"
++
++Note that vesafb-tng still uses the "video=vesafb:option" format of the
++kernel command line video parameter. "video=vesafb-tng:xxx" is incorrect.
++
++Accepted options (both vesafb and vesafb-tng):
++
 +ypan    Enable display panning using the VESA protected mode interface
 +        The visible screen is just a window of the video memory,
 +        console scrolling is done by changing the start of the window.
@@ -229,34 +241,19 @@
 +        con:    * scrolling only parts of the screen causes some
 +                  ugly flicker effects (boot logo flickers for
 +                  example).
- 
--ywrap	Same as ypan, but assumes your gfx board can wrap-around 
--	the video memory (i.e. starts reading from top if it
--	reaches the end of video memory).  Faster than ypan.
++
 +ywrap   Same as ypan, but assumes your gfx board can wrap-around the video
 +        memory (i.e. starts reading from top if it reaches the end of
 +        video memory). Faster than ypan.
- 
--redraw	scroll by redrawing the affected part of the screen, this
--	is the safe (and slow) default.
++
 +redraw  Scroll by redrawing the affected part of the screen, this is the
 +        safe (and slow) default.
- 
++
 +vgapal  Use the standard VGA registers for palette changes.
- 
--vgapal	Use the standard vga registers for palette changes.
--	This is the default.
--pmipal	Use the protected mode interface for palette changes.
++
 +pmipal  Use the protected mode interface for palette changes.
 +        This is the default is the protected mode interface is available.
- 
--mtrr:n	setup memory type range registers for the vesafb framebuffer
--	where n:
--	      0 - disabled (equivalent to nomtrr) (default)
--	      1 - uncachable
--	      2 - write-back
--	      3 - write-combining
--	      4 - write-through
++
 +mtrr:n  Setup memory type range registers for the vesafb framebuffer
 +        where n:
 +              0 - disabled (equivalent to nomtrr) (default)
@@ -264,9 +261,7 @@
 +              2 - write-back
 +              3 - write-combining
 +              4 - write-through
- 
--	If you see the following in dmesg, choose the type that matches the
--	old one. In this example, use "mtrr:2".
++
 +        If you see the following in dmesg, choose the type that matches
 +        the old one. In this example, use "mtrr:2".
  ...
@@ -291,8 +286,7 @@
  
 -Have fun!
 +Options accepted only by vesafb-tng:
- 
--  Gerd
++
 +<mode>  The mode you want to set, in the standard modedb format. Refer to
 +        modedb.txt for a detailed description. If you specify a mode that is
 +        not supported by your board's BIOS, vesafb-tng will attempt to set a
@@ -337,7 +331,8 @@
 +maxhf:n     Maximum horizontal frequency (in kHz).
 +maxvf:n     Maximum vertical frequency (in Hz).
 +maxclk:n    Maximum pixel clock (in MHz).
-+
+ 
+-  Gerd
 +Have fun!
  
  --
@@ -352,9 +347,11 @@
 +Extended documentation for vm86, VBE 3.0 and vesafb-tng by
 +Michal Januszewski <spock@gentoo.org>
 +
---- linux-2.6.17.orig/arch/i386/boot/video.S
-+++ linux-2.6.17/arch/i386/boot/video.S
-@@ -165,10 +165,12 @@ basret:	ret
+diff --git a/arch/i386/boot/video.S b/arch/i386/boot/video.S
+index 2c5b5cc..2c2d4b5 100644
+--- a/arch/i386/boot/video.S
++++ b/arch/i386/boot/video.S
+@@ -163,10 +163,12 @@ basret:	ret
  # parameters in the default 80x25 mode -- these are set directly,
  # because some very obscure BIOSes supply insane values.
  mode_params:
@@ -367,7 +364,7 @@
  	movb	$0x03, %ah			# Read cursor position
  	xorb	%bh, %bh
  	int	$0x10
-@@ -201,6 +203,7 @@ mopar2: movb	%al, %fs:(PARAM_VIDEO_LINES
+@@ -199,6 +201,7 @@ mopar2: movb	%al, %fs:(PARAM_VIDEO_LINES)
  	ret
  
  #ifdef CONFIG_VIDEO_SELECT
@@ -375,7 +372,7 @@
  # Fetching of VESA frame buffer parameters
  mopar_gr:
  	leaw	modelist+1024, %di
-@@ -283,6 +286,7 @@ dac_done:
+@@ -281,6 +284,7 @@ dac_done:
  	movw	%es, %fs:(PARAM_VESAPM_SEG)
  	movw	%di, %fs:(PARAM_VESAPM_OFF)
  no_pm:	ret
@@ -383,7 +380,7 @@
  
  # The video mode menu
  mode_menu:
-@@ -497,10 +501,12 @@ mode_set:
+@@ -495,10 +499,12 @@ mode_set:
  	
  	cmpb	$VIDEO_FIRST_V7>>8, %ah
  	jz	setv7
@@ -398,7 +395,7 @@
  	orb	%ah, %ah
  	jz	setmenu
  	
-@@ -572,6 +578,7 @@ setr1:	lodsw
+@@ -570,6 +576,7 @@ setr1:	lodsw
  	movw	-4(%si), %ax			# Fetch mode ID
  	jmp	_m_s
  
@@ -406,7 +403,7 @@
  check_vesa:
  	leaw	modelist+1024, %di
  	subb	$VIDEO_FIRST_VESA>>8, %bh
-@@ -605,6 +612,7 @@ check_vesa:
+@@ -603,6 +610,7 @@ check_vesa:
  	ret
  
  _setbad:	jmp	setbad          	# Ugly...
@@ -414,9 +411,24 @@
  
  # Recalculate vertical display end registers -- this fixes various
  # inconsistencies of extended modes on many adapters. Called when
---- linux-2.6.17.orig/drivers/video/Kconfig
-+++ linux-2.6.17/drivers/video/Kconfig
-@@ -472,8 +472,22 @@ config FB_TGA
+diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
+index 1393523..8a05f95 100644
+--- a/drivers/char/sysrq.c
++++ b/drivers/char/sysrq.c
+@@ -240,7 +240,7 @@ static void send_sig_all(int sig)
+ 	struct task_struct *p;
+ 
+ 	for_each_process(p) {
+-		if (p->mm && !is_init(p))
++		if (p->mm && !is_init(p) && !(p->flags & PF_BORROWED_MM))
+ 			/* Not swapper, init nor kernel thread */
+ 			force_sig(sig, p);
+ 	}
+diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
+index 4e83f01..ae122fd 100644
+--- a/drivers/video/Kconfig
++++ b/drivers/video/Kconfig
+@@ -547,8 +547,22 @@ config FB_TGA
  	  cards. Say Y if you have one of those.
  
  config FB_VESA
@@ -441,7 +453,7 @@
  	select FB_CFB_FILLRECT
  	select FB_CFB_COPYAREA
  	select FB_CFB_IMAGEBLIT
-@@ -481,7 +495,43 @@ config FB_VESA
+@@ -557,7 +571,43 @@ config FB_VESA
  	  This is the frame buffer device driver for generic VESA 2.0
  	  compliant graphic cards. The older VESA 1.2 cards are not supported.
  	  You will get a boot time penguin logo at no additional cost. Please
@@ -459,14 +471,14 @@
 +	select FB_CFB_COPYAREA
 +	select FB_CFB_IMAGEBLIT
 +	help
-+	  This is the frame buffer device driver for generic VESA 2.0 
-+	  compliant graphic cards. It is capable of taking advantage of 
-+	  VBE 3.0 features. With this driver you will be able to adjust
-+	  the refresh rate (VBE 3.0 compliant boards only) and change
-+	  the graphic mode on-the-fly.
-+	  
-+	  You will also get a boot time penguin logo at no additional cost. Please
-+	  read <file:Documentation/fb/vesafb.txt>.
++	  This is an enhanced generic frame buffer device driver for
++	  VBE 2.0 compliant graphic cards. It can take advantage of VBE 3.0
++	  features (refresh rate adjustment) when these are available.
++	  The driver also makes it possible to change the video mode
++	  on the fly and to switch back to text mode when it's unloaded.
++
++	  If the driver is compiled as a module, the module will be called
++	  vesafb-tng.
 +
 +endchoice
 +
@@ -484,12 +496,14 @@
 +	depends on FB_VESA
 +	default y
  
- config VIDEO_SELECT
- 	bool
---- linux-2.6.17.orig/drivers/video/Makefile
-+++ linux-2.6.17/drivers/video/Makefile
-@@ -97,7 +97,11 @@ obj-$(CONFIG_FB_IMX)              += imx
- obj-$(CONFIG_FB_S3C2410)	  += s3c2410fb.o
+ config FB_IMAC
+ 	bool "Intel-based Macintosh Framebuffer Support"
+diff --git a/drivers/video/Makefile b/drivers/video/Makefile
+index 309a26d..e57b0e7 100644
+--- a/drivers/video/Makefile
++++ b/drivers/video/Makefile
+@@ -102,7 +102,11 @@ obj-$(CONFIG_FB_PNX4008_DUM_RGB)  += pnx4008/
+ obj-$(CONFIG_FB_IBM_GXT4500)	  += gxt4500.o
  
  # Platform or fallback drivers go here
 -obj-$(CONFIG_FB_VESA)             += vesafb.o
@@ -498,12 +512,14 @@
 +else
 +  obj-$(CONFIG_FB_VESA)		  += vesafb-thread.o vesafb-tng.o
 +endif
+ obj-$(CONFIG_FB_IMAC)             += imacfb.o
  obj-$(CONFIG_FB_VGA16)            += vga16fb.o vgastate.o
  obj-$(CONFIG_FB_OF)               += offb.o
- 
---- linux-2.6.17.orig/drivers/video/fbmem.c
-+++ linux-2.6.17/drivers/video/fbmem.c
-@@ -1438,6 +1438,7 @@ fbmem_init(void)
+diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
+index 3cfea31..bfb39cc 100644
+--- a/drivers/video/fbmem.c
++++ b/drivers/video/fbmem.c
+@@ -1408,6 +1408,7 @@ fbmem_init(void)
  		printk(KERN_WARNING "Unable to create fb class; errno = %ld\n", PTR_ERR(fb_class));
  		fb_class = NULL;
  	}
@@ -511,9 +527,11 @@
  	return 0;
  }
  
---- linux-2.6.17.orig/drivers/video/modedb.c
-+++ linux-2.6.17/drivers/video/modedb.c
-@@ -671,6 +671,7 @@ void fb_var_to_videomode(struct fb_video
+diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
+index 5df41f6..f838a53 100644
+--- a/drivers/video/modedb.c
++++ b/drivers/video/modedb.c
+@@ -674,6 +674,7 @@ void fb_var_to_videomode(struct fb_videomode *mode,
  {
  	u32 pixclock, hfreq, htotal, vtotal;
  
@@ -521,9 +539,17 @@
  	mode->name = NULL;
  	mode->xres = var->xres;
  	mode->yres = var->yres;
+@@ -1025,3 +1026,4 @@ EXPORT_SYMBOL(fb_find_best_mode);
+ EXPORT_SYMBOL(fb_find_nearest_mode);
+ EXPORT_SYMBOL(fb_videomode_to_modelist);
+ EXPORT_SYMBOL(fb_find_mode);
++EXPORT_SYMBOL(fb_destroy_modelist);
+diff --git a/drivers/video/vesafb-thread.c b/drivers/video/vesafb-thread.c
+new file mode 100644
+index 0000000..543e202
 --- /dev/null
-+++ linux-2.6.17/drivers/video/vesafb-thread.c
-@@ -0,0 +1,727 @@
++++ b/drivers/video/vesafb-thread.c
+@@ -0,0 +1,751 @@
 +/*
 + * Framebuffer driver for VBE 2.0+ compliant graphic boards.
 + * Kernel thread and vm86 routines.
@@ -532,8 +558,6 @@
 + *
 + */
 +
-+#include <linux/config.h>
-+#include <linux/slab.h>
 +#include <linux/workqueue.h>
 +#include <linux/completion.h>
 +#include <linux/module.h>
@@ -542,6 +566,7 @@
 +#include <linux/mm.h>
 +#include <linux/delay.h>
 +#include <linux/signal.h>
++#include <linux/freezer.h>
 +#include <linux/suspend.h>
 +#include <linux/unistd.h>
 +#include <video/vesa.h>
@@ -554,9 +579,7 @@
 +#include <asm/mmu_context.h>
 +#include "edid.h"
 +
-+#ifdef MODULE
-+int errno;
-+#endif
++static int errno;
 +
 +static DECLARE_COMPLETION(vesafb_th_completion);
 +static DECLARE_MUTEX(vesafb_task_list_sem);
@@ -566,9 +589,6 @@
 +static struct vm86_struct vm86;
 +static int vesafb_pid = 0;
 +
-+_syscall3(int,ioperm,unsigned long, a, unsigned long, b, unsigned long, c);
-+_syscall1(int,vm86old,struct vm86_struct __user*, v86);
-+
 +#define DEFAULT_VM86_FLAGS (IF_MASK | IOPL_MASK)
 +#define VM86_PUSHW(x)					\
 +do { 							\
@@ -601,6 +621,36 @@
 +
 +#define FLAG_D 		(1 << 10)
 +
++/* Syscalls used by the vesafb thread */
++static int vm86old(struct vm86_struct __user* v86)
++{
++	long res;
++	__asm__ volatile ("push %%ebx; movl %2, %%ebx ; int $0x80 ; pop %%ebx"
++			: "=a" (res)
++			: "0" (__NR_vm86old), "ri" ((long)(v86)) : "memory");
++
++	if ((unsigned long)(res) >= (unsigned long)(-MAX_ERRNO)) {
++		errno = -res;
++		res = -1;
++	}
++	return (int)res;
++}
++
++static int ioperm(unsigned long a, unsigned long b, unsigned long c)
++{
++	long res;
++	__asm__ volatile ("push %%ebx; movl %2, %%ebx ; int $0x80 ; pop %%ebx"
++			: "=a" (res)
++			: "0" (__NR_ioperm), "ri" ((long)(a)), "c" ((long)(b)),
++			  "d" ((long)(c)) : "memory");
++
++	if ((unsigned long)(res) >= (unsigned long)(-MAX_ERRNO)) {
++		errno = -res;
++		res = -1;
++	}
++	return (int)res;
++}
++
 +/* Segment prefix opcodes */
 +enum {
 +	P_CS = 0x2e,
@@ -962,7 +1012,7 @@
 +	struct mm_struct *mm = current->mm;
 +	int ret = 0;
 +
-+	vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);
++	vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
 +	if (!vma)
 +		return -ENOMEM;
 +	memset(vma, 0, sizeof(*vma));
@@ -1251,9 +1301,12 @@
 +MODULE_LICENSE("GPL");
 +MODULE_AUTHOR("Michal Januszewski");
 +
+diff --git a/drivers/video/vesafb-tng.c b/drivers/video/vesafb-tng.c
+new file mode 100644
+index 0000000..b4d4394
 --- /dev/null
-+++ linux-2.6.17/drivers/video/vesafb-tng.c
-@@ -0,0 +1,1598 @@
++++ b/drivers/video/vesafb-tng.c
+@@ -0,0 +1,1586 @@
 +/*
 + * Framebuffer driver for VBE 2.0+ compliant graphic boards
 + *
@@ -2027,16 +2080,10 @@
 +	int clen = 0, i;
 +
 +	for (i = 0; i < vbe_modes_cnt; i++) {
-+		clen += sprintf(buf + clen, "%dx%d-%d\n", vbe_modes[i].x_res,
-+				vbe_modes[i].y_res, vbe_modes[i].depth);
-+	}
-+	*start = buf + offset;
-+
-+	if (clen > offset) {
-+		clen -= offset;
-+	} else {
-+		clen = 0;
++		clen += min(snprintf(buf + clen, len - clen, "%dx%d-%d\n", vbe_modes[i].x_res,
++				vbe_modes[i].y_res, vbe_modes[i].depth), len - clen);
 +	}
++	*eof = 1;
 +	return clen;
 +}
 +
@@ -2045,25 +2092,19 @@
 +{
 +	int clen = 0;
 +
-+	clen += sprintf(buf + clen, "Version:    %d.%d\n",
++	clen += min(snprintf(buf + clen, len, "Version:    %d.%d\n",
 +			((vbe_ib.vbe_version & 0xff00) >> 8),
-+			vbe_ib.vbe_version & 0xff);
-+	clen += sprintf(buf + clen, "Vendor:     %s\n",
-+			(char*)vbe_ib.oem_vendor_name_ptr);
-+	clen += sprintf(buf + clen, "Product:    %s\n",
-+			(char*)vbe_ib.oem_product_name_ptr);
-+	clen += sprintf(buf + clen, "OEM rev:    %s\n",
-+			(char*)vbe_ib.oem_product_rev_ptr);
-+	clen += sprintf(buf + clen, "OEM string: %s\n",
-+			(char*)vbe_ib.oem_string_ptr);
-+
-+	*start = buf + offset;
-+
-+	if (clen > offset) {
-+		clen -= offset;
-+	} else {
-+		clen = 0;
-+	}
++			vbe_ib.vbe_version & 0xff), len);
++	clen += min(snprintf(buf + clen, len - clen, "Vendor:     %s\n",
++			(char*)vbe_ib.oem_vendor_name_ptr), len - clen);
++	clen += min(snprintf(buf + clen, len - clen, "Product:    %s\n",
++			(char*)vbe_ib.oem_product_name_ptr), len - clen);
++	clen += min(snprintf(buf + clen, len - clen, "OEM rev:    %s\n",
++			(char*)vbe_ib.oem_product_rev_ptr), len - clen);
++	clen += min(snprintf(buf + clen, len - clen, "OEM string: %s\n",
++			(char*)vbe_ib.oem_string_ptr), len - clen);
++
++	*eof = 1;
 +	return clen;
 +}
 +
@@ -2817,8 +2858,8 @@
 +MODULE_PARM_DESC(vgapal,"bool: set palette using VGA registers");
 +module_param_named(pmipal, pmi_setpal, bool, 0);
 +MODULE_PARM_DESC(pmipal,"bool: set palette using PMI calls");
-+module_param_named(nomtrr, mtrr, invbool, 0);
-+MODULE_PARM_DESC(nomtrr,"bool: disable use of MTRR registers");
++module_param(mtrr, uint, 0);
++MODULE_PARM_DESC(mtrr,"Memory Type Range Registers setting. Use 0 to disable.");
 +module_param(blank, bool, 1);
 +MODULE_PARM_DESC(blank,"bool: enable hardware blanking");
 +module_param(nocrtc, bool, 0);
@@ -2852,9 +2893,11 @@
 +MODULE_AUTHOR("Michal Januszewski");
 +MODULE_DESCRIPTION("Framebuffer driver for VBE2.0+ compliant graphics boards");
 +
---- linux-2.6.17.orig/include/linux/sched.h
-+++ linux-2.6.17/include/linux/sched.h
-@@ -1159,6 +1159,8 @@ extern void mmput(struct mm_struct *);
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 4463735..7283e48 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -1390,6 +1390,8 @@ extern void mmput(struct mm_struct *);
  extern struct mm_struct *get_task_mm(struct task_struct *task);
  /* Remove the current tasks stale references to the old mm_struct */
  extern void mm_release(struct task_struct *, struct mm_struct *);
@@ -2863,8 +2906,11 @@
  
  extern int  copy_thread(int, unsigned long, unsigned long, unsigned long, struct task_struct *, struct pt_regs *);
  extern void flush_thread(void);
+diff --git a/include/video/vesa.h b/include/video/vesa.h
+new file mode 100644
+index 0000000..bb5abcf
 --- /dev/null
-+++ linux-2.6.17/include/video/vesa.h
++++ b/include/video/vesa.h
 @@ -0,0 +1,150 @@
 +#if 0
 +#define DPRINTK(fmt, args...)	printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , \
@@ -3016,17 +3062,19 @@
 +	struct vesafb_crtc_ib crtc;
 +};
 +
---- linux-2.6.17.orig/kernel/fork.c
-+++ linux-2.6.17/kernel/fork.c
-@@ -97,6 +97,7 @@ kmem_cache_t *fs_cachep;
+diff --git a/kernel/fork.c b/kernel/fork.c
+index fc723e5..dc8f93b 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -100,6 +100,7 @@ struct kmem_cache *fs_cachep;
  
  /* SLAB cache for vm_area_struct structures */
- kmem_cache_t *vm_area_cachep;
+ struct kmem_cache *vm_area_cachep;
 +EXPORT_SYMBOL_GPL(vm_area_cachep);
  
  /* SLAB cache for mm_struct structures (tsk->mm) */
- static kmem_cache_t *mm_cachep;
-@@ -383,6 +384,40 @@ void mmput(struct mm_struct *mm)
+ static struct kmem_cache *mm_cachep;
+@@ -399,6 +400,40 @@ void mmput(struct mm_struct *mm)
  EXPORT_SYMBOL_GPL(mmput);
  
  /**
@@ -3067,9 +3115,11 @@
   * get_task_mm - acquire a reference to the task's mm
   *
   * Returns %NULL if the task has no mm.  Checks PF_BORROWED_MM (meaning
---- linux-2.6.17.orig/mm/memory.c
-+++ linux-2.6.17/mm/memory.c
-@@ -1162,6 +1162,7 @@ int zeromap_page_range(struct vm_area_st
+diff --git a/mm/memory.c b/mm/memory.c
+index 563792f..a9519ea 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -1193,6 +1193,7 @@ int zeromap_page_range(struct vm_area_struct *vma,
  	} while (pgd++, addr = next, addr != end);
  	return err;
  }
@@ -3077,9 +3127,11 @@
  
  pte_t * fastcall get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl)
  {
---- linux-2.6.17.orig/mm/mmap.c
-+++ linux-2.6.17/mm/mmap.c
-@@ -1996,6 +1996,7 @@ int insert_vm_struct(struct mm_struct * 
+diff --git a/mm/mmap.c b/mm/mmap.c
+index 9717337..6fa5b1c 100644
+--- a/mm/mmap.c
++++ b/mm/mmap.c
+@@ -2024,6 +2024,7 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
  	vma_link(mm, vma, prev, rb_link, rb_parent);
  	return 0;
  }

+ 1 - 0
meta/packages/linux/linux-rp_2.6.19+2.6.20-rc4.bb

@@ -44,6 +44,7 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.20-rc4.
            file://pxa-serial-hack.patch;patch=1;status=hack \
            file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
            file://squashfs3.0-2.6.15.patch;patch=1;status=external \
+           file://vesafb-tng-1.0-rc2-2.6.20-rc2.patch;patch=1;status=external \
            file://defconfig-c7x0 \
            file://defconfig-hx2000 \
            file://defconfig-collie \