rpms/kernel/devel patch-2.6.31-rc6-git3.bz2.sign, NONE, 1.1.2.2 .cvsignore, 1.1014.2.23, 1.1014.2.24 Makefile.config, 1.70.6.2, 1.70.6.3 config-generic, 1.238.6.34, 1.238.6.35 config-sparc64-generic, 1.21.6.6, 1.21.6.7 config-x86-generic, 1.68.6.17, 1.68.6.18 config-x86_64-generic, 1.68.2.15, 1.68.2.16 kernel.spec, 1.1294.2.52, 1.1294.2.53 linux-2.6.31-lirc.patch, 1.2.2.4, 1.2.2.5 perf, 1.2.2.2, 1.2.2.3 sources, 1.976.2.24, 1.976.2.25 upstream, 1.888.2.23, 1.888.2.24 xen.pvops.patch, 1.1.2.33, 1.1.2.34 xen.pvops.post.patch, 1.1.2.20, 1.1.2.21 config-powerpc64-kdump, 1.1, NONE

myoung myoung at fedoraproject.org
Tue Aug 18 19:26:56 UTC 2009


Author: myoung

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3035

Modified Files:
      Tag: private-myoung-dom0-branch
	.cvsignore Makefile.config config-generic 
	config-sparc64-generic config-x86-generic 
	config-x86_64-generic kernel.spec linux-2.6.31-lirc.patch perf 
	sources upstream xen.pvops.patch xen.pvops.post.patch 
Added Files:
      Tag: private-myoung-dom0-branch
	patch-2.6.31-rc6-git3.bz2.sign 
Removed Files:
      Tag: private-myoung-dom0-branch
	config-powerpc64-kdump 
Log Message:
Try pvops STACKPROTECTOR fixes. Also adds MCA/MCE support



--- NEW FILE patch-2.6.31-rc6-git3.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info

iD8DBQBKifDWyGugalF9Dw4RArnDAKCV4RB/H5u3asDVNcofTSi7u2aTXwCeP8Fg
fe5RiaqtFA5xWe7P/QgnlwI=
=BQxt
-----END PGP SIGNATURE-----


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.1014.2.23
retrieving revision 1.1014.2.24
diff -u -p -r1.1014.2.23 -r1.1014.2.24
--- .cvsignore	14 Aug 2009 18:31:25 -0000	1.1014.2.23
+++ .cvsignore	18 Aug 2009 19:26:44 -0000	1.1014.2.24
@@ -6,3 +6,4 @@ temp-*
 kernel-2.6.30
 linux-2.6.30.tar.bz2
 patch-2.6.31-rc6.bz2
+patch-2.6.31-rc6-git3.bz2


Index: Makefile.config
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Makefile.config,v
retrieving revision 1.70.6.2
retrieving revision 1.70.6.3
diff -u -p -r1.70.6.2 -r1.70.6.3
--- Makefile.config	13 Aug 2009 18:13:03 -0000	1.70.6.2
+++ Makefile.config	18 Aug 2009 19:26:44 -0000	1.70.6.3
@@ -11,7 +11,7 @@ CONFIGFILES	= \
 	$(CFG)-s390x.config $(CFG)-arm.config \
 	$(CFG)-ppc.config $(CFG)-ppc-smp.config \
 	$(CFG)-sparc64.config  \
-	$(CFG)-ppc64.config $(CFG)-ppc64-kdump.config $(CFG)-ppc64-debug.config \
+	$(CFG)-ppc64.config $(CFG)-ppc64-debug.config \
 	$(CFG)-ia64.config
 
 PLATFORMS	= x86 x86_64 powerpc powerpc32 powerpc64 s390x ia64 sparc64
@@ -86,9 +86,6 @@ kernel-$(VERSION)-sparc64.config: /dev/n
 kernel-$(VERSION)-ppc64.config: config-powerpc64 temp-powerpc-generic
 	perl merge.pl $^ powerpc > $@
 
-kernel-$(VERSION)-ppc64-kdump.config: config-powerpc64-kdump kernel-$(VERSION)-ppc64.config
-	perl merge.pl $^ powerpc > $@
-
 kernel-$(VERSION)-ppc64-debug.config: config-powerpc64 temp-powerpc-debug-generic
 	perl merge.pl $^ powerpc > $@
 


Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-generic,v
retrieving revision 1.238.6.34
retrieving revision 1.238.6.35
diff -u -p -r1.238.6.34 -r1.238.6.35
--- config-generic	13 Aug 2009 18:13:03 -0000	1.238.6.34
+++ config-generic	18 Aug 2009 19:26:45 -0000	1.238.6.35
@@ -3787,6 +3787,7 @@ CONFIG_DEFAULT_RELATIME=y
 CONFIG_INPUT_LIRC=y
 CONFIG_LIRC_DEV=m
 CONFIG_LIRC_BT829=m
+CONFIG_LIRC_ENE0100=m
 CONFIG_LIRC_I2C=m
 CONFIG_LIRC_IGORPLUGUSB=m
 CONFIG_LIRC_IMON=m
@@ -3992,6 +3993,8 @@ CONFIG_IMA_MEASURE_PCR_IDX=10
 CONFIG_IMA_AUDIT=y
 CONFIG_IMA_LSM_RULES=y
 
+CONFIG_LSM_MMAP_MIN_ADDR=65536
+
 # CONFIG_PAGE_POISONING is not set
 
 CONFIG_SLOW_WORK=y


Index: config-sparc64-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-sparc64-generic,v
retrieving revision 1.21.6.6
retrieving revision 1.21.6.7
diff -u -p -r1.21.6.6 -r1.21.6.7
--- config-sparc64-generic	13 Aug 2009 18:13:03 -0000	1.21.6.6
+++ config-sparc64-generic	18 Aug 2009 19:26:45 -0000	1.21.6.7
@@ -199,3 +199,10 @@ CONFIG_LEDS_SUNFIRE=m
 CONFIG_TADPOLE_TS102_UCTRL=m
 
 CONFIG_RCU_FANOUT=64
+
+CONFIG_LIRC_ENE0100=m
+# CONFIG_BATTERY_DS2782 is not set
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SN9C20X_EVDEV=y
+CONFIG_LSM_MMAP_MIN_ADDR=65536
+


Index: config-x86-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-x86-generic,v
retrieving revision 1.68.6.17
retrieving revision 1.68.6.18
diff -u -p -r1.68.6.17 -r1.68.6.18
--- config-x86-generic	10 Aug 2009 21:22:18 -0000	1.68.6.17
+++ config-x86-generic	18 Aug 2009 19:26:45 -0000	1.68.6.18
@@ -115,7 +115,7 @@ CONFIG_PCMCIA_FDOMAIN=m
 CONFIG_SCSI_FUTURE_DOMAIN=m
 CONFIG_SCSI_ADVANSYS=m
 
-# CONFIG_CC_STACKPROTECTOR is not set
+CONFIG_CC_STACKPROTECTOR=y
 
 CONFIG_SECCOMP=y
 


Index: config-x86_64-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-x86_64-generic,v
retrieving revision 1.68.2.15
retrieving revision 1.68.2.16
diff -u -p -r1.68.2.15 -r1.68.2.16
--- config-x86_64-generic	10 Aug 2009 21:22:18 -0000	1.68.2.15
+++ config-x86_64-generic	18 Aug 2009 19:26:45 -0000	1.68.2.16
@@ -243,7 +243,7 @@ CONFIG_SPARSEMEM_VMEMMAP=y
 # CONFIG_BLK_DEV_CS5530 is not set
 # CONFIG_BLK_DEV_CS5535 is not set
 
-# CONFIG_CC_STACKPROTECTOR is not set
+CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_CC_STACKPROTECTOR_ALL is not set
 
 CONFIG_SGI_IOC4=m


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1294.2.52
retrieving revision 1.1294.2.53
diff -u -p -r1.1294.2.52 -r1.1294.2.53
--- kernel.spec	14 Aug 2009 18:31:25 -0000	1.1294.2.52
+++ kernel.spec	18 Aug 2009 19:26:45 -0000	1.1294.2.53
@@ -62,7 +62,7 @@ Summary: The Linux kernel
 # The rc snapshot level
 %define rcrev 6
 # The git snapshot level
-%define gitrev 0
+%define gitrev 3
 # Set rpm version accordingly
 %define rpmversion 2.6.%{upstream_sublevel}
 %endif
@@ -433,7 +433,7 @@ Summary: The Linux kernel
 # Packages that need to be installed before the kernel is, because the %post
 # scripts use them.
 #
-%define kernel_prereq  fileutils, module-init-tools, initscripts >= 8.11.1-1, mkinitrd >= 6.0.61-1, kernel-firmware >= %{rpmversion}-%{pkg_release}, /sbin/new-kernel-pkg, grubby >= 7.0.2-1
+%define kernel_prereq  fileutils, module-init-tools, initscripts >= 8.11.1-1, mkinitrd >= 6.0.61-1, kernel-firmware >= %{rpmversion}-%{pkg_release}, /sbin/new-kernel-pkg
 
 #
 # This macro does requires, provides, conflicts, obsoletes for a kernel package.
@@ -534,7 +534,6 @@ Source50: config-powerpc-generic
 Source51: config-powerpc32-generic
 Source52: config-powerpc32-smp
 Source53: config-powerpc64
-Source54: config-powerpc64-kdump
 
 Source60: config-ia64-generic
 
@@ -544,7 +543,7 @@ Source90: config-sparc64-generic
 
 Source100: config-arm
 
-Source999: perf
+Source200: perf
 
 # Here should be only the patches up to the upstream canonical Linus tree.
 
@@ -1292,8 +1291,8 @@ ApplyPatch hdpvr-ir-enable.patch
 ApplyPatch hid-ignore-all-recent-imon-devices.patch
 
 # Add kernel KSM support
-ApplyPatch linux-2.6-ksm.patch
-ApplyPatch linux-2.6-ksm-updates.patch
+#ApplyPatch linux-2.6-ksm.patch
+#ApplyPatch linux-2.6-ksm-updates.patch
 # Optimize KVM for KSM support
 #ApplyPatch linux-2.6-ksm-kvm.patch
 
@@ -1978,6 +1977,32 @@ fi
 # and build.
 
 %changelog
+* Tue Aug 18 2009 Michael Young <m.a.young at durham.ac.uk>
+- another rebase/master update
+  - try upstream STACKPROTECTOR fixes
+  - MCE/MCA support
+- remove grubby dependency to make it more F11 friendly, it isn't needed
+  until dracut is re-enabled
+
+* Tue Aug 18 2009 Dave Jones <davej at redhat.com>
+- 2.6.31-rc6-git3
+
+* Mon Aug 17 2009 Dave Jones <davej at redhat.com> 2.6.31-0.161.rc6.git2
+- 2.6.31-rc6-git2
+
+* Mon Aug 17 2009 Chuck Ebbert <cebbert at redhat.com>
+- Stop generating the (unused) ppc64-kdump.config file.
+
+* Mon Aug 17 2009 Jarod Wilson <jarod at redhat.com>
+- Add new lirc driver for built-in ENE0100 device on some laptops
+
+* Sun Aug 16 2009 Kyle McMartin <kyle at redhat.com> 2.6.31-0.158.rc6
+- Improve the perf script so it prints something helpful if the
+  perf binary doesn't exist.
+
+* Sat Aug 15 2009 Dave Jones <davej at redhat.com> 2.6.31-0.157.rc6
+- Disable KSM patches on a hunch.  Chasing the "encrypted VGs don't work" bug.
+
 * Fri Aug 14 2009 Michael Young <m.a.young at durham.ac.uk>
 - another rebase/master update
 - make perf a Source file so the kernel builds

