[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Merge.
# HG changeset patch # User sos22@xxxxxxxxxxxxxxxxxxxx # Node ID 3d85c1136d6366ed9836ff93ca0df4c88a0c2302 # Parent e9dd58963e97be96b21a5daa551d4318fc8943dd # Parent 91d2f2258c563100d5294fe12fd9fbe56870b213 Merge. --- linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c | 12 ++++--- tools/libxc/xc_elf.h | 3 + tools/libxc/xc_load_elf.c | 32 +++++++++++++------ xen/include/xen/elf.h | 2 - 4 files changed, 32 insertions(+), 17 deletions(-) diff -r e9dd58963e97 -r 3d85c1136d63 linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Tue Jun 13 15:19:09 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Tue Jun 13 15:19:50 2006 +0100 @@ -407,7 +407,8 @@ static void blkif_restart_queue(void *ar { struct blkfront_info *info = (struct blkfront_info *)arg; spin_lock_irq(&blkif_io_lock); - kick_pending_request_queues(info); + if (info->connected == BLKIF_STATE_CONNECTED) + kick_pending_request_queues(info); spin_unlock_irq(&blkif_io_lock); } @@ -595,7 +596,8 @@ void do_blkif_request(request_queue_t *r continue; } - if (RING_FULL(&info->ring)) + if (unlikely(info->connected != BLKIF_STATE_CONNECTED) || + RING_FULL(&info->ring)) goto wait; DPRINTK("do_blk_req %p: cmd %p, sec %lx, " @@ -768,17 +770,17 @@ static void blkif_recover(struct blkfron (void)xenbus_switch_state(info->xbdev, XenbusStateConnected); + spin_lock_irq(&blkif_io_lock); + /* Now safe for us to use the shared ring */ - spin_lock_irq(&blkif_io_lock); info->connected = BLKIF_STATE_CONNECTED; - spin_unlock_irq(&blkif_io_lock); /* Send off requeued requests */ flush_requests(info); /* Kick any other new requests queued since we resumed */ - spin_lock_irq(&blkif_io_lock); kick_pending_request_queues(info); + spin_unlock_irq(&blkif_io_lock); } diff -r e9dd58963e97 -r 3d85c1136d63 tools/libxc/xc_elf.h --- a/tools/libxc/xc_elf.h Tue Jun 13 15:19:09 2006 +0100 +++ b/tools/libxc/xc_elf.h Tue Jun 13 15:19:50 2006 +0100 @@ -170,13 +170,14 @@ typedef struct { #define EM_PARISC 15 /* HPPA */ #define EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */ #define EM_PPC 20 /* PowerPC */ +#define EM_PPC64 21 /* PowerPC 64-bit */ #define EM_ARM 40 /* Advanced RISC Machines ARM */ #define EM_ALPHA 41 /* DEC ALPHA */ #define EM_SPARCV9 43 /* SPARC version 9 */ #define EM_ALPHA_EXP 0x9026 /* DEC ALPHA */ +#define EM_IA_64 50 /* Intel Merced */ #define EM_X86_64 62 /* AMD x86-64 architecture */ #define EM_VAX 75 /* DEC VAX */ -#define EM_NUM 15 /* number of machine types */ /* Version */ #define EV_NONE 0 /* Invalid */ diff -r e9dd58963e97 -r 3d85c1136d63 tools/libxc/xc_load_elf.c --- a/tools/libxc/xc_load_elf.c Tue Jun 13 15:19:09 2006 +0100 +++ b/tools/libxc/xc_load_elf.c Tue Jun 13 15:19:50 2006 +0100 @@ -21,6 +21,24 @@ loadelfsymtab( loadelfsymtab( const char *image, int xch, uint32_t dom, xen_pfn_t *parray, struct domain_setup_info *dsi); + +/* + * Elf header attributes we require for each supported host platform. + * These are checked in parseelfimage(). + */ +#if defined(__ia64__) +#define ELFCLASS ELFCLASS64 +#define ELFDATA ELFDATA2LSB +#define ELFMACHINE EM_IA_64 +#elif defined(__i386__) +#define ELFCLASS ELFCLASS32 +#define ELFDATA ELFDATA2LSB +#define ELFMACHINE EM_386 +#elif defined(__x86_64__) +#define ELFCLASS ELFCLASS64 +#define ELFDATA ELFDATA2LSB +#define ELFMACHINE EM_X86_64 +#endif int probe_elf(const char *image, unsigned long image_size, @@ -61,16 +79,10 @@ static int parseelfimage(const char *ima return -EINVAL; } - if ( -#if defined(__i386__) - (ehdr->e_ident[EI_CLASS] != ELFCLASS32) || - (ehdr->e_machine != EM_386) || -#elif defined(__x86_64__) - (ehdr->e_ident[EI_CLASS] != ELFCLASS64) || - (ehdr->e_machine != EM_X86_64) || -#endif - (ehdr->e_ident[EI_DATA] != ELFDATA2LSB) || - (ehdr->e_type != ET_EXEC) ) + if ( (ehdr->e_ident[EI_CLASS] != ELFCLASS) || + (ehdr->e_machine != ELFMACHINE) || + (ehdr->e_ident[EI_DATA] != ELFDATA) || + (ehdr->e_type != ET_EXEC) ) { ERROR("Kernel not a Xen-compatible Elf image."); return -EINVAL; diff -r e9dd58963e97 -r 3d85c1136d63 xen/include/xen/elf.h --- a/xen/include/xen/elf.h Tue Jun 13 15:19:09 2006 +0100 +++ b/xen/include/xen/elf.h Tue Jun 13 15:19:50 2006 +0100 @@ -178,9 +178,9 @@ typedef struct { #define EM_ALPHA 41 /* DEC ALPHA */ #define EM_SPARCV9 43 /* SPARC version 9 */ #define EM_ALPHA_EXP 0x9026 /* DEC ALPHA */ +#define EM_IA_64 50 /* Intel Merced */ #define EM_X86_64 62 /* AMD x86-64 architecture */ #define EM_VAX 75 /* DEC VAX */ -#define EM_NUM 15 /* number of machine types */ /* Version */ #define EV_NONE 0 /* Invalid */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |