Gentoo Archives: gentoo-commits

From: "Daniel Drake (dsd)" <dsd@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] linux-patches r1253 - genpatches-2.6/trunk/2.6.24
Date: Sun, 24 Feb 2008 23:25:32
Message-Id: E1JTQDo-0000uy-Lm@stork.gentoo.org
1 Author: dsd
2 Date: 2008-02-24 23:25:27 +0000 (Sun, 24 Feb 2008)
3 New Revision: 1253
4
5 Modified:
6 genpatches-2.6/trunk/2.6.24/2500_arcmsr-dma-coherent-warnings.patch
7 Log:
8 updated arcmsr fix
9
10 Modified: genpatches-2.6/trunk/2.6.24/2500_arcmsr-dma-coherent-warnings.patch
11 ===================================================================
12 --- genpatches-2.6/trunk/2.6.24/2500_arcmsr-dma-coherent-warnings.patch 2008-02-16 21:55:54 UTC (rev 1252)
13 +++ genpatches-2.6/trunk/2.6.24/2500_arcmsr-dma-coherent-warnings.patch 2008-02-24 23:25:27 UTC (rev 1253)
14 @@ -1,61 +1,83 @@
15 -From: Nick Cheng <nick.cheng@×××××××××.tw>
16 +[PATCH] arcmsr: fix IRQs disabled warning spew
17
18 -Partial backport of 76d78300 ("arcmsr: updates (1.20.00.15)") by
19 -Daniel Drake <dsd@g.o>. Removes pci_free_consistent usage, which
20 -should not be used when IRQs are disabled for portability reasons. Fixes a
21 -spew of dma_free_coherent irqs_disabled() warnings.
22 +As of 2.6.24, running the archttp passthrough daemon with the arcmsr
23 +driver produces an endless spew of dma_free_coherent warnings:
24
25 -diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c
26 -index f4a202e..4f9ff32 100644
27 ---- a/drivers/scsi/arcmsr/arcmsr_hba.c
28 -+++ b/drivers/scsi/arcmsr/arcmsr_hba.c
29 -@@ -1380,12 +1388,13 @@ static int arcmsr_iop_message_xfer(struct AdapterControlBlock *acb, \
30 + WARNING: at arch/x86/kernel/pci-dma_64.c:169 dma_free_coherent()
31 +
32 +It turns out that coherent memory is not needed, so commit 76d78300 by
33 +Nick Cheng <nick.cheng@×××××××××.tw> switched it to kmalloc (as well as
34 +making a lot of other changes which have not been included here).
35 +
36 +James Bottomley pointed out that the new kmalloc usage was also wrong,
37 +I corrected this in commit 69e562c2.
38 +
39 +This patch combines both of the above for the purpose of fixing 2.6.24.
40 +
41 +Signed-off-by: Daniel Drake <dsd@g.o>
42 +
43 +Index: linux-2.6.24-gentoo/drivers/scsi/arcmsr/arcmsr_hba.c
44 +===================================================================
45 +--- linux-2.6.24-gentoo.orig/drivers/scsi/arcmsr/arcmsr_hba.c
46 ++++ linux-2.6.24-gentoo/drivers/scsi/arcmsr/arcmsr_hba.c
47 +@@ -1380,17 +1380,16 @@ static int arcmsr_iop_message_xfer(struc
48 + switch(controlcode) {
49
50 case ARCMSR_MESSAGE_READ_RQBUFFER: {
51 - unsigned long *ver_addr;
52 +- unsigned long *ver_addr;
53 - dma_addr_t buf_handle;
54 ++ unsigned char *ver_addr;
55 uint8_t *pQbuffer, *ptmpQbuffer;
56 int32_t allxfer_len = 0;
57 -+ void *tmp;
58
59 - ver_addr = pci_alloc_consistent(acb->pdev, 1032, &buf_handle);
60 -- if (!ver_addr) {
61 -+ tmp = kmalloc(1032, GFP_KERNEL|GFP_DMA);
62 -+ ver_addr = (unsigned long *)tmp;
63 -+ if (!tmp) {
64 ++ ver_addr = kmalloc(1032, GFP_ATOMIC);
65 + if (!ver_addr) {
66 retvalue = ARCMSR_MESSAGE_FAIL;
67 goto message_out;
68 }
69 -@@ -1421,18 +1430,19 @@ static int arcmsr_iop_message_xfer(struct AdapterControlBlock *acb, \
70 - memcpy(pcmdmessagefld->messagedatabuffer, (uint8_t *)ver_addr, allxfer_len);
71 +- ptmpQbuffer = (uint8_t *) ver_addr;
72 ++ ptmpQbuffer = ver_addr;
73 + while ((acb->rqbuf_firstindex != acb->rqbuf_lastindex)
74 + && (allxfer_len < 1031)) {
75 + pQbuffer = &acb->rqbuffer[acb->rqbuf_firstindex];
76 +@@ -1419,25 +1418,24 @@ static int arcmsr_iop_message_xfer(struc
77 + }
78 + arcmsr_iop_message_read(acb);
79 + }
80 +- memcpy(pcmdmessagefld->messagedatabuffer, (uint8_t *)ver_addr, allxfer_len);
81 ++ memcpy(pcmdmessagefld->messagedatabuffer, ver_addr, allxfer_len);
82 pcmdmessagefld->cmdmessage.Length = allxfer_len;
83 pcmdmessagefld->cmdmessage.ReturnCode = ARCMSR_MESSAGE_RETURNCODE_OK;
84 - pci_free_consistent(acb->pdev, 1032, ver_addr, buf_handle);
85 -+ kfree(tmp);
86 ++ kfree(ver_addr);
87 }
88 break;
89
90 case ARCMSR_MESSAGE_WRITE_WQBUFFER: {
91 - unsigned long *ver_addr;
92 +- unsigned long *ver_addr;
93 - dma_addr_t buf_handle;
94 ++ unsigned char *ver_addr;
95 int32_t my_empty_len, user_len, wqbuf_firstindex, wqbuf_lastindex;
96 uint8_t *pQbuffer, *ptmpuserbuffer;
97 -+ void *tmp;
98
99 - ver_addr = pci_alloc_consistent(acb->pdev, 1032, &buf_handle);
100 -- if (!ver_addr) {
101 -+ tmp = kmalloc(1032, GFP_KERNEL|GFP_DMA);
102 -+ ver_addr = (unsigned long *)tmp;
103 -+ if (!tmp) {
104 ++ ver_addr = kmalloc(1032, GFP_ATOMIC);
105 + if (!ver_addr) {
106 retvalue = ARCMSR_MESSAGE_FAIL;
107 goto message_out;
108 }
109 -@@ -1482,7 +1492,7 @@ static int arcmsr_iop_message_xfer(struct AdapterControlBlock *acb, \
110 +- ptmpuserbuffer = (uint8_t *)ver_addr;
111 ++ ptmpuserbuffer = ver_addr;
112 + user_len = pcmdmessagefld->cmdmessage.Length;
113 + memcpy(ptmpuserbuffer, pcmdmessagefld->messagedatabuffer, user_len);
114 + wqbuf_lastindex = acb->wqbuf_lastindex;
115 +@@ -1483,7 +1481,7 @@ static int arcmsr_iop_message_xfer(struc
116 retvalue = ARCMSR_MESSAGE_FAIL;
117 }
118 }
119 - pci_free_consistent(acb->pdev, 1032, ver_addr, buf_handle);
120 -+ kfree(tmp);
121 ++ kfree(ver_addr);
122 }
123 break;
124
125
126 --
127 gentoo-commits@l.g.o mailing list