1 --- linux-2.6.8/drivers/message/i2o/driver.c.orig 2004-08-18 17:59:08.000000000 +0200
2 +++ linux-2.6.8/drivers/message/i2o/driver.c 2004-08-18 20:31:27.451288416 +0200
4 DBG("Register driver %s\n", drv->name);
7 - drv->event_queue = create_workqueue(drv->name);
9 + * create_workqueue(name, freezer_flag)
10 + * ^^ PF_SYNCTHREAD if needed for syncing data to disk.
11 + * PF_NOFREEZE if also needed for writing the image.
14 + drv->event_queue = create_workqueue(drv->name, 0);
17 printk(KERN_ERR "i2o: Could not initialize event queue "
18 --- linux-2.6.8/drivers/message/i2o/iop.c.orig 2004-08-18 17:59:08.000000000 +0200
19 +++ linux-2.6.8/drivers/message/i2o/iop.c 2004-08-18 20:53:48.639396832 +0200
21 writel(0, &msg->tcntxt); //FIXME: use reasonable transaction context
22 writel(0, &msg->body[0]);
23 writel(0, &msg->body[1]);
25 +#ifdef CONFIG_X86_PAE
27 + * sizeof(dma_addr_t) == 8
28 + * sizeof(void *) == 4
29 + * don't cast 'dma_addr_t' to 'void *'.
31 + writel((u32) ((u64)c->status.phys), &msg->body[2]);
32 + writel((u32)(((u64)c->status.phys) >> 32), &msg->body[3]);
34 writel(i2o_ptr_low((void *)c->status.phys), &msg->body[2]);
35 writel(i2o_ptr_high((void *)c->status.phys), &msg->body[3]);
41 writel(0, &msg->tcntxt); // FIXME: use resonable transaction context
42 writel(0, &msg->body[0]);
43 writel(0, &msg->body[1]);
44 +#ifdef CONFIG_X86_PAE
45 + writel((u32) ((u64)c->status_block.phys), &msg->body[2]);
46 + writel((u32)(((u64)c->status_block.phys) >> 32), &msg->body[3]);
48 writel(i2o_ptr_low((void *)c->status_block.phys), &msg->body[2]);
49 writel(i2o_ptr_high((void *)c->status_block.phys), &msg->body[3]);
51 writel(sizeof(i2o_status_block), &msg->body[4]); /* always 88 bytes */
55 writel(MSG_FRAME_SIZE<<16|0x80, &msg->body[1]); /* Outbound msg frame
56 size in words and Initcode */
57 writel(0xd0000004, &msg->body[2]);
58 +#ifdef CONFIG_X86_PAE
59 + writel((u32) ((u64)c->status.phys), &msg->body[2]);
60 + writel((u32)(((u64)c->status.phys) >> 32), &msg->body[3]);
62 writel(i2o_ptr_low((void *)c->status.phys), &msg->body[3]);
63 writel(i2o_ptr_high((void *)c->status.phys), &msg->body[4]);