Re: [PATCH] 2.4.x SATA with highmem

From: Willy Tarreau
Date: Sun Dec 04 2005 - 13:09:28 EST


Hi Again,

sorry for the noise. I applied this patch on an already patched
kernel. KM_BIO_IRQ does not exist on vanilla 2.4.32. However,
KM_SOFTIRQ0 is not used, so here is the patch reworked to use
that instead.

Regards,
Willy

diff -urN linux-2.4.32-libata1/drivers/scsi/libata-core.c linux-2.4.32-libata1-highmem/drivers/scsi/libata-core.c
--- linux-2.4.32-libata1/drivers/scsi/libata-core.c 2005-12-04 16:32:33.000000000 +0100
+++ linux-2.4.32-libata1-highmem/drivers/scsi/libata-core.c 2005-12-04 18:37:28.000000000 +0100
@@ -2424,9 +2424,9 @@
sg[qc->orig_n_elem - 1].length += qc->pad_len;
if (pad_buf) {
struct scatterlist *psg = &qc->pad_sgent;
- void *addr = kmap_atomic(psg->page, KM_IRQ0);
+ void *addr = kmap_atomic(psg->page, KM_SOFTIRQ0);
memcpy(addr + psg->offset, pad_buf, qc->pad_len);
- kunmap_atomic(psg->page, KM_IRQ0);
+ kunmap_atomic(psg->page, KM_SOFTIRQ0);
}
} else {
if (sg_dma_len(&sg[0]) > 0)
@@ -2698,9 +2698,9 @@
psg->offset = offset_in_page(offset);

if (qc->tf.flags & ATA_TFLAG_WRITE) {
- void *addr = kmap_atomic(psg->page, KM_IRQ0);
+ void *addr = kmap_atomic(psg->page, KM_SOFTIRQ0);
memcpy(pad_buf, addr + psg->offset, qc->pad_len);
- kunmap_atomic(psg->page, KM_IRQ0);
+ kunmap_atomic(psg->page, KM_SOFTIRQ0);
}

sg_dma_address(psg) = ap->pad_dma + (qc->tag * ATA_DMA_PAD_SZ);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/