rpms/kernel/devel linux-2.6-ext4-inode-alloc-race.patch, NONE, 1.1.2.2 config-generic, 1.238.6.7, 1.238.6.8 drm-modesetting-radeon.patch, 1.54.6.3, 1.54.6.4 drm-nouveau.patch, 1.8.6.1, 1.8.6.2 kernel.spec, 1.1294.2.9, 1.1294.2.10 linux-2.6-v4l-dvb-update.patch, 1.1.2.3, 1.1.2.4 xen.pvops.patch, 1.1.2.8, 1.1.2.9

Michael Young myoung at fedoraproject.org
Thu Mar 5 22:45:54 UTC 2009


Author: myoung

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

Modified Files:
      Tag: private-myoung-dom0-branch
	config-generic drm-modesetting-radeon.patch drm-nouveau.patch 
	kernel.spec linux-2.6-v4l-dvb-update.patch xen.pvops.patch 
Added Files:
      Tag: private-myoung-dom0-branch
	linux-2.6-ext4-inode-alloc-race.patch 
Log Message:
Another pvops update


linux-2.6-ext4-inode-alloc-race.patch:

--- NEW FILE linux-2.6-ext4-inode-alloc-race.patch ---
Date: 	Tue, 03 Mar 2009 22:38:41 -0600
From: Eric Sandeen <sandeen at redhat.com>
To: ext4 development <linux-ext4 at vger.kernel.org>
CC: "Aneesh Kumar K.V" <aneesh.kumar at linux.vnet.ibm.com>
Subject: [PATCH] fix ext4_free_inode vs. ext4_claim_inode race

I was seeing fsck errors on inode bitmaps after a 4 thread
dbench run on a 4 cpu machine:

Inode bitmap differences: -50736 -(50752--50753) etc...

I believe that this is because ext4_free_inode() uses atomic
bitops, and although ext4_new_inode() *used* to also use atomic 
bitops for synchronization, commit 
393418676a7602e1d7d3f6e560159c65c8cbd50e changed this to use
the sb_bgl_lock, so that we could also synchronize against
read_inode_bitmap and initialization of uninit inode tables.

However, that change left ext4_free_inode using atomic bitops,
which I think leaves no synchronization between setting & 
unsetting bits in the inode table.

The below patch fixes it for me, although I wonder if we're 
getting at all heavy-handed with this spinlock...

Signed-off-by: Eric Sandeen <sandeen at redhat.com>
---

Index: linux-2.6/fs/ext4/ialloc.c
===================================================================
--- linux-2.6.orig/fs/ext4/ialloc.c
+++ linux-2.6/fs/ext4/ialloc.c
@@ -188,7 +188,7 @@ void ext4_free_inode(handle_t *handle, s
 	struct ext4_group_desc *gdp;
 	struct ext4_super_block *es;
 	struct ext4_sb_info *sbi;
-	int fatal = 0, err, count;
+	int fatal = 0, err, count, cleared;
 	ext4_group_t flex_group;
 
 	if (atomic_read(&inode->i_count) > 1) {
@@ -248,8 +248,10 @@ void ext4_free_inode(handle_t *handle, s
 		goto error_return;
 
 	/* Ok, now we can actually update the inode bitmaps.. */
-	if (!ext4_clear_bit_atomic(sb_bgl_lock(sbi, block_group),
-					bit, bitmap_bh->b_data))
+	spin_lock(sb_bgl_lock(sbi, block_group));
+	cleared = ext4_clear_bit(bit, bitmap_bh->b_data);
+	spin_unlock(sb_bgl_lock(sbi, block_group));
+	if (!cleared)
 		ext4_error(sb, "ext4_free_inode",
 			   "bit already cleared for inode %lu", ino);
 	else {




Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-generic,v
retrieving revision 1.238.6.7
retrieving revision 1.238.6.8
diff -u -r1.238.6.7 -r1.238.6.8
--- config-generic	5 Mar 2009 01:30:21 -0000	1.238.6.7
+++ config-generic	5 Mar 2009 22:45:07 -0000	1.238.6.8
@@ -2355,6 +2355,8 @@
 CONFIG_DVB_LGS8GL5=m
 # CONFIG_DVB_DUMMY_FE is not set
 CONFIG_DVB_AF9013=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
 
 #
 # Supported SAA7146 based PCI Adapters
@@ -3948,7 +3950,7 @@
 CONFIG_XEN_NETDEV_BACKEND=y
 # CONFIG_CC_STACKPROTECTOR is not set
 # CONFIG_X86_X2APIC is not set
-# CONFIG_RD_GZIP is not set
+CONFIG_RD_GZIP=y
 # CONFIG_RD_BZIP2 is not set
 # CONFIG_RD_LZMA is not set
 # CONFIG_XEN_GNTDEV is not set

drm-modesetting-radeon.patch:

Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-modesetting-radeon.patch,v
retrieving revision 1.54.6.3
retrieving revision 1.54.6.4
diff -u -r1.54.6.3 -r1.54.6.4
--- drm-modesetting-radeon.patch	5 Mar 2009 01:30:21 -0000	1.54.6.3
+++ drm-modesetting-radeon.patch	5 Mar 2009 22:45:08 -0000	1.54.6.4
@@ -1,3 +1,11 @@
+commit fef48d5013f761faec24ee1044282b6098318237
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Thu Mar 5 15:57:18 2009 +1000
+
+    radeon: add special relocation for WAIT_VLINE
+    
+    This is half ways between a hack and really neat.
+
 commit 530ebda60cb7270795b7edd72930ab2d0e4db102
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Tue Mar 3 18:23:22 2009 +1000
@@ -14369,7 +14377,7 @@
 +	drm_crtc_helper_add(&radeon_crtc->base, &atombios_helper_funcs);
 +}
 diff --git a/drivers/gpu/drm/radeon/r300_cmdbuf.c b/drivers/gpu/drm/radeon/r300_cmdbuf.c
-index 3efa633..c97d529 100644
+index 3efa633..54ecf36 100644
 --- a/drivers/gpu/drm/radeon/r300_cmdbuf.c
 +++ b/drivers/gpu/drm/radeon/r300_cmdbuf.c
 @@ -35,6 +35,7 @@
@@ -14450,20 +14458,24 @@
  	if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RV515) {
  		ADD_RANGE(R500_VAP_INDEX_OFFSET, 1);
  		ADD_RANGE(R500_US_CONFIG, 2);
-@@ -258,7 +265,8 @@ void r300_init_reg_flags(struct drm_device *dev)
+@@ -258,7 +265,10 @@ void r300_init_reg_flags(struct drm_device *dev)
  		ADD_RANGE(R500_RS_INST_0, 16);
  		ADD_RANGE(R500_RB3D_COLOR_CLEAR_VALUE_AR, 2);
  		ADD_RANGE(R500_RB3D_CONSTANT_COLOR_AR, 2);
 -		ADD_RANGE(R500_ZB_FIFO_SIZE, 2);
 +//		ADD_RANGE(R500_ZB_FIFO_SIZE  2);
 +		ADD_RANGE(R500_GA_US_VECTOR_INDEX, 2);
++
++		ADD_RANGE_MARK(AVIVO_D1MODE_VLINE_START_END, 1, MARK_CHECK_WAIT_VLINE);
  	} else {
  		ADD_RANGE(R300_PFS_CNTL_0, 3);
  		ADD_RANGE(R300_PFS_NODE_0, 4);
-@@ -271,9 +279,122 @@ void r300_init_reg_flags(struct drm_device *dev)
+@@ -270,10 +280,124 @@ void r300_init_reg_flags(struct drm_device *dev)
+ 		ADD_RANGE(R300_RS_INTERP_0, 8);
  		ADD_RANGE(R300_RS_ROUTE_0, 8);
  
- 	}
++		ADD_RANGE_MARK(RADEON_CRTC_GUI_TRIG_VLINE, 1, MARK_CHECK_WAIT_VLINE);
++	}
 +
 +	/* add 2d blit engine registers for DDX */
 +	ADD_RANGE(RADEON_SRC_Y_X, 3); /* 1434, 1438, 143c, 
@@ -14576,7 +14588,7 @@
 +			ADD_RANGE_MARK(RADEON_PP_TXOFFSET_1, 1, MARK_CHECK_OFFSET);
 +			ADD_RANGE_MARK(RADEON_PP_TXOFFSET_2, 1, MARK_CHECK_OFFSET);
 +		}
-+	}
+ 	}
  }
  
 -static __inline__ int r300_check_range(unsigned reg, int count)
@@ -14584,7 +14596,7 @@
  {
  	int i;
  	if (reg & ~0xffff)
-@@ -284,6 +405,13 @@ static __inline__ int r300_check_range(unsigned reg, int count)
+@@ -284,6 +408,13 @@ static __inline__ int r300_check_range(unsigned reg, int count)
  	return 0;
  }
  
@@ -19946,10 +19958,10 @@
 +}
 diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
 new file mode 100644
-index 0000000..3084639
+index 0000000..823b82f
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_cs.c
-@@ -0,0 +1,593 @@
+@@ -0,0 +1,667 @@
 +/*
 + * Copyright 2008 Jerome Glisse.
 + * All Rights Reserved.
@@ -20142,6 +20154,71 @@
 +	*offset = reloc[1];
 +	return 0;
 +}
++
++/* special case CRTC relocation for vline waits
++ * userspace doesn't know which CRTC it controls so we have a special sequence
++ * packet0 VLINE_START_END, value
++ * packet0 WAIT_UNTIL, crtc line | crtc_num
++ * packet0 NOP, crtc_id
++ * we relocate the vline register and the wait until crtc_num bit
++ */
++static int radeon_cs_relocate_crtc(struct drm_radeon_cs_parser *parser, uint32_t offset_dw)
++{
++	struct drm_device *dev = parser->dev;
++	struct drm_mode_object *obj;
++	struct drm_crtc *crtc;
++	struct radeon_crtc *radeon_crtc;
++	uint32_t hdr, reg, val, packet3_hdr;
++	int ret = 0;
++	int crtc_id;
++	struct drm_radeon_kernel_chunk *ib_chunk;
++
++	ib_chunk = &parser->chunks[parser->ib_index];
++
++	hdr = ib_chunk->kdata[offset_dw];
++	reg = (hdr & R300_CP_PACKET0_REG_MASK) << 2;
++	val = ib_chunk->kdata[offset_dw + 1];
++	packet3_hdr = ib_chunk->kdata[offset_dw + 4];
++
++	mutex_lock(&dev->mode_config.mutex);
++	obj = drm_mode_object_find(parser->dev, ib_chunk->kdata[offset_dw + 5], DRM_MODE_OBJECT_CRTC);
++	if (!obj) {
++		ret = -EINVAL;
++		goto out;
++	}
++	crtc = obj_to_crtc(obj);
++	radeon_crtc = to_radeon_crtc(crtc);
++
++	crtc_id = radeon_crtc->crtc_id;
++
++	/*
++	 * need to edit both packets
++	 */
++	/* vline start end - for crtc0 no work to do */
++	if (crtc_id == 1) {
++		switch (reg) {
++		case AVIVO_D1MODE_VLINE_START_END:
++				hdr &= R300_CP_PACKET0_REG_MASK;
++				hdr |= AVIVO_D2MODE_VLINE_START_END >> 2;
++				break;
++		case RADEON_CRTC_GUI_TRIG_VLINE:
++				hdr &= R300_CP_PACKET0_REG_MASK;
++				hdr |= RADEON_CRTC2_GUI_TRIG_VLINE >> 2;
++				break;
++		default:
++			DRM_ERROR("unknown CRTC relocation\n");
++			ret = -EINVAL;
++			goto out;
++		}
++		/* relocate the WAIT_UNTIL */
++		ib_chunk->kdata[offset_dw] = hdr;
++		ib_chunk->kdata[offset_dw + 3] |= RADEON_ENG_DISPLAY_SELECT_CRTC1;
++	}
++out:
++	mutex_unlock(&dev->mode_config.mutex);
++	return ret;
++}
++
 +#define RELOC_SIZE 2
 +#define RELOC_SIZE_NEW 0
 +#define RADEON_2D_OFFSET_MASK 0x3fffff
@@ -20304,12 +20381,14 @@
 +	return 0;
 +}
 +
