ia64/xen-unstable

view patches/linux-2.6.16.13/device_bind.patch @ 11472:3e31c5e160cf

[HVM] Fix an error when read from APIC registers like IRR, ISR and TMR.
From SDM3 spec, for APIC registers, all 32-bit registers should
be accessed using 128-bit aligned 32bit loads or stores.
And wider registers (64-bit or 256-bit) must be accessed using
multiple 32-bit loads or stores.

In old APIC virtualization code, we use IRR, ISR and TMR which are
256-bit registers as contiguous bit maps other than multiple 32-bit.

So guest always fetch error values.

Original patch was:
* Signed-off-by: Xiaohui Xin <xiaohui.xin@intel.com>
* Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
* Signed-off-by: Eddie Dong <eddie.dong@intel.com>

Signed-off-by: Keir Fraser <keir@xensource.com>
author kaf24@firebug.cl.cam.ac.uk
date Wed Sep 13 15:59:14 2006 +0100 (2006-09-13)
parents ad5b833122a8
children
line source
1 diff -pruN ../pristine-linux-2.6.16.13/drivers/base/bus.c ./drivers/base/bus.c
2 --- ../pristine-linux-2.6.16.13/drivers/base/bus.c 2006-05-02 22:38:44.000000000 +0100
3 +++ ./drivers/base/bus.c 2006-05-04 17:41:30.000000000 +0100
4 @@ -188,6 +188,11 @@ static ssize_t driver_bind(struct device
5 up(&dev->sem);
6 if (dev->parent)
7 up(&dev->parent->sem);
8 +
9 + if (err > 0) /* success */
10 + err = count;
11 + else if (err == 0) /* driver didn't accept device */
12 + err = -ENODEV;
13 }
14 put_device(dev);
15 put_bus(bus);