mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Jones <ajones@ventanamicro.com>
To: JeeHeng Sia <jeeheng.sia@starfivetech.com>
Cc: "paul.walmsley@sifive.com" <paul.walmsley@sifive.com>,
	"palmer@dabbelt.com" <palmer@dabbelt.com>,
	"aou@eecs.berkeley.edu" <aou@eecs.berkeley.edu>,
	"linux-riscv@lists.infradead.org"
	<linux-riscv@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Leyfoon Tan <leyfoon.tan@starfivetech.com>,
	Mason Huo <mason.huo@starfivetech.com>
Subject: Re: [PATCH v4 4/4] RISC-V: Add arch functions to support hibernation/suspend-to-disk
Date: Tue, 28 Feb 2023 06:04:57 +0100	[thread overview]
Message-ID: <20230228050457.zfbflfawctaccepv@orel> (raw)
In-Reply-To: <a6c319dd867f4f1d97e9d950b9e7c636@EXMBX066.cuchost.com>

On Tue, Feb 28, 2023 at 01:32:53AM +0000, JeeHeng Sia wrote:
> > > > > 	load image;
> > > > > loop:	Create pbe chain, return error if failed;
> > > >
> > > > This loop pseudocode is incomplete. It's
> > > >
> > > > loop:
> > > >         if (swsusp_page_is_forbidden(page) && swsusp_page_is_free(page))
> > > > 	   return page_address(page);
> > > > 	Create pbe chain, return error if failed;
> > > > 	...
> > > >
> > > > which I pointed out explicitly in my last reply. Also, as I asked in my
> > > > last reply (and have been asking four times now, albeit less explicitly
> > > > the first two times), how do we know at least one PBE will be linked?
> > > 1 PBE correspond to 1 page, you shouldn't expect only 1 page is saved.
> > 
> > I know PBEs correspond to pages. *Why* should I not expect only one page
> > is saved? Or, more importantly, why should I expect more than zero pages
> > are saved?
> > 
> > Convincing answers might be because we *always* put the restore code in
> > pages which get added to the PBE list or that the original page tables
> > *always* get put in pages which get added to the PBE list. It's not very
> > convincing to simply *assume* that at least one random page will always
> > meet the PBE list criteria.
> > 
> > > Hibernation core will do the calculation. If the PBEs (restore_pblist) linked successfully, the hibernated image will be restore else
> > normal boot will take place.
> > > > Or, even more specifically this time, where is the proof that for each
> > > > hibernation resume, there exists some page such that
> > > > !swsusp_page_is_forbidden(page) or !swsusp_page_is_free(page) is true?
> > > forbidden_pages and free_pages are not contributed to the restore_pblist (as you already aware from the code). Infact, the
> > forbidden_pages and free_pages are not save into the disk.
> > 
> > Exactly, so those pages are *not* going to contribute to the greater than
> > zero pages. What I've been asking for, from the beginning, is to know
> > which page(s) are known to *always* contribute to the list. Or, IOW, how
> > do you know the PBE list isn't empty, a.k.a restore_pblist isn't NULL?
> Well, this is keep going around in a circle, thought the answer is in the hibernation code. restore_pblist get the pointer from the PBE, and the PBE already checked for validity.

It keeps going around in circles because you keep avoiding my question by
pointing out trivial linked list code. I'm not worried about the linked
list code being correct. My concern is that you're using a linked list
with an assumption that it is not empty. My question has been all along,
how do you know it's not empty?

I'll change the way I ask this time. Please take a look at your PBE list
and let me know if there are PBEs on it that must be there on each
hibernation resume, e.g. the resume code page is there or whatever.

> Can I suggest you to submit a patch to the hibernation core?

Why? What's wrong with it?

Thanks,
drew

  reply	other threads:[~2023-02-28  5:05 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-21  2:35 [PATCH v4 0/4] RISC-V Hibernation Support Sia Jee Heng
2023-02-21  2:35 ` [PATCH v4 1/4] RISC-V: Change suspend_save_csrs and suspend_restore_csrs to public function Sia Jee Heng
2023-02-23  6:39   ` Andrew Jones
2023-02-24  1:33     ` JeeHeng Sia
2023-02-21  2:35 ` [PATCH v4 2/4] RISC-V: Factor out common code of __cpu_resume_enter() Sia Jee Heng
2023-02-23  6:51   ` Andrew Jones
2023-02-24  1:33     ` JeeHeng Sia
2023-02-24 10:19   ` Alexandre Ghiti
2023-02-27  2:21     ` JeeHeng Sia
2023-02-21  2:35 ` [PATCH v4 3/4] RISC-V: mm: Enable huge page support to kernel_page_present() function Sia Jee Heng
2023-02-23  6:57   ` Andrew Jones
2023-02-24  1:33     ` JeeHeng Sia
2023-02-24 10:21   ` Alexandre Ghiti
2023-02-21  2:35 ` [PATCH v4 4/4] RISC-V: Add arch functions to support hibernation/suspend-to-disk Sia Jee Heng
2023-02-23 18:07   ` Andrew Jones
2023-02-24  2:05     ` JeeHeng Sia
2023-02-24  9:00       ` Andrew Jones
2023-02-24  9:33         ` JeeHeng Sia
2023-02-24  9:55           ` Andrew Jones
2023-02-24 10:30             ` JeeHeng Sia
2023-02-24 12:07               ` Andrew Jones
2023-02-27  2:14                 ` JeeHeng Sia
2023-02-27  7:59                   ` Andrew Jones
2023-02-27 10:52                     ` JeeHeng Sia
2023-02-27 11:44                       ` Andrew Jones
2023-02-28  1:32                         ` JeeHeng Sia
2023-02-28  5:04                           ` Andrew Jones [this message]
2023-02-28  5:33                             ` JeeHeng Sia
2023-02-28  7:18                               ` Andrew Jones
2023-02-28  7:29                                 ` JeeHeng Sia
2023-02-28  7:37                                   ` Andrew Jones
2023-03-03  1:53                                     ` JeeHeng Sia
2023-03-03  8:09                                       ` Andrew Jones
2023-02-28  6:33                             ` JeeHeng Sia
2023-02-28  7:29                               ` Andrew Jones
2023-02-28  7:34                                 ` JeeHeng Sia
2023-02-24  2:12   ` JeeHeng Sia
2023-02-24 12:29   ` Alexandre Ghiti
2023-02-27  3:11     ` JeeHeng Sia
2023-02-27 20:31       ` Alexandre Ghiti
2023-02-28  1:20         ` JeeHeng Sia

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=20230228050457.zfbflfawctaccepv@orel \
    --to=ajones@ventanamicro.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=jeeheng.sia@starfivetech.com \
    --cc=leyfoon.tan@starfivetech.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=mason.huo@starfivetech.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.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®