# HG changeset patch
# User djm@xxxxxxxxxxxxxxx
# Node ID 1efe6f4163ee6c7740719da717a2bd8006a679ca
# Parent 24dd9a53dd95c062f9f4a68489e00a2c3d7bab56
# Parent 0db6a59abb955be772d94ba32fe1a34a26db86da
Merge with latest xen-unstable
diff -r 24dd9a53dd95 -r 1efe6f4163ee linux-2.4-xen-sparse/arch/xen/Makefile
--- a/linux-2.4-xen-sparse/arch/xen/Makefile Mon Aug 1 19:11:00 2005
+++ b/linux-2.4-xen-sparse/arch/xen/Makefile Mon Aug 1 19:19:36 2005
@@ -61,7 +61,7 @@
SUBDIRS += arch/xen/drivers/evtchn
SUBDIRS += arch/xen/drivers/blkif
SUBDIRS += arch/xen/drivers/netif
-SUBDIRS += arch/xen/drivers/usbif
+#SUBDIRS += arch/xen/drivers/usbif
SUBDIRS += arch/xen/drivers/balloon
ifdef CONFIG_XEN_PRIVILEGED_GUEST
SUBDIRS += arch/xen/drivers/dom0
diff -r 24dd9a53dd95 -r 1efe6f4163ee linux-2.4-xen-sparse/arch/xen/kernel/time.c
--- a/linux-2.4-xen-sparse/arch/xen/kernel/time.c Mon Aug 1 19:11:00 2005
+++ b/linux-2.4-xen-sparse/arch/xen/kernel/time.c Mon Aug 1 19:19:36 2005
@@ -225,21 +225,30 @@
*/
static void __get_time_values_from_xen(void)
{
- do {
- shadow_time_version = HYPERVISOR_shared_info->time_version2;
- rmb();
- shadow_tv.tv_sec = HYPERVISOR_shared_info->wc_sec;
- shadow_tv.tv_usec = HYPERVISOR_shared_info->wc_usec;
- shadow_tsc_stamp =
- (u32)(HYPERVISOR_shared_info->tsc_timestamp >> rdtsc_bitshift);
- shadow_system_time = HYPERVISOR_shared_info->system_time;
- rmb();
- }
- while ( shadow_time_version != HYPERVISOR_shared_info->time_version1 );
-}
-
-#define TIME_VALUES_UP_TO_DATE \
- ({ rmb(); (shadow_time_version == HYPERVISOR_shared_info->time_version2); })
+ shared_info_t *s = HYPERVISOR_shared_info;
+ struct vcpu_time_info *src;
+ struct shadow_time_info *dst;
+
+ src = &s->vcpu_time[smp_processor_id()];
+ dst = &per_cpu(shadow_time, smp_processor_id());
+
+ do {
+ dst->version = src->time_version2;
+ rmb();
+ dst->tsc_timestamp = src->tsc_timestamp;
+ dst->system_timestamp = src->system_time;
+ dst->tsc_to_nsec_mul = src->tsc_to_system_mul;
+ dst->tsc_shift = src->tsc_shift;
+ rmb();
+ }
+ while (dst->version != src->time_version1);
+
+ dst->tsc_to_usec_mul = dst->tsc_to_nsec_mul / 1000;
+
+ if ((shadow_tv.tv_sec != s->wc_sec) ||
+ (shadow_tv.tv_usec != s->wc_usec))
+ update_wallclock();
+}
/*
@@ -263,6 +272,17 @@
return (unsigned long)delta;
}
+static inline int time_values_up_to_date()
+{
+ struct vcpu_time_info *src;
+ struct shadow_time_info *dst;
+
+ src = &HYPERVISOR_shared_info->vcpu_time[smp_processor_id()];
+ dst = &per_cpu(shadow_time, smp_processor_id());
+
+ return (dst->version == src->time_version2);
+}
+
/*
* Returns the current time-of-day in UTC timeval format.
@@ -286,7 +306,7 @@
__normalize_time(&_tv.tv_sec, &nsec);
_tv.tv_usec += (long)nsec / 1000L;
- if ( unlikely(!TIME_VALUES_UP_TO_DATE) )
+ if ( unlikely(!time_values_up_to_date()) )
{
/*
* We may have blocked for a long time, rendering our calculations
diff -r 24dd9a53dd95 -r 1efe6f4163ee linux-2.4-xen-sparse/mkbuildtree
--- a/linux-2.4-xen-sparse/mkbuildtree Mon Aug 1 19:11:00 2005
+++ b/linux-2.4-xen-sparse/mkbuildtree Mon Aug 1 19:19:36 2005
@@ -102,8 +102,8 @@
relative_lndir ${RS}
rm -f mkbuildtree
-set ${RS}/../linux-2.6.*-xen-sparse
-[ "$1" == "${RS}/../linux-2.6.*-xen-parse" ] && { echo "no Linux 2.6 sparse
tree at ${RS}/../linux-2.6.*-xen-sparse"; exit 1; }
+set ${RS}/../linux-2.6-xen-sparse
+[ "$1" == "${RS}/../linux-2.6-xen-parse" ] && { echo "no Linux 2.6 sparse tree
at ${RS}/../linux-2.6-xen-sparse"; exit 1; }
LINUX_26="$1"
diff -r 24dd9a53dd95 -r 1efe6f4163ee
linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32
--- a/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32 Mon Aug
1 19:11:00 2005
+++ b/linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32 Mon Aug
1 19:19:36 2005
@@ -18,8 +18,8 @@
CONFIG_XEN_NETDEV_BACKEND=y
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
-# CONFIG_XEN_NETDEV_GRANT_TX is not set
-# CONFIG_XEN_NETDEV_GRANT_RX is not set
+CONFIG_XEN_NETDEV_GRANT_TX=y
+ CONFIG_XEN_NETDEV_GRANT_RX=y
# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set
# CONFIG_XEN_BLKDEV_TAP is not set
# CONFIG_XEN_SHADOW_MODE is not set
diff -r 24dd9a53dd95 -r 1efe6f4163ee
linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32
--- a/linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32 Mon Aug
1 19:11:00 2005
+++ b/linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32 Mon Aug
1 19:19:36 2005
@@ -15,8 +15,8 @@
CONFIG_XEN_BLKDEV_GRANT=y
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
-# CONFIG_XEN_NETDEV_GRANT_TX is not set
-# CONFIG_XEN_NETDEV_GRANT_RX is not set
+CONFIG_XEN_NETDEV_GRANT_TX=y
+CONFIG_XEN_NETDEV_GRANT_RX=y
# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set
# CONFIG_XEN_BLKDEV_TAP is not set
# CONFIG_XEN_SHADOW_MODE is not set
diff -r 24dd9a53dd95 -r 1efe6f4163ee
linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c Mon Aug 1 19:11:00 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/time.c Mon Aug 1 19:19:36 2005
@@ -295,14 +295,11 @@
struct vcpu_time_info *src;
struct shadow_time_info *dst;
- src = &HYPERVISOR_shared_info->vcpu_time[smp_processor_id()];
- dst = &per_cpu(shadow_time, smp_processor_id());
+ src = &HYPERVISOR_shared_info->vcpu_time[cpu];
+ dst = &per_cpu(shadow_time, cpu);
return (dst->version == src->time_version2);
}
-
-#define TIME_VALUES_UP_TO_DATE \
- ({ rmb(); (shadow_time_version == HYPERVISOR_shared_info->time_version2); })
/*
* This is a special lock that is owned by the CPU and holds the index
diff -r 24dd9a53dd95 -r 1efe6f4163ee
linux-2.6-xen-sparse/arch/xen/i386/kernel/traps.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/traps.c Mon Aug 1 19:11:00 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/traps.c Mon Aug 1 19:19:36 2005
@@ -90,9 +90,7 @@
static int kstack_depth_to_print = 24;
struct notifier_block *i386die_chain;
-DEFINE_SPINLOCK(die_notifier_lock);
-EXPORT_SYMBOL(die_notifier_lock);
-EXPORT_SYMBOL(i386die_chain);
+static DEFINE_SPINLOCK(die_notifier_lock);
int register_die_notifier(struct notifier_block *nb)
{
diff -r 24dd9a53dd95 -r 1efe6f4163ee
linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c
--- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Mon Aug 1
19:11:00 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Mon Aug 1
19:19:36 2005
@@ -329,11 +329,11 @@
buffer_ma >> PAGE_SHIFT;
ring_req->frame_and_sects[ring_req->nr_segments++] =
- (((u32) ref) << 16) | (fsect << 3) | lsect;
+ blkif_fas_from_gref(ref, fsect, lsect);
#else
ring_req->frame_and_sects[ring_req->nr_segments++] =
- buffer_ma | (fsect << 3) | lsect;
+ blkif_fas(buffer_ma, fsect, lsect);
#endif
}
}
@@ -832,10 +832,10 @@
buffer_ma >> PAGE_SHIFT;
req->frame_and_sects[req->nr_segments] =
- (((u32) ref ) << 16) | (fsect << 3) | lsect;
+ blkif_fas_from_gref(ref, fsect, lsect);
#else
req->frame_and_sects[req->nr_segments] =
- buffer_ma | (fsect << 3) | lsect;
+ blkif_fas(buffer_ma, fsect, lsect);
#endif
if ( ++req->nr_segments < BLKIF_MAX_SEGMENTS_PER_REQUEST )
sg_next_sect += nr_sectors;
@@ -887,9 +887,9 @@
blk_shadow[xid].frame[0] = buffer_ma >> PAGE_SHIFT;
- req->frame_and_sects[0] = (((u32) ref)<<16) | (fsect<<3) | lsect;
+ req->frame_and_sects[0] = blkif_fas_from_gref(ref, fsect, lsect);
#else
- req->frame_and_sects[0] = buffer_ma | (fsect<<3) | lsect;
+ req->frame_and_sects[0] = blkif_fas(buffer_ma, fsect, lsect);
#endif
/* Keep a private copy so we can reissue requests when recovering. */
@@ -1057,7 +1057,7 @@
gnttab_grant_foreign_access_ref( ref, rdomid, address >> PAGE_SHIFT, 0 );
- req->frame_and_sects[0] = (((u32) ref) << 16) | 7;
+ req->frame_and_sects[0] = blkif_fas_from_gref(ref, 0, (PAGE_SIZE/512)-1);
blkif_control_send(req, rsp);
}
diff -r 24dd9a53dd95 -r 1efe6f4163ee
linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c
--- a/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c Mon Aug 1 19:11:00 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c Mon Aug 1 19:19:36 2005
@@ -137,7 +137,7 @@
blkif_control_probe_send(&req, &rsp,
(unsigned long)(virt_to_machine(buf)));
#else
- req.frame_and_sects[0] = virt_to_machine(buf) | 7;
+ req.frame_and_sects[0] = blkif_fas(virt_to_machine(buf), 0,
((PAGE_SIZE/512)-1);
blkif_control_send(&req, &rsp);
#endif
diff -r 24dd9a53dd95 -r 1efe6f4163ee
linux-2.6-xen-sparse/include/asm-xen/hypervisor.h
--- a/linux-2.6-xen-sparse/include/asm-xen/hypervisor.h Mon Aug 1 19:11:00 2005
+++ b/linux-2.6-xen-sparse/include/asm-xen/hypervisor.h Mon Aug 1 19:19:36 2005
@@ -46,6 +46,8 @@
# else
# include <asm-generic/pgtable-nopmd.h>
# endif
+# else
+# define pud_t pgd_t
# endif
#endif
diff -r 24dd9a53dd95 -r 1efe6f4163ee tools/debugger/pdb/Makefile
--- a/tools/debugger/pdb/Makefile Mon Aug 1 19:11:00 2005
+++ b/tools/debugger/pdb/Makefile Mon Aug 1 19:19:36 2005
@@ -33,7 +33,7 @@
LIBS += unix str
# bc = byte-code, dc = debug byte-code
-all : dc
+all : patches dc
SOURCES += pdb_caml_xc.c
SOURCES += pdb_caml_domain.c pdb_caml_process.c
@@ -50,3 +50,6 @@
include $(OCAMLMAKEFILE)
+PATCHDIR = ./linux-2.6-patches
+patches :
+ make -C $(PATCHDIR) patches
diff -r 24dd9a53dd95 -r 1efe6f4163ee
tools/debugger/pdb/linux-2.6-module/module.c
--- a/tools/debugger/pdb/linux-2.6-module/module.c Mon Aug 1 19:11:00 2005
+++ b/tools/debugger/pdb/linux-2.6-module/module.c Mon Aug 1 19:19:36 2005
@@ -278,14 +278,10 @@
return err;
}
-extern struct notifier_block *i386die_chain;
-extern spinlock_t die_notifier_lock;
-
static void __exit
pdb_terminate(void)
{
int err = 0;
- unsigned long flags;
printk("pdb cleanup\n");
@@ -305,9 +301,8 @@
pdb_send_connection_status(PDB_CONNECTION_STATUS_DOWN, 0);
- spin_lock_irqsave(&die_notifier_lock, flags);
- err = notifier_chain_unregister(&i386die_chain, &pdb_exceptions_nb);
- spin_unlock_irqrestore(&die_notifier_lock, flags);
+ /* handler for int1 & int3 */
+ err = unregister_die_notifier(&pdb_exceptions_nb);
return;
}
diff -r 24dd9a53dd95 -r 1efe6f4163ee xen/arch/x86/vmx_intercept.c
--- a/xen/arch/x86/vmx_intercept.c Mon Aug 1 19:11:00 2005
+++ b/xen/arch/x86/vmx_intercept.c Mon Aug 1 19:19:36 2005
@@ -197,8 +197,7 @@
static void pit_timer_fn(void *data)
{
struct vmx_virpit_t *vpit = data;
- s_time_t next;
- int missed_ticks;
+ int missed_ticks;
missed_ticks = (NOW() - vpit->scheduled) / MILLISECS(vpit->period);
@@ -208,12 +207,11 @@
/* pick up missed timer tick */
if ( missed_ticks > 0 ) {
- vpit->pending_intr_nr+= missed_ticks;
+ vpit->pending_intr_nr += missed_ticks;
vpit->scheduled += missed_ticks * MILLISECS(vpit->period);
}
- next = vpit->scheduled + MILLISECS(vpit->period);
- set_ac_timer(&vpit->pit_timer, next);
- vpit->scheduled = next;
+ vpit->scheduled += MILLISECS(vpit->period);
+ set_ac_timer(&vpit->pit_timer, vpit->scheduled);
}
diff -r 24dd9a53dd95 -r 1efe6f4163ee xen/include/public/io/blkif.h
--- a/xen/include/public/io/blkif.h Mon Aug 1 19:11:00 2005
+++ b/xen/include/public/io/blkif.h Mon Aug 1 19:19:36 2005
@@ -36,7 +36,7 @@
blkif_vdev_t device; /* only for read/write requests */
unsigned long id; /* private guest value, echoed in resp */
blkif_sector_t sector_number;/* start sector idx on disk (r/w only) */
- /* @f_a_s[2:0]=last_sect ; @f_a_s[5:3]=first_sect */
+ /* @f_a_s[4:0]=last_sect ; @f_a_s[9:5]=first_sect */
#ifdef CONFIG_XEN_BLKDEV_GRANT
/* @f_a_s[:16]= grant reference (16 bits) */
#else
@@ -47,10 +47,12 @@
unsigned long frame_and_sects[BLKIF_MAX_SEGMENTS_PER_REQUEST];
} blkif_request_t;
-#define blkif_first_sect(_fas) (((_fas)>>3)&7)
-#define blkif_last_sect(_fas) ((_fas)&7)
+#define blkif_fas(_addr, _fs, _ls) ((addr)|((_fs)<<5)|(_ls))
+#define blkif_first_sect(_fas) (((_fas)>>5)&31)
+#define blkif_last_sect(_fas) ((_fas)&31)
#ifdef CONFIG_XEN_BLKDEV_GRANT
+#define blkif_fas_from_gref(_gref, _fs, _ls) (((_gref)<<16)|((_fs)<<5)|(_ls))
#define blkif_gref_from_fas(_fas) ((_fas)>>16)
#endif
diff -r 24dd9a53dd95 -r 1efe6f4163ee xen/include/xen/time.h
--- a/xen/include/xen/time.h Mon Aug 1 19:11:00 2005
+++ b/xen/include/xen/time.h Mon Aug 1 19:19:36 2005
@@ -51,9 +51,9 @@
s_time_t get_s_time(void);
#define NOW() ((s_time_t)get_s_time())
-#define SECONDS(_s) (((s_time_t)(_s)) * 1000000000ULL )
-#define MILLISECS(_ms) (((s_time_t)(_ms)) * 1000000ULL )
-#define MICROSECS(_us) (((s_time_t)(_us)) * 1000ULL )
+#define SECONDS(_s) ((s_time_t)((_s) * 1000000000ULL))
+#define MILLISECS(_ms) ((s_time_t)((_ms) * 1000000ULL))
+#define MICROSECS(_us) ((s_time_t)((_us) * 1000ULL))
extern void update_dom_time(struct vcpu *v);
extern void do_settime(
diff -r 24dd9a53dd95 -r 1efe6f4163ee
tools/debugger/pdb/linux-2.6-patches/Makefile
--- /dev/null Mon Aug 1 19:11:00 2005
+++ b/tools/debugger/pdb/linux-2.6-patches/Makefile Mon Aug 1 19:19:36 2005
@@ -0,0 +1,10 @@
+XEN_ROOT = ../../../..
+LINUX_DIR = linux-2.6.12-xenU
+KDIR = $(XEN_ROOT)/$(LINUX_DIR)
+PATCH_DIR = $(CURDIR)
+
+patches : patches-done
+
+patches-done :
+ ( for i in *.patch ; do ( cd $(KDIR) ; patch -p1 < $(PATCH_DIR)/$$i ||
exit 1 ) ; done )
+ touch $@
diff -r 24dd9a53dd95 -r 1efe6f4163ee
tools/debugger/pdb/linux-2.6-patches/i386_ksyms.patch
--- /dev/null Mon Aug 1 19:11:00 2005
+++ b/tools/debugger/pdb/linux-2.6-patches/i386_ksyms.patch Mon Aug 1
19:19:36 2005
@@ -0,0 +1,11 @@
+diff -u linux-2.6.12/arch/xen/i386/kernel/i386_ksyms.c
linux-2.6.12-pdb/arch/xen/i386/kernel/i386_ksyms.c
+--- linux-2.6.12/arch/xen/i386/kernel/i386_ksyms.c 2005-07-31
22:36:50.000000000 +0100
++++ linux-2.6.12-pdb/arch/xen/i386/kernel/i386_ksyms.c 2005-08-01
10:57:31.000000000 +0100
+@@ -172,6 +172,7 @@
+ EXPORT_SYMBOL_GPL(unset_nmi_callback);
+
+ EXPORT_SYMBOL(register_die_notifier);
++EXPORT_SYMBOL(unregister_die_notifier);
+ #ifdef CONFIG_HAVE_DEC_LOCK
+ EXPORT_SYMBOL(_atomic_dec_and_lock);
+ #endif
diff -r 24dd9a53dd95 -r 1efe6f4163ee
tools/debugger/pdb/linux-2.6-patches/kdebug.patch
--- /dev/null Mon Aug 1 19:11:00 2005
+++ b/tools/debugger/pdb/linux-2.6-patches/kdebug.patch Mon Aug 1 19:19:36 2005
@@ -0,0 +1,11 @@
+diff -u linux-2.6.12/include/asm-i386/kdebug.h
linux-2.6.12-pdb/include/asm-i386/kdebug.h
+--- linux-2.6.12/include/asm-i386/kdebug.h 2005-06-17 20:48:29.000000000
+0100
++++ linux-2.6.12-pdb/include/asm-i386/kdebug.h 2005-08-01 11:11:53.000000000
+0100
+@@ -21,6 +21,7 @@
+ If you really want to do it first unregister - then synchronize_kernel -
then free.
+ */
+ int register_die_notifier(struct notifier_block *nb);
++int unregister_die_notifier(struct notifier_block *nb);
+ extern struct notifier_block *i386die_chain;
+
+
diff -r 24dd9a53dd95 -r 1efe6f4163ee
tools/debugger/pdb/linux-2.6-patches/makefile.patch
--- /dev/null Mon Aug 1 19:11:00 2005
+++ b/tools/debugger/pdb/linux-2.6-patches/makefile.patch Mon Aug 1
19:19:36 2005
@@ -0,0 +1,12 @@
+diff -Naur linux-2.6.12/Makefile linux-2.6.12-pdb/Makefile
+--- linux-2.6.12/Makefile 2005-08-01 01:21:21.000000000 +0100
++++ linux-2.6.12-pdb/Makefile 2005-08-01 10:28:10.000000000 +0100
+@@ -508,7 +508,7 @@
+ ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
+ CFLAGS += -Os
+ else
+-CFLAGS += -O2
++CFLAGS += -O
+ endif
+
+ #Add align options if CONFIG_CC_* is not equal to 0
diff -r 24dd9a53dd95 -r 1efe6f4163ee
tools/debugger/pdb/linux-2.6-patches/ptrace.patch
--- /dev/null Mon Aug 1 19:11:00 2005
+++ b/tools/debugger/pdb/linux-2.6-patches/ptrace.patch Mon Aug 1 19:19:36 2005
@@ -0,0 +1,11 @@
+diff -u linux-2.6.12/kernel/ptrace.c linux-2.6.12-pdb/kernel/ptrace.c
+--- linux-2.6.12/kernel/ptrace.c 2005-06-17 20:48:29.000000000 +0100
++++ linux-2.6.12-pdb/kernel/ptrace.c 2005-07-22 13:23:16.000000000 +0100
+@@ -239,6 +239,7 @@
+
+ return buf - old_buf;
+ }
++EXPORT_SYMBOL(access_process_vm);
+
+ int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user
*dst, int len)
+ {
diff -r 24dd9a53dd95 -r 1efe6f4163ee
tools/debugger/pdb/linux-2.6-patches/traps.patch
--- /dev/null Mon Aug 1 19:11:00 2005
+++ b/tools/debugger/pdb/linux-2.6-patches/traps.patch Mon Aug 1 19:19:36 2005
@@ -0,0 +1,20 @@
+diff -u linux-2.6.12/arch/xen/i386/kernel/traps.c
linux-2.6.12-pdb/arch/xen/i386/kernel/traps.c
+--- linux-2.6.12/arch/xen/i386/kernel/traps.c 2005-07-31 22:47:00.000000000
+0100
++++ linux-2.6.12-pdb/arch/xen/i386/kernel/traps.c 2005-07-31
22:47:32.000000000 +0100
+@@ -102,6 +102,16 @@
+ return err;
+ }
+
++int unregister_die_notifier(struct notifier_block *nb)
++{
++ int err = 0;
++ unsigned long flags;
++ spin_lock_irqsave(&die_notifier_lock, flags);
++ err = notifier_chain_unregister(&i386die_chain, nb);
++ spin_unlock_irqrestore(&die_notifier_lock, flags);
++ return err;
++}
++
+ static inline int valid_stack_ptr(struct thread_info *tinfo, void *p)
+ {
+ return p > (void *)tinfo &&
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|