linux-2.6.31-lirc.patch:
 MAINTAINERS                           |    9 
 drivers/input/Kconfig                 |    2 
 drivers/input/Makefile                |    2 
 drivers/input/lirc/Kconfig            |  119 +
 drivers/input/lirc/Makefile           |   21 
 drivers/input/lirc/lirc.h             |  100 +
 drivers/input/lirc/lirc_bt829.c       |  383 +++++
 drivers/input/lirc/lirc_dev.c         |  852 ++++++++++++
 drivers/input/lirc/lirc_dev.h         |  184 ++
 drivers/input/lirc/lirc_ene0100.c     |  450 ++++++
 drivers/input/lirc/lirc_ene0100.h     |  100 +
 drivers/input/lirc/lirc_i2c.c         |  537 +++++++
 drivers/input/lirc/lirc_igorplugusb.c |  556 ++++++++
 drivers/input/lirc/lirc_imon.c        | 2297 ++++++++++++++++++++++++++++++++++
 drivers/input/lirc/lirc_it87.c        |  986 ++++++++++++++
 drivers/input/lirc/lirc_it87.h        |  116 +
 drivers/input/lirc/lirc_ite8709.c     |  539 +++++++
 drivers/input/lirc/lirc_mceusb.c      | 1225 ++++++++++++++++++
 drivers/input/lirc/lirc_parallel.c    |  709 ++++++++++
 drivers/input/lirc/lirc_parallel.h    |   26 
 drivers/input/lirc/lirc_sasem.c       |  931 +++++++++++++
 drivers/input/lirc/lirc_serial.c      | 1316 +++++++++++++++++++
 drivers/input/lirc/lirc_sir.c         | 1283 ++++++++++++++++++
 drivers/input/lirc/lirc_streamzap.c   |  777 +++++++++++
 drivers/input/lirc/lirc_ttusbir.c     |  397 +++++
 drivers/input/lirc/lirc_zilog.c       | 1374 ++++++++++++++++++++
 26 files changed, 15291 insertions(+)

Index: linux-2.6.31-lirc.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6.31-lirc.patch,v
retrieving revision 1.2.2.4
retrieving revision 1.2.2.5
diff -u -p -r1.2.2.4 -r1.2.2.5
--- linux-2.6.31-lirc.patch	10 Aug 2009 21:22:19 -0000	1.2.2.4
+++ linux-2.6.31-lirc.patch	18 Aug 2009 19:26:45 -0000	1.2.2.5
@@ -1,6 +1,6 @@
 Linux Infrared Remote Control drivers -- http://www.lirc.org
 
-Last updated: Monday, August 10, 2009
+Last updated: Monday, August 17, 2009
 
 From http://git.wilsonet.com/linux-2.6-lirc.git/
 
@@ -10,15 +10,17 @@ Signed-off-by: Jarod Wilson <jarod at redha
  MAINTAINERS                           |    9 +
  drivers/input/Kconfig                 |    2 +
  drivers/input/Makefile                |    2 +
- drivers/input/lirc/Kconfig            |  112 ++
- drivers/input/lirc/Makefile           |   20 +
+ drivers/input/lirc/Kconfig            |  119 ++
+ drivers/input/lirc/Makefile           |   21 +
  drivers/input/lirc/lirc.h             |  100 ++
  drivers/input/lirc/lirc_bt829.c       |  383 ++++++
- drivers/input/lirc/lirc_dev.c         |  851 ++++++++++++
+ drivers/input/lirc/lirc_dev.c         |  852 ++++++++++++
  drivers/input/lirc/lirc_dev.h         |  184 +++
+ drivers/input/lirc/lirc_ene0100.c     |  450 +++++++
+ drivers/input/lirc/lirc_ene0100.h     |  100 ++
  drivers/input/lirc/lirc_i2c.c         |  537 ++++++++
  drivers/input/lirc/lirc_igorplugusb.c |  556 ++++++++
- drivers/input/lirc/lirc_imon.c        | 2298 +++++++++++++++++++++++++++++++++
+ drivers/input/lirc/lirc_imon.c        | 2297 +++++++++++++++++++++++++++++++++
  drivers/input/lirc/lirc_it87.c        |  986 ++++++++++++++
  drivers/input/lirc/lirc_it87.h        |  116 ++
  drivers/input/lirc/lirc_ite8709.c     |  539 ++++++++
@@ -31,13 +33,13 @@ Signed-off-by: Jarod Wilson <jarod at redha
  drivers/input/lirc/lirc_streamzap.c   |  777 +++++++++++
  drivers/input/lirc/lirc_ttusbir.c     |  397 ++++++
  drivers/input/lirc/lirc_zilog.c       | 1374 ++++++++++++++++++++
- 24 files changed, 14733 insertions(+), 0 deletions(-)
+ 26 files changed, 15291 insertions(+), 0 deletions(-)
 
 diff --git a/MAINTAINERS b/MAINTAINERS
-index b1114cf..eb86f8e 100644
+index 2c4326c..15d1ac5 100644
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -3122,6 +3122,15 @@ W:	http://www.pasemi.com/
+@@ -3130,6 +3130,15 @@ W:	http://www.pasemi.com/
  L:	linuxppc-dev at ozlabs.org
  S:	Supported
  
@@ -78,10 +80,10 @@ index 4c9c745..99e2b5e 100644
 +obj-$(CONFIG_INPUT_LIRC)       += lirc/
 diff --git a/drivers/input/lirc/Kconfig b/drivers/input/lirc/Kconfig
 new file mode 100644
-index 0000000..6ef8622
+index 0000000..ab13cfe
 --- /dev/null
 +++ b/drivers/input/lirc/Kconfig
-@@ -0,0 +1,112 @@
+@@ -0,0 +1,119 @@
 +#
 +# LIRC driver(s) configuration
 +#
@@ -106,6 +108,14 @@ index 0000000..6ef8622
 +	help
 +	  Driver for the IR interface on BT829-based hardware
 +
++config LIRC_ENE0100
++	tristate "ENE KB3924/ENE0100 CIR Port Reciever"
++	depends on LIRC_DEV
++	help
++	  This is a driver for CIR port handled by ENE KB3924 embedded
++	  controller found on some notebooks.
++	  It appears on PNP list as ENE0100.
++
 +config LIRC_I2C
 +	tristate "I2C Based IR Receivers"
 +	depends on LIRC_DEV
@@ -192,14 +202,13 @@ index 0000000..6ef8622
 +	help
 +	  Driver for the Zilog/Hauppauge IR Transmitter, found on
 +	  PVR-150/500, HVR-1200/1250/1700/1800, HD-PVR and other cards
-+
 +endif
 diff --git a/drivers/input/lirc/Makefile b/drivers/input/lirc/Makefile
 new file mode 100644
-index 0000000..7b1386e
+index 0000000..8da7aa9
 --- /dev/null
 +++ b/drivers/input/lirc/Makefile
-@@ -0,0 +1,20 @@
+@@ -0,0 +1,21 @@
 +# Makefile for the lirc drivers.
 +#
 +
@@ -207,6 +216,7 @@ index 0000000..7b1386e
 +
 +obj-$(CONFIG_LIRC_DEV)		+= lirc_dev.o
 +obj-$(CONFIG_LIRC_BT829)	+= lirc_bt829.o
++obj-$(CONFIG_LIRC_ENE0100)	+= lirc_ene0100.o
 +obj-$(CONFIG_LIRC_I2C)		+= lirc_i2c.o
 +obj-$(CONFIG_LIRC_IGORPLUGUSB)	+= lirc_igorplugusb.o
 +obj-$(CONFIG_LIRC_IMON)		+= lirc_imon.o
@@ -717,10 +727,10 @@ index 0000000..0485884
 +MODULE_PARM_DESC(debug, "Debug enabled or not");
 diff --git a/drivers/input/lirc/lirc_dev.c b/drivers/input/lirc/lirc_dev.c
 new file mode 100644
-index 0000000..0510b4e
+index 0000000..fa0d169
 --- /dev/null
 +++ b/drivers/input/lirc/lirc_dev.c