-+int radeon_cs_packet0(struct drm_radeon_cs_parser *parser, uint32_t offset_dw)
++int radeon_cs_packet0(struct drm_radeon_cs_parser *parser, uint32_t *offset_dw_p)
 +{
 +	uint32_t hdr, num_dw, reg;
 +	int count_dw = 1;
 +	int ret;
 +	bool one_reg;
++	uint32_t offset_dw = *offset_dw_p;
++	int incr = 2;
 +
 +	hdr = parser->chunks[parser->ib_index].kdata[offset_dw];
 +	num_dw = ((hdr & RADEON_CP_PACKET_COUNT_MASK) >> 16) + 2;
@@ -20345,6 +20424,13 @@
 +				/* okay it should be followed by a NOP */
 +			} else if (flags == MARK_CHECK_SCISSOR) {
 +				DRM_DEBUG("need to validate scissor %x %d\n", reg, flags);
++			} else if (flags == MARK_CHECK_WAIT_VLINE) {
++				ret = radeon_cs_relocate_crtc(parser, offset_dw);
++				if (ret) {
++					DRM_ERROR("failed to relocate packet\n");
++					return ret;
++				}
++				incr = 4;
 +			} else {
 +				DRM_ERROR("illegal register %x %d %d\n", reg, flags, offset_dw);
 +				return -EINVAL;
@@ -20357,6 +20443,7 @@
 +		count_dw++;
 +		reg += 4;
 +	}
++	*offset_dw_p += incr;
 +	return 0;
 +}
 +
@@ -20378,8 +20465,7 @@
 +
 +		switch (hdr & RADEON_CP_PACKET_MASK) {
 +		case RADEON_CP_PACKET0:
-+			ret = radeon_cs_packet0(parser, count_dw);
-+			num_dw += 2;
++			ret = radeon_cs_packet0(parser, &count_dw);
 +			break;
 +		case RADEON_CP_PACKET1:
 +		case RADEON_CP_PACKET2:
@@ -21725,7 +21811,7 @@
  }
  
 diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
-index 7091aaf..44acdd7 100644
+index 7091aaf..e2b94a4 100644
 --- a/drivers/gpu/drm/radeon/radeon_drv.h
 +++ b/drivers/gpu/drm/radeon/radeon_drv.h
 @@ -34,6 +34,8 @@
@@ -22327,7 +22413,7 @@
  } while (0)
  
  #define RADEON_WAIT_UNTIL_3D_IDLE() do {				\
-@@ -2036,4 +2203,158 @@ extern void radeon_commit_ring(drm_radeon_private_t *dev_priv);
+@@ -2036,4 +2203,159 @@ extern void radeon_commit_ring(drm_radeon_private_t *dev_priv);
  	write &= mask;						\
  } while (0)
  
@@ -22473,6 +22559,7 @@
 +#define MARK_SAFE		1
 +#define MARK_CHECK_OFFSET	2
 +#define MARK_CHECK_SCISSOR	3
