aboutsummaryrefslogtreecommitdiffstats
path: root/xen-2.4.16/drivers
diff options
context:
space:
mode:
authorkaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk>2003-02-20 20:17:41 +0000
committerkaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk>2003-02-20 20:17:41 +0000
commit694a17be507d7e8baaa847ece3ef1851d6b0a0a9 (patch)
tree3fbaabde5e9f93ba983ef57d2b9c9b68e807ebd9 /xen-2.4.16/drivers
parentbfaa373f8a8ebed0b0d6e1079dfdccec388b9199 (diff)
downloadxen-694a17be507d7e8baaa847ece3ef1851d6b0a0a9.tar.gz
xen-694a17be507d7e8baaa847ece3ef1851d6b0a0a9.tar.bz2
xen-694a17be507d7e8baaa847ece3ef1851d6b0a0a9.zip
bitkeeper revision 1.79 (3e5537e5Vnw-9Lpy24SyRJVm4xxZ3w)
xl_block.c, xen_block.c, process.c: Fixes to Xenolinux blkdev handling. Still rather broken though :-( newdom: Change mode to -rwxrwxr-x
Diffstat (limited to 'xen-2.4.16/drivers')
-rw-r--r--xen-2.4.16/drivers/block/xen_block.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/xen-2.4.16/drivers/block/xen_block.c b/xen-2.4.16/drivers/block/xen_block.c
index 84870b0884..b77b933e45 100644
--- a/xen-2.4.16/drivers/block/xen_block.c
+++ b/xen-2.4.16/drivers/block/xen_block.c
@@ -251,14 +251,20 @@ static void dispatch_probe_block_io(struct task_struct *p, int index)
extern void ide_probe_devices(xen_disk_info_t *xdi);
blk_ring_t *blk_ring = p->blk_ring_base;
xen_disk_info_t *xdi;
+ unsigned long flags, cpu_mask;
xdi = phys_to_virt((unsigned long)blk_ring->req_ring[index].buffer);
ide_probe_devices(xdi);
+ spin_lock_irqsave(&p->blk_ring_lock, flags);
blk_ring->resp_ring[blk_ring->resp_prod].id = blk_ring->req_ring[index].id;
blk_ring->resp_ring[blk_ring->resp_prod].status = 0;
blk_ring->resp_prod = BLK_RESP_RING_INC(blk_ring->resp_prod);
+ spin_unlock_irqrestore(&p->blk_ring_lock, flags);
+
+ cpu_mask = mark_guest_event(p, _EVENT_BLK_RESP);
+ guest_event_notify(cpu_mask);
}
static void dispatch_rw_block_io(struct task_struct *p, int index)