Commit f19706b3 authored by Steve French's avatar Steve French

Merge bk://linux.bkbits.net/linux-2.5

into hostme.bitkeeper.com:/repos/c/cifs/linux-2.5cifs
parents 0a39c310 02ab55b8
...@@ -828,8 +828,8 @@ W: http://www.xenotime.net/linux/linux.html ...@@ -828,8 +828,8 @@ W: http://www.xenotime.net/linux/linux.html
W: http://www.linux-usb.org W: http://www.linux-usb.org
D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers
D: x86 SMP, ACPI, bootflag hacking D: x86 SMP, ACPI, bootflag hacking
S: 15275 SW Koll Parkway, Suite H S: 12725 SW Millikan Way, Suite 400
S: Beaverton, Oregon 97006 S: Beaverton, Oregon 97005
S: USA S: USA
N: Bob Dunlop N: Bob Dunlop
...@@ -2228,8 +2228,8 @@ N: Patrick Mochel ...@@ -2228,8 +2228,8 @@ N: Patrick Mochel
E: mochel@osdl.org E: mochel@osdl.org
E: mochelp@infinity.powertie.org E: mochelp@infinity.powertie.org
D: PCI Power Management, ACPI work D: PCI Power Management, ACPI work
S: 15275 SW Koll Parkway, Suite H S: 12725 SW Millikan Way, Suite 400
S: Beaverton, OR 97006 S: Beaverton, Oregon 97005
S: USA S: USA
N: Eberhard Moenkeberg N: Eberhard Moenkeberg
...@@ -3046,12 +3046,10 @@ S: Sevilla 41005 ...@@ -3046,12 +3046,10 @@ S: Sevilla 41005
S: Spain S: Spain
N: Linus Torvalds N: Linus Torvalds
E: torvalds@transmeta.com E: torvalds@osdl.org
W: http://www.cs.helsinki.fi/Linus.Torvalds
P: 1024/A86B35C5 96 54 50 29 EC 11 44 7A BE 67 3C 24 03 13 62 C8
D: Original kernel hacker D: Original kernel hacker
S: 3990 Freedom Circle S: 12725 SW Millikan Way, Suite 400
S: Santa Clara, California 95054 S: Beaverton, Oregon 97005
S: USA S: USA
N: Marcelo W. Tosatti N: Marcelo W. Tosatti
......
...@@ -41,7 +41,7 @@ Linux 2.4: ...@@ -41,7 +41,7 @@ Linux 2.4:
Linux 2.5: Linux 2.5:
The same rules apply as 2.4 except that you should follow linux-kernel The same rules apply as 2.4 except that you should follow linux-kernel
to track changes in API's. The final contact point for Linux 2.5 to track changes in API's. The final contact point for Linux 2.5
submissions is Linus Torvalds <torvalds@transmeta.com>. submissions is Linus Torvalds <torvalds@osdl.org>.
What Criteria Determine Acceptance What Criteria Determine Acceptance
---------------------------------- ----------------------------------
......
...@@ -105,7 +105,7 @@ linux-kernel@vger.kernel.org. Most kernel developers monitor this ...@@ -105,7 +105,7 @@ linux-kernel@vger.kernel.org. Most kernel developers monitor this
e-mail list, and can comment on your changes. e-mail list, and can comment on your changes.
Linus Torvalds is the final arbiter of all changes accepted into the Linus Torvalds is the final arbiter of all changes accepted into the
Linux kernel. His e-mail address is torvalds@transmeta.com. He gets Linux kernel. His e-mail address is <torvalds@osdl.org>. He gets
a lot of e-mail, so typically you should do your best to -avoid- sending a lot of e-mail, so typically you should do your best to -avoid- sending
him e-mail. him e-mail.
......
...@@ -52,7 +52,7 @@ latter, man ksymoops for details. ...@@ -52,7 +52,7 @@ latter, man ksymoops for details.
Full Information Full Information
---------------- ----------------
From: Linus Torvalds <torvalds@transmeta.com> From: Linus Torvalds <torvalds@osdl.org>
How to track down an Oops.. [originally a mail to linux-kernel] How to track down an Oops.. [originally a mail to linux-kernel]
......
...@@ -21,7 +21,7 @@ difficult to maintain, add yourself with a patch if desired. ...@@ -21,7 +21,7 @@ difficult to maintain, add yourself with a patch if desired.
Bill Ryder <bryder@sgi.com> Bill Ryder <bryder@sgi.com>
Thomas Sailer <sailer@ife.ee.ethz.ch> Thomas Sailer <sailer@ife.ee.ethz.ch>
Gregory P. Smith <greg@electricrain.com> Gregory P. Smith <greg@electricrain.com>
Linus Torvalds <torvalds@transmeta.com> Linus Torvalds <torvalds@osdl.org>
Roman Weissgaerber <weissg@vienna.at> Roman Weissgaerber <weissg@vienna.at>
<Kazuki.Yasumatsu@fujixerox.co.jp> <Kazuki.Yasumatsu@fujixerox.co.jp>
......
...@@ -225,10 +225,8 @@ IF SOMETHING GOES WRONG: ...@@ -225,10 +225,8 @@ IF SOMETHING GOES WRONG:
the file MAINTAINERS to see if there is a particular person associated the file MAINTAINERS to see if there is a particular person associated
with the part of the kernel that you are having trouble with. If there with the part of the kernel that you are having trouble with. If there
isn't anyone listed there, then the second best thing is to mail isn't anyone listed there, then the second best thing is to mail
them to me (torvalds@transmeta.com), and possibly to any other them to me (torvalds@osdl.org), and possibly to any other relevant
relevant mailing-list or to the newsgroup. The mailing-lists are mailing-list or to the newsgroup.
useful especially for SCSI and networking problems, as I can't test
either of those personally anyway.
- In all bug-reports, *please* tell what kernel you are talking about, - In all bug-reports, *please* tell what kernel you are talking about,
how to duplicate the problem, and what your setup is (use your common how to duplicate the problem, and what your setup is (use your common
......
...@@ -385,19 +385,21 @@ static int try_to_identify (ide_drive_t *drive, u8 cmd) ...@@ -385,19 +385,21 @@ static int try_to_identify (ide_drive_t *drive, u8 cmd)
int autoprobe = 0; int autoprobe = 0;
unsigned long cookie = 0; unsigned long cookie = 0;
if (IDE_CONTROL_REG && !hwif->irq) { /*
autoprobe = 1; * Disable device irq unless we need to
cookie = probe_irq_on(); * probe for it. Otherwise we'll get spurious
/* enable device irq */ * interrupts during the identify-phase that
hwif->OUTB(drive->ctl, IDE_CONTROL_REG); * the irq handler isn't expecting.
} else { */
/* if (IDE_CONTROL_REG) {
* Disable device irq if we don't need to u8 ctl = drive->ctl | 2;
* probe for it. Otherwise we'll get spurious if (!hwif->irq) {
* interrupts during the identify-phase that autoprobe = 1;
* the irq handler isn't expecting. cookie = probe_irq_on();
*/ /* enable device irq */
hwif->OUTB(drive->ctl|2, IDE_CONTROL_REG); ctl &= ~2;
}
hwif->OUTB(ctl, IDE_CONTROL_REG);
} }
retval = actual_try_to_identify(drive, cmd); retval = actual_try_to_identify(drive, cmd);
......
...@@ -692,7 +692,6 @@ static int suspend_prepare_image(void) ...@@ -692,7 +692,6 @@ static int suspend_prepare_image(void)
printk(KERN_CRIT "%sCouldn't get enough free pages, on %d pages short\n", printk(KERN_CRIT "%sCouldn't get enough free pages, on %d pages short\n",
name_suspend, nr_needed_pages-nr_free_pages()); name_suspend, nr_needed_pages-nr_free_pages());
root_swap = 0xFFFF; root_swap = 0xFFFF;
spin_unlock_irq(&suspend_pagedir_lock);
return 1; return 1;
} }
si_swapinfo(&i); /* FIXME: si_swapinfo(&i) returns all swap devices information. si_swapinfo(&i); /* FIXME: si_swapinfo(&i) returns all swap devices information.
...@@ -700,7 +699,6 @@ static int suspend_prepare_image(void) ...@@ -700,7 +699,6 @@ static int suspend_prepare_image(void)
if (i.freeswap < nr_needed_pages) { if (i.freeswap < nr_needed_pages) {
printk(KERN_CRIT "%sThere's not enough swap space available, on %ld pages short\n", printk(KERN_CRIT "%sThere's not enough swap space available, on %ld pages short\n",
name_suspend, nr_needed_pages-i.freeswap); name_suspend, nr_needed_pages-i.freeswap);
spin_unlock_irq(&suspend_pagedir_lock);
return 1; return 1;
} }
...@@ -710,7 +708,6 @@ static int suspend_prepare_image(void) ...@@ -710,7 +708,6 @@ static int suspend_prepare_image(void)
/* Shouldn't happen */ /* Shouldn't happen */
printk(KERN_CRIT "%sCouldn't allocate enough pages\n",name_suspend); printk(KERN_CRIT "%sCouldn't allocate enough pages\n",name_suspend);
panic("Really should not happen"); panic("Really should not happen");
spin_unlock_irq(&suspend_pagedir_lock);
return 1; return 1;
} }
nr_copy_pages_check = nr_copy_pages; nr_copy_pages_check = nr_copy_pages;
...@@ -724,12 +721,9 @@ static int suspend_prepare_image(void) ...@@ -724,12 +721,9 @@ static int suspend_prepare_image(void)
* End of critical section. From now on, we can write to memory, * End of critical section. From now on, we can write to memory,
* but we should not touch disk. This specially means we must _not_ * but we should not touch disk. This specially means we must _not_
* touch swap space! Except we must write out our image of course. * touch swap space! Except we must write out our image of course.
*
* Following line enforces not writing to disk until we choose.
*/ */
printk( "critical section/: done (%d pages copied)\n", nr_copy_pages ); printk( "critical section/: done (%d pages copied)\n", nr_copy_pages );
spin_unlock_irq(&suspend_pagedir_lock);
return 0; return 0;
} }
...@@ -808,6 +802,24 @@ void do_magic_resume_2(void) ...@@ -808,6 +802,24 @@ void do_magic_resume_2(void)
#endif #endif
} }
/* do_magic() is implemented in arch/?/kernel/suspend_asm.S, and basically does:
if (!resume) {
do_magic_suspend_1();
save_processor_state();
SAVE_REGISTERS
do_magic_suspend_2();
return;
}
GO_TO_SWAPPER_PAGE_TABLES
do_magic_resume_1();
COPY_PAGES_BACK
RESTORE_REGISTERS
restore_processor_state();
do_magic_resume_2();
*/
void do_magic_suspend_1(void) void do_magic_suspend_1(void)
{ {
mb(); mb();
...@@ -818,8 +830,13 @@ void do_magic_suspend_1(void) ...@@ -818,8 +830,13 @@ void do_magic_suspend_1(void)
void do_magic_suspend_2(void) void do_magic_suspend_2(void)
{ {
int is_problem;
read_swapfiles(); read_swapfiles();
if (!suspend_prepare_image()) { /* suspend_save_image realeses suspend_pagedir_lock */ is_problem = suspend_prepare_image();
spin_unlock_irq(&suspend_pagedir_lock);
if (!is_problem) {
kernel_fpu_end(); /* save_processor_state() does kernel_fpu_begin, and we need to revert it in order to pass in_atomic() checks */
BUG_ON(in_atomic());
suspend_save_image(); suspend_save_image();
suspend_power_down(); /* FIXME: if suspend_power_down is commented out, console is lost after few suspends ?! */ suspend_power_down(); /* FIXME: if suspend_power_down is commented out, console is lost after few suspends ?! */
} }
...@@ -1224,13 +1241,13 @@ void software_resume(void) ...@@ -1224,13 +1241,13 @@ void software_resume(void)
orig_loglevel = console_loglevel; orig_loglevel = console_loglevel;
console_loglevel = new_loglevel; console_loglevel = new_loglevel;
if(!resume_file[0] && resume_status == RESUME_SPECIFIED) { if (!resume_file[0] && resume_status == RESUME_SPECIFIED) {
printk( "suspension device unspecified\n" ); printk( "suspension device unspecified\n" );
return; return;
} }
printk( "resuming from %s\n", resume_file); printk( "resuming from %s\n", resume_file);
if(read_suspend_image(resume_file, 0)) if (read_suspend_image(resume_file, 0))
goto read_failure; goto read_failure;
do_magic(1); do_magic(1);
panic("This never returns"); panic("This never returns");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment