ia64/xen-unstable

view patches/linux-2.6.16.13/fix-ide-cd-pio-mode.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 ad33b3882867
children
line source
1 diff -ru ../pristine-linux-2.6.16.13/drivers/ide/ide-lib.c ./drivers/ide/ide-lib.c
2 --- ../pristine-linux-2.6.16.13/drivers/ide/ide-lib.c 2006-05-02 22:38:44.000000000 +0100
3 +++ ./drivers/ide/ide-lib.c 2006-05-24 18:37:05.000000000 +0100
4 @@ -410,10 +410,10 @@
5 {
6 u64 addr = BLK_BOUNCE_HIGH; /* dma64_addr_t */
8 - if (!PCI_DMA_BUS_IS_PHYS) {
9 - addr = BLK_BOUNCE_ANY;
10 - } else if (on && drive->media == ide_disk) {
11 - if (HWIF(drive)->pci_dev)
12 + if (on && drive->media == ide_disk) {
13 + if (!PCI_DMA_BUS_IS_PHYS)
14 + addr = BLK_BOUNCE_ANY;
15 + else if (HWIF(drive)->pci_dev)
16 addr = HWIF(drive)->pci_dev->dma_mask;
17 }