ia64/xen-unstable
annotate patches/linux-2.6.16.13/fix-ide-cd-pio-mode.patch @ 10171:ad33b3882867
Fix IDE CD-drive PIO mode.
CD drives in PIO mode don't work under Xen because of a change in Linux
between 2.6.12 and 2.6.16, as a result of the following thread:
http://lists.parisc-linux.org/pipermail/parisc-linux/2005-August/027197.html
The change breaks systems which have highmem and a swiotlb because the
ide-cd driver doesn't use the swiotlb, resulting in read/writes to/from
highmem pages in PIO mode not working any longer. Xen kernels usually have
both highmem and a swiotlb.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
CD drives in PIO mode don't work under Xen because of a change in Linux
between 2.6.12 and 2.6.16, as a result of the following thread:
http://lists.parisc-linux.org/pipermail/parisc-linux/2005-August/027197.html
The change breaks systems which have highmem and a swiotlb because the
ide-cd driver doesn't use the swiotlb, resulting in read/writes to/from
highmem pages in PIO mode not working any longer. Xen kernels usually have
both highmem and a swiotlb.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
author | cl349@firebug.cl.cam.ac.uk |
---|---|
date | Wed May 24 19:41:47 2006 +0100 (2006-05-24) |
parents | |
children |
rev | line source |
---|---|
cl349@10171 | 1 diff -ru ../pristine-linux-2.6.16.13/drivers/ide/ide-lib.c ./drivers/ide/ide-lib.c |
cl349@10171 | 2 --- ../pristine-linux-2.6.16.13/drivers/ide/ide-lib.c 2006-05-02 22:38:44.000000000 +0100 |
cl349@10171 | 3 +++ ./drivers/ide/ide-lib.c 2006-05-24 18:37:05.000000000 +0100 |
cl349@10171 | 4 @@ -410,10 +410,10 @@ |
cl349@10171 | 5 { |
cl349@10171 | 6 u64 addr = BLK_BOUNCE_HIGH; /* dma64_addr_t */ |
cl349@10171 | 7 |
cl349@10171 | 8 - if (!PCI_DMA_BUS_IS_PHYS) { |
cl349@10171 | 9 - addr = BLK_BOUNCE_ANY; |
cl349@10171 | 10 - } else if (on && drive->media == ide_disk) { |
cl349@10171 | 11 - if (HWIF(drive)->pci_dev) |
cl349@10171 | 12 + if (on && drive->media == ide_disk) { |
cl349@10171 | 13 + if (!PCI_DMA_BUS_IS_PHYS) |
cl349@10171 | 14 + addr = BLK_BOUNCE_ANY; |
cl349@10171 | 15 + else if (HWIF(drive)->pci_dev) |
cl349@10171 | 16 addr = HWIF(drive)->pci_dev->dma_mask; |
cl349@10171 | 17 } |
cl349@10171 | 18 |