-@@ -0,0 +1,851 @@
+@@ -0,0 +1,852 @@
 +/*
 + * LIRC base driver
 + *
@@ -1019,6 +1029,7 @@ index 0000000..0510b4e
 +	}
 +	init_irctl(ir);
 +	irctls[minor] = ir;
++	d->minor = minor;
 +
 +	if (d->sample_rate) {
 +		ir->jiffies_to_wait = HZ / d->sample_rate;
@@ -1100,8 +1111,8 @@ index 0000000..0510b4e
 +
 +	if (minor < 0 || minor >= MAX_IRCTL_DEVICES) {
 +		printk(KERN_ERR "lirc_dev: lirc_unregister_driver: "
-+		       "\"minor\" must be between 0 and %d!\n",
-+		       MAX_IRCTL_DEVICES-1);
++		       "\"minor (%d)\" must be between 0 and %d!\n",
++		       minor, MAX_IRCTL_DEVICES-1);
 +		return -EBADRQC;
 +	}
 +
@@ -1762,6 +1773,568 @@ index 0000000..8eeffa2
 +			       unsigned long arg);
 +
 +#endif
+diff --git a/drivers/input/lirc/lirc_ene0100.c b/drivers/input/lirc/lirc_ene0100.c
+new file mode 100644
+index 0000000..e6f1617
+--- /dev/null
++++ b/drivers/input/lirc/lirc_ene0100.c
+@@ -0,0 +1,450 @@
++/*
++ * driver for ENE KB3924 CIR (also known as ENE0100)
++ *
++ * Copyright (C) 2009 Maxim Levitsky <maximlevitsky at gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of the
++ * License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
++ * USA
++ */
++
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pnp.h>
++#include <linux/io.h>
++#include <linux/interrupt.h>
++#include "lirc_ene0100.h"
++
++
++static int sample_period = 50;
++static int enable_idle = 1;
++
++static void ene_set_idle(struct ene_device *dev, int idle);
++
++/* read a hardware register */
++static u8 ene_hw_read_reg(struct ene_device *dev, u16 reg)
++{
++	outb(reg >> 8   , dev->hw_io + ENE_ADDR_HI);
++	outb(reg & 0xFF , dev->hw_io + ENE_ADDR_LO);
++	return inb(dev->hw_io + ENE_IO);
++}
++
++/* write a hardware register */
++static void ene_hw_write_reg(struct ene_device *dev, u16 reg, u8 value)
++{
++	outb(reg >> 8   , dev->hw_io + ENE_ADDR_HI);
++	outb(reg & 0xFF , dev->hw_io + ENE_ADDR_LO);
++	outb(value, dev->hw_io + ENE_IO);
++}
++
++/* change specific bits in hardware register */
++static void ene_hw_write_reg_mask(struct ene_device *dev,
++						u16 reg, u8 value, u8 mask)
++{
++	u8 regvalue;
++
++	outb(reg >> 8   , dev->hw_io + ENE_ADDR_HI);
++	outb(reg & 0xFF , dev->hw_io + ENE_ADDR_LO);
++
++	regvalue = inb(dev->hw_io + ENE_IO) & ~mask;
++	regvalue |= (value & mask);
++	outb(regvalue, dev->hw_io + ENE_IO);
++}
++
++
++/* which half of hardware buffer we read now ?*/
++static int hw_get_buf_pointer(struct ene_device *dev)
++{
++	return 4 * (ene_hw_read_reg(dev, ENE_FW_BUFFER_POINTER)
++				& ENE_FW_BUFFER_POINTER_HIGH);
++}
++
++
++/* read irq status and ack it */
++static int ene_hw_irq_status(struct ene_device *dev)
++{
++	u8 irq_status = ene_hw_read_reg(dev, ENE_IRQ_STATUS);
++
++	if (!irq_status & ENE_IRQ_STATUS_IR)
++		return 0;
++
++	ene_hw_write_reg(dev, ENE_IRQ_STATUS, irq_status & ~ENE_IRQ_STATUS_IR);
++	return 1;
++}
++
++
++/* hardware initialization */
++static int ene_hw_init(void *data)
++{
++	struct ene_device *dev = (struct ene_device *)data;
++	dev->in_use = 1;
++
++	ene_hw_write_reg(dev, ENE_IRQ, dev->irq << 1);
++	ene_hw_write_reg(dev, ENE_ADC_UNK2, 0x00);
++	ene_hw_write_reg(dev, ENE_ADC_SAMPLE_PERIOD, sample_period);
++	ene_hw_write_reg(dev, ENE_ADC_UNK1, 0x07);
++	ene_hw_write_reg(dev, ENE_UNK1, 0x01);
++	ene_hw_write_reg_mask(dev, ENE_FW_SETTINGS, ENE_FW_ENABLE | ENE_FW_IRQ,
++		ENE_FW_ENABLE | ENE_FW_IRQ);
++
++	/* ack any pending irqs - just in case */
++	ene_hw_irq_status(dev);
++
++	/* enter idle mode */
++	ene_set_idle(dev, 1);
++
++	/* clear stats */
++	dev->sample = 0;
++	return 0;
++}
++
++/* deinitialization */
++static void ene_hw_deinit(void *data)
++{
++	struct ene_device *dev = (struct ene_device *)data;
++
++	/* disable hardware IRQ and firmware flag */
++	ene_hw_write_reg_mask(dev, ENE_FW_SETTINGS, 0,
++		ENE_FW_ENABLE | ENE_FW_IRQ);
++
++	ene_set_idle(dev, 1);
++	dev->in_use = 0;
++}
++
++/*  sends current sample to userspace */
++static void send_sample(struct ene_device *dev)
++{
++	int value = abs(dev->sample) & PULSE_MASK;
++
++	if (dev->sample > 0)
++		value |= PULSE_BIT;
++
++	if (!lirc_buffer_full(dev->lirc_driver->rbuf)) {
++		lirc_buffer_write(dev->lirc_driver->rbuf, (void *) &value);
++		wake_up(&dev->lirc_driver->rbuf->wait_poll);
++	}
++	dev->sample = 0;
++}
++
++/*  this updates current sample */
++static void update_sample(struct ene_device *dev, int sample)
++{
++	if (!dev->sample)
++		dev->sample = sample;
++	else if (same_sign(dev->sample, sample))
++		dev->sample += sample;
++	else {
++		send_sample(dev);
++		dev->sample = sample;
++	}
++}
++
++/* enable or disable idle mode */
++static void ene_set_idle(struct ene_device *dev, int idle)
++{
++	struct timeval now;
++
++	ene_hw_write_reg_mask(dev, ENE_ADC_SAMPLE_PERIOD,
++		idle & enable_idle ? 0 : ENE_ADC_SAMPLE_OVERFLOW,
++		ENE_ADC_SAMPLE_OVERFLOW);
++
++	dev->idle = idle;
++
++
++	/* remember when we have entered the idle mode */
++	if (idle) {
++		do_gettimeofday(&dev->gap_start);
++		return;
++	}
++
++	/* send the gap between keypresses now */
++	do_gettimeofday(&now);
++
++	if (now.tv_sec - dev->gap_start.tv_sec > 16)
++		dev->sample = space(PULSE_MASK);
++	else
++		dev->sample = dev->sample + 
++			space(1000000ull * (now.tv_sec - dev->gap_start.tv_sec))
++				+ space(now.tv_usec - dev->gap_start.tv_usec);
++
++	if (abs(dev->sample) > PULSE_MASK)
++		dev->sample = space(PULSE_MASK);
++	send_sample(dev);
++}
++
++
++/* interrupt handler */
++static irqreturn_t ene_hw_irq(int irq, void *data)
++{
++	u16 hw_address;
++	u8 hw_value;
++	int i, hw_sample;
++	int space;
++
++	struct ene_device *dev = (struct ene_device *)data;
++
++	if (!ene_hw_irq_status(dev))
++		return IRQ_NONE;
++
++	hw_address = ENE_SAMPLE_BUFFER + hw_get_buf_pointer(dev);
++
++	for (i = 0 ; i < ENE_SAMPLES_SIZE ; i++) {
++
++		hw_value = ene_hw_read_reg(dev, hw_address + i);
++		space = hw_value & ENE_SAMPLE_LOW_MASK;
++		hw_value &= ~ENE_SAMPLE_LOW_MASK;
++
++		/* no more data */
++		if (!(hw_value))
++			break;
++
++		/* calculate hw sample */
++		hw_sample = hw_value * sample_period;
++
++		if (space)
++			hw_sample *= -1;
++
++		/* overflow sample recieved, handle it */
++		if (hw_value == ENE_SAMPLE_OVERFLOW) {
++
++			if (dev->idle)
++				continue;
++
++			if (dev->sample > 0 || abs(dev->sample) <= ENE_MAXGAP)
++				update_sample(dev, hw_sample);
++			else
++				ene_set_idle(dev, 1);
++
++			continue;
++		}
++
++		/* normal first sample recieved*/
++		if (dev->idle) {
++			ene_set_idle(dev, 0);
++
++			/* discard first recieved value, its random
++			   since its the time signal was off before
++			   first pulse if idle mode is enabled, HW
++			   does that for us */
++
++			if (!enable_idle)
++				continue;
++		}
++
++		update_sample(dev, hw_sample);
++		send_sample(dev);
++	}
++	return IRQ_HANDLED;
++}
++
++static int ene_probe(struct pnp_dev *pnp_dev,
++					const struct pnp_device_id *dev_id)
++{
++	struct resource *res;
++	struct ene_device *dev;
++	struct lirc_driver *lirc_driver;
++	int error = -ENOMEM;
++
++	dev = kzalloc(sizeof(struct ene_device), GFP_KERNEL);
++
++	if (!dev)
++		goto err1;
++
++	dev->pnp_dev = pnp_dev;
++	pnp_set_drvdata(pnp_dev, dev);
++
++	error = -EINVAL;
++	if (sample_period < 5) {
++
++		printk(KERN_ERR ENE_DRIVER_NAME ": sample period must be at "
++		       "least 5 ms, (at least 30 recommended)\n");
++
++		goto err1;
++	}
++
++	/* validate and read resources */
++	error = -ENODEV;
++	res = pnp_get_resource(pnp_dev, IORESOURCE_IO, 0);
++	if (!pnp_resource_valid(res))
++		goto err2;
++
++	dev->hw_io = res->start;
++
++	if (pnp_resource_len(res) < ENE_MAX_IO)
++		goto err2;
++
++
++	res = pnp_get_resource(pnp_dev, IORESOURCE_IRQ, 0);
++	if (!pnp_resource_valid(res))
++		goto err2;
++
++	dev->irq = res->start;
++
++	/* prepare lirc interface */
++	error = -ENOMEM;
++	lirc_driver = kzalloc(sizeof(struct lirc_driver), GFP_KERNEL);
++
++	if (!lirc_driver)
++		goto err2;
++
++	dev->lirc_driver = lirc_driver;
++
++	strcpy(lirc_driver->name, ENE_DRIVER_NAME);
++	lirc_driver->minor = -1;
++	lirc_driver->code_length = sizeof(int) * 8;
++	lirc_driver->features = LIRC_CAN_REC_MODE2;
++	lirc_driver->data = dev;
++	lirc_driver->set_use_inc = ene_hw_init;
++	lirc_driver->set_use_dec = ene_hw_deinit;
++	lirc_driver->dev = &pnp_dev->dev;
++	lirc_driver->owner = THIS_MODULE;
++
++	lirc_driver->rbuf = kzalloc(sizeof(struct lirc_buffer), GFP_KERNEL);
++
++	if (!lirc_driver->rbuf)
++		goto err3;
++
++	if (lirc_buffer_init(lirc_driver->rbuf,
++					sizeof(int), sizeof(int) * 256))
++		goto err4;
++
++	error = -ENODEV;
++	if (lirc_register_driver(lirc_driver))
++		goto err5;
++
++	/* claim the resources */
++	error = -EBUSY;
++	if (!request_region(dev->hw_io, ENE_MAX_IO, ENE_DRIVER_NAME))
++		goto err6;
++
++	if (request_irq(dev->irq, ene_hw_irq,
++			IRQF_SHARED, ENE_DRIVER_NAME, (void *)dev))
++		goto err7;
++
++
++	/* check firmware version */
++	error = -ENODEV;
++	if (ene_hw_read_reg(dev, ENE_FW_VERSION) != ENE_FW_VER_SUPP) {
++		printk(KERN_WARNING ENE_DRIVER_NAME ": "
++		       "unsupported firmware found, aborting\n");
++		goto err8;
++	}
++
++	printk(KERN_NOTICE ENE_DRIVER_NAME ": "
++	       "driver has been succesfully loaded\n");
++	return 0;
++
++err8:
++	free_irq(dev->irq, dev);
++err7:
++	release_region(dev->hw_io, ENE_MAX_IO);
++err6:
++	lirc_unregister_driver(lirc_driver->minor);
++err5:
++	lirc_buffer_free(lirc_driver->rbuf);
++err4:
++	kfree(lirc_driver->rbuf);
++err3:
++	kfree(lirc_driver);
++err2:
++	kfree(dev);
++err1:
++	return error;
++}
++
++
++static void ene_remove(struct pnp_dev *pnp_dev)
++{
++	struct ene_device *dev = pnp_get_drvdata(pnp_dev);
++	ene_hw_deinit(dev);
++	free_irq(dev->irq, dev);
++	release_region(dev->hw_io, ENE_MAX_IO);
++	lirc_unregister_driver(dev->lirc_driver->minor);
++	lirc_buffer_free(dev->lirc_driver->rbuf);
++	kfree(dev->lirc_driver);
++	kfree(dev);
++}
++
++
++#ifdef CONFIG_PM
++static int ene_suspend(struct pnp_dev *pnp_dev, pm_message_t state)
++{
++	struct ene_device *dev = pnp_get_drvdata(pnp_dev);
++	ene_hw_write_reg_mask(dev, ENE_FW_SETTINGS, ENE_FW_WAKE, ENE_FW_WAKE);
++	return 0;
++}
++
++
++static int ene_resume(struct pnp_dev *pnp_dev)
++{
++	struct ene_device *dev = pnp_get_drvdata(pnp_dev);
++	if (dev->in_use)
++		ene_hw_init(dev);
++
++	ene_hw_write_reg_mask(dev, ENE_FW_SETTINGS, 0, ENE_FW_WAKE);
++	return 0;
++}
++
++#endif
++
++
++static const struct pnp_device_id ene_ids[] = {
++	{ .id = "ENE0100", },
++	{ },
++};
++
++static struct pnp_driver ene_driver = {
++	.name = ENE_DRIVER_NAME,
++	.id_table = ene_ids,
++	.flags = PNP_DRIVER_RES_DO_NOT_CHANGE,
++
++	.probe = ene_probe,
++	.remove = __devexit_p(ene_remove),
++
++#ifdef CONFIG_PM
++	.suspend = ene_suspend,
++	.resume = ene_resume,
++#endif
++};
++
++
++static int __init ene_init(void)
++{
++	return pnp_register_driver(&ene_driver);
++}
++
++static void ene_exit(void)
++{
++	pnp_unregister_driver(&ene_driver);
++}
++
++
++module_param(sample_period, int, S_IRUGO);
++MODULE_PARM_DESC(sample_period, "Hardware sample period (50 us default)");
++
++
++module_param(enable_idle, bool, S_IRUGO | S_IWUSR);
++MODULE_PARM_DESC(enable_idle,
++"Allow hardware to signal when IR pulse starts, disable if your remote"
++"doesn't send a sync pulse");
++
++
++MODULE_DEVICE_TABLE(pnp, ene_ids);
++MODULE_DESCRIPTION("LIRC driver for KB3924/ENE0100 CIR port");
++MODULE_AUTHOR("Maxim Levitsky");
++MODULE_LICENSE("GPL");
++
++module_init(ene_init);
++module_exit(ene_exit);
+diff --git a/drivers/input/lirc/lirc_ene0100.h b/drivers/input/lirc/lirc_ene0100.h
+new file mode 100644
+index 0000000..7db3545
+--- /dev/null
++++ b/drivers/input/lirc/lirc_ene0100.h
+@@ -0,0 +1,100 @@
++/*
++ * driver for ENE KB3924 CIR (also known as ENE0100)
++ *
++ * Copyright (C) 2009 Maxim Levitsky <maximlevitsky at gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation; either version 2 of the
++ * License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
++ * USA
++ */
++
++#include "lirc.h"
++#include "lirc_dev.h"
++
++/* hardware address */
++#define ENE_STATUS		0	/* hardware status - unused */
++#define ENE_ADDR_HI		1	/* hi byte of register address */
++#define ENE_ADDR_LO		2	/* low byte of register address */
++#define ENE_IO			3	/* read/write window */
++#define ENE_MAX_IO		3
++
++
++/* 8 bytes of samples, divided in 2 halfs*/
++#define ENE_SAMPLE_BUFFER		0xF8F0
++#define ENE_SAMPLE_LOW_MASK		(1 << 7)
++#define ENE_SAMPLE_VALUE_MASK		0x7F
++#define ENE_SAMPLE_OVERFLOW		0x7F
++#define ENE_SAMPLES_SIZE		4
++
++
++/* firmware settings */
++#define ENE_FW_SETTINGS			0xF8F8
++#define	ENE_FW_ENABLE			(1 << 0) /* enable fw processing */
++#define ENE_FW_WAKE			(1 << 6) /* enable wake from S3 */
++#define ENE_FW_IRQ			(1 << 7) /* enable interrupt */
++
++
++/* buffer pointer, tells which half of ENE_SAMPLE_BUFFER to read */
++#define ENE_FW_BUFFER_POINTER		0xF8F9
++#define ENE_FW_BUFFER_POINTER_HIGH	(1 << 0)
++
++
++/* IRQ registers block */
++#define ENE_IRQ				0xFD09	 /* IRQ number */
++#define ENE_UNK1			0xFD17   /* unknown setting = 1 */
++#define ENE_IRQ_STATUS			0xFD80   /* irq status */
++#define ENE_IRQ_STATUS_IR		(1 << 5) /* IR irq */
++
++
++/* ADC settings */
++#define ENE_ADC_UNK1			0xFEC0	 /* unknown setting = 7 */
++#define ENE_ADC_UNK2			0xFEC1   /* unknown setting = 0 */
++#define ENE_ADC_SAMPLE_PERIOD		0xFEC8   /* sample period in us */
++#define ENE_ADC_SAMPLE_OVERFLOW		(1 << 7) /* interrupt on
++						    overflows if set */
++
++/* fimware version */
++#define ENE_FW_VERSION			0xFF00
++#define ENE_FW_VER_SUPP			0xC0
++
++
++#define same_sign(a, b) ((((a) > 0) && (b) > 0) || ((a) < 0 && (b) < 0))
++
++#define ENE_DRIVER_NAME			"enecir"
++
++#define ENE_MAXGAP			5000000	/* this is amount of
++						   time we wait before
++						   turning the
++						   sampler, chosen
++						   arbitry */
++
++#define space(len)			(-(len))   /* add a space */
++
++
++struct ene_device {
++	struct pnp_dev *pnp_dev;
++	struct lirc_driver *lirc_driver;
++
++	/* hw settings */
++	unsigned long hw_io;
++	int irq;
++
++	/* device data */
++	int idle;
++	int sample;
++	int in_use;
++
++	struct timeval gap_start;
++};
++
 diff --git a/drivers/input/lirc/lirc_i2c.c b/drivers/input/lirc/lirc_i2c.c
 new file mode 100644
 index 0000000..e27d937