++#define MARK_CHECK_WAIT_VLINE   4 /* VLINE on a crtc relocation */
 +
 +struct _radeon_pkt_s {
 +	int start;
@@ -29766,10 +29853,10 @@
 +
 diff --git a/drivers/gpu/drm/radeon/radeon_reg.h b/drivers/gpu/drm/radeon/radeon_reg.h
 new file mode 100644
-index 0000000..bb9ad4a
+index 0000000..9ccf839
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_reg.h
-@@ -0,0 +1,5335 @@
+@@ -0,0 +1,5337 @@
 +/*
 + * Copyright 2000 ATI Technologies Inc., Markham, Ontario, and
 + *                VA Linux Systems Inc., Fremont, California.
@@ -33431,6 +33518,7 @@
 +#define AVIVO_D1MODE_DATA_FORMAT                0x6528
 +#       define AVIVO_D1MODE_INTERLEAVE_EN       (1 << 0)
 +#define AVIVO_D1MODE_DESKTOP_HEIGHT             0x652C
++#define AVIVO_D1MODE_VLINE_START_END		0x6538
 +#define AVIVO_D1MODE_VIEWPORT_START             0x6580
 +#define AVIVO_D1MODE_VIEWPORT_SIZE              0x6584
 +#define AVIVO_D1MODE_EXT_OVERSCAN_LEFT_RIGHT    0x6588
@@ -33482,6 +33570,7 @@
 +#define AVIVO_D2CUR_SIZE                        0x6c10
 +#define AVIVO_D2CUR_POSITION                    0x6c14
 +
++#define AVIVO_D2MODE_VLINE_START_END            0x6d38
 +#define AVIVO_D2MODE_VIEWPORT_START             0x6d80
 +#define AVIVO_D2MODE_VIEWPORT_SIZE              0x6d84
 +#define AVIVO_D2MODE_EXT_OVERSCAN_LEFT_RIGHT    0x6d88

drm-nouveau.patch:

Index: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-nouveau.patch,v
retrieving revision 1.8.6.1
retrieving revision 1.8.6.2
diff -u -r1.8.6.1 -r1.8.6.2
--- drm-nouveau.patch	5 Mar 2009 01:30:22 -0000	1.8.6.1
+++ drm-nouveau.patch	5 Mar 2009 22:45:08 -0000	1.8.6.2
@@ -2355,10 +2355,10 @@
 +#endif
 diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
 new file mode 100644
-index 0000000..f5adfef
+index 0000000..7147114
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
-@@ -0,0 +1,160 @@
+@@ -0,0 +1,163 @@
 +/*
 + * Copyright 2005 Stephane Marchesin.
 + * All Rights Reserved.
@@ -2398,6 +2398,9 @@
 +int nouveau_fbpercrtc = 0;
 +module_param_named(fbpercrtc, nouveau_fbpercrtc, int, 0400);
 +
++int nouveau_noagp = 0;
++module_param_named(noagp, nouveau_noagp, int, 0400);
++
 +static struct pci_device_id pciidlist[] = {
 +	{
 +		PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID),
@@ -6593,10 +6596,10 @@
 +}
 diff --git a/drivers/gpu/drm/nouveau/nouveau_mem.c b/drivers/gpu/drm/nouveau/nouveau_mem.c
 new file mode 100644
-index 0000000..abc00ec
+index 0000000..a15a106
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nouveau_mem.c
-@@ -0,0 +1,1067 @@
+@@ -0,0 +1,1073 @@
 +/*
 + * Copyright (C) The Weather Channel, Inc.  2002.  All Rights Reserved.
 + * Copyright 2005 Stephane Marchesin
@@ -6634,6 +6637,8 @@
 +#include "drm_sarea.h"
 +#include "nouveau_drv.h"
 +
++extern int nouveau_noagp;
++
 +static struct mem_block *
 +split_block(struct mem_block *p, uint64_t start, uint64_t size,
 +	    struct drm_file *file_priv)
@@ -7093,6 +7098,9 @@
 +	struct drm_agp_mode mode;
 +	int ret;
 +
++	if (nouveau_noagp)
++		return 0;
++
 +	nouveau_mem_reset_agp(dev);
 +
 +	ret = drm_agp_acquire(dev);
@@ -7244,10 +7252,7 @@
 +	/* Init FB */
 +	dev_priv->fb_phys=drm_get_resource_start(dev,1);
 +	fb_size = nouveau_mem_fb_amount(dev);
-+	/* On at least NV40, RAMIN is actually at the end of vram.
-+	 * We don't want to allocate this... */
-+	if (dev_priv->card_type >= NV_40)
-+		fb_size -= dev_priv->ramin_rsvd_vram;
++	fb_size -= dev_priv->ramin_rsvd_vram;
 +	dev_priv->fb_available_size = fb_size;
 +	DRM_DEBUG("Available VRAM: %dKiB\n", fb_size>>10);
 +
@@ -7606,14 +7611,18 @@
 +	NOUVEAU_CHECK_MM_DISABLED_WITH_RETURN;
 +
 +	block=NULL;
-+	if (memfree->flags & NOUVEAU_MEM_FB)
++	if (dev_priv->fb_heap && memfree->flags & NOUVEAU_MEM_FB)
 +		block = find_block(dev_priv->fb_heap, memfree->offset);
-+	else if (memfree->flags & NOUVEAU_MEM_AGP)
++	else
++	if (dev_priv->agp_heap && memfree->flags & NOUVEAU_MEM_AGP)
 +		block = find_block(dev_priv->agp_heap, memfree->offset);
-+	else if (memfree->flags & NOUVEAU_MEM_PCI)
++	else
++	if (dev_priv->pci_heap && memfree->flags & NOUVEAU_MEM_PCI)
 +		block = find_block(dev_priv->pci_heap, memfree->offset);
++
 +	if (!block)
 +		return -EFAULT;
++
 +	if (block->file_priv != file_priv)
 +		return -EPERM;
 +
@@ -7848,10 +7857,10 @@
 +}
 diff --git a/drivers/gpu/drm/nouveau/nouveau_object.c b/drivers/gpu/drm/nouveau/nouveau_object.c
 new file mode 100644
-index 0000000..5bbcc59
+index 0000000..48ff77e
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nouveau_object.c
-@@ -0,0 +1,1228 @@
+@@ -0,0 +1,1229 @@
 +/*
 + * Copyright (C) 2006 Ben Skeggs.
 + *
@@ -8046,6 +8055,7 @@
 +		if (co >= dev_priv->ramht_size)
 +			co = 0;
 +	} while (co != ho);
++	list_del(&ref->list);
 +	instmem->finish_access(dev);
 +
 +	DRM_ERROR("RAMHT entry not found. ch=%d, handle=0x%08x\n",
@@ -8916,9 +8926,9 @@
 +				    chan->vm_vram_pt[i]->instance | 0x61);
 +			INSTANCE_WR(chan->vm_pd, pde++, 0x00000000);
 +		}
-+	}
 +
-+	instmem->finish_access(dev);
++		instmem->finish_access(dev);
++	}
 +
 +	/* RAMHT */
 +	if (dev_priv->card_type < NV_50) {
@@ -10291,10 +10301,10 @@
 +}
 diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
 new file mode 100644
-index 0000000..19c8861
+index 0000000..6b7fed1
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nouveau_state.c
-@@ -0,0 +1,935 @@
+@@ -0,0 +1,942 @@
 +/*
 + * Copyright 2005 Stephane Marchesin
 + * Copyright 2008 Stuart Bennett
@@ -10761,25 +10771,6 @@
 +		nv_wr32(NV03_PMC_BOOT_1,0x00000001);
 +
 +	DRM_MEMORYBARRIER();
-+
-+	/* if we have an OF card, copy vbios to RAMIN */
-+	dn = pci_device_to_OF_node(dev->pdev);
-+	if (dn)
-+	{
-+		int size;
-+		const uint32_t *bios = of_get_property(dn, "NVDA,BMP", &size);
-+		if (bios)
-+		{
-+			int i;
-+			for(i=0;i<size;i+=4)
-+				nv_wi32(i, bios[i/4]);
-+			DRM_INFO("OF bios successfully copied (%d bytes)\n",size);
-+		}
-+		else
-+			DRM_INFO("Unable to get the OF bios\n");
-+	}
-+	else
-+		DRM_INFO("Unable to get the OF node\n");
 +#endif
 +
 +	/* Time to determine the card architecture */
@@ -10866,6 +10857,28 @@
 +		}
 +	}
 +
++#if defined(__powerpc__)
++	/* if we have an OF card, copy vbios to RAMIN */
++	dn = pci_device_to_OF_node(dev->pdev);
++	if (dn)
++	{
++		int size;
++		const uint32_t *bios = of_get_property(dn, "NVDA,BMP", &size);
++		if (bios)
++		{
++			int i;
++			dev_priv->engine.instmem.prepare_access(dev, true);
++			for(i=0;i<size;i+=4)
++				nv_wi32(i, bios[i/4]);
++			dev_priv->engine.instmem.finish_access(dev);
++			DRM_INFO("OF bios successfully copied (%d bytes)\n",size);
++		}
++		else
++			DRM_INFO("Unable to get the OF bios\n");
++	}
++	else
++		DRM_INFO("Unable to get the OF node\n");
++#endif
 +
 +	/* For those who think they want to be funny. */
 +	if (dev_priv->card_type < NV_50)
@@ -11160,8 +11173,10 @@
 +		}
 +	}
 +
++	dev_priv->engine.instmem.prepare_access(dev, true);
 +	for (i = 0; i < susres->ramin_size / 4; i++)
 +		nv_wi32(i << 2, susres->ramin_copy[i]);
++	dev_priv->engine.instmem.finish_access(dev);
 +
 +	engine->mc.init(dev);
 +	engine->timer.init(dev);
@@ -11180,8 +11195,10 @@
 +	/* PMC power cycling PFIFO in init clobbers some of the stuff stored in
 +	 * PRAMIN (such as NV04_PFIFO_CACHE1_DMA_INSTANCE). this is unhelpful
 +	 */
