/[linux-patches]/genpatches-2.6/trunk/2.6.16/1019_linux-2.6.16.20.patch
Gentoo

Contents of /genpatches-2.6/trunk/2.6.16/1019_linux-2.6.16.20.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 489 - (show annotations) (download) (as text)
Thu Jun 15 19:26:37 2006 UTC (14 years, 4 months ago) by dsd
File MIME type: text/x-diff
File size: 8139 byte(s)
Linux 2.6.16.20
1 diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c
2 index 29c2946..f649750 100644
3 --- a/arch/powerpc/platforms/powermac/setup.c
4 +++ b/arch/powerpc/platforms/powermac/setup.c
5 @@ -456,11 +456,23 @@ static int pmac_pm_finish(suspend_state_
6 return 0;
7 }
8
9 +static int pmac_pm_valid(suspend_state_t state)
10 +{
11 + switch (state) {
12 + case PM_SUSPEND_DISK:
13 + return 1;
14 + /* can't do any other states via generic mechanism yet */
15 + default:
16 + return 0;
17 + }
18 +}
19 +
20 static struct pm_ops pmac_pm_ops = {
21 .pm_disk_mode = PM_DISK_SHUTDOWN,
22 .prepare = pmac_pm_prepare,
23 .enter = pmac_pm_enter,
24 .finish = pmac_pm_finish,
25 + .valid = pmac_pm_valid,
26 };
27
28 #endif /* CONFIG_SOFTWARE_SUSPEND */
29 diff --git a/arch/x86_64/kernel/entry.S b/arch/x86_64/kernel/entry.S
30 index ab6e44d..97583bb 100644
31 --- a/arch/x86_64/kernel/entry.S
32 +++ b/arch/x86_64/kernel/entry.S
33 @@ -281,12 +281,7 @@ tracesys:
34 ja 1f
35 movq %r10,%rcx /* fixup for C */
36 call *sys_call_table(,%rax,8)
37 - movq %rax,RAX-ARGOFFSET(%rsp)
38 -1: SAVE_REST
39 - movq %rsp,%rdi
40 - call syscall_trace_leave
41 - RESTORE_TOP_OF_STACK %rbx
42 - RESTORE_REST
43 +1: movq %rax,RAX-ARGOFFSET(%rsp)
44 /* Use IRET because user could have changed frame */
45 jmp int_ret_from_sys_call
46 CFI_ENDPROC
47 diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c
48 index 28d50dc..a5209fd 100644
49 --- a/arch/x86_64/kernel/traps.c
50 +++ b/arch/x86_64/kernel/traps.c
51 @@ -30,6 +30,7 @@ #include <linux/module.h>
52 #include <linux/moduleparam.h>
53 #include <linux/nmi.h>
54 #include <linux/kprobes.h>
55 +#include <linux/kexec.h>
56
57 #include <asm/system.h>
58 #include <asm/uaccess.h>
59 @@ -434,6 +435,8 @@ #endif
60 printk(KERN_ALERT "RIP ");
61 printk_address(regs->rip);
62 printk(" RSP <%016lx>\n", regs->rsp);
63 + if (kexec_should_crash(current))
64 + crash_kexec(regs);
65 }
66
67 void die(const char * str, struct pt_regs * regs, long err)
68 @@ -456,6 +459,8 @@ void __kprobes die_nmi(char *str, struct
69 */
70 printk(str, safe_smp_processor_id());
71 show_registers(regs);
72 + if (kexec_should_crash(current))
73 + crash_kexec(regs);
74 if (panic_on_timeout || panic_on_oops)
75 panic("nmi watchdog");
76 printk("console shuts up ...\n");
77 diff --git a/drivers/ieee1394/ohci1394.c b/drivers/ieee1394/ohci1394.c
78 index b6b96fa..a9a73f7 100644
79 --- a/drivers/ieee1394/ohci1394.c
80 +++ b/drivers/ieee1394/ohci1394.c
81 @@ -2525,7 +2525,7 @@ static irqreturn_t ohci_irq_handler(int
82 if (phys_dma) {
83 reg_write(ohci,OHCI1394_PhyReqFilterHiSet, 0xffffffff);
84 reg_write(ohci,OHCI1394_PhyReqFilterLoSet, 0xffffffff);
85 - reg_write(ohci,OHCI1394_PhyUpperBound, 0xffff0000);
86 + reg_write(ohci,OHCI1394_PhyUpperBound, 0x01000000);
87 } else {
88 reg_write(ohci,OHCI1394_PhyReqFilterHiSet, 0x00000000);
89 reg_write(ohci,OHCI1394_PhyReqFilterLoSet, 0x00000000);
90 diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c
91 index d83248e..d02be4a 100644
92 --- a/drivers/ieee1394/sbp2.c
93 +++ b/drivers/ieee1394/sbp2.c
94 @@ -754,12 +754,17 @@ #endif
95
96 /* Register the status FIFO address range. We could use the same FIFO
97 * for targets at different nodes. However we need different FIFOs per
98 - * target in order to support multi-unit devices. */
99 + * target in order to support multi-unit devices.
100 + * The FIFO is located out of the local host controller's physical range
101 + * but, if possible, within the posted write area. Status writes will
102 + * then be performed as unified transactions. This slightly reduces
103 + * bandwidth usage, and some Prolific based devices seem to require it.
104 + */
105 scsi_id->status_fifo_addr = hpsb_allocate_and_register_addrspace(
106 &sbp2_highlevel, ud->ne->host, &sbp2_ops,
107 sizeof(struct sbp2_status_block), sizeof(quadlet_t),
108 - ~0ULL, ~0ULL);
109 - if (!scsi_id->status_fifo_addr) {
110 + 0x010000000000ULL, CSR1212_ALL_SPACE_END);
111 + if (scsi_id->status_fifo_addr == ~0ULL) {
112 SBP2_ERR("failed to allocate status FIFO address range");
113 goto failed_alloc;
114 }
115 @@ -2486,9 +2491,20 @@ static int sbp2scsi_slave_alloc(struct s
116
117 static int sbp2scsi_slave_configure(struct scsi_device *sdev)
118 {
119 + struct scsi_id_instance_data *scsi_id =
120 + (struct scsi_id_instance_data *)sdev->host->hostdata[0];
121 +
122 blk_queue_dma_alignment(sdev->request_queue, (512 - 1));
123 sdev->use_10_for_rw = 1;
124 sdev->use_10_for_ms = 1;
125 +
126 + if ((scsi_id->sbp2_firmware_revision & 0xffff00) == 0x0a2700 &&
127 + (scsi_id->ud->model_id == 0x000021 /* gen.4 iPod */ ||
128 + scsi_id->ud->model_id == 0x000023 /* iPod mini */ ||
129 + scsi_id->ud->model_id == 0x00007e /* iPod Photo */ )) {
130 + SBP2_INFO("enabling iPod workaround: decrement disk capacity");
131 + sdev->fix_capacity = 1;
132 + }
133 return 0;
134 }
135
136 diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
137 index ad62174..b2bed1a 100644
138 --- a/drivers/input/mouse/psmouse-base.c
139 +++ b/drivers/input/mouse/psmouse-base.c
140 @@ -300,8 +300,10 @@ static irqreturn_t psmouse_interrupt(str
141 * Check if this is a new device announcement (0xAA 0x00)
142 */
143 if (unlikely(psmouse->packet[0] == PSMOUSE_RET_BAT && psmouse->pktcnt <= 2)) {
144 - if (psmouse->pktcnt == 1)
145 + if (psmouse->pktcnt == 1) {
146 + psmouse->last = jiffies;
147 goto out;
148 + }
149
150 if (psmouse->packet[1] == PSMOUSE_RET_ID) {
151 __psmouse_set_state(psmouse, PSMOUSE_IGNORE);
152 diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
153 index aa6f3a4..f42e51a 100644
154 --- a/drivers/net/wireless/ipw2200.c
155 +++ b/drivers/net/wireless/ipw2200.c
156 @@ -8391,20 +8391,28 @@ static int ipw_wx_get_range(struct net_d
157
158 i = 0;
159 if (priv->ieee->mode & (IEEE_B | IEEE_G)) {
160 - for (j = 0; j < geo->bg_channels && i < IW_MAX_FREQUENCIES;
161 - i++, j++) {
162 + for (j = 0; j < geo->bg_channels && i < IW_MAX_FREQUENCIES; j++) {
163 + if ((priv->ieee->iw_mode == IW_MODE_ADHOC) &&
164 + (geo->bg[j].flags & IEEE80211_CH_PASSIVE_ONLY))
165 + continue;
166 +
167 range->freq[i].i = geo->bg[j].channel;
168 range->freq[i].m = geo->bg[j].freq * 100000;
169 range->freq[i].e = 1;
170 + i++;
171 }
172 }
173
174 if (priv->ieee->mode & IEEE_A) {
175 - for (j = 0; j < geo->a_channels && i < IW_MAX_FREQUENCIES;
176 - i++, j++) {
177 + for (j = 0; j < geo->a_channels && i < IW_MAX_FREQUENCIES; j++) {
178 + if ((priv->ieee->iw_mode == IW_MODE_ADHOC) &&
179 + (geo->a[j].flags & IEEE80211_CH_PASSIVE_ONLY))
180 + continue;
181 +
182 range->freq[i].i = geo->a[j].channel;
183 range->freq[i].m = geo->a[j].freq * 100000;
184 range->freq[i].e = 1;
185 + i++;
186 }
187 }
188
189 diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
190 index 4f91b0d..400e9d7 100644
191 --- a/drivers/scsi/libata-core.c
192 +++ b/drivers/scsi/libata-core.c
193 @@ -4293,6 +4293,7 @@ static int ata_start_drive(struct ata_po
194 int ata_device_resume(struct ata_port *ap, struct ata_device *dev)
195 {
196 if (ap->flags & ATA_FLAG_SUSPENDED) {
197 + ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 200000);
198 ap->flags &= ~ATA_FLAG_SUSPENDED;
199 ata_set_mode(ap);
200 }
201 diff --git a/drivers/sn/ioc3.c b/drivers/sn/ioc3.c
202 index 93449a1..4bd05a0 100644
203 --- a/drivers/sn/ioc3.c
204 +++ b/drivers/sn/ioc3.c
205 @@ -677,7 +677,7 @@ #endif
206 /* Track PCI-device specific data */
207 pci_set_drvdata(pdev, idd);
208 down_write(&ioc3_devices_rwsem);
209 - list_add(&idd->list, &ioc3_devices);
210 + list_add_tail(&idd->list, &ioc3_devices);
211 idd->id = ioc3_counter++;
212 up_write(&ioc3_devices_rwsem);
213
214 diff --git a/drivers/sn/ioc4.c b/drivers/sn/ioc4.c
215 index ea75b3d..771e868 100644
216 --- a/drivers/sn/ioc4.c
217 +++ b/drivers/sn/ioc4.c
218 @@ -313,7 +313,7 @@ ioc4_probe(struct pci_dev *pdev, const s
219 idd->idd_serial_data = NULL;
220 pci_set_drvdata(idd->idd_pdev, idd);
221 down_write(&ioc4_devices_rwsem);
222 - list_add(&idd->idd_list, &ioc4_devices);
223 + list_add_tail(&idd->idd_list, &ioc4_devices);
224 up_write(&ioc4_devices_rwsem);
225
226 /* Add this IOC4 to all submodules */
227 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
228 index 61de222..8b3cde1 100644
229 --- a/mm/page_alloc.c
230 +++ b/mm/page_alloc.c
231 @@ -949,7 +949,8 @@ restart:
232 alloc_flags |= ALLOC_HARDER;
233 if (gfp_mask & __GFP_HIGH)
234 alloc_flags |= ALLOC_HIGH;
235 - alloc_flags |= ALLOC_CPUSET;
236 + if (wait)
237 + alloc_flags |= ALLOC_CPUSET;
238
239 /*
240 * Go through the zonelist again. Let __GFP_HIGH and allocations

  ViewVC Help
Powered by ViewVC 1.1.20