@@ -2869,10 +3442,10 @@ index 0000000..ff49bdd
 +
 diff --git a/drivers/input/lirc/lirc_imon.c b/drivers/input/lirc/lirc_imon.c
 new file mode 100644
-index 0000000..3c87d94
+index 0000000..05fe0c7
 --- /dev/null
 +++ b/drivers/input/lirc/lirc_imon.c
-@@ -0,0 +1,2298 @@
+@@ -0,0 +1,2297 @@
 +/*
 + *   lirc_imon.c:  LIRC/VFD/LCD driver for SoundGraph iMON IR/VFD/LCD
 + *		   including the iMON PAD model
@@ -3273,8 +3846,7 @@ index 0000000..3c87d94
 +		 "open. 0=don't disable, 1=disable. (default: don't disable)");
 +module_param(pad_thresh, int, S_IRUGO | S_IWUSR);
 +MODULE_PARM_DESC(pad_thresh, "Threshold at which a pad push registers as an "
-+		 "arrow key in kbd mode (default 80 on newer devices, 15 on "
-+		 "older devices)");
++		 "arrow key in kbd mode (default: 28)");
 +
 +static void free_imon_context(struct imon_context *context)
 +{
@@ -4288,7 +4860,7 @@ index 0000000..3c87d94
 +		len = 8;
 +		timeout = 500;	/* in msecs */
 +		/* (2*threshold) x (2*threshold) square */
-+		threshold = pad_thresh ? pad_thresh : 80;
++		threshold = pad_thresh ? pad_thresh : 28;
 +		rel_x = buf[2];
 +		rel_y = buf[3];
 +


Index: perf
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/perf,v
retrieving revision 1.2.2.2
retrieving revision 1.2.2.3
diff -u -p -r1.2.2.2 -r1.2.2.3
--- perf	13 Aug 2009 21:26:09 -0000	1.2.2.2
+++ perf	18 Aug 2009 19:26:45 -0000	1.2.2.3
@@ -1,2 +1,12 @@
 #!/bin/sh
-exec /usr/libexec/perf.$(uname -r)
+
+# In pathological situations, this will print some error about uname.
+kverrel="`uname -r`" || exit
+
+exec "/usr/libexec/perf.$kverrel" ${1+"$@"}
+rc=$?
+
+# We're still here, so the exec failed.
+echo >&2 "Sorry, your kernel ($kverrel) doesn't support perf."
+
+exit $rc


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/sources,v
retrieving revision 1.976.2.24
retrieving revision 1.976.2.25
diff -u -p -r1.976.2.24 -r1.976.2.25
--- sources	14 Aug 2009 18:31:26 -0000	1.976.2.24
+++ sources	18 Aug 2009 19:26:45 -0000	1.976.2.25
@@ -1,2 +1,3 @@
 7a80058a6382e5108cdb5554d1609615  linux-2.6.30.tar.bz2
 056ab6d753725f14d2d44eec2c1f471f  patch-2.6.31-rc6.bz2
+67d0b1917a80534f0a7f3aa2c2897509  patch-2.6.31-rc6-git3.bz2


Index: upstream
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/upstream,v
retrieving revision 1.888.2.23
retrieving revision 1.888.2.24
diff -u -p -r1.888.2.23 -r1.888.2.24
--- upstream	14 Aug 2009 18:31:26 -0000	1.888.2.23
+++ upstream	18 Aug 2009 19:26:45 -0000	1.888.2.24
@@ -1,2 +1,3 @@
 linux-2.6.30.tar.bz2
 patch-2.6.31-rc6.bz2
+patch-2.6.31-rc6-git3.bz2

xen.pvops.patch:
 arch/x86/Kconfig                           |    4 
 arch/x86/include/asm/agp.h                 |   15 
 arch/x86/include/asm/e820.h                |    2 
 arch/x86/include/asm/i387.h                |    1 
 arch/x86/include/asm/io.h                  |   15 
 arch/x86/include/asm/io_apic.h             |    7 
 arch/x86/include/asm/microcode.h           |    9 
 arch/x86/include/asm/paravirt.h            |  718 -------------
 arch/x86/include/asm/paravirt_types.h      |  722 +++++++++++++
 arch/x86/include/asm/pci.h                 |    8 
 arch/x86/include/asm/pci_x86.h             |    2 
 arch/x86/include/asm/pgtable.h             |    3 
 arch/x86/include/asm/processor.h           |    4 
 arch/x86/include/asm/tlbflush.h            |    6 
 arch/x86/include/asm/xen/hypercall.h       |   44 
 arch/x86/include/asm/xen/interface.h       |    8 
 arch/x86/include/asm/xen/interface_32.h    |    5 
 arch/x86/include/asm/xen/interface_64.h    |   13 
 arch/x86/include/asm/xen/iommu.h           |   12 
 arch/x86/include/asm/xen/page.h            |   16 
 arch/x86/include/asm/xen/pci.h             |   13 
 arch/x86/kernel/Makefile                   |    1 
 arch/x86/kernel/acpi/boot.c                |   18 
 arch/x86/kernel/acpi/sleep.c               |    2 
 arch/x86/kernel/apic/io_apic.c             |   37 
 arch/x86/kernel/cpu/Makefile               |    5 
 arch/x86/kernel/cpu/mtrr/Makefile          |    1 
 arch/x86/kernel/cpu/mtrr/amd.c             |    6 
 arch/x86/kernel/cpu/mtrr/centaur.c         |    6 
 arch/x86/kernel/cpu/mtrr/cyrix.c           |    6 
 arch/x86/kernel/cpu/mtrr/generic.c         |   10 
 arch/x86/kernel/cpu/mtrr/main.c            |   19 
 arch/x86/kernel/cpu/mtrr/mtrr.h            |   11 
 arch/x86/kernel/cpu/mtrr/xen.c             |  104 +
 arch/x86/kernel/e820.c                     |   30 
 arch/x86/kernel/ioport.c                   |   29 
 arch/x86/kernel/microcode_core.c           |    5 
 arch/x86/kernel/microcode_xen.c            |  200 +++
 arch/x86/kernel/paravirt.c                 |    1 
 arch/x86/kernel/pci-dma.c                  |    3 
 arch/x86/kernel/pci-swiotlb.c              |   30 
 arch/x86/kernel/process.c                  |   27 
 arch/x86/kernel/process_32.c               |   27 
 arch/x86/kernel/process_64.c               |   33 
 arch/x86/kernel/setup.c                    |    4 
 arch/x86/kernel/traps.c                    |   33 
 arch/x86/mm/init_32.c                      |   42 
 arch/x86/mm/pat.c                          |    2 
 arch/x86/mm/pgtable.c                      |   10 
 arch/x86/mm/tlb.c                          |   35 
 arch/x86/pci/Makefile                      |    1 
 arch/x86/pci/common.c                      |   18 
 arch/x86/pci/i386.c                        |    3 
 arch/x86/pci/init.c                        |    6 
 arch/x86/pci/xen.c                         |   51 
 arch/x86/xen/Kconfig                       |   33 
 arch/x86/xen/Makefile                      |    6 
 arch/x86/xen/apic.c                        |   60 +
 arch/x86/xen/enlighten.c                   |   96 +
 arch/x86/xen/mmu.c                         |  455 ++++++++
 arch/x86/xen/pci-swiotlb.c                 |   53 +
 arch/x86/xen/pci.c                         |   86 +
 arch/x86/xen/setup.c                       |   50 
 arch/x86/xen/smp.c                         |    2 
 arch/x86/xen/time.c                        |    2 
 arch/x86/xen/vga.c                         |   67 +
 arch/x86/xen/xen-ops.h                     |   19 
 block/blk-core.c                           |    2 
 drivers/acpi/acpica/hwsleep.c              |   17 
 drivers/acpi/sleep.c                       |   19 
 drivers/block/Kconfig                      |    1 
 drivers/char/agp/intel-agp.c               |   17 
 drivers/char/hvc_xen.c                     |   99 +
 drivers/net/Kconfig                        |    1 
 drivers/pci/Makefile                       |    2 
 drivers/pci/pci.h                          |    2 
 drivers/pci/xen-iommu.c                    |  332 ++++++
 drivers/xen/Kconfig                        |   36 
 drivers/xen/Makefile                       |   19 
 drivers/xen/acpi.c                         |   23 
 drivers/xen/balloon.c                      |  152 ++
 drivers/xen/biomerge.c                     |   14 
 drivers/xen/blkback/Makefile               |    3 
 drivers/xen/blkback/blkback.c              |  658 ++++++++++++
 drivers/xen/blkback/common.h               |  137 ++
 drivers/xen/blkback/interface.c            |  182 +++
 drivers/xen/blkback/vbd.c                  |  118 ++
 drivers/xen/blkback/xenbus.c               |  542 ++++++++++
 drivers/xen/events.c                       |  322 +++++-
 drivers/xen/evtchn.c                       |    1 
 drivers/xen/features.c                     |    2 
 drivers/xen/grant-table.c                  |  103 +
 drivers/xen/mce.c                          |  213 ++++
 drivers/xen/netback/Makefile               |    3 
 drivers/xen/netback/common.h               |  221 ++++
 drivers/xen/netback/interface.c            |  401 +++++++
 drivers/xen/netback/netback.c              | 1513 +++++++++++++++++++++++++++++
 drivers/xen/netback/xenbus.c               |  454 ++++++++
 drivers/xen/pci.c                          |  116 ++
 drivers/xen/xenbus/Makefile                |    5 
 drivers/xen/xenbus/xenbus_comms.c          |    1 
 drivers/xen/xenbus/xenbus_probe.c          |  380 +------
 drivers/xen/xenbus/xenbus_probe.h          |   29 
 drivers/xen/xenbus/xenbus_probe_backend.c  |  298 +++++
 drivers/xen/xenbus/xenbus_probe_frontend.c |  292 +++++
 drivers/xen/xenfs/Makefile                 |    3 
 drivers/xen/xenfs/privcmd.c                |  403 +++++++
 drivers/xen/xenfs/super.c                  |   98 +
 drivers/xen/xenfs/xenfs.h                  |    3 
 drivers/xen/xenfs/xenstored.c              |   67 +
 include/asm-generic/pci.h                  |    2 
 include/linux/interrupt.h                  |    1 
 include/linux/page-flags.h                 |   18 
 include/linux/pci.h                        |    6 
 include/xen/Kbuild                         |    1 
 include/xen/acpi.h                         |   23 
 include/xen/balloon.h                      |    8 
 include/xen/blkif.h                        |  122 ++
 include/xen/events.h                       |   27 
 include/xen/grant_table.h                  |   43 
 include/xen/interface/grant_table.h        |   22 
 include/xen/interface/memory.h             |   92 +
 include/xen/interface/physdev.h            |   21 
 include/xen/interface/platform.h           |  222 ++++
 include/xen/interface/xen-mca.h            |  429 ++++++++
 include/xen/interface/xen.h                |   43 
 include/xen/privcmd.h                      |   80 +
 include/xen/swiotlb.h                      |   18 
 include/xen/xen-ops.h                      |   11 
 include/xen/xenbus.h                       |    2 
 kernel/irq/manage.c                        |    3 
 lib/swiotlb.c                              |    5 
 mm/page_alloc.c                            |   14 
 133 files changed, 10574 insertions(+), 1315 deletions(-)