++	dev_priv->engine.instmem.prepare_access(dev, true);
 +	for (i = 0; i < susres->ramin_size / 4; i++)
 +		nv_wi32(i << 2, susres->ramin_copy[i]);
++	dev_priv->engine.instmem.finish_access(dev);
 +
 +	engine->fifo.load_context(dev_priv->fifos[0]);
 +	nv_wr32(NV04_PFIFO_MODE, susres->fifo_mode);
@@ -12172,10 +12189,10 @@
 +}
 diff --git a/drivers/gpu/drm/nouveau/nv04_instmem.c b/drivers/gpu/drm/nouveau/nv04_instmem.c
 new file mode 100644
-index 0000000..7d902d8
+index 0000000..a83d271
 --- /dev/null
 +++ b/drivers/gpu/drm/nouveau/nv04_instmem.c
-@@ -0,0 +1,188 @@
+@@ -0,0 +1,189 @@
 +#include "drmP.h"
 +#include "drm.h"
 +#include "nouveau_drv.h"
@@ -12205,16 +12222,17 @@
 +			break;
 +		}
 +	} else {
-+		/*XXX: what *are* the limits on <NV40 cards?, and does RAMIN
-+		 *     exist in vram on those cards as well?
++		/*XXX: what *are* the limits on <NV40 cards?
 +		 */
 +		dev_priv->ramin_rsvd_vram = (512*1024);
 +	}
 +	DRM_DEBUG("RAMIN size: %dKiB\n", dev_priv->ramin_rsvd_vram>>10);
 +
 +	/* Clear all of it, except the BIOS image that's in the first 64KiB */
++	dev_priv->engine.instmem.prepare_access(dev, true);
 +	for (i=(64*1024); i<dev_priv->ramin_rsvd_vram; i+=4)
 +		nv_wi32(i, 0x00000000);
++	dev_priv->engine.instmem.finish_access(dev);
 +}
 +
 +static void


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1294.2.9
retrieving revision 1.1294.2.10
diff -u -r1.1294.2.9 -r1.1294.2.10
--- kernel.spec	5 Mar 2009 01:30:23 -0000	1.1294.2.9
+++ kernel.spec	5 Mar 2009 22:45:09 -0000	1.1294.2.10
@@ -246,7 +246,7 @@
 
 # no need to build headers again for these arches,
 # they can just use i586 and ppc64 headers
-%ifarch i686 ppc64iseries ppc ppc64
+%ifarch i686 ppc64iseries
 %define with_headers 0
 %endif
 
@@ -259,9 +259,9 @@
 %endif
 
 # bootwrapper is only on ppc
-#%ifnarch ppc ppc64
+%ifnarch ppc ppc64
 %define with_bootwrapper 0
-#%endif
+%endif
 
 # sparse blows up on ppc64 alpha and sparc64
 %ifarch ppc64 ppc alpha sparc64
@@ -464,7 +464,7 @@
 Release: %{pkg_release}
 # DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD.
 # SET %%nobuildarches (ABOVE) INSTEAD
-ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ia64 sparc sparc64 s390x alpha alphaev56 %{arm}
+ExclusiveArch: noarch %{all_x86} x86_64 ia64 sparc sparc64 s390x alpha alphaev56 %{arm}
 ExclusiveOS: Linux
 
 %kernel_reqprovconf
@@ -674,6 +674,9 @@
 Patch2899: linux-2.6-v4l-dvb-fixes.patch
 Patch2900: linux-2.6-v4l-dvb-update.patch
 
+# ext4 fixes
+Patch2910: linux-2.6-ext4-inode-alloc-race.patch
+
 Patch9001: revert-fix-modules_install-via-nfs.patch
 
 Patch9997: xen.pvops.pre.patch
@@ -1089,6 +1092,7 @@
 #
 
 # ext4
+ApplyPatch linux-2.6-ext4-inode-alloc-race.patch
 
 # xfs
 
@@ -1188,7 +1192,7 @@
 #ApplyPatch drm-radeon-pm.patch
 ApplyPatch drm-no-gem-on-i8xx.patch
 ApplyPatch drm-i915-resume-force-mode.patch
-ApplyPatch drm-fix-setmaster-deadlock.patch
+#ApplyPatch drm-fix-setmaster-deadlock.patch
 
 # linux1394 git patches
 ApplyPatch linux-2.6-firewire-git-update.patch
@@ -1798,7 +1802,28 @@
 # and build.
 
 %changelog
-* Wed Mar  4 2009  <m.a.young at durham.ac.uk>
+* Wed Mar 05 2009 Michael Young <m.a.young at durham.ac.uk>
+- update pvops patch
+- disable drm-fix-setmaster-deadlock.patch as included in pvops patch
+- set CONFIG_RD_GZIP for non-xen boot
+- take ppc and ppc64 out of ExclusiveArch and hope it doesn't break anything
+
+* Thu Mar 05 2009 Dave Airlie <airlied at redhat.com>
+- drm-radeon-modesetting.patch: add new relocation for Xv sync
+
+* Thu Mar 05 2009 Ben Skeggs <bskeggs at redhat.com>
+- drm-nouveau.patch: fix some issues mainly seen on earlier chipsets
+
+* Thu Mar 05 2009 Eric Sandeen <sandeen at redhat.com>
+- Fix ext4 race between inode bitmap set/clear
+
+* Thu Mar 05 2009 Ben Skeggs <bskeggs at redhat.com>
+- drm-nouveau.patch: fix <nv50 chipsets, and ppc.
+
+* Wed Mar  4 2009 Mauro Carvalho Chehab <mchehab at redhat.com>
+- drivers/media: fixes and improvements on devel tree
+
+* Wed Mar  4 2009 Michael Young <m.a.young at durham.ac.uk>
 - update to latest pvops patch
 - merge conflict from drm-next.patch
 - disable ppc and ppc64 packages

linux-2.6-v4l-dvb-update.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1.2.3 -r 1.1.2.4 linux-2.6-v4l-dvb-update.patch
Index: linux-2.6-v4l-dvb-update.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-v4l-dvb-update.patch,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -r1.1.2.3 -r1.1.2.4
--- linux-2.6-v4l-dvb-update.patch	5 Mar 2009 01:30:24 -0000	1.1.2.3
+++ linux-2.6-v4l-dvb-update.patch	5 Mar 2009 22:45:10 -0000	1.1.2.4
@@ -11,25 +11,28 @@
  'f'	00-1F	linux/ext2_fs.h
  'h'	00-7F				Charon filesystem
 diff --git a/Documentation/video4linux/CARDLIST.bttv b/Documentation/video4linux/CARDLIST.bttv
-index 0d93fa1..4dfe626 100644
+index 0d93fa1..1da2c62 100644
 --- a/Documentation/video4linux/CARDLIST.bttv
 +++ b/Documentation/video4linux/CARDLIST.bttv
-@@ -154,3 +154,4 @@
+@@ -154,3 +154,6 @@
  153 -> PHYTEC VD-012 (bt878)
  154 -> PHYTEC VD-012-X1 (bt878)
  155 -> PHYTEC VD-012-X2 (bt878)
 +156 -> IVCE-8784                                           [0000:f050,0001:f050,0002:f050,0003:f050]
++157 -> Geovision GV-800(S) (master)                        [800a:763d]
++158 -> Geovision GV-800(S) (slave)                         [800b:763d,800c:763d,800d:763d]
 diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885
-index 35ea130..5937ff9 100644
+index 35ea130..91aa3c0 100644
 --- a/Documentation/video4linux/CARDLIST.cx23885
 +++ b/Documentation/video4linux/CARDLIST.cx23885
-@@ -12,3 +12,6 @@
+@@ -12,3 +12,7 @@
   11 -> DViCO FusionHDTV DVB-T Dual Express                 [18ac:db78]
   12 -> Leadtek Winfast PxDVR3200 H                         [107d:6681]
   13 -> Compro VideoMate E650F                              [185b:e800]
 + 14 -> TurboSight TBS 6920                                 [6920:8888]
 + 15 -> TeVii S470                                          [d470:9022]
 + 16 -> DVBWorld DVB-S2 2005                                [0001:2005]
++ 17 -> NetUP Dual DVB-S2 CI                                [1b55:2a2c]
 diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx
 index 75bded8..78d0a6e 100644
 --- a/Documentation/video4linux/CARDLIST.em28xx
