]> git.pld-linux.org Git - packages/kernel.git/blame - linux-2.4.22-updates.patch
- obsolete
[packages/kernel.git] / linux-2.4.22-updates.patch
CommitLineData
4d67412c
AM
1From ak@suse.de Mon Oct 6 01:11:13 2003
2Date: 03 Oct 2003 10:24:23 +0200
3From: Andi Kleen <ak@suse.de>
4To: Sylvain Pasche <sylvain_pasche@yahoo.fr>
5Cc: linux-kernel@vger.kernel.org
6Subject: Re: 2.4.22 ACPI power off via sysrq not working
7
8Sylvain Pasche <sylvain_pasche@yahoo.fr> writes:
9
10> Hi,
11>
12> If I want to halt the system using sys-rq - o key, I get an oops instead
13> of a power down.
14> Inside pm.c:159, there is:
15>
16> if (in_interrupt())
17> BUG();
18>
19> But if we look at the trace, we are in the interrupt of the keyboard
20> handler.
21> One fix would be to comment out the BUG line, but there's certainly "a
22> better way to do it".
23
24Use this patch.
25
26diff -u linux/drivers/acpi/system.c-o linux/drivers/acpi/system.c
27--- linux/drivers/acpi/system.c-o 2003-09-07 16:20:44.000000000 +0200
28+++ linux/drivers/acpi/system.c 2003-09-08 21:04:46.000000000 +0200
29@@ -1192,11 +1192,21 @@
30
31 #if defined(CONFIG_MAGIC_SYSRQ) && defined(CONFIG_PM)
32
33+static int po_cb_active;
34+
35+static void acpi_po_tramp(void *x)
36+{
37+ acpi_power_off();
38+}
39+
40 /* Simple wrapper calling power down function. */
41 static void acpi_sysrq_power_off(int key, struct pt_regs *pt_regs,
42 struct kbd_struct *kbd, struct tty_struct *tty)
43-{
44- acpi_power_off();
45+{
46+ static struct tq_struct tq = { .routine = acpi_po_tramp };
47+ if (po_cb_active++)
48+ return;
49+ schedule_task(&tq);
50 }
51
52 struct sysrq_key_op sysrq_acpi_poweroff_op = {
53
54
55-Andi
56
57
58-
59To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
60the body of a message to majordomo@vger.kernel.org
61More majordomo info at http://vger.kernel.org/majordomo-info.html
62Please read the FAQ at http://www.tux.org/lkml/
63From zzz@anda.ru Tue Oct 7 09:07:20 2003
64Date: Fri, 3 Oct 2003 00:50:16 +0600
65From: Denis Zaitsev <zzz@anda.ru>
66To: linux-scsi@vger.kernel.org
67Cc: linux-kernel@vger.kernel.org, gibbs@scsiguy.com, dledford@redhat.com,
68 marcelo@conectiva.com.br
69Subject: [PATCH][TRIVIAL] (2.4.22) Allow aic7xxx_osm.c to be compiled
70 without CONFIG_PCI
71
72This is the trivial #ifdef patch for CONFIG_PCI/EISA. In my case it
73allows the Adaptec SCSI driver (the "new" one) to be compiled for
74non-PCI (EISA) system. Else there are an <undefined symbol> errors.
75The 2.6 branch needs the same patch, as I understand.
76
77Please, apply it. (I don't know who is the maintainer for now!)
78
79
80--- linux-2.4.22.orig/drivers/scsi/aic7xxx/aic7xxx_osm.c Mon Aug 25 05:44:42 2003
81+++ linux-2.4.22/drivers/scsi/aic7xxx/aic7xxx_osm.c Mon Oct 6 01:05:04 2003
82@@ -1552,6 +1552,7 @@
83
84 /* Still equal. Sort by BIOS address, ioport, or bus/slot/func. */
85 switch (rvalue) {
86+#ifdef CONFIG_PCI
87 case AHC_PCI:
88 {
89 char primary_channel;
90@@ -1584,6 +1585,8 @@
91 value = 1;
92 break;
93 }
94+#endif
95+#ifdef CONFIG_EISA
96 case AHC_EISA:
97 if ((rahc->flags & AHC_BIOS_ENABLED) != 0) {
98 value = rahc->platform_data->bios_address
99@@ -1593,6 +1596,7 @@
100 - lahc->bsh.ioport;
101 }
102 break;
103+#endif
104 default:
105 panic("ahc_softc_sort: invalid bus type");
106 }
107-
108To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
109the body of a message to majordomo@vger.kernel.org
110More majordomo info at http://vger.kernel.org/majordomo-info.html
111Please read the FAQ at http://www.tux.org/lkml/
112[PATCH] Compile fix for ACPI in 2.4.22/x86-64
113
114Marcelo unfortunately added an last minute ACPI update that changed
115ACPI interfaces and broke x86-64 compilation. I didn't catch it in
116time, so 2.4.22 does not compile out of the box for AMD64.
117
118This patch fixes it.
119You'll have to apply it when compiling 2.4.22 for x86-64
120
121-Andi
122
123All diffs for ChangeSet 1.1074
124
125diff -Nru a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c
126
127--- a/arch/x86_64/kernel/io_apic.c Tue Jun 24 13:45:14 2003
128+++ b/arch/x86_64/kernel/io_apic.c Fri Aug 22 03:38:16 2003
129@@ -1762,7 +1762,7 @@
130 }
131
132
133-int io_apic_set_pci_routing (int ioapic, int pin, int irq)
134+int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level ,int active_high_low)
135 {
136 struct IO_APIC_route_entry entry;
137 unsigned long flags;
138@@ -1785,18 +1785,21 @@
139 entry.dest_mode = INT_DELIVERY_MODE;
140 entry.dest.logical.logical_dest = TARGET_CPUS;
141 entry.mask = 1; /* Disabled (masked) */
142- entry.trigger = 1; /* Level sensitive */
143- entry.polarity = 1; /* Low active */
144+ entry.trigger = edge_level;
145+ entry.polarity = active_high_low;
146
147 add_pin_to_irq(irq, ioapic, pin);
148
149 entry.vector = assign_irq_vector(irq);
150
151 printk(KERN_DEBUG "IOAPIC[%d]: Set PCI routing entry (%d-%d -> 0x%x -> "
152- "IRQ %d)\n", ioapic,
153- mp_ioapics[ioapic].mpc_apicid, pin, entry.vector, irq);
154+ "IRQ %d) Mode:%i Active:%i\n", ioapic,
155+ mp_ioapics[ioapic].mpc_apicid, pin, entry.vector, irq, edge_level, active_high_low);
156
157- irq_desc[irq].handler = &ioapic_level_irq_type;
158+ if (edge_level)
159+ irq_desc[irq].handler = &ioapic_level_irq_type;
160+ else
161+ irq_desc[irq].handler = &ioapic_edge_irq_type;
162
163 set_intr_gate(entry.vector, interrupt[irq]);
164
165diff -Nru a/arch/x86_64/kernel/mpparse.c b/arch/x86_64/kernel/mpparse.c
166
167--- a/arch/x86_64/kernel/mpparse.c Tue Jun 24 14:01:06 2003
168+++ b/arch/x86_64/kernel/mpparse.c Fri Aug 22 03:29:25 2003
169@@ -923,7 +923,7 @@
170
171 ioapic_pin = irq - mp_ioapic_routing[ioapic].irq_start;
172
173- io_apic_set_pci_routing(ioapic, ioapic_pin, irq);
174+ io_apic_set_pci_routing(ioapic, ioapic_pin, irq, 1, 1);
175 }
176
177 #endif /*CONFIG_ACPI_HT_ONLY*/
178@@ -939,6 +939,8 @@
179 int ioapic_pin = 0;
180 int irq = 0;
181 int idx, bit = 0;
182+ int edge_level = 0;
183+ int active_high_low = 0;
184
185 /*
186 * Parsing through the PCI Interrupt Routing Table (PRT) and program
187@@ -949,11 +951,14 @@
188
189 /* Need to get irq for dynamic entry */
190 if (entry->link.handle) {
191- irq = acpi_pci_link_get_irq(entry->link.handle, entry->link.index);
192+ irq = acpi_pci_link_get_irq(entry->link.handle, entry->link.index, &edge_level, &active_high_low);
193 if (!irq)
194 continue;
195- } else
196+ } else {
197+ edge_level = 1;
198+ active_high_low = 1;
199 irq = entry->link.index;
200+ }
201
202 irq = entry->link.index;
203 ioapic = mp_find_ioapic(irq);
204@@ -983,7 +988,7 @@
205
206 mp_ioapic_routing[ioapic].pin_programmed[idx] |= (1<<bit);
207
208- vector = io_apic_set_pci_routing(ioapic, ioapic_pin, irq);
209+ vector = io_apic_set_pci_routing(ioapic, ioapic_pin, irq, edge_level, active_high_low);
210 if (vector)
211 entry->irq = irq;
212
213diff -Nru a/include/asm-x86_64/io_apic.h b/include/asm-x86_64/io_apic.h
214
215--- a/include/asm-x86_64/io_apic.h Sat Aug 9 13:32:28 2003
216+++ b/include/asm-x86_64/io_apic.h Fri Aug 22 03:29:25 2003
217@@ -148,6 +148,6 @@
218 extern int io_apic_get_unique_id (int ioapic, int apic_id);
219 extern int io_apic_get_version (int ioapic);
220 extern int io_apic_get_redir_entries (int ioapic);
221-extern int io_apic_set_pci_routing (int ioapic, int pin, int irq);
222+extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int, int);
223
224 #endif
225
226<http://www.bitkeeper.com>
227
228ChangeSet@1.1065.1.36 03-08-25 13:58:04-03:00 willy@ods.org
229all diffs
230
231[PATCH] Fix amd67x_pm.c crash with no chipsets / CONFIG_HOTPLUG
232
233amd76x_pm.c will crash if no chipsets are found and CONFIG_HOTPLUG is
234turned on. This patch makes it return with a failure instead.
235
236<patch@1.1065.1.36??nav=index.html|ChangeSet@-3d|cset@1.1065.1.36>
237
238diff -Nru a/drivers/char/amd76x_pm.c b/drivers/char/amd76x_pm.c
239
240--- a/drivers/char/amd76x_pm.c Mon Aug 25 09:51:20 2003
241+++ b/drivers/char/amd76x_pm.c Mon Aug 25 04:22:01 2003
242@@ -577,16 +577,18 @@
243 int found;
244
245 /* Find northbridge */
246- found = pci_module_init(&amd_nb_driver);
247- if (found < 0) {
248+ found = pci_register_driver(&amd_nb_driver);
249+ if (found <= 0) {
250 printk(KERN_ERR "amd76x_pm: Could not find northbridge\n");
251+ pci_unregister_driver(&amd_nb_driver);
252 return 1;
253 }
254
255 /* Find southbridge */
256- found = pci_module_init(&amd_sb_driver);
257- if (found < 0) {
258+ found = pci_register_driver(&amd_sb_driver);
259+ if (found <= 0) {
260 printk(KERN_ERR "amd76x_pm: Could not find southbridge\n");
261+ pci_unregister_driver(&amd_sb_driver);
262 pci_unregister_driver(&amd_nb_driver);
263 return 1;
264 }
265@@ -620,6 +622,8 @@
266 #ifndef AMD76X_NTH
267 if (!amd76x_pm_cfg.curr_idle) {
268 printk(KERN_ERR "amd76x_pm: Idle function not changed\n");
269+ pci_unregister_driver(&amd_nb_driver);
270+ pci_unregister_driver(&amd_sb_driver);
271 return 1;
272 }
273
274
275<http://www.bitkeeper.com>
276
277From chas@cmf.nrl.navy.mil Sat Aug 30 01:03:00 2003
278Date: Thu, 28 Aug 2003 16:03:23 -0400
279From: chas williams <chas@cmf.nrl.navy.mil>
280To: Krzysztof Sierota <krzysiek@mediaone.pl>
281Cc: linux-kernel@vger.kernel.org, linux-atm@vger.rutgers.edu
282Subject: Re: 2.4.22 oops in ATM 2.4.21 works fine
283
284>the 2.4.22 kernel is oopsing at start scripts, machine stays alive, but A=
285>TM=20
286>does not work. 2.4.21 works just fine.
287
288try this patch:
289
290--- linux-2.4.22/net/atm/common.c.000 Tue Aug 26 10:40:30 2003
291+++ linux-2.4.22/net/atm/common.c Tue Aug 26 13:12:35 2003
292@@ -672,7 +672,8 @@
293 }
294 if (try_atm_clip_ops()) {
295 ret_val = atm_clip_ops->clip_create(arg);
296- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
297+ if (atm_clip_ops->owner)
298+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
299 } else
300 ret_val = -ENOSYS;
301 goto done;
302@@ -687,7 +688,8 @@
303 #endif
304 if (try_atm_clip_ops()) {
305 error = atm_clip_ops->atm_init_atmarp(vcc);
306- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
307+ if (atm_clip_ops->owner)
308+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
309 if (!error)
310 sock->state = SS_CONNECTED;
311 ret_val = error;
312@@ -701,7 +703,8 @@
313 }
314 if (try_atm_clip_ops()) {
315 ret_val = atm_clip_ops->clip_mkip(vcc, arg);
316- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
317+ if (atm_clip_ops->owner)
318+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
319 } else
320 ret_val = -ENOSYS;
321 goto done;
322@@ -712,7 +715,8 @@
323 }
324 if (try_atm_clip_ops()) {
325 ret_val = atm_clip_ops->clip_setentry(vcc, arg);
326- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
327+ if (atm_clip_ops->owner)
328+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
329 } else
330 ret_val = -ENOSYS;
331 goto done;
332@@ -723,7 +727,8 @@
333 }
334 if (try_atm_clip_ops()) {
335 ret_val = atm_clip_ops->clip_encap(vcc, arg);
336- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
337+ if (atm_clip_ops->owner)
338+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
339 } else
340 ret_val = -ENOSYS;
341 goto done;
342--- linux-2.4.22/net/atm/proc.c.000 Tue Aug 26 13:30:23 2003
343+++ linux-2.4.22/net/atm/proc.c Tue Aug 26 13:31:58 2003
344@@ -358,7 +358,7 @@
345 spin_unlock_irqrestore(&dev->lock, flags);
346 spin_unlock(&atm_dev_lock);
347 #if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE)
348- if (clip_info)
349+ if (clip_info && atm_clip_ops->owner)
350 __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
351 #endif
352 return strlen(buf);
353@@ -367,8 +367,8 @@
354 }
355 spin_unlock(&atm_dev_lock);
356 #if defined(CONFIG_ATM_CLIP) || defined(CONFIG_ATM_CLIP_MODULE)
357- if (clip_info)
358- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
359+ if (clip_info && atm_clip_ops->owner)
360+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
361 #endif
362 return 0;
363 }
364@@ -458,7 +458,8 @@
365 if (--count) continue;
366 atmarp_info(n->dev,entry,NULL,buf);
367 read_unlock_bh(&clip_tbl_hook->lock);
368- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
369+ if (atm_clip_ops->owner)
370+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
371 return strlen(buf);
372 }
373 for (vcc = entry->vccs; vcc;
374@@ -466,12 +467,14 @@
375 if (--count) continue;
376 atmarp_info(n->dev,entry,vcc,buf);
377 read_unlock_bh(&clip_tbl_hook->lock);
378- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
379+ if (atm_clip_ops->owner)
380+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
381 return strlen(buf);
382 }
383 }
384 read_unlock_bh(&clip_tbl_hook->lock);
385- __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
386+ if (atm_clip_ops->owner)
387+ __MOD_DEC_USE_COUNT(atm_clip_ops->owner);
388 return 0;
389 }
390 #endif
391-
392To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
393the body of a message to majordomo@vger.kernel.org
394More majordomo info at http://vger.kernel.org/majordomo-info.html
395Please read the FAQ at http://www.tux.org/lkml/
396From linux-kernel@vger.kernel.org Wed Aug 27 15:59:09 2003
397Date: Wed, 27 Aug 2003 14:07:03 +0000
398From: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
399To: bk-commits-24@vger.kernel.org
400Subject: Fix possible IRQ handling SMP race: Kudos to TeJun Huh
401
402ChangeSet 1.1084, 2003/08/27 11:07:03-03:00, marcelo@logos.cnet
403
404 Fix possible IRQ handling SMP race: Kudos to TeJun Huh
405
406
407# This patch includes the following deltas:
408# ChangeSet 1.1083 -> 1.1084
409# include/asm-i386/hardirq.h 1.4 -> 1.5
410#
411
412 hardirq.h | 2 ++
413 1 files changed, 2 insertions(+)
414
415
416diff -Nru a/include/asm-i386/hardirq.h b/include/asm-i386/hardirq.h
417--- a/include/asm-i386/hardirq.h Wed Aug 27 08:02:39 2003
418+++ b/include/asm-i386/hardirq.h Wed Aug 27 08:02:39 2003
419@@ -67,6 +67,8 @@
420 {
421 ++local_irq_count(cpu);
422
423+ smp_mb();
424+
425 while (test_bit(0,&global_irq_lock)) {
426 cpu_relax();
427 }
428-
429To unsubscribe from this list: send the line "unsubscribe bk-commits-24" in
430the body of a message to majordomo@vger.kernel.org
431More majordomo info at http://vger.kernel.org/majordomo-info.html
432[PATCH] Fix initrd with netboot
433
434From "Martin Persson"
435
436we've encountered a problem when trying to netboot 2.4.21 and above. After
437/linuxrc has been executed and the kernel tries to remount the root, it
438panics with the all too well known message "Unable to mount root fs on ...".
439
440The kernel bugs out in mount_block_root in the file init/do_mounts.c, to be
441more precise in the for-loop. What happens is that it tries to mount the
442file system as type ext2 (which happens to be first in the list in our
443case), but instead of returning -EINVAL it returns -EBUSY, the loop exits
444instead of trying the next (correct) fs-type and the kernel panics.
445
446In -wolk for some time and maybe others.
447
448All diffs for ChangeSet 1.1065.1.42
449
450diff -Nru a/init/do_mounts.c b/init/do_mounts.c
451
452--- a/init/do_mounts.c Mon Jul 21 13:13:12 2003
453+++ b/init/do_mounts.c Thu Jul 10 06:46:36 2003
454@@ -360,6 +360,7 @@
455 flags |= MS_RDONLY;
456 goto retry;
457 case -EINVAL:
458+ case -EBUSY:
459 continue;
460 }
461 /*
462
463<http://www.bitkeeper.com>
464
465pcwd.c: fix oops on unload
466
467From Arkadiusz Miskiewicz <arekm@pld-linux.org>
468
469 This patch is from Alan Cox and fixes problems when pcwd driver is loaded
470 while there is no pcwd hardware installed.
471 No idea why it was not feeded to you.
472 Problem is described here
473 http://www.ussg.iu.edu/hypermail/linux/kernel/0308.1/0178.html and tracked
474 down in private conversation with Cox.
475
476
477<patch@1.1065.1.38??nav=index.html|ChangeSet@-3d|cset@1.1065.1.38>
478
479diff -Nru a/drivers/char/pcwd.c b/drivers/char/pcwd.c
480
481--- a/drivers/char/pcwd.c Sun Sep 29 12:29:59 2002
482+++ b/drivers/char/pcwd.c Mon Aug 25 10:20:56 2003
483@@ -933,8 +933,7 @@
484
485 release_region (pcwd_info.io_addr, pcwd_info.card_info->io_size);
486
487- if (pcwd_info.flags & PCWD_PCI_REG)
488- pci_unregister_driver (&pcwd_driver);
489+ pci_unregister_driver (&pcwd_driver);
490
491 return;
492 }
493
494<http://www.bitkeeper.com>
495
496From greg@kroah.com Tue Sep 16 23:06:43 2003
497Date: Fri, 5 Sep 2003 08:24:36 -0700
498From: Greg KH <greg@kroah.com>
499To: Ingo Oeser <ingo@oeser-vu.de>
500Cc: linux-kernel@vger.kernel.org
501Subject: Re: [OOPS] 2.4.22, USB visor module crashing on HotSync.
502
503On Fri, Sep 05, 2003 at 01:30:22PM +0200, Ingo Oeser wrote:
504> Hi Greg,
505>
506> there seems to be a problem with the visor module and usb_serial.
507>
508> Please look at __serial_close() and usb_disconnect() calling it
509> in line 1406 vs. line 1408. I would suggest removing 1408 or
510> folding it into __serial_close().
511>
512> Formal Bug-Reporting follows:
513>
514> [1.] One line summary of the problem:
515>
516> USB visor module and usb_serial crashing on HotSync in usb_disconnect
517>
518> [2.] Full description of the problem/report:
519>
520> usb_disconnect calls __serial_close() which sets the tty = NULL
521> and afterwards trys to set tty->private_data = NULL
522> which will crash
523
524Nice, someone else reported this yesterday for the ftdi_sio driver.
525
526Can you test the patch below and let me know if this fixes it?
527
528thanks,
529
530greg k-h
531
532
533--- a/drivers/usb/serial/usbserial.c Sat Aug 30 23:27:18 2003
534+++ b/drivers/usb/serial/usbserial.c Thu Sep 4 13:48:45 2003
535@@ -556,7 +556,10 @@
536 else
537 generic_close(port, filp);
538 port->open_count = 0;
539- port->tty = NULL;
540+ if (port->tty) {
541+ port->tty->driver_data = NULL;
542+ port->tty = NULL;
543+ }
544 }
545
546 if (port->serial->type->owner)
547@@ -1401,12 +1404,9 @@
548 for (i = 0; i < serial->num_ports; ++i) {
549 port = &serial->port[i];
550 down (&port->sem);
551- if (port->tty != NULL) {
552- while (port->open_count > 0) {
553+ if (port->tty != NULL)
554+ while (port->open_count > 0)
555 __serial_close(port, NULL);
556- }
557- port->tty->driver_data = NULL;
558- }
559 up (&port->sem);
560 }
561
562-
563To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
564the body of a message to majordomo@vger.kernel.org
565More majordomo info at http://vger.kernel.org/majordomo-info.html
566Please read the FAQ at http://www.tux.org/lkml/
This page took 0.249401 seconds and 4 git commands to generate.