Index: xen.pvops.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.patch,v
retrieving revision 1.1.2.33
retrieving revision 1.1.2.34
diff -u -p -r1.1.2.33 -r1.1.2.34
--- xen.pvops.patch	14 Aug 2009 18:31:26 -0000	1.1.2.33
+++ xen.pvops.patch	18 Aug 2009 19:26:45 -0000	1.1.2.34
@@ -1757,18 +1757,19 @@ index 7f3eba0..e4fc8ea 100644
  extern void flush_tlb_current_task(void);
  extern void flush_tlb_mm(struct mm_struct *);
 diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h
-index 9c371e4..3da450b 100644
+index 9c371e4..7de93f3 100644
 --- a/arch/x86/include/asm/xen/hypercall.h
 +++ b/arch/x86/include/asm/xen/hypercall.h
-@@ -45,6 +45,7 @@
+@@ -45,6 +45,8 @@
  #include <xen/interface/xen.h>
  #include <xen/interface/sched.h>
  #include <xen/interface/physdev.h>
 +#include <xen/interface/platform.h>
++#include <xen/interface/xen-mca.h>
  
  /*
   * The hypercall asms have to meet several constraints:
-@@ -200,6 +201,23 @@ extern struct { char _entry[32]; } hypercall_page[];
+@@ -200,6 +202,23 @@ extern struct { char _entry[32]; } hypercall_page[];
  	(type)__res;							\
  })
  
@@ -1792,10 +1793,17 @@ index 9c371e4..3da450b 100644
  static inline int
  HYPERVISOR_set_trap_table(struct trap_info *table)
  {
-@@ -282,6 +300,13 @@ HYPERVISOR_set_timer_op(u64 timeout)
+@@ -282,6 +301,20 @@ HYPERVISOR_set_timer_op(u64 timeout)
  }
  
  static inline int
++HYPERVISOR_mca(struct xen_mc *mc_op)
++{
++	mc_op->interface_version = XEN_MCA_INTERFACE_VERSION;
++	return _hypercall1(int, mca, mc_op);
++}
++
++static inline int
 +HYPERVISOR_dom0_op(struct xen_platform_op *platform_op)
 +{
 +	platform_op->interface_version = XENPF_INTERFACE_VERSION;
@@ -1806,7 +1814,7 @@ index 9c371e4..3da450b 100644
  HYPERVISOR_set_debugreg(int reg, unsigned long value)
  {
  	return _hypercall2(int, set_debugreg, reg, value);
-@@ -424,6 +449,14 @@ MULTI_fpu_taskswitch(struct multicall_entry *mcl, int set)
+@@ -424,6 +457,14 @@ MULTI_fpu_taskswitch(struct multicall_entry *mcl, int set)
  	mcl->args[0] = set;
  }
  
@@ -1821,7 +1829,7 @@ index 9c371e4..3da450b 100644
  static inline void
  MULTI_update_va_mapping(struct multicall_entry *mcl, unsigned long va,
  			pte_t new_val, unsigned long flags)
-@@ -432,12 +465,11 @@ MULTI_update_va_mapping(struct multicall_entry *mcl, unsigned long va,
+@@ -432,12 +473,11 @@ MULTI_update_va_mapping(struct multicall_entry *mcl, unsigned long va,
  	mcl->args[0] = va;
  	if (sizeof(new_val) == sizeof(long)) {
  		mcl->args[1] = new_val.pte;
@@ -2156,6 +2164,22 @@ index d2ed6c5..205e277 100644
  	ioapic_res = ioapic_setup_resources();
  	for (i = 0; i < nr_ioapics; i++) {
  		if (smp_found_config) {
+diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
+index 3efcb2b..3e058a1 100644
+--- a/arch/x86/kernel/cpu/Makefile
++++ b/arch/x86/kernel/cpu/Makefile
+@@ -7,6 +7,11 @@ ifdef CONFIG_FUNCTION_TRACER
+ CFLAGS_REMOVE_common.o = -pg
+ endif
+ 
++ifdef CONFIG_CC_STACKPROTECTOR
++# Also, load_percpu_segment shouldn't have stack-protector on it
++CFLAGS_REMOVE_common.o += -fstack-protector -fstack-protector-all
++endif
++
+ obj-y			:= intel_cacheinfo.o addon_cpuid_features.o
+ obj-y			+= proc.o capflags.o powerflags.o common.o
+ obj-y			+= vmware.o hypervisor.o
 diff --git a/arch/x86/kernel/cpu/mtrr/Makefile b/arch/x86/kernel/cpu/mtrr/Makefile
 index f4361b5..404e458 100644
 --- a/arch/x86/kernel/cpu/mtrr/Makefile
@@ -3491,10 +3515,19 @@ index b83e119..951c924 100644
 +       depends on XEN_DOM0 && MICROCODE
 \ No newline at end of file
 diff --git a/arch/x86/xen/Makefile b/arch/x86/xen/Makefile
-index 172438f..6d697e5 100644
+index 172438f..e19c48e 100644
 --- a/arch/x86/xen/Makefile
 +++ b/arch/x86/xen/Makefile
-@@ -12,3 +12,7 @@ obj-y		:= enlighten.o setup.o multicalls.o mmu.o irq.o \
+@@ -5,6 +5,8 @@ CFLAGS_REMOVE_time.o = -pg
+ CFLAGS_REMOVE_irq.o = -pg
+ endif
+ 
++CFLAGS_REMOVE_enlighten.o += -fstack-protector -fstack-protector-all
++
+ obj-y		:= enlighten.o setup.o multicalls.o mmu.o irq.o \
+ 			time.o xen-asm.o xen-asm_$(BITS).o \
+ 			grant-table.o suspend.o
+@@ -12,3 +14,7 @@ obj-y		:= enlighten.o setup.o multicalls.o mmu.o irq.o \
  obj-$(CONFIG_SMP)		+= smp.o
  obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o
  obj-$(CONFIG_XEN_DEBUG_FS)	+= debugfs.o
@@ -3570,7 +3603,7 @@ index 0000000..496f07d
 +#endif
 +}
 diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
-index 0a1700a..6ba04d4 100644
+index 0a1700a..2e58099 100644
 --- a/arch/x86/xen/enlighten.c
 +++ b/arch/x86/xen/enlighten.c
 @@ -64,6 +64,11 @@ DEFINE_PER_CPU(struct vcpu_info, xen_vcpu_info);
@@ -3621,19 +3654,32 @@ index 0a1700a..6ba04d4 100644
  	}
  
  	asm(XEN_EMULATE_PREFIX "cpuid"
-@@ -207,8 +221,11 @@ static __init void xen_init_cpuid_mask(void)
- 	cpuid_leaf1_edx_mask =
- 		~((1 << X86_FEATURE_MCE)  |  /* disable MCE */
- 		  (1 << X86_FEATURE_MCA)  |  /* disable MCA */
-+		  (1 << X86_FEATURE_PAT)  |  /* disable PAT */
- 		  (1 << X86_FEATURE_ACC));   /* thermal monitoring */
+@@ -205,16 +219,20 @@ static __init void xen_init_cpuid_mask(void)
+ 	unsigned int ax, bx, cx, dx;
  
-+	cpuid_leaf81_edx_mask = ~(1 << (X86_FEATURE_GBPAGES % 32));
+ 	cpuid_leaf1_edx_mask =
+-		~((1 << X86_FEATURE_MCE)  |  /* disable MCE */
+-		  (1 << X86_FEATURE_MCA)  |  /* disable MCA */
+-		  (1 << X86_FEATURE_ACC));   /* thermal monitoring */
++		~((1 << X86_FEATURE_ACC)    |  /* thermal monitoring */
++		  (1 << X86_FEATURE_PAT));     /* disable PAT */
 +
++	cpuid_leaf81_edx_mask = ~(1 << (X86_FEATURE_GBPAGES % 32));
+ 
  	if (!xen_initial_domain())
  		cpuid_leaf1_edx_mask &=
