aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xen/common/keyhandler.c13
-rw-r--r--xen/drivers/block/xen_segment.c12
-rw-r--r--xen/drivers/ide/ide-xeno.c7
-rw-r--r--xen/drivers/scsi/sd.c10
-rw-r--r--xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.c4
-rw-r--r--xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/network/network.c8
6 files changed, 33 insertions, 21 deletions
diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c
index 1f8a84ea32..19943fff3e 100644
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -42,7 +42,7 @@ key_handler *get_key_handler(u_char key)
}
-void show_handlers(u_char key, void *dev_id, struct pt_regs *regs)
+static void show_handlers(u_char key, void *dev_id, struct pt_regs *regs)
{
int i;
@@ -56,7 +56,7 @@ void show_handlers(u_char key, void *dev_id, struct pt_regs *regs)
}
-void dump_registers(u_char key, void *dev_id, struct pt_regs *regs)
+static void dump_registers(u_char key, void *dev_id, struct pt_regs *regs)
{
extern void show_registers(struct pt_regs *regs);
@@ -65,13 +65,19 @@ void dump_registers(u_char key, void *dev_id, struct pt_regs *regs)
return;
}
-void halt_machine(u_char key, void *dev_id, struct pt_regs *regs)
+static void halt_machine(u_char key, void *dev_id, struct pt_regs *regs)
{
printk("'%c' pressed -> rebooting machine\n", key);
machine_restart(NULL);
return;
}
+static void kill_dom0(u_char key, void *dev_id, struct pt_regs *regs)
+{
+ printk("'%c' pressed -> gracefully rebooting machine\n", key);
+ kill_other_domain(0, 0);
+ return;
+}
/* XXX SMH: this is keir's fault */
@@ -125,6 +131,7 @@ void initialize_keytable()
add_key_handler('p', perfc_printall, "print performance counters");
add_key_handler('P', perfc_reset, "reset performance counters");
add_key_handler('q', do_task_queues, "dump task queues + guest state");
+ add_key_handler('B', kill_dom0, "reboot machine gracefully");
add_key_handler('R', halt_machine, "reboot machine ungracefully");
return;
diff --git a/xen/drivers/block/xen_segment.c b/xen/drivers/block/xen_segment.c
index 4a09f511a6..dbfe699030 100644
--- a/xen/drivers/block/xen_segment.c
+++ b/xen/drivers/block/xen_segment.c
@@ -101,6 +101,7 @@ void xen_segment_probe(struct task_struct *p, xen_disk_info_t *raw_xdi)
{
int loop, i;
xen_disk_info_t *xdi = map_domain_mem(virt_to_phys(raw_xdi));
+ unsigned long capacity = 0, device;
for ( loop = 0; loop < XEN_MAX_SEGMENTS; loop++ )
{
@@ -108,13 +109,12 @@ void xen_segment_probe(struct task_struct *p, xen_disk_info_t *raw_xdi)
(xsegments[loop].domain != p->domain) )
continue;
- xdi->disks[xdi->count].device =
- MK_VIRTUAL_XENDEV(xsegments[loop].segment_number);
+ device = MK_VIRTUAL_XENDEV(xsegments[loop].segment_number);
for ( i = 0; i < xsegments[loop].num_extents; i++ )
- {
- xdi->disks[xdi->count].capacity +=
- xsegments[loop].extents[i].size;
- }
+ capacity += xsegments[loop].extents[i].size;
+
+ xdi->disks[xdi->count].device = device;
+ xdi->disks[xdi->count].capacity = capacity;
xdi->count++;
}
diff --git a/xen/drivers/ide/ide-xeno.c b/xen/drivers/ide/ide-xeno.c
index 49ecde74e4..351e2cbcf5 100644
--- a/xen/drivers/ide/ide-xeno.c
+++ b/xen/drivers/ide/ide-xeno.c
@@ -12,7 +12,7 @@ void ide_probe_devices(xen_disk_info_t* xdi)
int loop;
unsigned int unit;
xen_disk_info_t *xen_xdi = map_domain_mem(virt_to_phys(xdi));
- unsigned long capacity;
+ unsigned long capacity, device;
ide_drive_t *drive;
for ( loop = 0; loop < MAX_HWIFS; loop++ )
@@ -25,9 +25,10 @@ void ide_probe_devices(xen_disk_info_t* xdi)
drive = &hwif->drives[unit];
if ( !drive->present ) continue;
+ device = MK_IDE_XENDEV((loop * MAX_DRIVES) + unit);
capacity = current_capacity(drive);
- xen_xdi->disks[xen_xdi->count].device =
- MK_IDE_XENDEV((loop * MAX_DRIVES) + unit);
+
+ xen_xdi->disks[xen_xdi->count].device = device;
xen_xdi->disks[xen_xdi->count].capacity = capacity;
xen_xdi->count++;
diff --git a/xen/drivers/scsi/sd.c b/xen/drivers/scsi/sd.c
index a2a245fddc..88e7ce814a 100644
--- a/xen/drivers/scsi/sd.c
+++ b/xen/drivers/scsi/sd.c
@@ -1320,17 +1320,21 @@ void scsi_probe_devices(xen_disk_info_t *xdi)
Scsi_Disk *sd;
int i;
xen_disk_info_t *xen_xdi = map_domain_mem(virt_to_phys(xdi));
+ unsigned long capacity, device;
for ( sd = rscsi_disks, i = 0; i < sd_template.dev_max; i++, sd++ )
{
if ( sd->device == NULL ) continue;
- xen_xdi->disks[xen_xdi->count].device = MK_SCSI_XENDEV(i);
- xen_xdi->disks[xen_xdi->count].capacity = sd->capacity;
+ device = MK_SCSI_XENDEV(i);
+ capacity = sd->capacity;
+
+ xen_xdi->disks[xen_xdi->count].device = device;
+ xen_xdi->disks[xen_xdi->count].capacity = capacity;
xen_xdi->count++;
printk("Disk %d: SCSI-XENO capacity %dkB (%dMB)\n",
- xen_xdi->count, sd->capacity>>1, sd->capacity>>11);
+ xen_xdi->count, capacity>>1, capacity>>11);
}
unmap_domain_mem(xen_xdi);
diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.c b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.c
index bfdfa50c3e..6fd44f1cc1 100644
--- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.c
+++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.c
@@ -522,8 +522,8 @@ int __init xlblk_init(void)
blk_ring = (blk_ring_t *)fix_to_virt(FIX_BLKRING_BASE);
blk_ring->req_prod = blk_ring->resp_prod = resp_cons = req_prod = 0;
- error = request_irq(XLBLK_RESPONSE_IRQ, xlblk_response_int, 0,
- "xlblk-response", NULL);
+ error = request_irq(XLBLK_RESPONSE_IRQ, xlblk_response_int,
+ SA_SAMPLE_RANDOM, "xlblk-response", NULL);
if ( error )
{
printk(KERN_ALERT "Could not allocate receive interrupt\n");
diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/network/network.c b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/network/network.c
index 7e85bf5abe..86bbeb921a 100644
--- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/network/network.c
+++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/network/network.c
@@ -116,8 +116,8 @@ static int network_open(struct net_device *dev)
network_alloc_rx_buffers(dev);
- error = request_irq(NET_RX_IRQ, network_rx_int, 0,
- "net-rx", dev);
+ error = request_irq(NET_RX_IRQ, network_rx_int,
+ SA_SAMPLE_RANDOM, "net-rx", dev);
if ( error )
{
printk(KERN_WARNING "%s: Could not allocate receive interrupt\n",
@@ -126,8 +126,8 @@ static int network_open(struct net_device *dev)
goto fail;
}
- error = request_irq(NET_TX_IRQ, network_tx_int, 0,
- "net-tx", dev);
+ error = request_irq(NET_TX_IRQ, network_tx_int,
+ SA_SAMPLE_RANDOM, "net-tx", dev);
if ( error )
{
printk(KERN_WARNING "%s: Could not allocate transmit interrupt\n",