@@ -854,7 +857,7 @@
  		i2c_adapter->algo	   = &saa7146_algo;
  		i2c_adapter->algo_data     = NULL;
 diff --git a/drivers/media/common/saa7146_video.c b/drivers/media/common/saa7146_video.c
-index 47fee05..8d8cb7f 100644
+index 47fee05..8035285 100644
 --- a/drivers/media/common/saa7146_video.c
 +++ b/drivers/media/common/saa7146_video.c
 @@ -1,4 +1,5 @@
@@ -1281,7 +1284,7 @@
  /********************************************************************************/
  /* common pagetable functions */
  
-@@ -829,231 +497,451 @@ static int video_end(struct saa7146_fh *fh, struct file *file)
+@@ -829,231 +497,448 @@ static int video_end(struct saa7146_fh *fh, struct file *file)
  	return 0;
  }
  
@@ -1384,11 +1387,6 @@
 +	return 0;
 +}
 +
-+static int vidioc_enum_fmt_vid_overlay(struct file *file, void *fh, struct v4l2_fmtdesc *f)
-+{
-+	return vidioc_enum_fmt_vid_cap(file, fh, f);
-+}
-+
 +static int vidioc_queryctrl(struct file *file, void *fh, struct v4l2_queryctrl *c)
 +{
 +	const struct v4l2_queryctrl *ctrl;
@@ -1468,11 +1466,7 @@
  
 -	/* fixme: add handle "after" case (is it still needed?) */
 +	mutex_lock(&dev->lock);
- 
--	switch (fh->type) {
--	case V4L2_BUF_TYPE_VIDEO_CAPTURE: {
--		ops = &saa7146_video_uops;
--		q = &fh->video_q;
++
 +	switch (ctrl->type) {
 +	case V4L2_CTRL_TYPE_BOOLEAN:
 +	case V4L2_CTRL_TYPE_MENU:
@@ -1481,11 +1475,15 @@
 +			c->value = ctrl->minimum;
 +		if (c->value > ctrl->maximum)
 +			c->value = ctrl->maximum;
- 		break;
++		break;
 +	default:
 +		/* nothing */;
 +	}
-+
+ 
+-	switch (fh->type) {
+-	case V4L2_BUF_TYPE_VIDEO_CAPTURE: {
+-		ops = &saa7146_video_uops;
+-		q = &fh->video_q;
 +	switch (c->id) {
 +	case V4L2_CID_BRIGHTNESS: {
 +		u32 value = saa7146_read(dev, BCS_CTRL);
@@ -1493,7 +1491,7 @@
 +		value |= (c->value << 24);
 +		saa7146_write(dev, BCS_CTRL, value);
 +		saa7146_write(dev, MC2, MASK_22 | MASK_06);
-+		break;
+ 		break;
 +	}
 +	case V4L2_CID_CONTRAST: {
 +		u32 value = saa7146_read(dev, BCS_CTRL);
@@ -1565,19 +1563,8 @@
 -	case VIDIOC_G_FBUF:
 -	{
 -		struct v4l2_framebuffer *fb = arg;
-+	return 0;
-+}
- 
+-
 -		DEB_EE(("VIDIOC_G_FBUF\n"));
-+static int vidioc_g_parm(struct file *file, void *fh,
-+		struct v4l2_streamparm *parm)
-+{
-+	if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-+		return -EINVAL;
-+	parm->parm.capture.readbuffers = 1;
-+	/* fixme: only for PAL! */
-+	parm->parm.capture.timeperframe.numerator = 1;
-+	parm->parm.capture.timeperframe.denominator = 25;
 +	return 0;
 +}
  
@@ -1589,25 +1576,27 @@
 -	{
 -		struct v4l2_framebuffer *fb = arg;
 -		struct saa7146_format *fmt;
-+static int vidioc_g_fmt_vid_cap(struct file *file, void *fh, struct v4l2_format *f)
++static int vidioc_g_parm(struct file *file, void *fh,
++		struct v4l2_streamparm *parm)
 +{
-+	f->fmt.pix = ((struct saa7146_fh *)fh)->video_fmt;
-+	return 0;
-+}
++	struct saa7146_dev *dev = ((struct saa7146_fh *)fh)->dev;
++	struct saa7146_vv *vv = dev->vv_data;
  
 -		DEB_EE(("VIDIOC_S_FBUF\n"));
-+static int vidioc_g_fmt_vid_overlay(struct file *file, void *fh, struct v4l2_format *f)
-+{
-+	f->fmt.win = ((struct saa7146_fh *)fh)->ov.win;
++	if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
++		return -EINVAL;
++	parm->parm.capture.readbuffers = 1;
++	v4l2_video_std_frame_period(vv->standard->id,
++				    &parm->parm.capture.timeperframe);
 +	return 0;
 +}
  
 -		if(!capable(CAP_SYS_ADMIN) &&
 -		   !capable(CAP_SYS_RAWIO))
 -			return -EPERM;
-+static int vidioc_g_fmt_vbi_cap(struct file *file, void *fh, struct v4l2_format *f)
++static int vidioc_g_fmt_vid_cap(struct file *file, void *fh, struct v4l2_format *f)
 +{
-+	f->fmt.vbi = ((struct saa7146_fh *)fh)->vbi_fmt;
++	f->fmt.pix = ((struct saa7146_fh *)fh)->video_fmt;
 +	return 0;
 +}
  
@@ -1616,20 +1605,21 @@
 -		if (NULL == fmt) {
 -			return -EINVAL;
 -		}
-+static int vidioc_try_fmt_vid_cap(struct file *file, void *fh, struct v4l2_format *f)
++static int vidioc_g_fmt_vid_overlay(struct file *file, void *fh, struct v4l2_format *f)
 +{
-+	struct saa7146_dev *dev = ((struct saa7146_fh *)fh)->dev;
-+	struct saa7146_vv *vv = dev->vv_data;
-+	struct saa7146_format *fmt;
-+	enum v4l2_field field;
-+	int maxw, maxh;
-+	int calc_bpl;
++	f->fmt.win = ((struct saa7146_fh *)fh)->ov.win;
++	return 0;
++}
  
 -		/* planar formats are not allowed for overlay video, clipping and video dma would clash */
 -		if (0 != (fmt->flags & FORMAT_IS_PLANAR)) {
 -			DEB_S(("planar pixelformat '%4.4s' not allowed for overlay\n",(char *)&fmt->pixelformat));
 -		}
-+	DEB_EE(("V4L2_BUF_TYPE_VIDEO_CAPTURE: dev:%p, fh:%p\n", dev, fh));
++static int vidioc_g_fmt_vbi_cap(struct file *file, void *fh, struct v4l2_format *f)
++{
++	f->fmt.vbi = ((struct saa7146_fh *)fh)->vbi_fmt;
++	return 0;
++}
  
 -		/* check if overlay is running */
 -		if (IS_OVERLAY_ACTIVE(fh) != 0) {
@@ -1638,43 +1628,17 @@
[...16650 lines suppressed...]
+-		break;
 +static int zoran_s_ctrl(struct file *file, void *__fh, struct v4l2_control *ctrl)
 +{
 +	struct zoran_fh *fh = __fh;
 +	struct zoran *zr = fh->zr;
  
--		dprintk(3, KERN_DEBUG "%s: VIDIOC_S_OUTPUT - output=%d\n",
--			ZR_DEVNAME(zr), *output);
+-	case VIDIOC_S_OUTPUT:
+-	{
+-		int *output = arg;
 +	/* we only support hue/saturation/contrast/brightness */
 +	if (ctrl->id < V4L2_CID_BRIGHTNESS ||
 +	    ctrl->id > V4L2_CID_HUE)
 +		return -EINVAL;
  
--		if (*output != 0)
--			return -EINVAL;
+-		dprintk(3, KERN_DEBUG "%s: VIDIOC_S_OUTPUT - output=%d\n",
+-			ZR_DEVNAME(zr), *output);
 +	mutex_lock(&zr->resource_lock);
 +	decoder_call(zr, core, s_ctrl, ctrl);
 +	mutex_unlock(&zr->resource_lock);
  
+-		if (*output != 0)
+-			return -EINVAL;
++	return 0;
++}
+ 
 -		return 0;
 -	}
 -		break;
-+	return 0;
-+}
++static int zoran_g_std(struct file *file, void *__fh, v4l2_std_id *std)
++{
++	struct zoran_fh *fh = __fh;
++	struct zoran *zr = fh->zr;
  
 -		/* cropping (sub-frame capture) */
 -	case VIDIOC_CROPCAP:
 -	{
 -		struct v4l2_cropcap *cropcap = arg;
 -		int type = cropcap->type, res = 0;
-+static int zoran_g_std(struct file *file, void *__fh, v4l2_std_id *std)
-+{
-+	struct zoran_fh *fh = __fh;
-+	struct zoran *zr = fh->zr;
- 
--		dprintk(3, KERN_ERR "%s: VIDIOC_CROPCAP - type=%d\n",
--			ZR_DEVNAME(zr), cropcap->type);
 +	mutex_lock(&zr->resource_lock);
 +	*std = zr->norm;
 +	mutex_unlock(&zr->resource_lock);
 +	return 0;
 +}
  
--		memset(cropcap, 0, sizeof(*cropcap));
--		cropcap->type = type;
+-		dprintk(3, KERN_ERR "%s: VIDIOC_CROPCAP - type=%d\n",
+-			ZR_DEVNAME(zr), cropcap->type);
 +static int zoran_s_std(struct file *file, void *__fh, v4l2_std_id *std)
 +{
 +	struct zoran_fh *fh = __fh;
 +	struct zoran *zr = fh->zr;
 +	int res = 0;
  
--		mutex_lock(&zr->resource_lock);
+-		memset(cropcap, 0, sizeof(*cropcap));
+-		cropcap->type = type;
 +	mutex_lock(&zr->resource_lock);
 +	res = zoran_set_norm(zr, *std);
 +	if (res)
 +		goto sstd_unlock_and_return;
  
+-		mutex_lock(&zr->resource_lock);
++	res = wait_grab_pending(zr);
++sstd_unlock_and_return:
++	mutex_unlock(&zr->resource_lock);
++	return res;
++}
+ 
 -		if (cropcap->type != V4L2_BUF_TYPE_VIDEO_OUTPUT &&
 -		    (cropcap->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
 -		     fh->map_mode == ZORAN_MAP_MODE_RAW)) {
@@ -51832,11 +65728,11 @@
 -			res = -EINVAL;
 -			goto cropcap_unlock_and_return;
 -		}
-+	res = wait_grab_pending(zr);
-+sstd_unlock_and_return:
-+	mutex_unlock(&zr->resource_lock);
-+	return res;
-+}
++static int zoran_enum_input(struct file *file, void *__fh,
++				 struct v4l2_input *inp)
++{
++	struct zoran_fh *fh = __fh;
++	struct zoran *zr = fh->zr;
  
 -		cropcap->bounds.top = cropcap->bounds.left = 0;
 -		cropcap->bounds.width = BUZ_MAX_WIDTH;
@@ -51847,33 +65743,27 @@
 -	cropcap_unlock_and_return:
 -		mutex_unlock(&zr->resource_lock);
 -		return res;
--	}
--		break;
-+static int zoran_enum_input(struct file *file, void *__fh,
-+				 struct v4l2_input *inp)
-+{
-+	struct zoran_fh *fh = __fh;
-+	struct zoran *zr = fh->zr;
- 
--	case VIDIOC_G_CROP:
--	{
--		struct v4l2_crop *crop = arg;
--		int type = crop->type, res = 0;
 +	if (inp->index < 0 || inp->index >= zr->card.inputs)
 +		return -EINVAL;
 +	else {
 +		int id = inp->index;
 +		memset(inp, 0, sizeof(*inp));
 +		inp->index = id;
-+	}
+ 	}
+-		break;
  
--		dprintk(3, KERN_ERR "%s: VIDIOC_G_CROP - type=%d\n",
--			ZR_DEVNAME(zr), crop->type);
+-	case VIDIOC_G_CROP:
+-	{
+-		struct v4l2_crop *crop = arg;
+-		int type = crop->type, res = 0;
 +	strncpy(inp->name, zr->card.input[inp->index].name,
 +		sizeof(inp->name) - 1);
 +	inp->type = V4L2_INPUT_TYPE_CAMERA;
 +	inp->std = V4L2_STD_ALL;
  
+-		dprintk(3, KERN_ERR "%s: VIDIOC_G_CROP - type=%d\n",
+-			ZR_DEVNAME(zr), crop->type);
+-
 -		memset(crop, 0, sizeof(*crop));
 -		crop->type = type;
 +	/* Get status of video decoder */
@@ -52381,7 +66271,7 @@
  }
  
  static unsigned int
-@@ -4300,10 +3260,7 @@ zoran_vm_close (struct vm_area_struct *vma)
+@@ -4300,10 +3255,7 @@ zoran_vm_close (struct vm_area_struct *vma)
  					    fh->jpg_buffers.active =
  					    ZORAN_FREE;
  				}
@@ -52393,7 +66283,7 @@
  				mutex_unlock(&zr->resource_lock);
  			}
  
-@@ -4340,10 +3297,7 @@ zoran_vm_close (struct vm_area_struct *vma)
+@@ -4340,10 +3292,7 @@ zoran_vm_close (struct vm_area_struct *vma)
  					    ZORAN_FREE;
  					spin_unlock_irqrestore(&zr->spinlock, flags);
  				}
@@ -52405,7 +66295,7 @@
  				mutex_unlock(&zr->resource_lock);
  			}
  
-@@ -4582,11 +3536,56 @@ zoran_mmap (struct file           *file,
+@@ -4582,11 +3531,56 @@ zoran_mmap (struct file           *file,
  	return 0;
  }
  
@@ -52463,7 +66353,7 @@
  	.read = zoran_read,
  	.write = zoran_write,
  	.mmap = zoran_mmap,
-@@ -4596,7 +3595,9 @@ static const struct v4l2_file_operations zoran_fops = {
+@@ -4596,7 +3590,9 @@ static const struct v4l2_file_operations zoran_fops = {
  struct video_device zoran_template __devinitdata = {
  	.name = ZORAN_NAME,
  	.fops = &zoran_fops,
@@ -53087,6 +66977,18 @@
  		       !(grpid) || sd->grp_id == (grpid), o, f , ##args)
  
  #endif
+diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
+index b01c044..a8b4c0b 100644
+--- a/include/media/v4l2-ioctl.h
++++ b/include/media/v4l2-ioctl.h
+@@ -267,6 +267,7 @@ struct v4l2_ioctl_ops {
+ 
+ /*  Video standard functions  */
+ extern const char *v4l2_norm_to_name(v4l2_std_id id);
++extern void v4l2_video_std_frame_period(int id, struct v4l2_fract *frameperiod);
+ extern int v4l2_video_std_construct(struct v4l2_standard *vs,
+ 				    int id, const char *name);
+ /* Prints the ioctl in a human-readable format */
 diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
 index 37b09e5..05b6965 100644
 --- a/include/media/v4l2-subdev.h

xen.pvops.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1.2.8 -r 1.1.2.9 xen.pvops.patch
Index: xen.pvops.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.patch,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.9
diff -u -r1.1.2.8 -r1.1.2.9
--- xen.pvops.patch	5 Mar 2009 01:30:26 -0000	1.1.2.8
+++ xen.pvops.patch	5 Mar 2009 22:45:11 -0000	1.1.2.9
@@ -7768,6 +7768,21 @@
  		*(.data.percpu)
  		*(.data.percpu.shared_aligned)
  		__per_cpu_end = .;
+diff --git a/arch/powerpc/platforms/86xx/gef_sbc610.c b/arch/powerpc/platforms/86xx/gef_sbc610.c
+index fb371f5..d6b772b 100644
+--- a/arch/powerpc/platforms/86xx/gef_sbc610.c
++++ b/arch/powerpc/platforms/86xx/gef_sbc610.c
+@@ -142,6 +142,10 @@ static void __init gef_sbc610_nec_fixup(struct pci_dev *pdev)
+ {
+ 	unsigned int val;
+ 
++	/* Do not do the fixup on other platforms! */
++	if (!machine_is(gef_sbc610))
++		return;
++
+ 	printk(KERN_INFO "Running NEC uPD720101 Fixup\n");
+ 
+ 	/* Ensure ports 1, 2, 3, 4 & 5 are enabled */
 diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
 index e868b5c..dc0f3c9 100644
 --- a/arch/powerpc/platforms/Kconfig.cputype
@@ -7940,7 +7955,7 @@
  		seq_printf(p, " %14s", irq_desc[i].chip->typename);
  		seq_printf(p, "  %s", action->name);
 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index bc2fbad..a866e76 100644
+index bc2fbad..2030a80 100644
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
 @@ -5,7 +5,7 @@ mainmenu "Linux Kernel Configuration for x86"
@@ -8595,7 +8610,7 @@
  	   Additional support for intel specific MCE features such as
  	   the thermal monitor.
  
-@@ -747,14 +782,14 @@ config X86_MCE_AMD
+@@ -747,14 +782,19 @@ config X86_MCE_AMD
  	def_bool y
  	prompt "AMD MCE features"
  	depends on X86_64 && X86_MCE && X86_LOCAL_APIC
@@ -8604,6 +8619,11 @@
  	   Additional support for AMD specific MCE features such as
  	   the DRAM Error Threshold.
  
++config X86_MCE_THRESHOLD
++	depends on X86_MCE_AMD || X86_MCE_INTEL
++	bool
++	default y
++
  config X86_MCE_NONFATAL
  	tristate "Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4"
  	depends on X86_32 && X86_MCE
@@ -8612,7 +8632,7 @@
  	  Enabling this feature starts a timer that triggers every 5 seconds which
  	  will look at the machine check registers to see if anything happened.
  	  Non-fatal problems automatically get corrected (but still logged).
-@@ -767,7 +802,7 @@ config X86_MCE_NONFATAL
+@@ -767,7 +807,7 @@ config X86_MCE_NONFATAL
  config X86_MCE_P4THERMAL
  	bool "check for P4 thermal throttling interrupt."
  	depends on X86_32 && X86_MCE && (X86_UP_APIC || SMP)
@@ -8621,7 +8641,7 @@
  	  Enabling this feature will cause a message to be printed when the P4
  	  enters thermal throttling.
  
-@@ -775,11 +810,11 @@ config VM86
+@@ -775,11 +815,11 @@ config VM86
  	bool "Enable VM86 support" if EMBEDDED
  	default y
  	depends on X86_32
@@ -8637,7 +8657,7 @@
  
  config TOSHIBA
  	tristate "Toshiba Laptop support"
-@@ -853,33 +888,33 @@ config MICROCODE
+@@ -853,33 +893,33 @@ config MICROCODE
  	  module will be called microcode.
  
  config MICROCODE_INTEL
@@ -8690,7 +8710,7 @@
  	  This device gives privileged processes access to the x86
  	  Model-Specific Registers (MSRs).  It is a character device with
  	  major 202 and minors 0 to 31 for /dev/cpu/0/msr to /dev/cpu/31/msr.
-@@ -888,7 +923,7 @@ config X86_MSR
+@@ -888,7 +928,7 @@ config X86_MSR
  
  config X86_CPUID
  	tristate "/dev/cpu/*/cpuid - CPU information support"
@@ -8699,7 +8719,7 @@
  	  This device gives processes access to the x86 CPUID instruction to
  	  be executed on a specific processor.  It is a character device
  	  with major 203 and minors 0 to 31 for /dev/cpu/0/cpuid to
-@@ -940,7 +975,7 @@ config NOHIGHMEM
+@@ -940,7 +980,7 @@ config NOHIGHMEM
  config HIGHMEM4G
  	bool "4GB"
  	depends on !X86_NUMAQ
@@ -8708,7 +8728,7 @@
  	  Select this if you have a 32-bit processor and between 1 and 4
  	  gigabytes of physical RAM.
  
-@@ -948,7 +983,7 @@ config HIGHMEM64G
+@@ -948,7 +988,7 @@ config HIGHMEM64G
  	bool "64GB"
  	depends on !M386 && !M486
  	select X86_PAE
@@ -8717,7 +8737,7 @@
  	  Select this if you have a 32-bit processor and more than 4
  	  gigabytes of physical RAM.
  
-@@ -959,7 +994,7 @@ choice
+@@ -959,7 +999,7 @@ choice
  	prompt "Memory split" if EMBEDDED
  	default VMSPLIT_3G
  	depends on X86_32
@@ -8726,7 +8746,7 @@
  	  Select the desired split between kernel and user memory.
  
  	  If the address range available to the kernel is less than the
-@@ -1005,20 +1040,20 @@ config HIGHMEM
+@@ -1005,20 +1045,20 @@ config HIGHMEM
  config X86_PAE
  	bool "PAE (Physical Address Extension) Support"
  	depends on X86_32 && !HIGHMEM4G
@@ -8750,7 +8770,7 @@
  	  Allow the kernel linear mapping to use 1GB pages on CPUs that
  	  support it. This can improve the kernel's performance a tiny bit by
  	  reducing TLB pressure. If in doubt, say "Y".
-@@ -1028,9 +1063,8 @@ config NUMA
+@@ -1028,9 +1068,8 @@ config NUMA
  	bool "Numa Memory Allocation and Scheduler Support"
  	depends on SMP
  	depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && EXPERIMENTAL)
@@ -8761,7 +8781,7 @@
  	  Enable NUMA (Non Uniform Memory Access) support.
  
  	  The kernel will try to allocate memory used by a CPU on the
-@@ -1053,19 +1087,19 @@ config K8_NUMA
+@@ -1053,19 +1092,19 @@ config K8_NUMA
  	def_bool y
  	prompt "Old style AMD Opteron NUMA detection"
  	depends on X86_64 && NUMA && PCI
@@ -8788,7 +8808,7 @@
  	  Enable ACPI SRAT based node topology detection.
  
  # Some NUMA nodes have memory ranges that span
-@@ -1080,7 +1114,7 @@ config NODES_SPAN_OTHER_NODES
+@@ -1080,7 +1119,7 @@ config NODES_SPAN_OTHER_NODES
  config NUMA_EMU
  	bool "NUMA emulation"
  	depends on X86_64 && NUMA
@@ -8797,7 +8817,7 @@
  	  Enable NUMA emulation. A flat machine will be split
  	  into virtual nodes when booted with "numa=fake=N", where N is the
  	  number of nodes. This is only useful for debugging.
-@@ -1093,11 +1127,11 @@ config NODES_SHIFT
+@@ -1093,11 +1132,11 @@ config NODES_SHIFT
  	default "4" if X86_NUMAQ
  	default "3"
  	depends on NEED_MULTIPLE_NODES
@@ -8811,7 +8831,7 @@
  	def_bool y
  	depends on X86_32 && NUMA
  
-@@ -1131,7 +1165,7 @@ config ARCH_SPARSEMEM_DEFAULT
+@@ -1131,7 +1170,7 @@ config ARCH_SPARSEMEM_DEFAULT
  
  config ARCH_SPARSEMEM_ENABLE
  	def_bool y
@@ -8820,7 +8840,7 @@
  	select SPARSEMEM_STATIC if X86_32
  	select SPARSEMEM_VMEMMAP_ENABLE if X86_64
  
-@@ -1143,66 +1177,71 @@ config ARCH_MEMORY_PROBE
+@@ -1143,66 +1182,71 @@ config ARCH_MEMORY_PROBE
  	def_bool X86_64
  	depends on MEMORY_HOTPLUG
  
@@ -8931,7 +8951,7 @@
  
  config MATH_EMULATION
  	bool
-@@ -1268,7 +1307,7 @@ config MTRR_SANITIZER
+@@ -1268,7 +1312,7 @@ config MTRR_SANITIZER
  	def_bool y
  	prompt "MTRR cleanup support"
  	depends on MTRR
@@ -8940,7 +8960,7 @@
  	  Convert MTRR layout from continuous to discrete, so X drivers can
  	  add writeback entries.
  
-@@ -1283,7 +1322,7 @@ config MTRR_SANITIZER_ENABLE_DEFAULT
[...5797 lines suppressed...]
+@@ -280,6 +299,10 @@ extern void __ftrace_bad_type(void);
  			  TRACE_GRAPH_RET);		\
  		IF_ASSIGN(var, ent, struct hw_branch_entry, TRACE_HW_BRANCHES);\
   		IF_ASSIGN(var, ent, struct trace_power, TRACE_POWER); \
@@ -115431,7 +117663,7 @@
  		__ftrace_bad_type();					\
  	} while (0)
  
-@@ -287,7 +309,8 @@ extern void __ftrace_bad_type(void);
+@@ -287,7 +310,8 @@ extern void __ftrace_bad_type(void);
  enum print_line_t {
  	TRACE_TYPE_PARTIAL_LINE	= 0,	/* Retry after flushing the seq */
  	TRACE_TYPE_HANDLED	= 1,
@@ -115441,7 +117673,7 @@
  };
  
  
-@@ -313,22 +336,45 @@ struct tracer_flags {
+@@ -313,22 +337,45 @@ struct tracer_flags {
  /* Makes more easy to define a tracer opt */
  #define TRACER_OPT(s, b)	.name = #s, .bit = b
  
@@ -115490,7 +117722,7 @@
  #ifdef CONFIG_FTRACE_STARTUP_TEST
  	int			(*selftest)(struct tracer *trace,
  					    struct trace_array *tr);
-@@ -340,6 +386,7 @@ struct tracer {
+@@ -340,6 +387,7 @@ struct tracer {
  	struct tracer		*next;
  	int			print_max;
  	struct tracer_flags 	*flags;
@@ -115498,7 +117730,7 @@
  };
  
  struct trace_seq {
-@@ -348,6 +395,16 @@ struct trace_seq {
+@@ -348,6 +396,16 @@ struct trace_seq {
  	unsigned int		readpos;
  };
  
@@ -115515,7 +117747,7 @@
  /*
   * Trace iterator - used by printout routines who present trace
   * results to users and which routines might sleep, etc:
-@@ -356,6 +413,8 @@ struct trace_iterator {
+@@ -356,6 +414,8 @@ struct trace_iterator {
  	struct trace_array	*tr;
  	struct tracer		*trace;
  	void			*private;
@@ -115524,7 +117756,7 @@
  	struct ring_buffer_iter	*buffer_iter[NR_CPUS];
  
  	/* The below is zeroed out in pipe_read */
-@@ -371,6 +430,7 @@ struct trace_iterator {
+@@ -371,6 +431,7 @@ struct trace_iterator {
  	cpumask_var_t		started;
  };
  
@@ -115532,7 +117764,7 @@
  int tracing_is_enabled(void);
  void trace_wake_up(void);
  void tracing_reset(struct trace_array *tr, int cpu);
-@@ -379,26 +439,48 @@ int tracing_open_generic(struct inode *inode, struct file *filp);
+@@ -379,26 +440,48 @@ int tracing_open_generic(struct inode *inode, struct file *filp);
  struct dentry *tracing_init_dentry(void);
  void init_tracer_sysprof_debugfs(struct dentry *d_tracer);
  
@@ -115583,7 +117815,7 @@
  				struct task_struct *wakee,
  				struct task_struct *cur,
  				unsigned long flags, int pc);
-@@ -408,14 +490,12 @@ void trace_special(struct trace_array *tr,
+@@ -408,14 +491,12 @@ void trace_special(struct trace_array *tr,
  		   unsigned long arg2,
  		   unsigned long arg3, int pc);
  void trace_function(struct trace_array *tr,
@@ -115598,7 +117830,7 @@
  
  void tracing_start_cmdline_record(void);
  void tracing_stop_cmdline_record(void);
-@@ -434,15 +514,11 @@ void update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu);
+@@ -434,15 +515,11 @@ void update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu);
  void update_max_tr_single(struct trace_array *tr,
  			  struct task_struct *tsk, int cpu);
  
@@ -115618,7 +117850,7 @@
  
  #ifdef CONFIG_CONTEXT_SWITCH_TRACER
  typedef void
-@@ -456,10 +532,10 @@ struct tracer_switch_ops {
+@@ -456,10 +533,10 @@ struct tracer_switch_ops {
  	void				*private;
  	struct tracer_switch_ops	*next;
  };
@@ -115631,7 +117863,7 @@
  #ifdef CONFIG_DYNAMIC_FTRACE
  extern unsigned long ftrace_update_tot_cnt;
  #define DYN_FTRACE_TEST_NAME trace_selftest_dynamic_test_func
-@@ -469,6 +545,8 @@ extern int DYN_FTRACE_TEST_NAME(void);
+@@ -469,6 +546,8 @@ extern int DYN_FTRACE_TEST_NAME(void);
  #ifdef CONFIG_FTRACE_STARTUP_TEST
  extern int trace_selftest_startup_function(struct tracer *trace,
  					   struct trace_array *tr);
@@ -115640,7 +117872,7 @@
  extern int trace_selftest_startup_irqsoff(struct tracer *trace,
  					  struct trace_array *tr);
  extern int trace_selftest_startup_preemptoff(struct tracer *trace,
-@@ -488,15 +566,6 @@ extern int trace_selftest_startup_branch(struct tracer *trace,
+@@ -488,15 +567,6 @@ extern int trace_selftest_startup_branch(struct tracer *trace,
  #endif /* CONFIG_FTRACE_STARTUP_TEST */
  
  extern void *head_page(struct trace_array_cpu *data);
@@ -115656,7 +117888,7 @@
  extern long ns2usecs(cycle_t nsec);
  extern int
  trace_vprintk(unsigned long ip, int depth, const char *fmt, va_list args);
-@@ -580,7 +649,8 @@ enum trace_iterator_flags {
+@@ -580,7 +650,8 @@ enum trace_iterator_flags {
  	TRACE_ITER_ANNOTATE		= 0x2000,
  	TRACE_ITER_USERSTACKTRACE       = 0x4000,
  	TRACE_ITER_SYM_USEROBJ          = 0x8000,
@@ -115666,7 +117898,7 @@
  };
  
  /*
-@@ -601,12 +671,12 @@ extern struct tracer nop_trace;
+@@ -601,12 +672,12 @@ extern struct tracer nop_trace;
   * preempt_enable (after a disable), a schedule might take place
   * causing an infinite recursion.
   *
@@ -115681,7 +117913,7 @@
   * and we have yet to reschedule, we are either in an atomic location
   * (where we do not need to check for scheduling) or we are inside
   * the scheduler and do not want to resched.
-@@ -627,7 +697,7 @@ static inline int ftrace_preempt_disable(void)
+@@ -627,7 +698,7 @@ static inline int ftrace_preempt_disable(void)
   *
   * This is a scheduler safe way to enable preemption and not miss
   * any preemption checks. The disabled saved the state of preemption.
@@ -115690,7 +117922,7 @@
   * are inside the scheduler (we would have already scheduled
   * otherwise). In this case, we do not want to call normal
   * preempt_enable, but preempt_enable_no_resched instead.
-@@ -664,4 +734,31 @@ static inline void trace_branch_disable(void)
+@@ -664,4 +735,31 @@ static inline void trace_branch_disable(void)
  }
  #endif /* CONFIG_BRANCH_TRACER */
  
@@ -117266,7 +119498,7 @@
 +#include <trace/trace_event_types.h>
 diff --git a/kernel/trace/trace_events_stage_3.h b/kernel/trace/trace_events_stage_3.h
 new file mode 100644
-index 0000000..041789f
+index 0000000..2c8d76c
 --- /dev/null
 +++ b/kernel/trace/trace_events_stage_3.h
 @@ -0,0 +1,235 @@
@@ -117277,7 +119509,7 @@
 + *
 + * static void ftrace_event_<call>(proto)
 + * {
-+ * 	event_trace_printk(_RET_IP_, "(<call>) " <fmt>);
++ * 	event_trace_printk(_RET_IP_, "<call>: " <fmt>);
 + * }
 + *
 + * static int ftrace_reg_event_<call>(void)
@@ -117384,7 +119616,7 @@
 +#define _TRACE_FORMAT(call, proto, args, fmt)				\
 +static void ftrace_event_##call(proto)					\
 +{									\
-+	event_trace_printk(_RET_IP_, "(" #call ") " fmt);		\
++	event_trace_printk(_RET_IP_, #call ": " fmt);			\
 +}									\
 +									\
 +static int ftrace_reg_event_##call(void)				\
@@ -121791,7 +124023,7 @@
  	boolean
  	depends on !NO_IOMEM
 diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
-index 1bcf9cd..e57f8e7 100644
+index 1bcf9cd..86c9ba0 100644
 --- a/lib/Kconfig.debug
 +++ b/lib/Kconfig.debug
 @@ -9,8 +9,20 @@ config PRINTK_TIME
@@ -121901,6 +124133,15 @@
  	default n
  	help
  	  Boot with debugging on by default. SLUB boots by default with
+@@ -402,7 +452,7 @@ config LOCKDEP
+ 	bool
+ 	depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
+ 	select STACKTRACE
+-	select FRAME_POINTER if !X86 && !MIPS && !PPC
++	select FRAME_POINTER if !MIPS && !PPC
+ 	select KALLSYMS
+ 	select KALLSYMS_ALL
+ 
 @@ -905,3 +955,5 @@ config DYNAMIC_PRINTK_DEBUG
  source "samples/Kconfig"
  




More information about the fedora-extras-commits mailing list