From: yanh <yanh@lemote.com>
To: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc: wuzhangjin@gmail.com, linux-mips@linux-mips.org,
ralf@linux-mips.org, philippe@cowpig.ca, r0bertz@gentoo.org,
zhangfx@lemote.com, apatard@mandriva.com,
loongson-dev@googlegroups.com, gnewsense-dev@nongnu.org,
hofrat@hofr.at, liujl@lemote.com, erwan@thiscow.com
Subject: Re: [loongson-PATCH-v1 22/27] Hibernation Support in mips system
Date: Tue, 26 May 2009 09:43:08 +0800 [thread overview]
Message-ID: <1243302188.9819.58.camel@localhost.localdomain> (raw)
In-Reply-To: <20090523.213045.39168996.anemo@mba.ocn.ne.jp>
在 2009-05-23六的 21:30 +0900,Atsushi Nemoto写道:
> On Sat, 23 May 2009 16:06:43 +0800, yanh <yanh@lemote.com> wrote:
> > > > +unsigned long
> > > > + saved_ra,
> > > > + saved_sp,
> ...
> > > > + saved_v0,
> > > > + saved_v1;
> > >
> > > Instead of enumerating them, I would prefer something like "struct
> > > pt_regs saved_regs" or "unsigned long saved_regs[32]".
> > This implementation is referencing the x86 platform.
> > Not all the 32 reigsters are needed to save.
> > Maybe the whole registers needed to save can still be reduced.
>
> I did not mean save/restore all registers. I just mean using only one
> symbol (struct or array). Though the struct or array contains some
> unused members, it saves many instructions in
> swsusp_arch_{suspend,resume}.
>
> For saving N registers, (N * 2) instructions are required to save to
> individual variables, but (N + 2) instructions are required to save to
> array or struct.
Yes, the struct array method is more efficient, we will change to it.
>
> > > > +void save_processor_state(void)
> > > > +{
> > > > + saved_status = read_c0_status();
> > > > +}
> > >
> > > No need to save/restore floating point registers?
> > the floating point registers are not used by kernel, for user part, they
> > are already saved while entering into kernel mode.
>
> No, floating point registers are not saved on entering into kernel.
> They are saved on context switch.
It's my mistake. But I think, if there is need to save floating point
registers, the kernel have already done for it.
What's need to save should be for the resuming parts. Those registers which are used while
in suspending path are needed to save.
create_image()
in_suspend = 1;
save_processor_state();
error = swsusp_arch_suspend();
if (error)
printk(KERN_ERR "PM: Error %d creating hibernation image\n",
error);
when resuming this functions is executed for righ after the swsusp_arch_suspend().
This is not a normal function return.
So the registers need to save are those damaged by swsusp_arch_suspend and what it calls.
because this is not a normal function call, the callee saved registers can not be restored, so we need to save
it explicitly. For caller saved temporary registers, they are already saved in create_image. Are this right?
>
> ---
> Atsushi Nemoto
next prev parent reply other threads:[~2009-05-26 1:43 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-20 21:48 [loongson-PATCH-v1 00/27] linux patches of loongson-based machines wuzhangjin
2009-05-20 21:49 ` [loongson-PATCH-v1 01/27] fix-warning: incompatible argument type of pci_fixup_irqs wuzhangjin
2009-05-20 22:11 ` David Daney
2009-05-20 23:20 ` Wu Zhangjin
2009-05-21 8:13 ` Ralf Baechle
2009-05-20 21:49 ` [loongson-PATCH-v1 02/27] fix-warning: incompatible argument type of virt_to_phys wuzhangjin
2009-05-21 8:06 ` Ralf Baechle
2009-05-20 21:50 ` [loongson-PATCH-v1 03/27] fix-error: incompatiable argument type of clear_user wuzhangjin
2009-05-21 7:51 ` Ralf Baechle
2009-05-20 21:50 ` [loongson-PATCH-v1 04/27] change the naming methods wuzhangjin
2009-05-20 21:50 ` [loongson-PATCH-v1 05/27] remove reference to bonito64.h wuzhangjin
2009-05-20 21:51 ` [loongson-PATCH-v1 06/27] divide the files to the smallest logic unit wuzhangjin
2009-05-20 21:51 ` [loongson-PATCH-v1 07/27] replace tons of magic numbers by understandable symbols wuzhangjin
2009-05-20 21:52 ` [loongson-PATCH-v1 08/27] clean up the early printk support for fuloong(2e) wuzhangjin
2009-05-20 21:52 ` [loongson-PATCH-v1 09/27] enable Real Time Clock Support " wuzhangjin
2009-05-20 21:54 ` [loongson-PATCH-v1 10/27] add loongson-specific cpu-feature-overrides.h wuzhangjin
2009-05-20 21:54 ` [loongson-PATCH-v1 11/27] split the loongson-specific part out wuzhangjin
2009-05-20 22:05 ` [loongson-PATCH-v1 12/27] add basic loongson-2f support wuzhangjin
2009-05-20 22:06 ` [loongson-PATCH-v1 13/27] add basic fuloong(2f) support wuzhangjin
2009-05-20 22:06 ` [loongson-PATCH-v1 14/27] enable serial port support of loongson-based machines wuzhangjin
2009-05-20 22:07 ` [loongson-PATCH-v1 15/27] add basic yeeloong(2f) laptop support wuzhangjin
2009-05-20 22:08 ` [loongson-PATCH-v1 16/27] Add Siliconmotion 712 framebuffer driver wuzhangjin
2009-05-29 13:29 ` Simon Braunschmidt
2009-05-29 19:51 ` Wu Zhangjin
2009-06-01 7:41 ` Wu Zhangjin
2009-06-01 7:41 ` Wu Zhangjin
2009-05-20 22:08 ` [loongson-PATCH-v1 17/27] define Loongson2F arch specific phys prot access wuzhangjin
2009-05-20 22:09 ` [loongson-PATCH-v1 18/27] Loongson2 specific OProfile driver wuzhangjin
2009-05-20 22:10 ` [loongson-PATCH-v1 19/27] flush posted write to irq wuzhangjin
2009-05-20 22:10 ` [loongson-PATCH-v1 20/27] CS5536 MFGPT as system clock source support wuzhangjin
2009-05-20 22:10 ` [loongson-PATCH-v1 21/27] Loongson2F cpufreq support wuzhangjin
2009-05-20 22:11 ` [loongson-PATCH-v1 22/27] Hibernation Support in mips system wuzhangjin
2009-05-21 12:43 ` Ralf Baechle
2009-05-24 13:13 ` Wu Zhangjin
2009-05-22 13:01 ` Atsushi Nemoto
2009-05-23 8:06 ` yanh
2009-05-23 12:30 ` Atsushi Nemoto
2009-05-26 1:43 ` yanh [this message]
2009-05-26 2:27 ` Hongbing Hu
2009-05-26 14:48 ` Atsushi Nemoto
2009-05-20 22:11 ` [loongson-PATCH-v1 23/27] Alsa memory maps fixup on mips systems wuzhangjin
2009-05-20 22:18 ` David Daney
2009-05-20 23:36 ` Wu Zhangjin
2009-05-20 22:12 ` [loongson-PATCH-v1 24/27] fixup for FUJITSU disk wuzhangjin
2009-05-22 18:32 ` Bartlomiej Zolnierkiewicz
2009-05-23 7:11 ` yanh
2009-05-23 11:47 ` Bartlomiej Zolnierkiewicz
2009-05-25 5:45 ` yanh
2009-05-25 7:35 ` 胡洪兵
2009-05-25 14:56 ` Bartlomiej Zolnierkiewicz
2009-05-25 19:05 ` Sergei Shtylyov
2009-05-25 19:10 ` Martin K. Petersen
2009-05-25 19:17 ` Sergei Shtylyov
2009-05-26 1:21 ` yanh
2009-05-26 7:56 ` Alan Cox
2009-05-26 14:39 ` yanh
2009-05-20 22:13 ` [loongson-PATCH-v1 25/27] Flush RAS and BTB for CPU predictively execution wuzhangjin
2009-05-20 22:13 ` [loongson-PATCH-v1 26/27] add default kernel config file for loongson-based machines wuzhangjin
2009-05-20 22:14 ` [loongson-PATCH-v1 27/27] add gcc 4.4 support for MIPS and loongson wuzhangjin
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=1243302188.9819.58.camel@localhost.localdomain \
--to=yanh@lemote.com \
--cc=anemo@mba.ocn.ne.jp \
--cc=apatard@mandriva.com \
--cc=erwan@thiscow.com \
--cc=gnewsense-dev@nongnu.org \
--cc=hofrat@hofr.at \
--cc=linux-mips@linux-mips.org \
--cc=liujl@lemote.com \
--cc=loongson-dev@googlegroups.com \
--cc=philippe@cowpig.ca \
--cc=r0bertz@gentoo.org \
--cc=ralf@linux-mips.org \
--cc=wuzhangjin@gmail.com \
--cc=zhangfx@lemote.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;
as well as URLs for NNTP newsgroup(s).