- 			~((1 << X86_FEATURE_APIC) |  /* disable local APIC */
-@@ -597,6 +614,18 @@ static void xen_set_iopl_mask(unsigned mask)
+-			~((1 << X86_FEATURE_APIC) |  /* disable local APIC */
++			~((1 << X86_FEATURE_MCE)  |  /* disable MCE */
++			  (1 << X86_FEATURE_MCA)  |  /* disable MCA */
++			  (1 << X86_FEATURE_APIC) |  /* disable local APIC */
+ 			  (1 << X86_FEATURE_ACPI));  /* disable ACPI */
+ 
+ 	ax = 1;
++	cx = 0;
+ 	xen_cpuid(&ax, &bx, &cx, &dx);
+ 
+ 	/* cpuid claims we support xsave; try enabling it to see what happens */
+@@ -597,6 +615,18 @@ static void xen_set_iopl_mask(unsigned mask)
  	HYPERVISOR_physdev_op(PHYSDEVOP_set_iopl, &set_iopl);
  }
  
@@ -3652,7 +3698,16 @@ index 0a1700a..6ba04d4 100644
  static void xen_io_delay(void)
  {
  }
-@@ -906,6 +935,7 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
+@@ -634,7 +664,7 @@ static u32 xen_safe_apic_wait_icr_idle(void)
+         return 0;
+ }
+ 
+-static void set_xen_basic_apic_ops(void)
++static __init void set_xen_basic_apic_ops(void)
+ {
+ 	apic->read = xen_apic_read;
+ 	apic->write = xen_apic_write;
+@@ -906,6 +936,7 @@ static const struct pv_cpu_ops xen_cpu_ops __initdata = {
  	.load_sp0 = xen_load_sp0,
  
  	.set_iopl_mask = xen_set_iopl_mask,
@@ -3660,16 +3715,60 @@ index 0a1700a..6ba04d4 100644
  	.io_delay = xen_io_delay,
  
  	/* Xen takes care of %gs when switching to usermode for us */
-@@ -978,6 +1008,8 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -974,10 +1005,6 @@ asmlinkage void __init xen_start_kernel(void)
  
- 	xen_setup_features();
+ 	xen_domain_type = XEN_PV_DOMAIN;
  
-+	xen_setup_machphys_mapping();
-+
+-	BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0);
+-
+-	xen_setup_features();
+-
  	/* Install Xen paravirt ops */
  	pv_info = xen_info;
  	pv_init_ops = xen_init_ops;
-@@ -1031,6 +1063,8 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -986,8 +1013,15 @@ asmlinkage void __init xen_start_kernel(void)
+ 	pv_apic_ops = xen_apic_ops;
+ 	pv_mmu_ops = xen_mmu_ops;
+ 
+-	xen_init_irq_ops();
++#ifdef CONFIG_X86_64
++	/*
++	 * Setup percpu state.  We only need to do this for 64-bit
++	 * because 32-bit already has %fs set properly.
++	 */
++	load_percpu_segment(0);
++#endif
+ 
++	xen_init_irq_ops();
+ 	xen_init_cpuid_mask();
+ 
+ #ifdef CONFIG_X86_LOCAL_APIC
+@@ -997,6 +1031,10 @@ asmlinkage void __init xen_start_kernel(void)
+ 	set_xen_basic_apic_ops();
+ #endif
+ 
++	xen_setup_machphys_mapping();
++
++	xen_setup_features();
++
+ 	if (xen_feature(XENFEAT_mmu_pt_update_preserve_ad)) {
+ 		pv_mmu_ops.ptep_modify_prot_start = xen_ptep_modify_prot_start;
+ 		pv_mmu_ops.ptep_modify_prot_commit = xen_ptep_modify_prot_commit;
+@@ -1004,13 +1042,6 @@ asmlinkage void __init xen_start_kernel(void)
+ 
+ 	machine_ops = xen_machine_ops;
+ 
+-#ifdef CONFIG_X86_64
+-	/*
+-	 * Setup percpu state.  We only need to do this for 64-bit
+-	 * because 32-bit already has %fs set properly.
+-	 */
+-	load_percpu_segment(0);
+-#endif
+ 	/*
+ 	 * The only reliable way to retain the initial address of the
+ 	 * percpu gdt_page is to remember it here, so we can go and
+@@ -1031,6 +1062,8 @@ asmlinkage void __init xen_start_kernel(void)
  	if (!xen_initial_domain())
  		__supported_pte_mask &= ~(_PAGE_PWT | _PAGE_PCD);
  
@@ -3678,7 +3777,7 @@ index 0a1700a..6ba04d4 100644
  #ifdef CONFIG_X86_64
  	/* Work out if we support NX */
  	check_efer();
-@@ -1045,6 +1079,7 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1045,6 +1078,7 @@ asmlinkage void __init xen_start_kernel(void)
  
  	xen_raw_console_write("mapping kernel into physical memory\n");
  	pgd = xen_setup_kernel_pagetable(pgd, xen_start_info->nr_pages);
@@ -3686,7 +3785,7 @@ index 0a1700a..6ba04d4 100644
  
  	init_mm.pgd = pgd;
  
-@@ -1054,9 +1089,21 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1054,9 +1088,21 @@ asmlinkage void __init xen_start_kernel(void)
  	if (xen_feature(XENFEAT_supervisor_mode_kernel))
  		pv_info.kernel_rpl = 0;
  
@@ -3708,7 +3807,7 @@ index 0a1700a..6ba04d4 100644
  #ifdef CONFIG_X86_32
  	/* set up basic CPUID stuff */
  	cpu_detect(&new_cpu_data);
-@@ -1075,6 +1122,16 @@ asmlinkage void __init xen_start_kernel(void)
+@@ -1075,6 +1121,16 @@ asmlinkage void __init xen_start_kernel(void)
  		add_preferred_console("xenboot", 0, NULL);
  		add_preferred_console("tty", 0, NULL);
  		add_preferred_console("hvc", 0, NULL);
@@ -5430,7 +5529,7 @@ index 0000000..b1a7d93
 +}
 +
 diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
-index cab100a..3b1c421 100644
+index cab100a..84c3553 100644
 --- a/drivers/xen/Kconfig
 +++ b/drivers/xen/Kconfig
 @@ -28,6 +28,29 @@ config XEN_DEV_EVTCHN
@@ -5463,7 +5562,7 @@ index cab100a..3b1c421 100644
  config XENFS
  	tristate "Xen filesystem"
  	depends on XEN
-@@ -60,4 +83,11 @@ config XEN_SYS_HYPERVISOR
+@@ -60,4 +83,15 @@ config XEN_SYS_HYPERVISOR
           Create entries under /sys/hypervisor describing the Xen
  	 hypervisor environment.  When running native or in another
  	 virtual environment, /sys/hypervisor will still be present,
@@ -5477,12 +5576,15 @@ index cab100a..3b1c421 100644
 +config XEN_S3
 +       def_bool y
 +       depends on XEN_DOM0 && ACPI
-\ No newline at end of file
++       
++config XEN_MCE
++       def_bool y
++       depends on XEN_DOM0 && X86_64 && X86_MCE_INTEL
 diff --git a/drivers/xen/Makefile b/drivers/xen/Makefile
-index ec2a39b..7ff6d27 100644
+index ec2a39b..2d4f7b1 100644
 --- a/drivers/xen/Makefile
 +++ b/drivers/xen/Makefile
-@@ -1,9 +1,13 @@
+@@ -1,9 +1,14 @@
 -obj-y	+= grant-table.o features.o events.o manage.o
 +obj-y	+= grant-table.o features.o events.o manage.o biomerge.o
  obj-y	+= xenbus/
@@ -5504,7 +5606,7 @@ index ec2a39b..7ff6d27 100644
 +obj-$(CONFIG_XENFS)			+= xenfs/
 +obj-$(CONFIG_XEN_SYS_HYPERVISOR)	+= sys-hypervisor.o
 +obj-$(CONFIG_XEN_S3)			+= acpi.o
-\ No newline at end of file
++obj-$(CONFIG_XEN_MCE)			+= mce.o
 diff --git a/drivers/xen/acpi.c b/drivers/xen/acpi.c
 new file mode 100644
 index 0000000..e6d3d0e
@@ -7945,6 +8047,31 @@ index abad71b..8bcbf6b 100644
 +
 +	xen_setup_pirqs();
  }
+diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c
+index af03195..79bedba 100644
+--- a/drivers/xen/evtchn.c
++++ b/drivers/xen/evtchn.c
+@@ -38,7 +38,6 @@
+ #include <linux/string.h>
+ #include <linux/errno.h>
+ #include <linux/fs.h>
+-#include <linux/errno.h>
+ #include <linux/miscdevice.h>
+ #include <linux/major.h>
+ #include <linux/proc_fs.h>
+diff --git a/drivers/xen/features.c b/drivers/xen/features.c
+index 99eda16..9e2b64f 100644
+--- a/drivers/xen/features.c
++++ b/drivers/xen/features.c
+@@ -18,7 +18,7 @@
+ u8 xen_features[XENFEAT_NR_SUBMAPS * 32] __read_mostly;
+ EXPORT_SYMBOL_GPL(xen_features);
+ 
+-void xen_setup_features(void)
++void __init xen_setup_features(void)
+ {
+ 	struct xen_feature_info fi;
+ 	int i, j;
 diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
 index 7d8f531..58996c9 100644
 --- a/drivers/xen/grant-table.c
@@ -8059,6 +8186,225 @@ index 7d8f531..58996c9 100644
  int gnttab_resume(void)
  {
  	if (max_nr_grant_frames() < nr_grant_frames)
+diff --git a/drivers/xen/mce.c b/drivers/xen/mce.c
+new file mode 100644
+index 0000000..ef838f2
+--- /dev/null
++++ b/drivers/xen/mce.c
+@@ -0,0 +1,213 @@
++/******************************************************************************
++ * mce.c
++ * Add Machine Check event Logging support in DOM0
++ *
++ * Driver for receiving and logging machine check event
++ *
++ * Copyright (c) 2008, 2009 Intel Corporation
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License version 2
++ * as published by the Free Software Foundation; or, when distributed
++ * separately from the Linux kernel or incorporated into other
++ * software packages, subject to the following license:
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this source file (the "Software"), to deal in the Software without
++ * restriction, including without limitation the rights to use, copy, modify,
++ * merge, publish, distribute, sublicense, and/or sell copies of the Software,
++ * and to permit persons to whom the Software is furnished to do so, subject to
++ * the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
++ * IN THE SOFTWARE.
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <xen/interface/xen.h>
++#include <asm/xen/hypervisor.h>
++#include <xen/events.h>
++#include <xen/interface/vcpu.h>
++#include <asm/xen/hypercall.h>
++#include <asm/mce.h>
++
++static mc_info_t *g_mi;
++static mcinfo_logical_cpu_t *g_physinfo;
++static uint32_t ncpus;
++
++static int convert_log(struct mc_info *mi)
++{
++	struct mcinfo_common *mic = NULL;
++	struct mcinfo_global *mc_global;
++	struct mcinfo_bank *mc_bank;
++	struct mce m;
++	int i, found = 0;
++
++	x86_mcinfo_lookup(&mic, mi, MC_TYPE_GLOBAL);
++	WARN_ON(!mic);
++
++	mce_setup(&m);
++	mc_global = (struct mcinfo_global *)mic;
++	m.mcgstatus = mc_global->mc_gstatus;
++	m.apicid = mc_global->mc_apicid;
++	for (i = 0; i < ncpus; i++) {
++		if (g_physinfo[i].mc_apicid == m.apicid) {
++			found = 1;
++			break;
++		}
++	}
++	WARN_ON(!found);
++
++	m.socketid = g_physinfo[i].mc_chipid;
++	m.cpu = m.extcpu = g_physinfo[i].mc_cpunr;
++	m.cpuvendor = (__u8)g_physinfo[i].mc_vendor;
++	x86_mcinfo_lookup(&mic, mi, MC_TYPE_BANK);
++	do {
++		if (mic == NULL || mic->size == 0)
++			break;
++		if (mic->type == MC_TYPE_BANK) {
++			mc_bank = (struct mcinfo_bank *)mic;
++			m.misc = mc_bank->mc_misc;
++			m.status = mc_bank->mc_status;
++			m.addr = mc_bank->mc_addr;
++			m.tsc = mc_bank->mc_tsc;
++			m.bank = mc_bank->mc_bank;
++			/*log this record*/
++			mce_log(&m);
++		}
++		mic = x86_mcinfo_next(mic);
++	} while (1);
++
++	return 0;
++}
++
++/*pv_ops domain mce virq handler, logging physical mce error info*/
++static irqreturn_t mce_dom_interrupt(int irq, void *dev_id)
++{
++	xen_mc_t mc_op;
++	int result = 0;
++
++	mc_op.cmd = XEN_MC_fetch;
++	mc_op.interface_version = XEN_MCA_INTERFACE_VERSION;
++	set_xen_guest_handle(mc_op.u.mc_fetch.data, g_mi);
++urgent:
++	mc_op.u.mc_fetch.flags = XEN_MC_URGENT;
++	result = HYPERVISOR_mca(&mc_op);
++	if (result || mc_op.u.mc_fetch.flags & XEN_MC_NODATA ||
++			mc_op.u.mc_fetch.flags & XEN_MC_FETCHFAILED)
++		goto nonurgent;
++	else {
++		result = convert_log(g_mi);
++		if (result)
++			goto end;
++		/* After fetching the error event log entry from DOM0,
++		 * we need to dec the refcnt and release the entry.
++		 * The entry is reserved and inc refcnt when filling
++		 * the error log entry.
++		 */
++		mc_op.u.mc_fetch.flags = XEN_MC_URGENT | XEN_MC_ACK;
++		result = HYPERVISOR_mca(&mc_op);
++		goto urgent;
++	}
++nonurgent:
++	mc_op.u.mc_fetch.flags = XEN_MC_NONURGENT;
++	result = HYPERVISOR_mca(&mc_op);
++	if (result || mc_op.u.mc_fetch.flags & XEN_MC_NODATA ||
++			mc_op.u.mc_fetch.flags & XEN_MC_FETCHFAILED)
++		goto end;
++	else {
++		result = convert_log(g_mi);
++		if (result)
++			goto end;
++		/* After fetching the error event log entry from DOM0,
++		 * we need to dec the refcnt and release the entry. The
++		 * entry is reserved and inc refcnt when filling the
++		 * error log entry.
++		 */
++		mc_op.u.mc_fetch.flags = XEN_MC_NONURGENT | XEN_MC_ACK;
++		result = HYPERVISOR_mca(&mc_op);
++		goto nonurgent;
++	}
++end:
++	return IRQ_HANDLED;
++}
++
++static int bind_virq_for_mce(void)
++{
++	int ret;
++	xen_mc_t mc_op;
++
++	ret  = bind_virq_to_irqhandler(VIRQ_MCA, 0,
++		mce_dom_interrupt, 0, "mce", NULL);
++
++	if (ret < 0) {
++		printk(KERN_ERR "MCE_DOM0_LOG: bind_virq for DOM0 failed\n");
++		return ret;
++	}
++
++	g_mi = kmalloc(sizeof(struct mc_info), GFP_KERNEL);
++
++	if (!g_mi)
++		return -ENOMEM;
++
++	/* Fetch physical CPU Numbers */
++	mc_op.cmd = XEN_MC_physcpuinfo;
++	mc_op.interface_version = XEN_MCA_INTERFACE_VERSION;
++	set_xen_guest_handle(mc_op.u.mc_physcpuinfo.info, g_physinfo);
++	ret = HYPERVISOR_mca(&mc_op);
++	if (ret) {
++		printk(KERN_ERR "MCE_DOM0_LOG: Fail to get physical CPU numbers\n");
++		kfree(g_mi);
++		return ret;
++	}
++
++	/* Fetch each CPU Physical Info for later reference*/
++	ncpus = mc_op.u.mc_physcpuinfo.ncpus;
++	g_physinfo = kmalloc(sizeof(struct mcinfo_logical_cpu)*ncpus,
++					GFP_KERNEL);
++	if (!g_physinfo) {
++		kfree(g_mi);
++		return -ENOMEM;
++	}
++	set_xen_guest_handle(mc_op.u.mc_physcpuinfo.info, g_physinfo);
++	ret = HYPERVISOR_mca(&mc_op);
++	if (ret) {
++		printk(KERN_ERR "MCE_DOM0_LOG: Fail to get physical CPUs info\n");
++		kfree(g_mi);
++		kfree(g_physinfo);
++		return ret;
++	}
++
++	return 0;
++}
++
++static int __init mcelog_init(void)
++{
++	/* Only DOM0 is responsible for MCE logging */
++	if (xen_initial_domain())
++		return bind_virq_for_mce();
++
++	return 0;
++}
++
++
++static void __exit mcelog_cleanup(void)
++{
++	kfree(g_mi);
++	kfree(g_physinfo);
++}
++module_init(mcelog_init);
++module_exit(mcelog_cleanup);
++
++MODULE_LICENSE("GPL");
 diff --git a/drivers/xen/netback/Makefile b/drivers/xen/netback/Makefile
 new file mode 100644
 index 0000000..a01a1a3
