rpms/kernel/devel kernel.spec, 1.1294.2.15, 1.1294.2.16 xen.pvops.patch, 1.1.2.13, 1.1.2.14
Michael Young
myoung at fedoraproject.org
Sun Mar 29 16:55:48 UTC 2009
Author: myoung
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv1952
Modified Files:
Tag: private-myoung-dom0-branch
kernel.spec xen.pvops.patch
Log Message:
Revert a couple of pvops commit to get kernel to boot
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1294.2.15
retrieving revision 1.1294.2.16
diff -u -r1.1294.2.15 -r1.1294.2.16
--- kernel.spec 28 Mar 2009 15:18:50 -0000 1.1294.2.15
+++ kernel.spec 29 Mar 2009 16:55:07 -0000 1.1294.2.16
@@ -1838,8 +1838,10 @@
# and build.
%changelog
-* Sat Mar 28 2009 Michael Young <m.a.young at durham.ac.uk>
+* Sun Mar 29 2009 Michael Young <m.a.young at durham.ac.uk>
- drop dropwatch patch due to compile problems
+- revert pvops patches bd4a7874716d1b1f69cacfef4adf9f94050ecd82 and
+ cfb667260eb7f6dd26ceb6d49da818978396757d to get the kernel to boot
* Sat Mar 28 2009 Mauro Carvalho Chehab <mchehab at redhat.com>
- linux-2.6-revert-dvb-net-kabi-change.patch: attempt to fix dvb net breakage
xen.pvops.patch:
Index: xen.pvops.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.patch,v
retrieving revision 1.1.2.13
retrieving revision 1.1.2.14
diff -u -r1.1.2.13 -r1.1.2.14
--- xen.pvops.patch 26 Mar 2009 00:02:13 -0000 1.1.2.13
+++ xen.pvops.patch 29 Mar 2009 16:55:07 -0000 1.1.2.14
@@ -98857,9 +98857,28 @@
{
if (max_nr_grant_frames() < nr_grant_frames)
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c
-index 56892a1..0489ea2 100644
+index 56892a1..5269bb4 100644
--- a/drivers/xen/manage.c
+++ b/drivers/xen/manage.c
+@@ -68,15 +68,15 @@ static int xen_suspend(void *data)
+ gnttab_resume();
+ xen_mm_unpin_all();
+
+- sysdev_resume();
+- device_power_up(PMSG_RESUME);
+-
+ if (!*cancelled) {
+ xen_irq_resume();
+ xen_console_resume();
+ xen_timer_resume();
+ }
+
++ sysdev_resume();
++ device_power_up(PMSG_RESUME);
++
+ return 0;
+ }
+
@@ -104,11 +104,10 @@ static void do_suspend(void)
goto out;
}
@@ -112213,7 +112232,7 @@
#endif /* _LINUX_SELINUX_NETLINK_H */
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
-index 9dcf956..509cc7f 100644
+index 9dcf956..399925a 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -15,6 +15,7 @@
@@ -112224,26 +112243,7 @@
#include <linux/compiler.h>
#include <linux/time.h>
#include <linux/cache.h>
-@@ -146,6 +147,7 @@ struct skb_shared_info {
- unsigned short gso_segs;
- unsigned short gso_type;
- __be32 ip6_frag_id;
-+ unsigned int len; /* Subtract from this shinfo to find skb->head */
- #ifdef CONFIG_HAS_DMA
- unsigned int num_dma_maps;
- #endif
-@@ -154,6 +156,10 @@ struct skb_shared_info {
- #ifdef CONFIG_HAS_DMA
- dma_addr_t dma_maps[MAX_SKB_FRAGS + 1];
- #endif
-+ struct skb_shared_info *orig;
-+ /* This is responsible for kfree() of header and for putting
-+ the fragment pages. */
-+ void (*destructor)(struct skb_shared_info *);
- };
-
- /* We divide dataref into two halves. The higher 16 bits hold references
-@@ -295,16 +301,18 @@ struct sk_buff {
+@@ -295,16 +296,18 @@ struct sk_buff {
};
};
__u32 priority;
@@ -112272,7 +112272,7 @@
__be16 protocol;
void (*destructor)(struct sk_buff *skb);
-@@ -324,13 +332,17 @@ struct sk_buff {
+@@ -324,13 +327,17 @@ struct sk_buff {
__u16 tc_verd; /* traffic control verdict */
#endif
#endif
@@ -112293,18 +112293,6 @@
/* 0/13/14 bit hole */
#ifdef CONFIG_NET_DMA
-@@ -1002,6 +1014,11 @@ extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page,
- #define SKB_FRAG_ASSERT(skb) BUG_ON(skb_shinfo(skb)->frag_list)
- #define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb))
-
-+static inline unsigned char *skb_shinfo_to_head(struct skb_shared_info *shinfo)
-+{
-+ return (unsigned char *)shinfo - shinfo->len;
-+}
-+
- #ifdef NET_SKBUFF_DATA_USES_OFFSET
- static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb)
- {
diff --git a/include/linux/slab.h b/include/linux/slab.h
index 24c5602..1b969fa 100644
--- a/include/linux/slab.h
@@ -152156,7 +152144,7 @@
help
If you say Y here, you will get experimental support for
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index c6a6b16..cb52e5f 100644
+index c6a6b16..e83e994 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -39,6 +39,7 @@
@@ -152176,15 +152164,7 @@
/* make sure we initialize shinfo sequentially */
shinfo = skb_shinfo(skb);
atomic_set(&shinfo->dataref, 1);
-@@ -206,11 +209,16 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
- shinfo->gso_type = 0;
- shinfo->ip6_frag_id = 0;
- shinfo->frag_list = NULL;
-+ shinfo->destructor = NULL;
-+ shinfo->orig = NULL;
-+ shinfo->len = skb_end_pointer(skb) - skb->head;
-
- if (fclone) {
+@@ -211,6 +214,8 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
struct sk_buff *child = skb + 1;
atomic_t *fclone_ref = (atomic_t *) (child + 1);
@@ -152193,7 +152173,7 @@
skb->fclone = SKB_FCLONE_ORIG;
atomic_set(fclone_ref, 1);
-@@ -240,7 +248,7 @@ nodata:
+@@ -240,7 +245,7 @@ nodata:
struct sk_buff *__netdev_alloc_skb(struct net_device *dev,
unsigned int length, gfp_t gfp_mask)
{
@@ -152202,73 +152182,7 @@
struct sk_buff *skb;
skb = __alloc_skb(length + NET_SKB_PAD, gfp_mask, 0, node);
-@@ -319,21 +327,54 @@ static void skb_clone_fraglist(struct sk_buff *skb)
- skb_get(list);
- }
-
--static void skb_release_data(struct sk_buff *skb)
-+static void shinfo_put(struct skb_shared_info *shinfo, bool nohdr, bool clone)
- {
-- if (!skb->cloned ||
-- !atomic_sub_return(skb->nohdr ? (1 << SKB_DATAREF_SHIFT) + 1 : 1,
-- &skb_shinfo(skb)->dataref)) {
-- if (skb_shinfo(skb)->nr_frags) {
-- int i;
-- for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
-- put_page(skb_shinfo(skb)->frags[i].page);
-+ struct skb_shared_info *orig;
-+
-+ do {
-+ if (clone &&
-+ atomic_sub_return(nohdr ? (1 << SKB_DATAREF_SHIFT) + 1 : 1,
-+ &shinfo->dataref)) {
-+ return;
- }
-
-- if (skb_shinfo(skb)->frag_list)
-- skb_drop_fraglist(skb);
-+ if (shinfo->destructor)
-+ shinfo->destructor(shinfo);
-+ else {
-+ kfree(skb_shinfo_to_head(shinfo));
-+
-+ if (shinfo->nr_frags) {
-+ int i;
-+ for (i = 0; i < shinfo->nr_frags; i++)
-+ put_page(shinfo->frags[i].page);
-+ }
-+ }
-+
-+ if (shinfo->frag_list)
-+ skb_drop_list(&shinfo->frag_list);
-+
-+ orig = shinfo->orig;
-+ /* We hold a payload reference to our parent. */
-+ nohdr = true;
-+ clone = true;
-+ } while ((shinfo = orig) != NULL);
-+}
-+
-+static void skb_release_data(struct sk_buff *skb)
-+{
-+ shinfo_put(skb_shinfo(skb), skb->nohdr, skb->cloned);
-+}
-
-- kfree(skb->head);
-+/* Now hold reference to older data, if has a destructor (recursively). */
-+static void skb_ref_data_parent(struct sk_buff *parent,
-+ struct skb_shared_info *shinfo)
-+{
-+ struct skb_shared_info *pshinfo = skb_shinfo(parent);
-+
-+ if (pshinfo->destructor || pshinfo->orig) {
-+ shinfo->orig = pshinfo;
-+ atomic_add((1 << SKB_DATAREF_SHIFT) + 1, &pshinfo->dataref);
-+ parent->cloned = 1;
- }
- }
-
-@@ -600,6 +641,9 @@ struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask)
+@@ -600,6 +605,9 @@ struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask)
n = kmem_cache_alloc(skbuff_head_cache, gfp_mask);
if (!n)
return NULL;
@@ -152278,50 +152192,6 @@
n->fclone = SKB_FCLONE_UNAVAILABLE;
}
-@@ -719,6 +763,7 @@ struct sk_buff *pskb_copy(struct sk_buff *skb, gfp_t gfp_mask)
- get_page(skb_shinfo(n)->frags[i].page);
- }
- skb_shinfo(n)->nr_frags = i;
-+ skb_ref_data_parent(skb, skb_shinfo(n));
- }
-
- if (skb_shinfo(skb)->frag_list) {
-@@ -786,6 +831,8 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail,
- if (skb_shinfo(skb)->frag_list)
- skb_clone_fraglist(skb);
-
-+ skb_ref_data_parent(skb, (void *)(data + size));
-+
- skb_release_data(skb);
-
- off = (data + nhead) - skb->head;
-@@ -808,6 +855,8 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail,
- skb->hdr_len = 0;
- skb->nohdr = 0;
- atomic_set(&skb_shinfo(skb)->dataref, 1);
-+ skb_shinfo(skb)->len = skb_end_pointer(skb) - skb->head;
-+ skb_shinfo(skb)->destructor = NULL;
- return 0;
-
- nodata:
-@@ -2005,6 +2054,8 @@ void skb_split(struct sk_buff *skb, struct sk_buff *skb1, const u32 len)
- skb_split_inside_header(skb, skb1, len, pos);
- else /* Second chunk has no header, nothing to copy. */
- skb_split_no_header(skb, skb1, len, pos);
-+
-+ skb_ref_data_parent(skb, skb_shinfo(skb1));
- }
-
- /* Shifting from/to a cloned skb is a no-go.
-@@ -2558,6 +2609,8 @@ skip_fraglist:
- nskb->data_len = len - hsize;
- nskb->len += nskb->data_len;
- nskb->truesize += nskb->data_len;
-+
-+ skb_ref_data_parent(skb, skb_shinfo(nskb));
- } while ((offset += len) < skb->len);
-
- return segs;
diff --git a/net/core/sock.c b/net/core/sock.c
index 5f97caa..7f3561d 100644
--- a/net/core/sock.c
@@ -152779,6 +152649,35 @@
/* sort by initial order, so that other symbols are left undisturbed */
return sa->start_pos - sb->start_pos;
}
+diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
+index 273d738..1572f2e 100644
+--- a/scripts/kconfig/confdata.c
++++ b/scripts/kconfig/confdata.c
+@@ -889,16 +889,17 @@ void conf_set_all_new_symbols(enum conf_def_mode mode)
+
+ cnt = 0;
+ expr_list_for_each_sym(prop->expr, e, sym) {
+- if (def == cnt++) {
+- sym->def[S_DEF_USER].tri = yes;
+- csym->def[S_DEF_USER].val = sym;
+- }
+- else {
+- sym->def[S_DEF_USER].tri = no;
++ if (sym) {
++ if (def == cnt++) {
++ sym->def[S_DEF_USER].tri = yes;
++ csym->def[S_DEF_USER].val = sym;
++ }
++ else {
++ sym->def[S_DEF_USER].tri = no;
++ }
+ }
+ }
+ csym->flags |= SYMBOL_DEF_USER;
+- /* clear VALID to get value calculated */
+ csym->flags &= ~(SYMBOL_VALID);
+ }
+ }
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 8892161..7e62303 100644
--- a/scripts/mod/modpost.c
More information about the scm-commits
mailing list