From: "Grover, Andrew" <andrew.grover@intel.com>
To: "'Pavel Machek'" <pavel@ucw.cz>,
torvalds@transmeta.com,
kernel list <linux-kernel@vger.kernel.org>
Subject: RE: Fix suspend-to-RAM in 2.5.20
Date: Mon, 3 Jun 2002 13:33:21 -0700 [thread overview]
Message-ID: <59885C5E3098D511AD690002A5072D3C02AB7ECB@orsmsx111.jf.intel.com> (raw)
Pavel,
Please keep the ifdefs in place in acpi/system.c. It's marked broken for a
reason until I have a chance to look at it.
Also -- what's the point of moving obviously ACPI-specific code into
suspend.c, instead of leaving it in acpi.c?
Regards -- Andy
> From: Pavel Machek [mailto:pavel@ucw.cz]
> I created arch/i386/suspend.c not to clash with ACPI people so much in
> future. (More stuff is going to move into it in the future, to clean
> up functions that really do not belong to the headers.) Please apply,
>
>
> Pavel
>
> --- clean/arch/i386/kernel/Makefile Thu May 30 12:21:00 2002
> +++ linux-swsusp/arch/i386/kernel/Makefile Mon Jun 3 19:06:05 2002
> @@ -24,6 +24,8 @@
> obj-$(CONFIG_SMP) += smp.o smpboot.o trampoline.o
> obj-$(CONFIG_X86_LOCAL_APIC) += mpparse.o apic.o nmi.o
> obj-$(CONFIG_X86_IO_APIC) += io_apic.o
> +obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend.o
> +obj-$(CONFIG_ACPI_SLEEP) += suspend.o
> ifdef CONFIG_VISWS
> obj-y += setup-visws.o
> obj-$(CONFIG_X86_VISWS_APIC) += visws_apic.o
> --- clean/arch/i386/kernel/suspend.c Mon Jun 3 11:48:17 2002
> +++ linux-swsusp/arch/i386/kernel/suspend.c Mon Jun 3 19:01:07 2002
> @@ -0,0 +1,45 @@
> +/*
> + * Suspend support specific for i386.
> + *
> + * Distribute under GPLv2
> + *
> + * Copyright (c) 2002 Pavel Machek <pavel@suse.cz>
> + */
> +
> +#define ACPI_C
> +#include <linux/config.h>
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/init.h>
> +#include <linux/types.h>
> +#include <linux/spinlock.h>
> +#include <linux/poll.h>
> +#include <linux/delay.h>
> +#include <linux/sysrq.h>
> +#include <linux/compatmac.h>
> +#include <linux/proc_fs.h>
> +#include <linux/irq.h>
> +#include <linux/pm.h>
> +#include <linux/device.h>
> +#include <linux/suspend.h>
> +#include <asm/uaccess.h>
> +#include <asm/acpi.h>
> +
> +
> +void do_suspend_lowlevel(int resume)
> +{
> +/*
> + * FIXME: This function should really be written in
> assembly. Actually
> + * requirement is that it does not touch stack, because %esp will be
> + * wrong during resume before restore_processor_context(). Check
> + * assembly if you modify this.
> + */
> + if (!resume) {
> + save_processor_context();
> + acpi_save_register_state((unsigned
> long)&&acpi_sleep_done);
> + acpi_enter_sleep_state(3);
> + return;
> + }
> +acpi_sleep_done:
> + restore_processor_context();
> +}
> --- clean/drivers/acpi/system.c Mon Jun 3 11:43:30 2002
> +++ linux-swsusp/drivers/acpi/system.c Mon Jun 3 18:57:34 2002
> @@ -260,10 +260,8 @@
> u32 state)
> {
> acpi_status status = AE_ERROR;
> -#if 0
> unsigned long flags = 0;
>
> - /* this is very broken, so don't do anything until it's fixed */
> save_flags(flags);
>
> switch (state)
> @@ -289,8 +287,6 @@
> fix_processor_context();
>
> restore_flags(flags);
> -#endif
> - printk("ACPI: ACPI-based suspend currently broken, aborting\n");
>
> return status;
> }
> --- clean/include/asm-i386/suspend.h Thu May 30 12:21:13 2002
> +++ linux-swsusp/include/asm-i386/suspend.h Mon Jun 3 19:15:52 2002
> @@ -294,3 +294,27 @@
> }
> #endif
>
> +#ifdef CONFIG_ACPI_SLEEP
> +extern unsigned long saved_eip;
> +extern unsigned long saved_esp;
> +extern unsigned long saved_ebp;
> +extern unsigned long saved_ebx;
> +extern unsigned long saved_esi;
> +extern unsigned long saved_edi;
> +
> +static inline void acpi_save_register_state(unsigned long
> return_point)
> +{
> + saved_eip = return_point;
> + asm volatile ("movl %%esp,(%0)" : "=m" (saved_esp));
> + asm volatile ("movl %%ebp,(%0)" : "=m" (saved_ebp));
> + asm volatile ("movl %%ebx,(%0)" : "=m" (saved_ebx));
> + asm volatile ("movl %%edi,(%0)" : "=m" (saved_edi));
> + asm volatile ("movl %%esi,(%0)" : "=m" (saved_esi));
> +}
> +
> +#define acpi_restore_register_state() do {} while (0)
> +
> +/* routines for saving/restoring kernel state */
> +extern int acpi_save_state_mem(void);
> +extern int acpi_save_state_disk(void);
> +#endif
>
> --
> (about SSSCA) "I don't say this lightly. However, I really
> think that the U.S.
> no longer is classifiable as a democracy, but rather as a
> plutocracy." --hpa
> -
> To unsubscribe from this list: send the line "unsubscribe
> linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
next reply other threads:[~2002-06-03 20:33 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-03 20:33 Grover, Andrew [this message]
2002-06-03 20:50 ` Pavel Machek
-- strict thread matches above, loose matches on Subject: below --
2002-06-03 20:11 Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=59885C5E3098D511AD690002A5072D3C02AB7ECB@orsmsx111.jf.intel.com \
--to=andrew.grover@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®