@@ -13498,6 +13844,441 @@ index 0000000..83e4714
 +DEFINE_GUEST_HANDLE_STRUCT(xen_platform_op_t);
 +
 +#endif /* __XEN_PUBLIC_PLATFORM_H__ */
+diff --git a/include/xen/interface/xen-mca.h b/include/xen/interface/xen-mca.h
+new file mode 100644
+index 0000000..f31fdab
+--- /dev/null
++++ b/include/xen/interface/xen-mca.h
+@@ -0,0 +1,429 @@
++/******************************************************************************
++ * arch-x86/mca.h
++ *
++ * Contributed by Advanced Micro Devices, Inc.
++ * Author: Christoph Egger <Christoph.Egger at amd.com>
++ *
++ * Guest OS machine check interface to x86 Xen.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to
++ * deal in the Software without restriction, including without limitation the
++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++ * DEALINGS IN THE SOFTWARE.
++ */
++
++/* Full MCA functionality has the following Usecases from the guest side:
++ *
++ * Must have's:
++ * 1. Dom0 and DomU register machine check trap callback handlers
++ *    (already done via "set_trap_table" hypercall)
++ * 2. Dom0 registers machine check event callback handler
++ *    (doable via EVTCHNOP_bind_virq)
++ * 3. Dom0 and DomU fetches machine check data
++ * 4. Dom0 wants Xen to notify a DomU
++ * 5. Dom0 gets DomU ID from physical address
++ * 6. Dom0 wants Xen to kill DomU (already done for "xm destroy")
++ *
++ * Nice to have's:
++ * 7. Dom0 wants Xen to deactivate a physical CPU
++ *    This is better done as separate task, physical CPU hotplugging,
++ *    and hypercall(s) should be sysctl's
++ * 8. Page migration proposed from Xen NUMA work, where Dom0 can tell Xen to
++ *    move a DomU (or Dom0 itself) away from a malicious page
++ *    producing correctable errors.
++ * 9. offlining physical page:
++ *    Xen free's and never re-uses a certain physical page.
++ * 10. Testfacility: Allow Dom0 to write values into machine check MSR's
++ *     and tell Xen to trigger a machine check
++ */
++
++#ifndef __XEN_PUBLIC_ARCH_X86_MCA_H__
++#define __XEN_PUBLIC_ARCH_X86_MCA_H__
++
++/* Hypercall */
++#define __HYPERVISOR_mca __HYPERVISOR_arch_0
++
++/*
++ * The xen-unstable repo has interface version 0x03000001; out interface
++ * is incompatible with that and any future minor revisions, so we
++ * choose a different version number range that is numerically less
++ * than that used in xen-unstable.
++ */
++#define XEN_MCA_INTERFACE_VERSION 0x01ecc003
++
++/* IN: Dom0 calls hypercall to retrieve nonurgent error log entry */
++#define XEN_MC_NONURGENT  0x0001
++/* IN: Dom0/DomU calls hypercall to retrieve urgent error log entry */
++#define XEN_MC_URGENT     0x0002
++/* IN: Dom0 acknowledges previosly-fetched error log entry */
++#define XEN_MC_ACK        0x0004
++
++/* OUT: All is ok */
++#define XEN_MC_OK           0x0
++/* OUT: Domain could not fetch data. */
++#define XEN_MC_FETCHFAILED  0x1
++/* OUT: There was no machine check data to fetch. */
++#define XEN_MC_NODATA       0x2
++/* OUT: Between notification time and this hypercall an other
++ *  (most likely) correctable error happened. The fetched data,
++ *  does not match the original machine check data. */
++#define XEN_MC_NOMATCH      0x4
++
++/* OUT: DomU did not register MC NMI handler. Try something else. */
++#define XEN_MC_CANNOTHANDLE 0x8
++/* OUT: Notifying DomU failed. Retry later or try something else. */
++#define XEN_MC_NOTDELIVERED 0x10
++/* Note, XEN_MC_CANNOTHANDLE and XEN_MC_NOTDELIVERED are mutually exclusive. */
++
++
++#ifndef __ASSEMBLY__
++
++#define VIRQ_MCA VIRQ_ARCH_0 /* G. (DOM0) Machine Check Architecture */
++
++/*
++ * Machine Check Architecure:
++ * structs are read-only and used to report all kinds of
++ * correctable and uncorrectable errors detected by the HW.
++ * Dom0 and DomU: register a handler to get notified.
++ * Dom0 only: Correctable errors are reported via VIRQ_MCA
++ */
++#define MC_TYPE_GLOBAL          0
++#define MC_TYPE_BANK            1
++#define MC_TYPE_EXTENDED        2
++#define MC_TYPE_RECOVERY        3
++
++struct mcinfo_common {
++	uint16_t type;      /* structure type */
++	uint16_t size;      /* size of this struct in bytes */
++};
++
++
++#define MC_FLAG_CORRECTABLE     (1 << 0)
++#define MC_FLAG_UNCORRECTABLE   (1 << 1)
++#define MC_FLAG_RECOVERABLE	(1 << 2)
++#define MC_FLAG_POLLED		(1 << 3)
++#define MC_FLAG_RESET		(1 << 4)
++#define MC_FLAG_CMCI		(1 << 5)
++#define MC_FLAG_MCE		(1 << 6)
++/* contains global x86 mc information */
++struct mcinfo_global {
++	struct mcinfo_common common;
++
++	/* running domain at the time in error (most likely
++	 * the impacted one) */
++	uint16_t mc_domid;
++	uint16_t mc_vcpuid; /* virtual cpu scheduled for mc_domid */
++	uint32_t mc_socketid; /* physical socket of the physical core */
++	uint16_t mc_coreid; /* physical impacted core */
++	uint16_t mc_core_threadid; /* core thread of physical core */
++	uint32_t mc_apicid;
++	uint32_t mc_flags;
++	uint64_t mc_gstatus; /* global status */
++};
++
++/* contains bank local x86 mc information */
++struct mcinfo_bank {
++	struct mcinfo_common common;
++
++	uint16_t mc_bank; /* bank nr */
++	uint16_t mc_domid; /* Usecase 5: domain referenced by mc_addr on
++			* privileged pv-ops dom and if mc_addr is valid.
++			* Never valid on DomU. */
++	uint64_t mc_status; /* bank status */
++	uint64_t mc_addr;   /* bank address, only valid
++					 * if addr bit is set in mc_status */
++	uint64_t mc_misc;
++	uint64_t mc_ctrl2;
++	uint64_t mc_tsc;
++};
++
++
++struct mcinfo_msr {
++	uint64_t reg;   /* MSR */
++	uint64_t value; /* MSR value */
++};
++
++/* contains mc information from other
++ * or additional mc MSRs */
++struct mcinfo_extended {
++	struct mcinfo_common common;
++
++	/* You can fill up to five registers.
++	 * If you need more, then use this structure
++	 * multiple times. */
++
++	uint32_t mc_msrs; /* Number of msr with valid values. */
++	/*
++	 * Currently Intel extended MSR (32/64) include all gp registers
++	 * and E(R)FLAGS, E(R)IP, E(R)MISC, up to 11/19 of them might be
++	 * useful at present. So expand this array to 16/32 to leave room.
++	 */
++	struct mcinfo_msr mc_msr[sizeof(void *) * 4];
++};
++
++/* Recovery Action flags. Giving recovery result information to DOM0 */
++
++/* Xen takes successful recovery action, the error is recovered */
++#define REC_ACTION_RECOVERED (0x1 << 0)
++/* No action is performed by XEN */
++#define REC_ACTION_NONE (0x1 << 1)
++/* It's possible DOM0 might take action ownership in some case */
++#define REC_ACTION_NEED_RESET (0x1 << 2)
++
++/* Different Recovery Action types, if the action is performed successfully,
++ * REC_ACTION_RECOVERED flag will be returned.
++ */
++
++/* Page Offline Action */
++#define MC_ACTION_PAGE_OFFLINE (0x1 << 0)
++/* CPU offline Action */
++#define MC_ACTION_CPU_OFFLINE (0x1 << 1)
++/* L3 cache disable Action */
++#define MC_ACTION_CACHE_SHRINK (0x1 << 2)
++
++/* Below interface used between XEN/DOM0 for passing XEN's recovery action
++ * information to DOM0.
++ * usage Senario: After offlining broken page, XEN might pass its page offline
++ * recovery action result to DOM0. DOM0 will save the information in
++ * non-volatile memory for further proactive actions, such as offlining the
++ * easy broken page earlier when doing next reboot.
++*/
++struct page_offline_action {
++	/* Params for passing the offlined page number to DOM0 */
++	uint64_t mfn;
++	uint64_t status;
++};
++
++struct cpu_offline_action {
++	/* Params for passing the identity of the offlined CPU to DOM0 */
++	uint32_t mc_socketid;
++	uint16_t mc_coreid;
++	uint16_t mc_core_threadid;
++};
++
++#define MAX_UNION_SIZE 16
++struct mcinfo_recovery {
++	struct mcinfo_common common;
++	uint16_t mc_bank; /* bank nr */
++	/* Recovery Action Flags defined above such as REC_ACTION_DONE */
++	uint8_t action_flags;
++	/* Recovery Action types defined above such as MC_ACTION_PAGE_OFFLINE */
++	uint8_t action_types;
++	/* In future if more than one recovery action permitted per error bank,
++	 * a mcinfo_recovery data array will be returned
++	 */
++	union {
++		struct page_offline_action page_retire;
++		struct cpu_offline_action cpu_offline;
++		uint8_t pad[MAX_UNION_SIZE];
++	} action_info;
++};
++
++
++#define MCINFO_HYPERCALLSIZE	1024
++#define MCINFO_MAXSIZE		768
++
++struct mc_info {
++	/* Number of mcinfo_* entries in mi_data */
++	uint32_t mi_nentries;
++	uint32_t _pad0;
++	uint64_t mi_data[(MCINFO_MAXSIZE - 1) / 8];
++};
++typedef struct mc_info mc_info_t;
++DEFINE_GUEST_HANDLE_STRUCT(mc_info);
++
++#define __MC_MSR_ARRAYSIZE 8
++#define __MC_NMSRS 1
++#define MC_NCAPS	7	/* 7 CPU feature flag words */
++#define MC_CAPS_STD_EDX	0	/* cpuid level 0x00000001 (%edx) */
++#define MC_CAPS_AMD_EDX	1	/* cpuid level 0x80000001 (%edx) */
++#define MC_CAPS_TM	2	/* cpuid level 0x80860001 (TransMeta) */
++#define MC_CAPS_LINUX	3	/* Linux-defined */
++#define MC_CAPS_STD_ECX	4	/* cpuid level 0x00000001 (%ecx) */
++#define MC_CAPS_VIA	5	/* cpuid level 0xc0000001 */
++#define MC_CAPS_AMD_ECX	6	/* cpuid level 0x80000001 (%ecx) */
++
++struct mcinfo_logical_cpu {
++	uint32_t mc_cpunr;
++	uint32_t mc_chipid;
++	uint16_t mc_coreid;
++	uint16_t mc_threadid;
++	uint32_t mc_apicid;
++	uint32_t mc_clusterid;
++	uint32_t mc_ncores;
++	uint32_t mc_ncores_active;
++	uint32_t mc_nthreads;
++	int32_t mc_cpuid_level;
++	uint32_t mc_family;
++	uint32_t mc_vendor;
++	uint32_t mc_model;
++	uint32_t mc_step;
++	char mc_vendorid[16];
++	char mc_brandid[64];
++	uint32_t mc_cpu_caps[MC_NCAPS];
++	uint32_t mc_cache_size;
++	uint32_t mc_cache_alignment;
++	int32_t mc_nmsrvals;
++	struct mcinfo_msr mc_msrvalues[__MC_MSR_ARRAYSIZE];
++};
++typedef struct mcinfo_logical_cpu mcinfo_logical_cpu_t;
++DEFINE_GUEST_HANDLE_STRUCT(mcinfo_logical_cpu);
++
++
++/*
++ * OS's should use these instead of writing their own lookup function
++ * each with its own bugs and drawbacks.
++ * We use macros instead of static inline functions to allow guests
++ * to include this header in assembly files (*.S).
++ */
++/* Prototype:
++ *    uint32_t x86_mcinfo_nentries(struct mc_info *mi);
++ */
++#define x86_mcinfo_nentries(_mi)    \
++    ((_mi)->mi_nentries)
++/* Prototype:
++ *    struct mcinfo_common *x86_mcinfo_first(struct mc_info *mi);
++ */
++#define x86_mcinfo_first(_mi)       \
++    ((struct mcinfo_common *)(_mi)->mi_data)
++/* Prototype:
++ *    struct mcinfo_common *x86_mcinfo_next(struct mcinfo_common *mic);
++ */
++#define x86_mcinfo_next(_mic)       \
++    ((struct mcinfo_common *)((uint8_t *)(_mic) + (_mic)->size))
++
++/* Prototype:
++ *    void x86_mcinfo_lookup(void *ret, struct mc_info *mi, uint16_t type);
++ */
++
++static inline void x86_mcinfo_lookup
++	(struct mcinfo_common **ret, struct mc_info *mi, uint16_t type)
++{
++	uint32_t found = 0, i;
++	struct mcinfo_common *mic;
++
++	*ret = NULL;
++	if (!mi)
++		return;
++	mic = x86_mcinfo_first(mi);
++
++	for (i = 0; i < x86_mcinfo_nentries(mi); i++) {
++		if (mic->type == type) {
++			found = 1;
++			break;
++		}
++		mic = x86_mcinfo_next(mic);
++	}
++
++	*ret = found ? mic : NULL;
++}
++/* Usecase 1
++ * Register machine check trap callback handler
++ *    (already done via "set_trap_table" hypercall)
++ */
++
++/* Usecase 2
++ * Dom0 registers machine check event callback handler
++ * done by EVTCHNOP_bind_virq
++ */
++
++/* Usecase 3
++ * Fetch machine check data from hypervisor.
++ * Note, this hypercall is special, because both Dom0 and DomU must use this.
++ */
++#define XEN_MC_fetch            1
++struct xen_mc_fetch {
++    /* IN/OUT variables.
++	 * IN: XEN_MC_NONURGENT, XEN_MC_URGENT,
++	 * XEN_MC_ACK if ack'king an earlier fetch
++	 * OUT: XEN_MC_OK, XEN_MC_FETCHAILED,
++	 * XEN_MC_NODATA, XEN_MC_NOMATCH
++	*/
++	uint32_t flags;
++	uint32_t _pad0;
++	/* OUT: id for ack, IN: id we are ack'ing */
++	uint64_t fetch_id;
++
++	/* OUT variables. */
++	GUEST_HANDLE(mc_info) data;
++};
++typedef struct xen_mc_fetch xen_mc_fetch_t;
++DEFINE_GUEST_HANDLE_STRUCT(xen_mc_fetch);
++
++
++/* Usecase 4
++ * This tells the hypervisor to notify a DomU about the machine check error
++ */
++#define XEN_MC_notifydomain     2
++struct xen_mc_notifydomain {
++	/* IN variables. */
++	uint16_t mc_domid;/* The unprivileged domain to notify. */
++	uint16_t mc_vcpuid;/* The vcpu in mc_domid to notify.
++			* Usually echo'd value from the fetch hypercall. */
++
++	/* IN/OUT variables. */
++	uint32_t flags;
++
++/* OUT: XEN_MC_OK, XEN_MC_CANNOTHANDLE, XEN_MC_NOTDELIVERED, XEN_MC_NOMATCH */
++};
++typedef struct xen_mc_notifydomain xen_mc_notifydomain_t;
++DEFINE_GUEST_HANDLE_STRUCT(xen_mc_notifydomain);
++
++#define XEN_MC_physcpuinfo 3
++struct xen_mc_physcpuinfo {
++	/* IN/OUT */
++	uint32_t ncpus;
++	uint32_t _pad0;
++	/* OUT */
++	GUEST_HANDLE(mcinfo_logical_cpu) info;
++};
++
++#define XEN_MC_msrinject    4
++#define MC_MSRINJ_MAXMSRS       8
++struct xen_mc_msrinject {
++	/* IN */
++	uint32_t mcinj_cpunr;/* target processor id */
++	uint32_t mcinj_flags;/* see MC_MSRINJ_F_* below */
++	uint32_t mcinj_count;/* 0 .. count-1 in array are valid */
++	uint32_t _pad0;
++	struct mcinfo_msr mcinj_msr[MC_MSRINJ_MAXMSRS];
++};
++
++/* Flags for mcinj_flags above; bits 16-31 are reserved */
++#define MC_MSRINJ_F_INTERPOSE   0x1
++
++#define XEN_MC_mceinject    5
++struct xen_mc_mceinject {
++	unsigned int mceinj_cpunr;      /* target processor id */
++};
++
++struct xen_mc {
++	uint32_t cmd;
++	uint32_t interface_version; /* XEN_MCA_INTERFACE_VERSION */
++	union {
++		struct xen_mc_fetch        mc_fetch;
++		struct xen_mc_notifydomain mc_notifydomain;
++		struct xen_mc_physcpuinfo  mc_physcpuinfo;
++		struct xen_mc_msrinject    mc_msrinject;
++		struct xen_mc_mceinject    mc_mceinject;
++	} u;
++};
++typedef struct xen_mc xen_mc_t;
++DEFINE_GUEST_HANDLE_STRUCT(xen_mc);
++
++#endif /* __ASSEMBLY__ */
++
++#endif /* __XEN_PUBLIC_ARCH_X86_MCA_H__ */
 diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h
 index 2befa3e..327db61 100644
 --- a/include/xen/interface/xen.h

xen.pvops.post.patch:
 b/arch/x86/include/asm/paravirt_types.h |    3 +++
 b/arch/x86/kernel/pci-swiotlb.c         |    5 ++---
 b/arch/x86/kernel/process_32.c          |    2 ++
 b/arch/x86/pci/common.c                 |   16 ++++++++++++++++
 drivers/pci/pci.h                       |    2 ++
 5 files changed, 25 insertions(+), 3 deletions(-)

Index: xen.pvops.post.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.post.patch,v
retrieving revision 1.1.2.20
retrieving revision 1.1.2.21
diff -u -p -r1.1.2.20 -r1.1.2.21
--- xen.pvops.post.patch	10 Aug 2009 21:22:20 -0000	1.1.2.20
+++ xen.pvops.post.patch	18 Aug 2009 19:26:48 -0000	1.1.2.21
@@ -1,5 +1,4 @@
 Reapply and merge in Fedora changes
-Test some patches to get STACKPROTECTOR working
 
 --- a/drivers/pci/pci.h	2009-02-25 20:16:13.000000000 +0000
 +++ b/drivers/pci/pci.h	2009-02-25 20:40:21.000000000 +0000
@@ -84,47 +83,3 @@ index 6af96ee..1e66b18 100644
  #endif
  	if (xen_wants_swiotlb())
  		swiotlb = 1;
---- linux-2.6.29.x86_64/arch/x86/xen/Makefile.orig	2009-04-24 22:54:26.000000000 +0100
-+++ linux-2.6.29.x86_64/arch/x86/xen/Makefile	2009-04-26 16:46:57.000000000 +0100
-@@ -4,6 +4,10 @@
- CFLAGS_REMOVE_time.o = -pg
- CFLAGS_REMOVE_irq.o = -pg
- endif
-+nostackp := $(call cc-option, -fno-stack-protector)
-+CFLAGS_enlighten.o		:= $(nostackp)
-+CFLAGS_mmu.o			:= $(nostackp)
-+CFLAGS_irq.o			:= $(nostackp)
- 
- obj-y		:= enlighten.o setup.o multicalls.o mmu.o irq.o \
- 			time.o xen-asm.o xen-asm_$(BITS).o \
---- linux-2.6.29.x86_64/arch/x86/xen/enlighten.c.orig	2009-04-26 16:49:24.000000000 +0100
-+++ linux-2.6.29.x86_64/arch/x86/xen/enlighten.c	2009-04-26 21:57:28.000000000 +0100
-@@ -965,7 +965,7 @@
- 
- 	xen_domain_type = XEN_PV_DOMAIN;
- 
--	BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0);
-+/*	BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0); */
- 
- 	xen_setup_features();
- 
---- linux-2.6.29.x86_64/drivers/xen/Makefile.orig	2009-04-26 16:49:25.000000000 +0100
-+++ linux-2.6.29.x86_64/drivers/xen/Makefile	2009-04-26 22:26:55.000000000 +0100
-@@ -1,3 +1,6 @@
-+nostackp := $(call cc-option, -fno-stack-protector)
-+CFLAGS_features.o		:= $(nostackp)
-+
- obj-y	+= grant-table.o features.o events.o manage.o biomerge.o
- obj-y	+= xenbus/
- 
---- vanilla-2.6.30-rc3/arch/x86/kernel/cpu/Makefile	2009-04-23 20:13:34.000000000 +0100
-+++ linux-2.6.29.x86_64/arch/x86/kernel/cpu/Makefile	2009-04-27 21:47:28.000000000 +0100
-@@ -6,6 +6,8 @@
- ifdef CONFIG_FUNCTION_TRACER
- CFLAGS_REMOVE_common.o = -pg
- endif
-+nostackp := $(call cc-option, -fno-stack-protector)
-+CFLAGS_common.o		:= $(nostackp)
- 
- obj-y			:= intel_cacheinfo.o addon_cpuid_features.o
- obj-y			+= proc.o capflags.o powerflags.o common.o


--- config-powerpc64-kdump DELETED ---




More information about the fedora-extras-commits mailing list